From c2b72c067fada47bd8b4315ee01cc65ced98ad1a Mon Sep 17 00:00:00 2001 From: Alejandro <25-alejandro@users.noreply.git.krews.org> Date: Sun, 16 Jun 2019 13:52:27 +0300 Subject: [PATCH] Disable posture overriding when on a water item --- .../com/eu/habbo/habbohotel/commands/LayCommand.java | 3 +++ src/main/java/com/eu/habbo/habbohotel/rooms/Room.java | 5 +++-- .../java/com/eu/habbo/habbohotel/rooms/RoomUnit.java | 10 ++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/LayCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/LayCommand.java index 4a186528..abc534bb 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/LayCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/LayCommand.java @@ -14,6 +14,9 @@ public class LayCommand extends Command { @Override public boolean handle(GameClient gameClient, String[] params) throws Exception { + if (gameClient.getHabbo().getRoomUnit() == null || !gameClient.getHabbo().getRoomUnit().canForcePosture()) + return true; + gameClient.getHabbo().getRoomUnit().cmdLay = true; gameClient.getHabbo().getHabboInfo().getCurrentRoom().updateHabbo(gameClient.getHabbo()); gameClient.getHabbo().getRoomUnit().cmdSit = true; diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java b/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java index 92463f3b..5ca538ea 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java @@ -3931,11 +3931,12 @@ public class Room implements Comparable, ISerialize, Runnable { } public void makeSit(Habbo habbo) { - if (habbo.getRoomUnit().hasStatus(RoomUnitStatus.SIT)) { + if (habbo.getRoomUnit() == null) return; + + if (habbo.getRoomUnit().hasStatus(RoomUnitStatus.SIT) || !habbo.getRoomUnit().canForcePosture()) { return; } - this.dance(habbo, DanceType.NONE); habbo.getRoomUnit().cmdSit = true; habbo.getRoomUnit().setBodyRotation(RoomUserRotation.values()[habbo.getRoomUnit().getBodyRotation().getValue() - habbo.getRoomUnit().getBodyRotation().getValue() % 2]); 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 07809406..d1c6aa6c 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java @@ -4,6 +4,8 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionGuildGate; import com.eu.habbo.habbohotel.items.interactions.InteractionTeleport; +import com.eu.habbo.habbohotel.items.interactions.InteractionWater; +import com.eu.habbo.habbohotel.items.interactions.InteractionWaterItem; import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.pets.RideablePet; import com.eu.habbo.habbohotel.users.DanceType; @@ -722,4 +724,12 @@ public class RoomUnit { public void setCanLeaveRoomByDoor(boolean canLeaveRoomByDoor) { this.canLeaveRoomByDoor = canLeaveRoomByDoor; } + + public boolean canForcePosture() { + if (this.room == null) return false; + + HabboItem topItem = this.room.getTopItemAt(this.getX(), this.getY()); + + return topItem == null || (!(topItem instanceof InteractionWater) && !(topItem instanceof InteractionWaterItem)); + } }