use new prismarine-provider-anvil to read/write the seed, use a worldFolder option instead of regionFolder option, fix #178

This commit is contained in:
Romain Beaumont 2016-01-14 19:18:01 +01:00
parent 19b4c98608
commit 40aab303a2
5 changed files with 25 additions and 4 deletions

View file

@ -5,7 +5,7 @@
"online-mode": true, "online-mode": true,
"logging": true, "logging": true,
"gameMode": 1, "gameMode": 1,
"regionFolder":"world/region", "worldFolder":"world",
"generation": { "generation": {
"name": "diamond_square", "name": "diamond_square",
"options":{ "options":{

View file

@ -226,7 +226,7 @@ Options is an object containing the following properties:
} }
``` ```
* modpe: defaults to false, wether or not modpe should be enabled. * modpe: defaults to false, wether or not modpe should be enabled.
* regionFolder : the region folder of the saved world * worldFolder : the world folder of the saved world (containing region, level.dat,...)
* plugins * plugins
* view-distance * view-distance
* player-list-text : an object with keys header and footer, displayed on the player list * player-list-text : an object with keys header and footer, displayed on the player list

View file

@ -31,11 +31,13 @@
"mkdirp": "0.5.1", "mkdirp": "0.5.1",
"moment": "^2.10.6", "moment": "^2.10.6",
"node-dir": "~0.1.9", "node-dir": "~0.1.9",
"node-promise-es6": "^0.3.0",
"node-uuid": "^1.4.3", "node-uuid": "^1.4.3",
"prismarine-block": "0.1.0", "prismarine-block": "0.1.0",
"prismarine-chunk": "0.2.1", "prismarine-chunk": "0.2.1",
"prismarine-entity": "0.2.0", "prismarine-entity": "0.2.0",
"prismarine-item": "0.0.0", "prismarine-item": "0.0.0",
"prismarine-provider-anvil": "^0.2.0",
"prismarine-windows": "0.0.0", "prismarine-windows": "0.0.0",
"prismarine-world": "0.4.0", "prismarine-world": "0.4.0",
"prismarine-world-sync": "0.1.0", "prismarine-world-sync": "0.1.0",

View file

@ -4,9 +4,28 @@ const World = require('prismarine-world');
const WorldSync = require("prismarine-world-sync"); const WorldSync = require("prismarine-world-sync");
const generations=require("flying-squid").generations; const generations=require("flying-squid").generations;
import {fs} from 'node-promise-es6';
import {level} from 'prismarine-provider-anvil';
module.exports.server=function(serv,{regionFolder,generation={"name":"diamond_square","options":{"worldHeight":80}}}={}) { module.exports.server=async function(serv,{worldFolder,generation={"name":"diamond_square","options":{"worldHeight":80}}}={}) {
generation.options.seed=generation.options.seed || Math.random()*Math.pow(2, 32); const regionFolder=worldFolder+"/region";
try {
const stats = await fs.stat(regionFolder);
}
catch(err) {
await fs.mkdir(regionFolder);
}
let seed;
try {
const levelData=await level.readLevel(worldFolder+"/level.dat");
seed=levelData["RandomSeed"][0];
}
catch(err){
seed=generation.options.seed || Math.floor(Math.random()*Math.pow(2, 31));
await level.writeLevel(worldFolder+"/level.dat",{"RandomSeed":[seed,0]});
}
generation.options.seed=seed;
serv.emit("seed",generation.options.seed); serv.emit("seed",generation.options.seed);
serv.overworld = new World(generations[generation.name](generation.options), regionFolder); serv.overworld = new World(generations[generation.name](generation.options), regionFolder);
serv.netherworld = new World(generations["nether"]({})); serv.netherworld = new World(generations["nether"]({}));