aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGlodBlock <1356392126@qq.com>2022-04-23 01:28:34 +0800
committerGlodBlock <1356392126@qq.com>2022-04-23 01:28:34 +0800
commit1f40395be4dcc2abe6be596ac403acb05e4d05ff (patch)
treece413615bd1d9881b252a6a97b902582faefa5ee /src/main/java/com
parent68e92e5e225c9bce8514d5efdbf6c4f3e6a0457d (diff)
downloadGT5-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.java92
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();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}