Merge pull request #172 from simoleo89/fix/marketplace-claimed-payout

fix(marketplace): only pay out claimed offers after detach
This commit is contained in:
DuckieTM
2026-06-15 07:19:10 +02:00
committed by GitHub
2 changed files with 47 additions and 7 deletions
@@ -398,11 +398,12 @@ public class MarketPlace {
synchronized (client.getHabbo().getInventory()) {
for (MarketPlaceOffer offer : offers) {
if (offer.getState().equals(MarketPlaceState.SOLD)) {
client.getHabbo().getInventory().removeMarketplaceOffer(offer);
credits += offer.getPrice();
removeUser(offer);
offer.needsUpdate(true);
Emulator.getThreading().run(offer);
if (removeUser(offer)) {
client.getHabbo().getInventory().removeMarketplaceOffer(offer);
credits += offer.getPrice();
offer.needsUpdate(true);
Emulator.getThreading().run(offer);
}
}
}
}
@@ -416,13 +417,14 @@ public class MarketPlace {
}
}
private static void removeUser(MarketPlaceOffer offer) {
private static boolean removeUser(MarketPlaceOffer offer) {
try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("UPDATE marketplace_items SET user_id = ? WHERE id = ?")) {
statement.setInt(1, -1);
statement.setInt(2, offer.getOfferId());
statement.execute();
return statement.executeUpdate() > 0;
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
return false;
}
}