From 8b17307c7dc1f037a2dec48f55f6fd49da94f214 Mon Sep 17 00:00:00 2001 From: duckietm Date: Mon, 16 Mar 2026 09:39:56 +0100 Subject: [PATCH] :up Pull request from simoleo89 - Integrate UpdateAll plugin as built-in command Make sure you use the SQL in the SQL Update directory --- .../16032026_updateall_command.sql | 6 ++ .../habbohotel/commands/CommandHandler.java | 1 + .../habbohotel/commands/UpdateAllCommand.java | 102 ++++++++++++++++++ 3 files changed, 109 insertions(+) create mode 100644 Database Updates/16032026_updateall_command.sql create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/commands/UpdateAllCommand.java diff --git a/Database Updates/16032026_updateall_command.sql b/Database Updates/16032026_updateall_command.sql new file mode 100644 index 00000000..8162bc0a --- /dev/null +++ b/Database Updates/16032026_updateall_command.sql @@ -0,0 +1,6 @@ +ALTER TABLE `permissions` ADD `cmd_update_all` ENUM('0','1') NOT NULL DEFAULT '0' AFTER `cmd_update_achievements`; + +INSERT INTO `emulator_texts` (`key`, `value`) VALUES + ('commands.keys.cmd_update_all', 'update_all'), + ('commands.description.cmd_update_all', ':update_all'), + ('commands.succes.cmd_update_all', 'Successfully updated everything!'); diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java index 08eb4f6e..44e119b3 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java @@ -275,6 +275,7 @@ public class CommandHandler { addCommand(new UnbanCommand()); addCommand(new UnloadRoomCommand()); addCommand(new UnmuteCommand()); + addCommand(new UpdateAllCommand()); addCommand(new UpdateAchievements()); addCommand(new UpdateBotsCommand()); addCommand(new UpdateCalendarCommand()); diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/UpdateAllCommand.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/UpdateAllCommand.java new file mode 100644 index 00000000..6016d991 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/commands/UpdateAllCommand.java @@ -0,0 +1,102 @@ +package com.eu.habbo.habbohotel.commands; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.gameclients.GameClient; +import com.eu.habbo.habbohotel.rooms.Room; +import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; +import com.eu.habbo.messages.outgoing.catalog.*; +import com.eu.habbo.messages.outgoing.catalog.marketplace.MarketplaceConfigComposer; +import com.eu.habbo.messages.outgoing.rooms.RoomRelativeMapComposer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class UpdateAllCommand extends Command { + + private static final Logger LOGGER = LoggerFactory.getLogger(UpdateAllCommand.class); + + public UpdateAllCommand() { + super("cmd_update_all", Emulator.getTexts().getValue("commands.keys.cmd_update_all").split(";")); + } + + @Override + public boolean handle(GameClient gameClient, String[] params) throws Exception { + LOGGER.info("[UpdateAll] Reloading all subsystems..."); + + // Achievements + Emulator.getGameEnvironment().getAchievementManager().reload(); + + // Bots + Emulator.getGameEnvironment().getBotManager().reload(); + + // Catalog + Emulator.getGameEnvironment().getCatalogManager().initialize(); + Emulator.getGameServer().getGameClientManager().sendBroadcastResponse(new CatalogUpdatedComposer()); + Emulator.getGameServer().getGameClientManager().sendBroadcastResponse(new CatalogModeComposer(0)); + Emulator.getGameServer().getGameClientManager().sendBroadcastResponse(new DiscountComposer()); + Emulator.getGameServer().getGameClientManager().sendBroadcastResponse(new MarketplaceConfigComposer()); + Emulator.getGameServer().getGameClientManager().sendBroadcastResponse(new GiftConfigurationComposer()); + Emulator.getGameServer().getGameClientManager().sendBroadcastResponse(new RecyclerLogicComposer()); + + // Crafting + Emulator.getGameEnvironment().getCraftingManager().reload(); + + // Config + Emulator.getConfig().reload(); + + // Guild Parts + Emulator.getGameEnvironment().getGuildManager().loadGuildParts(); + Emulator.getBadgeImager().reload(); + + // Hotel View + Emulator.getGameEnvironment().getHotelViewManager().getNewsList().reload(); + Emulator.getGameEnvironment().getHotelViewManager().getHallOfFame().reload(); + + // Items + Emulator.getGameEnvironment().getItemManager().loadItems(); + Emulator.getGameEnvironment().getItemManager().loadCrackable(); + Emulator.getGameEnvironment().getItemManager().loadSoundTracks(); + + synchronized (Emulator.getGameEnvironment().getRoomManager().getActiveRooms()) { + for (Room room : Emulator.getGameEnvironment().getRoomManager().getActiveRooms()) { + if (room.isLoaded() && room.getUserCount() > 0 && room.getLayout() != null) { + room.sendComposer(new RoomRelativeMapComposer(room).compose()); + } + } + } + + // Navigator + Emulator.getGameEnvironment().getNavigatorManager().loadNavigator(); + + // Room Models + Emulator.getGameEnvironment().getRoomManager().loadRoomModels(); + Emulator.getGameEnvironment().getRoomManager().loadPublicRooms(); + + // Permissions + Emulator.getGameEnvironment().getPermissionsManager().reload(); + + // Pet Data + Emulator.getGameEnvironment().getPetManager().reloadPetData(); + + // Polls + Emulator.getGameEnvironment().getPollManager().loadPolls(); + + // Texts & Commands + try { + Emulator.getTexts().reload(); + Emulator.getGameEnvironment().getCommandHandler().reloadCommands(); + } catch (Exception e) { + gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_update_texts.failed"), RoomChatMessageBubbles.ALERT); + } + + // Word Filter + Emulator.getGameEnvironment().getWordFilter().reload(); + + // YouTube + Emulator.getGameEnvironment().getItemManager().getYoutubeManager().load(); + + LOGGER.info("[UpdateAll] All subsystems reloaded successfully!"); + gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_update_all"), RoomChatMessageBubbles.ALERT); + return true; + } +} \ No newline at end of file