From a4beae1e7dcbf1f5f9ce97ab53705e0b78bc3e07 Mon Sep 17 00:00:00 2001 From: Remco Date: Wed, 18 Nov 2020 18:47:26 +0100 Subject: [PATCH 01/11] Fixed wired condition trigger on furni issue #907 --- .../WiredConditionTriggerOnFurni.java | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggerOnFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggerOnFurni.java index 56d54325..e2d446af 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggerOnFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggerOnFurni.java @@ -4,7 +4,6 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomLayout; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomUnit; import com.eu.habbo.habbohotel.users.HabboItem; @@ -33,15 +32,34 @@ public class WiredConditionTriggerOnFurni extends InteractionWiredCondition { @Override public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) { - if (roomUnit == null) return false; + if (roomUnit == null) + return false; this.refresh(); if (this.items.isEmpty()) return false; - THashSet itemsAtUser = room.getItemsAt(roomUnit.getCurrentLocation()); - return this.items.stream().anyMatch(itemsAtUser::contains); + /* + * 1. If a Habbo IS NOT walking we only have to check if the Habbo is on one of the selected tiles. + * 2. If a Habbo IS walking we have to check if the very first tile in the walking path since the startlocation + * is one of the selected items + * */ + if (!roomUnit.isWalking()) { + THashSet itemsAtUser = room.getItemsAt(roomUnit.getCurrentLocation()); + return this.items.stream().anyMatch(itemsAtUser::contains); + } else { + RoomTile firstTileInPath = room.getLayout() + .findPath(roomUnit.getStartLocation(), roomUnit.getGoal(), roomUnit.getGoal(), roomUnit) + .peek(); + + return this.items + .stream() + .anyMatch(conditionItem -> conditionItem + .getOccupyingTiles(room.getLayout()) + .contains(firstTileInPath) + ); + } } @Override @@ -64,7 +82,7 @@ public class WiredConditionTriggerOnFurni extends InteractionWiredCondition { String[] data = set.getString("wired_data").split(";"); for (String s : data) { - HabboItem item = room.getHabboItem(Integer.valueOf(s)); + HabboItem item = room.getHabboItem(Integer.parseInt(s)); if (item != null) { this.items.add(item); From 703a2e8659ef95343f2b71e043c30f28d3896251 Mon Sep 17 00:00:00 2001 From: Remco Date: Thu, 19 Nov 2020 14:04:38 +0100 Subject: [PATCH 02/11] Fixed a leftover bug --- .../wired/conditions/WiredConditionTriggerOnFurni.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggerOnFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggerOnFurni.java index e2d446af..5dcfb9cc 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggerOnFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggerOnFurni.java @@ -42,17 +42,19 @@ public class WiredConditionTriggerOnFurni extends InteractionWiredCondition { /* * 1. If a Habbo IS NOT walking we only have to check if the Habbo is on one of the selected tiles. - * 2. If a Habbo IS walking we have to check if the very first tile in the walking path since the startlocation - * is one of the selected items + * 2. If a Habbo IS walking we have to check if the next tile in the walking path is one of the selected items * */ if (!roomUnit.isWalking()) { THashSet itemsAtUser = room.getItemsAt(roomUnit.getCurrentLocation()); return this.items.stream().anyMatch(itemsAtUser::contains); } else { RoomTile firstTileInPath = room.getLayout() - .findPath(roomUnit.getStartLocation(), roomUnit.getGoal(), roomUnit.getGoal(), roomUnit) + .findPath(roomUnit.getCurrentLocation(), roomUnit.getGoal(), roomUnit.getGoal(), roomUnit) .peek(); + if (firstTileInPath == null) + return false; + return this.items .stream() .anyMatch(conditionItem -> conditionItem From c7a0af43870ca6ac3318633cf9d7e5834ed2dd0a Mon Sep 17 00:00:00 2001 From: Remco Date: Fri, 20 Nov 2020 21:22:39 +0100 Subject: [PATCH 03/11] Fixed wired effect bot walk to furni --- .../wired/effects/WiredEffectBotWalkToFurni.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotWalkToFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotWalkToFurni.java index be2cccd6..73906c87 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotWalkToFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotWalkToFurni.java @@ -19,6 +19,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; public class WiredEffectBotWalkToFurni extends InteractionWiredEffect { public static final WiredEffectType type = WiredEffectType.BOT_MOVE; @@ -116,9 +117,14 @@ public class WiredEffectBotWalkToFurni extends InteractionWiredEffect { Bot bot = bots.get(0); this.items.removeIf(item -> item == null || item.getRoomId() != this.getRoomId() || Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()).getHabboItem(item.getId()) == null); - // wtf was that - if (this.items.size() > 0) { - HabboItem item = this.items.get(Emulator.getRandom().nextInt(this.items.size())); + // Bots shouldn't walk to the tile they are already standing on + List possibleItems = this.items.stream() + .filter(item -> !room.getBotsOnItem(item).contains(bot)) + .collect(Collectors.toList()); + + // Get a random tile of possible tiles to walk to + if (possibleItems.size() > 0) { + HabboItem item = possibleItems.get(Emulator.getRandom().nextInt(possibleItems.size())); if (item.getRoomId() != 0 && item.getRoomId() == bot.getRoom().getId()) { bot.getRoomUnit().setGoalLocation(room.getLayout().getTile(item.getX(), item.getY())); From 3353b822e4b68779e7380cfe9fc040a92636dcfc Mon Sep 17 00:00:00 2001 From: Remco Date: Mon, 23 Nov 2020 11:53:12 +0100 Subject: [PATCH 04/11] Added costumegate interaction and refactored other conditional gates --- .../habbo/habbohotel/items/ItemManager.java | 1 + .../interactions/InteractionCostumeGate.java | 108 ++++++++++++++++++ .../interactions/InteractionGuildGate.java | 8 +- .../InteractionHabboClubGate.java | 21 ++-- .../interfaces/ConditionalGate.java | 8 ++ .../eu/habbo/habbohotel/rooms/RoomUnit.java | 13 +-- .../habbo/threading/runnables/CloseGate.java | 16 +-- 7 files changed, 149 insertions(+), 26 deletions(-) create mode 100644 src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java create mode 100644 src/main/java/com/eu/habbo/habbohotel/items/interactions/interfaces/ConditionalGate.java diff --git a/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java b/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java index 3da8125f..2f258100 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java @@ -141,6 +141,7 @@ public class ItemManager { this.interactionsList.add(new ItemInteraction("puzzle_box", InteractionPuzzleBox.class)); this.interactionsList.add(new ItemInteraction("hopper", InteractionHopper.class)); this.interactionsList.add(new ItemInteraction("costume_hopper", InteractionCostumeHopper.class)); + this.interactionsList.add(new ItemInteraction("costume_gate", InteractionCostumeGate.class)); this.interactionsList.add(new ItemInteraction("club_hopper", InteractionHabboClubHopper.class)); this.interactionsList.add(new ItemInteraction("club_gate", InteractionHabboClubGate.class)); this.interactionsList.add(new ItemInteraction("club_teleporttile", InteractionHabboClubTeleportTile.class)); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java new file mode 100644 index 00000000..8e6b775d --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java @@ -0,0 +1,108 @@ +package com.eu.habbo.habbohotel.items.interactions; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.gameclients.GameClient; +import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.interfaces.ConditionalGate; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomTile; +import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; +import com.eu.habbo.habbohotel.users.Habbo; +import com.eu.habbo.habbohotel.users.HabboItem; +import com.eu.habbo.messages.ServerMessage; +import com.eu.habbo.messages.outgoing.generic.alerts.CustomNotificationComposer; +import com.eu.habbo.messages.outgoing.rooms.users.RoomUserStatusComposer; +import com.eu.habbo.threading.runnables.CloseGate; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Arrays; +import java.util.List; + +public class InteractionCostumeGate extends InteractionDefault implements ConditionalGate { + public InteractionCostumeGate(ResultSet set, Item baseItem) throws SQLException { + super(set, baseItem); + this.setExtradata("0"); + } + + public InteractionCostumeGate(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + super(id, userId, item, extradata, limitedStack, limitedSells); + this.setExtradata("0"); + } + + @Override + public boolean isWalkable() { + return true; + } + + @Override + public boolean canWalkOn(RoomUnit roomUnit, Room room, Object[] objects) { + if (roomUnit == null || room == null) + return false; + + Habbo habbo = room.getHabbo(roomUnit); + + if (habbo != null && habbo.getHabboInfo() != null) { + /* + * Get all figureparts. Figureparts are seperated by dots and each figurepart has this format: + * figureType-partID-colorID1-colorID2...-colorIDn + */ + List figureParts = Arrays.asList(habbo.getHabboInfo().getLook().split("\\.")); + + List allowedPartIds = Arrays.asList(Emulator.getConfig() + .getValue("hotel.item.condition.costume.partids") + .split(";") + ); + + // Check if at least one of the figureparts is configured as a costume and thus allowed + return figureParts.stream().anyMatch(figurePart -> { + String[] partInfo = figurePart.split("-"); + if (partInfo.length >= 2) { + String partID = partInfo[1]; // index 0 is the part, index 1 is the ID + return allowedPartIds.contains(partID); + } + return false; + }); + } + return false; + } + + @Override + public void onWalkOn(RoomUnit roomUnit, Room room, Object[] objects) throws Exception { + super.onWalkOn(roomUnit, room, objects); + + if (this.canWalkOn(roomUnit, room, objects)) { + this.setExtradata("1"); + room.updateItemState(this); + } + } + + @Override + public void onClick(GameClient client, Room room, Object[] objects) throws Exception { + if (client != null) { + if (this.canWalkOn(client.getHabbo().getRoomUnit(), room, null)) { + super.onClick(client, room, objects); + } else { + client.sendResponse(new CustomNotificationComposer(CustomNotificationComposer.GATE_NO_HC)); + } + } + } + + @Override + public void onWalkOff(RoomUnit roomUnit, Room room, Object[] objects) throws Exception { + super.onWalkOff(roomUnit, room, objects); + + Emulator.getThreading().run(new CloseGate(this, room), 1000); + } + + @Override + public void onRejected(RoomUnit roomUnit, Room room, Object[] objects) { + if (roomUnit == null || room == null) + return; + + room.getHabbo(roomUnit).getClient().sendResponse( + new CustomNotificationComposer(CustomNotificationComposer.HOPPER_NO_COSTUME) + ); + } +} diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGuildGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGuildGate.java index 176ae78d..41290215 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGuildGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionGuildGate.java @@ -3,6 +3,7 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.interfaces.ConditionalGate; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; @@ -13,7 +14,7 @@ import com.eu.habbo.threading.runnables.CloseGate; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionGuildGate extends InteractionGuildFurni { +public class InteractionGuildGate extends InteractionGuildFurni implements ConditionalGate { public InteractionGuildGate(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); this.setExtradata("0"); @@ -61,4 +62,9 @@ public class InteractionGuildGate extends InteractionGuildFurni { this.setExtradata("0"); room.updateItemState(this); } + + @Override + public void onRejected(RoomUnit roomUnit, Room room, Object[] objects) { + + } } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHabboClubGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHabboClubGate.java index f9aa57dc..f356d4d3 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHabboClubGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHabboClubGate.java @@ -3,6 +3,7 @@ package com.eu.habbo.habbohotel.items.interactions; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; +import com.eu.habbo.habbohotel.items.interactions.interfaces.ConditionalGate; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomUnit; import com.eu.habbo.habbohotel.users.Habbo; @@ -12,7 +13,7 @@ import com.eu.habbo.threading.runnables.CloseGate; import java.sql.ResultSet; import java.sql.SQLException; -public class InteractionHabboClubGate extends InteractionDefault { +public class InteractionHabboClubGate extends InteractionDefault implements ConditionalGate { public InteractionHabboClubGate(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); this.setExtradata("0"); @@ -42,14 +43,6 @@ public class InteractionHabboClubGate extends InteractionDefault { if (this.canWalkOn(roomUnit, room, objects)) { this.setExtradata("1"); room.updateItemState(this); - } else { - Habbo habbo = room.getHabbo(roomUnit); - - if (habbo != null) { - habbo.getClient().sendResponse(new CustomNotificationComposer(CustomNotificationComposer.GATE_NO_HC)); - } - - roomUnit.setGoalLocation(roomUnit.getCurrentLocation()); } } @@ -70,4 +63,14 @@ public class InteractionHabboClubGate extends InteractionDefault { Emulator.getThreading().run(new CloseGate(this, room), 1000); } + + @Override + public void onRejected(RoomUnit roomUnit, Room room, Object[] objects) { + if (roomUnit == null || room == null) + return; + + room.getHabbo(roomUnit).getClient().sendResponse( + new CustomNotificationComposer(CustomNotificationComposer.GATE_NO_HC) + ); + } } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/interfaces/ConditionalGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/interfaces/ConditionalGate.java new file mode 100644 index 00000000..3f1b06cb --- /dev/null +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/interfaces/ConditionalGate.java @@ -0,0 +1,8 @@ +package com.eu.habbo.habbohotel.items.interactions.interfaces; + +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomUnit; + +public interface ConditionalGate { + public void onRejected(RoomUnit roomUnit, Room room, Object[] objects); +} 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 91843d65..6d5fb068 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java @@ -3,10 +3,8 @@ package com.eu.habbo.habbohotel.rooms; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.bots.Bot; import com.eu.habbo.habbohotel.items.Item; -import com.eu.habbo.habbohotel.items.interactions.InteractionGuildGate; -import com.eu.habbo.habbohotel.items.interactions.InteractionHabboClubGate; -import com.eu.habbo.habbohotel.items.interactions.InteractionWater; -import com.eu.habbo.habbohotel.items.interactions.InteractionWaterItem; +import com.eu.habbo.habbohotel.items.interactions.*; +import com.eu.habbo.habbohotel.items.interactions.interfaces.ConditionalGate; import com.eu.habbo.habbohotel.pets.Pet; import com.eu.habbo.habbohotel.pets.RideablePet; import com.eu.habbo.habbohotel.users.DanceType; @@ -301,17 +299,16 @@ public class RoomUnit { if (item != habboItem || !RoomLayout.pointInSquare(item.getX(), item.getY(), item.getX() + item.getBaseItem().getWidth() - 1, item.getY() + item.getBaseItem().getLength() - 1, this.getX(), this.getY())) { if (item.canWalkOn(this, room, null)) { item.onWalkOn(this, room, new Object[]{this.getCurrentLocation(), next}); - } else if (item instanceof InteractionGuildGate || item instanceof InteractionHabboClubGate) { + } else if (item instanceof ConditionalGate) { this.setRotation(oldRotation); this.tilesWalked--; this.setGoalLocation(this.currentLocation); this.status.remove(RoomUnitStatus.MOVE); room.sendComposer(new RoomUserStatusComposer(this).compose()); - if (item instanceof InteractionHabboClubGate && habbo != null) { - habbo.getClient().sendResponse(new CustomNotificationComposer(CustomNotificationComposer.GATE_NO_HC)); + if (habbo != null) { + ((ConditionalGate) item).onRejected(this, this.getRoom(), new Object[]{}); } - return false; } } else { diff --git a/src/main/java/com/eu/habbo/threading/runnables/CloseGate.java b/src/main/java/com/eu/habbo/threading/runnables/CloseGate.java index f63e6f47..1637bc7f 100644 --- a/src/main/java/com/eu/habbo/threading/runnables/CloseGate.java +++ b/src/main/java/com/eu/habbo/threading/runnables/CloseGate.java @@ -4,22 +4,22 @@ import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.users.HabboItem; public class CloseGate implements Runnable { - private final HabboItem guildGate; + private final HabboItem gate; private final Room room; - public CloseGate(HabboItem guildGate, Room room) { - this.guildGate = guildGate; + public CloseGate(HabboItem gate, Room room) { + this.gate = gate; this.room = room; } @Override public void run() { - if (this.guildGate.getRoomId() == this.room.getId()) { + if (this.gate.getRoomId() == this.room.getId()) { if (this.room.isLoaded()) { - if (this.room.getHabbosAt(this.guildGate.getX(), this.guildGate.getY()).isEmpty()) { - this.guildGate.setExtradata("0"); - this.room.updateItem(this.guildGate); - this.guildGate.needsUpdate(true); + if (this.room.getHabbosAt(this.gate.getX(), this.gate.getY()).isEmpty()) { + this.gate.setExtradata("0"); + this.room.updateItem(this.gate); + this.gate.needsUpdate(true); } } } From 097edff63840dca4f0704ff1d8c6b2783c9a5e4e Mon Sep 17 00:00:00 2001 From: Remco Date: Mon, 23 Nov 2020 11:57:13 +0100 Subject: [PATCH 05/11] Removed unnecessary usings --- .../items/interactions/InteractionCostumeGate.java | 5 ----- src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java | 1 - 2 files changed, 6 deletions(-) diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java index 8e6b775d..c4b4460f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java @@ -5,14 +5,9 @@ import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.interfaces.ConditionalGate; import com.eu.habbo.habbohotel.rooms.Room; -import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.rooms.RoomUnitStatus; import com.eu.habbo.habbohotel.users.Habbo; -import com.eu.habbo.habbohotel.users.HabboItem; -import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.outgoing.generic.alerts.CustomNotificationComposer; -import com.eu.habbo.messages.outgoing.rooms.users.RoomUserStatusComposer; import com.eu.habbo.threading.runnables.CloseGate; import java.sql.ResultSet; 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 6d5fb068..bb078268 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnit.java @@ -10,7 +10,6 @@ import com.eu.habbo.habbohotel.pets.RideablePet; import com.eu.habbo.habbohotel.users.DanceType; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboItem; -import com.eu.habbo.messages.outgoing.generic.alerts.CustomNotificationComposer; import com.eu.habbo.messages.outgoing.rooms.users.RoomUserStatusComposer; import com.eu.habbo.plugin.Event; import com.eu.habbo.plugin.events.roomunit.RoomUnitLookAtPointEvent; From afb6e02800f9c6bf2dabb7df5add0ef890ef4d84 Mon Sep 17 00:00:00 2001 From: Remco Date: Mon, 23 Nov 2020 13:29:50 +0100 Subject: [PATCH 06/11] Made costumegate allow costumes (enables) --- .../interactions/InteractionCostumeGate.java | 30 ++----------------- 1 file changed, 2 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java index c4b4460f..325f9392 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java @@ -6,16 +6,14 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.interfaces.ConditionalGate; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.messages.outgoing.generic.alerts.CustomNotificationComposer; import com.eu.habbo.threading.runnables.CloseGate; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.Arrays; -import java.util.List; public class InteractionCostumeGate extends InteractionDefault implements ConditionalGate { + public InteractionCostumeGate(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); this.setExtradata("0"); @@ -36,31 +34,7 @@ public class InteractionCostumeGate extends InteractionDefault implements Condit if (roomUnit == null || room == null) return false; - Habbo habbo = room.getHabbo(roomUnit); - - if (habbo != null && habbo.getHabboInfo() != null) { - /* - * Get all figureparts. Figureparts are seperated by dots and each figurepart has this format: - * figureType-partID-colorID1-colorID2...-colorIDn - */ - List figureParts = Arrays.asList(habbo.getHabboInfo().getLook().split("\\.")); - - List allowedPartIds = Arrays.asList(Emulator.getConfig() - .getValue("hotel.item.condition.costume.partids") - .split(";") - ); - - // Check if at least one of the figureparts is configured as a costume and thus allowed - return figureParts.stream().anyMatch(figurePart -> { - String[] partInfo = figurePart.split("-"); - if (partInfo.length >= 2) { - String partID = partInfo[1]; // index 0 is the part, index 1 is the ID - return allowedPartIds.contains(partID); - } - return false; - }); - } - return false; + return roomUnit.getEffectId() > 0; } @Override From f4719ee042689650a7bbe2668f508ff778beb424 Mon Sep 17 00:00:00 2001 From: Remco Date: Mon, 23 Nov 2020 13:42:50 +0100 Subject: [PATCH 07/11] Costume gates doesnt send a custom message when not allowed to get through --- .../items/interactions/InteractionCostumeGate.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java index 325f9392..ca0081fd 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java @@ -67,11 +67,6 @@ public class InteractionCostumeGate extends InteractionDefault implements Condit @Override public void onRejected(RoomUnit roomUnit, Room room, Object[] objects) { - if (roomUnit == null || room == null) - return; - - room.getHabbo(roomUnit).getClient().sendResponse( - new CustomNotificationComposer(CustomNotificationComposer.HOPPER_NO_COSTUME) - ); + } } From 771f386b563c124fe81afd626f7d52e10a3c21a0 Mon Sep 17 00:00:00 2001 From: Remco Date: Mon, 23 Nov 2020 14:00:43 +0100 Subject: [PATCH 08/11] Fixed onclick method --- .../items/interactions/InteractionCostumeGate.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java index ca0081fd..20034266 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java @@ -6,7 +6,6 @@ import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.interactions.interfaces.ConditionalGate; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomUnit; -import com.eu.habbo.messages.outgoing.generic.alerts.CustomNotificationComposer; import com.eu.habbo.threading.runnables.CloseGate; import java.sql.ResultSet; @@ -49,13 +48,7 @@ public class InteractionCostumeGate extends InteractionDefault implements Condit @Override public void onClick(GameClient client, Room room, Object[] objects) throws Exception { - if (client != null) { - if (this.canWalkOn(client.getHabbo().getRoomUnit(), room, null)) { - super.onClick(client, room, objects); - } else { - client.sendResponse(new CustomNotificationComposer(CustomNotificationComposer.GATE_NO_HC)); - } - } + super.onClick(client, room, objects); } @Override @@ -67,6 +60,6 @@ public class InteractionCostumeGate extends InteractionDefault implements Condit @Override public void onRejected(RoomUnit roomUnit, Room room, Object[] objects) { - + } } From f952ac15d286edec7e06d5f06d36e9748ae2b5aa Mon Sep 17 00:00:00 2001 From: Remco Date: Mon, 23 Nov 2020 15:10:27 +0100 Subject: [PATCH 09/11] Changed CostumeHopper to EffectHopper and made effect configurable with customparams --- .../habbo/habbohotel/items/ItemManager.java | 2 +- ...meGate.java => InteractionEffectGate.java} | 28 ++++++++++++++++--- 2 files changed, 25 insertions(+), 5 deletions(-) rename src/main/java/com/eu/habbo/habbohotel/items/interactions/{InteractionCostumeGate.java => InteractionEffectGate.java} (60%) diff --git a/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java b/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java index 2f258100..f702d68c 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java @@ -141,7 +141,7 @@ public class ItemManager { this.interactionsList.add(new ItemInteraction("puzzle_box", InteractionPuzzleBox.class)); this.interactionsList.add(new ItemInteraction("hopper", InteractionHopper.class)); this.interactionsList.add(new ItemInteraction("costume_hopper", InteractionCostumeHopper.class)); - this.interactionsList.add(new ItemInteraction("costume_gate", InteractionCostumeGate.class)); + this.interactionsList.add(new ItemInteraction("effect_gate", InteractionEffectGate.class)); this.interactionsList.add(new ItemInteraction("club_hopper", InteractionHabboClubHopper.class)); this.interactionsList.add(new ItemInteraction("club_gate", InteractionHabboClubGate.class)); this.interactionsList.add(new ItemInteraction("club_teleporttile", InteractionHabboClubTeleportTile.class)); diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectGate.java similarity index 60% rename from src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java rename to src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectGate.java index 20034266..0e6ad5d7 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionCostumeGate.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionEffectGate.java @@ -10,15 +10,28 @@ import com.eu.habbo.threading.runnables.CloseGate; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; -public class InteractionCostumeGate extends InteractionDefault implements ConditionalGate { +public class InteractionEffectGate extends InteractionDefault implements ConditionalGate { - public InteractionCostumeGate(ResultSet set, Item baseItem) throws SQLException { + // List of Habboween costumes according to http://www.habboxwiki.com/Costumes + private static final List defaultAllowedEnables = new ArrayList<>(Arrays.asList( + 114, // Strong Arms + 115, // Ringmaster Costume + 116, // Fly Head + 117, // Executioner Hood + 118, // Evil Clown Paint + 135 // Marionette + )); + + public InteractionEffectGate(ResultSet set, Item baseItem) throws SQLException { super(set, baseItem); this.setExtradata("0"); } - public InteractionCostumeGate(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { + public InteractionEffectGate(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { super(id, userId, item, extradata, limitedStack, limitedSells); this.setExtradata("0"); } @@ -33,7 +46,14 @@ public class InteractionCostumeGate extends InteractionDefault implements Condit if (roomUnit == null || room == null) return false; - return roomUnit.getEffectId() > 0; + String customparams = this.getBaseItem().getCustomParams().trim(); + + if (!customparams.isEmpty()) { + return Arrays.asList(customparams.split(";")) + .contains(Integer.valueOf(roomUnit.getEffectId()).toString()); + } + + return defaultAllowedEnables.contains(roomUnit.getEffectId()); } @Override From fd0eb0c2a5e49250752fc1f97fcb24e3e846d6f3 Mon Sep 17 00:00:00 2001 From: Remco Date: Tue, 24 Nov 2020 14:40:42 +0100 Subject: [PATCH 10/11] Refactored todo guildRightLevel method --- .../habbohotel/commands/CommandHandler.java | 5 +-- .../habbohotel/commands/EjectAllCommand.java | 3 +- .../com/eu/habbo/habbohotel/rooms/Room.java | 33 +++++++++---------- .../habbo/habbohotel/rooms/RoomManager.java | 8 ++--- .../habbohotel/rooms/RoomRightLevels.java | 16 +++++++++ .../items/MoodLightSaveSettingsEvent.java | 3 +- .../rooms/items/MoodLightTurnOnEvent.java | 3 +- .../rooms/items/MoveWallItemEvent.java | 3 +- .../promotions/BuyRoomPromotionEvent.java | 3 +- 9 files changed, 49 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java b/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java index 47e06da7..1ec167c4 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java @@ -10,6 +10,7 @@ import com.eu.habbo.habbohotel.pets.PetCommand; import com.eu.habbo.habbohotel.pets.PetVocalsType; import com.eu.habbo.habbohotel.pets.RideablePet; import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomRightLevels; import com.eu.habbo.messages.outgoing.rooms.users.RoomUserTypingComposer; import com.eu.habbo.plugin.events.users.UserCommandEvent; import com.eu.habbo.plugin.events.users.UserExecuteCommandEvent; @@ -72,7 +73,7 @@ public class CommandHandler { for (String s : command.keys) { if (s.toLowerCase().equals(parts[0].toLowerCase())) { boolean succes = false; - if (command.permission == null || gameClient.getHabbo().hasPermission(command.permission, gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null && (gameClient.getHabbo().getHabboInfo().getCurrentRoom().hasRights(gameClient.getHabbo())) || gameClient.getHabbo().hasPermission(Permission.ACC_PLACEFURNI) || (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null && gameClient.getHabbo().getHabboInfo().getCurrentRoom().getGuildId() > 0 && gameClient.getHabbo().getHabboInfo().getCurrentRoom().guildRightLevel(gameClient.getHabbo()) >= 2))) { + if (command.permission == null || gameClient.getHabbo().hasPermission(command.permission, gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null && (gameClient.getHabbo().getHabboInfo().getCurrentRoom().hasRights(gameClient.getHabbo())) || gameClient.getHabbo().hasPermission(Permission.ACC_PLACEFURNI) || (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null && gameClient.getHabbo().getHabboInfo().getCurrentRoom().getGuildId() > 0 && gameClient.getHabbo().getHabboInfo().getCurrentRoom().getGuildRightLevel(gameClient.getHabbo()).isEqualOrGreaterThan(RoomRightLevels.GUILD_RIGHTS)))) { try { UserExecuteCommandEvent userExecuteCommandEvent = new UserExecuteCommandEvent(gameClient.getHabbo(), command, parts); Emulator.getPluginManager().fireEvent(userExecuteCommandEvent); @@ -319,4 +320,4 @@ public class CommandHandler { commands.clear(); LOGGER.info("Command Handler -> Disposed!"); } -} \ No newline at end of file +} diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/EjectAllCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/EjectAllCommand.java index 8e5ab590..51fa9589 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/EjectAllCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/EjectAllCommand.java @@ -3,6 +3,7 @@ package com.eu.habbo.habbohotel.commands; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomRightLevels; public class EjectAllCommand extends Command { public EjectAllCommand() { @@ -14,7 +15,7 @@ public class EjectAllCommand extends Command { Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom(); if (room != null) { - if (room.isOwner(gameClient.getHabbo()) || (room.hasGuild() && room.guildRightLevel(gameClient.getHabbo()) == 3)) { + if (room.isOwner(gameClient.getHabbo()) || (room.hasGuild() && room.getGuildRightLevel(gameClient.getHabbo()).equals(RoomRightLevels.GUILD_ADMIN))) { room.ejectAll(gameClient.getHabbo()); } } 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 1840a150..ed6a8e96 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java @@ -73,7 +73,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.awt.*; -import java.lang.reflect.InvocationTargetException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -3841,20 +3840,27 @@ public class Room implements Comparable, ISerialize, Runnable { } } - //TODO: Return Enum - public int guildRightLevel(Habbo habbo) { + public RoomRightLevels getGuildRightLevel(Habbo habbo) { if (this.guild > 0 && habbo.getHabboStats().hasGuild(this.guild)) { Guild guild = Emulator.getGameEnvironment().getGuildManager().getGuild(this.guild); if (Emulator.getGameEnvironment().getGuildManager().getOnlyAdmins(guild).get(habbo.getHabboInfo().getId()) != null) - return 3; + return RoomRightLevels.GUILD_ADMIN; if (guild.getRights()) { - return 2; + return RoomRightLevels.GUILD_RIGHTS; } } - return 0; + return RoomRightLevels.NONE; + } + + /** + * @deprecated Deprecated since 2.5.0. Use {@link #getGuildRightLevel(Habbo)} instead. + */ + @Deprecated + public int guildRightLevel(Habbo habbo) { + return this.getGuildRightLevel(habbo).level; } public boolean isOwner(Habbo habbo) { @@ -3971,16 +3977,9 @@ public class Room implements Comparable, ISerialize, Runnable { } else if (this.hasRights(habbo) && !this.hasGuild()) { flatCtrl = RoomRightLevels.RIGHTS; } else if (this.hasGuild()) { - int level = this.guildRightLevel(habbo); - - if (level == 3) { - flatCtrl = RoomRightLevels.GUILD_ADMIN; - } else if (level == 2) { - flatCtrl = RoomRightLevels.GUILD_RIGHTS; - } + flatCtrl = this.getGuildRightLevel(habbo); } - habbo.getClient().sendResponse(new RoomRightsComposer(flatCtrl)); habbo.getRoomUnit().setStatus(RoomUnitStatus.FLAT_CONTROL, flatCtrl.level + ""); habbo.getRoomUnit().setRightsLevel(flatCtrl); @@ -4422,7 +4421,7 @@ public class Room implements Comparable, ISerialize, Runnable { } rotation %= 8; - if (this.hasRights(habbo) || this.guildRightLevel(habbo) >= 2 || habbo.hasPermission(Permission.ACC_MOVEROTATE)) { + if (this.hasRights(habbo) || this.getGuildRightLevel(habbo).isEqualOrGreaterThan(RoomRightLevels.GUILD_RIGHTS) || habbo.hasPermission(Permission.ACC_MOVEROTATE)) { return FurnitureMovementError.NONE; } @@ -4537,7 +4536,7 @@ public class Room implements Comparable, ISerialize, Runnable { } public FurnitureMovementError placeWallFurniAt(HabboItem item, String wallPosition, Habbo owner) { - if (!(this.hasRights(owner) || this.guildRightLevel(owner) >= 2)) { + if (!(this.hasRights(owner) || this.getGuildRightLevel(owner).isEqualOrGreaterThan(RoomRightLevels.GUILD_RIGHTS))) { return FurnitureMovementError.NO_RIGHTS; } @@ -4777,4 +4776,4 @@ public class Room implements Comparable, ISerialize, Runnable { THashSet roomUnits = getRoomUnits(); return roomUnits.stream().filter(unit -> unit.getCurrentLocation() == tile).collect(Collectors.toSet()); } -} \ No newline at end of file +} diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java index 0f5b83b0..102ca77d 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java @@ -531,14 +531,14 @@ public class RoomManager { habbo.hasPermission(Permission.ACC_ENTERANYROOM) || room.hasRights(habbo) || (room.getState().equals(RoomState.INVISIBLE) && room.hasRights(habbo)) || - (room.hasGuild() && room.guildRightLevel(habbo) > 2)) { + (room.hasGuild() && room.getGuildRightLevel(habbo).isGreaterThan(RoomRightLevels.GUILD_RIGHTS))) { this.openRoom(habbo, room, doorLocation); } else if (room.getState() == RoomState.LOCKED) { boolean rightsFound = false; synchronized (room.roomUnitLock) { for (Habbo current : room.getHabbos()) { - if (room.hasRights(current) || current.getHabboInfo().getId() == room.getOwnerId() || (room.hasGuild() && room.guildRightLevel(current) >= 2)) { + if (room.hasRights(current) || current.getHabboInfo().getId() == room.getOwnerId() || (room.hasGuild() && room.getGuildRightLevel(current).isEqualOrGreaterThan(RoomRightLevels.GUILD_RIGHTS))) { current.getClient().sendResponse(new DoorbellAddUserComposer(habbo.getHabboInfo().getUsername())); rightsFound = true; } @@ -875,7 +875,7 @@ public class RoomManager { habbo.getClient().sendResponse(new RoomUsersGuildBadgesComposer(guildBadges)); - if (room.hasRights(habbo) || (room.hasGuild() && room.guildRightLevel(habbo) >= 2)) { + if (room.hasRights(habbo) || (room.hasGuild() && room.getGuildRightLevel(habbo).isEqualOrGreaterThan(RoomRightLevels.GUILD_RIGHTS))) { if (!room.getHabboQueue().isEmpty()) { for (Habbo waiting : room.getHabboQueue().valueCollection()) { habbo.getClient().sendResponse(new DoorbellAddUserComposer(waiting.getHabboInfo().getUsername())); @@ -1555,4 +1555,4 @@ public class RoomManager { this.duration = duration; } } -} \ No newline at end of file +} diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomRightLevels.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomRightLevels.java index 9795ec9c..fef685a4 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomRightLevels.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomRightLevels.java @@ -36,4 +36,20 @@ public enum RoomRightLevels { RoomRightLevels(int level) { this.level = level; } + + public boolean equals(RoomRightLevels level) { + return this.level == level.level; + } + + public boolean isEqualOrGreaterThan(RoomRightLevels level) { + return this.level >= level.level; + } + + public boolean isGreaterThan(RoomRightLevels level) { + return this.level > level.level; + } + + public boolean isLessThan(RoomRightLevels level) { + return this.level < level.level; + } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoodLightSaveSettingsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoodLightSaveSettingsEvent.java index 04934da6..731e6490 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoodLightSaveSettingsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoodLightSaveSettingsEvent.java @@ -5,6 +5,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionMoodLight; import com.eu.habbo.habbohotel.modtool.ScripterManager; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomMoodlightData; +import com.eu.habbo.habbohotel.rooms.RoomRightLevels; import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.items.MoodLightDataComposer; @@ -20,7 +21,7 @@ public class MoodLightSaveSettingsEvent extends MessageHandler { public void handle() throws Exception { Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); - if ((room.getGuildId() <= 0 && room.guildRightLevel(this.client.getHabbo()) < 2) && !room.hasRights(this.client.getHabbo())) + if ((room.getGuildId() <= 0 && room.getGuildRightLevel(this.client.getHabbo()).isLessThan(RoomRightLevels.GUILD_RIGHTS)) && !room.hasRights(this.client.getHabbo())) return; int id = this.packet.readInt(); diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoodLightTurnOnEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoodLightTurnOnEvent.java index eee75a7b..4f2e8eb5 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoodLightTurnOnEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoodLightTurnOnEvent.java @@ -4,6 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.interactions.InteractionMoodLight; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomMoodlightData; +import com.eu.habbo.habbohotel.rooms.RoomRightLevels; import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.incoming.MessageHandler; @@ -12,7 +13,7 @@ public class MoodLightTurnOnEvent extends MessageHandler { public void handle() throws Exception { Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); - if ((room.getGuildId() > 0 && room.guildRightLevel(this.client.getHabbo()) < 2) && !room.hasRights(this.client.getHabbo())) + if ((room.getGuildId() > 0 && room.getGuildRightLevel(this.client.getHabbo()).isLessThan(RoomRightLevels.GUILD_RIGHTS)) && !room.hasRights(this.client.getHabbo())) return; for (HabboItem moodLight : room.getRoomSpecialTypes().getItemsOfType(InteractionMoodLight.class)) { diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoveWallItemEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoveWallItemEvent.java index bb260add..10397073 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoveWallItemEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoveWallItemEvent.java @@ -3,6 +3,7 @@ package com.eu.habbo.messages.incoming.rooms.items; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.FurnitureMovementError; import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomRightLevels; import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertComposer; @@ -16,7 +17,7 @@ public class MoveWallItemEvent extends MessageHandler { if (room == null) return; - if (!room.hasRights(this.client.getHabbo()) && !this.client.getHabbo().hasPermission(Permission.ACC_PLACEFURNI) && !(room.getGuildId() > 0 && room.guildRightLevel(this.client.getHabbo()) >= 2)) { + if (!room.hasRights(this.client.getHabbo()) && !this.client.getHabbo().hasPermission(Permission.ACC_PLACEFURNI) && !(room.getGuildId() > 0 && room.getGuildRightLevel(this.client.getHabbo()).isEqualOrGreaterThan(RoomRightLevels.GUILD_RIGHTS))) { this.client.sendResponse(new BubbleAlertComposer(BubbleAlertKeys.FURNITURE_PLACEMENT_ERROR.key, FurnitureMovementError.NO_RIGHTS.errorCode)); return; } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/promotions/BuyRoomPromotionEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/promotions/BuyRoomPromotionEvent.java index 511f9829..fdf37650 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/promotions/BuyRoomPromotionEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/promotions/BuyRoomPromotionEvent.java @@ -5,6 +5,7 @@ import com.eu.habbo.habbohotel.catalog.CatalogItem; import com.eu.habbo.habbohotel.catalog.CatalogPage; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomRightLevels; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.catalog.AlertPurchaseFailedComposer; import com.eu.habbo.messages.outgoing.catalog.PurchaseOKComposer; @@ -35,7 +36,7 @@ public class BuyRoomPromotionEvent extends MessageHandler { if (this.client.getHabbo().getHabboInfo().canBuy(item)) { Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); - if (!(room.isOwner(this.client.getHabbo()) || room.hasRights(this.client.getHabbo()) || room.guildRightLevel(this.client.getHabbo()) == 3)) { + if (!(room.isOwner(this.client.getHabbo()) || room.hasRights(this.client.getHabbo()) || room.getGuildRightLevel(this.client.getHabbo()).equals(RoomRightLevels.GUILD_ADMIN))) { return; } From ae137945f323254637fd18d462b6e597c5e262d0 Mon Sep 17 00:00:00 2001 From: Harmonic Date: Thu, 10 Dec 2020 09:44:51 -0800 Subject: [PATCH 11/11] Updated Version Number. Scrap 2.5, start 3.0. --- pom.xml | 2 +- .../{2_4_0 to 2_5_0-RC-1.sql => 2_4_0 to 3_0_BETA_1.sql} | 0 src/main/java/com/eu/habbo/Emulator.java | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) rename sqlupdates/{2_4_0 to 2_5_0-RC-1.sql => 2_4_0 to 3_0_BETA_1.sql} (100%) diff --git a/pom.xml b/pom.xml index 50967e7b..419c9bea 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.eu.habbo Habbo - 2.5.0 + 3.0.0 UTF-8 diff --git a/sqlupdates/2_4_0 to 2_5_0-RC-1.sql b/sqlupdates/2_4_0 to 3_0_BETA_1.sql similarity index 100% rename from sqlupdates/2_4_0 to 2_5_0-RC-1.sql rename to sqlupdates/2_4_0 to 3_0_BETA_1.sql diff --git a/src/main/java/com/eu/habbo/Emulator.java b/src/main/java/com/eu/habbo/Emulator.java index 0d132f78..5b2ab38d 100644 --- a/src/main/java/com/eu/habbo/Emulator.java +++ b/src/main/java/com/eu/habbo/Emulator.java @@ -35,8 +35,8 @@ public final class Emulator { private static final String OS_NAME = System.getProperty("os.name"); private static final String CLASS_PATH = System.getProperty("java.class.path"); - public final static int MAJOR = 2; - public final static int MINOR = 5; + public final static int MAJOR = 3; + public final static int MINOR = 0; public final static int BUILD = 0; public final static String PREVIEW = "Beta 1";