diff --git a/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java b/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java index 5c8f7cc5e..3123c60f1 100755 --- a/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java +++ b/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java @@ -13,6 +13,7 @@ import refinedstorage.tile.TileCraftingMonitor; import java.io.IOException; import java.util.Arrays; +// @TODO: Make it work public class GuiCraftingMonitor extends GuiBase { private static final int VISIBLE_ROWS = 3; diff --git a/src/main/java/refinedstorage/gui/GuiDetector.java b/src/main/java/refinedstorage/gui/GuiDetector.java index 053d7786a..4d6cc757e 100755 --- a/src/main/java/refinedstorage/gui/GuiDetector.java +++ b/src/main/java/refinedstorage/gui/GuiDetector.java @@ -2,13 +2,12 @@ package refinedstorage.gui; import com.google.common.primitives.Ints; import net.minecraft.client.gui.GuiTextField; -import refinedstorage.RefinedStorage; import refinedstorage.api.storage.CompareUtils; import refinedstorage.container.ContainerDetector; import refinedstorage.gui.sidebutton.SideButtonCompare; import refinedstorage.gui.sidebutton.SideButtonDetectorMode; -import refinedstorage.network.MessageDetectorAmountUpdate; import refinedstorage.tile.TileDetector; +import refinedstorage.tile.data.TileDataManager; import java.io.IOException; @@ -31,7 +30,8 @@ public class GuiDetector extends GuiBase { addSideButton(new SideButtonDetectorMode(detector)); amountField = new GuiTextField(0, fontRendererObj, x + 62 + 1, y + 23 + 1, 25, fontRendererObj.FONT_HEIGHT); - amountField.setText(String.valueOf(detector.getAmount())); + // @TODO: Change when the packet is received instead + amountField.setText(String.valueOf(TileDetector.AMOUNT.getValue())); amountField.setEnableBackgroundDrawing(false); amountField.setVisible(true); amountField.setTextColor(16777215); @@ -64,7 +64,7 @@ public class GuiDetector extends GuiBase { Integer result = Ints.tryParse(amountField.getText()); if (result != null) { - RefinedStorage.INSTANCE.network.sendToServer(new MessageDetectorAmountUpdate(detector, result)); + TileDataManager.setParameter(TileDetector.AMOUNT, result); } } else { super.keyTyped(character, keyCode); diff --git a/src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java b/src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java index 5713fca94..0c4018ba2 100755 --- a/src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java +++ b/src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java @@ -37,9 +37,9 @@ public class GuiNetworkTransmitter extends GuiBase { if (networkTransmitter.getNetworkCard().getStackInSlot(0) == null) { distance = t("gui.refinedstorage:network_transmitter.missing_card"); - } else if (!networkTransmitter.isDimensionSupported()) { + } else if (!TileNetworkTransmitter.RECEIVER_DIMENSION_SUPPORTED.getValue()) { distance = t("gui.refinedstorage:network_transmitter.missing_upgrade"); - } else if (!networkTransmitter.isSameDimension()) { + } else if (!networkTransmitter.isSameDimension()) { // @TODO: Wtf? distance = t("gui.refinedstorage:network_transmitter.dimension", networkTransmitter.getReceiverDimension()); } else { distance = t("gui.refinedstorage:network_transmitter.distance", networkTransmitter.getDistance()); diff --git a/src/main/java/refinedstorage/gui/GuiSolderer.java b/src/main/java/refinedstorage/gui/GuiSolderer.java index 8b63e7477..76c991ab8 100755 --- a/src/main/java/refinedstorage/gui/GuiSolderer.java +++ b/src/main/java/refinedstorage/gui/GuiSolderer.java @@ -29,7 +29,7 @@ public class GuiSolderer extends GuiBase { drawTexture(x, y, 0, 0, width, height); if (solderer.isWorking()) { - drawTexture(x + 83, y + 38 - 1, 212, 0, solderer.getProgressScaled(22), 15); + drawTexture(x + 83, y + 38 - 1, 212, 0, getProgressScaled(22), 15); } } @@ -39,7 +39,18 @@ public class GuiSolderer extends GuiBase { drawString(7, 77, t("container.inventory")); if (inBounds(83, 38, 22, 15, mouseX, mouseY) && solderer.isWorking()) { - drawTooltip(mouseX, mouseY, t("gui.refinedstorage:solderer.progress", solderer.getProgressScaled(100))); + drawTooltip(mouseX, mouseY, t("gui.refinedstorage:solderer.progress", getProgressScaled(100))); } } + + private int getProgressScaled(int scale) { + float progress = TileSolderer.PROGRESS.getValue(); + float duration = TileSolderer.DURATION.getValue(); + + if (progress > duration) { + return scale; + } + + return (int) (progress / duration * (float) scale); + } } diff --git a/src/main/java/refinedstorage/gui/GuiStorage.java b/src/main/java/refinedstorage/gui/GuiStorage.java index 963576e3d..43c7c56fc 100755 --- a/src/main/java/refinedstorage/gui/GuiStorage.java +++ b/src/main/java/refinedstorage/gui/GuiStorage.java @@ -49,6 +49,7 @@ public class GuiStorage extends GuiBase { } priorityField = new GuiTextField(0, fontRendererObj, x + 98 + 1, y + 54 + 1, 25, fontRendererObj.FONT_HEIGHT); + // @TODO: Only change this when packet is received priorityField.setText(String.valueOf(gui.getPriority())); priorityField.setEnableBackgroundDrawing(false); priorityField.setVisible(true); diff --git a/src/main/java/refinedstorage/gui/GuiWirelessTransmitter.java b/src/main/java/refinedstorage/gui/GuiWirelessTransmitter.java index b64fcca8c..b388b9d96 100755 --- a/src/main/java/refinedstorage/gui/GuiWirelessTransmitter.java +++ b/src/main/java/refinedstorage/gui/GuiWirelessTransmitter.java @@ -32,7 +32,7 @@ public class GuiWirelessTransmitter extends GuiBase { @Override public void drawForeground(int mouseX, int mouseY) { drawString(7, 7, t("gui.refinedstorage:wireless_transmitter")); - drawString(28, 25, t("gui.refinedstorage:wireless_transmitter.distance", wirelessTransmitter.getRange())); + drawString(28, 25, t("gui.refinedstorage:wireless_transmitter.distance", TileWirelessTransmitter.RANGE.getValue())); drawString(7, 43, t("container.inventory")); } } diff --git a/src/main/java/refinedstorage/gui/grid/GuiGrid.java b/src/main/java/refinedstorage/gui/grid/GuiGrid.java index 39b18c4aa..55d8f81ad 100755 --- a/src/main/java/refinedstorage/gui/grid/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/grid/GuiGrid.java @@ -70,6 +70,7 @@ public class GuiGrid extends GuiBase { searchField.setVisible(true); searchField.setTextColor(16777215); + // @TODO: Only do this after packet updateSearchBoxFocus(grid.getSearchBoxMode()); } else { searchField.xPosition = sx; diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonCompare.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonCompare.java index 20eb21d19..752672626 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonCompare.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonCompare.java @@ -1,10 +1,8 @@ package refinedstorage.gui.sidebutton; import net.minecraft.util.text.TextFormatting; -import refinedstorage.RefinedStorage; import refinedstorage.api.storage.CompareUtils; import refinedstorage.gui.GuiBase; -import refinedstorage.network.MessageCompareUpdate; import refinedstorage.tile.config.ICompareConfig; public class SideButtonCompare extends SideButton { @@ -48,6 +46,6 @@ public class SideButtonCompare extends SideButton { @Override public void actionPerformed() { - RefinedStorage.INSTANCE.network.sendToServer(new MessageCompareUpdate(config, config.getCompare() ^ mask)); + config.setCompare(config.getCompare() ^ mask); } } diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonDetectorMode.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonDetectorMode.java index 2382b3fbf..e82538d04 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonDetectorMode.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonDetectorMode.java @@ -3,9 +3,7 @@ package refinedstorage.gui.sidebutton; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.util.text.TextFormatting; -import refinedstorage.RefinedStorage; import refinedstorage.gui.GuiBase; -import refinedstorage.network.MessageDetectorModeUpdate; import refinedstorage.tile.TileDetector; public class SideButtonDetectorMode extends SideButton { @@ -17,7 +15,7 @@ public class SideButtonDetectorMode extends SideButton { @Override public String getTooltip(GuiBase gui) { - return TextFormatting.GREEN + gui.t("sidebutton.refinedstorage:detector.mode") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:detector.mode." + detector.getMode()); + return TextFormatting.GREEN + gui.t("sidebutton.refinedstorage:detector.mode") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:detector.mode." + TileDetector.MODE.getValue()); } @Override @@ -27,6 +25,16 @@ public class SideButtonDetectorMode extends SideButton { @Override public void actionPerformed() { - RefinedStorage.INSTANCE.network.sendToServer(new MessageDetectorModeUpdate(detector)); + int mode = TileDetector.MODE.getValue(); + + if (mode == TileDetector.MODE_EQUAL) { + mode = TileDetector.MODE_ABOVE; + } else if (mode == TileDetector.MODE_ABOVE) { + mode = TileDetector.MODE_UNDER; + } else if (mode == TileDetector.MODE_UNDER) { + mode = TileDetector.MODE_EQUAL; + } + + TileDetector.MODE.setValue(mode); } } diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonMode.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonMode.java index 97c854571..6c11cf840 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonMode.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonMode.java @@ -1,11 +1,8 @@ package refinedstorage.gui.sidebutton; import net.minecraft.util.text.TextFormatting; -import refinedstorage.RefinedStorage; import refinedstorage.gui.GuiBase; -import refinedstorage.network.MessageModeToggle; import refinedstorage.tile.config.IModeConfig; -import refinedstorage.tile.config.ModeConstants; public class SideButtonMode extends SideButton { private IModeConfig config; @@ -16,7 +13,7 @@ public class SideButtonMode extends SideButton { @Override public String getTooltip(GuiBase gui) { - return TextFormatting.GREEN + gui.t("sidebutton.refinedstorage:mode") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:mode." + (config.getMode() == ModeConstants.WHITELIST ? "whitelist" : "blacklist")); + return TextFormatting.GREEN + gui.t("sidebutton.refinedstorage:mode") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:mode." + (config.getMode() == IModeConfig.WHITELIST ? "whitelist" : "blacklist")); } @Override @@ -25,9 +22,9 @@ public class SideButtonMode extends SideButton { int tx = 0; - if (config.getMode() == ModeConstants.WHITELIST) { + if (config.getMode() == IModeConfig.WHITELIST) { tx = 0; - } else if (config.getMode() == ModeConstants.BLACKLIST) { + } else if (config.getMode() == IModeConfig.BLACKLIST) { tx = 16; } @@ -36,6 +33,6 @@ public class SideButtonMode extends SideButton { @Override public void actionPerformed() { - RefinedStorage.INSTANCE.network.sendToServer(new MessageModeToggle(config)); + config.setMode(config.getMode() == IModeConfig.WHITELIST ? IModeConfig.BLACKLIST : IModeConfig.WHITELIST); } } diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonRedstoneMode.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonRedstoneMode.java index 8b1b5b5c4..5f04fb8d9 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonRedstoneMode.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonRedstoneMode.java @@ -1,9 +1,7 @@ package refinedstorage.gui.sidebutton; import net.minecraft.util.text.TextFormatting; -import refinedstorage.RefinedStorage; import refinedstorage.gui.GuiBase; -import refinedstorage.network.MessageRedstoneModeUpdate; import refinedstorage.tile.config.IRedstoneModeConfig; public class SideButtonRedstoneMode extends SideButton { @@ -26,6 +24,6 @@ public class SideButtonRedstoneMode extends SideButton { @Override public void actionPerformed() { - RefinedStorage.INSTANCE.network.sendToServer(new MessageRedstoneModeUpdate(config)); + config.setRedstoneMode(config.getRedstoneMode().next()); } } diff --git a/src/main/java/refinedstorage/network/MessageCompareUpdate.java b/src/main/java/refinedstorage/network/MessageCompareUpdate.java deleted file mode 100755 index e3f09e3a7..000000000 --- a/src/main/java/refinedstorage/network/MessageCompareUpdate.java +++ /dev/null @@ -1,50 +0,0 @@ -package refinedstorage.network; - -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import refinedstorage.tile.config.ICompareConfig; - -public class MessageCompareUpdate extends MessageHandlerPlayerToServer implements IMessage { - private int x; - private int y; - private int z; - private int compare; - - public MessageCompareUpdate() { - } - - public MessageCompareUpdate(ICompareConfig setting, int compare) { - this.x = ((TileEntity) setting).getPos().getX(); - this.y = ((TileEntity) setting).getPos().getY(); - this.z = ((TileEntity) setting).getPos().getZ(); - this.compare = compare; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - compare = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(compare); - } - - @Override - public void handle(MessageCompareUpdate message, EntityPlayerMP player) { - TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); - - if (tile instanceof ICompareConfig) { - ((ICompareConfig) tile).setCompare(message.compare); - } - } -} diff --git a/src/main/java/refinedstorage/network/MessageDetectorAmountUpdate.java b/src/main/java/refinedstorage/network/MessageDetectorAmountUpdate.java deleted file mode 100755 index 621237916..000000000 --- a/src/main/java/refinedstorage/network/MessageDetectorAmountUpdate.java +++ /dev/null @@ -1,50 +0,0 @@ -package refinedstorage.network; - -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import refinedstorage.tile.TileDetector; - -public class MessageDetectorAmountUpdate extends MessageHandlerPlayerToServer implements IMessage { - private int x; - private int y; - private int z; - private int amount; - - public MessageDetectorAmountUpdate() { - } - - public MessageDetectorAmountUpdate(TileDetector detector, int amount) { - this.x = detector.getPos().getX(); - this.y = detector.getPos().getY(); - this.z = detector.getPos().getZ(); - this.amount = amount; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - amount = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(amount); - } - - @Override - public void handle(MessageDetectorAmountUpdate message, EntityPlayerMP player) { - TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); - - if (tile instanceof TileDetector && message.amount >= 0) { - ((TileDetector) tile).setAmount(message.amount); - } - } -} diff --git a/src/main/java/refinedstorage/network/MessageDetectorModeUpdate.java b/src/main/java/refinedstorage/network/MessageDetectorModeUpdate.java deleted file mode 100755 index 4b2905426..000000000 --- a/src/main/java/refinedstorage/network/MessageDetectorModeUpdate.java +++ /dev/null @@ -1,58 +0,0 @@ -package refinedstorage.network; - -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import refinedstorage.tile.TileDetector; - -public class MessageDetectorModeUpdate extends MessageHandlerPlayerToServer implements IMessage { - private int x; - private int y; - private int z; - - public MessageDetectorModeUpdate() { - } - - public MessageDetectorModeUpdate(TileDetector detector) { - this.x = detector.getPos().getX(); - this.y = detector.getPos().getY(); - this.z = detector.getPos().getZ(); - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - } - - @Override - public void handle(MessageDetectorModeUpdate message, EntityPlayerMP player) { - TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); - - if (tile instanceof TileDetector) { - TileDetector detector = (TileDetector) tile; - - switch (detector.getMode()) { - case TileDetector.MODE_UNDER: - detector.setMode(TileDetector.MODE_EQUAL); - break; - case TileDetector.MODE_EQUAL: - detector.setMode(TileDetector.MODE_ABOVE); - break; - case TileDetector.MODE_ABOVE: - detector.setMode(TileDetector.MODE_UNDER); - break; - } - } - } -} diff --git a/src/main/java/refinedstorage/network/MessageGridSettingsUpdate.java b/src/main/java/refinedstorage/network/MessageGridSettingsUpdate.java deleted file mode 100755 index 09c2ac8bc..000000000 --- a/src/main/java/refinedstorage/network/MessageGridSettingsUpdate.java +++ /dev/null @@ -1,76 +0,0 @@ -package refinedstorage.network; - -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import refinedstorage.tile.grid.TileGrid; - -public class MessageGridSettingsUpdate extends MessageHandlerPlayerToServer implements IMessage { - private int x; - private int y; - private int z; - private int viewType; - private int sortingDirection; - private int sortingType; - private int searchBoxMode; - - public MessageGridSettingsUpdate() { - } - - public MessageGridSettingsUpdate(TileGrid grid, int viewType, int sortingDirection, int sortingType, int searchBoxMode) { - this.x = grid.getPos().getX(); - this.y = grid.getPos().getY(); - this.z = grid.getPos().getZ(); - this.viewType = viewType; - this.sortingDirection = sortingDirection; - this.sortingType = sortingType; - this.searchBoxMode = searchBoxMode; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - viewType = buf.readInt(); - sortingDirection = buf.readInt(); - sortingType = buf.readInt(); - searchBoxMode = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(viewType); - buf.writeInt(sortingDirection); - buf.writeInt(sortingType); - buf.writeInt(searchBoxMode); - } - - @Override - public void handle(MessageGridSettingsUpdate message, EntityPlayerMP player) { - TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); - - if (tile instanceof TileGrid) { - if (TileGrid.isValidViewType(message.viewType)) { - ((TileGrid) tile).setViewType(message.viewType); - } - - if (TileGrid.isValidSortingDirection(message.sortingDirection)) { - ((TileGrid) tile).setSortingDirection(message.sortingDirection); - } - - if (TileGrid.isValidSortingType(message.sortingType)) { - ((TileGrid) tile).setSortingType(message.sortingType); - } - - if (TileGrid.isValidSearchBoxMode(message.searchBoxMode)) { - ((TileGrid) tile).setSearchBoxMode(message.searchBoxMode); - } - } - } -} diff --git a/src/main/java/refinedstorage/network/MessageModeToggle.java b/src/main/java/refinedstorage/network/MessageModeToggle.java deleted file mode 100755 index 4632c3b5d..000000000 --- a/src/main/java/refinedstorage/network/MessageModeToggle.java +++ /dev/null @@ -1,53 +0,0 @@ -package refinedstorage.network; - -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import refinedstorage.tile.config.IModeConfig; -import refinedstorage.tile.config.ModeConstants; - -public class MessageModeToggle extends MessageHandlerPlayerToServer implements IMessage { - private int x; - private int y; - private int z; - - public MessageModeToggle() { - } - - public MessageModeToggle(IModeConfig mode) { - this.x = ((TileEntity) mode).getPos().getX(); - this.y = ((TileEntity) mode).getPos().getY(); - this.z = ((TileEntity) mode).getPos().getZ(); - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - } - - @Override - public void handle(MessageModeToggle message, EntityPlayerMP player) { - TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); - - if (tile instanceof IModeConfig) { - IModeConfig mode = (IModeConfig) tile; - - if (mode.getMode() == ModeConstants.WHITELIST) { - mode.setMode(ModeConstants.BLACKLIST); - } else { - mode.setMode(ModeConstants.WHITELIST); - } - } - } -} diff --git a/src/main/java/refinedstorage/network/MessagePriorityUpdate.java b/src/main/java/refinedstorage/network/MessagePriorityUpdate.java deleted file mode 100755 index 6d981a6b3..000000000 --- a/src/main/java/refinedstorage/network/MessagePriorityUpdate.java +++ /dev/null @@ -1,56 +0,0 @@ -package refinedstorage.network; - -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import refinedstorage.tile.TileDiskDrive; -import refinedstorage.tile.TileStorage; -import refinedstorage.tile.externalstorage.TileExternalStorage; - -public class MessagePriorityUpdate extends MessageHandlerPlayerToServer implements IMessage { - private int x; - private int y; - private int z; - private int priority; - - public MessagePriorityUpdate() { - } - - public MessagePriorityUpdate(BlockPos pos, int priority) { - this.x = pos.getX(); - this.y = pos.getY(); - this.z = pos.getZ(); - this.priority = priority; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - priority = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(priority); - } - - @Override - public void handle(MessagePriorityUpdate message, EntityPlayerMP player) { - TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); - - if (tile instanceof TileStorage) { - ((TileStorage) tile).setPriority(message.priority); - } else if (tile instanceof TileExternalStorage) { - ((TileExternalStorage) tile).setPriority(message.priority); - } else if (tile instanceof TileDiskDrive) { - ((TileDiskDrive) tile).setPriority(message.priority); - } - } -} diff --git a/src/main/java/refinedstorage/network/MessageRedstoneModeUpdate.java b/src/main/java/refinedstorage/network/MessageRedstoneModeUpdate.java deleted file mode 100755 index ba6752aad..000000000 --- a/src/main/java/refinedstorage/network/MessageRedstoneModeUpdate.java +++ /dev/null @@ -1,48 +0,0 @@ -package refinedstorage.network; - -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import refinedstorage.tile.config.IRedstoneModeConfig; - -public class MessageRedstoneModeUpdate extends MessageHandlerPlayerToServer implements IMessage { - private int x; - private int y; - private int z; - - public MessageRedstoneModeUpdate() { - } - - public MessageRedstoneModeUpdate(IRedstoneModeConfig setting) { - this.x = ((TileEntity) setting).getPos().getX(); - this.y = ((TileEntity) setting).getPos().getY(); - this.z = ((TileEntity) setting).getPos().getZ(); - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - } - - @Override - public void handle(MessageRedstoneModeUpdate message, EntityPlayerMP player) { - TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); - - if (tile instanceof IRedstoneModeConfig) { - IRedstoneModeConfig setting = (IRedstoneModeConfig) tile; - - setting.setRedstoneMode(setting.getRedstoneMode().next()); - } - } -} diff --git a/src/main/java/refinedstorage/network/MessageTileContainerUpdate.java b/src/main/java/refinedstorage/network/MessageTileContainerUpdate.java deleted file mode 100755 index 03880c1f5..000000000 --- a/src/main/java/refinedstorage/network/MessageTileContainerUpdate.java +++ /dev/null @@ -1,53 +0,0 @@ -package refinedstorage.network; - -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; -import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; -import refinedstorage.proxy.ClientProxy; -import refinedstorage.tile.ISynchronizedContainer; - -public class MessageTileContainerUpdate implements IMessage, IMessageHandler { - private TileEntity tile; - - public MessageTileContainerUpdate() { - } - - public MessageTileContainerUpdate(TileEntity tile) { - this.tile = tile; - } - - @Override - public void fromBytes(ByteBuf buf) { - int x = buf.readInt(); - int y = buf.readInt(); - int z = buf.readInt(); - - if (Minecraft.getMinecraft().theWorld != null) { - tile = ClientProxy.getWorld().getTileEntity(new BlockPos(x, y, z)); - - if (tile instanceof ISynchronizedContainer) { - ((ISynchronizedContainer) tile).readContainerData(buf); - } - } - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(tile.getPos().getX()); - buf.writeInt(tile.getPos().getY()); - buf.writeInt(tile.getPos().getZ()); - - if (tile instanceof ISynchronizedContainer) { - ((ISynchronizedContainer) tile).writeContainerData(buf); - } - } - - @Override - public IMessage onMessage(MessageTileContainerUpdate message, MessageContext ctx) { - return null; - } -} diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 04431edd6..695f832c8 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -42,17 +42,9 @@ public class CommonProxy { RefinedStorage.INSTANCE.network.registerMessage(MessageTileDataParameter.class, MessageTileDataParameter.class, id++, Side.CLIENT); RefinedStorage.INSTANCE.network.registerMessage(MessageTileDataParameterUpdate.class, MessageTileDataParameterUpdate.class, id++, Side.SERVER); - RefinedStorage.INSTANCE.network.registerMessage(MessageTileContainerUpdate.class, MessageTileContainerUpdate.class, id++, Side.CLIENT); - RefinedStorage.INSTANCE.network.registerMessage(MessageRedstoneModeUpdate.class, MessageRedstoneModeUpdate.class, id++, Side.SERVER); RefinedStorage.INSTANCE.network.registerMessage(MessageGridInsertHeld.class, MessageGridInsertHeld.class, id++, Side.SERVER); RefinedStorage.INSTANCE.network.registerMessage(MessageGridPull.class, MessageGridPull.class, id++, Side.SERVER); - RefinedStorage.INSTANCE.network.registerMessage(MessageCompareUpdate.class, MessageCompareUpdate.class, id++, Side.SERVER); - RefinedStorage.INSTANCE.network.registerMessage(MessageModeToggle.class, MessageModeToggle.class, id++, Side.SERVER); - RefinedStorage.INSTANCE.network.registerMessage(MessageDetectorModeUpdate.class, MessageDetectorModeUpdate.class, id++, Side.SERVER); - RefinedStorage.INSTANCE.network.registerMessage(MessageDetectorAmountUpdate.class, MessageDetectorAmountUpdate.class, id++, Side.SERVER); RefinedStorage.INSTANCE.network.registerMessage(MessageGridCraftingClear.class, MessageGridCraftingClear.class, id++, Side.SERVER); - RefinedStorage.INSTANCE.network.registerMessage(MessagePriorityUpdate.class, MessagePriorityUpdate.class, id++, Side.SERVER); - RefinedStorage.INSTANCE.network.registerMessage(MessageGridSettingsUpdate.class, MessageGridSettingsUpdate.class, id++, Side.SERVER); RefinedStorage.INSTANCE.network.registerMessage(MessageGridCraftingTransfer.class, MessageGridCraftingTransfer.class, id++, Side.SERVER); RefinedStorage.INSTANCE.network.registerMessage(MessageWirelessGridSettingsUpdate.class, MessageWirelessGridSettingsUpdate.class, id++, Side.SERVER); RefinedStorage.INSTANCE.network.registerMessage(MessageGridCraftingStart.class, MessageGridCraftingStart.class, id++, Side.SERVER); diff --git a/src/main/java/refinedstorage/tile/ISynchronizedContainer.java b/src/main/java/refinedstorage/tile/ISynchronizedContainer.java deleted file mode 100755 index c901ffc5e..000000000 --- a/src/main/java/refinedstorage/tile/ISynchronizedContainer.java +++ /dev/null @@ -1,12 +0,0 @@ -package refinedstorage.tile; - -import io.netty.buffer.ByteBuf; -import net.minecraft.inventory.Container; - -public interface ISynchronizedContainer { - void readContainerData(ByteBuf buf); - - void writeContainerData(ByteBuf buf); - - Class getContainer(); -} diff --git a/src/main/java/refinedstorage/tile/TileBase.java b/src/main/java/refinedstorage/tile/TileBase.java index 834f5f8cd..fe2ee1d04 100755 --- a/src/main/java/refinedstorage/tile/TileBase.java +++ b/src/main/java/refinedstorage/tile/TileBase.java @@ -1,8 +1,6 @@ package refinedstorage.tile; import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; @@ -20,8 +18,6 @@ import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.InvWrapper; import net.minecraftforge.items.wrapper.SidedInvWrapper; -import refinedstorage.RefinedStorage; -import refinedstorage.network.MessageTileContainerUpdate; import refinedstorage.tile.data.TileDataManager; import javax.annotation.Nullable; @@ -42,13 +38,7 @@ public abstract class TileBase extends TileEntity implements ITickable { if (!worldObj.isRemote) { ticks++; - if (this instanceof ISynchronizedContainer) { - for (EntityPlayer player : worldObj.playerEntities) { - if (((ISynchronizedContainer) this).getContainer() == player.openContainer.getClass()) { - RefinedStorage.INSTANCE.network.sendTo(new MessageTileContainerUpdate(this), (EntityPlayerMP) player); - } - } - } + dataManager.detectAndSendChanges(); } } diff --git a/src/main/java/refinedstorage/tile/TileCable.java b/src/main/java/refinedstorage/tile/TileCable.java index 305a9f76b..6fa1a35be 100755 --- a/src/main/java/refinedstorage/tile/TileCable.java +++ b/src/main/java/refinedstorage/tile/TileCable.java @@ -1,6 +1,5 @@ package refinedstorage.tile; -import net.minecraft.inventory.Container; import refinedstorage.RefinedStorage; public class TileCable extends TileNode { @@ -13,9 +12,4 @@ public class TileCable extends TileNode { public void updateNode() { // NO OP } - - @Override - public Class getContainer() { - return null; - } } diff --git a/src/main/java/refinedstorage/tile/TileConstructor.java b/src/main/java/refinedstorage/tile/TileConstructor.java index 7781062e4..e2f6c126a 100755 --- a/src/main/java/refinedstorage/tile/TileConstructor.java +++ b/src/main/java/refinedstorage/tile/TileConstructor.java @@ -1,9 +1,7 @@ package refinedstorage.tile; -import io.netty.buffer.ByteBuf; import net.minecraft.block.SoundType; import net.minecraft.block.state.IBlockState; -import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; @@ -14,14 +12,17 @@ import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorage; import refinedstorage.apiimpl.autocrafting.CraftingTaskScheduler; -import refinedstorage.container.ContainerConstructor; import refinedstorage.container.slot.SlotSpecimen; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerUpgrade; import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.config.ICompareConfig; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; public class TileConstructor extends TileNode implements ICompareConfig { + public static final TileDataParameter COMPARE = ICompareConfig.createConfigParameter(); + private static final String NBT_COMPARE = "Compare"; private static final int BASE_SPEED = 20; @@ -34,6 +35,7 @@ public class TileConstructor extends TileNode implements ICompareConfig { block = SlotSpecimen.getBlockState(worldObj, pos.offset(getDirection()), getStackInSlot(0)); } }; + private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, this, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_CRAFTING); private int compare = 0; @@ -41,6 +43,10 @@ public class TileConstructor extends TileNode implements ICompareConfig { private CraftingTaskScheduler scheduler = new CraftingTaskScheduler(this); + public TileConstructor() { + dataManager.addWatchedParameter(COMPARE); + } + @Override public int getEnergyUsage() { return RefinedStorage.INSTANCE.constructorUsage + upgrades.getEnergyUsage(); @@ -78,9 +84,13 @@ public class TileConstructor extends TileNode implements ICompareConfig { @Override public void setCompare(int compare) { - this.compare = compare; + if (worldObj.isRemote) { + TileDataManager.setParameter(COMPARE, compare); + } else { + this.compare = compare; - markDirty(); + markDirty(); + } } @Override @@ -111,25 +121,6 @@ public class TileConstructor extends TileNode implements ICompareConfig { return tag; } - @Override - public void readContainerData(ByteBuf buf) { - super.readContainerData(buf); - - compare = buf.readInt(); - } - - @Override - public void writeContainerData(ByteBuf buf) { - super.writeContainerData(buf); - - buf.writeInt(compare); - } - - @Override - public Class getContainer() { - return ContainerConstructor.class; - } - public IItemHandler getUpgrades() { return upgrades; } diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index d6fcf6229..7be78dec7 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -2,12 +2,9 @@ package refinedstorage.tile; import cofh.api.energy.EnergyStorage; import cofh.api.energy.IEnergyReceiver; -import io.netty.buffer.ByteBuf; import net.darkhax.tesla.capability.TeslaCapabilities; -import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -15,7 +12,6 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.Constants; -import net.minecraftforge.fml.common.network.ByteBufUtils; import net.minecraftforge.items.ItemHandlerHelper; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageBlocks; @@ -35,7 +31,6 @@ import refinedstorage.apiimpl.network.WirelessGridHandler; import refinedstorage.apiimpl.storage.GroupedStorage; import refinedstorage.block.BlockController; import refinedstorage.block.EnumControllerType; -import refinedstorage.container.ContainerController; import refinedstorage.container.ContainerGrid; import refinedstorage.integration.ic2.ControllerEnergyIC2; import refinedstorage.integration.ic2.ControllerEnergyIC2None; @@ -52,32 +47,26 @@ import refinedstorage.tile.externalstorage.ExternalStorage; import java.util.*; -public class TileController extends TileBase implements INetworkMaster, IEnergyReceiver, ISynchronizedContainer, IRedstoneModeConfig { +public class TileController extends TileBase implements INetworkMaster, IEnergyReceiver, IRedstoneModeConfig { public static final String NBT_ENERGY = "Energy"; public static final String NBT_ENERGY_CAPACITY = "EnergyCapacity"; private static final String NBT_CRAFTING_TASKS = "CraftingTasks"; - private static final Comparator SIZE_COMPARATOR = new Comparator() { - @Override - public int compare(IStorage left, IStorage right) { - if (left.getStored() == right.getStored()) { - return 0; - } - - return (left.getStored() > right.getStored()) ? -1 : 1; + private static final Comparator SIZE_COMPARATOR = (left, right) -> { + if (left.getStored() == right.getStored()) { + return 0; } + + return (left.getStored() > right.getStored()) ? -1 : 1; }; - private static final Comparator PRIORITY_COMPARATOR = new Comparator() { - @Override - public int compare(IStorage left, IStorage right) { - if (left.getPriority() == right.getPriority()) { - return 0; - } - - return (left.getPriority() > right.getPriority()) ? -1 : 1; + private static final Comparator PRIORITY_COMPARATOR = (left, right) -> { + if (left.getPriority() == right.getPriority()) { + return 0; } + + return (left.getPriority() > right.getPriority()) ? -1 : 1; }; private GridHandler gridHandler = new GridHandler(this); @@ -613,7 +602,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR return type == null ? EnumControllerType.NORMAL : type; } - @Override + // @TODO: Make this work as well + /*@Override public void readContainerData(ByteBuf buf) { energy.setEnergyStored(buf.readInt()); this.energyUsage = buf.readInt(); @@ -683,7 +673,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR @Override public Class getContainer() { return ContainerController.class; - } + }*/ @Override public T getCapability(Capability capability, EnumFacing facing) { diff --git a/src/main/java/refinedstorage/tile/TileCrafter.java b/src/main/java/refinedstorage/tile/TileCrafter.java index 729c487f7..4c2b5334f 100755 --- a/src/main/java/refinedstorage/tile/TileCrafter.java +++ b/src/main/java/refinedstorage/tile/TileCrafter.java @@ -1,7 +1,5 @@ package refinedstorage.tile; -import net.minecraft.inventory.Container; -import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; import net.minecraftforge.common.capabilities.Capability; @@ -13,20 +11,13 @@ import refinedstorage.RefinedStorageItems; import refinedstorage.api.autocrafting.ICraftingPatternContainer; import refinedstorage.api.autocrafting.ICraftingTask; import refinedstorage.api.network.INetworkMaster; -import refinedstorage.container.ContainerCrafter; -import refinedstorage.inventory.IItemValidator; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerUpgrade; import refinedstorage.item.ItemPattern; import refinedstorage.item.ItemUpgrade; public class TileCrafter extends TileNode implements ICraftingPatternContainer { - private ItemHandlerBasic patterns = new ItemHandlerBasic(9, this, new IItemValidator() { - @Override - public boolean isValid(ItemStack stack) { - return stack.getItem() == RefinedStorageItems.PATTERN && ItemPattern.isValid(stack); - } - }) { + private ItemHandlerBasic patterns = new ItemHandlerBasic(9, this, stack -> (stack.getItem() == RefinedStorageItems.PATTERN && ItemPattern.isValid(stack))) { @Override protected void onContentsChanged(int slot) { super.onContentsChanged(slot); @@ -56,11 +47,6 @@ public class TileCrafter extends TileNode implements ICraftingPatternContainer { public void updateNode() { } - @Override - public Class getContainer() { - return ContainerCrafter.class; - } - @Override public void onConnectionChange(INetworkMaster network, boolean state) { if (!state) { diff --git a/src/main/java/refinedstorage/tile/TileCraftingMonitor.java b/src/main/java/refinedstorage/tile/TileCraftingMonitor.java index 4357bd91a..7d62ec87c 100755 --- a/src/main/java/refinedstorage/tile/TileCraftingMonitor.java +++ b/src/main/java/refinedstorage/tile/TileCraftingMonitor.java @@ -1,17 +1,12 @@ package refinedstorage.tile; -import io.netty.buffer.ByteBuf; -import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; -import net.minecraftforge.fml.common.network.ByteBufUtils; import refinedstorage.RefinedStorage; -import refinedstorage.api.autocrafting.ICraftingTask; -import refinedstorage.container.ContainerCraftingMonitor; import java.util.ArrayList; -import java.util.Collections; import java.util.List; +// @TODO: Make this work! public class TileCraftingMonitor extends TileNode { private List tasks = new ArrayList(); @@ -24,7 +19,7 @@ public class TileCraftingMonitor extends TileNode { public void updateNode() { } - @Override + /*@Override public void writeContainerData(ByteBuf buf) { super.writeContainerData(buf); @@ -66,17 +61,12 @@ public class TileCraftingMonitor extends TileNode { Collections.reverse(newTasks); tasks = newTasks; - } + }*/ public List getTasks() { return tasks; } - @Override - public Class getContainer() { - return ContainerCraftingMonitor.class; - } - public class ClientSideCraftingTask { public ItemStack output; public int id; diff --git a/src/main/java/refinedstorage/tile/TileDestructor.java b/src/main/java/refinedstorage/tile/TileDestructor.java index 23fc6bf98..e3ca31f5e 100755 --- a/src/main/java/refinedstorage/tile/TileDestructor.java +++ b/src/main/java/refinedstorage/tile/TileDestructor.java @@ -1,9 +1,7 @@ package refinedstorage.tile; -import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; -import net.minecraft.inventory.Container; import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -13,18 +11,21 @@ import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorage; -import refinedstorage.container.ContainerDestructor; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerUpgrade; import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.config.ICompareConfig; import refinedstorage.tile.config.IModeConfig; -import refinedstorage.tile.config.ModeConstants; import refinedstorage.tile.config.ModeFilter; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; import java.util.List; public class TileDestructor extends TileNode implements ICompareConfig, IModeConfig { + public static final TileDataParameter COMPARE = ICompareConfig.createConfigParameter(); + public static final TileDataParameter MODE = IModeConfig.createConfigParameter(); + private static final String NBT_COMPARE = "Compare"; private static final String NBT_MODE = "Mode"; @@ -34,7 +35,12 @@ public class TileDestructor extends TileNode implements ICompareConfig, IModeCon private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, this, ItemUpgrade.TYPE_SPEED); private int compare = 0; - private int mode = ModeConstants.WHITELIST; + private int mode = IModeConfig.WHITELIST; + + public TileDestructor() { + dataManager.addWatchedParameter(COMPARE); + dataManager.addWatchedParameter(MODE); + } @Override public int getEnergyUsage() { @@ -81,9 +87,13 @@ public class TileDestructor extends TileNode implements ICompareConfig, IModeCon @Override public void setCompare(int compare) { - this.compare = compare; + if (worldObj.isRemote) { + TileDataManager.setParameter(COMPARE, compare); + } else { + this.compare = compare; - markDirty(); + markDirty(); + } } @Override @@ -93,9 +103,13 @@ public class TileDestructor extends TileNode implements ICompareConfig, IModeCon @Override public void setMode(int mode) { - this.mode = mode; + if (worldObj.isRemote) { + TileDataManager.setParameter(MODE, mode); + } else { + this.mode = mode; - markDirty(); + markDirty(); + } } @Override @@ -127,26 +141,6 @@ public class TileDestructor extends TileNode implements ICompareConfig, IModeCon return tag; } - @Override - public void readContainerData(ByteBuf buf) { - super.readContainerData(buf); - - compare = buf.readInt(); - mode = buf.readInt(); - } - - @Override - public void writeContainerData(ByteBuf buf) { - super.writeContainerData(buf); - - buf.writeInt(compare); - buf.writeInt(mode); - } - - public Class getContainer() { - return ContainerDestructor.class; - } - public IItemHandler getUpgrades() { return upgrades; } diff --git a/src/main/java/refinedstorage/tile/TileDetector.java b/src/main/java/refinedstorage/tile/TileDetector.java index b9ece57c2..063072889 100755 --- a/src/main/java/refinedstorage/tile/TileDetector.java +++ b/src/main/java/refinedstorage/tile/TileDetector.java @@ -1,20 +1,54 @@ package refinedstorage.tile; -import io.netty.buffer.ByteBuf; -import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.datasync.DataSerializers; import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageBlocks; import refinedstorage.api.network.INetworkMaster; -import refinedstorage.container.ContainerDetector; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.tile.config.ICompareConfig; import refinedstorage.tile.config.RedstoneMode; +import refinedstorage.tile.data.ITileDataConsumer; +import refinedstorage.tile.data.ITileDataProducer; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; public class TileDetector extends TileNode implements ICompareConfig { - public static final int SPEED = 5; + public static final TileDataParameter COMPARE = ICompareConfig.createConfigParameter(); + + public static final TileDataParameter MODE = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(TileDetector tile) { + return tile.mode; + } + }, new ITileDataConsumer() { + @Override + public void setValue(TileDetector tile, Integer value) { + if (value == MODE_UNDER || value == MODE_EQUAL || value == MODE_ABOVE) { + tile.mode = value; + + tile.markDirty(); + } + } + }); + + public static final TileDataParameter AMOUNT = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(TileDetector tile) { + return tile.amount; + } + }, new ITileDataConsumer() { + @Override + public void setValue(TileDetector tile, Integer value) { + tile.amount = value; + + tile.markDirty(); + } + }); + + private static final int SPEED = 5; public static final int MODE_UNDER = 0; public static final int MODE_EQUAL = 1; @@ -34,6 +68,12 @@ public class TileDetector extends TileNode implements ICompareConfig { private boolean powered = false; private boolean wasPowered; + public TileDetector() { + dataManager.addWatchedParameter(COMPARE); + dataManager.addWatchedParameter(MODE); + dataManager.addWatchedParameter(AMOUNT); + } + @Override public int getEnergyUsage() { return RefinedStorage.INSTANCE.detectorUsage; @@ -107,29 +147,13 @@ public class TileDetector extends TileNode implements ICompareConfig { @Override public void setCompare(int compare) { - this.compare = compare; + if (worldObj.isRemote) { + TileDataManager.setParameter(COMPARE, compare); + } else { + this.compare = compare; - markDirty(); - } - - public int getMode() { - return mode; - } - - public void setMode(int mode) { - this.mode = mode; - - markDirty(); - } - - public int getAmount() { - return amount; - } - - public void setAmount(int amount) { - this.amount = amount; - - markDirty(); + markDirty(); + } } @Override @@ -180,29 +204,6 @@ public class TileDetector extends TileNode implements ICompareConfig { return tag; } - @Override - public void writeContainerData(ByteBuf buf) { - super.writeContainerData(buf); - - buf.writeInt(compare); - buf.writeInt(mode); - buf.writeInt(amount); - } - - @Override - public void readContainerData(ByteBuf buf) { - super.readContainerData(buf); - - compare = buf.readInt(); - mode = buf.readInt(); - amount = buf.readInt(); - } - - @Override - public Class getContainer() { - return ContainerDetector.class; - } - public IItemHandler getInventory() { return filter; } diff --git a/src/main/java/refinedstorage/tile/TileDiskDrive.java b/src/main/java/refinedstorage/tile/TileDiskDrive.java index 42ee7a690..ba03be060 100755 --- a/src/main/java/refinedstorage/tile/TileDiskDrive.java +++ b/src/main/java/refinedstorage/tile/TileDiskDrive.java @@ -1,7 +1,5 @@ package refinedstorage.tile; -import io.netty.buffer.ByteBuf; -import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; @@ -18,15 +16,19 @@ import refinedstorage.api.storage.IStorage; import refinedstorage.api.storage.IStorageProvider; import refinedstorage.apiimpl.storage.NBTStorage; import refinedstorage.block.EnumStorageType; -import refinedstorage.container.ContainerDiskDrive; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemValidatorBasic; -import refinedstorage.network.MessagePriorityUpdate; import refinedstorage.tile.config.*; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; import java.util.List; -public class TileDiskDrive extends TileNode implements IStorageProvider, IStorageGui, ICompareConfig, IModeConfig { +public class TileDiskDrive extends TileNode implements IStorageProvider, IStorageGui, ICompareConfig, IModeConfig, IPrioritizable { + public static final TileDataParameter PRIORITY = IPrioritizable.createConfigParameter(); + public static final TileDataParameter COMPARE = ICompareConfig.createConfigParameter(); + public static final TileDataParameter MODE = IModeConfig.createConfigParameter(); + public class Storage extends NBTStorage { public Storage(ItemStack disk) { super(disk.getTagCompound(), EnumStorageType.getById(disk.getItemDamage()).getCapacity(), TileDiskDrive.this); @@ -89,15 +91,22 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag return super.extractItem(slot, amount, simulate); } }; + private ItemHandlerBasic filters = new ItemHandlerBasic(9, this); private Storage storages[] = new Storage[8]; private int priority = 0; private int compare = 0; - private int mode = ModeConstants.WHITELIST; + private int mode = IModeConfig.WHITELIST; private int stored = 0; + public TileDiskDrive() { + dataManager.addWatchedParameter(PRIORITY); + dataManager.addWatchedParameter(COMPARE); + dataManager.addWatchedParameter(MODE); + } + @Override public void update() { if (!worldObj.isRemote) { @@ -208,29 +217,6 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag super.readUpdate(tag); } - @Override - public void writeContainerData(ByteBuf buf) { - super.writeContainerData(buf); - - buf.writeInt(priority); - buf.writeInt(compare); - buf.writeInt(mode); - } - - @Override - public void readContainerData(ByteBuf buf) { - super.readContainerData(buf); - - priority = buf.readInt(); - compare = buf.readInt(); - mode = buf.readInt(); - } - - @Override - public Class getContainer() { - return ContainerDiskDrive.class; - } - @Override public int getCompare() { return compare; @@ -238,9 +224,13 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag @Override public void setCompare(int compare) { - this.compare = compare; + if (worldObj.isRemote) { + TileDataManager.setParameter(COMPARE, compare); + } else { + this.compare = compare; - markDirty(); + markDirty(); + } } @Override @@ -250,9 +240,13 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag @Override public void setMode(int mode) { - this.mode = mode; + if (worldObj.isRemote) { + TileDataManager.setParameter(MODE, mode); + } else { + this.mode = mode; - markDirty(); + markDirty(); + } } public int getStoredForDisplayServer() { @@ -310,16 +304,17 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag return this; } - @Override - public void onPriorityChanged(int priority) { - RefinedStorage.INSTANCE.network.sendToServer(new MessagePriorityUpdate(pos, priority)); - } - @Override public int getPriority() { return priority; } + @Override + public void onPriorityChanged(int priority) { + TileDataManager.setParameter(PRIORITY, priority); + } + + @Override public void setPriority(int priority) { this.priority = priority; diff --git a/src/main/java/refinedstorage/tile/TileExporter.java b/src/main/java/refinedstorage/tile/TileExporter.java index 7c84f5f5d..e259aca3d 100755 --- a/src/main/java/refinedstorage/tile/TileExporter.java +++ b/src/main/java/refinedstorage/tile/TileExporter.java @@ -1,7 +1,5 @@ package refinedstorage.tile; -import io.netty.buffer.ByteBuf; -import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; @@ -11,13 +9,16 @@ import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; import refinedstorage.RefinedStorage; import refinedstorage.apiimpl.autocrafting.CraftingTaskScheduler; -import refinedstorage.container.ContainerExporter; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerUpgrade; import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.config.ICompareConfig; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; public class TileExporter extends TileNode implements ICompareConfig { + public static final TileDataParameter COMPARE = ICompareConfig.createConfigParameter(); + private static final String NBT_COMPARE = "Compare"; private ItemHandlerBasic filters = new ItemHandlerBasic(9, this); @@ -27,6 +28,10 @@ public class TileExporter extends TileNode implements ICompareConfig { private CraftingTaskScheduler scheduler = new CraftingTaskScheduler(this); + public TileExporter() { + dataManager.addWatchedParameter(COMPARE); + } + @Override public int getEnergyUsage() { return RefinedStorage.INSTANCE.exporterUsage + upgrades.getEnergyUsage(); @@ -70,9 +75,13 @@ public class TileExporter extends TileNode implements ICompareConfig { @Override public void setCompare(int compare) { - this.compare = compare; + if (worldObj.isRemote) { + TileDataManager.setParameter(COMPARE, compare); + } else { + this.compare = compare; - markDirty(); + markDirty(); + } } @Override @@ -103,25 +112,6 @@ public class TileExporter extends TileNode implements ICompareConfig { return tag; } - @Override - public void readContainerData(ByteBuf buf) { - super.readContainerData(buf); - - compare = buf.readInt(); - } - - @Override - public void writeContainerData(ByteBuf buf) { - super.writeContainerData(buf); - - buf.writeInt(compare); - } - - @Override - public Class getContainer() { - return ContainerExporter.class; - } - public IItemHandler getFilters() { return filters; } diff --git a/src/main/java/refinedstorage/tile/TileImporter.java b/src/main/java/refinedstorage/tile/TileImporter.java index 6a23c3462..e98b2a80d 100755 --- a/src/main/java/refinedstorage/tile/TileImporter.java +++ b/src/main/java/refinedstorage/tile/TileImporter.java @@ -1,7 +1,5 @@ package refinedstorage.tile; -import io.netty.buffer.ByteBuf; -import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; @@ -9,16 +7,19 @@ import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorage; -import refinedstorage.container.ContainerImporter; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerUpgrade; import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.config.ICompareConfig; import refinedstorage.tile.config.IModeConfig; -import refinedstorage.tile.config.ModeConstants; import refinedstorage.tile.config.ModeFilter; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; public class TileImporter extends TileNode implements ICompareConfig, IModeConfig { + public static final TileDataParameter COMPARE = ICompareConfig.createConfigParameter(); + public static final TileDataParameter MODE = IModeConfig.createConfigParameter(); + private static final String NBT_COMPARE = "Compare"; private static final String NBT_MODE = "Mode"; @@ -26,10 +27,15 @@ public class TileImporter extends TileNode implements ICompareConfig, IModeConfi private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, this, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK); private int compare = 0; - private int mode = ModeConstants.WHITELIST; + private int mode = IModeConfig.WHITELIST; private int currentSlot; + public TileImporter() { + dataManager.addWatchedParameter(COMPARE); + dataManager.addWatchedParameter(MODE); + } + @Override public int getEnergyUsage() { return RefinedStorage.INSTANCE.importerUsage + upgrades.getEnergyUsage(); @@ -75,9 +81,13 @@ public class TileImporter extends TileNode implements ICompareConfig, IModeConfi @Override public void setCompare(int compare) { - this.compare = compare; + if (worldObj.isRemote) { + TileDataManager.setParameter(COMPARE, compare); + } else { + this.compare = compare; - markDirty(); + markDirty(); + } } @Override @@ -87,9 +97,13 @@ public class TileImporter extends TileNode implements ICompareConfig, IModeConfi @Override public void setMode(int mode) { - this.mode = mode; + if (worldObj.isRemote) { + TileDataManager.setParameter(MODE, mode); + } else { + this.mode = mode; - markDirty(); + markDirty(); + } } @Override @@ -121,27 +135,6 @@ public class TileImporter extends TileNode implements ICompareConfig, IModeConfi return tag; } - @Override - public void readContainerData(ByteBuf buf) { - super.readContainerData(buf); - - compare = buf.readInt(); - mode = buf.readInt(); - } - - @Override - public void writeContainerData(ByteBuf buf) { - super.writeContainerData(buf); - - buf.writeInt(compare); - buf.writeInt(mode); - } - - @Override - public Class getContainer() { - return ContainerImporter.class; - } - public IItemHandler getUpgrades() { return upgrades; } diff --git a/src/main/java/refinedstorage/tile/TileInterface.java b/src/main/java/refinedstorage/tile/TileInterface.java index 13703ad11..bad2b55fb 100755 --- a/src/main/java/refinedstorage/tile/TileInterface.java +++ b/src/main/java/refinedstorage/tile/TileInterface.java @@ -1,7 +1,5 @@ package refinedstorage.tile; -import io.netty.buffer.ByteBuf; -import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; @@ -10,13 +8,16 @@ import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; import refinedstorage.RefinedStorage; -import refinedstorage.container.ContainerInterface; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerUpgrade; import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.config.ICompareConfig; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; public class TileInterface extends TileNode implements ICompareConfig { + public static final TileDataParameter COMPARE = ICompareConfig.createConfigParameter(); + private static final String NBT_COMPARE = "Compare"; private ItemHandlerBasic importItems = new ItemHandlerBasic(9, this); @@ -28,6 +29,10 @@ public class TileInterface extends TileNode implements ICompareConfig { private int currentSlot = 0; + public TileInterface() { + dataManager.addWatchedParameter(COMPARE); + } + @Override public int getEnergyUsage() { return RefinedStorage.INSTANCE.interfaceUsage + upgrades.getEnergyUsage(); @@ -96,9 +101,13 @@ public class TileInterface extends TileNode implements ICompareConfig { @Override public void setCompare(int compare) { - this.compare = compare; + if (worldObj.isRemote) { + TileDataManager.setParameter(COMPARE, compare); + } else { + this.compare = compare; - markDirty(); + markDirty(); + } } @Override @@ -129,26 +138,6 @@ public class TileInterface extends TileNode implements ICompareConfig { return tag; } - - @Override - public void readContainerData(ByteBuf buf) { - super.readContainerData(buf); - - compare = buf.readInt(); - } - - @Override - public void writeContainerData(ByteBuf buf) { - super.writeContainerData(buf); - - buf.writeInt(compare); - } - - @Override - public Class getContainer() { - return ContainerInterface.class; - } - public IItemHandler getImportItems() { return importItems; } diff --git a/src/main/java/refinedstorage/tile/TileNetworkReceiver.java b/src/main/java/refinedstorage/tile/TileNetworkReceiver.java index 3edbe7d30..37516f84b 100755 --- a/src/main/java/refinedstorage/tile/TileNetworkReceiver.java +++ b/src/main/java/refinedstorage/tile/TileNetworkReceiver.java @@ -1,6 +1,5 @@ package refinedstorage.tile; -import net.minecraft.inventory.Container; import refinedstorage.RefinedStorage; import refinedstorage.tile.config.RedstoneMode; @@ -14,11 +13,6 @@ public class TileNetworkReceiver extends TileNode { return RefinedStorage.INSTANCE.networkReceiverUsage; } - @Override - public Class getContainer() { - return null; - } - @Override public void setRedstoneMode(RedstoneMode mode) { // NO OP diff --git a/src/main/java/refinedstorage/tile/TileNetworkTransmitter.java b/src/main/java/refinedstorage/tile/TileNetworkTransmitter.java index 0b7dfff89..348713b6f 100755 --- a/src/main/java/refinedstorage/tile/TileNetworkTransmitter.java +++ b/src/main/java/refinedstorage/tile/TileNetworkTransmitter.java @@ -1,21 +1,43 @@ package refinedstorage.tile; -import io.netty.buffer.ByteBuf; -import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.datasync.DataSerializers; import net.minecraft.util.math.BlockPos; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageItems; import refinedstorage.api.network.NetworkUtils; -import refinedstorage.container.ContainerNetworkTransmitter; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerUpgrade; import refinedstorage.inventory.ItemValidatorBasic; import refinedstorage.item.ItemNetworkCard; import refinedstorage.item.ItemUpgrade; +import refinedstorage.tile.data.ITileDataProducer; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; public class TileNetworkTransmitter extends TileNode { + public static final TileDataParameter DISTANCE = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(TileNetworkTransmitter tile) { + return (tile.receiver != null && tile.isSameDimension()) ? tile.getDistance() : -1; + } + }); + + public static final TileDataParameter RECEIVER_DIMENSION = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(TileNetworkTransmitter tile) { + return tile.receiverDimension; + } + }); + + public static final TileDataParameter RECEIVER_DIMENSION_SUPPORTED = TileDataManager.createParameter(DataSerializers.BOOLEAN, new ITileDataProducer() { + @Override + public Boolean getValue(TileNetworkTransmitter tile) { + return tile.isDimensionSupported(); + } + }); + private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(1, this, ItemUpgrade.TYPE_INTERDIMENSIONAL) { @Override protected void onContentsChanged(int slot) { @@ -50,11 +72,11 @@ public class TileNetworkTransmitter extends TileNode { private BlockPos receiver; private int receiverDimension; - // Used clientside - private int distance; - private boolean dimensionSupported; - public TileNetworkTransmitter() { + dataManager.addWatchedParameter(DISTANCE); + dataManager.addWatchedParameter(RECEIVER_DIMENSION); + dataManager.addWatchedParameter(RECEIVER_DIMENSION_SUPPORTED); + rebuildOnUpdateChange = true; } @@ -84,34 +106,11 @@ public class TileNetworkTransmitter extends TileNode { readItems(upgrades, 1, tag); } - @Override - public void writeContainerData(ByteBuf buf) { - super.writeContainerData(buf); - - buf.writeInt((receiver != null && isSameDimension()) ? getDistance() : -1); - buf.writeInt(receiverDimension); - buf.writeBoolean(isDimensionSupported()); - } - - @Override - public void readContainerData(ByteBuf buf) { - super.readContainerData(buf); - - distance = buf.readInt(); - receiverDimension = buf.readInt(); - dimensionSupported = buf.readBoolean(); - } - @Override public int getEnergyUsage() { return RefinedStorage.INSTANCE.networkTransmitterUsage + (isSameDimension() ? (int) Math.ceil(RefinedStorage.INSTANCE.networkTransmitterPerBlockUsage * getDistance()) : 0) + upgrades.getEnergyUsage(); } - @Override - public Class getContainer() { - return ContainerNetworkTransmitter.class; - } - public ItemHandlerBasic getNetworkCard() { return networkCard; } @@ -129,10 +128,6 @@ public class TileNetworkTransmitter extends TileNode { } public int getDistance() { - if (worldObj.isRemote) { - return distance; - } - if (receiver == null) { return 0; } @@ -145,6 +140,6 @@ public class TileNetworkTransmitter extends TileNode { } public boolean isDimensionSupported() { - return worldObj.isRemote ? dimensionSupported : (isSameDimension() || upgrades.hasUpgrade(ItemUpgrade.TYPE_INTERDIMENSIONAL)); + return isSameDimension() || upgrades.hasUpgrade(ItemUpgrade.TYPE_INTERDIMENSIONAL); } } diff --git a/src/main/java/refinedstorage/tile/TileNode.java b/src/main/java/refinedstorage/tile/TileNode.java index b0c35f2c9..b663c612e 100755 --- a/src/main/java/refinedstorage/tile/TileNode.java +++ b/src/main/java/refinedstorage/tile/TileNode.java @@ -1,8 +1,8 @@ package refinedstorage.tile; -import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.datasync.DataSerializers; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import refinedstorage.api.network.INetworkMaster; @@ -11,8 +11,28 @@ import refinedstorage.api.network.NetworkUtils; import refinedstorage.block.BlockNode; import refinedstorage.tile.config.IRedstoneModeConfig; import refinedstorage.tile.config.RedstoneMode; +import refinedstorage.tile.data.ITileDataConsumer; +import refinedstorage.tile.data.ITileDataProducer; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; + +public abstract class TileNode extends TileBase implements INetworkNode, IRedstoneModeConfig { + public static final TileDataParameter REDSTONE_MODE = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(TileNode tile) { + return tile.redstoneMode.id; + } + }, new ITileDataConsumer() { + @Override + public void setValue(TileNode tile, Integer value) { + RedstoneMode mode = RedstoneMode.getById(value); + + if (mode != null) { + tile.redstoneMode = mode; + } + } + }); -public abstract class TileNode extends TileBase implements INetworkNode, ISynchronizedContainer, IRedstoneModeConfig { private static final String NBT_CONNECTED = "Connected"; private RedstoneMode redstoneMode = RedstoneMode.IGNORE; @@ -23,6 +43,10 @@ public abstract class TileNode extends TileBase implements INetworkNode, ISynchr protected boolean connected; protected INetworkMaster network; + public TileNode() { + dataManager.addWatchedParameter(REDSTONE_MODE); + } + @Override public boolean canUpdate() { return redstoneMode.isEnabled(worldObj, pos); @@ -127,16 +151,6 @@ public abstract class TileNode extends TileBase implements INetworkNode, ISynchr markDirty(); } - @Override - public void readContainerData(ByteBuf buf) { - redstoneMode = RedstoneMode.getById(buf.readInt()); - } - - @Override - public void writeContainerData(ByteBuf buf) { - buf.writeInt(redstoneMode.id); - } - @Override public void read(NBTTagCompound tag) { super.read(tag); diff --git a/src/main/java/refinedstorage/tile/TileRelay.java b/src/main/java/refinedstorage/tile/TileRelay.java index 34e29e1f5..0c8a4d7ef 100755 --- a/src/main/java/refinedstorage/tile/TileRelay.java +++ b/src/main/java/refinedstorage/tile/TileRelay.java @@ -1,8 +1,6 @@ package refinedstorage.tile; -import net.minecraft.inventory.Container; import refinedstorage.RefinedStorage; -import refinedstorage.container.ContainerRelay; import refinedstorage.tile.config.RedstoneMode; public class TileRelay extends TileNode { @@ -25,9 +23,4 @@ public class TileRelay extends TileNode { public boolean canConduct() { return canUpdate(); } - - @Override - public Class getContainer() { - return ContainerRelay.class; - } } diff --git a/src/main/java/refinedstorage/tile/TileSolderer.java b/src/main/java/refinedstorage/tile/TileSolderer.java index 9f21c2ba2..3b45947b9 100755 --- a/src/main/java/refinedstorage/tile/TileSolderer.java +++ b/src/main/java/refinedstorage/tile/TileSolderer.java @@ -1,8 +1,7 @@ package refinedstorage.tile; -import io.netty.buffer.ByteBuf; -import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.datasync.DataSerializers; import net.minecraft.util.EnumFacing; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.items.CapabilityItemHandler; @@ -13,13 +12,29 @@ import refinedstorage.api.RefinedStorageAPI; import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.solderer.ISoldererRecipe; import refinedstorage.api.storage.CompareUtils; -import refinedstorage.container.ContainerSolderer; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerSolderer; import refinedstorage.inventory.ItemHandlerUpgrade; import refinedstorage.item.ItemUpgrade; +import refinedstorage.tile.data.ITileDataProducer; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; public class TileSolderer extends TileNode { + public static final TileDataParameter DURATION = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(TileSolderer tile) { + return tile.recipe != null ? tile.recipe.getDuration() : 0; + } + }); + + public static final TileDataParameter PROGRESS = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(TileSolderer tile) { + return tile.progress; + } + }); + private static final String NBT_WORKING = "Working"; private static final String NBT_PROGRESS = "Progress"; @@ -31,7 +46,11 @@ public class TileSolderer extends TileNode { private boolean working = false; private int progress = 0; - private int duration; + + public TileSolderer() { + dataManager.addWatchedParameter(DURATION); + dataManager.addWatchedParameter(PROGRESS); + } @Override public int getEnergyUsage() { @@ -153,39 +172,10 @@ public class TileSolderer extends TileNode { super.readUpdate(tag); } - @Override - public void readContainerData(ByteBuf buf) { - super.readContainerData(buf); - - progress = buf.readInt(); - duration = buf.readInt(); - } - - @Override - public void writeContainerData(ByteBuf buf) { - super.writeContainerData(buf); - - buf.writeInt(progress); - buf.writeInt(recipe != null ? recipe.getDuration() : 0); - } - - @Override - public Class getContainer() { - return ContainerSolderer.class; - } - public boolean isWorking() { return working; } - public int getProgressScaled(int i) { - if (progress > duration) { - return i; - } - - return (int) ((float) progress / (float) duration * (float) i); - } - public ItemHandlerBasic getItems() { return items; } diff --git a/src/main/java/refinedstorage/tile/TileStorage.java b/src/main/java/refinedstorage/tile/TileStorage.java index aa31fd033..1db96775d 100755 --- a/src/main/java/refinedstorage/tile/TileStorage.java +++ b/src/main/java/refinedstorage/tile/TileStorage.java @@ -1,9 +1,8 @@ package refinedstorage.tile; -import io.netty.buffer.ByteBuf; -import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.datasync.DataSerializers; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; import refinedstorage.RefinedStorage; @@ -14,14 +13,25 @@ import refinedstorage.api.storage.IStorageProvider; import refinedstorage.apiimpl.storage.NBTStorage; import refinedstorage.block.BlockStorage; import refinedstorage.block.EnumStorageType; -import refinedstorage.container.ContainerStorage; import refinedstorage.inventory.ItemHandlerBasic; -import refinedstorage.network.MessagePriorityUpdate; import refinedstorage.tile.config.*; +import refinedstorage.tile.data.ITileDataProducer; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; import java.util.List; -public class TileStorage extends TileNode implements IStorageProvider, IStorageGui, ICompareConfig, IModeConfig { +public class TileStorage extends TileNode implements IStorageProvider, IStorageGui, ICompareConfig, IModeConfig, IPrioritizable { + public static final TileDataParameter PRIORITY = IPrioritizable.createConfigParameter(); + public static final TileDataParameter COMPARE = ICompareConfig.createConfigParameter(); + public static final TileDataParameter MODE = IModeConfig.createConfigParameter(); + public static final TileDataParameter STORED = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(TileStorage tile) { + return NBTStorage.getStoredFromNBT(tile.storageTag); + } + }); + class Storage extends NBTStorage { public Storage() { super(TileStorage.this.getStorageTag(), TileStorage.this.getCapacity(), TileStorage.this); @@ -58,8 +68,14 @@ public class TileStorage extends TileNode implements IStorageProvider, IStorageG private int priority = 0; private int compare = 0; - private int mode = ModeConstants.WHITELIST; - private int stored; + private int mode = IModeConfig.WHITELIST; + + public TileStorage() { + dataManager.addWatchedParameter(PRIORITY); + dataManager.addWatchedParameter(COMPARE); + dataManager.addWatchedParameter(MODE); + dataManager.addWatchedParameter(STORED); + } @Override public int getEnergyUsage() { @@ -153,31 +169,6 @@ public class TileStorage extends TileNode implements IStorageProvider, IStorageG return type == null ? EnumStorageType.TYPE_1K : type; } - @Override - public void writeContainerData(ByteBuf buf) { - super.writeContainerData(buf); - - buf.writeInt(NBTStorage.getStoredFromNBT(storageTag)); - buf.writeInt(priority); - buf.writeInt(compare); - buf.writeInt(mode); - } - - @Override - public void readContainerData(ByteBuf buf) { - super.readContainerData(buf); - - stored = buf.readInt(); - priority = buf.readInt(); - compare = buf.readInt(); - mode = buf.readInt(); - } - - @Override - public Class getContainer() { - return ContainerStorage.class; - } - @Override public int getCompare() { return compare; @@ -185,9 +176,13 @@ public class TileStorage extends TileNode implements IStorageProvider, IStorageG @Override public void setCompare(int compare) { - this.compare = compare; + if (worldObj.isRemote) { + TileDataManager.setParameter(COMPARE, compare); + } else { + this.compare = compare; - markDirty(); + markDirty(); + } } @Override @@ -197,9 +192,13 @@ public class TileStorage extends TileNode implements IStorageProvider, IStorageG @Override public void setMode(int mode) { - this.mode = mode; + if (worldObj.isRemote) { + TileDataManager.setParameter(MODE, mode); + } else { + this.mode = mode; - markDirty(); + markDirty(); + } } @Override @@ -227,11 +226,6 @@ public class TileStorage extends TileNode implements IStorageProvider, IStorageG return this; } - @Override - public void onPriorityChanged(int priority) { - RefinedStorage.INSTANCE.network.sendToServer(new MessagePriorityUpdate(pos, priority)); - } - public NBTTagCompound getStorageTag() { return storageTag; } @@ -249,6 +243,12 @@ public class TileStorage extends TileNode implements IStorageProvider, IStorageG return priority; } + @Override + public void onPriorityChanged(int priority) { + TileDataManager.setParameter(PRIORITY, priority); + } + + @Override public void setPriority(int priority) { this.priority = priority; @@ -257,7 +257,7 @@ public class TileStorage extends TileNode implements IStorageProvider, IStorageG @Override public int getStored() { - return stored; + return (int) STORED.getValue(); } @Override diff --git a/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java b/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java index 2f487a7bd..12368e45e 100755 --- a/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java +++ b/src/main/java/refinedstorage/tile/TileWirelessTransmitter.java @@ -1,7 +1,7 @@ package refinedstorage.tile; -import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.datasync.DataSerializers; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraftforge.common.capabilities.Capability; @@ -9,12 +9,21 @@ import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import refinedstorage.RefinedStorage; import refinedstorage.api.network.IWirelessTransmitter; -import refinedstorage.container.ContainerWirelessTransmitter; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerUpgrade; import refinedstorage.item.ItemUpgrade; +import refinedstorage.tile.data.ITileDataProducer; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; public class TileWirelessTransmitter extends TileNode implements IWirelessTransmitter { + public static final TileDataParameter RANGE = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(TileWirelessTransmitter tile) { + return tile.getRange(); + } + }); + private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, this, ItemUpgrade.TYPE_RANGE); @Override @@ -56,11 +65,6 @@ public class TileWirelessTransmitter extends TileNode implements IWirelessTransm return upgrades; } - @Override - public Class getContainer() { - return ContainerWirelessTransmitter.class; - } - @Override public IItemHandler getDroppedItems() { return upgrades; diff --git a/src/main/java/refinedstorage/tile/config/ICompareConfig.java b/src/main/java/refinedstorage/tile/config/ICompareConfig.java index 26da4637e..6a3f53110 100755 --- a/src/main/java/refinedstorage/tile/config/ICompareConfig.java +++ b/src/main/java/refinedstorage/tile/config/ICompareConfig.java @@ -1,6 +1,27 @@ package refinedstorage.tile.config; +import net.minecraft.network.datasync.DataSerializers; +import net.minecraft.tileentity.TileEntity; +import refinedstorage.tile.data.ITileDataConsumer; +import refinedstorage.tile.data.ITileDataProducer; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; + public interface ICompareConfig { + static TileDataParameter createConfigParameter() { + return TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(T tile) { + return ((ICompareConfig) tile).getCompare(); + } + }, new ITileDataConsumer() { + @Override + public void setValue(T tile, Integer value) { + ((ICompareConfig) tile).setCompare(value); + } + }); + } + int getCompare(); void setCompare(int compare); diff --git a/src/main/java/refinedstorage/tile/config/IModeConfig.java b/src/main/java/refinedstorage/tile/config/IModeConfig.java index cc7fa1ef0..b64dfdc52 100755 --- a/src/main/java/refinedstorage/tile/config/IModeConfig.java +++ b/src/main/java/refinedstorage/tile/config/IModeConfig.java @@ -1,6 +1,32 @@ package refinedstorage.tile.config; +import net.minecraft.network.datasync.DataSerializers; +import net.minecraft.tileentity.TileEntity; +import refinedstorage.tile.data.ITileDataConsumer; +import refinedstorage.tile.data.ITileDataProducer; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; + public interface IModeConfig { + int WHITELIST = 0; + int BLACKLIST = 1; + + static TileDataParameter createConfigParameter() { + return TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(T tile) { + return ((IModeConfig) tile).getMode(); + } + }, new ITileDataConsumer() { + @Override + public void setValue(T tile, Integer value) { + if (value == WHITELIST || value == BLACKLIST) { + ((IModeConfig) tile).setMode(value); + } + } + }); + } + void setMode(int mode); int getMode(); diff --git a/src/main/java/refinedstorage/tile/config/IPrioritizable.java b/src/main/java/refinedstorage/tile/config/IPrioritizable.java new file mode 100755 index 000000000..568fdb310 --- /dev/null +++ b/src/main/java/refinedstorage/tile/config/IPrioritizable.java @@ -0,0 +1,28 @@ +package refinedstorage.tile.config; + +import net.minecraft.network.datasync.DataSerializers; +import net.minecraft.tileentity.TileEntity; +import refinedstorage.tile.data.ITileDataConsumer; +import refinedstorage.tile.data.ITileDataProducer; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; + +public interface IPrioritizable { + static TileDataParameter createConfigParameter() { + return TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(T tile) { + return ((IPrioritizable) tile).getPriority(); + } + }, new ITileDataConsumer() { + @Override + public void setValue(T tile, Integer value) { + ((IPrioritizable) tile).setPriority(value); + } + }); + } + + int getPriority(); + + void setPriority(int priority); +} diff --git a/src/main/java/refinedstorage/tile/config/ModeConstants.java b/src/main/java/refinedstorage/tile/config/ModeConstants.java deleted file mode 100755 index 12dcc16f3..000000000 --- a/src/main/java/refinedstorage/tile/config/ModeConstants.java +++ /dev/null @@ -1,6 +0,0 @@ -package refinedstorage.tile.config; - -public final class ModeConstants { - public static final int WHITELIST = 0; - public static final int BLACKLIST = 1; -} diff --git a/src/main/java/refinedstorage/tile/config/ModeFilter.java b/src/main/java/refinedstorage/tile/config/ModeFilter.java index 461203bea..0b67892c4 100755 --- a/src/main/java/refinedstorage/tile/config/ModeFilter.java +++ b/src/main/java/refinedstorage/tile/config/ModeFilter.java @@ -6,7 +6,7 @@ import refinedstorage.api.storage.CompareUtils; public final class ModeFilter { public static boolean respectsMode(IItemHandler filters, IModeConfig mode, int compare, ItemStack stack) { - if (mode.getMode() == ModeConstants.WHITELIST) { + if (mode.getMode() == IModeConfig.WHITELIST) { int slots = 0; for (int i = 0; i < filters.getSlots(); ++i) { @@ -22,7 +22,7 @@ public final class ModeFilter { } return slots == 0; - } else if (mode.getMode() == ModeConstants.BLACKLIST) { + } else if (mode.getMode() == IModeConfig.BLACKLIST) { for (int i = 0; i < filters.getSlots(); ++i) { ItemStack slot = filters.getStackInSlot(i); diff --git a/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java b/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java index e553528e0..a76ed21b4 100755 --- a/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java +++ b/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java @@ -2,9 +2,8 @@ package refinedstorage.tile.externalstorage; import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawer; import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawerGroup; -import io.netty.buffer.ByteBuf; -import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.datasync.DataSerializers; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.items.IItemHandler; import powercrystals.minefactoryreloaded.api.IDeepStorageUnit; @@ -12,20 +11,39 @@ import refinedstorage.RefinedStorage; import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.storage.IStorage; import refinedstorage.api.storage.IStorageProvider; -import refinedstorage.container.ContainerStorage; import refinedstorage.inventory.ItemHandlerBasic; -import refinedstorage.network.MessagePriorityUpdate; import refinedstorage.tile.IStorageGui; import refinedstorage.tile.TileNode; import refinedstorage.tile.config.ICompareConfig; import refinedstorage.tile.config.IModeConfig; +import refinedstorage.tile.config.IPrioritizable; import refinedstorage.tile.config.IRedstoneModeConfig; -import refinedstorage.tile.config.ModeConstants; +import refinedstorage.tile.data.ITileDataProducer; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; import java.util.ArrayList; import java.util.List; -public class TileExternalStorage extends TileNode implements IStorageProvider, IStorageGui, ICompareConfig, IModeConfig { +public class TileExternalStorage extends TileNode implements IStorageProvider, IStorageGui, ICompareConfig, IModeConfig, IPrioritizable { + public static final TileDataParameter PRIORITY = IPrioritizable.createConfigParameter(); + public static final TileDataParameter COMPARE = ICompareConfig.createConfigParameter(); + public static final TileDataParameter MODE = IModeConfig.createConfigParameter(); + + public static final TileDataParameter STORED = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(TileExternalStorage tile) { + return tile.getStored(); + } + }); + + public static final TileDataParameter CAPACITY = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(TileExternalStorage tile) { + return tile.getCapacity(); + } + }); + private static final String NBT_PRIORITY = "Priority"; private static final String NBT_COMPARE = "Compare"; private static final String NBT_MODE = "Mode"; @@ -34,14 +52,19 @@ public class TileExternalStorage extends TileNode implements IStorageProvider, I private int priority = 0; private int compare = 0; - private int mode = ModeConstants.WHITELIST; - - private int stored; - private int capacity; + private int mode = IModeConfig.WHITELIST; private List storages = new ArrayList(); private int lastDrawerCount; + public TileExternalStorage() { + dataManager.addWatchedParameter(PRIORITY); + dataManager.addWatchedParameter(COMPARE); + dataManager.addWatchedParameter(MODE); + dataManager.addWatchedParameter(STORED); + dataManager.addWatchedParameter(CAPACITY); + } + @Override public int getEnergyUsage() { return RefinedStorage.INSTANCE.externalStorageUsage + (storages.size() * RefinedStorage.INSTANCE.externalStoragePerStorageUsage); @@ -87,33 +110,6 @@ public class TileExternalStorage extends TileNode implements IStorageProvider, I super.update(); } - @Override - public void writeContainerData(ByteBuf buf) { - super.writeContainerData(buf); - - buf.writeInt(priority); - buf.writeInt(getStored()); - buf.writeInt(getCapacity()); - buf.writeInt(compare); - buf.writeInt(mode); - } - - @Override - public void readContainerData(ByteBuf buf) { - super.readContainerData(buf); - - priority = buf.readInt(); - stored = buf.readInt(); - capacity = buf.readInt(); - compare = buf.readInt(); - mode = buf.readInt(); - } - - @Override - public Class getContainer() { - return ContainerStorage.class; - } - @Override public void read(NBTTagCompound tag) { super.read(tag); @@ -175,6 +171,12 @@ public class TileExternalStorage extends TileNode implements IStorageProvider, I return priority; } + @Override + public void onPriorityChanged(int priority) { + TileDataManager.setParameter(PRIORITY, priority); + } + + @Override public void setPriority(int priority) { this.priority = priority; @@ -236,14 +238,10 @@ public class TileExternalStorage extends TileNode implements IStorageProvider, I @Override public int getStored() { - if (!worldObj.isRemote) { - int stored = 0; + int stored = 0; - for (ExternalStorage storage : storages) { - stored += storage.getStored(); - } - - return stored; + for (ExternalStorage storage : storages) { + stored += storage.getStored(); } return stored; @@ -251,24 +249,15 @@ public class TileExternalStorage extends TileNode implements IStorageProvider, I @Override public int getCapacity() { - if (!worldObj.isRemote) { - int capacity = 0; + int capacity = 0; - for (ExternalStorage storage : storages) { - capacity += storage.getCapacity(); - } - - return capacity; + for (ExternalStorage storage : storages) { + capacity += storage.getCapacity(); } return capacity; } - @Override - public void onPriorityChanged(int priority) { - RefinedStorage.INSTANCE.network.sendToServer(new MessagePriorityUpdate(pos, priority)); - } - @Override public IItemHandler getFilters() { return filters; diff --git a/src/main/java/refinedstorage/tile/grid/TileGrid.java b/src/main/java/refinedstorage/tile/grid/TileGrid.java index 2fe7ff4ef..66be251ba 100755 --- a/src/main/java/refinedstorage/tile/grid/TileGrid.java +++ b/src/main/java/refinedstorage/tile/grid/TileGrid.java @@ -1,12 +1,12 @@ package refinedstorage.tile.grid; -import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.*; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.datasync.DataSerializers; import net.minecraft.util.math.BlockPos; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; @@ -25,14 +25,81 @@ import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerGridFilterInGrid; import refinedstorage.inventory.ItemValidatorBasic; import refinedstorage.item.ItemPattern; -import refinedstorage.network.MessageGridSettingsUpdate; import refinedstorage.tile.TileNode; import refinedstorage.tile.config.IRedstoneModeConfig; +import refinedstorage.tile.data.ITileDataConsumer; +import refinedstorage.tile.data.ITileDataProducer; +import refinedstorage.tile.data.TileDataManager; +import refinedstorage.tile.data.TileDataParameter; import java.util.ArrayList; import java.util.List; public class TileGrid extends TileNode implements IGrid { + public static final TileDataParameter VIEW_TYPE = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(TileGrid tile) { + return tile.viewType; + } + }, new ITileDataConsumer() { + @Override + public void setValue(TileGrid tile, Integer value) { + if (isValidViewType(value)) { + tile.viewType = value; + + tile.markDirty(); + } + } + }); + + public static final TileDataParameter SORTING_DIRECTION = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(TileGrid tile) { + return tile.sortingDirection; + } + }, new ITileDataConsumer() { + @Override + public void setValue(TileGrid tile, Integer value) { + if (isValidSortingDirection(value)) { + tile.sortingDirection = value; + + tile.markDirty(); + } + } + }); + + public static final TileDataParameter SORTING_TYPE = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(TileGrid tile) { + return tile.sortingType; + } + }, new ITileDataConsumer() { + @Override + public void setValue(TileGrid tile, Integer value) { + if (isValidSortingType(value)) { + tile.sortingType = value; + + tile.markDirty(); + } + } + }); + + public static final TileDataParameter SEARCH_BOX_MODE = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer() { + @Override + public Integer getValue(TileGrid tile) { + return tile.searchBoxMode; + } + }, new ITileDataConsumer() { + @Override + public void setValue(TileGrid tile, Integer value) { + if (isValidSearchBoxMode(value)) { + tile.searchBoxMode = value; + + tile.markDirty(); + } + } + }); + public static final String NBT_VIEW_TYPE = "ViewType"; public static final String NBT_SORTING_DIRECTION = "SortingDirection"; public static final String NBT_SORTING_TYPE = "SortingType"; @@ -78,6 +145,13 @@ public class TileGrid extends TileNode implements IGrid { private int sortingType = SORTING_TYPE_NAME; private int searchBoxMode = SEARCH_BOX_MODE_NORMAL; + public TileGrid() { + dataManager.addWatchedParameter(VIEW_TYPE); + dataManager.addWatchedParameter(SORTING_DIRECTION); + dataManager.addWatchedParameter(SORTING_TYPE); + dataManager.addWatchedParameter(SEARCH_BOX_MODE); + } + @Override public int getEnergyUsage() { switch (getType()) { @@ -279,63 +353,42 @@ public class TileGrid extends TileNode implements IGrid { @Override public int getViewType() { - return viewType; - } - - public void setViewType(int type) { - this.viewType = type; - - markDirty(); + return worldObj.isRemote ? VIEW_TYPE.getValue() : viewType; } + @Override public int getSortingDirection() { - return sortingDirection; - } - - public void setSortingDirection(int sortingDirection) { - this.sortingDirection = sortingDirection; - - markDirty(); + return worldObj.isRemote ? SORTING_DIRECTION.getValue() : sortingDirection; } + @Override public int getSortingType() { - return sortingType; - } - - public void setSortingType(int sortingType) { - this.sortingType = sortingType; - - markDirty(); + return worldObj.isRemote ? SORTING_TYPE.getValue() : sortingType; } + @Override public int getSearchBoxMode() { - return searchBoxMode; - } - - public void setSearchBoxMode(int searchBoxMode) { - this.searchBoxMode = searchBoxMode; - - markDirty(); + return worldObj.isRemote ? SEARCH_BOX_MODE.getValue() : searchBoxMode; } @Override public void onViewTypeChanged(int type) { - RefinedStorage.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(this, type, sortingDirection, sortingType, searchBoxMode)); + TileDataManager.setParameter(VIEW_TYPE, type); } @Override public void onSortingTypeChanged(int type) { - RefinedStorage.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(this, viewType, sortingDirection, type, searchBoxMode)); + TileDataManager.setParameter(SORTING_TYPE, type); } @Override public void onSortingDirectionChanged(int direction) { - RefinedStorage.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(this, viewType, direction, sortingType, searchBoxMode)); + TileDataManager.setParameter(SORTING_DIRECTION, direction); } @Override public void onSearchBoxModeChanged(int searchBoxMode) { - RefinedStorage.INSTANCE.network.sendToServer(new MessageGridSettingsUpdate(this, viewType, sortingDirection, sortingType, searchBoxMode)); + TileDataManager.setParameter(SEARCH_BOX_MODE, searchBoxMode); } @Override @@ -384,31 +437,6 @@ public class TileGrid extends TileNode implements IGrid { return tag; } - @Override - public void writeContainerData(ByteBuf buf) { - super.writeContainerData(buf); - - buf.writeInt(viewType); - buf.writeInt(sortingDirection); - buf.writeInt(sortingType); - buf.writeInt(searchBoxMode); - } - - @Override - public void readContainerData(ByteBuf buf) { - super.readContainerData(buf); - - viewType = buf.readInt(); - sortingDirection = buf.readInt(); - sortingType = buf.readInt(); - searchBoxMode = buf.readInt(); - } - - @Override - public Class getContainer() { - return ContainerGrid.class; - } - @Override public IItemHandler getDroppedItems() { switch (getType()) {