From bc98b85c191684ec0e201d2989bafa36ff7ef2ef Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 21 Apr 2022 16:11:10 +0200 Subject: [PATCH 1/3] fluid IO stuff once again, press preheater --- .../hbm/fluid/IFluidStandardTransceiver.java | 2 + src/main/java/com/hbm/blocks/ModBlocks.java | 3 ++ .../java/com/hbm/main/CraftingManager.java | 1 + .../machine/TileEntityCoreEmitter.java | 9 +++- .../machine/TileEntityCoreInjector.java | 14 ++++-- .../machine/TileEntityElectrolyser.java | 2 +- .../tileentity/machine/TileEntityITER.java | 13 ++++- .../machine/TileEntityMachineBoiler.java | 17 ++++++- .../TileEntityMachineBoilerElectric.java | 15 +++++- .../machine/TileEntityMachinePress.java | 25 ++++++++-- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../hbm/textures/blocks/press_preheater.png | Bin 0 -> 2878 bytes .../blocks/press_preheater.png.mcmeta | 45 ++++++++++++++++++ 14 files changed, 134 insertions(+), 14 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/blocks/press_preheater.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/press_preheater.png.mcmeta diff --git a/src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java b/src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java index 63f82526f..c9a40221f 100644 --- a/src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java +++ b/src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java @@ -12,6 +12,8 @@ import com.hbm.inventory.fluid.FluidType; * * The American Heritage® Dictionary of the English Language, 5th Edition. * + * Only supports one tank per type (for in- and output separately) + * * @author hbm * */ diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index f347d2abd..9e7b3e7d2 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1000,6 +1000,7 @@ public class ModBlocks { public static Block machine_selenium; public static final int guiID_machine_selenium = 63; + public static Block press_preheater; public static Block machine_press; public static final int guiID_machine_press = 53; public static Block machine_epress; @@ -2127,6 +2128,7 @@ public class ModBlocks { machine_bat9000 = new MachineBigAssTank9000(Material.iron).setBlockName("machine_bat9000").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_orbus = new MachineOrbus(Material.iron).setBlockName("machine_orbus").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_turbofan = new MachineTurbofan(Material.iron).setBlockName("machine_turbofan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_turbofan"); + press_preheater = new BlockBase(Material.iron).setBlockName("press_preheater").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":press_preheater"); machine_press = new MachinePress(Material.iron).setBlockName("machine_press").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_press"); machine_epress = new MachineEPress(Material.iron).setBlockName("machine_epress").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_epress"); machine_selenium = new MachineSeleniumEngine(Material.iron).setBlockName("machine_selenium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_selenium"); @@ -2913,6 +2915,7 @@ public class ModBlocks { GameRegistry.registerBlock(anvil_osmiridium, ItemBlockBase.class, anvil_osmiridium.getUnlocalizedName()); GameRegistry.registerBlock(anvil_murky, ItemBlockBase.class, anvil_murky.getUnlocalizedName()); + GameRegistry.registerBlock(press_preheater, press_preheater.getUnlocalizedName()); GameRegistry.registerBlock(machine_press, machine_press.getUnlocalizedName()); GameRegistry.registerBlock(machine_epress, machine_epress.getUnlocalizedName()); GameRegistry.registerBlock(machine_difurnace_off, machine_difurnace_off.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 8dd1dbdbc..54f492014 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -873,6 +873,7 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.STARTER.ordinal()), new Object[] { Items.book, Items.iron_ingot }); addRecipeAuto(new ItemStack(ModBlocks.charger), new Object[] { "IGI", "ICI", "PDP", 'I', STEEL.ingot(), 'G', Items.glowstone_dust, 'C', ModBlocks.red_wire_coated, 'P', IRON.plate(), 'D', ModItems.coil_copper }); + addRecipeAuto(new ItemStack(ModBlocks.press_preheater), new Object[] { "CCC", "SLS", "TST", 'C', ModItems.board_copper, 'S', Blocks.stone, 'L', Fluids.LAVA.getDict(1000), 'T', W.ingot() }); addShapelessAuto(new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_RESTORED.ordinal()), new Object[] { new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_DIGAMMA.ordinal()), KEY_TOOL_SCREWDRIVER, ModItems.ducttape, ModItems.armor_polish }); addShapelessAuto(new ItemStack(ModItems.holotape_damaged), new Object[] { DictFrame.fromOne(ModItems.holotape_image, EnumHoloImage.HOLO_RESTORED), ModBlocks.muffler, ModItems.crt_display, ModItems.gem_alexandrite /* placeholder for amplifier */ }); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index d4c0341dc..ec0255cbd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -11,6 +11,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.block.ILaserable; import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -23,7 +24,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, ILaserable { +public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, ILaserable, IFluidStandardReceiver { public long power; public static final long maxPower = 1000000000L; @@ -52,6 +53,7 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne if (!worldObj.isRemote) { this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord); + this.subscribeToAllAround(tank.getTankType(), this); watts = MathHelper.clamp_int(watts, 1, 100); long demand = maxPower * watts / 2000; @@ -280,4 +282,9 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne nbt.setBoolean("isOn", isOn); tank.writeToNBT(nbt, "tank"); } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tank}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java index 40e5ab8ab..69f7da9e4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java @@ -1,14 +1,12 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.FluidTank; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.tileentity.TileEntityMachineBase; +import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.init.Blocks; @@ -17,7 +15,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCoreInjector extends TileEntityMachineBase implements IFluidAcceptor { +public class TileEntityCoreInjector extends TileEntityMachineBase implements IFluidAcceptor, IFluidStandardReceiver { public FluidTank[] tanks; public static final int range = 15; @@ -39,6 +37,9 @@ public class TileEntityCoreInjector extends TileEntityMachineBase implements IFl public void updateEntity() { if(!worldObj.isRemote) { + + this.subscribeToAllAround(tanks[0].getTankType(), this); + this.subscribeToAllAround(tanks[1].getTankType(), this); tanks[0].setType(0, 1, slots); tanks[1].setType(2, 3, slots); @@ -170,4 +171,9 @@ public class TileEntityCoreInjector extends TileEntityMachineBase implements IFl tanks[1].writeToNBT(nbt, "fuel2"); } + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tanks[0], tanks[1]}; + } + } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java index 58864d289..0608cff46 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java @@ -20,7 +20,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityElectrolyser extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidAcceptor{ +public class TileEntityElectrolyser extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidAcceptor /* TODO: new fluid API */ { public long power; public static final long maxPower = 20000000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index 56461c5a7..fa380a2b3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -20,6 +20,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; @@ -29,7 +30,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, IFluidSource { +public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, IFluidSource, IFluidStandardTransceiver /* TODO: finish fluid API impl */ { public long power; public static final long maxPower = 10000000; @@ -478,4 +479,14 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser player.triggerAchievement(MainRegistry.achMeltdown); } } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {tanks[1]}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tanks[0]}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoiler.java index bfa85531e..80d53d3a7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoiler.java @@ -16,6 +16,7 @@ import com.hbm.lib.Library; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; +import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; @@ -25,7 +26,7 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityFurnace; -public class TileEntityMachineBoiler extends TileEntity implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource { +public class TileEntityMachineBoiler extends TileEntity implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IFluidStandardTransceiver { private ItemStack slots[]; @@ -218,6 +219,10 @@ public class TileEntityMachineBoiler extends TileEntity implements ISidedInvento if(!worldObj.isRemote) { + + this.subscribeToAllAround(tanks[0].getTankType(), this); + this.sendFluidToAll(tanks[1].getTankType(), this); + age++; if(age >= 20) { @@ -396,4 +401,14 @@ public class TileEntityMachineBoiler extends TileEntity implements ISidedInvento public void clearFluidList(FluidType type) { list.clear(); } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {tanks[1]}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tanks[0]}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java index b24ebc204..ef278e48e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java @@ -20,6 +20,7 @@ import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; @@ -30,7 +31,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineBoilerElectric extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyUser { +public class TileEntityMachineBoilerElectric extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyUser, IFluidStandardTransceiver { private ItemStack slots[]; @@ -229,6 +230,8 @@ public class TileEntityMachineBoilerElectric extends TileEntityLoadedBase implem if(!worldObj.isRemote) { this.updateConnections(); + this.subscribeToAllAround(tanks[0].getTankType(), this); + this.sendFluidToAll(tanks[1].getTankType(), this); age++; if(age >= 20) @@ -415,4 +418,14 @@ public class TileEntityMachineBoilerElectric extends TileEntityLoadedBase implem public long getMaxPower() { return maxPower; } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {tanks[1]}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tanks[0]}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java index ec21fbeb7..57e682e25 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.recipes.MachineRecipes; import com.hbm.inventory.recipes.PressRecipes; import com.hbm.items.machine.ItemStamp; @@ -17,6 +18,7 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachinePress extends TileEntity implements ISidedInventory { @@ -203,16 +205,29 @@ public class TileEntityMachinePress extends TileEntity implements ISidedInventor @Override public void updateEntity() { - if(!worldObj.isRemote) - { - if(burnTime > 0) { + if(!worldObj.isRemote) { + + boolean preheated = false; + + if(power < maxPower / 3 - 5) { + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if(worldObj.getBlock(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ) == ModBlocks.press_preheater) { + preheated = true; + break; + } + } + } + + if(burnTime > 0 || preheated) { this.burnTime--; this.power++; - if(power > maxPower) + if(power > maxPower) { power = maxPower; + } } else { - if(power > 0) + if(power > 0 && !preheated) { power--; + } } if(!worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 71e056b3a..4eeca252c 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3497,6 +3497,7 @@ tile.plasma.name=Plasma tile.plasma_heater.name=Plasmaerhitzer tile.pole_satellite_receiver.name=Satellitenschüssel tile.pole_top.name=Antennenspitze +tile.press_preheater.name=Presse-Vorheizer tile.pribris.name=RBMK-Schutt tile.pribris_burning.name=Flammender RBMK-Schutt tile.pribris_digamma.name=Geschwärzter RBMK-Schutt diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index bc810657b..21c455a38 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3871,6 +3871,7 @@ tile.plasma.name=Plasma tile.plasma_heater.name=Plasma Heater tile.pole_satellite_receiver.name=Satellite Dish tile.pole_top.name=Antenna Top +tile.press_preheater.name=Burner Press Preheater tile.pribris.name=RBMK Debris tile.pribris_burning.name=Flaming RBMK Debris tile.pribris_digamma.name=Blackened RBMK Debris diff --git a/src/main/resources/assets/hbm/textures/blocks/press_preheater.png b/src/main/resources/assets/hbm/textures/blocks/press_preheater.png new file mode 100644 index 0000000000000000000000000000000000000000..a304e79108616d32959bea1c6016e8e1e0530a6a GIT binary patch literal 2878 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/press_preheater.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/press_preheater.png.mcmeta new file mode 100644 index 000000000..55438bf34 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/press_preheater.png.mcmeta @@ -0,0 +1,45 @@ +{ + "animation": { + "frametime": 2, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file From 85165e062177ca587fe18b06c506c3f276efc296 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 21 Apr 2022 23:34:51 +0200 Subject: [PATCH 2/3] large door, some more fixes --- .../java/com/hbm/blocks/BlockDummyable.java | 1 - .../hbm/blocks/generic/BlockDoorGeneric.java | 17 +++++++---------- .../com/hbm/render/item/ItemRenderLibrary.java | 15 +++++++++++++++ .../hbm/tileentity/TileEntityDoorGeneric.java | 2 +- .../tileentity/machine/TileEntityCharger.java | 10 ++++++---- .../machine/TileEntityMachineChemplant.java | 8 ++++---- .../machine/TileEntityMachinePress.java | 7 +++++-- 7 files changed, 38 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/hbm/blocks/BlockDummyable.java b/src/main/java/com/hbm/blocks/BlockDummyable.java index 2f74ec3fc..dd4550db6 100644 --- a/src/main/java/com/hbm/blocks/BlockDummyable.java +++ b/src/main/java/com/hbm/blocks/BlockDummyable.java @@ -15,7 +15,6 @@ import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java index 318cb943a..e05f0f4ca 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java @@ -13,7 +13,6 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.EnumFacing; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -74,6 +73,8 @@ public class BlockDoorGeneric extends BlockDummyable { AxisAlignedBB box = getCollisionBoundingBoxFromPool(worldIn, x, y, z); if(box.minY == 0 && box.maxY == 0) return; + if(hasExtra(worldIn.getBlockMetadata(x, y, z))) + return; super.addCollisionBoxesToList( worldIn, x, y, z, entityBox, collidingBoxes, entityIn); } @@ -107,15 +108,11 @@ public class BlockDoorGeneric extends BlockDummyable { ForgeDirection dir = ForgeDirection.getOrientation(te2.getBlockMetadata() - BlockDummyable.offset); AxisAlignedBB box = type.getBlockBound(x - core[0], y - core[1], z - core[2], open ); //.rotate(dir.getBlockRotation().add(Rotation.COUNTERCLOCKWISE_90)), open); TODO: add rotation //System.out.println(te2.getBlockMetadata()-offset); - switch(te2.getBlockMetadata()-offset){ - case 2: - return AxisAlignedBB.getBoundingBox(1-box.minX, box.minY, 1-box.minZ, 1-box.maxX, box.maxY, 1-box.maxZ); - case 4: - return AxisAlignedBB.getBoundingBox(1-box.minZ, box.minY, box.minX, 1-box.maxZ, box.maxY, box.maxX); - case 3: - return AxisAlignedBB.getBoundingBox(box.minX, box.minY, box.minZ, box.maxX, box.maxY, box.maxZ); - case 5: - return AxisAlignedBB.getBoundingBox(box.minZ, box.minY, 1-box.minX, box.maxZ, box.maxY, 1-box.maxX); + switch(te2.getBlockMetadata() - offset){ + case 2: return AxisAlignedBB.getBoundingBox(1 - box.minX, box.minY, 1 - box.minZ, 1 - box.maxX, box.maxY, 1 - box.maxZ); + case 4: return AxisAlignedBB.getBoundingBox(1 - box.minZ, box.minY, box.minX, 1 - box.maxZ, box.maxY, box.maxX); + case 3: return AxisAlignedBB.getBoundingBox(box.minX, box.minY, box.minZ, box.maxX, box.maxY, box.maxZ); + case 5: return AxisAlignedBB.getBoundingBox(box.minZ, box.minY, 1 - box.minX, box.maxZ, box.maxY, 1 - box.maxX); } return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); } diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 15af36104..48eee5a59 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -1269,6 +1269,21 @@ public class ItemRenderLibrary { bindTexture(ResourceManager.substation_tex); ResourceManager.substation.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.charger), new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -7, 0); + GL11.glScaled(10, 10, 10); + } + public void renderCommon() { + GL11.glScaled(2, 2, 2); + GL11.glTranslated(0.5, 0, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.charger_tex); + ResourceManager.charger.renderPart("Base"); + ResourceManager.charger.renderPart("Slide"); + GL11.glShadeModel(GL11.GL_FLAT); + }}); } private static void bindTexture(ResourceLocation res) { diff --git a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java index a2df2e270..9bce8ab95 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java +++ b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java @@ -91,7 +91,7 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn if(finalPos.equals(pos)) { this.shouldUseBB = false; } else { - ((BlockDummyable)getBlockType()).removeExtra(worldObj, finalPos.getX(), finalPos.getY(), finalPos.getZ()); + ((BlockDummyable)getBlockType()).makeExtra(worldObj, finalPos.getX(), finalPos.getY(), finalPos.getZ()); } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java index c1f8294c5..9e47668de 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java @@ -19,8 +19,8 @@ public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyUs private List players = new ArrayList(); private long charge = 0; + private int lastOp = 0; - long lastOp = 0; boolean particles = false; public int usingTicks; @@ -52,10 +52,12 @@ public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyUs } } - particles = worldObj.getTotalWorldTime() - lastOp < 4; + particles = lastOp > 0; if(particles) { + lastOp--; + if(worldObj.getTotalWorldTime() % 20 == 0) worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "random.fizz", 0.2F, 0.5F); } @@ -116,8 +118,6 @@ public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyUs if(this.usingTicks < delay || power == 0) return power; - lastOp = worldObj.getTotalWorldTime(); - for(EntityPlayer player : players) { for(int i = 0; i < 5; i++) { @@ -131,6 +131,8 @@ public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyUs toCharge = Math.min(toCharge, power / 5); battery.chargeBattery(stack, toCharge); power -= toCharge; + + lastOp = 4; } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index 8717ebf39..b4838a5f1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -227,10 +227,10 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements } private void setupTanks(ChemRecipe recipe) { - if(recipe.inputFluids[0] != null) tanks[0].setTankType(recipe.inputFluids[0].type); - if(recipe.inputFluids[1] != null) tanks[1].setTankType(recipe.inputFluids[1].type); - if(recipe.outputFluids[0] != null) tanks[2].setTankType(recipe.outputFluids[0].type); - if(recipe.outputFluids[1] != null) tanks[3].setTankType(recipe.outputFluids[1].type); + if(recipe.inputFluids[0] != null) tanks[0].setTankType(recipe.inputFluids[0].type); else tanks[0].setTankType(Fluids.NONE); + if(recipe.inputFluids[1] != null) tanks[1].setTankType(recipe.inputFluids[1].type); else tanks[1].setTankType(Fluids.NONE); + if(recipe.outputFluids[0] != null) tanks[2].setTankType(recipe.outputFluids[0].type); else tanks[2].setTankType(Fluids.NONE); + if(recipe.outputFluids[1] != null) tanks[3].setTankType(recipe.outputFluids[1].type); else tanks[3].setTankType(Fluids.NONE); } private boolean hasRequiredFluids(ChemRecipe recipe) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java index 57e682e25..0929c2dc6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java @@ -218,14 +218,17 @@ public class TileEntityMachinePress extends TileEntity implements ISidedInventor } } - if(burnTime > 0 || preheated) { + if(preheated) + power += 2; + + if(burnTime > 0) { this.burnTime--; this.power++; if(power > maxPower) { power = maxPower; } } else { - if(power > 0 && !preheated) { + if(power > 0) { power--; } } From 5f1c5cc5badf0bd76cab600bb76ab3cc05eaaa5e Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 22 Apr 2022 15:24:48 +0200 Subject: [PATCH 3/3] a bit of fluid IO, tooltips for hadron power plugs --- src/main/java/api/hbm/energy/IEnergyUser.java | 4 ++ .../hbm/blocks/machine/BlockHadronPower.java | 31 ++++++++++++++- .../machine/TileEntityHadronPower.java | 12 +++++- .../machine/TileEntityMachineCMBFactory.java | 16 ++++---- .../machine/TileEntityMachineChemplant.java | 35 ++++++++++++++--- .../machine/TileEntityMachineCoal.java | 2 +- .../TileEntityMachineCrystallizer.java | 36 +++++++++++++---- .../com/hbm/util/fauxpointtwelve/DirPos.java | 39 +++++++++++++++++++ 8 files changed, 151 insertions(+), 24 deletions(-) create mode 100644 src/main/java/com/hbm/util/fauxpointtwelve/DirPos.java diff --git a/src/main/java/api/hbm/energy/IEnergyUser.java b/src/main/java/api/hbm/energy/IEnergyUser.java index cc648fea3..601730d3e 100644 --- a/src/main/java/api/hbm/energy/IEnergyUser.java +++ b/src/main/java/api/hbm/energy/IEnergyUser.java @@ -93,6 +93,10 @@ public interface IEnergyUser extends IEnergyConnector { } } + public default void updateStandardConnections(World world, TileEntity te) { + updateStandardConnections(world, te.xCoord, te.yCoord, te.zCoord); + } + public default void updateStandardConnections(World world, int x, int y, int z) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) diff --git a/src/main/java/com/hbm/blocks/machine/BlockHadronPower.java b/src/main/java/com/hbm/blocks/machine/BlockHadronPower.java index 80dd89ff9..66da679ba 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockHadronPower.java +++ b/src/main/java/com/hbm/blocks/machine/BlockHadronPower.java @@ -1,13 +1,20 @@ package com.hbm.blocks.machine; +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; import com.hbm.tileentity.machine.TileEntityHadronPower; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; -public class BlockHadronPower extends BlockContainer { +public class BlockHadronPower extends BlockContainer implements ILookOverlay { public long power; @@ -20,4 +27,26 @@ public class BlockHadronPower extends BlockContainer { public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityHadronPower(); } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityHadronPower)) + return; + + TileEntityHadronPower battery = (TileEntityHadronPower) te; + + List text = new ArrayList(); + text.add(BobMathUtil.getShortNumber(battery.getPower()) + " / " + BobMathUtil.getShortNumber(battery.getMaxPower()) + "HE"); + + double percent = (double) battery.getPower() / (double) battery.getMaxPower(); + int charge = (int) Math.floor(percent * 10_000D); + int color = ((int) (0xFF - 0xFF * percent)) << 16 | ((int)(0xFF * percent) << 8); + + text.add("&[" + color + "&]" + (charge / 100D) + "%"); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java index 1b5e9ecd1..4e8bcf815 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.machine.BlockHadronPower; +import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; @@ -8,7 +9,7 @@ import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityHadronPower extends TileEntityLoadedBase implements IEnergyUser { +public class TileEntityHadronPower extends TileEntityLoadedBase implements IEnergyUser, INBTPacketReceiver { public long power; @@ -24,9 +25,18 @@ public class TileEntityHadronPower extends TileEntityLoadedBase implements IEner for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + INBTPacketReceiver.networkPack(this, data, 15); } } + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + } + @Override public void setPower(long i) { power = i; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java index 819467f45..932d78533 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java @@ -13,6 +13,7 @@ import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; @@ -20,9 +21,8 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCMBFactory extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor { +public class TileEntityMachineCMBFactory extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver { private ItemStack slots[]; @@ -309,21 +309,18 @@ public class TileEntityMachineCMBFactory extends TileEntityLoadedBase implements } private void updateConnections() { - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + this.updateStandardConnections(worldObj, this); + this.subscribeToAllAround(tank.getTankType(), this); } @Override public void setPower(long i) { power = i; - } @Override public long getPower() { return power; - } @Override @@ -356,4 +353,9 @@ public class TileEntityMachineCMBFactory extends TileEntityLoadedBase implements if(type.name().equals(tank.getTankType().name())) tank.setFill(i); } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tank}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index b4838a5f1..ce51d2e51 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -20,8 +20,10 @@ import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.InventoryUtil; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.inventory.IInventory; @@ -31,7 +33,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineChemplant extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidAcceptor { +public class TileEntityMachineChemplant extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver { public long power; public static final long maxPower = 100000; @@ -195,14 +197,25 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements } private void updateConnections() { + + for(DirPos pos : getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + public DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - - this.trySubscribe(worldObj, xCoord + rot.offsetX * 3, yCoord, zCoord + rot.offsetZ * 3, rot); - this.trySubscribe(worldObj, xCoord - rot.offsetX * 2, yCoord, zCoord - rot.offsetZ * 2, rot.getOpposite()); - this.trySubscribe(worldObj, xCoord + rot.offsetX * 3 + dir.offsetX, yCoord, zCoord + rot.offsetZ * 3 + dir.offsetZ, rot); - this.trySubscribe(worldObj, xCoord - rot.offsetX * 2 + dir.offsetX, yCoord, zCoord - rot.offsetZ * 2 + dir.offsetZ, rot.getOpposite()); + + return new DirPos[] { + new DirPos(xCoord + rot.offsetX * 3, yCoord, zCoord + rot.offsetZ * 3, rot), + new DirPos(xCoord - rot.offsetX * 2, yCoord, zCoord - rot.offsetZ * 2, rot.getOpposite()), + new DirPos(xCoord + rot.offsetX * 3 + dir.offsetX, yCoord, zCoord + rot.offsetZ * 3 + dir.offsetZ, rot), + new DirPos(xCoord - rot.offsetX * 2 + dir.offsetX, yCoord, zCoord - rot.offsetZ * 2 + dir.offsetZ, rot.getOpposite()) + }; } private boolean canProcess() { @@ -565,4 +578,14 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {tanks[2], tanks[3]}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tanks[0], tanks[1]}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java index abeb01a6d..ddb8ca7c8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java @@ -226,7 +226,7 @@ public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISide for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); - this.subscribeToAllAround(Fluids.WATER, worldObj, xCoord, yCoord, zCoord); + this.subscribeToAllAround(Fluids.WATER, this); //Water tank.loadTank(0, 3, slots); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index 9c2b8a63f..994332454 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -1,8 +1,5 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.FluidTank; @@ -13,9 +10,11 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.item.ItemStack; @@ -24,7 +23,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCrystallizer extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor { +public class TileEntityMachineCrystallizer extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, IFluidStandardReceiver { public long power; public static final long maxPower = 1000000; @@ -101,18 +100,34 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme } private void updateConnections() { + + for(DirPos pos : getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + protected DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); if(dir == ForgeDirection.NORTH || dir == ForgeDirection.SOUTH) { - this.trySubscribe(worldObj, xCoord + 2, yCoord + 5, zCoord, Library.POS_X); - this.trySubscribe(worldObj, xCoord - 2, yCoord + 5, zCoord, Library.NEG_X); + + return new DirPos[] { + new DirPos(xCoord + 2, yCoord + 5, zCoord, Library.POS_X), + new DirPos(xCoord - 2, yCoord + 5, zCoord, Library.NEG_X) + }; } if(dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) { - this.trySubscribe(worldObj, xCoord, yCoord + 5, zCoord + 2, Library.POS_Z); - this.trySubscribe(worldObj, xCoord, yCoord + 5, zCoord - 2, Library.NEG_Z); + + return new DirPos[] { + new DirPos(xCoord, yCoord + 5, zCoord + 2, Library.POS_Z), + new DirPos(xCoord, yCoord + 5, zCoord - 2, Library.NEG_Z) + }; } + + return new DirPos[0]; } public void networkUnpack(NBTTagCompound data) { @@ -360,4 +375,9 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme if(stack != null && i >= 5 && i <= 6 && stack.getItem() instanceof ItemMachineUpgrade) worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tank}; + } } diff --git a/src/main/java/com/hbm/util/fauxpointtwelve/DirPos.java b/src/main/java/com/hbm/util/fauxpointtwelve/DirPos.java new file mode 100644 index 000000000..b3a40bcd4 --- /dev/null +++ b/src/main/java/com/hbm/util/fauxpointtwelve/DirPos.java @@ -0,0 +1,39 @@ +package com.hbm.util.fauxpointtwelve; + +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; + +public class DirPos extends BlockPos { + + protected ForgeDirection dir; + + public DirPos(int x, int y, int z, ForgeDirection dir) { + super(x, y, z); + this.dir = dir; + } + + public DirPos(TileEntity te, ForgeDirection dir) { + super(te); + this.dir = dir; + } + + public DirPos(double x, double y, double z, ForgeDirection dir) { + super(x, y, z); + this.dir = dir; + } + + @Override + public DirPos rotate(Rotation rotationIn) { + switch(rotationIn) { + case NONE: + default: return this; + case CLOCKWISE_90: return new DirPos(-this.getZ(), this.getY(), this.getX(), this.getDir().getRotation(ForgeDirection.UP)); + case CLOCKWISE_180: return new DirPos(-this.getX(), this.getY(), -this.getZ(), this.getDir().getOpposite()); + case COUNTERCLOCKWISE_90: return new DirPos(this.getZ(), this.getY(), -this.getX(), this.getDir().getRotation(ForgeDirection.DOWN)); + } + } + + public ForgeDirection getDir() { + return this.dir; + } +}