package think.rpgitems.item; import java.util.Iterator; import org.bukkit.Bukkit; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryView; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.LeatherArmorMeta; import think.rpgitems.data.Locale; public class LocaleInventory extends InventoryView { private Player player; private InventoryView view; private Inventory real; private Inventory fake; private String locale; public LocaleInventory(Player player, InventoryView inventoryView) { locale = Locale.getPlayerLocale(player); this.player = player; real = inventoryView.getTopInventory(); view = inventoryView; fake = Bukkit.createInventory(real.getHolder(), real.getSize(), real.getTitle()); reload(); } public InventoryView getView() { return view; } public void reload() { fake.setContents(real.getContents()); Iterator<ItemStack> it = fake.iterator(); while (it.hasNext()) { ItemStack item = it.next(); RPGItem rItem = ItemManager.toRPGItem(item); if (rItem == null) continue; item.setType(rItem.getItem()); ItemMeta meta = rItem.getLocaleMeta(locale); if (!(meta instanceof LeatherArmorMeta) && rItem.getItem().isBlock()) item.setDurability(rItem.getDataValue()); item.setItemMeta(meta); } fake.setContents(fake.getContents()); } public Inventory getReal() { return real; } @Override public Inventory getBottomInventory() { return player.getInventory(); } @Override public HumanEntity getPlayer() { return player; } @Override public Inventory getTopInventory() { return fake; } @Override public InventoryType getType() { return InventoryType.CHEST; } public void sumbitChanges() { real.setContents(fake.getContents()); } }