diff options
12 files changed, 152 insertions, 120 deletions
diff --git a/src/main/java/gregtech/api/interfaces/ICleanroom.java b/src/main/java/gregtech/api/interfaces/ICleanroom.java new file mode 100644 index 0000000000..61e339d050 --- /dev/null +++ b/src/main/java/gregtech/api/interfaces/ICleanroom.java @@ -0,0 +1,22 @@ +package gregtech.api.interfaces; + +/** + * Classes implementing this interface can act as cleanroom, used to satisfy environment required for some recipes. + */ +public interface ICleanroom { + + /** + * @return Current cleanness of this cleanroom. Max at 10000. + */ + int getCleanness(); + + /** + * @return If this cleanroom is valid. + */ + boolean isValidCleanroom(); + + /** + * Release pollution to this cleanroom. + */ + void pollute(); +} diff --git a/src/main/java/gregtech/api/interfaces/ICleanroomReceiver.java b/src/main/java/gregtech/api/interfaces/ICleanroomReceiver.java new file mode 100644 index 0000000000..b0d42f9aec --- /dev/null +++ b/src/main/java/gregtech/api/interfaces/ICleanroomReceiver.java @@ -0,0 +1,18 @@ +package gregtech.api.interfaces; + +import javax.annotation.Nullable; + +import net.minecraft.tileentity.TileEntity; + +/** + * Implement this interface for TileEntities that can have association to cleanroom. + * Calling {@link gregtech.common.GT_Pollution#addPollution(TileEntity, int)} from this machine + * will pollute associated cleanroom. + */ +public interface ICleanroomReceiver { + + @Nullable + ICleanroom getCleanroom(); + + void setCleanroom(ICleanroom cleanroom); +} diff --git a/src/main/java/gregtech/api/interfaces/metatileentity/IMachineCallback.java b/src/main/java/gregtech/api/interfaces/metatileentity/IMachineCallback.java deleted file mode 100644 index fb7845cfd4..0000000000 --- a/src/main/java/gregtech/api/interfaces/metatileentity/IMachineCallback.java +++ /dev/null @@ -1,10 +0,0 @@ -package gregtech.api.interfaces.metatileentity; - -public interface IMachineCallback<Machinetype extends IMetaTileEntity> { - - Machinetype getCallbackBase(); - - void setCallbackBase(Machinetype callback); - - Class<?> getType(); -} diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java index 894eee729c..a23fbd8a85 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java @@ -58,6 +58,8 @@ import gregtech.api.enums.Textures; import gregtech.api.graphs.GenerateNodeMap; import gregtech.api.graphs.GenerateNodeMapPower; import gregtech.api.graphs.Node; +import gregtech.api.interfaces.ICleanroom; +import gregtech.api.interfaces.ICleanroomReceiver; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IDebugableTileEntity; @@ -83,8 +85,9 @@ import mcp.mobius.waila.api.IWailaDataAccessor; * <p/> * This is the main TileEntity for EVERYTHING. */ -public class BaseMetaTileEntity extends CommonMetaTileEntity implements IGregTechTileEntity, IActionHost, - IGridProxyable, IAlignmentProvider, IConstructableProvider, IDebugableTileEntity, IGregtechWailaProvider { +public class BaseMetaTileEntity extends CommonMetaTileEntity + implements IGregTechTileEntity, IActionHost, IGridProxyable, IAlignmentProvider, IConstructableProvider, + IDebugableTileEntity, IGregtechWailaProvider, ICleanroomReceiver { private static final Field ENTITY_ITEM_HEALTH_FIELD = ReflectionHelper .findField(EntityItem.class, "health", "field_70291_e"); @@ -1310,6 +1313,22 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity implements IGregTec return mLockUpgrade || mMetaTileEntity.ownerControl(); } + @Nullable + @Override + public ICleanroom getCleanroom() { + if (canAccessData()) { + return mMetaTileEntity.getCleanroom(); + } + return null; + } + + @Override + public void setCleanroom(ICleanroom cleanroom) { + if (canAccessData()) { + mMetaTileEntity.setCleanroom(cleanroom); + } + } + public void doEnergyExplosion() { if (getUniversalEnergyCapacity() > 0 && getUniversalEnergyStored() >= getUniversalEnergyCapacity() / 5) { GT_Log.exp.println( @@ -1358,7 +1377,7 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity implements IGregTec } } - GT_Pollution.addPollution(this, GT_Mod.gregtechproxy.mPollutionOnExplosion); + GT_Pollution.addPollution((TileEntity) this, GT_Mod.gregtechproxy.mPollutionOnExplosion); mMetaTileEntity.doExplosion(aAmount); } } diff --git a/src/main/java/gregtech/api/metatileentity/MetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/MetaTileEntity.java index fc923927ae..453849923d 100644 --- a/src/main/java/gregtech/api/metatileentity/MetaTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/MetaTileEntity.java @@ -25,6 +25,8 @@ import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; +import org.jetbrains.annotations.Nullable; + import com.gtnewhorizons.modularui.api.forge.ItemStackHandler; import appeng.api.implementations.IPowerChannelState; @@ -44,8 +46,9 @@ import gregtech.api.enums.SoundResource; import gregtech.api.enums.SteamVariant; import gregtech.api.gui.GT_GUIColorOverride; import gregtech.api.gui.modularui.GUITextureSet; +import gregtech.api.interfaces.ICleanroom; +import gregtech.api.interfaces.ICleanroomReceiver; import gregtech.api.interfaces.IConfigurationCircuitSupport; -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; @@ -72,7 +75,7 @@ import mcp.mobius.waila.api.IWailaDataAccessor; * GT_MetaTileEntity_E_Furnace(54, "GT_E_Furnace", "Automatic E-Furnace");" */ @SuppressWarnings("unused") -public abstract class MetaTileEntity implements IMetaTileEntity, IMachineCallback<MetaTileEntity> { +public abstract class MetaTileEntity implements IMetaTileEntity, ICleanroomReceiver { /** * Only assigned for the MetaTileEntity in the List! Also only used to get the localized Name for the ItemStack and @@ -99,7 +102,7 @@ public abstract class MetaTileEntity implements IMetaTileEntity, IMachineCallbac public boolean doTickProfilingInThisTick = true; - private MetaTileEntity mCallBackTile; + private ICleanroom cleanroom; /** * accessibility to this Field is no longer given, see below @@ -114,14 +117,14 @@ public abstract class MetaTileEntity implements IMetaTileEntity, IMachineCallbac * <p> * The constructor can be overloaded as follows: * <blockquote> - * + * * <pre> - * + * * public GT_MetaTileEntity_EBench(int id, String name, String nameRegional) { * super(id, name, nameRegional); * } * </pre> - * + * * </blockquote> * * @param aID the machine ID @@ -388,19 +391,15 @@ public abstract class MetaTileEntity implements IMetaTileEntity, IMachineCallbac /* Do nothing */ } + @Nullable @Override - public MetaTileEntity getCallbackBase() { - return mCallBackTile; + public ICleanroom getCleanroom() { + return cleanroom; } @Override - public void setCallbackBase(MetaTileEntity callback) { - this.mCallBackTile = callback; - } - - @Override - public Class<?> getType() { - return null; + public void setCleanroom(ICleanroom cleanroom) { + this.cleanroom = cleanroom; } @Override 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 649d47d89b..f251b5c02f 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 @@ -62,6 +62,7 @@ import gregtech.api.gui.GT_GUIContainer_BasicMachine; import gregtech.api.gui.modularui.GT_UIInfos; import gregtech.api.gui.modularui.GT_UITextures; import gregtech.api.gui.modularui.SteamTexture; +import gregtech.api.interfaces.ICleanroom; import gregtech.api.interfaces.IConfigurationCircuitSupport; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.modularui.IAddGregtechLogo; @@ -81,7 +82,6 @@ import gregtech.api.util.GT_Waila; import gregtech.common.gui.modularui.UIHelper; import gregtech.common.power.BasicMachineEUPower; import gregtech.common.power.Power; -import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_Cleanroom; import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; @@ -1103,26 +1103,29 @@ 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() instanceof GT_MetaTileEntity_Cleanroom) - || ((GT_MetaTileEntity_Cleanroom) getCallbackBase()).mEfficiency == 0)) - return FOUND_RECIPE_BUT_DID_NOT_MEET_REQUIREMENTS; + ICleanroom cleanroom = getCleanroom(); + if (tRecipe.mSpecialValue == -200 || tRecipe.mSpecialValue == -300) { + if (cleanroom == null || !cleanroom.isValidCleanroom() || cleanroom.getCleanness() == 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; for (int i = 0; i < mOutputItems.length; i++) if (getBaseMetaTileEntity().getRandomNumber(10000) < tRecipe.getOutputChance(i)) 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) - > ((GT_MetaTileEntity_Cleanroom) getCallbackBase()).mEfficiency) { - if (debugCleanroom) { - GT_Log.out.println( - "BasicMachine: Voiding output due to efficiency failure. mEfficiency = " - + ((GT_MetaTileEntity_Cleanroom) getCallbackBase()).mEfficiency); - } - mOutputItems[i] = null; + if (tRecipe.mSpecialValue == -200 || tRecipe.mSpecialValue == -300) { + assert cleanroom != null; + for (int i = 0; i < mOutputItems.length; i++) if (mOutputItems[i] != null + && getBaseMetaTileEntity().getRandomNumber(10000) > cleanroom.getCleanness()) { + if (debugCleanroom) { + GT_Log.out.println( + "BasicMachine: Voiding output due to cleanness failure. Cleanness = " + + cleanroom.getCleanness()); } + mOutputItems[i] = null; + } + } mOutputFluid = tRecipe.getFluidOutput(0); if (!skipOC) { calculateOverclockedNess(tRecipe); 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 bd94371440..b95737bb0e 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 @@ -19,7 +19,6 @@ 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; @SuppressWarnings("unused") // Unused API is expected within scope public class GT_MetaTileEntity_Hatch_Muffler extends GT_MetaTileEntity_Hatch { @@ -111,11 +110,6 @@ public class GT_MetaTileEntity_Hatch_Muffler extends GT_MetaTileEntity_Hatch { } @Override - public Class<?> getType() { - return GT_MetaTileEntity_Cleanroom.class; - } - - @Override public boolean isFacingValid(ForgeDirection facing) { return true; } 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 765cd047ad..dd21d6f412 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 @@ -12,7 +12,6 @@ import gregtech.api.gui.modularui.GT_UITextures; import gregtech.api.interfaces.ITexture; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.util.GT_Utility; -import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_Cleanroom; public abstract class GT_MetaTileEntity_TieredMachineBlock extends MetaTileEntity { @@ -57,11 +56,6 @@ 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); diff --git a/src/main/java/gregtech/common/GT_Pollution.java b/src/main/java/gregtech/common/GT_Pollution.java index 405c968baa..6a2b1e1082 100644 --- a/src/main/java/gregtech/common/GT_Pollution.java +++ b/src/main/java/gregtech/common/GT_Pollution.java @@ -22,6 +22,7 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.ChunkPosition; @@ -38,14 +39,13 @@ 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.ICleanroom; +import gregtech.api.interfaces.ICleanroomReceiver; 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; public class GT_Pollution { @@ -304,28 +304,32 @@ public class GT_Pollution { return dimensionWisePollution.computeIfAbsent(world.provider.dimensionId, i -> new GT_Pollution(world)); } - /** @see #addPollution(World, int, int, int) */ - @SuppressWarnings("rawtypes") + /** @see #addPollution(TileEntity, int) */ 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(); - } + addPollution((TileEntity) te, aPollution); + } + + /** + * Also pollutes cleanroom if {@code te} is an instance of {@link ICleanroomReceiver}. + * + * @see #addPollution(World, int, int, int) + */ + public static void addPollution(TileEntity te, int aPollution) { + if (!GT_Mod.gregtechproxy.mPollution || aPollution == 0 || te.getWorldObj().isRemote) return; + + if (aPollution > 0 && te instanceof ICleanroomReceiver receiver) { + ICleanroom cleanroom = receiver.getCleanroom(); + if (cleanroom != null && cleanroom.isValidCleanroom()) { + cleanroom.pollute(); } } - mutatePollution(te.getWorld(), te.getXCoord() >> 4, te.getZCoord() >> 4, d -> d.changeAmount(aPollution), null); + addPollution(te.getWorldObj(), te.xCoord >> 4, te.zCoord >> 4, aPollution); } /** @see #addPollution(World, int, int, int) */ public static void addPollution(Chunk ch, int aPollution) { - if (!GT_Mod.gregtechproxy.mPollution || aPollution == 0 || ch.worldObj.isRemote) return; - mutatePollution(ch.worldObj, ch.xPosition, ch.zPosition, d -> d.changeAmount(aPollution), null); + addPollution(ch.worldObj, ch.xPosition, ch.zPosition, 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 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; } |