From 0d48080e385806b3df8e00f3c757d3a47a2fe95a Mon Sep 17 00:00:00 2001 From: MagicBot Date: Thu, 15 Oct 2026 11:09:41 -0400 Subject: [PATCH] Add cache parsers and POJOs for DEED and RUNE templates New engine.parsers package: - cache: DeedParser and RuneParser load COBJECTS/DEED and COBJECTS/RUNE JSON straight from the data dir, keyed by file id. CacheParserUtil holds the shared JSON helpers. - objects: standalone DeedTemplate and RuneTemplate covering every field in the client data, plus shared PowerGrant/UserPowerAction. - wpak: placeholder for upcoming wpak parsers. Not wired into server startup yet. Co-Authored-By: Claude Opus 5.5 --- src/engine/parsers/cache/CacheParserUtil.java | 299 ++++++++++++++++ src/engine/parsers/cache/DeedParser.java | 178 ++++++++++ src/engine/parsers/cache/RuneParser.java | 332 ++++++++++++++++++ src/engine/parsers/objects/DeedTemplate.java | 120 +++++++ src/engine/parsers/objects/PowerGrant.java | 33 ++ src/engine/parsers/objects/RuneTemplate.java | 225 ++++++++++++ .../parsers/objects/UserPowerAction.java | 24 ++ src/engine/parsers/wpak/package-info.java | 11 + 8 files changed, 1222 insertions(+) create mode 100644 src/engine/parsers/cache/CacheParserUtil.java create mode 100644 src/engine/parsers/cache/DeedParser.java create mode 100644 src/engine/parsers/cache/RuneParser.java create mode 100644 src/engine/parsers/objects/DeedTemplate.java create mode 100644 src/engine/parsers/objects/PowerGrant.java create mode 100644 src/engine/parsers/objects/RuneTemplate.java create mode 100644 src/engine/parsers/objects/UserPowerAction.java create mode 100644 src/engine/parsers/wpak/package-info.java diff --git a/src/engine/parsers/cache/CacheParserUtil.java b/src/engine/parsers/cache/CacheParserUtil.java new file mode 100644 index 00000000..091173a2 --- /dev/null +++ b/src/engine/parsers/cache/CacheParserUtil.java @@ -0,0 +1,299 @@ +// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . +// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· +// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ +// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ +// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ +// Magicbane Emulator Project © 2013 - 2026 +// https://www.magicbane.com + +package engine.parsers.cache; + +import engine.math.Vector3fImmutable; +import engine.parsers.objects.PowerGrant; +import engine.parsers.objects.UserPowerAction; +import org.json.JSONArray; +import org.json.JSONObject; +import org.pmw.tinylog.Logger; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.EnumMap; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.LinkedHashMap; + +// Shared JSON helpers for the COBJECTS cache parsers. +// Only generic reading lives here; each parser owns its own field mapping. + +public class CacheParserUtil { + + // Files are named