diff --git a/Emulator/src/main/java/com/eu/habbo/messages/rcon/SetMotto.java b/Emulator/src/main/java/com/eu/habbo/messages/rcon/SetMotto.java index 88ce9c20..d6651097 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/rcon/SetMotto.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/rcon/SetMotto.java @@ -24,7 +24,9 @@ public class SetMotto extends RCONMessage { if (habbo != null) { habbo.getHabboInfo().setMotto(json.motto); - habbo.getHabboInfo().getCurrentRoom().sendComposer(new RoomUserDataComposer(habbo).compose()); + if (habbo.getHabboInfo().getCurrentRoom() != null) { + habbo.getHabboInfo().getCurrentRoom().sendComposer(new RoomUserDataComposer(habbo).compose()); + } } else { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection()) { try (PreparedStatement statement = connection.prepareStatement("UPDATE users SET motto = ? WHERE id = ? LIMIT 1")) { @@ -45,4 +47,4 @@ public class SetMotto extends RCONMessage { public String motto; } -} \ No newline at end of file +} diff --git a/Emulator/src/test/java/com/eu/habbo/messages/rcon/SetMottoContractTest.java b/Emulator/src/test/java/com/eu/habbo/messages/rcon/SetMottoContractTest.java new file mode 100644 index 00000000..a8867b68 --- /dev/null +++ b/Emulator/src/test/java/com/eu/habbo/messages/rcon/SetMottoContractTest.java @@ -0,0 +1,22 @@ +package com.eu.habbo.messages.rcon; + +import org.junit.jupiter.api.Test; + +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +class SetMottoContractTest { + private static String setMottoSource() throws Exception { + return Files.readString(Path.of("src/main/java/com/eu/habbo/messages/rcon/SetMotto.java")); + } + + @Test + void onlineMottoUpdateDoesNotRequireCurrentRoom() throws Exception { + String source = setMottoSource(); + + assertTrue(source.contains("getCurrentRoom() != null"), + "RCON SetMotto must not fail for online users outside a room"); + } +}