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 d1c9a692..9157886e 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java @@ -4,6 +4,7 @@ import com.eu.habbo.Emulator; import com.eu.habbo.core.RoomUserPetComposer; import com.eu.habbo.habbohotel.achievements.AchievementManager; import com.eu.habbo.habbohotel.bots.Bot; +import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.games.Game; import com.eu.habbo.habbohotel.games.battlebanzai.BattleBanzaiGame; import com.eu.habbo.habbohotel.games.football.FootballGame; @@ -40,6 +41,7 @@ import com.eu.habbo.messages.outgoing.rooms.pets.RoomPetComposer; import com.eu.habbo.messages.outgoing.rooms.promotions.RoomPromotionMessageComposer; import com.eu.habbo.messages.outgoing.rooms.users.*; import com.eu.habbo.messages.outgoing.users.MutedWhisperComposer; +import com.eu.habbo.plugin.Event; import com.eu.habbo.plugin.events.navigator.NavigatorRoomCreatedEvent; import com.eu.habbo.plugin.events.rooms.RoomUncachedEvent; import com.eu.habbo.plugin.events.rooms.UserVoteRoomEvent; @@ -710,9 +712,20 @@ public class RoomManager { List habbos = new ArrayList<>(); if (!room.getCurrentHabbos().isEmpty()) { + Collection habbosToSendEnter = room.getCurrentHabbos().values(); - room.sendComposer(new RoomUsersComposer(habbo).compose()); - room.sendComposer(new RoomUserStatusComposer(habbo.getRoomUnit()).compose()); + if (Emulator.getPluginManager().isRegistered(HabboAddedToRoomEvent.class, false)) { + HabboAddedToRoomEvent event = Emulator.getPluginManager().fireEvent(new HabboAddedToRoomEvent(habbo, room, habbosToSendEnter)); + habbosToSendEnter = event.habbosToSendEnter; + } + + for (Habbo habboToSendEnter : habbosToSendEnter) { + GameClient client = habboToSendEnter.getClient(); + if (client != null) { + client.sendResponse(new RoomUsersComposer(habbo).compose()); + habboToSendEnter.getClient().sendResponse(new RoomUserStatusComposer(habbo.getRoomUnit()).compose()); + } + } for (Habbo h : room.getHabbos()) { if (!h.getRoomUnit().isInvisible()) { @@ -890,10 +903,6 @@ public class RoomManager { if (!habbo.getHabboStats().nux && (room.isOwner(habbo) || room.isPublicRoom())) { UserNuxEvent.handle(habbo); } - - if (Emulator.getPluginManager().isRegistered(HabboAddedToRoomEvent.class, false)) { - Emulator.getPluginManager().fireEvent(new HabboAddedToRoomEvent(habbo, room)); - } } void logEnter(Habbo habbo, Room room) { diff --git a/src/main/java/com/eu/habbo/plugin/events/users/HabboAddedToRoomEvent.java b/src/main/java/com/eu/habbo/plugin/events/users/HabboAddedToRoomEvent.java index be861f8a..d31f4a6c 100644 --- a/src/main/java/com/eu/habbo/plugin/events/users/HabboAddedToRoomEvent.java +++ b/src/main/java/com/eu/habbo/plugin/events/users/HabboAddedToRoomEvent.java @@ -3,14 +3,18 @@ package com.eu.habbo.plugin.events.users; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.users.Habbo; +import java.util.Collection; + public class HabboAddedToRoomEvent extends UserEvent { public final Room room; + public final Collection habbosToSendEnter; - public HabboAddedToRoomEvent(Habbo habbo, Room room) { + public HabboAddedToRoomEvent(Habbo habbo, Room room, Collection habbosToSendEnter) { super(habbo); this.room = room; + this.habbosToSendEnter = habbosToSendEnter; } }