From 3bccdef3114ff193245e5881472c42d9e7d333ff Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 17 Jul 2026 11:30:18 +0200 Subject: [PATCH] balls.mp4 --- changelog | 24 +---- src/main/java/com/hbm/blocks/ModBlocks.java | 16 +-- .../blocks/machine/pile/BlockPileDevice.java | 12 +++ .../com/hbm/blocks/network/CableDiode.java | 4 +- .../com/hbm/explosion/ExplosionBalefire.java | 49 --------- .../inventory/gui/GUIMachineTurbineGas.java | 1 - .../recipes/AssemblyMachineRecipes.java | 5 + .../hbm/render/tileentity/RenderPileVent.java | 6 +- .../machine/pile/TileEntityPileControl.java | 75 ++++++++++++- .../machine/pile/TileEntityPileCore.java | 17 +++ .../machine/pile/TileEntityPileVent.java | 102 +++++++++++++++++- 11 files changed, 228 insertions(+), 83 deletions(-) diff --git a/changelog b/changelog index 88cea5685..3e1f26717 100644 --- a/changelog +++ b/changelog @@ -1,23 +1,7 @@ ## Changed -* Updated russian and chinese localization -* Updated the trinitite ore textures - * The ore spots are now smaller and more shard-like - * Each trinitite ore block now has four randomized texture variants -* Trinitite ores now spawn fewer particles -* The radiation effect caused by walking on trinitite ore is now much shorter but more intense to compensate -* Finally removed the old terra drill items after being deprecated for almost a year -* The electrolysis machine now instantly annihilates all buffered fluid output when changing recipe - * This is a straight downgrade but people for some reason wanted it so sure why not -* Cable diodes now have a GUI for configuration instead of requiring tools - * The throughput can now be configured more precisely instead of increments of powers of 10 -* The magnetic storage barrel now uses BSCCO and has a new texture +* Updated all oil well GUI textures + * There's now only two upgrade slots instead of three +* All legacy pixel gauges have been replaced with smooth ones (watz, ZIRNOX, CCGT) making them more accurate ## Fixed -* Fixed burner press GUI offsets being incorrect -* Potentially fixed an issue with journey map where slaked sellafite would sometimes get the wrong color in the minimap -* Finally fixed an issue making electric armor way worse than it should be, as well as preventing the vanilla armor points from working almost entirely -* Fixed pneumatic storage exporter duping filter items when broken -* Re-enabled the GTNH-NEI filter slot integration -* Fixed various GUI title offsets -* Fixed mask man announcement being sent 20 minutes before spawn (therefore never being sent at all) instead of one minute as intended -* Fixed old BAT9000 recycling \ No newline at end of file +* Fixed held block being placed when not sneaking when opening the cable diode's GUI \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 5dd6c790d..507d6d814 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1965,7 +1965,7 @@ public class ModBlocks { pile_brick = new BlockPileBrick().setBlockName("pile_brick").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pile_brick"); pile_device = new BlockPileDevice().setBlockName("pile_device").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - pile_block = new BlockPile().setBlockName("pile_block").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pile_block"); + pile_block = new BlockPile().setBlockName("pile_block").setStepSound(Block.soundTypeMetal).setHardness(15.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pile_block"); pwr_fuel = new BlockPillarPWR(Material.iron, RefStrings.MODID + ":pwr_fuel_top").setBlockName("pwr_fuel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_fuel_side"); pwr_control = new BlockPillarPWR(Material.iron, RefStrings.MODID + ":pwr_control_top").setBlockName("pwr_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_control_side"); @@ -1977,7 +1977,7 @@ public class ModBlocks { pwr_casing = new BlockGenericTooltip(Material.iron).setBlockName("pwr_casing").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_casing"); pwr_port = new BlockGenericTooltip(Material.iron).setBlockName("pwr_port").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_port"); pwr_controller = new MachinePWRController(Material.iron).setBlockName("pwr_controller").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_casing_blank"); - pwr_block = new BlockPWR(Material.iron).setBlockName("pwr_block").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pwr_block"); + pwr_block = new BlockPWR(Material.iron).setBlockName("pwr_block").setHardness(15.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pwr_block"); fusion_heater = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_heater_top").setBlockName("fusion_heater").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fusion_heater_side"); fusion_hatch = new FusionHatch(Material.iron).setBlockName("fusion_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fusion_hatch"); @@ -3134,12 +3134,12 @@ public class ModBlocks { register(red_pylon_medium_wood_transformer); register(red_pylon_medium_steel); register(red_pylon_medium_steel_transformer); - GameRegistry.registerBlock(red_pylon_large, ItemBlockBase.class, red_pylon_large.getUnlocalizedName()); - GameRegistry.registerBlock(substation, ItemBlockBase.class, substation.getUnlocalizedName()); - GameRegistry.registerBlock(cable_switch, cable_switch.getUnlocalizedName()); - GameRegistry.registerBlock(cable_detector, cable_detector.getUnlocalizedName()); - GameRegistry.registerBlock(cable_diode, ItemBlockBase.class, cable_diode.getUnlocalizedName()); - GameRegistry.registerBlock(machine_detector, machine_detector.getUnlocalizedName()); + register(red_pylon_large); + register(substation); + register(cable_switch); + register(cable_detector); + register(cable_diode); + register(machine_detector); register(fluid_duct_neo); register(fluid_duct_box); diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockPileDevice.java b/src/main/java/com/hbm/blocks/machine/pile/BlockPileDevice.java index f0e8ca863..d4d7968f9 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockPileDevice.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockPileDevice.java @@ -12,6 +12,7 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -66,6 +67,17 @@ public class BlockPileDevice extends BlockContainer implements IBlockMulti { side = MathHelper.clamp_int(side - 2, 0, 3); return metaOffset + side; } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + if(world.getBlockMetadata(x, y, z) != BLOCK_META_CONTROL) return; + + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + if(i == 0) world.setBlockMetadataWithNotify(x, y, z, BLOCK_META_CONTROL + 1, 2); + if(i == 1) world.setBlockMetadataWithNotify(x, y, z, BLOCK_META_CONTROL + 2, 2); + if(i == 2) world.setBlockMetadataWithNotify(x, y, z, BLOCK_META_CONTROL + 0, 2); + if(i == 3) world.setBlockMetadataWithNotify(x, y, z, BLOCK_META_CONTROL + 3, 2); + } public static int itemMetaToBlockMeta(int meta) { if(meta >= ITEM_META_CONTROL) return BLOCK_META_CONTROL; diff --git a/src/main/java/com/hbm/blocks/network/CableDiode.java b/src/main/java/com/hbm/blocks/network/CableDiode.java index 40bc329e4..ca349a096 100644 --- a/src/main/java/com/hbm/blocks/network/CableDiode.java +++ b/src/main/java/com/hbm/blocks/network/CableDiode.java @@ -65,8 +65,8 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float fX, float fY, float fZ) { - if(!player.isSneaking() && world.isRemote) { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + if(!player.isSneaking()) { + if(world.isRemote) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); return true; } diff --git a/src/main/java/com/hbm/explosion/ExplosionBalefire.java b/src/main/java/com/hbm/explosion/ExplosionBalefire.java index 9df326909..1e40b08f1 100644 --- a/src/main/java/com/hbm/explosion/ExplosionBalefire.java +++ b/src/main/java/com/hbm/explosion/ExplosionBalefire.java @@ -127,53 +127,4 @@ public class ExplosionBalefire } } } - - /*private void breakColumn(int x, int z) - { - int dist = this.radius2 - (x * x + z * z); - if (dist > 0) - { - int pX = posX + x; - int pZ = posZ + z; - - int y = worldObj.getHeightValue(pX, pZ); - float strength = (float)dist / (float) this.radius; - - while(y > 0) { - - if(strength <= 10) { - if(worldObj.rand.nextInt(10) == 0) { - worldObj.setBlock(pX, y + 1, pZ, ModBlocks.balefire); - - if(worldObj.getBlock(pX, y, pZ) == ModBlocks.block_schrabidium_cluster) - worldObj.setBlock(pX, y, pZ, ModBlocks.block_euphemium_cluster, worldObj.getBlockMetadata(pX, y, pZ), 3); - } - - if(worldObj.getBlock(pX, y, pZ) == Blocks.stone) - worldObj.setBlock(pX, y, pZ, ModBlocks.sellafield_slaked); - if(worldObj.getBlock(pX, y - 1, pZ) == Blocks.stone) - worldObj.setBlock(pX, y - 1, pZ, ModBlocks.sellafield_slaked); - if(worldObj.getBlock(pX, y - 2, pZ) == Blocks.stone) - worldObj.setBlock(pX, y - 2, pZ, ModBlocks.sellafield_slaked); - if(worldObj.getBlock(pX, y - 3, pZ) == Blocks.stone) - worldObj.setBlock(pX, y - 3, pZ, ModBlocks.sellafield_slaked); - if(worldObj.getBlock(pX, y - 4, pZ) == Blocks.stone) - worldObj.setBlock(pX, y - 4, pZ, ModBlocks.sellafield_slaked); - - return; - } - - float hardness = worldObj.getBlock(pX, y, pZ).getBlockHardness(worldObj, pX, y, pZ); - - if(worldObj.getBlock(pX, y, pZ).getMaterial().isLiquid()) - hardness = Blocks.air.getBlockHardness(worldObj, pX, y + 1, pZ); - - strength -= hardness; - - worldObj.setBlockToAir(pX, y, pZ); - - y--; - } - } - }*/ } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java index 2e21214ca..e196aed5d 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java @@ -28,7 +28,6 @@ import net.minecraft.util.ResourceLocation; public class GUIMachineTurbineGas extends GuiInfoContainer { private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/generators/gui_turbinegas.png"); - private static ResourceLocation gauge_tex = new ResourceLocation(RefStrings.MODID + ":textures/gui/gauges/button_big.png"); private TileEntityMachineTurbineGas turbinegas; int yStart; diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index 043a24446..4b34d1d84 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -492,6 +492,11 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_HARDPLASTIC.ingot(), 24), new OreDictStack(GOLD.wireDense(), 32), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.COMPUTER)) .setPools528(GenericRecipes.POOL_PREFIX_528 + "chip_quantum")); + // pile + this.register(new GenericRecipe("ass.pileblock").setup(20, 250).outputItems(new ItemStack(ModBlocks.pile_brick, 1)) + .inputItems(new OreDictStack(KEY_PLANKS, 1), new OreDictStack(GRAPHITE.ingot(), 4), new OreDictStack(STEEL.bolt(), 2)) + .inputItemsEx(new OreDictStack(KEY_PLANKS, 1), new OreDictStack(GRAPHITE.ingot(), 8), new OreDictStack(STEEL.plate(), 1))); + // reactors this.register(new GenericRecipe("ass.breedingreactor").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_reactor_breeding, 1)) .inputItems(new ComparableStack(ModItems.reactor_core, 1), new OreDictStack(STEEL.ingot(), 12), new OreDictStack(PB.plate(), 16), new ComparableStack(ModBlocks.reinforced_glass, 4), new OreDictStack(ASBESTOS.ingot(), 4), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.crt_display, 1)) diff --git a/src/main/java/com/hbm/render/tileentity/RenderPileVent.java b/src/main/java/com/hbm/render/tileentity/RenderPileVent.java index 4b8829125..a665ee8e8 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderPileVent.java +++ b/src/main/java/com/hbm/render/tileentity/RenderPileVent.java @@ -3,6 +3,7 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import com.hbm.main.ResourceManager; +import com.hbm.tileentity.machine.pile.TileEntityPileVent; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; @@ -23,9 +24,12 @@ public class RenderPileVent extends TileEntitySpecialRenderer { case 3: GL11.glRotated(0, 0, 1, 0); break; } + TileEntityPileVent vent = (TileEntityPileVent) te; + float rot = vent.lastFan + (vent.fan - vent.lastFan) * interp; + bindTexture(ResourceManager.pile_vent_tex); ResourceManager.pile_vent.renderPart("Pipe"); - GL11.glRotated((te.getWorldObj().getTotalWorldTime() % 360 + interp) * 45, 0, -1, 0); + GL11.glRotated(rot, 0, -1, 0); ResourceManager.pile_vent.renderPart("Fan"); GL11.glShadeModel(GL11.GL_FLAT); diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileControl.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileControl.java index 652c4b02a..69689a864 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileControl.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileControl.java @@ -1,7 +1,80 @@ package com.hbm.tileentity.machine.pile; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.machine.pile.BlockPile; +import com.hbm.tileentity.TileEntityTickingBase; +import com.hbm.tileentity.machine.pile.TileEntityPileCore.PileChannel; +import com.hbm.util.Compat; + +import io.netty.buffer.ByteBuf; import net.minecraft.tileentity.TileEntity; -public class TileEntityPileControl extends TileEntity { +public class TileEntityPileControl extends TileEntityTickingBase { + + public double syncLevel; + public double level; + public double lastLevel; + + public int turnProgress; + + public int chanNum; + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + boolean canMove = false; + + if(worldObj.getBlock(xCoord, yCoord - 1, zCoord) == ModBlocks.pile_block && worldObj.getBlockMetadata(xCoord, yCoord - 1, zCoord) == BlockPile.META_CONTROL) { + + TileEntity tile = Compat.getTileStandard(worldObj, xCoord, yCoord - 1, zCoord); + + if(tile instanceof TileEntityPileBaseMK2) { + TileEntityPileBaseMK2 pile = (TileEntityPileBaseMK2) tile; + TileEntityPileCore core = pile.getCore(); + + if(core != null) { + PileChannel controlChan = core.getControlChannel(xCoord, yCoord - 1, zCoord); + + if(controlChan != null) { + canMove = true; + this.chanNum = core.getControlChannelNum(controlChan); + controlChan.control = this.level; + } + } + } + } + + this.networkPackNT(100); + + } else { + + this.lastLevel = this.level; + + if(this.turnProgress > 0) { + this.level = this.level + ((this.syncLevel - this.level) / (double) this.turnProgress); + --this.turnProgress; + } else { + this.level = this.syncLevel; + } + } + } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeDouble(this.level); + buf.writeInt(this.chanNum); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + double lastSync = this.syncLevel; + this.syncLevel = buf.readDouble(); + this.chanNum = buf.readInt(); + + if(this.syncLevel != lastSync) this.turnProgress = 2; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java index 6de16c533..654e2d234 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java @@ -15,6 +15,7 @@ import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; @@ -80,6 +81,14 @@ public class TileEntityPileCore extends TileEntityTickingBase { for(PileChannel channel : list) if(channel.entry.compare(x, y, z)) return channel; return null; } + + public int getFuelChannelNum(PileChannel chan) { return getChannelNum(chan, fuelChannels); } + public int getVentilationChannelNum(PileChannel chan) { return getChannelNum(chan, ventilationChannels); } + public int getControlChannelNum(PileChannel chan) { return getChannelNum(chan, controlChannels); } + + public int getChannelNum(PileChannel chan, List list) { + return list.indexOf(chan); // more reliable when channels change and not that big of a deal because we have lists in single digit length + } @Override public void writeToNBT(NBTTagCompound nbt) { @@ -185,6 +194,7 @@ public class TileEntityPileCore extends TileEntityTickingBase { if(!worldObj.isRemote) { if(worldObj.getTotalWorldTime() % 3 == 0) for(PileChannel chan : this.ventilationChannels) { + if(chan.air <= 0) continue; double x = chan.entry.getX() + 0.5 + chan.entry.getDir().offsetX * (this.width - 0.375); double y = chan.entry.getY() + 0.5; @@ -227,18 +237,25 @@ public class TileEntityPileCore extends TileEntityTickingBase { public final int length; // length of the channel, always equal to the h/w/d size of that axis public final PileChannelType type; + public final ItemStack[] rods; + public int air; + public double control = 1D; // pulled out by default, unlike me who never pulls out + public PileChannel(int x, int y, int z, ForgeDirection dir) { this.entry = new DirPos(x, y, z, dir); this.type = PileChannelType.getChannelType(dir, orientation); this.length = type == PileChannelType.CONTROL ? height : type == PileChannelType.FUEL ? depth : width; + + this.rods = new ItemStack[length]; } public PileChannel(int x, int y, int z, ForgeDirection dir, int length, PileChannelType type) { this.entry = new DirPos(x, y, z, dir); this.type = type; this.length = length; + this.rods = new ItemStack[length]; } public void writeChannelToNBT(NBTTagCompound nbt, String name) { diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileVent.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileVent.java index 15f803176..4d48a2a3e 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileVent.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileVent.java @@ -1,7 +1,107 @@ package com.hbm.tileentity.machine.pile; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.machine.pile.BlockPile; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.tileentity.TileEntityTickingBase; +import com.hbm.tileentity.machine.pile.TileEntityPileCore.PileChannel; +import com.hbm.util.Compat; + +import api.hbm.fluidmk2.IFluidStandardReceiverMK2; +import io.netty.buffer.ByteBuf; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityPileVent extends TileEntity { +public class TileEntityPileVent extends TileEntityTickingBase implements IFluidStandardReceiverMK2 { + + public FluidTank compair; + public boolean isActive = false; + + public float fan; + public float lastFan; + + public int chanNum; + + public TileEntityPileVent() { + this.compair = new FluidTank(Fluids.AIR, 4_000); + } + @Override public FluidTank[] getAllTanks() { return new FluidTank[] {compair}; } + @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {compair}; } + + @Override + public boolean canConnect(FluidType type, ForgeDirection dir) { + if(type != compair.getTankType()) return false; + ForgeDirection conDir = getOrientation(); + return dir == conDir.getOpposite(); + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + ForgeDirection dir = getOrientation(); + this.trySubscribe(compair.getTankType(), worldObj, xCoord - dir.offsetX, yCoord, zCoord - dir.offsetZ, dir.getOpposite()); + + this.isActive = false; + + if(this.compair.getFill() > 0) { + int x = xCoord + dir.offsetX; + int y = yCoord; + int z = zCoord + dir.offsetZ; + + if(worldObj.getBlock(x, y, z) == ModBlocks.pile_block && worldObj.getBlockMetadata(x, y, z) == BlockPile.META_AIR_IN) { + TileEntity tile = Compat.getTileStandard(worldObj, xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ); + + if(tile instanceof TileEntityPileBaseMK2) { + TileEntityPileBaseMK2 pile = (TileEntityPileBaseMK2) tile; + TileEntityPileCore core = pile.getCore(); + + if(core != null) { + PileChannel ventChan = core.getVentilationChannel(x, y, z); + + if(ventChan != null) { + this.isActive = true; + this.chanNum = core.getVentilationChannelNum(ventChan); + // compair stuff here + } + } + } + } + } + + this.networkPackNT(35); + + } else { + + this.lastFan = fan; + if(this.isActive) this.fan += 45; + + if(this.fan >= 360) { + this.lastFan -= 360; + this.fan -= 360; + } + } + } + + public ForgeDirection getOrientation() { + return ForgeDirection.getOrientation(this.getBlockMetadata() % 4 + 2); + } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(this.isActive); + buf.writeInt(this.chanNum); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.isActive = buf.readBoolean(); + this.chanNum = buf.readInt(); + } }