More robust system of getting the Wireless Grid stack

This commit is contained in:
Raoul Van den Berge
2016-08-02 23:55:12 +02:00
parent 5f296f5390
commit 89526df158
3 changed files with 42 additions and 42 deletions

View File

@@ -57,6 +57,18 @@ public class GuiHandler implements IGuiHandler {
} }
} }
private WirelessGrid getWirelessGrid(EntityPlayer player, int hand) {
return new WirelessGrid(player.worldObj, player.getHeldItem(EnumHand.values()[hand]));
}
private ContainerGrid getWirelessGridContainer(EntityPlayer player, int hand) {
return new ContainerGrid(player, getWirelessGrid(player, hand));
}
private ContainerGridFilter getGridFilterContainer(EntityPlayer player, int hand) {
return new ContainerGridFilter(player, player.getHeldItem(EnumHand.values()[hand]));
}
@Override @Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
if (ID == RefinedStorageGui.WIRELESS_GRID) { if (ID == RefinedStorageGui.WIRELESS_GRID) {
@@ -116,20 +128,6 @@ public class GuiHandler implements IGuiHandler {
} }
} }
private ContainerGridFilter getGridFilterContainer(EntityPlayer player, int hand) {
return new ContainerGridFilter(player, player.getHeldItem(EnumHand.values()[hand]));
}
private WirelessGrid getWirelessGrid(EntityPlayer player, int hand) {
return new WirelessGrid(player.worldObj, player.getHeldItem(EnumHand.values()[hand]), EnumHand.values()[hand]);
}
private ContainerGrid getWirelessGridContainer(EntityPlayer player, int hand) {
WirelessGrid wirelessGrid = getWirelessGrid(player, hand);
return new ContainerGrid(player, wirelessGrid);
}
private GuiGrid getWirelessGridGui(EntityPlayer player, int hand) { private GuiGrid getWirelessGridGui(EntityPlayer player, int hand) {
WirelessGrid wirelessGrid = getWirelessGrid(player, hand); WirelessGrid wirelessGrid = getWirelessGrid(player, hand);

View File

@@ -3,13 +3,13 @@ package refinedstorage.network;
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;
import net.minecraft.util.EnumHand;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import refinedstorage.RefinedStorageItems; import refinedstorage.container.ContainerGrid;
import refinedstorage.tile.grid.IGrid;
import refinedstorage.tile.grid.TileGrid; import refinedstorage.tile.grid.TileGrid;
import refinedstorage.tile.grid.WirelessGrid;
public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToServer<MessageWirelessGridSettingsUpdate> implements IMessage { public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToServer<MessageWirelessGridSettingsUpdate> implements IMessage {
private int hand;
private int viewType; private int viewType;
private int sortingDirection; private int sortingDirection;
private int sortingType; private int sortingType;
@@ -18,8 +18,7 @@ public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToSer
public MessageWirelessGridSettingsUpdate() { public MessageWirelessGridSettingsUpdate() {
} }
public MessageWirelessGridSettingsUpdate(int hand, int viewType, int sortingDirection, int sortingType, int searchBoxMode) { public MessageWirelessGridSettingsUpdate(int viewType, int sortingDirection, int sortingType, int searchBoxMode) {
this.hand = hand;
this.viewType = viewType; this.viewType = viewType;
this.sortingDirection = sortingDirection; this.sortingDirection = sortingDirection;
this.sortingType = sortingType; this.sortingType = sortingType;
@@ -28,7 +27,6 @@ public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToSer
@Override @Override
public void fromBytes(ByteBuf buf) { public void fromBytes(ByteBuf buf) {
hand = buf.readInt();
viewType = buf.readInt(); viewType = buf.readInt();
sortingDirection = buf.readInt(); sortingDirection = buf.readInt();
sortingType = buf.readInt(); sortingType = buf.readInt();
@@ -37,7 +35,6 @@ public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToSer
@Override @Override
public void toBytes(ByteBuf buf) { public void toBytes(ByteBuf buf) {
buf.writeInt(hand);
buf.writeInt(viewType); buf.writeInt(viewType);
buf.writeInt(sortingDirection); buf.writeInt(sortingDirection);
buf.writeInt(sortingType); buf.writeInt(sortingType);
@@ -46,23 +43,27 @@ public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToSer
@Override @Override
public void handle(MessageWirelessGridSettingsUpdate message, EntityPlayerMP player) { public void handle(MessageWirelessGridSettingsUpdate message, EntityPlayerMP player) {
ItemStack held = player.getHeldItem((message.hand < 0 || message.hand > EnumHand.values().length - 1) ? EnumHand.MAIN_HAND : EnumHand.values()[message.hand]); if (player.openContainer instanceof ContainerGrid) {
IGrid grid = ((ContainerGrid) player.openContainer).getGrid();
if (held != null && held.getItem() == RefinedStorageItems.WIRELESS_GRID && held.getTagCompound() != null) { if (grid instanceof WirelessGrid) {
if (TileGrid.isValidViewType(message.viewType)) { ItemStack stack = ((WirelessGrid) grid).getStack();
held.getTagCompound().setInteger(TileGrid.NBT_VIEW_TYPE, message.viewType);
}
if (TileGrid.isValidSortingDirection(message.sortingDirection)) { if (TileGrid.isValidViewType(message.viewType)) {
held.getTagCompound().setInteger(TileGrid.NBT_SORTING_DIRECTION, message.sortingDirection); stack.getTagCompound().setInteger(TileGrid.NBT_VIEW_TYPE, message.viewType);
} }
if (TileGrid.isValidSortingType(message.sortingType)) { if (TileGrid.isValidSortingDirection(message.sortingDirection)) {
held.getTagCompound().setInteger(TileGrid.NBT_SORTING_TYPE, message.sortingType); stack.getTagCompound().setInteger(TileGrid.NBT_SORTING_DIRECTION, message.sortingDirection);
} }
if (TileGrid.isValidSearchBoxMode(message.searchBoxMode)) { if (TileGrid.isValidSortingType(message.sortingType)) {
held.getTagCompound().setInteger(TileGrid.NBT_SEARCH_BOX_MODE, message.searchBoxMode); stack.getTagCompound().setInteger(TileGrid.NBT_SORTING_TYPE, message.sortingType);
}
if (TileGrid.isValidSearchBoxMode(message.searchBoxMode)) {
stack.getTagCompound().setInteger(TileGrid.NBT_SEARCH_BOX_MODE, message.searchBoxMode);
}
} }
} }
} }

View File

@@ -4,7 +4,6 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorage;
@@ -24,7 +23,6 @@ import java.util.List;
public class WirelessGrid implements IGrid { public class WirelessGrid implements IGrid {
private World world; private World world;
private EnumHand hand;
private ItemStack stack; private ItemStack stack;
private BlockPos controller; private BlockPos controller;
@@ -50,11 +48,10 @@ public class WirelessGrid implements IGrid {
} }
}; };
public WirelessGrid(World world, ItemStack stack, EnumHand hand) { public WirelessGrid(World world, ItemStack stack) {
this.world = world; this.world = world;
this.stack = stack; this.stack = stack;
this.hand = hand;
this.controller = new BlockPos(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack)); this.controller = new BlockPos(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack));
@@ -70,6 +67,10 @@ public class WirelessGrid implements IGrid {
} }
} }
public ItemStack getStack() {
return stack;
}
@Override @Override
public EnumGridType getType() { public EnumGridType getType() {
return EnumGridType.NORMAL; return EnumGridType.NORMAL;
@@ -109,28 +110,28 @@ public class WirelessGrid implements IGrid {
@Override @Override
public void onViewTypeChanged(int type) { public void onViewTypeChanged(int type) {
RefinedStorage.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(hand.ordinal(), type, getSortingDirection(), getSortingType(), getSearchBoxMode())); RefinedStorage.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(type, getSortingDirection(), getSortingType(), getSearchBoxMode()));
this.viewType = type; this.viewType = type;
} }
@Override @Override
public void onSortingTypeChanged(int type) { public void onSortingTypeChanged(int type) {
RefinedStorage.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(hand.ordinal(), getViewType(), getSortingDirection(), type, getSearchBoxMode())); RefinedStorage.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), getSortingDirection(), type, getSearchBoxMode()));
this.sortingType = type; this.sortingType = type;
} }
@Override @Override
public void onSortingDirectionChanged(int direction) { public void onSortingDirectionChanged(int direction) {
RefinedStorage.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(hand.ordinal(), getViewType(), direction, getSortingType(), getSearchBoxMode())); RefinedStorage.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), direction, getSortingType(), getSearchBoxMode()));
this.sortingDirection = direction; this.sortingDirection = direction;
} }
@Override @Override
public void onSearchBoxModeChanged(int searchBoxMode) { public void onSearchBoxModeChanged(int searchBoxMode) {
RefinedStorage.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(hand.ordinal(), getViewType(), getSortingDirection(), getSortingType(), searchBoxMode)); RefinedStorage.INSTANCE.network.sendToServer(new MessageWirelessGridSettingsUpdate(getViewType(), getSortingDirection(), getSortingType(), searchBoxMode));
this.searchBoxMode = searchBoxMode; this.searchBoxMode = searchBoxMode;
} }