// Get global event handler
GlobalEventHandler eventHandler = MinecraftServer.getGlobalEventHandler();
// Register player join event listener
eventHandler.addListener(PlayerSpawnEvent.class, event -> {
// This code runs when a player joins
if (event.getEntity() instanceof Player player) {
player.sendMessage("Welcome to the server!");
}
});
// Register chat event with modification
eventHandler.addListener(PlayerChatEvent.class, event -> {
// Modify chat format
String message = event.getMessage();
Player player = event.getPlayer();
// Cancel if message contains certain words
if (message.contains("spam")) {
event.setCancelled(true);
player.sendMessage("Your message was filtered");
return;
}
// Modify chat format
event.setChatFormat((sender, text) ->
Component.text("<" + sender.getUsername() + "> " + text)
);
});
// Register block break event with cancellation
eventHandler.addListener(PlayerBlockBreakEvent.class, event -> {
Block block = event.getBlock();
// Prevent breaking certain blocks
if (block.compare(Block.BEDROCK)) {
event.setCancelled(true);
event.getPlayer().sendMessage("You cannot break bedrock!");
}
});
// Register event with priority
eventHandler.addListener(PlayerMoveEvent.class, EventPriority.HIGH, event -> {
// This listener runs early (HIGH priority)
Player player = event.getPlayer();
// Check boundaries
if (event.getNewPosition().y() < 0) {
event.setCancelled(true);
player.teleport(event.getPlayerPosition());
}
});
// Multiple listeners for same event
eventHandler.addListener(EntityDamageEvent.class, event -> {
// First listener: Log damage
System.out.println("Entity damaged: " + event.getDamage());
});
eventHandler.addListener(EntityDamageEvent.class, event -> {
// Second listener: Modify damage
if (event.getEntity() instanceof Player) {
event.setDamage(event.getDamage() * 0.5f); // Reduce damage by 50%
}
});
// Unregister listener (if you keep reference)
EventListener<PlayerSpawnEvent> listener = event -> {
// Listener code
};
eventHandler.addListener(PlayerSpawnEvent.class, listener);
// Later...
eventHandler.removeListener(PlayerSpawnEvent.class, listener);