44 lines
1.5 KiB
Java
44 lines
1.5 KiB
Java
package it.ohalee.minecraftgpt.handler;
|
|
|
|
import it.ohalee.minecraftgpt.Main;
|
|
import it.ohalee.minecraftgpt.OpenAI;
|
|
import lombok.RequiredArgsConstructor;
|
|
import org.bukkit.ChatColor;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.EventPriority;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
|
import org.bukkit.event.player.PlayerQuitEvent;
|
|
|
|
@RequiredArgsConstructor
|
|
public class PlayerHandlers implements Listener {
|
|
|
|
private final Main plugin;
|
|
|
|
@EventHandler
|
|
public void onQuit(PlayerQuitEvent e) {
|
|
plugin.getCache().invalidate(e.getPlayer());
|
|
}
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
public void onAsyncPlayerChat(AsyncPlayerChatEvent e) {
|
|
Player player = e.getPlayer();
|
|
if (this.plugin.getCache().asMap().containsKey(player)) {
|
|
e.setCancelled(true);
|
|
|
|
OpenAI.getResponse(plugin.getCache().getIfPresent(player), e.getMessage()).whenComplete((response, throwable) -> {
|
|
if (throwable != null) {
|
|
throwable.printStackTrace();
|
|
player.sendMessage(ChatColor.RED + "An error occurred while processing your message.");
|
|
return;
|
|
}
|
|
|
|
player.sendMessage(ChatColor.AQUA + "You: " + ChatColor.GRAY + e.getMessage());
|
|
player.sendMessage(ChatColor.AQUA + "AI: " + ChatColor.GREEN + response);
|
|
});
|
|
}
|
|
}
|
|
|
|
}
|