package openblocks.client.model; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraftforge.common.util.ForgeDirection; import openblocks.common.tileentity.TileEntityVacuumHopper; import openmods.utils.bitmap.IReadableBitMap; public class ModelVacuumHopper extends ModelBase { ModelRenderer middle; ModelRenderer outputItems; ModelRenderer outputXP; ModelRenderer output2; ModelRenderer outputBoth; public ModelVacuumHopper() { textureWidth = 64; textureHeight = 32; middle = new ModelRenderer(this, 0, 0); middle.addBox(-4F, -4F, -4F, 8, 8, 8); middle.setRotationPoint(0F, 8F, 0F); middle.setTextureSize(64, 32); middle.mirror = true; setRotation(middle, 0F, 0F, 0F); output2 = new ModelRenderer(this, 0, 22); output2.addBox(-2.5F, -5F, -2.5F, 5, 1, 5); output2.setRotationPoint(0F, 8F, 0F); output2.setTextureSize(64, 32); output2.mirror = true; outputBoth = new ModelRenderer(this, 0, 16); outputBoth.addBox(-1.5F, -8F, -1.5F, 3, 3, 3); outputBoth.setRotationPoint(0F, 8F, 0F); outputBoth.setTextureSize(64, 32); outputBoth.mirror = true; setRotation(outputBoth, 0F, 0F, 0F); outputXP = new ModelRenderer(this, 12, 16); outputXP.addBox(-1.5F, -8F, -1.5F, 3, 3, 3); outputXP.setRotationPoint(0F, 8F, 0F); outputXP.setTextureSize(64, 32); outputXP.mirror = true; setRotation(outputXP, 0F, 0F, 0F); outputItems = new ModelRenderer(this, 24, 16); outputItems.addBox(-1.5F, -8F, -1.5F, 3, 3, 3); outputItems.setRotationPoint(0F, 8F, 0F); outputItems.setTextureSize(64, 32); outputItems.mirror = true; setRotation(outputItems, 0F, 0F, 0F); } private void renderValve(IReadableBitMap<ForgeDirection> itemOutputs, IReadableBitMap<ForgeDirection> xpOutputs, ForgeDirection direction, float rotX, float rotZ, float f5) { boolean items = itemOutputs.get(direction); boolean xp = xpOutputs.get(direction); if (items || xp) { ModelRenderer valve = items && xp? outputBoth : items? outputItems : outputXP; output2.rotateAngleX = valve.rotateAngleX = rotX; output2.rotateAngleZ = valve.rotateAngleZ = rotZ; output2.render(f5); valve.render(f5); } } /** * @param f */ public void render(TileEntityVacuumHopper hopper, float f) { float f5 = 0.0625F; middle.render(f5); final IReadableBitMap<ForgeDirection> itemOutputs = hopper.getReadableItemOutputs(); final IReadableBitMap<ForgeDirection> xpOutputs = hopper.getReadableXpOutputs(); renderValve(itemOutputs, xpOutputs, ForgeDirection.UP, 0, 0, f5); renderValve(itemOutputs, xpOutputs, ForgeDirection.DOWN, (float)Math.toRadians(180), 0, f5); renderValve(itemOutputs, xpOutputs, ForgeDirection.EAST, 0, (float)Math.toRadians(90), f5); renderValve(itemOutputs, xpOutputs, ForgeDirection.WEST, 0, (float)Math.toRadians(-90), f5); renderValve(itemOutputs, xpOutputs, ForgeDirection.NORTH, (float)Math.toRadians(-90), 0, f5); renderValve(itemOutputs, xpOutputs, ForgeDirection.SOUTH, (float)Math.toRadians(90), 0, f5); } private static void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } }