Make settings in the inworld portable grid correctly sync

This commit is contained in:
raoulvdberge
2017-05-12 00:16:54 +02:00
parent d4f8708806
commit 39749eef68
5 changed files with 112 additions and 63 deletions

View File

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

View File

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

View File

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

View File

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

View File

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