From bb80bd7c44d777531af3db593b2df88a227daca1 Mon Sep 17 00:00:00 2001 From: DemiPixel Date: Sat, 24 Oct 2015 19:41:21 -0700 Subject: [PATCH] Changed stuff, added seeds, etc --- src/lib/playerPlugins/updatePositions.js | 2 +- src/lib/playerPlugins/world.js | 4 ++-- src/lib/serverPlugins/world.js | 2 +- src/lib/worldGenerations/diamond_square.js | 8 +++++--- src/lib/worldGenerations/nether.js | 8 +++++--- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/lib/playerPlugins/updatePositions.js b/src/lib/playerPlugins/updatePositions.js index 63a0717..8479b86 100644 --- a/src/lib/playerPlugins/updatePositions.js +++ b/src/lib/playerPlugins/updatePositions.js @@ -98,7 +98,7 @@ function inject(serv,player) flags: 0x00 }); player.spawnForOthers(); - player.getNearbyPlayers(); + player.sendNearbyPlayers(); player.emit('teleport'); } player.setPosition = setPosition; diff --git a/src/lib/playerPlugins/world.js b/src/lib/playerPlugins/world.js index 7187465..e23b95e 100644 --- a/src/lib/playerPlugins/world.js +++ b/src/lib/playerPlugins/world.js @@ -22,7 +22,7 @@ function inject(serv, player) { }); } - function getNearbyPlayers() { + function sendNearbyPlayers() { player.getOthers().forEach(function (otherPlayer) { if (otherPlayer.world != player.world) return; // Also check distance from player? player._client.write('named_entity_spawn', { @@ -108,7 +108,7 @@ function inject(serv, player) { player.spawn = spawn; player.spawnForOthers = spawnForOthers; - player.getNearbyPlayers = getNearbyPlayers; + player.sendNearbyPlayers = sendNearbyPlayers; player.sendNearbyChunks = sendNearbyChunks; player.changeWorld = changeWorld; player.sendChunk = sendChunk; diff --git a/src/lib/serverPlugins/world.js b/src/lib/serverPlugins/world.js index 05d0885..a3e86af 100644 --- a/src/lib/serverPlugins/world.js +++ b/src/lib/serverPlugins/world.js @@ -20,7 +20,7 @@ function inject(serv,{regionFolder,generation={"name":"diamond_square","options" serv.netherworld = new World(generations["nether"]({})); //serv.endworld = new World(generations["end"]({})); - //serv._worldSync=new WorldSync(serv.worlds[0]); + serv._worldSync=new WorldSync(serv.overworld); function pregenWorld(world, size=10) { for (var x = -size; x < size; x++) { diff --git a/src/lib/worldGenerations/diamond_square.js b/src/lib/worldGenerations/diamond_square.js index cad401d..64f8825 100644 --- a/src/lib/worldGenerations/diamond_square.js +++ b/src/lib/worldGenerations/diamond_square.js @@ -1,5 +1,6 @@ var Chunk = require('prismarine-chunk')(require("../version")); var Vec3 = require('vec3'); +var rand = require('random-seed'); function DiamondSquare(size, roughness, seed) { // public fields @@ -100,6 +101,7 @@ function generation({seed,worldHeight=80,waterline=20}={}) { function generateSimpleChunk(chunkX, chunkZ) { var chunk = new Chunk(); + var seedRand = rand.create(seed+':'+chunkX+':'+chunkZ); var worldX = chunkX * 16 + size / 2; var worldZ = chunkZ * 16 + size / 2; @@ -107,8 +109,8 @@ function generation({seed,worldHeight=80,waterline=20}={}) { for (var x = 0; x < 16; x++) { for (var z = 0; z < 16; z++) { var level = Math.floor(space.value(worldX + x, worldZ + z) * worldHeight); - var dirtheight = level - 4 + Math.round(Math.random()*2); - var bedrockheight = 1 + Math.round(Math.random()*3) + var dirtheight = level - 4 + seedRand(3); + var bedrockheight = 1 + seedRand(4); for (var y = 0; y < 256; y++) { let block; let data; @@ -121,7 +123,7 @@ function generation({seed,worldHeight=80,waterline=20}={}) { else if (y < level) block = 1; // Set stone inbetween else if (y == level) block = surfaceblock; // Set surface sand/grass else if (y <= waterline) block = 9; // Set the water - else if (y == level+1 && level >= waterline && Math.random() < 0.1) { // 1/10 chance of grass + else if (y == level+1 && level >= waterline && seedRand.rand(1) < 0.1) { // 1/10 chance of grass block = 31; data = 1; } diff --git a/src/lib/worldGenerations/nether.js b/src/lib/worldGenerations/nether.js index 86f5d1b..fd375df 100644 --- a/src/lib/worldGenerations/nether.js +++ b/src/lib/worldGenerations/nether.js @@ -1,13 +1,15 @@ var Chunk = require('prismarine-chunk')(require("../version")); var Vec3 = require('vec3'); +var rand = require('random-seed'); -function generation({level=50}={}) { +function generation({seed,level=50}={}) { function generateChunk(chunkX, chunkZ) { + var seedRand = rand.create(seed+':'+chunkX+':'+chunkZ); var chunk=new Chunk(); for (var x = 0; x < 16; x++) { for (var z = 0; z < 16; z++) { - var bedrockheighttop = 1 + Math.round(Math.random()*3) - var bedrockheightbottom = 1 + Math.round(Math.random()*3) + var bedrockheighttop = 1 + seedRand(4); + var bedrockheightbottom = 1 + seedRand(4); for (var y = 0; y < 128; y++) { // Nether only goes up to 128 let block; let data;