/*
* spotless:off
* KubaTech - Gregtech Addon
* Copyright (C) 2022 - 2024 kuba6000
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library. If not, see .
* spotless:on
*/
package kubatech.loaders.item;
import static kubatech.kubatech.KT;
import java.util.HashMap;
import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumAction;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import kubatech.loaders.ItemLoader;
public class KubaItems extends Item {
private static final HashMap items = new HashMap<>();
private static int idCounter = 0;
public KubaItems() {
this.setMaxDamage(0);
this.setHasSubtypes(true);
this.setCreativeTab(KT);
this.setUnlocalizedName("kubaitems");
}
public ItemStack registerProxyItem(ItemProxy item) {
items.put(idCounter, item);
item.ItemInit(idCounter);
return new ItemStack(this, 1, idCounter++);
}
private ItemProxy getItem(ItemStack stack) {
return items.get(stack.getItemDamage());
}
public static ItemProxy getItemProxy(ItemStack stack) {
if (!(stack.getItem() instanceof KubaItems)) return null;
return ItemLoader.kubaitems.getItem(stack);
}
private ItemProxy getItem(int damage) {
return items.get(damage);
}
@Override
public boolean onItemUse(ItemStack p_77648_1_, EntityPlayer p_77648_2_, World p_77648_3_, int p_77648_4_,
int p_77648_5_, int p_77648_6_, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_) {
return false;
}
@Override
public EnumAction getItemUseAction(ItemStack p_77661_1_) {
return getItem(p_77661_1_).getItemUseAction(p_77661_1_);
}
@Override
public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) {
return getItem(p_77659_1_).onItemRightClick(p_77659_1_, p_77659_2_, p_77659_3_);
}
@Override
public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) {
return getItem(p_77654_1_).onEaten(p_77654_1_, p_77654_2_, p_77654_3_);
}
@Override
public int getMaxItemUseDuration(ItemStack p_77626_1_) {
return getItem(p_77626_1_).getMaxItemUseDuration();
}
@Override
public int getMetadata(int p_77647_1_) {
return p_77647_1_;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List p_77624_3_, boolean p_77624_4_) {
getItem(p_77624_1_).addInformation(p_77624_1_, p_77624_2_, (List) p_77624_3_, p_77624_4_);
}
@Override
public String getUnlocalizedName(ItemStack p_77667_1_) {
return getItem(p_77667_1_).getUnlocalizedName();
}
@Override
public String getItemStackDisplayName(ItemStack p_77653_1_) {
return getItem(p_77653_1_).getDisplayName(p_77653_1_);
}
@SideOnly(Side.CLIENT)
@Override
public void registerIcons(IIconRegister p_94581_1_) {
items.values()
.forEach(t -> t.registerIcon(p_94581_1_));
}
@SideOnly(Side.CLIENT)
@Override
public IIcon getIconFromDamage(int damage) {
return getItem(damage).getIcon();
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void getSubItems(Item p_150895_1_, CreativeTabs p_150895_2_, List p_150895_3_) {
for (int i = 0; i < items.size(); i++) p_150895_3_.add(new ItemStack(p_150895_1_, 1, i));
}
@Override
public void onUpdate(ItemStack p_77663_1_, World p_77663_2_, Entity p_77663_3_, int p_77663_4_,
boolean p_77663_5_) {
getItem(p_77663_1_).onUpdate(p_77663_1_, p_77663_2_, p_77663_3_, p_77663_4_, p_77663_5_);
}
}