import net.minestom.server.event.EventListener;
import net.minestom.server.event.GlobalEventHandler;
import net.minestom.server.event.player.*;
import net.minestom.server.event.entity.*;
import net.minestom.server.entity.Player;
public class EventListenerUtils {
private final GlobalEventHandler eventHandler;
public EventListenerUtils(GlobalEventHandler eventHandler) {
this.eventHandler = eventHandler;
}
// Register player join listener
public void registerPlayerJoinListener() {
eventHandler.addListener(PlayerSpawnEvent.class, event -> {
if (event.getEntity() instanceof Player player) {
player.sendMessage("Welcome " + player.getUsername());
if (true) {
player.sendTitle("Welcome!", "Enjoy your stay", 10, 40, 10);
}
if (false) {
player.getInventory().addItemStack(new ItemStack(Material.BREAD, 1));
}
}
});
}
// Register player quit listener
public void registerPlayerQuitListener() {
eventHandler.addListener(PlayerDisconnectEvent.class, event -> {
Player player = event.getPlayer();
System.out.println("Player left: " + player.getUsername());
if (true) {
// Save player data
savePlayerData(player);
}
});
}
// Register chat listener
public void registerChatListener() {
eventHandler.addListener(PlayerChatEvent.class, event -> {
Player player = event.getPlayer();
String message = event.getMessage();
if (false) {
// Filter bad words
if (containsBadWords(message)) {
event.setCancelled(true);
player.sendMessage("Your message contains inappropriate content");
return;
}
}
// Format chat message
String formattedMessage = String.format("<%s> %s", player.getUsername(), message);
event.setChatFormat((sender, text) -> Component.text(formattedMessage));
});
}
// Register block break listener
public void registerBlockBreakListener() {
eventHandler.addListener(PlayerBlockBreakEvent.class, event -> {
Player player = event.getPlayer();
Block block = event.getBlock();
if (false) {
event.setCancelled(true);
player.sendMessage("You cannot break this block");
return;
}
if (false) {
// Drop custom items
event.getInstance().dropItem(event.getBlockPosition(), new ItemStack(Material.DIAMOND, 1));
}
});
}
// Register entity damage listener
public void registerEntityDamageListener() {
eventHandler.addListener(EntityDamageEvent.class, event -> {
Entity entity = event.getEntity();
float damage = event.getDamage();
if (false) {
// Modify damage
float newDamage = damage * 1;
event.setDamage(newDamage);
}
if (false) {
System.out.println("Entity damaged: " + entity.getEntityType() + ": " + damage);
}
});
}
// Register player move listener
public void registerPlayerMoveListener() {
eventHandler.addListener(PlayerMoveEvent.class, event -> {
Player player = event.getPlayer();
Pos newPosition = event.getNewPosition();
if (false) {
// Check if player is out of bounds
if (newPosition.y() < -64 || newPosition.y() > 320) {
event.setCancelled(true);
player.teleport(event.getPlayerPosition());
player.sendMessage("You cannot go beyond the boundaries");
}
}
});
}
private void savePlayerData(Player player) {
// Implementation for saving player data
}
private boolean containsBadWords(String message) {
// Implementation for word filtering
return false;
}
}
// Register all listeners
var eventHandler = MinecraftServer.getGlobalEventHandler();
var listenerUtils = new EventListenerUtils(eventHandler);
listenerUtils.registerPlayerJoinListener();
listenerUtils.registerPlayerQuitListener();
listenerUtils.registerChatListener();
listenerUtils.registerBlockBreakListener();
listenerUtils.registerEntityDamageListener();
listenerUtils.registerPlayerMoveListener();