Fixed crash with Wireless Fluid Grid. Fixes #1928

This commit is contained in:
raoulvdberge
2018-07-31 20:38:01 +02:00
parent fd51d340ed
commit 04d64fbea9
4 changed files with 71 additions and 14 deletions

View File

@@ -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)

View File

@@ -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;
} }

View File

@@ -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);
} }
} }
} }

View File

@@ -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