Commit Graph

165 Commits

Author SHA1 Message Date
duckietm d4c0ddf09c 🆙 Bump to Version 4.1.0 2026-03-25 12:46:07 +01:00
DuckieTM f57eefed0f Merge pull request #44 from simoleo89/dev
Fix CatalogPagesListComposer parsing error in Nitro client
2026-03-25 07:49:45 +01:00
Lorenzune e5fbf6f8f4 Refine wired movement, extras, and source handling 2026-03-25 03:26:27 +01:00
Life 0a56f46d28 Fix CatalogPagesListComposer parsing error in Nitro client
The Nitro client's NodeData parser enforces safety limits (max 1000 offers,
500 children, 20 depth) using Math.min() on the count but the server was
sending all data beyond those limits. The unread bytes left in the buffer
corrupted parsing of subsequent nodes, causing RangeError.

Cap server-side output to match client limits and snapshot offerIds array
to prevent potential race conditions between size() and iteration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:52:55 +01:00
DuckieTM 0dc0c45096 Merge pull request #42 from Lorenzune/feature/wired-followups-20260324
Refine wired movement and extra behavior
2026-03-24 07:15:13 +01:00
Lorenzune 3a8c9985fb Refine wired movement and extra behavior 2026-03-24 02:11:54 +01:00
DuckieTM 64283d9242 ㊙️ Security update
- SQL injection fix: Replaced string concatenation of minPrice/maxPrice with proper parameterized ? placeholders using a paramIndex counter

- IDOR fix: Added user_id ownership check in MarketPlace.takeBackItem() — now verifies the DB user_id matches the requesting player before allowing item retrieval, with warning log on mismatch
2026-03-23 21:50:08 +01:00
duckietm f6588c378a 🆙 Added the latest Compiled version and cleanup 2026-03-23 16:25:22 +01:00
DuckieTM e08387e5c8 Merge pull request #34 from simoleo89/catalog-redesign
feat: CatalogAdmin server handlers (10050-10059)
2026-03-23 15:22:38 +01:00
Lorenzune 0b12c7d856 feat: improve wired movement and selector behavior 2026-03-22 16:48:51 +01:00
Life 4a20f26685 feat: CatalogAdmin server handlers (10050-10059) with acc_catalogfurni
Add 9 incoming packet handlers + 1 outgoing composer for catalog
admin management via websocket. All operations require acc_catalogfurni
permission.

Handlers:
- CatalogAdminSavePageEvent (10050) - UPDATE catalog_pages
- CatalogAdminCreatePageEvent (10051) - INSERT catalog_pages
- CatalogAdminDeletePageEvent (10052) - DELETE catalog_pages
- CatalogAdminSaveOfferEvent (10053) - UPDATE catalog_items
- CatalogAdminCreateOfferEvent (10054) - INSERT catalog_items
- CatalogAdminDeleteOfferEvent (10055) - DELETE catalog_items
- CatalogAdminMoveOfferEvent (10056) - reorder offers
- CatalogAdminMovePageEvent (10057) - move/toggle enabled/visible
- CatalogAdminPublishEvent (10058) - reload catalog + broadcast
- CatalogAdminResultComposer (10059) - response (success + message)

Includes:
- New permission constant ACC_CATALOGFURNI in Permission.java
- SQL migration to add acc_catalogfurni column to permissions table
- Enabled by default for Administrator rank (id=7)
2026-03-22 16:47:31 +01:00
DuckieTM dc930c086e 🆙 Small fix 2026-03-21 15:28:03 +01:00
Lorenzune b82820c67b Merge remote-tracking branch 'upstream/main'
# Conflicts:
#	Emulator/src/main/java/com/eu/habbo/habbohotel/commands/CommandHandler.java
#	Emulator/src/main/java/com/eu/habbo/habbohotel/items/ItemManager.java
#	Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/conditions/WiredConditionNotHabboHasHandItem.java
#	Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectFurniToFurni.java
#	Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectFurniToUser.java
#	Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectUserToFurni.java
#	Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerFurniStateToggled.java
#	Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboClicksFurni.java
#	Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboClicksTile.java
#	Emulator/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/triggers/WiredTriggerHabboClicksUser.java
#	Emulator/src/main/java/com/eu/habbo/habbohotel/rooms/RoomUnitManager.java
#	Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredConditionType.java
#	Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredEffectType.java
#	Emulator/src/main/java/com/eu/habbo/habbohotel/wired/WiredTriggerType.java
#	Emulator/src/main/java/com/eu/habbo/habbohotel/wired/core/WiredManager.java
#	Emulator/src/main/java/com/eu/habbo/habbohotel/wired/migrate/WiredEvents.java
#	Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/items/ClickFurniEvent.java
#	Emulator/src/main/java/com/eu/habbo/messages/incoming/rooms/users/ClickUserEvent.java
2026-03-21 14:46:11 +01:00
Lorenzune 3a5d1e21e3 feat(wired): expand advanced wired gameplay tools 2026-03-21 14:27:57 +01:00
DuckieTM d184808218 🆙 Added AvailableCommands 2026-03-21 12:27:43 +01:00
DuckieTM ca25740cdb Merge branch 'main' into dev 2026-03-21 09:06:27 +01:00
simoleo89 6b4e6a8759 feat: custom prefix system with effects and admin commands
Backend implementation:
- UserPrefix model with effect field, DB CRUD operations
- PrefixesComponent inventory management
- PurchasePrefixEvent with settings, blacklist and currency validation
- Composers: UserPrefixes, PrefixReceived, ActivePrefixUpdated
- RoomChatMessage serializes active prefix (text, color, icon, effect)
- Admin commands: giveprefix, listprefixes, removeprefix, prefixblacklist
- CustomPrefixLayout catalog page
- SQL setup: user_prefixes, custom_prefix_settings, custom_prefix_blacklist tables
2026-03-20 17:14:15 +01:00
duckietm aefc1e787b 🆙 Stage 2 reconnect 2026-03-20 17:11:09 +01:00
duckietm 5807303807 🆙 Stage 1 reconnect 2026-03-20 16:08:51 +01:00
DuckieTM 349b2c4dcd Merge pull request #26 from Lorenzune/pr/wired-tools-command-20260319
feat(commands): add wired tools launcher
2026-03-19 21:05:50 +01:00
duckietm c2f3311344 🆙 Duplicate packet fix 2026-03-19 16:17:47 +01:00
duckietm 85ade76142 🆙 Latest comopiled version 2026-03-19 15:48:02 +01:00
Lorenzune 2a9f1c1c32 feat(commands): add wired tools launcher 2026-03-19 15:24:17 +01:00
Lorenzune 12079a43f8 feat(commands): add wired tools launcher 2026-03-19 15:22:49 +01:00
Lorenzune 00782cbde9 feat(wired): add advanced match conditions and hotel timezone 2026-03-19 14:30:32 +01:00
Lorenzune e234debfbd feat(wired): add advanced match conditions and hotel timezone 2026-03-19 14:27:26 +01:00
duckietm 5743341220 🆙 Fix conflict import 2026-03-19 10:20:35 +01:00
DuckieTM 727f0a9242 Merge pull request #23 from Lorenzune/pr/wired-altitude-relative-move-clean-20260318
feat(wired): add altitude and relative move effects
2026-03-19 10:05:39 +01:00
DuckieTM db5f09f81a Merge branch 'main' into pr/wired-triggers-clean-20260318 2026-03-19 10:05:04 +01:00
DuckieTM 67d0639bee Merge branch 'main' into pr/wired-altitude-relative-move-clean-20260318 2026-03-19 10:04:39 +01:00
DuckieTM 5a8c17b97e Merge pull request #22 from Lorenzune/pr/wired-freeze-furni-movement-clean-20260318
feat(wired): add freeze and furni movement effects
2026-03-19 09:55:14 +01:00
duckietm 77fea6b9fd 🆙 Added more rate limiting to the emu 2026-03-19 08:12:05 +01:00
Lorenzune 75151accb5 feat(wired): add upcounter clock controls and checks 2026-03-19 00:01:59 +01:00
Lorenzune 8a9670759a feat(wired): add altitude and relative move effects 2026-03-18 17:40:43 +01:00
Lorenzune d8a68ad8d3 feat(wired): add freeze and furni movement effects
- register interaction types wf_act_freeze, wf_act_unfreeze, wf_act_furni_to_user, wf_act_user_to_furni and wf_act_furni_to_furni

- add effect types FREEZE, UNFREEZE, FURNI_TO_USER, USER_TO_FURNI and FURNI_TO_FURNI

- add freeze handling with cancel-on-teleport and cleanup on teleport or room leave

- support furni-to-furni secondary target selection and immediate furni position persistence

- prevent frozen users from walking until they are unfrozen or moved out of the frozen state
2026-03-18 17:40:43 +01:00
Lorenzune 13669ba8ce feat(wired): add leave/click/action/short-period triggers
- add wf_trg_leave_room, wf_trg_stuff_state, wf_trg_period_short, wf_trg_click_furni, wf_trg_click_tile, wf_trg_click_user and wf_trg_user_performs_action\n- add interaction type room_invisible_click_tile\n- persist selector-driven MatchFurni and ToggleRandom state changes\n- use configured duration in WiredEffectMuteHabbo
2026-03-18 17:38:42 +01:00
Lorenzune d70841d61e Merge upstream/main into main 2026-03-18 17:32:16 +01:00
Lorenzune fb280c0912 fix(wired): improve rewards and room mute feedback 2026-03-18 17:03:25 +01:00
Lorenzune c9f5c62c7f fix(wired): improve rewards and room mute feedback 2026-03-18 17:01:10 +01:00
Lorenzune ce522eb3b3 feat(wired): add altitude and relative move effects 2026-03-18 14:38:21 +01:00
DuckieTM 0a9a723b77 Merge pull request #14 from duckietm/Dev
Dev
2026-03-18 07:35:22 +01:00
duckietm 2b95f446dd 🆙 Security update Camera
- Add file size limits (2MB photos, 1MB thumbnails) with pre-read rejection
- Add PNG dimension validation via IHDR header before full decode (prevents decompression bombs)
- Double-check decoded dimensions against max 1024x1024 (photos) / 640x640 (thumbnails)
- Increase render cooldown from 5s to 15s
- Add daily render quota (50/day per user) with 24h rolling window
- Fix cooldown message to show remaining seconds correctly
- Add structured logging for all rejected uploads
- Replace e.printStackTrace() with proper SLF4J logging
2026-03-18 07:34:18 +01:00
duckietm a056bc4b79 🆕 Camera Now in the Emu - remove all camera stuff from 2002 😄 2026-03-17 17:03:59 +01:00
DuckieTM c28c94516c Merge pull request #12 from simoleo89/pr/underpass-room-setting
feat(pathfinder): underpass walk-under-furniture with per-room setting
2026-03-17 14:23:22 +01:00
DuckieTM 0a2fb55143 Merge pull request #13 from duckietm/Dev
Dev
2026-03-17 14:21:41 +01:00
duckietm 70cc69b22a 🆙 Small fix for the update tile 2026-03-17 14:08:33 +01:00
simoleo89 b0f3f1488d feat(pathfinder): add per-room underpass setting via room settings UI
Add allow_underpass as a per-room boolean setting that controls whether
avatars can walk under elevated furniture. When disabled (default), the
room behaves normally with blocking items. When enabled, items elevated
above the UNDERPASS_HEIGHT threshold allow walking underneath.

Changes:
- Room: add allowUnderpass field with DB load/save
- RoomTileManager: make all 3 underpass checks conditional on room setting
- RoomItemManager: getWalkableItemAt() falls back when underpass disabled
- RoomSettingsComposer/SaveEvent: send/receive the flag in room settings packet
- SQL migration: add allow_underpass column to rooms table

Co-Authored-By: medievalshell <medievalshell@users.noreply.github.com>
2026-03-17 13:38:43 +01:00
simoleo89 e75fe83c80 feat(pathfinder): add configurable underpass walk-under-furniture support
Allow avatars to walk under furniture items placed at a configurable height threshold (default 1.5). When a blocking item is elevated enough above the walk surface, the tile is treated as walkable.

Changes:
- RoomLayout: add UNDERPASS_HEIGHT static field (default 1.5)
- PluginManager: load pathfinder.underpass.height from emulator config
- RoomTileManager: add getUnderpassWalkHeight() method and underpass checks in tile state calculation, stack height, and canWalkAt()
- RoomItemManager: add getWalkableItemAt() method that returns the correct walkable item considering underpass clearance
- RoomUnit: use getWalkableItemAt() in movement cycle for accurate item resolution when walking under elevated furniture

Co-Authored-By: medievalshell <medievalshell@users.noreply.github.com>
2026-03-17 13:37:30 +01:00
DuckieTM 05d7cd43f9 Merge pull request #11 from duckietm/Dev
Dev
2026-03-17 10:38:11 +01:00
duckietm 48b7839021 🌑 Rebug football now 100% 2026-03-17 10:06:43 +01:00