aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYang Xizhi <60341015+GlodBlock@users.noreply.github.com>2022-07-23 10:32:00 +0800
committerGitHub <noreply@github.com>2022-07-23 09:32:00 +0700
commita88f057799978571cd36b922a206e95e8499a2d9 (patch)
tree553ac348f60906d4121fc032a5f952f31049824c /src
parentd7be7c6c4615e96ac1055edab3ad9c698c22f1bf (diff)
downloadGT5-Unofficial-a88f057799978571cd36b922a206e95e8499a2d9.tar.gz
GT5-Unofficial-a88f057799978571cd36b922a206e95e8499a2d9.tar.bz2
GT5-Unofficial-a88f057799978571cd36b922a206e95e8499a2d9.zip
don't allow pollution machine in cleanroom (#1147)
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/api/interfaces/metatileentity/IMachineCallback.java2
-rw-r--r--src/main/java/gregtech/api/metatileentity/MetaTileEntity.java20
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java36
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Muffler.java6
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_TieredMachineBlock.java6
-rw-r--r--src/main/java/gregtech/common/GT_Pollution.java16
-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.java18
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PrimitiveBlastFurnace.java10
9 files changed, 76 insertions, 43 deletions
diff --git a/src/main/java/gregtech/api/interfaces/metatileentity/IMachineCallback.java b/src/main/java/gregtech/api/interfaces/metatileentity/IMachineCallback.java
index f67fb0f600..e9ca4125a2 100644
--- a/src/main/java/gregtech/api/interfaces/metatileentity/IMachineCallback.java
+++ b/src/main/java/gregtech/api/interfaces/metatileentity/IMachineCallback.java
@@ -3,5 +3,5 @@ package gregtech.api.interfaces.metatileentity;
public interface IMachineCallback<Machinetype extends IMetaTileEntity> {
Machinetype getCallbackBase();
void setCallbackBase(Machinetype callback);
- Class<Machinetype> getType();
+ Class<?> getType();
}
diff --git a/src/main/java/gregtech/api/metatileentity/MetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/MetaTileEntity.java
index b70d616a58..6230940058 100644
--- a/src/main/java/gregtech/api/metatileentity/MetaTileEntity.java
+++ b/src/main/java/gregtech/api/metatileentity/MetaTileEntity.java
@@ -8,12 +8,14 @@ import cpw.mods.fml.relauncher.SideOnly;
import gnu.trove.list.TIntList;
import gnu.trove.list.array.TIntArrayList;
import gregtech.api.GregTech_API;
+import gregtech.api.interfaces.metatileentity.IMachineCallback;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaPipeEntity_Cable;
import gregtech.api.objects.GT_ItemStack;
import gregtech.api.util.*;
import gregtech.common.GT_Client;
+import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_Cleanroom;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import net.minecraft.block.Block;
@@ -53,7 +55,7 @@ import static gregtech.api.enums.GT_Values.V;
* "new GT_MetaTileEntity_E_Furnace(54, "GT_E_Furnace", "Automatic E-Furnace");"
*/
@SuppressWarnings("unused")
-public abstract class MetaTileEntity implements IMetaTileEntity {
+public abstract class MetaTileEntity implements IMetaTileEntity, IMachineCallback<MetaTileEntity> {
/**
* Only assigned for the MetaTileEntity in the List! Also only used to get the localized Name for the ItemStack and for getInvName.
*/
@@ -64,6 +66,7 @@ public abstract class MetaTileEntity implements IMetaTileEntity {
public final ItemStack[] mInventory;
public boolean doTickProfilingInThisTick = true;
+ private MetaTileEntity mCallBackTile;
/**
* accessibility to this Field is no longer given, see below
@@ -277,6 +280,21 @@ public abstract class MetaTileEntity implements IMetaTileEntity {
public void stopSoundLoop(byte aValue, double aX, double aY, double aZ) {/*Do nothing*/}
@Override
+ public MetaTileEntity getCallbackBase() {
+ return mCallBackTile;
+ }
+
+ @Override
+ public void setCallbackBase(MetaTileEntity callback) {
+ this.mCallBackTile = callback;
+ }
+
+ @Override
+ public Class<?> getType() {
+ return null;
+ }
+
+ @Override
public final void sendSound(byte aIndex) {
if (!getBaseMetaTileEntity().hasMufflerUpgrade())
getBaseMetaTileEntity().sendBlockEvent(GregTechTileClientEvents.DO_SOUND, aIndex);
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java
index be7f9e26dc..85ebcc0e17 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java
@@ -6,19 +6,13 @@ import gregtech.api.enums.ItemList;
import gregtech.api.gui.GT_Container_BasicMachine;
import gregtech.api.gui.GT_GUIContainer_BasicMachine;
import gregtech.api.interfaces.ITexture;
-import gregtech.api.interfaces.metatileentity.IMachineCallback;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.objects.GT_ItemStack;
import gregtech.api.render.TextureFactory;
-import gregtech.api.util.GT_CoverBehaviorBase;
+import gregtech.api.util.*;
+import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import gregtech.common.power.BasicMachineEUPower;
-import gregtech.api.util.GT_Log;
-import gregtech.api.util.GT_OreDictUnificator;
import gregtech.common.power.Power;
-import gregtech.api.util.GT_Recipe;
-import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
-import gregtech.api.util.GT_Utility;
-import gregtech.api.util.GT_ClientPreference;
import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_Cleanroom;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
@@ -51,7 +45,7 @@ import static gregtech.api.util.GT_Utility.moveMultipleItemStacks;
* This is the main construct for my Basic Machines such as the Automatic Extractor
* Extend this class to make a simple Machine
*/
-public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_BasicTank implements IMachineCallback<GT_MetaTileEntity_Cleanroom> {
+public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_BasicTank {
/**
* return values for checkRecipe()
@@ -71,9 +65,6 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B
public String mGUIName, mNEIName;
protected final Power mPower;
-
- @Deprecated
- public GT_MetaTileEntity_Cleanroom mCleanroom;
/**
* Contains the Recipe which has been previously used, or null if there was no previous Recipe, which could have been buffered
*/
@@ -166,21 +157,6 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B
}
@Override
- public GT_MetaTileEntity_Cleanroom getCallbackBase() {
- return this.mCleanroom;
- }
-
- @Override
- public void setCallbackBase(GT_MetaTileEntity_Cleanroom callback) {
- this.mCleanroom = callback;
- }
-
- @Override
- public Class<GT_MetaTileEntity_Cleanroom> getType() {
- return GT_MetaTileEntity_Cleanroom.class;
- }
-
- @Override
public ITexture[][][] getTextureSet(ITexture[] aTextures) {
ITexture[][][] rTextures = new ITexture[14][17][];
aTextures = Arrays.copyOf(aTextures, 14);
@@ -955,7 +931,7 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B
mOutputBlocked++;
return FOUND_RECIPE_BUT_DID_NOT_MEET_REQUIREMENTS;
}
- if (tRecipe.mSpecialValue == -200 && (getCallbackBase() == null || getCallbackBase().mEfficiency == 0))
+ if (tRecipe.mSpecialValue == -200 && (getCallbackBase() == null || !(getCallbackBase() instanceof GT_MetaTileEntity_Cleanroom) || ((GT_MetaTileEntity_Cleanroom) getCallbackBase()).mEfficiency == 0))
return FOUND_RECIPE_BUT_DID_NOT_MEET_REQUIREMENTS;
if (!tRecipe.isRecipeInputEqual(true, new FluidStack[]{getFillableStack()}, getAllInputs()))
return FOUND_RECIPE_BUT_DID_NOT_MEET_REQUIREMENTS;
@@ -964,12 +940,12 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B
mOutputItems[i] = tRecipe.getOutput(i);
if (tRecipe.mSpecialValue == -200 || tRecipe.mSpecialValue == -300)
for (int i = 0; i < mOutputItems.length; i++)
- if (mOutputItems[i] != null && getBaseMetaTileEntity().getRandomNumber(10000) > getCallbackBase().mEfficiency)
+ if (mOutputItems[i] != null && getBaseMetaTileEntity().getRandomNumber(10000) > ((GT_MetaTileEntity_Cleanroom) getCallbackBase()).mEfficiency)
{
if (debugCleanroom) {
GT_Log.out.println(
"BasicMachine: Voiding output due to efficiency failure. mEfficiency = " +
- getCallbackBase().mEfficiency
+ ((GT_MetaTileEntity_Cleanroom) getCallbackBase()).mEfficiency
);
}
mOutputItems[i] = null;
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Muffler.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Muffler.java
index 9e59520edb..fa8eb8a9df 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Muffler.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Muffler.java
@@ -10,6 +10,7 @@ import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.WorldSpawnedEventBuilder;
import gregtech.common.GT_Pollution;
+import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_Cleanroom;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@@ -96,6 +97,11 @@ public class GT_MetaTileEntity_Hatch_Muffler extends GT_MetaTileEntity_Hatch {
}
@Override
+ public Class<?> getType() {
+ return GT_MetaTileEntity_Cleanroom.class;
+ }
+
+ @Override
public boolean isFacingValid(byte aFacing) {
return facings[aFacing];
}
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_TieredMachineBlock.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_TieredMachineBlock.java
index c413fe3c07..28df257eff 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_TieredMachineBlock.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_TieredMachineBlock.java
@@ -2,6 +2,7 @@ package gregtech.api.metatileentity.implementations;
import gregtech.api.interfaces.ITexture;
import gregtech.api.metatileentity.MetaTileEntity;
+import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_Cleanroom;
import static gregtech.api.enums.GT_Values.GT;
@@ -46,6 +47,11 @@ public abstract class GT_MetaTileEntity_TieredMachineBlock extends MetaTileEntit
else mTextures = null;
}
+ @Override
+ public Class<?> getType() {
+ return GT_MetaTileEntity_Cleanroom.class;
+ }
+
public GT_MetaTileEntity_TieredMachineBlock(String aName, int aTier, int aInvSlotCount, String aDescription, ITexture[][][] aTextures) {
super(aName, aInvSlotCount);
mTier = (byte) aTier;
diff --git a/src/main/java/gregtech/common/GT_Pollution.java b/src/main/java/gregtech/common/GT_Pollution.java
index bc7c136e96..49b33fb1cb 100644
--- a/src/main/java/gregtech/common/GT_Pollution.java
+++ b/src/main/java/gregtech/common/GT_Pollution.java
@@ -5,11 +5,14 @@ import cpw.mods.fml.common.gameevent.TickEvent;
import cpw.mods.fml.common.network.NetworkRegistry;
import gregtech.GT_Mod;
import gregtech.api.enums.GT_Values;
+import gregtech.api.interfaces.metatileentity.IMachineCallback;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.net.GT_Packet_Pollution;
import gregtech.api.util.GT_ChunkAssociatedData;
import gregtech.api.util.GT_Utility;
import gregtech.common.render.GT_PollutionRenderer;
+import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_Cleanroom;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.EntityLivingBase;
@@ -281,8 +284,19 @@ public class GT_Pollution {
}
/** @see #addPollution(World, int, int, int) */
+ @SuppressWarnings("rawtypes")
public static void addPollution(IGregTechTileEntity te, int aPollution) {
if (!GT_Mod.gregtechproxy.mPollution || aPollution == 0 || te.isClientSide()) return;
+ IMetaTileEntity iMetaTileEntity = te.getMetaTileEntity();
+
+ if (iMetaTileEntity instanceof IMachineCallback) {
+ if (((IMachineCallback) iMetaTileEntity).getCallbackBase() instanceof GT_MetaTileEntity_Cleanroom) {
+ if (aPollution > 0) {
+ ((GT_MetaTileEntity_Cleanroom) ((IMachineCallback) iMetaTileEntity).getCallbackBase()).doMaintenanceIssue();
+ }
+ }
+ }
+
mutatePollution(te.getWorld(), te.getXCoord() >> 4, te.getZCoord() >> 4, d -> d.changeAmount(aPollution), null);
}
@@ -362,7 +376,7 @@ public class GT_Pollution {
//Add compatibility with old code
@Deprecated /*Don't use it... too weird way of passing position*/
public static void addPollution(World aWorld, ChunkPosition aPos, int aPollution) {
- //The abuse of ChunkPosition to store block position and dim...
+ //The abuse of ChunkPosition to store block position and dim...
//is just bad especially when that is both used to store ChunkPos and BlockPos depending on context
addPollution(aWorld.getChunkFromBlockCoords(aPos.chunkPosX, aPos.chunkPosZ), aPollution);
}
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 89f62e3d15..b6c9b230a1 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
@@ -55,6 +55,11 @@ 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 9d8b657330..b1c4534655 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
@@ -1,12 +1,7 @@
package gregtech.common.tileentities.machines.multi;
-import java.util.HashMap;
-import java.util.Map;
-
import com.gtnewhorizon.structurelib.StructureLibAPI;
-import com.gtnewhorizon.structurelib.alignment.IAlignmentLimits;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
-import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import gregtech.api.GregTech_API;
import gregtech.api.enums.GT_Values;
import gregtech.api.gui.GT_GUIContainer_MultiMachine;
@@ -29,7 +24,9 @@ import net.minecraft.world.World;
import net.minecraftforge.common.config.ConfigCategory;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.common.util.ForgeDirection;
-import org.lwjgl.input.Keyboard;
+
+import java.util.HashMap;
+import java.util.Map;
import static gregtech.api.enums.GT_Values.debugCleanroom;
import static gregtech.api.enums.Textures.BlockIcons.*;
@@ -289,6 +286,15 @@ 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++)
for (int dZ = -z + 1; dZ <= z - 1; dZ++)
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 3d806b253d..e020c2830c 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
@@ -230,10 +230,7 @@ public abstract class GT_MetaTileEntity_PrimitiveBlastFurnace extends MetaTileEn
}
}
if (this.mMaxProgresstime > 0 && (aTimer % 20L == 0L)) {
- GT_Pollution.addPollution(this.getBaseMetaTileEntity().getWorld(),
- new ChunkPosition(this.getBaseMetaTileEntity().getXCoord(), this.getBaseMetaTileEntity().getYCoord(),
- this.getBaseMetaTileEntity().getZCoord()),
- GT_Mod.gregtechproxy.mPollutionPrimitveBlastFurnacePerSecond);
+ GT_Pollution.addPollution(this.getBaseMetaTileEntity(), GT_Mod.gregtechproxy.mPollutionPrimitveBlastFurnacePerSecond);
}
aBaseMetaTileEntity.setActive((this.mMaxProgresstime > 0) && (this.mMachine));
@@ -273,6 +270,11 @@ public abstract class GT_MetaTileEntity_PrimitiveBlastFurnace extends MetaTileEn
}
}
+ @Override
+ public Class<?> getType() {
+ return GT_MetaTileEntity_Cleanroom.class;
+ }
+
private void addOutputProducts() {
if (this.mOutputItems == null) {
return;