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
The config.
headless?
boolean = false
inboundPacketRecorder?
InboundPacketRecorder
Opt-in sink for accepted inbound packet bytes, which may include login identity data.
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
readonlyevtThirdParty: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
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
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
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
The command manager.
getConfig()
getConfig():
Config
Defined in: prismarine/src/Server.ts:885
Returns the config.
Returns
The config.
Example
console.log(server.getConfig().getMaxPlayers()); // 20getConsole()
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
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
The kernel.
getLogger()
getLogger():
Logger
Defined in: prismarine/src/Server.ts:780
Returns the logger.
Returns
The logger.
Example
// 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
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
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
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
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
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
console.log(server.getVersion());getWorldManager()
getWorldManager():
WorldManager
Defined in: prismarine/src/Server.ts:684
Returns
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
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
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.