From a30f16b0e1850bd0eab12ff730beb45d9059b105 Mon Sep 17 00:00:00 2001
From: AnimeGitB <AnimeGitB@bigblueball.in>
Date: Sat, 5 Nov 2022 22:57:12 +1030
Subject: [PATCH] Clean up excels

---
 .../data/excels/ActivityWatcherData.java      |  5 +-
 .../grasscutter/data/excels/AvatarData.java   |  6 +-
 .../data/excels/AvatarSkillData.java          | 32 ++++------
 .../data/excels/AvatarSkillDepotData.java     | 39 ++++++------
 .../data/excels/BattlePassMissionData.java    | 11 +---
 .../excels/BlossomRefreshExcelConfigData.java | 39 ++++++------
 .../grasscutter/data/excels/ChapterData.java  | 10 +---
 .../emu/grasscutter/data/excels/CityData.java |  5 --
 .../data/excels/CodexAnimalData.java          | 15 ++---
 .../grasscutter/data/excels/CompoundData.java | 22 +++----
 .../data/excels/CookRecipeData.java           | 20 +++----
 .../data/excels/DailyDungeonData.java         |  7 +--
 .../grasscutter/data/excels/DungeonData.java  | 37 +++---------
 .../data/excels/DungeonEntryData.java         | 15 +----
 .../grasscutter/data/excels/ForgeData.java    | 56 +-----------------
 .../grasscutter/data/excels/GadgetData.java   | 41 +------------
 .../data/excels/HomeWorldLevelData.java       |  5 --
 .../data/excels/InvestigationMonsterData.java |  6 +-
 .../emu/grasscutter/data/excels/ItemData.java |  6 +-
 .../data/excels/MonsterDescribeData.java      | 25 +-------
 .../data/excels/MusicGameBasicData.java       |  6 +-
 .../emu/grasscutter/data/excels/NpcData.java  | 59 ++-----------------
 .../data/excels/OpenStateData.java            |  8 +--
 .../data/excels/PersonalLineData.java         |  9 +--
 .../data/excels/ReliquaryAffixData.java       | 51 +++++-----------
 .../data/excels/ReliquaryLevelData.java       | 36 ++---------
 .../data/excels/ReliquaryMainPropData.java    | 31 ++++------
 .../data/excels/RewardPreviewData.java        | 12 +---
 .../grasscutter/data/excels/SceneData.java    | 31 +++-------
 .../data/excels/TowerFloorData.java           | 32 +---------
 30 files changed, 154 insertions(+), 523 deletions(-)

diff --git a/src/main/java/emu/grasscutter/data/excels/ActivityWatcherData.java b/src/main/java/emu/grasscutter/data/excels/ActivityWatcherData.java
index 4ff176fa..748a2d65 100644
--- a/src/main/java/emu/grasscutter/data/excels/ActivityWatcherData.java
+++ b/src/main/java/emu/grasscutter/data/excels/ActivityWatcherData.java
@@ -13,15 +13,12 @@ import java.util.List;
 @Getter
 @FieldDefaults(level = AccessLevel.PRIVATE)
 public class ActivityWatcherData extends GameResource {
+    @Getter(onMethod = @__(@Override))
     int id;
     int rewardID;
     int progress;
     WatcherTrigger triggerConfig;
 
-    @Override
-    public int getId() {
-        return this.id;
-    }
     @Override
     public void onLoad() {
         triggerConfig.paramList = triggerConfig.paramList.stream().filter(x -> !x.isBlank()).toList();
diff --git a/src/main/java/emu/grasscutter/data/excels/AvatarData.java b/src/main/java/emu/grasscutter/data/excels/AvatarData.java
index 3f64ba3f..ac016cec 100644
--- a/src/main/java/emu/grasscutter/data/excels/AvatarData.java
+++ b/src/main/java/emu/grasscutter/data/excels/AvatarData.java
@@ -44,6 +44,7 @@ public class AvatarData extends GameResource {
     private float criticalHurt;
 
     private List<PropGrowCurve> propGrowCurves;
+    @Getter(onMethod = @__(@Override))
     private int id;
 
     // Transient
@@ -60,11 +61,6 @@ public class AvatarData extends GameResource {
     @Getter private int nameCardRewardId;
     @Getter private int nameCardId;
 
-    @Override
-    public int getId() {
-        return this.id;
-    }
-
     public float getBaseHp(int level) {
         try {
             return this.hpBase * this.hpGrowthCurve[level - 1];
diff --git a/src/main/java/emu/grasscutter/data/excels/AvatarSkillData.java b/src/main/java/emu/grasscutter/data/excels/AvatarSkillData.java
index 23f19213..4518e93a 100644
--- a/src/main/java/emu/grasscutter/data/excels/AvatarSkillData.java
+++ b/src/main/java/emu/grasscutter/data/excels/AvatarSkillData.java
@@ -7,26 +7,18 @@ import emu.grasscutter.game.props.ElementType;
 import lombok.Getter;
 
 @ResourceType(name = "AvatarSkillExcelConfigData.json", loadPriority = LoadPriority.HIGHEST)
+@Getter
 public class AvatarSkillData extends GameResource {
+    @Getter(onMethod = @__(@Override))
     private int id;
-    @Getter private float cdTime;
-    @Getter private int costElemVal;
-    @Getter private int maxChargeNum;
-    @Getter private int triggerID;
-    @Getter private boolean isAttackCameraLock;
-    @Getter private int proudSkillGroupId;
-    @Getter private ElementType costElemType;
-    @Getter private long nameTextMapHash;
-    @Getter private long descTextMapHash;
-    @Getter private String abilityName;
-
-    @Override
-    public int getId() {
-        return this.id;
-    }
-
-    @Override
-    public void onLoad() {
-
-    }
+    private float cdTime;
+    private int costElemVal;
+    private int maxChargeNum;
+    private int triggerID;
+    private boolean isAttackCameraLock;
+    private int proudSkillGroupId;
+    private ElementType costElemType;
+    private long nameTextMapHash;
+    private long descTextMapHash;
+    private String abilityName;
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/AvatarSkillDepotData.java b/src/main/java/emu/grasscutter/data/excels/AvatarSkillDepotData.java
index 30533d61..2a848665 100644
--- a/src/main/java/emu/grasscutter/data/excels/AvatarSkillDepotData.java
+++ b/src/main/java/emu/grasscutter/data/excels/AvatarSkillDepotData.java
@@ -18,31 +18,27 @@ import it.unimi.dsi.fastutil.ints.IntList;
 import lombok.Getter;
 
 @ResourceType(name = "AvatarSkillDepotExcelConfigData.json", loadPriority = LoadPriority.HIGH)
+@Getter
 public class AvatarSkillDepotData extends GameResource {
-
+    @Getter(onMethod = @__(@Override))
     private int id;
-    @Getter private int energySkill;
-    @Getter private int attackModeSkill;
+    private int energySkill;
+    private int attackModeSkill;
 
-    @Getter private List<Integer> skills;
-    @Getter private List<Integer> subSkills;
-    @Getter private List<String> extraAbilities;
-    @Getter private List<Integer> talents;
-    @Getter private List<InherentProudSkillOpens> inherentProudSkillOpens;
+    private List<Integer> skills;
+    private List<Integer> subSkills;
+    private List<String> extraAbilities;
+    private List<Integer> talents;
+    private List<InherentProudSkillOpens> inherentProudSkillOpens;
 
-    @Getter private String talentStarName;
-    @Getter private String skillDepotAbilityGroup;
+    private String talentStarName;
+    private String skillDepotAbilityGroup;
 
     // Transient
-    @Getter private AvatarSkillData energySkillData;
-    @Getter private ElementType elementType;
-    @Getter private IntList abilities;
-    @Getter private int talentCostItemId;
-
-    @Override
-    public int getId() {
-        return this.id;
-    }
+    private AvatarSkillData energySkillData;
+    private ElementType elementType;
+    private IntList abilities;
+    private int talentCostItemId;
 
     public void setAbilities(AbilityEmbryoEntry info) {
         this.abilities = new IntArrayList(info.getAbilities().length);
@@ -77,9 +73,10 @@ public class AvatarSkillDepotData extends GameResource {
             .ifPresent(itemId -> this.talentCostItemId = itemId);
     }
 
+    @Getter
     public static class InherentProudSkillOpens {
-        @Getter private int proudSkillGroupId;
-        @Getter private int needAvatarPromoteLevel;
+        private int proudSkillGroupId;
+        private int needAvatarPromoteLevel;
     }
 
     public IntStream getSkillsAndEnergySkill() {
diff --git a/src/main/java/emu/grasscutter/data/excels/BattlePassMissionData.java b/src/main/java/emu/grasscutter/data/excels/BattlePassMissionData.java
index 4c491324..15a65bcd 100644
--- a/src/main/java/emu/grasscutter/data/excels/BattlePassMissionData.java
+++ b/src/main/java/emu/grasscutter/data/excels/BattlePassMissionData.java
@@ -9,27 +9,20 @@ import emu.grasscutter.data.ResourceType;
 import emu.grasscutter.game.props.BattlePassMissionRefreshType;
 import emu.grasscutter.game.props.WatcherTriggerType;
 import emu.grasscutter.net.proto.BattlePassMissionOuterClass.BattlePassMission.MissionStatus;
-import lombok.AccessLevel;
 import lombok.Getter;
-import lombok.Setter;
-import lombok.experimental.FieldDefaults;
 
 @ResourceType(name = {"BattlePassMissionExcelConfigData.json"})
 @Getter
 public class BattlePassMissionData extends GameResource {
-    private int addPoint;
+    @Getter(onMethod = @__(@Override))
     private int id;
+    private int addPoint;
     private int scheduleId;
     private int progress;
     private TriggerConfig triggerConfig;
     private BattlePassMissionRefreshType refreshType;
     
     private transient Set<Integer> mainParams;
-
-    @Override
-    public int getId() {
-        return this.id;
-    }
     
     public WatcherTriggerType getTriggerType() {
 		return this.getTriggerConfig().getTriggerType();
diff --git a/src/main/java/emu/grasscutter/data/excels/BlossomRefreshExcelConfigData.java b/src/main/java/emu/grasscutter/data/excels/BlossomRefreshExcelConfigData.java
index 1640cc50..9053386d 100644
--- a/src/main/java/emu/grasscutter/data/excels/BlossomRefreshExcelConfigData.java
+++ b/src/main/java/emu/grasscutter/data/excels/BlossomRefreshExcelConfigData.java
@@ -7,40 +7,39 @@ import emu.grasscutter.data.ResourceType;
 import lombok.Getter;
 
 @ResourceType(name = "BlossomRefreshExcelConfigData.json")
+@Getter
 public class BlossomRefreshExcelConfigData extends GameResource {
+    @Getter(onMethod = @__(@Override))
     private int id;
     // Map details
-    @Getter private long nameTextMapHash;
-    @Getter private long descTextMapHash;
-    @Getter private String icon;
-    @Getter private String clientShowType;  // BLOSSOM_SHOWTYPE_CHALLENGE, BLOSSOM_SHOWTYPE_NPCTALK
+    private long nameTextMapHash;
+    private long descTextMapHash;
+    private String icon;
+    private String clientShowType;  // BLOSSOM_SHOWTYPE_CHALLENGE, BLOSSOM_SHOWTYPE_NPCTALK
 
     // Refresh details
-    @Getter private String refreshType;  // Leyline blossoms, magical ore outcrops
-    @Getter private int refreshCount;  // Number of entries to spawn at refresh (1 for each leyline type for each city, 4 for magical ore for each city)
-    @Getter private String refreshTime;  // Server time-of-day to refresh at
-    @Getter private RefreshCond[] refreshCondVec;  // AR requirements etc.
+    private String refreshType;  // Leyline blossoms, magical ore outcrops
+    private int refreshCount;  // Number of entries to spawn at refresh (1 for each leyline type for each city, 4 for magical ore for each city)
+    private String refreshTime;  // Server time-of-day to refresh at
+    private RefreshCond[] refreshCondVec;  // AR requirements etc.
 
-    @Getter private int cityId;
-    @Getter private int blossomChestId;  // 1 for mora, 2 for exp
-    @Getter private Drop[] dropVec;
+    private int cityId;
+    private int blossomChestId;  // 1 for mora, 2 for exp
+    private Drop[] dropVec;
 
     // Unknown details
     // @Getter private int reviseLevel;
     // @Getter private int campUpdateNeedCount;  // Always 1 if specified
 
-    @Override
-    public int getId() {
-        return id;
-    }
-
+    @Getter
     public static class Drop {
-        @Getter int dropId;
-        @Getter int previewReward;
+        int dropId;
+        int previewReward;
     }
 
+    @Getter
     public static class RefreshCond {
-        @Getter String type;
-        @Getter List<Integer> param;
+        String type;
+        List<Integer> param;
     }
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/ChapterData.java b/src/main/java/emu/grasscutter/data/excels/ChapterData.java
index e8436d5a..f1392a35 100644
--- a/src/main/java/emu/grasscutter/data/excels/ChapterData.java
+++ b/src/main/java/emu/grasscutter/data/excels/ChapterData.java
@@ -8,27 +8,23 @@ import lombok.Setter;
 import lombok.experimental.FieldDefaults;
 
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 @ResourceType(name = "ChapterExcelConfigData.json")
 @Getter
-@Setter
+@Setter  // TODO: remove on next API break
 @FieldDefaults(level = AccessLevel.PRIVATE)
 public class ChapterData extends GameResource {
+    @Getter(onMethod = @__(@Override))
     int id;
     int beginQuestId;
     int endQuestId;
     int needPlayerLevel;
 
+    // Why public? TODO: privatise next API break
     public static final Map<Integer, ChapterData> beginQuestChapterMap = new HashMap<>();
     public static final Map<Integer, ChapterData> endQuestChapterMap = new HashMap<>();
 
-    @Override
-    public int getId() {
-        return this.id;
-    }
-
     @Override
     public void onLoad() {
         beginQuestChapterMap.put(beginQuestId, this);
diff --git a/src/main/java/emu/grasscutter/data/excels/CityData.java b/src/main/java/emu/grasscutter/data/excels/CityData.java
index 8746da37..e94627fd 100644
--- a/src/main/java/emu/grasscutter/data/excels/CityData.java
+++ b/src/main/java/emu/grasscutter/data/excels/CityData.java
@@ -22,9 +22,4 @@ public class CityData extends GameResource {
     public int getId() {
         return this.cityId;
     }
-
-    @Override
-    public void onLoad() {
-        super.onLoad();
-    }
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/CodexAnimalData.java b/src/main/java/emu/grasscutter/data/excels/CodexAnimalData.java
index bca9efa0..c5846107 100644
--- a/src/main/java/emu/grasscutter/data/excels/CodexAnimalData.java
+++ b/src/main/java/emu/grasscutter/data/excels/CodexAnimalData.java
@@ -7,18 +7,15 @@ import emu.grasscutter.data.ResourceType;
 import lombok.Getter;
 
 @ResourceType(name = {"AnimalCodexExcelConfigData.json"})
+@Getter
 public class CodexAnimalData extends GameResource {
+    @Getter(onMethod = @__(@Override))
     private int Id;
-    @Getter private String type;
-    @Getter private int describeId;
-    @Getter private int sortOrder;
+    private String type;
+    private int describeId;
+    private int sortOrder;
     @SerializedName(value="countType", alternate={"OCCLHPBCDGL"})
-    @Getter private CountType countType;
-
-    @Override
-    public int getId() {
-        return Id;
-    }
+    private CountType countType;
 
     public enum CountType {
         CODEX_COUNT_TYPE_KILL,
diff --git a/src/main/java/emu/grasscutter/data/excels/CompoundData.java b/src/main/java/emu/grasscutter/data/excels/CompoundData.java
index c90f6baa..bca04177 100644
--- a/src/main/java/emu/grasscutter/data/excels/CompoundData.java
+++ b/src/main/java/emu/grasscutter/data/excels/CompoundData.java
@@ -8,19 +8,15 @@ import lombok.Getter;
 import java.util.List;
 
 @ResourceType(name = {"CompoundExcelConfigData.json"},loadPriority = ResourceType.LoadPriority.LOW)
+@Getter
 public class CompoundData extends GameResource {
+    @Getter(onMethod = @__(@Override))
     private int id;
-
-    @Override
-    public int getId() {return this.id;}
-    @Getter private int groupId;
-    @Getter private int rankLevel;
-    @Getter private boolean isDefaultUnlocked;
-    @Getter private int costTime;
-    @Getter private int queueSize;
-    @Getter private List<ItemParamData> inputVec;
-    @Getter private List<ItemParamData> outputVec;
-
-    @Override
-    public void onLoad(){}
+    private int groupId;
+    private int rankLevel;
+    private boolean isDefaultUnlocked;
+    private int costTime;
+    private int queueSize;
+    private List<ItemParamData> inputVec;
+    private List<ItemParamData> outputVec;
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/CookRecipeData.java b/src/main/java/emu/grasscutter/data/excels/CookRecipeData.java
index b8c8a494..7acdb970 100644
--- a/src/main/java/emu/grasscutter/data/excels/CookRecipeData.java
+++ b/src/main/java/emu/grasscutter/data/excels/CookRecipeData.java
@@ -9,21 +9,15 @@ import emu.grasscutter.data.common.ItemParamData;
 import lombok.Getter;
 
 @ResourceType(name = {"CookRecipeExcelConfigData.json"}, loadPriority = LoadPriority.LOW)
+@Getter
 public class CookRecipeData extends GameResource {
+    @Getter(onMethod = @__(@Override))
     private int id;
 
-    @Getter private int rankLevel;
-    @Getter boolean isDefaultUnlocked;
-    @Getter int maxProficiency;
+    private int rankLevel;
+    private boolean isDefaultUnlocked;
+    private int maxProficiency;
 
-    @Getter List<ItemParamData> qualityOutputVec;
-    @Getter List<ItemParamData> inputVec;
-
-    @Override
-    public int getId() {
-        return this.id;
-    }
-    @Override
-    public void onLoad() {
-    }
+    private List<ItemParamData> qualityOutputVec;
+    private List<ItemParamData> inputVec;
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/DailyDungeonData.java b/src/main/java/emu/grasscutter/data/excels/DailyDungeonData.java
index 1cf6f0a8..b72f2f3b 100644
--- a/src/main/java/emu/grasscutter/data/excels/DailyDungeonData.java
+++ b/src/main/java/emu/grasscutter/data/excels/DailyDungeonData.java
@@ -7,9 +7,11 @@ import emu.grasscutter.data.ResourceType;
 
 import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
+import lombok.Getter;
 
 @ResourceType(name = "DailyDungeonConfigData.json")
 public class DailyDungeonData extends GameResource {
+    @Getter(onMethod = @__(@Override))
     private int id;
     private int[] monday;
     private int[] tuesday;
@@ -26,11 +28,6 @@ public class DailyDungeonData extends GameResource {
         this.map = new Int2ObjectOpenHashMap<>();
     }
 
-    @Override
-    public int getId() {
-        return this.id;
-    }
-
     public int[] getDungeonsByDay(int day) {
         return map.getOrDefault(day, empty);
     }
diff --git a/src/main/java/emu/grasscutter/data/excels/DungeonData.java b/src/main/java/emu/grasscutter/data/excels/DungeonData.java
index 970e7628..47567226 100644
--- a/src/main/java/emu/grasscutter/data/excels/DungeonData.java
+++ b/src/main/java/emu/grasscutter/data/excels/DungeonData.java
@@ -3,46 +3,23 @@ package emu.grasscutter.data.excels;
 import emu.grasscutter.data.GameData;
 import emu.grasscutter.data.GameResource;
 import emu.grasscutter.data.ResourceType;
-
-import emu.grasscutter.game.props.SceneType;
+import lombok.Getter;
 
 @ResourceType(name = "DungeonExcelConfigData.json")
 public class DungeonData extends GameResource {
+    @Getter(onMethod = @__(@Override))
 	private int id;
-	private int sceneId;
-	private int showLevel;
+    @Getter private int sceneId;
+    @Getter private int showLevel;
 	private int passRewardPreviewID;
 	private String involveType; // TODO enum
 	
 	private RewardPreviewData previewData;
 
-	private int statueCostID;
-	private int statueCostCount;
-	    
-	@Override
-	public int getId() {
-		return this.id;
-	}
-
-	public int getSceneId() {
-		return sceneId;
-	}
-	
-	public int getShowLevel() {
-		return showLevel;
-	}
-
-	public RewardPreviewData getRewardPreview() {
-		return previewData;
-	}
-
-	public int getStatueCostID() {
-		return statueCostID;
-	}
+    @Getter private int statueCostID;
+    @Getter private int statueCostCount;
 
-	public int getStatueCostCount() {
-		return statueCostCount;
-	}
+    public RewardPreviewData getRewardPreview() {return previewData;}
 
 	@Override
 	public void onLoad() {
diff --git a/src/main/java/emu/grasscutter/data/excels/DungeonEntryData.java b/src/main/java/emu/grasscutter/data/excels/DungeonEntryData.java
index a73bf563..2a8186e7 100644
--- a/src/main/java/emu/grasscutter/data/excels/DungeonEntryData.java
+++ b/src/main/java/emu/grasscutter/data/excels/DungeonEntryData.java
@@ -7,19 +7,10 @@ import lombok.Setter;
 
 @ResourceType(name = "DungeonEntryExcelConfigData.json")
 @Getter
-@Setter
+@Setter  // TODO: remove this next API break
 public class DungeonEntryData extends GameResource {
+    @Getter(onMethod = @__(@Override))
+    private int id;
     private int dungeonEntryId;
     private int sceneId;
-    private int id;
-
-    @Override
-    public int getId() {
-        return this.id;
-    }
-
-    @Override
-    public void onLoad() {
-
-    }
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/ForgeData.java b/src/main/java/emu/grasscutter/data/excels/ForgeData.java
index fab40317..8fff6fe4 100644
--- a/src/main/java/emu/grasscutter/data/excels/ForgeData.java
+++ b/src/main/java/emu/grasscutter/data/excels/ForgeData.java
@@ -6,9 +6,12 @@ import emu.grasscutter.data.GameResource;
 import emu.grasscutter.data.ResourceType;
 import emu.grasscutter.data.ResourceType.LoadPriority;
 import emu.grasscutter.data.common.ItemParamData;
+import lombok.Getter;
 
 @ResourceType(name = {"ForgeExcelConfigData.json"}, loadPriority = LoadPriority.HIGHEST)
+@Getter
 public class ForgeData extends GameResource {
+    @Getter(onMethod = @__(@Override))
     private int id;
     private int playerLevel;
     private int forgeType;
@@ -21,57 +24,4 @@ public class ForgeData extends GameResource {
     private int priority;
     private int forgePoint;
     private List<ItemParamData> materialItems;
-
-    @Override
-    public int getId() {
-        return this.id;
-    }
-
-    public int getPlayerLevel() {
-        return playerLevel;
-    }
-
-    public int getForgeType() {
-        return forgeType;
-    }
-
-    public int getResultItemId() {
-        return resultItemId;
-    }
-
-    public int getResultItemCount() {
-        return resultItemCount;
-    }
-
-    public int getForgeTime() {
-        return forgeTime;
-    }
-
-    public int getQueueNum() {
-        return queueNum;
-    }
-
-    public int getScoinCost() {
-        return scoinCost;
-    }
-
-    public int getPriority() {
-        return priority;
-    }
-
-    public int getForgePoint() {
-        return forgePoint;
-    }
-
-    public List<ItemParamData> getMaterialItems() {
-        return materialItems;
-    }
-
-    public int getShowItemId() {
-        return showItemId;
-    }
-
-    @Override
-    public void onLoad() {
-    }
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/GadgetData.java b/src/main/java/emu/grasscutter/data/excels/GadgetData.java
index 942b3e92..a748f186 100644
--- a/src/main/java/emu/grasscutter/data/excels/GadgetData.java
+++ b/src/main/java/emu/grasscutter/data/excels/GadgetData.java
@@ -3,9 +3,12 @@ package emu.grasscutter.data.excels;
 import emu.grasscutter.data.GameResource;
 import emu.grasscutter.data.ResourceType;
 import emu.grasscutter.game.props.EntityType;
+import lombok.Getter;
 
 @ResourceType(name = "GadgetExcelConfigData.json")
+@Getter
 public class GadgetData extends GameResource {
+    @Getter(onMethod = @__(@Override))
     private int id;
 
     private EntityType type;
@@ -15,42 +18,4 @@ public class GadgetData extends GameResource {
     private String itemJsonName;
     private long nameTextMapHash;
     private int campID;
-
-    @Override
-    public int getId() {
-        return this.id;
-    }
-
-    public EntityType getType() {
-        return type;
-    }
-
-    public String getJsonName() {
-        return jsonName;
-    }
-
-    public boolean isInteractive() {
-        return isInteractive;
-    }
-
-    public String[] getTags() {
-        return tags;
-    }
-
-    public String getItemJsonName() {
-        return itemJsonName;
-    }
-
-    public long getNameTextMapHash() {
-        return nameTextMapHash;
-    }
-
-    public int getCampID() {
-        return campID;
-    }
-
-    @Override
-    public void onLoad() {
-
-    }
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/HomeWorldLevelData.java b/src/main/java/emu/grasscutter/data/excels/HomeWorldLevelData.java
index a0ddd62f..e707a3ac 100644
--- a/src/main/java/emu/grasscutter/data/excels/HomeWorldLevelData.java
+++ b/src/main/java/emu/grasscutter/data/excels/HomeWorldLevelData.java
@@ -29,9 +29,4 @@ public class HomeWorldLevelData extends GameResource {
     public int getId() {
         return level;
     }
-
-    @Override
-    public void onLoad() {
-        super.onLoad();
-    }
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/InvestigationMonsterData.java b/src/main/java/emu/grasscutter/data/excels/InvestigationMonsterData.java
index 9fbf3d6f..18e4d5d6 100644
--- a/src/main/java/emu/grasscutter/data/excels/InvestigationMonsterData.java
+++ b/src/main/java/emu/grasscutter/data/excels/InvestigationMonsterData.java
@@ -4,7 +4,6 @@ import emu.grasscutter.data.GameData;
 import emu.grasscutter.data.GameResource;
 import emu.grasscutter.data.ResourceType;
 import lombok.AccessLevel;
-import lombok.Data;
 import lombok.Getter;
 import lombok.experimental.FieldDefaults;
 
@@ -14,6 +13,7 @@ import java.util.List;
 @Getter
 @FieldDefaults(level = AccessLevel.PRIVATE)
 public class InvestigationMonsterData extends GameResource {
+    @Getter(onMethod = @__(@Override))
     int id;
     int cityId;
     List<Integer> monsterIdList;
@@ -23,10 +23,6 @@ public class InvestigationMonsterData extends GameResource {
     String monsterCategory;
 
     CityData cityData;
-    @Override
-    public int getId() {
-        return this.id;
-    }
 
     @Override
     public void onLoad() {
diff --git a/src/main/java/emu/grasscutter/data/excels/ItemData.java b/src/main/java/emu/grasscutter/data/excels/ItemData.java
index e50c3476..8f2b6031 100644
--- a/src/main/java/emu/grasscutter/data/excels/ItemData.java
+++ b/src/main/java/emu/grasscutter/data/excels/ItemData.java
@@ -25,6 +25,7 @@ import lombok.Getter;
 @Getter
 public class ItemData extends GameResource {
     // Main
+    @Getter(onMethod = @__(@Override))
     private int id;
     private int stackLimit = 1;
     private int maxUseCount;
@@ -87,11 +88,6 @@ public class ItemData extends GameResource {
     // Custom
     private transient IntSet addPropLevelSet;
 
-    @Override
-    public int getId() {
-        return this.id;
-    }
-
     public WeaponProperty[] getWeaponProperties() {
         return this.weaponProp;
     }
diff --git a/src/main/java/emu/grasscutter/data/excels/MonsterDescribeData.java b/src/main/java/emu/grasscutter/data/excels/MonsterDescribeData.java
index cc10fb84..3c533984 100644
--- a/src/main/java/emu/grasscutter/data/excels/MonsterDescribeData.java
+++ b/src/main/java/emu/grasscutter/data/excels/MonsterDescribeData.java
@@ -3,33 +3,14 @@ package emu.grasscutter.data.excels;
 import emu.grasscutter.data.GameResource;
 import emu.grasscutter.data.ResourceType;
 import emu.grasscutter.data.ResourceType.LoadPriority;
+import lombok.Getter;
 
 @ResourceType(name = "MonsterDescribeExcelConfigData.json", loadPriority = LoadPriority.HIGH)
+@Getter
 public class MonsterDescribeData extends GameResource {
+    @Getter(onMethod = @__(@Override))
     private int id;
     private long nameTextMapHash;
     private int titleID;
     private int specialNameLabID;
-
-    @Override
-    public int getId() {
-        return id;
-    }
-
-    public long getNameTextMapHash() {
-        return nameTextMapHash;
-    }
-
-    public int getTitleID() {
-        return titleID;
-    }
-
-    public int getSpecialNameLabID() {
-        return specialNameLabID;
-    }
-
-    @Override
-    public void onLoad() {
-
-    }
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/MusicGameBasicData.java b/src/main/java/emu/grasscutter/data/excels/MusicGameBasicData.java
index d73d74ce..93c38426 100644
--- a/src/main/java/emu/grasscutter/data/excels/MusicGameBasicData.java
+++ b/src/main/java/emu/grasscutter/data/excels/MusicGameBasicData.java
@@ -10,12 +10,8 @@ import lombok.experimental.FieldDefaults;
 @Getter
 @FieldDefaults(level = AccessLevel.PRIVATE)
 public class MusicGameBasicData extends GameResource {
+    @Getter(onMethod = @__(@Override))
     int id;
     int musicID;
     int musicLevel;
-
-    @Override
-    public int getId() {
-        return this.id;
-    }
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/NpcData.java b/src/main/java/emu/grasscutter/data/excels/NpcData.java
index cd632352..35bb53a9 100644
--- a/src/main/java/emu/grasscutter/data/excels/NpcData.java
+++ b/src/main/java/emu/grasscutter/data/excels/NpcData.java
@@ -2,12 +2,15 @@ package emu.grasscutter.data.excels;
 
 import emu.grasscutter.data.GameResource;
 import emu.grasscutter.data.ResourceType;
+import lombok.Getter;
 
 @ResourceType(name = "NpcExcelConfigData.json")
+@Getter
 public class NpcData extends GameResource {
-	private int id;
-	
-	private String jsonName;
+    @Getter(onMethod = @__(@Override))
+    private int id;
+
+    private String jsonName;
     private String alias;
     private String scriptDataPath;
     private String luaDataPath;
@@ -19,54 +22,4 @@ public class NpcData extends GameResource {
 
     private long nameTextMapHash;
     private int campID;
-	    
-	@Override
-	public int getId() {
-		return this.id;
-	}
-
-	public String getJsonName() {
-		return jsonName;
-	}
-
-	public String getAlias() {
-		return alias;
-	}
-
-	public String getScriptDataPath() {
-		return scriptDataPath;
-	}
-
-	public String getLuaDataPath() {
-		return luaDataPath;
-	}
-
-	public boolean isIsInteractive() {
-		return isInteractive;
-	}
-
-	public boolean isHasMove() {
-		return hasMove;
-	}
-
-	public String getDyePart() {
-		return dyePart;
-	}
-
-	public String getBillboardIcon() {
-		return billboardIcon;
-	}
-
-	public long getNameTextMapHash() {
-		return nameTextMapHash;
-	}
-
-	public int getCampID() {
-		return campID;
-	}
-
-	@Override
-	public void onLoad() {
-
-	}
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/OpenStateData.java b/src/main/java/emu/grasscutter/data/excels/OpenStateData.java
index ee00c621..a415e518 100644
--- a/src/main/java/emu/grasscutter/data/excels/OpenStateData.java
+++ b/src/main/java/emu/grasscutter/data/excels/OpenStateData.java
@@ -3,15 +3,14 @@ package emu.grasscutter.data.excels;
 import emu.grasscutter.data.GameData;
 import emu.grasscutter.data.GameResource;
 import emu.grasscutter.data.ResourceType;
-import lombok.AccessLevel;
 import lombok.Getter;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Objects;
 
 @ResourceType(name = "OpenStateConfigData.json", loadPriority = ResourceType.LoadPriority.HIGHEST)
 public class OpenStateData extends GameResource {
+    @Getter(onMethod = @__(@Override))
     private int id;
     @Getter private boolean defaultState;
     @Getter private boolean allowClientOpen;
@@ -32,11 +31,6 @@ public class OpenStateData extends GameResource {
         OPEN_STATE_COND_PARENT_QUEST;
     }
 
-    @Override
-    public int getId() {
-        return this.id;
-    }
-
     @Override
     public void onLoad() {
         // Add this open state to the global list.
diff --git a/src/main/java/emu/grasscutter/data/excels/PersonalLineData.java b/src/main/java/emu/grasscutter/data/excels/PersonalLineData.java
index f7b95689..e8f1f8b6 100644
--- a/src/main/java/emu/grasscutter/data/excels/PersonalLineData.java
+++ b/src/main/java/emu/grasscutter/data/excels/PersonalLineData.java
@@ -11,18 +11,13 @@ import java.util.List;
 
 @ResourceType(name = "PersonalLineExcelConfigData.json")
 @Getter
-@Setter
+@Setter  // TODO: remove setters next API break
 @FieldDefaults(level = AccessLevel.PRIVATE)
 public class PersonalLineData extends GameResource {
+    @Getter(onMethod = @__(@Override))
     int id;
     int avatarID;
     List<Integer> preQuestId;
     int startQuestId;
     int chapterId;
-
-    @Override
-    public int getId() {
-        return this.id;
-    }
-
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/ReliquaryAffixData.java b/src/main/java/emu/grasscutter/data/excels/ReliquaryAffixData.java
index cd4a0449..b0ed383b 100644
--- a/src/main/java/emu/grasscutter/data/excels/ReliquaryAffixData.java
+++ b/src/main/java/emu/grasscutter/data/excels/ReliquaryAffixData.java
@@ -1,46 +1,23 @@
 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.props.FightProperty;
+import lombok.Getter;
 
 @ResourceType(name = "ReliquaryAffixExcelConfigData.json")
+@Getter
 public class ReliquaryAffixData extends GameResource {
-	private int id;
-	
-	private int depotId;
-	private int groupId;
-	private FightProperty propType;
-	private float propValue;
-	private int weight;
-	private int upgradeWeight;
-	
-	@Override
-	public int getId() {
-		return id;
-	}
-	
-	public int getDepotId() {
-		return depotId;
-	}
-	
-	public int getGroupId() {
-		return groupId;
-	}
-	
-	public float getPropValue() {
-		return propValue;
-	}
-	
-	public int getWeight() {
-		return weight;
-	}
-	
-	public int getUpgradeWeight() {
-		return upgradeWeight;
-	}
-	
-	public FightProperty getFightProp() {
-		return propType;
-	}
+    @Getter(onMethod = @__(@Override))
+    private int id;
+
+    private int depotId;
+    private int groupId;
+    @SerializedName("propType")
+    private FightProperty fightProp;
+    private float propValue;
+    private int weight;
+    private int upgradeWeight;
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/ReliquaryLevelData.java b/src/main/java/emu/grasscutter/data/excels/ReliquaryLevelData.java
index 2a3dc8e2..d2b5dfe4 100644
--- a/src/main/java/emu/grasscutter/data/excels/ReliquaryLevelData.java
+++ b/src/main/java/emu/grasscutter/data/excels/ReliquaryLevelData.java
@@ -7,36 +7,19 @@ import emu.grasscutter.data.ResourceType;
 import emu.grasscutter.game.props.FightProperty;
 import it.unimi.dsi.fastutil.ints.Int2FloatMap;
 import it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap;
-import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
-import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
+import lombok.Getter;
 
 @ResourceType(name = "ReliquaryLevelExcelConfigData.json")
 public class ReliquaryLevelData extends GameResource {
+    @Getter(onMethod = @__(@Override))
     private int id;
     private Int2FloatMap propMap;
 
-    private int rank;
-    private int level;
-    private int exp;
+    @Getter private int rank;
+    @Getter private int level;
+    @Getter private int exp;
     private List<RelicLevelProperty> addProps;
 
-    @Override
-    public int getId() {
-        return this.id;
-    }
-
-    public int getRank() {
-        return rank;
-    }
-
-    public int getLevel() {
-        return level;
-    }
-
-    public int getExp() {
-        return exp;
-    }
-
     public float getPropValue(FightProperty prop) {
         return getPropValue(prop.getId());
     }
@@ -54,16 +37,9 @@ public class ReliquaryLevelData extends GameResource {
         }
     }
 
+    @Getter
     public class RelicLevelProperty {
         private String propType;
         private float value;
-
-        public String getPropType() {
-            return propType;
-        }
-
-        public float getValue() {
-            return value;
-        }
     }
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/ReliquaryMainPropData.java b/src/main/java/emu/grasscutter/data/excels/ReliquaryMainPropData.java
index 5039849f..da9af1bb 100644
--- a/src/main/java/emu/grasscutter/data/excels/ReliquaryMainPropData.java
+++ b/src/main/java/emu/grasscutter/data/excels/ReliquaryMainPropData.java
@@ -1,31 +1,20 @@
 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.props.FightProperty;
+import lombok.Getter;
 
 @ResourceType(name = "ReliquaryMainPropExcelConfigData.json")
+@Getter
 public class ReliquaryMainPropData extends GameResource {
-	private int id;
-	
-	private int propDepotId;
-	private FightProperty propType;
-	private int weight;
-	
-	@Override
-	public int getId() {
-		return id;
-	}
-	
-	public int getPropDepotId() {
-		return propDepotId;
-	}
-	
-	public int getWeight() {
-		return weight;
-	}
+    @Getter(onMethod = @__(@Override))
+    private int id;
 
-	public FightProperty getFightProp() {
-		return propType;
-	}
+    private int propDepotId;
+    @SerializedName("propType")
+    private FightProperty fightProp;
+    private int weight;
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/RewardPreviewData.java b/src/main/java/emu/grasscutter/data/excels/RewardPreviewData.java
index 4a783f2b..866bf037 100644
--- a/src/main/java/emu/grasscutter/data/excels/RewardPreviewData.java
+++ b/src/main/java/emu/grasscutter/data/excels/RewardPreviewData.java
@@ -1,29 +1,21 @@
 package emu.grasscutter.data.excels;
 
 import java.util.Arrays;
-import java.util.List;
 
-import emu.grasscutter.Grasscutter;
-import emu.grasscutter.data.GameData;
 import emu.grasscutter.data.GameResource;
 import emu.grasscutter.data.ResourceType;
 
-import emu.grasscutter.game.props.SceneType;
-
+import lombok.Getter;
 import emu.grasscutter.data.ResourceType.LoadPriority;
 import emu.grasscutter.data.common.ItemParamData;
 import emu.grasscutter.data.common.ItemParamStringData;
 
 @ResourceType(name = "RewardPreviewExcelConfigData.json", loadPriority = LoadPriority.HIGH)
 public class RewardPreviewData extends GameResource {
+    @Getter(onMethod = @__(@Override))
 	private int id;
 	private ItemParamStringData[] previewItems;
 	private ItemParamData[] previewItemsArray;
-	
-	@Override
-	public int getId() {
-		return this.id;
-	}
 
 	public ItemParamData[] getPreviewItems() {
 		return previewItemsArray;
diff --git a/src/main/java/emu/grasscutter/data/excels/SceneData.java b/src/main/java/emu/grasscutter/data/excels/SceneData.java
index a0b9583c..d2797a8a 100644
--- a/src/main/java/emu/grasscutter/data/excels/SceneData.java
+++ b/src/main/java/emu/grasscutter/data/excels/SceneData.java
@@ -1,32 +1,19 @@
 package emu.grasscutter.data.excels;
 
-import emu.grasscutter.data.GameData;
+import com.google.gson.annotations.SerializedName;
+
 import emu.grasscutter.data.GameResource;
 import emu.grasscutter.data.ResourceType;
 
 import emu.grasscutter.game.props.SceneType;
+import lombok.Getter;
 
 @ResourceType(name = "SceneExcelConfigData.json")
+@Getter
 public class SceneData extends GameResource {
-	private int id;
-	private SceneType type;
-	private String scriptData;
-
-	@Override
-	public int getId() {
-		return this.id;
-	}
-
-	public SceneType getSceneType() {
-		return type;
-	}
-
-	public String getScriptData() {
-		return scriptData;
-	}
-
-	@Override
-	public void onLoad() {
-
-	}
+    @Getter(onMethod = @__(@Override))
+    private int id;
+    @SerializedName("type")
+    private SceneType sceneType;
+    private String scriptData;
 }
diff --git a/src/main/java/emu/grasscutter/data/excels/TowerFloorData.java b/src/main/java/emu/grasscutter/data/excels/TowerFloorData.java
index 6cb3008f..e3e55238 100644
--- a/src/main/java/emu/grasscutter/data/excels/TowerFloorData.java
+++ b/src/main/java/emu/grasscutter/data/excels/TowerFloorData.java
@@ -2,10 +2,11 @@ package emu.grasscutter.data.excels;
 
 import emu.grasscutter.data.GameResource;
 import emu.grasscutter.data.ResourceType;
+import lombok.Getter;
 
 @ResourceType(name = "TowerFloorExcelConfigData.json")
+@Getter
 public class TowerFloorData extends GameResource {
-
     private int floorId;
     private int floorIndex;
     private int levelGroupId;
@@ -17,33 +18,4 @@ public class TowerFloorData extends GameResource {
     public int getId() {
         return this.floorId;
     }
-
-    @Override
-    public void onLoad() {
-        super.onLoad();
-    }
-
-    public int getFloorId() {
-        return floorId;
-    }
-
-    public int getFloorIndex() {
-        return floorIndex;
-    }
-
-    public int getLevelGroupId() {
-        return levelGroupId;
-    }
-
-    public int getOverrideMonsterLevel() {
-        return overrideMonsterLevel;
-    }
-
-    public int getTeamNum() {
-        return teamNum;
-    }
-
-    public int getFloorLevelConfigId() {
-        return floorLevelConfigId;
-    }
 }
-- 
GitLab