Fixed crash with Wireless Fluid Grid. Fixes #1928
This commit is contained in:
@@ -1,5 +1,8 @@
|
|||||||
# Refined Storage Changelog
|
# Refined Storage Changelog
|
||||||
|
|
||||||
|
### 1.6.3
|
||||||
|
- Fixed crash with Wireless Fluid Grid (raoulvdberge)
|
||||||
|
|
||||||
### 1.6.2
|
### 1.6.2
|
||||||
- Fixed Grid searching not working (raoulvdberge)
|
- Fixed Grid searching not working (raoulvdberge)
|
||||||
|
|
||||||
|
@@ -45,6 +45,14 @@ public class ItemWirelessFluidGrid extends ItemNetworkItem {
|
|||||||
return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SEARCH_BOX_MODE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SEARCH_BOX_MODE) : IGrid.SEARCH_BOX_MODE_NORMAL;
|
return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SEARCH_BOX_MODE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SEARCH_BOX_MODE) : IGrid.SEARCH_BOX_MODE_NORMAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int getTabSelected(ItemStack stack) {
|
||||||
|
return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_TAB_SELECTED)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_TAB_SELECTED) : -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getTabPage(ItemStack stack) {
|
||||||
|
return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_TAB_PAGE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_TAB_PAGE) : 0;
|
||||||
|
}
|
||||||
|
|
||||||
public static int getSize(ItemStack stack) {
|
public static int getSize(ItemStack stack) {
|
||||||
return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SIZE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SIZE) : IGrid.SIZE_STRETCH;
|
return (stack.hasTagCompound() && stack.getTagCompound().hasKey(NetworkNodeGrid.NBT_SIZE)) ? stack.getTagCompound().getInteger(NetworkNodeGrid.NBT_SIZE) : IGrid.SIZE_STRETCH;
|
||||||
}
|
}
|
||||||
|
@@ -14,15 +14,19 @@ public class MessageWirelessFluidGridSettingsUpdate extends MessageHandlerPlayer
|
|||||||
private int sortingType;
|
private int sortingType;
|
||||||
private int searchBoxMode;
|
private int searchBoxMode;
|
||||||
private int size;
|
private int size;
|
||||||
|
private int tabSelected;
|
||||||
|
private int tabPage;
|
||||||
|
|
||||||
public MessageWirelessFluidGridSettingsUpdate() {
|
public MessageWirelessFluidGridSettingsUpdate() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public MessageWirelessFluidGridSettingsUpdate(int sortingDirection, int sortingType, int searchBoxMode, int size) {
|
public MessageWirelessFluidGridSettingsUpdate(int sortingDirection, int sortingType, int searchBoxMode, int size, int tabSelected, int tabPage) {
|
||||||
this.sortingDirection = sortingDirection;
|
this.sortingDirection = sortingDirection;
|
||||||
this.sortingType = sortingType;
|
this.sortingType = sortingType;
|
||||||
this.searchBoxMode = searchBoxMode;
|
this.searchBoxMode = searchBoxMode;
|
||||||
this.size = size;
|
this.size = size;
|
||||||
|
this.tabSelected = tabSelected;
|
||||||
|
this.tabPage = tabPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -31,6 +35,8 @@ public class MessageWirelessFluidGridSettingsUpdate extends MessageHandlerPlayer
|
|||||||
sortingType = buf.readInt();
|
sortingType = buf.readInt();
|
||||||
searchBoxMode = buf.readInt();
|
searchBoxMode = buf.readInt();
|
||||||
size = buf.readInt();
|
size = buf.readInt();
|
||||||
|
tabSelected = buf.readInt();
|
||||||
|
tabPage = buf.readInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -39,6 +45,8 @@ public class MessageWirelessFluidGridSettingsUpdate extends MessageHandlerPlayer
|
|||||||
buf.writeInt(sortingType);
|
buf.writeInt(sortingType);
|
||||||
buf.writeInt(searchBoxMode);
|
buf.writeInt(searchBoxMode);
|
||||||
buf.writeInt(size);
|
buf.writeInt(size);
|
||||||
|
buf.writeInt(tabSelected);
|
||||||
|
buf.writeInt(tabPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -64,6 +72,9 @@ public class MessageWirelessFluidGridSettingsUpdate extends MessageHandlerPlayer
|
|||||||
if (IGrid.isValidSize(message.size)) {
|
if (IGrid.isValidSize(message.size)) {
|
||||||
stack.getTagCompound().setInteger(NetworkNodeGrid.NBT_SIZE, message.size);
|
stack.getTagCompound().setInteger(NetworkNodeGrid.NBT_SIZE, message.size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stack.getTagCompound().setInteger(NetworkNodeGrid.NBT_TAB_SELECTED, message.tabSelected);
|
||||||
|
stack.getTagCompound().setInteger(NetworkNodeGrid.NBT_TAB_PAGE, message.tabPage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.tile.grid;
|
|||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.GridType;
|
import com.raoulvdberge.refinedstorage.api.network.grid.GridType;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IGridNetworkAware;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IGridNetworkAware;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IGridTab;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IGridTab;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.handler.IFluidGridHandler;
|
import com.raoulvdberge.refinedstorage.api.network.grid.handler.IFluidGridHandler;
|
||||||
@@ -13,14 +14,17 @@ import com.raoulvdberge.refinedstorage.api.util.IFilter;
|
|||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheListenerGridFluid;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheListenerGridFluid;
|
||||||
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
||||||
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
|
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
|
||||||
|
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerFilter;
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemWirelessFluidGrid;
|
import com.raoulvdberge.refinedstorage.item.ItemWirelessFluidGrid;
|
||||||
import com.raoulvdberge.refinedstorage.network.MessageWirelessFluidGridSettingsUpdate;
|
import com.raoulvdberge.refinedstorage.network.MessageWirelessFluidGridSettingsUpdate;
|
||||||
|
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.inventory.InventoryCraftResult;
|
import net.minecraft.inventory.InventoryCraftResult;
|
||||||
import net.minecraft.inventory.InventoryCrafting;
|
import net.minecraft.inventory.InventoryCrafting;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@@ -28,7 +32,7 @@ import net.minecraftforge.common.DimensionManager;
|
|||||||
import net.minecraftforge.items.IItemHandlerModifiable;
|
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.Collections;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class WirelessFluidGrid implements IGridNetworkAware {
|
public class WirelessFluidGrid implements IGridNetworkAware {
|
||||||
@@ -42,8 +46,25 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
|||||||
private int sortingType;
|
private int sortingType;
|
||||||
private int sortingDirection;
|
private int sortingDirection;
|
||||||
private int searchBoxMode;
|
private int searchBoxMode;
|
||||||
|
private int tabSelected;
|
||||||
|
private int tabPage;
|
||||||
private int size;
|
private int size;
|
||||||
|
|
||||||
|
private List<IFilter> filters = new ArrayList<>();
|
||||||
|
private List<IGridTab> tabs = new ArrayList<>();
|
||||||
|
private ItemHandlerFilter filter = new ItemHandlerFilter(filters, tabs, null) {
|
||||||
|
@Override
|
||||||
|
protected void onContentsChanged(int slot) {
|
||||||
|
super.onContentsChanged(slot);
|
||||||
|
|
||||||
|
if (!stack.hasTagCompound()) {
|
||||||
|
stack.setTagCompound(new NBTTagCompound());
|
||||||
|
}
|
||||||
|
|
||||||
|
StackUtils.writeItems(this, 0, stack.getTagCompound());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public WirelessFluidGrid(int networkDimension, ItemStack stack) {
|
public WirelessFluidGrid(int networkDimension, ItemStack stack) {
|
||||||
this.networkDimension = networkDimension;
|
this.networkDimension = networkDimension;
|
||||||
this.network = new BlockPos(ItemWirelessFluidGrid.getX(stack), ItemWirelessFluidGrid.getY(stack), ItemWirelessFluidGrid.getZ(stack));
|
this.network = new BlockPos(ItemWirelessFluidGrid.getX(stack), ItemWirelessFluidGrid.getY(stack), ItemWirelessFluidGrid.getZ(stack));
|
||||||
@@ -53,7 +74,13 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
|||||||
this.sortingType = ItemWirelessFluidGrid.getSortingType(stack);
|
this.sortingType = ItemWirelessFluidGrid.getSortingType(stack);
|
||||||
this.sortingDirection = ItemWirelessFluidGrid.getSortingDirection(stack);
|
this.sortingDirection = ItemWirelessFluidGrid.getSortingDirection(stack);
|
||||||
this.searchBoxMode = ItemWirelessFluidGrid.getSearchBoxMode(stack);
|
this.searchBoxMode = ItemWirelessFluidGrid.getSearchBoxMode(stack);
|
||||||
|
this.tabSelected = ItemWirelessFluidGrid.getTabSelected(stack);
|
||||||
|
this.tabPage = ItemWirelessFluidGrid.getTabPage(stack);
|
||||||
this.size = ItemWirelessFluidGrid.getSize(stack);
|
this.size = ItemWirelessFluidGrid.getSize(stack);
|
||||||
|
|
||||||
|
if (stack.hasTagCompound()) {
|
||||||
|
StackUtils.readItems(filter, 0, stack.getTagCompound());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack getStack() {
|
public ItemStack getStack() {
|
||||||
@@ -133,17 +160,17 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getTabSelected() {
|
public int getTabSelected() {
|
||||||
return 0;
|
return tabSelected;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getTabPage() {
|
public int getTabPage() {
|
||||||
return 0;
|
return Math.min(tabPage, getTotalTabPages());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getTotalTabPages() {
|
public int getTotalTabPages() {
|
||||||
return 0;
|
return (int) Math.floor((float) Math.max(0, tabs.size() - 1) / (float) IGrid.TABS_PER_PAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -158,7 +185,7 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSortingTypeChanged(int type) {
|
public void onSortingTypeChanged(int type) {
|
||||||
RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), type, getSearchBoxMode(), getSize()));
|
RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), type, getSearchBoxMode(), getSize(), getTabSelected(), getTabPage()));
|
||||||
|
|
||||||
this.sortingType = type;
|
this.sortingType = type;
|
||||||
|
|
||||||
@@ -167,7 +194,7 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSortingDirectionChanged(int direction) {
|
public void onSortingDirectionChanged(int direction) {
|
||||||
RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(direction, getSortingType(), getSearchBoxMode(), getSize()));
|
RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(direction, getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), getTabPage()));
|
||||||
|
|
||||||
this.sortingDirection = direction;
|
this.sortingDirection = direction;
|
||||||
|
|
||||||
@@ -176,14 +203,14 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSearchBoxModeChanged(int searchBoxMode) {
|
public void onSearchBoxModeChanged(int searchBoxMode) {
|
||||||
RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), getSortingType(), searchBoxMode, getSize()));
|
RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), getSortingType(), searchBoxMode, getSize(), getTabSelected(), getTabPage()));
|
||||||
|
|
||||||
this.searchBoxMode = searchBoxMode;
|
this.searchBoxMode = searchBoxMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSizeChanged(int size) {
|
public void onSizeChanged(int size) {
|
||||||
RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), getSortingType(), getSearchBoxMode(), size));
|
RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), getSortingType(), getSearchBoxMode(), size, getTabSelected(), getTabPage()));
|
||||||
|
|
||||||
this.size = size;
|
this.size = size;
|
||||||
|
|
||||||
@@ -194,27 +221,35 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTabSelectionChanged(int tab) {
|
public void onTabSelectionChanged(int tab) {
|
||||||
// NO OP
|
this.tabSelected = tab == tabSelected ? -1 : tab;
|
||||||
|
|
||||||
|
RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected, getTabPage()));
|
||||||
|
|
||||||
|
GuiBase.executeLater(GuiGrid.class, grid -> grid.getView().sort());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTabPageChanged(int page) {
|
public void onTabPageChanged(int page) {
|
||||||
// NO OP
|
if (page >= 0 && page <= getTotalTabPages()) {
|
||||||
|
RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), getTabSelected(), page));
|
||||||
|
|
||||||
|
this.tabPage = page;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<IFilter> getFilters() {
|
public List<IFilter> getFilters() {
|
||||||
return Collections.emptyList();
|
return filters;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<IGridTab> getTabs() {
|
public List<IGridTab> getTabs() {
|
||||||
return Collections.emptyList();
|
return tabs;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IItemHandlerModifiable getFilter() {
|
public IItemHandlerModifiable getFilter() {
|
||||||
return null;
|
return filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Reference in New Issue
Block a user