Skip to content

API reference / @jsprismarine/prismarine / Server

Class: Server ​

Defined in: prismarine/src/Server.ts:86

JSPrismarine's main server class.

Extends ​

  • EventEmitter

Constructors ​

Constructor ​

new Server(options): Server

Defined in: prismarine/src/Server.ts:229

Creates a new server instance.

Parameters ​

options ​

The options.

config ​

Config

The config.

headless? ​

boolean = false

inboundPacketRecorder? ​

InboundPacketRecorder

Opt-in sink for accepted inbound packet bytes, which may include login identity data.

logger ​

Logger

The logger.

onStopCommandComplete? ​

() => void

Called after a successful /stop dispatch sends its feedback.

outboundPacketRecorder? ​

OutboundPacketRecorder

Opt-in sink for encoded clientbound packets.

profile? ​

boolean = false

Record server phase and event-loop timings.

Returns ​

Server

The server instance.

Overrides ​

EventEmitter.constructor

Properties ​

evtThirdParty ​

readonly evtThirdParty: PluginEventEmitter

Defined in: prismarine/src/events/EventEmitter.ts:146

Events emitted by plugin makers. We can only listen those event from within the server implementation, we are not supposed to post. Also we can't have static typing for those as they are defined by the plugin makers

Inherited from ​

EventEmitter.evtThirdParty

Methods ​

attachRemoteConsole() ​

attachRemoteConsole(remote): void

Defined in: prismarine/src/Server.ts:514

Attaches the remote console a host process talks to. Call it before bootstrap: the server enables it as it starts, reports running once it listens, reports stopping as shutdown begins, and disables it last, so the final messages leave the channel before the process exits.

Parameters ​

remote ​

RemoteConsole

Returns ​

void


bootstrap() ​

bootstrap(serverIp?, port?): Promise<void>

Defined in: prismarine/src/Server.ts:489

Starts the server.

Parameters ​

serverIp? ​

string

Optional bind address. Defaults to the configured server IP.

port? ​

number

Optional bind port. Defaults to the configured server port.

Returns ​

Promise<void>

A promise that resolves when the server is started.

Throws ​

When an enabled transport cannot listen; the message names it, its port and the cause.


broadcastPacket() ​

broadcastPacket<T>(dataPacket): Promise<void>

Defined in: prismarine/src/Server.ts:611

Sends a packet to every player on the server, in every world.

The genuinely global channel: the player list, the command tree, a shutdown notice - things that are about the server rather than about a place in it. Anything that happens somewhere belongs on World.broadcastAround, which only reaches the players near it.

Type Parameters ​

T ​

T extends NetworkPacket<unknown>

Parameters ​

dataPacket ​

T

The packet to send.

Returns ​

Promise<void>


emit() ​

emit<T, K>(id, event): Promise<void>

Defined in: prismarine/src/events/EventEmitter.ts:187

Calls every listener of the event and resolves once the asynchronous ones have settled.

Type Parameters ​

T ​

T extends EventTypes

K ​

K extends "tick" | "chat" | "entityPortalEnter" | "entityDamage" | "entityDeath" | "playerChangeDimension" | "playerConnect" | "playerDisconnect" | "playerSpawn" | "playerDespawn" | "playerMove" | "playerToggleFlight" | "playerToggleSprint" | "playerToggleOperator" | "playerSetGamemode" | "raknetConnect" | "raknetDisconnect" | "raknetEncapsulatedPacket"

Parameters ​

id ​

K

event ​

T extends readonly [K, U] ? U : never

Returns ​

Promise<void>

Inherited from ​

EventEmitter.emit


getBanManager() ​

getBanManager(): BanManager

Defined in: prismarine/src/Server.ts:935

Returns the ban manager.

Returns ​

BanManager

The ban manager.

Deprecated ​

Resolve it through the kernel instead: server.getKernel().get(bansToken), with bansToken from @jsprismarine/prismarine/modules/tokens.


getChatManager() ​

getChatManager(): ChatManager

Defined in: prismarine/src/Server.ts:873

Returns the chat manager.

Returns ​

ChatManager

The chat manager.

Deprecated ​

Resolve it through the kernel instead: server.getKernel().get(chatToken), with chatToken from @jsprismarine/prismarine/modules/tokens.


getChunkCompletionQueue() ​

getChunkCompletionQueue(): ChunkCompletionQueue

Defined in: prismarine/src/Server.ts:672

The bounded queue for worker-result translation and background chunk lighting.

Returns ​

ChunkCompletionQueue


getChunkScheduler() ​

getChunkScheduler(): ChunkScheduler

Defined in: prismarine/src/Server.ts:667

Returns the world manager.

Returns ​

ChunkScheduler

The world manager.


getCommandManager() ​

getCommandManager(): CommandManager

Defined in: prismarine/src/Server.ts:651

Returns the command manager.

Returns ​

CommandManager

The command manager.


getConfig() ​

getConfig(): Config

Defined in: prismarine/src/Server.ts:885

Returns the config.

Returns ​

Config

The config.

Example ​

typescript
console.log(server.getConfig().getMaxPlayers()); // 20

getConsole() ​

getConsole(): Console | undefined

Defined in: prismarine/src/Server.ts:906

Returns the console instance.

Returns ​

Console | undefined

The console instance.


getConsoleSender() ​

getConsoleSender(): ConsoleSender

Defined in: prismarine/src/Server.ts:915

Returns the sender the server speaks as in chat and command feedback.

Unlike getConsole, this is present on a headless server too.

Returns ​

ConsoleSender


getContent() ​

getContent(): ServerContent

Defined in: prismarine/src/Server.ts:710

Every content registry built from the pack stack.

Returns ​

ServerContent

The content.

Throws ​

When read before Server.enable has built it.


getContentWorld() ​

getContentWorld(): ServerWorldHandle

Defined in: prismarine/src/Server.ts:721

The world the content acts through, for the interaction path.

Returns ​

ServerWorldHandle

The handle.

Throws ​

When read before Server.enable has built it.


getCreativeInventory() ​

getCreativeInventory(): CreativeInventory

Defined in: prismarine/src/Server.ts:700

Returns this server's creative menu.

Returns ​

CreativeInventory

The menu, built from this server's own registries.


getDimensionTravel() ​

getDimensionTravel(): DimensionTravel

Defined in: prismarine/src/Server.ts:692

The portal travel service: where a trip through a portal lands and how an entity moves there.

Returns ​

DimensionTravel

The one instance shared by every world.


getEntityRuntime() ​

getEntityRuntime(dimension): LiveEntityRuntime

Defined in: prismarine/src/Server.ts:734

The data-driven entities of one dimension.

Asking builds the dimension's content adapter if nothing has yet, so a world that loads after the content was built still gets a runtime.

Parameters ​

dimension ​

string

The namespaced dimension identifier.

Returns ​

LiveEntityRuntime

The runtime for that dimension.


getGenerationLimit() ​

getGenerationLimit(): number | undefined

Defined in: prismarine/src/Server.ts:973

The background generation limit the governor currently asks for, when it is running.

Returns ​

number | undefined


getKernel() ​

getKernel(): Kernel

Defined in: prismarine/src/Server.ts:643

The module kernel the server runs on: the supported way to resolve the services the manager modules provide. Resolve a service with a token from modules/tokens, e.g. server.getKernel().get(bansToken).

Returns ​

Kernel

The kernel.


getLogger() ​

getLogger(): Logger

Defined in: prismarine/src/Server.ts:780

Returns the logger.

Returns ​

Logger

The logger.

Example ​

typescript
// Normal log:
server.getLogger().info('Hello, world!');
// Debug log:
server.getLogger().debug('Hello, world!');
// Error log:
server.getLogger().error(new Error('Hello World'));

getMetadata() ​

getMetadata(): ServerName

Defined in: prismarine/src/Server.ts:465

Returns ​

ServerName


getPacketHandlerRegistry() ​

getPacketHandlerRegistry(): PacketHandlerRegistry

Defined in: prismarine/src/Server.ts:855

Returns the packet registry.

Returns ​

PacketHandlerRegistry

The packet registry.


getPacketLogFilter() ​

getPacketLogFilter(): PacketLogFilter

Defined in: prismarine/src/Server.ts:896

Which packets the traffic log leaves out, from log-excluded-packets.

Built once and kept: this is consulted for every packet in and out, and rebuilding the set each time would put a config read on the hot path.

Returns ​

PacketLogFilter

the filter.


getPermissionManager() ​

getPermissionManager(): PermissionManager

Defined in: prismarine/src/Server.ts:925

Returns the permission manager.

Returns ​

PermissionManager

The permission manager.

Deprecated ​

Resolve it through the kernel instead: server.getKernel().get(permissionsToken), with permissionsToken from @jsprismarine/prismarine/modules/tokens.


getRaknet() ​

getRaknet(): RakNetListenerLike | undefined

Defined in: prismarine/src/Server.ts:863

Returns the raknet instance.

Returns ​

RakNetListenerLike | undefined

The raknet instance.


getRandom() ​

getRandom(): Random

Defined in: prismarine/src/Server.ts:792

Where anything that rolls for something gets its chance from.

One source, reachable, rather than a Math.random() at each site: a drop table that is handed its randomness can be rolled ten thousand times in a test and checked against the odds it claims, and a plugin that wants a seeded server has somewhere to say so.

Returns ​

Random

the source of chance.


getReplayRandomState() ​

getReplayRandomState(): ServerReplayRandomState

Defined in: prismarine/src/Server.ts:797

Captures every stateful random stream the server keeps between ticks.

Returns ​

ServerReplayRandomState


getServer() ​

getServer(): Server

Defined in: prismarine/src/Server.ts:943

Returns this Prismarine instance.

Returns ​

Server

The Prismarine instance.


getSessionManager() ​

getSessionManager(): SessionManager

Defined in: prismarine/src/Server.ts:659

Returns the player manager.

Returns ​

SessionManager

The player manager.


getTick() ​

getTick(): number

Defined in: prismarine/src/Server.ts:951

Returns the current Tick.

Returns ​

number

The current Tick.


getTickControl() ​

getTickControl(): TickControl

Defined in: prismarine/src/Server.ts:983

The handle /tick uses to change the tick rate, freeze the world, step it and sprint.

Returns ​

TickControl


getTickMs() ​

getTickMs(): number

Defined in: prismarine/src/Server.ts:968

Returns how long a tick's work has been taking, in milliseconds, as a moving average over the most recent ticks. It leaves out the sleep between ticks, so a healthy server reads well under the 50 ms period. Zero until the first tick completes.

Returns ​

number


getTickRecorder() ​

getTickRecorder(): TickRecorder

Defined in: prismarine/src/Server.ts:978

The recent ticks' duration, lateness and phases.

Returns ​

TickRecorder


getTPS() ​

getTPS(): number

Defined in: prismarine/src/Server.ts:959

Returns the current TPS.

Returns ​

number

The current TPS.


getVersion() ​

getVersion(): string

Defined in: prismarine/src/Server.ts:633

Returns the server version, the one the startup log prints.

Returns ​

string

The server version, without a leading v.

Example ​

typescript
console.log(server.getVersion());

getWorldManager() ​

getWorldManager(): WorldManager

Defined in: prismarine/src/Server.ts:684

Returns ​

WorldManager


getWorldReplicators() ​

getWorldReplicators(): WorldReplicators

Defined in: prismarine/src/Server.ts:680

The per-world replicators: what turns something happening in a world into packets.

Returns ​

WorldReplicators

The registry, which builds one per world on first use.


hasListeners() ​

hasListeners(id): boolean

Defined in: prismarine/src/events/EventEmitter.ts:180

Whether at least one handler is registered for a server event.

Parameters ​

id ​

"tick" | "chat" | "entityPortalEnter" | "entityDamage" | "entityDeath" | "playerChangeDimension" | "playerConnect" | "playerDisconnect" | "playerSpawn" | "playerDespawn" | "playerMove" | "playerToggleFlight" | "playerToggleSprint" | "playerToggleOperator" | "playerSetGamemode" | "raknetConnect" | "raknetDisconnect" | "raknetEncapsulatedPacket"

Returns ​

boolean

Inherited from ​

EventEmitter.hasListeners


on() ​

on<T, K>(id, callback): this

Defined in: prismarine/src/events/EventEmitter.ts:150

Type Parameters ​

T ​

T extends EventTypes

K ​

K extends "tick" | "chat" | "entityPortalEnter" | "entityDamage" | "entityDeath" | "playerChangeDimension" | "playerConnect" | "playerDisconnect" | "playerSpawn" | "playerDespawn" | "playerMove" | "playerToggleFlight" | "playerToggleSprint" | "playerToggleOperator" | "playerSetGamemode" | "raknetConnect" | "raknetDisconnect" | "raknetEncapsulatedPacket"

Parameters ​

id ​

K

callback ​

(event) => void

Returns ​

this

Inherited from ​

EventEmitter.on


once() ​

once<T, K>(id, callback): this

Defined in: prismarine/src/events/EventEmitter.ts:158

Type Parameters ​

T ​

T extends EventTypes

K ​

K extends "tick" | "chat" | "entityPortalEnter" | "entityDamage" | "entityDeath" | "playerChangeDimension" | "playerConnect" | "playerDisconnect" | "playerSpawn" | "playerDespawn" | "playerMove" | "playerToggleFlight" | "playerToggleSprint" | "playerToggleOperator" | "playerSetGamemode" | "raknetConnect" | "raknetDisconnect" | "raknetEncapsulatedPacket"

Parameters ​

id ​

K

callback ​

(event) => void

Returns ​

this

Inherited from ​

EventEmitter.once


post() ​

post(pair): number

Defined in: prismarine/src/events/EventEmitter.ts:198

Calls every listener of the event without waiting for the asynchronous ones.

Parameters ​

pair ​

EventTypes

Returns ​

number

How many listeners received the event.

Inherited from ​

EventEmitter.post


releaseOnShutdown() ​

releaseOnShutdown(release): void

Defined in: prismarine/src/Server.ts:527

Registers something to undo the moment a shutdown begins.

For what the callers give up and why, see ShutdownLifecycle.releaseOnShutdown. A release runs once, synchronously, before the shutdown awaits anything - which is the whole point, as the teardown below may not get another turn of the event loop for seconds.

Parameters ​

release ​

() => void

Gives up whatever is keeping the kernel from killing this process.

Returns ​

void


reload() ​

reload(): Promise<void>

Defined in: prismarine/src/Server.ts:477

Reloads the server.

Returns ​

Promise<void>

A promise that resolves when the server is reloaded.

Remarks ​

This method is equivalent to calling Server#disable and Server#enable.


removeAllListeners() ​

removeAllListeners(id?): this

Defined in: prismarine/src/events/EventEmitter.ts:174

Parameters ​

id? ​

"tick" | "chat" | "entityPortalEnter" | "entityDamage" | "entityDeath" | "playerChangeDimension" | "playerConnect" | "playerDisconnect" | "playerSpawn" | "playerDespawn" | "playerMove" | "playerToggleFlight" | "playerToggleSprint" | "playerToggleOperator" | "playerSetGamemode" | "raknetConnect" | "raknetDisconnect" | "raknetEncapsulatedPacket"

Returns ​

this

Inherited from ​

EventEmitter.removeAllListeners


removeListener() ​

removeListener<T, K>(id, callback): this

Defined in: prismarine/src/events/EventEmitter.ts:166

Type Parameters ​

T ​

T extends EventTypes

K ​

K extends "tick" | "chat" | "entityPortalEnter" | "entityDamage" | "entityDeath" | "playerChangeDimension" | "playerConnect" | "playerDisconnect" | "playerSpawn" | "playerDespawn" | "playerMove" | "playerToggleFlight" | "playerToggleSprint" | "playerToggleOperator" | "playerSetGamemode" | "raknetConnect" | "raknetDisconnect" | "raknetEncapsulatedPacket"

Parameters ​

id ​

K

callback ​

(event) => void

Returns ​

this

Inherited from ​

EventEmitter.removeListener


restoreReplayRandomState() ​

restoreReplayRandomState(state): void

Defined in: prismarine/src/Server.ts:814

Restores the saved random streams without changing any draw sites or their order.

Parameters ​

state ​

unknown

Returns ​

void


setContent() ​

setContent(content): void

Defined in: prismarine/src/Server.ts:760

Replaces the content registries.

For a test and for a plugin that composes its own stack. Hands over a whole build, not a patch: a registry's numeric ids are positional, so a half-replaced content set would leave the flattened tables indexed against a palette that no longer matches.

Parameters ​

content ​

ServerContent

The build to run on from here.

Returns ​

void


setRandom() ​

setRandom(random): void

Defined in: prismarine/src/Server.ts:846

Replaces the source of chance.

Parameters ​

random ​

Random

what to roll with from now on.

Returns ​

void


shutdown() ​

shutdown(options?): Promise<void>

Defined in: prismarine/src/Server.ts:540

Kills the server asynchronously.

Asking twice forces the exit rather than returning - see ShutdownLifecycle.forceExit.

Parameters ​

options? ​

The options.

crash? ​

boolean

If the server should crash.

stayAlive? ​

boolean

If we should let the process stay alive.

Returns ​

Promise<void>

A promise that resolves when the server is killed.