From a24d6e4bce4c5e33f9571ab768306c70f4204aeb Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 8 May 2026 14:48:34 +0200 Subject: [PATCH] evil --- changelog | 12 +++- .../java/com/hbm/config/GeneralConfig.java | 6 +- .../nei/AlloyFurnaceRecipeHandler.java | 4 +- .../recipes/BlastFurnaceRecipes.java | 4 +- .../render/tileentity/RenderFusionTorus.java | 6 ++ .../hbm/render/tileentity/RenderGasFlare.java | 9 +++ .../hbm/render/tileentity/RenderRefinery.java | 6 ++ .../hbm/render/tileentity/RenderZirnox.java | 20 +++--- .../hbm/tileentity/TileEntityLoadedBase.java | 63 ++++++++++++++++-- .../machine/TileEntityReactorZirnox.java | 16 +++-- .../machine/fusion/TileEntityFusionTorus.java | 12 +++- .../oil/TileEntityMachineGasFlare.java | 5 ++ .../oil/TileEntityMachineRefinery.java | 5 ++ .../machine/storage/TileEntityBarrel.java | 17 +---- .../hbm/textures/models/machines/autosaw.png | Bin 3135 -> 3214 bytes .../textures/models/machines/battery_base.png | Bin 626 -> 0 bytes .../models/machines/capacitor_base.png | Bin 369 -> 0 bytes .../models/machines/refinery_small.png | Bin 13096 -> 0 bytes .../textures/models/machines/steamhammer.png | Bin 1907 -> 0 bytes 19 files changed, 146 insertions(+), 39 deletions(-) delete mode 100644 src/main/resources/assets/hbm/textures/models/machines/battery_base.png delete mode 100644 src/main/resources/assets/hbm/textures/models/machines/capacitor_base.png delete mode 100644 src/main/resources/assets/hbm/textures/models/machines/refinery_small.png delete mode 100644 src/main/resources/assets/hbm/textures/models/machines/steamhammer.png diff --git a/changelog b/changelog index fc2a89284..3dfc7f617 100644 --- a/changelog +++ b/changelog @@ -1,12 +1,22 @@ ## Added * Redstone-over-Radio Terminal * Allows commands to be sent manually, command line style + * Supports single commands and repeated ones (polling) ## Changed * RoR graphs can now have their min and max bounds set to a fixed number * This should make it easier to accurately tell the difference/scale of values when they exist in an expected range (for example, RBMK temperatures) * RoR controllers now use polling by default, since state change is unable to actually perform a function unless the state changes, preventing repeated commands +* HE/RF converters now have a tooltip showing their buffered energy +* Updated the models of the cage lamp, fluorescent light and halogen lamp +* 528 mode now has a new config for enabling gravity on machines + * Machines not on solid ground will tilt, causing them to break + * Still a work in progress, not all machines make use of it yet + * The ZIRNOX for example will continue to operate when tilted, however the pipes will disconnect, resulting in a fatal loss of cooling +* Slightly adjusted the automatic buzzsaw's texture ## Fixed * Fixed RoR graph showing the wrong name in the GUI -* Fixed polling option in RoR controllers reading dead signals \ No newline at end of file +* Fixed polling option in RoR controllers reading dead signals +* Fixed state change in RoR controllers not allowing repeat commands +* Fixed blast furnace NEI handler not cycling through all valid material shapes \ No newline at end of file diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index 7feac4f84..ff5777b85 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -56,11 +56,13 @@ public class GeneralConfig { public static boolean enable528NetherBurn = true; public static boolean enable528PressurizedRecipes = true; public static boolean enable528ExplosiveEnergistics = true; + public static boolean enable528MachineGravity = true; public static int coltanRate = 2; public static boolean true528() { return enable528 && enable528ReasimBoilers && !enable528ColtanSpawn && enable528BosniaSimulator && - enable528NetherBurn && enable528PressurizedRecipes && enable528ExplosiveEnergistics && coltanRate <= 2; + enable528NetherBurn && enable528PressurizedRecipes && enable528ExplosiveEnergistics && + enable528MachineGravity && coltanRate <= 2; } public static boolean enableLBSM = false; @@ -143,6 +145,7 @@ public class GeneralConfig { enable528NetherBurn = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enable528NetherBurn", "Whether players burn in the nether", true); enable528PressurizedRecipes = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enable528PressurizedRecipes", "Sets some recipes to require pressurized input fluid", true); enable528ExplosiveEnergistics = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enable528ExplosiveEnergistics", "Renders AE2 unusable.", true); + enable528MachineGravity = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enable528MachineGravity", "Requires most large machines to have a proper foundation, or else they tilt and break.", true); coltanRate = CommonConfig.createConfigInt(config, CATEGORY_528, "X528_oreColtanFrequency", "Determines how many coltan ore veins are to be expected in a chunk. These values do not affect the frequency in deposits, and only apply if random coltan spanwing is enabled.", 2); final String CATEGORY_LBSM = CommonConfig.CATEGORY_LBSM; @@ -175,6 +178,7 @@ public class GeneralConfig { enable528NetherBurn = false; enable528PressurizedRecipes = false; enable528ExplosiveEnergistics = false; + enable528MachineGravity = false; } } } diff --git a/src/main/java/com/hbm/handler/nei/AlloyFurnaceRecipeHandler.java b/src/main/java/com/hbm/handler/nei/AlloyFurnaceRecipeHandler.java index ee1d09a5b..511e009d8 100644 --- a/src/main/java/com/hbm/handler/nei/AlloyFurnaceRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/AlloyFurnaceRecipeHandler.java @@ -48,12 +48,12 @@ public class AlloyFurnaceRecipeHandler extends TemplateRecipeHandler implements @Override public List getIngredients() { - return getCycledIngredients(cycleticks / 48, Arrays.asList(new PositionedStack[] { input1, input2 })); + return getCycledIngredients(cycleticks / 20, Arrays.asList(new PositionedStack[] { input1, input2 })); } @Override public PositionedStack getOtherStack() { - return fuels.get((cycleticks / 48) % fuels.size()).stack; + return fuels.get((cycleticks / 20) % fuels.size()).stack; } @Override diff --git a/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java index 67c1c1794..741ec3b8d 100644 --- a/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java @@ -150,7 +150,7 @@ public class BlastFurnaceRecipes extends SerializableRecipe { else { in1.remove(nothing); in1.addAll(stack.extractForNEI()); - break; + continue; } } if(in1.contains(nothing)) { @@ -162,7 +162,7 @@ public class BlastFurnaceRecipes extends SerializableRecipe { } else { in2.remove(nothing); in2.addAll(stack.extractForNEI()); - break; + continue; } } if(in2.contains(nothing)) { diff --git a/src/main/java/com/hbm/render/tileentity/RenderFusionTorus.java b/src/main/java/com/hbm/render/tileentity/RenderFusionTorus.java index b9a81573a..05a836752 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderFusionTorus.java +++ b/src/main/java/com/hbm/render/tileentity/RenderFusionTorus.java @@ -28,6 +28,12 @@ public class RenderFusionTorus extends TileEntitySpecialRenderer implements IIte TileEntityFusionTorus torus = (TileEntityFusionTorus) tile; + if(torus.tilted) { + GL11.glTranslated(0, -1, 0); + GL11.glRotated(10, 0, 0, 1); + GL11.glRotated(5, 0, 1, 0); + } + GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.fusion_torus_tex); ResourceManager.fusion_torus.renderPart("Torus"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderGasFlare.java b/src/main/java/com/hbm/render/tileentity/RenderGasFlare.java index d25f4aef1..d5c70c969 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderGasFlare.java +++ b/src/main/java/com/hbm/render/tileentity/RenderGasFlare.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.oil.TileEntityMachineGasFlare; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; @@ -16,6 +17,14 @@ public class RenderGasFlare extends TileEntitySpecialRenderer { GL11.glTranslated(x + 0.5D, y, z + 0.5D); GL11.glEnable(GL11.GL_LIGHTING); GL11.glRotatef(180, 0F, 1F, 0F); + + TileEntityMachineGasFlare flare = (TileEntityMachineGasFlare) tileEntity; + + if(flare.tilted) { + GL11.glTranslated(0, -0.25, 0); + GL11.glRotated(10, 0, 0, 1); + GL11.glRotated(5, 0, 1, 0); + } GL11.glDisable(GL11.GL_CULL_FACE); GL11.glShadeModel(GL11.GL_SMOOTH); diff --git a/src/main/java/com/hbm/render/tileentity/RenderRefinery.java b/src/main/java/com/hbm/render/tileentity/RenderRefinery.java index 08340aa1b..9ed0d002d 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderRefinery.java +++ b/src/main/java/com/hbm/render/tileentity/RenderRefinery.java @@ -22,6 +22,12 @@ public class RenderRefinery extends TileEntitySpecialRenderer { bindTexture(ResourceManager.refinery_tex); TileEntityMachineRefinery refinery = (TileEntityMachineRefinery) tileEntity; + + if(refinery.tilted) { + GL11.glTranslated(0, -0.25, 0); + GL11.glRotated(10, 0, 0, 1); + GL11.glRotated(5, 0, 1, 0); + } GL11.glShadeModel(GL11.GL_SMOOTH); diff --git a/src/main/java/com/hbm/render/tileentity/RenderZirnox.java b/src/main/java/com/hbm/render/tileentity/RenderZirnox.java index eeab44a2b..7c38cfc6f 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderZirnox.java +++ b/src/main/java/com/hbm/render/tileentity/RenderZirnox.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.TileEntityReactorZirnox; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; @@ -15,15 +16,18 @@ public class RenderZirnox extends TileEntitySpecialRenderer { GL11.glTranslated(x + 0.5D, y, z + 0.5D); GL11.glEnable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_CULL_FACE); + + if(((TileEntityReactorZirnox) tileEntity).tilted) { + GL11.glTranslated(0, -0.5, 0); + GL11.glRotated(10, 0, 0, 1); + GL11.glRotated(5, 0, 1, 0); + } + switch(tileEntity.getBlockMetadata() - 10) { - case 2: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 4: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(0, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; } GL11.glShadeModel(GL11.GL_SMOOTH); diff --git a/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java index bd65a5e2d..bd234d71d 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java @@ -1,16 +1,20 @@ package com.hbm.tileentity; +import com.hbm.config.GeneralConfig; import com.hbm.handler.threading.PacketThreading; import com.hbm.packet.toclient.BufPacket; import com.hbm.sound.AudioWrapper; import com.hbm.util.fauxpointtwelve.BlockPos; -import api.hbm.fluidmk2.IFluidUserMK2; import api.hbm.tile.ILoadedTile; import cpw.mods.fml.common.network.NetworkRegistry; import io.netty.buffer.ByteBuf; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; public class TileEntityLoadedBase extends TileEntity implements ILoadedTile, IBufPacketReceiver { @@ -29,8 +33,6 @@ public class TileEntityLoadedBase extends TileEntity implements ILoadedTile, IBu public void onChunkUnload() { super.onChunkUnload(); this.isLoaded = false; - - if(this instanceof IFluidUserMK2) markChanged(); } /** The "chunks is modified, pls don't forget to save me" effect of markDirty, minus the block updates */ @@ -101,8 +103,59 @@ public class TileEntityLoadedBase extends TileEntity implements ILoadedTile, IBu PacketThreading.createAllAroundThreadedPacket(packet, new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); } - public void checkTilt(BlockPos[] floor, boolean extraHeavy) { + public void checkTilt(boolean extraHeavy) { + if(!GeneralConfig.enable528MachineGravity) { this.tilted = false; return; } + if(this.getFloorCount() <= 0) { this.tilted = false; return; } if(this.worldObj.getTotalWorldTime() % 20 != 0) return; - // TBI i need a break + + if(this.tiltBlocksChecked >= this.getFloorCount()) { + + if(this.tiltBlocksValid >= this.tiltBlocksChecked * 0.95) { + this.tilted = false; + } else { + // if(!this.tiled) play sound + this.tilted = true; + } + + this.markChanged(); + this.tiltBlocksChecked = 0; + this.tiltBlocksValid = 0; + } + + BlockPos pos = getFloorPosFromIndex(this.tiltBlocksChecked); + if(pos == null) return; + + Block ground = worldObj.getBlock(pos.getX(), pos.getY(), pos.getZ()); + this.tiltBlocksChecked++; + + // for extra heavy machines, the ground needs to: + // * be a fully solid block (side UP is checked for custom behavior) + // * be opaque + // * NOT be sand, cloth or ground material + // * have an explosion resistance of stone or greater + if(extraHeavy) { + if(!ground.isBlockSolid(worldObj, pos.getX(), pos.getY(), pos.getZ(), 1)) return; + if(!ground.isNormalCube()) return; + if(ground.getMaterial() == Material.sand || ground.getMaterial() == Material.cloth || ground.getMaterial() == Material.ground) return; + if(ground.getExplosionResistance(null) < Blocks.stone.getExplosionResistance(null)) return; + this.tiltBlocksValid++; + // for standard machines, the ground needs to: + // * be solid at the top + // * NOT be sand + } else { + if(!ground.isSideSolid(worldObj, pos.getX(), pos.getY(), pos.getZ(), ForgeDirection.UP)) return; + if(ground.getMaterial() == Material.sand) return; + this.tiltBlocksValid++; + } + } + + public int getFloorCount() { return 0; } + public BlockPos getFloorPosFromIndex(int index) { return null; } + + public BlockPos standardFloor3x3(int index) { + return new BlockPos(xCoord - 1 + (index / 2) * 2, yCoord - 1, zCoord - 2 + (index % 2) * 2); + } + public BlockPos standardFloor5x5(int index) { + return new BlockPos(xCoord - 2 + (index / 3) * 2, yCoord - 1, zCoord - 2 + (index % 3) * 2); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index c0833b105..11b6a930e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -26,9 +26,10 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; import com.hbm.util.EnumUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.fluid.IFluidStandardTransceiver; +import api.hbm.fluidmk2.IFluidStandardTransceiverMK2; import api.hbm.redstoneoverradio.IRORValueProvider; import api.hbm.redstoneoverradio.IRORInteractive; import api.hbm.tile.IInfoProviderEC; @@ -51,7 +52,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityReactorZirnox extends TileEntityMachineBase implements IControlReceiver, IFluidStandardTransceiver, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent, IRORValueProvider, IRORInteractive { +public class TileEntityReactorZirnox extends TileEntityMachineBase implements IControlReceiver, IFluidStandardTransceiverMK2, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent, IRORValueProvider, IRORInteractive { public int heat; public static final int maxHeat = 100000; @@ -187,12 +188,14 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC public void updateEntity() { if(!worldObj.isRemote) { + this.checkTilt(true); + if (redstonePowered) { isOn = true; } this.output = 0; - if(worldObj.getTotalWorldTime() % 20 == 0) { + if(!tilted && worldObj.getTotalWorldTime() % 20 == 0) { this.updateConnections(); } @@ -225,8 +228,8 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC } - for(DirPos pos : getConPos()) { - this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(!this.tilted) for(DirPos pos : getConPos()) { + this.tryProvide(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } checkIfMeltdown(); @@ -234,6 +237,9 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC this.networkPackNT(150); } } + + @Override public int getFloorCount() { return 3 * 3; } + @Override public BlockPos getFloorPosFromIndex(int index) { return this.standardFloor5x5(index); } @Override public void serialize(ByteBuf buf) { diff --git a/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionTorus.java b/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionTorus.java index 3659f644d..7a9b9b7dc 100644 --- a/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionTorus.java +++ b/src/main/java/com/hbm/tileentity/machine/fusion/TileEntityFusionTorus.java @@ -98,6 +98,7 @@ public class TileEntityFusionTorus extends TileEntityCooledBase implements IGUIP public void updateEntity() { if(!worldObj.isRemote) { + this.checkTilt(true); for(int i = 0; i < 4; i++) { if(klystronNodes[i] == null || klystronNodes[i].expired) klystronNodes[i] = createNode(KlystronNetworkProvider.THE_PROVIDER, ForgeDirection.getOrientation(i + 2)); @@ -177,7 +178,7 @@ public class TileEntityFusionTorus extends TileEntityCooledBase implements IGUIP this.plasmaEnergy = 0; this.fuelConsumption = 0; this.fusionModule.preUpdate(factor, collectors * 0.5D); - this.fusionModule.update(1D, 1D, this.isCool() && ignition, slots[1]); + this.fusionModule.update(1D, 1D, !this.tilted && this.isCool() && ignition, slots[1]); this.didProcess = this.fusionModule.didProcess; if(this.fusionModule.markDirty) this.markDirty(); if(didProcess && recipe != null) { @@ -393,6 +394,15 @@ public class TileEntityFusionTorus extends TileEntityCooledBase implements IGUIP new DirPos(xCoord - 2, yCoord + 5, zCoord - 6, Library.POS_Y), }; } + + @Override public int getFloorCount() { return 6 * 6; } + @Override public BlockPos getFloorPosFromIndex(int index) { + return new BlockPos( + xCoord - 5 + (index / 6) * 2, + yCoord - 1, + zCoord - 5 + (index % 6) * 2 + ); + } @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java index b10cf16a4..243fc61d1 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java @@ -24,6 +24,7 @@ import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; import com.hbm.util.ParticleUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.i18n.I18nUtil; @@ -104,6 +105,7 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements public void updateEntity() { if(!worldObj.isRemote) { + this.checkTilt(false); this.fluidUsed = 0; this.output = 0; @@ -246,6 +248,9 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements } } } + + @Override public int getFloorCount() { return 2 * 2; } + @Override public BlockPos getFloorPosFromIndex(int index) { return this.standardFloor3x3(index); } public DirPos[] getConPos() { return new DirPos[] { diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java index 770183b46..fb786e974 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java @@ -27,6 +27,7 @@ import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.*; import com.hbm.util.ParticleUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyReceiverMK2; @@ -132,6 +133,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements public void updateEntity() { if(!worldObj.isRemote) { + this.checkTilt(false); this.isOn = false; @@ -220,6 +222,9 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements } } + @Override public int getFloorCount() { return 2 * 2; } + @Override public BlockPos getFloorPosFromIndex(int index) { return this.standardFloor3x3(index); } + @Override public AudioWrapper createAudioLoop() { return MainRegistry.proxy.getLoopedSound("hbm:block.boiler", xCoord, yCoord, zCoord, 0.25F, 15F, 1.0F, 20); diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index 8f6d4f87e..67f638ebd 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -296,20 +296,9 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom return fluid == tank.getTankType(); } - @Override - public FluidTank[] getSendingTanks() { - return (mode == 1 || mode == 2) ? new FluidTank[] {tank} : new FluidTank[0]; - } - - @Override - public FluidTank[] getReceivingTanks() { - return (mode == 0 || mode == 1) ? new FluidTank[] {tank} : new FluidTank[0]; - } - - @Override - public FluidTank[] getAllTanks() { - return new FluidTank[] { tank }; - } + @Override public FluidTank[] getSendingTanks() { return (mode == 1 || mode == 2) ? new FluidTank[] {tank} : new FluidTank[0]; } + @Override public FluidTank[] getReceivingTanks() { return (mode == 0 || mode == 1) ? new FluidTank[] {tank} : new FluidTank[0]; } + @Override public FluidTank[] getAllTanks() { return new FluidTank[] { tank }; } @Override public ConnectionPriority getFluidPriority() { diff --git a/src/main/resources/assets/hbm/textures/models/machines/autosaw.png b/src/main/resources/assets/hbm/textures/models/machines/autosaw.png index 904021824f04aab5c81949ff6fff42ded62c2000..61a97f9bf0047ff596b65660b20ebf692411a050 100644 GIT binary patch literal 3214 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 T@sY~=U;r%4tW29Rx03z?X-wz- literal 3135 zcmai1c{mi_8XkjUMhGFMGP0$yOeAHE;TMKMDr4*nlCfo^EZIhOLNY%~_Ap@@TlTWd zSYil?$K=N#-7Zg2qENXcEDsWGzxNdvyO-9Kz2-EZLs>T#|4jN?N$ zc^1zzcjfue+uX2AQh9PGhc^PQRWi5yBRDfu^tg~OZ@#Ho76irhP+&fVp+>gJb5{6C zq7&N!N1T)9+29VS6Bjh3Dj`#$KQcpLT%*D;s@bL}{(9UKs!r8%haZG> ze;f}dA~kp281?Q+OA?a8=7!PyqA9fLZf~{hRLjC)kDztatZg=L1Y)(%4?Ozlnu#r#@(yM~!3bu7RUTJ=N00o|Zs4o}N=DG3$w%HR z!cte{Hdn-L(gGH(`T{8fnB^R^5OJtHbuttCkSW<^hgm$wR0^|RB*{=+OKZDii(^GRvyylWEC&sM z;ut$0Ekc0r<7Hp1C48J|3l+CCPNccy(?7m9AoQeNiA#&tvsLv~IYriE5Sj{J&7lq@_VT12g>TM(D1*1FsUfIFt;cVT>|*rR~Z^=R%MydBRmcI!+6 zN_($sJTR-onQbh`F_1Il$7H@dzGh)m($H;ZO{G#dC+Yvh{Aj`($cQC?IbF3{H6{EiORj^4jA zkuU60gayH)L|VVCAYX^wYrFo&VUEjF z4qv@fu?S`h{j)gJ{lm}Z+d6)6_wjG>*Mty5uHQn;v! z)Bi^+1N!SAdD2DeSphe`bUwLG68v@0Qk(9yMC-svJkRwn=&7r#%d)Ge)4hi>)8U!_ z^@6hF);P{UN~fgIFBI3iF%qW-qb;)8u$!^L$2oN(Ua5Pob)>btm0C8rOAPWl|Jiy$B5WU1;Y#hOF%3iq{}Bxn-mlG996+KxfcbxFG{@6PxBjs$K(cc&C# znZ@e1^^grsH?usZM>G~8v^dD5yixBP+{g-fy12Ni1JTqLddP@9?@XLi#C?lg1hd%(50Cf_tY9Cojb$}KmbB!MH- z7vg@y&2-V$G4ZdBd^{n$HCnhF_d~y=-$YA==^7kNCV||2d{9Hr6$(Ef zCHqK~>K~HF6q}S_-}l~Yp0{`qg0e{qo6f%CG~2oYu>1 zHi-WLHknidb9JZe634?PH4NfcH85ER9et8jW}bzWC3BG|?_ zaNmSnO7ZKK5flm7SQ&go2D{Xj4dg$fB8yiAJ2Jm;VCON)BTt1@OY*8Uf_C zw&VwE(+@Yx@YN3OJLn{X$9kv7BMP5NDq`?~b~Mgi zv5CX3*GPDMSPl?!l$I946p4P*rUz_*X~(YVGI#0BTJyodLEJ%5=60`(;SQnP&&-x5LzYIP0m9SM z(`_gJi6h(N@c3lGCK(?9!4w8qqn(K@%yWQmy9f3dC5JYlw*yL&y+YL7gQ~@fj<2;L zTU#a&t;0(J;^`1>K+0JyAi&GZ3-HV1)Mx@msMVf6H8ZoDSp!*fP%#bpL8Tu1d2o^q2IPy&YLz zH$Yjzt$B39@V-ym8_z)ynoh73r i;%4)*%qZ09=r~`rX6GULstD^x05CEzLsaQGM*ah&8T38? diff --git a/src/main/resources/assets/hbm/textures/models/machines/battery_base.png b/src/main/resources/assets/hbm/textures/models/machines/battery_base.png deleted file mode 100644 index a0b8e6447cbff211b6d26c12bca70eea87a54f8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 626 zcmV-&0*(ENP)^bf=-N`PzCkS3HL{rm=}U)5+>{HFCS50 zuSp&~gR^8>vnB4W8B zF9t<|XiMbm;;#$PmdJ`wBnZ1_?G%N(^ozDc9=Rj}V^`$1@?HY{YD|5ufZZ`NHh11u zWUM+B=i7Egilk*0mMC)NuDv%e{+RZ;RI7K};rW#Eo3=;(_sNAty8QRCF|uOY>xxvW z9Idvt$H)uO?LE!YOj>LS(rL;!V$lQ@StD-OLc}lHwM!mY3lc>#V`PZ~Y(=7oNS8}} zjpKOJijyqM@{vHZmOk_0SsMgJf}ltc*_lnr#IALi*agAFE(j)eK?GxDt;DW%c-96% zksv4%1Vw_NNDveWf+9gsBnXNGL6IOR5=3x6&|k@4iqp?*xbh1?EJQH7c+`X|zY?S* z#$M-s1LC?Nsy$-eIn~7rto*VoGRBce9vHh_JH;!p%LPj|X{&3CyeqMA*KSK>#dS99 z+8~08td-ccP9Rb<%9r9)bmiPZaMgRZ+ diff --git a/src/main/resources/assets/hbm/textures/models/machines/capacitor_base.png b/src/main/resources/assets/hbm/textures/models/machines/capacitor_base.png deleted file mode 100644 index 50e443456848953a3b5ff7e52d712d670522a7a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 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 TSO53B1wu|rS+Y*tB;@}9jm8_~ diff --git a/src/main/resources/assets/hbm/textures/models/machines/steamhammer.png b/src/main/resources/assets/hbm/textures/models/machines/steamhammer.png deleted file mode 100644 index ce0ae052e1ce70e45abd8cfddafdd752559148c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1907 zcmV-(2aNcMP)KW^kU6voNG2XPTB25GnO9gM8209&|mZ7in91w>sSK#Yak zOtZzd$zt!Yh115^CO$y!pcER~BUV;$=8GJ+&%J+OXY(hBYCOJCar^&H zY#+OSh}_Lt?F!U}5*Q`W+WQA?;K2cFAaKAM2pq6x^Bx?8G2D)ga`kOoRu{+5<8uGd zR-+dJ2VQh<{Zg6w0+9D@2ptv$I2mrmphX)(_f`zP7e!7G!GRN-74co}AM)4H1u5`B z)V~U2ka(CCh4$3yB1{LZSQJEX;Dr_}WjoNw1gnC|nwZPx`n3g*MkZhl1P)jOfdkgS zg99fs*^tp=TfBHH*%J*SIPk*vfln(Bcr<5Jo?8{FNG_=3dsnI=D`lxzTX|#;ivpZ1 zeS)c%YXgA;C%zAOOls%9H4r%P!uOGVZA)SjEbzYZz8&4l`_8n6j@-W1L>O6?+JYwq z-nyVo%=#(_e$yaL2v`Gw1J-Q5k@-amIXuqW7`YR2>8Mku`;Xb4JNn$KyK!0VkDtfo zKGMT)Uf{!{81%`U`|X{ui&TrB`hCl20n6R=9CZs`gIfYD3MfK%D~9e?48!C2uT;5Y z1UJ)et!Gt`CTt6v_3&Np@8il3wkXuCCDt>=mMId38O&g_=p4_~Jsl9E@5%bomJQ|&*KRkuXV;>F& z=l*{=)D{1~H-Bf@@2m41IBrTRsJH&JNAOc`=G%p`r8h#r6x-i$X}4O6P|t6&d5Z$v zP~)DERwYqAd_BJj1P+=ewhaJ*gH^E9^Jf>h(VCt%Kp*CP+vzqcSH-|8i1qx4;Gk)O zJ-@Mx&Q^dm5IA5B1P)jOfdkg$&!U_pqR!V1l3n0S24OtirmNHqlQkdYcz&P7&X?eqj;S{-QooZq zvp?q_rSwb3Pft%l>z|*W7cFn=z=KDklxlXA0c+hp4#O6rw-E5)Nzg)4N;M&xiLgx} ze^t|!sozDPu3{BH1W!l{(Y%E^v_$y$;FZUFrpm89@K3F1ZWXp}P-@JGZT@aB^JCB~ zYyHl$z2$BCSL3Hd4l98Oo{5r?v_x64v#j|J*`|khTUt*Oc<_wmj^-tV9XrdKT3GJ$ z#SodIhrkPc`xwvy(n&D`A~c9u0QSZdHs+aOG@2KBU{FGOA6 z%?lj3iJfIl9l!LoCc@0JTraD)z91lQ&@{1afbj9bF~B@1NbF3@h~QuqENufo;Gk(@ z+W?yvI5H=%IXx%CU#enF;yIJVq*BAmJvViHYURfV+@LQCU=0KgSOb9r)}WC|bXwxx z2&ImH?bFF1f&K^^};9;fF@NcpEIJ0*(m zg@p(Xl29^|hm^JX2oBs(p83=RUkNF5ceo0@kPyKEYanpI8VDS)1_B4HfxrQ4AaKAM z2pq5md2rywmUq@qK$Vz2>ZHb5q56)b1`!;vX7dre*o3Obh!;9Cm5Cmys^nDRYX%X# z0698zZM~D2FPo3xIms=;XCI7cZUqrM6D1=oqPZRN%3u4un0@5vvZ16Njn*XhXt6W< zn>`-eaoFl-TmR9>-d$}9G4_!Yeh~R)V$b(06 zI2@WjKV+Vn@ZiI5^S%Gn-TeA$Z~5M`zWC-U9UdG2C-C6RiS@myBDHn>>yX-n1A#Ng zY7I651kRlPshfUrX|$;>m3#ZImhXSHZ2!}AvHN4ZVb~(Ix^NaR1knbhwuc7?tbxD* tYanpI8VDS)1_B4HfxrQ4AaKB%{{hic2yuHKt;hfX002ovPDHLkV1iK5jRgPz