diff --git a/CHANGELOG.md b/CHANGELOG.md index a690f4276..c6a80b928 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - Changed JEI transfer error mechanics (raoulvdberge) - Fixed crash when opening Controller GUI (Darkere) - Fixed dye being consumed without effect in some cases (Darkere) +- Fixed deadlock caused by Portable Grid (Darkere) ### 1.9.6 - Port to Minecraft 1.16.3 (raoulvdberge) diff --git a/src/main/java/com/refinedmods/refinedstorage/tile/grid/portable/PortableGridTile.java b/src/main/java/com/refinedmods/refinedstorage/tile/grid/portable/PortableGridTile.java index bce66d599..9e84b7820 100644 --- a/src/main/java/com/refinedmods/refinedstorage/tile/grid/portable/PortableGridTile.java +++ b/src/main/java/com/refinedmods/refinedstorage/tile/grid/portable/PortableGridTile.java @@ -58,6 +58,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.ListNBT; import net.minecraft.network.datasync.DataSerializers; +import net.minecraft.tileentity.ITickableTileEntity; import net.minecraft.util.Direction; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TranslationTextComponent; @@ -76,7 +77,7 @@ import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; -public class PortableGridTile extends BaseTile implements IGrid, IPortableGrid, IRedstoneConfigurable, IStorageDiskContainerContext { +public class PortableGridTile extends BaseTile implements ITickableTileEntity, IGrid, IPortableGrid, IRedstoneConfigurable, IStorageDiskContainerContext { public static final TileDataParameter REDSTONE_MODE = RedstoneMode.createParameter(); private static final TileDataParameter SORTING_DIRECTION = new TileDataParameter<>(DataSerializers.VARINT, 0, PortableGridTile::getSortingDirection, (t, v) -> { if (IGrid.isValidSortingDirection(v)) { @@ -170,6 +171,8 @@ public class PortableGridTile extends BaseTile implements IGrid, IPortableGrid, private ListNBT enchants = null; + private boolean loadNextTick; + public PortableGridTile(PortableGridBlockItem.Type type) { super(type == PortableGridBlockItem.Type.CREATIVE ? RSTiles.CREATIVE_PORTABLE_GRID : RSTiles.PORTABLE_GRID); @@ -225,8 +228,7 @@ public class PortableGridTile extends BaseTile implements IGrid, IPortableGrid, this.loadStorage(); - active = isGridActive(); - diskState = getDiskState(); + loadNextTick = true; } public void applyDataFromItemToTile(ItemStack stack) { @@ -749,4 +751,13 @@ public class PortableGridTile extends BaseTile implements IGrid, IPortableGrid, public AccessType getAccessType() { return AccessType.INSERT_EXTRACT; } + + @Override + public void tick() { + if (loadNextTick) { + active = isGridActive(); + diskState = getDiskState(); + loadNextTick = false; + } + } }