diff --git a/public/assets/images/media/favicon/favicon-1783431399698.png b/public/assets/images/media/favicon/favicon-1783431399698.png new file mode 100644 index 00000000..0b13bb22 Binary files /dev/null and b/public/assets/images/media/favicon/favicon-1783431399698.png differ diff --git a/storage/logs/update-20260707-143847.log b/storage/logs/update-20260707-143847.log new file mode 100644 index 00000000..dbe8ceea --- /dev/null +++ b/storage/logs/update-20260707-143847.log @@ -0,0 +1,118 @@ + + + ╔═══════════════════════════════════════════════════════════════════════════╗ + ║ ║ + ║ ███████╗███╗ ███╗ █████╗ ██████╗ ████████╗ ║ + ║ ██╔════╝████╗ ████║██╔══██╗██╔══██╗╚══██╔══╝ ║ + ║ █████╗ ██╔████╔██║███████║██████╔╝ ██║ ║ + ║ ██╔══╝ ██║╚██╔╝██║██╔══██║██╔══██╗ ██║ ║ + ║ ███████╗██║ ╚═╝ ██║██║ ██║██║ ██║ ██║ ║ + ║ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ║ + ║ ║ + ╠═══════════════════════════════════════════════════════════════════════════╣ + ║  Emulator / Nitro-V3 / Nitro-V3-Render ║ + ║  Updater by Remco — epicnabbo.nl ║ + ╠═══════════════════════════════════════════════════════════════════════════╣ + ║ Branch: main (2 detected) │ 14:38 ║ + ╚═══════════════════════════════════════════════════════════════════════════╝ + +  UPDATE  + 1) 🚀 Quick Update — branch: main + 2) ⚡ Full Update (choose branch) + 3) ⚙ Emulator Only + 4) ⚙ Nitro-V3 Client Only + 5) ⚙ Renderer Only + 6) ⚙ Configs Only + +  TOOLS  + 7) 🔀 Switch Branch + 8) 🗄 Database + 9) 🛡 Backup / Restore + 10) 🔧 Services + 11) 📊 Status + 12) ♥ Health Check + 13) 🧹 Clean + 14) 👁 Logs + 15) ⚙ Config + +  ADVANCED  + 16) 🖥 Git Log + 17) 🌐 Compare Branches + 18) ⏱ Cron Scheduler + + 0) Exit + + Select [0-18]: + Update: Full + + 1) Dev + 2) main (current) + 3) Custom + + Branch [1-3]: + Branch: main Mode: Full + ➜ Start update? [Y/n] + ➜ Site: https://epicnabbo.nl | Branch: main | Mode: full +[2026-07-07 14:39:18] [INFO] Site: https://epicnabbo.nl | Branch: main | Mode: full + ➜ Log: /var/www/atom-nexst/storage/logs/update-20260707-143847.log +[2026-07-07 14:39:18] [INFO] Log: /var/www/atom-nexst/storage/logs/update-20260707-143847.log + +  Step 1/8 — System Diagnostics  + + ✔ All commands available +[2026-07-07 14:39:18] [OK] All commands available + ✔ All directories exist +[2026-07-07 14:39:18] [OK] All directories exist + ✔ 126GB disk available +[2026-07-07 14:39:18] [OK] 126GB disk available + +  ERROR  DB connection failed +[2026-07-07 14:39:18] [FATAL] DB connection failed +[?12l[?25h ⚠ Update had errors +[2026-07-07 14:39:18] [WARN] Update had errors + + Press Enter to continue... + + ╔═══════════════════════════════════════════════════════════════════════════╗ + ║ ║ + ║ ███████╗███╗ ███╗ █████╗ ██████╗ ████████╗ ║ + ║ ██╔════╝████╗ ████║██╔══██╗██╔══██╗╚══██╔══╝ ║ + ║ █████╗ ██╔████╔██║███████║██████╔╝ ██║ ║ + ║ ██╔══╝ ██║╚██╔╝██║██╔══██║██╔══██╗ ██║ ║ + ║ ███████╗██║ ╚═╝ ██║██║ ██║██║ ██║ ██║ ║ + ║ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ║ + ║ ║ + ╠═══════════════════════════════════════════════════════════════════════════╣ + ║  Emulator / Nitro-V3 / Nitro-V3-Render ║ + ║  Updater by Remco — epicnabbo.nl ║ + ╠═══════════════════════════════════════════════════════════════════════════╣ + ║ Branch: main (2 detected) │ 14:39 ║ + ╚═══════════════════════════════════════════════════════════════════════════╝ + +  UPDATE  + 1) 🚀 Quick Update — branch: main + 2) ⚡ Full Update (choose branch) + 3) ⚙ Emulator Only + 4) ⚙ Nitro-V3 Client Only + 5) ⚙ Renderer Only + 6) ⚙ Configs Only + +  TOOLS  + 7) 🔀 Switch Branch + 8) 🗄 Database + 9) 🛡 Backup / Restore + 10) 🔧 Services + 11) 📊 Status + 12) ♥ Health Check + 13) 🧹 Clean + 14) 👁 Logs + 15) ⚙ Config + +  ADVANCED  + 16) 🖥 Git Log + 17) 🌐 Compare Branches + 18) ⏱ Cron Scheduler + + 0) Exit + + Select [0-18]: [?12l[?25h[?12l[?25h \ No newline at end of file diff --git a/storage/logs/update-20260707-144421.log b/storage/logs/update-20260707-144421.log new file mode 100644 index 00000000..9d024cd2 --- /dev/null +++ b/storage/logs/update-20260707-144421.log @@ -0,0 +1,118 @@ + + + ╔═══════════════════════════════════════════════════════════════════════════╗ + ║ ║ + ║ ███████╗███╗ ███╗ █████╗ ██████╗ ████████╗ ║ + ║ ██╔════╝████╗ ████║██╔══██╗██╔══██╗╚══██╔══╝ ║ + ║ █████╗ ██╔████╔██║███████║██████╔╝ ██║ ║ + ║ ██╔══╝ ██║╚██╔╝██║██╔══██║██╔══██╗ ██║ ║ + ║ ███████╗██║ ╚═╝ ██║██║ ██║██║ ██║ ██║ ║ + ║ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ║ + ║ ║ + ╠═══════════════════════════════════════════════════════════════════════════╣ + ║  Emulator / Nitro-V3 / Nitro-V3-Render ║ + ║  Updater by Remco — epicnabbo.nl ║ + ╠═══════════════════════════════════════════════════════════════════════════╣ + ║ Branch: main (2 detected) │ 14:44 ║ + ╚═══════════════════════════════════════════════════════════════════════════╝ + +  UPDATE  + 1) 🚀 Quick Update — branch: main + 2) ⚡ Full Update (choose branch) + 3) ⚙ Emulator Only + 4) ⚙ Nitro-V3 Client Only + 5) ⚙ Renderer Only + 6) ⚙ Configs Only + +  TOOLS  + 7) 🔀 Switch Branch + 8) 🗄 Database + 9) 🛡 Backup / Restore + 10) 🔧 Services + 11) 📊 Status + 12) ♥ Health Check + 13) 🧹 Clean + 14) 👁 Logs + 15) ⚙ Config + +  ADVANCED  + 16) 🖥 Git Log + 17) 🌐 Compare Branches + 18) ⏱ Cron Scheduler + + 0) Exit + + Select [0-18]: + Update: Full + + 1) Dev + 2) main (current) + 3) Custom + + Branch [1-3]: + Branch: main Mode: Full + ➜ Start update? [Y/n] + ➜ Site: https://epicnabbo.nl | Branch: main | Mode: full +[2026-07-07 14:44:38] [INFO] Site: https://epicnabbo.nl | Branch: main | Mode: full + ➜ Log: /var/www/atom-nexst/storage/logs/update-20260707-144421.log +[2026-07-07 14:44:38] [INFO] Log: /var/www/atom-nexst/storage/logs/update-20260707-144421.log + +  Step 1/8 — System Diagnostics  + + ✔ All commands available +[2026-07-07 14:44:38] [OK] All commands available + ✔ All directories exist +[2026-07-07 14:44:38] [OK] All directories exist + ✔ 126GB disk available +[2026-07-07 14:44:38] [OK] 126GB disk available + +  ERROR  DB connection failed +[2026-07-07 14:44:38] [FATAL] DB connection failed +[?12l[?25h ⚠ Update had errors +[2026-07-07 14:44:38] [WARN] Update had errors + + Press Enter to continue... + + ╔═══════════════════════════════════════════════════════════════════════════╗ + ║ ║ + ║ ███████╗███╗ ███╗ █████╗ ██████╗ ████████╗ ║ + ║ ██╔════╝████╗ ████║██╔══██╗██╔══██╗╚══██╔══╝ ║ + ║ █████╗ ██╔████╔██║███████║██████╔╝ ██║ ║ + ║ ██╔══╝ ██║╚██╔╝██║██╔══██║██╔══██╗ ██║ ║ + ║ ███████╗██║ ╚═╝ ██║██║ ██║██║ ██║ ██║ ║ + ║ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ║ + ║ ║ + ╠═══════════════════════════════════════════════════════════════════════════╣ + ║  Emulator / Nitro-V3 / Nitro-V3-Render ║ + ║  Updater by Remco — epicnabbo.nl ║ + ╠═══════════════════════════════════════════════════════════════════════════╣ + ║ Branch: main (2 detected) │ 14:44 ║ + ╚═══════════════════════════════════════════════════════════════════════════╝ + +  UPDATE  + 1) 🚀 Quick Update — branch: main + 2) ⚡ Full Update (choose branch) + 3) ⚙ Emulator Only + 4) ⚙ Nitro-V3 Client Only + 5) ⚙ Renderer Only + 6) ⚙ Configs Only + +  TOOLS  + 7) 🔀 Switch Branch + 8) 🗄 Database + 9) 🛡 Backup / Restore + 10) 🔧 Services + 11) 📊 Status + 12) ♥ Health Check + 13) 🧹 Clean + 14) 👁 Logs + 15) ⚙ Config + +  ADVANCED  + 16) 🖥 Git Log + 17) 🌐 Compare Branches + 18) ⏱ Cron Scheduler + + 0) Exit + + Select [0-18]: [?12l[?25h[?12l[?25h \ No newline at end of file diff --git a/storage/logs/update-20260707-144745.log b/storage/logs/update-20260707-144745.log new file mode 100644 index 00000000..f94f42aa --- /dev/null +++ b/storage/logs/update-20260707-144745.log @@ -0,0 +1,1570 @@ + + + ╔═══════════════════════════════════════════════════════════════════════════╗ + ║ ║ + ║ ███████╗███╗ ███╗ █████╗ ██████╗ ████████╗ ║ + ║ ██╔════╝████╗ ████║██╔══██╗██╔══██╗╚══██╔══╝ ║ + ║ █████╗ ██╔████╔██║███████║██████╔╝ ██║ ║ + ║ ██╔══╝ ██║╚██╔╝██║██╔══██║██╔══██╗ ██║ ║ + ║ ███████╗██║ ╚═╝ ██║██║ ██║██║ ██║ ██║ ║ + ║ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ║ + ║ ║ + ╠═══════════════════════════════════════════════════════════════════════════╣ + ║  Emulator / Nitro-V3 / Nitro-V3-Render ║ + ║  Updater by Remco — epicnabbo.nl ║ + ╠═══════════════════════════════════════════════════════════════════════════╣ + ║ Branch: main (2 detected) │ 14:47 ║ + ╚═══════════════════════════════════════════════════════════════════════════╝ + +  UPDATE  + 1) 🚀 Quick Update — branch: main + 2) ⚡ Full Update (choose branch) + 3) ⚙ Emulator Only + 4) ⚙ Nitro-V3 Client Only + 5) ⚙ Renderer Only + 6) ⚙ Configs Only + +  TOOLS  + 7) 🔀 Switch Branch + 8) 🗄 Database + 9) 🛡 Backup / Restore + 10) 🔧 Services + 11) 📊 Status + 12) ♥ Health Check + 13) 🧹 Clean + 14) 👁 Logs + 15) ⚙ Config + +  ADVANCED  + 16) 🖥 Git Log + 17) 🌐 Compare Branches + 18) ⏱ Cron Scheduler + + 0) Exit + + Select [0-18]: + Update: Full + + 1) Dev + 2) main (current) + 3) Custom + + Branch [1-3]: + Branch: main Mode: Full + ➜ Start update? [Y/n] + ➜ Site: https://epicnabbo.nl | Branch: main | Mode: full +[2026-07-07 14:48:01] [INFO] Site: https://epicnabbo.nl | Branch: main | Mode: full + ➜ Log: /var/www/atom-nexst/storage/logs/update-20260707-144745.log +[2026-07-07 14:48:01] [INFO] Log: /var/www/atom-nexst/storage/logs/update-20260707-144745.log + +  Step 1/8 — System Diagnostics  + + ✔ All commands available +[2026-07-07 14:48:01] [OK] All commands available + ✔ All directories exist +[2026-07-07 14:48:01] [OK] All directories exist + ✔ 126GB disk available +[2026-07-07 14:48:01] [OK] 126GB disk available + ✔ Database connected +[2026-07-07 14:48:01] [OK] Database connected + +  Step 2/8 — Update & Build Emulator  + +No local changes to save +Your branch is up to date with 'origin/main'. +Updating 4bdf3de6..1a05d0ed +Fast-forward + .github/dependabot.yml | 20 ++ + .github/workflows/build-release.yml | 6 +- + .github/workflows/ci.yml | 31 ++ + .gitlab-ci.yml | 4 +- + .../015_wired_furni_enable_registered.sql | 40 +++ + Database Updates/016_wired_phase1_furni.sql | 34 ++ + Database Updates/017_wired_chest_currency.sql | 28 ++ + Database Updates/018_wired_chest_furni.sql | 30 ++ + .../019_wired_transactions_scanner.sql | 28 ++ + Database Updates/020_wired_place_remove_furni.sql | 16 + + Database Updates/021_wired_contracts.sql | 24 ++ + Database Updates/022_wired_quests.sql | 16 + + Database Updates/023_fill_room_207_wiredlab.sql | 52 +++ + Emulator/pom.xml | 89 +++-- + Emulator/src/main/java/com/eu/habbo/Emulator.java | 54 +-- + .../com/eu/habbo/core/ConfigurationManager.java | 7 +- + .../main/java/com/eu/habbo/core/TextsManager.java | 2 +- + .../habbo/core/consolecommands/ConsoleCommand.java | 8 +- + .../main/java/com/eu/habbo/database/Database.java | 8 - + .../habbo/habbohotel/achievements/Achievement.java | 8 +- + .../achievements/AchievementManager.java | 27 +- + .../habbohotel/achievements/TalentTrackLevel.java | 17 +- + .../com/eu/habbo/habbohotel/bots/BotManager.java | 8 +- + .../com/eu/habbo/habbohotel/bots/ButlerBot.java | 11 +- + .../com/eu/habbo/habbohotel/bots/VisitorBot.java | 5 +- + .../campaign/calendar/CalendarCampaign.java | 5 +- + .../campaign/calendar/CalendarManager.java | 5 +- + .../eu/habbo/habbohotel/catalog/CatalogItem.java | 14 +- + .../habbo/habbohotel/catalog/CatalogManager.java | 175 +++++---- + .../eu/habbo/habbohotel/catalog/CatalogPage.java | 24 +- + .../catalog/layouts/FrontPageFeaturedLayout.java | 4 +- + .../catalog/layouts/RoomBundleLayout.java | 29 +- + .../catalog/marketplace/MarketPlace.java | 9 +- + .../eu/habbo/habbohotel/commands/BotsCommand.java | 2 +- + .../habbo/habbohotel/commands/CommandHandler.java | 23 +- + .../commands/EmptyBotsInventoryCommand.java | 14 +- + .../habbohotel/commands/EmptyInventoryCommand.java | 10 +- + .../commands/EmptyPetsInventoryCommand.java | 14 +- + .../eu/habbo/habbohotel/commands/EventCommand.java | 4 +- + .../eu/habbo/habbohotel/commands/GiftCommand.java | 6 +- + .../habbohotel/commands/MassBadgeCommand.java | 4 +- + .../habbo/habbohotel/commands/MassGiftCommand.java | 4 +- + .../habbo/habbohotel/commands/PetInfoCommand.java | 44 +-- + .../commands/PromoteTargetOfferCommand.java | 6 +- + .../habbo/habbohotel/commands/RedeemCommand.java | 31 +- + .../habbohotel/commands/RoomBadgeCommand.java | 6 +- + .../habbo/habbohotel/commands/UserInfoCommand.java | 14 +- + .../habbo/habbohotel/crafting/CraftingAltar.java | 17 +- + .../habbo/habbohotel/crafting/CraftingManager.java | 23 +- + .../habbo/habbohotel/crafting/CraftingRecipe.java | 11 +- + .../java/com/eu/habbo/habbohotel/games/Game.java | 8 +- + .../com/eu/habbo/habbohotel/games/GameTeam.java | 10 +- + .../games/battlebanzai/BattleBanzaiGame.java | 28 +- + .../habbo/habbohotel/games/freeze/FreezeGame.java | 31 +- + .../com/eu/habbo/habbohotel/games/tag/TagGame.java | 18 +- + .../eu/habbo/habbohotel/guides/GuardianTicket.java | 6 +- + .../eu/habbo/habbohotel/guides/GuideManager.java | 37 +- + .../com/eu/habbo/habbohotel/guides/GuideTour.java | 8 +- + .../eu/habbo/habbohotel/guilds/GuildManager.java | 66 ++-- + .../habbohotel/guilds/forums/ForumThread.java | 26 +- + .../guilds/forums/ForumThreadComment.java | 5 +- + .../eu/habbo/habbohotel/hotelview/HallOfFame.java | 7 +- + .../java/com/eu/habbo/habbohotel/items/Item.java | 10 +- + .../com/eu/habbo/habbohotel/items/ItemManager.java | 257 ++++++++++++-- + .../eu/habbo/habbohotel/items/YoutubeManager.java | 16 +- + .../interactions/InteractionAreaHideControl.java | 7 +- + .../items/interactions/InteractionBuildArea.java | 44 +-- + .../interactions/InteractionCustomValues.java | 10 +- + .../items/interactions/InteractionDice.java | 3 + + .../InteractionDiceDisableControl.java | 16 + + .../InteractionDoorkickDisableControl.java | 16 + + .../InteractionEffectVendingMachineNoSides.java | 9 +- + .../items/interactions/InteractionFireworks.java | 2 +- + .../items/interactions/InteractionGift.java | 7 +- + .../items/interactions/InteractionGuildFurni.java | 5 +- + .../interactions/InteractionHideWiredControl.java | 16 + + .../InteractionInformationTerminal.java | 5 +- + .../items/interactions/InteractionLoveLock.java | 64 +++- + .../items/interactions/InteractionMoodLight.java | 2 +- + .../items/interactions/InteractionMultiHeight.java | 4 +- + .../items/interactions/InteractionMuteArea.java | 26 +- + .../InteractionNoSidesVendingMachine.java | 7 +- + .../items/interactions/InteractionObstacle.java | 165 ++++++++- + .../interactions/InteractionPressurePlate.java | 7 +- + .../interactions/InteractionRentableSpace.java | 5 +- + .../items/interactions/InteractionRoller.java | 6 +- + .../items/interactions/InteractionRoomAds.java | 5 +- + .../interactions/InteractionSnowboardSlope.java | 6 +- + .../items/interactions/InteractionSwitch.java | 6 +- + .../items/interactions/InteractionTeleport.java | 6 +- + .../InteractionTileEffectProvider.java | 5 +- + .../interactions/InteractionVendingMachine.java | 17 +- + .../items/interactions/InteractionWater.java | 6 +- + .../items/interactions/InteractionWaterItem.java | 4 +- + .../battlebanzai/InteractionBattleBanzaiTile.java | 6 +- + .../games/freeze/InteractionFreezeBlock.java | 4 +- + .../games/freeze/InteractionFreezeTile.java | 6 +- + .../totems/InteractionTotemPlanet.java | 4 +- + .../items/interactions/wired/WiredComparison.java | 48 +++ + .../wired/chest/ChestDepositSession.java | 29 ++ + .../wired/chest/ChestFurniDepositHelper.java | 53 +++ + .../wired/chest/ChestFurniPackets.java | 38 ++ + .../wired/chest/ChestFurniStoredItem.java | 58 +++ + .../wired/chest/ChestFurniWireUtil.java | 46 +++ + .../interactions/wired/chest/ChestOpenHelper.java | 26 ++ + .../interactions/wired/chest/ChestStorage.java | 391 +++++++++++++++++++++ + .../wired/chest/ChestWiredCompare.java | 42 +++ + .../wired/chest/ChestWiredCurrencyUtil.java | 51 +++ + .../wired/chest/ChestWiredFurniUtil.java | 174 +++++++++ + .../interactions/wired/chest/ContractTerm.java | 189 ++++++++++ + .../wired/chest/InteractionWiredChest.java | 67 ++++ + .../wired/chest/InteractionWiredChestCurrency.java | 86 +++++ + .../wired/chest/InteractionWiredChestFurni.java | 84 +++++ + .../wired/chest/InteractionWiredContract.java | 227 ++++++++++++ + .../wired/chest/WiredTransactionExecutor.java | 201 +++++++++++ + .../conditions/WiredConditionChestHasItemType.java | 150 ++++++++ + .../conditions/WiredConditionChestHasItems.java | 142 ++++++++ + .../WiredConditionCounterTimeMatches.java | 12 +- + .../wired/conditions/WiredConditionFrozen.java | 196 +++++++++++ + .../conditions/WiredConditionFurniHaveFurni.java | 16 +- + .../conditions/WiredConditionFurniHaveHabbo.java | 18 +- + .../conditions/WiredConditionFurniInRange.java | 316 +++++++++++++++++ + .../conditions/WiredConditionFurniNotInRange.java | 310 ++++++++++++++++ + .../conditions/WiredConditionFurniTypeMatch.java | 26 +- + .../conditions/WiredConditionHabboHasMinItems.java | 174 +++++++++ + .../conditions/WiredConditionHabboHasRights.java | 31 ++ + .../conditions/WiredConditionHabboIsFemale.java | 31 ++ + .../conditions/WiredConditionHabboIsMale.java | 32 ++ + .../WiredConditionHabboLacksCredits.java | 168 +++++++++ + .../WiredConditionHabboLacksDiamonds.java | 170 +++++++++ + .../WiredConditionHabboLacksDuckets.java | 172 +++++++++ + .../WiredConditionHabboNotHasRights.java | 31 ++ + .../WiredConditionHabboNotOwnsFurni.java | 57 +++ + .../conditions/WiredConditionHabboOwnsBadge.java | 37 ++ + .../conditions/WiredConditionHabboOwnsFurni.java | 276 +++++++++++++++ + .../conditions/WiredConditionHasAltitude.java | 12 +- + .../wired/conditions/WiredConditionHasTag.java | 212 +++++++++++ + .../conditions/WiredConditionHasVariable.java | 8 +- + .../WiredConditionMatchStatePosition.java | 13 +- + .../conditions/WiredConditionMottoContains.java | 210 +++++++++++ + .../WiredConditionNoBattleBanzaiRunning.java | 95 +++++ + .../wired/conditions/WiredConditionNotFrozen.java | 46 +++ + .../WiredConditionNotFurniHaveFurni.java | 16 +- + .../WiredConditionNotFurniHaveHabbo.java | 18 +- + .../WiredConditionNotHabboOwnsBadge.java | 47 +++ + .../wired/conditions/WiredConditionNotHasTag.java | 51 +++ + .../conditions/WiredConditionNotSameHeight.java | 244 +++++++++++++ + .../wired/conditions/WiredConditionSameHeight.java | 242 +++++++++++++ + .../WiredConditionSelectionQuantity.java | 12 +- + .../WiredConditionTriggerFurniAdjacentState.java | 248 +++++++++++++ + .../conditions/WiredConditionTriggerOnFurni.java | 12 +- + .../conditions/WiredConditionUserInRange.java | 240 +++++++++++++ + .../conditions/WiredConditionUserNotInRange.java | 242 +++++++++++++ + .../WiredConditionUserOnFurniWithState.java | 271 ++++++++++++++ + .../WiredConditionVariableValueMatch.java | 12 +- + .../wired/contract/InteractionWiredContract.java | 179 ++++++++++ + .../contract/InteractionWiredContractPayment.java | 28 ++ + .../contract/InteractionWiredContractReward.java | 28 ++ + .../contract/InteractionWiredContractTrade.java | 28 ++ + .../contract/InteractionWiredCustomContract.java | 28 ++ + .../wired/effects/WiredEffectAddTag.java | 161 +++++++++ + .../effects/WiredEffectAllUsersLeaveTeam.java | 141 ++++++++ + .../wired/effects/WiredEffectBotDance.java | 170 +++++++++ + .../wired/effects/WiredEffectBotFollowHabbo.java | 13 +- + .../wired/effects/WiredEffectBotGiveHandItem.java | 13 +- + .../wired/effects/WiredEffectBotTalkToHabbo.java | 13 +- + .../wired/effects/WiredEffectBotTeleport.java | 14 +- + .../wired/effects/WiredEffectBotWalkToFurni.java | 5 +- + .../effects/WiredEffectCancelTransaction.java | 109 ++++++ + .../effects/WiredEffectChangeFurniDirection.java | 16 +- + .../effects/WiredEffectForwardUserToRoom.java | 198 +++++++++++ + .../wired/effects/WiredEffectFreeze.java | 13 +- + .../wired/effects/WiredEffectGiveAchievement.java | 165 +++++++++ + .../wired/effects/WiredEffectGiveBadge.java | 169 +++++++++ + .../wired/effects/WiredEffectGiveCredits.java | 156 ++++++++ + .../effects/WiredEffectGiveCurrencyFromChest.java | 190 ++++++++++ + .../wired/effects/WiredEffectGiveDiamonds.java | 158 +++++++++ + .../wired/effects/WiredEffectGiveDuckets.java | 155 ++++++++ + .../wired/effects/WiredEffectGiveExperience.java | 156 ++++++++ + .../effects/WiredEffectGiveFurniFromChest.java | 192 ++++++++++ + .../WiredEffectGiveHotelviewBonusRarePoints.java | 13 +- + .../effects/WiredEffectGiveHotelviewHofPoints.java | 13 +- + .../wired/effects/WiredEffectGiveLook.java | 170 +++++++++ + .../wired/effects/WiredEffectGiveOrTakeFurni.java | 259 ++++++++++++++ + .../wired/effects/WiredEffectGivePointsType.java | 198 +++++++++++ + .../wired/effects/WiredEffectGiveRespect.java | 13 +- + .../wired/effects/WiredEffectGiveReward.java | 13 +- + .../wired/effects/WiredEffectGiveScore.java | 13 +- + .../wired/effects/WiredEffectGiveVariable.java | 11 +- + .../wired/effects/WiredEffectInitTransaction.java | 262 ++++++++++++++ + .../wired/effects/WiredEffectJoinTeam.java | 13 +- + .../wired/effects/WiredEffectKickHabbo.java | 13 +- + .../interactions/wired/effects/WiredEffectLay.java | 202 +++++++++++ + .../wired/effects/WiredEffectLeaveTeam.java | 13 +- + .../interactions/wired/effects/WiredEffectLog.java | 157 +++++++++ + .../wired/effects/WiredEffectMakeFastWalk.java | 165 +++++++++ + .../wired/effects/WiredEffectMakeUserSay.java | 259 ++++++++++++++ + .../wired/effects/WiredEffectMatchFurni.java | 11 +- + .../wired/effects/WiredEffectMoveFurniAsGroup.java | 241 +++++++++++++ + .../wired/effects/WiredEffectMoveFurniAway.java | 12 +- + .../wired/effects/WiredEffectMoveFurniTo.java | 7 +- + .../wired/effects/WiredEffectMoveFurniTowards.java | 25 +- + .../wired/effects/WiredEffectMoveRotateFurni.java | 5 +- + .../wired/effects/WiredEffectMoveRotateUser.java | 13 +- + .../wired/effects/WiredEffectMoveUserTiles.java | 306 ++++++++++++++++ + .../wired/effects/WiredEffectNegativeLog.java | 30 ++ + .../effects/WiredEffectNegativeShowMessage.java | 30 ++ + .../wired/effects/WiredEffectOpenHabboPages.java | 156 ++++++++ + .../wired/effects/WiredEffectPlaceFurni.java | 214 +++++++++++ + .../wired/effects/WiredEffectPlayYoutube.java | 158 +++++++++ + .../wired/effects/WiredEffectQuickBopper.java | 164 +++++++++ + .../wired/effects/WiredEffectRemoveBadge.java | 169 +++++++++ + .../wired/effects/WiredEffectRemoveFurni.java | 227 ++++++++++++ + .../wired/effects/WiredEffectRemoveTag.java | 161 +++++++++ + .../wired/effects/WiredEffectRemoveVariable.java | 9 +- + .../wired/effects/WiredEffectResetHighscores.java | 102 ++++++ + .../wired/effects/WiredEffectResetTimers.java | 13 +- + .../wired/effects/WiredEffectSayCommand.java | 161 +++++++++ + .../wired/effects/WiredEffectSendSignal.java | 30 +- + .../wired/effects/WiredEffectSetRollerSpeed.java | 126 +++++++ + .../wired/effects/WiredEffectSetRoomAd.java | 178 ++++++++++ + .../interactions/wired/effects/WiredEffectSit.java | 175 +++++++++ + .../wired/effects/WiredEffectTeleport.java | 18 +- + .../wired/effects/WiredEffectToggleFurni.java | 29 +- + .../wired/effects/WiredEffectToggleMoodlight.java | 145 ++++++++ + .../wired/effects/WiredEffectToggleRandom.java | 21 +- + .../wired/effects/WiredEffectTriggerStacks.java | 33 +- + .../wired/effects/WiredEffectUnfreeze.java | 13 +- + .../wired/effects/WiredEffectUserFurniBase.java | 13 +- + .../wired/effects/WiredEffectUserToFurni.java | 13 +- + .../wired/effects/WiredEffectWalkToFurni.java | 266 ++++++++++++++ + .../wired/effects/WiredEffectWhisper.java | 13 +- + .../wired/extra/WiredExtraMovementCurve.java | 136 +++++++ + .../interactions/wired/extra/WiredExtraOrEval.java | 12 +- + .../interactions/wired/extra/WiredExtraQuest.java | 69 ++++ + .../wired/extra/WiredExtraQuestBase.java | 129 +++++++ + .../wired/extra/WiredExtraQuestChain.java | 71 ++++ + .../wired/extra/WiredExtraTextOutputFurniName.java | 14 +- + .../wired/extra/WiredExtraTextOutputVariable.java | 14 +- + .../wired/extra/WiredExtraTimeUtilities.java | 136 +++++++ + .../InteractionWiredMatchFurniSettings.java | 5 +- + .../wired/selector/WiredEffectRemoteSelector.java | 199 +++++++++++ + .../selector/WiredEffectScanChestFurniByType.java | 180 ++++++++++ + .../selector/WiredEffectVariableSelectorBase.java | 9 +- + .../wired/triggers/WiredTriggerAtSetTime.java | 13 +- + .../wired/triggers/WiredTriggerAtTimeLong.java | 13 +- + .../triggers/WiredTriggerBotReachedFurni.java | 25 +- + .../wired/triggers/WiredTriggerClockCounter.java | 12 +- + .../wired/triggers/WiredTriggerDiceRolled.java | 125 +++++++ + .../triggers/WiredTriggerFurniStateToggled.java | 14 +- + .../wired/triggers/WiredTriggerGameEnds.java | 13 +- + .../wired/triggers/WiredTriggerGameStarts.java | 13 +- + .../triggers/WiredTriggerHabboClicksFurni.java | 12 +- + .../wired/triggers/WiredTriggerHabboIdles.java | 89 +++++ + .../triggers/WiredTriggerHabboStartsDancing.java | 88 +++++ + .../triggers/WiredTriggerHabboStopsDancing.java | 88 +++++ + .../wired/triggers/WiredTriggerHabboUnidles.java | 88 +++++ + .../triggers/WiredTriggerHabboWalkOffFurni.java | 12 +- + .../triggers/WiredTriggerHabboWalkOnFurni.java | 12 +- + .../wired/triggers/WiredTriggerPressKeybind.java | 120 +++++++ + .../wired/triggers/WiredTriggerReceiveSignal.java | 16 +- + .../wired/triggers/WiredTriggerRepeater.java | 13 +- + .../wired/triggers/WiredTriggerRepeaterLong.java | 13 +- + .../wired/triggers/WiredTriggerRepeaterShort.java | 13 +- + .../triggers/WiredTriggerTransactionComplete.java | 87 +++++ + .../triggers/WiredTriggerTransactionFail.java | 86 +++++ + .../triggers/WiredTriggerUserGetsHandItem.java | 127 +++++++ + .../triggers/WiredTriggerUsernameAsTrigger.java | 64 ++++ + .../eu/habbo/habbohotel/messenger/Messenger.java | 29 +- + .../eu/habbo/habbohotel/modtool/CfhCategory.java | 14 +- + .../habbo/habbohotel/modtool/ModToolCategory.java | 12 +- + .../habbo/habbohotel/modtool/ModToolManager.java | 81 ++--- + .../habbo/habbohotel/modtool/ModToolRoomVisit.java | 8 +- + .../habbo/habbohotel/modtool/ModToolSanctions.java | 13 +- + .../eu/habbo/habbohotel/modtool/WordFilter.java | 38 +- + .../habbohotel/navigation/NavigatorManager.java | 6 +- + .../habbohotel/permissions/PermissionsManager.java | 33 +- + .../com/eu/habbo/habbohotel/permissions/Rank.java | 16 +- + .../java/com/eu/habbo/habbohotel/pets/Pet.java | 10 +- + .../java/com/eu/habbo/habbohotel/pets/PetData.java | 30 +- + .../com/eu/habbo/habbohotel/pets/PetManager.java | 62 ++-- + .../habbo/habbohotel/pets/actions/ActionDip.java | 5 +- + .../habbo/habbohotel/pets/actions/ActionPlay.java | 5 +- + .../com/eu/habbo/habbohotel/polls/PollManager.java | 5 +- + .../eu/habbo/habbohotel/polls/PollQuestion.java | 6 +- + .../habbohotel/rooms/BuildersClubRoomSupport.java | 12 +- + .../java/com/eu/habbo/habbohotel/rooms/Room.java | 164 ++++----- + .../eu/habbo/habbohotel/rooms/RoomChatManager.java | 27 +- + .../habbohotel/rooms/RoomConfInvisSupport.java | 7 +- + .../habbo/habbohotel/rooms/RoomCycleManager.java | 59 ++-- + .../habbohotel/rooms/RoomDiceDisableSupport.java | 47 +++ + .../rooms/RoomDoorkickDisableSupport.java | 47 +++ + .../habbohotel/rooms/RoomFurniVariableManager.java | 7 +- + .../habbohotel/rooms/RoomHideWiredSupport.java | 47 +++ + .../eu/habbo/habbohotel/rooms/RoomItemManager.java | 329 +++++++---------- + .../com/eu/habbo/habbohotel/rooms/RoomLayout.java | 7 +- + .../com/eu/habbo/habbohotel/rooms/RoomManager.java | 86 ++--- + .../habbo/habbohotel/rooms/RoomRightsManager.java | 29 +- + .../habbo/habbohotel/rooms/RoomRollerManager.java | 44 +-- + .../habbo/habbohotel/rooms/RoomSpecialTypes.java | 178 +++++----- + .../com/eu/habbo/habbohotel/rooms/RoomTile.java | 9 +- + .../eu/habbo/habbohotel/rooms/RoomTileManager.java | 31 +- + .../com/eu/habbo/habbohotel/rooms/RoomTrade.java | 13 +- + .../habbo/habbohotel/rooms/RoomTradeManager.java | 10 +- + .../eu/habbo/habbohotel/rooms/RoomTradeUser.java | 10 +- + .../com/eu/habbo/habbohotel/rooms/RoomUnit.java | 101 +++--- + .../eu/habbo/habbohotel/rooms/RoomUnitManager.java | 306 ++++++---------- + .../habbohotel/rooms/RoomUserVariableManager.java | 7 +- + .../habbohotel/rooms/RoomVariableManager.java | 3 +- + .../com/eu/habbo/habbohotel/rooms/TraxManager.java | 4 +- + .../java/com/eu/habbo/habbohotel/users/Habbo.java | 12 +- + .../com/eu/habbo/habbohotel/users/HabboInfo.java | 22 +- + .../eu/habbo/habbohotel/users/HabboInventory.java | 7 +- + .../com/eu/habbo/habbohotel/users/HabboItem.java | 4 +- + .../users/HabboNavigatorWindowSettings.java | 4 +- + .../com/eu/habbo/habbohotel/users/HabboStats.java | 155 ++++++-- + .../ClothingValidationManager.java | 15 +- + .../users/inventory/BadgesComponent.java | 10 +- + .../habbohotel/users/inventory/BotsComponent.java | 6 +- + .../users/inventory/EffectsComponent.java | 10 +- + .../habbohotel/users/inventory/ItemsComponent.java | 64 ++-- + .../habbohotel/users/inventory/PetsComponent.java | 25 +- + .../users/inventory/WardrobeComponent.java | 27 +- + .../users/subscriptions/SubscriptionManager.java | 14 +- + .../eu/habbo/habbohotel/wheel/WheelManager.java | 4 +- + .../habbo/habbohotel/wired/WiredConditionType.java | 8 +- + .../eu/habbo/habbohotel/wired/WiredEffectType.java | 23 +- + .../eu/habbo/habbohotel/wired/WiredHandler.java | 27 +- + .../habbo/habbohotel/wired/WiredTriggerType.java | 10 +- + .../habbohotel/wired/core/RoomWiredStackIndex.java | 15 +- + .../wired/core/WiredContextVariableSupport.java | 4 +- + .../wired/core/WiredDerivedVariableBox.java | 24 ++ + .../habbo/habbohotel/wired/core/WiredEngine.java | 19 +- + .../eu/habbo/habbohotel/wired/core/WiredEvent.java | 14 + + .../habbo/habbohotel/wired/core/WiredManager.java | 50 ++- + .../wired/core/WiredMoveCarryHelper.java | 29 +- + .../wired/core/WiredSelectionFilterSupport.java | 6 +- + .../habbohotel/wired/core/WiredSourceUtil.java | 3 +- + .../wired/core/WiredTextInputCaptureSupport.java | 4 +- + .../wired/core/WiredTextPlaceholderUtil.java | 6 +- + .../wired/core/WiredTriggerSourceUtil.java | 3 +- + .../wired/core/WiredUserMovementHelper.java | 5 +- + .../core/WiredVariableLevelSystemSupport.java | 78 +++- + .../core/WiredVariableTextConnectorSupport.java | 4 +- + .../highscores/WiredHighscoreMidnightUpdater.java | 4 +- + .../habbohotel/wired/migrate/WiredEvents.java | 33 ++ + .../java/com/eu/habbo/messages/PacketManager.java | 28 +- + .../java/com/eu/habbo/messages/PacketNames.java | 5 + + .../eu/habbo/messages/PacketRuntimeValidator.java | 76 ++++ + .../eu/habbo/messages/RuntimeValidationIssue.java | 4 + + .../eu/habbo/messages/RuntimeValidationReport.java | 40 +++ + .../com/eu/habbo/messages/incoming/Incoming.java | 15 + + .../catalog/BuildersClubPlaceRoomItemEvent.java | 2 +- + .../catalog/BuildersClubPlaceWallItemEvent.java | 2 +- + .../catalog/CatalogBuyItemAsGiftEvent.java | 16 +- + .../incoming/catalog/CatalogBuyItemEvent.java | 14 +- + .../incoming/catalog/CatalogSearchedItemEvent.java | 9 +- + .../catalog/CatalogSelectClubGiftEvent.java | 8 +- + .../incoming/catalog/recycler/RecycleEvent.java | 6 +- + .../incoming/crafting/CraftingCraftItemEvent.java | 14 +- + .../crafting/CraftingCraftSecretEvent.java | 9 +- + .../RequestCraftingRecipesAvailableEvent.java | 4 +- + .../floorplaneditor/FloorPlanEditorSaveEvent.java | 15 +- + .../incoming/friends/RemoveFriendEvent.java | 6 +- + .../messages/incoming/friends/SearchUserEvent.java | 6 +- + .../messages/incoming/guilds/GuildDeleteEvent.java | 5 +- + .../incoming/guilds/RequestGuildBuyRoomsEvent.java | 4 +- + .../incoming/guilds/RequestOwnGuildsEvent.java | 6 +- + .../guilds/forums/GuildForumListEvent.java | 16 +- + .../incoming/handshake/SecureLoginEvent.java | 4 +- + .../HousekeepingResetUserPasswordEvent.java | 6 +- + .../inventory/RequestInventoryItemsDelete.java | 15 +- + .../inventory/RequestInventoryItemsEvent.java | 42 +-- + .../modtool/ModToolSanctionAlertEvent.java | 4 +- + .../incoming/modtool/ModToolSanctionBanEvent.java | 4 +- + .../incoming/modtool/ModToolSanctionMuteEvent.java | 4 +- + .../modtool/ModToolSanctionTradeLockEvent.java | 4 +- + .../navigator/GetCategoriesWithUserCountEvent.java | 19 + + .../incoming/navigator/RequestDeleteRoomEvent.java | 4 +- + .../navigator/RequestNewNavigatorDataEvent.java | 9 + + .../navigator/RequestNewNavigatorRoomsEvent.java | 3 +- + .../incoming/rooms/RoomRemoveAllRightsEvent.java | 20 +- + .../incoming/rooms/items/AdvertisingSaveEvent.java | 6 +- + .../incoming/rooms/items/ChestDepositEvent.java | 55 +++ + .../rooms/items/ChestDepositFurniEvent.java | 98 ++++++ + .../items/ChestDepositInventoryItemEvent.java | 35 ++ + .../incoming/rooms/items/ChestOpenEvent.java | 28 ++ + .../incoming/rooms/items/ChestRequestLogEvent.java | 29 ++ + .../rooms/items/ChestSaveNotificationsEvent.java | 40 +++ + .../rooms/items/ChestSaveSettingsEvent.java | 50 +++ + .../rooms/items/ChestStartDepositEvent.java | 30 ++ + .../rooms/items/ChestUpgradeCapacityEvent.java | 56 +++ + .../rooms/items/ChestWithdrawAllFurniEvent.java | 68 ++++ + .../incoming/rooms/items/ChestWithdrawEvent.java | 52 +++ + .../rooms/items/ChestWithdrawFurniEvent.java | 74 ++++ + .../rooms/items/MoodLightSaveSettingsEvent.java | 4 +- + .../rooms/items/MoodLightSettingsEvent.java | 2 +- + .../incoming/rooms/items/MoodLightTurnOnEvent.java | 2 +- + .../incoming/rooms/items/PressKeybindEvent.java | 35 ++ + .../incoming/rooms/items/RedeemClothingEvent.java | 4 +- + .../rooms/items/SetStackHelperHeightEvent.java | 5 +- + .../incoming/rooms/items/ToggleFloorItemEvent.java | 2 +- + .../items/lovelock/LoveLockStartConfirmEvent.java | 66 ++-- + .../incoming/rooms/users/RoomUserWalkEvent.java | 5 +- + .../trading/TradeOfferMultipleItemsEvent.java | 6 +- + .../com/eu/habbo/messages/outgoing/Outgoing.java | 6 + + .../talenttrack/TalentTrackComposer.java | 7 +- + .../outgoing/catalog/CatalogPageComposer.java | 4 +- + .../outgoing/catalog/CatalogPagesListComposer.java | 11 +- + .../outgoing/catalog/ClubGiftsComposer.java | 2 +- + .../outgoing/catalog/PetBreedsComposer.java | 9 +- + .../outgoing/catalog/RecyclerLogicComposer.java | 4 +- + .../calendar/AdventCalendarDataComposer.java | 14 +- + .../FloorPlanEditorBlockedTilesComposer.java | 5 +- + .../messages/outgoing/friends/FriendsComposer.java | 7 +- + .../outgoing/friends/RemoveFriendComposer.java | 12 +- + .../outgoing/friends/RoomInviteErrorComposer.java | 22 +- + .../outgoing/friends/UserSearchResultComposer.java | 12 +- + .../generic/alerts/BubbleAlertComposer.java | 12 +- + .../guardians/GuardianVotingRequestedComposer.java | 5 +- + .../outgoing/guilds/GuildBuyRoomsComposer.java | 9 +- + .../outgoing/guilds/GuildListComposer.java | 9 +- + .../guilds/forums/GuildForumDataComposer.java | 8 +- + .../outgoing/inventory/AddHabboItemComposer.java | 8 +- + .../inventory/InventoryAchievementsComposer.java | 25 +- + .../inventory/InventoryBadgesComposer.java | 6 +- + .../outgoing/inventory/InventoryBotsComposer.java | 5 +- + .../outgoing/inventory/InventoryItemsComposer.java | 26 +- + .../outgoing/inventory/InventoryPetsComposer.java | 14 +- + .../outgoing/modtool/CfhTopicsMessageComposer.java | 29 +- + .../messages/outgoing/modtool/ModToolComposer.java | 21 +- + .../modtool/ModToolSanctionInfoComposer.java | 6 +- + .../outgoing/modtool/ModToolUserInfoComposer.java | 4 +- + .../modtool/ModToolUserRoomVisitsComposer.java | 8 +- + .../NewNavigatorCategoryUserCountComposer.java | 13 +- + .../outgoing/rarevalues/RareValuesComposer.java | 15 +- + .../outgoing/rooms/RoomBannedUsersComposer.java | 21 +- + .../outgoing/rooms/UpdateStackHeightComposer.java | 10 +- + .../outgoing/rooms/items/ChestDataComposer.java | 89 +++++ + .../rooms/items/ChestFurniChunkComposer.java | 41 +++ + .../rooms/items/ChestFurniDeltaComposer.java | 39 ++ + .../outgoing/rooms/items/ChestLogComposer.java | 40 +++ + .../outgoing/rooms/items/ChestOpenComposer.java | 28 ++ + .../rooms/items/ConfInvisStateComposer.java | 9 +- + .../rooms/items/FloorItemOnRollerComposer.java | 5 +- + .../rooms/items/MoodLightDataComposer.java | 13 +- + .../rooms/items/RoomFloorItemsComposer.java | 29 +- + .../rooms/items/RoomWallItemsComposer.java | 28 +- + .../jukebox/JukeBoxPlayListUpdatedComposer.java | 9 +- + .../items/lovelock/LoveLockFurniStartComposer.java | 7 +- + .../outgoing/rooms/pets/RoomPetComposer.java | 24 +- + .../pets/breeding/PetBreedingResultComposer.java | 6 +- + .../rooms/users/RoomUserStatusComposer.java | 11 +- + .../rooms/users/RoomUsersGuildBadgesComposer.java | 24 +- + .../outgoing/users/ClubGiftReceivedComposer.java | 9 +- + .../outgoing/users/FavoriteRoomsCountComposer.java | 11 +- + .../outgoing/users/ProfileFriendsComposer.java | 5 +- + .../outgoing/users/UserClothesComposer.java | 20 +- + .../com/eu/habbo/messages/rcon/ChangeUsername.java | 6 +- + .../com/eu/habbo/messages/rcon/ImageAlertUser.java | 6 +- + .../eu/habbo/messages/rcon/ImageHotelAlert.java | 4 +- + .../main/java/com/eu/habbo/networking/Server.java | 5 +- + .../eu/habbo/networking/gameserver/GameServer.java | 16 + + .../gameserver/WebSocketChannelInitializer.java | 13 + + .../gameserver/auth/AccountChangeEndpoints.java | 3 +- + .../networking/gameserver/auth/AuthHttpUtil.java | 8 +- + .../networking/gameserver/auth/PasswordHasher.java | 25 ++ + .../gameserver/auth/SessionEndpoints.java | 3 +- + .../gameserver/decoders/GameMessageHandler.java | 4 +- + .../eu/habbo/networking/rconserver/RCONServer.java | 7 +- + .../networking/rconserver/RCONServerHandler.java | 2 +- + .../main/java/com/eu/habbo/plugin/HabboPlugin.java | 8 +- + .../java/com/eu/habbo/plugin/PluginManager.java | 119 ++++--- + .../eu/habbo/plugin/PluginRuntimeValidator.java | 69 ++++ + .../furniture/wired/WiredStackExecutedEvent.java | 9 +- + .../furniture/wired/WiredStackTriggeredEvent.java | 9 +- + .../events/inventory/InventoryItemsAddedEvent.java | 7 +- + .../events/rooms/RoomFloorItemsLoadEvent.java | 11 +- + .../catalog/UserCatalogFurnitureBoughtEvent.java | 7 +- + .../catalog/UserCatalogItemPurchasedEvent.java | 8 +- + .../runnables/BattleBanzaiTilesFlicker.java | 7 +- + .../threading/runnables/CannonKickAction.java | 5 +- + .../threading/runnables/ClearRentedSpace.java | 6 +- + .../com/eu/habbo/threading/runnables/OpenGift.java | 4 +- + .../threading/runnables/QueryDeleteHabboItems.java | 12 +- + .../threading/runnables/RandomDiceNumber.java | 7 + + .../threading/runnables/RebugKickBallAction.java | 5 +- + .../eu/habbo/threading/runnables/RoomTrashing.java | 8 +- + .../freeze/FreezeHandleSnowballExplosion.java | 12 +- + .../freeze/FreezeResetExplosionTiles.java | 7 +- + .../runnables/teleport/TeleportActionFive.java | 6 +- + .../java/com/eu/habbo/util/figure/FigureUtil.java | 12 +- + .../eu/habbo/util/imager/badges/BadgeImager.java | 6 +- + .../src/main/java/gnu/trove/map/hash/THashMap.java | 23 ++ + .../habbo/EmulatorStartupConfigDefaultsTest.java | 36 ++ + .../com/eu/habbo/EmulatorStartupConsoleTest.java | 2 +- + .../commands/RedeemCommandValueGuardTest.java | 6 +- + .../rooms/RoomTradeSafetyContractTest.java | 2 +- + .../habbo/messages/PacketRuntimeValidatorTest.java | 70 ++++ + .../crafting/CraftingCraftSecretContractTest.java | 2 +- + .../gameserver/auth/PasswordHasherTest.java | 33 ++ + .../rconserver/RCONServerHandlerContractTest.java | 2 +- + .../habbo/plugin/PluginRuntimeValidatorTest.java | 102 ++++++ + .../test/java/com/eu/habbo/util/HexUtilsTest.java | 38 ++ + .../java/com/eu/habbo/util/SqlLikeEscaperTest.java | 32 ++ + .../com/eu/habbo/util/figure/FigureUtilTest.java | 56 +++ + .../eu/habbo/util/pathfinding/RotationTest.java | 32 ++ + 507 files changed, 20763 insertions(+), 3073 deletions(-) + create mode 100644 .github/dependabot.yml + create mode 100644 .github/workflows/ci.yml + create mode 100644 Database Updates/015_wired_furni_enable_registered.sql + create mode 100644 Database Updates/016_wired_phase1_furni.sql + create mode 100644 Database Updates/017_wired_chest_currency.sql + create mode 100644 Database Updates/018_wired_chest_furni.sql + create mode 100644 Database Updates/019_wired_transactions_scanner.sql + create mode 100644 Database Updates/020_wired_place_remove_furni.sql + create mode 100644 Database Updates/021_wired_contracts.sql + create mode 100644 Database Updates/022_wired_quests.sql + create mode 100644 Database Updates/023_fill_room_207_wiredlab.sql + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionDiceDisableControl.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionDoorkickDisableControl.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/InteractionHideWiredControl.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/WiredComparison.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/chest/ChestDepositSession.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/chest/ChestFurniDepositHelper.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/chest/ChestFurniPackets.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/chest/ChestFurniStoredItem.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/chest/ChestFurniWireUtil.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/chest/ChestOpenHelper.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/chest/ChestStorage.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/chest/ChestWiredCompare.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/chest/ChestWiredCurrencyUtil.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/chest/ChestWiredFurniUtil.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/chest/ContractTerm.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/chest/InteractionWiredChest.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/chest/InteractionWiredChestCurrency.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/chest/InteractionWiredChestFurni.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/chest/InteractionWiredContract.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/chest/WiredTransactionExecutor.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionChestHasItemType.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionChestHasItems.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFrozen.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniInRange.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionFurniNotInRange.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboHasMinItems.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboHasRights.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboIsFemale.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboIsMale.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboLacksCredits.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboLacksDiamonds.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboLacksDuckets.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboNotHasRights.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboNotOwnsFurni.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboOwnsBadge.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHabboOwnsFurni.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionHasTag.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionMottoContains.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNoBattleBanzaiRunning.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotFrozen.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotHabboOwnsBadge.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotHasTag.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotSameHeight.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionSameHeight.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionTriggerFurniAdjacentState.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionUserInRange.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionUserNotInRange.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionUserOnFurniWithState.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/contract/InteractionWiredContract.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/contract/InteractionWiredContractPayment.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/contract/InteractionWiredContractReward.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/contract/InteractionWiredContractTrade.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/contract/InteractionWiredCustomContract.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectAddTag.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectAllUsersLeaveTeam.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectBotDance.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectCancelTransaction.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectForwardUserToRoom.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveAchievement.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveBadge.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveCredits.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveCurrencyFromChest.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveDiamonds.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveDuckets.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveExperience.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveFurniFromChest.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveLook.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGiveOrTakeFurni.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectGivePointsType.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectInitTransaction.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectLay.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectLog.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMakeFastWalk.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMakeUserSay.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveFurniAsGroup.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveUserTiles.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectNegativeLog.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectNegativeShowMessage.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectOpenHabboPages.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectPlaceFurni.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectPlayYoutube.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectQuickBopper.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectRemoveBadge.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectRemoveFurni.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectRemoveTag.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectResetHighscores.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectSayCommand.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectSetRollerSpeed.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectSetRoomAd.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectSit.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectToggleMoodlight.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectWalkToFurni.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredExtraMovementCurve.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredExtraQuest.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredExtraQuestBase.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredExtraQuestChain.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/extra/WiredExtraTimeUtilities.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/selector/WiredEffectRemoteSelector.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/selector/WiredEffectScanChestFurniByType.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerDiceRolled.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboIdles.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboStartsDancing.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboStopsDancing.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboUnidles.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerPressKeybind.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerTransactionComplete.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerTransactionFail.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerUserGetsHandItem.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerUsernameAsTrigger.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomDiceDisableSupport.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomDoorkickDisableSupport.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomHideWiredSupport.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredDerivedVariableBox.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/PacketRuntimeValidator.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/RuntimeValidationIssue.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/RuntimeValidationReport.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/navigator/GetCategoriesWithUserCountEvent.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ChestDepositEvent.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ChestDepositFurniEvent.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ChestDepositInventoryItemEvent.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ChestOpenEvent.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ChestRequestLogEvent.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ChestSaveNotificationsEvent.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ChestSaveSettingsEvent.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ChestStartDepositEvent.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ChestUpgradeCapacityEvent.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ChestWithdrawAllFurniEvent.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ChestWithdrawEvent.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ChestWithdrawFurniEvent.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/PressKeybindEvent.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ChestDataComposer.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ChestFurniChunkComposer.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ChestFurniDeltaComposer.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ChestLogComposer.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/outgoing/rooms/items/ChestOpenComposer.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/networking/gameserver/auth/PasswordHasher.java + create mode 100644 Emulator/src/main/java/com/eu/habbo/plugin/PluginRuntimeValidator.java + create mode 100644 Emulator/src/main/java/gnu/trove/map/hash/THashMap.java + create mode 100644 Emulator/src/test/java/com/eu/habbo/EmulatorStartupConfigDefaultsTest.java + create mode 100644 Emulator/src/test/java/com/eu/habbo/messages/PacketRuntimeValidatorTest.java + create mode 100644 Emulator/src/test/java/com/eu/habbo/networking/gameserver/auth/PasswordHasherTest.java + create mode 100644 Emulator/src/test/java/com/eu/habbo/plugin/PluginRuntimeValidatorTest.java + create mode 100644 Emulator/src/test/java/com/eu/habbo/util/HexUtilsTest.java + create mode 100644 Emulator/src/test/java/com/eu/habbo/util/SqlLikeEscaperTest.java + create mode 100644 Emulator/src/test/java/com/eu/habbo/util/figure/FigureUtilTest.java + create mode 100644 Emulator/src/test/java/com/eu/habbo/util/pathfinding/RotationTest.java +[?25l ⠋ Backing up database... ⠙ Backing up database... ⠹ Backing up database... ⠸ Backing up database... ⠼ Backing up database... ⠴ Backing up database... ⠦ Backing up database... ⠧ Backing up database... ⠇ Backing up database... ⠏ Backing up database... ⠋ Backing up database... ⠙ Backing up database... ⠹ Backing up database... ⠸ Backing up database... ⠼ Backing up database... ⠴ Backing up database... [?12l[?25h ✔ Done + ✔ Backup: 35M +[2026-07-07 14:48:35] [OK] Backup: 35M + ➜ SQL: 017_wired_chest_currency.sql +[2026-07-07 14:48:35] [INFO] SQL: 017_wired_chest_currency.sql + ➜ SQL: 022_wired_quests.sql +[2026-07-07 14:48:35] [INFO] SQL: 022_wired_quests.sql + ➜ SQL: 020_wired_place_remove_furni.sql +[2026-07-07 14:48:35] [INFO] SQL: 020_wired_place_remove_furni.sql + ➜ SQL: 019_wired_transactions_scanner.sql +[2026-07-07 14:48:35] [INFO] SQL: 019_wired_transactions_scanner.sql + ➜ SQL: 023_fill_room_207_wiredlab.sql +[2026-07-07 14:48:35] [INFO] SQL: 023_fill_room_207_wiredlab.sql + ➜ SQL: 018_wired_chest_furni.sql +[2026-07-07 14:48:35] [INFO] SQL: 018_wired_chest_furni.sql + ➜ SQL: 015_wired_furni_enable_registered.sql +[2026-07-07 14:48:35] [INFO] SQL: 015_wired_furni_enable_registered.sql + ➜ SQL: 016_wired_phase1_furni.sql +[2026-07-07 14:48:35] [INFO] SQL: 016_wired_phase1_furni.sql + ➜ SQL: 021_wired_contracts.sql +[2026-07-07 14:48:35] [INFO] SQL: 021_wired_contracts.sql + ✔ 9 SQL file(s) imported +[2026-07-07 14:48:35] [OK] 9 SQL file(s) imported +[?25l ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... ⠧ Building emulator... ⠇ Building emulator... ⠏ Building emulator... ⠋ Building emulator... ⠙ Building emulator... ⠹ Building emulator... ⠸ Building emulator... ⠼ Building emulator... ⠴ Building emulator... ⠦ Building emulator... WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release +14:48:59.220 WARN [main ] FurnidataReader | FurnidataReader: ignoring out-of-base file /tmp/junit-13697708161754052782/furnidata/core/../../secret.json +14:48:59.228 WARN [main ] FurnidataReader | FurnidataReader: /tmp/junit-7570398690166415207/FurnitureData.json is 292 bytes, over cap 8 — refusing +14:48:59.234 WARN [main ] FurnidataReader | FurnidataReader: /tmp/junit-17548853137162548178/furnidata/manifest.json is 1850 bytes, over cap 8 — refusing +14:48:59.960 INFO [main ] Version | HV000001: Hibernate Validator 9.1.2.Final + [?12l[?25h ✔ Done + ✔ Jar: Habbo-4.2.49-jar-with-dependencies.jar +[2026-07-07 14:49:07] [OK] Jar: Habbo-4.2.49-jar-with-dependencies.jar + ✔ Launch script updated +[2026-07-07 14:49:07] [OK] Launch script updated + +  Step 3/8 — Update Nitro_Render_V3  + +No local changes to save +Your branch is up to date with 'origin/main'. +Updating ed90605..5909c9e +Fast-forward + .../api/src/asset/avatar/IAssetAvatarCanvas.ts | 7 + + .../api/src/asset/avatar/IAssetAvatarGeometry.ts | 8 + + packages/api/src/asset/avatar/index.ts | 2 + + packages/api/src/asset/index.ts | 1 + + .../api/src/nitro/avatar/IAvatarFigureContainer.ts | 10 +- + packages/api/src/nitro/avatar/IAvatarImage.ts | 13 +- + .../api/src/nitro/avatar/IAvatarRenderManager.ts | 4 +- + .../src/nitro/avatar/actions/IActionDefinition.ts | 10 +- + .../nitro/avatar/animation/IAnimationManager.ts | 4 +- + .../nitro/avatar/animation/ISpriteDataContainer.ts | 6 +- + .../src/nitro/avatar/structure/IFigurePartSet.ts | 2 +- + .../api/src/nitro/avatar/structure/ISetType.ts | 6 +- + .../src/nitro/avatar/structure/IStructureData.ts | 8 +- + packages/api/src/nitro/room/IRoomCreator.ts | 6 +- + packages/api/src/nitro/room/IRoomEngine.ts | 8 +- + packages/api/src/nitro/room/IRoomEngineServices.ts | 10 +- + .../api/src/nitro/room/IRoomObjectEventManager.ts | 2 +- + .../nitro/room/object/data/type/HighScoreData.ts | 12 +- + .../room/utils/IFurnitureStackingHeightMap.ts | 2 +- + .../src/nitro/room/utils/ILegacyWallGeometry.ts | 14 +- + .../api/src/nitro/room/utils/ITileObjectMap.ts | 8 +- + packages/api/src/nitro/session/PetFigureData.ts | 50 +- + .../src/nitro/session/enum/RoomTradingLevelEnum.ts | 4 +- + packages/api/src/nitro/sound/IMusicController.ts | 18 +- + packages/api/src/room/IRoomGeometry.ts | 12 +- + packages/api/src/room/IRoomManagerListener.ts | 2 +- + .../src/room/object/IRoomObjectModelController.ts | 10 +- + packages/api/src/ui/enums/AvatarExpressionEnum.ts | 8 +- + packages/avatar/src/AvatarFigureContainer.ts | 20 +- + packages/avatar/src/AvatarImage.ts | 89 +- + .../avatar/src/AvatarImageBodyPartContainer.ts | 24 +- + packages/avatar/src/AvatarImagePartContainer.ts | 18 +- + packages/avatar/src/AvatarRenderManager.ts | 8 +- + packages/avatar/src/AvatarStructure.ts | 6 +- + packages/avatar/src/EffectAssetDownloadManager.ts | 9 +- + packages/avatar/src/FigureDataContainer.ts | 88 +- + packages/avatar/src/PlaceHolderAvatarImage.ts | 4 +- + packages/avatar/src/actions/ActionDefinition.ts | 26 +- + packages/avatar/src/actions/AvatarActionManager.ts | 10 +- + packages/avatar/src/alias/AssetAliasCollection.ts | 28 +- + packages/avatar/src/animation/AddDataContainer.ts | 18 +- + packages/avatar/src/animation/Animation.ts | 91 +- + packages/avatar/src/animation/AnimationManager.ts | 6 +- + .../src/animation/AvatarAnimationLayerData.ts | 36 +- + .../avatar/src/animation/AvatarDataContainer.ts | 8 +- + .../avatar/src/animation/DirectionDataContainer.ts | 4 +- + .../avatar/src/animation/SpriteDataContainer.ts | 28 +- + .../avatar/src/cache/AvatarImageActionCache.ts | 14 +- + .../avatar/src/cache/AvatarImageBodyPartCache.ts | 36 +- + packages/avatar/src/cache/AvatarImageCache.ts | 76 +- + .../avatar/src/cache/AvatarImageDirectionCache.ts | 20 +- + packages/avatar/src/cache/ImageData.ts | 4 +- + packages/avatar/src/data/HabboAvatarGeometry.ts | 4 +- + .../avatar/src/geometry/AvatarModelGeometry.ts | 104 +- + packages/avatar/src/geometry/AvatarSet.ts | 22 +- + packages/avatar/src/geometry/GeometryBodyPart.ts | 74 +- + packages/avatar/src/geometry/GeometryItem.ts | 24 +- + .../avatar/src/structure/AvatarAnimationData.ts | 10 +- + packages/avatar/src/structure/AvatarCanvas.ts | 14 +- + packages/avatar/src/structure/FigureSetData.ts | 16 +- + packages/avatar/src/structure/PartSetsData.ts | 18 +- + packages/avatar/src/structure/figure/FigurePart.ts | 2 +- + .../avatar/src/structure/figure/FigurePartSet.ts | 4 +- + packages/avatar/src/structure/figure/PartColor.ts | 4 +- + packages/avatar/src/structure/figure/SetType.ts | 15 +- + .../avatar/src/structure/parts/PartDefinition.ts | 4 +- + packages/communication/src/NitroMessages.ts | 22 + + .../src/messages/incoming/IncomingHeader.ts | 5 + + .../incoming/room/furniture/ChestDataEvent.ts | 16 + + .../room/furniture/ChestFurniChunkEvent.ts | 16 + + .../room/furniture/ChestFurniDeltaEvent.ts | 16 + + .../incoming/room/furniture/ChestLogEvent.ts | 16 + + .../incoming/room/furniture/ChestOpenEvent.ts | 16 + + .../src/messages/incoming/room/furniture/index.ts | 5 + + .../src/messages/outgoing/OutgoingHeader.ts | 13 + + .../outgoing/camera/RenderRoomMessageComposer.ts | 2 +- + .../camera/RenderRoomThumbnailMessageComposer.ts | 4 +- + .../OpenCampaignCalendarDoorAsStaffComposer.ts | 4 +- + .../campaign/OpenCampaignCalendarDoorComposer.ts | 4 +- + .../BuildersClubPlaceRoomItemMessageComposer.ts | 4 +- + .../BuildersClubPlaceWallItemMessageComposer.ts | 4 +- + .../catalog/GetCatalogPageExpirationComposer.ts | 4 +- + .../outgoing/catalog/GetIsOfferGiftableComposer.ts | 4 +- + .../catalog/GetNextTargetedOfferComposer.ts | 4 +- + .../PurchaseBasicMembershipExtensionComposer.ts | 4 +- + .../catalog/PurchaseRoomAdMessageComposer.ts | 4 +- + .../catalog/PurchaseTargetedOfferComposer.ts | 4 +- + .../PurchaseVipMembershipExtensionComposer.ts | 4 +- + .../catalog/SetTargetedOfferStateComposer.ts | 4 +- + .../catalog/ShopTargetedOfferViewedComposer.ts | 4 +- + .../ForwardToACompetitionRoomMessageComposer.ts | 4 +- + ...orwardToRandomCompetitionRoomMessageComposer.ts | 4 +- + .../GetCurrentTimingCodeMessageComposer.ts | 4 +- + .../GetIsUserPartOfCompetitionMessageComposer.ts | 4 +- + .../competition/GetSecondsUntilMessageComposer.ts | 4 +- + .../SubmitRoomToCompetitionMessageComposer.ts | 4 +- + .../competition/VoteForRoomMessageComposer.ts | 4 +- + .../messages/outgoing/crafting/CraftComposer.ts | 4 +- + .../outgoing/crafting/CraftSecretComposer.ts | 4 +- + .../crafting/GetCraftableProductsComposer.ts | 4 +- + .../outgoing/crafting/GetCraftingRecipeComposer.ts | 4 +- + .../GetCraftingRecipesAvailableComposer.ts | 4 +- + .../arena/Game2LoadStageReadyMessageComposer.ts | 4 +- + .../Game2GetAccountGameStatusMessageComposer.ts | 4 +- + .../Game2RequestFullStatusUpdateMessageComposer.ts | 4 +- + .../game/lobby/AcceptGameInviteMessageComposer.ts | 4 +- + .../game/lobby/GameUnloadedMessageComposer.ts | 4 +- + .../game/lobby/GetGameStatusMessageComposer.ts | 4 +- + .../GetUserGameAchievementsMessageComposer.ts | 4 +- + .../game/lobby/JoinQueueMessageComposer.ts | 4 +- + .../game/lobby/LeaveQueueMessageComposer.ts | 4 +- + .../ResetResolutionAchievementMessageComposer.ts | 4 +- + .../Game2GetWeeklyFriendsLeaderboardComposer.ts | 4 +- + .../score/Game2GetWeeklyLeaderboardComposer.ts | 4 +- + .../game/score/GetWeeklyGameRewardComposer.ts | 4 +- + .../score/GetWeeklyGameRewardWinnersComposer.ts | 4 +- + ...PhoneNumberVerificationStatusMessageComposer.ts | 4 +- + .../gifts/TryPhoneNumberMessageComposer.ts | 4 +- + .../outgoing/gifts/VerifyCodeMessageComposer.ts | 4 +- + .../groupforums/GetForumStatsMessageComposer.ts | 4 +- + .../groupforums/GetForumsListMessageComposer.ts | 4 +- + .../groupforums/GetMessagesMessageComposer.ts | 4 +- + .../groupforums/GetThreadMessageComposer.ts | 4 +- + .../groupforums/GetThreadsMessageComposer.ts | 4 +- + .../groupforums/ModerateMessageMessageComposer.ts | 4 +- + .../groupforums/ModerateThreadMessageComposer.ts | 4 +- + .../groupforums/PostMessageMessageComposer.ts | 4 +- + .../UpdateForumReadMarkerMessageComposer.ts | 8 +- + .../UpdateForumSettingsMessageComposer.ts | 4 +- + .../groupforums/UpdateThreadMessageComposer.ts | 4 +- + .../CallForHelpFromForumMessageMessageComposer.ts | 4 +- + .../CallForHelpFromForumThreadMessageComposer.ts | 4 +- + .../help/CallForHelpFromSelfieMessageComposer.ts | 4 +- + ...ChatReviewGuideDecidesOnOfferMessageComposer.ts | 4 +- + .../help/ChatReviewGuideVoteMessageComposer.ts | 4 +- + .../help/ChatReviewSessionCreateMessageComposer.ts | 4 +- + .../outgoing/help/GetCfhStatusMessageComposer.ts | 4 +- + .../outgoing/help/GetQuizQuestionsComposer.ts | 4 +- + .../help/GuideSessionCreateMessageComposer.ts | 4 +- + .../help/GuideSessionFeedbackMessageComposer.ts | 4 +- + .../GuideSessionGuideDecidesMessageComposer.ts | 4 +- + .../help/GuideSessionIsTypingMessageComposer.ts | 4 +- + .../help/GuideSessionMessageMessageComposer.ts | 4 +- + .../GuideSessionOnDutyUpdateMessageComposer.ts | 4 +- + .../help/GuideSessionReportMessageComposer.ts | 4 +- + .../outgoing/help/SearchFaqsMessageComposer.ts | 4 +- + .../badges/GetIsBadgeRequestFulfilledComposer.ts | 4 +- + .../CloseIssueDefaultActionMessageComposer.ts | 4 +- + .../moderation/DefaultSanctionMessageComposer.ts | 8 +- + .../moderation/GetRoomVisitsMessageComposer.ts | 4 +- + .../outgoing/moderation/ModAlertMessageComposer.ts | 8 +- + .../outgoing/moderation/ModBanMessageComposer.ts | 8 +- + .../outgoing/moderation/ModKickMessageComposer.ts | 8 +- + .../moderation/ModMessageMessageComposer.ts | 12 +- + .../outgoing/moderation/ModMuteMessageComposer.ts | 8 +- + .../moderation/ModToolPreferencesComposer.ts | 4 +- + .../outgoing/moderation/ModToolSanctionComposer.ts | 4 +- + .../moderation/ModTradingLockMessageComposer.ts | 8 +- + .../moderation/ModeratorActionMessageComposer.ts | 8 +- + .../MysteryBoxWaitingCanceledMessageComposer.ts | 4 +- + .../navigator/CancelEventMessageComposer.ts | 4 +- + .../CompetitionRoomsSearchMessageComposer.ts | 4 +- + .../DeleteFavouriteRoomMessageComposer.ts | 4 +- + .../outgoing/navigator/EditEventMessageComposer.ts | 4 +- + .../ForwardToARandomPromotedRoomMessageComposer.ts | 4 +- + .../navigator/ForwardToSomeRoomMessageComposer.ts | 4 +- + .../navigator/GetOfficialRoomsMessageComposer.ts | 4 +- + .../navigator/GuildBaseSearchMessageComposer.ts | 4 +- + .../navigator/PopularRoomsSearchMessageComposer.ts | 4 +- + .../outgoing/navigator/RateFlatMessageComposer.ts | 4 +- + .../navigator/RoomAdEventTabAdClickedComposer.ts | 4 +- + .../navigator/RoomAdSearchMessageComposer.ts | 4 +- + .../navigator/RoomTextSearchMessageComposer.ts | 4 +- + .../RoomsWithHighestScoreSearchMessageComposer.ts | 4 +- + .../navigator/SetRoomSessionTagsMessageComposer.ts | 4 +- + .../messages/outgoing/poll/PollRejectComposer.ts | 4 +- + .../messages/outgoing/poll/PollStartComposer.ts | 4 +- + .../outgoing/quest/AcceptQuestMessageComposer.ts | 4 +- + .../outgoing/quest/ActivateQuestMessageComposer.ts | 4 +- + .../GetCommunityGoalHallOfFameMessageComposer.ts | 4 +- + .../outgoing/quest/GetDailyQuestMessageComposer.ts | 4 +- + .../outgoing/quest/StartCampaignMessageComposer.ts | 4 +- + .../messages/outgoing/room/PressKeybindComposer.ts | 23 + + .../room/furniture/chest/ChestDepositComposer.ts | 25 + + .../furniture/chest/ChestDepositFurniComposer.ts | 25 + + .../chest/ChestDepositInventoryItemComposer.ts | 22 + + .../room/furniture/chest/ChestOpenComposer.ts | 22 + + .../furniture/chest/ChestRequestLogComposer.ts | 24 + + .../chest/ChestSaveNotificationsComposer.ts | 24 + + .../furniture/chest/ChestSaveSettingsComposer.ts | 24 + + .../furniture/chest/ChestStartDepositComposer.ts | 22 + + .../chest/ChestUpgradeCapacityComposer.ts | 24 + + .../chest/ChestWithdrawAllFurniComposer.ts | 22 + + .../room/furniture/chest/ChestWithdrawComposer.ts | 25 + + .../furniture/chest/ChestWithdrawFurniComposer.ts | 25 + + .../outgoing/room/furniture/chest/index.ts | 12 + + .../dimmer/MoodlightSettingsSaveComposer.ts | 4 +- + .../src/messages/outgoing/room/furniture/index.ts | 1 + + .../FurnitureMannequinSaveLookComposer.ts | 4 +- + .../room/furniture/presents/OpenPresentComposer.ts | 4 +- + .../room/furniture/toner/ApplyTonerComposer.ts | 4 +- + ...ControlYoutubeDisplayPlaybackMessageComposer.ts | 4 +- + .../GetYoutubeDisplayStatusMessageComposer.ts | 4 +- + .../SetYoutubeDisplayPlaylistMessageComposer.ts | 4 +- + .../src/messages/outgoing/room/index.ts | 1 + + .../RoomNetworkOpenConnectionMessageComposer.ts | 4 +- + .../UpdateRoomCategoryAndTradeSettingsComposer.ts | 4 +- + .../outgoing/sound/AddJukeboxDiskComposer.ts | 4 +- + .../sound/GetOfficialSongIdMessageComposer.ts | 4 +- + .../outgoing/sound/RemoveJukeboxDiskComposer.ts | 4 +- + .../tracking/PerformanceLogMessageComposer.ts | 4 +- + .../catalog/GiftWrappingConfigurationParser.ts | 16 +- + .../messages/parser/catalog/TargetedOfferData.ts | 4 +- + .../lobby/AchievementResolutionsMessageParser.ts | 6 +- + .../game/lobby/GameAchievementsMessageParser.ts | 12 +- + .../parser/game/lobby/GameListMessageParser.ts | 8 +- + .../parser/game/lobby/LoadGameMessageParser.ts | 6 +- + .../messages/parser/game/score/LeaderboardEntry.ts | 14 +- + .../src/messages/parser/groupforums/ForumData.ts | 4 +- + .../parser/groupforums/GuildForumThread.ts | 8 +- + .../inventory/achievements/AchievementParser.ts | 6 +- + .../inventory/achievements/AchievementsParser.ts | 10 +- + .../achievements/AchievementsScoreParser.ts | 6 +- + .../parser/inventory/avatareffect/AvatarEffect.ts | 24 +- + .../parser/inventory/badges/BadgeAndPointLimit.ts | 8 +- + .../inventory/badges/BadgePointLimitsParser.ts | 18 +- + .../parser/inventory/pets/PetFigureDataParser.ts | 2 +- + .../inventory/pets/PetReceivedMessageParser.ts | 6 +- + .../inventory/trading/TradingListItemParser.ts | 6 +- + .../parser/landingview/PromoArticleData.ts | 18 +- + .../messages/parser/moderation/CfhChatlogData.ts | 12 +- + .../messages/parser/moderation/ChatRecordData.ts | 4 +- + .../parser/moderation/IssueDeletedMessageParser.ts | 4 +- + .../parser/moderation/IssueInfoMessageParser.ts | 38 +- + .../messages/parser/moderation/IssueMessageData.ts | 20 +- + .../moderation/IssuePickFailedMessageParser.ts | 18 +- + .../src/messages/parser/moderation/ModRoomData.ts | 12 +- + .../ModeratorToolPreferencesMessageParser.ts | 10 +- + .../messages/parser/moderation/PatternMatchData.ts | 8 +- + .../parser/moderation/RoomModerationData.ts | 14 +- + .../messages/parser/moderation/RoomVisitData.ts | 10 +- + .../messages/parser/moderation/RoomVisitsData.ts | 16 +- + .../utils/CategoriesWithVisitorCountData.ts | 14 +- + .../parser/navigator/utils/CompetitionRoomsData.ts | 14 +- + .../navigator/utils/GuestRoomSearchResultData.ts | 18 +- + .../navigator/utils/OfficialRoomEntryData.ts | 28 +- + .../parser/navigator/utils/RoomEventData.ts | 42 +- + .../src/messages/parser/poll/PollContentsParser.ts | 18 +- + .../src/messages/parser/poll/PollQuestion.ts | 8 +- + .../src/messages/parser/quest/PrizeData.ts | 14 +- + .../parser/quest/QuestDailyMessageParser.ts | 4 +- + .../src/messages/parser/quest/QuestMessageData.ts | 24 +- + .../messages/parser/room/data/RoomDataParser.ts | 8 +- + .../room/furniture/ChestDataMessageParser.ts | 134 ++ + .../room/furniture/ChestFurniChunkMessageParser.ts | 43 + + .../room/furniture/ChestFurniDeltaMessageParser.ts | 46 + + .../room/furniture/ChestFurniStoredItemParser.ts | 54 + + .../parser/room/furniture/ChestLogMessageParser.ts | 52 + + .../room/furniture/ChestOpenMessageParser.ts | 26 + + .../src/messages/parser/room/furniture/index.ts | 6 + + .../furniture/youtube/YoutubeDisplayPlaylist.ts | 8 +- + .../messages/parser/room/unit/RoomUnitParser.ts | 46 +- + .../messages/parser/room/unit/UserMessageData.ts | 168 +-- + .../src/messages/parser/roomevents/Triggerable.ts | 4 +- + .../parser/roomsettings/RoomSettingsData.ts | 4 +- + .../src/messages/parser/sound/PlayListEntry.ts | 4 +- + .../parser/sound/TraxSongInfoMessageParser.ts | 6 +- + .../sound/UserSongDisksInventoryMessageParser.ts | 12 +- + .../src/messages/parser/user/ScrKickbackData.ts | 20 +- + .../UserClassificationMessageParser.ts | 16 +- + .../events/src/room/RoomBackgroundColorEvent.ts | 6 +- + .../events/src/room/RoomEngineDimmerStateEvent.ts | 4 +- + .../src/room/RoomEngineObjectPlacedOnUserEvent.ts | 4 +- + .../src/room/RoomEngineSamplePlaybackEvent.ts | 4 +- + .../events/src/room/RoomObjectBadgeAssetEvent.ts | 4 +- + .../events/src/room/RoomObjectFloorHoleEvent.ts | 4 +- + .../src/room/RoomObjectHSLColorEnableEvent.ts | 12 +- + .../src/room/RoomObjectHSLColorEnabledEvent.ts | 12 +- + packages/events/src/room/RoomObjectMouseEvent.ts | 16 +- + packages/events/src/room/RoomObjectMoveEvent.ts | 4 +- + .../src/room/RoomObjectSamplePlaybackEvent.ts | 4 +- + packages/events/src/room/RoomSpriteMouseEvent.ts | 8 +- + .../src/session/RoomSessionErrorMessageEvent.ts | 6 +- + .../session/RoomSessionPetCommandsUpdateEvent.ts | 4 +- + .../src/session/RoomSessionPetInfoUpdateEvent.ts | 6 +- + .../events/src/session/RoomSessionPollEvent.ts | 34 +- + .../events/src/session/RoomSessionPresentEvent.ts | 4 +- + .../src/session/RoomSessionPropertyUpdateEvent.ts | 4 +- + .../events/src/session/RoomSessionQueueEvent.ts | 18 +- + .../src/session/RoomSessionUserBadgesEvent.ts | 8 +- + .../events/src/session/RoomSessionUserTagsEvent.ts | 6 +- + .../events/src/session/RoomSessionVoteEvent.ts | 12 +- + .../events/src/session/RoomSessionWordQuizEvent.ts | 30 +- + .../src/session/SessionDataPreferencesEvent.ts | 4 +- + packages/events/src/sound/NowPlayingEvent.ts | 4 +- + packages/events/src/sound/PlayListStatusEvent.ts | 4 +- + .../src/sound/SongDiskInventoryReceivedEvent.ts | 4 +- + packages/events/src/sound/SongInfoReceivedEvent.ts | 6 +- + packages/localization/src/BadgeBaseAndLevel.ts | 4 +- + packages/localization/src/LocalizationManager.ts | 4 +- + packages/room/src/RoomContentLoader.ts | 8 +- + packages/room/src/RoomEngine.ts | 310 ++--- + packages/room/src/RoomMessageHandler.ts | 26 +- + packages/room/src/RoomObjectEventHandler.ts | 417 +++--- + packages/room/src/RoomObjectLogicFactory.ts | 3 + + packages/room/src/RoomObjectManager.ts | 8 +- + .../room/src/RoomObjectVisualizationFactory.ts | 6 + + packages/room/src/RoomPreviewer.ts | 20 +- + .../room/src/__tests__/RoomContentLoader.test.ts | 43 + + .../src/messages/ObjectTileCursorUpdateMessage.ts | 4 +- + .../room/src/object/RoomPlaneBitmapMaskData.ts | 4 +- + .../room/src/object/RoomPlaneBitmapMaskParser.ts | 22 +- + packages/room/src/object/RoomPlaneData.ts | 142 +- + packages/room/src/object/RoomPlaneMaskData.ts | 10 +- + packages/room/src/object/RoomPlaneParser.ts | 1469 ++++++++++---------- + packages/room/src/object/RoomWallData.ts | 118 +- + packages/room/src/object/logic/RoomLogic.ts | 56 +- + .../room/src/object/logic/RoomObjectLogicBase.ts | 6 +- + .../object/logic/furniture/FurnitureScoreLogic.ts | 14 +- + .../logic/furniture/FurnitureVoteCounterLogic.ts | 20 +- + .../visualization/avatar/AvatarVisualization.ts | 30 +- + .../src/object/visualization/data/AnimationData.ts | 18 +- + .../object/visualization/data/AnimationFrame.ts | 8 +- + .../visualization/data/AnimationFrameData.ts | 4 +- + .../object/visualization/data/AnimationSizeData.ts | 4 +- + .../visualization/data/AnimationStateData.ts | 22 +- + .../src/object/visualization/data/PetSizeData.ts | 20 +- + .../furniture/FurnitureAnimatedVisualization.ts | 4 +- + .../FurnitureAnimatedVisualizationData.ts | 4 +- + .../furniture/FurnitureParticleSystem.ts | 10 +- + .../furniture/FurnitureParticleSystemEmitter.ts | 8 +- + .../furniture/FurnitureParticleSystemParticle.ts | 4 +- + .../furniture/FurniturePartyBeamerVisualization.ts | 26 +- + .../furniture/FurnitureVisualization.ts | 2 +- + .../furniture/IsometricImageFurniVisualization.ts | 8 +- + .../object/visualization/pet/PetVisualization.ts | 21 +- + .../visualization/pet/PetVisualizationData.ts | 4 +- + .../object/visualization/room/PlaneDrawingData.ts | 38 +- + .../src/object/visualization/room/RoomPlane.ts | 64 +- + .../visualization/room/RoomPlaneRectangleMask.ts | 10 +- + .../object/visualization/room/RoomVisualization.ts | 122 +- + .../object/visualization/room/mask/PlaneMask.ts | 28 +- + .../visualization/room/mask/PlaneMaskBitmap.ts | 12 +- + .../visualization/room/mask/PlaneMaskManager.ts | 20 +- + .../room/mask/PlaneMaskVisualization.ts | 10 +- + .../object/visualization/room/utils/Randomizer.ts | 92 +- + packages/room/src/renderer/RoomSpriteCanvas.ts | 28 +- + .../room/src/renderer/cache/RoomObjectCache.ts | 22 +- + .../room/src/renderer/cache/RoomObjectCacheItem.ts | 4 +- + .../room/src/renderer/utils/ObjectMouseData.ts | 8 +- + .../room/src/utils/FurnitureStackingHeightMap.ts | 40 +- + packages/room/src/utils/LegacyWallGeometry.ts | 228 +-- + packages/room/src/utils/RoomCamera.ts | 122 +- + packages/room/src/utils/RoomData.ts | 12 +- + packages/room/src/utils/RoomEnterEffect.ts | 12 +- + packages/room/src/utils/RoomGeometry.ts | 310 ++--- + packages/room/src/utils/RoomInstanceData.ts | 16 +- + packages/room/src/utils/RoomRotatingEffect.ts | 14 +- + packages/room/src/utils/RoomShakingEffect.ts | 14 +- + packages/room/src/utils/TileObjectMap.ts | 52 +- + packages/room/src/utils/isWiredChestFloorItem.ts | 11 + + packages/session/src/RoomPetData.ts | 80 +- + packages/session/src/RoomUserData.ts | 144 +- + packages/session/src/badge/BadgeImageManager.ts | 4 +- + packages/session/src/furniture/FurnitureData.ts | 4 +- + packages/sound/src/common/SongDataEntry.ts | 4 +- + packages/sound/src/music/MusicController.ts | 126 +- + packages/utils/src/AdvancedMap.ts | 2 +- + packages/utils/src/ColorConverter.ts | 66 +- + packages/utils/src/FurniId.ts | 4 +- + packages/utils/src/GamedataLoader.ts | 4 +- + packages/utils/src/Matrix4x4.ts | 110 +- + packages/utils/src/NumberBank.ts | 22 +- + packages/utils/src/PointMath.ts | 12 +- + packages/utils/src/Vector3d.ts | 20 +- + packages/utils/src/motion/Callback.ts | 8 +- + packages/utils/src/motion/Combo.ts | 6 +- + packages/utils/src/motion/Dispose.ts | 8 +- + packages/utils/src/motion/DropBounce.ts | 20 +- + packages/utils/src/motion/Ease.ts | 12 +- + packages/utils/src/motion/EaseOut.ts | 8 +- + packages/utils/src/motion/EaseRate.ts | 6 +- + packages/utils/src/motion/JumpBy.ts | 8 +- + packages/utils/src/motion/Motion.ts | 12 +- + packages/utils/src/motion/Motions.ts | 94 +- + packages/utils/src/motion/MoveBy.ts | 4 +- + packages/utils/src/motion/MoveTo.ts | 14 +- + packages/utils/src/motion/Queue.ts | 12 +- + packages/utils/src/motion/ResizeTo.ts | 14 +- + packages/utils/src/motion/Wait.ts | 10 +- + 390 files changed, 4804 insertions(+), 3856 deletions(-) + create mode 100644 packages/api/src/asset/avatar/IAssetAvatarCanvas.ts + create mode 100644 packages/api/src/asset/avatar/IAssetAvatarGeometry.ts + create mode 100644 packages/api/src/asset/avatar/index.ts + create mode 100644 packages/communication/src/messages/incoming/room/furniture/ChestDataEvent.ts + create mode 100644 packages/communication/src/messages/incoming/room/furniture/ChestFurniChunkEvent.ts + create mode 100644 packages/communication/src/messages/incoming/room/furniture/ChestFurniDeltaEvent.ts + create mode 100644 packages/communication/src/messages/incoming/room/furniture/ChestLogEvent.ts + create mode 100644 packages/communication/src/messages/incoming/room/furniture/ChestOpenEvent.ts + create mode 100644 packages/communication/src/messages/outgoing/room/PressKeybindComposer.ts + create mode 100644 packages/communication/src/messages/outgoing/room/furniture/chest/ChestDepositComposer.ts + create mode 100644 packages/communication/src/messages/outgoing/room/furniture/chest/ChestDepositFurniComposer.ts + create mode 100644 packages/communication/src/messages/outgoing/room/furniture/chest/ChestDepositInventoryItemComposer.ts + create mode 100644 packages/communication/src/messages/outgoing/room/furniture/chest/ChestOpenComposer.ts + create mode 100644 packages/communication/src/messages/outgoing/room/furniture/chest/ChestRequestLogComposer.ts + create mode 100644 packages/communication/src/messages/outgoing/room/furniture/chest/ChestSaveNotificationsComposer.ts + create mode 100644 packages/communication/src/messages/outgoing/room/furniture/chest/ChestSaveSettingsComposer.ts + create mode 100644 packages/communication/src/messages/outgoing/room/furniture/chest/ChestStartDepositComposer.ts + create mode 100644 packages/communication/src/messages/outgoing/room/furniture/chest/ChestUpgradeCapacityComposer.ts + create mode 100644 packages/communication/src/messages/outgoing/room/furniture/chest/ChestWithdrawAllFurniComposer.ts + create mode 100644 packages/communication/src/messages/outgoing/room/furniture/chest/ChestWithdrawComposer.ts + create mode 100644 packages/communication/src/messages/outgoing/room/furniture/chest/ChestWithdrawFurniComposer.ts + create mode 100644 packages/communication/src/messages/outgoing/room/furniture/chest/index.ts + create mode 100644 packages/communication/src/messages/parser/room/furniture/ChestDataMessageParser.ts + create mode 100644 packages/communication/src/messages/parser/room/furniture/ChestFurniChunkMessageParser.ts + create mode 100644 packages/communication/src/messages/parser/room/furniture/ChestFurniDeltaMessageParser.ts + create mode 100644 packages/communication/src/messages/parser/room/furniture/ChestFurniStoredItemParser.ts + create mode 100644 packages/communication/src/messages/parser/room/furniture/ChestLogMessageParser.ts + create mode 100644 packages/communication/src/messages/parser/room/furniture/ChestOpenMessageParser.ts + create mode 100644 packages/room/src/__tests__/RoomContentLoader.test.ts + create mode 100644 packages/room/src/utils/isWiredChestFloorItem.ts +[?25l ⠋ Installing deps... ⠙ Installing deps... yarn install v1.22.22 + ⠹ Installing deps... [1/4] Resolving packages... + ⠸ Installing deps... [2/4] Fetching packages... + ⠼ Installing deps... [3/4] Linking dependencies... +warning " > @vitest/coverage-v8@4.1.6" has incorrect peer dependency "vitest@4.1.6". +warning Workspaces can only be enabled in private projects. +warning Workspaces can only be enabled in private projects. +warning Workspaces can only be enabled in private projects. +warning Workspaces can only be enabled in private projects. +warning Workspaces can only be enabled in private projects. +warning Workspaces can only be enabled in private projects. +warning Workspaces can only be enabled in private projects. +warning Workspaces can only be enabled in private projects. +warning Workspaces can only be enabled in private projects. +warning Workspaces can only be enabled in private projects. +warning Workspaces can only be enabled in private projects. +warning Workspaces can only be enabled in private projects. +warning Workspaces can only be enabled in private projects. +warning Workspaces can only be enabled in private projects. + ⠴ Installing deps... ⠦ Installing deps... ⠧ Installing deps... ⠇ Installing deps... ⠏ Installing deps... ⠋ Installing deps... ⠙ Installing deps... ⠹ Installing deps... ⠸ Installing deps... ⠼ Installing deps... ⠴ Installing deps... [4/4] Building fresh packages... +Done in 1.42s. + [?12l[?25h ✔ Done + ✔ Renderer dependencies installed +[2026-07-07 14:49:34] [OK] Renderer dependencies installed + +  Step 4/8 — Update & Build Nitro-V3  + +Saved working directory and index state WIP on main: 8be4f0a Merge pull request #278 from duckietm/Dev +Your branch is up to date with 'origin/main'. +Updating 8be4f0a..dfb5366 +Fast-forward + .github/workflows/ci.yml | 30 + + public/configuration/UITexts_en.json5.example | 73 + + public/configuration/UITexts_it.json5.example | 73 + + src/api/utils/localizeWithFallback.ts | 10 +- + src/api/wired/WiredActionLayoutCode.ts | 26 + + src/api/wired/WiredConditionLayoutCode.ts | 5 + + src/api/wired/WiredTriggerLayoutCode.ts | 5 + + .../images/chest/icon_chest_capacity_exceeds.png | Bin 0 -> 1750 bytes + src/assets/images/chest/icon_chest_donation.png | Bin 0 -> 1750 bytes + src/assets/images/chest/icon_chest_empty.png | Bin 0 -> 1470 bytes + src/assets/images/chest/icon_chest_full.png | Bin 0 -> 1750 bytes + src/assets/images/chest/icon_chest_withdraw.png | Bin 0 -> 1750 bytes + .../chest/light_coins_chest_balance_high.png | Bin 0 -> 36521 bytes + .../images/chest/light_coins_chest_balance_low.png | Bin 0 -> 36747 bytes + .../chest/light_coins_chest_balance_medium.png | Bin 0 -> 36775 bytes + .../chest/light_coins_chest_balance_zero.png | Bin 0 -> 37057 bytes + .../images/chest/variant_furni_chest_empty.png | Bin 0 -> 11226 bytes + src/assets/images/chest/wired_chests_bell_icon.png | Bin 0 -> 257 bytes + src/assets/images/chest/wired_chests_gear_icon.png | Bin 0 -> 214 bytes + src/components/MainView.tsx | 2 + + .../views/admin/CatalogAdminOfferEditView.tsx | 28 +- + .../views/admin/CatalogAdminPageEditView.tsx | 41 +- + src/components/discord/DiscordSettingsView.tsx | 196 +++ + .../friends/views/friends-bar/FriendsBarView.tsx | 4 +- + .../mod-tools/views/chatlog/ChatlogView.tsx | 70 +- + .../views/tickets/ModToolsMyIssuesTabView.tsx | 92 +- + .../views/tickets/ModToolsOpenIssuesTabView.tsx | 78 +- + .../views/tickets/ModToolsPickedIssuesTabView.tsx | 72 +- + .../views/user/ModToolsUserRoomVisitsView.tsx | 74 +- + src/components/navigator/NavigatorView.tsx | 2 + + .../navigator/views/NavigatorDoorStateView.tsx | 2 +- + .../navigator/views/NavigatorRoomInfoView.tsx | 6 +- + .../navigator/views/NavigatorRoomLinkView.tsx | 10 +- + .../search/NavigatorSearchResultItemInfoView.tsx | 2 + + .../views/search/NavigatorSearchResultItemView.tsx | 2 + + src/components/purse/PurseView.tsx | 26 +- + src/components/room/widgets/RoomKeybindView.tsx | 54 + + src/components/room/widgets/RoomWidgetsView.tsx | 4 + + .../room/widgets/furniture/ChestButton.tsx | 41 + + .../room/widgets/furniture/FurniChestGridItem.tsx | 65 + + .../room/widgets/furniture/FurniChestSearchBar.tsx | 39 + + .../widgets/furniture/FurnitureAreaHideView.tsx | 5 +- + .../room/widgets/furniture/FurnitureChestView.tsx | 815 ++++++++++ + .../widgets/furniture/FurnitureCraftingView.tsx | 6 +- + .../furniture/FurnitureExternalImageView.tsx | 7 +- + .../widgets/furniture/FurnitureFriendFurniView.tsx | 16 +- + .../FurnitureMysteryTrophyOpenDialogView.tsx | 8 +- + .../widgets/furniture/FurnitureWidgetsView.tsx | 4 + + .../room/widgets/furniture/chestFurniGrouping.ts | 59 + + .../FurniturePlaylistEditorWidgetView.tsx | 6 +- + .../widgets/pet-package/PetPackageWidgetView.tsx | 8 +- + .../RoomFilterWordsWidgetView.tsx | 8 +- + .../views/RoomPromoteEditWidgetView.tsx | 4 +- + .../wired/views/ChestFurniIconPreview.tsx | 50 + + .../wired/views/WiredComparisonOperator.tsx | 64 + + .../wired/views/WiredFurniSelectorView.tsx | 13 +- + src/components/wired/views/WiredHandItemField.tsx | 16 +- + .../views/actions/WiredActionAdjustClockView.tsx | 6 +- + .../views/actions/WiredActionBotDanceView.tsx | 58 + + .../actions/WiredActionBotGiveHandItemView.tsx | 9 +- + .../actions/WiredActionBotTalkToAvatarView.tsx | 2 +- + .../wired/views/actions/WiredActionBotTalkView.tsx | 2 +- + .../actions/WiredActionCancelTransactionView.tsx | 16 + + .../wired/views/actions/WiredActionFreezeView.tsx | 4 +- + .../WiredActionGiveCurrencyFromChestView.tsx | 77 + + .../actions/WiredActionGiveFurniFromChestView.tsx | 77 + + .../actions/WiredActionGiveOrTakeFurniView.tsx | 78 + + .../actions/WiredActionGivePointsTypeView.tsx | 63 + + .../views/actions/WiredActionGiveRewardView.tsx | 2 +- + .../WiredActionGiveScoreToPredefinedTeamView.tsx | 6 +- + .../views/actions/WiredActionGiveScoreView.tsx | 6 +- + .../views/actions/WiredActionGiveVariableView.tsx | 4 +- + .../actions/WiredActionInitTransactionView.tsx | 20 + + .../wired/views/actions/WiredActionLayoutView.tsx | 78 + + .../actions/WiredActionMoveAndRotateFurniView.tsx | 8 +- + .../actions/WiredActionMoveFurniAsGroupView.tsx | 67 + + .../views/actions/WiredActionMoveFurniToView.tsx | 4 +- + .../views/actions/WiredActionMuteUserView.tsx | 2 +- + .../views/actions/WiredActionPlaceFurniView.tsx | 116 ++ + .../views/actions/WiredActionPlayYoutubeView.tsx | 56 + + .../views/actions/WiredActionQuickBopperView.tsx | 51 + + .../views/actions/WiredActionRemoveFurniView.tsx | 69 + + .../actions/WiredActionRemoveVariableView.tsx | 4 +- + .../views/actions/WiredActionSendSignalView.tsx | 4 +- + .../actions/WiredActionSetRollerSpeedView.tsx | 39 + + .../views/actions/WiredActionSetRoomAdView.tsx | 65 + + .../actions/WiredActionToggleFurniStateView.tsx | 4 +- + .../WiredConditionActorIsWearingBadgeView.tsx | 4 +- + .../WiredConditionActorIsWearingEffectView.tsx | 4 +- + .../WiredConditionChestHasItemTypeView.tsx | 65 + + .../conditions/WiredConditionChestHasItemsView.tsx | 50 + + .../conditions/WiredConditionHasAltitudeView.tsx | 2 +- + .../conditions/WiredConditionHasVariableView.tsx | 4 +- + .../views/conditions/WiredConditionLayoutView.tsx | 15 + + .../conditions/WiredConditionMatchDateView.tsx | 14 +- + .../WiredConditionNoBattleBanzaiView.tsx | 22 + + .../WiredConditionTimeElapsedLessView.tsx | 4 +- + .../WiredConditionTimeElapsedMoreView.tsx | 4 +- + ...WiredConditionTriggerFurniAdjacentStateView.tsx | 37 + + .../WiredConditionUserCountInRoomView.tsx | 2 +- + .../WiredConditionUserOnFurniWithStateView.tsx | 85 ++ + .../WiredConditionUserPerformsActionView.tsx | 4 +- + .../WiredConditionVariableValueMatchView.tsx | 8 +- + .../wired/views/extras/WiredChestCurrencyView.tsx | 60 + + .../wired/views/extras/WiredChestFurniView.tsx | 47 + + .../views/extras/WiredContractPaymentView.tsx | 41 + + .../wired/views/extras/WiredContractRewardView.tsx | 41 + + .../wired/views/extras/WiredContractTermRow.tsx | 80 + + .../wired/views/extras/WiredContractTradeView.tsx | 65 + + .../wired/views/extras/WiredCustomContractView.tsx | 58 + + .../views/extras/WiredExtraAnimationTimeView.tsx | 4 +- + .../extras/WiredExtraFilterByVariableView.tsx | 8 +- + .../views/extras/WiredExtraFilterFurniView.tsx | 4 +- + .../views/extras/WiredExtraFilterUserView.tsx | 4 +- + .../views/extras/WiredExtraFurniVariableView.tsx | 4 +- + .../views/extras/WiredExtraMovementCurveView.tsx | 55 + + .../wired/views/extras/WiredExtraOrEvalView.tsx | 2 +- + .../views/extras/WiredExtraQuestChainView.tsx | 40 + + .../wired/views/extras/WiredExtraQuestView.tsx | 39 + + .../extras/WiredExtraTextOutputFurniNameView.tsx | 6 +- + .../extras/WiredExtraTextOutputVariableView.tsx | 4 +- + .../views/extras/WiredExtraTimeUtilitiesView.tsx | 55 + + .../extras/WiredExtraVariableLevelUpSystemView.tsx | 22 +- + .../wired/views/extras/contractTermWire.ts | 110 ++ + .../selectors/WiredSelectorFurniAltitudeView.tsx | 4 +- + .../views/selectors/WiredSelectorRemoteView.tsx | 52 + + .../WiredSelectorScanChestFurniByType.tsx | 52 + + .../selectors/WiredSelectorUsersByActionView.tsx | 4 +- + .../selectors/WiredSelectorWithVariableView.tsx | 4 +- + .../WiredTriggerAvatarWalksOffFurniView.tsx | 3 +- + .../triggers/WiredTriggerAvatarWalksOnFurni.tsx | 3 +- + .../triggers/WiredTriggerBotReachedStuffView.tsx | 3 +- + .../views/triggers/WiredTriggerClickFurniView.tsx | 3 + + .../views/triggers/WiredTriggerClickTileView.tsx | 3 +- + .../views/triggers/WiredTriggerDiceRolledView.tsx | 49 + + .../views/triggers/WiredTriggerExecuteOnceView.tsx | 11 +- + .../WiredTriggerExecutePeriodicallyShortView.tsx | 4 +- + .../WiredTriggerExecutePeriodicallyView.tsx | 6 +- + .../views/triggers/WiredTriggerLayoutView.tsx | 15 + + .../triggers/WiredTriggerPressKeybindView.tsx | 60 + + .../triggers/WiredTriggerReceiveSignalView.tsx | 4 +- + .../triggers/WiredTriggerScoreAchievedView.tsx | 4 +- + .../WiredTriggerTransactionCompleteView.tsx | 9 + + .../triggers/WiredTriggerTransactionFailView.tsx | 9 + + .../triggers/WiredTriggerUserGetsHandItemView.tsx | 49 + + .../WiredTriggerUserPerformsActionView.tsx | 4 +- + .../triggers/WiredTriggerVariableChangedView.tsx | 2 +- + src/css/WiredView.css | 19 + + src/css/friends/FriendsView.css | 39 +- + src/css/index.css | 1560 ++++++++++++++++++++ + src/css/purse/PurseView.css | 4 +- + src/css/room/InfoStand.css | 18 +- + src/css/room/NavigatorRoomSettings.css | 26 +- + src/css/widgets/FurnitureWidgets.css | 140 +- + src/hooks/discord/useDiscordSettings.ts | 53 + + src/hooks/index.ts | 1 + + src/hooks/navigator/useNavigatorSearch.ts | 14 + + src/hooks/navigator/useNavigatorStore.ts | 16 + + .../furniture/useFurnitureFriendFurniWidget.ts | 27 +- + tsconfig.json | 3 + + 160 files changed, 6151 insertions(+), 417 deletions(-) + create mode 100644 src/assets/images/chest/icon_chest_capacity_exceeds.png + create mode 100644 src/assets/images/chest/icon_chest_donation.png + create mode 100644 src/assets/images/chest/icon_chest_empty.png + create mode 100644 src/assets/images/chest/icon_chest_full.png + create mode 100644 src/assets/images/chest/icon_chest_withdraw.png + create mode 100644 src/assets/images/chest/light_coins_chest_balance_high.png + create mode 100644 src/assets/images/chest/light_coins_chest_balance_low.png + create mode 100644 src/assets/images/chest/light_coins_chest_balance_medium.png + create mode 100644 src/assets/images/chest/light_coins_chest_balance_zero.png + create mode 100644 src/assets/images/chest/variant_furni_chest_empty.png + create mode 100644 src/assets/images/chest/wired_chests_bell_icon.png + create mode 100644 src/assets/images/chest/wired_chests_gear_icon.png + create mode 100644 src/components/discord/DiscordSettingsView.tsx + create mode 100644 src/components/room/widgets/RoomKeybindView.tsx + create mode 100644 src/components/room/widgets/furniture/ChestButton.tsx + create mode 100644 src/components/room/widgets/furniture/FurniChestGridItem.tsx + create mode 100644 src/components/room/widgets/furniture/FurniChestSearchBar.tsx + create mode 100644 src/components/room/widgets/furniture/FurnitureChestView.tsx + create mode 100644 src/components/room/widgets/furniture/chestFurniGrouping.ts + create mode 100644 src/components/wired/views/ChestFurniIconPreview.tsx + create mode 100644 src/components/wired/views/WiredComparisonOperator.tsx + create mode 100644 src/components/wired/views/actions/WiredActionBotDanceView.tsx + create mode 100644 src/components/wired/views/actions/WiredActionCancelTransactionView.tsx + create mode 100644 src/components/wired/views/actions/WiredActionGiveCurrencyFromChestView.tsx + create mode 100644 src/components/wired/views/actions/WiredActionGiveFurniFromChestView.tsx + create mode 100644 src/components/wired/views/actions/WiredActionGiveOrTakeFurniView.tsx + create mode 100644 src/components/wired/views/actions/WiredActionGivePointsTypeView.tsx + create mode 100644 src/components/wired/views/actions/WiredActionInitTransactionView.tsx + create mode 100644 src/components/wired/views/actions/WiredActionMoveFurniAsGroupView.tsx + create mode 100644 src/components/wired/views/actions/WiredActionPlaceFurniView.tsx + create mode 100644 src/components/wired/views/actions/WiredActionPlayYoutubeView.tsx + create mode 100644 src/components/wired/views/actions/WiredActionQuickBopperView.tsx + create mode 100644 src/components/wired/views/actions/WiredActionRemoveFurniView.tsx + create mode 100644 src/components/wired/views/actions/WiredActionSetRollerSpeedView.tsx + create mode 100644 src/components/wired/views/actions/WiredActionSetRoomAdView.tsx + create mode 100644 src/components/wired/views/conditions/WiredConditionChestHasItemTypeView.tsx + create mode 100644 src/components/wired/views/conditions/WiredConditionChestHasItemsView.tsx + create mode 100644 src/components/wired/views/conditions/WiredConditionNoBattleBanzaiView.tsx + create mode 100644 src/components/wired/views/conditions/WiredConditionTriggerFurniAdjacentStateView.tsx + create mode 100644 src/components/wired/views/conditions/WiredConditionUserOnFurniWithStateView.tsx + create mode 100644 src/components/wired/views/extras/WiredChestCurrencyView.tsx + create mode 100644 src/components/wired/views/extras/WiredChestFurniView.tsx + create mode 100644 src/components/wired/views/extras/WiredContractPaymentView.tsx + create mode 100644 src/components/wired/views/extras/WiredContractRewardView.tsx + create mode 100644 src/components/wired/views/extras/WiredContractTermRow.tsx + create mode 100644 src/components/wired/views/extras/WiredContractTradeView.tsx + create mode 100644 src/components/wired/views/extras/WiredCustomContractView.tsx + create mode 100644 src/components/wired/views/extras/WiredExtraMovementCurveView.tsx + create mode 100644 src/components/wired/views/extras/WiredExtraQuestChainView.tsx + create mode 100644 src/components/wired/views/extras/WiredExtraQuestView.tsx + create mode 100644 src/components/wired/views/extras/WiredExtraTimeUtilitiesView.tsx + create mode 100644 src/components/wired/views/extras/contractTermWire.ts + create mode 100644 src/components/wired/views/selectors/WiredSelectorRemoteView.tsx + create mode 100644 src/components/wired/views/selectors/WiredSelectorScanChestFurniByType.tsx + create mode 100644 src/components/wired/views/triggers/WiredTriggerDiceRolledView.tsx + create mode 100644 src/components/wired/views/triggers/WiredTriggerPressKeybindView.tsx + create mode 100644 src/components/wired/views/triggers/WiredTriggerTransactionCompleteView.tsx + create mode 100644 src/components/wired/views/triggers/WiredTriggerTransactionFailView.tsx + create mode 100644 src/components/wired/views/triggers/WiredTriggerUserGetsHandItemView.tsx + create mode 100644 src/hooks/discord/useDiscordSettings.ts +[?25l ⠋ Installing deps... ⠙ Installing deps... yarn install v1.22.22 +[1/4] Resolving packages... + ⠹ Installing deps... [2/4] Fetching packages... + ⠸ Installing deps... ⠼ Installing deps... ⠴ Installing deps... ⠦ Installing deps... [3/4] Linking dependencies... +warning " > @emoji-mart/react@1.1.1" has incorrect peer dependency "react@^16.8 || ^17 || ^18". +warning "react-player > dash-video-element > dashjs > @svta/cml-cmcd@2.3.2" has unmet peer dependency "@svta/cml-structured-field-values@1.1.3". +warning "react-player > dash-video-element > dashjs > @svta/cml-cmcd@2.3.2" has unmet peer dependency "@svta/cml-utils@1.5.0". +warning "react-player > dash-video-element > dashjs > @svta/cml-cmsd@1.0.6" has unmet peer dependency "@svta/cml-cta@1.0.6". +warning "react-player > dash-video-element > dashjs > @svta/cml-cmsd@1.0.6" has unmet peer dependency "@svta/cml-structured-field-values@1.1.3". +warning "react-player > dash-video-element > dashjs > @svta/cml-cmsd@1.0.6" has unmet peer dependency "@svta/cml-utils@1.5.0". +warning "react-player > dash-video-element > dashjs > @svta/cml-dash@1.0.6" has unmet peer dependency "@svta/cml-utils@1.5.0". +warning "react-player > dash-video-element > dashjs > @svta/cml-id3@1.0.6" has unmet peer dependency "@svta/cml-utils@1.5.0". +warning "react-player > dash-video-element > dashjs > @svta/cml-request@1.0.12" has unmet peer dependency "@svta/cml-utils@1.5.0". +warning "react-player > dash-video-element > dashjs > @svta/cml-xml@1.1.4" has unmet peer dependency "@svta/cml-utils@1.5.0". +warning " > eslint-plugin-react@7.37.5" has incorrect peer dependency "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7". +warning Workspaces can only be enabled in private projects. + ⠧ Installing deps... ⠇ Installing deps... ⠏ Installing deps... ⠋ Installing deps... ⠙ Installing deps... ⠹ Installing deps... ⠸ Installing deps... ⠼ Installing deps... ⠴ Installing deps... ⠦ Installing deps... ⠧ Installing deps... ⠇ Installing deps... [4/4] Building fresh packages... + ⠏ Installing deps... Done in 1.90s. + [?12l[?25h ✔ Done +[?25l ⠋ Building frontend... ⠙ Building frontend... ⠹ Building frontend... ⠸ Building frontend... ⠼ Building frontend... ⠴ Building frontend... ⠦ Building frontend... ⠧ Building frontend... ⠇ Building frontend... ⠏ Building frontend... ⠋ Building frontend... ⠙ Building frontend... ⠹ Building frontend... ⠸ Building frontend... ⠼ Building frontend... ⠴ Building frontend... ⠦ Building frontend... ⠧ Building frontend... ⠇ Building frontend... ⠏ Building frontend... ⠋ Building frontend... ⠙ Building frontend... ⠹ Building frontend... ⠸ Building frontend... ⠼ Building frontend... ⠴ Building frontend... ⠦ Building frontend... ⠧ Building frontend... ⠇ Building frontend... ⠏ Building frontend... ⠋ Building frontend... ⠙ Building frontend... ⠹ Building frontend... ⠸ Building frontend... ⠼ Building frontend... ⠴ Building frontend... ⠦ Building frontend... ⠧ Building frontend... ⠇ Building frontend... +✓ built in 3.10s +Done in 3.99s. + [?12l[?25h ✔ Done + +  Step 5/8 — Sync Configurations  + + ✔ 18 config file(s) synced +[2026-07-07 14:50:16] [OK] 18 config file(s) synced + ➜ Applying critical config URLs... +[2026-07-07 14:50:16] [INFO] Applying critical config URLs... + [OK] Fixed: renderer-config.json + [OK] Fixed: renderer-config.json + [OK] Fixed: ui-config.json + [OK] Fixed: ui-config.json + ✔ All config URLs synced +[2026-07-07 14:50:16] [OK] All config URLs synced + +  Step 6/8 — Cleanup  + +yarn cache v1.22.22 +success Cleared cache. +Done in 1.16s. + ✔ Cleanup done (0 logs removed) +[2026-07-07 14:50:18] [OK] Cleanup done (0 logs removed) + +  Step 7/8 — Set Permissions  + + ✔ Permissions set +[2026-07-07 14:50:18] [OK] Permissions set + +  Step 8/8 — Restart Services  + + ✔ emulator restarted +[2026-07-07 14:50:18] [OK] emulator restarted + ✔ Nginx reloaded +[2026-07-07 14:50:18] [OK] Nginx reloaded +OK + ✔ Redis flushed +[2026-07-07 14:50:18] [OK] Redis flushed + + ╔══════════════════════════════════════════════════════════════════╗ + ║ ✔ UPDATE COMPLETED SUCCESSFULLY ║ + ╠══════════════════════════════════════════════════════════════════╣ + ║ Duration: 2m 33s ║ + ║ Updates: Yes ║ + ║ Nitro build: Yes ║ + ║ Warnings: 0 ║ + ║ Repos: Emulator Nitro_Render_V3 Nitro-V3 ║ + ╚══════════════════════════════════════════════════════════════════╝ + + + Press Enter to continue... + + ╔═══════════════════════════════════════════════════════════════════════════╗ + ║ ║ + ║ ███████╗███╗ ███╗ █████╗ ██████╗ ████████╗ ║ + ║ ██╔════╝████╗ ████║██╔══██╗██╔══██╗╚══██╔══╝ ║ + ║ █████╗ ██╔████╔██║███████║██████╔╝ ██║ ║ + ║ ██╔══╝ ██║╚██╔╝██║██╔══██║██╔══██╗ ██║ ║ + ║ ███████╗██║ ╚═╝ ██║██║ ██║██║ ██║ ██║ ║ + ║ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ║ + ║ ║ + ╠═══════════════════════════════════════════════════════════════════════════╣ + ║  Emulator / Nitro-V3 / Nitro-V3-Render ║ + ║  Updater by Remco — epicnabbo.nl ║ + ╠═══════════════════════════════════════════════════════════════════════════╣ + ║ Branch: main (2 detected) │ 14:50 ║ + ╚═══════════════════════════════════════════════════════════════════════════╝ + +  UPDATE  + 1) 🚀 Quick Update — branch: main + 2) ⚡ Full Update (choose branch) + 3) ⚙ Emulator Only + 4) ⚙ Nitro-V3 Client Only + 5) ⚙ Renderer Only + 6) ⚙ Configs Only + +  TOOLS  + 7) 🔀 Switch Branch + 8) 🗄 Database + 9) 🛡 Backup / Restore + 10) 🔧 Services + 11) 📊 Status + 12) ♥ Health Check + 13) 🧹 Clean + 14) 👁 Logs + 15) ⚙ Config + +  ADVANCED  + 16) 🖥 Git Log + 17) 🌐 Compare Branches + 18) ⏱ Cron Scheduler + + 0) Exit + + Select [0-18]: [?12l[?25h[?12l[?25h \ No newline at end of file diff --git a/update-Nitrov3.sh b/update-Nitrov3.sh index 38166305..fd9097ca 100755 --- a/update-Nitrov3.sh +++ b/update-Nitrov3.sh @@ -74,6 +74,21 @@ NOTIFY_FAILED=false # ============================================================================= if [ -f "$SCRIPT_DIR/.env" ]; then set -a; . "$SCRIPT_DIR/.env"; set +a; fi +# Parse DATABASE_URL as fallback for DB credentials (Next.js / Prisma style) +if [ -z "${NITRO_DB_NAME:-}" ] && [ -n "${DATABASE_URL:-}" ]; then + du="${DATABASE_URL#mysql://}" + cred="${du%%@*}" + hostpart="${du#*@}" + DB_USER="${cred%%:*}" + DB_PASS="${cred#*:}" + DB_HOST="${hostpart%%:*}" + portdb="${hostpart#*:}" + DB_PORT="${portdb%%/*}" + DB_NAME="${portdb#*/}" + DB_NAME="${DB_NAME%%\?*}" + DB_PASS=$(printf '%b' "${DB_PASS//%/\\x}" 2>/dev/null || echo "$DB_PASS") +fi + # ============================================================================= # CONFIG # ============================================================================= @@ -81,11 +96,11 @@ LOG_DIR="${NITRO_LOG_DIR:-$SCRIPT_DIR/storage/logs}" mkdir -p "$LOG_DIR" 2>/dev/null || true LOG_FILE="$LOG_DIR/update-$(date +%Y%m%d-%H%M%S).log" NOTIFY_URL="${NITRO_NOTIFY_URL:-}" -DB_NAME="${NITRO_DB_NAME:-habbo}" -DB_HOST="${NITRO_DB_HOST:-127.0.0.1}" -DB_PORT="${NITRO_DB_PORT:-3306}" -DB_USER="${NITRO_DB_USER:-root}" -DB_PASS="${NITRO_DB_PASS:-}" +DB_NAME="${NITRO_DB_NAME:-${DB_NAME:-habbo}}" +DB_HOST="${NITRO_DB_HOST:-${DB_HOST:-127.0.0.1}}" +DB_PORT="${NITRO_DB_PORT:-${DB_PORT:-3306}}" +DB_USER="${NITRO_DB_USER:-${DB_USER:-root}}" +DB_PASS="${NITRO_DB_PASS:-${DB_PASS:-}}" EMULATOR_SERVICE="${NITRO_EMULATOR_SERVICE:-emulator}" EMULATOR_DIR="${NITRO_EMULATOR_PATH:-/var/www/emulator}" SQL_DIR="${NITRO_SQL_DIR:-$EMULATOR_DIR/Database Updates}" @@ -586,7 +601,7 @@ cmd_health() { echo -e "\n ${C_BOLD}Services:${C_RESET}" checkw "MariaDB" systemctl is-active mariadb; checkw "Nginx" systemctl is-active nginx; checkw "Redis" systemctl is-active redis-server echo -e "\n ${C_BOLD}Application:${C_RESET}" - checkw "artisan" test -f "$SCRIPT_DIR/artisan"; checkw ".env" test -f "$SCRIPT_DIR/.env" + checkw "Next.js" test -f "$SCRIPT_DIR/next.config.js" -o -f "$SCRIPT_DIR/next.config.mjs" -o -f "$SCRIPT_DIR/next.config.ts"; checkw ".env" test -f "$SCRIPT_DIR/.env" checkw "Site" timeout 5 curl -sf "${NITRO_SITE_URL:-}" 2>/dev/null echo -e "\n ${C_BOLD}Resources:${C_RESET}" local ak=$(df --output=avail "$EMULATOR_DIR" 2>/dev/null | tail -1); local ag=$((ak/1024/1024)) @@ -707,7 +722,7 @@ cmd_clean() { echo -en "\n Select: "; local c; read -r c case "$c" in 1) yarn cache clean 2>/dev/null && ok "Yarn cleaned" ;; - 2) cd "$SCRIPT_DIR" && php artisan cache:clear 2>/dev/null && php artisan config:clear 2>/dev/null && php artisan view:clear 2>/dev/null && ok "Laravel cleaned" ;; + 2) cd "$SCRIPT_DIR" && rm -rf .next 2>/dev/null && ok "Next.js cache cleared" ;; 3) redis-cli FLUSHALL 2>/dev/null && ok "Redis flushed" || warn "Redis N/A" ;; 4) find "$EMULATOR_DIR" -name "*.log" -mtime +14 -exec rm -f {} \; 2>/dev/null; ok "Logs cleaned" ;; 5) yarn cache clean 2>/dev/null; find "$EMULATOR_DIR" -name "*.log" -mtime +14 -exec rm -f {} \; 2>/dev/null; rm -rf /tmp/nitro-* 2>/dev/null; ok "Full cleanup" ;;