You've already forked Arcturus-Morningstar-Extended
mirror of
https://github.com/duckietm/Arcturus-Morningstar-Extended.git
synced 2026-06-19 15:06:19 +00:00
feat(housekeeping): unban-user packet
Incoming 9103 HousekeepingUnbanUserEvent — reads userId, resolves the username via HabboManager.getHabboInfo(int) (covers both online and offline paths in one call), then dispatches to ModToolManager.unban(username) which clears all active rows from the `bans` table for that user. Reuses HousekeepingActionResultComposer with actionKey `user.unban`. If the user never had an active ban the SQL UPDATE matches zero rows and the handler responds with `ok: false, message: 'no_active_ban'` — from a UI standpoint that's a no-op, not an error. `mvn compile` clean.
This commit is contained in:
@@ -721,5 +721,6 @@ public class PacketManager {
|
|||||||
this.registerHandler(Incoming.HousekeepingFindUserByNameEvent, com.eu.habbo.messages.incoming.housekeeping.HousekeepingFindUserByNameEvent.class);
|
this.registerHandler(Incoming.HousekeepingFindUserByNameEvent, com.eu.habbo.messages.incoming.housekeeping.HousekeepingFindUserByNameEvent.class);
|
||||||
this.registerHandler(Incoming.HousekeepingFindUserByIdEvent, com.eu.habbo.messages.incoming.housekeeping.HousekeepingFindUserByIdEvent.class);
|
this.registerHandler(Incoming.HousekeepingFindUserByIdEvent, com.eu.habbo.messages.incoming.housekeeping.HousekeepingFindUserByIdEvent.class);
|
||||||
this.registerHandler(Incoming.HousekeepingBanUserEvent, com.eu.habbo.messages.incoming.housekeeping.HousekeepingBanUserEvent.class);
|
this.registerHandler(Incoming.HousekeepingBanUserEvent, com.eu.habbo.messages.incoming.housekeeping.HousekeepingBanUserEvent.class);
|
||||||
|
this.registerHandler(Incoming.HousekeepingUnbanUserEvent, com.eu.habbo.messages.incoming.housekeeping.HousekeepingUnbanUserEvent.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -465,4 +465,5 @@ public class Incoming {
|
|||||||
public static final int HousekeepingFindUserByNameEvent = 9100;
|
public static final int HousekeepingFindUserByNameEvent = 9100;
|
||||||
public static final int HousekeepingFindUserByIdEvent = 9101;
|
public static final int HousekeepingFindUserByIdEvent = 9101;
|
||||||
public static final int HousekeepingBanUserEvent = 9102;
|
public static final int HousekeepingBanUserEvent = 9102;
|
||||||
|
public static final int HousekeepingUnbanUserEvent = 9103;
|
||||||
}
|
}
|
||||||
|
|||||||
+44
@@ -0,0 +1,44 @@
|
|||||||
|
package com.eu.habbo.messages.incoming.housekeeping;
|
||||||
|
|
||||||
|
import com.eu.habbo.Emulator;
|
||||||
|
import com.eu.habbo.habbohotel.permissions.Permission;
|
||||||
|
import com.eu.habbo.habbohotel.users.HabboInfo;
|
||||||
|
import com.eu.habbo.messages.incoming.MessageHandler;
|
||||||
|
import com.eu.habbo.messages.outgoing.housekeeping.HousekeepingActionResultComposer;
|
||||||
|
|
||||||
|
public class HousekeepingUnbanUserEvent extends MessageHandler {
|
||||||
|
private static final String ACTION_KEY = "user.unban";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRatelimit() {
|
||||||
|
return 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle() throws Exception {
|
||||||
|
if (!this.client.getHabbo().hasPermission(Permission.ACC_HOUSEKEEPING)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int userId = this.packet.readInt();
|
||||||
|
|
||||||
|
if (userId <= 0) {
|
||||||
|
this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "invalid_input"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
HabboInfo info = Emulator.getGameEnvironment().getHabboManager().getHabboInfo(userId);
|
||||||
|
|
||||||
|
if (info == null) {
|
||||||
|
this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, false, 0, "user_not_found"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ModToolManager.unban only takes a username; the SQL UPDATE
|
||||||
|
// happens against active bans (ban_expire > now), so calling it
|
||||||
|
// on a never-banned user is a benign no-op that returns false.
|
||||||
|
boolean cleared = Emulator.getGameEnvironment().getModToolManager().unban(info.getUsername());
|
||||||
|
|
||||||
|
this.client.sendResponse(new HousekeepingActionResultComposer(ACTION_KEY, cleared, cleared ? userId : 0, cleared ? "" : "no_active_ban"));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user