diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fe89796b..491aac9df 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Refined Storage Changelog +### 0.8.13 +**Bugfixes** +- Fixed rendering crash with Disk Drive +- Fixed crash when quickly toggling sorting direction in Grid + ### 0.8.12 **Bugfixes** - Fixed dupe bug when shift clicking output slot in grid diff --git a/src/main/java/refinedstorage/RefinedStorage.java b/src/main/java/refinedstorage/RefinedStorage.java index 2ac66ac4a..4f74c04fb 100755 --- a/src/main/java/refinedstorage/RefinedStorage.java +++ b/src/main/java/refinedstorage/RefinedStorage.java @@ -14,7 +14,7 @@ import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.network.NetworkRegistry; import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper; -import refinedstorage.apiimpl.storage.ClientStack; +import refinedstorage.gui.grid.ClientStack; import refinedstorage.proxy.CommonProxy; import java.util.ArrayList; diff --git a/src/main/java/refinedstorage/gui/GuiHandler.java b/src/main/java/refinedstorage/gui/GuiHandler.java index bef7a4d4d..d5aa498ca 100755 --- a/src/main/java/refinedstorage/gui/GuiHandler.java +++ b/src/main/java/refinedstorage/gui/GuiHandler.java @@ -9,6 +9,7 @@ import net.minecraft.world.World; import net.minecraftforge.fml.common.network.IGuiHandler; import refinedstorage.RefinedStorageGui; import refinedstorage.container.*; +import refinedstorage.gui.grid.GuiGrid; import refinedstorage.tile.*; import refinedstorage.tile.controller.TileController; import refinedstorage.tile.grid.TileGrid; diff --git a/src/main/java/refinedstorage/apiimpl/storage/ClientStack.java b/src/main/java/refinedstorage/gui/grid/ClientStack.java similarity index 87% rename from src/main/java/refinedstorage/apiimpl/storage/ClientStack.java rename to src/main/java/refinedstorage/gui/grid/ClientStack.java index 693bf1167..a9cc647b5 100755 --- a/src/main/java/refinedstorage/apiimpl/storage/ClientStack.java +++ b/src/main/java/refinedstorage/gui/grid/ClientStack.java @@ -1,4 +1,4 @@ -package refinedstorage.apiimpl.storage; +package refinedstorage.gui.grid; import io.netty.buffer.ByteBuf; import net.minecraft.item.Item; @@ -12,12 +12,6 @@ public class ClientStack { private ItemStack stack; private boolean craftable; - public ClientStack(int id, ItemStack stack, boolean craftable) { - this.id = id; - this.stack = stack; - this.craftable = craftable; - } - public ClientStack(ByteBuf buf) { stack = new ItemStack(Item.getItemById(buf.readInt()), buf.readInt(), buf.readInt()); stack.setTagCompound(ByteBufUtils.readTag(buf)); diff --git a/src/main/java/refinedstorage/gui/GuiCraftingSettings.java b/src/main/java/refinedstorage/gui/grid/GuiCraftingSettings.java similarity index 98% rename from src/main/java/refinedstorage/gui/GuiCraftingSettings.java rename to src/main/java/refinedstorage/gui/grid/GuiCraftingSettings.java index 634d9369c..34a1cb349 100755 --- a/src/main/java/refinedstorage/gui/GuiCraftingSettings.java +++ b/src/main/java/refinedstorage/gui/grid/GuiCraftingSettings.java @@ -1,4 +1,4 @@ -package refinedstorage.gui; +package refinedstorage.gui.grid; import com.google.common.primitives.Ints; import net.minecraft.client.gui.GuiButton; @@ -8,8 +8,8 @@ import net.minecraftforge.fml.client.FMLClientHandler; import org.lwjgl.input.Keyboard; import refinedstorage.RefinedStorage; import refinedstorage.apiimpl.network.GridHandler; -import refinedstorage.apiimpl.storage.ClientStack; import refinedstorage.container.ContainerCraftingSettings; +import refinedstorage.gui.GuiBase; import refinedstorage.network.MessageGridCraftingStart; import java.io.IOException; diff --git a/src/main/java/refinedstorage/gui/GuiGrid.java b/src/main/java/refinedstorage/gui/grid/GuiGrid.java similarity index 90% rename from src/main/java/refinedstorage/gui/GuiGrid.java rename to src/main/java/refinedstorage/gui/grid/GuiGrid.java index 2c8c7de94..b316fa7d5 100755 --- a/src/main/java/refinedstorage/gui/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/grid/GuiGrid.java @@ -1,4 +1,4 @@ -package refinedstorage.gui; +package refinedstorage.gui.grid; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.GuiScreen; @@ -13,9 +13,12 @@ import net.minecraftforge.fml.common.FMLCommonHandler; import org.apache.commons.lang3.StringUtils; import refinedstorage.RefinedStorage; import refinedstorage.api.network.GridExtractFlags; -import refinedstorage.apiimpl.storage.ClientStack; import refinedstorage.block.EnumGridType; import refinedstorage.container.ContainerGrid; +import refinedstorage.gui.GuiBase; +import refinedstorage.gui.Scrollbar; +import refinedstorage.gui.grid.sorting.GridSortingName; +import refinedstorage.gui.grid.sorting.GridSortingQuantity; import refinedstorage.gui.sidebutton.*; import refinedstorage.jei.RefinedStorageJEIPlugin; import refinedstorage.network.MessageGridCraftingClear; @@ -30,38 +33,8 @@ import java.io.IOException; import java.util.*; public class GuiGrid extends GuiBase { - private Comparator quantityComparator = new Comparator() { - @Override - public int compare(ClientStack left, ClientStack right) { - int leftSize = left.getStack().stackSize; - int rightSize = right.getStack().stackSize; - - if (leftSize == rightSize) { - return 0; - } - - if (grid.getSortingDirection() == TileGrid.SORTING_DIRECTION_ASCENDING) { - return (leftSize > rightSize) ? 1 : -1; - } else if (grid.getSortingDirection() == TileGrid.SORTING_DIRECTION_DESCENDING) { - return (rightSize > leftSize) ? 1 : -1; - } - - return 0; - } - }; - - private Comparator nameComparator = new Comparator() { - @Override - public int compare(ClientStack left, ClientStack right) { - if (grid.getSortingDirection() == TileGrid.SORTING_DIRECTION_ASCENDING) { - return left.getStack().getDisplayName().compareTo(right.getStack().getDisplayName()); - } else if (grid.getSortingDirection() == TileGrid.SORTING_DIRECTION_DESCENDING) { - return right.getStack().getDisplayName().compareTo(left.getStack().getDisplayName()); - } - - return 0; - } - }; + private GridSortingQuantity quantitySorting = new GridSortingQuantity(); + private GridSortingName nameSorting = new GridSortingName(); private GuiTextField searchField; @@ -171,10 +144,13 @@ public class GuiGrid extends GuiBase { } } - Collections.sort(items, nameComparator); + nameSorting.setSortingDirection(grid.getSortingDirection()); + quantitySorting.setSortingDirection(grid.getSortingDirection()); + + Collections.sort(items, nameSorting); if (grid.getSortingType() == TileGrid.SORTING_TYPE_QUANTITY) { - Collections.sort(items, quantityComparator); + Collections.sort(items, quantitySorting); } } diff --git a/src/main/java/refinedstorage/gui/grid/sorting/GridSorting.java b/src/main/java/refinedstorage/gui/grid/sorting/GridSorting.java new file mode 100755 index 000000000..16d2c705e --- /dev/null +++ b/src/main/java/refinedstorage/gui/grid/sorting/GridSorting.java @@ -0,0 +1,13 @@ +package refinedstorage.gui.grid.sorting; + +import refinedstorage.gui.grid.ClientStack; + +import java.util.Comparator; + +public abstract class GridSorting implements Comparator { + protected int sortingDirection; + + public void setSortingDirection(int sortingDirection) { + this.sortingDirection = sortingDirection; + } +} diff --git a/src/main/java/refinedstorage/gui/grid/sorting/GridSortingName.java b/src/main/java/refinedstorage/gui/grid/sorting/GridSortingName.java new file mode 100755 index 000000000..5139dab4f --- /dev/null +++ b/src/main/java/refinedstorage/gui/grid/sorting/GridSortingName.java @@ -0,0 +1,20 @@ +package refinedstorage.gui.grid.sorting; + +import refinedstorage.gui.grid.ClientStack; +import refinedstorage.tile.grid.TileGrid; + +public class GridSortingName extends GridSorting { + @Override + public int compare(ClientStack left, ClientStack right) { + String leftName = left.getStack().getDisplayName(); + String rightName = right.getStack().getDisplayName(); + + if (sortingDirection == TileGrid.SORTING_DIRECTION_ASCENDING) { + return leftName.compareTo(rightName); + } else if (sortingDirection == TileGrid.SORTING_DIRECTION_DESCENDING) { + return rightName.compareTo(leftName); + } + + return 0; + } +} diff --git a/src/main/java/refinedstorage/gui/grid/sorting/GridSortingQuantity.java b/src/main/java/refinedstorage/gui/grid/sorting/GridSortingQuantity.java new file mode 100755 index 000000000..68fa6e4e5 --- /dev/null +++ b/src/main/java/refinedstorage/gui/grid/sorting/GridSortingQuantity.java @@ -0,0 +1,22 @@ +package refinedstorage.gui.grid.sorting; + +import refinedstorage.gui.grid.ClientStack; +import refinedstorage.tile.grid.TileGrid; + +public class GridSortingQuantity extends GridSorting { + @Override + public int compare(ClientStack left, ClientStack right) { + int leftSize = left.getStack().stackSize; + int rightSize = right.getStack().stackSize; + + if (leftSize != rightSize) { + if (sortingDirection == TileGrid.SORTING_DIRECTION_ASCENDING) { + return (leftSize > rightSize) ? 1 : -1; + } else if (sortingDirection == TileGrid.SORTING_DIRECTION_DESCENDING) { + return (rightSize > leftSize) ? 1 : -1; + } + } + + return 0; + } +} diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java index 8e08f7612..6466c07bf 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java @@ -3,7 +3,7 @@ package refinedstorage.gui.sidebutton; import net.minecraft.util.text.TextFormatting; import refinedstorage.RefinedStorage; import refinedstorage.gui.GuiBase; -import refinedstorage.gui.GuiGrid; +import refinedstorage.gui.grid.GuiGrid; import refinedstorage.tile.grid.TileGrid; public class SideButtonGridSearchBoxMode extends SideButton { diff --git a/src/main/java/refinedstorage/network/MessageGridDelta.java b/src/main/java/refinedstorage/network/MessageGridDelta.java index 1116b865b..a11108c8e 100755 --- a/src/main/java/refinedstorage/network/MessageGridDelta.java +++ b/src/main/java/refinedstorage/network/MessageGridDelta.java @@ -7,7 +7,7 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; import refinedstorage.RefinedStorage; import refinedstorage.api.network.INetworkMaster; -import refinedstorage.apiimpl.storage.ClientStack; +import refinedstorage.gui.grid.ClientStack; public class MessageGridDelta implements IMessage, IMessageHandler { private INetworkMaster network; diff --git a/src/main/java/refinedstorage/network/MessageGridUpdate.java b/src/main/java/refinedstorage/network/MessageGridUpdate.java index 5eccb2d4b..bcf87f8ec 100755 --- a/src/main/java/refinedstorage/network/MessageGridUpdate.java +++ b/src/main/java/refinedstorage/network/MessageGridUpdate.java @@ -7,7 +7,7 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; import refinedstorage.RefinedStorage; import refinedstorage.api.network.INetworkMaster; -import refinedstorage.apiimpl.storage.ClientStack; +import refinedstorage.gui.grid.ClientStack; import java.util.ArrayList; import java.util.List;