make seed a normal generation option, use es6 default parameters, add superflat (thanks @demipixel)

This commit is contained in:
Romain Beaumont 2015-10-09 15:11:28 +02:00
parent 140cf4bb5a
commit c4974f8e33
5 changed files with 40 additions and 9 deletions

3
app.js
View file

@ -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);

View file

@ -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));
}

View file

@ -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);

View file

@ -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();

View file

@ -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;