diff options
9 files changed, 80 insertions, 8 deletions
diff --git a/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_TeslaCoil.java b/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_TeslaCoil.java index e5d2b7acde..381aa1d730 100644 --- a/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_TeslaCoil.java +++ b/src/main/java/com/github/technus/tectech/thing/cover/GT_Cover_TM_TeslaCoil.java @@ -32,6 +32,16 @@ public class GT_Cover_TM_TeslaCoil extends GT_CoverBehavior { } @Override + public void onCoverUnload(ICoverable aTileEntity) { + if (!aTileEntity.isClientSide()) { + teslaSimpleNodeSetRemove( + new TeslaCoverConnection( + aTileEntity.getIGregTechTileEntityOffset(0, 0, 0), + getTeslaReceptionCapability())); + } + } + + @Override public boolean onCoverRemoval(ForgeDirection side, int aCoverID, int aCoverVariable, ICoverable aTileEntity, boolean aForced) { teslaSimpleNodeSetRemove( @@ -40,6 +50,12 @@ public class GT_Cover_TM_TeslaCoil extends GT_CoverBehavior { } @Override + public void onBaseTEDestroyed(ForgeDirection side, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + teslaSimpleNodeSetRemove( + new TeslaCoverConnection(aTileEntity.getIGregTechTileEntityOffset(0, 0, 0), getTeslaReceptionCapability())); + } + + @Override public String getDescription(ForgeDirection side, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { return "Do not attempt to use screwdriver!"; // TODO Translation support } diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java index d3fa0401e6..8c3ad47ebe 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java @@ -310,8 +310,8 @@ public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_Multiblock transferRadiusTransceiverSetting, transferRadiusCoverUltimateSetting, outputVoltageSetting, outputCurrentSetting, sortTimeMinSetting, overDriveSetting; protected Parameters.Group.ParameterOut popogaDisplay, transferRadiusTowerDisplay, transferRadiusTransceiverDisplay, - transferRadiusCoverUltimateDisplay, outputVoltageDisplay, outputCurrentDisplay, energyCapacityDisplay, - energyStoredDisplay, energyFractionDisplay, sortTimeDisplay; + transferRadiusCoverUltimateDisplay, outputVoltageDisplay, outputCurrentDisplay, outputMaxDisplay, + energyCapacityDisplay, energyStoredDisplay, energyFractionDisplay, sortTimeDisplay; private static final INameFunction<GT_MetaTileEntity_TM_teslaCoil> HYSTERESIS_LOW_SETTING_NAME = (base, p) -> translateToLocal("gt.blockmachines.multimachine.tm.teslaCoil.cfgi.0"); // Hysteresis low setting @@ -350,6 +350,8 @@ public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_Multiblock // display private static final INameFunction<GT_MetaTileEntity_TM_teslaCoil> OUTPUT_VOLTAGE_DISPLAY_NAME = (base, p) -> translateToLocal("gt.blockmachines.multimachine.tm.teslaCoil.cfgo.3"); // Output voltage display + private static final INameFunction<GT_MetaTileEntity_TM_teslaCoil> OUTPUT_MAX_DISPLAY_NAME = (base, + p) -> translateToLocal("gt.blockmachines.multimachine.tm.teslaCoil.cfgo.9"); // Output max display private static final INameFunction<GT_MetaTileEntity_TM_teslaCoil> OUTPUT_CURRENT_DISPLAY_NAME = (base, p) -> translateToLocal("gt.blockmachines.multimachine.tm.teslaCoil.cfgo.4"); // Output current display private static final INameFunction<GT_MetaTileEntity_TM_teslaCoil> ENERGY_CAPACITY_DISPLAY_NAME = (base, @@ -784,7 +786,7 @@ public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_Multiblock transferRadiusCoverUltimateDisplay = hatch_3 .makeOutParameter(1, 0, TRANSFER_RADIUS_COVER_ULTIMATE_DISPLAY_NAME, TRANSFER_RADIUS_COVER_ULTIMATE_STATUS); outputVoltageDisplay = hatch_4.makeOutParameter(0, 0, OUTPUT_VOLTAGE_DISPLAY_NAME, POWER_STATUS); - popogaDisplay = hatch_4.makeOutParameter(1, 0, POPOGA_NAME, POPOGA_STATUS); + outputMaxDisplay = hatch_4.makeOutParameter(1, 0, OUTPUT_MAX_DISPLAY_NAME, POWER_STATUS); outputCurrentDisplay = hatch_5.makeOutParameter(0, 0, OUTPUT_CURRENT_DISPLAY_NAME, POWER_STATUS); energyCapacityDisplay = hatch_5.makeOutParameter(1, 0, ENERGY_CAPACITY_DISPLAY_NAME, ENERGY_STATUS); energyStoredDisplay = hatch_6.makeOutParameter(0, 0, ENERGY_STORED_DISPLAY_NAME, ENERGY_STATUS); @@ -822,6 +824,7 @@ public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_Multiblock setEUVar(0); energyStoredDisplay.set(0); energyFractionDisplay.set(0); + outputMaxDisplay.set(0); } @Override @@ -861,7 +864,7 @@ public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_Multiblock // Power transfer outputCurrentDisplay.set(powerTeslaNodeMap(this)); - + outputMaxDisplay.set(Math.max(outputCurrentDisplay.get(), outputMaxDisplay.get())); // TODO Encapsulate the spark sender sparkCount--; if (sparkCount == 0 && visualEffect) { diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java index bf6358c884..386975dd6d 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java @@ -980,9 +980,9 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity @Override public void onChunkUnload() { if (canAccessData()) { + onCoverUnload(); mMetaTileEntity.onUnload(); } - super.onChunkUnload(); onChunkUnloadAE(); } @@ -2276,7 +2276,9 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity @Override public void onBlockDestroyed() { - if (canAccessData()) getMetaTileEntity().onBlockDestroyed(); + if (canAccessData()) { + getMetaTileEntity().onBlockDestroyed(); + } } @Override diff --git a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java index 277b79c777..4dce0a083e 100644 --- a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java @@ -194,6 +194,22 @@ public abstract class CoverableTileEntity extends BaseTileEntity implements ICov return true; } + protected void onCoverUnload() { + byte validCoversMask = this.validCoversMask; + if (validCoversMask == 0) return; + + for (int i = Integer.numberOfTrailingZeros(validCoversMask); i < 6; i++) { + if (((validCoversMask >>> i) & 1) == 0) continue; + onCoverUnloadAtSide(ForgeDirection.VALID_DIRECTIONS[i]); + } + } + + public void onCoverUnloadAtSide(ForgeDirection side) { + final CoverInfo coverInfo = getCoverInfoAtSide(side); + if (!coverInfo.isValid()) return; + coverInfo.onCoverUnload(); + } + public boolean tickCoverAtSide(ForgeDirection side) { return tickCoverAtSide(side, mTickTimer); } diff --git a/src/main/java/gregtech/api/util/GT_CoverBehavior.java b/src/main/java/gregtech/api/util/GT_CoverBehavior.java index 34fc151b9a..3c3a8607fe 100644 --- a/src/main/java/gregtech/api/util/GT_CoverBehavior.java +++ b/src/main/java/gregtech/api/util/GT_CoverBehavior.java @@ -100,6 +100,18 @@ public abstract class GT_CoverBehavior extends GT_CoverBehaviorBase<ISerializabl } @Override + protected void onBaseTEDestroyedImpl(ForgeDirection side, int aCoverID, + ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + onBaseTEDestroyed(side, aCoverID, convert(aCoverVariable), aTileEntity); + } + + @Override + protected void onCoverUnloadImpl(ForgeDirection side, int aCoverID, ISerializableObject aCoverVariable, + ICoverable aTileEntity) { + onCoverUnload(aTileEntity); + } + + @Override protected String getDescriptionImpl(ForgeDirection side, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { return getDescription(side, aCoverID, convert(aCoverVariable), aTileEntity); @@ -275,6 +287,12 @@ public abstract class GT_CoverBehavior extends GT_CoverBehaviorBase<ISerializabl return true; } + public void onCoverUnload(ICoverable aTileEntity) { + + } + + public void onBaseTEDestroyed(ForgeDirection side, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {} + /** * Gives a small Text for the status of the Cover. */ diff --git a/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java b/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java index be9492ebba..76408e59c0 100644 --- a/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java +++ b/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java @@ -256,6 +256,14 @@ public abstract class GT_CoverBehaviorBase<T extends ISerializableObject> { } /** + * Called when Base TE being unloaded. + */ + public void onCoverUnload(ForgeDirection side, int aCoverID, ISerializableObject aCoverVariable, + ICoverable aTileEntity) { + onCoverUnloadImpl(side, aCoverID, forceCast(aCoverVariable), aTileEntity); + } + + /** * How Blast Proof the Cover is. 30 is normal. */ public final float getBlastProofLevel(ForgeDirection side, int aCoverID, ISerializableObject aCoverVariable, @@ -581,6 +589,9 @@ public abstract class GT_CoverBehaviorBase<T extends ISerializableObject> { protected void onBaseTEDestroyedImpl(ForgeDirection side, int aCoverID, T aCoverVariable, ICoverable aTileEntity) {} + protected void onCoverUnloadImpl(ForgeDirection side, int aCoverID, ISerializableObject aCoverVariable, + ICoverable aTileEntity) {} + protected boolean isRedstoneSensitiveImpl(ForgeDirection side, int aCoverID, T aCoverVariable, ICoverable aTileEntity, long aTimer) { return false; diff --git a/src/main/java/gregtech/common/covers/CoverInfo.java b/src/main/java/gregtech/common/covers/CoverInfo.java index 3deafba899..f6c8fd963c 100644 --- a/src/main/java/gregtech/common/covers/CoverInfo.java +++ b/src/main/java/gregtech/common/covers/CoverInfo.java @@ -151,6 +151,10 @@ public final class CoverInfo { .doCoverThings(coverSide, aRedstone, coverID, coverData, coveredTile.get(), aTickTimer); } + public void onCoverUnload() { + getCoverBehavior().onCoverUnload(coverSide, coverID, coverData, coveredTile.get()); + } + public void onBaseTEDestroyed() { getCoverBehavior().onBaseTEDestroyed(coverSide, coverID, coverData, coveredTile.get()); } diff --git a/src/main/resources/assets/tectech/lang/en_US.lang b/src/main/resources/assets/tectech/lang/en_US.lang index 511def2331..e92bbd69d9 100644 --- a/src/main/resources/assets/tectech/lang/en_US.lang +++ b/src/main/resources/assets/tectech/lang/en_US.lang @@ -684,6 +684,7 @@ gt.blockmachines.multimachine.tm.teslaCoil.cfgo.5=Energy Capacity display gt.blockmachines.multimachine.tm.teslaCoil.cfgo.6=Energy Stored display gt.blockmachines.multimachine.tm.teslaCoil.cfgo.7=Energy Fraction display gt.blockmachines.multimachine.tm.teslaCoil.cfgo.8=Scan time display +gt.blockmachines.multimachine.tm.teslaCoil.cfgo.9=Output max display gt.blockmachines.multimachine.em.switch.name=Network Switch With QoS gt.blockmachines.multimachine.em.switch.hint=1 - Classic/Data Hatches or Computer casing diff --git a/src/main/resources/assets/tectech/lang/zh_CN.lang b/src/main/resources/assets/tectech/lang/zh_CN.lang index dd32b7a6ec..9a64ade7c7 100644 --- a/src/main/resources/assets/tectech/lang/zh_CN.lang +++ b/src/main/resources/assets/tectech/lang/zh_CN.lang @@ -585,6 +585,7 @@ gt.blockmachines.multimachine.tm.teslaCoil.cfgo.5=能量容量显示 gt.blockmachines.multimachine.tm.teslaCoil.cfgo.6=已存储能量显示 gt.blockmachines.multimachine.tm.teslaCoil.cfgo.7=充能进度显示 gt.blockmachines.multimachine.tm.teslaCoil.cfgo.8=扫描时间显示 +gt.blockmachines.multimachine.tm.teslaCoil.cfgo.9=最高输出电流显示 gt.blockmachines.multimachine.em.switch.name=QoS网络交换机 gt.blockmachines.multimachine.em.switch.hint=1 - 基础仓室、光学接口或电子计算机机械方块 @@ -806,7 +807,7 @@ gt.blockmachines.debug.tt.writer.desc.2=ABC轴沿机器正面确定 #Example: ID:3 tt.keyword.ID=ID #Example: 32EU at 1A -tt.keyword.at= +tt.keyword.at= # Structure is too complex tt.keyword.Structure.StructureTooComplex=结构太复杂了! # Any X @@ -1293,4 +1294,4 @@ tt.IUPAC.ium=元素 tt.IUPAC.Anti=反 tt.keyword.Weird=* -tt.chat.debug.generator=激光模式:%s
\ No newline at end of file +tt.chat.debug.generator=激光模式:%s |