diff --git a/src/main/java/emu/lunarcore/commands/PlayerCommands.java b/src/main/java/emu/lunarcore/commands/PlayerCommands.java index 97c54be..cd23055 100644 --- a/src/main/java/emu/lunarcore/commands/PlayerCommands.java +++ b/src/main/java/emu/lunarcore/commands/PlayerCommands.java @@ -183,6 +183,21 @@ public class PlayerCommands { } } } + + @Command(desc = "/clearrelics") + public static class ClearRelics extends PlayerCommand { + @Override + public void execute(Player player, String raw) { + List toRemove = new LinkedList<>(); + for (GameItem item : player.getInventory().getItems().values()) { + if (item.getItemMainType() == ItemMainType.Relic && item.getLevel() <= 1 && item.getExp() == 0 && !item.isLocked() && !item.isEquipped()) { + toRemove.add(item); + } + } + + player.getInventory().removeItems(toRemove); + } + } /* Temporarily disabled as spawned monsters need @Command(desc = "/spawn [monster id] [count] - Creates {count} amount of {item id}") diff --git a/src/main/java/emu/lunarcore/game/inventory/Inventory.java b/src/main/java/emu/lunarcore/game/inventory/Inventory.java index b04eda4..da55302 100644 --- a/src/main/java/emu/lunarcore/game/inventory/Inventory.java +++ b/src/main/java/emu/lunarcore/game/inventory/Inventory.java @@ -216,7 +216,7 @@ public class Inventory extends BasePlayerManager { } } - public synchronized void removeItems(Collection items) { + public synchronized void removeItemsByParams(Collection items) { for (ItemParam param : items) { GameItem item = this.getItemByParam(param); @@ -225,6 +225,12 @@ public class Inventory extends BasePlayerManager { } } } + + public synchronized void removeItems(Collection items) { + for (GameItem item : items) { + this.removeItem(item, item.getCount()); + } + } public synchronized boolean removePileItem(int uid, int count) { GameItem item = this.getMaterialByItemId(uid); diff --git a/src/main/java/emu/lunarcore/game/service/InventoryService.java b/src/main/java/emu/lunarcore/game/service/InventoryService.java index 4643c6e..06d9500 100644 --- a/src/main/java/emu/lunarcore/game/service/InventoryService.java +++ b/src/main/java/emu/lunarcore/game/service/InventoryService.java @@ -55,7 +55,7 @@ public class InventoryService extends BaseGameService { } // Pay items - player.getInventory().removeItems(items); + player.getInventory().removeItemsByParams(items); player.addSCoin(-cost); // Level up @@ -118,7 +118,7 @@ public class InventoryService extends BaseGameService { } // Pay items - player.getInventory().removeItems(promotion.getPromotionCostList()); + player.getInventory().removeItemsByParams(promotion.getPromotionCostList()); player.addSCoin(-promotion.getPromotionCostCoin()); // Promote @@ -161,7 +161,7 @@ public class InventoryService extends BaseGameService { } // Pay items - player.getInventory().removeItems(skillTree.getMaterialList()); + player.getInventory().removeItemsByParams(skillTree.getMaterialList()); player.addSCoin(-skillTree.getMaterialCostCoin()); // Add skill @@ -198,7 +198,7 @@ public class InventoryService extends BaseGameService { } // Pay items - player.getInventory().removeItems(rankData.getUnlockCost()); + player.getInventory().removeItemsByParams(rankData.getUnlockCost()); // Add rank avatar.setRank(avatar.getRank() + 1); @@ -254,7 +254,7 @@ public class InventoryService extends BaseGameService { } // Pay items - player.getInventory().removeItems(items); + player.getInventory().removeItemsByParams(items); player.addSCoin(-cost); // Level up @@ -325,7 +325,7 @@ public class InventoryService extends BaseGameService { } // Pay items - player.getInventory().removeItems(promotion.getPromotionCostList()); + player.getInventory().removeItemsByParams(promotion.getPromotionCostList()); player.addSCoin(-promotion.getPromotionCostCoin()); // Promote @@ -358,7 +358,7 @@ public class InventoryService extends BaseGameService { } // Pay items - player.getInventory().removeItems(items); + player.getInventory().removeItemsByParams(items); // Add rank equip.setRank(Math.min(equip.getRank() + items.size(), equip.getExcel().getEquipmentExcel().getMaxRank())); @@ -409,7 +409,7 @@ public class InventoryService extends BaseGameService { } // Pay items - player.getInventory().removeItems(items); + player.getInventory().removeItemsByParams(items); player.addSCoin(-cost); // Level up @@ -493,7 +493,7 @@ public class InventoryService extends BaseGameService { } // Delete items - player.getInventory().removeItems(items); + player.getInventory().removeItemsByParams(items); // Add return items for (var returnItem : returnItems.int2IntEntrySet()) {