diff options
Diffstat (limited to 'src/main/java/gregtech/api/metatileentity')
5 files changed, 54 insertions, 45 deletions
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); |