HytaleJS
Guides

Events

Listen and respond to game events

HytaleJS provides 30+ events for player actions, world changes, and server lifecycle.

Basic Usage

Use the @EventListener decorator to handle events:

import { type PlayerConnectEvent, EventListener } from "@hytalejs.com/core";

class MyPlugin {
  @EventListener("PlayerConnectEvent")
  onJoin(event: PlayerConnectEvent) {
    const player = event.getPlayer();
    player.sendMessage(Message.raw("Welcome!"));
  }
}

Cancelling Events

Some events can be cancelled to prevent the default action:

@EventListener("PlayerChatEvent")
onChat(event: PlayerChatEvent) {
  if (event.getContent().includes("badword")) {
    event.setCancelled(true);
    event.getSender().sendMessage(Message.raw("Watch your language!"));
  }
}

Common Events

Player Events

EventDescription
PlayerConnectEventPlayer joins the server
PlayerDisconnectEventPlayer leaves the server
PlayerChatEventPlayer sends a chat message
PlayerReadyEventPlayer finished loading
PlayerInteractEventPlayer interacts with something

Block Events

EventDescription
BreakBlockEventBlock is broken
PlaceBlockEventBlock is placed
DamageBlockEventBlock takes damage
UseBlockEventBlock is used/activated

Entity Events

EventDescription
EntityEventEntity spawns
EntityRemoveEventEntity is removed

Server Events

EventDescription
BootEventServer starts
ShutdownEventServer stops
PrepareUniverseEventUniverse is being prepared

Full Example

import {
  type PlayerConnectEvent,
  type PlayerDisconnectEvent,
  type BreakBlockEvent,
  EventListener,
  Colors
} from "@hytalejs.com/core";

class EventsPlugin {
  @EventListener("PlayerConnectEvent")
  onJoin(event: PlayerConnectEvent) {
    logger.info("Player joined: " + event.getPlayerRef().getUsername());
  }

  @EventListener("PlayerDisconnectEvent")
  onLeave(event: PlayerDisconnectEvent) {
    logger.info("Player left: " + event.getPlayerRef().getUsername());
  }

  @EventListener("BreakBlockEvent")
  onBreak(event: BreakBlockEvent) {
    const block = event.getTargetBlock();
    logger.info("Block broken at: " + block.getX() + ", " + block.getY() + ", " + block.getZ());
  }
}

See the Events API Reference for all event types and their properties.

On this page