Commit Graph

298 Commits

Author SHA1 Message Date
DuckieTM 4d69a451d7 Merge pull request #70 from duckietm/dev
🆙 Small update to the script
2026-04-07 10:21:30 +02:00
duckietm 0634c3d600 🆙 Small update to the script 2026-04-07 10:21:15 +02:00
DuckieTM 585e9aa3cf Merge pull request #69 from duckietm/dev
🆙 Fix in habbomanager
2026-04-07 09:22:13 +02:00
duckietm e9efb23518 🆙 Latest Compiled version 2026-04-07 09:21:50 +02:00
duckietm 5e586d1093 🆙 Fix in habbomanager
The getCloneAccounts query had an operator-precedence bug:

WHERE ip_register = ? OR ip_current = ? AND id != ?
-- parsed as:
WHERE ip_register = ? OR (ip_current = ? AND id != ?)

So a user whose ip_register matched themselves would show up in their own clone list. Added parentheses:

WHERE (ip_register = ? OR ip_current = ?) AND id != ?

So please run the 006_HabboManager_fix before you run the update Emulator !
2026-04-07 09:20:15 +02:00
DuckieTM 52712296a8 Merge pull request #68 from duckietm/dev
Dev
2026-04-07 08:46:39 +02:00
duckietm 65c777dbc8 Merge branch 'dev' of https://github.com/duckietm/Arcturus-Morningstar-Extended into dev 2026-04-07 08:45:44 +02:00
duckietm d161d8da82 🆙 Set all wired interaction type's 2026-04-07 08:45:42 +02:00
DuckieTM f42d1442c7 Merge pull request #67 from duckietm/dev
🆙 Update Gifts
2026-04-05 14:53:37 +02:00
DuckieTM 0adb99a962 🆙 Update Gifts 2026-04-05 14:53:10 +02:00
DuckieTM c0e4b4de1d Merge pull request #66 from duckietm/dev
Dev
2026-04-05 09:44:10 +02:00
DuckieTM 773694460f 🆙 Small fix Wired Highscore 2026-04-04 16:26:20 +02:00
DuckieTM e6f824aedd 🆙 Wired Core updates
Thanks to Migueg
2026-04-04 16:19:46 +02:00
DuckieTM 0916ff1e0b 🆙 Redone the userwalk flood detection 2026-04-04 08:49:19 +02:00
DuckieTM 50b8f567bd Merge pull request #65 from duckietm/dev
🆙 Small update to SQL
2026-04-03 19:11:22 +02:00
duckietm c030ea5fc6 🆙 Small update to SQL 2026-04-03 19:10:55 +02:00
DuckieTM 47f6a6c345 Merge pull request #64 from duckietm/dev
🆙 Update Optimize script, if run please run again !
2026-04-03 14:09:45 +02:00
duckietm d52609e78b 🆙 Update Optimize script, if run please run again ! 2026-04-03 14:09:25 +02:00
DuckieTM 05576c8b9c Merge pull request #63 from duckietm/dev
💯 added missing SQL
2026-04-01 11:19:28 +02:00
duckietm 791ddf679e 💯 added missing SQL 2026-04-01 11:19:13 +02:00
DuckieTM 880bdba986 Merge pull request #62 from duckietm/dev
🆙 Latest compiled
2026-04-01 09:08:38 +02:00
duckietm 0235421bec 🆙 Latest compiled 2026-04-01 09:08:19 +02:00
DuckieTM 966c8798f0 Merge pull request #60 from duckietm/dev
Dev
2026-03-31 16:06:25 +02:00
duckietm 8459e1a45e 🆙 Remove SQL for emu settings Youtube Thumbnail 2026-03-31 14:55:59 +02:00
duckietm 2246d82dc7 🆙 Fix Youtube TV's 2026-03-31 11:41:08 +02:00
DuckieTM 3bc82ee147 Merge pull request #59 from Lorenzune/feature/pr-20260327
Extend wired runtime metadata and placeholder support
2026-03-31 09:01:11 +02:00
DuckieTM 7cda41f0bd Merge pull request #58 from duckietm/dev
🆙 Added permissions for Furni Editor
2026-03-30 16:21:39 +02:00
duckietm 62814f2e21 🆙 Added permissions for Furni Editor 2026-03-30 16:21:03 +02:00
DuckieTM e40d9de0c8 Merge pull request #57 from duckietm/dev
👶 Oepsie in SQL
2026-03-30 13:57:56 +02:00
duckietm 544ea8c50f 👶 Oepsie in SQL 2026-03-30 13:56:13 +02:00
DuckieTM 74db5ed3b6 Merge pull request #56 from duckietm/dev
Dev
2026-03-30 13:13:02 +02:00
duckietm 52559dc748 🆙 SQL update file renamed 2026-03-30 13:10:03 +02:00
DuckieTM 88536e4e88 Merge pull request #53 from simoleo89/furnieditor
feat: FurniEditor WebSocket (packets 10040-10045)
2026-03-30 11:12:13 +02:00
DuckieTM b993c471e3 Merge pull request #55 from duckietm/dev
Dev
2026-03-29 16:54:08 +02:00
DuckieTM 570ff24655 🆙 Update latest compiled version "READ the Description!"
We have upgrade our builder with Java JDK 25 !!!
On Linux please run : apt install openjdk-25-jdk
2026-03-29 16:07:44 +02:00
DuckieTM 0ebb303e0c 🆙 Small security fix Forum Groups & better cache
GuildChangeSettingsEvent 2000ms - Write
GuildForumPostThreadEvent 2000ms - Write
ModerateMessage/Thread 2000ms - Write
ThreadUpdate 2000ms -Write
UpdateSettings 2000ms- Write
MarkAsRead 2000ms - Write
Data/List/Threads/Messages - 500ms Read-only
2026-03-29 16:04:52 +02:00
DuckieTM 33a1a511ce Merge pull request #54 from duckietm/main
Sync Main to Dev
2026-03-29 14:48:57 +02:00
DuckieTM c34bf49e64 🆕 Groups Forums
- Please run the 002_forum_groups.sql !
2026-03-29 14:46:53 +02:00
DuckieTM bf0f246b84 🆙 stage 1 2026-03-28 19:35:00 +01:00
Life 7e736900a3 feat: FurniEditor WebSocket handlers (10040-10045) — search, detail, update, delete, interactions 2026-03-27 20:10:03 +01:00
duckietm 9cbfc6c1db 🆙 Fix Groups Forum SQL code 2026-03-27 17:11:21 +01:00
Lorenzune dfd9cd1357 Extend wired runtime metadata and placeholder support
- add wf_xtra_text_output_furni_name and expand text placeholders for furni, users, bots and pets

- include room, entry, teleport and item metadata needed by the new :wired tools flow

- animate furniture position updates through the wired movement path

- fix teleport pair persistence/lookups for items_teleports with explicit column inserts
2026-03-27 09:37:14 +01:00
DuckieTM f22e4c30a8 Merge pull request #52 from duckietm/dev
Dev
2026-03-26 15:22:04 +01:00
DuckieTM f7a75d8614 Merge pull request #51 from Lorenzune/feature/pr-20260326
Add wired evaluation and text placeholder extras
2026-03-26 15:19:59 +01:00
DuckieTM 00893b1436 Merge pull request #50 from duckietm/dev
🆙 Fix rooms loading
2026-03-26 15:19:23 +01:00
duckietm 95aea934bd 🆙 Fix rooms loading
- Layout Cache (eliminates 1 DB query per room load)

Standard room models (model_a, model_b, etc.) are loaded once at startup and cached in memory
RoomLayout gets a new constructor from cached data instead of ResultSet
~99% of rooms use standard models, so this saves a DB round-trip on nearly every room load

- Better Parallel Pipeline (reduced critical path)

Before: layout → [items|rights|wordfilter] → heightmap → [bots|pets|wired]
After:  layout → [items|rights|wordfilter|bots|pets] → [heightmap|wired]

Bots and pets only need layout for positioning, not items - so they now start immediately
Wired only needs items loaded (not heightmap) - so it now runs parallel with heightmap

-  Deferred Promotion Query (faster Room instantiation)

Moved room_promotions DB query from constructor to loadDataInternal() as an async task
Room constructor now only runs bans query (needed for entry check)
Saves ~20ms per Room instantiation for promoted rooms

-  Smart Heightmap (reduced tile iterations by 80-95%)

Instead of updating ALL tiles (1024 for 32x32 room), only updates tiles with items on them
Uses getTilesAt() for correct rotation-aware multi-tile coverage
For a room with 100 items on a 32x32 grid: ~200 tile updates instead of 1024
2026-03-26 12:44:12 +01:00
DuckieTM caf7affe77 Merge pull request #49 from duckietm/dev
Dev
2026-03-26 10:48:02 +01:00
duckietm b755828d85 🆙 Small fix UserCreditsComposer
se this instead of this.client.getHabbo() since giveCredits() is already called on the Habbo instance itself. No need for the round-trip through the client.
2026-03-26 10:43:26 +01:00
duckietm 31ebb96a9c 🆙 Speeds up the badge loading 2026-03-26 10:15:40 +01:00
duckietm f2d8f109ff 🆙 Optimization for the gameserver
- Room Cleanup Optimization (RoomManager.java)

Added roomsByOwner ConcurrentHashMap that tracks which rooms belong to which owner
clearInactiveRooms() now iterates unique owners instead of ALL rooms
Went from O(rooms × clients) to O(unique_owners × clients) every 120s

 - Volatile Fields (Room.java)

Removed volatile from 27 room config fields (score, category, chatMode, allowPets, etc.)
Kept volatile only on 8 fields that genuinely need cross-thread visibility (loaded, preLoaded, needsUpdate, muted, etc.)
Reduces CPU cache line invalidation on every room cycle tick

- Search Cache TTL (SearchUserEvent.java + CleanerThread.java)

SearchUserEvent now has 30-second TTL per entry instead of full wipe every 10s
SearchRoomsEvent already had LRU eviction (max 200) — removed redundant .clear() call
Frequently searched users stay cached, only stale entries get cleaned

- scheduledComposers/scheduledTasks — After reading the code, these are actually already handled correctly: processScheduledTasks() swaps the set with a fresh one before processing, and processScheduledComposers() calls .clear() after sending. No leak risk.
2026-03-26 09:59:02 +01:00