diff --git a/Havana-Server/src/main/java/org/alexdev/havana/game/commands/registered/admin/BotCommand.java b/Havana-Server/src/main/java/org/alexdev/havana/game/commands/registered/admin/BotCommand.java index 27ded67..31c8582 100644 --- a/Havana-Server/src/main/java/org/alexdev/havana/game/commands/registered/admin/BotCommand.java +++ b/Havana-Server/src/main/java/org/alexdev/havana/game/commands/registered/admin/BotCommand.java @@ -51,7 +51,7 @@ public class BotCommand extends Command { e.printStackTrace(); } - Position bound = room.getMapping().getRandomWalkableBound(bot); + Position bound = room.getMapping().getRandomWalkableBound(bot, false); if (bound != null) room.getEntityManager().enterRoom(bot, bound); @@ -59,7 +59,7 @@ public class BotCommand extends Command { room.getTaskManager().scheduleTask("BotCommandTask", ()-> { for (Bot bot : room.getEntityManager().getEntitiesByClass(Bot.class)) { - Position newBound = room.getMapping().getRandomWalkableBound(bot); + Position newBound = room.getMapping().getRandomWalkableBound(bot, false); if (newBound != null) { bot.getRoomUser().walkTo(newBound.getX(), newBound.getY()); diff --git a/Havana-Server/src/main/java/org/alexdev/havana/game/room/mapping/RoomMapping.java b/Havana-Server/src/main/java/org/alexdev/havana/game/room/mapping/RoomMapping.java index 419b1d0..44f1654 100644 --- a/Havana-Server/src/main/java/org/alexdev/havana/game/room/mapping/RoomMapping.java +++ b/Havana-Server/src/main/java/org/alexdev/havana/game/room/mapping/RoomMapping.java @@ -593,10 +593,7 @@ public class RoomMapping { return this.roomMap[x][y]; } - public Position getRandomWalkableBound(Entity entity) { - Position position = null; - - boolean isWalkable = false; + public Position getRandomWalkableBound(Entity entity, boolean allowDoorBound) { int attempts = 0; int maxAttempts = 10; @@ -605,7 +602,13 @@ public class RoomMapping { int randomX = this.room.getModel().getRandomBound(0); int randomY = this.room.getModel().getRandomBound(1); - position = new Position(randomX, randomY); + + var position = new Position(randomX, randomY); + + if (!allowDoorBound) { + if (position.equals(this.room.getModel().getDoorLocation())) + continue; + } if (RoomTile.isValidTile(this.room, entity, position)) { return position; diff --git a/Havana-Server/src/main/java/org/alexdev/havana/game/room/tasks/EntityTask.java b/Havana-Server/src/main/java/org/alexdev/havana/game/room/tasks/EntityTask.java index 35cdcde..691032c 100644 --- a/Havana-Server/src/main/java/org/alexdev/havana/game/room/tasks/EntityTask.java +++ b/Havana-Server/src/main/java/org/alexdev/havana/game/room/tasks/EntityTask.java @@ -304,7 +304,7 @@ public class EntityTask implements Runnable { } - Position availableTile = this.room.getMapping().getRandomWalkableBound(pet); + Position availableTile = this.room.getMapping().getRandomWalkableBound(pet, false); if (availableTile != null) { pet.getRoomUser().walkTo(availableTile.getX(), availableTile.getY());