mirror of
https://github.com/danbulant/flying-squid
synced 2026-06-19 06:21:08 +00:00
41 lines
No EOL
1.3 KiB
JavaScript
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);
|
|
};
|
|
}; |