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) {