@snailycfx/nexus
v1.0.13
Published
Bukkit-inspired framework for roblox-ts
Downloads
1,033
Maintainers
Readme
@snailycfx/nexus
A Bukkit-inspired game framework for roblox-ts. Build your Roblox games the Java way — classes, listeners, lifecycle hooks, and a clean event system.
Installation
pnpm add @snailycfx/nexus
pnpm add @snailycfx/nexus-transformer --save-devAdd the transformer to your tsconfig.json:
{
"compilerOptions": {
"plugins": [
{ "transform": "@snailycfx/nexus-transformer" }
]
}
}Quick Start
import { Nexus, IListener, EventHandler, PlayerJoinEvent } from "@snailycfx/nexus"
class PlayerListener implements IListener {
@EventHandler()
public onPlayerJoin(event: PlayerJoinEvent): void {
print(`${event.getPlayer().Name} joined!`)
}
}
class MyGame extends Nexus {
public getName(): string { return "MyGame" }
public override onEnable(): void {
Nexus.getServer().getEventManager().register(new PlayerListener())
this.getLogger().success("MyGame is running!")
}
public override onDisable(): void {
this.getLogger().info("MyGame is stopping...")
}
}
new MyGame()Features
- Lifecycle hooks —
onEnableandonDisablecalled automatically - Event system — Bukkit-style listeners with
@EventHandler - Priority support —
EventPriority.LowestthroughEventPriority.Monitor - Async handlers —
@EventHandler({ async: true }) - Custom events — extend
NexusEventto create your own - Built-in events —
PlayerJoinEvent,PlayerLeaveEvent
Events
Built-in
@EventHandler()
public onPlayerJoin(event: PlayerJoinEvent): void { }
@EventHandler()
public onPlayerLeave(event: PlayerLeaveEvent): void { }Custom
export class WaveStartedEvent extends NexusEvent {
public constructor(private readonly wave: number) { super() }
public getWave(): number { return this.wave }
}
// Dispatch
Nexus.getServer().getEventManager().dispatch(new WaveStartedEvent(1))
// Listen
@EventHandler({ priority: EventPriority.High })
public onWaveStarted(event: WaveStartedEvent): void {
print(`Wave ${event.getWave()} started!`)
}Requirements
roblox-ts>= 3.0.0@snailycfx/nexus-transformer
License
MIT
