assemblyline/src/main/java/assemblyline/common/machine/imprinter/ItemImprinter.java

97 lines
3.4 KiB
Java
Raw Normal View History

2022-10-26 19:42:44 +02:00
package assemblyline.common.machine.imprinter;
2023-02-10 17:51:10 +01:00
import java.util.ArrayList;
import java.util.List;
2022-10-26 19:42:44 +02:00
import assemblyline.common.TabAssemblyLine;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.IProjectile;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.util.ChatComponentText;
2023-02-10 17:51:10 +01:00
public class ItemImprinter extends Item {
2022-10-26 19:42:44 +02:00
public ItemImprinter() {
super();
this.setUnlocalizedName("imprint");
this.setCreativeTab(TabAssemblyLine.INSTANCE);
this.setHasSubtypes(true);
}
@Override
2023-02-10 17:51:10 +01:00
@SideOnly(value = Side.CLIENT)
2022-10-26 19:42:44 +02:00
public void registerIcons(IIconRegister par1IconRegister) {
this.itemIcon = par1IconRegister.registerIcon("assemblyline:imprint");
}
@Override
public int getItemStackLimit() {
return 1;
}
@Override
2023-02-10 17:51:10 +01:00
public boolean
onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) {
if (entity != null && !(entity instanceof IProjectile)
&& !(entity instanceof EntityPlayer)) {
String stringName = EntityList.getEntityString((Entity) entity);
2022-10-26 19:42:44 +02:00
player.addChatMessage(new ChatComponentText("Target: " + stringName));
return true;
}
return false;
}
@Override
2023-02-10 17:51:10 +01:00
public void addInformation(
ItemStack itemStack, EntityPlayer par2EntityPlayer, List list, boolean par4
) {
2022-10-26 19:42:44 +02:00
List<ItemStack> filterItems = ItemImprinter.getFilters(itemStack);
if (filterItems.size() > 0) {
for (ItemStack filterItem : filterItems) {
list.add(filterItem.getDisplayName());
}
} else {
list.add("No filters");
}
}
public static void setFilters(ItemStack itemStack, ArrayList filterStacks) {
if (itemStack.getTagCompound() == null) {
itemStack.setTagCompound(new NBTTagCompound());
}
NBTTagList nbt = new NBTTagList();
for (int i = 0; i < filterStacks.size(); ++i) {
2023-02-10 17:51:10 +01:00
if (filterStacks.get(i) == null)
continue;
2022-10-26 19:42:44 +02:00
NBTTagCompound newCompound = new NBTTagCompound();
2023-02-10 17:51:10 +01:00
newCompound.setByte("Slot", (byte) i);
((ItemStack) filterStacks.get(i)).writeToNBT(newCompound);
nbt.appendTag((NBTBase) newCompound);
2022-10-26 19:42:44 +02:00
}
2023-02-10 17:51:10 +01:00
itemStack.getTagCompound().setTag("Items", (NBTBase) nbt);
2022-10-26 19:42:44 +02:00
}
public static ArrayList getFilters(ItemStack itemStack) {
ArrayList<ItemStack> filterStacks = new ArrayList<ItemStack>();
if (itemStack.getTagCompound() == null) {
itemStack.setTagCompound(new NBTTagCompound());
}
NBTTagCompound nbt = itemStack.getTagCompound();
NBTTagList tagList = nbt.getTagList("Items", 10);
for (int i = 0; i < tagList.tagCount(); ++i) {
2023-02-10 17:51:10 +01:00
NBTTagCompound var4 = (NBTTagCompound) tagList.getCompoundTagAt(i);
2022-10-26 19:42:44 +02:00
byte var5 = var4.getByte("Slot");
2023-02-10 17:51:10 +01:00
filterStacks.add(ItemStack.loadItemStackFromNBT((NBTTagCompound) var4));
2022-10-26 19:42:44 +02:00
}
return filterStacks;
}
}