diff --git a/src/main/java/com/comandante/creeper/bot/BotCommandFactory.java b/src/main/java/com/comandante/creeper/bot/BotCommandFactory.java index 4d7cc209527ab14eb78dcf545015d693acccdb3e..ef50a5862ffa807f9e0b63a4f8e95d2cd6279d04 100644 --- a/src/main/java/com/comandante/creeper/bot/BotCommandFactory.java +++ b/src/main/java/com/comandante/creeper/bot/BotCommandFactory.java @@ -16,6 +16,7 @@ public class BotCommandFactory { addCommand(new DictionaryBotCommand(botCommandManager)); addCommand(new ImdbBotCommand(botCommandManager)); addCommand(new ForecastCommand(botCommandManager)); + addCommand(new RandomRoomDescriptionCommand(botCommandManager)); } public BotCommand getCommand(String originalFullCmd) { diff --git a/src/main/java/com/comandante/creeper/bot/commands/RandomRoomDescriptionCommand.java b/src/main/java/com/comandante/creeper/bot/commands/RandomRoomDescriptionCommand.java new file mode 100644 index 0000000000000000000000000000000000000000..0524fd320ecd5947cf4aafd1e03975b1b8846fc3 --- /dev/null +++ b/src/main/java/com/comandante/creeper/bot/commands/RandomRoomDescriptionCommand.java @@ -0,0 +1,33 @@ +package com.comandante.creeper.bot.commands; + + +import com.comandante.creeper.bot.BotCommandManager; +import com.comandante.creeper.world.Room; +import com.google.common.collect.Sets; + +import java.util.*; + +public class RandomRoomDescriptionCommand extends BotCommand { + + static Set<String> triggers = Sets.newHashSet("blazecraft"); + static String helpUsage = "blazecraft"; + static String helpDescription = "A random room description, courtesy of BLAZECRAFT"; + private final Random random = new Random(); + + public RandomRoomDescriptionCommand(BotCommandManager botCommandManager) { + super(botCommandManager, triggers, helpUsage, helpDescription); + } + + @Override + public List<String> process() { + Map<Integer, Room> getrooms = botCommandManager.getGameManager().getRoomManager().getrooms(); + int size = getrooms.size(); + int randomRoomNumber = randInt(1, size); + return Collections.singletonList(getrooms.get(randomRoomNumber).getRoomDescription()); + } + + private int randInt(int min, int max) { + int randomNum = random.nextInt((max - min) + 1) + min; + return randomNum; + } +} diff --git a/src/main/java/com/comandante/creeper/command/admin/TeleportCommand.java b/src/main/java/com/comandante/creeper/command/admin/TeleportCommand.java index 14d64d9c5d5514c5e6677e57815051de8de0e3b8..75be41b7f0e90f0a1d79232ac5b43ab0e667c013 100644 --- a/src/main/java/com/comandante/creeper/command/admin/TeleportCommand.java +++ b/src/main/java/com/comandante/creeper/command/admin/TeleportCommand.java @@ -66,7 +66,7 @@ public class TeleportCommand extends Command { return; } } - Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRooms(); + Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRoomsIterator(); while (rooms.hasNext()) { Map.Entry<Integer, Room> next = rooms.next(); if (Integer.toString(next.getKey()).equals(desiredId)) { diff --git a/src/main/java/com/comandante/creeper/entity/EntityManager.java b/src/main/java/com/comandante/creeper/entity/EntityManager.java index 5c4cccddcab24b64b4b842cda823cedf20cc6289..2704cd133f5737c7a8c354de95be978f1764e47e 100644 --- a/src/main/java/com/comandante/creeper/entity/EntityManager.java +++ b/src/main/java/com/comandante/creeper/entity/EntityManager.java @@ -148,7 +148,7 @@ public class EntityManager { while (true) { try { final com.codahale.metrics.Timer.Context context = ticktime.time(); - Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRooms(); + Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRoomsIterator(); while (rooms.hasNext()) { Map.Entry<Integer, Room> next = rooms.next(); mainTickExecutorService.submit(next.getValue()); diff --git a/src/main/java/com/comandante/creeper/managers/GameManager.java b/src/main/java/com/comandante/creeper/managers/GameManager.java index ce01d8f30c48ae78f1533c73a1d5cd8e0d7d5ca2..24b6af54cc29bb2f5162bea7f840b9f5b8b2046f 100755 --- a/src/main/java/com/comandante/creeper/managers/GameManager.java +++ b/src/main/java/com/comandante/creeper/managers/GameManager.java @@ -182,7 +182,7 @@ public class GameManager { public Set<Player> getAllPlayers() { ImmutableSet.Builder<Player> builder = ImmutableSet.builder(); - Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRooms(); + Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRoomsIterator(); while (rooms.hasNext()) { Map.Entry<Integer, Room> next = rooms.next(); Room room = next.getValue(); @@ -631,7 +631,7 @@ public class GameManager { public synchronized void removeAllNpcs() { for (Npc npc : entityManager.getNpcs().values()) { - Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRooms(); + Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRoomsIterator(); while (rooms.hasNext()) { Map.Entry<Integer, Room> next = rooms.next(); next.getValue().removePresentNpc(npc.getEntityId()); diff --git a/src/main/java/com/comandante/creeper/world/MapsManager.java b/src/main/java/com/comandante/creeper/world/MapsManager.java index 5a4e94075b3d594902889a5d23ac0b3db1997209..3b381de5a388fc0cfe53730b5c24f2aca68f6c29 100644 --- a/src/main/java/com/comandante/creeper/world/MapsManager.java +++ b/src/main/java/com/comandante/creeper/world/MapsManager.java @@ -36,7 +36,7 @@ public class MapsManager { Timer.Context time = ticktime.time(); int maxRows = creeperConfiguration.defaultMapSize; int maxColumns = creeperConfiguration.defaultMapSize; - Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRooms(); + Iterator<Map.Entry<Integer, Room>> rooms = roomManager.getRoomsIterator(); while (rooms.hasNext()) { Map.Entry<Integer, Room> next = rooms.next(); Integer roomId = next.getValue().getRoomId(); diff --git a/src/main/java/com/comandante/creeper/world/RoomManager.java b/src/main/java/com/comandante/creeper/world/RoomManager.java index 7c5c6806aac938d8205ac8fac7d5ff73d07fd9b7..c8fb67510feb508b7001e43975657811f6284c2c 100644 --- a/src/main/java/com/comandante/creeper/world/RoomManager.java +++ b/src/main/java/com/comandante/creeper/world/RoomManager.java @@ -47,7 +47,7 @@ public class RoomManager { public Optional<List<Integer>> getRoomsForTag(String tag) { List<Integer> matchedRooms = Lists.newArrayList(); - Iterator<Map.Entry<Integer, Room>> rooms = getRooms(); + Iterator<Map.Entry<Integer, Room>> rooms = getRoomsIterator(); while (rooms.hasNext()) { Map.Entry<Integer, Room> next = rooms.next(); if (next.getValue().getRoomTags().contains(tag)) { @@ -74,13 +74,17 @@ public class RoomManager { return getRoom(roomId).getRoomTags(); } - public Iterator<java.util.Map.Entry<Integer, Room>> getRooms() { + public Iterator<java.util.Map.Entry<Integer, Room>> getRoomsIterator() { return rooms.entrySet().iterator(); } + public Map<Integer, Room> getrooms() { + return rooms; + } + public Set<Room> getRoomsByFloorId(Integer floorId) { Set<Room> rooms = Sets.newHashSet(); - Iterator<Map.Entry<Integer, Room>> rooms1 = getRooms(); + Iterator<Map.Entry<Integer, Room>> rooms1 = getRoomsIterator(); while (rooms1.hasNext()) { Map.Entry<Integer, Room> next = rooms1.next(); if (next.getValue().getFloorId().equals(floorId)) { @@ -91,7 +95,7 @@ public class RoomManager { } public Optional<Room> getPlayerCurrentRoom(String playerId) { - Iterator<Map.Entry<Integer, Room>> rooms = getRooms(); + Iterator<Map.Entry<Integer, Room>> rooms = getRoomsIterator(); while (rooms.hasNext()) { Map.Entry<Integer, Room> next = rooms.next(); Room room = next.getValue(); @@ -118,7 +122,7 @@ public class RoomManager { public Set<Room> getRoomsByArea(Area area) { Set<Room> rooms = Sets.newHashSet(); - Iterator<Map.Entry<Integer, Room>> rooms1 = getRooms(); + Iterator<Map.Entry<Integer, Room>> rooms1 = getRoomsIterator(); while (rooms1.hasNext()) { Map.Entry<Integer, Room> next = rooms1.next(); if (next.getValue().getAreas().contains(area)) { @@ -129,7 +133,7 @@ public class RoomManager { } public boolean doesRoomIdExist(Integer roomId) { - Iterator<Map.Entry<Integer, Room>> rooms1 = getRooms(); + Iterator<Map.Entry<Integer, Room>> rooms1 = getRoomsIterator(); Set<Integer> roomIds = Sets.newHashSet(); while (rooms1.hasNext()) { Map.Entry<Integer, Room> next = rooms1.next(); @@ -141,7 +145,7 @@ public class RoomManager { } public Room getRoomByItemId(String itemId) { - Iterator<Map.Entry<Integer, Room>> rooms = getRooms(); + Iterator<Map.Entry<Integer, Room>> rooms = getRoomsIterator(); while (rooms.hasNext()) { Map.Entry<Integer, Room> next = rooms.next(); if (next.getValue().getItemIds().contains(itemId)) {