diff --git a/src/main/java/com/syncleus/aethermud/command/commands/DropCommand.java b/src/main/java/com/syncleus/aethermud/command/commands/DropCommand.java index 0c03964427ecf28a6f468644faa2ee91b8156844..1e382f17b8a462e2551e103816a9b2e8adf74d62 100644 --- a/src/main/java/com/syncleus/aethermud/command/commands/DropCommand.java +++ b/src/main/java/com/syncleus/aethermud/command/commands/DropCommand.java @@ -15,7 +15,7 @@ */ package com.syncleus.aethermud.command.commands; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.core.GameManager; import com.google.common.base.Joiner; import org.jboss.netty.channel.ChannelHandlerContext; @@ -43,7 +43,7 @@ public class DropCommand extends Command { } originalMessageParts.remove(0); String itemTarget = Joiner.on(" ").join(originalMessageParts); - for (ItemPojo item : player.getInventory()) { + for (Item item : player.getInventory()) { if (item.getItemTriggers().contains(itemTarget)) { item.setWithPlayer(false); gameManager.placeItemInRoom(currentRoom.getRoomId(), item.getItemId()); diff --git a/src/main/java/com/syncleus/aethermud/command/commands/EquipCommand.java b/src/main/java/com/syncleus/aethermud/command/commands/EquipCommand.java index ea73fb3791cf525cace69899fd11cd5d4620af99..19ed11e65e1aeac7699361d2d1ed8c22ddebcd56 100644 --- a/src/main/java/com/syncleus/aethermud/command/commands/EquipCommand.java +++ b/src/main/java/com/syncleus/aethermud/command/commands/EquipCommand.java @@ -15,7 +15,7 @@ */ package com.syncleus.aethermud.command.commands; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.core.GameManager; import com.google.common.base.Joiner; import org.jboss.netty.channel.ChannelHandlerContext; @@ -43,9 +43,9 @@ public class EquipCommand extends Command { } originalMessageParts.remove(0); String itemTarget = Joiner.on(" ").join(originalMessageParts); - List<ItemPojo> inventory = player.getInventory(); + List<Item> inventory = player.getInventory(); if (inventory != null) { - for (ItemPojo item : inventory) { + for (Item item : inventory) { if (item.getItemTriggers().contains(itemTarget)) { if (item.getEquipment() == null) { write("Item is not equipable."); diff --git a/src/main/java/com/syncleus/aethermud/command/commands/InventoryCommand.java b/src/main/java/com/syncleus/aethermud/command/commands/InventoryCommand.java index 9e86eba5c5757659ab0335132d6a305492507274..6cc9d39e673e544c5befb94bf0e1836a270aae9c 100644 --- a/src/main/java/com/syncleus/aethermud/command/commands/InventoryCommand.java +++ b/src/main/java/com/syncleus/aethermud/command/commands/InventoryCommand.java @@ -16,7 +16,7 @@ package com.syncleus.aethermud.command.commands; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.core.GameManager; import org.apache.commons.lang.StringUtils; import org.jboss.netty.channel.ChannelHandlerContext; @@ -40,7 +40,7 @@ public class InventoryCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { this.execCommand(ctx, e, () -> { - List<ItemPojo> inventory = player.getInventory(); + List<Item> inventory = player.getInventory(); if (inventory == null) { write("You aren't carrying anything."); return; diff --git a/src/main/java/com/syncleus/aethermud/command/commands/LootCommand.java b/src/main/java/com/syncleus/aethermud/command/commands/LootCommand.java index 84855b3f79122bfe9249a060c04d105c88c6eba7..e33e6ece3c4d2e965ef44fe19653819c395d321e 100644 --- a/src/main/java/com/syncleus/aethermud/command/commands/LootCommand.java +++ b/src/main/java/com/syncleus/aethermud/command/commands/LootCommand.java @@ -16,7 +16,7 @@ package com.syncleus.aethermud.command.commands; import com.syncleus.aethermud.core.GameManager; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.items.Loot; import com.syncleus.aethermud.server.communication.Color; import org.jboss.netty.channel.ChannelHandlerContext; @@ -42,8 +42,8 @@ public class LootCommand extends Command { public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { execCommand(ctx, e, () -> { if (originalMessageParts.size() > 1) { - for (ItemPojo item : player.getInventory()) { - if (item.getInternalItemName().equals(ItemPojo.CORPSE_INTENAL_NAME)) { + for (Item item : player.getInventory()) { + if (item.getInternalItemName().equals(Item.CORPSE_INTENAL_NAME)) { Loot loot = item.getLoot(); if (loot != null) { int gold = lootManager.lootGoldAmountReturn(loot); @@ -51,8 +51,8 @@ public class LootCommand extends Command { write("You looted " + NumberFormat.getNumberInstance(Locale.US).format(gold) + Color.YELLOW + " gold" + Color.RESET + " from a " + item.getItemName() + ".\r\n"); player.incrementGold(gold); } - Set<ItemPojo> items = lootManager.lootItemsReturn(loot); - for (ItemPojo i: items) { + Set<Item> items = lootManager.lootItemsReturn(loot); + for (Item i: items) { gameManager.acquireItem(player, i.getItemId(), true); write("You looted " + i.getItemName() + " from a " + item.getItemName() + ".\r\n"); } diff --git a/src/main/java/com/syncleus/aethermud/command/commands/PickUpCommand.java b/src/main/java/com/syncleus/aethermud/command/commands/PickUpCommand.java index 136efc4780556b009b9e506c2f9e64872c6ff736..a94643f4247d4ebfef57662fc09a7fda1f675397 100644 --- a/src/main/java/com/syncleus/aethermud/command/commands/PickUpCommand.java +++ b/src/main/java/com/syncleus/aethermud/command/commands/PickUpCommand.java @@ -15,7 +15,7 @@ */ package com.syncleus.aethermud.command.commands; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.core.GameManager; import com.google.common.base.Joiner; import org.jboss.netty.channel.ChannelHandlerContext; @@ -43,7 +43,7 @@ public class PickUpCommand extends Command { originalMessageParts.remove(0); String desiredPickUpItem = Joiner.on(" ").join(originalMessageParts); for (String next : itemIds) { - Optional<ItemPojo> itemEntityOptional = entityManager.getItemEntity(next); + Optional<Item> itemEntityOptional = entityManager.getItemEntity(next); if (!itemEntityOptional.isPresent()) { continue; } diff --git a/src/main/java/com/syncleus/aethermud/command/commands/ShowCommand.java b/src/main/java/com/syncleus/aethermud/command/commands/ShowCommand.java index 666d746f4fb9c888e9a7635cbae19980d4faa280..4324607df7d121d5413fa57616b82517e5fdba97 100644 --- a/src/main/java/com/syncleus/aethermud/command/commands/ShowCommand.java +++ b/src/main/java/com/syncleus/aethermud/command/commands/ShowCommand.java @@ -15,7 +15,7 @@ */ package com.syncleus.aethermud.command.commands; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.core.GameManager; import com.google.common.base.Joiner; import org.jboss.netty.channel.ChannelHandlerContext; @@ -41,7 +41,7 @@ public class ShowCommand extends Command { } originalMessageParts.remove(0); String target = Joiner.on(" ").join(originalMessageParts); - for (ItemPojo next : player.getInventory()) { + for (Item next : player.getInventory()) { for (String s : next.getItemTriggers()) { if (s.equalsIgnoreCase(target)) { writeToRoom(player.getPlayerName() + " whips out " + next.getItemName() + ".\r\n"); diff --git a/src/main/java/com/syncleus/aethermud/command/commands/UnequipCommand.java b/src/main/java/com/syncleus/aethermud/command/commands/UnequipCommand.java index 042bea43d3d4a24d912df01916732e72ff72a3d6..56dbe5df985500ae4917db4b1ea67778df2f7a44 100644 --- a/src/main/java/com/syncleus/aethermud/command/commands/UnequipCommand.java +++ b/src/main/java/com/syncleus/aethermud/command/commands/UnequipCommand.java @@ -16,7 +16,7 @@ package com.syncleus.aethermud.command.commands; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.core.GameManager; import com.google.common.base.Joiner; import org.jboss.netty.channel.ChannelHandlerContext; @@ -44,8 +44,8 @@ public class UnequipCommand extends Command { } originalMessageParts.remove(0); String itemTarget = Joiner.on(" ").join(originalMessageParts); - Set<ItemPojo> equipment = player.getEquipment(); - for (ItemPojo item : equipment) { + Set<Item> equipment = player.getEquipment(); + for (Item item : equipment) { if (item.getItemTriggers().contains(itemTarget)) { player.unEquip(item); return; diff --git a/src/main/java/com/syncleus/aethermud/command/commands/UseCommand.java b/src/main/java/com/syncleus/aethermud/command/commands/UseCommand.java index c36726359ae7b7e0763e19f6ea6f2b2433ed558a..4370d81ba280c639efa28a21627af70333a08ff4 100644 --- a/src/main/java/com/syncleus/aethermud/command/commands/UseCommand.java +++ b/src/main/java/com/syncleus/aethermud/command/commands/UseCommand.java @@ -17,7 +17,7 @@ package com.syncleus.aethermud.command.commands; import com.syncleus.aethermud.core.GameManager; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.google.common.base.Joiner; import com.google.common.base.Strings; import org.apache.commons.lang.StringUtils; @@ -49,7 +49,7 @@ public class UseCommand extends Command { return; } - Optional<ItemPojo> inventoryItemOptional = player.getInventoryItem(useItemOn.getItem()); + Optional<Item> inventoryItemOptional = player.getInventoryItem(useItemOn.getItem()); if (!inventoryItemOptional.isPresent()) { write("Useable item is not found in your inventory.\r\n"); return; diff --git a/src/main/java/com/syncleus/aethermud/core/GameManager.java b/src/main/java/com/syncleus/aethermud/core/GameManager.java index c4856db6deb9fad8ffb362fb8116519e3975788a..3c9aac2e0d115ed29ac45e757a002304663f1075 100644 --- a/src/main/java/com/syncleus/aethermud/core/GameManager.java +++ b/src/main/java/com/syncleus/aethermud/core/GameManager.java @@ -343,12 +343,12 @@ public class GameManager { } for (String itemId : playerCurrentRoom.getItemIds()) { - Optional<ItemPojo> itemOptional = entityManager.getItemEntity(itemId); + Optional<Item> itemOptional = entityManager.getItemEntity(itemId); if (!itemOptional.isPresent()) { playerCurrentRoom.removePresentItem(itemId); continue; } - ItemPojo item = itemOptional.get(); + Item item = itemOptional.get(); sb.append(" ").append(item.getRestingName()).append("\r\n"); } @@ -465,11 +465,11 @@ public class GameManager { } public void placeItemInRoom(Integer roomId, String itemId) { - Optional<ItemPojo> itemOptional = entityManager.getItemEntity(itemId); + Optional<Item> itemOptional = entityManager.getItemEntity(itemId); if (!itemOptional.isPresent()) { throw new IllegalArgumentException("itemId not valid."); } - ItemPojo item = itemOptional.get(); + Item item = itemOptional.get(); roomManager.getRoom(roomId).addPresentItem(item.getItemId()); } @@ -494,21 +494,21 @@ public class GameManager { synchronized (interner.intern(itemId)) { Stats playerStatsWithEquipmentAndLevel = player.getPlayerStatsWithEquipmentAndLevel(); if (player.getInventory().size() < playerStatsWithEquipmentAndLevel.getInventorySize()) { - Optional<ItemPojo> itemOptional = entityManager.getItemEntity(itemId); + Optional<Item> itemOptional = entityManager.getItemEntity(itemId); if (!itemOptional.isPresent()) { return false; } - ItemPojo itemEntity = itemOptional.get(); + Item itemEntity = itemOptional.get(); itemEntity.setWithPlayer(true); player.addInventoryId(itemId); entityManager.saveItem(itemEntity); return true; } else { - Optional<ItemPojo> itemOptional = entityManager.getItemEntity(itemId); + Optional<Item> itemOptional = entityManager.getItemEntity(itemId); if (!itemOptional.isPresent()) { return false; } - ItemPojo itemEntity = itemOptional.get(); + Item itemEntity = itemOptional.get(); channelUtils.write(player.getPlayerId(), "Your inventory is full, drop some items to free up room.\r\n"); if (isFromLoot) { player.getCurrentRoom().addPresentItem(itemId); diff --git a/src/main/java/com/syncleus/aethermud/entity/EntityManager.java b/src/main/java/com/syncleus/aethermud/entity/EntityManager.java index 74f18c31b3f9a666f2f7e32d844f5ce2994f173e..48e6f2040b2733fbccc481aef62673263fd75bbf 100644 --- a/src/main/java/com/syncleus/aethermud/entity/EntityManager.java +++ b/src/main/java/com/syncleus/aethermud/entity/EntityManager.java @@ -17,18 +17,15 @@ package com.syncleus.aethermud.entity; import com.google.common.base.Function; import com.syncleus.aethermud.Main; -import com.syncleus.aethermud.core.GameManager; import com.syncleus.aethermud.core.SentryManager; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.items.ItemBuilder; import com.syncleus.aethermud.npc.NpcSpawn; import com.syncleus.aethermud.player.Player; import com.syncleus.aethermud.player.PlayerManager; -import com.syncleus.aethermud.storage.AetherMudStorage; import com.syncleus.aethermud.storage.graphdb.GraphDbAetherMudStorage; import com.syncleus.aethermud.storage.graphdb.GraphStorageFactory; import com.syncleus.aethermud.storage.graphdb.model.ItemData; -import com.syncleus.aethermud.storage.graphdb.model.PlayerData; import com.syncleus.aethermud.world.RoomManager; import com.syncleus.aethermud.world.model.Room; import org.apache.log4j.Logger; @@ -84,11 +81,11 @@ public class EntityManager { } } - public ItemData saveItem(ItemPojo item) { + public ItemData saveItem(Item item) { return this.transact(storage -> storage.saveItem(item)); } - public void removeItem(ItemPojo item) { + public void removeItem(Item item) { this.consume(storage -> storage.removeItem(item.getItemId())); } @@ -96,10 +93,10 @@ public class EntityManager { this.consume(storage -> storage.removeItem(itemId)); } - public Optional<ItemPojo> getItemEntity(String itemId) { + public Optional<Item> getItemEntity(String itemId) { return this.transactRead(storage -> { Optional<ItemData> item = storage.getItemEntity(itemId); - return item.map(itemName -> new ItemBuilder().from(itemName).create()); + return item.map(itemData -> new ItemBuilder().from(ItemData.copyItem(itemData)).create()); }); } diff --git a/src/main/java/com/syncleus/aethermud/items/ForageManager.java b/src/main/java/com/syncleus/aethermud/items/ForageManager.java index 74d8e74ee6b265a5fb5532be7d416aa6e6aef1bc..0e9198830059bd03d0e518e7f2f6b72e1ea9c36f 100644 --- a/src/main/java/com/syncleus/aethermud/items/ForageManager.java +++ b/src/main/java/com/syncleus/aethermud/items/ForageManager.java @@ -92,7 +92,7 @@ public class ForageManager { totalForageXp += forage.getForageExperience(); for (long i = 0; i < numberToHarvest; i++) { countOfForagesFound++; - ItemPojo item = new ItemBuilder().from(itemMetadata).create(); + Item item = new ItemBuilder().from(itemMetadata).create(); gameManager.getEntityManager().saveItem(item); gameManager.acquireItem(player, item.getItemId()); } diff --git a/src/main/java/com/syncleus/aethermud/items/Item.java b/src/main/java/com/syncleus/aethermud/items/Item.java index 7a146b201ad4728a2af59beb7e00bf8950326323..d12c09b9c6653ddbc756ca381729579aad55dcc7 100644 --- a/src/main/java/com/syncleus/aethermud/items/Item.java +++ b/src/main/java/com/syncleus/aethermud/items/Item.java @@ -15,88 +15,242 @@ */ package com.syncleus.aethermud.items; + import com.syncleus.aethermud.core.service.TimeTracker; import com.syncleus.aethermud.stats.Stats; +import com.google.common.collect.Lists; +import java.io.Serializable; import java.util.List; import java.util.Set; - -public interface Item { - Stats getItemApplyStats(); - - List<TimeTracker.TimeOfDay> getValidTimeOfDays(); - - void setValidTimeOfDays(List<TimeTracker.TimeOfDay> validTimeOfDays); - - void setValidTimeOfDays(Set<TimeTracker.TimeOfDay> validTimeOfDays); - - boolean isDisposable(); - - int getMaxUses(); - - boolean isWithPlayer(); - - void setWithPlayer(boolean isWithPlayer); - - int getNumberOfUses(); - - void setNumberOfUses(int numberOfUses); - - String getItemId(); - - String getInternalItemName(); - - String getItemName(); - - String getItemDescription(); - - List<String> getItemTriggers(); - - void setItemTriggers(List<String> itemTriggers); - - String getRestingName(); - - int getItemHalfLifeTicks(); - - Loot getLoot(); - - void setEquipment(Equipment equipment); - - void setHasBeenWithPlayer(boolean hasBeenWithPlayer); - - Equipment getEquipment(); - - Rarity getRarity(); - - int getValueInGold(); - - void setEffects(Set<Effect> effects); - - Set<Effect> getEffects(); - - void setItemName(String itemName); - - void setItemDescription(String itemDescription); - - void setInternalItemName(String internalItemName); - - void setRestingName(String restingName); - - void setItemId(String itemId); - - void setLoot(Loot loot); - - void setItemHalfLifeTicks(int itemHalfLifeTicks); - - void setRarity(Rarity rarity); - - void setValueInGold(int valueInGold); - - void setMaxUses(int maxUses); - - void setDisposable(boolean disposable); - - void setItemApplyStats(Stats itemApplyStats); - - boolean isHasBeenWithPlayer(); +import java.util.UUID; + +public class Item implements Serializable { + + private String itemName; + private String itemDescription; + private String internalItemName; + private List<String> itemTriggers; + private String restingName; + private String itemId; + private int numberOfUses; + private boolean isWithPlayer; + private Loot loot; + private int itemHalfLifeTicks; + private Equipment equipment; + private Rarity rarity; + private int valueInGold; + private Set<Effect> effects; + private boolean hasBeenWithPlayer; + private int maxUses; + private boolean isDisposable; + private List<TimeTracker.TimeOfDay> validTimeOfDays; + private Stats itemApplyStats; + + public static final String CORPSE_INTENAL_NAME = "corpse"; + + public Item() { + } + + protected Item(String itemName, String itemDescription, String internalItemName, List<String> itemTriggers, String restingName, String itemId, int numberOfUses, boolean isWithPlayer, Loot loot, int itemHalfLifeTicks, Equipment equipment, Rarity rarity, int valueInGold, Set<Effect> effects, boolean hasBeenWithPlayer, int maxUses, boolean isDisposable, Set<TimeTracker.TimeOfDay> validTimeOfDays, Stats itemApplyStats) { + this.itemName = itemName; + this.itemDescription = itemDescription; + this.internalItemName = internalItemName; + this.itemTriggers = itemTriggers; + this.restingName = restingName; + this.itemId = itemId; + this.numberOfUses = numberOfUses; + this.isWithPlayer = isWithPlayer; + this.loot = loot; + this.itemHalfLifeTicks = itemHalfLifeTicks; + this.equipment = equipment; + this.rarity = rarity; + this.valueInGold = valueInGold; + this.effects = effects; + this.hasBeenWithPlayer = hasBeenWithPlayer; + this.maxUses = maxUses; + this.isDisposable = isDisposable; + this.validTimeOfDays = ( validTimeOfDays == null ? Lists.newArrayList() : Lists.newArrayList(validTimeOfDays)); + this.itemApplyStats = itemApplyStats; + } + + public Stats getItemApplyStats() { + return itemApplyStats; + } + + public List<TimeTracker.TimeOfDay> getValidTimeOfDays() { + return validTimeOfDays; + } + + public void setValidTimeOfDays(Set<TimeTracker.TimeOfDay> validTimeOfDays) { + this.validTimeOfDays = Lists.newArrayList(validTimeOfDays); + } + + public void setValidTimeOfDays(List<TimeTracker.TimeOfDay> validTimeOfDays) { + this.validTimeOfDays = Lists.newArrayList(validTimeOfDays); + } + + public boolean isDisposable() { + return isDisposable; + } + + public int getMaxUses() { + return maxUses; + } + + public boolean isWithPlayer() { + return isWithPlayer; + } + + public void setWithPlayer(boolean isWithPlayer) { + if (isWithPlayer) { + setHasBeenWithPlayer(true); + } + this.isWithPlayer = isWithPlayer; + } + + public int getNumberOfUses() { + return numberOfUses; + } + + public void setNumberOfUses(int numberOfUses) { + this.numberOfUses = numberOfUses; + } + + public String getItemId() { + return itemId; + } + + + public String getInternalItemName() { + return internalItemName; + } + + public String getItemName() { + return itemName; + } + + public String getItemDescription() { + return itemDescription; + } + + public List<String> getItemTriggers() { + return itemTriggers; + } + + public String getRestingName() { + return restingName; + } + + public int getItemHalfLifeTicks() { + return itemHalfLifeTicks; + } + + public Loot getLoot() { + return loot; + } + + public void setEquipment(Equipment equipment) { + this.equipment = equipment; + } + + public void setHasBeenWithPlayer(boolean hasBeenWithPlayer) { + this.hasBeenWithPlayer = hasBeenWithPlayer; + } + + public Equipment getEquipment() { + return equipment; + } + + public Rarity getRarity() { + return rarity; + } + + public int getValueInGold() { + return valueInGold; + } + + public void setEffects(Set<Effect> effects) { + this.effects = effects; + } + + public Set<Effect> getEffects() { + return effects; + } + + public void setItemName(String itemName) { + this.itemName = itemName; + } + + public void setItemDescription(String itemDescription) { + this.itemDescription = itemDescription; + } + + public void setInternalItemName(String internalItemName) { + this.internalItemName = internalItemName; + } + + public void setItemTriggers(List<String> itemTriggers) { + this.itemTriggers = itemTriggers; + } + + public void setRestingName(String restingName) { + this.restingName = restingName; + } + + public void setItemId(String itemId) { + this.itemId = itemId; + } + + public void setLoot(Loot loot) { + this.loot = loot; + } + + public void setItemHalfLifeTicks(int itemHalfLifeTicks) { + this.itemHalfLifeTicks = itemHalfLifeTicks; + } + + public void setRarity(Rarity rarity) { + this.rarity = rarity; + } + + public void setValueInGold(int valueInGold) { + this.valueInGold = valueInGold; + } + + public void setMaxUses(int maxUses) { + this.maxUses = maxUses; + } + + public void setDisposable(boolean disposable) { + isDisposable = disposable; + } + + public void setItemApplyStats(Stats itemApplyStats) { + this.itemApplyStats = itemApplyStats; + } + + public boolean isHasBeenWithPlayer() { + return hasBeenWithPlayer; + } + + public static Item createCorpseItem(String name, Loot loot) { + + Item item = new ItemBuilder() + .internalItemName(Item.CORPSE_INTENAL_NAME) + .itemName(name + " corpse") + .itemDescription("a bloody corpse") + .itemTriggers(Lists.newArrayList("corpse", "c", name, name + " corpse")) + .itemId(UUID.randomUUID().toString()) + .itemHalfLifeTicks(120) + .rarity(Rarity.BASIC) + .valueInGold(5) + .isDisposable(false) + .restingName("a corpse lies on the ground.") + .loot(loot) + .create(); + + return item; + + } } diff --git a/src/main/java/com/syncleus/aethermud/items/ItemBuilder.java b/src/main/java/com/syncleus/aethermud/items/ItemBuilder.java index f7b44291ca97083e311b7b5c97f079ac4a36c911..03299fa980b3b29363be85147ff2e9f03be7953e 100644 --- a/src/main/java/com/syncleus/aethermud/items/ItemBuilder.java +++ b/src/main/java/com/syncleus/aethermud/items/ItemBuilder.java @@ -19,7 +19,6 @@ package com.syncleus.aethermud.items; import com.google.common.collect.Sets; import com.syncleus.aethermud.core.service.TimeTracker; import com.syncleus.aethermud.stats.Stats; -import com.syncleus.aethermud.storage.graphdb.model.StatsData; import java.util.List; import java.util.Set; @@ -191,8 +190,8 @@ public class ItemBuilder { return this; } - public ItemPojo create() { - return new ItemPojo(itemName, itemDescription, internalItemName, itemTriggers, restingName, itemId, numberOfUses, isWithPlayer, loot, itemHalfLifeTicks, equipment, rarity, valueInGold, effects, hasBeenWithPlayer, maxUses, isDisposable, validTimeOfDays, itemApplyStats); + public Item create() { + return new Item(itemName, itemDescription, internalItemName, itemTriggers, restingName, itemId, numberOfUses, isWithPlayer, loot, itemHalfLifeTicks, equipment, rarity, valueInGold, effects, hasBeenWithPlayer, maxUses, isDisposable, validTimeOfDays, itemApplyStats); } diff --git a/src/main/java/com/syncleus/aethermud/items/ItemDecayManager.java b/src/main/java/com/syncleus/aethermud/items/ItemDecayManager.java index afdc4468ad4129a7d0513d89f510a589727bb79c..e4a46875671e1d222fa6cf40b4f2084fdd277f6a 100644 --- a/src/main/java/com/syncleus/aethermud/items/ItemDecayManager.java +++ b/src/main/java/com/syncleus/aethermud/items/ItemDecayManager.java @@ -38,7 +38,7 @@ public class ItemDecayManager extends AetherMudEntity { this.gameManager = gameManager; } - public void addItem(ItemPojo item) { + public void addItem(Item item) { item.setWithPlayer(false); itemDecayTracker.put(item.getItemId(), new DecayProgress(item.getItemHalfLifeTicks())); } @@ -58,12 +58,12 @@ public class ItemDecayManager extends AetherMudEntity { ConcurrentHashMap<String, DecayProgress> itemDecayTracker1 = getItemDecayTracker(); for (Map.Entry<String, DecayProgress> next : itemDecayTracker1.entrySet()) { DecayProgress decayProgress = next.getValue(); - Optional<ItemPojo> itemOptional = entityManager.getItemEntity(next.getKey()); + Optional<Item> itemOptional = entityManager.getItemEntity(next.getKey()); if (!itemOptional.isPresent()) { removeItemFromDecayManager(next.getKey()); continue; } - ItemPojo item = itemOptional.get(); + Item item = itemOptional.get(); if (item.isWithPlayer()) { removeItemFromDecayManager(item.getItemId()); continue; diff --git a/src/main/java/com/syncleus/aethermud/items/ItemPojo.java b/src/main/java/com/syncleus/aethermud/items/ItemPojo.java deleted file mode 100644 index 308d36b1819eadf58705776662dfacfcd2555ca0..0000000000000000000000000000000000000000 --- a/src/main/java/com/syncleus/aethermud/items/ItemPojo.java +++ /dev/null @@ -1,292 +0,0 @@ -/** - * Copyright 2017 Syncleus, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.syncleus.aethermud.items; - - -import com.syncleus.aethermud.core.service.TimeTracker; -import com.syncleus.aethermud.stats.Stats; -import com.google.common.collect.Lists; - -import java.io.Serializable; -import java.util.List; -import java.util.Set; -import java.util.UUID; - -public class ItemPojo implements Serializable, Item { - - private String itemName; - private String itemDescription; - private String internalItemName; - private List<String> itemTriggers; - private String restingName; - private String itemId; - private int numberOfUses; - private boolean isWithPlayer; - private Loot loot; - private int itemHalfLifeTicks; - private Equipment equipment; - private Rarity rarity; - private int valueInGold; - private Set<Effect> effects; - private boolean hasBeenWithPlayer; - private int maxUses; - private boolean isDisposable; - private List<TimeTracker.TimeOfDay> validTimeOfDays; - private Stats itemApplyStats; - - public static final String CORPSE_INTENAL_NAME = "corpse"; - - protected ItemPojo(String itemName, String itemDescription, String internalItemName, List<String> itemTriggers, String restingName, String itemId, int numberOfUses, boolean isWithPlayer, Loot loot, int itemHalfLifeTicks, Equipment equipment, Rarity rarity, int valueInGold, Set<Effect> effects, boolean hasBeenWithPlayer, int maxUses, boolean isDisposable, Set<TimeTracker.TimeOfDay> validTimeOfDays, Stats itemApplyStats) { - this.itemName = itemName; - this.itemDescription = itemDescription; - this.internalItemName = internalItemName; - this.itemTriggers = itemTriggers; - this.restingName = restingName; - this.itemId = itemId; - this.numberOfUses = numberOfUses; - this.isWithPlayer = isWithPlayer; - this.loot = loot; - this.itemHalfLifeTicks = itemHalfLifeTicks; - this.equipment = equipment; - this.rarity = rarity; - this.valueInGold = valueInGold; - this.effects = effects; - this.hasBeenWithPlayer = hasBeenWithPlayer; - this.maxUses = maxUses; - this.isDisposable = isDisposable; - this.validTimeOfDays = ( validTimeOfDays == null ? Lists.newArrayList() : Lists.newArrayList(validTimeOfDays)); - this.itemApplyStats = itemApplyStats; - } - - @Override - public Stats getItemApplyStats() { - return itemApplyStats; - } - - @Override - public List<TimeTracker.TimeOfDay> getValidTimeOfDays() { - return validTimeOfDays; - } - - @Override - public void setValidTimeOfDays(Set<TimeTracker.TimeOfDay> validTimeOfDays) { - this.validTimeOfDays = Lists.newArrayList(validTimeOfDays); - } - - @Override - public void setValidTimeOfDays(List<TimeTracker.TimeOfDay> validTimeOfDays) { - this.validTimeOfDays = Lists.newArrayList(validTimeOfDays); - } - - @Override - public boolean isDisposable() { - return isDisposable; - } - - @Override - public int getMaxUses() { - return maxUses; - } - - @Override - public boolean isWithPlayer() { - return isWithPlayer; - } - - @Override - public void setWithPlayer(boolean isWithPlayer) { - if (isWithPlayer) { - setHasBeenWithPlayer(true); - } - this.isWithPlayer = isWithPlayer; - } - - @Override - public int getNumberOfUses() { - return numberOfUses; - } - - @Override - public void setNumberOfUses(int numberOfUses) { - this.numberOfUses = numberOfUses; - } - - @Override - public String getItemId() { - return itemId; - } - - - @Override - public String getInternalItemName() { - return internalItemName; - } - - @Override - public String getItemName() { - return itemName; - } - - @Override - public String getItemDescription() { - return itemDescription; - } - - @Override - public List<String> getItemTriggers() { - return itemTriggers; - } - - @Override - public String getRestingName() { - return restingName; - } - - @Override - public int getItemHalfLifeTicks() { - return itemHalfLifeTicks; - } - - @Override - public Loot getLoot() { - return loot; - } - - @Override - public void setEquipment(Equipment equipment) { - this.equipment = equipment; - } - - @Override - public void setHasBeenWithPlayer(boolean hasBeenWithPlayer) { - this.hasBeenWithPlayer = hasBeenWithPlayer; - } - - @Override - public Equipment getEquipment() { - return equipment; - } - - @Override - public Rarity getRarity() { - return rarity; - } - - @Override - public int getValueInGold() { - return valueInGold; - } - - @Override - public void setEffects(Set<Effect> effects) { - this.effects = effects; - } - - @Override - public Set<Effect> getEffects() { - return effects; - } - - @Override - public void setItemName(String itemName) { - this.itemName = itemName; - } - - @Override - public void setItemDescription(String itemDescription) { - this.itemDescription = itemDescription; - } - - @Override - public void setInternalItemName(String internalItemName) { - this.internalItemName = internalItemName; - } - - @Override - public void setItemTriggers(List<String> itemTriggers) { - this.itemTriggers = itemTriggers; - } - - @Override - public void setRestingName(String restingName) { - this.restingName = restingName; - } - - @Override - public void setItemId(String itemId) { - this.itemId = itemId; - } - - @Override - public void setLoot(Loot loot) { - this.loot = loot; - } - - @Override - public void setItemHalfLifeTicks(int itemHalfLifeTicks) { - this.itemHalfLifeTicks = itemHalfLifeTicks; - } - - @Override - public void setRarity(Rarity rarity) { - this.rarity = rarity; - } - - @Override - public void setValueInGold(int valueInGold) { - this.valueInGold = valueInGold; - } - - @Override - public void setMaxUses(int maxUses) { - this.maxUses = maxUses; - } - - @Override - public void setDisposable(boolean disposable) { - isDisposable = disposable; - } - - @Override - public void setItemApplyStats(Stats itemApplyStats) { - this.itemApplyStats = itemApplyStats; - } - - @Override - public boolean isHasBeenWithPlayer() { - return hasBeenWithPlayer; - } - - public static ItemPojo createCorpseItem(String name, Loot loot) { - - ItemPojo item = new ItemBuilder() - .internalItemName(ItemPojo.CORPSE_INTENAL_NAME) - .itemName(name + " corpse") - .itemDescription("a bloody corpse") - .itemTriggers(Lists.newArrayList("corpse", "c", name, name + " corpse")) - .itemId(UUID.randomUUID().toString()) - .itemHalfLifeTicks(120) - .rarity(Rarity.BASIC) - .valueInGold(5) - .isDisposable(false) - .restingName("a corpse lies on the ground.") - .loot(loot) - .create(); - - return item; - - } -} diff --git a/src/main/java/com/syncleus/aethermud/items/ItemUseAction.java b/src/main/java/com/syncleus/aethermud/items/ItemUseAction.java index 0877b9d6365d1c7019b12ef2210d1db61d961c4c..ec3ebe0ed48c4542778e5ca4301cfd5c1bcb8464 100644 --- a/src/main/java/com/syncleus/aethermud/items/ItemUseAction.java +++ b/src/main/java/com/syncleus/aethermud/items/ItemUseAction.java @@ -24,9 +24,9 @@ import java.util.Set; public interface ItemUseAction { String getInternalItemName(); - void executeAction(GameManager gameManager, Player player, ItemPojo item, UseCommand.UseItemOn useItemOn); + void executeAction(GameManager gameManager, Player player, Item item, UseCommand.UseItemOn useItemOn); - void postExecuteAction(GameManager gameManager, Player player, ItemPojo item); + void postExecuteAction(GameManager gameManager, Player player, Item item); Set<Effect> getEffects(); diff --git a/src/main/java/com/syncleus/aethermud/items/ItemUseHandler.java b/src/main/java/com/syncleus/aethermud/items/ItemUseHandler.java index 73e07d73d71d23aba3eb9062a65ba5b33aad3e45..ce88b311bc0fd80453d92ddd8db6fea3c572a7b3 100644 --- a/src/main/java/com/syncleus/aethermud/items/ItemUseHandler.java +++ b/src/main/java/com/syncleus/aethermud/items/ItemUseHandler.java @@ -35,7 +35,7 @@ public class ItemUseHandler { this.gameManager = gameManager; } - public void handle(Player player, ItemPojo item, UseCommand.UseItemOn useItemOn) { + public void handle(Player player, Item item, UseCommand.UseItemOn useItemOn) { ItemUseAction itemUseAction = null; Optional<ItemMetadata> itemMetadataOptional = gameManager.getItemStorage().get(item.getInternalItemName()); if (!itemMetadataOptional.isPresent()) { @@ -61,7 +61,7 @@ public class ItemUseHandler { } } - public static void incrementUses(ItemPojo item) { + public static void incrementUses(Item item) { item.setNumberOfUses(item.getNumberOfUses() + 1); } } diff --git a/src/main/java/com/syncleus/aethermud/items/LootManager.java b/src/main/java/com/syncleus/aethermud/items/LootManager.java index d24202968c3d482b87871e49cfce5dfc004884c0..ac9705af35786cb63e0acf50209763f5a7d6cf7f 100644 --- a/src/main/java/com/syncleus/aethermud/items/LootManager.java +++ b/src/main/java/com/syncleus/aethermud/items/LootManager.java @@ -48,8 +48,8 @@ public class LootManager { return randInt(loot.getLootGoldMin(), loot.getLootGoldMax()); } - public Set<ItemPojo> lootItemsReturn(Loot loot) { - Set<ItemPojo> lootItems = Sets.newHashSet(); + public Set<Item> lootItemsReturn(Loot loot) { + Set<Item> lootItems = Sets.newHashSet(); for (String internalItemName: loot.getInternalItemNames()) { Optional<ItemMetadata> itemMetadataOptional = gameManager.getItemStorage().get(internalItemName); if (!itemMetadataOptional.isPresent()) { @@ -57,7 +57,7 @@ public class LootManager { } ItemMetadata itemMetadata = itemMetadataOptional.get(); if (lootDropSuccess(itemMetadata.getRarity().getPercentToLoot())) { - ItemPojo i = new ItemBuilder().from(itemMetadata).create(); + Item i = new ItemBuilder().from(itemMetadata).create(); gameManager.getEntityManager().saveItem(i); lootItems.add(i); } diff --git a/src/main/java/com/syncleus/aethermud/items/use/DefaultApplyEffectsStats.java b/src/main/java/com/syncleus/aethermud/items/use/DefaultApplyEffectsStats.java index 5062ed726b6a02d33072c6ca43543bdda18779bf..8fb814775a666340e284f42f0d8e4d10e95e19a9 100644 --- a/src/main/java/com/syncleus/aethermud/items/use/DefaultApplyEffectsStats.java +++ b/src/main/java/com/syncleus/aethermud/items/use/DefaultApplyEffectsStats.java @@ -43,7 +43,7 @@ public class DefaultApplyEffectsStats implements ItemUseAction { } @Override - public void executeAction(GameManager gameManager, Player player, ItemPojo item, UseCommand.UseItemOn useItemOn) { + public void executeAction(GameManager gameManager, Player player, Item item, UseCommand.UseItemOn useItemOn) { String playerName = player.getPlayerName(); gameManager.writeToPlayerCurrentRoom(player.getPlayerId(), playerName + " uses " + item.getItemName() + ".\r\n"); @@ -60,7 +60,7 @@ public class DefaultApplyEffectsStats implements ItemUseAction { } @Override - public void postExecuteAction(GameManager gameManager, Player player, ItemPojo item) { + public void postExecuteAction(GameManager gameManager, Player player, Item item) { ItemUseHandler.incrementUses(item); if (item.isDisposable()) { if (item.getNumberOfUses() < item.getMaxUses()) { diff --git a/src/main/java/com/syncleus/aethermud/items/use/DirtyBombUseAction.java b/src/main/java/com/syncleus/aethermud/items/use/DirtyBombUseAction.java index f70f2e0c506b72be221291a5ad0b3c075abc1566..9ce835a8438d1b8c6cba4db2deb82b4e9b3557fc 100644 --- a/src/main/java/com/syncleus/aethermud/items/use/DirtyBombUseAction.java +++ b/src/main/java/com/syncleus/aethermud/items/use/DirtyBombUseAction.java @@ -44,7 +44,7 @@ public class DirtyBombUseAction implements ItemUseAction { } @Override - public void executeAction(GameManager gameManager, Player player, ItemPojo item, UseCommand.UseItemOn useItemOn) { + public void executeAction(GameManager gameManager, Player player, Item item, UseCommand.UseItemOn useItemOn) { Room currentRoom = player.getCurrentRoom(); if (currentRoom.getRoomId().equals(1)) { gameManager.writeToPlayerCurrentRoom(player.getPlayerId(), player.getPlayerName() + " tried to detonate a " + item.getItemName() + "!"); @@ -74,7 +74,7 @@ public class DirtyBombUseAction implements ItemUseAction { } @Override - public void postExecuteAction(GameManager gameManager, Player player, ItemPojo item) { + public void postExecuteAction(GameManager gameManager, Player player, Item item) { ItemUseHandler.incrementUses(item); if (item.isDisposable()) { if (item.getNumberOfUses() < item.getMaxUses()) { diff --git a/src/main/java/com/syncleus/aethermud/items/use/LightningSpellBookUseAction.java b/src/main/java/com/syncleus/aethermud/items/use/LightningSpellBookUseAction.java index 430a6f65ece16d60ce1abd88c17a4dc2684b18e9..614692c86502c76983364a7ef0c013f294547e6e 100644 --- a/src/main/java/com/syncleus/aethermud/items/use/LightningSpellBookUseAction.java +++ b/src/main/java/com/syncleus/aethermud/items/use/LightningSpellBookUseAction.java @@ -18,7 +18,7 @@ package com.syncleus.aethermud.items.use; import com.syncleus.aethermud.command.commands.UseCommand; import com.syncleus.aethermud.core.GameManager; import com.syncleus.aethermud.items.Effect; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.items.ItemMetadata; import com.syncleus.aethermud.items.ItemUseAction; import com.syncleus.aethermud.player.Player; @@ -42,7 +42,7 @@ public class LightningSpellBookUseAction implements ItemUseAction { } @Override - public void executeAction(GameManager gameManager, Player player, ItemPojo item, UseCommand.UseItemOn useItemOn) { + public void executeAction(GameManager gameManager, Player player, Item item, UseCommand.UseItemOn useItemOn) { if (player.getLearnedSpells().contains(LightningSpell.name)) { gameManager.getChannelUtils().write(player.getPlayerId(), "You already know how to use " + LightningSpell.name); dontDelete = true; @@ -53,7 +53,7 @@ public class LightningSpellBookUseAction implements ItemUseAction { } @Override - public void postExecuteAction(GameManager gameManager, Player player, ItemPojo item) { + public void postExecuteAction(GameManager gameManager, Player player, Item item) { if (!dontDelete) { player.removeInventoryId(item.getItemId()); gameManager.getEntityManager().removeItem(item); diff --git a/src/main/java/com/syncleus/aethermud/items/use/ResetAllEffectsUseAction.java b/src/main/java/com/syncleus/aethermud/items/use/ResetAllEffectsUseAction.java index 3530b2db1c3c1cf813aaf498f8f0b8d7e1e1384d..e5fe47c0a07f1e74b10cac0950172982495cdaca 100644 --- a/src/main/java/com/syncleus/aethermud/items/use/ResetAllEffectsUseAction.java +++ b/src/main/java/com/syncleus/aethermud/items/use/ResetAllEffectsUseAction.java @@ -36,13 +36,13 @@ public class ResetAllEffectsUseAction implements ItemUseAction { } @Override - public void executeAction(GameManager gameManager, Player player, ItemPojo item, UseCommand.UseItemOn useItemOn) { + public void executeAction(GameManager gameManager, Player player, Item item, UseCommand.UseItemOn useItemOn) { player.resetEffects(); gameManager.getChannelUtils().write(player.getPlayerId(), "All Effects are removed." + "\r\n"); } @Override - public void postExecuteAction(GameManager gameManager, Player player, ItemPojo item) { + public void postExecuteAction(GameManager gameManager, Player player, Item item) { ItemUseHandler.incrementUses(item); if (item.isDisposable()) { if (item.getNumberOfUses() < item.getMaxUses()) { diff --git a/src/main/java/com/syncleus/aethermud/items/use/StickOfJusticeUseAction.java b/src/main/java/com/syncleus/aethermud/items/use/StickOfJusticeUseAction.java index 45efbe1b72832c41d8cb78af9048ced3c2d4bde6..de9251abdbaa4f2852f6f2e607e867cbfa70819f 100644 --- a/src/main/java/com/syncleus/aethermud/items/use/StickOfJusticeUseAction.java +++ b/src/main/java/com/syncleus/aethermud/items/use/StickOfJusticeUseAction.java @@ -18,7 +18,7 @@ package com.syncleus.aethermud.items.use; import com.syncleus.aethermud.command.commands.UseCommand; import com.syncleus.aethermud.core.GameManager; import com.syncleus.aethermud.items.Effect; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.items.ItemMetadata; import com.syncleus.aethermud.items.ItemUseAction; import com.syncleus.aethermud.player.Player; @@ -41,7 +41,7 @@ public class StickOfJusticeUseAction implements ItemUseAction { @Override - public void executeAction(GameManager gameManager, Player player, ItemPojo item, UseCommand.UseItemOn useItemOn) { + public void executeAction(GameManager gameManager, Player player, Item item, UseCommand.UseItemOn useItemOn) { if (!useItemOn.getTarget().isPresent()) { gameManager.getChannelUtils().write(player.getPlayerId(), "You must use the Stick Of Justice on someone who deserves it."); @@ -60,7 +60,7 @@ public class StickOfJusticeUseAction implements ItemUseAction { } @Override - public void postExecuteAction(GameManager gameManager, Player player, ItemPojo item) { + public void postExecuteAction(GameManager gameManager, Player player, Item item) { } @Override diff --git a/src/main/java/com/syncleus/aethermud/merchant/MerchantCommandHandler.java b/src/main/java/com/syncleus/aethermud/merchant/MerchantCommandHandler.java index 3220a074087cde073abad15a5e5e75602efaf0e0..9fb9802bafaed48287b51a126b98dcfb473a64de 100644 --- a/src/main/java/com/syncleus/aethermud/merchant/MerchantCommandHandler.java +++ b/src/main/java/com/syncleus/aethermud/merchant/MerchantCommandHandler.java @@ -17,7 +17,7 @@ package com.syncleus.aethermud.merchant; import com.syncleus.aethermud.command.commands.CommandAuditLog; import com.syncleus.aethermud.core.GameManager; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.player.Player; import com.syncleus.aethermud.server.model.AetherMudSession; import com.syncleus.aethermud.server.communication.Color; @@ -70,7 +70,7 @@ public class MerchantCommandHandler extends SimpleChannelUpstreamHandler { Integer desiredItem = Integer.parseInt(split[1]); if (inventoryMenu.containsKey(desiredItem)) { InventoryItemForSale inventoryItemForSale = inventoryMenu.get(desiredItem); - ItemPojo item = inventoryItemForSale.getItem(); + Item item = inventoryItemForSale.getItem(); playerByUsername.incrementGold(inventoryItemForSale.getCost()); gameManager.getChannelUtils().write(playerByUsername.getPlayerId(), "You have received: " + inventoryItemForSale.getCost() + Color.YELLOW + " gold" + Color.RESET + " for " + item.getItemName() + "\r\n"); playerByUsername.removeInventoryId(item.getItemId()); @@ -103,9 +103,9 @@ public class MerchantCommandHandler extends SimpleChannelUpstreamHandler { public Map<Integer, InventoryItemForSale> getInventoryMenu(Player player) { Map<Integer, InventoryItemForSale> inventoryItemsForSale = Maps.newHashMap(); - List<ItemPojo> inventory = player.getInventory(); + List<Item> inventory = player.getInventory(); int inv = 1; - for (ItemPojo itemEntity : inventory) { + for (Item itemEntity : inventory) { int valueInGold = itemEntity.getValueInGold(); if (valueInGold == 0) { valueInGold = itemEntity.getValueInGold(); @@ -150,10 +150,10 @@ public class MerchantCommandHandler extends SimpleChannelUpstreamHandler { } class InventoryItemForSale { - private final ItemPojo item; + private final Item item; private final Integer cost; - public InventoryItemForSale(Integer cost, ItemPojo item) { + public InventoryItemForSale(Integer cost, Item item) { this.cost = cost; this.item = item; } @@ -162,7 +162,7 @@ public class MerchantCommandHandler extends SimpleChannelUpstreamHandler { return cost; } - public ItemPojo getItem() { + public Item getItem() { return item; } } diff --git a/src/main/java/com/syncleus/aethermud/merchant/MerchantManager.java b/src/main/java/com/syncleus/aethermud/merchant/MerchantManager.java index 902dbae52c5045fb1a80416f9260c2da56b35482..18d46243e4a91503e33f7e61ffa4d32d8d1b23aa 100644 --- a/src/main/java/com/syncleus/aethermud/merchant/MerchantManager.java +++ b/src/main/java/com/syncleus/aethermud/merchant/MerchantManager.java @@ -19,12 +19,11 @@ package com.syncleus.aethermud.merchant; import com.codahale.metrics.Timer; import com.syncleus.aethermud.Main; import com.syncleus.aethermud.core.GameManager; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.items.ItemBuilder; import com.syncleus.aethermud.items.ItemMetadata; import com.syncleus.aethermud.player.Player; import com.syncleus.aethermud.player.PlayerUtil; -import com.syncleus.aethermud.storage.graphdb.model.PlayerData; import java.util.Optional; @@ -62,7 +61,7 @@ public class MerchantManager { PlayerUtil.consume(gameManager, player.getPlayerId(), playerData -> { long availableGold = playerData.getGold(); if (availableGold >= price) { - ItemPojo item = new ItemBuilder().from(itemMetadata).create(); + Item item = new ItemBuilder().from(itemMetadata).create(); gameManager.getEntityManager().saveItem(item); gameManager.acquireItem(player, item.getItemId()); player.incrementGold(-price); diff --git a/src/main/java/com/syncleus/aethermud/merchant/lockers/GetCommand.java b/src/main/java/com/syncleus/aethermud/merchant/lockers/GetCommand.java index ac53808471d3b03a54155a33eccd16e2d9aec348..cfd3723e91c397c7b3bf9e26bf9f5b73f845fcab 100644 --- a/src/main/java/com/syncleus/aethermud/merchant/lockers/GetCommand.java +++ b/src/main/java/com/syncleus/aethermud/merchant/lockers/GetCommand.java @@ -15,7 +15,7 @@ */ package com.syncleus.aethermud.merchant.lockers; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.core.GameManager; import com.syncleus.aethermud.storage.graphdb.GraphStorageFactory; import com.syncleus.aethermud.storage.graphdb.model.PlayerData; @@ -50,11 +50,11 @@ public class GetCommand extends LockerCommand { } PlayerData playerData = playerMetadataOptional.get(); for (String entityId : playerData.getLockerInventory()) { - Optional<ItemPojo> itemEntityOptional = gameManager.getEntityManager().getItemEntity(entityId); + Optional<Item> itemEntityOptional = gameManager.getEntityManager().getItemEntity(entityId); if (!itemEntityOptional.isPresent()) { continue; } - ItemPojo itemEntity = itemEntityOptional.get(); + Item itemEntity = itemEntityOptional.get(); if (itemEntity.getItemTriggers().contains(desiredRetrieveOption)) { player.transferItemFromLocker(entityId); write(itemEntity.getItemName() + " retrieved from locker.\r\n"); diff --git a/src/main/java/com/syncleus/aethermud/merchant/lockers/PutCommand.java b/src/main/java/com/syncleus/aethermud/merchant/lockers/PutCommand.java index 2db8730d6d21c74396f0b4b0d3ed08085a538593..fac190129f2f7e8e75b02e2c90da1c995dccbe05 100644 --- a/src/main/java/com/syncleus/aethermud/merchant/lockers/PutCommand.java +++ b/src/main/java/com/syncleus/aethermud/merchant/lockers/PutCommand.java @@ -15,7 +15,7 @@ */ package com.syncleus.aethermud.merchant.lockers; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.core.GameManager; import com.google.common.base.Joiner; import org.jboss.netty.channel.ChannelHandlerContext; @@ -39,7 +39,7 @@ public class PutCommand extends LockerCommand { configure(e); originalMessageParts.remove(0); String desiredDropOffItem = Joiner.on(" ").join(originalMessageParts); - for (ItemPojo item : player.getInventory()) { + for (Item item : player.getInventory()) { if (item.getItemTriggers().contains(desiredDropOffItem)) { item.setWithPlayer(false); player.transferItemToLocker(item.getItemId()); diff --git a/src/main/java/com/syncleus/aethermud/npc/NpcSpawn.java b/src/main/java/com/syncleus/aethermud/npc/NpcSpawn.java index 5a508369452eae6329011de4bb643af0d1392ddb..6bde9d2157deb99a88a5d283039cb218a9068766 100644 --- a/src/main/java/com/syncleus/aethermud/npc/NpcSpawn.java +++ b/src/main/java/com/syncleus/aethermud/npc/NpcSpawn.java @@ -22,7 +22,7 @@ import com.syncleus.aethermud.core.GameManager; import com.syncleus.aethermud.core.SentryManager; import com.syncleus.aethermud.entity.AetherMudEntity; import com.syncleus.aethermud.items.Effect; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.items.Loot; import com.syncleus.aethermud.player.CoolDown; import com.syncleus.aethermud.player.CoolDownType; @@ -278,7 +278,7 @@ public class NpcSpawn extends AetherMudEntity { isAlive.set(false); player.removeActiveAlertStatus(this); Map<String, Double> damagePercents; - ItemPojo corpse = ItemPojo.createCorpseItem(getName(), getLoot()); + Item corpse = Item.createCorpseItem(getName(), getLoot()); if (!player.isActive(CoolDownType.DEATH)) { gameManager.writeToPlayerCurrentRoom(player.getPlayerId(), getDieMessage() + "\r\n"); } diff --git a/src/main/java/com/syncleus/aethermud/player/Player.java b/src/main/java/com/syncleus/aethermud/player/Player.java index 6bdbb9a57f1562d0dfba2567ad3aca6a8f1026e9..941021654578002800da9069d5455d4113c19be6 100644 --- a/src/main/java/com/syncleus/aethermud/player/Player.java +++ b/src/main/java/com/syncleus/aethermud/player/Player.java @@ -696,16 +696,16 @@ public class Player extends AetherMudEntity { } } - public Optional<ItemPojo> getInventoryItem(String itemKeyword) { + public Optional<Item> getInventoryItem(String itemKeyword) { synchronized (interner.intern(playerId)) { final List<String> inventory = new ArrayList<>(); this.consumeRead(playerData -> inventory.addAll(playerData.getInventory())); for (String itemId : inventory) { - Optional<ItemPojo> itemOptional = gameManager.getEntityManager().getItemEntity(itemId); + Optional<Item> itemOptional = gameManager.getEntityManager().getItemEntity(itemId); if (!itemOptional.isPresent()) { continue; } - ItemPojo itemEntity = itemOptional.get(); + Item itemEntity = itemOptional.get(); if (itemEntity.getItemTriggers().contains(itemKeyword)) { return Optional.of(itemEntity); } @@ -721,10 +721,10 @@ public class Player extends AetherMudEntity { public List<String> getRolledUpLockerInventory() { synchronized (interner.intern(playerId)) { List<String> rolledUp = Lists.newArrayList(); - List<ItemPojo> inventory = getLockerInventory(); + List<Item> inventory = getLockerInventory(); Map<String, Integer> itemAndCounts = Maps.newHashMap(); if (inventory != null) { - for (ItemPojo item : inventory) { + for (Item item : inventory) { StringBuilder invItem = new StringBuilder(); invItem.append(item.getItemName()); int maxUses = item.getMaxUses(); @@ -759,14 +759,14 @@ public class Player extends AetherMudEntity { } } - public List<ItemPojo> getLockerInventory() { + public List<Item> getLockerInventory() { synchronized (interner.intern(playerId)) { return this.transactRead(playerData -> { - List<ItemPojo> inventoryItems = Lists.newArrayList(); + List<Item> inventoryItems = Lists.newArrayList(); List<String> inventory = playerData.getLockerInventory(); if (inventory != null) { for (String itemId : inventory) { - Optional<ItemPojo> itemOptional = gameManager.getEntityManager().getItemEntity(itemId); + Optional<Item> itemOptional = gameManager.getEntityManager().getItemEntity(itemId); if (!itemOptional.isPresent()) { log.info("Orphaned inventoryId:" + itemId + " player: " + getPlayerName()); continue; @@ -774,7 +774,7 @@ public class Player extends AetherMudEntity { inventoryItems.add(itemOptional.get()); } } - inventoryItems.sort(Comparator.comparing(ItemPojo::getItemName)); + inventoryItems.sort(Comparator.comparing(Item::getItemName)); return inventoryItems; }); } @@ -783,10 +783,10 @@ public class Player extends AetherMudEntity { public List<String> getRolledUpIntentory() { synchronized (interner.intern(playerId)) { List<String> rolledUp = Lists.newArrayList(); - List<ItemPojo> inventory = getInventory(); + List<Item> inventory = getInventory(); Map<String, Integer> itemAndCounts = Maps.newHashMap(); if (inventory != null) { - for (ItemPojo item : inventory) { + for (Item item : inventory) { StringBuilder invItem = new StringBuilder(); invItem.append(item.getItemName()); int maxUses = item.getMaxUses(); @@ -821,14 +821,14 @@ public class Player extends AetherMudEntity { } } - public List<ItemPojo> getInventory() { + public List<Item> getInventory() { synchronized (interner.intern(playerId)) { return this.transactRead(playerData -> { - List<ItemPojo> inventoryItems = Lists.newArrayList(); + List<Item> inventoryItems = Lists.newArrayList(); List<String> inventory = playerData.getInventory(); if (inventory != null) { for (String itemId : inventory) { - Optional<ItemPojo> itemOptional = gameManager.getEntityManager().getItemEntity(itemId); + Optional<Item> itemOptional = gameManager.getEntityManager().getItemEntity(itemId); if (!itemOptional.isPresent()) { log.info("Orphaned inventoryId:" + itemId + " player: " + getPlayerName()); continue; @@ -836,20 +836,20 @@ public class Player extends AetherMudEntity { inventoryItems.add(itemOptional.get()); } } - inventoryItems.sort(Comparator.comparing(ItemPojo::getItemName)); + inventoryItems.sort(Comparator.comparing(Item::getItemName)); return inventoryItems; }); } } - public Set<ItemPojo> getEquipment() { + public Set<Item> getEquipment() { synchronized (interner.intern(playerId)) { return this.transactRead(playerData -> { - Set<ItemPojo> equipmentItems = Sets.newHashSet(); + Set<Item> equipmentItems = Sets.newHashSet(); List<String> equipment = playerData.getPlayerEquipment(); if (equipment != null) { for (String itemId : equipment) { - Optional<ItemPojo> itemOptional = gameManager.getEntityManager().getItemEntity(itemId); + Optional<Item> itemOptional = gameManager.getEntityManager().getItemEntity(itemId); if (!itemOptional.isPresent()) { log.info("Orphaned equipmentId:" + itemId + " player: " + getPlayerName()); continue; @@ -862,14 +862,14 @@ public class Player extends AetherMudEntity { } } - public void equip(ItemPojo item) { + public void equip(Item item) { synchronized (interner.intern(playerId)) { if (item.getEquipment() == null) { return; } Equipment equipment = item.getEquipment(); EquipmentSlotType equipmentSlotType = equipment.getEquipmentSlotType(); - Optional<ItemPojo> slotItemOptional = getSlotItem(equipmentSlotType); + Optional<Item> slotItemOptional = getSlotItem(equipmentSlotType); if (slotItemOptional.isPresent()) { if (!unEquip(slotItemOptional.get())) { return; @@ -881,17 +881,17 @@ public class Player extends AetherMudEntity { } } - public Optional<ItemPojo> getSlotItem(EquipmentSlotType slot) { + public Optional<Item> getSlotItem(EquipmentSlotType slot) { return this.transactRead(playerData -> { if (playerData.getPlayerEquipment() == null) { return Optional.empty(); } for (String item : playerData.getPlayerEquipment()) { - Optional<ItemPojo> itemOptional = gameManager.getEntityManager().getItemEntity(item); + Optional<Item> itemOptional = gameManager.getEntityManager().getItemEntity(item); if (!itemOptional.isPresent()) { continue; } - ItemPojo itemEntity = itemOptional.get(); + Item itemEntity = itemOptional.get(); EquipmentSlotType equipmentSlotType = itemEntity.getEquipment().getEquipmentSlotType(); if (equipmentSlotType.equals(slot)) { return Optional.of(itemEntity); @@ -901,7 +901,7 @@ public class Player extends AetherMudEntity { }); } - public boolean unEquip(ItemPojo item) { + public boolean unEquip(Item item) { synchronized (interner.intern(playerId)) { gameManager.getChannelUtils().write(playerId, "Un-equipping " + item.getItemName() + "\r\n"); if (gameManager.acquireItem(this, item.getItemId())) { @@ -964,11 +964,11 @@ public class Player extends AetherMudEntity { return playerStats; } for (String equipId : playerEquipment) { - Optional<ItemPojo> itemOptional = gameManager.getEntityManager().getItemEntity(equipId); + Optional<Item> itemOptional = gameManager.getEntityManager().getItemEntity(equipId); if (!itemOptional.isPresent()) { continue; } - ItemPojo itemEntity = itemOptional.get(); + Item itemEntity = itemOptional.get(); Equipment equipment = itemEntity.getEquipment(); Stats stats = equipment.getStats(); StatsHelper.combineStats(newStats, stats); @@ -1009,7 +1009,7 @@ public class Player extends AetherMudEntity { List<EquipmentSlotType> all = EquipmentSlotType.getAll(); for (EquipmentSlotType slot : all) { t.addCell(capitalize(slot.getName())); - Optional<ItemPojo> slotItemOptional = getSlotItem(slot); + Optional<Item> slotItemOptional = getSlotItem(slot); if (slotItemOptional.isPresent()) { t.addCell(slotItemOptional.get().getItemName()); } else { diff --git a/src/main/java/com/syncleus/aethermud/player/PlayerManagement.java b/src/main/java/com/syncleus/aethermud/player/PlayerManagement.java index f402fd13da3c0bc91f4c3e6755b9946e3654d2bb..0d58d3e323117c7ea1de4eebd4c02c03edd7cfd4 100644 --- a/src/main/java/com/syncleus/aethermud/player/PlayerManagement.java +++ b/src/main/java/com/syncleus/aethermud/player/PlayerManagement.java @@ -18,7 +18,7 @@ package com.syncleus.aethermud.player; import com.google.common.base.Function; import com.google.common.collect.Sets; import com.syncleus.aethermud.core.GameManager; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.items.ItemBuilder; import com.syncleus.aethermud.items.ItemMetadata; import com.syncleus.aethermud.server.communication.Color; @@ -175,11 +175,11 @@ public class PlayerManagement implements PlayerManagementMBean { Map<String, String> inventoryContents = Maps.newHashMap(); List<String> inventory = playerData.getInventory(); for (String itemId : inventory) { - Optional<ItemPojo> itemEntityOptional = gameManager.getEntityManager().getItemEntity(itemId); + Optional<Item> itemEntityOptional = gameManager.getEntityManager().getItemEntity(itemId); if (!itemEntityOptional.isPresent()) { continue; } - ItemPojo itemEntity = itemEntityOptional.get(); + Item itemEntity = itemEntityOptional.get(); String itemName = itemEntity.getItemName(); final String msgWithoutColorCodes = itemName.replaceAll("\u001B\\[[;\\d]*m", ""); @@ -195,11 +195,11 @@ public class PlayerManagement implements PlayerManagementMBean { Map<String, String> inventoryContents = Maps.newHashMap(); List<String> inventory = playerData.getLockerInventory(); for (String itemId : inventory) { - Optional<ItemPojo> itemEntityOptional = gameManager.getEntityManager().getItemEntity(itemId); + Optional<Item> itemEntityOptional = gameManager.getEntityManager().getItemEntity(itemId); if (!itemEntityOptional.isPresent()) { continue; } - ItemPojo itemEntity = itemEntityOptional.get(); + Item itemEntity = itemEntityOptional.get(); String itemName = itemEntity.getItemName(); final String msgWithoutColorCodes = itemName.replaceAll("\u001B\\[[;\\d]*m", ""); @@ -215,7 +215,7 @@ public class PlayerManagement implements PlayerManagementMBean { if (!itemMetadata.isPresent()) { return "No such item exists with internal name: " + internalItemName; } - ItemPojo item = new ItemBuilder().from(itemMetadata.get()).create(); + Item item = new ItemBuilder().from(itemMetadata.get()).create(); gameManager.getEntityManager().saveItem(item); synchronized (findInterner().intern(playerId)) { this.consume(playerData -> playerData.addInventoryEntityId(item.getItemId())); diff --git a/src/main/java/com/syncleus/aethermud/spawner/ItemSpawner.java b/src/main/java/com/syncleus/aethermud/spawner/ItemSpawner.java index 523aa6700bfd2c6f774d1e9b97c35ea10d6d6f8e..bfd8a0eab416d710a090ccc284c006a841c825a0 100644 --- a/src/main/java/com/syncleus/aethermud/spawner/ItemSpawner.java +++ b/src/main/java/com/syncleus/aethermud/spawner/ItemSpawner.java @@ -20,7 +20,7 @@ import com.syncleus.aethermud.Main; import com.syncleus.aethermud.core.GameManager; import com.syncleus.aethermud.core.SentryManager; import com.syncleus.aethermud.entity.AetherMudEntity; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.items.ItemBuilder; import com.syncleus.aethermud.items.ItemMetadata; import com.syncleus.aethermud.storage.graphdb.model.ItemData; @@ -88,7 +88,7 @@ public class ItemSpawner extends AetherMudEntity { private void createAndAddItem() { ArrayList<Room> rooms = Lists.newArrayList(Iterators.filter(gameManager.getRoomManager().getRoomsByArea(spawnArea).iterator(), getRoomsWithRoom())); Room room = rooms.get(random.nextInt(rooms.size())); - ItemPojo item = new ItemBuilder().from(itemMetadata).create(); + Item item = new ItemBuilder().from(itemMetadata).create(); ItemData itemData = gameManager.getEntityManager().saveItem(item); gameManager.placeItemInRoom(room.getRoomId(), item.getItemId()); Main.metrics.counter(MetricRegistry.name(ItemSpawner.class, item.getItemName() + "-spawn")).inc(); @@ -100,11 +100,11 @@ public class ItemSpawner extends AetherMudEntity { for (Room room : roomsByArea) { if (room.getAreas().contains(spawnArea)) { for (String i : room.getItemIds()) { - Optional<ItemPojo> currentItemOptional = gameManager.getEntityManager().getItemEntity(i); + Optional<Item> currentItemOptional = gameManager.getEntityManager().getItemEntity(i); if (!currentItemOptional.isPresent()) { continue; } - ItemPojo currentItem = currentItemOptional.get(); + Item currentItem = currentItemOptional.get(); if (currentItem.getInternalItemName().equals(itemMetadata.getInternalItemName())) { numberCurrentlyInArea++; } @@ -121,11 +121,11 @@ public class ItemSpawner extends AetherMudEntity { int count = 0; Set<String> itemIds = room.getItemIds(); for (String itemId : itemIds) { - Optional<ItemPojo> itemOptional = gameManager.getEntityManager().getItemEntity(itemId); + Optional<Item> itemOptional = gameManager.getEntityManager().getItemEntity(itemId); if (!itemOptional.isPresent()) { continue; } - ItemPojo item = itemOptional.get(); + Item item = itemOptional.get(); if (item.getInternalItemName().equals(itemMetadata.getInternalItemName())) { count++; } diff --git a/src/main/java/com/syncleus/aethermud/stats/DefaultStats.java b/src/main/java/com/syncleus/aethermud/stats/DefaultStats.java index 96ef1d73b7518760d4e3232cb0258d2df6212ee2..5774a344574e603bc6fa46483fcd64e775b2a888 100644 --- a/src/main/java/com/syncleus/aethermud/stats/DefaultStats.java +++ b/src/main/java/com/syncleus/aethermud/stats/DefaultStats.java @@ -25,7 +25,7 @@ public class DefaultStats { .setAim(9) .setAgile(9) .setArmorRating(4) - .setMeleSkill(9) + .setMeleeSkill(9) .setCurrentHealth(100) .setMaxHealth(100) .setWeaponRatingMin(4) diff --git a/src/main/java/com/syncleus/aethermud/stats/Stats.java b/src/main/java/com/syncleus/aethermud/stats/Stats.java index 1761ab00dfb2ce502ac37ede8fcbfc24dd96d140..c959aadd007a294a4b8ba6b16c3f7def5109aef0 100644 --- a/src/main/java/com/syncleus/aethermud/stats/Stats.java +++ b/src/main/java/com/syncleus/aethermud/stats/Stats.java @@ -80,24 +80,24 @@ public class Stats { Integer foraging, Integer inventorySize, Integer maxEffects) { - this.strength = strength; - this.intelligence = intelligence; - this.willpower = willpower; - this.aim = aim; - this.agile = agile; - this.armorRating = armorRating; - this.meleeSkill = meleeSkill; - this.currentHealth = currentHealth; - this.maxHealth = maxHealth; - this.weaponRatingMax = weaponRatingMax; - this.weaponRatingMin = weaponRatingMin; - this.numberOfWeaponRolls = numberOfWeaponRolls; - this.experience = experience; - this.currentMana = currentMana; - this.maxMana = maxMana; - this.foraging = foraging; - this.inventorySize = inventorySize; - this.maxEffects = maxEffects; + this.strength = (strength == null ? 0 : strength); + this.intelligence = (intelligence == null ? 0 : intelligence); + this.willpower = (willpower == null ? 0 : willpower); + this.aim = (aim == null ? 0 : aim); + this.agile = (agile == null ? 0 : agile); + this.armorRating = (armorRating == null ? 0 : armorRating); + this.meleeSkill = (meleeSkill == null ? 0 : meleeSkill); + this.currentHealth = (currentHealth == null ? 0 : currentHealth); + this.maxHealth = (maxHealth == null ? 0 : maxHealth); + this.weaponRatingMax = (weaponRatingMax == null ? 0 : weaponRatingMax); + this.weaponRatingMin = (weaponRatingMin == null ? 0 : weaponRatingMin); + this.numberOfWeaponRolls = (numberOfWeaponRolls == null ? 0 : numberOfWeaponRolls); + this.experience = (experience == null ? 0 : experience); + this.currentMana = (currentMana == null ? 0 : currentMana); + this.maxMana = (maxMana == null ? 0 : maxMana); + this.foraging = (foraging == null ? 0 : foraging); + this.inventorySize = (inventorySize == null ? 0 : inventorySize); + this.maxEffects = (maxEffects == null ? 0 : maxEffects); } @@ -106,7 +106,7 @@ public class Stats { } public void setIntelligence(Integer intelligence) { - this.intelligence = intelligence; + this.intelligence = (intelligence == null ? 0 : intelligence); } public Integer getMaxEffects() { @@ -114,7 +114,7 @@ public class Stats { } public void setMaxEffects(Integer maxEffects) { - this.maxEffects = maxEffects; + this.maxEffects = (maxEffects == null ? 0 : maxEffects); } public Integer getExperience() { @@ -122,7 +122,7 @@ public class Stats { } public void setExperience(Integer experience) { - this.experience = experience; + this.experience = (experience == null ? 0 : experience); } public Integer getStrength() { @@ -130,7 +130,7 @@ public class Stats { } public void setStrength(Integer strength) { - this.strength = strength; + this.strength = (strength == null ? 0 : strength); } public Integer getWillpower() { @@ -138,7 +138,7 @@ public class Stats { } public void setWillpower(Integer willpower) { - this.willpower = willpower; + this.willpower = (willpower == null ? 0 : willpower); } public Integer getAim() { @@ -146,7 +146,7 @@ public class Stats { } public void setAim(Integer aim) { - this.aim = aim; + this.aim = (aim == null ? 0 : aim); } public Integer getAgile() { @@ -154,7 +154,7 @@ public class Stats { } public void setAgile(Integer agile) { - this.agile = agile; + this.agile = (agile == null ? 0 : agile); } public Integer getArmorRating() { @@ -162,15 +162,15 @@ public class Stats { } public void setArmorRating(Integer armorRating) { - this.armorRating = armorRating; + this.armorRating = (armorRating == null ? 0 : armorRating); } public Integer getMeleeSkill() { return meleeSkill; } - public void setMeleeSkill(Integer meleSkill) { - this.meleeSkill = meleSkill; + public void setMeleeSkill(Integer meleeSkill) { + this.meleeSkill = (meleeSkill == null ? 0 : meleeSkill); } public Integer getCurrentHealth() { @@ -178,7 +178,7 @@ public class Stats { } public void setCurrentHealth(Integer currentHealth) { - this.currentHealth = currentHealth; + this.currentHealth = (currentHealth == null ? 0 : currentHealth); } public Integer getMaxHealth() { @@ -186,7 +186,7 @@ public class Stats { } public void setMaxHealth(Integer maxHealth) { - this.maxHealth = maxHealth; + this.maxHealth = (maxHealth == null ? 0 : maxHealth); } public Integer getWeaponRatingMax() { @@ -194,7 +194,7 @@ public class Stats { } public void setWeaponRatingMax(Integer weaponRatingMax) { - this.weaponRatingMax = weaponRatingMax; + this.weaponRatingMax = (weaponRatingMax == null ? 0 : weaponRatingMax); } public Integer getWeaponRatingMin() { @@ -202,7 +202,7 @@ public class Stats { } public void setWeaponRatingMin(Integer weaponRatingMin) { - this.weaponRatingMin = weaponRatingMin; + this.weaponRatingMin = (weaponRatingMin == null ? 0 : weaponRatingMin); } public Integer getNumberOfWeaponRolls() { @@ -210,7 +210,7 @@ public class Stats { } public void setNumberOfWeaponRolls(Integer numberOfWeaponRolls) { - this.numberOfWeaponRolls = numberOfWeaponRolls; + this.numberOfWeaponRolls = (numberOfWeaponRolls == null ? 0 : numberOfWeaponRolls); } public Integer getCurrentMana() { @@ -222,11 +222,11 @@ public class Stats { } public void setCurrentMana(Integer currentMana) { - this.currentMana = currentMana; + this.currentMana = (currentMana == null ? 0 : currentMana); } public void setMaxMana(Integer maxMana) { - this.maxMana = maxMana; + this.maxMana = (maxMana == null ? 0 : maxMana); } public Integer getForaging() { @@ -234,7 +234,7 @@ public class Stats { } public void setForaging(Integer foraging) { - this.foraging = foraging; + this.foraging = (foraging == null ? 0 : foraging); } public Integer getInventorySize() { @@ -242,7 +242,7 @@ public class Stats { } public void setInventorySize(Integer inventorySize) { - this.inventorySize = inventorySize; + this.inventorySize = (inventorySize == null ? 0 : inventorySize); } public Integer getLevel() { diff --git a/src/main/java/com/syncleus/aethermud/stats/StatsBuilder.java b/src/main/java/com/syncleus/aethermud/stats/StatsBuilder.java index 9c3818a0c78b1560df1b943fbbff9b2b8c843c46..fc459313cdbab73bcb48d11933e065841133f883 100644 --- a/src/main/java/com/syncleus/aethermud/stats/StatsBuilder.java +++ b/src/main/java/com/syncleus/aethermud/stats/StatsBuilder.java @@ -22,7 +22,7 @@ public class StatsBuilder { private int aim; private int agile; private int armorRating; - private int meleSkill; + private int meleeSkill; private int currentHealth; private int maxHealth; private int weaponRatingMax; @@ -45,7 +45,7 @@ public class StatsBuilder { this.aim = stats.getAim(); this.agile = stats.getAgile(); this.armorRating = stats.getArmorRating(); - this.meleSkill = stats.getMeleeSkill(); + this.meleeSkill = stats.getMeleeSkill(); this.currentHealth = stats.getCurrentHealth(); this.maxHealth = stats.getMaxHealth(); this.weaponRatingMax = stats.getWeaponRatingMax(); @@ -89,8 +89,8 @@ public class StatsBuilder { return this; } - public StatsBuilder setMeleSkill(int meleSkill) { - this.meleSkill = meleSkill; + public StatsBuilder setMeleeSkill(int meleeSkill) { + this.meleeSkill = meleeSkill; return this; } @@ -150,6 +150,6 @@ public class StatsBuilder { } public Stats createStats() { - return new Stats(strength, intelligence, willpower, aim, agile, armorRating, meleSkill, currentHealth, maxHealth, weaponRatingMax, weaponRatingMin, numberOfWeaponRolls, experience, currentMana, maxMana, foraging, inventorySize, maxEffects); + return new Stats(strength, intelligence, willpower, aim, agile, armorRating, meleeSkill, currentHealth, maxHealth, weaponRatingMax, weaponRatingMin, numberOfWeaponRolls, experience, currentMana, maxMana, foraging, inventorySize, maxEffects); } } diff --git a/src/main/java/com/syncleus/aethermud/stats/StatsHelper.java b/src/main/java/com/syncleus/aethermud/stats/StatsHelper.java index 106ccbbe92e2012eb2fe496fc62c25a109bcec35..28fd55e25ea7194c58c3f3db5f50a10d5006539d 100644 --- a/src/main/java/com/syncleus/aethermud/stats/StatsHelper.java +++ b/src/main/java/com/syncleus/aethermud/stats/StatsHelper.java @@ -26,7 +26,7 @@ public class StatsHelper { statsBuilder.setCurrentHealth(modifiedStats.getCurrentHealth() - origStats.getCurrentHealth()); statsBuilder.setMaxHealth(modifiedStats.getMaxHealth() - origStats.getMaxHealth()); statsBuilder.setExperience(modifiedStats.getExperience() - origStats.getExperience()); - statsBuilder.setMeleSkill(modifiedStats.getMeleeSkill() - origStats.getMeleeSkill()); + statsBuilder.setMeleeSkill(modifiedStats.getMeleeSkill() - origStats.getMeleeSkill()); statsBuilder.setNumberOfWeaponRolls(modifiedStats.getNumberOfWeaponRolls() - origStats.getNumberOfWeaponRolls()); statsBuilder.setStrength(modifiedStats.getStrength() - origStats.getStrength()); statsBuilder.setWeaponRatingMax(modifiedStats.getWeaponRatingMax() - origStats.getWeaponRatingMax()); diff --git a/src/main/java/com/syncleus/aethermud/stats/modifier/BasicPlayerLevelStatsModifier.java b/src/main/java/com/syncleus/aethermud/stats/modifier/BasicPlayerLevelStatsModifier.java index fad669dd4dd723617d95ca7d8bbdf323c0ffba52..36100a43d72e25f5830e00d715ce7a34140018c5 100644 --- a/src/main/java/com/syncleus/aethermud/stats/modifier/BasicPlayerLevelStatsModifier.java +++ b/src/main/java/com/syncleus/aethermud/stats/modifier/BasicPlayerLevelStatsModifier.java @@ -107,7 +107,7 @@ public class BasicPlayerLevelStatsModifier implements StatsModifier { statsBuilder.setAim(newAimRating); statsBuilder.setWillpower(newWillpowerRating); statsBuilder.setAgile(newAgileRating); - statsBuilder.setMeleSkill(newMeleRating); + statsBuilder.setMeleeSkill(newMeleRating); statsBuilder.setCurrentHealth(baseStats.getCurrentHealth()); statsBuilder.setCurrentMana(baseStats.getCurrentMana()); return statsBuilder.createStats(); diff --git a/src/main/java/com/syncleus/aethermud/stats/modifier/RangerStatsModifier.java b/src/main/java/com/syncleus/aethermud/stats/modifier/RangerStatsModifier.java index c6940897fa13c09f82b7ceb17b4d10068fe1fb4c..1309eec05ba951ab240485996a08eb5b0dadd370 100644 --- a/src/main/java/com/syncleus/aethermud/stats/modifier/RangerStatsModifier.java +++ b/src/main/java/com/syncleus/aethermud/stats/modifier/RangerStatsModifier.java @@ -107,7 +107,7 @@ public class RangerStatsModifier implements StatsModifier { statsBuilder.setAim(newAimRating); statsBuilder.setWillpower(newWillpowerRating); statsBuilder.setAgile(newAgileRating); - statsBuilder.setMeleSkill(newMeleRating); + statsBuilder.setMeleeSkill(newMeleRating); statsBuilder.setCurrentHealth(baseStats.getCurrentHealth()); statsBuilder.setCurrentMana(baseStats.getCurrentMana()); return statsBuilder.createStats(); diff --git a/src/main/java/com/syncleus/aethermud/stats/modifier/ShamanStatsModifier.java b/src/main/java/com/syncleus/aethermud/stats/modifier/ShamanStatsModifier.java index 8b7014341a96d2a4565dd932b48f22d6d1afed39..135414aba8f995d6200793603da9f26c69958527 100644 --- a/src/main/java/com/syncleus/aethermud/stats/modifier/ShamanStatsModifier.java +++ b/src/main/java/com/syncleus/aethermud/stats/modifier/ShamanStatsModifier.java @@ -107,7 +107,7 @@ public class ShamanStatsModifier implements StatsModifier { statsBuilder.setAim(newAimRating); statsBuilder.setWillpower(newWillpowerRating); statsBuilder.setAgile(newAgileRating); - statsBuilder.setMeleSkill(newMeleRating); + statsBuilder.setMeleeSkill(newMeleRating); statsBuilder.setCurrentHealth(baseStats.getCurrentHealth()); statsBuilder.setCurrentMana(baseStats.getCurrentMana()); return statsBuilder.createStats(); diff --git a/src/main/java/com/syncleus/aethermud/stats/modifier/WarriorStatsModifier.java b/src/main/java/com/syncleus/aethermud/stats/modifier/WarriorStatsModifier.java index f84ef7a928746fb44f704677e9e53cf65296d109..ae4fb97237ea45b9b0cf302400ee6338df25a204 100644 --- a/src/main/java/com/syncleus/aethermud/stats/modifier/WarriorStatsModifier.java +++ b/src/main/java/com/syncleus/aethermud/stats/modifier/WarriorStatsModifier.java @@ -107,7 +107,7 @@ public class WarriorStatsModifier implements StatsModifier { statsBuilder.setAim(newAimRating); statsBuilder.setWillpower(newWillpowerRating); statsBuilder.setAgile(newAgileRating); - statsBuilder.setMeleSkill(newMeleRating); + statsBuilder.setMeleeSkill(newMeleRating); statsBuilder.setCurrentHealth(baseStats.getCurrentHealth()); statsBuilder.setCurrentMana(baseStats.getCurrentMana()); return statsBuilder.createStats(); diff --git a/src/main/java/com/syncleus/aethermud/stats/modifier/WizardStatsModifier.java b/src/main/java/com/syncleus/aethermud/stats/modifier/WizardStatsModifier.java index 038d5d66140eaca4d1ce26b786236bf044d3ebbf..2acf2eb6679777221a191309b413f9b81f1c7cb1 100644 --- a/src/main/java/com/syncleus/aethermud/stats/modifier/WizardStatsModifier.java +++ b/src/main/java/com/syncleus/aethermud/stats/modifier/WizardStatsModifier.java @@ -108,7 +108,7 @@ public class WizardStatsModifier implements StatsModifier { statsBuilder.setAim(newAimRating); statsBuilder.setWillpower(newWillpowerRating); statsBuilder.setAgile(newAgileRating); - statsBuilder.setMeleSkill(newMeleRating); + statsBuilder.setMeleeSkill(newMeleRating); statsBuilder.setCurrentHealth(baseStats.getCurrentHealth()); statsBuilder.setCurrentMana(baseStats.getCurrentMana()); return statsBuilder.createStats(); diff --git a/src/main/java/com/syncleus/aethermud/storage/AetherMudStorage.java b/src/main/java/com/syncleus/aethermud/storage/AetherMudStorage.java index 6309bec259e987f945d772bcc80bc35336130c02..316d7fa0f0c90fb59abd06cfdbd39a1b46acb15c 100644 --- a/src/main/java/com/syncleus/aethermud/storage/AetherMudStorage.java +++ b/src/main/java/com/syncleus/aethermud/storage/AetherMudStorage.java @@ -16,9 +16,8 @@ package com.syncleus.aethermud.storage; -import com.google.common.util.concurrent.Service; import com.syncleus.aethermud.core.GameManager; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.npc.NpcSpawn; import com.syncleus.aethermud.storage.graphdb.model.ItemData; import com.syncleus.aethermud.storage.graphdb.model.NpcData; @@ -36,7 +35,7 @@ public interface AetherMudStorage { Map<String, PlayerData> getAllPlayerMetadata(); - ItemData saveItem(ItemPojo item); + ItemData saveItem(Item item); Optional<ItemData> getItemEntity(String itemId); diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbAetherMudStorage.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbAetherMudStorage.java index b9ff5871334b05606a79d4bbe364efd614056cdc..52a388661a62e28ccde8b52354eb8354861949f9 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbAetherMudStorage.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbAetherMudStorage.java @@ -15,9 +15,8 @@ */ package com.syncleus.aethermud.storage.graphdb; -import com.google.common.base.Function; import com.syncleus.aethermud.core.GameManager; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.npc.NpcBuilder; import com.syncleus.aethermud.npc.NpcSpawn; import com.syncleus.aethermud.storage.AetherMudStorage; @@ -31,7 +30,6 @@ import org.apache.tinkerpop.gremlin.structure.Graph; import java.lang.reflect.InvocationTargetException; import java.util.*; -import java.util.function.Consumer; import java.util.stream.Collectors; public class GraphDbAetherMudStorage implements AetherMudStorage { @@ -76,7 +74,7 @@ public class GraphDbAetherMudStorage implements AetherMudStorage { } @Override - public ItemData saveItem(ItemPojo item) { + public ItemData saveItem(Item item) { ItemData itemData = framedGraph.addFramedVertex(ItemData.class); try { PropertyUtils.copyProperties(itemData, item); diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/AetherMudMessageData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/AetherMudMessageData.java index 7dbff4fa353419583fdad102748a912b534842cc..8ba9bfaad48cab304d3408606a964abd604f1b5c 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/AetherMudMessageData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/AetherMudMessageData.java @@ -41,7 +41,7 @@ public abstract class AetherMudMessageData extends AbstractVertexFrame { try { PropertyUtils.copyProperties(dest, src); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - throw new IllegalStateException("Could not copy properties"); + throw new IllegalStateException("Could not copy properties", e); } } diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/EffectData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/EffectData.java index c7c281ebd88a79a5d4bc741eae62c71db028c4b4..2fc2dd555fec634df103ef392bd57b5a07be5138 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/EffectData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/EffectData.java @@ -183,7 +183,7 @@ public abstract class EffectData extends AbstractInterceptingVertexFrame { dest.setApplyStatsOnTick(src.getApplyStatsOnTick()); dest.setDurationStats(src.getDurationStats()); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - throw new IllegalStateException("Could not copy properties"); + throw new IllegalStateException("Could not copy properties", e); } } @@ -198,7 +198,7 @@ public abstract class EffectData extends AbstractInterceptingVertexFrame { PropertyUtils.copyProperties(applyStats, src.getApplyStatsOnTick()); retVal.setApplyStatsOnTick(applyStats); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - throw new IllegalStateException("Could not copy properties"); + throw new IllegalStateException("Could not copy properties", e); } return retVal; } diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/ItemData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/ItemData.java index 09f481ffe5307baf731da2e22c1b55de5e2b003f..12999379158b2f8c05a2b154a08f98888a4a125b 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/ItemData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/ItemData.java @@ -16,10 +16,12 @@ package com.syncleus.aethermud.storage.graphdb.model; import com.google.common.collect.Sets; +import com.syncleus.aethermud.common.AetherMudMessage; import com.syncleus.aethermud.core.service.TimeTracker; import com.syncleus.aethermud.items.*; +import com.syncleus.aethermud.spawner.SpawnRule; import com.syncleus.aethermud.stats.Stats; -import com.syncleus.ferma.AbstractVertexFrame; +import com.syncleus.aethermud.storage.graphdb.DataUtils; import com.syncleus.ferma.annotations.Adjacency; import com.syncleus.ferma.annotations.GraphElement; import com.syncleus.ferma.annotations.Property; @@ -31,241 +33,158 @@ import java.lang.reflect.InvocationTargetException; import java.util.*; @GraphElement -public abstract class ItemData extends AbstractInterceptingVertexFrame implements Item { - @Override +public abstract class ItemData extends AbstractInterceptingVertexFrame { @Property("ValidTimeOfDays") public abstract List<TimeTracker.TimeOfDay> getValidTimeOfDays(); - @Override @Property("ValidTimeOfDays") public abstract void setValidTimeOfDays(List<TimeTracker.TimeOfDay> validTimeOfDays); - @Override @Property("ValidTimeOfDays") public abstract void setValidTimeOfDays(Set<TimeTracker.TimeOfDay> validTimeOfDays); - @Override @Property("Disposable") public abstract boolean isDisposable(); - @Override @Property("MaxUses") public abstract int getMaxUses(); - @Override @Property("WithPlayer") public abstract boolean isWithPlayer(); - @Override @Property("WithPlayer") public abstract void setWithPlayer(boolean isWithPlayer); - @Override @Property("NumberOfUses") public abstract int getNumberOfUses(); - @Override @Property("NumberOfUses") public abstract void setNumberOfUses(int numberOfUses); - @Override @Property("ItemId") public abstract String getItemId(); - @Override @Property("InternalItemName") public abstract String getInternalItemName(); - @Override @Property("ItemName") public abstract String getItemName(); - @Override @Property("ItemDescription") public abstract String getItemDescription(); - @Override @Property("ItemTriggers") public abstract List<String> getItemTriggers(); - @Override @Property("ItemTriggers") public abstract void setItemTriggers(List<String> itemTriggers); - @Override @Property("RestingName") public abstract String getRestingName(); - @Override @Property("ItemHalfLifeTicks") public abstract int getItemHalfLifeTicks(); - @Override @Property("Loot") public abstract Loot getLoot(); - @Override @Property("Loot") public abstract void setLoot(Loot loot); - @Override @Property("Equipment") public abstract Equipment getEquipment(); - @Override @Property("Equipment") public abstract void setEquipment(Equipment equipment); - @Override @Property("HasBeenWithPlayer") public abstract void setHasBeenWithPlayer(boolean hasBeenWithPlayer); - @Override @Property("Rarity") public abstract Rarity getRarity(); - @Override + @Property("Rarity") + public abstract void setRarity(Rarity rarity); + @Property("ValueInGold") public abstract int getValueInGold(); - @Override @Property("ItemName") public abstract void setItemName(String itemName); - @Override @Property("ItemDescription") public abstract void setItemDescription(String itemDescription); - @Override @Property("InternalItemName") public abstract void setInternalItemName(String internalItemName); - @Override @Property("RestingName") public abstract void setRestingName(String restingName); - @Override @Property("ItemId") public abstract void setItemId(String itemId); - @Override @Property("ItemHalfLifeTicks") public abstract void setItemHalfLifeTicks(int itemHalfLifeTicks); - @Override - public void setRarity(Rarity rarity) { - this.traverse((v) -> v.property("Rarity", rarity)); - } - - @Override @Property("ValueInGold") public abstract void setValueInGold(int valueInGold); - @Override @Property("MaxUses") public abstract void setMaxUses(int maxUses); - @Override @Property("Disposable") public abstract void setDisposable(boolean disposable); - @Override @Property("HasBeenWithPlayer") public abstract boolean isHasBeenWithPlayer(); @Adjacency(label = "Effect", direction = Direction.OUT) - public abstract EffectData addEffect(EffectData effects); + public abstract EffectData addEffectData(EffectData effects); @Adjacency(label = "Effect", direction = Direction.OUT) - public abstract void removeEffect(EffectData stats); + public abstract void removeEffectData(EffectData stats); @Adjacency(label = "Effect", direction = Direction.OUT) - public abstract <N extends EffectData> Iterator<? extends N> getEffects(Class<? extends N> type); - - @Override - public Set<Effect> getEffects() { - Set<Effect> retVal = new HashSet<>(); - Iterator<? extends EffectData> iterator = this.getEffects(EffectData.class); - while(iterator.hasNext()) { - EffectData effectData = iterator.next(); - retVal.add(EffectData.copyEffect(effectData)); - } - return Collections.unmodifiableSet(retVal); - } - - @Override - public void setEffects(Set<Effect> effects) { - Iterator<? extends EffectData> existingAll = this.getEffects(EffectData.class); - if( existingAll != null ) { - while( existingAll.hasNext() ) { - EffectData existing = existingAll.next(); - this.removeEffect(existing); - existing.remove(); - } - - } + public abstract <N extends EffectData> Iterator<? extends N> getEffectDatasIterator(Class<? extends N> type); - if( effects == null || effects.size() == 0 ) { - return; - } + public Set<EffectData> getEffectDatas() { + return Collections.unmodifiableSet(Sets.newHashSet(this.getEffectDatasIterator(EffectData.class))); + } - for( Effect effect : effects ) { - try { - PropertyUtils.copyProperties(this.createEffect(), effect); - } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - throw new IllegalStateException("Could not copy properties"); - } - } + public void setEffectDatas(Set<EffectData> effects) { + DataUtils.setAllElements(effects, () -> this.getEffectDatasIterator(EffectData.class), effectData -> this.addEffectData(effectData), () -> {} ); } - public EffectData createEffect() { + public EffectData createEffectData() { final EffectData effect = this.getGraph().addFramedVertex(EffectData.class); - this.addEffect(effect); + this.addEffectData(effect); return effect; } @Adjacency(label = "ItemApplyStats", direction = Direction.OUT) - public abstract <N extends StatsData> Iterator<? extends N> getAllItemApplyStats(Class<? extends N> type); + public abstract <N extends StatsData> Iterator<? extends N> getItemApplyStatDatasIterator(Class<? extends N> type); - public Stats getItemApplyStats() { - Iterator<? extends StatsData> allStats = this.getAllItemApplyStats(StatsData.class); + public StatsData getItemApplyStatData() { + Iterator<? extends StatsData> allStats = this.getItemApplyStatDatasIterator(StatsData.class); if( allStats.hasNext() ) - return StatsData.copyStats(allStats.next()); + return allStats.next(); else return null; } @Adjacency(label = "ItemApplyStats", direction = Direction.OUT) - public abstract StatsData addStats(StatsData stats); + public abstract StatsData addStatData(StatsData stats); @Adjacency(label = "ItemApplyStats", direction = Direction.OUT) - public abstract void removeStats(StatsData stats); + public abstract void removeStatData(StatsData stats); - public void setItemApplyStats(Stats stats) { - Iterator<? extends StatsData> existingAll = this.getAllItemApplyStats(StatsData.class); - if( existingAll != null ) { - while( existingAll.hasNext() ) { - StatsData existing = existingAll.next(); - this.removeStats(existing); - existing.remove(); - } - - } - - if( stats == null ) { - this.createItemApplyStats(); - return; - } - - try { - PropertyUtils.copyProperties(this.createItemApplyStats(), stats); - } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - throw new IllegalStateException("Could not copy properties"); - } + public void setItemApplyStatData(StatsData stats) { + DataUtils.setAllElements(Collections.singletonList(stats), () -> this.getItemApplyStatDatasIterator(StatsData.class), statsData -> this.addStatData(statsData), () -> createItemApplyStatData() ); } - public StatsData createItemApplyStats() { - if( this.getItemApplyStats() != null ) + public StatsData createItemApplyStatData() { + if( this.getItemApplyStatData() != null ) throw new IllegalStateException("Already has stats, can't create another"); final StatsData stats = this.getGraph().addFramedVertex(StatsData.class); stats.setAgile(0); @@ -286,8 +205,37 @@ public abstract class ItemData extends AbstractInterceptingVertexFrame implement stats.setWeaponRatingMax(0); stats.setWeaponRatingMin(0); stats.setWillpower(0); - this.addStats(stats); + this.addStatData(stats); return stats; } + public static void copyItem(ItemData dest, Item src) { + try { + PropertyUtils.copyProperties(dest, src); + StatsData.copyStats(dest.createItemApplyStatData(), src.getItemApplyStats()); + for(Effect effect : src.getEffects()) + EffectData.copyEffect(dest.createEffectData(), effect); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + throw new IllegalStateException("Could not copy properties", e); + } + } + + public static Item copyItem(ItemData src) { + Item retVal = new Item(); + try { + PropertyUtils.copyProperties(retVal, src); + StatsData applyStats = src.getItemApplyStatData(); + if( applyStats != null ) + retVal.setItemApplyStats(StatsData.copyStats(applyStats)); + + Set<Effect> effects = new HashSet<>(); + for(EffectData effect : src.getEffectDatas()) + effects.add(EffectData.copyEffect(effect)); + retVal.setEffects(Collections.unmodifiableSet(effects)); + + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + throw new IllegalStateException("Could not copy properties", e); + } + return retVal; + } } diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/LootData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/LootData.java index ff663b5e6a95385a97d0dfb9a5b6ad4295274cfe..e9ff058c8c0be2d34a30f385b8d72109256aa7ba 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/LootData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/LootData.java @@ -51,7 +51,7 @@ public abstract class LootData extends AbstractInterceptingVertexFrame { try { PropertyUtils.copyProperties(dest, src); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - throw new IllegalStateException("Could not copy properties"); + throw new IllegalStateException("Could not copy properties", e); } } @@ -60,7 +60,7 @@ public abstract class LootData extends AbstractInterceptingVertexFrame { try { PropertyUtils.copyProperties(retVal, src);; } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - throw new IllegalStateException("Could not copy properties"); + throw new IllegalStateException("Could not copy properties", e); } return retVal; } diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/NpcData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/NpcData.java index eef310fd2d856cfe33a0f6ee8c85187855ce6232..8b41374a81c584a3814fc36f780ad5c749047564 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/NpcData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/NpcData.java @@ -18,11 +18,9 @@ package com.syncleus.aethermud.storage.graphdb.model; import com.google.common.collect.Lists; import com.syncleus.aethermud.common.AetherMudMessage; import com.syncleus.aethermud.common.ColorizedTextTemplate; -import com.syncleus.aethermud.items.Effect; import com.syncleus.aethermud.npc.Npc; import com.syncleus.aethermud.npc.Temperament; import com.syncleus.aethermud.spawner.SpawnRule; -import com.syncleus.aethermud.stats.Stats; import com.syncleus.aethermud.storage.graphdb.DataUtils; import com.syncleus.aethermud.world.model.Area; import com.syncleus.ferma.annotations.Adjacency; @@ -31,7 +29,6 @@ import com.syncleus.ferma.annotations.Property; import com.syncleus.ferma.ext.AbstractInterceptingVertexFrame; import org.apache.commons.beanutils.PropertyUtils; import org.apache.tinkerpop.gremlin.structure.Direction; -import org.apache.tinkerpop.gremlin.structure.Vertex; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; @@ -68,8 +65,8 @@ public abstract class NpcData extends AbstractInterceptingVertexFrame { @Adjacency(label = "spawnRule", direction = Direction.OUT) public abstract <N extends SpawnRuleData> Iterator<? extends N> getSpawnRulesDataIterator(Class<? extends N> type); - public List<SpawnRuleData> getSpawnRulesData() { - return Lists.newArrayList(this.getSpawnRulesDataIterator(SpawnRuleData.class)); + public List<SpawnRuleData> getSpawnRuleDatas() { + return Collections.unmodifiableList(Lists.newArrayList(this.getSpawnRulesDataIterator(SpawnRuleData.class))); } @Adjacency(label = "spawnRule", direction = Direction.OUT) @@ -79,7 +76,7 @@ public abstract class NpcData extends AbstractInterceptingVertexFrame { public abstract void removeSpawnRuleData(SpawnRuleData spawnRule); public void setSpawnRulesDatas(List<SpawnRuleData> spawnRules) { - DataUtils.setAllElements(spawnRules, () -> this.getSpawnRulesDataIterator(SpawnRuleData.class), ruleData -> this.addSpawnRuleData(ruleData), () -> this.createSpawnRuleData() ); + DataUtils.setAllElements(spawnRules, () -> this.getSpawnRulesDataIterator(SpawnRuleData.class), ruleData -> this.addSpawnRuleData(ruleData), () -> {} ); } public SpawnRuleData createSpawnRuleData() { @@ -298,7 +295,7 @@ public abstract class NpcData extends AbstractInterceptingVertexFrame { for(AetherMudMessage message : src.getIdleMessages()) AetherMudMessageData.copyAetherMudMessage(dest.createIdleMessageData(), message); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - throw new IllegalStateException("Could not copy properties"); + throw new IllegalStateException("Could not copy properties", e); } } @@ -310,7 +307,7 @@ public abstract class NpcData extends AbstractInterceptingVertexFrame { retVal.setStats(StatsData.copyStats(src.getStatsData())); List<SpawnRule> rules = new ArrayList<>(); - for(SpawnRuleData spawnRuleData : src.getSpawnRulesData()) + for(SpawnRuleData spawnRuleData : src.getSpawnRuleDatas()) rules.add(SpawnRuleData.copySpawnRule(spawnRuleData)); retVal.setSpawnRules(Collections.unmodifiableList(rules)); @@ -334,7 +331,7 @@ public abstract class NpcData extends AbstractInterceptingVertexFrame { idleMessages.add(AetherMudMessageData.copyAetherMudMessage(message)); retVal.setIdleMessages(Collections.unmodifiableList(idleMessages)); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - throw new IllegalStateException("Could not copy properties"); + throw new IllegalStateException("Could not copy properties", e); } return retVal; } diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/SpawnRuleData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/SpawnRuleData.java index 62dda8fa87f94b8fce757528637acf3e63d2919a..bacbebc7a1426e50501cb1b58a38aaca2d0091f4 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/SpawnRuleData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/SpawnRuleData.java @@ -62,7 +62,7 @@ public abstract class SpawnRuleData extends AbstractInterceptingVertexFrame { try { PropertyUtils.copyProperties(dest, src); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - throw new IllegalStateException("Could not copy properties"); + throw new IllegalStateException("Could not copy properties", e); } } @@ -71,7 +71,7 @@ public abstract class SpawnRuleData extends AbstractInterceptingVertexFrame { try { PropertyUtils.copyProperties(retVal, src);; } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - throw new IllegalStateException("Could not copy properties"); + throw new IllegalStateException("Could not copy properties", e); } return retVal; } diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/StatsData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/StatsData.java index 4bc3bfc14f196ec147d57019b6c74a3212469630..e1cc61ac31bbbecb91e60ceda621febbfb63a935 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/StatsData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/StatsData.java @@ -75,11 +75,11 @@ public abstract class StatsData extends AbstractInterceptingVertexFrame { @Property("armorRating") public abstract void setArmorRating(Integer armorRating); - @Property("meleSkill") + @Property("meleeSkill") public abstract Integer getMeleeSkill(); - @Property("meleSkill") - public abstract void setMeleeSkill(Integer meleSkill); + @Property("meleeSkill") + public abstract void setMeleeSkill(Integer meleeSkill); @Property("currentHealth") public abstract Integer getCurrentHealth(); @@ -139,7 +139,7 @@ public abstract class StatsData extends AbstractInterceptingVertexFrame { try { PropertyUtils.copyProperties(dest, src); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - throw new IllegalStateException("Could not copy properties"); + throw new IllegalStateException("Could not copy properties", e); } } @@ -148,7 +148,7 @@ public abstract class StatsData extends AbstractInterceptingVertexFrame { try { PropertyUtils.copyProperties(retVal, src); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - throw new IllegalStateException("Could not copy properties"); + throw new IllegalStateException("Could not copy properties", e); } return retVal; } diff --git a/src/main/java/com/syncleus/aethermud/world/model/Room.java b/src/main/java/com/syncleus/aethermud/world/model/Room.java index 9ee91047ddf7f0d166e79e2cb3a428935292760b..54e6f8c16f78dd6b6bf72bb2e369576acf22ff35 100644 --- a/src/main/java/com/syncleus/aethermud/world/model/Room.java +++ b/src/main/java/com/syncleus/aethermud/world/model/Room.java @@ -19,7 +19,7 @@ import com.syncleus.aethermud.core.GameManager; import com.syncleus.aethermud.core.service.TimeTracker; import com.syncleus.aethermud.entity.AetherMudEntity; import com.syncleus.aethermud.items.Forage; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.merchant.Merchant; import com.syncleus.aethermud.npc.NpcSpawn; import com.syncleus.aethermud.player.Player; @@ -290,12 +290,12 @@ public abstract class Room extends AetherMudEntity { @Override public void run() { for (String itemId : itemIds) { - Optional<ItemPojo> itemOptional = gameManager.getEntityManager().getItemEntity(itemId); + Optional<Item> itemOptional = gameManager.getEntityManager().getItemEntity(itemId); if (!itemOptional.isPresent()) { removePresentItem(itemId); continue; } - ItemPojo itemEntity = itemOptional.get(); + Item itemEntity = itemOptional.get(); if (itemEntity.isHasBeenWithPlayer()) { continue; } diff --git a/src/test/java/com/syncleus/aethermud/player/combatsimuation/CombatSimulationDetails.java b/src/test/java/com/syncleus/aethermud/player/combatsimuation/CombatSimulationDetails.java index 07591e44de707d9378875c7ca4c906dad4df71d5..194fdeee94980bd5ee105e3e5b364f52503671a5 100644 --- a/src/test/java/com/syncleus/aethermud/player/combatsimuation/CombatSimulationDetails.java +++ b/src/test/java/com/syncleus/aethermud/player/combatsimuation/CombatSimulationDetails.java @@ -15,7 +15,7 @@ */ package com.syncleus.aethermud.player.combatsimuation; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.npc.NpcSpawn; import java.util.Set; @@ -24,10 +24,10 @@ public class CombatSimulationDetails { private final int level; private final int totalIterations; - private final Set<ItemPojo> equipmentSet; + private final Set<Item> equipmentSet; private final NpcSpawn npcSpawn; - public CombatSimulationDetails(int level, Set<ItemPojo> equipmentSet, NpcSpawn npcSpawn) { + public CombatSimulationDetails(int level, Set<Item> equipmentSet, NpcSpawn npcSpawn) { this.level = level; this.totalIterations = 1000; this.equipmentSet = equipmentSet; @@ -46,7 +46,7 @@ public class CombatSimulationDetails { return npcSpawn; } - public Set<ItemPojo> getEquipmentSet() { + public Set<Item> getEquipmentSet() { return equipmentSet; } } diff --git a/src/test/java/com/syncleus/aethermud/player/combatsimuation/NpcTestHarness.java b/src/test/java/com/syncleus/aethermud/player/combatsimuation/NpcTestHarness.java index ec22d581407094c403528697a288c1774d930c6c..fd4c6fb5b3aaa9b719b2d3f2c662004b252c7d5a 100644 --- a/src/test/java/com/syncleus/aethermud/player/combatsimuation/NpcTestHarness.java +++ b/src/test/java/com/syncleus/aethermud/player/combatsimuation/NpcTestHarness.java @@ -21,7 +21,7 @@ import com.syncleus.aethermud.configuration.AetherMudConfiguration; import com.syncleus.aethermud.core.GameManager; import com.syncleus.aethermud.core.SessionManager; import com.syncleus.aethermud.entity.EntityManager; -import com.syncleus.aethermud.items.ItemPojo; +import com.syncleus.aethermud.items.Item; import com.syncleus.aethermud.npc.NpcSpawn; import com.syncleus.aethermud.npc.NpcBuilder; import com.syncleus.aethermud.player.*; @@ -31,20 +31,15 @@ import com.syncleus.aethermud.stats.DefaultStats; import com.syncleus.aethermud.stats.Levels; import com.syncleus.aethermud.stats.experience.Experience; import com.syncleus.aethermud.storage.WorldStorage; -import com.syncleus.aethermud.storage.graphdb.GraphDbAetherMudStorage; import com.syncleus.aethermud.storage.graphdb.GraphStorageFactory; import com.syncleus.aethermud.storage.graphdb.model.PlayerData; import com.syncleus.aethermud.world.MapsManager; import com.syncleus.aethermud.world.RoomManager; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import com.syncleus.ferma.DelegatingFramedGraph; -import com.syncleus.ferma.WrappedFramedGraph; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.configuration.MapConfiguration; import org.apache.http.impl.client.HttpClients; -import org.apache.tinkerpop.gremlin.structure.Graph; -import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph; import org.jboss.netty.channel.Channel; import org.junit.Assert; import org.junit.Before; @@ -142,18 +137,18 @@ public class NpcTestHarness { } } - private Set<ItemPojo> getEarlyLevelArmorSet() { + private Set<Item> getEarlyLevelArmorSet() { // return Sets.newHashSet(ItemType.BERSERKER_BATON.create(), ItemType.BERSEKER_BOOTS.create(), ItemType.BERSEKER_SHORTS.create()); return Sets.newConcurrentHashSet(); } - private Set<ItemPojo> getMidLevelArmorSet() { - Set<ItemPojo> armorSet = getEarlyLevelArmorSet(); + private Set<Item> getMidLevelArmorSet() { + Set<Item> armorSet = getEarlyLevelArmorSet(); // armorSet.addAll(Sets.newHashSet(ItemType.BERSERKER_BRACERS.create(), ItemType.BERSERKER_CHEST.create())); return armorSet; } - private void processRunAndVerify(NpcSpawn testNpcSpawn, int desiredLevel, Set<ItemPojo> equipment, float winPctMax, float winPctMin, int maxRounds, int minRounds, int maxAvgGold, int minAvgGold) throws Exception { + private void processRunAndVerify(NpcSpawn testNpcSpawn, int desiredLevel, Set<Item> equipment, float winPctMax, float winPctMin, int maxRounds, int minRounds, int maxAvgGold, int minAvgGold) throws Exception { CombatSimulationDetails combatSimulationDetailsLevel = new CombatSimulationDetails(desiredLevel, equipment, testNpcSpawn); CombatSimulationResult combatSimulationResultLevel = executeCombat(combatSimulationDetailsLevel); printCombatResults(combatSimulationDetailsLevel, combatSimulationResultLevel); @@ -187,7 +182,7 @@ public class NpcTestHarness { playerWins++; int gold = (int) gameManager.getLootManager().lootGoldAmountReturn(npcSpawn.getLoot()); totalGold += gold; - Set<ItemPojo> items = gameManager.getLootManager().lootItemsReturn(npcSpawn.getLoot()); + Set<Item> items = gameManager.getLootManager().lootItemsReturn(npcSpawn.getLoot()); items.forEach(item -> { if (!drops.containsKey(item.getItemName())) { drops.put(item.getItemName(), new AtomicInteger(1)); @@ -259,7 +254,7 @@ public class NpcTestHarness { return player; } - private void equipArmor(Player player, Set<ItemPojo> equipment) { + private void equipArmor(Player player, Set<Item> equipment) { equipment.forEach(item -> { entityManager.saveItem(item); gameManager.acquireItem(player, item.getItemId());