From 281d61d0abbd01cb47f7fb2a793192f8395c453d Mon Sep 17 00:00:00 2001 From: Melledy <121644117+Melledy@users.noreply.github.com> Date: Wed, 12 Nov 2025 03:33:00 -0800 Subject: [PATCH] Refactor various inventory functions --- .../data/resources/CharGemInstanceDef.java | 12 +++---- .../data/resources/DailyInstanceDef.java | 12 +++---- .../DailyInstanceRewardGroupDef.java | 13 ++++---- .../data/resources/RegionBossLevelDef.java | 12 +++---- .../data/resources/SkillInstanceDef.java | 12 +++---- .../data/resources/WeekBossLevelDef.java | 12 +++---- .../emu/nebula/game/agent/AgentManager.java | 2 +- .../emu/nebula/game/character/Character.java | 6 ++-- .../emu/nebula/game/character/GameDisc.java | 6 ++-- .../nebula/game/instance/InstanceData.java | 33 ++++--------------- .../nebula/game/instance/InstanceManager.java | 2 +- .../game/instance/InstanceSettleData.java | 4 +-- .../emu/nebula/game/inventory/Inventory.java | 20 +++++++---- .../nebula/game/inventory/ItemRewardList.java | 2 +- 14 files changed, 61 insertions(+), 87 deletions(-) diff --git a/src/main/java/emu/nebula/data/resources/CharGemInstanceDef.java b/src/main/java/emu/nebula/data/resources/CharGemInstanceDef.java index 5e5e2e1..a42d193 100644 --- a/src/main/java/emu/nebula/data/resources/CharGemInstanceDef.java +++ b/src/main/java/emu/nebula/data/resources/CharGemInstanceDef.java @@ -1,11 +1,9 @@ package emu.nebula.data.resources; -import java.util.ArrayList; -import java.util.List; - import emu.nebula.data.BaseDef; import emu.nebula.data.ResourceType; import emu.nebula.game.instance.InstanceData; +import emu.nebula.game.inventory.ItemRewardList; import emu.nebula.game.inventory.ItemRewardParam; import emu.nebula.util.JsonUtils; @@ -21,8 +19,8 @@ public class CharGemInstanceDef extends BaseDef implements InstanceData { private int EnergyConsume; private String BaseAwardPreview; - private transient List firstRewards; - private transient List rewards; + private transient ItemRewardList firstRewards; + private transient ItemRewardList rewards; @Override public int getId() { @@ -32,8 +30,8 @@ public class CharGemInstanceDef extends BaseDef implements InstanceData { @Override public void onLoad() { // Init reward lists - this.firstRewards = new ArrayList<>(); - this.rewards = new ArrayList<>(); + this.firstRewards = new ItemRewardList(); + this.rewards = new ItemRewardList(); // Parse rewards var awards = JsonUtils.decodeList(this.BaseAwardPreview, int[].class); diff --git a/src/main/java/emu/nebula/data/resources/DailyInstanceDef.java b/src/main/java/emu/nebula/data/resources/DailyInstanceDef.java index 0c317db..ec8f4c3 100644 --- a/src/main/java/emu/nebula/data/resources/DailyInstanceDef.java +++ b/src/main/java/emu/nebula/data/resources/DailyInstanceDef.java @@ -1,12 +1,10 @@ package emu.nebula.data.resources; -import java.util.List; - import emu.nebula.data.BaseDef; import emu.nebula.data.GameData; import emu.nebula.data.ResourceType; import emu.nebula.game.instance.InstanceData; -import emu.nebula.game.inventory.ItemRewardParam; +import emu.nebula.game.inventory.ItemRewardList; import lombok.Getter; @Getter @@ -36,18 +34,18 @@ public class DailyInstanceDef extends BaseDef implements InstanceData { @Override @Deprecated - public List getFirstRewards() { + public ItemRewardList getFirstRewards() { return null; } @Override @Deprecated - public List getRewards() { + public ItemRewardList getRewards() { return null; } @Override - public List getFirstRewards(int rewardType) { + public ItemRewardList getFirstRewards(int rewardType) { var data = this.getRewardGroup(rewardType); if (data != null) { @@ -58,7 +56,7 @@ public class DailyInstanceDef extends BaseDef implements InstanceData { } @Override - public List getRewards(int rewardType) { + public ItemRewardList getRewards(int rewardType) { var data = this.getRewardGroup(rewardType); if (data != null) { diff --git a/src/main/java/emu/nebula/data/resources/DailyInstanceRewardGroupDef.java b/src/main/java/emu/nebula/data/resources/DailyInstanceRewardGroupDef.java index 0192dca..a44069e 100644 --- a/src/main/java/emu/nebula/data/resources/DailyInstanceRewardGroupDef.java +++ b/src/main/java/emu/nebula/data/resources/DailyInstanceRewardGroupDef.java @@ -1,12 +1,11 @@ package emu.nebula.data.resources; -import java.util.ArrayList; -import java.util.List; - import emu.nebula.data.BaseDef; import emu.nebula.data.ResourceType; +import emu.nebula.game.inventory.ItemRewardList; import emu.nebula.game.inventory.ItemRewardParam; import emu.nebula.util.JsonUtils; + import lombok.Getter; @Getter @@ -16,8 +15,8 @@ public class DailyInstanceRewardGroupDef extends BaseDef { private int DailyRewardType; private String BaseAwardPreview; - private transient List firstRewards; - private transient List rewards; + private transient ItemRewardList firstRewards; + private transient ItemRewardList rewards; @Override public int getId() { @@ -27,8 +26,8 @@ public class DailyInstanceRewardGroupDef extends BaseDef { @Override public void onLoad() { // Init reward lists - this.firstRewards = new ArrayList<>(); - this.rewards = new ArrayList<>(); + this.firstRewards = new ItemRewardList(); + this.rewards = new ItemRewardList(); // Parse rewards var awards = JsonUtils.decodeList(this.BaseAwardPreview, int[].class); diff --git a/src/main/java/emu/nebula/data/resources/RegionBossLevelDef.java b/src/main/java/emu/nebula/data/resources/RegionBossLevelDef.java index dc6997a..6f6bc4e 100644 --- a/src/main/java/emu/nebula/data/resources/RegionBossLevelDef.java +++ b/src/main/java/emu/nebula/data/resources/RegionBossLevelDef.java @@ -1,11 +1,9 @@ package emu.nebula.data.resources; -import java.util.ArrayList; -import java.util.List; - import emu.nebula.data.BaseDef; import emu.nebula.data.ResourceType; import emu.nebula.game.instance.InstanceData; +import emu.nebula.game.inventory.ItemRewardList; import emu.nebula.game.inventory.ItemRewardParam; import emu.nebula.util.JsonUtils; @@ -21,8 +19,8 @@ public class RegionBossLevelDef extends BaseDef implements InstanceData { private int EnergyConsume; private String BaseAwardPreview; - private transient List firstRewards; - private transient List rewards; + private transient ItemRewardList firstRewards; + private transient ItemRewardList rewards; @Override public int getId() { @@ -32,8 +30,8 @@ public class RegionBossLevelDef extends BaseDef implements InstanceData { @Override public void onLoad() { // Init reward lists - this.firstRewards = new ArrayList<>(); - this.rewards = new ArrayList<>(); + this.firstRewards = new ItemRewardList(); + this.rewards = new ItemRewardList(); // Parse rewards var awards = JsonUtils.decodeList(this.BaseAwardPreview, int[].class); diff --git a/src/main/java/emu/nebula/data/resources/SkillInstanceDef.java b/src/main/java/emu/nebula/data/resources/SkillInstanceDef.java index e40af90..92f4e5e 100644 --- a/src/main/java/emu/nebula/data/resources/SkillInstanceDef.java +++ b/src/main/java/emu/nebula/data/resources/SkillInstanceDef.java @@ -1,11 +1,9 @@ package emu.nebula.data.resources; -import java.util.ArrayList; -import java.util.List; - import emu.nebula.data.BaseDef; import emu.nebula.data.ResourceType; import emu.nebula.game.instance.InstanceData; +import emu.nebula.game.inventory.ItemRewardList; import emu.nebula.game.inventory.ItemRewardParam; import emu.nebula.util.JsonUtils; import lombok.Getter; @@ -20,8 +18,8 @@ public class SkillInstanceDef extends BaseDef implements InstanceData { private int EnergyConsume; private String BaseAwardPreview; - private transient List firstRewards; - private transient List rewards; + private transient ItemRewardList firstRewards; + private transient ItemRewardList rewards; @Override public int getId() { @@ -31,8 +29,8 @@ public class SkillInstanceDef extends BaseDef implements InstanceData { @Override public void onLoad() { // Init reward lists - this.firstRewards = new ArrayList<>(); - this.rewards = new ArrayList<>(); + this.firstRewards = new ItemRewardList(); + this.rewards = new ItemRewardList(); // Parse rewards var awards = JsonUtils.decodeList(this.BaseAwardPreview, int[].class); diff --git a/src/main/java/emu/nebula/data/resources/WeekBossLevelDef.java b/src/main/java/emu/nebula/data/resources/WeekBossLevelDef.java index 9cc4ff8..00a2b16 100644 --- a/src/main/java/emu/nebula/data/resources/WeekBossLevelDef.java +++ b/src/main/java/emu/nebula/data/resources/WeekBossLevelDef.java @@ -1,11 +1,9 @@ package emu.nebula.data.resources; -import java.util.ArrayList; -import java.util.List; - import emu.nebula.data.BaseDef; import emu.nebula.data.ResourceType; import emu.nebula.game.instance.InstanceData; +import emu.nebula.game.inventory.ItemRewardList; import emu.nebula.game.inventory.ItemRewardParam; import emu.nebula.util.JsonUtils; @@ -19,8 +17,8 @@ public class WeekBossLevelDef extends BaseDef implements InstanceData { private int NeedWorldClass; private String BaseAwardPreview; - private transient List firstRewards; - private transient List rewards; + private transient ItemRewardList firstRewards; + private transient ItemRewardList rewards; @Override public int getId() { @@ -34,8 +32,8 @@ public class WeekBossLevelDef extends BaseDef implements InstanceData { @Override public void onLoad() { // Init reward lists - this.firstRewards = new ArrayList<>(); - this.rewards = new ArrayList<>(); + this.firstRewards = new ItemRewardList(); + this.rewards = new ItemRewardList(); // Parse rewards var awards = JsonUtils.decodeList(this.BaseAwardPreview, int[].class); diff --git a/src/main/java/emu/nebula/game/agent/AgentManager.java b/src/main/java/emu/nebula/game/agent/AgentManager.java index b8467fb..6f0c550 100644 --- a/src/main/java/emu/nebula/game/agent/AgentManager.java +++ b/src/main/java/emu/nebula/game/agent/AgentManager.java @@ -140,7 +140,7 @@ public class AgentManager extends PlayerManager implements GameDatabaseObject { } // Create rewards - var rewards = duration.getRewards().generateRewards(); + var rewards = duration.getRewards().generate(); result.setRewards(rewards); // Add to inventory diff --git a/src/main/java/emu/nebula/game/character/Character.java b/src/main/java/emu/nebula/game/character/Character.java index 4a95172..f32a48a 100644 --- a/src/main/java/emu/nebula/game/character/Character.java +++ b/src/main/java/emu/nebula/game/character/Character.java @@ -181,7 +181,7 @@ public class Character implements GameDatabaseObject { params.add(GameConstants.GOLD_ITEM_ID, (int) Math.ceil(exp * 0.15D)); // Verify that the player has the items - if (!this.getPlayer().getInventory().verifyItems(params)) { + if (!this.getPlayer().getInventory().hasItems(params)) { return null; } @@ -207,7 +207,7 @@ public class Character implements GameDatabaseObject { } // Verify that the player has the items - if (!this.getPlayer().getInventory().verifyItems(data.getMaterials())) { + if (!this.getPlayer().getInventory().hasItems(data.getMaterials())) { return null; } @@ -257,7 +257,7 @@ public class Character implements GameDatabaseObject { } // Verify that the player has the items - if (!this.getPlayer().getInventory().verifyItems(data.getMaterials())) { + if (!this.getPlayer().getInventory().hasItems(data.getMaterials())) { return null; } diff --git a/src/main/java/emu/nebula/game/character/GameDisc.java b/src/main/java/emu/nebula/game/character/GameDisc.java index e9f6648..ec6935f 100644 --- a/src/main/java/emu/nebula/game/character/GameDisc.java +++ b/src/main/java/emu/nebula/game/character/GameDisc.java @@ -161,7 +161,7 @@ public class GameDisc implements GameDatabaseObject { params.add(GameConstants.GOLD_ITEM_ID, (int) Math.ceil(exp * 0.25D)); // Verify that the player has the items - if (!this.getPlayer().getInventory().verifyItems(params)) { + if (!this.getPlayer().getInventory().hasItems(params)) { return null; } @@ -190,7 +190,7 @@ public class GameDisc implements GameDatabaseObject { } // Verify that the player has the items - if (!this.getPlayer().getInventory().verifyItems(data.getMaterials())) { + if (!this.getPlayer().getInventory().hasItems(data.getMaterials())) { return null; } @@ -218,7 +218,7 @@ public class GameDisc implements GameDatabaseObject { materials.add(this.getData().getTransformItemId(), count); // Verify that the player has the items - if (!this.getPlayer().getInventory().verifyItems(materials)) { + if (!this.getPlayer().getInventory().hasItems(materials)) { return null; } diff --git a/src/main/java/emu/nebula/game/instance/InstanceData.java b/src/main/java/emu/nebula/game/instance/InstanceData.java index 6d1bfb4..b5edc42 100644 --- a/src/main/java/emu/nebula/game/instance/InstanceData.java +++ b/src/main/java/emu/nebula/game/instance/InstanceData.java @@ -1,9 +1,6 @@ package emu.nebula.game.instance; -import java.util.List; - -import emu.nebula.game.inventory.ItemParamMap; -import emu.nebula.game.inventory.ItemRewardParam; +import emu.nebula.game.inventory.ItemRewardList; import emu.nebula.game.player.Player; public interface InstanceData { @@ -14,38 +11,20 @@ public interface InstanceData { public int getEnergyConsume(); - // Handle reward generation + // Item rewards - public List getFirstRewards(); + public ItemRewardList getFirstRewards(); - public default List getFirstRewards(int rewardType) { + public default ItemRewardList getFirstRewards(int rewardType) { return getFirstRewards(); } - public default ItemParamMap generateFirstRewards(int rewardType) { - return this.generateRewards(this.getFirstRewards()); - } + public ItemRewardList getRewards(); - public List getRewards(); - - public default List getRewards(int rewardType) { + public default ItemRewardList getRewards(int rewardType) { return getRewards(); } - public default ItemParamMap generateRewards(int rewardType) { - return this.generateRewards(this.getRewards()); - } - - public default ItemParamMap generateRewards(List params) { - var map = new ItemParamMap(); - - for (var param : params) { - map.add(param.getId(), param.getRandomCount()); - } - - return map; - } - /** * Checks if the player has enough energy to complete this instance * @return true if the player has enough energy diff --git a/src/main/java/emu/nebula/game/instance/InstanceManager.java b/src/main/java/emu/nebula/game/instance/InstanceManager.java index 7693400..8360dd9 100644 --- a/src/main/java/emu/nebula/game/instance/InstanceManager.java +++ b/src/main/java/emu/nebula/game/instance/InstanceManager.java @@ -115,7 +115,7 @@ public class InstanceManager extends PlayerManager { for (int i = 0; i < count; i++) { // Generate rewards for each settle count - var rewards = data.generateRewards(rewardType); + var rewards = data.getRewards(rewardType).generate(); // Add to reward list list.add(rewards); diff --git a/src/main/java/emu/nebula/game/instance/InstanceSettleData.java b/src/main/java/emu/nebula/game/instance/InstanceSettleData.java index d7436bf..7690be1 100644 --- a/src/main/java/emu/nebula/game/instance/InstanceSettleData.java +++ b/src/main/java/emu/nebula/game/instance/InstanceSettleData.java @@ -19,9 +19,9 @@ public class InstanceSettleData { public void generateRewards(InstanceData data, int rewardType) { if (this.isFirst) { - this.firstRewards = data.generateFirstRewards(rewardType); + this.firstRewards = data.getFirstRewards(rewardType).generate(); } - this.rewards = data.generateRewards(rewardType); + this.rewards = data.getRewards(rewardType).generate(); } } diff --git a/src/main/java/emu/nebula/game/inventory/Inventory.java b/src/main/java/emu/nebula/game/inventory/Inventory.java index b6ba503..cd4f24a 100644 --- a/src/main/java/emu/nebula/game/inventory/Inventory.java +++ b/src/main/java/emu/nebula/game/inventory/Inventory.java @@ -483,7 +483,7 @@ public class Inventory extends PlayerManager implements GameDatabaseObject { /** * Checks if the player has enough quanity of this item */ - public synchronized boolean verifyItem(int id, int count) { + public synchronized boolean hasItem(int id, int count) { // Sanity check if (count == 0) { return true; @@ -511,6 +511,12 @@ public class Inventory extends PlayerManager implements GameDatabaseObject { case Char -> { yield getPlayer().getCharacters().hasCharacter(id); } + case CharacterSkin -> { + yield this.hasSkin(id); + } + case Title -> { + yield this.getTitles().contains(id); + } default -> { // Not implemented yield false; @@ -521,11 +527,11 @@ public class Inventory extends PlayerManager implements GameDatabaseObject { return result; } - public synchronized boolean verifyItems(ItemParamMap params) { + public synchronized boolean hasItems(ItemParamMap params) { boolean hasItems = true; for (var param : params.entries()) { - hasItems = this.verifyItem(param.getIntKey(), param.getIntValue()); + hasItems = this.hasItem(param.getIntKey(), param.getIntValue()); if (!hasItems) { return hasItems; @@ -553,7 +559,7 @@ public class Inventory extends PlayerManager implements GameDatabaseObject { var materials = data.getMaterials().mulitply(num); // Verify that we have the materials - if (!this.verifyItems(materials)) { + if (!this.hasItems(materials)) { return change; } @@ -572,7 +578,7 @@ public class Inventory extends PlayerManager implements GameDatabaseObject { var change = new PlayerChangeInfo(); // Make sure we have the gems - if (!this.verifyItem(GameConstants.ENERGY_BUY_ITEM_ID, 30)) { + if (!this.hasItem(GameConstants.ENERGY_BUY_ITEM_ID, 30)) { return change; } @@ -604,7 +610,7 @@ public class Inventory extends PlayerManager implements GameDatabaseObject { // Make sure we have the currency int cost = buyCount * currencyCount; - if (!this.verifyItem(currencyId, cost)) { + if (!this.hasItem(currencyId, cost)) { return change; } @@ -631,7 +637,7 @@ public class Inventory extends PlayerManager implements GameDatabaseObject { } // Make sure we have this item - if (!this.verifyItem(id, count)) { + if (!this.hasItem(id, count)) { return change; } diff --git a/src/main/java/emu/nebula/game/inventory/ItemRewardList.java b/src/main/java/emu/nebula/game/inventory/ItemRewardList.java index be28d9f..4f964c0 100644 --- a/src/main/java/emu/nebula/game/inventory/ItemRewardList.java +++ b/src/main/java/emu/nebula/game/inventory/ItemRewardList.java @@ -9,7 +9,7 @@ public class ItemRewardList extends ArrayList { super(); } - public ItemParamMap generateRewards() { + public ItemParamMap generate() { var map = new ItemParamMap(); for (var param : this) {