From 53cc5216e8153bf16dae97a2152b6509310e08cc Mon Sep 17 00:00:00 2001 From: Alejandro <25-alejandro@users.noreply.git.krews.org> Date: Sun, 26 May 2019 21:34:40 +0300 Subject: [PATCH 1/5] Unidle users when WIRED: Show Message is triggered --- .../items/interactions/wired/effects/WiredEffectWhisper.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectWhisper.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectWhisper.java index f43834ba..3cc5872a 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectWhisper.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectWhisper.java @@ -88,6 +88,10 @@ public class WiredEffectWhisper extends InteractionWiredEffect { if (habbo != null) { habbo.getClient().sendResponse(new RoomUserWhisperComposer(new RoomChatMessage(this.message.replace("%user%", habbo.getHabboInfo().getUsername()).replace("%online_count%", Emulator.getGameEnvironment().getHabboManager().getOnlineCount() + "").replace("%room_count%", Emulator.getGameEnvironment().getRoomManager().getActiveRooms().size() + ""), habbo, habbo, RoomChatMessageBubbles.WIRED))); + + if (habbo.getRoomUnit().isIdle()) { + habbo.getRoomUnit().getRoom().unIdle(habbo); + } return true; } } else { From 7e9eb84d39a41160aba0dfe2606f64fa219eb0fc Mon Sep 17 00:00:00 2001 From: Alejandro <25-alejandro@users.noreply.git.krews.org> Date: Sun, 26 May 2019 21:46:00 +0300 Subject: [PATCH 2/5] Remove users with rights when a group is created --- .../eu/habbo/messages/incoming/guilds/RequestGuildBuyEvent.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/eu/habbo/messages/incoming/guilds/RequestGuildBuyEvent.java b/src/main/java/com/eu/habbo/messages/incoming/guilds/RequestGuildBuyEvent.java index b5b31be9..ea5e530b 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/guilds/RequestGuildBuyEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/guilds/RequestGuildBuyEvent.java @@ -74,6 +74,7 @@ public class RequestGuildBuyEvent extends MessageHandler { Guild guild = Emulator.getGameEnvironment().getGuildManager().createGuild(this.client.getHabbo(), roomId, r.getName(), name, description, badge, colorOne, colorTwo); r.setGuild(guild.getId()); + r.removeAllRights(); r.setNeedsUpdate(true); if (Emulator.getConfig().getBoolean("imager.internal.enabled")) { From 766fa148d085b57e00a2056faa76bbd85f3429af Mon Sep 17 00:00:00 2001 From: Alejandro <25-alejandro@users.noreply.git.krews.org> Date: Sun, 26 May 2019 21:49:15 +0300 Subject: [PATCH 3/5] Fix NullPointerException in RoomRelativeMapComposer --- .../com/eu/habbo/habbohotel/commands/UpdateItemsCommand.java | 2 +- .../messages/incoming/rooms/RequestRoomHeightmapEvent.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateItemsCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateItemsCommand.java index a827507d..073b2517 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/UpdateItemsCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/UpdateItemsCommand.java @@ -19,7 +19,7 @@ public class UpdateItemsCommand extends Command { synchronized (Emulator.getGameEnvironment().getRoomManager().getActiveRooms()) { for (Room room : Emulator.getGameEnvironment().getRoomManager().getActiveRooms()) { - if (room.isLoaded() && room.getUserCount() > 0) { + if (room.isLoaded() && room.getUserCount() > 0 && room.getLayout() != null) { room.sendComposer(new RoomRelativeMapComposer(room).compose()); } } diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/RequestRoomHeightmapEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/RequestRoomHeightmapEvent.java index 6e281ce2..294f2873 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/RequestRoomHeightmapEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/RequestRoomHeightmapEvent.java @@ -12,7 +12,7 @@ public class RequestRoomHeightmapEvent extends MessageHandler { if (this.client.getHabbo().getHabboInfo().getLoadingRoom() > 0) { Room room = Emulator.getGameEnvironment().getRoomManager().loadRoom(this.client.getHabbo().getHabboInfo().getLoadingRoom()); - if (room != null) { + if (room != null && room.getLayout() != null) { this.client.sendResponse(new RoomRelativeMapComposer(room)); this.client.sendResponse(new RoomHeightMapComposer(room)); From 8b6c18c11d271510b107cdfd75aa655b68bd9a6d Mon Sep 17 00:00:00 2001 From: Alejandro <25-alejandro@users.noreply.git.krews.org> Date: Sun, 26 May 2019 21:54:41 +0300 Subject: [PATCH 4/5] Fix modtool room info --- .../incoming/modtool/ModToolRequestRoomInfoEvent.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/eu/habbo/messages/incoming/modtool/ModToolRequestRoomInfoEvent.java b/src/main/java/com/eu/habbo/messages/incoming/modtool/ModToolRequestRoomInfoEvent.java index 3aff8583..5f140550 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/modtool/ModToolRequestRoomInfoEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/modtool/ModToolRequestRoomInfoEvent.java @@ -11,10 +11,9 @@ public class ModToolRequestRoomInfoEvent extends MessageHandler { @Override public void handle() throws Exception { if (this.client.getHabbo().hasPermission(Permission.ACC_SUPPORTTOOL)) { - //int roomId = this.packet.readInt(); + int roomId = this.packet.readInt(); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); - //Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); + Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId); if (room != null) { this.client.sendResponse(new ModToolRoomInfoComposer(room)); From 3506f049ced9f1626d820665f63735d69733b527 Mon Sep 17 00:00:00 2001 From: Alejandro <25-alejandro@users.noreply.git.krews.org> Date: Sun, 26 May 2019 22:33:51 +0300 Subject: [PATCH 5/5] Add RoomDecoFurniTypeCount achievement --- .../interactions/InteractionBlackHole.java | 2 ++ .../interactions/InteractionMoodLight.java | 2 ++ .../items/interactions/InteractionWater.java | 1 + .../interactions/InteractionWaterItem.java | 1 + .../InteractionWiredHighscore.java | 1 + .../games/InteractionGameTimer.java | 2 ++ .../com/eu/habbo/habbohotel/rooms/Room.java | 10 ++++++++++ .../eu/habbo/habbohotel/users/HabboItem.java | 18 ++++++++++++++++++ 8 files changed, 37 insertions(+) diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBlackHole.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBlackHole.java index 29c0e0ac..f669479a 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBlackHole.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionBlackHole.java @@ -40,5 +40,7 @@ public class InteractionBlackHole extends InteractionGate { AchievementManager.progressAchievement(this.getUserId(), holeCountAchievement, holeDifference); } } + + super.onPlace(room); } } \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMoodLight.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMoodLight.java index d9c181d6..ee30d1eb 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMoodLight.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionMoodLight.java @@ -55,6 +55,8 @@ public class InteractionMoodLight extends HabboItem { } } } + + super.onPlace(room); } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWater.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWater.java index 9a7c0183..0c10f69f 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWater.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWater.java @@ -59,6 +59,7 @@ public class InteractionWater extends InteractionDefault { @Override public void onPlace(Room room) { this.recalculate(room); + super.onPlace(room); } public void refreshWaters(Room room) { diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWaterItem.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWaterItem.java index 481c8ad3..a9840636 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWaterItem.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWaterItem.java @@ -25,6 +25,7 @@ public class InteractionWaterItem extends InteractionDefault { @Override public void onPlace(Room room) { this.update(); + super.onPlace(room); } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWiredHighscore.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWiredHighscore.java index 5f79597a..9da022e9 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWiredHighscore.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionWiredHighscore.java @@ -143,6 +143,7 @@ public class InteractionWiredHighscore extends HabboItem { @Override public void onPlace(Room room) { this.reloadData(room); + super.onPlace(room); } @Override diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/InteractionGameTimer.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/InteractionGameTimer.java index 186d3afd..54d90cd8 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/InteractionGameTimer.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/games/InteractionGameTimer.java @@ -138,6 +138,8 @@ public abstract class InteractionGameTimer extends HabboItem implements Runnable this.setExtradata(this.timeNow + "\t" + this.baseTime); room.updateItem(this); + + super.onPlace(room); } @Override 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 c1f21496..5077d99a 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java @@ -3994,6 +3994,16 @@ public class Room implements Comparable, ISerialize, Runnable { return this.furniOwnerCount.get(userId); } + public int getUserUniqueFurniCount(int userId) { + THashSet items = new THashSet<>(); + + for (HabboItem item : this.roomItems.valueCollection()) { + if (!items.contains(item.getBaseItem()) && item.getUserId() == userId) items.add(item.getBaseItem()); + } + + return items.size(); + } + public void ejectUserFurni(int userId) { THashSet items = new THashSet<>(); diff --git a/src/main/java/com/eu/habbo/habbohotel/users/HabboItem.java b/src/main/java/com/eu/habbo/habbohotel/users/HabboItem.java index 5390cb12..ff027dd2 100644 --- a/src/main/java/com/eu/habbo/habbohotel/users/HabboItem.java +++ b/src/main/java/com/eu/habbo/habbohotel/users/HabboItem.java @@ -323,6 +323,24 @@ public abstract class HabboItem implements Runnable, IEventTriggers { AchievementManager.progressAchievement(this.getUserId(), roomDecoAchievement, difference); } } + + Achievement roomDecoUniqueAchievement = Emulator.getGameEnvironment().getAchievementManager().getAchievement("RoomDecoFurniTypeCount"); + + int uniqueFurniCollecterProgress; + if (owner == null) { + uniqueFurniCollecterProgress = AchievementManager.getAchievementProgressForHabbo(this.getUserId(), roomDecoUniqueAchievement); + } else { + uniqueFurniCollecterProgress = owner.getHabboStats().getAchievementProgress(roomDecoUniqueAchievement); + } + + int uniqueDifference = room.getUserUniqueFurniCount(this.getUserId()) - uniqueFurniCollecterProgress; + if (uniqueDifference > 0) { + if (owner != null) { + AchievementManager.progressAchievement(owner, roomDecoUniqueAchievement, uniqueDifference); + } else { + AchievementManager.progressAchievement(this.getUserId(), roomDecoUniqueAchievement, uniqueDifference); + } + } } public void onPickUp(Room room) {