From 5094d6ce4f9dd02b57e4eb0c1a712a0ea1cc1135 Mon Sep 17 00:00:00 2001 From: duckietm Date: Fri, 5 Jun 2026 14:23:05 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=86=99=20Fix=20the=20Admin=20Catalogue=20?= =?UTF-8?q?stuff?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/eu/habbo/messages/PacketManager.java | 2 + .../eu/habbo/messages/incoming/Incoming.java | 2 + .../CatalogAdminLoadOfferEvent.java | 55 +++++++++++++++++++ .../CatalogAdminLoadPageEvent.java | 28 ++++++++++ .../eu/habbo/messages/outgoing/Outgoing.java | 2 + .../CatalogAdminOfferDetailsComposer.java | 29 ++++++++++ .../CatalogAdminPageDetailsComposer.java | 27 +++++++++ 7 files changed, 145 insertions(+) create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/catalog/catalogadmin/CatalogAdminLoadOfferEvent.java create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/incoming/catalog/catalogadmin/CatalogAdminLoadPageEvent.java create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/outgoing/catalog/catalogadmin/CatalogAdminOfferDetailsComposer.java create mode 100644 Emulator/src/main/java/com/eu/habbo/messages/outgoing/catalog/catalogadmin/CatalogAdminPageDetailsComposer.java diff --git a/Emulator/src/main/java/com/eu/habbo/messages/PacketManager.java b/Emulator/src/main/java/com/eu/habbo/messages/PacketManager.java index 1a09d3a5..40ff2aa0 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/PacketManager.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/PacketManager.java @@ -298,6 +298,8 @@ public class PacketManager { this.registerHandler(Incoming.CatalogAdminPublishEvent, CatalogAdminPublishEvent.class); this.registerHandler(Incoming.CatalogAdminSavePageImagesEvent, CatalogAdminSavePageImagesEvent.class); this.registerHandler(Incoming.CatalogAdminSavePageIconEvent, CatalogAdminSavePageIconEvent.class); + this.registerHandler(Incoming.CatalogAdminLoadOfferEvent, CatalogAdminLoadOfferEvent.class); + this.registerHandler(Incoming.CatalogAdminLoadPageEvent, CatalogAdminLoadPageEvent.class); } private void registerEvent() throws Exception { diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/Incoming.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/Incoming.java index 77f72fe3..bd8d1219 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/Incoming.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/Incoming.java @@ -444,6 +444,8 @@ public class Incoming { public static final int CatalogAdminPublishEvent = 10058; public static final int CatalogAdminSavePageImagesEvent = 10060; public static final int CatalogAdminSavePageIconEvent = 10061; + public static final int CatalogAdminLoadOfferEvent = 10062; + public static final int CatalogAdminLoadPageEvent = 10063; // Custom Prefixes public static final int RequestUserPrefixesEvent = 7011; diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/catalog/catalogadmin/CatalogAdminLoadOfferEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/catalog/catalogadmin/CatalogAdminLoadOfferEvent.java new file mode 100644 index 00000000..9f765bdf --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/catalog/catalogadmin/CatalogAdminLoadOfferEvent.java @@ -0,0 +1,55 @@ +package com.eu.habbo.messages.incoming.catalog.catalogadmin; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.catalog.CatalogPageType; +import com.eu.habbo.habbohotel.permissions.Permission; +import com.eu.habbo.messages.incoming.MessageHandler; +import com.eu.habbo.messages.outgoing.catalog.catalogadmin.CatalogAdminOfferDetailsComposer; +import com.eu.habbo.messages.outgoing.catalog.catalogadmin.CatalogAdminResultComposer; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; + +public class CatalogAdminLoadOfferEvent extends MessageHandler { + + @Override + public void handle() throws Exception { + if (!this.client.getHabbo().hasPermission(Permission.ACC_CATALOGFURNI)) { + this.client.sendResponse(new CatalogAdminResultComposer(false, "No permission")); + return; + } + + int offerId = this.packet.readInt(); + CatalogPageType pageType = CatalogPageType.fromString(this.packet.readString()); + + String sql = (pageType == CatalogPageType.BUILDER) + ? "SELECT id, order_number FROM catalog_items_bc WHERE id = ? LIMIT 1" + : "SELECT id, offer_id, limited_stack, order_number FROM catalog_items WHERE id = ? LIMIT 1"; + + try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); + PreparedStatement statement = connection.prepareStatement(sql)) { + statement.setInt(1, offerId); + + try (ResultSet set = statement.executeQuery()) { + if (!set.next()) return; + + if (pageType == CatalogPageType.BUILDER) { + this.client.sendResponse(new CatalogAdminOfferDetailsComposer( + set.getInt("id"), + 0, + 0, + set.getInt("order_number") + )); + } else { + this.client.sendResponse(new CatalogAdminOfferDetailsComposer( + set.getInt("id"), + set.getInt("offer_id"), + set.getInt("limited_stack"), + set.getInt("order_number") + )); + } + } + } + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/catalog/catalogadmin/CatalogAdminLoadPageEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/catalog/catalogadmin/CatalogAdminLoadPageEvent.java new file mode 100644 index 00000000..48e16868 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/catalog/catalogadmin/CatalogAdminLoadPageEvent.java @@ -0,0 +1,28 @@ +package com.eu.habbo.messages.incoming.catalog.catalogadmin; + +import com.eu.habbo.Emulator; +import com.eu.habbo.habbohotel.catalog.CatalogPage; +import com.eu.habbo.habbohotel.catalog.CatalogPageType; +import com.eu.habbo.habbohotel.permissions.Permission; +import com.eu.habbo.messages.incoming.MessageHandler; +import com.eu.habbo.messages.outgoing.catalog.catalogadmin.CatalogAdminPageDetailsComposer; +import com.eu.habbo.messages.outgoing.catalog.catalogadmin.CatalogAdminResultComposer; + +public class CatalogAdminLoadPageEvent extends MessageHandler { + + @Override + public void handle() throws Exception { + if (!this.client.getHabbo().hasPermission(Permission.ACC_CATALOGFURNI)) { + this.client.sendResponse(new CatalogAdminResultComposer(false, "No permission")); + return; + } + + int pageId = this.packet.readInt(); + CatalogPageType pageType = CatalogPageType.fromString(this.packet.readString()); + + CatalogPage page = Emulator.getGameEnvironment().getCatalogManager().getCatalogPage(pageId, pageType); + if (page == null) return; + + this.client.sendResponse(new CatalogAdminPageDetailsComposer(page)); + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/messages/outgoing/Outgoing.java b/Emulator/src/main/java/com/eu/habbo/messages/outgoing/Outgoing.java index e04d51b1..d842aff7 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/outgoing/Outgoing.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/outgoing/Outgoing.java @@ -573,6 +573,8 @@ public class Outgoing { // Catalog Admin public static final int CatalogAdminResultComposer = 10059; + public static final int CatalogAdminOfferDetailsComposer = 10062; + public static final int CatalogAdminPageDetailsComposer = 10063; // Custom Prefixes public static final int UserPrefixesComposer = 7001; diff --git a/Emulator/src/main/java/com/eu/habbo/messages/outgoing/catalog/catalogadmin/CatalogAdminOfferDetailsComposer.java b/Emulator/src/main/java/com/eu/habbo/messages/outgoing/catalog/catalogadmin/CatalogAdminOfferDetailsComposer.java new file mode 100644 index 00000000..2b73aaf5 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/messages/outgoing/catalog/catalogadmin/CatalogAdminOfferDetailsComposer.java @@ -0,0 +1,29 @@ +package com.eu.habbo.messages.outgoing.catalog.catalogadmin; + +import com.eu.habbo.messages.ServerMessage; +import com.eu.habbo.messages.outgoing.MessageComposer; +import com.eu.habbo.messages.outgoing.Outgoing; + +public class CatalogAdminOfferDetailsComposer extends MessageComposer { + private final int offerId; + private final int offerIdGroup; + private final int limitedStack; + private final int orderNumber; + + public CatalogAdminOfferDetailsComposer(int offerId, int offerIdGroup, int limitedStack, int orderNumber) { + this.offerId = offerId; + this.offerIdGroup = offerIdGroup; + this.limitedStack = limitedStack; + this.orderNumber = orderNumber; + } + + @Override + protected ServerMessage composeInternal() { + this.response.init(Outgoing.CatalogAdminOfferDetailsComposer); + this.response.appendInt(this.offerId); + this.response.appendInt(this.offerIdGroup); + this.response.appendInt(this.limitedStack); + this.response.appendInt(this.orderNumber); + return this.response; + } +} diff --git a/Emulator/src/main/java/com/eu/habbo/messages/outgoing/catalog/catalogadmin/CatalogAdminPageDetailsComposer.java b/Emulator/src/main/java/com/eu/habbo/messages/outgoing/catalog/catalogadmin/CatalogAdminPageDetailsComposer.java new file mode 100644 index 00000000..bd10e740 --- /dev/null +++ b/Emulator/src/main/java/com/eu/habbo/messages/outgoing/catalog/catalogadmin/CatalogAdminPageDetailsComposer.java @@ -0,0 +1,27 @@ +package com.eu.habbo.messages.outgoing.catalog.catalogadmin; + +import com.eu.habbo.habbohotel.catalog.CatalogPage; +import com.eu.habbo.messages.ServerMessage; +import com.eu.habbo.messages.outgoing.MessageComposer; +import com.eu.habbo.messages.outgoing.Outgoing; + +public class CatalogAdminPageDetailsComposer extends MessageComposer { + private final CatalogPage page; + + public CatalogAdminPageDetailsComposer(CatalogPage page) { + this.page = page; + } + + @Override + protected ServerMessage composeInternal() { + this.response.init(Outgoing.CatalogAdminPageDetailsComposer); + this.response.appendInt(this.page.getId()); + this.response.appendString(this.page.getCaption()); + this.response.appendString(this.page.getPageName()); + this.response.appendInt(this.page.getRank()); + this.response.appendInt(this.page.getOrderNum()); + this.response.appendBoolean(this.page.isVisible()); + this.response.appendBoolean(this.page.isEnabled()); + return this.response; + } +}