diff options
author | Yang Xizhi <60341015+GlodBlock@users.noreply.github.com> | 2022-07-23 10:32:00 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-23 09:32:00 +0700 |
commit | a88f057799978571cd36b922a206e95e8499a2d9 (patch) | |
tree | 553ac348f60906d4121fc032a5f952f31049824c /src | |
parent | d7be7c6c4615e96ac1055edab3ad9c698c22f1bf (diff) | |
download | GT5-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')
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; |