- Katılım
- 5 Mayıs 2018
- Mesajlar
- 944
- Çözümler
- 1
- Elmaslar
- 367
- Puan
- 14.855
- Konum
- Antalya
- Discord İzni

- Minecraft
- Unutursun
Discord:
_thread
SpigotMC forumunda yeni şeyler ararken plugin.yml olmadan komutları kaydedebileceğimi keşfettim ve basit bir command builder geliştirdim, belki daha da geliştirilebilir aklıma başka bi' şey gelmedi :D
Örneğin /gm komutu ekleme
(essentials tarzı basit komutlarla sınırlı kendi eklentilerinizi geliştirebilirsiniz)
/fly
/warp
/home
/gm
vs
Örneğin /gm komutu ekleme
(essentials tarzı basit komutlarla sınırlı kendi eklentilerinizi geliştirebilirsiniz)
/fly
/warp
/home
/gm
vs
Kod:
public Commands(JavaPlugin plugin) {
CommandManager manager = new CommandManager(plugin);
manager.register("gamemode")
.aliases("gm", "gamem", "mode")
.commandType(CommandType.PLAYER) //komut tipi, panel ? oyuncu ? her ikisi ?
.permission("gamemode.permission")
.noPermissionMessage("§cYou do not have permission to this command!")
.description("gamemode permission")
.usage("/gamemode 0, 1, 2, 3")
.arguments(1, 1, plugin.getMsg().getPrefix() + "§cUsage: /gamemode 0, 1, 2, 3") //girilebilecek min ve max argüman uzunluğunu ve hata mesajını ekliyoruz
.tabCompleter((sender, args) -> {
if (args.length == 1) {
return Arrays.asList("0", "1", "2", "3");
} else if (args.length == 10) {
return Collections.singletonList("gamemode 10 huh?");
}
return new ArrayList<>();
})
.playerExecutor((sender, args) -> {
Player p = (Player) sender;
switch (Integer.parseInt(args[0])) {
case 0:
p.setGameMode(GameMode.SURVIVAL);
p.sendMessage("§eYour game mode has been changed to §asurvival!");
break;
case 1:
p.setGameMode(GameMode.CREATIVE);
p.sendMessage("§eYour game mode has been changed to §acreative!");
break;
case 2:
p.setGameMode(GameMode.ADVENTURE);
p.sendMessage("§eYour game mode has been changed to §aadventure!");
break;
case 3:
p.setGameMode(GameMode.SPECTATOR);
p.sendMessage("§eYour game mode has been changed to §aspectator!");
break;
default:
p.sendMessage("§cUsage: /gamemode 0, 1, 2, 3");
}
})
.register();
}
REPO
^^^^
~ KULLANIM ~
Yapmanız gereken projenizin src\main\java\ dosya yoluna (paketlerinizin başladığı yere);
indirdiğiniz me\anemys\commandapi dosyalarını atmak
(adını değiştirebilirsiniz, default olarak böyle kalmış)
daha sonra ana sınıfınıza
kodunu ekleyip eklentinin diğer sınıflarına dağıtabilirsiniz.
Bu api sayesinde plugin.yml'de herhangi bi' komut, aliases, permission belirtmenize gerek kalmayacak, her şeyi tek başına yapacaktır.
Ne farkı var ?
Avantajlar: Daha az dosyaya dokunulur ve komutlarınız üzerinde daha fazla kontrole sahip olur ve yönetmesi kolaylaşır.
Değerli ziyaretçimiz, içeriği görebilmek için
şimdi giriş yapın veya kayıt olun.
^^^^
~ KULLANIM ~
Yapmanız gereken projenizin src\main\java\ dosya yoluna (paketlerinizin başladığı yere);
indirdiğiniz me\anemys\commandapi dosyalarını atmak
(adını değiştirebilirsiniz, default olarak böyle kalmış)
daha sonra ana sınıfınıza
Java:
CommandManager manager = new CommandManager(plugin.getInstance());
kodunu ekleyip eklentinin diğer sınıflarına dağıtabilirsiniz.
Bu api sayesinde plugin.yml'de herhangi bi' komut, aliases, permission belirtmenize gerek kalmayacak, her şeyi tek başına yapacaktır.
Ne farkı var ?
Dezavantajlar: Eklentiyi derlemeden kayıtlı komutları kimse göremez (plugin.yml'de görmezler yani)
, bu da sizi bir büyücü yapar 
Klasik yol:
1. Komutu plugin.yml'nize ekleyin
2. Komut sınıfınızı oluşturun
3. Yürütücüyü onEnable'ınıza ayarlayın
4. Tamamlandı
Alternatif yol:
1. Komut sınıfını oluşturun
2. Komutu onEnable'ınıza ekleyin
3. Tamamlandı
Kaynaklar:
Değerli ziyaretçimiz, içeriği görebilmek için
şimdi giriş yapın veya kayıt olun.
Değerli ziyaretçimiz, içeriği görebilmek için
şimdi giriş yapın veya kayıt olun.
Değerli ziyaretçimiz, içeriği görebilmek için
şimdi giriş yapın veya kayıt olun.