// Get global event handler
GlobalEventHandler eventHandler = MinecraftServer.getGlobalEventHandler();
// Player join event
eventHandler.addListener(PlayerSpawnEvent.class, event -> {
if (event.getEntity() instanceof Player player) {
player.sendMessage("Welcome to the server!");
player.sendTitle("Welcome", "Enjoy your stay!", 10, 40, 10);
}
});
// Player quit event
eventHandler.addListener(PlayerDisconnectEvent.class, event -> {
Player player = event.getPlayer();
System.out.println(player.getUsername() + " left the server");
});
// Chat event with formatting
eventHandler.addListener(PlayerChatEvent.class, event -> {
Player player = event.getPlayer();
String message = event.getMessage();
// Cancel if message contains certain words
if (message.contains("spam")) {
event.setCancelled(true);
player.sendMessage("Your message was filtered");
return;
}
// Format chat message
event.setChatFormat((sender, text) ->
Component.text("<" + sender.getUsername() + "> " + text)
);
});
// Block break event
eventHandler.addListener(PlayerBlockBreakEvent.class, event -> {
Player player = event.getPlayer();
Block block = event.getBlock();
// Cancel breaking certain blocks
if (block.compare(Block.BEDROCK)) {
event.setCancelled(true);
player.sendMessage("You cannot break bedrock!");
return;
}
// Drop custom items
if (block.compare(Block.DIAMOND_ORE)) {
event.getInstance().dropItem(
event.getBlockPosition(),
new ItemStack(Material.DIAMOND, 2)
);
}
});
// Entity damage event
eventHandler.addListener(EntityDamageEvent.class, event -> {
Entity entity = event.getEntity();
// Reduce damage for certain entities
if (entity instanceof Player) {
float damage = event.getDamage();
event.setDamage(damage * 0.5f); // 50% damage reduction
}
});
// Player move event
eventHandler.addListener(PlayerMoveEvent.class, event -> {
Player player = event.getPlayer();
// Prevent falling below Y=0
if (event.getNewPosition().y() < 0) {
event.setCancelled(true);
player.teleport(event.getPlayerPosition());
}
});