diff --git a/src/main/java/ggfab/mte/MTELinkedInputBus.java b/src/main/java/ggfab/mte/MTELinkedInputBus.java index 0e84c4967d2..f889d27b1ba 100644 --- a/src/main/java/ggfab/mte/MTELinkedInputBus.java +++ b/src/main/java/ggfab/mte/MTELinkedInputBus.java @@ -337,13 +337,8 @@ public void onFirstTick(IGregTechTileEntity aBaseMetaTileEntity) { @Override public void onScrewdriverRightClick(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) { - if (!getBaseMetaTileEntity().getCoverBehaviorAtSideNew(side) - .isGUIClickable( - side, - getBaseMetaTileEntity().getCoverIDAtSide(side), - getBaseMetaTileEntity().getComplexCoverDataAtSide(side), - getBaseMetaTileEntity())) - return; + if (!getBaseMetaTileEntity().getCoverInfoAtSide(side) + .isGUIClickable()) return; if (aPlayer.isSneaking()) { if (this.mRealInventory == null) { aPlayer.addChatMessage(new ChatComponentTranslation("ggfab.info.linked_input_bus.no_channel")); diff --git a/src/main/java/gregtech/api/gui/modularui/GTUIInfos.java b/src/main/java/gregtech/api/gui/modularui/GTUIInfos.java index ede4b54e083..03b97e19ca4 100644 --- a/src/main/java/gregtech/api/gui/modularui/GTUIInfos.java +++ b/src/main/java/gregtech/api/gui/modularui/GTUIInfos.java @@ -27,7 +27,7 @@ import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.interfaces.tileentity.IHasWorldObjectAndCoords; import gregtech.api.net.GTPacketSendCoverData; -import gregtech.api.util.CoverBehaviorBase; +import gregtech.common.covers.CoverInfo; public class GTUIInfos { @@ -70,26 +70,16 @@ public static void init() {} .container((player, world, x, y, z) -> { final TileEntity te = world.getTileEntity(x, y, z); if (!(te instanceof ICoverable gtTileEntity)) return null; - final CoverBehaviorBase cover = gtTileEntity.getCoverBehaviorAtSideNew(side); - return createCoverContainer( - player, - cover::createWindow, - te::markDirty, - gtTileEntity.getCoverIDAtSide(side), - side, - gtTileEntity); + return gtTileEntity.getCoverInfoAtSide(side) + .createCoverContainer(player); }) .gui((player, world, x, y, z) -> { if (!world.isRemote) return null; final TileEntity te = world.getTileEntity(x, y, z); if (!(te instanceof ICoverable gtTileEntity)) return null; - final CoverBehaviorBase cover = gtTileEntity.getCoverBehaviorAtSideNew(side); - return createCoverGuiContainer( - player, - cover::createWindow, - gtTileEntity.getCoverIDAtSide(side), - side, - gtTileEntity); + ModularUIContainer container = gtTileEntity.getCoverInfoAtSide(side) + .createCoverContainer(player); + return (container == null) ? null : new ModularGui(container); }) .build()); } @@ -109,17 +99,14 @@ public static void openGTTileEntityUI(IHasWorldObjectAndCoords aTileEntity, Enti } /** - * Opens cover UI, created by {@link CoverBehaviorBase#createWindow}. + * Opens cover UI, created by {@link CoverInfo#createWindow}. */ public static void openCoverUI(ICoverable tileEntity, EntityPlayer player, ForgeDirection side) { if (tileEntity.isClientSide()) return; + CoverInfo coverInfo = tileEntity.getCoverInfoAtSide(side); GTValues.NW.sendToPlayer( - new GTPacketSendCoverData( - side, - tileEntity.getCoverIDAtSide(side), - tileEntity.getComplexCoverDataAtSide(side), - tileEntity), + new GTPacketSendCoverData(side, coverInfo.getCoverID(), coverInfo.getCoverData(), tileEntity), (EntityPlayerMP) player); coverUI.get(side) @@ -157,27 +144,7 @@ private static ModularGui createTileEntityGuiContainer(EntityPlayer player, windowCreator, null, containerConstructor); - if (container == null) return null; - return new ModularGui(container); - } - - private static ModularUIContainer createCoverContainer(EntityPlayer player, - Function windowCreator, Runnable onWidgetUpdate, int coverID, - ForgeDirection side, ICoverable tile) { - final CoverUIBuildContext buildContext = new CoverUIBuildContext(player, coverID, side, tile, false); - final ModularWindow window = windowCreator.apply(buildContext); - if (window == null) return null; - return new ModularUIContainer(new ModularUIContext(buildContext, onWidgetUpdate), window); - } - - @SideOnly(Side.CLIENT) - private static ModularGui createCoverGuiContainer(EntityPlayer player, - Function windowCreator, int coverID, ForgeDirection side, ICoverable tile) { - final ModularUIContainer container = createCoverContainer(player, windowCreator, null, coverID, side, tile); - if (container == null) { - return null; - } - return new ModularGui(container); + return (container == null) ? null : new ModularGui(container); } @FunctionalInterface diff --git a/src/main/java/gregtech/api/interfaces/IRedstoneCircuitBlock.java b/src/main/java/gregtech/api/interfaces/IRedstoneCircuitBlock.java index 328da78bf44..865073e8ce0 100644 --- a/src/main/java/gregtech/api/interfaces/IRedstoneCircuitBlock.java +++ b/src/main/java/gregtech/api/interfaces/IRedstoneCircuitBlock.java @@ -5,7 +5,8 @@ import net.minecraftforge.common.util.ForgeDirection; import gregtech.api.interfaces.tileentity.ICoverable; -import gregtech.api.util.CoverBehavior; +import gregtech.api.util.ISerializableObject; +import gregtech.common.covers.CoverInfo; /** * Implemented by the MetaTileEntity of the Redstone Circuit Block @@ -36,11 +37,11 @@ public interface IRedstoneCircuitBlock { /** * If this Side is Covered up and therefor not doing any Redstone */ - CoverBehavior getCover(ForgeDirection side); + CoverInfo getCover(ForgeDirection side); int getCoverID(ForgeDirection side); - int getCoverVariable(ForgeDirection side); + ISerializableObject getCoverData(ForgeDirection side); /** * returns whatever Block-ID is adjacent to the Redstone Circuit Block diff --git a/src/main/java/gregtech/api/interfaces/covers/IControlsWorkCover.java b/src/main/java/gregtech/api/interfaces/covers/IControlsWorkCover.java deleted file mode 100644 index d4cd1e9ec2e..00000000000 --- a/src/main/java/gregtech/api/interfaces/covers/IControlsWorkCover.java +++ /dev/null @@ -1,30 +0,0 @@ -package gregtech.api.interfaces.covers; - -import net.minecraftforge.common.util.ForgeDirection; - -import gregtech.api.interfaces.tileentity.ICoverable; -import gregtech.api.interfaces.tileentity.IMachineProgress; - -/** - * Marker interface for covers that might control whether the work can start on a {@link IMachineProgress}. - */ -public interface IControlsWorkCover { - - /** - * Make sure there is only one GT_Cover_ControlsWork on the aTileEntity TODO this is a migration thing. Remove this - * after 2.3.0 is released. - * - * @return true if the cover is the first (side) one - **/ - static boolean makeSureOnlyOne(ForgeDirection aMySide, ICoverable aTileEntity) { - for (final ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { - if (aTileEntity.getCoverBehaviorAtSideNew(side) instanceof IControlsWorkCover - && side.ordinal() < aMySide.ordinal()) { - aTileEntity.dropCover(side, side, true); - aTileEntity.markDirty(); - return false; - } - } - return true; - } -} diff --git a/src/main/java/gregtech/api/interfaces/tileentity/ICoverable.java b/src/main/java/gregtech/api/interfaces/tileentity/ICoverable.java index 87b87598cb6..c596ba2c3ac 100644 --- a/src/main/java/gregtech/api/interfaces/tileentity/ICoverable.java +++ b/src/main/java/gregtech/api/interfaces/tileentity/ICoverable.java @@ -4,23 +4,13 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.common.util.ForgeDirection; -import gregtech.api.util.CoverBehavior; -import gregtech.api.util.CoverBehaviorBase; import gregtech.api.util.ISerializableObject; import gregtech.common.covers.CoverInfo; public interface ICoverable extends IRedstoneTileEntity, IHasInventory, IBasicEnergyContainer { - boolean canPlaceCoverIDAtSide(ForgeDirection side, int aID); - - boolean canPlaceCoverItemAtSide(ForgeDirection side, ItemStack aCover); - boolean dropCover(ForgeDirection side, ForgeDirection droppedSide, boolean aForced); - default ItemStack removeCoverAtSide(ForgeDirection side, boolean aForced) { - return null; - } - @Deprecated void setCoverDataAtSide(ForgeDirection side, int aData); @@ -37,28 +27,14 @@ default void setCoverDataAtSide(ForgeDirection side, ISerializableObject aData) void setCoverItemAtSide(ForgeDirection side, ItemStack aCover); - @Deprecated - int getCoverDataAtSide(ForgeDirection side); - default CoverInfo getCoverInfoAtSide(ForgeDirection side) { return null; } - default ISerializableObject getComplexCoverDataAtSide(ForgeDirection side) { - return new ISerializableObject.LegacyCoverData(getCoverDataAtSide(side)); - } - int getCoverIDAtSide(ForgeDirection side); ItemStack getCoverItemAtSide(ForgeDirection side); - @Deprecated - CoverBehavior getCoverBehaviorAtSide(ForgeDirection side); - - default CoverBehaviorBase getCoverBehaviorAtSideNew(ForgeDirection side) { - return getCoverBehaviorAtSide(side); - } - /** * For use by the regular MetaTileEntities. Returns the Cover Manipulated input Redstone. Don't use this if you are * a Cover Behavior. Only for MetaTileEntities. diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java index 3de02cbcecf..7b1ce1d2249 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java @@ -221,7 +221,6 @@ && getRandomNumber(1000) == 0) { if (!hasValidMetaTileEntity()) return; if (isServerSide()) { if (mTickTimer == 10) { - updateCoverBehavior(); issueBlockUpdate(); joinEnet(); } @@ -814,8 +813,6 @@ public boolean onRightclick(EntityPlayer aPlayer, ForgeDirection side, float aX, ? GTUtility.determineWrenchingSide(side, aX, aY, aZ) : side; return (getCoverInfoAtSide(tSide).hasCoverGUI()); - } else if (getCoverBehaviorAtSideNew(side).onCoverRightclickClient(side, this, aPlayer, aX, aY, aZ)) { - return true; } } if (isServerSide()) { @@ -1091,9 +1088,7 @@ public boolean canInsertItem(int aIndex, ItemStack aStack, int ordinalSide) { @Override public boolean canExtractItem(int aIndex, ItemStack aStack, int ordinalSide) { final ForgeDirection side = ForgeDirection.getOrientation(ordinalSide); - return canAccessData() - && getCoverBehaviorAtSideNew(side) - .letsItemsOut(side, getCoverIDAtSide(side), getComplexCoverDataAtSide(side), aIndex, this) + return canAccessData() && getCoverInfoAtSide(side).letsItemsOut(aIndex) && mMetaTileEntity.canExtractItem(aIndex, aStack, ordinalSide); } diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java index b48ca3e2e88..50228d07cbc 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java @@ -219,8 +219,6 @@ public void setInitialValuesAsNBT(NBTTagCompound aNBT, short aID) { if (hasValidMetaTileEntity() && mMetaTileEntity.hasSidedRedstoneOutputBehavior()) mSidedRedstone = new byte[] { 0, 0, 0, 0, 0, 0 }; else mSidedRedstone = new byte[] { 15, 15, 15, 15, 15, 15 }; - - updateCoverBehavior(); } /** @@ -375,7 +373,6 @@ public void updateEntity() { } if (aSideServer) { if (mRedstone != oRedstone || mTickTimer == 10) { - updateCoverBehavior(); oRedstone = mRedstone; issueBlockUpdate(); } @@ -1458,9 +1455,7 @@ public boolean onRightclick(EntityPlayer aPlayer, ForgeDirection side, float aX, final ForgeDirection tSide = (getCoverIDAtSide(side) == 0) ? GTUtility.determineWrenchingSide(side, aX, aY, aZ) : side; - return (getCoverBehaviorAtSideNew(tSide).hasCoverGUI()); - } else if (getCoverBehaviorAtSideNew(side).onCoverRightclickClient(side, this, aPlayer, aX, aY, aZ)) { - return true; + return (getCoverInfoAtSide(tSide).hasCoverGUI()); } if (!getCoverInfoAtSide(side).isGUIClickable()) return false; @@ -1519,15 +1514,7 @@ public boolean onRightclick(EntityPlayer aPlayer, ForgeDirection side, float aX, if (GTModHandler.damageOrDechargeItem(tCurrentItem, 1, 200, aPlayer)) { setCoverDataAtSide( side, - getCoverBehaviorAtSideNew(side).onCoverScrewdriverClick( - side, - getCoverIDAtSide(side), - getComplexCoverDataAtSide(side), - this, - aPlayer, - aX, - aY, - aZ)); + getCoverInfoAtSide(side).onCoverScrewdriverClick(aPlayer, aX, aY, aZ)); mMetaTileEntity.onScrewdriverRightClick(side, aPlayer, aX, aY, aZ, tCurrentItem); GTUtility.sendSoundToPlayers( worldObj, @@ -1696,8 +1683,7 @@ public boolean onRightclick(EntityPlayer aPlayer, ForgeDirection side, float aX, if (GTModHandler.damageOrDechargeItem(tCurrentItem, 1, 1000, aPlayer)) { final CoverInfo info = getCoverInfoAtSide(coverSide); if (info != CoverInfo.EMPTY_INFO) { - final CoverBehaviorBase behavior = info.getCoverBehavior(); - if (behavior.allowsTickRateAddition()) { + if (info.allowsTickRateAddition()) { info.onCoverJackhammer(aPlayer); GTUtility.sendSoundToPlayers( worldObj, @@ -1723,23 +1709,10 @@ public boolean onRightclick(EntityPlayer aPlayer, ForgeDirection side, float aX, // End item != null } else if (aPlayer.isSneaking()) { // Sneak click, no tool -> open cover config if possible. side = (getCoverIDAtSide(side) == 0) ? GTUtility.determineWrenchingSide(side, aX, aY, aZ) : side; - return getCoverIDAtSide(side) > 0 && getCoverBehaviorAtSideNew(side).onCoverShiftRightClick( - side, - getCoverIDAtSide(side), - getComplexCoverDataAtSide(side), - this, - aPlayer); + return getCoverIDAtSide(side) > 0 && getCoverInfoAtSide(side).onCoverShiftRightClick(aPlayer); } - if (getCoverBehaviorAtSideNew(side).onCoverRightClick( - side, - getCoverIDAtSide(side), - getComplexCoverDataAtSide(side), - this, - aPlayer, - aX, - aY, - aZ)) return true; + if (getCoverInfoAtSide(side).onCoverRightClick(aPlayer, aX, aY, aZ)) return true; if (!getCoverInfoAtSide(side).isGUIClickable()) return false; @@ -1863,8 +1836,7 @@ && getCoverInfoAtSide(ForgeDirection.getOrientation(ordinalSide)).letsItemsIn(sl public boolean canExtractItem(int slotIndex, ItemStack stack, int ordinalSide) { final ForgeDirection side = ForgeDirection.getOrientation(ordinalSide); return canAccessData() && (mRunningThroughTick || !mOutputDisabled) - && getCoverBehaviorAtSideNew(side) - .letsItemsOut(side, getCoverIDAtSide(side), getComplexCoverDataAtSide(side), slotIndex, this) + && getCoverInfoAtSide(side).letsItemsOut(slotIndex) && mMetaTileEntity.canExtractItem(slotIndex, stack, ordinalSide); } diff --git a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java index 78dbb735853..9ae4f1fba08 100644 --- a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java @@ -51,7 +51,6 @@ import gregtech.api.net.GTPacketRequestCoverData; import gregtech.api.net.GTPacketSendCoverData; import gregtech.api.objects.GTItemStack; -import gregtech.api.util.CoverBehavior; import gregtech.api.util.CoverBehaviorBase; import gregtech.api.util.ISerializableObject; import gregtech.common.GTClient; @@ -145,7 +144,7 @@ public void readLegacyCoverInfoNBT(NBTTagCompound aNBT) { final CoverInfo coverInfo = new CoverInfo(side, coverIDs[ordinalSide], this, null); final CoverBehaviorBase coverBehavior = coverInfo.getCoverBehavior(); - if (coverBehavior == GregTechAPI.sNoBehavior) continue; + if (coverInfo.hasNoBehavior()) continue; ISerializableObject coverData = null; if (hasOldCoverData) { @@ -230,13 +229,6 @@ protected void checkDropCover() { } } - protected void updateCoverBehavior() { - for (final ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { - final CoverInfo coverInfo = getCoverInfoAtSide(side); - if (coverInfo.isValid()) coverInfo.updateCoverBehavior(); - } - } - @Override public void issueCoverUpdate(ForgeDirection side) { final CoverInfo coverInfo = getCoverInfoAtSide(side); @@ -306,14 +298,6 @@ public void setCoverDataAtSide(ForgeDirection side, ISerializableObject aData) { .cast(aData) != null) coverInfo.setCoverData(aData); } - @Override - @Deprecated - public CoverBehavior getCoverBehaviorAtSide(ForgeDirection side) { - final CoverBehaviorBase behavior = getCoverInfoAtSide(side).getCoverBehavior(); - if (behavior instanceof CoverBehavior) return (CoverBehavior) behavior; - return GregTechAPI.sNoBehavior; - } - @Override public void setCoverItemAtSide(ForgeDirection side, ItemStack aCover) { GregTechAPI.getCoverBehaviorNew(aCover) @@ -330,36 +314,6 @@ public ItemStack getCoverItemAtSide(ForgeDirection side) { return getCoverInfoAtSide(side).getDisplayStack(); } - @Override - public boolean canPlaceCoverIDAtSide(ForgeDirection side, int aID) { - return getCoverIDAtSide(side) == 0; - } - - @Override - public boolean canPlaceCoverItemAtSide(ForgeDirection side, ItemStack aCover) { - return getCoverIDAtSide(side) == 0; - } - - @Override - @Deprecated - public int getCoverDataAtSide(ForgeDirection side) { - final ISerializableObject coverData = getCoverInfoAtSide(side).getCoverData(); - if (coverData instanceof ISerializableObject.LegacyCoverData) { - return ((ISerializableObject.LegacyCoverData) coverData).get(); - } - return 0; - } - - @Override - public ISerializableObject getComplexCoverDataAtSide(ForgeDirection side) { - return getCoverInfoAtSide(side).getCoverData(); - } - - @Override - public CoverBehaviorBase getCoverBehaviorAtSideNew(ForgeDirection side) { - return getCoverInfoAtSide(side).getCoverBehavior(); - } - public final void setCoverInfoAtSide(ForgeDirection side, CoverInfo coverInfo) { if (side != ForgeDirection.UNKNOWN) { coverInfos[side.ordinal()] = coverInfo; @@ -411,21 +365,6 @@ public boolean dropCover(ForgeDirection side, ForgeDirection droppedSide, boolea return true; } - @Override - public ItemStack removeCoverAtSide(ForgeDirection side, boolean aForced) { - final CoverInfo coverInfo = getCoverInfoAtSide(side); - if (!coverInfo.isValid()) return null; - if (!coverInfo.onCoverRemoval(aForced) && !aForced) return null; - final ItemStack tStack = coverInfo.getDrop(); - if (tStack != null) { - coverInfo.onDropped(); - } - clearCoverInfoAtSide(side); - updateOutputRedstoneSignal(side); - - return tStack; - } - protected void onBaseTEDestroyed() { for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { final CoverInfo coverInfo = getCoverInfoAtSide(side); @@ -468,9 +407,7 @@ public boolean getRedstoneOutputStrength(ForgeDirection side) { @Override public void setInternalOutputRedstoneSignal(ForgeDirection side, byte aStrength) { - if (!getCoverBehaviorAtSideNew(side) - .manipulatesSidedRedstoneOutput(side, getCoverIDAtSide(side), getComplexCoverDataAtSide(side), this)) - setOutputRedstoneSignal(side, aStrength); + if (!getCoverInfoAtSide(side).manipulatesSidedRedstoneOutput()) setOutputRedstoneSignal(side, aStrength); } @Override @@ -507,12 +444,7 @@ public void setGenericRedstoneOutput(boolean aOnOff) { @Override public byte getInternalInputRedstoneSignal(ForgeDirection side) { - return (byte) (getCoverBehaviorAtSideNew(side).getRedstoneInput( - side, - getInputRedstoneSignal(side), - getCoverIDAtSide(side), - getComplexCoverDataAtSide(side), - this) & 15); + return (byte) (getCoverInfoAtSide(side).getRedstoneInput(getInputRedstoneSignal(side)) & 15); } @Override @@ -524,10 +456,8 @@ public byte getInputRedstoneSignal(ForgeDirection side) { @Override public byte getOutputRedstoneSignal(ForgeDirection side) { - return getCoverBehaviorAtSideNew(side) - .manipulatesSidedRedstoneOutput(side, getCoverIDAtSide(side), getComplexCoverDataAtSide(side), this) - ? mSidedRedstone[side.ordinal()] - : getGeneralRS(side); + return getCoverInfoAtSide(side).manipulatesSidedRedstoneOutput() ? mSidedRedstone[side.ordinal()] + : getGeneralRS(side); } protected void updateOutputRedstoneSignal(ForgeDirection side) { @@ -582,7 +512,7 @@ public void getWailaBody(ItemStack itemStack, List currentTip, IWailaDat for (byte i = 0; i < tList.tagCount(); i++) { final NBTTagCompound tNBT = tList.getCompoundTagAt(i); final CoverInfo coverInfo = new CoverInfo(this, tNBT); - if (!coverInfo.isValid() || coverInfo.getCoverBehavior() == GregTechAPI.sNoBehavior) continue; + if (!coverInfo.isValid() || coverInfo.hasNoBehavior()) continue; final ItemStack coverStack = coverInfo.getDisplayStack(); if (coverStack != null) { @@ -629,7 +559,7 @@ public static void addInstalledCoversInformation(NBTTagCompound aNBT, List backgrounds = new ArrayList<>(); final GUITextureSet tabIconSet = getGUITextureSet(); - if (getCoverBehaviorAtSideNew(direction).hasCoverGUI()) { + if (getCoverInfoAtSide(direction).hasCoverGUI()) { if (isHovering()) { backgrounds.add( flipHorizontally ? tabIconSet.getCoverTabHighlightFlipped() diff --git a/src/main/java/gregtech/api/metatileentity/implementations/MTEBasicMachine.java b/src/main/java/gregtech/api/metatileentity/implementations/MTEBasicMachine.java index 76f9f70bf40..12c44609526 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/MTEBasicMachine.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/MTEBasicMachine.java @@ -79,7 +79,6 @@ import gregtech.api.recipe.RecipeMap; import gregtech.api.recipe.metadata.CompressionTierKey; import gregtech.api.render.TextureFactory; -import gregtech.api.util.CoverBehaviorBase; import gregtech.api.util.GTClientPreference; import gregtech.api.util.GTLog; import gregtech.api.util.GTOreDictUnificator; @@ -958,12 +957,9 @@ public boolean onSolderingToolRightClick(ForgeDirection side, ForgeDirection wre @Override public boolean allowCoverOnSide(ForgeDirection side, GTItemStack aCoverID) { if (side != mMainFacing) return true; - CoverBehaviorBase tBehavior = GregTechAPI.getCoverBehaviorNew(aCoverID.toStack()); - return tBehavior.isGUIClickable( - side, - GTUtility.stackToInt(aCoverID.toStack()), - tBehavior.createDataObject(), - getBaseMetaTileEntity()); + return this.getBaseMetaTileEntity() + .getCoverInfoAtSide(side) + .isGUIClickable(); } @Override diff --git a/src/main/java/gregtech/api/metatileentity/implementations/MTECable.java b/src/main/java/gregtech/api/metatileentity/implementations/MTECable.java index 51b7a48d500..f6f48bcfc42 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/MTECable.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/MTECable.java @@ -46,7 +46,6 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.BaseMetaPipeEntity; import gregtech.api.metatileentity.MetaPipeEntity; -import gregtech.api.objects.GTCoverNone; import gregtech.api.render.TextureFactory; import gregtech.api.util.CoverBehavior; import gregtech.api.util.CoverBehaviorBase; @@ -334,7 +333,6 @@ public boolean letsOut(CoverInfo coverInfo) { @Override public boolean canConnect(ForgeDirection side, TileEntity tileEntity) { final IGregTechTileEntity baseMetaTile = getBaseMetaTileEntity(); - final CoverBehaviorBase coverBehavior = baseMetaTile.getCoverBehaviorAtSideNew(side); final ForgeDirection oppositeSide = side.getOpposite(); // GT Machine handling @@ -344,7 +342,8 @@ public boolean canConnect(ForgeDirection side, TileEntity tileEntity) { return true; // Solar Panel Compat - if (coverBehavior instanceof CoverSolarPanel) return true; + if (baseMetaTile.getCoverInfoAtSide(side) + .getCoverBehavior() instanceof CoverSolarPanel) return true; // ((tIsGregTechTileEntity && tIsTileEntityCable) && (tAlwaysLookConnected || tLetEnergyIn || tLetEnergyOut) ) // --> Not needed @@ -592,7 +591,7 @@ public void reloadLocks() { for (final ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { if (isConnectedAtSide(side)) { final CoverInfo coverInfo = pipe.getCoverInfoAtSide(side); - if (coverInfo.getCoverBehavior() instanceof GTCoverNone) continue; + if (coverInfo.hasNoBehavior()) continue; if (!letsIn(coverInfo) || !letsOut(coverInfo)) { pipe.addToLock(pipe, side); } else { @@ -605,7 +604,7 @@ public void reloadLocks() { for (final ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { if (isConnectedAtSide(side)) { final CoverInfo coverInfo = pipe.getCoverInfoAtSide(side); - if (coverInfo.getCoverBehavior() instanceof GTCoverNone) continue; + if (coverInfo.hasNoBehavior()) continue; if (!letsIn(coverInfo) || !letsOut(coverInfo)) { dontAllow = true; diff --git a/src/main/java/gregtech/api/metatileentity/implementations/MTEFluid.java b/src/main/java/gregtech/api/metatileentity/implementations/MTEFluid.java index 1f787d25189..4562c438efc 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/MTEFluid.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/MTEFluid.java @@ -740,7 +740,8 @@ public boolean canConnect(ForgeDirection side, TileEntity tileEntity) { final IGregTechTileEntity baseMetaTile = getBaseMetaTileEntity(); if (baseMetaTile == null) return false; - final CoverBehaviorBase coverBehavior = baseMetaTile.getCoverBehaviorAtSideNew(side); + final CoverBehaviorBase coverBehavior = baseMetaTile.getCoverInfoAtSide(side) + .getCoverBehavior(); final IGregTechTileEntity gTileEntity = (tileEntity instanceof IGregTechTileEntity) ? (IGregTechTileEntity) tileEntity : null; @@ -754,8 +755,8 @@ public boolean canConnect(ForgeDirection side, TileEntity tileEntity) { final FluidTankInfo[] tInfo = fTileEntity.getTankInfo(tSide); if (tInfo != null) { return tInfo.length > 0 || (Translocator.isModLoaded() && isTranslocator(tileEntity)) - || gTileEntity != null - && gTileEntity.getCoverBehaviorAtSideNew(tSide) instanceof CoverFluidRegulator; + || gTileEntity != null && gTileEntity.getCoverInfoAtSide(side) + .getCoverBehavior() instanceof CoverFluidRegulator; } } return false; diff --git a/src/main/java/gregtech/api/util/CircuitryBehavior.java b/src/main/java/gregtech/api/util/CircuitryBehavior.java index 3859be590a7..c3295e6abb4 100644 --- a/src/main/java/gregtech/api/util/CircuitryBehavior.java +++ b/src/main/java/gregtech/api/util/CircuitryBehavior.java @@ -37,11 +37,7 @@ public CircuitryBehavior(int aIndex) { public static boolean getAnyRedstone(IRedstoneCircuitBlock aRedstoneCircuitBlock) { for (final ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { if (side != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(side) - .letsRedstoneGoIn( - side, - aRedstoneCircuitBlock.getCoverID(side), - aRedstoneCircuitBlock.getCoverVariable(side), - aRedstoneCircuitBlock.getOwnTileEntity())) { + .letsRedstoneGoIn()) { if (aRedstoneCircuitBlock.getInputRedstone(side) > 0) { return true; } @@ -56,11 +52,7 @@ public static boolean getAnyRedstone(IRedstoneCircuitBlock aRedstoneCircuitBlock public static boolean getAllRedstone(IRedstoneCircuitBlock aRedstoneCircuitBlock) { for (final ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { if (side != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(side) - .letsRedstoneGoIn( - side, - aRedstoneCircuitBlock.getCoverID(side), - aRedstoneCircuitBlock.getCoverVariable(side), - aRedstoneCircuitBlock.getOwnTileEntity())) { + .letsRedstoneGoIn()) { if (aRedstoneCircuitBlock.getInputRedstone(side) == 0) { return false; } @@ -76,11 +68,7 @@ public static boolean getOneRedstone(IRedstoneCircuitBlock aRedstoneCircuitBlock int tRedstoneAmount = 0; for (final ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { if (side != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(side) - .letsRedstoneGoIn( - side, - aRedstoneCircuitBlock.getCoverID(side), - aRedstoneCircuitBlock.getCoverVariable(side), - aRedstoneCircuitBlock.getOwnTileEntity())) { + .letsRedstoneGoIn()) { if (aRedstoneCircuitBlock.getInputRedstone(side) > 0) { tRedstoneAmount++; } @@ -96,11 +84,7 @@ public static byte getStrongestRedstone(IRedstoneCircuitBlock aRedstoneCircuitBl byte tRedstoneAmount = 0; for (final ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { if (side != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(side) - .letsRedstoneGoIn( - side, - aRedstoneCircuitBlock.getCoverID(side), - aRedstoneCircuitBlock.getCoverVariable(side), - aRedstoneCircuitBlock.getOwnTileEntity())) { + .letsRedstoneGoIn()) { tRedstoneAmount = (byte) Math.max(tRedstoneAmount, aRedstoneCircuitBlock.getInputRedstone(side)); } } @@ -117,11 +101,7 @@ public static byte getWeakestNonZeroRedstone(IRedstoneCircuitBlock aRedstoneCirc byte tRedstoneAmount = 15; for (final ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { if (side != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(side) - .letsRedstoneGoIn( - side, - aRedstoneCircuitBlock.getCoverID(side), - aRedstoneCircuitBlock.getCoverVariable(side), - aRedstoneCircuitBlock.getOwnTileEntity())) { + .letsRedstoneGoIn()) { if (aRedstoneCircuitBlock.getInputRedstone(side) > 0) tRedstoneAmount = (byte) Math.min(tRedstoneAmount, aRedstoneCircuitBlock.getInputRedstone(side)); } @@ -137,11 +117,7 @@ public static byte getWeakestRedstone(IRedstoneCircuitBlock aRedstoneCircuitBloc byte tRedstoneAmount = 15; for (final ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { if (side != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(side) - .letsRedstoneGoIn( - side, - aRedstoneCircuitBlock.getCoverID(side), - aRedstoneCircuitBlock.getCoverVariable(side), - aRedstoneCircuitBlock.getOwnTileEntity())) { + .letsRedstoneGoIn()) { tRedstoneAmount = (byte) Math.min(tRedstoneAmount, aRedstoneCircuitBlock.getInputRedstone(side)); } } diff --git a/src/main/java/gregtech/api/util/CoverBehaviorBase.java b/src/main/java/gregtech/api/util/CoverBehaviorBase.java index 552eeabe66f..5bd87163676 100644 --- a/src/main/java/gregtech/api/util/CoverBehaviorBase.java +++ b/src/main/java/gregtech/api/util/CoverBehaviorBase.java @@ -453,8 +453,7 @@ public ModularWindow createWindow() { final CoverInfo coverInfo = uiBuildContext.getTile() .getCoverInfoAtSide(uiBuildContext.getCoverSide()); - final CoverBehaviorBase behavior = coverInfo.getCoverBehavior(); - if (coverInfo.getMinimumTickRate() > 0 && behavior.allowsTickRateAddition()) { + if (coverInfo.getMinimumTickRate() > 0 && coverInfo.allowsTickRateAddition()) { builder.widget( new CoverTickRateButton(coverInfo, builder).setPos(getGUIWidth() - 24, getGUIHeight() - 24)); } @@ -485,7 +484,8 @@ public T getCoverData() { if (isCoverValid()) { return forceCast( getUIBuildContext().getTile() - .getComplexCoverDataAtSide(getUIBuildContext().getCoverSide())); + .getCoverInfoAtSide(getUIBuildContext().getCoverSide()) + .getCoverData()); } else { return null; } @@ -508,10 +508,9 @@ public boolean setCoverData(T data) { } public boolean isCoverValid() { - return !getUIBuildContext().getTile() - .isDead() - && getUIBuildContext().getTile() - .getCoverBehaviorAtSideNew(getUIBuildContext().getCoverSide()) != GregTechAPI.sNoBehavior; + ICoverable tile = getUIBuildContext().getTile(); + return !(tile.isDead() || tile.getCoverInfoAtSide(getUIBuildContext().getCoverSide()) + .hasNoBehavior()); } protected void addTitleToUI(ModularWindow.Builder builder) { @@ -808,16 +807,6 @@ public boolean hasCoverGUI() { return false; } - /** - * Called when someone rightclicks this Cover Client Side - *

- * return true, if something actually happens. - */ - public boolean onCoverRightclickClient(ForgeDirection side, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, - float aY, float aZ) { - return false; - } - /** * If this is a simple Cover, which can also be used on Bronze Machines and similar. */ diff --git a/src/main/java/gregtech/common/covers/CoverControlsWork.java b/src/main/java/gregtech/common/covers/CoverControlsWork.java index 71b00a8984b..bd5504275b9 100644 --- a/src/main/java/gregtech/common/covers/CoverControlsWork.java +++ b/src/main/java/gregtech/common/covers/CoverControlsWork.java @@ -11,7 +11,6 @@ import gregtech.api.gui.modularui.CoverUIBuildContext; import gregtech.api.gui.modularui.GTUITextures; import gregtech.api.interfaces.ITexture; -import gregtech.api.interfaces.covers.IControlsWorkCover; import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.interfaces.tileentity.IMachineProgress; import gregtech.api.util.CoverBehavior; @@ -20,7 +19,7 @@ import gregtech.common.gui.modularui.widget.CoverDataControllerWidget; import gregtech.common.gui.modularui.widget.CoverDataFollowerToggleButtonWidget; -public class CoverControlsWork extends CoverBehavior implements IControlsWorkCover { +public class CoverControlsWork extends CoverBehavior { public CoverControlsWork(ITexture coverTexture) { super(coverTexture); @@ -29,7 +28,6 @@ public CoverControlsWork(ITexture coverTexture) { @Override public int doCoverThings(ForgeDirection side, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) { - if (!makeSureOnlyOne(side, aTileEntity)) return 0; if (aTileEntity instanceof IMachineProgress machine) { if (aCoverVariable < 2) { if ((aInputRedstone > 0) == (aCoverVariable == 0)) { @@ -72,16 +70,6 @@ protected boolean isRedstoneSensitiveImpl(ForgeDirection side, int aCoverID, return aCoverVariable.get() != 2; // always off, so no redstone needed either } - /** - * Make sure there is only one GT_Cover_ControlsWork on the aTileEntity TODO this is a migration thing. Remove this - * after 2.3.0 is released. - * - * @return true if the cover is the first (side) one - **/ - private boolean makeSureOnlyOne(ForgeDirection side, ICoverable aTileEntity) { - return IControlsWorkCover.makeSureOnlyOne(side, aTileEntity); - } - @Override public boolean letsEnergyIn(ForgeDirection side, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { return true; @@ -160,7 +148,8 @@ public int getTickRate(ForgeDirection side, int aCoverID, int aCoverVariable, IC public boolean isCoverPlaceable(ForgeDirection side, ItemStack aStack, ICoverable aTileEntity) { if (!super.isCoverPlaceable(side, aStack, aTileEntity)) return false; for (final ForgeDirection tSide : ForgeDirection.VALID_DIRECTIONS) { - if (aTileEntity.getCoverBehaviorAtSideNew(tSide) instanceof IControlsWorkCover) { + if (aTileEntity.getCoverInfoAtSide(tSide) + .getCoverBehavior() instanceof CoverControlsWork) { return false; } } diff --git a/src/main/java/gregtech/common/covers/CoverFacadeBase.java b/src/main/java/gregtech/common/covers/CoverFacadeBase.java index b5aa93d5308..453c000b9e4 100644 --- a/src/main/java/gregtech/common/covers/CoverFacadeBase.java +++ b/src/main/java/gregtech/common/covers/CoverFacadeBase.java @@ -200,7 +200,8 @@ protected void onDroppedImpl(ForgeDirection side, int aCoverID, FacadeData aCove for (final ForgeDirection iSide : ForgeDirection.VALID_DIRECTIONS) { if (iSide == side) continue; // since we do not allow multiple type of facade per block, this check would be enough. - if (aTileEntity.getCoverBehaviorAtSideNew(iSide) instanceof CoverFacadeBase) return; + if (aTileEntity.getCoverInfoAtSide(iSide) + .getCoverBehavior() instanceof CoverFacadeBase) return; } if (aCoverVariable.mStack != null) // mStack == null -> cover removed before data reach client diff --git a/src/main/java/gregtech/common/covers/CoverInfo.java b/src/main/java/gregtech/common/covers/CoverInfo.java index 8c5f4fdd25c..40121cb2647 100644 --- a/src/main/java/gregtech/common/covers/CoverInfo.java +++ b/src/main/java/gregtech/common/covers/CoverInfo.java @@ -13,12 +13,15 @@ import org.jetbrains.annotations.NotNull; +import com.gtnewhorizons.modularui.api.screen.ModularUIContext; import com.gtnewhorizons.modularui.api.screen.ModularWindow; +import com.gtnewhorizons.modularui.common.internal.wrapper.ModularUIContainer; import gregtech.api.GregTechAPI; import gregtech.api.gui.modularui.CoverUIBuildContext; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.objects.GTCoverNone; import gregtech.api.util.CoverBehaviorBase; import gregtech.api.util.GTUtility; import gregtech.api.util.ISerializableObject; @@ -32,18 +35,19 @@ public final class CoverInfo { public static final CoverInfo EMPTY_INFO = new CoverInfo(ForgeDirection.UNKNOWN, null); private final ForgeDirection coverSide; - private int coverID = 0; - private CoverBehaviorBase coverBehavior; - private ISerializableObject coverData; + private final int coverID; + private final CoverBehaviorBase coverBehavior; private final WeakReference coveredTile; - private boolean needsUpdate = false; + private ISerializableObject coverData; + private boolean needsUpdate = false; private int tickRateAddition = 0; public CoverInfo(ForgeDirection side, ICoverable aTile) { coverSide = side; coveredTile = new WeakReference<>(aTile); coverBehavior = GregTechAPI.sNoBehavior; + coverID = 0; } public CoverInfo(ForgeDirection side, int aID, ICoverable aTile, ISerializableObject aCoverData) { @@ -95,6 +99,10 @@ public CoverBehaviorBase getCoverBehavior() { return coverBehavior; } + public boolean allowsTickRateAddition() { + return getCoverBehavior().allowsTickRateAddition(); + } + public ISerializableObject getCoverData() { if (coverData != null) return coverData; return GregTechAPI.sNoBehavior.createDataObject(); @@ -148,6 +156,18 @@ public boolean isRedstoneSensitive(long aTickTimer) { return getCoverBehavior().isRedstoneSensitive(coverSide, coverID, coverData, coveredTile.get(), aTickTimer); } + public boolean manipulatesSidedRedstoneOutput() { + return getCoverBehavior().manipulatesSidedRedstoneOutput(coverSide, coverID, coverData, coveredTile.get()); + } + + public byte getRedstoneInput(byte inputRedstone) { + return getCoverBehavior().getRedstoneInput(coverSide, inputRedstone, coverID, coverData, coveredTile.get()); + } + + public boolean letsRedstoneGoIn() { + return getCoverBehavior().letsRedstoneGoIn(coverSide, coverID, coverData, coveredTile.get()); + } + public ISerializableObject doCoverThings(long aTickTimer, byte aRedstone) { return getCoverBehavior() .doCoverThings(coverSide, aRedstone, coverID, coverData, coveredTile.get(), aTickTimer); @@ -161,10 +181,6 @@ public void onBaseTEDestroyed() { getCoverBehavior().onBaseTEDestroyed(coverSide, coverID, coverData, coveredTile.get()); } - public void updateCoverBehavior() { - coverBehavior = GregTechAPI.getCoverBehaviorNew(coverID); - } - public void preDataChanged(int aCoverID, ISerializableObject aCoverData) { getCoverBehavior().preDataChanged(coverSide, coverID, aCoverID, coverData, aCoverData, coveredTile.get()); } @@ -305,6 +321,14 @@ private static int clamp(int input) { return Math.min(MAX_TICK_RATE_ADDITION, Math.max(0, input)); } + public boolean hasNoBehavior() { + return getCoverBehavior() instanceof GTCoverNone; + } + + public boolean allowsCopyPasteTool() { + return getCoverBehavior().allowsCopyPasteTool(); + } + public static final class ClientTickRateFormatter { /** A translation key for the type of time units being used (e.g.: "tick", "seconds".) */ @@ -334,4 +358,19 @@ public String toString() { StatCollector.translateToLocal(unitI18NKey)); } } + + public ModularUIContainer createCoverContainer(EntityPlayer player) { + ICoverable tile = this.coveredTile.get(); + if (tile == null) return null; + final CoverUIBuildContext buildContext = new CoverUIBuildContext( + player, + this.coverID, + this.coverSide, + tile, + false); + final ModularWindow window = this.coverBehavior.createWindow(buildContext); + if (window == null) return null; + return new ModularUIContainer(new ModularUIContext(buildContext, tile::markDirty), window); + } + } diff --git a/src/main/java/gregtech/common/covers/CoverRedstoneTransmitterExternal.java b/src/main/java/gregtech/common/covers/CoverRedstoneTransmitterExternal.java index 130ba4c5d78..ce3b0f14c3e 100644 --- a/src/main/java/gregtech/common/covers/CoverRedstoneTransmitterExternal.java +++ b/src/main/java/gregtech/common/covers/CoverRedstoneTransmitterExternal.java @@ -1,11 +1,9 @@ package gregtech.common.covers; -import net.minecraft.item.ItemStack; import net.minecraftforge.common.util.ForgeDirection; import gregtech.api.GregTechAPI; import gregtech.api.interfaces.ITexture; -import gregtech.api.interfaces.covers.IControlsWorkCover; import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.util.ISerializableObject; @@ -18,8 +16,6 @@ public CoverRedstoneTransmitterExternal(ITexture coverTexture) { @Override public int doCoverThings(ForgeDirection side, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) { - // TODO remove next line after 2.3.0 - if (!IControlsWorkCover.makeSureOnlyOne(side, aTileEntity)) return aCoverVariable; GregTechAPI.sWirelessRedstone.put(aCoverVariable, aInputRedstone); return aCoverVariable; } @@ -34,20 +30,4 @@ protected boolean isRedstoneSensitiveImpl(ForgeDirection side, int aCoverID, public boolean letsRedstoneGoIn(ForgeDirection side, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { return true; } - - @Override - public int getTickRate(ForgeDirection side, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return 1; - } - - @Override - public boolean isCoverPlaceable(ForgeDirection side, ItemStack aStack, ICoverable aTileEntity) { - if (!super.isCoverPlaceable(side, aStack, aTileEntity)) return false; - for (final ForgeDirection tSide : ForgeDirection.VALID_DIRECTIONS) { - if (aTileEntity.getCoverBehaviorAtSideNew(tSide) instanceof IControlsWorkCover) { - return false; - } - } - return true; - } } diff --git a/src/main/java/gregtech/common/items/behaviors/BehaviourCoverTool.java b/src/main/java/gregtech/common/items/behaviors/BehaviourCoverTool.java index 6719478dca4..88ae1696f8a 100644 --- a/src/main/java/gregtech/common/items/behaviors/BehaviourCoverTool.java +++ b/src/main/java/gregtech/common/items/behaviors/BehaviourCoverTool.java @@ -22,6 +22,7 @@ import gregtech.api.util.GTLanguageManager; import gregtech.api.util.GTUtility; import gregtech.api.util.ISerializableObject; +import gregtech.common.covers.CoverInfo; public class BehaviourCoverTool extends BehaviourNone { @@ -120,12 +121,11 @@ private void doCopy(TileEntity aTileEntity, World aWorld, int aX, int aY, int aZ ? GTUtility.determineWrenchingSide(side, hitX, hitY, hitZ) : ForgeDirection.UNKNOWN; if (tSide != ForgeDirection.UNKNOWN) { - if (tCoverable.getCoverBehaviorAtSideNew(tSide) - .allowsCopyPasteTool()) { - mStoredData = tCoverable.getComplexCoverDataAtSide(tSide); - mCoverType = tCoverable.getCoverIDAtSide(tSide); - mTickRateAddition = tCoverable.getCoverInfoAtSide(tSide) - .getTickRateAddition(); + CoverInfo coverInfo = tCoverable.getCoverInfoAtSide(tSide); + if (coverInfo.allowsCopyPasteTool()) { + mStoredData = coverInfo.getCoverData(); + mCoverType = coverInfo.getCoverID(); + mTickRateAddition = coverInfo.getTickRateAddition(); aList.add("Block Side: " + EnumChatFormatting.AQUA + tSide.name() + EnumChatFormatting.RESET); aList.add( diff --git a/src/main/java/gtPlusPlus/core/tileentities/base/TileEntityBase.java b/src/main/java/gtPlusPlus/core/tileentities/base/TileEntityBase.java index 5528c7bbaf2..76a4a158570 100644 --- a/src/main/java/gtPlusPlus/core/tileentities/base/TileEntityBase.java +++ b/src/main/java/gtPlusPlus/core/tileentities/base/TileEntityBase.java @@ -875,12 +875,7 @@ public final void setToFire() { @Override public byte getInternalInputRedstoneSignal(ForgeDirection side) { - return (byte) (getCoverBehaviorAtSide(side).getRedstoneInput( - side, - getInputRedstoneSignal(side), - getCoverIDAtSide(side), - getCoverDataAtSide(side), - this) & 15); + return (byte) (getCoverInfoAtSide(side).getRedstoneInput(getInputRedstoneSignal(side)) & 15); } @Override @@ -892,10 +887,8 @@ public byte getInputRedstoneSignal(ForgeDirection side) { @Override public byte getOutputRedstoneSignal(ForgeDirection side) { - return getCoverBehaviorAtSide(side) - .manipulatesSidedRedstoneOutput(side, getCoverIDAtSide(side), getCoverDataAtSide(side), this) - ? mSidedRedstone[side.ordinal()] - : getGeneralRS(side); + return getCoverInfoAtSide(side).manipulatesSidedRedstoneOutput() ? mSidedRedstone[side.ordinal()] + : getGeneralRS(side); } public boolean allowGeneralRedstoneOutput() { @@ -909,9 +902,7 @@ public byte getGeneralRS(ForgeDirection side) { @Override public void setInternalOutputRedstoneSignal(ForgeDirection side, byte aStrength) { - if (!getCoverBehaviorAtSide(side) - .manipulatesSidedRedstoneOutput(side, getCoverIDAtSide(side), getCoverDataAtSide(side), this)) - setOutputRedstoneSignal(side, aStrength); + if (!getCoverInfoAtSide(side).manipulatesSidedRedstoneOutput()) setOutputRedstoneSignal(side, aStrength); } @Override @@ -933,11 +924,6 @@ public void setGenericRedstoneOutput(boolean aOnOff) { mRedstone = aOnOff; } - @Override - public CoverBehavior getCoverBehaviorAtSide(ForgeDirection side) { - return side != ForgeDirection.UNKNOWN ? mCoverBehaviors[side.ordinal()] : GregTechAPI.sNoBehavior; - } - @Override public void setCoverIDAtSide(ForgeDirection side, int aID) { if (setCoverIDAtSideNoUpdate(side, aID)) { @@ -981,31 +967,11 @@ public ItemStack getCoverItemAtSide(ForgeDirection side) { return GTUtility.intToStack(getCoverIDAtSide(side)); } - @Override - public boolean canPlaceCoverIDAtSide(ForgeDirection side, int aID) { - return getCoverIDAtSide(side) == 0; - } - - @Override - public boolean canPlaceCoverItemAtSide(ForgeDirection side, ItemStack aCover) { - return getCoverIDAtSide(side) == 0; - } - @Override public void setCoverDataAtSide(ForgeDirection side, int aData) { if (side != ForgeDirection.UNKNOWN) mCoverData[side.ordinal()] = aData; } - @Override - public int getCoverDataAtSide(ForgeDirection side) { - if (side != ForgeDirection.UNKNOWN) return mCoverData[side.ordinal()]; - return 0; - } - - public byte getLightValue() { - return mLightValue; - } - @Override public void setLightValue(byte aLightValue) { mLightValue = (byte) (aLightValue & 15); @@ -1035,10 +1001,9 @@ public boolean hasSidedRedstoneOutputBehavior() { @Override public boolean dropCover(ForgeDirection side, ForgeDirection droppedSide, boolean aForced) { - if (getCoverBehaviorAtSide(side) - .onCoverRemoval(side, getCoverIDAtSide(side), mCoverData[side.ordinal()], this, aForced) || aForced) { - ItemStack tStack = getCoverBehaviorAtSide(side) - .getDrop(side, getCoverIDAtSide(side), getCoverDataAtSide(side), this); + CoverInfo coverInfo = getCoverInfoAtSide(side); + if (coverInfo.onCoverRemoval(aForced) || aForced) { + ItemStack tStack = coverInfo.getDrop(); if (tStack != null) { tStack.setTagCompound(null); EntityItem tEntity = new EntityItem( @@ -1063,26 +1028,6 @@ public boolean dropCover(ForgeDirection side, ForgeDirection droppedSide, boolea return false; } - @Override - public ItemStack removeCoverAtSide(ForgeDirection side, boolean aForced) { - if (getCoverBehaviorAtSide(side) - .onCoverRemoval(side, getCoverIDAtSide(side), mCoverData[side.ordinal()], this, aForced) || aForced) { - ItemStack tStack = getCoverBehaviorAtSide(side) - .getDrop(side, getCoverIDAtSide(side), getCoverDataAtSide(side), this); - if (tStack != null) { - tStack.setTagCompound(null); - } - setCoverIDAtSide(side, 0); - if (mMetaTileEntity.hasSidedRedstoneOutputBehavior()) { - setOutputRedstoneSignal(side, (byte) 0); - } else { - setOutputRedstoneSignal(side, (byte) 15); - } - return tStack; - } - return null; - } - public String getOwnerName() { if (GTUtility.isStringInvalid(mOwnerName)) return "Player"; return mOwnerName; diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/MTECropHarvestor.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/MTECropHarvestor.java index 8290160dd36..b57efa8a673 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/MTECropHarvestor.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/MTECropHarvestor.java @@ -99,11 +99,6 @@ public boolean isEnetInput() { return true; } - @Override - public boolean isElectric() { - return true; - } - @Override public long maxAmperesIn() { return 8; @@ -189,13 +184,6 @@ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { if (this.getBaseMetaTileEntity() .getUniversalEnergyStored() < getMinimumStoredEU()) return; - int aTileX = this.getBaseMetaTileEntity() - .getXCoord(); - int aTileY = this.getBaseMetaTileEntity() - .getXCoord(); - int aTileZ = this.getBaseMetaTileEntity() - .getXCoord(); - int aRadius = 10 + getRange(this.mTier); int aSide = (aRadius - 1) / 2; Map aAllDrops = new ItemStackMap<>(true); @@ -204,17 +192,7 @@ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { if (!this.mCropCache.isEmpty()) { this.mCropCache.clear(); } - // Logger.INFO("Looking for crops."); - for (int y = -2; y <= 2; y++) { - for (int x = (-aSide); x <= aSide; x++) { - for (int z = (-aSide); z <= aSide; z++) { - TileEntity tTileEntity = getBaseMetaTileEntity().getTileEntityOffset(x, y, z); - if (tTileEntity instanceof ICropTile tCrop) { - this.mCropCache.add(tCrop); - } - } - } - } + lookForCrops(aSide); } // Process Cache @@ -284,6 +262,19 @@ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { } } + private void lookForCrops(int aSide) { + for (int y = -2; y <= 2; y++) { + for (int x = (-aSide); x <= aSide; x++) { + for (int z = (-aSide); z <= aSide; z++) { + TileEntity tTileEntity = getBaseMetaTileEntity().getTileEntityOffset(x, y, z); + if (tTileEntity instanceof ICropTile tCrop) { + this.mCropCache.add(tCrop); + } + } + } + } + } + public boolean hasFertilizer() { for (int i = SLOT_FERT_1; i <= SLOT_FERT_4; i++) { if (this.mInventory[i] != null) { @@ -518,18 +509,6 @@ public boolean allowCoverOnSide(ForgeDirection side, GTItemStack aStack) { return true; } - /* - * @Override public int getTextureIndex(byte aSide, byte aFacing, boolean aActive, boolean aRedstone) { if (aSide == - * aFacing) return 118+(aRedstone?8:0); if (GT_Utility.getOppositeSide(aSide) == aFacing) return - * 113+(aRedstone?8:0); int tIndex = 128+(aRedstone?8:0); switch (aFacing) { case 0: return tIndex+64; case 1: - * return tIndex+32; case 2: switch (aSide) { case 0: return tIndex+32; case 1: return tIndex+32; case 4: return - * tIndex+16; case 5: return tIndex+48; } case 3: switch (aSide) { case 0: return tIndex+64; case 1: return - * tIndex+64; case 4: return tIndex+48; case 5: return tIndex+16; } case 4: switch (aSide) { case 0: return - * tIndex+16; case 1: return tIndex+16; case 2: return tIndex+48; case 3: return tIndex+16; } case 5: switch (aSide) - * { case 0: return tIndex+48; case 1: return tIndex+48; case 2: return tIndex+16; case 3: return tIndex+48; } } - * return tIndex; } - */ - @Override public ITexture[][][] getTextureSet(final ITexture[] aTextures) { final ITexture[][][] rTextures = new ITexture[10][17][]; @@ -556,10 +535,6 @@ public ITexture[] getTexture(final IGregTechTileEntity aBaseMetaTileEntity, fina } else { return this.mTextures[4][aColorIndex + 1]; } - /* - * return this.mTextures[(aActive ? 5 : 0) + (side == facing ? 0 : aSide == GT_Utility.getOppositeSide(aFacing) - * ? 1 : side == ForgeDirection.DOWN ? 2 : side == ForgeDirection.UP ? 3 : 4)][aColorIndex + 1]; - */ } public ITexture[] getFront(final byte aColor) { diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/redstone/MTERedstoneCircuitBlock.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/redstone/MTERedstoneCircuitBlock.java index 45f71eaa189..8d7bf6a853e 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/redstone/MTERedstoneCircuitBlock.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/redstone/MTERedstoneCircuitBlock.java @@ -37,10 +37,10 @@ import gregtech.api.objects.GTItemStack; import gregtech.api.render.TextureFactory; import gregtech.api.util.CircuitryBehavior; -import gregtech.api.util.CoverBehavior; import gregtech.api.util.GTLog; import gregtech.api.util.GTUtility; import gregtech.api.util.ISerializableObject; +import gregtech.common.covers.CoverInfo; import gtPlusPlus.xmod.gregtech.api.gui.GTPPUITextures; import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock; @@ -410,8 +410,8 @@ public int getRandom(int aRange) { } @Override - public CoverBehavior getCover(ForgeDirection side) { - return (CoverBehavior) getBaseMetaTileEntity().getCoverBehaviorAtSideNew(side); + public CoverInfo getCover(ForgeDirection side) { + return getBaseMetaTileEntity().getCoverInfoAtSide(side); } @Override @@ -420,8 +420,9 @@ public int getCoverID(ForgeDirection side) { } @Override - public int getCoverVariable(ForgeDirection side) { - return ((ISerializableObject.LegacyCoverData) getBaseMetaTileEntity().getComplexCoverDataAtSide(side)).get(); + public ISerializableObject getCoverData(ForgeDirection side) { + return getBaseMetaTileEntity().getCoverInfoAtSide(side) + .getCoverData(); } @Override