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
public void addInformation(ItemStack stack, EntityPlayer playerIn, List<String> tooltip, boolean advanced) {
super.addInformation(stack, playerIn, tooltip, advanced);
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) {
super.addInformation(stack, player, tooltip, advanced);
if (stack.getItemDamage() != TYPE_CREATIVE) {
IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null);

View File

@@ -80,8 +80,8 @@ public abstract class ItemEnergyItem extends ItemBase {
}
@Override
public void addInformation(ItemStack stack, EntityPlayer playerIn, List<String> tooltip, boolean advanced) {
super.addInformation(stack, playerIn, tooltip, advanced);
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) {
super.addInformation(stack, player, tooltip, advanced);
if (stack.getItemDamage() != TYPE_CREATIVE) {
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.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<Mess
}
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_TYPE);
dataManager.addWatchedParameter(SEARCH_BOX_MODE);
dataManager.addWatchedParameter(SIZE);
dataManager.addWatchedParameter(TAB_SELECTED);
dataManager.addWatchedParameter(OREDICT_PATTERN);
dataManager.addWatchedParameter(SIZE);
}
@Override

View File

@@ -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<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 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<Filter> filters = new ArrayList<>();
private List<FilterTab> 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