Switch to new GUI sync system, very buggy and untested

This commit is contained in:
Raoul Van den Berge
2016-08-05 13:46:17 +02:00
parent 825eaed975
commit c9d6443d06
47 changed files with 573 additions and 1043 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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<MessageDetectorModeUpdate> 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;
}
}
}
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -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<MessageTileContainerUpdate, IMessage> {
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;
}
}

View File

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

View File

@@ -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<? extends Container> getContainer();
}

View File

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

View File

@@ -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<? extends Container> getContainer() {
return null;
}
}

View File

@@ -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<? extends Container> getContainer() {
return ContainerConstructor.class;
}
public IItemHandler getUpgrades() {
return upgrades;
}

View File

@@ -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<IStorage> SIZE_COMPARATOR = new Comparator<IStorage>() {
@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<IStorage> SIZE_COMPARATOR = (left, right) -> {
if (left.getStored() == right.getStored()) {
return 0;
}
return (left.getStored() > right.getStored()) ? -1 : 1;
};
private static final Comparator<IStorage> PRIORITY_COMPARATOR = new Comparator<IStorage>() {
@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<IStorage> 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<? extends Container> getContainer() {
return ContainerController.class;
}
}*/
@Override
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {

View File

@@ -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<? extends Container> getContainer() {
return ContainerCrafter.class;
}
@Override
public void onConnectionChange(INetworkMaster network, boolean state) {
if (!state) {

View File

@@ -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<ClientSideCraftingTask> tasks = new ArrayList<ClientSideCraftingTask>();
@@ -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<ClientSideCraftingTask> getTasks() {
return tasks;
}
@Override
public Class<? extends Container> getContainer() {
return ContainerCraftingMonitor.class;
}
public class ClientSideCraftingTask {
public ItemStack output;
public int id;

View File

@@ -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<? extends Container> getContainer() {
return ContainerDestructor.class;
}
public IItemHandler getUpgrades() {
return upgrades;
}

View File

@@ -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<Integer> MODE = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileDetector>() {
@Override
public Integer getValue(TileDetector tile) {
return tile.mode;
}
}, new ITileDataConsumer<Integer, TileDetector>() {
@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<Integer, TileDetector>() {
@Override
public Integer getValue(TileDetector tile) {
return tile.amount;
}
}, new ITileDataConsumer<Integer, TileDetector>() {
@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<? extends Container> getContainer() {
return ContainerDetector.class;
}
public IItemHandler getInventory() {
return filter;
}

View File

@@ -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<? extends Container> 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;

View File

@@ -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<? extends Container> getContainer() {
return ContainerExporter.class;
}
public IItemHandler getFilters() {
return filters;
}

View File

@@ -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<? extends Container> getContainer() {
return ContainerImporter.class;
}
public IItemHandler getUpgrades() {
return upgrades;
}

View File

@@ -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<? extends Container> getContainer() {
return ContainerInterface.class;
}
public IItemHandler getImportItems() {
return importItems;
}

View File

@@ -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<? extends Container> getContainer() {
return null;
}
@Override
public void setRedstoneMode(RedstoneMode mode) {
// NO OP

View File

@@ -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<Integer, TileNetworkTransmitter>() {
@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<Integer, TileNetworkTransmitter>() {
@Override
public Integer getValue(TileNetworkTransmitter tile) {
return tile.receiverDimension;
}
});
public static final TileDataParameter<Boolean> RECEIVER_DIMENSION_SUPPORTED = TileDataManager.createParameter(DataSerializers.BOOLEAN, new ITileDataProducer<Boolean, TileNetworkTransmitter>() {
@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<? extends Container> 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);
}
}

View File

@@ -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<Integer, TileNode>() {
@Override
public Integer getValue(TileNode tile) {
return tile.redstoneMode.id;
}
}, new ITileDataConsumer<Integer, TileNode>() {
@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);

View File

@@ -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<? extends Container> getContainer() {
return ContainerRelay.class;
}
}

View File

@@ -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<Integer> DURATION = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileSolderer>() {
@Override
public Integer getValue(TileSolderer tile) {
return tile.recipe != null ? tile.recipe.getDuration() : 0;
}
});
public static final TileDataParameter<Integer> PROGRESS = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileSolderer>() {
@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<? extends Container> 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;
}

View File

@@ -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<Integer, TileStorage>() {
@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<? extends Container> 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

View File

@@ -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<Integer> RANGE = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileWirelessTransmitter>() {
@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<? extends Container> getContainer() {
return ContainerWirelessTransmitter.class;
}
@Override
public IItemHandler getDroppedItems() {
return upgrades;

View File

@@ -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 <T extends TileEntity> TileDataParameter createConfigParameter() {
return TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, T>() {
@Override
public Integer getValue(T tile) {
return ((ICompareConfig) tile).getCompare();
}
}, new ITileDataConsumer<Integer, T>() {
@Override
public void setValue(T tile, Integer value) {
((ICompareConfig) tile).setCompare(value);
}
});
}
int getCompare();
void setCompare(int compare);

View File

@@ -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 <T extends TileEntity> TileDataParameter createConfigParameter() {
return TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, T>() {
@Override
public Integer getValue(T tile) {
return ((IModeConfig) tile).getMode();
}
}, new ITileDataConsumer<Integer, T>() {
@Override
public void setValue(T tile, Integer value) {
if (value == WHITELIST || value == BLACKLIST) {
((IModeConfig) tile).setMode(value);
}
}
});
}
void setMode(int mode);
int getMode();

View File

@@ -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 <T extends TileEntity> TileDataParameter createConfigParameter() {
return TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, T>() {
@Override
public Integer getValue(T tile) {
return ((IPrioritizable) tile).getPriority();
}
}, new ITileDataConsumer<Integer, T>() {
@Override
public void setValue(T tile, Integer value) {
((IPrioritizable) tile).setPriority(value);
}
});
}
int getPriority();
void setPriority(int priority);
}

View File

@@ -1,6 +0,0 @@
package refinedstorage.tile.config;
public final class ModeConstants {
public static final int WHITELIST = 0;
public static final int BLACKLIST = 1;
}

View File

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

View File

@@ -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<Integer, TileExternalStorage>() {
@Override
public Integer getValue(TileExternalStorage tile) {
return tile.getStored();
}
});
public static final TileDataParameter CAPACITY = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileExternalStorage>() {
@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<ExternalStorage> storages = new ArrayList<ExternalStorage>();
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<? extends Container> 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;

View File

@@ -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<Integer> VIEW_TYPE = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileGrid>() {
@Override
public Integer getValue(TileGrid tile) {
return tile.viewType;
}
}, new ITileDataConsumer<Integer, TileGrid>() {
@Override
public void setValue(TileGrid tile, Integer value) {
if (isValidViewType(value)) {
tile.viewType = value;
tile.markDirty();
}
}
});
public static final TileDataParameter<Integer> SORTING_DIRECTION = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileGrid>() {
@Override
public Integer getValue(TileGrid tile) {
return tile.sortingDirection;
}
}, new ITileDataConsumer<Integer, TileGrid>() {
@Override
public void setValue(TileGrid tile, Integer value) {
if (isValidSortingDirection(value)) {
tile.sortingDirection = value;
tile.markDirty();
}
}
});
public static final TileDataParameter<Integer> SORTING_TYPE = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileGrid>() {
@Override
public Integer getValue(TileGrid tile) {
return tile.sortingType;
}
}, new ITileDataConsumer<Integer, TileGrid>() {
@Override
public void setValue(TileGrid tile, Integer value) {
if (isValidSortingType(value)) {
tile.sortingType = value;
tile.markDirty();
}
}
});
public static final TileDataParameter<Integer> SEARCH_BOX_MODE = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileGrid>() {
@Override
public Integer getValue(TileGrid tile) {
return tile.searchBoxMode;
}
}, new ITileDataConsumer<Integer, TileGrid>() {
@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<? extends Container> getContainer() {
return ContainerGrid.class;
}
@Override
public IItemHandler getDroppedItems() {
switch (getType()) {