flying-squid/src/lib/plugins/entities.js
2015-12-10 11:20:17 -08:00

41 lines
No EOL
1.3 KiB
JavaScript

var Vec3 = require("vec3").Vec3;
module.exports.server=function(serv,options) {
serv.on('tick', function(delta) {
Promise.all(
Object.keys(serv.entities).map(async (id) => {
var entity = serv.entities[id];
if (entity.deathTime && Date.now() - entity.bornTime >= entity.deathTime) {
entity.destroy();
return;
} else if (entity.pickupTime && Date.now() - entity.bornTime >= entity.pickupTime) {
var players = serv.getNearby({
world: entity.world,
position: entity.position,
radius: 1.5*32 // Seems good for now
});
if (players.length) {
players[0].collect(entity);
}
}
if (!entity.velocity || !entity.size) return;
var posAndOnGround = await entity.calculatePhysics(delta);
if (entity.type == 'mob') entity.sendPosition(posAndOnGround.position, posAndOnGround.onGround);
})
).catch((err)=> setTimeout(() => {throw err;},0));
});
};
module.exports.entity=function(entity){
entity.sendMetadata = (data) => {
entity._writeOthersNearby('entity_metadata', {
entityId: entity.id,
metadata: data
});
};
entity.setAndUpdateMetadata = (data) => {
entity.metadata = data;
entity.sendMetadata(data);
};
};