Sync controller redstone state and energy state
This commit is contained in:
@@ -3,6 +3,7 @@ package refinedstorage.gui;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import refinedstorage.container.ContainerController;
|
||||
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||
import refinedstorage.tile.TileController;
|
||||
|
||||
import java.util.List;
|
||||
@@ -27,7 +28,7 @@ public class GuiController extends GuiBase {
|
||||
|
||||
@Override
|
||||
public void init(int x, int y) {
|
||||
//addSideButton(new SideButtonRedstoneMode(controller));
|
||||
addSideButton(new SideButtonRedstoneMode(TileController.REDSTONE_MODE));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -99,7 +100,7 @@ public class GuiController extends GuiBase {
|
||||
}
|
||||
|
||||
if (inBounds(barX, barY, barWidth, barHeight, mouseX, mouseY)) {
|
||||
drawTooltip(mouseX, mouseY, t("misc.refinedstorage:energy_usage", controller.getEnergyUsage()) + "\n" + t("misc.refinedstorage:energy_stored", controller.getEnergy().getEnergyStored(), controller.getEnergy().getMaxEnergyStored()));
|
||||
drawTooltip(mouseX, mouseY, t("misc.refinedstorage:energy_usage", TileController.ENERGY_USAGE.getValue()) + "\n" + t("misc.refinedstorage:energy_stored", TileController.ENERGY_STORED.getValue(), TileController.ENERGY_CAPACITY.getValue()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ package refinedstorage.gui.sidebutton;
|
||||
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import refinedstorage.gui.GuiBase;
|
||||
import refinedstorage.tile.config.IModeConfig;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
import refinedstorage.tile.data.TileDataManager;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
@@ -15,18 +15,18 @@ 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." + (parameter.getValue() == IModeConfig.WHITELIST ? "whitelist" : "blacklist"));
|
||||
return TextFormatting.GREEN + gui.t("sidebutton.refinedstorage:mode") + TextFormatting.RESET + "\n" + gui.t("sidebutton.refinedstorage:mode." + (parameter.getValue() == IFilterable.WHITELIST ? "whitelist" : "blacklist"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(GuiBase gui, int x, int y) {
|
||||
gui.bindTexture("icons.png");
|
||||
|
||||
gui.drawTexture(x, y + 1, parameter.getValue() == IModeConfig.WHITELIST ? 0 : 16, 64, 16, 16);
|
||||
gui.drawTexture(x, y + 1, parameter.getValue() == IFilterable.WHITELIST ? 0 : 16, 64, 16, 16);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed() {
|
||||
TileDataManager.setParameter(parameter, parameter.getValue() == IModeConfig.WHITELIST ? IModeConfig.BLACKLIST : IModeConfig.WHITELIST);
|
||||
TileDataManager.setParameter(parameter, parameter.getValue() == IFilterable.WHITELIST ? IFilterable.BLACKLIST : IFilterable.WHITELIST);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package refinedstorage.gui.sidebutton;
|
||||
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import refinedstorage.gui.GuiBase;
|
||||
import refinedstorage.tile.config.RedstoneMode;
|
||||
import refinedstorage.tile.data.TileDataManager;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
@@ -26,6 +25,6 @@ public class SideButtonRedstoneMode extends SideButton {
|
||||
|
||||
@Override
|
||||
public void actionPerformed() {
|
||||
TileDataManager.setParameter(parameter, RedstoneMode.getById(parameter.getValue()).next().id);
|
||||
TileDataManager.setParameter(parameter, parameter.getValue() + 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,11 +16,11 @@ 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.config.IComparable;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public class TileConstructor extends TileNode implements ICompareConfig {
|
||||
public static final TileDataParameter COMPARE = ICompareConfig.createConfigParameter();
|
||||
public class TileConstructor extends TileNode implements IComparable {
|
||||
public static final TileDataParameter COMPARE = IComparable.createParameter();
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraft.network.datasync.DataSerializers;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
@@ -41,13 +42,39 @@ import refinedstorage.integration.tesla.IntegrationTesla;
|
||||
import refinedstorage.item.ItemPattern;
|
||||
import refinedstorage.network.MessageGridDelta;
|
||||
import refinedstorage.network.MessageGridUpdate;
|
||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||
import refinedstorage.tile.config.IRedstoneConfigurable;
|
||||
import refinedstorage.tile.config.RedstoneMode;
|
||||
import refinedstorage.tile.data.ITileDataProducer;
|
||||
import refinedstorage.tile.data.TileDataManager;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
import refinedstorage.tile.externalstorage.ExternalStorage;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class TileController extends TileBase implements INetworkMaster, IEnergyReceiver, IRedstoneModeConfig {
|
||||
public class TileController extends TileBase implements INetworkMaster, IEnergyReceiver, IRedstoneConfigurable {
|
||||
public static final TileDataParameter REDSTONE_MODE = RedstoneMode.createParameter();
|
||||
|
||||
public static final TileDataParameter<Integer> ENERGY_USAGE = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileController>() {
|
||||
@Override
|
||||
public Integer getValue(TileController tile) {
|
||||
return tile.getEnergyUsage();
|
||||
}
|
||||
});
|
||||
|
||||
public static final TileDataParameter<Integer> ENERGY_STORED = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileController>() {
|
||||
@Override
|
||||
public Integer getValue(TileController tile) {
|
||||
return tile.getEnergy().getEnergyStored();
|
||||
}
|
||||
});
|
||||
|
||||
public static final TileDataParameter<Integer> ENERGY_CAPACITY = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileController>() {
|
||||
@Override
|
||||
public Integer getValue(TileController tile) {
|
||||
return tile.getEnergy().getMaxEnergyStored();
|
||||
}
|
||||
});
|
||||
|
||||
public static final String NBT_ENERGY = "Energy";
|
||||
public static final String NBT_ENERGY_CAPACITY = "EnergyCapacity";
|
||||
|
||||
@@ -85,7 +112,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
private EnergyStorage energy = new EnergyStorage(RefinedStorage.INSTANCE.controllerCapacity);
|
||||
private IControllerEnergyIC2 energyEU;
|
||||
private ControllerEnergyTesla energyTesla;
|
||||
private int energyUsage;
|
||||
|
||||
private int lastEnergyDisplay;
|
||||
private int lastEnergyComparator;
|
||||
@@ -99,6 +125,11 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
private List<ClientNode> clientNodes = new ArrayList<ClientNode>();
|
||||
|
||||
public TileController() {
|
||||
dataManager.addWatchedParameter(REDSTONE_MODE);
|
||||
dataManager.addWatchedParameter(ENERGY_USAGE);
|
||||
dataManager.addWatchedParameter(ENERGY_STORED);
|
||||
dataManager.addParameter(ENERGY_CAPACITY);
|
||||
|
||||
if (IntegrationIC2.isLoaded()) {
|
||||
this.energyEU = new ControllerEnergyIC2(this);
|
||||
} else {
|
||||
@@ -500,7 +531,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
|
||||
energy.writeToNBT(tag);
|
||||
|
||||
tag.setInteger(RedstoneMode.NBT, redstoneMode.id);
|
||||
tag.setInteger(RedstoneMode.NBT, redstoneMode.ordinal());
|
||||
|
||||
NBTTagList list = new NBTTagList();
|
||||
|
||||
@@ -579,19 +610,15 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
|
||||
@Override
|
||||
public int getEnergyUsage() {
|
||||
if (!worldObj.isRemote) {
|
||||
int usage = RefinedStorage.INSTANCE.controllerBaseUsage;
|
||||
int usage = RefinedStorage.INSTANCE.controllerBaseUsage;
|
||||
|
||||
for (INetworkNode node : nodeGraph.all()) {
|
||||
if (node.canUpdate()) {
|
||||
usage += node.getEnergyUsage();
|
||||
}
|
||||
for (INetworkNode node : nodeGraph.all()) {
|
||||
if (node.canUpdate()) {
|
||||
usage += node.getEnergyUsage();
|
||||
}
|
||||
|
||||
return usage;
|
||||
}
|
||||
|
||||
return energyUsage;
|
||||
return usage;
|
||||
}
|
||||
|
||||
public EnumControllerType getType() {
|
||||
@@ -602,7 +629,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
return type == null ? EnumControllerType.NORMAL : type;
|
||||
}
|
||||
|
||||
// @TODO: Make this work as well
|
||||
// @TODO: Sync client nodes
|
||||
/*@Override
|
||||
public void readContainerData(ByteBuf buf) {
|
||||
energy.setEnergyStored(buf.readInt());
|
||||
|
||||
@@ -14,16 +14,15 @@ import refinedstorage.RefinedStorage;
|
||||
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.ModeFilter;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
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();
|
||||
public class TileDestructor extends TileNode implements IComparable, IFilterable {
|
||||
public static final TileDataParameter COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter MODE = IFilterable.createParameter();
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
private static final String NBT_MODE = "Mode";
|
||||
@@ -34,7 +33,7 @@ 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 = IModeConfig.WHITELIST;
|
||||
private int mode = IFilterable.WHITELIST;
|
||||
|
||||
public TileDestructor() {
|
||||
dataManager.addWatchedParameter(COMPARE);
|
||||
@@ -55,7 +54,7 @@ public class TileDestructor extends TileNode implements ICompareConfig, IModeCon
|
||||
ItemStack frontStack = frontBlockState.getBlock().getItem(worldObj, front, frontBlockState);
|
||||
|
||||
if (frontStack != null) {
|
||||
if (ModeFilter.respectsMode(filters, mode, compare, frontStack)) {
|
||||
if (IFilterable.canTake(filters, mode, compare, frontStack)) {
|
||||
List<ItemStack> drops = frontBlockState.getBlock().getDrops(worldObj, front, frontBlockState, 0);
|
||||
|
||||
worldObj.playEvent(null, 2001, front, Block.getStateId(frontBlockState));
|
||||
|
||||
@@ -8,15 +8,15 @@ import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.RefinedStorageBlocks;
|
||||
import refinedstorage.api.network.INetworkMaster;
|
||||
import refinedstorage.inventory.ItemHandlerBasic;
|
||||
import refinedstorage.tile.config.ICompareConfig;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
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 TileDataParameter COMPARE = ICompareConfig.createConfigParameter();
|
||||
public class TileDetector extends TileNode implements IComparable {
|
||||
public static final TileDataParameter COMPARE = IComparable.createParameter();
|
||||
|
||||
public static final TileDataParameter<Integer> MODE = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileDetector>() {
|
||||
@Override
|
||||
|
||||
@@ -18,19 +18,18 @@ import refinedstorage.apiimpl.storage.NBTStorage;
|
||||
import refinedstorage.block.EnumStorageType;
|
||||
import refinedstorage.inventory.ItemHandlerBasic;
|
||||
import refinedstorage.inventory.ItemValidatorBasic;
|
||||
import refinedstorage.tile.config.ICompareConfig;
|
||||
import refinedstorage.tile.config.IModeConfig;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
import refinedstorage.tile.config.IPrioritizable;
|
||||
import refinedstorage.tile.config.ModeFilter;
|
||||
import refinedstorage.tile.data.TileDataManager;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
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 TileDiskDrive extends TileNode implements IStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable {
|
||||
public static final TileDataParameter PRIORITY = IPrioritizable.createParameter();
|
||||
public static final TileDataParameter COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter MODE = IFilterable.createParameter();
|
||||
|
||||
public class Storage extends NBTStorage {
|
||||
public Storage(ItemStack disk) {
|
||||
@@ -44,7 +43,7 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
|
||||
|
||||
@Override
|
||||
public ItemStack insertItem(ItemStack stack, int size, boolean simulate) {
|
||||
if (!ModeFilter.respectsMode(getFilters(), mode, getCompare(), stack)) {
|
||||
if (!IFilterable.canTake(getFilters(), mode, getCompare(), stack)) {
|
||||
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||
}
|
||||
|
||||
@@ -101,7 +100,7 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
|
||||
|
||||
private int priority = 0;
|
||||
private int compare = 0;
|
||||
private int mode = IModeConfig.WHITELIST;
|
||||
private int mode = IFilterable.WHITELIST;
|
||||
private int stored = 0;
|
||||
|
||||
public TileDiskDrive() {
|
||||
|
||||
@@ -12,11 +12,11 @@ import refinedstorage.apiimpl.autocrafting.CraftingTaskScheduler;
|
||||
import refinedstorage.inventory.ItemHandlerBasic;
|
||||
import refinedstorage.inventory.ItemHandlerUpgrade;
|
||||
import refinedstorage.item.ItemUpgrade;
|
||||
import refinedstorage.tile.config.ICompareConfig;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public class TileExporter extends TileNode implements ICompareConfig {
|
||||
public static final TileDataParameter COMPARE = ICompareConfig.createConfigParameter();
|
||||
public class TileExporter extends TileNode implements IComparable {
|
||||
public static final TileDataParameter COMPARE = IComparable.createParameter();
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
|
||||
|
||||
@@ -10,14 +10,13 @@ import refinedstorage.RefinedStorage;
|
||||
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.ModeFilter;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
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();
|
||||
public class TileImporter extends TileNode implements IComparable, IFilterable {
|
||||
public static final TileDataParameter COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter MODE = IFilterable.createParameter();
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
private static final String NBT_MODE = "Mode";
|
||||
@@ -26,7 +25,7 @@ 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 = IModeConfig.WHITELIST;
|
||||
private int mode = IFilterable.WHITELIST;
|
||||
|
||||
private int currentSlot;
|
||||
|
||||
@@ -55,7 +54,7 @@ public class TileImporter extends TileNode implements ICompareConfig, IModeConfi
|
||||
if (handler.getSlots() > 0) {
|
||||
ItemStack stack = handler.getStackInSlot(currentSlot);
|
||||
|
||||
if (stack == null || !ModeFilter.respectsMode(filters, mode, compare, stack)) {
|
||||
if (stack == null || !IFilterable.canTake(filters, mode, compare, stack)) {
|
||||
currentSlot++;
|
||||
} else if (ticks % upgrades.getSpeed() == 0) {
|
||||
int quantity = upgrades.hasUpgrade(ItemUpgrade.TYPE_STACK) ? 64 : 1;
|
||||
|
||||
@@ -11,11 +11,11 @@ import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.inventory.ItemHandlerBasic;
|
||||
import refinedstorage.inventory.ItemHandlerUpgrade;
|
||||
import refinedstorage.item.ItemUpgrade;
|
||||
import refinedstorage.tile.config.ICompareConfig;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public class TileInterface extends TileNode implements ICompareConfig {
|
||||
public static final TileDataParameter COMPARE = ICompareConfig.createConfigParameter();
|
||||
public class TileInterface extends TileNode implements IComparable {
|
||||
public static final TileDataParameter COMPARE = IComparable.createParameter();
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
|
||||
|
||||
@@ -2,36 +2,18 @@ package refinedstorage.tile;
|
||||
|
||||
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;
|
||||
import refinedstorage.api.network.INetworkNode;
|
||||
import refinedstorage.api.network.NetworkUtils;
|
||||
import refinedstorage.block.BlockNode;
|
||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||
import refinedstorage.tile.config.IRedstoneConfigurable;
|
||||
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, IRedstoneConfigurable {
|
||||
public static final TileDataParameter REDSTONE_MODE = RedstoneMode.createParameter();
|
||||
|
||||
private static final String NBT_CONNECTED = "Connected";
|
||||
|
||||
@@ -164,7 +146,7 @@ public abstract class TileNode extends TileBase implements INetworkNode, IRedsto
|
||||
public NBTTagCompound write(NBTTagCompound tag) {
|
||||
super.write(tag);
|
||||
|
||||
tag.setInteger(RedstoneMode.NBT, redstoneMode.id);
|
||||
tag.setInteger(RedstoneMode.NBT, redstoneMode.ordinal());
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
@@ -14,20 +14,19 @@ import refinedstorage.apiimpl.storage.NBTStorage;
|
||||
import refinedstorage.block.BlockStorage;
|
||||
import refinedstorage.block.EnumStorageType;
|
||||
import refinedstorage.inventory.ItemHandlerBasic;
|
||||
import refinedstorage.tile.config.ICompareConfig;
|
||||
import refinedstorage.tile.config.IModeConfig;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
import refinedstorage.tile.config.IPrioritizable;
|
||||
import refinedstorage.tile.config.ModeFilter;
|
||||
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, IPrioritizable {
|
||||
public static final TileDataParameter PRIORITY = IPrioritizable.createConfigParameter();
|
||||
public static final TileDataParameter COMPARE = ICompareConfig.createConfigParameter();
|
||||
public static final TileDataParameter MODE = IModeConfig.createConfigParameter();
|
||||
public class TileStorage extends TileNode implements IStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable {
|
||||
public static final TileDataParameter PRIORITY = IPrioritizable.createParameter();
|
||||
public static final TileDataParameter COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter MODE = IFilterable.createParameter();
|
||||
public static final TileDataParameter STORED = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileStorage>() {
|
||||
@Override
|
||||
public Integer getValue(TileStorage tile) {
|
||||
@@ -47,7 +46,7 @@ public class TileStorage extends TileNode implements IStorageProvider, IStorageG
|
||||
|
||||
@Override
|
||||
public ItemStack insertItem(ItemStack stack, int size, boolean simulate) {
|
||||
if (!ModeFilter.respectsMode(filters, mode, compare, stack)) {
|
||||
if (!IFilterable.canTake(filters, mode, compare, stack)) {
|
||||
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||
}
|
||||
|
||||
@@ -71,7 +70,7 @@ public class TileStorage extends TileNode implements IStorageProvider, IStorageG
|
||||
|
||||
private int priority = 0;
|
||||
private int compare = 0;
|
||||
private int mode = IModeConfig.WHITELIST;
|
||||
private int mode = IFilterable.WHITELIST;
|
||||
|
||||
public TileStorage() {
|
||||
dataManager.addWatchedParameter(PRIORITY);
|
||||
|
||||
@@ -7,17 +7,17 @@ import refinedstorage.tile.data.ITileDataProducer;
|
||||
import refinedstorage.tile.data.TileDataManager;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public interface ICompareConfig {
|
||||
static <T extends TileEntity> TileDataParameter createConfigParameter() {
|
||||
public interface IComparable {
|
||||
static <T extends TileEntity> TileDataParameter createParameter() {
|
||||
return TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, T>() {
|
||||
@Override
|
||||
public Integer getValue(T tile) {
|
||||
return ((ICompareConfig) tile).getCompare();
|
||||
return ((IComparable) tile).getCompare();
|
||||
}
|
||||
}, new ITileDataConsumer<Integer, T>() {
|
||||
@Override
|
||||
public void setValue(T tile, Integer value) {
|
||||
((ICompareConfig) tile).setCompare(value);
|
||||
((IComparable) tile).setCompare(value);
|
||||
}
|
||||
});
|
||||
}
|
||||
68
src/main/java/refinedstorage/tile/config/IFilterable.java
Executable file
68
src/main/java/refinedstorage/tile/config/IFilterable.java
Executable file
@@ -0,0 +1,68 @@
|
||||
package refinedstorage.tile.config;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.datasync.DataSerializers;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import refinedstorage.api.storage.CompareUtils;
|
||||
import refinedstorage.tile.data.ITileDataConsumer;
|
||||
import refinedstorage.tile.data.ITileDataProducer;
|
||||
import refinedstorage.tile.data.TileDataManager;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public interface IFilterable {
|
||||
int WHITELIST = 0;
|
||||
int BLACKLIST = 1;
|
||||
|
||||
static <T extends TileEntity> TileDataParameter createParameter() {
|
||||
return TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, T>() {
|
||||
@Override
|
||||
public Integer getValue(T tile) {
|
||||
return ((IFilterable) tile).getMode();
|
||||
}
|
||||
}, new ITileDataConsumer<Integer, T>() {
|
||||
@Override
|
||||
public void setValue(T tile, Integer value) {
|
||||
if (value == WHITELIST || value == BLACKLIST) {
|
||||
((IFilterable) tile).setMode(value);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
static boolean canTake(IItemHandler filters, int mode, int compare, ItemStack stack) {
|
||||
if (mode == WHITELIST) {
|
||||
int slots = 0;
|
||||
|
||||
for (int i = 0; i < filters.getSlots(); ++i) {
|
||||
ItemStack slot = filters.getStackInSlot(i);
|
||||
|
||||
if (slot != null) {
|
||||
slots++;
|
||||
|
||||
if (CompareUtils.compareStack(slot, stack, compare)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return slots == 0;
|
||||
} else if (mode == BLACKLIST) {
|
||||
for (int i = 0; i < filters.getSlots(); ++i) {
|
||||
ItemStack slot = filters.getStackInSlot(i);
|
||||
|
||||
if (slot != null && CompareUtils.compareStack(slot, stack, compare)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void setMode(int mode);
|
||||
|
||||
int getMode();
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
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();
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import refinedstorage.tile.data.TileDataManager;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public interface IPrioritizable {
|
||||
static <T extends TileEntity> TileDataParameter createConfigParameter() {
|
||||
static <T extends TileEntity> TileDataParameter createParameter() {
|
||||
return TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, T>() {
|
||||
@Override
|
||||
public Integer getValue(T tile) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package refinedstorage.tile.config;
|
||||
|
||||
public interface IRedstoneModeConfig {
|
||||
public interface IRedstoneConfigurable {
|
||||
RedstoneMode getRedstoneMode();
|
||||
|
||||
void setRedstoneMode(RedstoneMode mode);
|
||||
@@ -1,40 +0,0 @@
|
||||
package refinedstorage.tile.config;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import refinedstorage.api.storage.CompareUtils;
|
||||
|
||||
// @TODO: Move into IModeConfig
|
||||
public final class ModeFilter {
|
||||
public static boolean respectsMode(IItemHandler filters, int mode, int compare, ItemStack stack) {
|
||||
if (mode == IModeConfig.WHITELIST) {
|
||||
int slots = 0;
|
||||
|
||||
for (int i = 0; i < filters.getSlots(); ++i) {
|
||||
ItemStack slot = filters.getStackInSlot(i);
|
||||
|
||||
if (slot != null) {
|
||||
slots++;
|
||||
|
||||
if (CompareUtils.compareStack(slot, stack, compare)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return slots == 0;
|
||||
} else if (mode == IModeConfig.BLACKLIST) {
|
||||
for (int i = 0; i < filters.getSlots(); ++i) {
|
||||
ItemStack slot = filters.getStackInSlot(i);
|
||||
|
||||
if (slot != null && CompareUtils.compareStack(slot, stack, compare)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1,31 +1,19 @@
|
||||
package refinedstorage.tile.config;
|
||||
|
||||
import net.minecraft.network.datasync.DataSerializers;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import refinedstorage.tile.data.ITileDataConsumer;
|
||||
import refinedstorage.tile.data.ITileDataProducer;
|
||||
import refinedstorage.tile.data.TileDataManager;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
public enum RedstoneMode {
|
||||
IGNORE(0),
|
||||
HIGH(1),
|
||||
LOW(2);
|
||||
IGNORE, HIGH, LOW;
|
||||
|
||||
public static final String NBT = "RedstoneMode";
|
||||
|
||||
public final int id;
|
||||
|
||||
RedstoneMode(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public RedstoneMode next() {
|
||||
RedstoneMode next = getById(id + 1);
|
||||
|
||||
if (next == null) {
|
||||
return getById(0);
|
||||
}
|
||||
|
||||
return next;
|
||||
}
|
||||
|
||||
public boolean isEnabled(World world, BlockPos pos) {
|
||||
switch (this) {
|
||||
case IGNORE:
|
||||
@@ -39,14 +27,21 @@ public enum RedstoneMode {
|
||||
return false;
|
||||
}
|
||||
|
||||
// @TOOD: Remove id field
|
||||
public static RedstoneMode getById(int id) {
|
||||
for (RedstoneMode control : values()) {
|
||||
if (control.id == id) {
|
||||
return control;
|
||||
}
|
||||
}
|
||||
return id < 0 || id >= values().length ? IGNORE : values()[id];
|
||||
}
|
||||
|
||||
return null;
|
||||
public static <T extends TileEntity> TileDataParameter createParameter() {
|
||||
return TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, T>() {
|
||||
@Override
|
||||
public Integer getValue(T tile) {
|
||||
return ((IRedstoneConfigurable) tile).getRedstoneMode().ordinal();
|
||||
}
|
||||
}, new ITileDataConsumer<Integer, T>() {
|
||||
@Override
|
||||
public void setValue(T tile, Integer value) {
|
||||
((IRedstoneConfigurable) tile).setRedstoneMode(RedstoneMode.getById(value));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.ItemHandlerHelper;
|
||||
import powercrystals.minefactoryreloaded.api.IDeepStorageUnit;
|
||||
import refinedstorage.api.storage.CompareUtils;
|
||||
import refinedstorage.tile.config.ModeFilter;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.Collections;
|
||||
@@ -35,7 +35,7 @@ public class DeepStorageUnitStorage extends ExternalStorage {
|
||||
|
||||
@Override
|
||||
public ItemStack insertItem(@Nonnull ItemStack stack, int size, boolean simulate) {
|
||||
if (ModeFilter.respectsMode(externalStorage.getFilters(), externalStorage.getMode(), externalStorage.getCompare(), stack)) {
|
||||
if (IFilterable.canTake(externalStorage.getFilters(), externalStorage.getMode(), externalStorage.getCompare(), stack)) {
|
||||
if (unit.getStoredItemType() != null) {
|
||||
if (CompareUtils.compareStackNoQuantity(unit.getStoredItemType(), stack)) {
|
||||
if (getStored() + size > unit.getMaxStoredCount()) {
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IVoidable;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.ItemHandlerHelper;
|
||||
import refinedstorage.api.storage.CompareUtils;
|
||||
import refinedstorage.tile.config.ModeFilter;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -39,7 +39,7 @@ public class DrawerStorage extends ExternalStorage {
|
||||
|
||||
@Override
|
||||
public ItemStack insertItem(ItemStack stack, int size, boolean simulate) {
|
||||
if (ModeFilter.respectsMode(externalStorage.getFilters(), externalStorage.getMode(), externalStorage.getCompare(), stack) && drawer.canItemBeStored(stack)) {
|
||||
if (IFilterable.canTake(externalStorage.getFilters(), externalStorage.getMode(), externalStorage.getCompare(), stack) && drawer.canItemBeStored(stack)) {
|
||||
if (!drawer.isEmpty()) {
|
||||
if (getStored() + size > drawer.getMaxCapacity(stack)) {
|
||||
int remainingSpace = getCapacity() - getStored();
|
||||
|
||||
@@ -4,7 +4,7 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import net.minecraftforge.items.ItemHandlerHelper;
|
||||
import refinedstorage.api.storage.CompareUtils;
|
||||
import refinedstorage.tile.config.ModeFilter;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -38,7 +38,7 @@ public class ItemHandlerStorage extends ExternalStorage {
|
||||
|
||||
@Override
|
||||
public ItemStack insertItem(ItemStack stack, int size, boolean simulate) {
|
||||
if (ModeFilter.respectsMode(externalStorage.getFilters(), externalStorage.getMode(), externalStorage.getCompare(), stack)) {
|
||||
if (IFilterable.canTake(externalStorage.getFilters(), externalStorage.getMode(), externalStorage.getCompare(), stack)) {
|
||||
return ItemHandlerHelper.insertItem(handler, ItemHandlerHelper.copyStackWithSize(stack, size), simulate);
|
||||
}
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ import refinedstorage.api.storage.IStorageProvider;
|
||||
import refinedstorage.inventory.ItemHandlerBasic;
|
||||
import refinedstorage.tile.IStorageGui;
|
||||
import refinedstorage.tile.TileNode;
|
||||
import refinedstorage.tile.config.ICompareConfig;
|
||||
import refinedstorage.tile.config.IModeConfig;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
import refinedstorage.tile.config.IPrioritizable;
|
||||
import refinedstorage.tile.data.ITileDataProducer;
|
||||
import refinedstorage.tile.data.TileDataManager;
|
||||
@@ -24,10 +24,10 @@ import refinedstorage.tile.data.TileDataParameter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
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 class TileExternalStorage extends TileNode implements IStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable {
|
||||
public static final TileDataParameter PRIORITY = IPrioritizable.createParameter();
|
||||
public static final TileDataParameter COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter MODE = IFilterable.createParameter();
|
||||
|
||||
public static final TileDataParameter STORED = TileDataManager.createParameter(DataSerializers.VARINT, new ITileDataProducer<Integer, TileExternalStorage>() {
|
||||
@Override
|
||||
@@ -51,7 +51,7 @@ public class TileExternalStorage extends TileNode implements IStorageProvider, I
|
||||
|
||||
private int priority = 0;
|
||||
private int compare = 0;
|
||||
private int mode = IModeConfig.WHITELIST;
|
||||
private int mode = IFilterable.WHITELIST;
|
||||
|
||||
private List<ExternalStorage> storages = new ArrayList<ExternalStorage>();
|
||||
private int lastDrawerCount;
|
||||
|
||||
Reference in New Issue
Block a user