mirror of
https://github.com/danbulant/flying-squid
synced 2026-07-05 19:20:54 +00:00
fix stuff related to changeWorld
* use writeOthersNearby everywhere * create player.playerViewDistance * put toFixedPosition in vec3 prototype * fix changeWorld (use the same function than in login) * use entity_destroy in changeWorld * sendPosition, not setPosition * disable pregenWorld : it just makes everything slow
This commit is contained in:
parent
7ac4653ea2
commit
e3b7ad569b
12 changed files with 77 additions and 97 deletions
13
doc/api.md
13
doc/api.md
|
|
@ -57,7 +57,6 @@
|
||||||
- ["chat" (message)](#chat-message)
|
- ["chat" (message)](#chat-message)
|
||||||
- ["kicked" (kicker,reason)](#kicked-kickerreason)
|
- ["kicked" (kicker,reason)](#kicked-kickerreason)
|
||||||
- ["positionChanged"](#positionchanged)
|
- ["positionChanged"](#positionchanged)
|
||||||
- ["teleport"](#teleport)
|
|
||||||
- [Methods](#methods-1)
|
- [Methods](#methods-1)
|
||||||
- [player.login()](#playerlogin)
|
- [player.login()](#playerlogin)
|
||||||
- [player.ban(reason)](#playerbanreason)
|
- [player.ban(reason)](#playerbanreason)
|
||||||
|
|
@ -71,7 +70,6 @@
|
||||||
- [player.setGameMode(gameMode)](#playersetgamemodegamemode)
|
- [player.setGameMode(gameMode)](#playersetgamemodegamemode)
|
||||||
- [player.handleCommand(command)](#playerhandlecommandcommand)
|
- [player.handleCommand(command)](#playerhandlecommandcommand)
|
||||||
- [player.updateHealth(health)](#playerupdatehealthhealth)
|
- [player.updateHealth(health)](#playerupdatehealthhealth)
|
||||||
- [player.sendPosition(position, opt)](#playersendpositionposition-opt)
|
|
||||||
- [player.changeWorld(world, opt)](#playerchangeworldworld-opt)
|
- [player.changeWorld(world, opt)](#playerchangeworldworld-opt)
|
||||||
- [Low level properties](#low-level-properties)
|
- [Low level properties](#low-level-properties)
|
||||||
- [player._client](#player_client)
|
- [player._client](#player_client)
|
||||||
|
|
@ -300,10 +298,6 @@ Fires when the player says `message`.
|
||||||
|
|
||||||
fires when the position changes in small amounts (walking, running, or flying)
|
fires when the position changes in small amounts (walking, running, or flying)
|
||||||
|
|
||||||
#### "teleport"
|
|
||||||
|
|
||||||
fires when the position changes in larger amounts (player's position set by `player.sendPosition()`)
|
|
||||||
|
|
||||||
### Methods
|
### Methods
|
||||||
|
|
||||||
#### player.login()
|
#### player.login()
|
||||||
|
|
@ -359,13 +353,6 @@ handle `command`
|
||||||
|
|
||||||
update the player health.
|
update the player health.
|
||||||
|
|
||||||
#### player.sendPosition(position, opt)
|
|
||||||
|
|
||||||
Teleport the player to any `position` in the same world. Use `player.changeWorld` to teleport to any world. Options:
|
|
||||||
|
|
||||||
- yaw: Set the yaw, default is the current yaw of the player
|
|
||||||
- pitch: Set the pitch, default is the current pitch of the player
|
|
||||||
|
|
||||||
#### player.changeWorld(world, opt)
|
#### player.changeWorld(world, opt)
|
||||||
|
|
||||||
The world object which the player is in (use serv.overworld, serv.netherworld, serv.endworld, or a custom world). Options:
|
The world object which the player is in (use serv.overworld, serv.netherworld, serv.endworld, or a custom world). Options:
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ module.exports=inject;
|
||||||
function inject(serv, player)
|
function inject(serv, player)
|
||||||
{
|
{
|
||||||
player._client.on("arm_animation", function(packet) {
|
player._client.on("arm_animation", function(packet) {
|
||||||
player._writeOthers("animation", {
|
player._writeOthersNearby("animation", {
|
||||||
entityId: player.entity.id,
|
entityId: player.entity.id,
|
||||||
animation: 0
|
animation: 0
|
||||||
});
|
});
|
||||||
|
|
@ -12,7 +12,7 @@ function inject(serv, player)
|
||||||
function setMetadata(metadata)
|
function setMetadata(metadata)
|
||||||
{
|
{
|
||||||
player.entity.metadata = metadata;
|
player.entity.metadata = metadata;
|
||||||
player._writeOthers("entity_metadata", {
|
player._writeOthersNearby("entity_metadata", {
|
||||||
entityId: player.entity.id,
|
entityId: player.entity.id,
|
||||||
metadata: player.entity.metadata
|
metadata: player.entity.metadata
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,7 @@ function inject(serv,player)
|
||||||
{
|
{
|
||||||
async function changeBlock(position,blockType)
|
async function changeBlock(position,blockType)
|
||||||
{
|
{
|
||||||
player.getOthers().forEach(function(p) {
|
player.getNearby().forEach(function(p) {
|
||||||
if (p.world != player.world) return;
|
|
||||||
p.sendBlock(position, blockType);
|
p.sendBlock(position, blockType);
|
||||||
});
|
});
|
||||||
return await player.world.setBlockType(position,blockType);
|
return await player.world.setBlockType(position,blockType);
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ function inject(serv,player)
|
||||||
|
|
||||||
player._writeOthersNearby = function(packetName, packetFields) {
|
player._writeOthersNearby = function(packetName, packetFields) {
|
||||||
serv._writeArray(packetName, packetFields, player.getNearby());
|
serv._writeArray(packetName, packetFields, player.getNearby());
|
||||||
}
|
};
|
||||||
|
|
||||||
player.getOthers = function() {
|
player.getOthers = function() {
|
||||||
return serv.players.filter(function (otherPlayer) {
|
return serv.players.filter(function (otherPlayer) {
|
||||||
|
|
@ -22,7 +22,7 @@ function inject(serv,player)
|
||||||
return serv.getNearby({
|
return serv.getNearby({
|
||||||
world: player.world,
|
world: player.world,
|
||||||
position: player.entity.position,
|
position: player.entity.position,
|
||||||
radius: 150*32
|
radius: player.playerViewDistance*32
|
||||||
}).filter((p) => p != player);
|
}).filter((p) => p != player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -51,7 +51,7 @@ function inject(serv,player)
|
||||||
if(newDestroyState!=lastDestroyState)
|
if(newDestroyState!=lastDestroyState)
|
||||||
{
|
{
|
||||||
lastDestroyState=newDestroyState;
|
lastDestroyState=newDestroyState;
|
||||||
player._writeOthers("block_break_animation",{
|
player._writeOthersNearby("block_break_animation",{
|
||||||
"entityId":currentAnimationId,
|
"entityId":currentAnimationId,
|
||||||
"location":location,
|
"location":location,
|
||||||
"destroyStage":newDestroyState
|
"destroyStage":newDestroyState
|
||||||
|
|
@ -63,7 +63,7 @@ function inject(serv,player)
|
||||||
function cancelDigging(location)
|
function cancelDigging(location)
|
||||||
{
|
{
|
||||||
clearInterval(animationInterval);
|
clearInterval(animationInterval);
|
||||||
player._writeOthers("block_break_animation",{
|
player._writeOthersNearby("block_break_animation",{
|
||||||
"entityId":currentAnimationId,
|
"entityId":currentAnimationId,
|
||||||
"location":location,
|
"location":location,
|
||||||
"destroyStage":-1
|
"destroyStage":-1
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ function inject(serv, player)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
player.heldItem = player.inventory[36+player.heldItemSlot];
|
player.heldItem = player.inventory[36+player.heldItemSlot];
|
||||||
player._writeOthers("entity_equipment",{
|
player._writeOthersNearby("entity_equipment",{
|
||||||
entityId:player.entity.id,
|
entityId:player.entity.id,
|
||||||
slot:0,
|
slot:0,
|
||||||
item:player.heldItem
|
item:player.heldItem
|
||||||
|
|
@ -24,31 +24,31 @@ function inject(serv, player)
|
||||||
player._client.on("set_creative_slot", function (packet) {
|
player._client.on("set_creative_slot", function (packet) {
|
||||||
player.inventory[packet.slot]=packet.item;
|
player.inventory[packet.slot]=packet.item;
|
||||||
if (packet.slot==36)
|
if (packet.slot==36)
|
||||||
player._writeOthers("entity_equipment",{
|
player._writeOthersNearby("entity_equipment",{
|
||||||
entityId:player.entity.id,
|
entityId:player.entity.id,
|
||||||
slot:0,
|
slot:0,
|
||||||
item:packet.item
|
item:packet.item
|
||||||
});
|
});
|
||||||
if (packet.slot==5)
|
if (packet.slot==5)
|
||||||
player._writeOthers("entity_equipment",{
|
player._writeOthersNearby("entity_equipment",{
|
||||||
entityId:player.entity.id,
|
entityId:player.entity.id,
|
||||||
slot:4,
|
slot:4,
|
||||||
item:packet.item
|
item:packet.item
|
||||||
});
|
});
|
||||||
if (packet.slot==6)
|
if (packet.slot==6)
|
||||||
player._writeOthers("entity_equipment",{
|
player._writeOthersNearby("entity_equipment",{
|
||||||
entityId:player.entity.id,
|
entityId:player.entity.id,
|
||||||
slot:3,
|
slot:3,
|
||||||
item:packet.item
|
item:packet.item
|
||||||
});
|
});
|
||||||
if (packet.slot==7)
|
if (packet.slot==7)
|
||||||
player._writeOthers("entity_equipment",{
|
player._writeOthersNearby("entity_equipment",{
|
||||||
entityId:player.entity.id,
|
entityId:player.entity.id,
|
||||||
slot:2,
|
slot:2,
|
||||||
item:packet.item
|
item:packet.item
|
||||||
});
|
});
|
||||||
if (packet.slot==8)
|
if (packet.slot==8)
|
||||||
player._writeOthers("entity_equipment",{
|
player._writeOthersNearby("entity_equipment",{
|
||||||
entityId:player.entity.id,
|
entityId:player.entity.id,
|
||||||
slot:1,
|
slot:1,
|
||||||
item:packet.item
|
item:packet.item
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ function inject(serv,player)
|
||||||
player.entity.player=player;
|
player.entity.player=player;
|
||||||
player.entity.health = 20;
|
player.entity.health = 20;
|
||||||
player.entity.food = 20;
|
player.entity.food = 20;
|
||||||
|
player.playerViewDistance = 150;
|
||||||
player.view=8;
|
player.view=8;
|
||||||
player.world=serv.overworld;
|
player.world=serv.overworld;
|
||||||
player.username=player._client.username;
|
player.username=player._client.username;
|
||||||
|
|
@ -21,10 +22,6 @@ function inject(serv,player)
|
||||||
player.loadedChunks={};
|
player.loadedChunks={};
|
||||||
}
|
}
|
||||||
|
|
||||||
function toFixedPosition(p)
|
|
||||||
{
|
|
||||||
return p.scaled(32).floored();
|
|
||||||
}
|
|
||||||
function sendLogin()
|
function sendLogin()
|
||||||
{
|
{
|
||||||
// send init data so client will start rendering world
|
// send init data so client will start rendering world
|
||||||
|
|
@ -37,44 +34,14 @@ function inject(serv,player)
|
||||||
reducedDebugInfo: false,
|
reducedDebugInfo: false,
|
||||||
maxPlayers: serv._server.maxPlayers
|
maxPlayers: serv._server.maxPlayers
|
||||||
});
|
});
|
||||||
player.entity.position=toFixedPosition(player.spawnPoint);
|
player.entity.position=player.spawnPoint.toFixedPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
function sendMap()
|
function sendChunkWhenMove()
|
||||||
{
|
{
|
||||||
return player.sendNearbyChunks(3)
|
|
||||||
.catch((err) => setTimeout(function() { throw err; }), 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
function sendRestMap()
|
|
||||||
{
|
|
||||||
player.sendingChunks=true;
|
|
||||||
player.sendNearbyChunks(player.view)
|
|
||||||
.then(() => player.sendingChunks=false)
|
|
||||||
.catch((err)=> setTimeout(function(){throw err;},0));
|
|
||||||
|
|
||||||
player.on("positionChanged",function(){
|
player.on("positionChanged",function(){
|
||||||
if(!player.sendingChunks && player.entity.position.distanceTo(player.lastPositionChunkUpdated)>16*32)
|
if(!player.sendingChunks && player.entity.position.distanceTo(player.lastPositionChunkUpdated)>16*32)
|
||||||
{
|
player.sendMap();
|
||||||
player.sendingChunks=true;
|
|
||||||
player.sendNearbyChunks(player.view)
|
|
||||||
.then(() => player.sendingChunks=false)
|
|
||||||
.catch((err)=> setTimeout(function(){throw err;},0));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
player.on("teleport", function() {
|
|
||||||
player.sendingChunks=true;
|
|
||||||
player.sendNearbyChunks(player.view)
|
|
||||||
.then(() => player.sendingChunks=false)
|
|
||||||
.catch((err)=> setTimeout(function(){throw err;},0));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function sendSpawnPosition()
|
|
||||||
{
|
|
||||||
console.log("setting spawn at "+player.spawnPoint);
|
|
||||||
player._client.write('spawn_position',{
|
|
||||||
"location":player.spawnPoint
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -139,20 +106,22 @@ function inject(serv,player)
|
||||||
|
|
||||||
addPlayer();
|
addPlayer();
|
||||||
sendLogin();
|
sendLogin();
|
||||||
await sendMap();
|
await player.sendMap();
|
||||||
sendSpawnPosition();
|
player.sendSpawnPosition();
|
||||||
player.updateHealth(player.entity.health);
|
player.updateHealth(player.entity.health);
|
||||||
|
|
||||||
player.emit("spawned");
|
|
||||||
|
|
||||||
updateTime();
|
updateTime();
|
||||||
setGameMode(player.gameMode);
|
setGameMode(player.gameMode);
|
||||||
fillTabList();
|
fillTabList();
|
||||||
|
player.spawnForOthers();
|
||||||
|
player.sendNearbyPlayers();
|
||||||
|
|
||||||
player.spawn();
|
player.spawn();
|
||||||
announceJoin();
|
announceJoin();
|
||||||
|
player.emit("spawned");
|
||||||
|
|
||||||
setTimeout(sendRestMap,100);
|
setTimeout(function(){player.sendRestMap();sendChunkWhenMove();},100);
|
||||||
}
|
}
|
||||||
|
|
||||||
player.setGameMode=setGameMode;
|
player.setGameMode=setGameMode;
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ function inject(serv,player)
|
||||||
UUID: player._client.uuid
|
UUID: player._client.uuid
|
||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
player._writeOthers('entity_destroy', {'entityIds': [player.entity.id]});
|
player._writeOthersNearby('entity_destroy', {'entityIds': [player.entity.id]});
|
||||||
delete serv.entities[player.entity.id];
|
delete serv.entities[player.entity.id];
|
||||||
player.emit('disconnected');
|
player.emit('disconnected');
|
||||||
var index = serv.players.indexOf(player);
|
var index = serv.players.indexOf(player);
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,9 @@ var vec3 = require("vec3");
|
||||||
|
|
||||||
module.exports=inject;
|
module.exports=inject;
|
||||||
|
|
||||||
function toFixedPosition(p)
|
vec3.Vec3.prototype.toFixedPosition=function() {
|
||||||
{
|
return this.scaled(32).floored();
|
||||||
return p.scaled(32).floored();
|
};
|
||||||
}
|
|
||||||
|
|
||||||
function inject(serv,player)
|
function inject(serv,player)
|
||||||
{
|
{
|
||||||
|
|
@ -25,7 +24,7 @@ function inject(serv,player)
|
||||||
var convYaw=conv(yaw);
|
var convYaw=conv(yaw);
|
||||||
var convPitch=conv(pitch);
|
var convPitch=conv(pitch);
|
||||||
if (convYaw == player.entity.yaw && convPitch == player.entity.pitch) return;
|
if (convYaw == player.entity.yaw && convPitch == player.entity.pitch) return;
|
||||||
player._writeOthers("entity_look", {
|
player._writeOthersNearby("entity_look", {
|
||||||
entityId: player.entity.id,
|
entityId: player.entity.id,
|
||||||
yaw: convYaw,
|
yaw: convYaw,
|
||||||
pitch: convPitch,
|
pitch: convPitch,
|
||||||
|
|
@ -34,7 +33,7 @@ function inject(serv,player)
|
||||||
player.entity.yaw = convYaw;
|
player.entity.yaw = convYaw;
|
||||||
player.entity.pitch = convPitch;
|
player.entity.pitch = convPitch;
|
||||||
player.entity.onGround = onGround;
|
player.entity.onGround = onGround;
|
||||||
player._writeOthers("entity_head_rotation", {
|
player._writeOthersNearby("entity_head_rotation", {
|
||||||
entityId: player.entity.id,
|
entityId: player.entity.id,
|
||||||
headYaw: convYaw
|
headYaw: convYaw
|
||||||
});
|
});
|
||||||
|
|
@ -43,13 +42,13 @@ function inject(serv,player)
|
||||||
player._client.on('position', function (packet) {
|
player._client.on('position', function (packet) {
|
||||||
var position = new vec3(packet.x, packet.y, packet.z);
|
var position = new vec3(packet.x, packet.y, packet.z);
|
||||||
var onGround = packet.onGround;
|
var onGround = packet.onGround;
|
||||||
sendRelativePositionChange(toFixedPosition(position), onGround);
|
sendRelativePositionChange(position.toFixedPosition(), onGround);
|
||||||
});
|
});
|
||||||
|
|
||||||
player._client.on('position_look', function (packet) {
|
player._client.on('position_look', function (packet) {
|
||||||
var position = new vec3(packet.x, packet.y, packet.z);
|
var position = new vec3(packet.x, packet.y, packet.z);
|
||||||
var onGround = packet.onGround;
|
var onGround = packet.onGround;
|
||||||
sendRelativePositionChange(toFixedPosition(position), onGround);
|
sendRelativePositionChange(position.toFixedPosition(), onGround);
|
||||||
sendLook(packet.yaw,packet.pitch,packet.onGround);
|
sendLook(packet.yaw,packet.pitch,packet.onGround);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -58,7 +57,7 @@ function inject(serv,player)
|
||||||
var diff = newPosition.minus(player.entity.position);
|
var diff = newPosition.minus(player.entity.position);
|
||||||
if(diff.abs().x>127 || diff.abs().y>127 || diff.abs().z>127)
|
if(diff.abs().x>127 || diff.abs().y>127 || diff.abs().z>127)
|
||||||
{
|
{
|
||||||
player._writeOthers('entity_teleport', {
|
player._writeOthersNearby('entity_teleport', {
|
||||||
entityId:player.entity.id,
|
entityId:player.entity.id,
|
||||||
x: newPosition.x,
|
x: newPosition.x,
|
||||||
y: newPosition.y,
|
y: newPosition.y,
|
||||||
|
|
@ -69,7 +68,7 @@ function inject(serv,player)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (diff.distanceTo(new vec3(0, 0, 0)) != 0) {
|
else if (diff.distanceTo(new vec3(0, 0, 0)) != 0) {
|
||||||
player._writeOthers('rel_entity_move', {
|
player._writeOthersNearby('rel_entity_move', {
|
||||||
entityId: player.entity.id,
|
entityId: player.entity.id,
|
||||||
dX: diff.x,
|
dX: diff.x,
|
||||||
dY: diff.y,
|
dY: diff.y,
|
||||||
|
|
@ -83,12 +82,7 @@ function inject(serv,player)
|
||||||
player.emit("positionChanged");
|
player.emit("positionChanged");
|
||||||
}
|
}
|
||||||
|
|
||||||
function setPosition(pos, opt) {
|
function sendPosition() {
|
||||||
opt = opt || {};
|
|
||||||
if (pos) player.entity.position = toFixedPosition(pos);
|
|
||||||
if (typeof opt.yaw != 'undefined') player.entity.yaw=opt.yaw;
|
|
||||||
if (typeof opt.pitch != 'undefined') player.entity.pitch=opt.pitch;
|
|
||||||
|
|
||||||
player._client.write('position', {
|
player._client.write('position', {
|
||||||
x: player.entity.position.x/32,
|
x: player.entity.position.x/32,
|
||||||
y: player.entity.position.y/32,
|
y: player.entity.position.y/32,
|
||||||
|
|
@ -97,9 +91,6 @@ function inject(serv,player)
|
||||||
pitch: player.entity.pitch,
|
pitch: player.entity.pitch,
|
||||||
flags: 0x00
|
flags: 0x00
|
||||||
});
|
});
|
||||||
player.spawnForOthers();
|
|
||||||
player.sendNearbyPlayers();
|
|
||||||
player.emit('teleport');
|
|
||||||
}
|
}
|
||||||
player.setPosition = setPosition;
|
player.sendPosition = sendPosition;
|
||||||
}
|
}
|
||||||
|
|
@ -5,7 +5,7 @@ module.exports = inject;
|
||||||
|
|
||||||
function inject(serv, player) {
|
function inject(serv, player) {
|
||||||
function spawn() {
|
function spawn() {
|
||||||
player.setPosition(player.spawnPoint, { yaw: 0, pitch: 0, exact: true });
|
player.sendPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
function spawnForOthers() {
|
function spawnForOthers() {
|
||||||
|
|
@ -89,7 +89,30 @@ function inject(serv, player) {
|
||||||
return new Promise(r => setTimeout(r, ms));
|
return new Promise(r => setTimeout(r, ms));
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeWorld(world, opt) {
|
function sendMap()
|
||||||
|
{
|
||||||
|
return player.sendNearbyChunks(3)
|
||||||
|
.catch((err) => setTimeout(function() { throw err; }), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
function sendRestMap()
|
||||||
|
{
|
||||||
|
player.sendingChunks=true;
|
||||||
|
player.sendNearbyChunks(player.view)
|
||||||
|
.then(() => player.sendingChunks=false)
|
||||||
|
.catch((err)=> setTimeout(function(){throw err;},0));
|
||||||
|
}
|
||||||
|
|
||||||
|
function sendSpawnPosition()
|
||||||
|
{
|
||||||
|
console.log("setting spawn at "+player.spawnPoint);
|
||||||
|
player._client.write('spawn_position',{
|
||||||
|
"location":player.spawnPoint
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function changeWorld(world, opt) {
|
||||||
|
player._writeOthersNearby('entity_destroy', {'entityIds': [player.entity.id]});
|
||||||
|
|
||||||
opt = opt || {};
|
opt = opt || {};
|
||||||
player.world = world;
|
player.world = world;
|
||||||
|
|
@ -101,7 +124,15 @@ function inject(serv, player) {
|
||||||
gamemode: opt.gamemode || player.gameMode,
|
gamemode: opt.gamemode || player.gameMode,
|
||||||
levelType:'default'
|
levelType:'default'
|
||||||
});
|
});
|
||||||
player.setPosition(opt.position || player.spawnPoint, { yaw: opt.yaw || 0, pitch: opt.pitch || 0 }); // Automatically sends chunks around players
|
player.entity.position=player.spawnPoint.toFixedPosition();
|
||||||
|
player.sendSpawnPosition();
|
||||||
|
|
||||||
|
player.spawnForOthers();
|
||||||
|
player.sendNearbyPlayers();
|
||||||
|
await player.sendMap();
|
||||||
|
setTimeout(player.sendRestMap,100);
|
||||||
|
player.sendPosition();
|
||||||
|
|
||||||
player.emit('change_world');
|
player.emit('change_world');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -111,6 +142,9 @@ function inject(serv, player) {
|
||||||
player.sendNearbyChunks = sendNearbyChunks;
|
player.sendNearbyChunks = sendNearbyChunks;
|
||||||
player.changeWorld = changeWorld;
|
player.changeWorld = changeWorld;
|
||||||
player.sendChunk = sendChunk;
|
player.sendChunk = sendChunk;
|
||||||
|
player.sendMap = sendMap;
|
||||||
|
player.sendRestMap = sendRestMap;
|
||||||
|
player.sendSpawnPosition = sendSpawnPosition;
|
||||||
|
|
||||||
player.on('chat', function(message) {
|
player.on('chat', function(message) {
|
||||||
if (message == 'world') {
|
if (message == 'world') {
|
||||||
|
|
|
||||||
|
|
@ -12,11 +12,11 @@ function inject(serv,settings)
|
||||||
players.forEach(function(player) {
|
players.forEach(function(player) {
|
||||||
player._client.write(packetName, packetFields);
|
player._client.write(packetName, packetFields);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
serv._writeNearby=function(packetName, packetFields, loc) {
|
serv._writeNearby=function(packetName, packetFields, loc) {
|
||||||
serv._writeArray(packetName, packetFields, serv.getNearby(loc));
|
serv._writeArray(packetName, packetFields, serv.getNearby(loc));
|
||||||
}
|
};
|
||||||
|
|
||||||
serv.getNearby=function(loc) {
|
serv.getNearby=function(loc) {
|
||||||
return serv.players.filter(function(player) {
|
return serv.players.filter(function(player) {
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ function inject(serv,{regionFolder,generation={"name":"diamond_square","options"
|
||||||
serv._worldSync=new WorldSync(serv.overworld);
|
serv._worldSync=new WorldSync(serv.overworld);
|
||||||
|
|
||||||
function pregenWorld(world, size=10) {
|
function pregenWorld(world, size=10) {
|
||||||
var promises = Array();
|
var promises = [];
|
||||||
for (var x = -size; x < size; x++) {
|
for (var x = -size; x < size; x++) {
|
||||||
for (var z = -size; z < size; z++) {
|
for (var z = -size; z < size; z++) {
|
||||||
promises.push(world.getColumn(x, z));
|
promises.push(world.getColumn(x, z));
|
||||||
|
|
@ -33,6 +33,6 @@ function inject(serv,{regionFolder,generation={"name":"diamond_square","options"
|
||||||
}
|
}
|
||||||
serv.pregenWorld = pregenWorld;
|
serv.pregenWorld = pregenWorld;
|
||||||
|
|
||||||
serv.pregenWorld(serv.overworld).then(() => serv.log('Pre-Generated Overworld'));
|
//serv.pregenWorld(serv.overworld).then(() => serv.log('Pre-Generated Overworld'));
|
||||||
serv.pregenWorld(serv.netherworld).then(() => serv.log('Pre-Generated Nether'));
|
//serv.pregenWorld(serv.netherworld).then(() => serv.log('Pre-Generated Nether'));
|
||||||
}
|
}
|
||||||
Loading…
Reference in a new issue