@Override
 public void onBlockAdded(World world, int x, int y, int z) {
   TileReactorCore tile =
       world.getTileEntity(x, y, z) instanceof TileReactorCore
           ? (TileReactorCore) world.getTileEntity(x, y, z)
           : null;
   if (tile != null) tile.onPlaced();
 }
 @Override
 public void breakBlock(World world, int x, int y, int z, Block p_149749_5_, int p_149749_6_) {
   TileReactorCore tile =
       world.getTileEntity(x, y, z) instanceof TileReactorCore
           ? (TileReactorCore) world.getTileEntity(x, y, z)
           : null;
   if (tile != null) tile.onBroken();
   super.breakBlock(world, x, y, z, p_149749_5_, p_149749_6_);
 }
 @Override
 public void setInventorySlotContents(int i, ItemStack stack) {
   if (i == 0
       && stack != null
       && (stack.getItem() == ModItems.draconicIngot
           || stack.getItem() == Item.getItemFromBlock(ModBlocks.draconicBlock)
           || (stack.getItem() == ModItems.nugget && stack.getItemDamage() == 1))) {
     if (stack.getItem() == ModItems.nugget) reactor.reactorFuel += stack.stackSize * 16;
     if (stack.getItem() == ModItems.draconicIngot)
       reactor.reactorFuel += stack.stackSize * 144;
     if (stack.getItem() == Item.getItemFromBlock(ModBlocks.draconicBlock))
       reactor.reactorFuel += stack.stackSize * 1296;
     reactor.validateStructure();
   } else getStorage()[i] = stack;
 }
 @Override
 public void receiveSyncData(int index, int value) {
   if (index == 0) reactor.conversionUnit = (double) value / 100D;
   //		else if (index == 1) reactor.reactionTemperature = value;
   //		else if (index == 2) reactor.maxReactTemperature = value;
   //		else if (index == 3) reactor.fieldCharge = value;
   //		else if (index == 4) reactor.energySaturation = value;
   //		else if (index == 5) reactor.maxEnergySaturation = value;
   //		else if (index == 6) reactor.convertedFuel = value;
   //		else if (index == 7) reactor.maxFieldCharge = value;
   else if (index == 8) reactor.tempDrainFactor = value / 1000D;
   else if (index == 9) reactor.generationRate = value;
   else if (index == 10) reactor.fieldDrain = value;
   else if (index == 11) reactor.fuelUseRate = value / 1000000D;
   if (index == 20) reactor.processButtonPress(value);
   if (index == 99) {
     Iterator i = inventorySlots.iterator();
     while (i.hasNext()) {
       Object o = i.next();
       if (o instanceof SlotExtract || o instanceof SlotInsert) i.remove();
     }
   } else if (index == 98) {
     addSlotToContainer(new SlotInsert(ioSlots, 0, 15, 140, reactor));
     addSlotToContainer(new SlotExtract(ioSlots, 1, 217, 140));
   }
 }
 @Override
 public ItemStack slotClick(int slot, int button, int p_75144_3_, EntityPlayer player1) {
   if (slot == 37 && player1.inventory.getItemStack() == null) {
     if (reactor.reactorFuel / 144 >= 64) {
       int i = reactor.reactorFuel / 1296;
       int i2 = Math.min(64, i);
       ioSlots.getStorage()[1] = new ItemStack(ModBlocks.draconicBlock, i2);
       reactor.reactorFuel -= i2 * 1296;
     } else if (reactor.reactorFuel >= 144) {
       int i = reactor.reactorFuel / 144;
       int i2 = Math.min(64, i);
       ioSlots.getStorage()[1] = new ItemStack(ModItems.draconicIngot, i2);
       reactor.reactorFuel -= i2 * 144;
     } else if (reactor.reactorFuel >= 16) {
       int i = reactor.reactorFuel / 16;
       int i2 = Math.min(64, i);
       ioSlots.getStorage()[1] = new ItemStack(ModItems.nugget, i2, 1);
       reactor.reactorFuel -= i2 * 16;
     } else if (reactor.convertedFuel / 144 >= 64) {
       int i = reactor.convertedFuel / 1296;
       int i2 = Math.min(64, i);
       ioSlots.getStorage()[1] = new ItemStack(ModItems.chaosFragment, i2, 2);
       reactor.convertedFuel -= i2 * 1296;
     } else if (reactor.convertedFuel >= 144) {
       int i = reactor.convertedFuel / 144;
       int i2 = Math.min(64, i);
       ioSlots.getStorage()[1] = new ItemStack(ModItems.chaosFragment, i2, 1);
       reactor.convertedFuel -= i2 * 144;
     } else if (reactor.convertedFuel >= 16) {
       int i = reactor.convertedFuel / 16;
       int i2 = Math.min(64, i);
       ioSlots.getStorage()[1] = new ItemStack(ModItems.chaosFragment, i2, 0);
       reactor.convertedFuel -= i2 * 16;
     }
   }
   return super.slotClick(slot, button, p_75144_3_, player1);
 }