Make settings in the inworld portable grid correctly sync
This commit is contained in:
		| @@ -81,8 +81,8 @@ public abstract class ItemBlockEnergyItem extends ItemBlockBase { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void addInformation(ItemStack stack, EntityPlayer playerIn, List<String> tooltip, boolean advanced) { |     public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) { | ||||||
|         super.addInformation(stack, playerIn, tooltip, advanced); |         super.addInformation(stack, player, tooltip, advanced); | ||||||
|  |  | ||||||
|         if (stack.getItemDamage() != TYPE_CREATIVE) { |         if (stack.getItemDamage() != TYPE_CREATIVE) { | ||||||
|             IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null); |             IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null); | ||||||
|   | |||||||
| @@ -80,8 +80,8 @@ public abstract class ItemEnergyItem extends ItemBase { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void addInformation(ItemStack stack, EntityPlayer playerIn, List<String> tooltip, boolean advanced) { |     public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) { | ||||||
|         super.addInformation(stack, playerIn, tooltip, advanced); |         super.addInformation(stack, player, tooltip, advanced); | ||||||
|  |  | ||||||
|         if (stack.getItemDamage() != TYPE_CREATIVE) { |         if (stack.getItemDamage() != TYPE_CREATIVE) { | ||||||
|             IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null); |             IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null); | ||||||
|   | |||||||
| @@ -5,7 +5,6 @@ import com.raoulvdberge.refinedstorage.container.ContainerGrid; | |||||||
| import com.raoulvdberge.refinedstorage.tile.grid.IGrid; | import com.raoulvdberge.refinedstorage.tile.grid.IGrid; | ||||||
| import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid; | import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid; | ||||||
| import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGrid; | import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGrid; | ||||||
| import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid; |  | ||||||
| import io.netty.buffer.ByteBuf; | import io.netty.buffer.ByteBuf; | ||||||
| import net.minecraft.entity.player.EntityPlayerMP; | import net.minecraft.entity.player.EntityPlayerMP; | ||||||
| import net.minecraft.item.ItemStack; | import net.minecraft.item.ItemStack; | ||||||
| @@ -85,26 +84,6 @@ public class MessageGridSettingsUpdate extends MessageHandlerPlayerToServer<Mess | |||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 stack.getTagCompound().setInteger(NetworkNodeGrid.NBT_TAB_SELECTED, message.tabSelected); |                 stack.getTagCompound().setInteger(NetworkNodeGrid.NBT_TAB_SELECTED, message.tabSelected); | ||||||
|             } else if (grid instanceof TilePortableGrid) { |  | ||||||
|                 if (NetworkNodeGrid.isValidSortingDirection(message.sortingDirection)) { |  | ||||||
|                     ((TilePortableGrid) grid).setSortingDirection(message.sortingDirection); |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|                 if (NetworkNodeGrid.isValidSortingType(message.sortingType)) { |  | ||||||
|                     ((TilePortableGrid) grid).setSortingType(message.sortingType); |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|                 if (NetworkNodeGrid.isValidSearchBoxMode(message.searchBoxMode)) { |  | ||||||
|                     ((TilePortableGrid) grid).setSearchBoxMode(message.searchBoxMode); |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|                 if (NetworkNodeGrid.isValidSize(message.size)) { |  | ||||||
|                     ((TilePortableGrid) grid).setSize(message.size); |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|                 ((TilePortableGrid) grid).setTabSelected(message.tabSelected); |  | ||||||
|  |  | ||||||
|                 ((TilePortableGrid) grid).markDirty(); |  | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -134,9 +134,9 @@ public class TileGrid extends TileNode<NetworkNodeGrid> { | |||||||
|         dataManager.addWatchedParameter(SORTING_DIRECTION); |         dataManager.addWatchedParameter(SORTING_DIRECTION); | ||||||
|         dataManager.addWatchedParameter(SORTING_TYPE); |         dataManager.addWatchedParameter(SORTING_TYPE); | ||||||
|         dataManager.addWatchedParameter(SEARCH_BOX_MODE); |         dataManager.addWatchedParameter(SEARCH_BOX_MODE); | ||||||
|  |         dataManager.addWatchedParameter(SIZE); | ||||||
|         dataManager.addWatchedParameter(TAB_SELECTED); |         dataManager.addWatchedParameter(TAB_SELECTED); | ||||||
|         dataManager.addWatchedParameter(OREDICT_PATTERN); |         dataManager.addWatchedParameter(OREDICT_PATTERN); | ||||||
|         dataManager.addWatchedParameter(SIZE); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|   | |||||||
| @@ -23,9 +23,10 @@ import com.raoulvdberge.refinedstorage.item.ItemBlockPortableGrid; | |||||||
| import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid; | import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid; | ||||||
| import com.raoulvdberge.refinedstorage.item.filter.Filter; | import com.raoulvdberge.refinedstorage.item.filter.Filter; | ||||||
| import com.raoulvdberge.refinedstorage.item.filter.FilterTab; | import com.raoulvdberge.refinedstorage.item.filter.FilterTab; | ||||||
| import com.raoulvdberge.refinedstorage.network.MessageGridSettingsUpdate; |  | ||||||
| import com.raoulvdberge.refinedstorage.tile.TileBase; | 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.ITileDataProducer; | ||||||
|  | import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; | ||||||
| import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; | import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; | ||||||
| import com.raoulvdberge.refinedstorage.tile.grid.IGrid; | import com.raoulvdberge.refinedstorage.tile.grid.IGrid; | ||||||
| import net.minecraft.client.Minecraft; | import net.minecraft.client.Minecraft; | ||||||
| @@ -54,9 +55,95 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid { | |||||||
|         } |         } | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|  |     public static final TileDataParameter<Integer> SORTING_DIRECTION = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TilePortableGrid>() { | ||||||
|  |         @Override | ||||||
|  |         public Integer getValue(TilePortableGrid tile) { | ||||||
|  |             return tile.getSortingDirection(); | ||||||
|  |         } | ||||||
|  |     }, new ITileDataConsumer<Integer, TilePortableGrid>() { | ||||||
|  |         @Override | ||||||
|  |         public void setValue(TilePortableGrid tile, Integer value) { | ||||||
|  |             if (NetworkNodeGrid.isValidSortingDirection(value)) { | ||||||
|  |                 tile.setSortingDirection(value); | ||||||
|  |                 tile.markDirty(); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }, parameter -> GuiGrid.markForSorting()); | ||||||
|  |  | ||||||
|  |     public static final TileDataParameter<Integer> SORTING_TYPE = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TilePortableGrid>() { | ||||||
|  |         @Override | ||||||
|  |         public Integer getValue(TilePortableGrid tile) { | ||||||
|  |             return tile.getSortingType(); | ||||||
|  |         } | ||||||
|  |     }, new ITileDataConsumer<Integer, TilePortableGrid>() { | ||||||
|  |         @Override | ||||||
|  |         public void setValue(TilePortableGrid tile, Integer value) { | ||||||
|  |             if (NetworkNodeGrid.isValidSortingType(value)) { | ||||||
|  |                 tile.setSortingType(value); | ||||||
|  |                 tile.markDirty(); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }, parameter -> GuiGrid.markForSorting()); | ||||||
|  |  | ||||||
|  |     public static final TileDataParameter<Integer> SEARCH_BOX_MODE = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TilePortableGrid>() { | ||||||
|  |         @Override | ||||||
|  |         public Integer getValue(TilePortableGrid tile) { | ||||||
|  |             return tile.getSearchBoxMode(); | ||||||
|  |         } | ||||||
|  |     }, new ITileDataConsumer<Integer, TilePortableGrid>() { | ||||||
|  |         @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<Integer> SIZE = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TilePortableGrid>() { | ||||||
|  |         @Override | ||||||
|  |         public Integer getValue(TilePortableGrid tile) { | ||||||
|  |             return tile.getSize(); | ||||||
|  |         } | ||||||
|  |     }, new ITileDataConsumer<Integer, TilePortableGrid>() { | ||||||
|  |         @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<Integer> TAB_SELECTED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TilePortableGrid>() { | ||||||
|  |         @Override | ||||||
|  |         public Integer getValue(TilePortableGrid tile) { | ||||||
|  |             return tile.getTabSelected(); | ||||||
|  |         } | ||||||
|  |     }, new ITileDataConsumer<Integer, TilePortableGrid>() { | ||||||
|  |         @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 static final String NBT_ENERGY = "Energy"; | ||||||
|  |  | ||||||
|     private EnergyForge energyStorage = new EnergyForge(3200); |     private EnergyForge energyStorage = new EnergyForge(3200); | ||||||
|  |     private PortableGridType type; | ||||||
|  |  | ||||||
|     private int sortingType; |     private int sortingType; | ||||||
|     private int sortingDirection; |     private int sortingDirection; | ||||||
| @@ -64,8 +151,6 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid { | |||||||
|     private int tabSelected; |     private int tabSelected; | ||||||
|     private int size; |     private int size; | ||||||
|  |  | ||||||
|     private PortableGridType type; |  | ||||||
|  |  | ||||||
|     private List<Filter> filters = new ArrayList<>(); |     private List<Filter> filters = new ArrayList<>(); | ||||||
|     private List<FilterTab> tabs = new ArrayList<>(); |     private List<FilterTab> tabs = new ArrayList<>(); | ||||||
|     private ItemHandlerFilter filter = new ItemHandlerFilter(filters, tabs, new ItemHandlerListenerTile(this)); |     private ItemHandlerFilter filter = new ItemHandlerFilter(filters, tabs, new ItemHandlerListenerTile(this)); | ||||||
| @@ -107,6 +192,11 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid { | |||||||
|  |  | ||||||
|     public TilePortableGrid() { |     public TilePortableGrid() { | ||||||
|         dataManager.addWatchedParameter(ENERGY_STORED); |         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() { |     public PortableGridType getPortableType() { | ||||||
| @@ -190,22 +280,27 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid { | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public int getSortingType() { |     public int getSortingType() { | ||||||
|         return sortingType; |         return getWorld().isRemote ? SORTING_TYPE.getValue() : sortingType; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public int getSortingDirection() { |     public int getSortingDirection() { | ||||||
|         return sortingDirection; |         return getWorld().isRemote ? SORTING_DIRECTION.getValue() : sortingDirection; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public int getSearchBoxMode() { |     public int getSearchBoxMode() { | ||||||
|         return searchBoxMode; |         return getWorld().isRemote ? SEARCH_BOX_MODE.getValue() : searchBoxMode; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public int getTabSelected() { |     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) { |     public void setSortingType(int sortingType) { | ||||||
| @@ -228,11 +323,6 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid { | |||||||
|         this.size = size; |         this.size = size; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public int getSize() { |  | ||||||
|         return size; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void onViewTypeChanged(int type) { |     public void onViewTypeChanged(int type) { | ||||||
|         // NO OP |         // NO OP | ||||||
| @@ -240,47 +330,27 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid { | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void onSortingTypeChanged(int type) { |     public void onSortingTypeChanged(int type) { | ||||||
|         RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), type, getSearchBoxMode(), getSize(), getTabSelected())); |         TileDataManager.setParameter(SORTING_TYPE, type); | ||||||
|  |  | ||||||
|         this.sortingType = type; |  | ||||||
|  |  | ||||||
|         GuiGrid.markForSorting(); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void onSortingDirectionChanged(int direction) { |     public void onSortingDirectionChanged(int direction) { | ||||||
|         RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), direction, getSortingType(), getSearchBoxMode(), getSize(), getTabSelected())); |         TileDataManager.setParameter(SORTING_DIRECTION, direction); | ||||||
|  |  | ||||||
|         this.sortingDirection = direction; |  | ||||||
|  |  | ||||||
|         GuiGrid.markForSorting(); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void onSearchBoxModeChanged(int searchBoxMode) { |     public void onSearchBoxModeChanged(int searchBoxMode) { | ||||||
|         RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode, getSize(), getTabSelected())); |         TileDataManager.setParameter(SEARCH_BOX_MODE, searchBoxMode); | ||||||
|  |  | ||||||
|         this.searchBoxMode = searchBoxMode; |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void onSizeChanged(int size) { |     public void onSizeChanged(int size) { | ||||||
|         RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), size, getTabSelected())); |         TileDataManager.setParameter(SIZE, size); | ||||||
|  |  | ||||||
|         this.size = size; |  | ||||||
|  |  | ||||||
|         if (Minecraft.getMinecraft().currentScreen != null) { |  | ||||||
|             Minecraft.getMinecraft().currentScreen.initGui(); |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void onTabSelectionChanged(int tab) { |     public void onTabSelectionChanged(int tab) { | ||||||
|         this.tabSelected = tab == tabSelected ? -1 : tab; |         TileDataManager.setParameter(TAB_SELECTED, tab); | ||||||
|  |  | ||||||
|         RS.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), getSearchBoxMode(), getSize(), tabSelected)); |  | ||||||
|  |  | ||||||
|         GuiGrid.markForSorting(); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 raoulvdberge
					raoulvdberge