From 39749eef68ae73b6f21d0693e2dab36836366e85 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Fri, 12 May 2017 00:16:54 +0200 Subject: [PATCH] Make settings in the inworld portable grid correctly sync --- .../item/ItemBlockEnergyItem.java | 4 +- .../refinedstorage/item/ItemEnergyItem.java | 4 +- .../network/MessageGridSettingsUpdate.java | 21 --- .../refinedstorage/tile/grid/TileGrid.java | 2 +- .../tile/grid/portable/TilePortableGrid.java | 144 +++++++++++++----- 5 files changed, 112 insertions(+), 63 deletions(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockEnergyItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockEnergyItem.java index f9c8fa2f0..1adbaff06 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockEnergyItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockEnergyItem.java @@ -81,8 +81,8 @@ public abstract class ItemBlockEnergyItem extends ItemBlockBase { } @Override - public void addInformation(ItemStack stack, EntityPlayer playerIn, List tooltip, boolean advanced) { - super.addInformation(stack, playerIn, tooltip, advanced); + public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean advanced) { + super.addInformation(stack, player, tooltip, advanced); if (stack.getItemDamage() != TYPE_CREATIVE) { IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemEnergyItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemEnergyItem.java index 7d3428dca..2b4d19993 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemEnergyItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemEnergyItem.java @@ -80,8 +80,8 @@ public abstract class ItemEnergyItem extends ItemBase { } @Override - public void addInformation(ItemStack stack, EntityPlayer playerIn, List tooltip, boolean advanced) { - super.addInformation(stack, playerIn, tooltip, advanced); + public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean advanced) { + super.addInformation(stack, player, tooltip, advanced); if (stack.getItemDamage() != TYPE_CREATIVE) { IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridSettingsUpdate.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridSettingsUpdate.java index 1af55bf97..0a846b934 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridSettingsUpdate.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridSettingsUpdate.java @@ -5,7 +5,6 @@ import com.raoulvdberge.refinedstorage.container.ContainerGrid; import com.raoulvdberge.refinedstorage.tile.grid.IGrid; import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid; import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGrid; -import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; @@ -85,26 +84,6 @@ public class MessageGridSettingsUpdate extends MessageHandlerPlayerToServer { dataManager.addWatchedParameter(SORTING_DIRECTION); dataManager.addWatchedParameter(SORTING_TYPE); dataManager.addWatchedParameter(SEARCH_BOX_MODE); + dataManager.addWatchedParameter(SIZE); dataManager.addWatchedParameter(TAB_SELECTED); dataManager.addWatchedParameter(OREDICT_PATTERN); - dataManager.addWatchedParameter(SIZE); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java index d949d098a..fbc93f2db 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java @@ -23,9 +23,10 @@ import com.raoulvdberge.refinedstorage.item.ItemBlockPortableGrid; import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid; import com.raoulvdberge.refinedstorage.item.filter.Filter; import com.raoulvdberge.refinedstorage.item.filter.FilterTab; -import com.raoulvdberge.refinedstorage.network.MessageGridSettingsUpdate; import com.raoulvdberge.refinedstorage.tile.TileBase; +import com.raoulvdberge.refinedstorage.tile.data.ITileDataConsumer; import com.raoulvdberge.refinedstorage.tile.data.ITileDataProducer; +import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import com.raoulvdberge.refinedstorage.tile.grid.IGrid; import net.minecraft.client.Minecraft; @@ -54,9 +55,95 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid { } }); + public static final TileDataParameter SORTING_DIRECTION = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer() { + @Override + public Integer getValue(TilePortableGrid tile) { + return tile.getSortingDirection(); + } + }, new ITileDataConsumer() { + @Override + public void setValue(TilePortableGrid tile, Integer value) { + if (NetworkNodeGrid.isValidSortingDirection(value)) { + tile.setSortingDirection(value); + tile.markDirty(); + } + } + }, parameter -> GuiGrid.markForSorting()); + + public static final TileDataParameter SORTING_TYPE = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer() { + @Override + public Integer getValue(TilePortableGrid tile) { + return tile.getSortingType(); + } + }, new ITileDataConsumer() { + @Override + public void setValue(TilePortableGrid tile, Integer value) { + if (NetworkNodeGrid.isValidSortingType(value)) { + tile.setSortingType(value); + tile.markDirty(); + } + } + }, parameter -> GuiGrid.markForSorting()); + + public static final TileDataParameter SEARCH_BOX_MODE = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer() { + @Override + public Integer getValue(TilePortableGrid tile) { + return tile.getSearchBoxMode(); + } + }, new ITileDataConsumer() { + @Override + public void setValue(TilePortableGrid tile, Integer value) { + if (NetworkNodeGrid.isValidSearchBoxMode(value)) { + tile.setSearchBoxMode(value); + tile.markDirty(); + } + } + }, parameter -> { + if (Minecraft.getMinecraft().currentScreen instanceof GuiGrid) { + ((GuiGrid) Minecraft.getMinecraft().currentScreen).updateSearchFieldFocus(parameter.getValue()); + } + }); + + public static final TileDataParameter SIZE = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer() { + @Override + public Integer getValue(TilePortableGrid tile) { + return tile.getSize(); + } + }, new ITileDataConsumer() { + @Override + public void setValue(TilePortableGrid tile, Integer value) { + if (NetworkNodeGrid.isValidSize(value)) { + tile.setSize(value); + tile.markDirty(); + } + } + }, parameter -> { + if (Minecraft.getMinecraft().currentScreen != null) { + Minecraft.getMinecraft().currentScreen.initGui(); + } + }); + + public static final TileDataParameter TAB_SELECTED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer() { + @Override + public Integer getValue(TilePortableGrid tile) { + return tile.getTabSelected(); + } + }, new ITileDataConsumer() { + @Override + public void setValue(TilePortableGrid tile, Integer value) { + tile.setTabSelected(value == tile.getTabSelected() ? -1 : value); + tile.markDirty(); + } + }, parameter -> { + if (Minecraft.getMinecraft().currentScreen instanceof GuiGrid) { + ((GuiGrid) Minecraft.getMinecraft().currentScreen).markForSorting(); + } + }); + private static final String NBT_ENERGY = "Energy"; private EnergyForge energyStorage = new EnergyForge(3200); + private PortableGridType type; private int sortingType; private int sortingDirection; @@ -64,8 +151,6 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid { private int tabSelected; private int size; - private PortableGridType type; - private List filters = new ArrayList<>(); private List tabs = new ArrayList<>(); private ItemHandlerFilter filter = new ItemHandlerFilter(filters, tabs, new ItemHandlerListenerTile(this)); @@ -107,6 +192,11 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid { public TilePortableGrid() { dataManager.addWatchedParameter(ENERGY_STORED); + dataManager.addWatchedParameter(SORTING_DIRECTION); + dataManager.addWatchedParameter(SORTING_TYPE); + dataManager.addWatchedParameter(SEARCH_BOX_MODE); + dataManager.addWatchedParameter(SIZE); + dataManager.addWatchedParameter(TAB_SELECTED); } public PortableGridType getPortableType() { @@ -190,22 +280,27 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid { @Override public int getSortingType() { - return sortingType; + return getWorld().isRemote ? SORTING_TYPE.getValue() : sortingType; } @Override public int getSortingDirection() { - return sortingDirection; + return getWorld().isRemote ? SORTING_DIRECTION.getValue() : sortingDirection; } @Override public int getSearchBoxMode() { - return searchBoxMode; + return getWorld().isRemote ? SEARCH_BOX_MODE.getValue() : searchBoxMode; } @Override public int getTabSelected() { - return tabSelected; + return getWorld().isRemote ? TAB_SELECTED.getValue() : tabSelected; + } + + @Override + public int getSize() { + return getWorld().isRemote ? SIZE.getValue() : size; } public void setSortingType(int sortingType) { @@ -228,11 +323,6 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid { this.size = size; } - @Override - public int getSize() { - return size; - } - @Override public void onViewTypeChanged(int type) { // NO OP @@ -240,47 +330,27 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid { @Override public void onSortingTypeChanged(int type) { - RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), type, getSearchBoxMode(), getSize(), getTabSelected())); - - this.sortingType = type; - - GuiGrid.markForSorting(); + TileDataManager.setParameter(SORTING_TYPE, type); } @Override public void onSortingDirectionChanged(int direction) { - RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), direction, getSortingType(), getSearchBoxMode(), getSize(), getTabSelected())); - - this.sortingDirection = direction; - - GuiGrid.markForSorting(); + TileDataManager.setParameter(SORTING_DIRECTION, direction); } @Override public void onSearchBoxModeChanged(int searchBoxMode) { - RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode, getSize(), getTabSelected())); - - this.searchBoxMode = searchBoxMode; + TileDataManager.setParameter(SEARCH_BOX_MODE, searchBoxMode); } @Override public void onSizeChanged(int size) { - RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), size, getTabSelected())); - - this.size = size; - - if (Minecraft.getMinecraft().currentScreen != null) { - Minecraft.getMinecraft().currentScreen.initGui(); - } + TileDataManager.setParameter(SIZE, size); } @Override public void onTabSelectionChanged(int tab) { - this.tabSelected = tab == tabSelected ? -1 : tab; - - RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected)); - - GuiGrid.markForSorting(); + TileDataManager.setParameter(TAB_SELECTED, tab); } @Override