Server Events
A Fabric mod enhancing server-side event handling with a Bukkit-inspired system, extending and encapsulating Fabric API events.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
Server Events
Server Events
GitHub Actions Workflow Status
Server Events is a support library for Fabric server development, designed to enhance the Fabric API's limited event system. It offers a Bukkit-like event framework while adhering to Fabric's minimalist philosophy.
The mod doesn't wrap `CommandRegistrationCallback` and `DynamicRegistrySetupCallback` from Fabric API.
Installation
1. Import this package to your project. 2. Add `serverevents` to your mod depends.
```groovy repositories { maven "https://mvn.suc.icu" }
dependencies { implementation "icu.suc.mc:serverevents:<version>" } ```
Since `2.0.0`, the groupId has been changed from `icu.suc` to `icu.suc.mc`.
Usage
ServerEvents provides a simple API for registering and processing events.
Here is an example of a player modifying broadcast information:
```java import net.fabricmc.api.ModInitializer; import net.minecraft.network.chat.Component; import net.minecraft.world.item.Items; import icu.suc.mc.serverevents.ServerEvents;
public class ExampleMod implements ModInitializer { @Override public void onInitialize() { ServerEvents.Player.MODIFY_JOIN_MESSAGE.register((player, message) -> Component.literal("[+] ").append(player.getName())); } } ```
Since `2.2.0`:
```java import icu.suc.mc.serverevents.Listener; import icu.suc.mc.serverevents.ServerEvents; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.event.Event; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import org.jetbrains.annotations.NotNull;
public class ExampleMod implements ModInitializer, Listener, ServerEvents.Player.Join.ModifyMessage { @Override public void onInitialize() { ServerEvents.register(this); }
@Override public @NotNull Event<?>[] events() { return new Event[]{ServerEvents.Player.Join.MODIFY_MESSAGE}; }
@Override public @NotNull Component modifyJoinMessage(@NotNull ServerPlayer player, @NotNull Component message) { return Component.literal("[+] ").append(player.getName()); } } ```
License
This project is licensed under the MIT License © 2025 sucj.