package mods.eln.sixnode.TreeResinCollector; import mods.eln.misc.*; import mods.eln.misc.Obj3D.Obj3DPart; import mods.eln.node.six.SixNodeDescriptor; import mods.eln.wiki.Data; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; import org.lwjgl.opengl.GL11; import java.util.Collections; import java.util.List; import static mods.eln.i18n.I18N.tr; public class TreeResinCollectorDescriptor extends SixNodeDescriptor { private Obj3D obj; private Obj3DPart main, fill; float emptyS, emptyT; public TreeResinCollectorDescriptor(String name, Obj3D obj) { super(name, TreeResinCollectorElement.class, TreeResinCollectorRender.class); this.obj = obj; if (obj != null) { main = obj.getPart("main"); fill = obj.getPart("fill"); if (fill != null) { emptyT = fill.getFloat("emptyT"); emptyS = fill.getFloat("emptyS"); } } voltageLevelColor = VoltageLevelColor.Neutral; } void draw(float factor) { if (main != null) main.draw(); if (fill != null) { if (factor > 1f) factor = 1f; factor = (1f - factor); GL11.glTranslatef(0f, 0f, factor * emptyT); GL11.glScalef(1f - factor * (1f - emptyS), 1f - factor * (1f - emptyS), 1f); fill.draw(); } } @Override public void setParent(Item item, int damage) { super.setParent(item, damage); Data.addMachine(newItemStack()); } @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return type != ItemRenderType.INVENTORY; } @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { return true; } @Override public boolean shouldUseRenderHelperEln(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return type != ItemRenderType.INVENTORY; } @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { if (type == ItemRenderType.INVENTORY) { super.renderItem(type, item, data); } else { draw(0.0f); } } @Override public void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List list, boolean par4) { super.addInformation(itemStack, entityPlayer, list, par4); Collections.addAll(list, tr("Produces Tree Resin over\ntime when put on a tree.").split("\n")); } public static boolean isWood(Block b) { for (ItemStack s : OreDictionary.getOres("treeWood")) { if (s.getItem() == Item.getItemFromBlock(b)) return true; } for (ItemStack s : OreDictionary.getOres("logWood")) { if (s.getItem() == Item.getItemFromBlock(b)) return true; } return false; } public static boolean isLeaf(Block b) { for (ItemStack s : OreDictionary.getOres("treeLeaves")) { if (s.getItem() == Item.getItemFromBlock(b)) return true; } return false; } @Override public boolean canBePlacedOnSide(EntityPlayer player, Coordonate c, Direction side) { Block b = c.getBlock(); if (!isWood(b) || side.isY()) { Utils.addChatMessage(player, tr("This block can only be placed on the side of a tree!")); return false; } return true; } }