diff --git a/src/main/java/com/eu/habbo/messages/NoAuthMessage.java b/src/main/java/com/eu/habbo/messages/NoAuthMessage.java new file mode 100644 index 00000000..47487068 --- /dev/null +++ b/src/main/java/com/eu/habbo/messages/NoAuthMessage.java @@ -0,0 +1,7 @@ +package com.eu.habbo.messages; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) +public @interface NoAuthMessage {} diff --git a/src/main/java/com/eu/habbo/messages/PacketManager.java b/src/main/java/com/eu/habbo/messages/PacketManager.java index 989a6e6d..d5e2eb8e 100644 --- a/src/main/java/com/eu/habbo/messages/PacketManager.java +++ b/src/main/java/com/eu/habbo/messages/PacketManager.java @@ -156,11 +156,20 @@ public class PacketManager { if (client == null || Emulator.isShuttingDown) return; - if (client.getHabbo() == null && !(packet.getMessageId() == Incoming.SecureLoginEvent || packet.getMessageId() == Incoming.MachineIDEvent)) - return; - try { if (this.isRegistered(packet.getMessageId())) { + Class handlerClass = this.incoming.get(packet.getMessageId()); + + if (handlerClass == null) throw new Exception("Unknown message " + packet.getMessageId()); + + if (client.getHabbo() == null && !handlerClass.isAnnotationPresent(NoAuthMessage.class)) { + if (DEBUG_SHOW_PACKETS) { + Emulator.getLogging().logPacketLine("[\033[36mCLIENT\033[0m][\033[33mNOT LOGGED IN\033[0m][" + packet.getMessageId() + "] => " + packet.getMessageBody()); + } + + return; + } + if (PacketManager.DEBUG_SHOW_PACKETS) Emulator.getLogging().logPacketLine("[" + Logging.ANSI_CYAN + "CLIENT" + Logging.ANSI_RESET + "][" + packet.getMessageId() + "] => " + packet.getMessageBody()); @@ -168,7 +177,7 @@ public class PacketManager { System.out.println(("[" + Logging.ANSI_CYAN + "CLIENT" + Logging.ANSI_RESET + "][" + client.getHabbo().getHabboInfo().getUsername() + "][" + packet.getMessageId() + "] => " + packet.getMessageBody())); } - final MessageHandler handler = this.incoming.get(packet.getMessageId()).newInstance(); + final MessageHandler handler = handlerClass.newInstance(); handler.client = client; handler.packet = packet; diff --git a/src/main/java/com/eu/habbo/messages/incoming/handshake/MachineIDEvent.java b/src/main/java/com/eu/habbo/messages/incoming/handshake/MachineIDEvent.java index fd50c886..7be07c04 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/handshake/MachineIDEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/handshake/MachineIDEvent.java @@ -1,8 +1,10 @@ package com.eu.habbo.messages.incoming.handshake; +import com.eu.habbo.messages.NoAuthMessage; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.handshake.MachineIDComposer; +@NoAuthMessage public class MachineIDEvent extends MessageHandler { @Override diff --git a/src/main/java/com/eu/habbo/messages/incoming/handshake/ReleaseVersionEvent.java b/src/main/java/com/eu/habbo/messages/incoming/handshake/ReleaseVersionEvent.java index 4dfe71ae..e9ea57e1 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/handshake/ReleaseVersionEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/handshake/ReleaseVersionEvent.java @@ -1,7 +1,9 @@ package com.eu.habbo.messages.incoming.handshake; +import com.eu.habbo.messages.NoAuthMessage; import com.eu.habbo.messages.incoming.MessageHandler; +@NoAuthMessage public class ReleaseVersionEvent extends MessageHandler { @Override diff --git a/src/main/java/com/eu/habbo/messages/incoming/handshake/SecureLoginEvent.java b/src/main/java/com/eu/habbo/messages/incoming/handshake/SecureLoginEvent.java index a899c5b0..6759a1e6 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/handshake/SecureLoginEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/handshake/SecureLoginEvent.java @@ -6,6 +6,7 @@ import com.eu.habbo.habbohotel.navigation.NavigatorSavedSearch; import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboManager; +import com.eu.habbo.messages.NoAuthMessage; import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.achievements.AchievementListComposer; @@ -31,6 +32,7 @@ import com.eu.habbo.plugin.events.users.UserLoginEvent; import java.util.ArrayList; +@NoAuthMessage public class SecureLoginEvent extends MessageHandler {