NotPatch
Elmas Güneş Gibi Parıldıyor
- Katılım
- 19 Ocak 2019
- Mesajlar
- 618
- Elmaslar
- 226
- Puan
- 14.555
- Konum
- İstanbul
- Minecraft
- NotPatch
Discord:
notpatch
Merhabalar, eklenti yaparken genellikle oyunculardan bir input alırken önce oyuncuyu bir mape ya da sete ekleyip chat eventi dinlemeye çalışırız ve iş biraz karmaşıklaşır birde birden fazla soru varsa her adım için tekrar uygulamalar bazen kişileri yorabiliyor. Conversation oyuncuyla adım adım konuşmayı sağlayan bir özelliktir, oyuncunun sohbete yazdığı mesajı conversationa yönlendirir normal sohbete düşmez ve Prompt classıyla rahatca yönetilebilir.
Karşılaştırma için yapay zekaya kodları yazdırdım.
Map-Set ile olan yöntem:
Conversation ile olan yöntem:
Karşılaştırma için yapay zekaya kodları yazdırdım.
Map-Set ile olan yöntem:
Kod:
public class EskiYontem extends JavaPlugin implements Listener {
// Hangi oyuncunun cevap beklediğini tutuyoruz
private final Set<UUID> bekleyenler = new HashSet<>();
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (!(sender instanceof Player player)) return true;
bekleyenler.add(player.getUniqueId());
player.sendMessage("Adın ne?");
return true;
}
@EventHandler
public void onChat(AsyncPlayerChatEvent event) {
Player player = event.getPlayer();
if (!bekleyenler.contains(player.getUniqueId())) return;
event.setCancelled(true);
bekleyenler.remove(player.getUniqueId());
player.sendMessage("Merhaba, " + event.getMessage() + "!");
}
}
Conversation ile olan yöntem:
Kod:
// Plugin
public class YeniYontem extends JavaPlugin {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (!(sender instanceof Player player)) return true;
new ConversationFactory(this)
.withModality(true)
.withLocalEcho(false)
.withFirstPrompt(new IsimPrompt())
.buildConversation(player)
.begin();
return true;
}
}
// Prompt
public class IsimPrompt extends StringPrompt {
@Override
public String getPromptText(ConversationContext ctx) {
return "Adın ne?";
}
@Override
public Prompt acceptInput(ConversationContext ctx, String input) {
Player player = (Player) ctx.getForWhom();
player.sendMessage("Merhaba, " + input + "!");
return Prompt.END_OF_CONVERSATION;
}
}
Değerli ziyaretçimiz, içeriği görebilmek için
şimdi giriş yapın veya kayıt olun.
