aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/tileentities/machines
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2023-07-01 16:14:39 +0900
committerGitHub <noreply@github.com>2023-07-01 16:14:39 +0900
commit027b98a364a5a7b13fc281494844a2ccbf3712c8 (patch)
treebbae19834bbfea509a6f43e38dde98aa124f08ba /src/main/java/gregtech/common/tileentities/machines
parentcc5393c36372456199925ecce3cc80295ed77cb7 (diff)
downloadGT5-Unofficial-027b98a364a5a7b13fc281494844a2ccbf3712c8.tar.gz
GT5-Unofficial-027b98a364a5a7b13fc281494844a2ccbf3712c8.tar.bz2
GT5-Unofficial-027b98a364a5a7b13fc281494844a2ccbf3712c8.zip
Refactor Cleanroom logic (#2108)
Diffstat (limited to 'src/main/java/gregtech/common/tileentities/machines')
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Charcoal_Pit.java5
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Cleanroom.java75
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PrimitiveBlastFurnace.java5
3 files changed, 37 insertions, 48 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Charcoal_Pit.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Charcoal_Pit.java
index 8e5ad21bbe..6250b11300 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Charcoal_Pit.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Charcoal_Pit.java
@@ -58,11 +58,6 @@ public class GT_MetaTileEntity_Charcoal_Pit extends GT_MetaTileEntity_TooltipMul
}
@Override
- public Class<?> getType() {
- return GT_MetaTileEntity_Cleanroom.class;
- }
-
- @Override
public boolean isCorrectMachinePart(ItemStack aStack) {
return true;
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Cleanroom.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Cleanroom.java
index a02e2647d0..6cd915e1c3 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Cleanroom.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_Cleanroom.java
@@ -8,7 +8,9 @@ import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TOP_CLEANROOM_ACTIV
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TOP_CLEANROOM_GLOW;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
@@ -23,9 +25,10 @@ import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
import gregtech.api.GregTech_API;
import gregtech.api.enums.GT_Values;
+import gregtech.api.interfaces.ICleanroom;
+import gregtech.api.interfaces.ICleanroomReceiver;
import gregtech.api.interfaces.ISecondaryDescribable;
import gregtech.api.interfaces.ITexture;
-import gregtech.api.interfaces.metatileentity.IMachineCallback;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicHull;
@@ -33,11 +36,11 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_TooltipMult
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_Log;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
-import gregtech.api.util.GT_Recipe;
public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiBlockBase
- implements IConstructable, ISecondaryDescribable {
+ implements IConstructable, ISecondaryDescribable, ICleanroom {
+ private final Set<ICleanroomReceiver> cleanroomReceivers = new HashSet<>();
private int mHeight = -1;
public GT_MetaTileEntity_Cleanroom(int aID, String aName, String aNameRegional) {
@@ -54,6 +57,27 @@ public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiB
}
@Override
+ public int getCleanness() {
+ return mEfficiency;
+ }
+
+ @Override
+ public boolean isValidCleanroom() {
+ return isValid() && mMachine;
+ }
+
+ @Override
+ public void pollute() {
+ mEfficiency = 0;
+ mWrench = false;
+ mScrewdriver = false;
+ mSoftHammer = false;
+ mHardHammer = false;
+ mSolderingTool = false;
+ mCrowbar = false;
+ }
+
+ @Override
protected GT_Multiblock_Tooltip_Builder createTooltip() {
final GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
tt.addMachineType("Cleanroom")
@@ -119,6 +143,8 @@ public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiB
final HashMap<String, Integer> otherBlocks = new HashMap<>();
boolean doorState = false;
this.mUpdate = 100;
+ cleanroomReceivers.forEach(r -> r.setCleanroom(null));
+ cleanroomReceivers.clear();
if (debugCleanroom) {
GT_Log.out.println("Cleanroom: Checking machine");
@@ -273,7 +299,7 @@ public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiB
} else if (e.getValue() > ratio * ce.percentage) return false;
}
- setCallbacks(x, y, z, aBaseMetaTileEntity);
+ setCleanroomReceivers(x, y, z, aBaseMetaTileEntity);
if (doorState) {
this.mEfficiency = Math.max(0, this.mEfficiency - 200);
@@ -286,38 +312,16 @@ public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiB
return true;
}
- public void doMaintenanceIssue() {
- mWrench = false;
- mScrewdriver = false;
- mSoftHammer = false;
- mHardHammer = false;
- mSolderingTool = false;
- mCrowbar = false;
- }
-
- private void setCallbacks(int x, int y, int z, IGregTechTileEntity aBaseMetaTileEntity) {
- for (int dX = -x + 1; dX <= x - 1; dX++)
+ private void setCleanroomReceivers(int x, int y, int z, IGregTechTileEntity aBaseMetaTileEntity) {
+ for (int dX = -x + 1; dX <= x - 1; dX++) {
for (int dZ = -z + 1; dZ <= z - 1; dZ++) for (int dY = -1; dY >= y + 1; dY--) {
TileEntity tTileEntity = aBaseMetaTileEntity.getTileEntityOffset(dX, dY, dZ);
-
- if (tTileEntity instanceof IGregTechTileEntity) {
- IMetaTileEntity iMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity();
-
- if (iMetaTileEntity instanceof IMachineCallback<?>)
- checkAndSetCallback((IMachineCallback<?>) iMetaTileEntity);
-
- } else if (tTileEntity instanceof IMachineCallback<?>)
- checkAndSetCallback((IMachineCallback<?>) tTileEntity);
+ if (tTileEntity instanceof ICleanroomReceiver receiver) {
+ receiver.setCleanroom(this);
+ cleanroomReceivers.add(receiver);
+ }
}
- }
-
- @SuppressWarnings("unchecked")
- private void checkAndSetCallback(IMachineCallback<?> iMachineCallback) {
- if (debugCleanroom) GT_Log.out.println(
- "Cleanroom: IMachineCallback detected, checking for cleanroom: "
- + (iMachineCallback.getType() == this.getClass()));
- if (iMachineCallback.getType() == this.getClass())
- ((IMachineCallback<GT_MetaTileEntity_Cleanroom>) iMachineCallback).setCallbackBase(this);
+ }
}
@Override
@@ -347,11 +351,6 @@ public class GT_MetaTileEntity_Cleanroom extends GT_MetaTileEntity_TooltipMultiB
}
@Override
- public GT_Recipe.GT_Recipe_Map getRecipeMap() {
- return null;
- }
-
- @Override
public boolean isCorrectMachinePart(ItemStack aStack) {
return true;
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PrimitiveBlastFurnace.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PrimitiveBlastFurnace.java
index edbb4015b7..9f9dc440ed 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PrimitiveBlastFurnace.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PrimitiveBlastFurnace.java
@@ -370,11 +370,6 @@ public abstract class GT_MetaTileEntity_PrimitiveBlastFurnace extends MetaTileEn
}
}
- @Override
- public Class<?> getType() {
- return GT_MetaTileEntity_Cleanroom.class;
- }
-
protected GT_Recipe.GT_Recipe_Map getRecipeMap() {
return GT_Recipe.GT_Recipe_Map.sPrimitiveBlastRecipes;
}