From 24fd21983578035ae654010ba564bf00fc8cd59d Mon Sep 17 00:00:00 2001 From: Melledy <121644117+Melledy@users.noreply.github.com> Date: Fri, 24 Apr 2026 03:32:01 -0700 Subject: [PATCH] Update some protos and add `/giveall skins` command --- README.md | 26 +++-- .../lunarcore/proto/GateserverOuterClass.java | 88 ++++++++--------- .../GetFriendLoginInfoScRspOuterClass.java | 56 ++++------- .../proto/SceneEntityInfoOuterClass.java | 20 ---- ...SetGroupCustomSaveDataCsReqOuterClass.java | 20 ---- ...SetGroupCustomSaveDataScRspOuterClass.java | 60 ------------ .../StartChallengePeakCsReqOuterClass.java | 97 +++++++++++++++++-- .../SwitchHandUpdateScRspOuterClass.java | 20 ++++ .../TakeMailAttachmentScRspOuterClass.java | 20 ++++ .../proto/TextJoinQueryScRspOuterClass.java | 20 ++++ .../UnlockAvatarPathScRspOuterClass.java | 20 ++++ .../proto/UnlockTutorialScRspOuterClass.java | 20 ++++ .../proto/UpdateMarkChestScRspOuterClass.java | 20 ++++ src/main/java/emu/lunarcore/HotfixData.java | 1 + .../command/commands/GiveAllCommand.java | 8 ++ .../java/emu/lunarcore/data/GameData.java | 1 + .../emu/lunarcore/data/ResourceLoader.java | 33 +------ .../data/excel/PlayerOutfitBaseExcel.java | 18 ++++ .../emu/lunarcore/game/enums/ItemSubType.java | 20 ++++ .../lunarcore/game/inventory/Inventory.java | 8 ++ .../http/handlers/QueryGatewayHandler.java | 3 + 21 files changed, 347 insertions(+), 232 deletions(-) create mode 100644 src/main/java/emu/lunarcore/data/excel/PlayerOutfitBaseExcel.java diff --git a/README.md b/README.md index 7fa8de8..88e9c48 100644 --- a/README.md +++ b/README.md @@ -33,8 +33,8 @@ ### Compiling the server 1. Open your system terminal, and compile the server with `./gradlew jar` 2. Create a folder named `resources` in your server directory -3. Download the `Config`, `TextMap`, and `ExcelBin` folders from [https://github.com/Dimbreath/StarRailData](https://github.com/Dimbreath/StarRailData) and place them into your resources folder. -4. Run the server with `java -jar LunarCore.jar` from your system terminal. Lunar Core comes with a built-in internal MongoDB server for its database, so no Mongodb installation is required. However, it is highly recommended to install Mongodb anyway. +3. Download the `Config`, `TextMap`, and `ExcelBin` folders from [https://github.com/Dimbreath/StarRailData](https://gitlab.com/Dimbreath/turnbasedgamedata) and place them into your resources folder. +4. Run the server with `java -jar LunarCore.jar` from your system terminal. Lunar Core comes with a built-in internal MongoDB server for its database, so no Mongodb installation is required. However, it is highly recommended to install Mongodb anyway. ### Connecting with the client (Fiddler method) 1. **Log in with the client to an official server and Hoyoverse account at least once to download game data.** @@ -66,21 +66,27 @@ Server commands can be run in the server console or in-game. There is a dummy us ``` /account {create | delete} [username] (reserved player uid). Creates or deletes an account. -/avatar lv(level) p(ascension) r(eidolon) s(skill levels). Sets the current avatar's properties. -/clear {relics | lightcones | materials | items}. Removes filtered items from the player inventory. -/gender {male | female}. Sets the player's gender. -/give [item id] x[amount] lv[number]. Gives the targetted player an item. -/giveall {materials | avatars | lightcones | relics}. Gives the targeted player items. +/avatar {cur | all | lineup} lv(level) p(ascension) e(eidolon) s(skill levels). Sets the current avatar's properties +/buildavatar [{avatar id} | cur | all | lineup]. Creates a set of relics for the selected avatars +/clear {relics | lightcones | materials | items} lv(filter level). Removes filter items from the targeted player's inventory. +/energy. Refills all characters energy in current lineup. +/gender {male | female}. Sets the player gender. +/give [item id] x(amount) lv(level) r(rank) p(promotion). Gives the targeted player an item. +/giveall {materials | avatars | lightcones | relics | usables} lv(level). Gives the targeted player items. /heal. Heals your avatars. /help. Displays a list of available commands. /kick @[player id]. Kicks a player from the server. +/lineup [avatar ids]. USE AT YOUR OWN RISK. Sets your current lineup with the specified avatar ids. /mail [content]. Sends the targeted player a system mail. /permission {add | remove | clear} [permission]. Gives/removes a permission from the targeted player. -/refill. Refill your skill points in open world. +/refill - refill your skill points in open world. /reload. Reloads the server config. /scene [scene id] [floor id]. Teleports the player to the specified scene. +/setlevel [level] - Sets the targeted player's trailblazer level. /spawn [npc monster id/prop id] s[stage id] x[amount] lv[level] r[radius] . Spawns a monster or prop near the targeted player. -/stop. Stops the server -/unstuck @[player id]. Unstucks an offline player if they're in a scene that doesn't load. +/status. Displays the status of the server. +/stop - Stops the server +/tp [x] [y] [z]. Teleports the player to the specified coordinates. +/unstuck @[player id]. Unstucks an offline player if theyre in a scene that doesnt load. /worldlevel [world level]. Sets the targeted player's equilibrium level. ``` diff --git a/src/generated/main/emu/lunarcore/proto/GateserverOuterClass.java b/src/generated/main/emu/lunarcore/proto/GateserverOuterClass.java index 712472f..3c5eae7 100644 --- a/src/generated/main/emu/lunarcore/proto/GateserverOuterClass.java +++ b/src/generated/main/emu/lunarcore/proto/GateserverOuterClass.java @@ -115,9 +115,9 @@ public final class GateserverOuterClass { private final Utf8String mdkResVersion = Utf8String.newEmptyInstance(); /** - * optional string asset_bundle_url_2 = 1417; + * optional string base_asset_bundle_url = 1417; */ - private final Utf8String assetBundleUrl2 = Utf8String.newEmptyInstance(); + private final Utf8String baseAssetBundleUrl = Utf8String.newEmptyInstance(); /** * optional string ifix_url = 1488; @@ -1090,67 +1090,67 @@ public final class GateserverOuterClass { } /** - * optional string asset_bundle_url_2 = 1417; - * @return whether the assetBundleUrl2 field is set + * optional string base_asset_bundle_url = 1417; + * @return whether the baseAssetBundleUrl field is set */ - public boolean hasAssetBundleUrl2() { + public boolean hasBaseAssetBundleUrl() { return (bitField0_ & 0x00080000) != 0; } /** - * optional string asset_bundle_url_2 = 1417; + * optional string base_asset_bundle_url = 1417; * @return this */ - public Gateserver clearAssetBundleUrl2() { + public Gateserver clearBaseAssetBundleUrl() { bitField0_ &= ~0x00080000; - assetBundleUrl2.clear(); + baseAssetBundleUrl.clear(); return this; } /** - * optional string asset_bundle_url_2 = 1417; - * @return the assetBundleUrl2 + * optional string base_asset_bundle_url = 1417; + * @return the baseAssetBundleUrl */ - public String getAssetBundleUrl2() { - return assetBundleUrl2.getString(); + public String getBaseAssetBundleUrl() { + return baseAssetBundleUrl.getString(); } /** - * optional string asset_bundle_url_2 = 1417; - * @return internal {@code Utf8String} representation of assetBundleUrl2 for reading + * optional string base_asset_bundle_url = 1417; + * @return internal {@code Utf8String} representation of baseAssetBundleUrl for reading */ - public Utf8String getAssetBundleUrl2Bytes() { - return this.assetBundleUrl2; + public Utf8String getBaseAssetBundleUrlBytes() { + return this.baseAssetBundleUrl; } /** - * optional string asset_bundle_url_2 = 1417; - * @return internal {@code Utf8String} representation of assetBundleUrl2 for modifications + * optional string base_asset_bundle_url = 1417; + * @return internal {@code Utf8String} representation of baseAssetBundleUrl for modifications */ - public Utf8String getMutableAssetBundleUrl2Bytes() { + public Utf8String getMutableBaseAssetBundleUrlBytes() { bitField0_ |= 0x00080000; - return this.assetBundleUrl2; + return this.baseAssetBundleUrl; } /** - * optional string asset_bundle_url_2 = 1417; - * @param value the assetBundleUrl2 to set + * optional string base_asset_bundle_url = 1417; + * @param value the baseAssetBundleUrl to set * @return this */ - public Gateserver setAssetBundleUrl2(final CharSequence value) { + public Gateserver setBaseAssetBundleUrl(final CharSequence value) { bitField0_ |= 0x00080000; - assetBundleUrl2.copyFrom(value); + baseAssetBundleUrl.copyFrom(value); return this; } /** - * optional string asset_bundle_url_2 = 1417; - * @param value the assetBundleUrl2 to set + * optional string base_asset_bundle_url = 1417; + * @param value the baseAssetBundleUrl to set * @return this */ - public Gateserver setAssetBundleUrl2(final Utf8String value) { + public Gateserver setBaseAssetBundleUrl(final Utf8String value) { bitField0_ |= 0x00080000; - assetBundleUrl2.copyFrom(value); + baseAssetBundleUrl.copyFrom(value); return this; } @@ -1243,7 +1243,7 @@ public final class GateserverOuterClass { clientSecretKey.copyFrom(other.clientSecretKey); ifixVersion.copyFrom(other.ifixVersion); mdkResVersion.copyFrom(other.mdkResVersion); - assetBundleUrl2.copyFrom(other.assetBundleUrl2); + baseAssetBundleUrl.copyFrom(other.baseAssetBundleUrl); ifixUrl.copyFrom(other.ifixUrl); } return this; @@ -1312,8 +1312,8 @@ public final class GateserverOuterClass { if (other.hasMdkResVersion()) { getMutableMdkResVersionBytes().copyFrom(other.mdkResVersion); } - if (other.hasAssetBundleUrl2()) { - getMutableAssetBundleUrl2Bytes().copyFrom(other.assetBundleUrl2); + if (other.hasBaseAssetBundleUrl()) { + getMutableBaseAssetBundleUrlBytes().copyFrom(other.baseAssetBundleUrl); } if (other.hasIfixUrl()) { getMutableIfixUrlBytes().copyFrom(other.ifixUrl); @@ -1347,7 +1347,7 @@ public final class GateserverOuterClass { clientSecretKey.clear(); ifixVersion.clear(); mdkResVersion.clear(); - assetBundleUrl2.clear(); + baseAssetBundleUrl.clear(); ifixUrl.clear(); return this; } @@ -1368,7 +1368,7 @@ public final class GateserverOuterClass { clientSecretKey.clear(); ifixVersion.clear(); mdkResVersion.clear(); - assetBundleUrl2.clear(); + baseAssetBundleUrl.clear(); ifixUrl.clear(); return this; } @@ -1402,7 +1402,7 @@ public final class GateserverOuterClass { && (!hasClientSecretKey() || clientSecretKey.equals(other.clientSecretKey)) && (!hasIfixVersion() || ifixVersion.equals(other.ifixVersion)) && (!hasMdkResVersion() || mdkResVersion.equals(other.mdkResVersion)) - && (!hasAssetBundleUrl2() || assetBundleUrl2.equals(other.assetBundleUrl2)) + && (!hasBaseAssetBundleUrl() || baseAssetBundleUrl.equals(other.baseAssetBundleUrl)) && (!hasIfixUrl() || ifixUrl.equals(other.ifixUrl)); } @@ -1486,7 +1486,7 @@ public final class GateserverOuterClass { } if ((bitField0_ & 0x00080000) != 0) { output.writeRawLittleEndian16((short) 22730); - output.writeStringNoTag(assetBundleUrl2); + output.writeStringNoTag(baseAssetBundleUrl); } if ((bitField0_ & 0x00100000) != 0) { output.writeRawLittleEndian16((short) 23938); @@ -1555,7 +1555,7 @@ public final class GateserverOuterClass { size += 2 + ProtoSink.computeStringSizeNoTag(mdkResVersion); } if ((bitField0_ & 0x00080000) != 0) { - size += 2 + ProtoSink.computeStringSizeNoTag(assetBundleUrl2); + size += 2 + ProtoSink.computeStringSizeNoTag(baseAssetBundleUrl); } if ((bitField0_ & 0x00100000) != 0) { size += 2 + ProtoSink.computeStringSizeNoTag(ifixUrl); @@ -1742,8 +1742,8 @@ public final class GateserverOuterClass { } } case 11338: { - // assetBundleUrl2 - input.readString(assetBundleUrl2); + // baseAssetBundleUrl + input.readString(baseAssetBundleUrl); bitField0_ |= 0x00080000; tag = input.readTag(); if (tag != 11906) { @@ -1834,7 +1834,7 @@ public final class GateserverOuterClass { output.writeString(FieldNames.mdkResVersion, mdkResVersion); } if ((bitField0_ & 0x00080000) != 0) { - output.writeString(FieldNames.assetBundleUrl2, assetBundleUrl2); + output.writeString(FieldNames.baseAssetBundleUrl, baseAssetBundleUrl); } if ((bitField0_ & 0x00100000) != 0) { output.writeString(FieldNames.ifixUrl, ifixUrl); @@ -2066,11 +2066,11 @@ public final class GateserverOuterClass { } break; } - case -247376043: - case -1775001516: { - if (input.isAtField(FieldNames.assetBundleUrl2)) { + case 436849070: + case -324796273: { + if (input.isAtField(FieldNames.baseAssetBundleUrl)) { if (!input.trySkipNullValue()) { - input.readString(assetBundleUrl2); + input.readString(baseAssetBundleUrl); bitField0_ |= 0x00080000; } } else { @@ -2180,7 +2180,7 @@ public final class GateserverOuterClass { static final FieldName mdkResVersion = FieldName.forField("mdkResVersion", "mdk_res_version"); - static final FieldName assetBundleUrl2 = FieldName.forField("assetBundleUrl2", "asset_bundle_url_2"); + static final FieldName baseAssetBundleUrl = FieldName.forField("baseAssetBundleUrl", "base_asset_bundle_url"); static final FieldName ifixUrl = FieldName.forField("ifixUrl", "ifix_url"); } diff --git a/src/generated/main/emu/lunarcore/proto/GetFriendLoginInfoScRspOuterClass.java b/src/generated/main/emu/lunarcore/proto/GetFriendLoginInfoScRspOuterClass.java index 2fc94d1..813a55c 100644 --- a/src/generated/main/emu/lunarcore/proto/GetFriendLoginInfoScRspOuterClass.java +++ b/src/generated/main/emu/lunarcore/proto/GetFriendLoginInfoScRspOuterClass.java @@ -20,16 +20,12 @@ public final class GetFriendLoginInfoScRspOuterClass { private static final long serialVersionUID = 0L; /** - *
-     *  JDLHKMNFDBD
-     * 
- * - * optional uint32 retcode = 13; + * optional uint32 retcode = 2; */ private int retcode; /** - * repeated uint32 friend_uid_list = 7; + * repeated uint32 friend_uid_list = 13; */ private final RepeatedInt friendUidList = RepeatedInt.newEmptyInstance(); @@ -44,11 +40,7 @@ public final class GetFriendLoginInfoScRspOuterClass { } /** - *
-     *  JDLHKMNFDBD
-     * 
- * - * optional uint32 retcode = 13; + * optional uint32 retcode = 2; * @return whether the retcode field is set */ public boolean hasRetcode() { @@ -56,11 +48,7 @@ public final class GetFriendLoginInfoScRspOuterClass { } /** - *
-     *  JDLHKMNFDBD
-     * 
- * - * optional uint32 retcode = 13; + * optional uint32 retcode = 2; * @return this */ public GetFriendLoginInfoScRsp clearRetcode() { @@ -70,11 +58,7 @@ public final class GetFriendLoginInfoScRspOuterClass { } /** - *
-     *  JDLHKMNFDBD
-     * 
- * - * optional uint32 retcode = 13; + * optional uint32 retcode = 2; * @return the retcode */ public int getRetcode() { @@ -82,11 +66,7 @@ public final class GetFriendLoginInfoScRspOuterClass { } /** - *
-     *  JDLHKMNFDBD
-     * 
- * - * optional uint32 retcode = 13; + * optional uint32 retcode = 2; * @param value the retcode to set * @return this */ @@ -97,7 +77,7 @@ public final class GetFriendLoginInfoScRspOuterClass { } /** - * repeated uint32 friend_uid_list = 7; + * repeated uint32 friend_uid_list = 13; * @return whether the friendUidList field is set */ public boolean hasFriendUidList() { @@ -105,7 +85,7 @@ public final class GetFriendLoginInfoScRspOuterClass { } /** - * repeated uint32 friend_uid_list = 7; + * repeated uint32 friend_uid_list = 13; * @return this */ public GetFriendLoginInfoScRsp clearFriendUidList() { @@ -115,7 +95,7 @@ public final class GetFriendLoginInfoScRspOuterClass { } /** - * repeated uint32 friend_uid_list = 7; + * repeated uint32 friend_uid_list = 13; * * This method returns the internal storage object without modifying any has state. * The returned object should not be modified and be treated as read-only. @@ -129,7 +109,7 @@ public final class GetFriendLoginInfoScRspOuterClass { } /** - * repeated uint32 friend_uid_list = 7; + * repeated uint32 friend_uid_list = 13; * * This method returns the internal storage object and sets the corresponding * has state. The returned object will become part of this message and its @@ -143,7 +123,7 @@ public final class GetFriendLoginInfoScRspOuterClass { } /** - * repeated uint32 friend_uid_list = 7; + * repeated uint32 friend_uid_list = 13; * @param value the friendUidList to add * @return this */ @@ -154,7 +134,7 @@ public final class GetFriendLoginInfoScRspOuterClass { } /** - * repeated uint32 friend_uid_list = 7; + * repeated uint32 friend_uid_list = 13; * @param values the friendUidList to add * @return this */ @@ -230,12 +210,12 @@ public final class GetFriendLoginInfoScRspOuterClass { @Override public void writeTo(final ProtoSink output) throws IOException { if ((bitField0_ & 0x00000001) != 0) { - output.writeRawByte((byte) 104); + output.writeRawByte((byte) 16); output.writeUInt32NoTag(retcode); } if ((bitField0_ & 0x00000002) != 0) { for (int i = 0; i < friendUidList.length(); i++) { - output.writeRawByte((byte) 56); + output.writeRawByte((byte) 104); output.writeUInt32NoTag(friendUidList.array()[i]); } } @@ -260,16 +240,16 @@ public final class GetFriendLoginInfoScRspOuterClass { int tag = input.readTag(); while (true) { switch (tag) { - case 104: { + case 16: { // retcode retcode = input.readUInt32(); bitField0_ |= 0x00000001; tag = input.readTag(); - if (tag != 58) { + if (tag != 106) { break; } } - case 58: { + case 106: { // friendUidList [packed=true] input.readPackedUInt32(friendUidList, tag); bitField0_ |= 0x00000002; @@ -288,7 +268,7 @@ public final class GetFriendLoginInfoScRspOuterClass { tag = input.readTag(); break; } - case 56: { + case 104: { // friendUidList [packed=false] tag = input.readRepeatedUInt32(friendUidList, tag); bitField0_ |= 0x00000002; diff --git a/src/generated/main/emu/lunarcore/proto/SceneEntityInfoOuterClass.java b/src/generated/main/emu/lunarcore/proto/SceneEntityInfoOuterClass.java index f162618..99cc49e 100644 --- a/src/generated/main/emu/lunarcore/proto/SceneEntityInfoOuterClass.java +++ b/src/generated/main/emu/lunarcore/proto/SceneEntityInfoOuterClass.java @@ -24,10 +24,6 @@ public final class SceneEntityInfoOuterClass { private int instId; /** - *
-     *  FJNHDHOHBCL
-     * 
- * * optional uint32 group_id = 13; */ private int groupId; @@ -115,10 +111,6 @@ public final class SceneEntityInfoOuterClass { } /** - *
-     *  FJNHDHOHBCL
-     * 
- * * optional uint32 group_id = 13; * @return whether the groupId field is set */ @@ -127,10 +119,6 @@ public final class SceneEntityInfoOuterClass { } /** - *
-     *  FJNHDHOHBCL
-     * 
- * * optional uint32 group_id = 13; * @return this */ @@ -141,10 +129,6 @@ public final class SceneEntityInfoOuterClass { } /** - *
-     *  FJNHDHOHBCL
-     * 
- * * optional uint32 group_id = 13; * @return the groupId */ @@ -153,10 +137,6 @@ public final class SceneEntityInfoOuterClass { } /** - *
-     *  FJNHDHOHBCL
-     * 
- * * optional uint32 group_id = 13; * @param value the groupId to set * @return this diff --git a/src/generated/main/emu/lunarcore/proto/SetGroupCustomSaveDataCsReqOuterClass.java b/src/generated/main/emu/lunarcore/proto/SetGroupCustomSaveDataCsReqOuterClass.java index 13bea71..34ccb07 100644 --- a/src/generated/main/emu/lunarcore/proto/SetGroupCustomSaveDataCsReqOuterClass.java +++ b/src/generated/main/emu/lunarcore/proto/SetGroupCustomSaveDataCsReqOuterClass.java @@ -29,10 +29,6 @@ public final class SetGroupCustomSaveDataCsReqOuterClass { private int entryId; /** - *
-     *  FJNHDHOHBCL
-     * 
- * * optional uint32 group_id = 13; */ private int groupId; @@ -106,10 +102,6 @@ public final class SetGroupCustomSaveDataCsReqOuterClass { } /** - *
-     *  FJNHDHOHBCL
-     * 
- * * optional uint32 group_id = 13; * @return whether the groupId field is set */ @@ -118,10 +110,6 @@ public final class SetGroupCustomSaveDataCsReqOuterClass { } /** - *
-     *  FJNHDHOHBCL
-     * 
- * * optional uint32 group_id = 13; * @return this */ @@ -132,10 +120,6 @@ public final class SetGroupCustomSaveDataCsReqOuterClass { } /** - *
-     *  FJNHDHOHBCL
-     * 
- * * optional uint32 group_id = 13; * @return the groupId */ @@ -144,10 +128,6 @@ public final class SetGroupCustomSaveDataCsReqOuterClass { } /** - *
-     *  FJNHDHOHBCL
-     * 
- * * optional uint32 group_id = 13; * @param value the groupId to set * @return this diff --git a/src/generated/main/emu/lunarcore/proto/SetGroupCustomSaveDataScRspOuterClass.java b/src/generated/main/emu/lunarcore/proto/SetGroupCustomSaveDataScRspOuterClass.java index a2fd480..a57c93f 100644 --- a/src/generated/main/emu/lunarcore/proto/SetGroupCustomSaveDataScRspOuterClass.java +++ b/src/generated/main/emu/lunarcore/proto/SetGroupCustomSaveDataScRspOuterClass.java @@ -23,28 +23,16 @@ public final class SetGroupCustomSaveDataScRspOuterClass { private static final long serialVersionUID = 0L; /** - *
-     *  JODPMEDMPJK
-     * 
- * * optional uint32 entry_id = 4; */ private int entryId; /** - *
-     *  HEDLHGFPCGG
-     * 
- * * optional uint32 group_id = 11; */ private int groupId; /** - *
-     *  JDLHKMNFDBD
-     * 
- * * optional uint32 retcode = 15; */ private int retcode; @@ -64,10 +52,6 @@ public final class SetGroupCustomSaveDataScRspOuterClass { } /** - *
-     *  JODPMEDMPJK
-     * 
- * * optional uint32 entry_id = 4; * @return whether the entryId field is set */ @@ -76,10 +60,6 @@ public final class SetGroupCustomSaveDataScRspOuterClass { } /** - *
-     *  JODPMEDMPJK
-     * 
- * * optional uint32 entry_id = 4; * @return this */ @@ -90,10 +70,6 @@ public final class SetGroupCustomSaveDataScRspOuterClass { } /** - *
-     *  JODPMEDMPJK
-     * 
- * * optional uint32 entry_id = 4; * @return the entryId */ @@ -102,10 +78,6 @@ public final class SetGroupCustomSaveDataScRspOuterClass { } /** - *
-     *  JODPMEDMPJK
-     * 
- * * optional uint32 entry_id = 4; * @param value the entryId to set * @return this @@ -117,10 +89,6 @@ public final class SetGroupCustomSaveDataScRspOuterClass { } /** - *
-     *  HEDLHGFPCGG
-     * 
- * * optional uint32 group_id = 11; * @return whether the groupId field is set */ @@ -129,10 +97,6 @@ public final class SetGroupCustomSaveDataScRspOuterClass { } /** - *
-     *  HEDLHGFPCGG
-     * 
- * * optional uint32 group_id = 11; * @return this */ @@ -143,10 +107,6 @@ public final class SetGroupCustomSaveDataScRspOuterClass { } /** - *
-     *  HEDLHGFPCGG
-     * 
- * * optional uint32 group_id = 11; * @return the groupId */ @@ -155,10 +115,6 @@ public final class SetGroupCustomSaveDataScRspOuterClass { } /** - *
-     *  HEDLHGFPCGG
-     * 
- * * optional uint32 group_id = 11; * @param value the groupId to set * @return this @@ -170,10 +126,6 @@ public final class SetGroupCustomSaveDataScRspOuterClass { } /** - *
-     *  JDLHKMNFDBD
-     * 
- * * optional uint32 retcode = 15; * @return whether the retcode field is set */ @@ -182,10 +134,6 @@ public final class SetGroupCustomSaveDataScRspOuterClass { } /** - *
-     *  JDLHKMNFDBD
-     * 
- * * optional uint32 retcode = 15; * @return this */ @@ -196,10 +144,6 @@ public final class SetGroupCustomSaveDataScRspOuterClass { } /** - *
-     *  JDLHKMNFDBD
-     * 
- * * optional uint32 retcode = 15; * @return the retcode */ @@ -208,10 +152,6 @@ public final class SetGroupCustomSaveDataScRspOuterClass { } /** - *
-     *  JDLHKMNFDBD
-     * 
- * * optional uint32 retcode = 15; * @param value the retcode to set * @return this diff --git a/src/generated/main/emu/lunarcore/proto/StartChallengePeakCsReqOuterClass.java b/src/generated/main/emu/lunarcore/proto/StartChallengePeakCsReqOuterClass.java index c2a18e0..97ea6ba 100644 --- a/src/generated/main/emu/lunarcore/proto/StartChallengePeakCsReqOuterClass.java +++ b/src/generated/main/emu/lunarcore/proto/StartChallengePeakCsReqOuterClass.java @@ -24,6 +24,11 @@ public final class StartChallengePeakCsReqOuterClass { */ private int challengePeakId; + /** + * optional uint32 challenge_peak_buff_id = 6; + */ + private int challengePeakBuffId; + /** * repeated uint32 challenge_avatar_id_list = 15; */ @@ -76,12 +81,49 @@ public final class StartChallengePeakCsReqOuterClass { return this; } + /** + * optional uint32 challenge_peak_buff_id = 6; + * @return whether the challengePeakBuffId field is set + */ + public boolean hasChallengePeakBuffId() { + return (bitField0_ & 0x00000002) != 0; + } + + /** + * optional uint32 challenge_peak_buff_id = 6; + * @return this + */ + public StartChallengePeakCsReq clearChallengePeakBuffId() { + bitField0_ &= ~0x00000002; + challengePeakBuffId = 0; + return this; + } + + /** + * optional uint32 challenge_peak_buff_id = 6; + * @return the challengePeakBuffId + */ + public int getChallengePeakBuffId() { + return challengePeakBuffId; + } + + /** + * optional uint32 challenge_peak_buff_id = 6; + * @param value the challengePeakBuffId to set + * @return this + */ + public StartChallengePeakCsReq setChallengePeakBuffId(final int value) { + bitField0_ |= 0x00000002; + challengePeakBuffId = value; + return this; + } + /** * repeated uint32 challenge_avatar_id_list = 15; * @return whether the challengeAvatarIdList field is set */ public boolean hasChallengeAvatarIdList() { - return (bitField0_ & 0x00000002) != 0; + return (bitField0_ & 0x00000004) != 0; } /** @@ -89,7 +131,7 @@ public final class StartChallengePeakCsReqOuterClass { * @return this */ public StartChallengePeakCsReq clearChallengeAvatarIdList() { - bitField0_ &= ~0x00000002; + bitField0_ &= ~0x00000004; challengeAvatarIdList.clear(); return this; } @@ -118,7 +160,7 @@ public final class StartChallengePeakCsReqOuterClass { * @return internal storage object for modifications */ public RepeatedInt getMutableChallengeAvatarIdList() { - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000004; return challengeAvatarIdList; } @@ -128,7 +170,7 @@ public final class StartChallengePeakCsReqOuterClass { * @return this */ public StartChallengePeakCsReq addChallengeAvatarIdList(final int value) { - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000004; challengeAvatarIdList.add(value); return this; } @@ -139,7 +181,7 @@ public final class StartChallengePeakCsReqOuterClass { * @return this */ public StartChallengePeakCsReq addAllChallengeAvatarIdList(final int... values) { - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000004; challengeAvatarIdList.addAll(values); return this; } @@ -150,6 +192,7 @@ public final class StartChallengePeakCsReqOuterClass { if ((bitField0_ | other.bitField0_) != 0) { bitField0_ = other.bitField0_; challengePeakId = other.challengePeakId; + challengePeakBuffId = other.challengePeakBuffId; challengeAvatarIdList.copyFrom(other.challengeAvatarIdList); } return this; @@ -164,6 +207,9 @@ public final class StartChallengePeakCsReqOuterClass { if (other.hasChallengePeakId()) { setChallengePeakId(other.challengePeakId); } + if (other.hasChallengePeakBuffId()) { + setChallengePeakBuffId(other.challengePeakBuffId); + } if (other.hasChallengeAvatarIdList()) { getMutableChallengeAvatarIdList().addAll(other.challengeAvatarIdList); } @@ -178,6 +224,7 @@ public final class StartChallengePeakCsReqOuterClass { cachedSize = -1; bitField0_ = 0; challengePeakId = 0; + challengePeakBuffId = 0; challengeAvatarIdList.clear(); return this; } @@ -204,6 +251,7 @@ public final class StartChallengePeakCsReqOuterClass { StartChallengePeakCsReq other = (StartChallengePeakCsReq) o; return bitField0_ == other.bitField0_ && (!hasChallengePeakId() || challengePeakId == other.challengePeakId) + && (!hasChallengePeakBuffId() || challengePeakBuffId == other.challengePeakBuffId) && (!hasChallengeAvatarIdList() || challengeAvatarIdList.equals(other.challengeAvatarIdList)); } @@ -214,6 +262,10 @@ public final class StartChallengePeakCsReqOuterClass { output.writeUInt32NoTag(challengePeakId); } if ((bitField0_ & 0x00000002) != 0) { + output.writeRawByte((byte) 48); + output.writeUInt32NoTag(challengePeakBuffId); + } + if ((bitField0_ & 0x00000004) != 0) { for (int i = 0; i < challengeAvatarIdList.length(); i++) { output.writeRawByte((byte) 120); output.writeUInt32NoTag(challengeAvatarIdList.array()[i]); @@ -228,6 +280,9 @@ public final class StartChallengePeakCsReqOuterClass { size += 1 + ProtoSink.computeUInt32SizeNoTag(challengePeakId); } if ((bitField0_ & 0x00000002) != 0) { + size += 1 + ProtoSink.computeUInt32SizeNoTag(challengePeakBuffId); + } + if ((bitField0_ & 0x00000004) != 0) { size += (1 * challengeAvatarIdList.length()) + ProtoSink.computeRepeatedUInt32SizeNoTag(challengeAvatarIdList); } return size; @@ -245,6 +300,15 @@ public final class StartChallengePeakCsReqOuterClass { challengePeakId = input.readUInt32(); bitField0_ |= 0x00000001; tag = input.readTag(); + if (tag != 48) { + break; + } + } + case 48: { + // challengePeakBuffId + challengePeakBuffId = input.readUInt32(); + bitField0_ |= 0x00000002; + tag = input.readTag(); if (tag != 122) { break; } @@ -252,7 +316,7 @@ public final class StartChallengePeakCsReqOuterClass { case 122: { // challengeAvatarIdList [packed=true] input.readPackedUInt32(challengeAvatarIdList, tag); - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000004; tag = input.readTag(); if (tag != 0) { break; @@ -271,7 +335,7 @@ public final class StartChallengePeakCsReqOuterClass { case 120: { // challengeAvatarIdList [packed=false] tag = input.readRepeatedUInt32(challengeAvatarIdList, tag); - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000004; break; } } @@ -285,6 +349,9 @@ public final class StartChallengePeakCsReqOuterClass { output.writeUInt32(FieldNames.challengePeakId, challengePeakId); } if ((bitField0_ & 0x00000002) != 0) { + output.writeUInt32(FieldNames.challengePeakBuffId, challengePeakBuffId); + } + if ((bitField0_ & 0x00000004) != 0) { output.writeRepeatedUInt32(FieldNames.challengeAvatarIdList, challengeAvatarIdList); } output.endObject(); @@ -309,12 +376,24 @@ public final class StartChallengePeakCsReqOuterClass { } break; } + case 1004602192: + case 1580927875: { + if (input.isAtField(FieldNames.challengePeakBuffId)) { + if (!input.trySkipNullValue()) { + challengePeakBuffId = input.readUInt32(); + bitField0_ |= 0x00000002; + } + } else { + input.skipUnknownField(); + } + break; + } case 836175637: case 1831834552: { if (input.isAtField(FieldNames.challengeAvatarIdList)) { if (!input.trySkipNullValue()) { input.readRepeatedUInt32(challengeAvatarIdList); - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000004; } } else { input.skipUnknownField(); @@ -376,6 +455,8 @@ public final class StartChallengePeakCsReqOuterClass { static class FieldNames { static final FieldName challengePeakId = FieldName.forField("challengePeakId", "challenge_peak_id"); + static final FieldName challengePeakBuffId = FieldName.forField("challengePeakBuffId", "challenge_peak_buff_id"); + static final FieldName challengeAvatarIdList = FieldName.forField("challengeAvatarIdList", "challenge_avatar_id_list"); } } diff --git a/src/generated/main/emu/lunarcore/proto/SwitchHandUpdateScRspOuterClass.java b/src/generated/main/emu/lunarcore/proto/SwitchHandUpdateScRspOuterClass.java index 17498ea..3de6ae2 100644 --- a/src/generated/main/emu/lunarcore/proto/SwitchHandUpdateScRspOuterClass.java +++ b/src/generated/main/emu/lunarcore/proto/SwitchHandUpdateScRspOuterClass.java @@ -23,6 +23,10 @@ public final class SwitchHandUpdateScRspOuterClass { private static final long serialVersionUID = 0L; /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; */ private int retcode; @@ -60,6 +64,10 @@ public final class SwitchHandUpdateScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; * @return whether the retcode field is set */ @@ -68,6 +76,10 @@ public final class SwitchHandUpdateScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; * @return this */ @@ -78,6 +90,10 @@ public final class SwitchHandUpdateScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; * @return the retcode */ @@ -86,6 +102,10 @@ public final class SwitchHandUpdateScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; * @param value the retcode to set * @return this diff --git a/src/generated/main/emu/lunarcore/proto/TakeMailAttachmentScRspOuterClass.java b/src/generated/main/emu/lunarcore/proto/TakeMailAttachmentScRspOuterClass.java index 3e2237a..d38176d 100644 --- a/src/generated/main/emu/lunarcore/proto/TakeMailAttachmentScRspOuterClass.java +++ b/src/generated/main/emu/lunarcore/proto/TakeMailAttachmentScRspOuterClass.java @@ -20,6 +20,10 @@ public final class TakeMailAttachmentScRspOuterClass { private static final long serialVersionUID = 0L; /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; */ private int retcode; @@ -45,6 +49,10 @@ public final class TakeMailAttachmentScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; * @return whether the retcode field is set */ @@ -53,6 +61,10 @@ public final class TakeMailAttachmentScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; * @return this */ @@ -63,6 +75,10 @@ public final class TakeMailAttachmentScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; * @return the retcode */ @@ -71,6 +87,10 @@ public final class TakeMailAttachmentScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; * @param value the retcode to set * @return this diff --git a/src/generated/main/emu/lunarcore/proto/TextJoinQueryScRspOuterClass.java b/src/generated/main/emu/lunarcore/proto/TextJoinQueryScRspOuterClass.java index fd808c8..b66c0be 100644 --- a/src/generated/main/emu/lunarcore/proto/TextJoinQueryScRspOuterClass.java +++ b/src/generated/main/emu/lunarcore/proto/TextJoinQueryScRspOuterClass.java @@ -24,6 +24,10 @@ public final class TextJoinQueryScRspOuterClass { private static final long serialVersionUID = 0L; /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 12; */ private int retcode; @@ -52,6 +56,10 @@ public final class TextJoinQueryScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 12; * @return whether the retcode field is set */ @@ -60,6 +68,10 @@ public final class TextJoinQueryScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 12; * @return this */ @@ -70,6 +82,10 @@ public final class TextJoinQueryScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 12; * @return the retcode */ @@ -78,6 +94,10 @@ public final class TextJoinQueryScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 12; * @param value the retcode to set * @return this diff --git a/src/generated/main/emu/lunarcore/proto/UnlockAvatarPathScRspOuterClass.java b/src/generated/main/emu/lunarcore/proto/UnlockAvatarPathScRspOuterClass.java index ccdb2a9..05acc1e 100644 --- a/src/generated/main/emu/lunarcore/proto/UnlockAvatarPathScRspOuterClass.java +++ b/src/generated/main/emu/lunarcore/proto/UnlockAvatarPathScRspOuterClass.java @@ -20,6 +20,10 @@ public final class UnlockAvatarPathScRspOuterClass { private static final long serialVersionUID = 0L; /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 12; */ private int retcode; @@ -50,6 +54,10 @@ public final class UnlockAvatarPathScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 12; * @return whether the retcode field is set */ @@ -58,6 +66,10 @@ public final class UnlockAvatarPathScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 12; * @return this */ @@ -68,6 +80,10 @@ public final class UnlockAvatarPathScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 12; * @return the retcode */ @@ -76,6 +92,10 @@ public final class UnlockAvatarPathScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 12; * @param value the retcode to set * @return this diff --git a/src/generated/main/emu/lunarcore/proto/UnlockTutorialScRspOuterClass.java b/src/generated/main/emu/lunarcore/proto/UnlockTutorialScRspOuterClass.java index cd46dd2..c26021f 100644 --- a/src/generated/main/emu/lunarcore/proto/UnlockTutorialScRspOuterClass.java +++ b/src/generated/main/emu/lunarcore/proto/UnlockTutorialScRspOuterClass.java @@ -19,6 +19,10 @@ public final class UnlockTutorialScRspOuterClass { private static final long serialVersionUID = 0L; /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; */ private int retcode; @@ -39,6 +43,10 @@ public final class UnlockTutorialScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; * @return whether the retcode field is set */ @@ -47,6 +55,10 @@ public final class UnlockTutorialScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; * @return this */ @@ -57,6 +69,10 @@ public final class UnlockTutorialScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; * @return the retcode */ @@ -65,6 +81,10 @@ public final class UnlockTutorialScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; * @param value the retcode to set * @return this diff --git a/src/generated/main/emu/lunarcore/proto/UpdateMarkChestScRspOuterClass.java b/src/generated/main/emu/lunarcore/proto/UpdateMarkChestScRspOuterClass.java index cc4b15b..5237f23 100644 --- a/src/generated/main/emu/lunarcore/proto/UpdateMarkChestScRspOuterClass.java +++ b/src/generated/main/emu/lunarcore/proto/UpdateMarkChestScRspOuterClass.java @@ -20,6 +20,10 @@ public final class UpdateMarkChestScRspOuterClass { private static final long serialVersionUID = 0L; /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; */ private int retcode; @@ -50,6 +54,10 @@ public final class UpdateMarkChestScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; * @return whether the retcode field is set */ @@ -58,6 +66,10 @@ public final class UpdateMarkChestScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; * @return this */ @@ -68,6 +80,10 @@ public final class UpdateMarkChestScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; * @return the retcode */ @@ -76,6 +92,10 @@ public final class UpdateMarkChestScRspOuterClass { } /** + *
+     *  JDLHKMNFDBD
+     * 
+ * * optional uint32 retcode = 1; * @param value the retcode to set * @return this diff --git a/src/main/java/emu/lunarcore/HotfixData.java b/src/main/java/emu/lunarcore/HotfixData.java index 2fe4678..e9cae27 100644 --- a/src/main/java/emu/lunarcore/HotfixData.java +++ b/src/main/java/emu/lunarcore/HotfixData.java @@ -2,6 +2,7 @@ package emu.lunarcore; public class HotfixData { public String assetBundleUrl = ""; + public String baseAssetBundleUrl = ""; public String exResourceUrl = ""; public String luaUrl = ""; public String ifixUrl = ""; diff --git a/src/main/java/emu/lunarcore/command/commands/GiveAllCommand.java b/src/main/java/emu/lunarcore/command/commands/GiveAllCommand.java index e27a069..c3c40a6 100644 --- a/src/main/java/emu/lunarcore/command/commands/GiveAllCommand.java +++ b/src/main/java/emu/lunarcore/command/commands/GiveAllCommand.java @@ -147,6 +147,14 @@ public class GiveAllCommand implements CommandHandler { // Send message args.sendMessage("Giving " + target.getName() + " all avatars"); } + case "skins" -> { + for (var excel : GameData.getAvatarSkinExcelMap().values()) { + target.getUnlocks().addAvatarSkin(excel.getId()); + } + + // Send message + args.sendMessage("Giving " + target.getName() + " all avatar skins"); + } case "unlocks", "usables", "icons" -> { // Add head icons - Duplicates are handled automatically for (var excel : GameData.getPlayerIconExcelMap().values()) { diff --git a/src/main/java/emu/lunarcore/data/GameData.java b/src/main/java/emu/lunarcore/data/GameData.java index b3491ea..6d37a7b 100644 --- a/src/main/java/emu/lunarcore/data/GameData.java +++ b/src/main/java/emu/lunarcore/data/GameData.java @@ -52,6 +52,7 @@ public class GameData { @Getter private static ExcelMap textJoinExcelMap = new ExcelMap<>(); @Getter private static ExcelMap chatBubbleExcelMap = new ExcelMap<>(); @Getter private static ExcelMap phoneThemeExcelMap = new ExcelMap<>(); + @Getter private static ExcelMap playerOutfitBaseExcelMap = new ExcelMap<>(); @Getter private static ExcelMap petExcelMap = new ExcelMap<>(); @Getter private static ExcelMap contentPackageExcelMap = new ExcelMap<>(); @Getter private static ExcelMap offeringTypeExcelMap = new ExcelMap<>(); diff --git a/src/main/java/emu/lunarcore/data/ResourceLoader.java b/src/main/java/emu/lunarcore/data/ResourceLoader.java index 11954a7..33429f1 100644 --- a/src/main/java/emu/lunarcore/data/ResourceLoader.java +++ b/src/main/java/emu/lunarcore/data/ResourceLoader.java @@ -52,9 +52,6 @@ public class ResourceLoader { // Load maze abilities loadMazeAbilities(); - // Load mission infos - loadMissionInfo(); - // Done loaded = true; LunarCore.getLogger().info("Resource loading complete"); @@ -414,33 +411,5 @@ public class ResourceLoader { // Done LunarCore.getLogger().info("Loaded " + count + " maze abilities for avatars."); } - - private static void loadMissionInfo() { - int count = 0; - int countTask = 0; - for (Integer mMissionId : GameData.getMainMissionIds()) { - File file = new File(LunarCore.getConfig().getResourceDir() + "/Config/Level/Mission/" + mMissionId + "/" + "MissionInfo_" + mMissionId + ".json"); - if (!file.exists()) continue; - try (FileReader reader = new FileReader(file)) { - MissionInfo info = gson.fromJson(reader, MissionInfo.class); - for (MissionInfo.SubMissionInfo setme : info.getSubMissionList()) { - File taskFile = new File(LunarCore.getConfig().getResourceDir() + "/Config/Level/Mission/" + setme.getMainMissionID() + "/" + "Mission_" + setme.getId() + ".json"); - if (!taskFile.exists()) continue; - try (FileReader readerTask = new FileReader(taskFile)) { - MissionTaskInfo infoTask = gson.fromJson(readerTask, MissionTaskInfo.class); - setme.setTask(infoTask); - countTask++; - } catch (Exception ex) { - LunarCore.getLogger().warn("Failed to load task mission info: " + taskFile.getName(), ex); - } - } - // Update GameData with the modified MissionInfo object - GameData.getMissionInfos().put(info.getMainMissionID(), info); - count++; - } catch (Exception e) { - LunarCore.getLogger().warn("Failed to load mission info: " + file.getName(), e); - } - } - LunarCore.getLogger().info("Loaded " + count + " mission infos (task " + countTask + ")."); - } + } diff --git a/src/main/java/emu/lunarcore/data/excel/PlayerOutfitBaseExcel.java b/src/main/java/emu/lunarcore/data/excel/PlayerOutfitBaseExcel.java new file mode 100644 index 0000000..0c25ba3 --- /dev/null +++ b/src/main/java/emu/lunarcore/data/excel/PlayerOutfitBaseExcel.java @@ -0,0 +1,18 @@ +package emu.lunarcore.data.excel; + +import emu.lunarcore.data.resource.GameResource; +import emu.lunarcore.data.resource.ResourceType; +import lombok.Getter; + +@Getter +@ResourceType(name = {"PlayerOutfitBase.json"}) +public class PlayerOutfitBaseExcel extends GameResource { + private int OutfitID; + private String[] SlotTypeList; + private int ItemID; + + @Override + public int getId() { + return OutfitID; + } +} diff --git a/src/main/java/emu/lunarcore/game/enums/ItemSubType.java b/src/main/java/emu/lunarcore/game/enums/ItemSubType.java index 30c2c62..dd32ca7 100644 --- a/src/main/java/emu/lunarcore/game/enums/ItemSubType.java +++ b/src/main/java/emu/lunarcore/game/enums/ItemSubType.java @@ -25,6 +25,11 @@ public enum ItemSubType { RogueMedal (513), PamSkin (514), FindChest (515), + PersonalCard (516), + PhoneCase (517), + PlayerOutfit (518), + HeadIconFrame (519), + PlatformBoundGift (520), Material (601), Eidolon (602), MuseumExhibit (603), @@ -33,6 +38,21 @@ public enum ItemSubType { AetherSpirit (606), FightFestSkill (607), TrainPartyDiyMaterial (608), + PlanetFesItem (609), + ElfRestaurantItem (610), + MatchThreeV2 (611), + HipplenOutfit (612), + DiceCombatAvatar (613), + DiceCombatDice (614), + IdleLiveItem (616), + AvatarExp (651), + AvatarRank (652), + TracePath (653), + WeeklyMonsterDrop (654), + EquipmentExp (655), + RelicExp (656), + CommonMonsterDrop (657), + ComposeMaterial (658), Mission (701), RelicSetShowOnly (801), RelicRarityShowOnly (802), diff --git a/src/main/java/emu/lunarcore/game/inventory/Inventory.java b/src/main/java/emu/lunarcore/game/inventory/Inventory.java index fe76745..15b3bde 100644 --- a/src/main/java/emu/lunarcore/game/inventory/Inventory.java +++ b/src/main/java/emu/lunarcore/game/inventory/Inventory.java @@ -256,6 +256,10 @@ public class Inventory extends BasePlayerManager { getPlayer().getUnlocks().addHeadIcon(item.getItemId()); return item; } + case HeadIconFrame -> { + getPlayer().getUnlocks().addHeadIconFrame(item.getItemId()); + return item; + } case ChatBubble -> { getPlayer().getUnlocks().addChatBubble(item.getItemId()); return item; @@ -264,6 +268,10 @@ public class Inventory extends BasePlayerManager { getPlayer().getUnlocks().addPhoneTheme(item.getItemId()); return item; } + case AvatarSkin -> { + getPlayer().getUnlocks().addAvatarSkin(item.getItemId()); + return item; + } default -> { // Skip } diff --git a/src/main/java/emu/lunarcore/server/http/handlers/QueryGatewayHandler.java b/src/main/java/emu/lunarcore/server/http/handlers/QueryGatewayHandler.java index 326a9db..e6bdc81 100644 --- a/src/main/java/emu/lunarcore/server/http/handlers/QueryGatewayHandler.java +++ b/src/main/java/emu/lunarcore/server/http/handlers/QueryGatewayHandler.java @@ -47,6 +47,9 @@ public class QueryGatewayHandler implements Handler { if (data.assetBundleUrl != null && !data.assetBundleUrl.isBlank()) { gateserver.setAssetBundleUrl(data.assetBundleUrl); } + if (data.baseAssetBundleUrl != null && !data.baseAssetBundleUrl.isBlank()) { + gateserver.setBaseAssetBundleUrl(data.baseAssetBundleUrl); + } if (data.exResourceUrl != null && !data.exResourceUrl.isBlank()) { gateserver.setExResourceUrl(data.exResourceUrl); }