diff --git a/lib/playerPlugins/border.js b/lib/playerPlugins/border.js new file mode 100644 index 0000000..f5fc569 --- /dev/null +++ b/lib/playerPlugins/border.js @@ -0,0 +1,21 @@ +module.exports=inject; + +function inject(serv, player) +{ + //WIP: Does't work + player._client.write('world_border', { + action: 3, + x: 0, + z: 0, + old_radius: 15, + new_radius: 15, + speed: 10000000, + portalBoundary: 15, + warning_time: 5, + warning_blocks: 15 + }); + player._client.write('world_border', { + action: 0, + radius: 15 + }); +} \ No newline at end of file diff --git a/lib/playerPlugins/chest.js b/lib/playerPlugins/chest.js new file mode 100644 index 0000000..b9f8a30 --- /dev/null +++ b/lib/playerPlugins/chest.js @@ -0,0 +1,21 @@ +var vec3 = require("vec3"); + +module.exports=inject; + +function inject(serv, player) +{ + player._client.on('block_place', function (packet) { + var referencePosition=new vec3(packet.location.x,packet.location.y,packet.location.z); + var id = serv.world.getBlock(referencePosition).type; + player.system(player.entity.id); + if(id==54) + player._client.write("open_window",{ + windowId:165, + inventoryType:"minecraft:chest", + windowTitle:JSON.stringify("Chest"), + slotCount:26 + }); + + }); + //player.emit("chat",packet.message); +} \ No newline at end of file diff --git a/lib/playerPlugins/inventory.js b/lib/playerPlugins/inventory.js index 588b0ca..8983a0f 100644 --- a/lib/playerPlugins/inventory.js +++ b/lib/playerPlugins/inventory.js @@ -14,10 +14,40 @@ function inject(serv, player) }; } heldItem = inventory[36+heldItemSlot]; + player._writeOthers("entity_equipment",{ + entityId:player.entity.id, + slot:0, + item:heldItem + }); }); player._client.on("set_creative_slot", function (packet) { inventory[packet.slot]=packet.item; + if (packet.slot==5) + player._writeOthers("entity_equipment",{ + entityId:player.entity.id, + slot:4, + item:packet.item + }); + if (packet.slot==6) + player._writeOthers("entity_equipment",{ + entityId:player.entity.id, + slot:3, + item:packet.item + }); + if (packet.slot==7) + player._writeOthers("entity_equipment",{ + entityId:player.entity.id, + slot:2, + item:packet.item + }); + if (packet.slot==8) + player._writeOthers("entity_equipment",{ + entityId:player.entity.id, + slot:1, + item:packet.item + }); + }); player.heldItem = heldItem; diff --git a/lib/playerPlugins/signs.js b/lib/playerPlugins/signs.js new file mode 100644 index 0000000..298ef7e --- /dev/null +++ b/lib/playerPlugins/signs.js @@ -0,0 +1,6 @@ +module.exports=inject; + +function inject(serv, player) +{ +//WIP: temporary removed +} \ No newline at end of file diff --git a/lib/playerPlugins/stats.js b/lib/playerPlugins/stats.js new file mode 100644 index 0000000..1aa011d --- /dev/null +++ b/lib/playerPlugins/stats.js @@ -0,0 +1,11 @@ +module.exports=inject; + +function inject(serv, player) +{ + player._client.on('client_command', function (packet) { + if(packet.payload==1){ + //WIP: dummy + player.system ("WIP, press ESC"); + } + }); +} \ No newline at end of file diff --git a/src/lib/playerPlugins/chat.js b/src/lib/playerPlugins/chat.js index df89d7d..2f1c519 100644 --- a/src/lib/playerPlugins/chat.js +++ b/src/lib/playerPlugins/chat.js @@ -16,6 +16,10 @@ function inject(serv, player) function chat(message) { player._client.write('chat', { message: JSON.stringify(message), position: 0 }); } - + function system(message) { + player._client.write('chat', { message: JSON.stringify(message), position: 2 }); + } + player.chat=chat; + player.system=system; } \ No newline at end of file diff --git a/src/lib/playerPlugins/communication.js b/src/lib/playerPlugins/communication.js index 5aa2b92..72a7c97 100644 --- a/src/lib/playerPlugins/communication.js +++ b/src/lib/playerPlugins/communication.js @@ -10,7 +10,13 @@ function inject(serv,player) player.getOthers = function() { return serv.players.filter(function (otherPlayer) { - return otherPlayer != player + return otherPlayer != player; + }); + }; + + player._writeAll=function(packetName, packetFields) { + serv.players.forEach(function (player) { + player._client.write(packetName, packetFields); }); }; } \ No newline at end of file diff --git a/src/lib/playerPlugins/placeBlock.js b/src/lib/playerPlugins/placeBlock.js index f309ae6..51b8d46 100644 --- a/src/lib/playerPlugins/placeBlock.js +++ b/src/lib/playerPlugins/placeBlock.js @@ -9,7 +9,19 @@ function inject(serv,player) var referencePosition=new vec3(packet.location.x,packet.location.y,packet.location.z); var directionVector=directionToVector[packet.direction]; var placedPosition=referencePosition.plus(directionVector); - player.changeBlock(placedPosition,packet.heldItem.blockId); + if(packet.heldItem.blockId!=323){ + player.changeBlock(placedPosition,packet.heldItem.blockId); + }else if(packet.direction==1){ + serv.setBlock(placedPosition, 63); + player._client.write('open_sign_entity', { + location:placedPosition + }); + }else{ + serv.setBlock(placedPosition, 68); + player._client.write('open_sign_entity', { + location:placedPosition + }); + } }); }