Skip to content

Player Events

Package: com.hypixel.hytale.server.core.event.events.player

Events related to player connections, interactions, and state changes.


Fired when a player connects, after authentication.

Class: com.hypixel.hytale.server.core.event.events.player.PlayerConnectEvent

PropertyValue
ImplementsIEvent<Void>
CancellableNo
MethodReturn TypeDescription
getHolder()Holder<EntityStore>Returns the player entity holder
getPlayerRef()PlayerRefReturns the player reference
getPlayer()PlayerReturns the player component. Deprecated
getWorld()WorldReturns the initial spawn world (nullable)
setWorld(World world)voidSets the initial spawn world
events.register(PlayerConnectEvent.class, event -> {
// set player's spawn world based on saved data
World targetWorld = getPlayerLastWorld(event.getPlayerRef());
if (targetWorld != null) {
event.setWorld(targetWorld);
}
});

Fired when a player disconnects.

Class: com.hypixel.hytale.server.core.event.events.player.PlayerDisconnectEvent

PropertyValue
ExtendsPlayerRefEvent<Void>
CancellableNo
MethodReturn TypeDescription
getPlayerRef()PlayerRefReturns the disconnecting player (inherited from PlayerRefEvent)
getDisconnectReason()DisconnectReasonReturns the reason for disconnection
  • getServerDisconnectReason() - String message if server-initiated
  • getClientDisconnectType() - DisconnectType.Disconnect or DisconnectType.Crash

Fired early in connection, before entity creation. This event is cancellable - cancel to reject connection.

Class: com.hypixel.hytale.server.core.event.events.player.PlayerSetupConnectEvent

PropertyValue
ImplementsIEvent<Void>, ICancellable
CancellableYes
ConstantTypeValue
DEFAULT_REASONString"You have been disconnected from the server!"
MethodReturn TypeDescription
getPacketHandler()PacketHandlerReturns the network packet handler
getUuid()UUIDReturns the player’s UUID
getUsername()StringReturns the player’s username
getAuth()PlayerAuthenticationReturns authentication details
getReferralData()byte[]Returns referral data (nullable)
isReferralConnection()booleanReturns true if player was referred from another server
getReferralSource()HostAddressReturns the source server for referrals (nullable)
getClientReferral()ClientReferralReturns the client referral set via referToServer() (nullable)
referToServer(String host, int port)voidRedirect player to another server
referToServer(String host, int port, byte[] data)voidRedirect with custom referral data (max 4096 bytes)
getReason()StringReturns the disconnect reason
setReason(String reason)voidSets the disconnect reason
events.register(PlayerSetupConnectEvent.class, event -> {
if (isBanned(event.getUuid())) {
event.setCancelled(true);
event.setReason("You are banned from this server.");
}
});
events.register(PlayerSetupConnectEvent.class, event -> {
// redirect player to a different server
event.referToServer("play.example.com", 25565);
});

Fired if player disconnects during setup phase (before fully connected).

Class: com.hypixel.hytale.server.core.event.events.player.PlayerSetupDisconnectEvent

PropertyValue
ImplementsIEvent<Void>
CancellableNo
MethodReturn TypeDescription
getUsername()StringReturns the player’s username
getUuid()UUIDReturns the player’s UUID
getAuth()PlayerAuthenticationReturns authentication details
getDisconnectReason()DisconnectReasonReturns the reason for disconnection

Fired when player is fully loaded in a world. Keyed by world name.

Class: com.hypixel.hytale.server.core.event.events.player.PlayerReadyEvent

PropertyValue
ExtendsPlayerEvent<String>
KeyTypeString (world name)
MethodReturn TypeDescription
getPlayerRef()Ref<EntityStore>Returns the entity reference (inherited from PlayerEvent)
getPlayer()PlayerReturns the player component (inherited from PlayerEvent)
getReadyId()intReturns the ready ID, which increments each time player is ready
// show instance discovery notification when player loads
events.registerGlobal(PlayerReadyEvent.class, event -> {
Player player = event.getPlayer();
showInstanceNotification(player);
});

Fired when player sends a chat message. This event is async and cancellable.

Class: com.hypixel.hytale.server.core.event.events.player.PlayerChatEvent

PropertyValue
ImplementsIAsyncEvent<String>, ICancellable
AsyncYes
CancellableYes
MethodReturn TypeDescription
getSender()PlayerRefReturns the player who sent the message
setSender(PlayerRef sender)voidSets the sender of the message
getTargets()List<PlayerRef>Returns the list of players who will receive the message
setTargets(List<PlayerRef> targets)voidSets the list of players who will receive the message
getContent()StringReturns the message content
setContent(String content)voidSets the message content
getFormatter()FormatterReturns the message formatter
setFormatter(Formatter formatter)voidSets the message formatter
// default formats as: "<username>: <message>"
DEFAULT_FORMATTER = (playerRef, msg) ->
Message.translation("server.chat.playerMessage")
.param("username", playerRef.getUsername())
.param("message", msg);
// from GamePacketHandler - shows how targets are filtered
List<PlayerRef> targets = new ObjectArrayList<>(Universe.get().getPlayers());
targets.removeIf(target -> target.getHiddenPlayersManager().isPlayerHidden(senderUUID));
HytaleServer.get().getEventBus()
.dispatchForAsync(PlayerChatEvent.class)
.dispatch(new PlayerChatEvent(sender, targets, message))
.whenComplete((event, throwable) -> {
if (throwable != null) {
// log error
} else if (!event.isCancelled()) {
Message formatted = event.getFormatter().format(sender, event.getContent());
for (PlayerRef target : event.getTargets()) {
target.sendMessage(formatted);
}
}
});

Player interactions use two separate pipelines:

  1. Mouse input eventsPlayerMouseButtonEvent and PlayerMouseMotionEvent fire on raw mouse input, before any gameplay logic. Use these to observe or block clicks early.
  2. Interaction chain eventsBreakBlockEvent, DamageBlockEvent, PlaceBlockEvent, UseBlockEvent fire as ECS events when specific interaction operations execute. Use these to intercept specific gameplay actions.

Fired on every mouse button press and release. This is the primary event for reacting to player clicks — it fires before the interaction chain system processes the action.

Class: com.hypixel.hytale.server.core.event.events.player.PlayerMouseButtonEvent

PropertyValue
ExtendsPlayerEvent<Void>
KeyTypeVoid (global)
CancellableYes
MethodReturn TypeDescription
getPlayerRefComponent()PlayerRefThe player reference
getClientUseTime()longClient-side timestamp
getItemInHand()ItemItem asset config held during click (nullable)
getTargetBlock()Vector3iBlock the cursor is pointing at (nullable)
getTargetEntity()EntityEntity the cursor is pointing at (nullable)
getScreenPoint()Vector2fScreen coordinates of the click
getMouseButton()MouseButtonEventMouse button details (see below)
FieldTypeValues
mouseButtonTypeMouseButtonTypeLeft(0), Middle(1), Right(2), X1(3), X2(4)
stateMouseButtonStatePressed(0), Released(1)
clicksbyteClick count (1 = single, 2 = double)
eventRegistry.registerGlobal(PlayerMouseButtonEvent.class, event -> {
MouseButtonEvent mouse = event.getMouseButton();
// only react to right-click press
if (mouse.mouseButtonType != MouseButtonType.Right) return;
if (mouse.state != MouseButtonState.Pressed) return;
Entity target = event.getTargetEntity();
if (target != null) {
// player right-clicked an entity
handleEntityClick(event.getPlayer(), target);
}
});

Fired on mouse movement. Includes the current cursor target and motion delta.

Class: com.hypixel.hytale.server.core.event.events.player.PlayerMouseMotionEvent

PropertyValue
ExtendsPlayerEvent<Void>
KeyTypeVoid (global)
CancellableYes
MethodReturn TypeDescription
getClientUseTime()longClient-side timestamp
getItemInHand()ItemItem asset config held during motion (nullable)
getTargetBlock()Vector3iBlock the cursor is pointing at (nullable)
getTargetEntity()EntityEntity the cursor is pointing at (nullable)
getScreenPoint()Vector2fScreen coordinates
getMouseMotion()MouseMotionEventMotion details (see below)
FieldTypeDescription
mouseButtonTypeMouseButtonType[]Buttons held during motion (nullable)
relativeMotionVector2iMouse movement delta (nullable)

Class: com.hypixel.hytale.server.core.event.events.player.PlayerInteractEvent

PropertyValue
ExtendsPlayerEvent<String>
CancellableYes
DeprecatedYes — never fired

Class: com.hypixel.hytale.server.core.event.events.player.PlayerCraftEvent

PropertyValue
ExtendsPlayerEvent<String>
CancellableNo
DeprecatedYes (for removal)

Fired when player is added to a world. Keyed by world name.

Class: com.hypixel.hytale.server.core.event.events.player.AddPlayerToWorldEvent

PropertyValue
ImplementsIEvent<String>
KeyTypeString (world name)
MethodReturn TypeDescription
getHolder()Holder<EntityStore>Returns the player entity holder
getWorld()WorldReturns the world being joined
shouldBroadcastJoinMessage()booleanReturns whether to broadcast a join message
setBroadcastJoinMessage(boolean broadcast)voidSets whether to broadcast a join message
events.registerGlobal(AddPlayerToWorldEvent.class, event -> {
// send hint about returning to hub
PlayerRef player = event.getHolder().get().getComponent(PlayerRef.getComponentType());
player.sendMessage(Message.translation("hub.returnHint"));
});

Fired when player is removed from a world (teleporting, disconnecting).

Class: com.hypixel.hytale.server.core.event.events.player.DrainPlayerFromWorldEvent

PropertyValue
ImplementsIEvent<String>
KeyTypeString (world name)
CancellableNo
MethodReturn TypeDescription
getHolder()Holder<EntityStore>Returns the player entity holder
getWorld()WorldReturns the world being left
setWorld(World world)voidSets the world being left
getTransform()TransformReturns the player’s transform at time of drain
setTransform(Transform transform)voidSets the player’s transform

Fired when a player window (UI) is closed.

Class: com.hypixel.hytale.server.core.entity.entities.player.windows.Window.WindowCloseEvent

PropertyValue
ImplementsIEvent<Void>
CancellableNo