Fixed crash with Wireless Fluid Grid. Fixes #1928
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
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) {
|
||||
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 searchBoxMode;
|
||||
private int size;
|
||||
private int tabSelected;
|
||||
private int tabPage;
|
||||
|
||||
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.sortingType = sortingType;
|
||||
this.searchBoxMode = searchBoxMode;
|
||||
this.size = size;
|
||||
this.tabSelected = tabSelected;
|
||||
this.tabPage = tabPage;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -31,6 +35,8 @@ public class MessageWirelessFluidGridSettingsUpdate extends MessageHandlerPlayer
|
||||
sortingType = buf.readInt();
|
||||
searchBoxMode = buf.readInt();
|
||||
size = buf.readInt();
|
||||
tabSelected = buf.readInt();
|
||||
tabPage = buf.readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -39,6 +45,8 @@ public class MessageWirelessFluidGridSettingsUpdate extends MessageHandlerPlayer
|
||||
buf.writeInt(sortingType);
|
||||
buf.writeInt(searchBoxMode);
|
||||
buf.writeInt(size);
|
||||
buf.writeInt(tabSelected);
|
||||
buf.writeInt(tabPage);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -64,6 +72,9 @@ public class MessageWirelessFluidGridSettingsUpdate extends MessageHandlerPlayer
|
||||
if (IGrid.isValidSize(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.api.network.INetwork;
|
||||
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.IGridTab;
|
||||
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.gui.GuiBase;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerFilter;
|
||||
import com.raoulvdberge.refinedstorage.item.ItemWirelessFluidGrid;
|
||||
import com.raoulvdberge.refinedstorage.network.MessageWirelessFluidGridSettingsUpdate;
|
||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.inventory.InventoryCraftResult;
|
||||
import net.minecraft.inventory.InventoryCrafting;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
@@ -28,7 +32,7 @@ import net.minecraftforge.common.DimensionManager;
|
||||
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Collections;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class WirelessFluidGrid implements IGridNetworkAware {
|
||||
@@ -42,8 +46,25 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
||||
private int sortingType;
|
||||
private int sortingDirection;
|
||||
private int searchBoxMode;
|
||||
private int tabSelected;
|
||||
private int tabPage;
|
||||
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) {
|
||||
this.networkDimension = networkDimension;
|
||||
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.sortingDirection = ItemWirelessFluidGrid.getSortingDirection(stack);
|
||||
this.searchBoxMode = ItemWirelessFluidGrid.getSearchBoxMode(stack);
|
||||
this.tabSelected = ItemWirelessFluidGrid.getTabSelected(stack);
|
||||
this.tabPage = ItemWirelessFluidGrid.getTabPage(stack);
|
||||
this.size = ItemWirelessFluidGrid.getSize(stack);
|
||||
|
||||
if (stack.hasTagCompound()) {
|
||||
StackUtils.readItems(filter, 0, stack.getTagCompound());
|
||||
}
|
||||
}
|
||||
|
||||
public ItemStack getStack() {
|
||||
@@ -133,17 +160,17 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
||||
|
||||
@Override
|
||||
public int getTabSelected() {
|
||||
return 0;
|
||||
return tabSelected;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTabPage() {
|
||||
return 0;
|
||||
return Math.min(tabPage, getTotalTabPages());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTotalTabPages() {
|
||||
return 0;
|
||||
return (int) Math.floor((float) Math.max(0, tabs.size() - 1) / (float) IGrid.TABS_PER_PAGE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -158,7 +185,7 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
||||
|
||||
@Override
|
||||
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;
|
||||
|
||||
@@ -167,7 +194,7 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
||||
|
||||
@Override
|
||||
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;
|
||||
|
||||
@@ -176,14 +203,14 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
||||
|
||||
@Override
|
||||
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;
|
||||
}
|
||||
|
||||
@Override
|
||||
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;
|
||||
|
||||
@@ -194,27 +221,35 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
||||
|
||||
@Override
|
||||
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
|
||||
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
|
||||
public List<IFilter> getFilters() {
|
||||
return Collections.emptyList();
|
||||
return filters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<IGridTab> getTabs() {
|
||||
return Collections.emptyList();
|
||||
return tabs;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandlerModifiable getFilter() {
|
||||
return null;
|
||||
return filter;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user