mirror of
https://github.com/danbulant/flying-squid
synced 2026-06-15 12:31:09 +00:00
Start of ticks, added daycycle, fixed inventory + chest things
This commit is contained in:
parent
012f6e7c30
commit
e062e4d6a9
6 changed files with 69 additions and 13 deletions
|
|
@ -19,13 +19,16 @@ function inject(serv, player)
|
|||
}
|
||||
|
||||
player._client.on("entity_action", function(packet) {
|
||||
if(packet.actionId == 3)
|
||||
if(packet.actionId == 3) {
|
||||
setMetadata([{"key":0,"type":0,"value": 0x08}]);
|
||||
if(packet.actionId == 4)
|
||||
} else if(packet.actionId == 4) {
|
||||
setMetadata([{"key":0,"type":0,"value": 0x00}]);
|
||||
if(packet.actionId == 0)
|
||||
} else if(packet.actionId == 0) {
|
||||
setMetadata([{"key":0,"type":0,"value": 0x02}]);
|
||||
if(packet.actionId == 1)
|
||||
player.entity.crouching = true;
|
||||
} else if(packet.actionId == 1) {
|
||||
setMetadata([{"key":0,"type":0,"value": 0x00}]);
|
||||
player.entity.crouching = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -4,16 +4,23 @@ module.exports=inject;
|
|||
|
||||
function inject(serv, player)
|
||||
{
|
||||
player._client.on('block_place', function (packet) {
|
||||
player._client.on('block_place', async function (packet) {
|
||||
var referencePosition=new vec3(packet.location.x,packet.location.y,packet.location.z);
|
||||
var id = serv.world.getBlock(referencePosition).type;
|
||||
if(id==54)
|
||||
if (player.entity.crouching) return;
|
||||
var id = await serv.world.getBlockType(referencePosition);
|
||||
var blockAbove = await serv.world.getBlockType(referencePosition.clone().add(new vec3(0, 1, 0)));
|
||||
|
||||
if(id==54) {
|
||||
if (blockAbove) {
|
||||
return;
|
||||
}
|
||||
player._client.write("open_window",{
|
||||
windowId:165,
|
||||
inventoryType:"minecraft:chest",
|
||||
windowTitle:JSON.stringify("Chest"),
|
||||
slotCount:26
|
||||
slotCount:9*3 + 8 // 3 rows, make nicer later
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
|
@ -8,16 +8,16 @@ function inject(serv, player)
|
|||
|
||||
player._client.on("held_item_slot", function (packet) {
|
||||
player.heldItemSlot = packet.slotId;
|
||||
if(player.inventory[36+heldItemSlot]===undefined){
|
||||
player.inventory[36+heldItemSlot]={
|
||||
if(player.inventory[36+player.heldItemSlot]===undefined){
|
||||
player.inventory[36+player.heldItemSlot]={
|
||||
blockId:-1
|
||||
};
|
||||
}
|
||||
player.heldItem = player.inventory[36+heldItemSlot];
|
||||
player.heldItem = player.inventory[36+player.heldItemSlot];
|
||||
player._writeOthers("entity_equipment",{
|
||||
entityId:player.entity.id,
|
||||
slot:0,
|
||||
item:heldItem
|
||||
item:player.heldItem
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ function inject(serv,player)
|
|||
{
|
||||
player._client.write('update_time', {
|
||||
age: [0, 0],
|
||||
time: [0, 1]
|
||||
time: [0, serv.time]
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
21
src/lib/serverPlugins/daycycle.js
Normal file
21
src/lib/serverPlugins/daycycle.js
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
|
||||
module.exports = inject;
|
||||
|
||||
function inject(serv, settings) {
|
||||
serv.setTime = function(time) {
|
||||
serv.time = time;
|
||||
serv._writeAll('update_time', {
|
||||
age: [0, 0], // TODO
|
||||
time: [0, serv.time]
|
||||
});
|
||||
}
|
||||
|
||||
serv.doDaylightCycle = true;
|
||||
|
||||
serv.time = 0;
|
||||
|
||||
serv.on('tick', function() {
|
||||
if (!serv.doDaylightCycle) return;
|
||||
if (serv.tick % 20 == 0) serv.setTime((serv.time + 20) % 24000); // Vanilla only does it every second
|
||||
})
|
||||
}
|
||||
25
src/lib/serverPlugins/tick.js
Normal file
25
src/lib/serverPlugins/tick.js
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
|
||||
module.exports = inject;
|
||||
|
||||
function inject(serv, settings) {
|
||||
serv.setTickInterval = setTickInterval;
|
||||
serv.stopTickInterval = stopTickInterval;
|
||||
serv.tick = 0;
|
||||
|
||||
serv.setTickInterval(20);
|
||||
}
|
||||
|
||||
function setTickInterval(ticksPerSecond) {
|
||||
var serv = this;
|
||||
if (serv.tickInterval) clearInterval(serv.tickInterval);
|
||||
|
||||
serv.tickInterval = setInterval(function() {
|
||||
serv.tick++;
|
||||
serv.emit('tick', serv.tick);
|
||||
}, 1000/ticksPerSecond);
|
||||
}
|
||||
|
||||
function stopTickInterval() {
|
||||
if (serv.tickInterval) clearInterval(serv.tickInterval);
|
||||
serv.tickInterval = null;
|
||||
}
|
||||
Loading…
Reference in a new issue