diff options
author | GlodBlock <1356392126@qq.com> | 2022-04-23 01:28:34 +0800 |
---|---|---|
committer | GlodBlock <1356392126@qq.com> | 2022-04-23 01:28:34 +0800 |
commit | 1f40395be4dcc2abe6be596ac403acb05e4d05ff (patch) | |
tree | ce413615bd1d9881b252a6a97b902582faefa5ee /src/main/java/com | |
parent | 68e92e5e225c9bce8514d5efdbf6c4f3e6a0457d (diff) | |
download | GT5-Unofficial-1f40395be4dcc2abe6be596ac403acb05e4d05ff.tar.gz GT5-Unofficial-1f40395be4dcc2abe6be596ac403acb05e4d05ff.tar.bz2 GT5-Unofficial-1f40395be4dcc2abe6be596ac403acb05e4d05ff.zip |
laser mode for debug gen
Diffstat (limited to 'src/main/java/com')
-rw-r--r-- | src/main/java/com/github/technus/tectech/thing/metaTileEntity/single/GT_MetaTileEntity_DebugPowerGenerator.java | 92 |
1 files changed, 83 insertions, 9 deletions
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/single/GT_MetaTileEntity_DebugPowerGenerator.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/single/GT_MetaTileEntity_DebugPowerGenerator.java index 1be2173bfc..074a07181a 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/single/GT_MetaTileEntity_DebugPowerGenerator.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/single/GT_MetaTileEntity_DebugPowerGenerator.java @@ -1,5 +1,8 @@ package com.github.technus.tectech.thing.metaTileEntity.single; +import com.github.technus.tectech.mechanics.pipe.IConnectsToEnergyTunnel; +import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyTunnel; +import com.github.technus.tectech.thing.metaTileEntity.pipe.GT_MetaTileEntity_Pipe_Energy; import com.github.technus.tectech.thing.metaTileEntity.single.gui.GT_Container_DebugPowerGenerator; import com.github.technus.tectech.thing.metaTileEntity.single.gui.GT_GUIContainer_DebugPowerGenerator; import com.github.technus.tectech.util.CommonValues; @@ -8,25 +11,30 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_TieredMachineBlock; import gregtech.api.objects.GT_RenderedTexture; +import gregtech.api.util.GT_Utility; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; import static com.github.technus.tectech.thing.metaTileEntity.Textures.*; +import static com.github.technus.tectech.util.CommonValues.TRANSFER_AT; import static net.minecraft.util.StatCollector.translateToLocal; /** * Created by Tec on 23.03.2017. */ -public class GT_MetaTileEntity_DebugPowerGenerator extends GT_MetaTileEntity_TieredMachineBlock { +public class GT_MetaTileEntity_DebugPowerGenerator extends GT_MetaTileEntity_TieredMachineBlock implements IConnectsToEnergyTunnel { private static GT_RenderedTexture GENNY; + private boolean LASER = false; public int EUT=0,AMP=0; public boolean producing=true; @@ -46,6 +54,12 @@ public class GT_MetaTileEntity_DebugPowerGenerator extends GT_MetaTileEntity_Tie } @Override + public final void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) { + LASER = !LASER; + GT_Utility.sendChatToPlayer(aPlayer, String.format(StatCollector.translateToLocal("tt.chat.debug.generator"), LASER ? "ON" : "OFF")); + } + + @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister aBlockIconRegister) { super.registerIcons(aBlockIconRegister); @@ -54,7 +68,10 @@ public class GT_MetaTileEntity_DebugPowerGenerator extends GT_MetaTileEntity_Tie @Override public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) { - return new ITexture[]{MACHINE_CASINGS_TT[mTier][aColorIndex + 1], aSide != aFacing ? aActive? OVERLAYS_ENERGY_OUT_POWER_TT[mTier]: OVERLAYS_ENERGY_IN_POWER_TT[mTier] : GENNY}; + return new ITexture[]{ + MACHINE_CASINGS_TT[mTier][aColorIndex + 1], + aSide != aFacing ? LASER ? (aActive ? OVERLAYS_ENERGY_OUT_LASER_TT[mTier] : OVERLAYS_ENERGY_IN_LASER_TT[mTier]) + : (aActive ? OVERLAYS_ENERGY_OUT_POWER_TT[mTier]: OVERLAYS_ENERGY_IN_POWER_TT[mTier]) : GENNY}; } @Override @@ -86,12 +103,14 @@ public class GT_MetaTileEntity_DebugPowerGenerator extends GT_MetaTileEntity_Tie public void saveNBTData(NBTTagCompound aNBT) { aNBT.setInteger("eEUT",EUT); aNBT.setInteger("eAMP",AMP); + aNBT.setBoolean("eLaser",LASER); } @Override public void loadNBTData(NBTTagCompound aNBT) { EUT=aNBT.getInteger("eEUT"); AMP=aNBT.getInteger("eAMP"); + LASER=aNBT.getBoolean("eLaser"); producing=(long)AMP*EUT>=0; getBaseMetaTileEntity().setActive(producing); } @@ -105,10 +124,22 @@ public class GT_MetaTileEntity_DebugPowerGenerator extends GT_MetaTileEntity_Tie public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { if (aBaseMetaTileEntity.isServerSide()) { aBaseMetaTileEntity.setActive(producing); - if (aBaseMetaTileEntity.isActive()) { - setEUVar(maxEUStore()); - } else { - setEUVar(0); + if (!LASER) { + if (aBaseMetaTileEntity.isActive()) { + setEUVar(maxEUStore()); + } else { + setEUVar(0); + } + } + else { + byte Tick = (byte) (aTick % 20); + if (aBaseMetaTileEntity.isActive() && TRANSFER_AT == Tick) { + setEUVar(maxEUStore()); + moveAround(aBaseMetaTileEntity); + } + else if (TRANSFER_AT == Tick) { + setEUVar(0); + } } } } @@ -137,6 +168,7 @@ public class GT_MetaTileEntity_DebugPowerGenerator extends GT_MetaTileEntity_Tie return new String[]{ CommonValues.TEC_MARK_GENERAL, translateToLocal("gt.blockmachines.debug.tt.genny.desc.0"),//Power from nothing + EnumChatFormatting.AQUA + translateToLocal("gt.blockmachines.debug.tt.genny.desc.3"),// EnumChatFormatting.BLUE + translateToLocal("gt.blockmachines.debug.tt.genny.desc.1"),//Infinite Producer/Consumer EnumChatFormatting.BLUE + translateToLocal("gt.blockmachines.debug.tt.genny.desc.2")//Since i wanted one... }; @@ -149,12 +181,12 @@ public class GT_MetaTileEntity_DebugPowerGenerator extends GT_MetaTileEntity_Tie @Override public boolean isEnetOutput() { - return true; + return !LASER; } @Override public boolean isEnetInput() { - return true; + return !LASER; } @Override @@ -189,7 +221,7 @@ public class GT_MetaTileEntity_DebugPowerGenerator extends GT_MetaTileEntity_Tie @Override public long maxEUStore() { - return Math.abs((long)EUT*AMP)<<2; + return LASER ? Math.abs((long)EUT*AMP*24) : Math.abs((long)EUT*AMP)<<2 ; } @Override @@ -206,4 +238,46 @@ public class GT_MetaTileEntity_DebugPowerGenerator extends GT_MetaTileEntity_Tie public int maxProgresstime() { return (int) getBaseMetaTileEntity().getUniversalEnergyCapacity(); } + + @Override + public boolean canConnect(byte side) { + return LASER && side != getBaseMetaTileEntity().getFrontFacing(); + } + + private void moveAround(IGregTechTileEntity aBaseMetaTileEntity) { + for (byte face = 0; face < 6; face ++) { + if (face == aBaseMetaTileEntity.getFrontFacing()) + continue; + byte opposite = GT_Utility.getOppositeSide(face); + for (short dist = 1; dist < 1000; dist++) { + IGregTechTileEntity tGTTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityAtSideAndDistance(face, dist); + if (tGTTileEntity != null) { + IMetaTileEntity aMetaTileEntity = tGTTileEntity.getMetaTileEntity(); + if (aMetaTileEntity != null) { + if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_EnergyTunnel && + opposite == tGTTileEntity.getFrontFacing()) { + if (maxEUOutput() > ((GT_MetaTileEntity_Hatch_EnergyTunnel) aMetaTileEntity).maxEUInput()) { + aMetaTileEntity.doExplosion(maxEUOutput()); + } else { + long diff = Math.min( + AMP * 20L * maxEUOutput(), + Math.min( + ((GT_MetaTileEntity_Hatch_EnergyTunnel) aMetaTileEntity).maxEUStore() - + aMetaTileEntity.getBaseMetaTileEntity().getStoredEU(), + aBaseMetaTileEntity.getStoredEU() + )); + ((GT_MetaTileEntity_Hatch_EnergyTunnel) aMetaTileEntity) + .setEUVar(aMetaTileEntity.getBaseMetaTileEntity().getStoredEU() + diff); + } + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Pipe_Energy) { + if (((GT_MetaTileEntity_Pipe_Energy) aMetaTileEntity).connectionCount < 2) { + } else { + ((GT_MetaTileEntity_Pipe_Energy) aMetaTileEntity).markUsed(); + } + } + } + } + } + } + } } |