From d8260ec461096a81cdaf73b0f254924243f7868a Mon Sep 17 00:00:00 2001 From: simoleo89 Date: Sat, 13 Jun 2026 15:24:11 +0200 Subject: [PATCH] fix(rcon): bind offline respect counters correctly GiveRespect inverted the offline SQL parameters for respects_given and respects_received. Online users received the intended counters, but offline users had the two persisted counters swapped. Bind respect_given to respects_given and respect_received to respects_received, with a contract test to keep the RCON offline path aligned. --- .../eu/habbo/messages/rcon/GiveRespect.java | 6 ++--- .../rcon/GiveRespectContractTest.java | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 Emulator/src/test/java/com/eu/habbo/messages/rcon/GiveRespectContractTest.java diff --git a/Emulator/src/main/java/com/eu/habbo/messages/rcon/GiveRespect.java b/Emulator/src/main/java/com/eu/habbo/messages/rcon/GiveRespect.java index 05c57de7..3b9a57b2 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/rcon/GiveRespect.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/rcon/GiveRespect.java @@ -30,8 +30,8 @@ public class GiveRespect extends RCONMessage { habbo.getClient().sendResponse(new UserDataComposer(habbo)); } else { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("UPDATE users_settings SET respects_given = respects_given + ?, respects_received = respects_received + ?, daily_respect_points = daily_respect_points + ? WHERE user_id = ? LIMIT 1")) { - statement.setInt(1, object.respect_received); - statement.setInt(2, object.respect_given); + statement.setInt(1, object.respect_given); + statement.setInt(2, object.respect_received); statement.setInt(3, object.daily_respects); statement.setInt(4, object.user_id); statement.execute(); @@ -50,4 +50,4 @@ public class GiveRespect extends RCONMessage { public int respect_received = 0; public int daily_respects = 0; } -} \ No newline at end of file +} diff --git a/Emulator/src/test/java/com/eu/habbo/messages/rcon/GiveRespectContractTest.java b/Emulator/src/test/java/com/eu/habbo/messages/rcon/GiveRespectContractTest.java new file mode 100644 index 00000000..b36999c3 --- /dev/null +++ b/Emulator/src/test/java/com/eu/habbo/messages/rcon/GiveRespectContractTest.java @@ -0,0 +1,24 @@ +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 GiveRespectContractTest { + private static String giveRespectSource() throws Exception { + return Files.readString(Path.of("src/main/java/com/eu/habbo/messages/rcon/GiveRespect.java")); + } + + @Test + void offlineRespectGrantBindsGivenAndReceivedToMatchingColumns() throws Exception { + String source = giveRespectSource(); + + assertTrue(source.contains("statement.setInt(1, object.respect_given);"), + "respects_given must be incremented with respect_given"); + assertTrue(source.contains("statement.setInt(2, object.respect_received);"), + "respects_received must be incremented with respect_received"); + } +}