flying-squid/lib/clientPlugins/updatePositions.js

35 lines
No EOL
994 B
JavaScript

var vec3 = require("vec3");
module.exports=inject;
function toFixedPosition(p)
{
return new vec3(Math.floor(p.x*32),Math.floor(p.y*32),Math.floor(p.z*32))
}
function inject(serv,client)
{
client.on('position', function (packet) {
var position = new vec3(packet.x, packet.y, packet.z);
var onGround = packet.onGround;
sendRelativePositionChange(client, toFixedPosition(position), onGround);
});
function sendRelativePositionChange(client, newPosition, onGround) {
if (serv.uuidToPlayer[client.uuid].position) {
var diff = newPosition.minus(serv.uuidToPlayer[client.uuid].position);
if (diff.distanceTo(new vec3(0, 0, 0)) != 0) {
serv.writeOthers(client,'rel_entity_move', {
entityId: client.id,
dX: diff.x,
dY: diff.y,
dZ: diff.z,
onGround: onGround
});
}
}
serv.uuidToPlayer[client.uuid].position = newPosition;
serv.uuidToPlayer[client.uuid].onGround = onGround;
}
}