mirror of
https://github.com/danbulant/flying-squid
synced 2026-06-19 14:31:17 +00:00
Added lots of communication stuff
This commit is contained in:
parent
bb80bd7c44
commit
f0cce9fadb
6 changed files with 72 additions and 12 deletions
34
doc/api.md
34
doc/api.md
|
|
@ -31,6 +31,7 @@
|
|||
- [serv.broadcast(message[,color])](#servbroadcastmessagecolor)
|
||||
- [serv.setBlock(position,blockType)](#servsetblockpositionblocktype)
|
||||
- [serv.getPlayer(username)](#servgetplayerusername)
|
||||
- [serv.getNearby(loc)](#servgetnearbyloc)
|
||||
- [server.banUsername(username,reason,callback)](#serverbanusernameusernamereasoncallback)
|
||||
- [server.ban(uuid,reason)](#serverbanuuidreason)
|
||||
- [server.pardonUsername(username,callback)](#serverpardonusernameusernamecallback)
|
||||
|
|
@ -38,6 +39,10 @@
|
|||
- [server.getUUIDFromUsername(username,callback)](#servergetuuidfromusernameusernamecallback)
|
||||
- [server.setTime(time)](#serversettimetime)
|
||||
- [server.setTickInterval(ticksPerSecond)](#serversettickintervaltickspersecond)
|
||||
- [Low level methods](#low-level-methods)
|
||||
- [server._writeAll(packetName, packetFields)](#server_writeallpacketname-packetfields)
|
||||
- [server._writeArray(packetName, packetFields, playerArray)](#server_writearraypacketname-packetfields-playerarray)
|
||||
- [server._writeNearby(packetName, packetFields, loc)](#server_writenearbypacketname-packetfields-loc)
|
||||
- [Player](#player)
|
||||
- [Properties](#properties-1)
|
||||
- [player.entity](#playerentity)
|
||||
|
|
@ -70,8 +75,9 @@
|
|||
- [player.changeWorld(world, opt)](#playerchangeworldworld-opt)
|
||||
- [Low level properties](#low-level-properties)
|
||||
- [player._client](#player_client)
|
||||
- [Low level methods](#low-level-methods)
|
||||
- [Low level methods](#low-level-methods-1)
|
||||
- [player._writeOthers(packetName, packetFields)](#player_writeotherspacketname-packetfields)
|
||||
- [player._writeOthersNearby(packetName, packetFields)](#player_writeothersnearbypacketname-packetfields)
|
||||
|
||||
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||
|
||||
|
|
@ -190,6 +196,14 @@ Saves block in world and sends block update to all players.
|
|||
|
||||
Returns player object with that username or, if no such player is on the server, null.
|
||||
|
||||
#### serv.getNearby(loc)
|
||||
|
||||
Returns array of players within loc. loc is a required paramater. The object contains:
|
||||
|
||||
* world: World position is in
|
||||
* position: Center position
|
||||
* radius: Distance from position
|
||||
|
||||
#### server.banUsername(username,reason,callback)
|
||||
|
||||
Bans players given a username. Mainly used if player is not online, otherwise use `player.ban()`.
|
||||
|
|
@ -222,6 +236,20 @@ Resets tick interval to occur `ticksPerSecond` times per second.
|
|||
|
||||
Use `server.stopTickInterval()` if you want but this method already calls that and you can use `serv.doDaylightCycle` to stop it anyway.
|
||||
|
||||
### Low level methods
|
||||
|
||||
#### server._writeAll(packetName, packetFields)
|
||||
|
||||
Writes packet to every player on the server
|
||||
|
||||
#### server._writeArray(packetName, packetFields, playerArray)
|
||||
|
||||
Writes packet to every player in playerArray
|
||||
|
||||
#### server._writeNearby(packetName, packetFields, loc)
|
||||
|
||||
Writes packet to all players within distance of loc. loc has the same paramater as loc in server.getNearby()
|
||||
|
||||
## Player
|
||||
|
||||
### Properties
|
||||
|
|
@ -360,3 +388,7 @@ The internal implementation to communicate with a client
|
|||
#### player._writeOthers(packetName, packetFields)
|
||||
|
||||
write to other players than `player` the packet `packetName` with fields `packetFields`
|
||||
|
||||
#### player._writeOthersNearby(packetName, packetFields)
|
||||
|
||||
write to other players in same world that are within 150 blocks (see player.getNearby())
|
||||
|
|
|
|||
|
|
@ -27,18 +27,19 @@
|
|||
"minecraft-protocol": "^0.15.0",
|
||||
"mkdirp": "0.5.1",
|
||||
"moment": "^2.10.6",
|
||||
"node-dir": "~0.1.9",
|
||||
"node-uuid": "^1.4.3",
|
||||
"prismarine-block": "0.1.0",
|
||||
"prismarine-chunk": "0.2.1",
|
||||
"prismarine-entity": "0.1.0",
|
||||
"prismarine-world": "0.3.0",
|
||||
"prismarine-world-sync": "0.1.0",
|
||||
"random-seed": "^0.2.0",
|
||||
"request-promise": "^0.4.3",
|
||||
"requireindex": "~1.0.0",
|
||||
"vec3": "0.1.3",
|
||||
"spiralloop": "1.0.2",
|
||||
"node-dir": "~0.1.9",
|
||||
"uuid-1345": "~0.99.6",
|
||||
"prismarine-world-sync": "0.1.0"
|
||||
"vec3": "0.1.3"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
|
|
|||
|
|
@ -8,9 +8,21 @@ function inject(serv,player)
|
|||
});
|
||||
};
|
||||
|
||||
player._writeOthersNearby = function(packetName, packetFields) {
|
||||
serv._writeArray(packetName, packetFields, player.getNearby();
|
||||
}
|
||||
|
||||
player.getOthers = function() {
|
||||
return serv.players.filter(function (otherPlayer) {
|
||||
return otherPlayer != player;
|
||||
});
|
||||
};
|
||||
|
||||
player.getNearby = function() {
|
||||
return serv.getNearby({
|
||||
world: player.world,
|
||||
position: player.entity.position,
|
||||
radius: 150
|
||||
}).filter((p => p != player));
|
||||
}
|
||||
}
|
||||
|
|
@ -9,7 +9,7 @@ function inject(serv, player) {
|
|||
}
|
||||
|
||||
function spawnForOthers() {
|
||||
player._writeOthers('named_entity_spawn',{ // _writeOthersWithinDistance?
|
||||
player._writeOthersNearby('named_entity_spawn',{
|
||||
entityId: player.entity.id,
|
||||
playerUUID: player._client.uuid,
|
||||
x: player.entity.position.x,
|
||||
|
|
@ -23,8 +23,7 @@ function inject(serv, player) {
|
|||
}
|
||||
|
||||
function sendNearbyPlayers() {
|
||||
player.getOthers().forEach(function (otherPlayer) {
|
||||
if (otherPlayer.world != player.world) return; // Also check distance from player?
|
||||
player.getNearby().forEach(function (otherPlayer) {
|
||||
player._client.write('named_entity_spawn', {
|
||||
entityId: otherPlayer.entity.id,
|
||||
playerUUID: otherPlayer._client.uuid,
|
||||
|
|
|
|||
|
|
@ -7,4 +7,20 @@ function inject(serv,settings)
|
|||
player._client.write(packetName, packetFields);
|
||||
});
|
||||
};
|
||||
|
||||
serv._writeArray=function(packetName, packetFields, players) {
|
||||
players.forEach(function(player) {
|
||||
player._client.write(packetName, packetFields);
|
||||
});
|
||||
}
|
||||
|
||||
serv._writeNearby=function(packetName, packetFields, loc) {
|
||||
serv._writeArray(packetName, packetFields, serv.getNearby(loc));
|
||||
}
|
||||
|
||||
serv.getNearby=function(loc) {
|
||||
serv.players.filter(function(player) {
|
||||
return player.world == loc.world && player.entity.position.distanceTo(loc.position) <= loc.radius;
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -23,16 +23,16 @@ function inject(serv,{regionFolder,generation={"name":"diamond_square","options"
|
|||
serv._worldSync=new WorldSync(serv.overworld);
|
||||
|
||||
function pregenWorld(world, size=10) {
|
||||
var promises = Array();
|
||||
for (var x = -size; x < size; x++) {
|
||||
for (var z = -size; z < size; z++) {
|
||||
world.getColumn(x, z);
|
||||
promises.push(world.getColumn(x, z));
|
||||
}
|
||||
}
|
||||
return Promise.all(promises);
|
||||
}
|
||||
serv.pregenWorld = pregenWorld;
|
||||
|
||||
serv.pregenWorld(serv.overworld);
|
||||
serv.log('Pre-Generated Overworld');
|
||||
serv.pregenWorld(serv.netherworld);
|
||||
serv.log('Pre-Generated Nether');
|
||||
serv.pregenWorld(serv.overworld).then(() => serv.log('Pre-Generated Overworld'));
|
||||
serv.pregenWorld(serv.netherworld).then(() => serv.log('Pre-Generated Nether'));
|
||||
}
|
||||
Loading…
Reference in a new issue