diff --git a/src/main/java/com/comandante/creeper/Items/Item.java b/src/main/java/com/comandante/creeper/Items/Item.java index a3645280d6ba0538ce0a92300af17853274fa0bd..0a0c3527e23563f35b49619b19c4464b17aa6b60 100644 --- a/src/main/java/com/comandante/creeper/Items/Item.java +++ b/src/main/java/com/comandante/creeper/Items/Item.java @@ -2,22 +2,23 @@ package com.comandante.creeper.Items; import java.io.Serializable; +import java.util.List; public class Item implements Serializable { private String itemName; private String itemDescription; - private String shortName; + private List<String> itemTriggers; private String restingName; private String itemId; private Integer itemTypeId; private int numberOfUses; private boolean isWithPlayer; - protected Item(String itemName, String itemDescription, String shortName, String restingName, String itemId, Integer itemTypeId, int numberOfUses, boolean isWithPlayer) { + protected Item(String itemName, String itemDescription, List<String> itemTriggers, String restingName, String itemId, Integer itemTypeId, int numberOfUses, boolean isWithPlayer) { this.itemName = itemName; this.itemDescription = itemDescription; - this.shortName = shortName; + this.itemTriggers = itemTriggers; this.restingName = restingName; this.itemId = itemId; this.itemTypeId = itemTypeId; @@ -64,8 +65,8 @@ public class Item implements Serializable { return itemDescription; } - public String getShortName() { - return shortName; + public List<String> getItemTriggers() { + return itemTriggers; } public void setItemName(String itemName) { @@ -76,8 +77,8 @@ public class Item implements Serializable { this.itemDescription = itemDescription; } - public void setShortName(String shortName) { - this.shortName = shortName; + public void setItemTriggers(List<String> itemTriggers) { + this.itemTriggers = itemTriggers; } public String getRestingName() { diff --git a/src/main/java/com/comandante/creeper/Items/ItemType.java b/src/main/java/com/comandante/creeper/Items/ItemType.java index 08be3210bcd941e15d98f28f78fcdaa3a945a183..e6b90813d3286b7bd586846a5736061da7910a03 100644 --- a/src/main/java/com/comandante/creeper/Items/ItemType.java +++ b/src/main/java/com/comandante/creeper/Items/ItemType.java @@ -1,26 +1,28 @@ package com.comandante.creeper.Items; +import java.util.Arrays; +import java.util.List; import java.util.UUID; import static com.comandante.creeper.model.Color.*; public enum ItemType { - UNKNOWN(0, "", "", "", "", false, 0, 0), - KEY(1, "key", + UNKNOWN(0, Arrays.asList(""), "", "", "", false, 0, 0), + KEY(1, Arrays.asList("key", "gold key", "shiny gold key"), YELLOW + "a shiny gold key" + RESET, YELLOW + "a shiny gold key" + RESET + " catches your eye.", "A basic key with nothing really remarkable other than its made of gold.", false, 0, 60), - BEER(2, "beer", + BEER(2, Arrays.asList("beer", "can of beer"), CYAN + "a dented can of beer" + RESET, CYAN + "a beer" + RESET + " lies on the ground, unopened", "This beer looks sketch but you'll probably drink it anyways.", false, 0, 60), - BOOK(3, "beer", + BOOK(3, Arrays.asList("book", "used book"), MAGENTA + "a leather book" + RESET, MAGENTA + "a well used book" + RESET + " with what looks like a leather back rests here.", "A book written in a foreign language. Doesn't matter as you can't read.", @@ -29,7 +31,7 @@ public enum ItemType { 60); private final Integer itemTypeCode; - private final String itemShortName; + private final List<String> itemTriggers; private final String restingName; private final String itemName; private final String itemDescription; @@ -37,9 +39,9 @@ public enum ItemType { private final int maxUses; private final int itemHalfLifeTicks; - ItemType(Integer itemTypeCode, String itemShortName, String itemName, String restingName, String itemDescription, boolean isDisposable, int maxUses, int itemHalfLifeTicks) { + ItemType(Integer itemTypeCode, List<String> itemTriggers, String itemName, String restingName, String itemDescription, boolean isDisposable, int maxUses, int itemHalfLifeTicks) { this.itemTypeCode = itemTypeCode; - this.itemShortName = itemShortName; + this.itemTriggers = itemTriggers; this.itemName = itemName; this.restingName = restingName; this.itemDescription = itemDescription; @@ -53,7 +55,7 @@ public enum ItemType { } public Item create() { - return new Item(getItemName(), getItemDescription(), getItemShortName(), getRestingName(), UUID.randomUUID().toString(), getItemTypeCode(), 0, false); + return new Item(getItemName(), getItemDescription(), getItemTriggers(), getRestingName(), UUID.randomUUID().toString(), getItemTypeCode(), 0, false); } @@ -65,8 +67,8 @@ public enum ItemType { return itemTypeCode; } - public String getItemShortName() { - return itemShortName; + public List<String> getItemTriggers() { + return itemTriggers; } public String getItemName() { diff --git a/src/main/java/com/comandante/creeper/command/commands/DropCommand.java b/src/main/java/com/comandante/creeper/command/commands/DropCommand.java index 9dc9a99dc355ff9065547ba374f1128ca486692f..dd2e6c8f37dfc7d012ba909207a62fd7858913b7 100644 --- a/src/main/java/com/comandante/creeper/command/commands/DropCommand.java +++ b/src/main/java/com/comandante/creeper/command/commands/DropCommand.java @@ -5,6 +5,7 @@ import com.comandante.creeper.managers.GameManager; import com.comandante.creeper.model.PlayerMetadata; import com.comandante.creeper.model.Room; import com.comandante.creeper.server.CreeperSession; +import com.google.common.base.Joiner; import com.google.common.collect.ImmutableList; import java.util.ArrayList; @@ -30,10 +31,11 @@ public class DropCommand extends Command { commandWrite("No item specified."); return; } - String itemTarget = originalMessageParts.get(1); + originalMessageParts.remove(0); + String itemTarget = Joiner.on(" ").join(originalMessageParts); for (String inventoryId : getGameManager().getPlayerManager().getPlayerMetadata(getPlayerId()).getInventory()) { Item itemEntity = getGameManager().getEntityManager().getItemEntity(inventoryId); - if (itemEntity.getShortName().equals(itemTarget)) { + if (itemEntity.getItemTriggers().contains(itemTarget)) { itemEntity.setWithPlayer(false); Room playerCurrentRoom = getGameManager().getRoomManager().getPlayerCurrentRoom(getGameManager().getPlayerManager().getPlayer(getPlayerId())).get(); getGameManager().placeItemInRoom(playerCurrentRoom.getRoomId(), itemEntity.getItemId()); diff --git a/src/main/java/com/comandante/creeper/command/commands/PickUpCommand.java b/src/main/java/com/comandante/creeper/command/commands/PickUpCommand.java index c3a7c153151e87ff89e2ac711489ac4e2fa1a100..6271a7d3b80e90017a5948b460950e6b2a16691c 100644 --- a/src/main/java/com/comandante/creeper/command/commands/PickUpCommand.java +++ b/src/main/java/com/comandante/creeper/command/commands/PickUpCommand.java @@ -4,6 +4,7 @@ import com.comandante.creeper.managers.GameManager; import com.comandante.creeper.Items.Item; import com.comandante.creeper.model.Player; import com.comandante.creeper.model.Room; +import com.google.common.base.Joiner; import com.google.common.collect.ImmutableList; import java.util.ArrayList; @@ -31,7 +32,9 @@ public class PickUpCommand extends Command { Set<String> itemIds = playerCurrentRoom.getItemIds(); for (String next : itemIds) { Item itemEntity = getGameManager().getEntityManager().getItemEntity(next); - if (itemEntity.getShortName().equalsIgnoreCase(originalMessageParts.get(1))) { + originalMessageParts.remove(0); + String desiredPickUpItem = Joiner.on(" ").join(originalMessageParts); + if (itemEntity.getItemTriggers().contains(desiredPickUpItem)) { getGameManager().acquireItem(player, itemEntity.getItemId()); roomSay(playerCurrentRoom.getRoomId(), getGameManager().getPlayerManager().getPlayer(getPlayerId()).getPlayerName() + " picked up " + itemEntity.getItemName()); return; diff --git a/src/main/java/com/comandante/creeper/command/commands/TellCommand.java b/src/main/java/com/comandante/creeper/command/commands/TellCommand.java index d41d05d8a549ef2adfb7a41486cd3c6e921650bb..eb0c2c2ab1fef99a524e3d20aabe7715ddc977f5 100644 --- a/src/main/java/com/comandante/creeper/command/commands/TellCommand.java +++ b/src/main/java/com/comandante/creeper/command/commands/TellCommand.java @@ -2,8 +2,8 @@ package com.comandante.creeper.command.commands; import com.comandante.creeper.managers.GameManager; import com.comandante.creeper.model.Player; +import com.google.common.base.Joiner; import com.google.common.collect.ImmutableList; -import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.Arrays; @@ -44,7 +44,7 @@ public class TellCommand extends Command { return; } parts.remove(0); - String tellMessage = StringUtils.join(parts, " "); + String tellMessage = Joiner.on(" ").join(parts); StringBuilder stringBuilder = new StringBuilder(); String destinationPlayercolor = YELLOW; stringBuilder.append("*").append(sourcePlayer.getPlayerName()).append("* "); diff --git a/src/main/java/com/comandante/creeper/command/commands/UseCommand.java b/src/main/java/com/comandante/creeper/command/commands/UseCommand.java index fcd78219db027ece151f3b41e87a5c60b3582f9e..06b85b20a87b786a407a2c43aab93b4b94dc2287 100644 --- a/src/main/java/com/comandante/creeper/command/commands/UseCommand.java +++ b/src/main/java/com/comandante/creeper/command/commands/UseCommand.java @@ -6,6 +6,7 @@ import com.comandante.creeper.Items.ItemType; import com.comandante.creeper.Items.ItemUseHandler; import com.comandante.creeper.managers.GameManager; import com.comandante.creeper.server.CreeperSession; +import com.google.common.base.Joiner; import com.google.common.collect.ImmutableList; import java.util.ArrayList; @@ -31,10 +32,11 @@ public class UseCommand extends Command { commandWrite("No item specified."); return; } - String itemTarget = originalMessageParts.get(1); + originalMessageParts.remove(0); + String itemTarget = Joiner.on(" ").join(originalMessageParts); for (String inventoryId : getGameManager().getPlayerManager().getPlayerMetadata(getPlayerId()).getInventory()) { Item itemEntity = getGameManager().getEntityManager().getItemEntity(inventoryId); - if (itemEntity.getShortName().equals(itemTarget)) { + if (itemEntity.getItemTriggers().contains(itemTarget)) { new ItemUseHandler(itemEntity, creeperSession, getGameManager(), getPlayerId()).handle(); return; }