Package colonies.lunatrius.client.lunatrius.schematica

Source Code of colonies.lunatrius.client.lunatrius.schematica.RendererTileEntity

package colonies.lunatrius.client.lunatrius.schematica;

import net.minecraft.block.Block;
import net.minecraft.block.BlockChest;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.model.ModelChest;
import net.minecraft.client.model.ModelLargeChest;
import net.minecraft.client.model.ModelSign;
import net.minecraft.client.renderer.RenderEngine;
import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityChest;
import net.minecraft.tileentity.TileEntityEnderChest;
import net.minecraft.tileentity.TileEntitySign;


import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;

public class RendererTileEntity {
  private final Settings settings = Settings.instance();
  private final ModelChest chestModel = new ModelChest();
  private final ModelChest largeChestModel = new ModelLargeChest();
  private final ModelSign modelSign = new ModelSign();
  private final SchematicWorld world;

  public RendererTileEntity(SchematicWorld world) {
    this.world = world;
  }

  public void renderTileEntityChestAt(TileEntityChest par1TileEntityChest) {
    int var9 = 0;

    Block var10 = getBlockType(par1TileEntityChest);

    if (var10 != null) {
      unifyAdjacentChests((BlockChest) var10, this.world, par1TileEntityChest.xCoord, par1TileEntityChest.yCoord, par1TileEntityChest.zCoord);
      var9 = getBlockMetadata(par1TileEntityChest);
    }

    if (par1TileEntityChest.adjacentChestZNeg == null && par1TileEntityChest.adjacentChestXNeg == null) {
      ModelChest var14;

      if (par1TileEntityChest.adjacentChestXPos == null && par1TileEntityChest.adjacentChestZPosition == null) {
        var14 = this.chestModel;
        this.bindTextureByName("/item/chest.png");
      } else {
        var14 = this.largeChestModel;
        this.bindTextureByName("/item/largechest.png");
      }

      GL11.glPushMatrix();
      GL11.glEnable(GL12.GL_RESCALE_NORMAL);
      GL11.glTranslatef(par1TileEntityChest.xCoord, par1TileEntityChest.yCoord + 1.0f, par1TileEntityChest.zCoord + 1.0f);
      GL11.glScalef(1.0f, -1.0f, -1.0f);
      GL11.glTranslatef(0.5f, 0.5f, 0.5f);
      short var11 = 0;

      switch (var9) {
      case 2:
        var11 = 180;
        break;
      case 3:
        var11 = 0;
        break;
      case 4:
        var11 = 90;
        break;
      case 5:
        var11 = -90;
        break;
      }

      if (var9 == 2 && par1TileEntityChest.adjacentChestXPos != null) {
        GL11.glTranslatef(1.0f, 0.0f, 0.0f);
      }

      if (var9 == 5 && par1TileEntityChest.adjacentChestZPosition != null) {
        GL11.glTranslatef(0.0f, 0.0f, -1.0f);
      }

      GL11.glRotatef(var11, 0.0f, 1.0f, 0.0f);
      GL11.glTranslatef(-0.5f, -0.5f, -0.5f);
      float var12 = par1TileEntityChest.prevLidAngle;
      float var13;

      if (par1TileEntityChest.adjacentChestZNeg != null) {
        var13 = par1TileEntityChest.adjacentChestZNeg.prevLidAngle;

        if (var13 > var12) {
          var12 = var13;
        }
      }

      if (par1TileEntityChest.adjacentChestXNeg != null) {
        var13 = par1TileEntityChest.adjacentChestXNeg.prevLidAngle;

        if (var13 > var12) {
          var12 = var13;
        }
      }

      var12 = 1.0f - var12;
      var12 = 1.0f - var12 * var12 * var12;
      var14.chestLid.rotateAngleX = -(var12 * (float) Math.PI / 2.0f);
      var14.renderAll();
      GL11.glDisable(GL12.GL_RESCALE_NORMAL);
      GL11.glPopMatrix();
    }
  }

  public void renderTileEntityEnderChestAt(TileEntityEnderChest par1TileEntityEnderChest) {
    int var9 = 0;

    var9 = getBlockMetadata(par1TileEntityEnderChest);

    this.bindTextureByName("/item/enderchest.png");
    GL11.glPushMatrix();
    GL11.glEnable(GL12.GL_RESCALE_NORMAL);
    GL11.glTranslatef(par1TileEntityEnderChest.xCoord, par1TileEntityEnderChest.yCoord + 1.0f, par1TileEntityEnderChest.zCoord + 1.0f);
    GL11.glScalef(1.0f, -1.0f, -1.0f);
    GL11.glTranslatef(0.5f, 0.5f, 0.5f);
    short var10 = 0;

    switch (var9) {
    case 2:
      var10 = 180;
      break;
    case 3:
      var10 = 0;
      break;
    case 4:
      var10 = 90;
      break;
    case 5:
      var10 = -90;
      break;
    }

    GL11.glRotatef(var10, 0.0f, 1.0f, 0.0f);
    GL11.glTranslatef(-0.5f, -0.5f, -0.5f);
    float var11 = par1TileEntityEnderChest.prevLidAngle + (par1TileEntityEnderChest.lidAngle - par1TileEntityEnderChest.prevLidAngle);
    var11 = 1.0f - var11;
    var11 = 1.0f - var11 * var11 * var11;
    this.chestModel.chestLid.rotateAngleX = -(var11 * (float) Math.PI / 2.0f);
    this.chestModel.renderAll();
    GL11.glDisable(GL12.GL_RESCALE_NORMAL);
    GL11.glPopMatrix();
    GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
  }

  public void renderTileEntitySignAt(TileEntitySign par1TileEntitySign) {
    Block var9 = getBlockType(par1TileEntitySign);
    GL11.glPushMatrix();
    float var10 = 0.6666667f;
    float var12;

    if (var9 == Block.signPost) {
      GL11.glTranslatef(par1TileEntitySign.xCoord + 0.5f, par1TileEntitySign.yCoord + 0.75f * var10, par1TileEntitySign.zCoord + 0.5f);
      float var11 = getBlockMetadata(par1TileEntitySign) * 360 / 16.0f;
      GL11.glRotatef(-var11, 0.0f, 1.0f, 0.0f);
      this.modelSign.signStick.showModel = true;
    } else {
      int var16 = getBlockMetadata(par1TileEntitySign);
      var12 = 0.0f;

      if (var16 == 2) {
        var12 = 180.0f;
      }

      if (var16 == 4) {
        var12 = 90.0f;
      }

      if (var16 == 5) {
        var12 = -90.0f;
      }

      GL11.glTranslatef(par1TileEntitySign.xCoord + 0.5f, par1TileEntitySign.yCoord + 0.75f * var10, par1TileEntitySign.zCoord + 0.5f);
      GL11.glRotatef(-var12, 0.0f, 1.0f, 0.0f);
      GL11.glTranslatef(0.0f, -0.3125f, -0.4375f);
      this.modelSign.signStick.showModel = false;
    }

    this.bindTextureByName("/item/sign.png");
    GL11.glPushMatrix();
    GL11.glScalef(var10, -var10, -var10);
    this.modelSign.renderSign();
    GL11.glPopMatrix();

    FontRenderer var17 = this.settings.minecraft.fontRenderer;
    var12 = 0.016666668f * var10;
    GL11.glTranslatef(0.0f, 0.5f * var10, 0.07f * var10);
    GL11.glScalef(var12, -var12, var12);
    GL11.glNormal3f(0.0f, 0.0f, -1.0f * var12);
    GL11.glDepthMask(false);
    int var13 = (int) (this.settings.alpha * 255) * 0x1000000;

    for (int var14 = 0; var14 < par1TileEntitySign.signText.length; ++var14) {
      String var15 = par1TileEntitySign.signText[var14];
      var17.drawString(var15, -var17.getStringWidth(var15) / 2, var14 * 10 - par1TileEntitySign.signText.length * 5, var13);
    }

    GL11.glDepthMask(true);
    GL11.glColor4f(1.0f, 1.0f, 1.0f, this.settings.alpha);
    GL11.glPopMatrix();
  }

  private Block getBlockType(TileEntity tileEntity) {
    return this.world.getBlock(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord);
  }

  private int getBlockMetadata(TileEntity tileEntity) {
    return this.world.getBlockMetadata(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord);
  }

  private void unifyAdjacentChests(BlockChest par1BlockChest, SchematicWorld par2World, int par3, int par4, int par5) {
    int var5 = par2World.getBlockId(par3, par4, par5 - 1);
    int var6 = par2World.getBlockId(par3, par4, par5 + 1);
    int var7 = par2World.getBlockId(par3 - 1, par4, par5);
    int var8 = par2World.getBlockId(par3 + 1, par4, par5);
    int var10;
    int var11;
    byte metadata;
    int var14;

    if (var5 != par1BlockChest.blockID && var6 != par1BlockChest.blockID) {
      if (var7 != par1BlockChest.blockID && var8 != par1BlockChest.blockID) {
        metadata = 3;

        if (Block.opaqueCubeLookup[var5] && !Block.opaqueCubeLookup[var6]) {
          metadata = 3;
        }

        if (Block.opaqueCubeLookup[var6] && !Block.opaqueCubeLookup[var5]) {
          metadata = 2;
        }

        if (Block.opaqueCubeLookup[var7] && !Block.opaqueCubeLookup[var8]) {
          metadata = 5;
        }

        if (Block.opaqueCubeLookup[var8] && !Block.opaqueCubeLookup[var7]) {
          metadata = 4;
        }
      } else {
        var10 = par2World.getBlockId(var7 == par1BlockChest.blockID ? par3 - 1 : par3 + 1, par4, par5 - 1);
        var11 = par2World.getBlockId(var7 == par1BlockChest.blockID ? par3 - 1 : par3 + 1, par4, par5 + 1);
        metadata = 3;
        if (var7 == par1BlockChest.blockID) {
          var14 = par2World.getBlockMetadata(par3 - 1, par4, par5);
        } else {
          var14 = par2World.getBlockMetadata(par3 + 1, par4, par5);
        }

        if (var14 == 2) {
          metadata = 2;
        }

        if ((Block.opaqueCubeLookup[var5] || Block.opaqueCubeLookup[var10]) && !Block.opaqueCubeLookup[var6] && !Block.opaqueCubeLookup[var11]) {
          metadata = 3;
        }

        if ((Block.opaqueCubeLookup[var6] || Block.opaqueCubeLookup[var11]) && !Block.opaqueCubeLookup[var5] && !Block.opaqueCubeLookup[var10]) {
          metadata = 2;
        }
      }
    } else {
      var10 = par2World.getBlockId(par3 - 1, par4, var5 == par1BlockChest.blockID ? par5 - 1 : par5 + 1);
      var11 = par2World.getBlockId(par3 + 1, par4, var5 == par1BlockChest.blockID ? par5 - 1 : par5 + 1);
      metadata = 5;
      if (var5 == par1BlockChest.blockID) {
        var14 = par2World.getBlockMetadata(par3, par4, par5 - 1);
      } else {
        var14 = par2World.getBlockMetadata(par3, par4, par5 + 1);
      }

      if (var14 == 4) {
        metadata = 4;
      }

      if ((Block.opaqueCubeLookup[var7] || Block.opaqueCubeLookup[var10]) && !Block.opaqueCubeLookup[var8] && !Block.opaqueCubeLookup[var11]) {
        metadata = 5;
      }

      if ((Block.opaqueCubeLookup[var8] || Block.opaqueCubeLookup[var11]) && !Block.opaqueCubeLookup[var7] && !Block.opaqueCubeLookup[var10]) {
        metadata = 4;
      }

      par2World.setBlockMetadata(par3, par4, par5, metadata);
    }
  }

  private void bindTextureByName(String string) {
    RenderEngine var2 = TileEntityRenderer.instance.renderEngine;

    if (var2 != null) {
      var2.bindTexture(var2.getTexture(string));
    }
  }
}
TOP

Related Classes of colonies.lunatrius.client.lunatrius.schematica.RendererTileEntity

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.