Advertisement
Guest User

Untitled

a guest
Jul 28th, 2014
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.58 KB | None | 0 0
  1. package thaumic.tinkerer.common.block.tile;
  2.  
  3. import li.cil.oc.api.driver.Item;
  4. import net.minecraft.entity.Entity;
  5. import net.minecraft.entity.EntityList;
  6. import net.minecraft.entity.EntityLiving;
  7. import net.minecraft.entity.monster.EntitySkeleton;
  8. import net.minecraft.tileentity.TileEntity;
  9. import thaumcraft.api.aspects.Aspect;
  10. import thaumcraft.common.tiles.TilePedestal;
  11. import thaumic.tinkerer.common.ThaumicTinkerer;
  12. import thaumic.tinkerer.common.core.helper.EnumMobAspect;
  13. import thaumic.tinkerer.common.item.ItemMobAspect;
  14.  
  15. import java.util.ArrayList;
  16. import java.util.Arrays;
  17.  
  18. public class TileSummon extends TileEntity {
  19.  
  20. @Override
  21. public void updateEntity() {
  22.  
  23. if (worldObj.getTotalWorldTime() % 300 == 0) {
  24. ArrayList<TileEntity> pedestals = new ArrayList<TileEntity>();
  25. for (int x = xCoord - 5; x < xCoord + 5; x++) {
  26. for (int z = zCoord - 5; z < zCoord + 5; z++) {
  27. TileEntity tile = worldObj.getTileEntity(x, yCoord, z);
  28. if (tile instanceof TilePedestal && ((TilePedestal) tile).getStackInSlot(0) != null && ((TilePedestal) tile).getStackInSlot(0).getItem() instanceof ItemMobAspect) {
  29. pedestals.add(tile);
  30. }
  31. }
  32. }
  33.  
  34. for (int i = 0; i < pedestals.size(); i++) {
  35. for (int j = 0; j < pedestals.size(); j++) {
  36. for (int k = 0; k < pedestals.size(); k++) {
  37. TilePedestal ped1 = (TilePedestal) pedestals.get(i);
  38. TilePedestal ped2 = (TilePedestal) pedestals.get(j);
  39. TilePedestal ped3 = (TilePedestal) pedestals.get(k);
  40.  
  41. if ((ped1 != ped2) && (ped2 != ped3) && (ped1 != ped3)) {
  42. ArrayList<Aspect> aspects = new ArrayList<Aspect>();
  43. aspects.add(ItemMobAspect.getAspect(ped1.getStackInSlot(0)));
  44.  
  45. aspects.add(ItemMobAspect.getAspect(ped2.getStackInSlot(0)));
  46.  
  47. aspects.add(ItemMobAspect.getAspect(ped3.getStackInSlot(0)));
  48.  
  49. for (EnumMobAspect recipe : EnumMobAspect.values()) {
  50. if (Arrays.asList(recipe.aspects).containsAll(aspects) && aspects.containsAll(Arrays.asList(recipe.aspects))) {
  51.  
  52. boolean isInfused = ItemMobAspect.isInfused(ped1.getStackInSlot(0)) &&
  53. ItemMobAspect.isInfused(ped2.getStackInSlot(0)) &&
  54. ItemMobAspect.isInfused(ped3.getStackInSlot(0));
  55.  
  56. if (isInfused && worldObj.getTotalWorldTime() % 1200 != 0) {
  57. return;
  58. }
  59.  
  60. if (!isInfused) {
  61. ped1.setInventorySlotContents(0, null);
  62. ped2.setInventorySlotContents(0, null);
  63. ped3.setInventorySlotContents(0, null);
  64. }
  65.  
  66.  
  67. if (!worldObj.isRemote) {
  68. if(!isInfused || ItemMobAspect.lastUsedTabletMatches(ped1.getStackInSlot(0), this)
  69. && ItemMobAspect.lastUsedTabletMatches(ped2.getStackInSlot(0), this)
  70. && ItemMobAspect.lastUsedTabletMatches(ped3.getStackInSlot(0), this)) {
  71. Entity spawn = EntityList.createEntityByName(recipe.toString(), worldObj);
  72. spawn.setLocationAndAngles(xCoord + .5, yCoord + 1, zCoord + .5, 0, 0);
  73. if (spawn instanceof EntitySkeleton && worldObj.provider.isHellWorld) {
  74. ((EntitySkeleton) spawn).setSkeletonType(1);
  75. }
  76. worldObj.spawnEntityInWorld(spawn);
  77. ((EntityLiving)spawn).onSpawnWithEgg(null);
  78. ((EntityLiving)spawn).playLivingSound();
  79. }
  80. }
  81.  
  82. ThaumicTinkerer.tcProxy.essentiaTrailFx(worldObj, ped1.xCoord, ped1.yCoord, ped1.zCoord, xCoord, yCoord, zCoord, 20, aspects.get(0).getColor(), 20);
  83. ThaumicTinkerer.tcProxy.essentiaTrailFx(worldObj, ped2.xCoord, ped2.yCoord, ped2.zCoord, xCoord, yCoord, zCoord, 20, aspects.get(1).getColor(), 20);
  84. ThaumicTinkerer.tcProxy.essentiaTrailFx(worldObj, ped3.xCoord, ped3.yCoord, ped3.zCoord, xCoord, yCoord, zCoord, 20, aspects.get(2).getColor(), 20);
  85.  
  86. if(isInfused){
  87. ItemMobAspect.markLastUsedTablet(ped1.getStackInSlot(0), this);
  88.  
  89. ItemMobAspect.markLastUsedTablet(ped2.getStackInSlot(0), this);
  90.  
  91. ItemMobAspect.markLastUsedTablet(ped3.getStackInSlot(0), this);
  92. }
  93.  
  94. return;
  95.  
  96. }
  97. }
  98.  
  99. }
  100.  
  101. }
  102. }
  103. }
  104.  
  105. }
  106. }
  107.  
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement