From 1448f3cd195b8dedfa32bc759a0dda136c2374e5 Mon Sep 17 00:00:00 2001 From: Gavin John <> Date: Mon, 8 Jan 2024 11:59:06 -0600 Subject: [PATCH 1/9] Basic 1.17 support --- config/default-settings.json | 17 ++++++++++------- package.json | 8 ++++---- src/index.js | 12 ++++++++++-- src/lib/plugins/login.js | 9 +++++---- src/lib/plugins/world.js | 11 +++++++++-- src/lib/version.js | 2 +- src/lib/worldGenerations/all_the_blocks.js | 9 +++++---- src/lib/worldGenerations/empty.js | 3 ++- src/lib/worldGenerations/grass_field.js | 7 ++++--- src/lib/worldGenerations/nether.js | 6 ++++-- src/lib/worldGenerations/superflat.js | 8 +++++--- 11 files changed, 59 insertions(+), 33 deletions(-) diff --git a/config/default-settings.json b/config/default-settings.json index cdad2559..a7c1427c 100644 --- a/config/default-settings.json +++ b/config/default-settings.json @@ -8,9 +8,8 @@ "difficulty": 1, "worldFolder":"world", "generation": { - "name": "diamond_square", - "options":{ - "worldHeight": 80 + "name": "all_the_blocks", + "options": { } }, "kickTimeout": 10000, @@ -20,10 +19,14 @@ "modpe": false, "view-distance": 10, "player-list-text": { - "header":{"text": "Flying squid"}, - "footer":{"text": "Test server"} + "header": { + "text": "Flying squid" + }, + "footer": { + "text": "Test server" + } }, "everybody-op": false, - "max-entities":100, - "version": "1.16.5" + "max-entities": 100, + "version": false } diff --git a/package.json b/package.json index 7dd94f67..06fa5279 100644 --- a/package.json +++ b/package.json @@ -37,14 +37,14 @@ "exit-hook": "^2.2.1", "flatmap": "^0.0.3", "long": "^5.1.0", - "minecraft-protocol": "^1.44.0", + "minecraft-protocol": "^1.45.0", "moment": "^2.10.6", "needle": "^2.5.0", "node-gzip": "^1.1.2", - "prismarine-chunk": "^1.34.0", - "prismarine-entity": "^2.2.0", + "prismarine-chunk": "^1.35.0", + "prismarine-entity": "^2.4.0", "prismarine-item": "^1.14.0", - "prismarine-nbt": "^2.2.1", + "prismarine-nbt": "^2.5.0", "prismarine-provider-anvil": "^2.7.0", "prismarine-registry": "^1.7.0", "prismarine-windows": "^2.8.0", diff --git a/src/index.js b/src/index.js index 4523a690..23ca3797 100644 --- a/src/index.js +++ b/src/index.js @@ -27,8 +27,16 @@ module.exports = { testedVersions } -function createMCServer (options) { - options = options || {} +function createMCServer (options = {}) { + options.version = options.version ?? false + options.host = options.host ?? '0.0.0.0' + options.port = options.port ?? 25565 + options.brand = options.brand ?? 'vanilla' + + if (!options.version) { + options.version = latestSupportedVersion + } + const mcServer = new MCServer() mcServer.connect(options) return mcServer diff --git a/src/lib/plugins/login.js b/src/lib/plugins/login.js index f4a24c6a..f35fb034 100644 --- a/src/lib/plugins/login.js +++ b/src/lib/plugins/login.js @@ -84,15 +84,15 @@ module.exports.player = async function (player, serv, settings) { function sendLogin () { // send init data so client will start rendering world - player._client.write('login', { + const loginPacket = { entityId: player.id, levelType: 'default', gameMode: player.gameMode, - previousGameMode: player.prevGameMode, + previousGameMode: player.prevGameMode ?? registry.loginPacket?.previousGameMode ?? 0, worldNames: Object.values(serv.dimensionNames), dimensionCodec: registry.loginPacket?.dimensionCodec, worldName: serv.dimensionNames[0], - dimension: (registry.supportFeature('dimensionIsAString') || registry.supportFeature('dimensionIsAWorld')) ? registry.loginPacket.dimension : 0, + dimension: (registry.supportFeature('dimensionIsAWorld') || registry.supportFeature('dimensionIsAString')) ? registry.loginPacket.dimension : 0, hashedSeed: serv.hashedSeed, difficulty: serv.difficulty, viewDistance: settings['view-distance'], @@ -101,7 +101,8 @@ module.exports.player = async function (player, serv, settings) { enableRespawnScreen: true, isDebug: false, isFlat: settings.generation?.name === 'superflat' - }) + } + player._client.write('login', loginPacket) if (registry.supportFeature('difficultySentSeparately')) { player._client.write('difficulty', { difficulty: serv.difficulty, diff --git a/src/lib/plugins/world.js b/src/lib/plugins/world.js index 217ad8d0..f037d3d9 100644 --- a/src/lib/plugins/world.js +++ b/src/lib/plugins/world.js @@ -192,13 +192,20 @@ module.exports.player = function (player, serv, settings) { type: 'compound', name: '', value: { - MOTION_BLOCKING: { type: 'longArray', value: new Array(36).fill([0, 0]) } + MOTION_BLOCKING: { type: 'longArray', value: new Array(37).fill([0, 0]) } } }, // FIXME: fake heightmap chunkData: chunk.dump(), blockEntities: [] }) - if (registry.supportFeature('lightSentSeparately')) { + if (registry.supportFeature('dimensionDataIsAvailable')) { + player._client.write('update_light', { + chunkX: x, + chunkZ: z, + trustEdges: true, // should be false when a chunk section is updated instead of the whole chunk being overwritten, do we ever do that? + ...chunk.dumpLight() + }) + } else if (registry.supportFeature('lightSentSeparately')) { player._client.write('update_light', { chunkX: x, chunkZ: z, diff --git a/src/lib/version.js b/src/lib/version.js index 194bf27f..cf566e43 100644 --- a/src/lib/version.js +++ b/src/lib/version.js @@ -1,4 +1,4 @@ -const testedVersions = ['1.8.8', '1.9.4', '1.10.2', '1.11.2', '1.12.2', '1.13.2', '1.14.4', '1.15.2', '1.16.5'] +const testedVersions = ['1.8.8', '1.9.4', '1.10.2', '1.11.2', '1.12.2', '1.13.2', '1.14.4', '1.15.2', '1.16.5', '1.17.1'] module.exports = { testedVersions, latestSupportedVersion: testedVersions[testedVersions.length - 1], diff --git a/src/lib/worldGenerations/all_the_blocks.js b/src/lib/worldGenerations/all_the_blocks.js index 7a34cfec..37e6da6d 100644 --- a/src/lib/worldGenerations/all_the_blocks.js +++ b/src/lib/worldGenerations/all_the_blocks.js @@ -1,11 +1,12 @@ const Vec3 = require('vec3').Vec3 +const emptyGen = require('./empty') function generation ({ version }) { - const Chunk = require('prismarine-chunk')(version) - const { blocks } = require('prismarine-registry')(version) + const registry = require('prismarine-registry')(version) + const generateEmptyChunk = emptyGen({ version }) function generateSimpleChunk () { - const chunk = new Chunk() + const chunk = generateEmptyChunk() let i = 2 for (let x = 0; x < 16; x++) { @@ -13,7 +14,7 @@ function generation ({ version }) { let y for (y = 47; y <= 50; y++) { chunk.setBlockType(new Vec3(x, y, z), i) - i = (i + 1) % Object.keys(blocks).length + i = (i + 1) % Object.keys(registry.blocks).length } for (y = 0; y < 256; y++) { chunk.setSkyLight(new Vec3(x, y, z), 15) diff --git a/src/lib/worldGenerations/empty.js b/src/lib/worldGenerations/empty.js index 6ddf5976..b3e5c0cf 100644 --- a/src/lib/worldGenerations/empty.js +++ b/src/lib/worldGenerations/empty.js @@ -1,6 +1,7 @@ function generation ({ version }) { const Chunk = require('prismarine-chunk')(version) - return () => new Chunk() + const registry = require('prismarine-registry')(version) + return () => registry.supportFeature('tallWorld') ? new Chunk({ minY: -64, worldHeight: 384 }) : new Chunk() } module.exports = generation diff --git a/src/lib/worldGenerations/grass_field.js b/src/lib/worldGenerations/grass_field.js index 2e4a4982..e28627b5 100644 --- a/src/lib/worldGenerations/grass_field.js +++ b/src/lib/worldGenerations/grass_field.js @@ -1,18 +1,19 @@ const Vec3 = require('vec3').Vec3 +const emptyGen = require('./empty') function generation ({ version }) { - const Chunk = require('prismarine-chunk')(version) const registry = require('prismarine-registry')(version) const theFlattening = registry.supportFeature('theFlattening') + const generateEmptyChunk = emptyGen({ version }) function generateSimpleChunk () { - const chunk = new Chunk() + const chunk = generateEmptyChunk() for (let x = 0; x < 16; x++) { for (let z = 0; z < 16; z++) { chunk.setBlockType(new Vec3(x, 50, z), theFlattening ? registry.blocksByName.grass_block.id : registry.blocksByName.grass.id) // before the flattening the name of grass block is grass if (theFlattening) chunk.setBlockData(new Vec3(x, 50, z), 1) // before the flattening there is no data - for (let y = 0; y < 256; y++) { + for (let y = chunk.minY ?? 0; y < chunk.worldHeight ?? 256; y++) { chunk.setSkyLight(new Vec3(x, y, z), 15) } } diff --git a/src/lib/worldGenerations/nether.js b/src/lib/worldGenerations/nether.js index 6dad510b..16214b7d 100644 --- a/src/lib/worldGenerations/nether.js +++ b/src/lib/worldGenerations/nether.js @@ -1,13 +1,15 @@ const Vec3 = require('vec3').Vec3 const rand = require('random-seed') +const emptyGen = require('./empty') function generation ({ version, seed, level = 50 } = {}) { - const Chunk = require('prismarine-chunk')(version) const registry = require('prismarine-registry')(version) + const generateEmptyChunk = emptyGen({ version }) + function generateChunk (chunkX, chunkZ) { const seedRand = rand.create(seed + ':' + chunkX + ':' + chunkZ) - const chunk = new Chunk() + const chunk = generateEmptyChunk() for (let x = 0; x < 16; x++) { for (let z = 0; z < 16; z++) { const bedrockheighttop = 1 + seedRand(4) diff --git a/src/lib/worldGenerations/superflat.js b/src/lib/worldGenerations/superflat.js index 69d3ae21..fb0aeec1 100644 --- a/src/lib/worldGenerations/superflat.js +++ b/src/lib/worldGenerations/superflat.js @@ -1,7 +1,7 @@ const Vec3 = require('vec3').Vec3 +const emptyGen = require('./empty') function generation (options = {}) { - const Chunk = require('prismarine-chunk')(options.version) const registry = require('prismarine-registry')(options.version) const theFlattening = registry.supportFeature('theFlattening') @@ -12,13 +12,15 @@ function generation (options = {}) { const middleThickness = options.middleThickness || 3 const debug = options.debug || false + const generateEmptyChunk = emptyGen({ version: options.version }) + function generateChunk () { - const chunk = new Chunk() + const chunk = generateEmptyChunk() const height = middleThickness + 1 const DEBUG_POINTS = [new Vec3(0, height, 0), new Vec3(15, height, 0), new Vec3(0, height, 15), new Vec3(15, height, 15)] for (let x = 0; x < 16; x++) { for (let z = 0; z < 16; z++) { - for (let y = 0; y < 256; y++) { + for (let y = chunk.minY ?? 0; y < chunk.worldHeight ?? 256; y++) { const currentVec = new Vec3(x, y, z) if (y === 0) { chunk.setBlockType(currentVec, bottomId) From e9e178af6a991a83ee806b0c953403eca626e38f Mon Sep 17 00:00:00 2001 From: Gavin John <> Date: Mon, 8 Jan 2024 12:02:23 -0600 Subject: [PATCH 2/9] Undo unneccesary changes --- examples/basic.js | 6 +++--- src/lib/plugins/login.js | 7 +++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/examples/basic.js b/examples/basic.js index 27edd84c..d73fbcf3 100644 --- a/examples/basic.js +++ b/examples/basic.js @@ -22,10 +22,10 @@ mcServer.createMCServer({ modpe: false, 'view-distance': 10, 'player-list-text': { - header: 'Flying squid', - footer: 'Test server' + "header":{"text": "Flying squid"}, + "footer":{"text": "Test server"} }, 'everybody-op': true, - 'max-entities': 100, + 'max-entities':100, version: '1.16.5' }) diff --git a/src/lib/plugins/login.js b/src/lib/plugins/login.js index f35fb034..a01b5c32 100644 --- a/src/lib/plugins/login.js +++ b/src/lib/plugins/login.js @@ -84,7 +84,7 @@ module.exports.player = async function (player, serv, settings) { function sendLogin () { // send init data so client will start rendering world - const loginPacket = { + player._client.write('login', { entityId: player.id, levelType: 'default', gameMode: player.gameMode, @@ -92,7 +92,7 @@ module.exports.player = async function (player, serv, settings) { worldNames: Object.values(serv.dimensionNames), dimensionCodec: registry.loginPacket?.dimensionCodec, worldName: serv.dimensionNames[0], - dimension: (registry.supportFeature('dimensionIsAWorld') || registry.supportFeature('dimensionIsAString')) ? registry.loginPacket.dimension : 0, + dimension: (registry.supportFeature('dimensionIsAString') || registry.supportFeature('dimensionIsAWorld')) ? registry.loginPacket.dimension : 0, hashedSeed: serv.hashedSeed, difficulty: serv.difficulty, viewDistance: settings['view-distance'], @@ -101,8 +101,7 @@ module.exports.player = async function (player, serv, settings) { enableRespawnScreen: true, isDebug: false, isFlat: settings.generation?.name === 'superflat' - } - player._client.write('login', loginPacket) + }) if (registry.supportFeature('difficultySentSeparately')) { player._client.write('difficulty', { difficulty: serv.difficulty, From 89eaca54363ec71d8b3351c2dba0445dd2497f10 Mon Sep 17 00:00:00 2001 From: Gavin John <> Date: Mon, 8 Jan 2024 16:59:46 -0600 Subject: [PATCH 3/9] standard.js lint --- examples/basic.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/basic.js b/examples/basic.js index d73fbcf3..b90506dc 100644 --- a/examples/basic.js +++ b/examples/basic.js @@ -22,10 +22,10 @@ mcServer.createMCServer({ modpe: false, 'view-distance': 10, 'player-list-text': { - "header":{"text": "Flying squid"}, - "footer":{"text": "Test server"} + header: { text: 'Flying squid' }, + footer: { text: 'Test server' } }, 'everybody-op': true, - 'max-entities':100, + 'max-entities': 100, version: '1.16.5' }) From 56a3f580aed1c42a4c688bad9638dc544d423f8d Mon Sep 17 00:00:00 2001 From: Gavin John <> Date: Mon, 8 Jan 2024 17:05:18 -0600 Subject: [PATCH 4/9] Undo some unnecessary changes --- config/default-settings.json | 2 +- examples/basic.js | 4 ++-- src/index.js | 12 ++---------- 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/config/default-settings.json b/config/default-settings.json index a7c1427c..aa9399af 100644 --- a/config/default-settings.json +++ b/config/default-settings.json @@ -28,5 +28,5 @@ }, "everybody-op": false, "max-entities": 100, - "version": false + "version": "1.17.1" } diff --git a/examples/basic.js b/examples/basic.js index b90506dc..27edd84c 100644 --- a/examples/basic.js +++ b/examples/basic.js @@ -22,8 +22,8 @@ mcServer.createMCServer({ modpe: false, 'view-distance': 10, 'player-list-text': { - header: { text: 'Flying squid' }, - footer: { text: 'Test server' } + header: 'Flying squid', + footer: 'Test server' }, 'everybody-op': true, 'max-entities': 100, diff --git a/src/index.js b/src/index.js index 23ca3797..4523a690 100644 --- a/src/index.js +++ b/src/index.js @@ -27,16 +27,8 @@ module.exports = { testedVersions } -function createMCServer (options = {}) { - options.version = options.version ?? false - options.host = options.host ?? '0.0.0.0' - options.port = options.port ?? 25565 - options.brand = options.brand ?? 'vanilla' - - if (!options.version) { - options.version = latestSupportedVersion - } - +function createMCServer (options) { + options = options || {} const mcServer = new MCServer() mcServer.connect(options) return mcServer From 5c988ff01854b9f011c2a1ec2cf610d48a798f10 Mon Sep 17 00:00:00 2001 From: Gavin John <> Date: Mon, 8 Jan 2024 17:20:53 -0600 Subject: [PATCH 5/9] Always use loginPacket previousGameMode --- src/lib/plugins/login.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/plugins/login.js b/src/lib/plugins/login.js index a01b5c32..ae271ccc 100644 --- a/src/lib/plugins/login.js +++ b/src/lib/plugins/login.js @@ -88,7 +88,7 @@ module.exports.player = async function (player, serv, settings) { entityId: player.id, levelType: 'default', gameMode: player.gameMode, - previousGameMode: player.prevGameMode ?? registry.loginPacket?.previousGameMode ?? 0, + previousGameMode: registry.loginPacket?.previousGameMode ?? 0, worldNames: Object.values(serv.dimensionNames), dimensionCodec: registry.loginPacket?.dimensionCodec, worldName: serv.dimensionNames[0], From 216d3cfb6e73e1bd3f786f6ef685f9371b4606a8 Mon Sep 17 00:00:00 2001 From: Gavin John <> Date: Mon, 8 Jan 2024 17:23:08 -0600 Subject: [PATCH 6/9] Remove out-of-scope 1.18 changes --- src/lib/worldGenerations/all_the_blocks.js | 9 ++++----- src/lib/worldGenerations/empty.js | 3 +-- src/lib/worldGenerations/grass_field.js | 7 +++---- src/lib/worldGenerations/nether.js | 6 ++---- src/lib/worldGenerations/superflat.js | 8 +++----- 5 files changed, 13 insertions(+), 20 deletions(-) diff --git a/src/lib/worldGenerations/all_the_blocks.js b/src/lib/worldGenerations/all_the_blocks.js index 37e6da6d..7a34cfec 100644 --- a/src/lib/worldGenerations/all_the_blocks.js +++ b/src/lib/worldGenerations/all_the_blocks.js @@ -1,12 +1,11 @@ const Vec3 = require('vec3').Vec3 -const emptyGen = require('./empty') function generation ({ version }) { - const registry = require('prismarine-registry')(version) - const generateEmptyChunk = emptyGen({ version }) + const Chunk = require('prismarine-chunk')(version) + const { blocks } = require('prismarine-registry')(version) function generateSimpleChunk () { - const chunk = generateEmptyChunk() + const chunk = new Chunk() let i = 2 for (let x = 0; x < 16; x++) { @@ -14,7 +13,7 @@ function generation ({ version }) { let y for (y = 47; y <= 50; y++) { chunk.setBlockType(new Vec3(x, y, z), i) - i = (i + 1) % Object.keys(registry.blocks).length + i = (i + 1) % Object.keys(blocks).length } for (y = 0; y < 256; y++) { chunk.setSkyLight(new Vec3(x, y, z), 15) diff --git a/src/lib/worldGenerations/empty.js b/src/lib/worldGenerations/empty.js index b3e5c0cf..6ddf5976 100644 --- a/src/lib/worldGenerations/empty.js +++ b/src/lib/worldGenerations/empty.js @@ -1,7 +1,6 @@ function generation ({ version }) { const Chunk = require('prismarine-chunk')(version) - const registry = require('prismarine-registry')(version) - return () => registry.supportFeature('tallWorld') ? new Chunk({ minY: -64, worldHeight: 384 }) : new Chunk() + return () => new Chunk() } module.exports = generation diff --git a/src/lib/worldGenerations/grass_field.js b/src/lib/worldGenerations/grass_field.js index e28627b5..2e4a4982 100644 --- a/src/lib/worldGenerations/grass_field.js +++ b/src/lib/worldGenerations/grass_field.js @@ -1,19 +1,18 @@ const Vec3 = require('vec3').Vec3 -const emptyGen = require('./empty') function generation ({ version }) { + const Chunk = require('prismarine-chunk')(version) const registry = require('prismarine-registry')(version) const theFlattening = registry.supportFeature('theFlattening') - const generateEmptyChunk = emptyGen({ version }) function generateSimpleChunk () { - const chunk = generateEmptyChunk() + const chunk = new Chunk() for (let x = 0; x < 16; x++) { for (let z = 0; z < 16; z++) { chunk.setBlockType(new Vec3(x, 50, z), theFlattening ? registry.blocksByName.grass_block.id : registry.blocksByName.grass.id) // before the flattening the name of grass block is grass if (theFlattening) chunk.setBlockData(new Vec3(x, 50, z), 1) // before the flattening there is no data - for (let y = chunk.minY ?? 0; y < chunk.worldHeight ?? 256; y++) { + for (let y = 0; y < 256; y++) { chunk.setSkyLight(new Vec3(x, y, z), 15) } } diff --git a/src/lib/worldGenerations/nether.js b/src/lib/worldGenerations/nether.js index 16214b7d..6dad510b 100644 --- a/src/lib/worldGenerations/nether.js +++ b/src/lib/worldGenerations/nether.js @@ -1,15 +1,13 @@ const Vec3 = require('vec3').Vec3 const rand = require('random-seed') -const emptyGen = require('./empty') function generation ({ version, seed, level = 50 } = {}) { + const Chunk = require('prismarine-chunk')(version) const registry = require('prismarine-registry')(version) - const generateEmptyChunk = emptyGen({ version }) - function generateChunk (chunkX, chunkZ) { const seedRand = rand.create(seed + ':' + chunkX + ':' + chunkZ) - const chunk = generateEmptyChunk() + const chunk = new Chunk() for (let x = 0; x < 16; x++) { for (let z = 0; z < 16; z++) { const bedrockheighttop = 1 + seedRand(4) diff --git a/src/lib/worldGenerations/superflat.js b/src/lib/worldGenerations/superflat.js index fb0aeec1..69d3ae21 100644 --- a/src/lib/worldGenerations/superflat.js +++ b/src/lib/worldGenerations/superflat.js @@ -1,7 +1,7 @@ const Vec3 = require('vec3').Vec3 -const emptyGen = require('./empty') function generation (options = {}) { + const Chunk = require('prismarine-chunk')(options.version) const registry = require('prismarine-registry')(options.version) const theFlattening = registry.supportFeature('theFlattening') @@ -12,15 +12,13 @@ function generation (options = {}) { const middleThickness = options.middleThickness || 3 const debug = options.debug || false - const generateEmptyChunk = emptyGen({ version: options.version }) - function generateChunk () { - const chunk = generateEmptyChunk() + const chunk = new Chunk() const height = middleThickness + 1 const DEBUG_POINTS = [new Vec3(0, height, 0), new Vec3(15, height, 0), new Vec3(0, height, 15), new Vec3(15, height, 15)] for (let x = 0; x < 16; x++) { for (let z = 0; z < 16; z++) { - for (let y = chunk.minY ?? 0; y < chunk.worldHeight ?? 256; y++) { + for (let y = 0; y < 256; y++) { const currentVec = new Vec3(x, y, z) if (y === 0) { chunk.setBlockType(currentVec, bottomId) From 44e49c085d57b2e8c7f94d91ab7fa87aaad1f909 Mon Sep 17 00:00:00 2001 From: Gavin John <> Date: Fri, 12 Jan 2024 14:11:21 -0600 Subject: [PATCH 7/9] Update diamond-square --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 06fa5279..76d56a3d 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "dependencies": { "change-case": "^4.1.2", "colors": "1.4.0", - "diamond-square": "^1.2.0", + "diamond-square": "^1.5.0", "emit-then": "^2.0.0", "event-promise": "^0.0.1", "exit-hook": "^2.2.1", From 4df69e6f619907250dc2777461c8c71c055c4504 Mon Sep 17 00:00:00 2001 From: Gavin John <> Date: Fri, 12 Jan 2024 14:12:32 -0600 Subject: [PATCH 8/9] Use updated world generation --- config/default-settings.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/default-settings.json b/config/default-settings.json index aa9399af..2ade4604 100644 --- a/config/default-settings.json +++ b/config/default-settings.json @@ -8,8 +8,9 @@ "difficulty": 1, "worldFolder":"world", "generation": { - "name": "all_the_blocks", + "name": "diamond_square", "options": { + "worldHeight": 80 } }, "kickTimeout": 10000, From f6a0c5dd5102bdcb22c3e1e6cae25abf6b67bfe5 Mon Sep 17 00:00:00 2001 From: Romain Beaumont Date: Sun, 14 Jan 2024 17:31:42 +0100 Subject: [PATCH 9/9] use fixed anvil --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 76d56a3d..c8076577 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "prismarine-entity": "^2.4.0", "prismarine-item": "^1.14.0", "prismarine-nbt": "^2.5.0", - "prismarine-provider-anvil": "^2.7.0", + "prismarine-provider-anvil": "PrismarineJS/prismarine-provider-anvil#optional_palette_1_14", "prismarine-registry": "^1.7.0", "prismarine-windows": "^2.8.0", "prismarine-world": "^3.6.2",