{"version":3,"sources":["../../src/index.ts","../../src/core/ws/WSClient.ts","../../src/components/schemas.ts","../../src/methods/index.ts","../../src/methods/allowlist/index.ts","../../src/methods/bans/index.ts","../../src/methods/ipBans/index.ts","../../src/methods/operators/index.ts","../../src/methods/players/index.ts","../../src/methods/server/index.ts","../../src/methods/serversettings/index.ts","../../src/core/enums.ts","../../src/notification/index.ts"],"sourcesContent":["\r\nexport { WSClient } from './core/ws/WSClient';\r\nexport * as Schemas from './components/schemas';\r\nexport * as Method from './methods/index';\r\nexport * as Enums from './core/enums';\r\nexport * as Notification from './notification/index';","import { Method } from \"../../methods\";\r\nimport { Notification, Notifications, NotificationParams } from '../../notification/index';\r\n\r\nlet WebSocketImpl: typeof WebSocket;\r\nif (typeof window === 'undefined') {\r\n    WebSocketImpl = require('ws');\r\n} else {\r\n    WebSocketImpl = WebSocket;\r\n}\r\n\r\n/**\r\n * Notification handler\r\n */\r\nexport type NotificationHandler<T extends Notifications['name']> = (\r\n    params: NotificationParams<T>\r\n) => void;\r\n\r\ntype NotificationMap = {\r\n    [K in Notifications['name']]: NotificationHandler<K>[];\r\n}\r\n\r\ninterface JsonRpcRequest {\r\n    jsonrpc: \"2.0\";\r\n    id: number;\r\n    method: string;\r\n    params?: any[];\r\n}\r\n\r\ninterface JsonRpcResponse {\r\n    jsonrpc: \"2.0\";\r\n    id?: number;\r\n    result?: any;\r\n    error?: any;\r\n    method?: string;\r\n    params?: any[];\r\n}\r\n\r\ntype WSCallbackMap = {\r\n    open: (ev: Event) => void;\r\n    close: (ev: CloseEvent) => void;\r\n    message: (ev: MessageEvent<any>) => void;\r\n    error: (ev: Event) => void;\r\n};\r\n\r\n/**\r\n * WebSocketClient\r\n */\r\nexport class WSClient {\r\n    private ws: WebSocket;\r\n    private rpcId = 0;\r\n    private pending: Map<number, (res: JsonRpcResponse) => void> = new Map();\r\n    private handlers: Partial<NotificationMap> = {};\r\n\r\n    constructor(url: string) {\r\n        this.ws = new WebSocketImpl(url);\r\n        this.on('message', (data: MessageEvent) => {\r\n            const msg: JsonRpcResponse = JSON.parse(data.data)\r\n            if (msg.id !== undefined && this.pending.has(msg.id)) {\r\n                this.pending.get(msg.id)!(msg);\r\n                this.pending.delete(msg.id);\r\n            }\r\n            // notification callback\r\n            this.handlers[msg.method as Notifications['name']]?.forEach(callback => {\r\n                if (msg.params === undefined) {\r\n                    (callback as () => void)();\r\n                } else {\r\n                    (callback as (params: any) => void)(msg.params);\r\n                }\r\n            });\r\n        })\r\n    }\r\n\r\n    // Register the event callback\r\n    public on<K extends keyof WSCallbackMap>(event: K, callback: WSCallbackMap[K]) {\r\n        this.ws.addEventListener(event, callback as EventListener);\r\n    }\r\n\r\n    // Cancel event callback\r\n    public off<K extends keyof WSCallbackMap>(event: K, callback: WSCallbackMap[K]) {\r\n        this.ws.removeEventListener(event, callback as EventListener);\r\n    }\r\n\r\n    // RPC call\r\n    public call(method: string, params?: any[]): Promise<any> {\r\n        const id = this.rpcId++;\r\n        const payload: JsonRpcRequest = { jsonrpc: \"2.0\", id, method, params }\r\n        return new Promise((resolve, reject) => {\r\n            this.pending.set(id, res => {\r\n                if (res.error) {\r\n                    console.error(res.error);\r\n                    throw new Error(res.error);\r\n                }\r\n                else resolve(res.result);\r\n            });\r\n            console.log(\"调用：\", JSON.stringify(payload));\r\n\r\n            this.ws.send(JSON.stringify(payload));\r\n        })\r\n    }\r\n\r\n    /**\r\n     * RPC method call\r\n     * @param method Method\r\n     */\r\n    public callMethod<P, R>(method: Method<P, R>): Promise<R> {\r\n        if (method.params === undefined || method.params === null) {\r\n            return this.call(method.method, []);\r\n        }\r\n        // if (method.params instanceof Array) {\r\n        //     return this.call(method.method, [method.params]);\r\n        // }\r\n        return this.call(method.method, [method.params]);\r\n    }\r\n\r\n    /**\r\n     * Register a notification handler\r\n     * @param name Notification name\r\n     * @param handler Notification handler\r\n     */\r\n    public onNotification<T extends Notifications['name']>(\r\n        name: T,\r\n        handler: NotificationHandler<T>\r\n    ) {\r\n        if (!this.handlers[name]) {\r\n            this.handlers[name] = [];\r\n        }\r\n        (this.handlers[name] as NotificationHandler<T>[]).push(handler);\r\n    }\r\n\r\n    /**\r\n     * Unregister a notification handler\r\n     * @param name Notification name\r\n     * @param handler Notification handler\r\n     */\r\n    public offNotification<T extends Notifications['name']>(\r\n        name: T,\r\n        handler: NotificationHandler<T>\r\n    ) {\r\n        const list = this.handlers[name] as NotificationHandler<T>[] | undefined;\r\n        if (!list) return;\r\n        const next = list.filter(h => h !== handler);\r\n        (this.handlers as Record<string, NotificationHandler<any>[]>)[name] = next;\r\n        if (next.length === 0) {\r\n            delete (this.handlers as Record<string, NotificationHandler<any>[]>)[name];\r\n        }\r\n    }\r\n}","\r\nexport interface UntypedGameRule {\r\n    key: string;\r\n    value: string;\r\n}\r\n\r\nexport interface IncomingIpBan {\r\n    reason: string;\r\n    expires: string;\r\n    ip: string;\r\n    source: string;\r\n    player: Player;\r\n}\r\n\r\nexport interface SystemMessage {\r\n    receivingPlayers: Player[];\r\n    overlay: boolean;\r\n    message: Message;\r\n}\r\n\r\nexport interface KickPlayer {\r\n    players: Player[];\r\n    message: Message;\r\n}\r\n\r\nexport interface IpBan {\r\n    reason: string;\r\n    expires: string;\r\n    ip: string;\r\n    source: string;\r\n}\r\n\r\nexport interface TypedGameRule {\r\n    type: 'integer' | 'boolean';\r\n    key: string;\r\n    value: string;\r\n}\r\n\r\nexport interface UserBan {\r\n    reason: string;\r\n    expires: string;\r\n    source: string;\r\n    player: Player;\r\n}\r\n\r\nexport interface Message {\r\n    translatable: string;\r\n    translatableParams: string[];\r\n    literal: string;\r\n}\r\n\r\nexport interface Version {\r\n    protocol: number;\r\n    name: string;\r\n}\r\n\r\nexport interface ServerState {\r\n    players: Player[];\r\n    started: boolean;\r\n    version: Version;\r\n}\r\n\r\nexport interface Operator {\r\n    permissionLevel: number;\r\n    bypassesPlayerLimit: boolean;\r\n    player: Player;\r\n}\r\n\r\nexport interface Player {\r\n    id: string;\r\n    name: string;\r\n}","/**\r\n * 定义方法列表\r\n */\r\n\r\nexport * as AllowList from './allowlist/index';\r\nexport * as Bans from './bans/index';\r\nexport * as IpBans from './ipBans/index';\r\nexport * as Operators from './operators/index';\r\nexport * as Players from './players/index';\r\nexport * as Server from './server/index';\r\nexport * as ServerSettings from './serversettings/index';\r\n\r\nexport interface IMethod<Params = any, Result = any> {\r\n    method: string;\r\n    params?: Params;\r\n}\r\n\r\nexport class Method<Params = any, Result = any> implements IMethod<Params, Result> {\r\n    method: string;\r\n    params?: Params;\r\n\r\n    /**\r\n     * create a method\r\n     * @param method method name\r\n     * @param params method parameters\r\n     */\r\n    constructor(method: string, params?: Params) {\r\n        this.method = method;\r\n        this.params = params;\r\n    }\r\n}","/**\r\n * allowlist\r\n */\r\nimport { Method } from '../index';\r\nimport * as Schemas from '../../components/schemas';\r\n\r\n/**\r\n * Get the allowlist\r\n */\r\nexport function get() {\r\n    return new Method<undefined, Schemas.Player[]>('minecraft:allowlist')\r\n}\r\n\r\n/**\r\n * Set the allowlist\r\n * @param players player list\r\n */\r\nexport function set(players: Schemas.Player[]) {\r\n    return new Method<Schemas.Player[], Schemas.Player[]>('minecraft:allowlist/set', players);\r\n}\r\n\r\n/**\r\n * Add players to allowlist\r\n * @param players player list\r\n */\r\nexport function add(players: Schemas.Player[]) {\r\n    return new Method<Schemas.Player[], Schemas.Player[]>('minecraft:allowlist/add', players);\r\n}\r\n\r\n/**\r\n * Remove players from allowlist\r\n * @param players player list\r\n */\r\nexport function remove(players: Schemas.Player[]) {\r\n    return new Method<Schemas.Player[], Schemas.Player[]>('minecraft:allowlist/remove', players);\r\n}\r\n\r\n/**\r\n * Clear all players in allowlist\r\n */\r\nexport function clear() {\r\n    return new Method<undefined, Schemas.Player[]>('minecraft:allowlist/clear');\r\n}","/**\r\n * bans\r\n */\r\nimport { Method } from '../index';\r\nimport * as Schemas from '../../components/schemas';\r\n\r\n/**\r\n * Get the ban list\r\n */\r\nexport function get() {\r\n    return new Method<undefined, Schemas.UserBan[]>(\"minecraft:bans\");\r\n}\r\n\r\n/**\r\n * Set the banlist\r\n * @param bans ban list\r\n */\r\nexport function set(bans: Schemas.UserBan[]) {\r\n    return new Method<Schemas.UserBan[], Schemas.UserBan[]>(\"minecraft:bans/set\", bans);\r\n}\r\n\r\n/**\r\n * Add players to ban list\r\n * @param bans ban list\r\n */\r\nexport function add(bans: Schemas.UserBan[]) {\r\n    return new Method<Schemas.UserBan[], Schemas.UserBan[]>(\"minecraft:bans/add\", bans);\r\n}\r\n\r\n/**\r\n * Remove players from ban list\r\n * @param bans ban list\r\n */\r\nexport function remove(bans: Schemas.UserBan[]) {\r\n    return new Method<Schemas.UserBan[], Schemas.UserBan[]>(\"minecraft:bans/remove\", bans);\r\n}\r\n\r\n/**\r\n * Clear all players in ban list\r\n */\r\nexport function clear() {\r\n    return new Method<undefined, Schemas.UserBan[]>(\"minecraft:bans/clear\");\r\n}","/**\r\n * ip_bans\r\n */\r\n\r\nimport { Method } from '../index';\r\nimport * as Schemas from '../../components/schemas';\r\n\r\n/**\r\n * Get the ip ban list\r\n */\r\nexport function get() {\r\n    return new Method<undefined, Schemas.IpBan[]>(\"minecraft:ip_bans\");\r\n}\r\n\r\n/**\r\n * Set the ip banlist\r\n * @param ipBans ip ban list\r\n */\r\nexport function set(ipBans: Schemas.IpBan[]) {\r\n    return new Method<Schemas.IpBan[], Schemas.IpBan[]>(\"minecraft:ip_bans/set\", ipBans);\r\n}\r\n\r\n/**\r\n * Add ip to ban list\r\n * @param ipBans ip ban list\r\n */\r\nexport function add(ipBans: Schemas.IpBan[]) {\r\n    return new Method<Schemas.IpBan[], Schemas.IpBan[]>(\"minecraft:ip_bans/add\", ipBans);\r\n}\r\n\r\n/**\r\n * Remove ip from ban list\r\n * @param ipBans ip ban list\r\n */\r\nexport function remove(ipBans: Schemas.IpBan[]) {\r\n    return new Method<Schemas.IpBan[], Schemas.IpBan[]>(\"minecraft:ip_bans/remove\", ipBans);\r\n}\r\n\r\n/**\r\n * Clear all ips in ban list\r\n */\r\nexport function clear() {\r\n    return new Method<undefined, Schemas.IpBan[]>(\"minecraft:ip_bans/clear\");\r\n}","/**\r\n * operators\r\n */\r\nimport { Method } from '../index';\r\nimport * as Schemas from '../../components/schemas';\r\n\r\n/**\r\n * Get all oped players\r\n */\r\nexport function get() {\r\n    return new Method<undefined, Schemas.Operator[]>(\"minecraft:operators\");\r\n}\r\n\r\n/**\r\n * Set all oped players\r\n * @param ops op list\r\n */\r\nexport function set(ops: Schemas.Operator[]) {\r\n    return new Method<Schemas.Operator[], Schemas.Operator[]>(\"minecraft:operators/set\", ops);\r\n}\r\n\r\n/**\r\n * Op players\r\n * @param ops op list\r\n */\r\nexport function add(ops: Schemas.Operator[]) {\r\n    return new Method<Schemas.Operator[], Schemas.Operator[]>(\"minecraft:operators/add\", ops);\r\n}\r\n\r\n/**\r\n * Deop players\r\n * @param players player list\r\n */\r\nexport function remove(players: Schemas.Player[]) {\r\n    return new Method<Schemas.Player[], Schemas.Operator[]>(\"minecraft:operators/remove\", players);\r\n}\r\n\r\n/**\r\n * Deop all players\r\n */\r\nexport function clear() {\r\n    return new Method<undefined, Schemas.Operator[]>(\"minecraft:operators/clear\");\r\n}","/**\r\n * players\r\n */\r\nimport { Method } from '../index';\r\nimport * as Schemas from '../../components/schemas';\r\n\r\n/**\r\n * Get all connected players\r\n */\r\nexport function get() {\r\n    return new Method<undefined, Schemas.Player[]>(\"minecraft:players\");\r\n}\r\n\r\n/**\r\n * Kick players\r\n * @param kickPlayer kick players\r\n */\r\nexport function kick(kickPlayer: Schemas.KickPlayer[]) {\r\n    return new Method<Schemas.KickPlayer[], Schemas.Player[]>(\"minecraft:players/kick\", kickPlayer)\r\n}","/**\r\n * server\r\n */\r\nimport { Method } from '../index';\r\nimport * as Schemas from '../../components/schemas';\r\n\r\n/**\r\n * Get server status\r\n */\r\nexport function status() {\r\n    return new Method<undefined, Schemas.ServerState>(\"minecraft:server/status\");\r\n}\r\n\r\n/**\r\n * Save server state\r\n * @param flush Whether to flush the state\r\n */\r\nexport function save(flush: boolean) {\r\n    return new Method<{ flush: boolean }, boolean>(\"minecraft:server/save\", { flush });\r\n}\r\n\r\n/**\r\n * Stop server\r\n */\r\nexport function stop() {\r\n    return new Method<undefined, boolean>(\"minecraft:server/stop\");\r\n}\r\n\r\n/**\r\n * Send a system message\r\n * @param msg system message\r\n */\r\nexport function systemMessage(msg: Schemas.SystemMessage) {\r\n    return new Method<Schemas.SystemMessage, boolean>(\"minecraft:server/system_message\", msg);\r\n}\r\n\r\n","/**\r\n * serversettings\r\n */\r\nimport { Method } from '../index';\r\nimport * as Schemas from '../../components/schemas';\r\nimport { Difficulty, GameMode } from '../../core/enums';\r\n\r\n/**\r\n * Get whether automatic world saving is enabled on the server\r\n */\r\nexport function getAutosave() {\r\n    return new Method<undefined, boolean>(\"minecraft:serversettings/autosave\");\r\n}\r\n\r\n/**\r\n * Enable or disable automatic world saving on the server\r\n * @param enable enable or disable auto saving\r\n */\r\nexport function setAutosave(enable: boolean) {\r\n    return new Method<{ enable: boolean }, boolean>(\"minecraft:serversettings/autosave/set\", { enable });\r\n}\r\n\r\n/**\r\n * Get the current difficulty level of the server\r\n */\r\nexport function getDifficulty() {\r\n    return new Method<undefined, string>(\"minecraft:serversettings/difficulty\");\r\n}\r\n\r\n/**\r\n * Set the difficulty level of the server\r\n * @param difficulty difficulty\r\n */\r\nexport function setDifficulty(difficulty: Difficulty) {\r\n    return new Method<{ difficulty: Difficulty }, boolean>(\"minecraft:serversettings/difficulty/set\", { difficulty })\r\n}\r\n\r\n/**\r\n * Get whether allowlist enforcement is enabled (kicks players immediately when removed from allowlist)\r\n */\r\nexport function getEnforceAllowlist() {\r\n    return new Method<undefined, boolean>(\"minecraft:serversettings/enforce_allowlist\");\r\n}\r\n\r\n/**\r\n * Enable or disable allowlist enforcement (when enabled, players are kicked immediately upon removal from allowlist)\r\n * @param enforce isEnforce\r\n */\r\nexport function setEnforceAllowlist(enforce: boolean) {\r\n    return new Method<{ enforce: boolean }, boolean>(\"minecraft:serversettings/enforce_allowlist/set\", { enforce });\r\n}\r\n\r\n/**\r\n * Get whether the allowlist is enabled on the server\r\n */\r\nexport function getUseAllowlist() {\r\n    return new Method<undefined, boolean>(\"minecraft:serversettings/use_allowlist\");\r\n}\r\n\r\n/**\r\n * Enable or disable the allowlist on the server (controls whether only allowlisted players can join)\r\n * @param use isUse\r\n */\r\nexport function setUseAllowlist(use: boolean) {\r\n    return new Method<{ use: boolean }, boolean>(\"minecraft:serversettings/use_allowlist/set\", { use });\r\n}\r\n\r\n/**\r\n * Get the maximum number of players allowed to connect to the server\r\n */\r\nexport function getMaxPlayers() {\r\n    return new Method<undefined, number>(\"minecraft:serversettings/max_players\");\r\n}\r\n\r\n/**\r\n * Set the maximum number of players allowed to connect to the server\r\n * @param max max player num\r\n */\r\nexport function setMaxPlayers(max: number) {\r\n    return new Method<{ max: number }, boolean>(\"minecraft:serversettings/max_players/set\", { max });\r\n}\r\n\r\n/**\r\n * Get the number of seconds before the game is automatically paused when no players are online\r\n */\r\nexport function getPauseWhenEmptySeconds() {\r\n    return new Method<undefined, number>(\"minecraft:serversettings/pause_when_empty_seconds\");\r\n}\r\n\r\n/**\r\n * Set the number of seconds before the game is automatically paused when no players are online\r\n * @param seconds pause duration in seconds\r\n */\r\nexport function setPauseWhenEmptySeconds(seconds: number) {\r\n    return new Method<{ seconds: number }, number>(\"minecraft:serversettings/pause_when_empty_seconds/set\", { seconds });\r\n}\r\n\r\n/**\r\n * Get the number of seconds before idle players are automatically kicked from the server\r\n */\r\nexport function getPlayerIdleTimeout() {\r\n    return new Method<undefined, number>(\"minecraft:serversettings/player_idle_timeout\");\r\n}\r\n\r\n/**\r\n * Set the number of seconds before idle players are automatically kicked from the server\r\n * @param seconds idle timeout duration in seconds\r\n */\r\nexport function setPlayerIdleTimeout(seconds: number) {\r\n    return new Method<{ seconds: number }, number>(\"minecraft:serversettings/player_idle_timeout/set\", { seconds });\r\n}\r\n\r\n/**\r\n * Get whether flight is allowed for players in Survival mode\r\n */\r\nexport function getAllowFlight() {\r\n    return new Method<undefined, boolean>(\"minecraft:serversettings/allow_flight\");\r\n}\r\n\r\n/**\r\n * Allow or disallow flight for players in Survival mode\r\n * @param allow whether to allow flight\r\n */\r\nexport function setAllowFlight(allow: boolean) {\r\n    return new Method<{ allow: boolean }, boolean>(\"minecraft:serversettings/allow_flight/set\", { allow });\r\n}\r\n\r\n/**\r\n * Get the server's message of displayed to players\r\n */\r\nexport function getMotd() {\r\n    return new Method<undefined, string>(\"minecraft:serversettings/motd\");\r\n}\r\n\r\n/**\r\n * Set the server's message of the day displayed to players\r\n * @param message message\r\n */\r\nexport function setMotd(message: string) {\r\n    return new Method<{ message: string }, string>(\"minecraft:serversettings/motd/set\", { message });\r\n}\r\n\r\n/**\r\n * Get the spawn protection radius in blocks (only operators can edit within this area)\r\n */\r\nexport function getSpawnProtectionRadius() {\r\n    return new Method<undefined, number>(\"minecraft:serversettings/spawn_protection_radius\");\r\n}\r\n\r\n/**\r\n * Set the spawn protection radius in blocks (only operators can edit within this area)\r\n * @param radius radius\r\n */\r\nexport function setSpawnProtectionRadius(radius: number) {\r\n    return new Method<{ radius: number }, number>(\"minecraft:serversettings/spawn_protection_radius/set\", { radius });\r\n}\r\n\r\n/**\r\n * Get whether players are forced to use the server's default game mode\r\n */\r\nexport function getForceGameMode() {\r\n    return new Method<undefined, boolean>(\"minecraft:serversettings/force_game_mode\");\r\n}\r\n\r\n/**\r\n * Enable or disable forcing players to use the server's default game mode\r\n * @param force whether to force the default game mode\r\n */\r\nexport function setForceGameMode(force: boolean) {\r\n    return new Method<{ force: boolean }, boolean>(\"minecraft:serversettings/force_game_mode/set\", { force });\r\n}\r\n\r\n/**\r\n * Get the server's default game mode\r\n */\r\nexport function getGameMode() {\r\n    return new Method<undefined, GameMode>(\"minecraft:serversettings/game_mode\");\r\n}\r\n\r\n/**\r\n * Set the server's default game mode\r\n * @param mode the default game mode\r\n */\r\nexport function setGameMode(mode: GameMode) {\r\n    return new Method<{ mode: GameMode }, string>(\"minecraft:serversettings/game_mode/set\", { mode });\r\n}\r\n\r\n/**\r\n * Get the server's view distance in chunks\r\n */\r\nexport function getViewDistance() {\r\n    return new Method<undefined, number>(\"minecraft:serversettings/view_distance\");\r\n}\r\n\r\n/**\r\n * Set the server's view distance in chunks\r\n * @param distance the view distance in chunks\r\n */\r\nexport function setViewDistance(distance: number) {\r\n    return new Method<{ distance: number }, string>(\"minecraft:serversettings/view_distance/set\", { distance });\r\n}\r\n\r\n/**\r\n * Get the server's simulation distance in chunks\r\n */\r\nexport function getSimulationDistance() {\r\n    return new Method<undefined, number>(\"minecraft:serversettings/simulation_distance\");\r\n}\r\n\r\n/**\r\n * Set the server's simulation distance in chunks\r\n * @param distance the simulation distance in chunks\r\n */\r\nexport function setSimulationDistance(distance: number) {\r\n    return new Method<{ distance: number }, string>(\"minecraft:serversettings/simulation_distance/set\", { distance });\r\n}\r\n\r\n/**\r\n * Get whether the server accepts player transfers from other servers\r\n */\r\nexport function getAcceptTransfers() {\r\n    return new Method<undefined, boolean>(\"minecraft:serversettings/accept_transfers\");\r\n}\r\n\r\n/**\r\n * Enable or disable accepting player transfers from other servers\r\n * @param accept whether to accept player transfers\r\n */\r\nexport function setAcceptTransfers(accept: boolean) {\r\n    return new Method<{ accept: boolean }, boolean>(\"minecraft:serversettings/accept_transfers/set\", { accept });\r\n}\r\n\r\n/**\r\n * Get the interval in seconds between server status heartbeats\r\n */\r\nexport function getStatusHeartbeatInterval() {\r\n    return new Method<undefined, number>(\"minecraft:serversettings/status_heartbeat_interval\");\r\n}\r\n\r\n/**\r\n * Set the interval in seconds between server status heartbeats\r\n * @param seconds the interval in seconds\r\n * @returns whether the operation was successful\r\n */\r\nexport function setStatusHeartbeatInterval(seconds: number) {\r\n    return new Method<{ seconds: number }, boolean>(\"minecraft:serversettings/status_heartbeat_interval/set\", { seconds });\r\n}\r\n\r\n/**\r\n * Get the permission level required for operator commands\r\n */\r\nexport function getOperatorUserPermissionLevel() {\r\n    return new Method<undefined, number>(\"minecraft:serversettings/operator_user_permission_level\");\r\n}\r\n\r\n/**\r\n * Set the permission level required for operator commands\r\n * @param level the permission level\r\n */\r\nexport function setOperatorUserPermissionLevel(level: number) {\r\n    return new Method<{ level: number }, number>(\"minecraft:serversettings/operator_user_permission_level/set\", { level });\r\n}\r\n\r\n/**\r\n * Get whether the server hides online player information from status queries\r\n */\r\nexport function getHideOnlinePlayers() {\r\n    return new Method<undefined, boolean>(\"minecraft:serversettings/hide_online_players\");\r\n}\r\n\r\n/**\r\n * Enable or disable hiding online player information from status queries\r\n * @param hide whether to hide online player information\r\n */\r\nexport function setHideOnlinePlayers(hide: boolean) {\r\n    return new Method<{ hide: boolean }, boolean>(\"minecraft:serversettings/hide_online_players/set\", { hide });\r\n}\r\n\r\n/**\r\n * Get whether the server responds to connection status requests\r\n */\r\nexport function getStatusReplies() {\r\n    return new Method<undefined, boolean>(\"minecraft:serversettings/status_replies\");\r\n}\r\n\r\n/**\r\n * Enable or disable the server responding to connection status requests\r\n * @param enable whether to enable status replies\r\n */\r\nexport function setStatusReplies(enable: boolean) {\r\n    return new Method<{ enable: boolean }, boolean>(\"minecraft:serversettings/status_replies/set\", { enable });\r\n}\r\n\r\n/**\r\n * Get the entity broadcast range as a percentage\r\n */\r\nexport function getEntityBroadcastRange() {\r\n    return new Method<undefined, number>(\"minecraft:serversettings/entity_broadcast_range\");\r\n}\r\n\r\n/**\r\n * Set the entity broadcast range as a percentage\r\n * @param range the entity broadcast range as a percentage\r\n */\r\nexport function setEntityBroadcastRange(range: number) {\r\n    return new Method<{ range: number }, number>(\"minecraft:serversettings/entity_broadcast_range/set\", { range });\r\n}\r\n\r\n/**\r\n * Get the available game rule keys and their current values\r\n */\r\nexport function getGameRules() {\r\n    return new Method<undefined, Schemas.TypedGameRule>(\"minecraft:gamerules\");\r\n}\r\n\r\n/**\r\n * Update game rule value\r\n * @param gamerule the game rule to update\r\n */\r\nexport function setGameRules(gamerule: Schemas.TypedGameRule) {\r\n    return new Method<{ gamerule: Schemas.UntypedGameRule }, boolean>(\"minecraft:gamerules/update\", { gamerule });\r\n}","\r\nexport enum Difficulty {\r\n    Peaceful = \"peaceful\",\r\n    Easy = \"easy\",\r\n    Normal = \"normal\",\r\n    Hard = \"hard\"\r\n}\r\n\r\nexport enum GameMode {\r\n    Survival = \"survival\",\r\n    Creative = \"creative\",\r\n    Adventure = \"adventure\",\r\n    Spectator = \"spectator\"\r\n}","/**\r\n * notification\r\n */\r\n\r\nimport { Schemas } from \"..\";\r\n\r\n/**\r\n * Notification\r\n */\r\nexport interface Notification<Name extends string, Params = {}> {\r\n    name: Name;\r\n    params: Params;\r\n}\r\n\r\n/**\r\n * All notifications.\r\n */\r\nexport type Notifications =\r\n    | Notification<\"notification:server/started\">\r\n    | Notification<\"notification:server/stopping\">\r\n    | Notification<\"notification:server/saving\">\r\n    | Notification<\"notification:server/saved\">\r\n    | Notification<\"notification:players/joined\", [player: Schemas.Player]>\r\n    | Notification<\"notification:players/left\", [player: Schemas.Player]>\r\n    | Notification<\"notification:operators/added\", [player: Schemas.Operator]>\r\n    | Notification<\"notification:operators/removed\", [player: Schemas.Operator]>\r\n    | Notification<\"notification:allowlist/added\", [player: Schemas.Player]>\r\n    | Notification<\"notification:allowlist/removed\", [player: Schemas.Player]>\r\n    | Notification<\"notification:ip_bans/added\", [player: Schemas.IpBan]>\r\n    | Notification<\"notification:ip_bans/removed\", [player: string]>\r\n    | Notification<\"notification:bans/added\", [player: Schemas.UserBan]>\r\n    | Notification<\"notification:bans/removed\", [player: Schemas.Player]>\r\n    | Notification<\"notification:gamerules/updated\", [gamerule: Schemas.TypedGameRule]>\r\n    | Notification<\"notification:server/status\", [status: Schemas.ServerState]>\r\n\r\n/**\r\n * Notification parameters for a specific notification type.\r\n */\r\nexport type NotificationParams<T extends Notifications['name']> =\r\n    Extract<Notifications, { name: T }>['params'];"],"mappings":"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","names":["add","clear","get","remove","set","get","set","add","remove","clear","add","clear","get","remove","set","get","set","add","remove","clear","add","clear","get","remove","set","get","set","add","remove","clear","get","get","Difficulty","GameMode"]}