send equipment during spawn and fix some code style issues

This commit is contained in:
Romain Beaumont 2015-11-28 21:54:49 +01:00
parent c8ce897013
commit e7952f386f
3 changed files with 38 additions and 26 deletions

View file

@ -1,21 +1,21 @@
var Version = require("../version"); var version = require("../version");
var Windows = require("prismarine-windows")(Version).windows; var windows = require("prismarine-windows")(version).windows;
var ItemStack = require("prismarine-item")(Version); var Item = require("prismarine-item")(version);
module.exports.player = function(player,serv) module.exports.player = function(player,serv)
{ {
player.heldItemSlot = 0; player.heldItemSlot = 0;
player.heldItem = new ItemStack(256, 1); player.heldItem = new Item(256, 1);
player.inventory = new Windows.InventoryWindow(0, "Inventory", 44); player.inventory = new windows.InventoryWindow(0, "Inventory", 44);
player._client.on("held_item_slot", ({slotId} = {}) => { player._client.on("held_item_slot", ({slotId} = {}) => {
player.heldItemSlot = slotId; player.heldItemSlot = slotId;
player.heldItem = player.inventory.slots[36 + player.heldItemSlot]; player.setEquipment(0,player.inventory.slots[36 + player.heldItemSlot]);
player._writeOthersNearby("entity_equipment",{ player._writeOthersNearby("entity_equipment",{
entityId: player.id, entityId: player.id,
slot: 0, slot: 0,
item: ItemStack.toNotch(player.heldItem) item: Item.toNotch(player.heldItem)
}); });
}); });
@ -139,7 +139,7 @@ module.exports.player = function(player,serv)
return; return;
} }
var newItem = ItemStack.fromNotch(item); var newItem = Item.fromNotch(item);
player.inventory.updateSlot(slot, newItem); player.inventory.updateSlot(slot, newItem);
}); });
@ -153,17 +153,18 @@ module.exports.player = function(player,serv)
}; };
equipments[player.heldItemSlot]=0; equipments[player.heldItemSlot]=0;
if(equipments[slot]!==undefined) { if(equipments[slot]!==undefined) {
player.setEquipment(equipments[slot],newItem);
player._writeOthersNearby("entity_equipment", { player._writeOthersNearby("entity_equipment", {
entityId: player.id, entityId: player.id,
slot: equipments[slot], slot: equipments[slot],
item: ItemStack.toNotch(newItem) item: Item.toNotch(newItem)
}); });
} }
player._client.write("set_slot", { player._client.write("set_slot", {
windowId: 0, windowId: 0,
slot: slot, slot: slot,
item: ItemStack.toNotch(newItem) item: Item.toNotch(newItem)
}); });
}); });
@ -197,7 +198,7 @@ module.exports.player = function(player,serv)
}); });
player.playSoundAtSelf('random.pop'); player.playSoundAtSelf('random.pop');
var newItem = new ItemStack(collectEntity.itemId, 1, collectEntity.damage); var newItem = new Item(collectEntity.itemId, 1, collectEntity.damage);
player.inventory.updateSlot(emptySlot, newItem); player.inventory.updateSlot(emptySlot, newItem);
collectEntity.destroy() collectEntity.destroy()
} }

View file

@ -4,6 +4,7 @@ var Entity = require("../entity");
var path = require('path'); var path = require('path');
var requireIndex = require('requireindex'); var requireIndex = require('requireindex');
var plugins = requireIndex(path.join(__dirname,'..', 'plugins')); var plugins = requireIndex(path.join(__dirname,'..', 'plugins'));
var Item = require("prismarine-item")(version);
var Vec3 = require("vec3").Vec3; var Vec3 = require("vec3").Vec3;
@ -118,6 +119,31 @@ module.exports.player=function(player,serv){
}); });
} }
}); });
player.spawnEntity = entity => {
player._client.write(entity.spawnPacketName, entity.getSpawnPacket());
if (typeof entity.itemId != 'undefined') {
entity.sendMetadata([{
"key": 10,
"type": 5,
"value": {
blockId: entity.itemId,
itemDamage: entity.itemDamage,
itemCount:1
}
}]);
}
entity.equipment.forEach((equipment,slot) => {
console.log(equipment+" "+slot);
if (equipment != undefined) player._client.write("entity_equipment", {
entityId: entity.id,
slot: slot,
item: Item.toNotch(equipment)
});
}
)
};
}; };
module.exports.entity=function(entity,serv) { module.exports.entity=function(entity,serv) {

View file

@ -53,21 +53,6 @@ module.exports.server=function(serv,{regionFolder,generation={"name":"diamond_sq
module.exports.player=function(player,serv,settings) { module.exports.player=function(player,serv,settings) {
player.spawnEntity = entity => {
player._client.write(entity.spawnPacketName, entity.getSpawnPacket());
if (typeof entity.itemId != 'undefined') {
entity.sendMetadata([{
"key": 10,
"type": 5,
"value": {
blockId: entity.itemId,
itemDamage: entity.itemDamage,
itemCount:1
}
}]);
}
};
player.unloadChunk = (chunkX,chunkZ) => player.unloadChunk = (chunkX,chunkZ) =>
{ {
delete player.loadedChunks[chunkX+","+chunkZ]; delete player.loadedChunks[chunkX+","+chunkZ];