classicborne
    Preparing search index...

    classicborne

    classicborne

    NPM version badge Open GitHub issues badge

    A general purpose* Minecraft Classic server with CPE support.

    import { BaseUniverse } from "classicborne/class/server/BaseUniverse.mjs"

    const myUniverse = new BaseUniverse({
    port: 25565,
    postToMainServer: true,
    })

    // flush changes on all levels every 60 seconds
    setInterval(() => {
    myUniverse.levels.forEach(async (level) => {
    level = await level
    if (level.changeRecord) level.changeRecord.flushChanges()
    })
    }, 60000)

    Extend it by subclassing base classes.

    import { BaseLevel } from "classicborne/class/server/BaseUniverse.mjs"
    import { BasePlayer } from "classicborne/class/player/BasePlayer.mjs"
    import { BaseUniverse } from "classicborne/class/server/BaseUniverse.mjs"

    class MyLevel extends BaseLevel {
    constructor(...args) {
    super(...args)
    this.positionEventListeners = new Map()
    this.on("playerRemoved", async (player) => {
    const positionEventListener = this.positionEventListeners.get(player)
    player.client.removeListener("position", positionEventListener)
    })
    this.on("playerAdded", async (player) => {
    const onPosition = (position) => {
    console.log(position)
    }
    player.client.on("position", onPosition)
    this.positionEventListeners.set(player, onPosition)
    })
    }
    /** */
    static async teleportPlayer(player) {
    if (super.teleportPlayer(player) === false) return
    Level.loadIntoUniverse(player.universe, "my-level").then(async (level) => {
    level.addPlayer(player, [60, 8, 4], [162, 254])
    })
    }
    }

    class MyPlayer extends BasePlayer {
    /** */
    async initialize(...args) {
    const authenticated = await super(...args)
    if (!authenticated) return
    this.universe.addPlayer(this)
    MyLevel.teleportPlayer(this)
    }
    }

    class MyUniverse extends BaseUniverse {
    static playerClass = MyPlayer
    }

    new MyUniverse({
    port: 25565,
    postToMainServer: true,
    })