Spigot eklentisi aktifken komut girince gecikme yapıyor

Katılım
5 Mart 2014
Mesajlar
5.701
Makaleler
12
Çözümler
44
Java:
public boolean onCommand (CommandSender Sender, Command Cmd, String Label, String[] args)
{
    String Username = Sender.getName();
    Player Pl = null;
    try
    {
        Pl = (Player) Sender;
    }
    catch (Exception e)
    {
     
    }
    Username = Functions.StripTags(Functions.Escape(Username));
    if (Cmd.getName().toLowerCase().equals("command1"))
    {
        //Code
    }
    else if (Cmd.getName().toLowerCase().equals("command2"))
    {
        //Code
    }
    else if (Cmd.getName().toLowerCase().equals("command3"))
    {
        //Code
    }
}

Spigot için eklentimi toplam 3 dosyada geliştiriyorum. İkisi fonksiyon kütüphanesi, bu da ana dosya. Her komutu bu şekilde ekliyorum.

Sorum şu ki ben eklentim aktifken hangi komut olursa olsun birkaç saniye gecikme yaşıyorum. Yani komut girdikten sonra sunucu tamamen 1-2 saniye donuyor, hiçbir işlem yapılmıyor. Sonra komut çalışıyor. Eklenti kapalıyken komutlar anında çalışıyor.

Sizce neden böyle bir şey olmuş olabilir? Eklentide yaklaşık 45 komut var. Bu durum etkiler mi?
 
Son düzenleyen: Moderatör:
Komut öyle eklenmiyor. Her komut için ayrı bir class oluşturup ana dosyadan import etmeniz gerek.

Örneğin:
[CODE lang="java" title="Heal.java"]public class Heal implements CommandExecutor
{
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
{
if (sender instanceof Player)
{
Player player = (Player) sender;
if (args.length == 0)
{
if (player.isOp() == true)
{
player.sendMessage("İyileştirildiniz ve açlığınız yenilendi.");
player.setHealth(20.0);
player.setFoodLevel(20);
player.setFireTicks(0);
}
else
{
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cYou don't have permission for this command!"));
}
}
else if (args.length == 1)
{
if (player.isOp() == true)
{
boolean found = false;

for (Player p : Bukkit.getOnlinePlayers())
{
if (p.getName().equals(args[0]))
{
found = true;
p.sendMessage(player.getDisplayName() + " tarafından iyileştirildiniz.");
player.sendMessage(p.getDisplayName() + " iyileştirildi.");
p.setHealth(20.0);
p.setFoodLevel(20);
p.setFireTicks(0);
}
}

if (found == false)
{
player.sendMessage("Oyuncu bulunamadı.");
}
}
else
{
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cYou don't have permission for this command!"));
}
}
}
else
{
ConsoleCommandSender console = Bukkit.getConsoleSender();
console.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cYou can't use this on terminal."));
}
return true;
}
}[/CODE]

onEnable() kısmına ise:
[CODE lang="java" title="Main.java"]this.getCommand("heal").setExecutor((CommandExecutor)new Heal());[/CODE]

Importları da IDE'nizin aracılığıyla eklersiniz.

Bende bu şekilde sorunsuz çalışıyor.
 
Komut öyle eklenmiyor. Her komut için ayrı bir class oluşturup ana dosyadan import etmeniz gerek.

Örneğin:
[CODE lang="java" title="Heal.java"]public class Heal implements CommandExecutor
{
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
{
if (sender instanceof Player)
{
Player player = (Player) sender;
if (args.length == 0)
{
if (player.isOp() == true)
{
player.sendMessage("İyileştirildiniz ve açlığınız yenilendi.");
player.setHealth(20.0);
player.setFoodLevel(20);
player.setFireTicks(0);
}
else
{
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cYou don't have permission for this command!"));
}
}
else if (args.length == 1)
{
if (player.isOp() == true)
{
boolean found = false;

for (Player p : Bukkit.getOnlinePlayers())
{
if (p.getName().equals(args[0]))
{
found = true;
p.sendMessage(player.getDisplayName() + " tarafından iyileştirildiniz.");
player.sendMessage(p.getDisplayName() + " iyileştirildi.");
p.setHealth(20.0);
p.setFoodLevel(20);
p.setFireTicks(0);
}
}

if (found == false)
{
player.sendMessage("Oyuncu bulunamadı.");
}
}
else
{
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cYou don't have permission for this command!"));
}
}
}
else
{
ConsoleCommandSender console = Bukkit.getConsoleSender();
console.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cYou can't use this on terminal."));
}
return true;
}
}[/CODE]

onEnable() kısmına ise:
[CODE lang="java" title="Main.java"]this.getCommand("heal").setExecutor((CommandExecutor)new Heal());[/CODE]

Importları da IDE'nizin aracılığıyla eklersiniz.

Bende bu şekilde sorunsuz çalışıyor.
Öyle eklenmiyor ise nasıl çalışıyor?
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı