diff --git a/gameserver/src/main/java/brainwine/gameserver/item/Item.java b/gameserver/src/main/java/brainwine/gameserver/item/Item.java index 0e5feee..17d163a 100644 --- a/gameserver/src/main/java/brainwine/gameserver/item/Item.java +++ b/gameserver/src/main/java/brainwine/gameserver/item/Item.java @@ -44,6 +44,9 @@ public class Item { @JsonProperty("invulnerable") private boolean invulnerable; + @JsonProperty("inventory") + private String inventoryItem; + @JsonProperty("use") private Map useConfigs = new HashMap<>(); @@ -130,6 +133,14 @@ public class Item { return invulnerable || !isPlacable(); } + public Item getInventoryItem() { + if(inventoryItem == null) { + return this; + } + + return ItemRegistry.getItem(inventoryItem); + } + public boolean hasUse(ItemUseType... types) { for(ItemUseType type : types) { if(useConfigs.containsKey(type)) { diff --git a/gameserver/src/main/java/brainwine/gameserver/server/requests/BlockMineRequest.java b/gameserver/src/main/java/brainwine/gameserver/server/requests/BlockMineRequest.java index 0cb28e7..530b05e 100644 --- a/gameserver/src/main/java/brainwine/gameserver/server/requests/BlockMineRequest.java +++ b/gameserver/src/main/java/brainwine/gameserver/server/requests/BlockMineRequest.java @@ -50,6 +50,11 @@ public class BlockMineRequest extends PlayerRequest { } zone.updateBlock(x, y, layer, 0, 0, player); + Item inventoryItem = item.getInventoryItem(); + + if(!inventoryItem.isAir()) { + player.getInventory().addItem(inventoryItem); + } } private void fail(Player player, String reason) { diff --git a/gameserver/src/main/java/brainwine/gameserver/server/requests/BlockPlaceRequest.java b/gameserver/src/main/java/brainwine/gameserver/server/requests/BlockPlaceRequest.java index c206c49..848d96b 100644 --- a/gameserver/src/main/java/brainwine/gameserver/server/requests/BlockPlaceRequest.java +++ b/gameserver/src/main/java/brainwine/gameserver/server/requests/BlockPlaceRequest.java @@ -67,6 +67,7 @@ public class BlockPlaceRequest extends PlayerRequest { } zone.updateBlock(x, y, layer, item, mod, player); + player.getInventory().removeItem(item); } private void fail(Player player, String reason) {