From c4974f8e3388dd8e63843d110d9dd5889717bfc4 Mon Sep 17 00:00:00 2001 From: Romain Beaumont Date: Fri, 9 Oct 2015 15:11:28 +0200 Subject: [PATCH] make seed a normal generation option, use es6 default parameters, add superflat (thanks @demipixel) --- app.js | 3 +- src/lib/serverPlugins/world.js | 9 +++--- src/lib/worldGenerations/diamond_square.js | 3 +- src/lib/worldGenerations/grass_field.js | 2 +- src/lib/worldGenerations/superflat.js | 32 ++++++++++++++++++++++ 5 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 src/lib/worldGenerations/superflat.js diff --git a/app.js b/app.js index ffb4c82..791205d 100644 --- a/app.js +++ b/app.js @@ -14,8 +14,7 @@ var options = { commands: commands, logging:settings.logging, kickTimeout:10*60*1000, - generation:settings.generation, - seed:settings.seed + generation:settings.generation }; mcServer.createMCServer(options); diff --git a/src/lib/serverPlugins/world.js b/src/lib/serverPlugins/world.js index b32bca3..421f8af 100644 --- a/src/lib/serverPlugins/world.js +++ b/src/lib/serverPlugins/world.js @@ -4,13 +4,14 @@ var Vec3 = require('vec3'); var generations={ 'grass_field':require("../worldGenerations/grass_field"), - 'diamond_square':require("../worldGenerations/diamond_square") + 'diamond_square':require("../worldGenerations/diamond_square"), + 'superflat':require("../worldGenerations/superflat") }; module.exports = inject; function inject(serv,options) { - var seed=options.seed || Math.random()*Math.pow(2, 32); - serv.emit("seed",seed); - serv.world = new World(generations[options["generation"].name](seed,options["generation"].options)); + options["generation"].options.seed=options["generation"].options.seed || Math.random()*Math.pow(2, 32); + serv.emit("seed",options["generation"].options.seed); + serv.world = new World(generations[options["generation"].name](options["generation"].options)); } diff --git a/src/lib/worldGenerations/diamond_square.js b/src/lib/worldGenerations/diamond_square.js index e484b86..4417bbc 100644 --- a/src/lib/worldGenerations/diamond_square.js +++ b/src/lib/worldGenerations/diamond_square.js @@ -93,8 +93,7 @@ function DiamondSquare(size, roughness, seed) { } } -function generation(seed, options) { - var worldHeight=options.worldHeight || 80; +function generation({seed,worldHeight=80}={}) { // Selected empirically var size = 10000000; var space = new DiamondSquare(size, size / 1000, seed); diff --git a/src/lib/worldGenerations/grass_field.js b/src/lib/worldGenerations/grass_field.js index 2220a16..0a8a204 100644 --- a/src/lib/worldGenerations/grass_field.js +++ b/src/lib/worldGenerations/grass_field.js @@ -1,7 +1,7 @@ var Chunk = require('prismarine-chunk')(require("../version")); var Vec3 = require('vec3'); -function generation(seed,options) { +function generation() { function generateSimpleChunk(chunkX, chunkZ) { var chunk = new Chunk(); diff --git a/src/lib/worldGenerations/superflat.js b/src/lib/worldGenerations/superflat.js new file mode 100644 index 0000000..ec84073 --- /dev/null +++ b/src/lib/worldGenerations/superflat.js @@ -0,0 +1,32 @@ +var Chunk = require('prismarine-chunk')(require("../version")); +var Vec3 = require('vec3'); + +function generation({opt='default',bottom_id=7,middle_id=1,top_id=2,middle_thickness=3,debug=false}={}) { + function generateChunk(chunkX,chunkZ) { + var chunk=new Chunk(); + var height = middle_thickness + 1; + var DEBUG_POINTS = [new Vec3(0, height, 0), new Vec3(15, height, 0), new Vec3(0, height, 15), new Vec3(15, height, 15)]; + for (var x = 0; x < 16; x++) { + for (var z = 0; z < 16; z++) { + for (var y = 0; y < middle_thickness + 2; y++) { + if (y == 0) chunk.setBlockType(new Vec3(x, y, z), bottom_id); + else if (y < middle_thickness + 1) chunk.setBlockType(new Vec3(x, y, z), middle_id); + else chunk.setBlockType(new Vec3(x, y, z), top_id); + } + for (y = 0; y < 256; y++) { + chunk.setSkyLight(new Vec3(x, y, z), 15); + } + } + } + + if (debug) { + for (var d in DEBUG_POINTS) { + chunk.setBlockType(DEBUG_POINTS[d], 35); + } + } + return chunk; + } + return generateChunk; +} + +module.exports=generation; \ No newline at end of file