Merge remote-tracking branch 'origin/dev-4.0' into dev-4.0

# Conflicts:
#	src/main/java/emu/grasscutter/game/player/Player.java
#	src/main/java/emu/grasscutter/game/player/TeamManager.java
#	src/main/java/emu/grasscutter/game/world/Scene.java
This commit is contained in:
KingRainbow44
2023-08-31 21:06:13 -04:00
Unverified
82 changed files with 2394 additions and 1075 deletions
@@ -4,33 +4,57 @@ import emu.grasscutter.Grasscutter;
import emu.grasscutter.data.binout.*;
import emu.grasscutter.data.binout.config.*;
import emu.grasscutter.data.binout.routes.Route;
import emu.grasscutter.data.custom.*;
import emu.grasscutter.data.custom.TrialAvatarActivityCustomData;
import emu.grasscutter.data.custom.TrialAvatarCustomData;
import emu.grasscutter.data.excels.*;
import emu.grasscutter.data.excels.achievement.*;
import emu.grasscutter.data.excels.activity.*;
import emu.grasscutter.data.excels.achievement.AchievementData;
import emu.grasscutter.data.excels.achievement.AchievementGoalData;
import emu.grasscutter.data.excels.activity.ActivityCondExcelConfigData;
import emu.grasscutter.data.excels.activity.ActivityData;
import emu.grasscutter.data.excels.activity.ActivityShopData;
import emu.grasscutter.data.excels.activity.ActivityWatcherData;
import emu.grasscutter.data.excels.avatar.*;
import emu.grasscutter.data.excels.codex.*;
import emu.grasscutter.data.excels.dungeon.*;
import emu.grasscutter.data.excels.giving.*;
import emu.grasscutter.data.excels.monster.*;
import emu.grasscutter.data.excels.quest.*;
import emu.grasscutter.data.excels.reliquary.*;
import emu.grasscutter.data.excels.giving.GivingData;
import emu.grasscutter.data.excels.giving.GivingGroupData;
import emu.grasscutter.data.excels.monster.MonsterCurveData;
import emu.grasscutter.data.excels.monster.MonsterData;
import emu.grasscutter.data.excels.monster.MonsterDescribeData;
import emu.grasscutter.data.excels.monster.MonsterSpecialNameData;
import emu.grasscutter.data.excels.quest.QuestData;
import emu.grasscutter.data.excels.quest.QuestGlobalVarData;
import emu.grasscutter.data.excels.reliquary.ReliquaryAffixData;
import emu.grasscutter.data.excels.reliquary.ReliquaryLevelData;
import emu.grasscutter.data.excels.reliquary.ReliquaryMainPropData;
import emu.grasscutter.data.excels.reliquary.ReliquarySetData;
import emu.grasscutter.data.excels.scene.*;
import emu.grasscutter.data.excels.tower.*;
import emu.grasscutter.data.excels.tower.TowerFloorData;
import emu.grasscutter.data.excels.tower.TowerLevelData;
import emu.grasscutter.data.excels.tower.TowerScheduleData;
import emu.grasscutter.data.excels.trial.*;
import emu.grasscutter.data.excels.weapon.*;
import emu.grasscutter.data.excels.world.*;
import emu.grasscutter.data.excels.weapon.WeaponCurveData;
import emu.grasscutter.data.excels.weapon.WeaponLevelData;
import emu.grasscutter.data.excels.weapon.WeaponPromoteData;
import emu.grasscutter.data.excels.world.WeatherData;
import emu.grasscutter.data.excels.world.WorldAreaData;
import emu.grasscutter.data.excels.world.WorldLevelData;
import emu.grasscutter.data.server.*;
import emu.grasscutter.game.dungeons.DungeonDropEntry;
import emu.grasscutter.game.quest.*;
import emu.grasscutter.game.quest.QuestEncryptionKey;
import emu.grasscutter.game.quest.RewindData;
import emu.grasscutter.game.quest.TeleportData;
import emu.grasscutter.game.quest.enums.QuestCond;
import emu.grasscutter.game.world.GroupReplacementData;
import emu.grasscutter.utils.Utils;
import it.unimi.dsi.fastutil.ints.*;
import lombok.Getter;
import lombok.Setter;
import lombok.val;
import javax.annotation.Nullable;
import java.lang.reflect.Field;
import java.util.*;
import javax.annotation.Nullable;
import lombok.*;
@SuppressWarnings({"unused", "MismatchedQueryAndUpdateOfCollection"})
public final class GameData {
@@ -265,6 +289,10 @@ public final class GameData {
private static final Int2ObjectMap<HomeWorldLevelData> homeWorldLevelDataMap =
new Int2ObjectOpenHashMap<>();
@Getter
private static final Int2ObjectMap<HomeWorldNPCData> homeWorldNPCDataMap =
new Int2ObjectOpenHashMap<>();
@Getter
private static final Int2ObjectMap<InvestigationMonsterData> investigationMonsterDataMap =
new Int2ObjectOpenHashMap<>();
@@ -2,48 +2,49 @@ package emu.grasscutter.data.binout;
import com.google.gson.annotations.SerializedName;
import emu.grasscutter.game.world.Position;
import java.util.List;
import lombok.AccessLevel;
import lombok.Data;
import lombok.experimental.FieldDefaults;
import java.util.List;
@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
public class HomeworldDefaultSaveData {
@SerializedName(
value = "KFHBFNPDJBE",
alternate = {"PKACPHDGGEI", "AKOLOBLHDFK"})
value = "homeBlockLists",
alternate = {"PKACPHDGGEI", "AKOLOBLHDFK", "KFHBFNPDJBE"})
List<HomeBlock> homeBlockLists;
@SerializedName(
value = "IJNPADKGNKE",
alternate = {"MINCKHBNING", "MBICDPDEKDM"})
value = "bornPos",
alternate = {"MINCKHBNING", "MBICDPDEKDM", "IJNPADKGNKE"})
Position bornPos;
@SerializedName(
value = "IPIIGEMFLHK",
alternate = {"EJJIOJKFKCO"})
value = "bornRot",
alternate = {"EJJIOJKFKCO", "IPIIGEMFLHK"})
Position bornRot;
@SerializedName(
value = "HHOLBNPIHEM",
alternate = {"CJAKHCIFHNP"})
value = "djinPos",
alternate = {"CJAKHCIFHNP", "HHOLBNPIHEM"})
Position djinPos;
@SerializedName(
value = "KNHCJKHCOAN",
alternate = {"AMDNOHPGKMI"})
value = "mainhouse",
alternate = {"AMDNOHPGKMI", "KNHCJKHCOAN"})
HomeFurniture mainhouse;
@SerializedName(
value = "NIHOJFEKFPG",
alternate = {"BHCPEAOPIDC"})
value = "doorLists",
alternate = {"BHCPEAOPIDC", "NIHOJFEKFPG"})
List<HomeFurniture> doorLists;
@SerializedName(
value = "EPGELGEFJFK",
alternate = {"AABEPENIFLN"})
value = "stairLists",
alternate = {"AABEPENIFLN", "EPGELGEFJFK"})
List<HomeFurniture> stairLists;
@Data
@@ -51,18 +52,18 @@ public class HomeworldDefaultSaveData {
public static class HomeBlock {
@SerializedName(
value = "FGIJCELCGFI",
alternate = {"PGDPDIDJEEL", "ANICBLBOBKD"})
value = "blockId",
alternate = {"PGDPDIDJEEL", "ANICBLBOBKD", "FGIJCELCGFI"})
int blockId;
@SerializedName(
value = "BEAPOFELABD",
alternate = {"NCIMIKKFLOH"})
value = "furnitures",
alternate = {"NCIMIKKFLOH", "BEAPOFELABD"})
List<HomeFurniture> furnitures;
@SerializedName(
value = "MLIODLGDFHJ",
alternate = {"GJGNLIINBGB"})
value = "persistentFurnitures",
alternate = {"GJGNLIINBGB", "MLIODLGDFHJ"})
List<HomeFurniture> persistentFurnitures;
}
@@ -71,15 +72,18 @@ public class HomeworldDefaultSaveData {
public static class HomeFurniture {
@SerializedName(
value = "ENHNGKJBJAB",
alternate = {"KMAAJJHPNBA", "FFLCGFGGGND"})
value = "id",
alternate = {"KMAAJJHPNBA", "FFLCGFGGGND", "ENHNGKJBJAB"})
int id;
@SerializedName(
value = "NGIEEIOLPPO",
alternate = {"JFKAHNCPDME", "BPCGGBKIAMG"})
value = "pos",
alternate = {"JFKAHNCPDME", "BPCGGBKIAMG", "NGIEEIOLPPO"})
Position pos;
// @SerializedName(value = "HEOCEHKEBFM", alternate = "LKCKOOGFDBM")
@SerializedName(
value = "rot",
alternate = {"LKCKOOGFDBM", "HEOCEHKEBFM"})
Position rot;
}
}
@@ -11,9 +11,10 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults(level = AccessLevel.PRIVATE)
@ResourceType(name = {"HomeWorldBgmExcelConfigData.json"})
public class HomeWorldBgmData extends GameResource {
@SerializedName(value = "homeBgmId", alternate = "MJJENLEBKEF")
@SerializedName(value = "homeBgmId", alternate = {"MJJENLEBKEF"})
private int homeBgmId;
@SerializedName(value = "isDefaultUnlock", alternate = {"GBEONILEOBA"})
private boolean isDefaultUnlock;
private boolean NBIDHGOOCKD;
private boolean JJMNJMCCOKP;
@@ -0,0 +1,35 @@
package emu.grasscutter.data.excels;
import com.google.gson.annotations.SerializedName;
import emu.grasscutter.data.GameResource;
import emu.grasscutter.data.ResourceType;
import emu.grasscutter.game.inventory.ItemQuality;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.experimental.FieldDefaults;
import java.util.List;
@ResourceType(name = "HomeWorldNPCExcelConfigData.json")
@Getter
@FieldDefaults(level = AccessLevel.PRIVATE)
public class HomeWorldNPCData extends GameResource {
int furnitureID;
int avatarID;
@SerializedName(value = "npcId", alternate = {"HDLJMOGHICL"})
int npcId;
@SerializedName(value = "talkIdList", alternate = {"CKMCLCNIBLD"})
List<Integer> talkIdList;
@SerializedName(value = "isTalkRandomly", alternate = {"HPJMMEBNMAI"})
boolean isTalkRandomly;
@SerializedName(value = "npcQuality", alternate = {"BHJOIKFHIBD"})
ItemQuality npcQuality;
@SerializedName(value = "titleTextMapHash", alternate = {"GNMAIEGCFPO"})
long titleTextMapHash;
long descTextMapHash;
@Override
public int getId() {
return this.avatarID;
}
}
@@ -4,6 +4,7 @@ import com.google.gson.annotations.SerializedName;
import emu.grasscutter.data.GameResource;
import emu.grasscutter.data.ResourceType;
import emu.grasscutter.data.common.ItemUseData;
import emu.grasscutter.game.home.SpecialFurnitureType;
import emu.grasscutter.game.inventory.EquipType;
import emu.grasscutter.game.inventory.ItemType;
import emu.grasscutter.game.inventory.MaterialType;
@@ -13,10 +14,11 @@ import emu.grasscutter.game.props.ItemUseOp;
import emu.grasscutter.game.props.ItemUseTarget;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
import it.unimi.dsi.fastutil.ints.IntSet;
import lombok.Getter;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import lombok.Getter;
@ResourceType(
name = {
@@ -86,6 +88,7 @@ public class ItemData extends GameResource {
private int comfort;
private List<Integer> furnType;
private List<Integer> furnitureGadgetID;
private SpecialFurnitureType specialFurnitureType = SpecialFurnitureType.NOT_SPECIAL;
@SerializedName(
value = "roomSceneId",