Advertisement
Guest User

Untitled

a guest
Nov 2nd, 2014
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.93 KB | None | 0 0
  1. package nedocomputers.multipart;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.Collections;
  6. import java.util.List;
  7.  
  8. import nedocomputers.NedoComputers;
  9. import nedocomputers.TileEntityCable;
  10. import net.minecraft.block.Block;
  11. import net.minecraft.client.renderer.RenderBlocks;
  12. import net.minecraft.client.renderer.Tessellator;
  13. import net.minecraft.nbt.NBTTagCompound;
  14. import net.minecraft.tileentity.TileEntity;
  15. import net.minecraft.util.IIcon;
  16. import codechicken.lib.data.MCDataInput;
  17. import codechicken.lib.data.MCDataOutput;
  18. import codechicken.lib.vec.Cuboid6;
  19. import codechicken.lib.vec.Vector3;
  20. import codechicken.multipart.minecraft.McMetaPart;
  21. import codechicken.multipart.minecraft.PartMetaAccess;
  22. import cpw.mods.fml.relauncher.Side;
  23. import cpw.mods.fml.relauncher.SideOnly;
  24.  
  25. public class PartCable extends McMetaPart {
  26.  
  27.     public int conMask = 0;
  28.  
  29.     @Override
  30.     public Cuboid6 getBounds() {
  31.         double r = 0.125;
  32.         return new Cuboid6( ((conMask & 0x10) != 0) ? 0 : 0.5 - r,  // minX
  33.                             ((conMask & 0x01) != 0) ? 0 : 0.5 - r,  // minY
  34.                             ((conMask & 0x04) != 0) ? 0 : 0.5 - r,  // minZ
  35.                             ((conMask & 0x20) != 0) ? 1 : 0.5 + r,  // maxX
  36.                             ((conMask & 0x02) != 0) ? 1 : 0.5 + r,  // maxY
  37.                             ((conMask & 0x08) != 0) ? 1 : 0.5 + r); // maxZ
  38.     }
  39.  
  40.     @Override
  41.     public Block getBlock() {
  42.         return NedoComputers.blockCable;
  43.     }
  44.  
  45.     @Override
  46.     public String getType() {
  47.         return "nedocomputers:cable";
  48.     }
  49.  
  50.     @Override
  51.     public void invalidateConvertedTile() {
  52.         TileEntity tile = world().getTileEntity(x(), y(), z());
  53.         if (tile instanceof TileEntityCable) {
  54.             conMask = ((TileEntityCable)tile).getConMask();
  55.             System.out.println("conv: " + conMask);
  56.         }
  57.     }
  58.  
  59.     @Override
  60.     public void onNeighborChanged() {
  61.         System.out.println("onNeighborChanged");
  62.     }
  63.  
  64.     @Override
  65.     public void writeDesc(MCDataOutput packet) {
  66.         super.writeDesc(packet);
  67.         packet.writeInt(conMask);
  68.         System.out.println("writeDesc: " + conMask);
  69.     }
  70.  
  71.     @Override
  72.     public void readDesc(MCDataInput packet) {
  73.         super.readDesc(packet);
  74.         conMask = packet.readInt();
  75.         System.out.println("readDesc: " + conMask);
  76.     }
  77.  
  78.     @Override
  79.     public boolean doesTick() {
  80.         return false;
  81.     }
  82.  
  83.     @Override
  84.     public void update() {
  85.         if (world().isRemote)
  86.             System.out.println("client: " + conMask);
  87.         else
  88.             System.out.println("server: " + conMask);
  89.     }
  90.  
  91.     @Override
  92.     public void load(NBTTagCompound nbt) {
  93.         conMask = (short)nbt.getInteger("conMask");
  94.     }
  95.  
  96.     @Override
  97.     public void save(NBTTagCompound nbt) {
  98.         nbt.setInteger("conMask", conMask);
  99.     }
  100.  
  101.     @Override
  102.     public Iterable<Cuboid6> getCollisionBoxes() {
  103.         List <Cuboid6> list = new ArrayList();
  104.         double r = 0.125;
  105.         list.add(new Cuboid6(0.5 - r, 0.5 - r, 0.5 - r, 0.5 + r, 0.5 + r, 0.5 + r));
  106.         if ((conMask & 1) != 0)
  107.             list.add(new Cuboid6(0.5 - r, 0, 0.5 - r, 0.5F + r, 0.5 + r, 0.5 + r));
  108.         if ((conMask & 2) != 0)
  109.             list.add(new Cuboid6(0.5 - r, 0.5 - r, 0.5 - r, 0.5 + r, 1F, 0.5 + r));
  110.         if ((conMask & 4) != 0)
  111.             list.add(new Cuboid6(0.5 - r, 0.5 - r, 0, 0.5 + r, 0.5 + r, 0.5 + r));
  112.         if ((conMask & 8) != 0)
  113.             list.add(new Cuboid6(0.5 - r, 0.5 - r, 0.5 - r, 0.5 + r, 0.5 + r, 1));
  114.         if ((conMask & 16) != 0)
  115.             list.add(new Cuboid6(0, 0.5 - r, 0.5 - r, 0.5 + r, 0.5 + r, 0.5 + r));
  116.         if ((conMask & 32) != 0)
  117.             list.add(new Cuboid6(0.5 - r, 0.5 - r, 0.5 - r, 1F, 0.5 + r, 0.5 + r));
  118.         return list;
  119.     }
  120.  
  121.     @Override
  122.     @SideOnly(Side.CLIENT)
  123.     public boolean renderStatic(Vector3 pos, int pass)  {
  124.         RenderBlocks renderer = new RenderBlocks(new PartMetaAccess(this));
  125.         IIcon iicon = renderer.getBlockIcon(NedoComputers.blockCable);
  126.         Tessellator t = Tessellator.instance;
  127.         //t.setBrightness(NedoComputers.blockCable.getMixedBrightnessForBlock(renderer.blockAccess,x(), y(), z()));
  128.  
  129.         double r = 0.125;
  130.  
  131.         double x = x() + 0.5;
  132.         double y = y() + 0.5;
  133.         double z = z() + 0.5;
  134.  
  135.         double minY = ((conMask & 1) != 0) ? y - 0.5 : y - r;   // DOWN
  136.         double maxY = ((conMask & 2) != 0) ? y + 0.5 : y + r;   // UP
  137.         double minZ = ((conMask & 4) != 0) ? z - 0.5 : z - r;   // NORTH
  138.         double maxZ = ((conMask & 8) != 0) ? z + 0.5 : z + r;   // SOUTH
  139.         double minX = ((conMask & 16) != 0) ? x - 0.5 : x - r;  // WEST
  140.         double maxX = ((conMask & 32) != 0) ? x + 0.5 : x + r;  // EAST
  141.  
  142.         double t_minY = ((conMask & 1) != 0) ? 0 : 0.5 - r;     // DOWN
  143.         double t_maxY = ((conMask & 2) != 0) ? 1 : 0.5 + r;     // UP
  144.         double t_minZ = ((conMask & 4) != 0) ? 0 : 0.5 - r;     // NORTH
  145.         double t_maxZ = ((conMask & 8) != 0) ? 1 : 0.5 + r;     // SOUTH
  146.         double t_minX = ((conMask & 16) != 0) ? 0 : 0.5 - r;    // WEST
  147.         double t_maxX = ((conMask & 32) != 0) ? 1 : 0.5 + r;    // EAST
  148.  
  149.         double minU = (double)iicon.getMinU();
  150.         double minV = (double)iicon.getMinV();
  151.         double maxU = (double)iicon.getMaxU();
  152.         double maxV = (double)iicon.getMaxV();
  153.         double mU = maxU - minU;
  154.         double mV = maxV - minV;
  155.  
  156.         // Down.
  157.         t.addVertexWithUV(maxX, y - r, minZ, minU + t_maxX * mU, minV + t_minZ * mV);
  158.         t.addVertexWithUV(maxX, y - r, maxZ, minU + t_maxX * mU, minV + t_maxZ * mV);
  159.         t.addVertexWithUV(minX, y - r, maxZ, minU + t_minX * mU, minV + t_maxZ * mV);
  160.         t.addVertexWithUV(minX, y - r, minZ, minU + t_minX * mU, minV + t_minZ * mV);
  161.  
  162.         // Up.
  163.         t.addVertexWithUV(minX, y + r, minZ, minU + t_minX * mU, minV + t_minZ * mV);
  164.         t.addVertexWithUV(minX, y + r, maxZ, minU + t_minX * mU, minV + t_maxZ * mV);
  165.         t.addVertexWithUV(maxX, y + r, maxZ, minU + t_maxX * mU, minV + t_maxZ * mV);
  166.         t.addVertexWithUV(maxX, y + r, minZ, minU + t_maxX * mU, minV + t_minZ * mV);
  167.  
  168.         // North.
  169.         t.addVertexWithUV(minX, minY, z - r, minU + t_minX * mU, minV + t_minY * mV);
  170.         t.addVertexWithUV(minX, maxY, z - r, minU + t_minX * mU, minV + t_maxY * mV);
  171.         t.addVertexWithUV(maxX, maxY, z - r, minU + t_maxX * mU, minV + t_maxY * mV);
  172.         t.addVertexWithUV(maxX, minY, z - r, minU + t_maxX * mU, minV + t_minY * mV);
  173.  
  174.         // South.
  175.         t.addVertexWithUV(maxX, minY, z + r, minU + t_maxX * mU, minV + t_minY * mV);
  176.         t.addVertexWithUV(maxX, maxY, z + r, minU + t_maxX * mU, minV + t_maxY * mV);
  177.         t.addVertexWithUV(minX, maxY, z + r, minU + t_minX * mU, minV + t_maxY * mV);
  178.         t.addVertexWithUV(minX, minY, z + r, minU + t_minX * mU, minV + t_minY * mV);
  179.        
  180.         // West.
  181.         t.addVertexWithUV(x - r, minY, maxZ, minU + t_minY * mU, minV + t_maxZ * mV);
  182.         t.addVertexWithUV(x - r, maxY, maxZ, minU + t_maxY * mU, minV + t_maxZ * mV);
  183.         t.addVertexWithUV(x - r, maxY, minZ, minU + t_maxY * mU, minV + t_minZ * mV);
  184.         t.addVertexWithUV(x - r, minY, minZ, minU + t_minY * mU, minV + t_minZ * mV);
  185.  
  186.         // East.
  187.         t.addVertexWithUV(x + r, minY, minZ, minU + t_minY * mU, minV + t_minZ * mV);
  188.         t.addVertexWithUV(x + r, maxY, minZ, minU + t_maxY * mU, minV + t_minZ * mV);
  189.         t.addVertexWithUV(x + r, maxY, maxZ, minU + t_maxY * mU, minV + t_maxZ * mV);
  190.         t.addVertexWithUV(x + r, minY, maxZ, minU + t_minY * mU, minV + t_maxZ * mV);
  191.         return true;
  192.     }
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement