From 85c804fa112fd1f19c91e45d150a787cfbf0f7a8 Mon Sep 17 00:00:00 2001 From: Shawn Buckley Date: Sun, 18 Oct 2015 23:04:39 -0400 Subject: Move source directory --- .../java/gregtech/common/covers/GT_Cover_Arm.java | 112 ++++++++++++ .../common/covers/GT_Cover_Blastproof.java | 25 +++ .../common/covers/GT_Cover_ControlsWork.java | 85 ++++++++++ .../gregtech/common/covers/GT_Cover_Conveyor.java | 133 +++++++++++++++ .../gregtech/common/covers/GT_Cover_Crafting.java | 35 ++++ .../gregtech/common/covers/GT_Cover_DoesWork.java | 94 +++++++++++ .../gregtech/common/covers/GT_Cover_Drain.java | 108 ++++++++++++ .../gregtech/common/covers/GT_Cover_EUMeter.java | 187 +++++++++++++++++++++ .../common/covers/GT_Cover_EnergyOnly.java | 102 +++++++++++ .../gregtech/common/covers/GT_Cover_ItemMeter.java | 93 ++++++++++ .../java/gregtech/common/covers/GT_Cover_Lens.java | 20 +++ .../common/covers/GT_Cover_LiquidMeter.java | 97 +++++++++++ .../common/covers/GT_Cover_NeedMaintainance.java | 122 ++++++++++++++ .../common/covers/GT_Cover_PlayerDetector.java | 120 +++++++++++++ .../java/gregtech/common/covers/GT_Cover_Pump.java | 187 +++++++++++++++++++++ .../common/covers/GT_Cover_RedstoneConductor.java | 84 +++++++++ .../covers/GT_Cover_RedstoneReceiverExternal.java | 25 +++ .../covers/GT_Cover_RedstoneReceiverInternal.java | 24 +++ .../common/covers/GT_Cover_RedstoneSignalizer.java | 81 +++++++++ .../GT_Cover_RedstoneTransmitterExternal.java | 25 +++ .../GT_Cover_RedstoneTransmitterInternal.java | 30 ++++ .../covers/GT_Cover_RedstoneWirelessBase.java | 98 +++++++++++ .../gregtech/common/covers/GT_Cover_Screen.java | 80 +++++++++ .../gregtech/common/covers/GT_Cover_Shutter.java | 85 ++++++++++ .../common/covers/GT_Cover_SolarPanel.java | 41 +++++ .../java/gregtech/common/covers/GT_Cover_Vent.java | 40 +++++ 26 files changed, 2133 insertions(+) create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_Arm.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_Blastproof.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_ControlsWork.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_Conveyor.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_Crafting.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_DoesWork.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_Drain.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_EUMeter.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_EnergyOnly.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_Lens.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_NeedMaintainance.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_PlayerDetector.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_Pump.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_RedstoneConductor.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_RedstoneReceiverExternal.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_RedstoneReceiverInternal.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_RedstoneSignalizer.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_RedstoneTransmitterExternal.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_RedstoneTransmitterInternal.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_Screen.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_Shutter.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_SolarPanel.java create mode 100644 src/main/java/gregtech/common/covers/GT_Cover_Vent.java (limited to 'src/main/java/gregtech/common/covers') diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Arm.java b/src/main/java/gregtech/common/covers/GT_Cover_Arm.java new file mode 100644 index 0000000000..3212ce92af --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_Arm.java @@ -0,0 +1,112 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IMachineProgress; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.fluids.Fluid; + +public class GT_Cover_Arm + extends GT_CoverBehavior +{ + public final int mTickRate; + + public GT_Cover_Arm(int aTickRate) + { + this.mTickRate = aTickRate; + } + + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + if ((aCoverVariable == 0) || (((aTileEntity instanceof IMachineProgress)) && (!((IMachineProgress)aTileEntity).isAllowedToWork()))) { + return aCoverVariable; + } + TileEntity tTileEntity = aTileEntity.getTileEntityAtSide(aSide); + aTileEntity.decreaseStoredEnergyUnits(1L, true); + if (aTileEntity.getUniversalEnergyCapacity() >= 128L) + { + if (aTileEntity.isUniversalEnergyStored(256L)) { + aTileEntity.decreaseStoredEnergyUnits(4 * GT_Utility.moveOneItemStackIntoSlot(aCoverVariable > 0 ? aTileEntity : tTileEntity, aCoverVariable > 0 ? tTileEntity : aTileEntity, aCoverVariable > 0 ? aSide : GT_Utility.getOppositeSide(aSide), Math.abs(aCoverVariable) - 1, null, false, (byte)64, (byte)1, (byte)64, (byte)1), true); + } + } + else { + GT_Utility.moveOneItemStackIntoSlot(aCoverVariable > 0 ? aTileEntity : tTileEntity, aCoverVariable > 0 ? tTileEntity : aTileEntity, aCoverVariable > 0 ? aSide : GT_Utility.getOppositeSide(aSide), Math.abs(aCoverVariable) - 1, null, false, (byte)64, (byte)1, (byte)64, (byte)1); + } + return aCoverVariable; + } + + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + if (GT_Utility.getClickedFacingCoords(aSide, aX, aY, aZ)[0] >= 0.5F) { + aCoverVariable += 16; + } else { + aCoverVariable -= 16; + } + GT_Utility.sendChatToPlayer(aPlayer, (aCoverVariable > 0 ? "Puts out into adjacent Slot #" : "Grabs in for own Slot #") + (Math.abs(aCoverVariable) - 1)); + return aCoverVariable; + } + + public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + if (GT_Utility.getClickedFacingCoords(aSide, aX, aY, aZ)[0] >= 0.5F) { + aCoverVariable++; + } else { + aCoverVariable--; + } + GT_Utility.sendChatToPlayer(aPlayer, (aCoverVariable > 0 ? "Puts out into adjacent Slot #" : "Grabs in for own Slot #") + (Math.abs(aCoverVariable) - 1)); + aTileEntity.setCoverDataAtSide(aSide, aCoverVariable); + return true; + } + + public boolean letsRedstoneGoIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsRedstoneGoOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean alwaysLookConnected(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return this.mTickRate; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Blastproof.java b/src/main/java/gregtech/common/covers/GT_Cover_Blastproof.java new file mode 100644 index 0000000000..8c92eb9175 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_Blastproof.java @@ -0,0 +1,25 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.util.GT_CoverBehavior; + +public class GT_Cover_Blastproof + extends GT_CoverBehavior +{ + private final float mLevel; + + public GT_Cover_Blastproof(float aLevel) + { + this.mLevel = aLevel; + } + + public float getBlastProofLevel(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return this.mLevel; + } + + public boolean isSimpleCover() + { + return true; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ControlsWork.java b/src/main/java/gregtech/common/covers/GT_Cover_ControlsWork.java new file mode 100644 index 0000000000..ee06b47f51 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_ControlsWork.java @@ -0,0 +1,85 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IMachineProgress; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.fluids.Fluid; + +public class GT_Cover_ControlsWork + extends GT_CoverBehavior +{ + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + if(aTileEntity instanceof IMachineProgress) + { + if((aInputRedstone > 0) == (aCoverVariable == 0) && aCoverVariable != 2) + ((IMachineProgress)aTileEntity).enableWorking(); + else + ((IMachineProgress)aTileEntity).disableWorking(); + ((IMachineProgress)aTileEntity).setWorkDataValue(aInputRedstone); + } + return aCoverVariable; +} + + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean onCoverRemoval(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, boolean aForced) + { + if ((aTileEntity instanceof IMachineProgress)) + { + ((IMachineProgress)aTileEntity).enableWorking(); + ((IMachineProgress)aTileEntity).setWorkDataValue((byte)0); + } + return true; + } + + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + aCoverVariable = (aCoverVariable + 1) % 3; + if (aCoverVariable == 0) { + GT_Utility.sendChatToPlayer(aPlayer, "Normal"); + } + if (aCoverVariable == 1) { + GT_Utility.sendChatToPlayer(aPlayer, "Inverted"); + } + if (aCoverVariable == 2) { + GT_Utility.sendChatToPlayer(aPlayer, "No Work at all"); + } + return aCoverVariable; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 1; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Conveyor.java b/src/main/java/gregtech/common/covers/GT_Cover_Conveyor.java new file mode 100644 index 0000000000..10d2eb8008 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_Conveyor.java @@ -0,0 +1,133 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IMachineProgress; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.fluids.Fluid; + +public class GT_Cover_Conveyor + extends GT_CoverBehavior +{ + public final int mTickRate; + + public GT_Cover_Conveyor(int aTickRate) + { + this.mTickRate = aTickRate; + } + + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + if ((aCoverVariable % 6 > 1) && ((aTileEntity instanceof IMachineProgress))) { + if (((IMachineProgress)aTileEntity).isAllowedToWork() != aCoverVariable % 6 < 4) { + return aCoverVariable; + } + } + TileEntity tTileEntity = aTileEntity.getTileEntityAtSide(aSide); + aTileEntity.decreaseStoredEnergyUnits(1L, true); + if (((aCoverVariable % 2 != 1) || (aSide != 1)) && ((aCoverVariable % 2 != 0) || (aSide != 0)) && (aTileEntity.getUniversalEnergyCapacity() >= 128L)) + { + if (aTileEntity.isUniversalEnergyStored(256L)) { + aTileEntity.decreaseStoredEnergyUnits(4 * GT_Utility.moveOneItemStack(aCoverVariable % 2 == 0 ? aTileEntity : tTileEntity, aCoverVariable % 2 != 0 ? aTileEntity : tTileEntity, aCoverVariable % 2 != 0 ? GT_Utility.getOppositeSide(aSide) : aSide, aCoverVariable % 2 == 0 ? GT_Utility.getOppositeSide(aSide) : aSide, null, false, (byte)64, (byte)1, (byte)64, (byte)1), true); + } + } + else { + GT_Utility.moveOneItemStack(aCoverVariable % 2 == 0 ? aTileEntity : tTileEntity, aCoverVariable % 2 != 0 ? aTileEntity : tTileEntity, aCoverVariable % 2 != 0 ? GT_Utility.getOppositeSide(aSide) : aSide, aCoverVariable % 2 == 0 ? GT_Utility.getOppositeSide(aSide) : aSide, null, false, (byte)64, (byte)1, (byte)64, (byte)1); + } + return aCoverVariable; + } + + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + aCoverVariable = (aCoverVariable + 1) % 12; + if (aCoverVariable == 0) { + GT_Utility.sendChatToPlayer(aPlayer, "Export"); + } + if (aCoverVariable == 1) { + GT_Utility.sendChatToPlayer(aPlayer, "Import"); + } + if (aCoverVariable == 2) { + GT_Utility.sendChatToPlayer(aPlayer, "Export (conditional)"); + } + if (aCoverVariable == 3) { + GT_Utility.sendChatToPlayer(aPlayer, "Import (conditional)"); + } + if (aCoverVariable == 4) { + GT_Utility.sendChatToPlayer(aPlayer, "Export (invert cond)"); + } + if (aCoverVariable == 5) { + GT_Utility.sendChatToPlayer(aPlayer, "Import (invert cond)"); + } + if (aCoverVariable == 6) { + GT_Utility.sendChatToPlayer(aPlayer, "Export allow Input"); + } + if (aCoverVariable == 7) { + GT_Utility.sendChatToPlayer(aPlayer, "Import allow Output"); + } + if (aCoverVariable == 8) { + GT_Utility.sendChatToPlayer(aPlayer, "Export allow Input (conditional)"); + } + if (aCoverVariable == 9) { + GT_Utility.sendChatToPlayer(aPlayer, "Import allow Output (conditional)"); + } + if (aCoverVariable == 10) { + GT_Utility.sendChatToPlayer(aPlayer, "Export allow Input (invert cond)"); + } + if (aCoverVariable == 11) { + GT_Utility.sendChatToPlayer(aPlayer, "Import allow Output (invert cond)"); + } + return aCoverVariable; + } + + public boolean letsRedstoneGoIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsRedstoneGoOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return (aCoverVariable >= 6) || (aCoverVariable % 2 != 0); + } + + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return (aCoverVariable >= 6) || (aCoverVariable % 2 == 0); + } + + public boolean alwaysLookConnected(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return this.mTickRate; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Crafting.java b/src/main/java/gregtech/common/covers/GT_Cover_Crafting.java new file mode 100644 index 0000000000..0198146fc6 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_Crafting.java @@ -0,0 +1,35 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.util.GT_CoverBehavior; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ContainerWorkbench; +import net.minecraft.network.NetHandlerPlayServer; +import net.minecraft.network.play.server.S2DPacketOpenWindow; +import net.minecraft.world.World; + +public class GT_Cover_Crafting + extends GT_CoverBehavior +{ + public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + if ((aPlayer instanceof EntityPlayerMP)) + { + ((EntityPlayerMP)aPlayer).getNextWindowId(); + ((EntityPlayerMP)aPlayer).playerNetServerHandler.sendPacket(new S2DPacketOpenWindow(((EntityPlayerMP)aPlayer).currentWindowId, 1, "Crafting", 9, true)); + ((EntityPlayerMP)aPlayer).openContainer = new ContainerWorkbench(((EntityPlayerMP)aPlayer).inventory, ((EntityPlayerMP)aPlayer).worldObj, aTileEntity.getXCoord(), aTileEntity.getYCoord(), aTileEntity.getZCoord()) + { + public boolean canInteractWith(EntityPlayer par1EntityPlayer) + { + return true; + } + }; + ((EntityPlayerMP)aPlayer).openContainer.windowId = ((EntityPlayerMP)aPlayer).currentWindowId; + ((EntityPlayerMP)aPlayer).openContainer.addCraftingToCrafters((EntityPlayerMP)aPlayer); + } + return true; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_DoesWork.java b/src/main/java/gregtech/common/covers/GT_Cover_DoesWork.java new file mode 100644 index 0000000000..119e054b54 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_DoesWork.java @@ -0,0 +1,94 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IMachineProgress; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.fluids.Fluid; + +public class GT_Cover_DoesWork + extends GT_CoverBehavior +{ + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + if ((aTileEntity instanceof IMachineProgress)) + { + if (aCoverVariable < 2) + { + int tScale = ((IMachineProgress)aTileEntity).getMaxProgress() / 15; + if ((tScale > 0) && (((IMachineProgress)aTileEntity).hasThingsToDo())) { + aTileEntity.setOutputRedstoneSignal(aSide, aCoverVariable % 2 == 0 ? (byte)(((IMachineProgress)aTileEntity).getProgress() / tScale) : (byte)(15 - ((IMachineProgress)aTileEntity).getProgress() / tScale)); + } else { + aTileEntity.setOutputRedstoneSignal(aSide, (byte)(aCoverVariable % 2 == 0 ? 0 : 15)); + } + } + else + { + aTileEntity.setOutputRedstoneSignal(aSide, (byte)((aCoverVariable % 2 == 0 ? 1 : 0) != (((IMachineProgress)aTileEntity).getMaxProgress() == 0 ? 1 : 0) ? 0 : 15)); + } + } + else { + aTileEntity.setOutputRedstoneSignal(aSide, (byte)0); + } + return aCoverVariable; + } + + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + aCoverVariable = (aCoverVariable + 1) % 4; + if (aCoverVariable == 0) { + GT_Utility.sendChatToPlayer(aPlayer, "Normal"); + } + if (aCoverVariable == 1) { + GT_Utility.sendChatToPlayer(aPlayer, "Inverted"); + } + if (aCoverVariable == 2) { + GT_Utility.sendChatToPlayer(aPlayer, "Ready to work"); + } + if (aCoverVariable == 3) { + GT_Utility.sendChatToPlayer(aPlayer, "Not ready to work"); + } + return aCoverVariable; + } + + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean manipulatesSidedRedstoneOutput(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 5; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Drain.java b/src/main/java/gregtech/common/covers/GT_Cover_Drain.java new file mode 100644 index 0000000000..a17098e8b2 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_Drain.java @@ -0,0 +1,108 @@ +package gregtech.common.covers; + +import gregtech.api.enums.Materials; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IMachineProgress; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.IFluidBlock; +import net.minecraftforge.fluids.IFluidHandler; + +public class GT_Cover_Drain + extends GT_CoverBehavior +{ + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + if ((aCoverVariable % 3 > 1) && ((aTileEntity instanceof IMachineProgress))) { + if (((IMachineProgress)aTileEntity).isAllowedToWork() != aCoverVariable % 3 < 2) { + return aCoverVariable; + } + } + if (aSide != 6) + { + Block tBlock = aTileEntity.getBlockAtSide(aSide); + if ((aCoverVariable < 3) && ((aTileEntity instanceof IFluidHandler))) + { + if ((aSide == 1) && + (aTileEntity.getWorld().isRaining()) && + (aTileEntity.getWorld().getPrecipitationHeight(aTileEntity.getXCoord(), aTileEntity.getZCoord()) - 2 < aTileEntity.getYCoord())) + { + int tAmount = (int)(aTileEntity.getBiome().rainfall * 10.0F); + if (tAmount > 0) { + ((IFluidHandler)aTileEntity).fill(ForgeDirection.getOrientation(aSide), Materials.Water.getFluid(aTileEntity.getWorld().isThundering() ? tAmount * 2 : tAmount), true); + } + } + FluidStack tLiquid = null; + if (tBlock != null) + { + if (((tBlock == Blocks.water) || (tBlock == Blocks.flowing_water)) && (aTileEntity.getMetaIDAtSide(aSide) == 0)) { + tLiquid = Materials.Water.getFluid(1000L); + } else if (((tBlock == Blocks.lava) || (tBlock == Blocks.flowing_lava)) && (aTileEntity.getMetaIDAtSide(aSide) == 0)) { + tLiquid = Materials.Lava.getFluid(1000L); + } else if ((tBlock instanceof IFluidBlock)) { + tLiquid = ((IFluidBlock)tBlock).drain(aTileEntity.getWorld(), aTileEntity.getOffsetX(aSide, 1), aTileEntity.getOffsetY(aSide, 1), aTileEntity.getOffsetZ(aSide, 1), false); + } + if ((tLiquid != null) && (tLiquid.getFluid() != null) && ((aSide > 1) || ((aSide == 0) && (tLiquid.getFluid().getDensity() <= 0)) || ((aSide == 1) && (tLiquid.getFluid().getDensity() >= 0))) && + (((IFluidHandler)aTileEntity).fill(ForgeDirection.getOrientation(aSide), tLiquid, false) == tLiquid.amount)) + { + ((IFluidHandler)aTileEntity).fill(ForgeDirection.getOrientation(aSide), tLiquid, true); + aTileEntity.getWorld().setBlockToAir(aTileEntity.getXCoord() + ForgeDirection.getOrientation(aSide).offsetX, aTileEntity.getYCoord() + ForgeDirection.getOrientation(aSide).offsetY, aTileEntity.getZCoord() + ForgeDirection.getOrientation(aSide).offsetZ); + } + } + } + if ((aCoverVariable >= 3) && (tBlock != null) && ( + (tBlock == Blocks.lava) || (tBlock == Blocks.flowing_lava) || (tBlock == Blocks.water) || (tBlock == Blocks.flowing_water) || ((tBlock instanceof IFluidBlock)))) { + aTileEntity.getWorld().setBlock(aTileEntity.getOffsetX(aSide, 1), aTileEntity.getOffsetY(aSide, 1), aTileEntity.getOffsetZ(aSide, 1), Blocks.air, 0, 0); + } + } + return aCoverVariable; + } + + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + aCoverVariable = (aCoverVariable + 1) % 6; + if (aCoverVariable == 0) { + GT_Utility.sendChatToPlayer(aPlayer, "Import"); + } + if (aCoverVariable == 1) { + GT_Utility.sendChatToPlayer(aPlayer, "Import (conditional)"); + } + if (aCoverVariable == 2) { + GT_Utility.sendChatToPlayer(aPlayer, "Import (invert cond)"); + } + if (aCoverVariable == 3) { + GT_Utility.sendChatToPlayer(aPlayer, "Keep Liquids Away"); + } + if (aCoverVariable == 4) { + GT_Utility.sendChatToPlayer(aPlayer, "Keep Liquids Away (conditional)"); + } + if (aCoverVariable == 5) { + GT_Utility.sendChatToPlayer(aPlayer, "Keep Liquids Away (invert cond)"); + } + return aCoverVariable; + } + + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + if ((aCoverVariable > 1) && ((aTileEntity instanceof IMachineProgress))) {} + return ((IMachineProgress)aTileEntity).isAllowedToWork() == aCoverVariable < 2; + } + + public boolean alwaysLookConnected(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return aCoverVariable < 3 ? 50 : 1; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_EUMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_EUMeter.java new file mode 100644 index 0000000000..6917e6bf0a --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_EUMeter.java @@ -0,0 +1,187 @@ +package gregtech.common.covers; + +import ic2.api.item.IElectricItem; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.items.GT_MetaBase_Item; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicBatteryBuffer; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; +import gregtech.api.util.GT_BaseCrop; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_ModHandler; +import gregtech.api.util.GT_Utility; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.Fluid; + +public class GT_Cover_EUMeter + extends GT_CoverBehavior +{ + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + long tScale = 0L; + if (aCoverVariable < 2) + { + tScale = aTileEntity.getUniversalEnergyCapacity() / 15L; + if (tScale > 0L) { + aTileEntity.setOutputRedstoneSignal(aSide, aCoverVariable % 2 == 0 ? (byte)(int)(aTileEntity.getUniversalEnergyStored() / tScale) : (byte)(int)(15L - aTileEntity.getUniversalEnergyStored() / tScale)); + } else { + aTileEntity.setOutputRedstoneSignal(aSide, (byte)(aCoverVariable % 2 == 0 ? 0 : 15)); + } + } + else if (aCoverVariable < 4) + { + tScale = aTileEntity.getEUCapacity() / 15L; + if (tScale > 0L) { + aTileEntity.setOutputRedstoneSignal(aSide, aCoverVariable % 2 == 0 ? (byte)(int)(aTileEntity.getStoredEU() / tScale) : (byte)(int)(15L - aTileEntity.getStoredEU() / tScale)); + } else { + aTileEntity.setOutputRedstoneSignal(aSide, (byte)(aCoverVariable % 2 == 0 ? 0 : 15)); + } + } + else if (aCoverVariable < 6) + { + tScale = aTileEntity.getSteamCapacity() / 15L; + if (tScale > 0L) { + aTileEntity.setOutputRedstoneSignal(aSide, aCoverVariable % 2 == 0 ? (byte)(int)(aTileEntity.getStoredSteam() / tScale) : (byte)(int)(15L - aTileEntity.getStoredSteam() / tScale)); + } else { + aTileEntity.setOutputRedstoneSignal(aSide, (byte)(aCoverVariable % 2 == 0 ? 0 : 15)); + } + } + else if (aCoverVariable < 8) + { + tScale = aTileEntity.getInputVoltage() * aTileEntity.getInputAmperage() / 15L; + if (tScale > 0L) { + aTileEntity.setOutputRedstoneSignal(aSide, aCoverVariable % 2 == 0 ? (byte)(int)(aTileEntity.getAverageElectricInput() / tScale) : (byte)(int)(15L - aTileEntity.getAverageElectricInput() / tScale)); + } else { + aTileEntity.setOutputRedstoneSignal(aSide, (byte)(aCoverVariable % 2 == 0 ? 0 : 15)); + } + } + else if (aCoverVariable < 10) + { + tScale = aTileEntity.getOutputVoltage() * aTileEntity.getOutputAmperage() / 15L; + if (tScale > 0L) { + aTileEntity.setOutputRedstoneSignal(aSide, aCoverVariable % 2 == 0 ? (byte)(int)(aTileEntity.getAverageElectricOutput() / tScale) : (byte)(int)(15L - aTileEntity.getAverageElectricOutput() / tScale)); + } else { + aTileEntity.setOutputRedstoneSignal(aSide, (byte)(aCoverVariable % 2 == 0 ? 0 : 15)); + } + } + else if (aCoverVariable < 12) + { + tScale = aTileEntity.getEUCapacity(); + long tStored = aTileEntity.getStoredEU(); + if(aTileEntity instanceof IGregTechTileEntity){ + IGregTechTileEntity tTileEntity = (IGregTechTileEntity) aTileEntity; + IMetaTileEntity mTileEntity = tTileEntity.getMetaTileEntity(); + if(mTileEntity instanceof GT_MetaTileEntity_BasicBatteryBuffer){ + GT_MetaTileEntity_BasicBatteryBuffer buffer = (GT_MetaTileEntity_BasicBatteryBuffer) mTileEntity; + if(buffer.mInventory!=null){ + for(ItemStack aStack : buffer.mInventory){ + if (GT_ModHandler.isElectricItem(aStack)) { + + if(aStack.getItem() instanceof GT_MetaBase_Item){ + Long[] stats = ((GT_MetaBase_Item)aStack.getItem()).getElectricStats(aStack); + if(stats!=null){ + tScale = tScale + stats[0]; + tStored = tStored + ((GT_MetaBase_Item)aStack.getItem()).getRealCharge(aStack); + } + }else if(aStack.getItem() instanceof IElectricItem){ + tStored = tStored + (long)ic2.api.item.ElectricItem.manager.getCharge(aStack); + tScale = tScale + (long)((IElectricItem)aStack.getItem()).getMaxCharge(aStack); + } + } + } + + }}} + tScale = tScale/15L; + if (tScale > 0L) { + aTileEntity.setOutputRedstoneSignal(aSide, aCoverVariable % 2 == 0 ? (byte)(int)(tStored / tScale) : (byte)(int)(15L - tStored / tScale)); + } else { + aTileEntity.setOutputRedstoneSignal(aSide, (byte)(aCoverVariable % 2 == 0 ? 0 : 15)); + } + } + return aCoverVariable; + } + + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + aCoverVariable = (aCoverVariable + 1) % 12; + if (aCoverVariable == 0) { + GT_Utility.sendChatToPlayer(aPlayer, "Normal Universal Storage"); + } + if (aCoverVariable == 1) { + GT_Utility.sendChatToPlayer(aPlayer, "Inverted Universal Storage"); + } + if (aCoverVariable == 2) { + GT_Utility.sendChatToPlayer(aPlayer, "Normal Electricity Storage"); + } + if (aCoverVariable == 3) { + GT_Utility.sendChatToPlayer(aPlayer, "Inverted Electricity Storage"); + } + if (aCoverVariable == 4) { + GT_Utility.sendChatToPlayer(aPlayer, "Normal Steam Storage"); + } + if (aCoverVariable == 5) { + GT_Utility.sendChatToPlayer(aPlayer, "Inverted Steam Storage"); + } + if (aCoverVariable == 6) { + GT_Utility.sendChatToPlayer(aPlayer, "Normal Average Electric Input"); + } + if (aCoverVariable == 7) { + GT_Utility.sendChatToPlayer(aPlayer, "Inverted Average Electric Input"); + } + if (aCoverVariable == 8) { + GT_Utility.sendChatToPlayer(aPlayer, "Normal Average Electric Output"); + } + if (aCoverVariable == 9) { + GT_Utility.sendChatToPlayer(aPlayer, "Inverted Average Electric Output"); + } + if (aCoverVariable == 10) { + GT_Utility.sendChatToPlayer(aPlayer, "Normal Electricity Storage(Including Batterys)"); + } + if (aCoverVariable == 11) { + GT_Utility.sendChatToPlayer(aPlayer, "Inverted Electricity Storage(Including Batterys)"); + } + return aCoverVariable; + } + + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean manipulatesSidedRedstoneOutput(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 20; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_EnergyOnly.java b/src/main/java/gregtech/common/covers/GT_Cover_EnergyOnly.java new file mode 100644 index 0000000000..4ffdcb9e1b --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_EnergyOnly.java @@ -0,0 +1,102 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IMachineProgress; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.fluids.Fluid; + +public class GT_Cover_EnergyOnly + extends GT_CoverBehavior +{ + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + aCoverVariable = (aCoverVariable + 1) % 3; + if (aCoverVariable == 0) { + GT_Utility.sendChatToPlayer(aPlayer, "Allow"); + } + if (aCoverVariable == 1) { + GT_Utility.sendChatToPlayer(aPlayer, "Allow (conditional)"); + } + if (aCoverVariable == 2) { + GT_Utility.sendChatToPlayer(aPlayer, "Disallow (conditional)"); + } + return aCoverVariable; + } + + public float getBlastProofLevel(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 20.0F; + } + + public boolean letsRedstoneGoIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return false; + } + + public boolean letsRedstoneGoOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return false; + } + + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + if ((aCoverVariable > 1) && ((aTileEntity instanceof IMachineProgress))) { + if (((IMachineProgress)aTileEntity).isAllowedToWork() != aCoverVariable < 2) { + return false; + } + } + return true; + } + + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + if ((aCoverVariable > 1) && ((aTileEntity instanceof IMachineProgress))) { + if (((IMachineProgress)aTileEntity).isAllowedToWork() != aCoverVariable < 2) { + return false; + } + } + return true; + } + + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return false; + } + + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return false; + } + + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return false; + } + + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return false; + } + + public boolean isGUIClickable(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return false; + } + + public boolean manipulatesSidedRedstoneOutput(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return false; + } + + public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + return false; + } + + public boolean onCoverRemoval(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, boolean aForced) + { + return true; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java new file mode 100644 index 0000000000..f2fc6a4d49 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java @@ -0,0 +1,93 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.Fluid; + +public class GT_Cover_ItemMeter + extends GT_CoverBehavior +{ + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + int[] tSlots; + if (aCoverVariable < 2) { + tSlots = aTileEntity.getAccessibleSlotsFromSide(aSide); + } else { + tSlots = new int[] { aCoverVariable - 2 }; + } + int tAll = 0;int tFull = 0; + for (int i : tSlots) { + if ((i > 0) && (i < aTileEntity.getSizeInventory())) + { + tAll += 64; + ItemStack tStack = aTileEntity.getStackInSlot(i); + if (tStack != null) { + tFull += tStack.stackSize * 64 / tStack.getMaxStackSize(); + } + } + } + tAll /= 14; + if (tAll > 0) { + aTileEntity.setOutputRedstoneSignal(aSide, aCoverVariable != 1 ? 0 : tFull > 0 ? (byte)(tFull / tAll + 1) : (byte)(15 - (tFull > 0 ? tFull / tAll + 1 : 0))); + } else { + aTileEntity.setOutputRedstoneSignal(aSide, (byte)(aCoverVariable != 1 ? 0 : 15)); + } + return aCoverVariable; + } + + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + aCoverVariable = (aCoverVariable + 1) % (2 + aTileEntity.getSizeInventory()); + if (aCoverVariable == 0) { + GT_Utility.sendChatToPlayer(aPlayer, "Normal"); + } else if (aCoverVariable == 1) { + GT_Utility.sendChatToPlayer(aPlayer, "Inverted"); + } else { + GT_Utility.sendChatToPlayer(aPlayer, "Slot: " + (aCoverVariable - 2)); + } + return aCoverVariable; + } + + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean manipulatesSidedRedstoneOutput(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 5; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Lens.java b/src/main/java/gregtech/common/covers/GT_Cover_Lens.java new file mode 100644 index 0000000000..000acc4535 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_Lens.java @@ -0,0 +1,20 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.util.GT_CoverBehavior; + +public class GT_Cover_Lens + extends GT_CoverBehavior +{ + private final byte mColor; + + public GT_Cover_Lens(byte aColor) + { + this.mColor = aColor; + } + + public byte getLensColor(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return this.mColor; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java new file mode 100644 index 0000000000..4a91015247 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_LiquidMeter.java @@ -0,0 +1,97 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTankInfo; +import net.minecraftforge.fluids.IFluidHandler; + +public class GT_Cover_LiquidMeter + extends GT_CoverBehavior +{ + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + if ((aTileEntity instanceof IFluidHandler)) + { + FluidTankInfo[] tTanks = ((IFluidHandler)aTileEntity).getTankInfo(ForgeDirection.UNKNOWN); + long tAll = 0L;long tFull = 0L; + if (tTanks != null) { + for (FluidTankInfo tTank : tTanks) { + if (tTank != null) + { + tAll += tTank.capacity; + FluidStack tLiquid = tTank.fluid; + if (tLiquid != null) { + tFull += tLiquid.amount; + } + } + } + } + tAll /= 14L; + if (tAll > 0L) { + aTileEntity.setOutputRedstoneSignal(aSide, aCoverVariable != 0 ? (byte)(int)(15L - (tFull <= 0L ? 0L : tFull / tAll + 1L)) : tFull <= 0L ? 0 : (byte)(int)(tFull / tAll + 1L)); + } else { + aTileEntity.setOutputRedstoneSignal(aSide, ((byte)(aCoverVariable != 0 ? 15 : 0))); + } + } + else + { + aTileEntity.setOutputRedstoneSignal(aSide, (byte)0); + } + return aCoverVariable; + } + + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + if (aCoverVariable == 0) { + GT_Utility.sendChatToPlayer(aPlayer, "Inverted"); + } else { + GT_Utility.sendChatToPlayer(aPlayer, "Normal"); + } + return aCoverVariable == 0 ? 1 : 0; + } + + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean manipulatesSidedRedstoneOutput(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 5; + } +} \ No newline at end of file diff --git a/src/main/java/gregtech/common/covers/GT_Cover_NeedMaintainance.java b/src/main/java/gregtech/common/covers/GT_Cover_NeedMaintainance.java new file mode 100644 index 0000000000..39960e3940 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_NeedMaintainance.java @@ -0,0 +1,122 @@ +package gregtech.common.covers; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.Fluid; +import gregtech.api.GregTech_API; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; + +public class GT_Cover_NeedMaintainance extends GT_CoverBehavior{ + + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + boolean needsRepair = false; + if(aTileEntity instanceof IGregTechTileEntity){ + IGregTechTileEntity tTileEntity = (IGregTechTileEntity) aTileEntity; + IMetaTileEntity mTileEntity = tTileEntity.getMetaTileEntity(); + if(mTileEntity instanceof GT_MetaTileEntity_MultiBlockBase){ + GT_MetaTileEntity_MultiBlockBase multi = (GT_MetaTileEntity_MultiBlockBase) mTileEntity; + int ideal = multi.getIdealStatus(); + int real = multi.getRepairStatus(); + if((aCoverVariable ==0||aCoverVariable==1)&&(ideal-real>0)){ + needsRepair=true; + }if((aCoverVariable ==2||aCoverVariable==3)&&(ideal-real>1)){ + needsRepair=true; + }if((aCoverVariable ==4||aCoverVariable==5)&&(ideal-real>2)){ + needsRepair=true; + }if((aCoverVariable ==6||aCoverVariable==7)&&(ideal-real>3)){ + needsRepair=true; + } + }} + if(aCoverVariable % 2 == 0){ + needsRepair = !needsRepair; + } + + aTileEntity.setOutputRedstoneSignal(aSide, (byte)(needsRepair ? 0 : 15)); + aTileEntity.setOutputRedstoneSignal(GT_Utility.getOppositeSide(aSide), (byte)(needsRepair ? 0 : 15)); + return aCoverVariable; + } + + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + aCoverVariable = (aCoverVariable + 1) % 10; + if (aCoverVariable == 0) { + GT_Utility.sendChatToPlayer(aPlayer, "Emit if 1 Maintainance Needed"); + } + if (aCoverVariable == 1) { + GT_Utility.sendChatToPlayer(aPlayer, "Emit if 1 Maintainance Needed(inverted)"); + } + if (aCoverVariable == 2) { + GT_Utility.sendChatToPlayer(aPlayer, "Emit if 2 Maintainance Needed"); + } + if (aCoverVariable == 3) { + GT_Utility.sendChatToPlayer(aPlayer, "Emit if 2 Maintainance Needed(inverted)"); + } + if (aCoverVariable == 4) { + GT_Utility.sendChatToPlayer(aPlayer, "Emit if 3 Maintainance Needed"); + } + if (aCoverVariable == 5) { + GT_Utility.sendChatToPlayer(aPlayer, "Emit if 3 Maintainance Needed(inverted)"); + } + if (aCoverVariable == 6) { + GT_Utility.sendChatToPlayer(aPlayer, "Emit if 4 Maintainance Needed"); + } + if (aCoverVariable == 7) { + GT_Utility.sendChatToPlayer(aPlayer, "Emit if 4 Maintainance Needed(inverted)"); + } + if (aCoverVariable == 8) { + GT_Utility.sendChatToPlayer(aPlayer, "Emit if 5 Maintainance Needed"); + } + if (aCoverVariable == 9) { + GT_Utility.sendChatToPlayer(aPlayer, "Emit if 5 Maintainance Needed(inverted)"); + } + return aCoverVariable; + } + + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean manipulatesSidedRedstoneOutput(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 60; + } + +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_PlayerDetector.java b/src/main/java/gregtech/common/covers/GT_Cover_PlayerDetector.java new file mode 100644 index 0000000000..6ed3fd7a17 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_PlayerDetector.java @@ -0,0 +1,120 @@ +package gregtech.common.covers; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraftforge.fluids.Fluid; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; + +public class GT_Cover_PlayerDetector extends GT_CoverBehavior{ + + private String placer = ""; + private int range = 8; + + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + boolean playerDetected = false; + + if(aTileEntity instanceof IGregTechTileEntity){ + if(aTileEntity.isUniversalEnergyStored(20)){ + aTileEntity.decreaseStoredEnergyUnits(20, true); + range = 32; + }else{range = 8;} + placer = ((IGregTechTileEntity) aTileEntity).getOwnerName(); + } + for (Object tObject : aTileEntity.getWorld().playerEntities) { + if ((tObject instanceof EntityPlayerMP)) + { + EntityPlayerMP tEntity = (EntityPlayerMP)tObject; + int dist = Math.max(1, (int)tEntity.getDistance(aTileEntity.getXCoord() + 0.5D, aTileEntity.getYCoord() + 0.5D, aTileEntity.getZCoord() + 0.5D)); + if (dist < range) + { + if (aCoverVariable == 0) + { + playerDetected=true; + break; + } + if (tEntity.getDisplayName().equalsIgnoreCase(placer)) + { + if (aCoverVariable == 1) + { + playerDetected=true; + break; + } + } + else if (aCoverVariable == 2) + { + playerDetected=true; + break; + } + } + } + } + + + aTileEntity.setOutputRedstoneSignal(aSide, (byte)(playerDetected ? 15 : 0)); + return aCoverVariable; + } + + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + aCoverVariable = (aCoverVariable + 1) % 3; + if (aCoverVariable == 0) { + GT_Utility.sendChatToPlayer(aPlayer, "Emit if any Player is close"); + } + if (aCoverVariable == 1) { + GT_Utility.sendChatToPlayer(aPlayer, "Emit if you are close"); + } + if (aCoverVariable == 2) { + GT_Utility.sendChatToPlayer(aPlayer, "Emit if other player is close"); + } + return aCoverVariable; + } + + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean manipulatesSidedRedstoneOutput(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 20; + } + +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Pump.java b/src/main/java/gregtech/common/covers/GT_Cover_Pump.java new file mode 100644 index 0000000000..6f1cbabd2c --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_Pump.java @@ -0,0 +1,187 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IMachineProgress; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.IFluidHandler; + +public class GT_Cover_Pump + extends GT_CoverBehavior +{ + public final int mTransferRate; + + public GT_Cover_Pump(int aTransferRate) + { + this.mTransferRate = aTransferRate; + } + + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + if ((aCoverVariable % 6 > 1) && ((aTileEntity instanceof IMachineProgress))) { + if (((IMachineProgress)aTileEntity).isAllowedToWork() != aCoverVariable % 6 < 4) { + return aCoverVariable; + } + } + if ((aTileEntity instanceof IFluidHandler)) + { + IFluidHandler tTank2 = aTileEntity.getITankContainerAtSide(aSide); + if (tTank2 != null) + { + aTileEntity.decreaseStoredEnergyUnits(GT_Utility.getTier(this.mTransferRate), true); + IFluidHandler tTank1 = (IFluidHandler)aTileEntity; + if (aCoverVariable % 2 == 0) + { + FluidStack tLiquid = tTank1.drain(ForgeDirection.getOrientation(aSide), this.mTransferRate, false); + if (tLiquid != null) + { + tLiquid = tLiquid.copy(); + tLiquid.amount = tTank2.fill(ForgeDirection.getOrientation(aSide).getOpposite(), tLiquid, false); + if (tLiquid.amount > 0) { + if (((aCoverVariable % 2 != 1) || (aSide != 1)) && ((aCoverVariable % 2 != 0) || (aSide != 0)) && (aTileEntity.getUniversalEnergyCapacity() >= Math.min(1, tLiquid.amount / 10))) + { + if (aTileEntity.isUniversalEnergyStored(Math.min(1, tLiquid.amount / 10))) + { + aTileEntity.decreaseStoredEnergyUnits(Math.min(1, tLiquid.amount / 10), true); + tTank2.fill(ForgeDirection.getOrientation(aSide).getOpposite(), tTank1.drain(ForgeDirection.getOrientation(aSide), tLiquid.amount, true), true); + } + } + else { + tTank2.fill(ForgeDirection.getOrientation(aSide).getOpposite(), tTank1.drain(ForgeDirection.getOrientation(aSide), tLiquid.amount, true), true); + } + } + } + } + else + { + FluidStack tLiquid = tTank2.drain(ForgeDirection.getOrientation(aSide).getOpposite(), this.mTransferRate, false); + if (tLiquid != null) + { + tLiquid = tLiquid.copy(); + tLiquid.amount = tTank1.fill(ForgeDirection.getOrientation(aSide), tLiquid, false); + if (tLiquid.amount > 0) { + if (((aCoverVariable % 2 != 1) || (aSide != 1)) && ((aCoverVariable % 2 != 0) || (aSide != 0)) && (aTileEntity.getUniversalEnergyCapacity() >= Math.min(1, tLiquid.amount / 10))) + { + if (aTileEntity.isUniversalEnergyStored(Math.min(1, tLiquid.amount / 10))) + { + aTileEntity.decreaseStoredEnergyUnits(Math.min(1, tLiquid.amount / 10), true); + tTank1.fill(ForgeDirection.getOrientation(aSide), tTank2.drain(ForgeDirection.getOrientation(aSide).getOpposite(), tLiquid.amount, true), true); + } + } + else { + tTank1.fill(ForgeDirection.getOrientation(aSide), tTank2.drain(ForgeDirection.getOrientation(aSide).getOpposite(), tLiquid.amount, true), true); + } + } + } + } + } + } + return aCoverVariable; + } + + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + aCoverVariable = (aCoverVariable + 1) % 12; + if (aCoverVariable == 0) { + GT_Utility.sendChatToPlayer(aPlayer, "Export"); + } + if (aCoverVariable == 1) { + GT_Utility.sendChatToPlayer(aPlayer, "Import"); + } + if (aCoverVariable == 2) { + GT_Utility.sendChatToPlayer(aPlayer, "Export (conditional)"); + } + if (aCoverVariable == 3) { + GT_Utility.sendChatToPlayer(aPlayer, "Import (conditional)"); + } + if (aCoverVariable == 4) { + GT_Utility.sendChatToPlayer(aPlayer, "Export (invert cond)"); + } + if (aCoverVariable == 5) { + GT_Utility.sendChatToPlayer(aPlayer, "Import (invert cond)"); + } + if (aCoverVariable == 6) { + GT_Utility.sendChatToPlayer(aPlayer, "Export allow Input"); + } + if (aCoverVariable == 7) { + GT_Utility.sendChatToPlayer(aPlayer, "Import allow Output"); + } + if (aCoverVariable == 8) { + GT_Utility.sendChatToPlayer(aPlayer, "Export allow Input (conditional)"); + } + if (aCoverVariable == 9) { + GT_Utility.sendChatToPlayer(aPlayer, "Import allow Output (conditional)"); + } + if (aCoverVariable == 10) { + GT_Utility.sendChatToPlayer(aPlayer, "Export allow Input (invert cond)"); + } + if (aCoverVariable == 11) { + GT_Utility.sendChatToPlayer(aPlayer, "Import allow Output (invert cond)"); + } + return aCoverVariable; + } + + public boolean letsRedstoneGoIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsRedstoneGoOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + if ((aCoverVariable > 1) && ((aTileEntity instanceof IMachineProgress))) { + if (((IMachineProgress)aTileEntity).isAllowedToWork() != aCoverVariable % 6 < 4) { + return false; + } + } + return (aCoverVariable >= 6) || (aCoverVariable % 2 != 0); + } + + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + if ((aCoverVariable > 1) && ((aTileEntity instanceof IMachineProgress))) { + if (((IMachineProgress)aTileEntity).isAllowedToWork() != aCoverVariable % 6 < 4) { + return false; + } + } + return (aCoverVariable >= 6) || (aCoverVariable % 2 == 0); + } + + public boolean alwaysLookConnected(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 1; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneConductor.java b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneConductor.java new file mode 100644 index 0000000000..9c4ae92a9a --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneConductor.java @@ -0,0 +1,84 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.fluids.Fluid; + +public class GT_Cover_RedstoneConductor + extends GT_CoverBehavior +{ + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + if (aCoverVariable == 0) { + aTileEntity.setOutputRedstoneSignal(aSide, aTileEntity.getStrongestRedstone()); + } else if (aCoverVariable < 7) { + aTileEntity.setOutputRedstoneSignal(aSide, aTileEntity.getInternalInputRedstoneSignal((byte)(aCoverVariable - 1))); + } + return aCoverVariable; + } + + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + aCoverVariable = (aCoverVariable + 1) % 7; + switch (aCoverVariable) + { + case 0: + GT_Utility.sendChatToPlayer(aPlayer, "Conducts strongest Input"); break; + case 1: + GT_Utility.sendChatToPlayer(aPlayer, "Conducts from bottom Input"); break; + case 2: + GT_Utility.sendChatToPlayer(aPlayer, "Conducts from top Input"); break; + case 3: + GT_Utility.sendChatToPlayer(aPlayer, "Conducts from north Input"); break; + case 4: + GT_Utility.sendChatToPlayer(aPlayer, "Conducts from south Input"); break; + case 5: + GT_Utility.sendChatToPlayer(aPlayer, "Conducts from west Input"); break; + case 6: + GT_Utility.sendChatToPlayer(aPlayer, "Conducts from east Input"); + } + return aCoverVariable; + } + + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean manipulatesSidedRedstoneOutput(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 1; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneReceiverExternal.java b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneReceiverExternal.java new file mode 100644 index 0000000000..da5c149b09 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneReceiverExternal.java @@ -0,0 +1,25 @@ +package gregtech.common.covers; + +import gregtech.api.GregTech_API; +import gregtech.api.interfaces.tileentity.ICoverable; +import java.util.Map; + +public class GT_Cover_RedstoneReceiverExternal + extends GT_Cover_RedstoneWirelessBase +{ + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + aTileEntity.setOutputRedstoneSignal(aSide, GregTech_API.sWirelessRedstone.get(Integer.valueOf(aCoverVariable)) == null ? 0 : ((Byte)GregTech_API.sWirelessRedstone.get(Integer.valueOf(aCoverVariable))).byteValue()); + return aCoverVariable; + } + + public boolean manipulatesSidedRedstoneOutput(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 1; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneReceiverInternal.java b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneReceiverInternal.java new file mode 100644 index 0000000000..217a36eeb4 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneReceiverInternal.java @@ -0,0 +1,24 @@ +package gregtech.common.covers; + +import gregtech.api.GregTech_API; +import gregtech.api.interfaces.tileentity.ICoverable; +import java.util.Map; + +public class GT_Cover_RedstoneReceiverInternal + extends GT_Cover_RedstoneWirelessBase +{ + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + return aCoverVariable; + } + + public byte getRedstoneInput(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return GregTech_API.sWirelessRedstone.get(Integer.valueOf(aCoverVariable)) == null ? 0 : ((Byte)GregTech_API.sWirelessRedstone.get(Integer.valueOf(aCoverVariable))).byteValue(); + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 1; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneSignalizer.java b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneSignalizer.java new file mode 100644 index 0000000000..c9d29b1e10 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneSignalizer.java @@ -0,0 +1,81 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IMachineProgress; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.fluids.Fluid; + +public class GT_Cover_RedstoneSignalizer + extends GT_CoverBehavior +{ + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + aCoverVariable = (aCoverVariable + 1) % 48; + if (aCoverVariable / 16 == 0) { + GT_Utility.sendChatToPlayer(aPlayer, "Signal = " + (aCoverVariable & 0xF)); + } else if (aCoverVariable / 16 == 1) { + GT_Utility.sendChatToPlayer(aPlayer, "Conditional Signal = " + (aCoverVariable & 0xF)); + } else if (aCoverVariable / 16 == 2) { + GT_Utility.sendChatToPlayer(aPlayer, "Inverted Conditional Signal = " + (aCoverVariable & 0xF)); + } + return aCoverVariable; + } + + public boolean letsRedstoneGoIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public byte getRedstoneInput(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + if (aCoverVariable < 16) { + return (byte)(aCoverVariable & 0xF); + } + if ((aTileEntity instanceof IMachineProgress)) + { + if (((IMachineProgress)aTileEntity).isAllowedToWork()) + { + if (aCoverVariable / 16 == 1) { + return (byte)(aCoverVariable & 0xF); + } + } + else if (aCoverVariable / 16 == 2) { + return (byte)(aCoverVariable & 0xF); + } + return 0; + } + return (byte)(aCoverVariable & 0xF); + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneTransmitterExternal.java b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneTransmitterExternal.java new file mode 100644 index 0000000000..15609ca1b9 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneTransmitterExternal.java @@ -0,0 +1,25 @@ +package gregtech.common.covers; + +import gregtech.api.GregTech_API; +import gregtech.api.interfaces.tileentity.ICoverable; +import java.util.Map; + +public class GT_Cover_RedstoneTransmitterExternal + extends GT_Cover_RedstoneWirelessBase +{ + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + GregTech_API.sWirelessRedstone.put(Integer.valueOf(aCoverVariable), Byte.valueOf(aInputRedstone)); + return aCoverVariable; + } + + public boolean letsRedstoneGoIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 1; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneTransmitterInternal.java b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneTransmitterInternal.java new file mode 100644 index 0000000000..a1a2ed93c7 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneTransmitterInternal.java @@ -0,0 +1,30 @@ +package gregtech.common.covers; + +import gregtech.api.GregTech_API; +import gregtech.api.interfaces.tileentity.ICoverable; +import java.util.Map; + +public class GT_Cover_RedstoneTransmitterInternal + extends GT_Cover_RedstoneWirelessBase +{ + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + GregTech_API.sWirelessRedstone.put(Integer.valueOf(aCoverVariable), Byte.valueOf(aTileEntity.getOutputRedstoneSignal(aSide))); + return aCoverVariable; + } + + public boolean letsRedstoneGoOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean manipulatesSidedRedstoneOutput(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 1; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java new file mode 100644 index 0000000000..cbc5aa2a37 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java @@ -0,0 +1,98 @@ +package gregtech.common.covers; + +import gregtech.api.GregTech_API; +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; +import java.util.Map; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraftforge.fluids.Fluid; + +public abstract class GT_Cover_RedstoneWirelessBase + extends GT_CoverBehavior +{ + public boolean onCoverRemoval(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, boolean aForced) + { + GregTech_API.sWirelessRedstone.put(Integer.valueOf(aCoverVariable), Byte.valueOf((byte)0)); + return true; + } + + public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + if (((aX > 0.375D) && (aX < 0.625D)) || ((aSide > 3) && (((aY > 0.375D) && (aY < 0.625D)) || ((aSide < 2) && (((aZ > 0.375D) && (aZ < 0.625D)) || (aSide == 2) || (aSide == 3)))))) + { + GregTech_API.sWirelessRedstone.put(Integer.valueOf(aCoverVariable), Byte.valueOf((byte)0)); + aCoverVariable = GT_Utility.stackToInt(aPlayer.inventory.getCurrentItem()); + aTileEntity.setCoverDataAtSide(aSide, aCoverVariable); + GT_Utility.sendChatToPlayer(aPlayer, "Frequency: " + aCoverVariable); + return true; + } + return false; + } + + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + if (((aX > 0.375D) && (aX < 0.625D)) || ((aSide <= 3) || (((aY > 0.375D) && (aY < 0.625D)) || ((aSide >= 2) || (((aZ <= 0.375D) || (aZ >= 0.625D)) && (aSide != 2) && (aSide != 3)))))) + { + GregTech_API.sWirelessRedstone.put(Integer.valueOf(aCoverVariable), Byte.valueOf((byte)0)); + float[] tCoords = GT_Utility.getClickedFacingCoords(aSide, aX, aY, aZ); + switch ((byte)((byte)(int)(tCoords[0] * 2.0F) + 2 * (byte)(int)(tCoords[1] * 2.0F))) + { + case 0: + aCoverVariable -= 32; + break; + case 1: + aCoverVariable += 32; + break; + case 2: + aCoverVariable -= 1024; + break; + case 3: + aCoverVariable += 1024; + } + } + GT_Utility.sendChatToPlayer(aPlayer, "Frequency: " + aCoverVariable); + return aCoverVariable; + } + + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return true; + } + + public String getDescription(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return "Frequency: " + aCoverVariable; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 1; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Screen.java b/src/main/java/gregtech/common/covers/GT_Cover_Screen.java new file mode 100644 index 0000000000..ee71404972 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_Screen.java @@ -0,0 +1,80 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.util.GT_CoverBehavior; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.fluids.Fluid; + +public class GT_Cover_Screen + extends GT_CoverBehavior +{ + public float getBlastProofLevel(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 20.0F; + } + + public boolean letsRedstoneGoIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return false; + } + + public boolean letsRedstoneGoOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return false; + } + + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return false; + } + + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return false; + } + + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return false; + } + + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) + { + return false; + } + + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return false; + } + + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) + { + return false; + } + + public boolean isGUIClickable(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public boolean manipulatesSidedRedstoneOutput(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return false; + } + + public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + return false; + } + + public boolean onCoverRemoval(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, boolean aForced) + { + return true; + } + + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + return 0; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Shutter.java b/src/main/java/gregtech/common/covers/GT_Cover_Shutter.java new file mode 100644 index 0000000000..167e2dbd0a --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_Shutter.java @@ -0,0 +1,85 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IMachineProgress; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.fluids.Fluid; + +public class GT_Cover_Shutter + extends GT_CoverBehavior +{ + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + return aCoverVariable; + } + + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) + { + aCoverVariable = (aCoverVariable + 1) % 4; + if (aCoverVariable == 0) { + GT_Utility.sendChatToPlayer(aPlayer, "Open if work enabled"); + } + if (aCoverVariable == 1) { + GT_Utility.sendChatToPlayer(aPlayer, "Open if work disabled"); + } + if (aCoverVariable == 2) { + GT_Utility.sendChatToPlayer(aPlayer, "Only Output allowed"); + } + if (aCoverVariable == 3) { + GT_Utility.sendChatToPlayer(aPlayer, "Only Input allowed"); + } + return aCoverVariable; + } + + public boolean letsRedstoneGoIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) +{ + return aCoverVariable >= 2 ? aCoverVariable == 3 : (aTileEntity instanceof IMachineProgress) ? ((IMachineProgress)aTileEntity).isAllowedToWork() ? aCoverVariable % 2 == 0 : aCoverVariable % 2 != 0 : true; +} + +public boolean letsRedstoneGoOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) +{ + return aCoverVariable >= 2 ? aCoverVariable == 2 : (aTileEntity instanceof IMachineProgress) ? ((IMachineProgress)aTileEntity).isAllowedToWork() ? aCoverVariable % 2 == 0 : aCoverVariable % 2 != 0 : true; +} + +public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) +{ + return aCoverVariable >= 2 ? aCoverVariable == 3 : (aTileEntity instanceof IMachineProgress) ? ((IMachineProgress)aTileEntity).isAllowedToWork() ? aCoverVariable % 2 == 0 : aCoverVariable % 2 != 0 : true; +} + +public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) +{ + return aCoverVariable >= 2 ? aCoverVariable == 2 : (aTileEntity instanceof IMachineProgress) ? ((IMachineProgress)aTileEntity).isAllowedToWork() ? aCoverVariable % 2 == 0 : aCoverVariable % 2 != 0 : true; +} + +public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) +{ + return aCoverVariable >= 2 ? aCoverVariable == 3 : (aTileEntity instanceof IMachineProgress) ? ((IMachineProgress)aTileEntity).isAllowedToWork() ? aCoverVariable % 2 == 0 : aCoverVariable % 2 != 0 : true; +} + +public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) +{ + return aCoverVariable >= 2 ? aCoverVariable == 2 : (aTileEntity instanceof IMachineProgress) ? ((IMachineProgress)aTileEntity).isAllowedToWork() ? aCoverVariable % 2 == 0 : aCoverVariable % 2 != 0 : true; +} + +public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) +{ + return aCoverVariable >= 2 ? aCoverVariable == 3 : (aTileEntity instanceof IMachineProgress) ? ((IMachineProgress)aTileEntity).isAllowedToWork() ? aCoverVariable % 2 == 0 : aCoverVariable % 2 != 0 : true; +} + +public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) +{ + return aCoverVariable >= 2 ? aCoverVariable == 2 : (aTileEntity instanceof IMachineProgress) ? ((IMachineProgress)aTileEntity).isAllowedToWork() ? aCoverVariable % 2 == 0 : aCoverVariable % 2 != 0 : true; +} + + public boolean alwaysLookConnected(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 0; + } +} diff --git a/src/main/java/gregtech/common/covers/GT_Cover_SolarPanel.java b/src/main/java/gregtech/common/covers/GT_Cover_SolarPanel.java new file mode 100644 index 0000000000..8ad8359708 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_SolarPanel.java @@ -0,0 +1,41 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.util.GT_CoverBehavior; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; + +public class GT_Cover_SolarPanel + extends GT_CoverBehavior +{ + private final int mVoltage; + + public GT_Cover_SolarPanel(int aVoltage) + { + this.mVoltage = aVoltage; + } + + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + if (aTimer % 100L == 0L) { + if ((aSide != 1) || (aTileEntity.getWorld().isThundering())) + { + aCoverVariable = 0; + } + else + { + boolean bRain = (aTileEntity.getWorld().isRaining()) && (aTileEntity.getBiome().rainfall > 0.0F); + aCoverVariable = bRain && aTileEntity.getWorld().skylightSubtracted >= 4 || !aTileEntity.getSkyAtSide(aSide) ? 0 : ((int) (!bRain && aTileEntity.getWorld().isDaytime() ? 1 : 2)); + } + } + if ((aCoverVariable == 1) || ((aCoverVariable == 2) && (aTimer % 8L == 0L))) { + aTileEntity.injectEnergyUnits((byte)6, this.mVoltage, 1L); + } + return aCoverVariable; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 1; + } +} \ No newline at end of file diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Vent.java b/src/main/java/gregtech/common/covers/GT_Cover_Vent.java new file mode 100644 index 0000000000..5bab99fb65 --- /dev/null +++ b/src/main/java/gregtech/common/covers/GT_Cover_Vent.java @@ -0,0 +1,40 @@ +package gregtech.common.covers; + +import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.interfaces.tileentity.IMachineProgress; +import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.GT_Utility; + +public class GT_Cover_Vent + extends GT_CoverBehavior +{ + private final int mEfficiency; + + public GT_Cover_Vent(int aEfficiency) + { + this.mEfficiency = aEfficiency; + } + + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) + { + if ((aTileEntity instanceof IMachineProgress)) + { + if ((((IMachineProgress)aTileEntity).hasThingsToDo()) && (aCoverVariable != ((IMachineProgress)aTileEntity).getProgress()) && + (!GT_Utility.hasBlockHitBox(aTileEntity.getWorld(), aTileEntity.getOffsetX(aSide, 1), aTileEntity.getOffsetY(aSide, 1), aTileEntity.getOffsetZ(aSide, 1)))) { + ((IMachineProgress)aTileEntity).increaseProgress(this.mEfficiency); + } + return ((IMachineProgress)aTileEntity).getProgress(); + } + return 0; + } + + public boolean alwaysLookConnected(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return true; + } + + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) + { + return 60; + } +} -- cgit