From 706577f220a1b06fb636369c04560cdf67cd0fa8 Mon Sep 17 00:00:00 2001 From: Alejandro <25-alejandro@users.noreply.git.krews.org> Date: Thu, 27 Feb 2020 23:16:36 +0200 Subject: [PATCH] Fix vending machines without sides --- .../InteractionVendingMachine.java | 18 ++++++------------ .../eu/habbo/habbohotel/rooms/RoomUnit.java | 2 +- .../runnables/RoomUnitWalkToLocation.java | 13 +++++++++++++ 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionVendingMachine.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionVendingMachine.java index 4ddc40bf..55b96e98 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionVendingMachine.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionVendingMachine.java @@ -83,11 +83,10 @@ public class InteractionVendingMachine extends HabboItem { } } - List onSuccess = new ArrayList<>(); - List onFail = new ArrayList<>(); - RoomTile finalTile = tile; - onSuccess.add(() -> { + client.getHabbo().getRoomUnit().setGoalLocation(tile); + + Emulator.getThreading().run(new RoomUnitWalkToLocation(client.getHabbo().getRoomUnit(), tile, room, () -> { this.setExtradata("1"); room.scheduledComposers.add(new FloorItemUpdateComposer(this).compose()); @@ -98,7 +97,7 @@ public class InteractionVendingMachine extends HabboItem { } Emulator.getThreading().run(() -> { - Runnable procedure = () -> { + client.getHabbo().getRoomUnit().setMoveBlockingTask(Emulator.getThreading().run(() -> { if (client.getHabbo().getRoomUnit().getCurrentLocation().equals(finalTile)) { this.rotateToMachine(client.getHabbo().getRoomUnit()); room.sendComposer(new RoomUserStatusComposer(client.getHabbo().getRoomUnit()).compose()); @@ -117,14 +116,9 @@ public class InteractionVendingMachine extends HabboItem { } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } - }; - - client.getHabbo().getRoomUnit().setMoveBlockingTask(Emulator.getThreading().run(procedure, 300)); + }, 300)); }, 250); - }); - - client.getHabbo().getRoomUnit().setGoalLocation(tile); - Emulator.getThreading().run(new RoomUnitWalkToLocation(client.getHabbo().getRoomUnit(), tile, room, onSuccess, onFail)); + }, null)); } } } diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java index 7eb7278b..e0aa77b9 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java @@ -781,7 +781,7 @@ public class RoomUnit { return this.getClosestTile( rotations.stream() .map(rotation -> room.getLayout().getTileInFront(baseTile, rotation)) - .filter(t -> t != null && t.isWalkable() && !room.hasHabbosAt(t.x, t.y)) + .filter(t -> t != null && t.isWalkable() && (this.getCurrentLocation().equals(t) || !room.hasHabbosAt(t.x, t.y))) .collect(Collectors.toList()) ); } diff --git a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitWalkToLocation.java b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitWalkToLocation.java index 21356e91..7a648ff0 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/RoomUnitWalkToLocation.java +++ b/src/main/java/com/eu/habbo/threading/runnables/RoomUnitWalkToLocation.java @@ -5,6 +5,7 @@ import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomUnit; +import java.util.ArrayList; import java.util.List; public class RoomUnitWalkToLocation implements Runnable { @@ -14,6 +15,18 @@ public class RoomUnitWalkToLocation implements Runnable { private List targetReached; private List failedReached; + public RoomUnitWalkToLocation(RoomUnit walker, RoomTile goalTile, Room room, Runnable targetReached, Runnable failedReached) { + this.walker = walker; + this.goalTile = goalTile; + this.room = room; + + this.targetReached = new ArrayList<>(); + if (targetReached != null) this.targetReached.add(targetReached); + + this.failedReached = new ArrayList<>(); + if (failedReached != null) this.targetReached.add(failedReached); + } + public RoomUnitWalkToLocation(RoomUnit walker, RoomTile goalTile, Room room, List targetReached, List failedReached) { this.walker = walker; this.goalTile = goalTile;