diff options
| author | Foghrye4 <foghrye4@gmail.com> | 2017-08-10 18:52:45 +0300 |
|---|---|---|
| committer | Foghrye4 <foghrye4@gmail.com> | 2017-08-10 18:52:45 +0300 |
| commit | 0427ab89f1753a44b30cbc35ce021cbbdc845109 (patch) | |
| tree | abe418ff5ec174e712fe8dedd434548a945b15a3 /src/main/java/ihl/model/FlexibleCableItemRender.java | |
| parent | 877312184c472d9845e5ef1008bc538f4634059f (diff) | |
fix missing source folder
Diffstat (limited to 'src/main/java/ihl/model/FlexibleCableItemRender.java')
| -rw-r--r-- | src/main/java/ihl/model/FlexibleCableItemRender.java | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/src/main/java/ihl/model/FlexibleCableItemRender.java b/src/main/java/ihl/model/FlexibleCableItemRender.java new file mode 100644 index 0000000..e11a253 --- /dev/null +++ b/src/main/java/ihl/model/FlexibleCableItemRender.java @@ -0,0 +1,178 @@ +package ihl.model;
+
+import org.lwjgl.opengl.GL11;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import ihl.items_blocks.FlexibleCableItem;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.entity.EntityClientPlayerMP;
+import net.minecraft.client.renderer.GLAllocation;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.client.renderer.entity.RenderManager;
+import net.minecraft.client.renderer.entity.RenderPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.client.IItemRenderer;
+import net.minecraftforge.common.util.ForgeDirection;
+
+@SideOnly(value=Side.CLIENT)
+public class FlexibleCableItemRender implements IItemRenderer {
+ private ModelTube model;
+ private ModelTube modelThin;
+ private ModelTube modelLong;
+ private ModelTube modelThinLong;
+ private final int segmentsAmount = 19;
+ private final float spiralStepAngle = 1f;
+ private final float scale = 1 / 32f;
+ private final int[] displayListCache = new int[4];
+
+ public FlexibleCableItemRender() {
+ float vOffset = 16f;
+ int longFragmensSize = 24;
+ model = new ModelTube(null, 0, 0, -2F, -3F, -2F + vOffset, 4, 6, 4, 0f, 0.5f, 0.99f, ForgeDirection.UP);
+ modelLong = new ModelTube(null, 0, 0, -2F, -3F, -2F + vOffset, 4, longFragmensSize, 4, 0f, 0f, 0.99f,
+ ForgeDirection.UP);
+ modelThin = new ModelTube(null, 0, 0, -1F, -3F, -1F + vOffset, 2, 6, 2, 0f, 0.5f, 0.99f, ForgeDirection.UP);
+ modelThinLong = new ModelTube(null, 0, 0, -1F, -3F, -1F + vOffset, 2, longFragmensSize, 2, 0f, 0.5f, 0.99f,
+ ForgeDirection.UP);
+ }
+
+ @Override
+ public boolean handleRenderType(ItemStack item, ItemRenderType type) {
+ switch (type) {
+ case ENTITY:
+ return true;
+ case EQUIPPED:
+ return true;
+ case EQUIPPED_FIRST_PERSON:
+ return true;
+ case INVENTORY:
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ @Override
+ public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
+ return true;
+ }
+
+ @Override
+ public void renderItem(ItemRenderType type, ItemStack stack, Object... data) {
+ GL11.glPushMatrix();
+ GL11.glEnable(GL11.GL_BLEND);
+ GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
+ GL11.glScalef(1F, -1F, -1F);
+ switch (type) {
+ case ENTITY:
+ GL11.glTranslatef(0, -1.0F, 0);
+ this.rendercoil(stack);
+ break;
+ case EQUIPPED:
+ GL11.glTranslatef(0.25F, -2F, -0.75F);
+ this.rendercoil(stack);
+ break;
+ case EQUIPPED_FIRST_PERSON:
+ RenderPlayer var25;
+ EntityClientPlayerMP var3 = Minecraft.getMinecraft().thePlayer;
+ Minecraft.getMinecraft().getTextureManager().bindTexture(var3.getLocationSkin());
+ var25 = (RenderPlayer) RenderManager.instance.getEntityRenderObject(Minecraft.getMinecraft().thePlayer);
+ GL11.glRotatef(135F, 1.0F, 0.0F, 0.0F);
+ GL11.glRotatef(35F, 0.0F, 1.0F, 0.0F);
+ var25.renderFirstPersonArm(Minecraft.getMinecraft().thePlayer);
+ GL11.glRotatef(-35F, 0.0F, 1.0F, 0.0F);
+ GL11.glRotatef(-135F, 1.0F, 0.0F, 0.0F);
+ GL11.glTranslatef(0.0F, 0.2F, 0F);
+ GL11.glTranslatef(-0.25F, -1.0F, 0F);
+ this.rendercoil(stack);
+ break;
+ case INVENTORY:
+ GL11.glTranslatef(0.0F, -0.2F, 0F);
+ this.rendercoil(stack);
+ break;
+ default:
+ }
+ GL11.glPopMatrix();
+ }
+
+ private void rendercoil(ItemStack stack) {
+ int type = this.getCableType(stack);
+ if (this.displayListCache[type] != 0) {
+ GL11.glCallList(displayListCache[type]);
+ } else {
+
+ this.displayListCache[type] = GLAllocation.generateDisplayLists(1);
+ GL11.glNewList(displayListCache[type], 4864 /* GL_COMPILE */);
+
+ GL11.glDisable(GL11.GL_TEXTURE_2D);
+ int saMax = this.segmentsAmount * 2 + this.segmentsAmount / 2;
+ for (int i = 0; i <= saMax; i++) {
+ GL11.glRotatef(-spiralStepAngle, 0f, 0f, 1f);
+ GL11.glRotatef(360f / this.segmentsAmount, 1f, 0f, 0f);
+ GL11.glTranslatef(0.004f, 0f, 0f);
+ GL11.glRotatef(spiralStepAngle, 0f, 0f, 1f);
+ GL11.glColor3f(1f, 1f, 1f);
+ if (i == 0) {
+ if (isNoInsulation(stack)) {
+ if (FlexibleCableItem.instance.yellowColoredWires
+ .contains(FlexibleCableItem.instance.getMaterial(stack))) {
+ GL11.glColor3f(1f, 0.75f, 0.1f);
+ } else {
+ GL11.glColor3f(0.65f, 0.65f, 0.67f);
+ }
+ this.modelThinLong.render(Tessellator.instance, scale);
+
+ } else {
+ this.modelLong.render(Tessellator.instance, scale);
+ }
+ } else if (i == saMax) {
+ GL11.glTranslatef(0.0F, -0.55F, 0F);
+ if (isNoInsulation(stack)) {
+ if (FlexibleCableItem.instance.yellowColoredWires
+ .contains(FlexibleCableItem.instance.getMaterial(stack))) {
+ GL11.glColor3f(1f, 0.75f, 0.1f);
+ } else {
+ GL11.glColor3f(0.65f, 0.65f, 0.67f);
+ }
+ this.modelThinLong.render(Tessellator.instance, scale);
+
+ } else {
+ this.modelLong.render(Tessellator.instance, scale);
+ }
+ GL11.glTranslatef(0.0F, 0.55F, 0F);
+ } else {
+ if (isNoInsulation(stack)) {
+ if (FlexibleCableItem.instance.yellowColoredWires
+ .contains(FlexibleCableItem.instance.getMaterial(stack))) {
+ GL11.glColor3f(1f, 0.75f, 0.1f);
+ } else {
+ GL11.glColor3f(0.65f, 0.65f, 0.67f);
+ }
+ this.modelThin.render(Tessellator.instance, scale);
+
+ } else {
+ this.model.render(Tessellator.instance, scale);
+ }
+ }
+ }
+ GL11.glEnable(GL11.GL_TEXTURE_2D);
+ GL11.glEndList();
+ }
+ }
+
+ private int getCableType(ItemStack stack) {
+ if (isNoInsulation(stack)) {
+ if (FlexibleCableItem.instance.yellowColoredWires.contains(FlexibleCableItem.instance.getMaterial(stack))) {
+ return 1;
+ } else {
+ return 2;
+ }
+ }
+ return 0;
+ }
+
+ private boolean isNoInsulation(ItemStack stack) {
+ return stack.stackTagCompound != null && FlexibleCableItem.instance.getInsulationMaterial(stack).equals("null");
+ }
+}
\ No newline at end of file |
