diff --git a/src/main/java/emu/grasscutter/game/inventory/Inventory.java b/src/main/java/emu/grasscutter/game/inventory/Inventory.java index 38fb268eb..cb5ac633c 100644 --- a/src/main/java/emu/grasscutter/game/inventory/Inventory.java +++ b/src/main/java/emu/grasscutter/game/inventory/Inventory.java @@ -140,7 +140,14 @@ public class Inventory extends BasePlayerManager implements Iterable { List changedItems = new ArrayList<>(); for (var item : items) { if (item.getItemId() == 0) continue; - GameItem result = putItem(item); + GameItem result = null; + try { + // putItem might throws exception + // ignore that exception and continue + result = putItem(item); + } catch (Exception e) { + e.printStackTrace(); + } if (result != null) { getPlayer().getBattlePassManager().triggerMission(WatcherTriggerType.TRIGGER_OBTAIN_MATERIAL_NUM, result.getItemId(), result.getCount()); changedItems.add(result); diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainCostume.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainCostume.java index a712f60bb..67212354e 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainCostume.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainCostume.java @@ -2,6 +2,8 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; +import emu.grasscutter.data.GameData; + public class ItemUseGainCostume extends ItemUseInt { @Override public ItemUseOp getItemUseOp() { @@ -14,7 +16,9 @@ public class ItemUseGainCostume extends ItemUseInt { @Override public boolean useItem(UseItemParams params) { - params.player.getInventory().addItem(this.i); // TODO: Currently this returns false for all virtual items - need to have a proper success/fail + if (GameData.getAvatarCostumeDataMap().containsKey(this.i)) { + params.player.addCostume(this.i); + } return true; } } diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainFlycloak.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainFlycloak.java index 4077b6783..15c904c57 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainFlycloak.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainFlycloak.java @@ -2,6 +2,8 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; +import emu.grasscutter.data.GameData; + public class ItemUseGainFlycloak extends ItemUseInt { @Override public ItemUseOp getItemUseOp() { @@ -14,7 +16,9 @@ public class ItemUseGainFlycloak extends ItemUseInt { @Override public boolean useItem(UseItemParams params) { - params.player.getInventory().addItem(this.i); // TODO: Currently this returns false for all virtual items - need to have a proper success/fail + if (GameData.getAvatarFlycloakDataMap().containsKey(this.i)) { + params.player.addFlycloak(this.i); + } return true; } }