diff --git a/src/engine/db/handlers/dbItemHandler.java b/src/engine/db/handlers/dbItemHandler.java index 0284a984..55d1c5fc 100644 --- a/src/engine/db/handlers/dbItemHandler.java +++ b/src/engine/db/handlers/dbItemHandler.java @@ -60,7 +60,7 @@ public class dbItemHandler extends dbHandlerBase { try (Connection connection = DbManager.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement("CALL `item_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?,?);")) { - preparedStatement.setInt(1, toAdd.getOwnerID()); + preparedStatement.setInt(1, toAdd.ownerID); preparedStatement.setInt(2, toAdd.getTemplsteID()); preparedStatement.setInt(3, (byte) toAdd.chargesRemaining); preparedStatement.setInt(4, (short) toAdd.durabilityCurrent); diff --git a/src/engine/devcmd/cmds/MakeItemCmd.java b/src/engine/devcmd/cmds/MakeItemCmd.java index 61e7a6da..dbe6cb53 100644 --- a/src/engine/devcmd/cmds/MakeItemCmd.java +++ b/src/engine/devcmd/cmds/MakeItemCmd.java @@ -17,8 +17,6 @@ import engine.gameManager.DbManager; import engine.objects.*; import engine.powers.EffectsBase; -import java.util.ArrayList; - /** * @author Eighty */ @@ -175,57 +173,54 @@ public class MakeItemCmd extends AbstractDevCmd { return; } } - ItemBase ib = ItemBase.getItemBase(itembaseID); - if (ib == null) { + ItemTemplate template = ItemTemplate.itemTemplates.get(itembaseID); + + if (template == null) { throwbackError(pc, "Unable to find itembase of ID " + itembaseID); return; } if ((numItems > 1) - && (ib.getType().equals(ItemType.RESOURCE) == false) - && (ib.getType().equals(ItemType.OFFERING)) == false) + && (template.item_type.equals(ItemType.RESOURCE) == false) + && (template.item_type.equals(ItemType.OFFERING)) == false) numItems = 1; CharacterItemManager cim = pc.getCharItemManager(); + if (cim == null) { throwbackError(pc, "Unable to find the character item manager for player " + pc.getFirstName() + '.'); return; } - byte charges = (byte) ib.getNumCharges(); - short dur = (short) ib.getDurability(); - String result = ""; + for (int i = 0; i < quantity; i++) { - short weight = ib.getWeight(); + + int weight = template.item_wt; + if (!cim.hasRoomInventory(weight)) { throwbackError(pc, "Not enough room in inventory for any more of this item. " + i + " produced."); + if (i > 0) cim.updateInventory(); + return; } - boolean worked = false; - Item item = new Item(ib, pc.getObjectUUID(), - OwnerType.PlayerCharacter, charges, charges, dur, dur, - true, false, ItemContainerType.INVENTORY, (byte) 0, - new ArrayList<>(), ""); + Item item = new Item(itembaseID); + item.ownerID = pc.getObjectUUID(); + item.ownerType = OwnerType.PlayerCharacter; + if (numItems > 1) item.setNumOfItems(numItems); try { item = DbManager.ItemQueries.PERSIST(item); - worked = true; } catch (Exception e) { throwbackError(pc, "DB error 1: Unable to create item. " + e.getMessage()); return; } - if (item == null || !worked) { - throwbackError(pc, "DB error 2: Unable to create item."); - return; - } - //create prefix if (!prefix.isEmpty()) item.addPermanentEnchantmentForDev(prefix, 0); diff --git a/src/engine/objects/Item.java b/src/engine/objects/Item.java index 86db5e4c..fd0e9e55 100644 --- a/src/engine/objects/Item.java +++ b/src/engine/objects/Item.java @@ -57,7 +57,6 @@ public class Item extends AbstractWorldObject { public OwnerType ownerType; public int templsteID; private AbstractWorldObject lastOwner; - private ArrayList enchants = new ArrayList<>(); private long dateToUpgrade; private String customName = ""; private int magicValue; @@ -73,7 +72,7 @@ public class Item extends AbstractWorldObject { this.template = ItemTemplate.itemTemplates.get(templateID); this.chargesRemaining = this.template.item_initial_charges; this.durabilityCurrent = this.template.combat_health_full; - + this.equipSlot = 0; loadEnchantments(); bakeInStats(); } @@ -82,7 +81,7 @@ public class Item extends AbstractWorldObject { OwnerType ownerType, byte chargesMax, byte chargesRemaining, short durabilityCurrent, short durabilityMax, boolean canDestroy, boolean rentable, Enum.ItemContainerType containerType, byte equipSlot, - ArrayList enchants, String name) { + String name) { super(); this.templsteID = itemBase.getUUID(); this.ownerID = ownerID; @@ -101,7 +100,6 @@ public class Item extends AbstractWorldObject { this.containerType = containerType; this.canDestroy = canDestroy; this.equipSlot = equipSlot; - this.enchants = enchants; this.flags = 1; this.value = this.magicValue; this.customName = name; @@ -133,7 +131,6 @@ public class Item extends AbstractWorldObject { this.durabilityCurrent = (short) itemBase.getDurability(); this.canDestroy = canDestroy; this.equipSlot = equipSlot; - this.enchants = enchants; this.flags = 1; this.value = this.magicValue; @@ -420,14 +417,12 @@ public class Item extends AbstractWorldObject { boolean itemWorked = false; - Item item = new Item(toCreate, reciever.getObjectUUID(), OwnerType.PlayerCharacter, (byte) 0, (byte) 0, - (short) 1, (short) 1, true, false, Enum.ItemContainerType.INVENTORY, (byte) 0, - new ArrayList<>(), ""); + Item item = new Item(toCreate.getUUID()); - synchronized (item) { - item.numberOfItems = amount; - } + item.ownerID = reciever.getObjectUUID(); + item.ownerType = OwnerType.PlayerCharacter; item.containerType = Enum.ItemContainerType.INVENTORY; + item.numberOfItems = amount; try { item = DbManager.ItemQueries.PERSIST(item); @@ -589,57 +584,13 @@ public class Item extends AbstractWorldObject { } public static Item createItemForPlayer(PlayerCharacter pc, ItemBase ib) { - Item item = null; - byte charges = 0; - - charges = (byte) ib.getNumCharges(); - short durability = (short) ib.getDurability(); + Item item = new Item(ib.getUUID()); + item.ownerID = pc.getObjectUUID(); + item.ownerType = OwnerType.PlayerCharacter; - Item temp = new Item(ib, pc.getObjectUUID(), - OwnerType.PlayerCharacter, charges, charges, durability, durability, - true, false, Enum.ItemContainerType.INVENTORY, (byte) 0, - new ArrayList<>(), ""); try { - item = DbManager.ItemQueries.PERSIST(temp); - } catch (Exception e) { - Logger.error(e); - } - return item; - } - - public static Item createItemForPlayerBank(PlayerCharacter pc, ItemBase ib) { - Item item = null; - byte charges = 0; - - charges = (byte) ib.getNumCharges(); - - short durability = (short) ib.getDurability(); - - Item temp = new Item(ib, pc.getObjectUUID(), - OwnerType.PlayerCharacter, charges, charges, durability, durability, - true, false, Enum.ItemContainerType.BANK, (byte) 0, - new ArrayList<>(), ""); - try { - item = DbManager.ItemQueries.PERSIST(temp); - } catch (Exception e) { - } - return item; - } - - public static Item createItemForMob(Mob mob, ItemBase ib) { - Item item = null; - byte charges = 0; - - charges = (byte) ib.getNumCharges(); - short durability = (short) ib.getDurability(); - - Item temp = new Item(ib, mob.getObjectUUID(), - OwnerType.Mob, charges, charges, durability, durability, - true, false, Enum.ItemContainerType.INVENTORY, (byte) 0, - new ArrayList<>(), ""); - try { - item = DbManager.ItemQueries.PERSIST(temp); + item = DbManager.ItemQueries.PERSIST(item); } catch (Exception e) { Logger.error(e); } @@ -667,23 +618,16 @@ public class Item extends AbstractWorldObject { ownerID = accountID; ownerType = OwnerType.Account; - - Item newGold = new Item(ib, ownerID, ownerType, - (byte) 0, (byte) 0, (short) 0, (short) 0, true, false, containerType, (byte) 0, - new ArrayList<>(), ""); - - synchronized (newGold) { - newGold.numberOfItems = 0; - } + Item newGold = new Item(ib.getUUID()); + newGold.ownerID = ownerID; + newGold.ownerType = ownerType; + newGold.containerType = containerType; + newGold.numberOfItems = 0; if (persist) { try { newGold = DbManager.ItemQueries.PERSIST(newGold); - if (newGold != null) { - synchronized (newGold) { - newGold.numberOfItems = 0; - } - } + } catch (Exception e) { Logger.error(e); } @@ -729,28 +673,20 @@ public class Item extends AbstractWorldObject { } } - Item newGold = new Item(ib, ownerID, ownerType, - (byte) 0, (byte) 0, (short) 0, (short) 0, true, false, containerType, (byte) 0, - new ArrayList<>(), ""); - - synchronized (newGold) { - newGold.numberOfItems = 0; - } + Item newGold = new Item(ib.getUUID()); + newGold.ownerID = ownerID; + newGold.ownerType = ownerType; + newGold.containerType = containerType; + newGold.numberOfItems = 0; if (persist) { try { newGold = DbManager.ItemQueries.PERSIST(newGold); - if (newGold != null) { - synchronized (newGold) { - newGold.numberOfItems = 0; - } - } } catch (Exception e) { Logger.error(e); } DbManager.ItemQueries.ZERO_ITEM_STACK(newGold); } - newGold.containerType = containerType; return newGold; }