This commit is contained in:
raoulvdberge
2016-12-21 23:51:29 +01:00
parent 58695b1ab4
commit 2dc6a39da4
38 changed files with 218 additions and 130 deletions

View File

@@ -5,6 +5,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftin
import com.raoulvdberge.refinedstorage.api.autocrafting.preview.ICraftingPreviewElementRegistry;
import com.raoulvdberge.refinedstorage.api.autocrafting.registry.ICraftingTaskRegistry;
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeRegistry;
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel;
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandlerRegistry;
import com.raoulvdberge.refinedstorage.api.solderer.ISoldererRegistry;
@@ -28,6 +29,12 @@ public interface IRSAPI {
@Nonnull
IComparer getComparer();
/**
* @param dimension the dimension
* @return the network node registry for the given dimension
*/
INetworkNodeRegistry getNetworkNodeRegistry(int dimension);
/**
* @return the solderer registry
*/

View File

@@ -0,0 +1,14 @@
package com.raoulvdberge.refinedstorage.api.network;
import net.minecraft.util.math.BlockPos;
import javax.annotation.Nullable;
public interface INetworkNodeRegistry {
@Nullable
INetworkNode getNode(BlockPos pos);
void removeNode(BlockPos pos);
void setNode(BlockPos pos, INetworkNode node);
}

View File

@@ -9,6 +9,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.registry.ICraftingTaskRe
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
import com.raoulvdberge.refinedstorage.api.network.INetworkNode;
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeProxy;
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeRegistry;
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel;
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandlerRegistry;
import com.raoulvdberge.refinedstorage.api.solderer.ISoldererRegistry;
@@ -18,6 +19,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.Craf
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementRegistry;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementRegistry;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.registry.CraftingTaskRegistry;
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeRegistry;
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterChannel;
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterHandlerRegistry;
import com.raoulvdberge.refinedstorage.apiimpl.solderer.SoldererRegistry;
@@ -31,11 +33,15 @@ import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.discovery.ASMDataTable;
import net.minecraftforge.fml.relauncher.Side;
import javax.annotation.Nonnull;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.function.BiPredicate;
@@ -43,6 +49,8 @@ public class API implements IRSAPI {
private static final IRSAPI INSTANCE = new API();
private IComparer comparer = new Comparer();
private Map<Integer, INetworkNodeRegistry> networkNodeRegistryServer = new HashMap<>();
private Map<Integer, INetworkNodeRegistry> networkNodeRegistryClient = new HashMap<>();
private ISoldererRegistry soldererRegistry = new SoldererRegistry();
private ICraftingTaskRegistry craftingTaskRegistry = new CraftingTaskRegistry();
private ICraftingMonitorElementRegistry craftingMonitorElementRegistry = new CraftingMonitorElementRegistry();
@@ -79,6 +87,13 @@ public class API implements IRSAPI {
return comparer;
}
@Override
public INetworkNodeRegistry getNetworkNodeRegistry(int dimension) {
Map<Integer, INetworkNodeRegistry> registry = FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT ? networkNodeRegistryClient : networkNodeRegistryServer;
return registry.computeIfAbsent(dimension, r -> new NetworkNodeRegistry());
}
@Override
@Nonnull
public ISoldererRegistry getSoldererRegistry() {

View File

@@ -161,7 +161,8 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
} else {
for (EnumFacing checkSide : EnumFacing.VALUES) {
if (checkSide != side) { // Avoid going backward
INetworkNode nodeOnSide = NETWORK_NODE_PROXY_CAPABILITY.cast(tile.getCapability(NETWORK_NODE_PROXY_CAPABILITY, checkSide));
INetworkNodeProxy nodeOnSideProxy = NETWORK_NODE_PROXY_CAPABILITY.cast(tile.getCapability(NETWORK_NODE_PROXY_CAPABILITY, checkSide));
INetworkNode nodeOnSide = nodeOnSideProxy.getNode();
if (nodeOnSide == node) {
operator.apply(world, pos.offset(checkSide), checkSide.getOpposite());
}

View File

@@ -0,0 +1,29 @@
package com.raoulvdberge.refinedstorage.apiimpl.network;
import com.raoulvdberge.refinedstorage.api.network.INetworkNode;
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeRegistry;
import net.minecraft.util.math.BlockPos;
import javax.annotation.Nullable;
import java.util.HashMap;
import java.util.Map;
public class NetworkNodeRegistry implements INetworkNodeRegistry {
private Map<BlockPos, INetworkNode> nodes = new HashMap<>();
@Override
@Nullable
public INetworkNode getNode(BlockPos pos) {
return nodes.get(pos);
}
@Override
public void removeNode(BlockPos pos) {
nodes.remove(pos);
}
@Override
public void setNode(BlockPos pos, INetworkNode node) {
nodes.put(pos, node);
}
}

View File

@@ -11,6 +11,7 @@ import net.minecraft.block.state.IBlockState;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.items.IItemHandler;
@@ -27,6 +28,8 @@ public abstract class NetworkNode implements INetworkNode, INetworkNeighborhoodA
protected int ticks;
protected INetworkNodeHolder holder;
private boolean active;
public NetworkNode(INetworkNodeHolder holder) {
this.holder = holder;
}
@@ -64,9 +67,6 @@ public abstract class NetworkNode implements INetworkNode, INetworkNeighborhoodA
}
protected void onConnectedStateChange(INetworkMaster network, boolean state) {
if (hasConnectivityState()) {
RSUtils.updateBlock(holder.world(), holder.pos());
}
}
@Override
@@ -83,8 +83,14 @@ public abstract class NetworkNode implements INetworkNode, INetworkNeighborhoodA
public void update() {
++ticks;
if (couldUpdate != canUpdate()) {
couldUpdate = canUpdate();
boolean canUpdate = getNetwork() != null && canUpdate();
if (couldUpdate != canUpdate) {
couldUpdate = canUpdate;
if (hasConnectivityState()) {
RSUtils.updateBlock(holder.world(), holder.pos());
}
if (network != null) {
onConnectedStateChange(network, couldUpdate);
@@ -141,6 +147,10 @@ public abstract class NetworkNode implements INetworkNode, INetworkNeighborhoodA
}
}
public TileEntity getFacingTile() {
return holder.world().getTileEntity(holder.pos().offset(holder.getDirection()));
}
public IItemHandler getDrops() {
return null;
}
@@ -148,4 +158,26 @@ public abstract class NetworkNode implements INetworkNode, INetworkNeighborhoodA
public boolean hasConnectivityState() {
return false;
}
public boolean isActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
@Override
public boolean equals(Object o) {
return o instanceof NetworkNode
&& holder.pos().equals(((NetworkNode) o).holder.pos())
&& holder.world().provider.getDimension() == ((NetworkNode) o).holder.world().provider.getDimension();
}
@Override
public int hashCode() {
int result = holder.pos().hashCode();
result = 31 * result + holder.world().provider.getDimension();
return result;
}
}

View File

@@ -6,8 +6,8 @@ import com.raoulvdberge.refinedstorage.RSUtils;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.container.slot.SlotFilter;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerUpgrade;
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder;
@@ -47,7 +47,7 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable,
private static final int BASE_SPEED = 20;
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(1, new ItemHandlerChangeListenerNode(this)) {
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(1, new ItemHandlerListenerNetworkNode(this)) {
@Override
protected void onContentsChanged(int slot) {
super.onContentsChanged(slot);
@@ -57,9 +57,9 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable,
}
};
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(1, new ItemHandlerChangeListenerNode(this));
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(1, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerChangeListenerNode(this), ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_CRAFTING);
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerListenerNetworkNode(this), ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_CRAFTING);
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;
private int type = IType.ITEMS;

View File

@@ -8,13 +8,12 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternProvider
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerUpgrade;
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
@@ -25,7 +24,7 @@ import java.util.List;
public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternContainer {
private static final String NBT_TRIGGERED_AUTOCRAFTING = "TriggeredAutocrafting";
private ItemHandlerBasic patterns = new ItemHandlerBasic(9, new ItemHandlerChangeListenerNode(this), s -> {
private ItemHandlerBasic patterns = new ItemHandlerBasic(9, new ItemHandlerListenerNetworkNode(this), s -> {
// We can only validate the crafting pattern if the world exists.
// If the world doesn't exist, this is probably called while reading and in that case it doesn't matter.
if (holder.world() != null) {
@@ -50,7 +49,7 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC
private List<ICraftingPattern> actualPatterns = new ArrayList<>();
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerChangeListenerNode(this), ItemUpgrade.TYPE_SPEED);
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerListenerNetworkNode(this), ItemUpgrade.TYPE_SPEED);
private boolean triggeredAutocrafting = false;
@@ -163,11 +162,6 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC
return RSUtils.getItemHandler(getFacingTile(), holder.getDirection().getOpposite());
}
@Override
public TileEntity getFacingTile() {
return holder.world().getTileEntity(holder.pos().offset(holder.getDirection()));
}
@Override
public List<ICraftingPattern> getPatterns() {
return actualPatterns;

View File

@@ -49,11 +49,6 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting
return network != null ? network.getPosition() : null;
}
@Override
public boolean isActive() {
return ((TileCraftingMonitor) holder.world().getTileEntity(holder.pos())).isActive();
}
public void onOpened(EntityPlayer player) {
if (network != null) {
network.sendCraftingMonitorUpdate((EntityPlayerMP) player);

View File

@@ -4,8 +4,8 @@ import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSUtils;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerUpgrade;
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder;
@@ -48,10 +48,10 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
private static final int BASE_SPEED = 20;
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerChangeListenerNode(this), ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_SILK_TOUCH, ItemUpgrade.TYPE_FORTUNE);
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerListenerNetworkNode(this), ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_SILK_TOUCH, ItemUpgrade.TYPE_FORTUNE);
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;
private int mode = IFilterable.WHITELIST;

View File

@@ -8,8 +8,8 @@ import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder;
import com.raoulvdberge.refinedstorage.tile.TileDetector;
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
@@ -33,8 +33,8 @@ public class NetworkNodeDetector extends NetworkNode implements IComparable, ITy
private static final String NBT_AMOUNT = "Amount";
private static final String NBT_TYPE = "Type";
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(1, new ItemHandlerChangeListenerNode(this));
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(1, new ItemHandlerChangeListenerNode(this));
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(1, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(1, new ItemHandlerListenerNetworkNode(this));
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;
private int type = IType.ITEMS;

View File

@@ -14,8 +14,8 @@ import com.raoulvdberge.refinedstorage.block.EnumFluidStorageType;
import com.raoulvdberge.refinedstorage.block.EnumItemStorageType;
import com.raoulvdberge.refinedstorage.inventory.IItemValidator;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder;
import com.raoulvdberge.refinedstorage.tile.IStorageGui;
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
@@ -133,7 +133,7 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IStorageGui, IS
private static final String NBT_TYPE = "Type";
private static final String NBT_VOID_EXCESS = "VoidExcess";
private ItemHandlerBasic disks = new ItemHandlerBasic(8, new ItemHandlerChangeListenerNode(this), IItemValidator.STORAGE_DISK) {
private ItemHandlerBasic disks = new ItemHandlerBasic(8, new ItemHandlerListenerNetworkNode(this), IItemValidator.STORAGE_DISK) {
@Override
protected void onContentsChanged(int slot) {
super.onContentsChanged(slot);
@@ -164,8 +164,8 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IStorageGui, IS
}
};
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, new ItemHandlerListenerNetworkNode(this));
private StorageItem itemStorages[] = new StorageItem[8];
private StorageFluid fluidStorages[] = new StorageFluid[8];

View File

@@ -43,9 +43,9 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
private StorageItem[] itemStorages = new StorageItem[6];
private StorageFluid[] fluidStorages = new StorageFluid[6];
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerChangeListenerNode(this), ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK);
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerListenerNetworkNode(this), ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK);
private ItemHandlerBasic inputDisks = new ItemHandlerBasic(3, new ItemHandlerChangeListenerNode(this), IItemValidator.STORAGE_DISK) {
private ItemHandlerBasic inputDisks = new ItemHandlerBasic(3, new ItemHandlerListenerNetworkNode(this), IItemValidator.STORAGE_DISK) {
@Override
protected void onContentsChanged(int slot) {
super.onContentsChanged(slot);
@@ -72,7 +72,7 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
}
};
private ItemHandlerBasic outputDisks = new ItemHandlerBasic(3, new ItemHandlerChangeListenerNode(this), IItemValidator.STORAGE_DISK) {
private ItemHandlerBasic outputDisks = new ItemHandlerBasic(3, new ItemHandlerListenerNetworkNode(this), IItemValidator.STORAGE_DISK) {
@Override
protected void onContentsChanged(int slot) {
super.onContentsChanged(slot);
@@ -191,8 +191,8 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
}
}
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, new ItemHandlerListenerNetworkNode(this));
@Override
public int getEnergyUsage() {

View File

@@ -5,8 +5,8 @@ import com.raoulvdberge.refinedstorage.RSUtils;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerUpgrade;
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder;
@@ -27,10 +27,10 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
private static final String NBT_TYPE = "Type";
private static final String NBT_REGULATOR = "Regulator";
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerChangeListenerNode(this), ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_CRAFTING, ItemUpgrade.TYPE_STACK);
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerListenerNetworkNode(this), ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_CRAFTING, ItemUpgrade.TYPE_STACK);
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;
private int type = IType.ITEMS;

View File

@@ -4,8 +4,8 @@ import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSUtils;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerUpgrade;
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder;
@@ -53,10 +53,10 @@ public class NetworkNodeFluidInterface extends NetworkNode implements IComparabl
}
};
private ItemHandlerBasic in = new ItemHandlerBasic(1, new ItemHandlerChangeListenerNode(this));
private ItemHandlerFluid out = new ItemHandlerFluid(1, new ItemHandlerChangeListenerNode(this));
private ItemHandlerBasic in = new ItemHandlerBasic(1, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerFluid out = new ItemHandlerFluid(1, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerChangeListenerNode(this), ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK);
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerListenerNetworkNode(this), ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK);
public NetworkNodeFluidInterface(INetworkNodeHolder holder) {
super(holder);

View File

@@ -11,8 +11,8 @@ import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageFluidNBT;
import com.raoulvdberge.refinedstorage.block.BlockFluidStorage;
import com.raoulvdberge.refinedstorage.block.EnumFluidStorageType;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder;
import com.raoulvdberge.refinedstorage.tile.IStorageGui;
import com.raoulvdberge.refinedstorage.tile.TileFluidStorage;
@@ -62,7 +62,7 @@ public class NetworkNodeFluidStorage extends NetworkNode implements IStorageGui,
private static final String NBT_MODE = "Mode";
private static final String NBT_VOID_EXCESS = "VoidExcess";
private ItemHandlerFluid filters = new ItemHandlerFluid(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerFluid filters = new ItemHandlerFluid(9, new ItemHandlerListenerNetworkNode(this));
private NBTTagCompound storageTag = StorageFluidNBT.createNBT();

View File

@@ -14,8 +14,8 @@ import com.raoulvdberge.refinedstorage.container.ContainerGrid;
import com.raoulvdberge.refinedstorage.gui.grid.GridFilter;
import com.raoulvdberge.refinedstorage.gui.grid.GridTab;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerGridFilterInGrid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.inventory.ItemValidatorBasic;
import com.raoulvdberge.refinedstorage.item.ItemPattern;
import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder;
@@ -77,7 +77,7 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
private InventoryCrafting matrix = new InventoryCrafting(craftingContainer, 3, 3);
private InventoryCraftResult result = new InventoryCraftResult();
private ItemHandlerBasic patterns = new ItemHandlerBasic(2, new ItemHandlerChangeListenerNode(this), new ItemValidatorBasic(RSItems.PATTERN));
private ItemHandlerBasic patterns = new ItemHandlerBasic(2, new ItemHandlerListenerNetworkNode(this), new ItemValidatorBasic(RSItems.PATTERN));
private List<GridFilter> filteredItems = new ArrayList<>();
private List<GridTab> tabs = new ArrayList<>();
private ItemHandlerGridFilterInGrid filter = new ItemHandlerGridFilterInGrid(filteredItems, tabs);
@@ -438,11 +438,6 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
return TileGrid.REDSTONE_MODE;
}
@Override
public boolean isActive() {
return ((TileGrid) holder.world().getTileEntity(holder.pos())).isActive();
}
@Override
public boolean hasConnectivityState() {
return true;

View File

@@ -4,8 +4,8 @@ import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSUtils;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerUpgrade;
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder;
@@ -27,10 +27,10 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi
private static final String NBT_MODE = "Mode";
private static final String NBT_TYPE = "Type";
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerChangeListenerNode(this), ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK);
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerListenerNetworkNode(this), ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK);
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;
private int mode = IFilterable.WHITELIST;

View File

@@ -4,8 +4,8 @@ import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSUtils;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerInterface;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerUpgrade;
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder;
@@ -18,14 +18,14 @@ import net.minecraftforge.items.wrapper.CombinedInvWrapper;
public class NetworkNodeInterface extends NetworkNode implements IComparable {
private static final String NBT_COMPARE = "Compare";
private ItemHandlerBasic importItems = new ItemHandlerBasic(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerBasic importItems = new ItemHandlerBasic(9, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerBasic exportSpecimenItems = new ItemHandlerBasic(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerBasic exportItems = new ItemHandlerBasic(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerBasic exportSpecimenItems = new ItemHandlerBasic(9, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerBasic exportItems = new ItemHandlerBasic(9, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerInterface items = new ItemHandlerInterface(importItems, exportItems);
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerChangeListenerNode(this), ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK, ItemUpgrade.TYPE_CRAFTING);
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerListenerNetworkNode(this), ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK, ItemUpgrade.TYPE_CRAFTING);
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;

View File

@@ -4,7 +4,7 @@ import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.RSUtils;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerUpgrade;
import com.raoulvdberge.refinedstorage.inventory.ItemValidatorBasic;
import com.raoulvdberge.refinedstorage.item.ItemNetworkCard;
@@ -21,7 +21,7 @@ import net.minecraftforge.items.wrapper.CombinedInvWrapper;
import javax.annotation.Nullable;
public class NetworkNodeNetworkTransmitter extends NetworkNode {
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(1, new ItemHandlerChangeListenerNode(this), ItemUpgrade.TYPE_INTERDIMENSIONAL) {
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(1, new ItemHandlerListenerNetworkNode(this), ItemUpgrade.TYPE_INTERDIMENSIONAL) {
@Override
protected void onContentsChanged(int slot) {
super.onContentsChanged(slot);
@@ -32,7 +32,7 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode {
}
};
private ItemHandlerBasic networkCard = new ItemHandlerBasic(1, new ItemHandlerChangeListenerNode(this), new ItemValidatorBasic(RSItems.NETWORK_CARD)) {
private ItemHandlerBasic networkCard = new ItemHandlerBasic(1, new ItemHandlerListenerNetworkNode(this), new ItemValidatorBasic(RSItems.NETWORK_CARD)) {
@Override
protected void onContentsChanged(int slot) {
super.onContentsChanged(slot);

View File

@@ -9,7 +9,7 @@ import com.raoulvdberge.refinedstorage.api.network.security.ISecurityCardContain
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.apiimpl.network.security.SecurityCard;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.inventory.ItemValidatorBasic;
import com.raoulvdberge.refinedstorage.item.ItemSecurityCard;
import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder;
@@ -28,7 +28,7 @@ public class NetworkNodeSecurityManager extends NetworkNode implements ISecurity
private List<ISecurityCard> actualCards = new ArrayList<>();
private ItemHandlerBasic cards = new ItemHandlerBasic(9 * 2, new ItemHandlerChangeListenerNode(this), new ItemValidatorBasic(RSItems.SECURITY_CARD)) {
private ItemHandlerBasic cards = new ItemHandlerBasic(9 * 2, new ItemHandlerListenerNetworkNode(this), new ItemValidatorBasic(RSItems.SECURITY_CARD)) {
@Override
protected void onContentsChanged(int slot) {
super.onContentsChanged(slot);
@@ -42,7 +42,7 @@ public class NetworkNodeSecurityManager extends NetworkNode implements ISecurity
}
}
};
private ItemHandlerBasic editCard = new ItemHandlerBasic(1, new ItemHandlerChangeListenerNode(this), new ItemValidatorBasic(RSItems.SECURITY_CARD));
private ItemHandlerBasic editCard = new ItemHandlerBasic(1, new ItemHandlerListenerNetworkNode(this), new ItemValidatorBasic(RSItems.SECURITY_CARD));
@Nullable
private UUID owner;

View File

@@ -6,7 +6,7 @@ import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
import com.raoulvdberge.refinedstorage.api.solderer.ISoldererRecipe;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerUpgrade;
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder;
@@ -21,7 +21,7 @@ public class NetworkNodeSolderer extends NetworkNode {
private static final String NBT_WORKING = "Working";
private static final String NBT_PROGRESS = "Progress";
private ItemHandlerBasic items = new ItemHandlerBasic(3, new ItemHandlerChangeListenerNode(this)) {
private ItemHandlerBasic items = new ItemHandlerBasic(3, new ItemHandlerListenerNetworkNode(this)) {
@Override
@Nonnull
public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) {
@@ -34,14 +34,14 @@ public class NetworkNodeSolderer extends NetworkNode {
return stack;
}
};
private ItemHandlerBasic result = new ItemHandlerBasic(1, new ItemHandlerChangeListenerNode(this)) {
private ItemHandlerBasic result = new ItemHandlerBasic(1, new ItemHandlerListenerNetworkNode(this)) {
@Override
@Nonnull
public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) {
return stack;
}
};
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerChangeListenerNode(this), ItemUpgrade.TYPE_SPEED);
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerListenerNetworkNode(this), ItemUpgrade.TYPE_SPEED);
private ISoldererRecipe recipe;

View File

@@ -12,7 +12,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageItemNBT;
import com.raoulvdberge.refinedstorage.block.BlockStorage;
import com.raoulvdberge.refinedstorage.block.EnumItemStorageType;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder;
import com.raoulvdberge.refinedstorage.tile.IStorageGui;
import com.raoulvdberge.refinedstorage.tile.TileStorage;
@@ -64,7 +64,7 @@ public class NetworkNodeStorage extends NetworkNode implements IStorageGui, ISto
private static final String NBT_MODE = "Mode";
private static final String NBT_VOID_EXCESS = "VoidExcess";
private ItemHandlerBasic filters = new ItemHandlerBasic(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerBasic filters = new ItemHandlerBasic(9, new ItemHandlerListenerNetworkNode(this));
private NBTTagCompound storageTag = StorageItemNBT.createNBT();

View File

@@ -4,7 +4,7 @@ import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSUtils;
import com.raoulvdberge.refinedstorage.api.network.IWirelessTransmitter;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerUpgrade;
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder;
@@ -16,7 +16,7 @@ import net.minecraftforge.items.IItemHandler;
import javax.annotation.Nullable;
public class NetworkNodeWirelessTransmitter extends NetworkNode implements IWirelessTransmitter {
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerChangeListenerNode(this), ItemUpgrade.TYPE_RANGE);
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerListenerNetworkNode(this), ItemUpgrade.TYPE_RANGE);
public NetworkNodeWirelessTransmitter(INetworkNodeHolder holder) {
super(holder);

View File

@@ -51,10 +51,9 @@ public class NetworkNodeWriter extends NetworkNode implements IWriter {
redstoneStrength = strength;
}
// @todo
@Override
public EnumFacing getDirection() {
return null;
return holder.getDirection();
}
@Override
@@ -110,15 +109,6 @@ public class NetworkNodeWriter extends NetworkNode implements IWriter {
return tag;
}
// @todo
/*
@Override
public void setDirection(EnumFacing direction) {
super.setDirection(direction);
world.notifyNeighborsOfStateChange(pos, RSBlocks.WRITER, true);
}*/
public void onOpened(EntityPlayer entity) {
if (network != null) {
network.sendReaderWriterChannelUpdate((EntityPlayerMP) entity);

View File

@@ -11,8 +11,8 @@ import com.raoulvdberge.refinedstorage.api.storage.IStorageProvider;
import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerNode;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.tile.INetworkNodeHolder;
import com.raoulvdberge.refinedstorage.tile.IStorageGui;
import com.raoulvdberge.refinedstorage.tile.TileExternalStorage;
@@ -37,8 +37,8 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
private static final String NBT_MODE = "Mode";
private static final String NBT_TYPE = "Type";
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, new ItemHandlerChangeListenerNode(this));
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, new ItemHandlerListenerNetworkNode(this));
private int priority = 0;
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;

View File

@@ -19,11 +19,9 @@ public class StorageItemItemHandler extends StorageItemExternal {
this.externalStorage = externalStorage;
this.handler = handler;
// @todo
/*
if (externalStorage.getFacingTile().getBlockType().getUnlocalizedName().equals("tile.ExtraUtils2:TrashCan")) {
lockedAccessType = AccessType.INSERT;
}*/
}
}
@Override

View File

@@ -1,6 +1,7 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
import com.raoulvdberge.refinedstorage.tile.TileNode;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockStateContainer;
@@ -51,7 +52,7 @@ public abstract class BlockNode extends BlockBase {
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) {
if (hasConnectivityState()) {
return super.getActualState(state, world, pos).withProperty(CONNECTED, ((TileNode) world.getTileEntity(pos)).isActive());
return super.getActualState(state, world, pos).withProperty(CONNECTED, ((NetworkNode) ((TileNode) world.getTileEntity(pos)).getNode()).isActive());
}
return super.getActualState(state, world, pos);

View File

@@ -1,5 +1,5 @@
package com.raoulvdberge.refinedstorage.inventory;
public interface IItemHandlerChangeListener {
public interface IItemHandlerListener {
void onChanged(int slot);
}

View File

@@ -6,11 +6,11 @@ import net.minecraftforge.items.ItemStackHandler;
import javax.annotation.Nonnull;
public class ItemHandlerBasic extends ItemStackHandler {
private IItemHandlerChangeListener listener;
private IItemHandlerListener listener;
protected IItemValidator[] validators;
public ItemHandlerBasic(int size, IItemHandlerChangeListener listener, IItemValidator... validators) {
public ItemHandlerBasic(int size, IItemHandlerListener listener, IItemValidator... validators) {
super(size);
this.listener = listener;

View File

@@ -8,7 +8,7 @@ import net.minecraftforge.items.ItemHandlerHelper;
public class ItemHandlerFluid extends ItemHandlerBasic {
private FluidStack[] fluids;
public ItemHandlerFluid(int size, IItemHandlerChangeListener listener) {
public ItemHandlerFluid(int size, IItemHandlerListener listener) {
super(size, listener, s -> RSUtils.getFluidFromStack(ItemHandlerHelper.copyStackWithSize(s, 1), true).getValue() != null);
this.fluids = new FluidStack[size];

View File

@@ -2,10 +2,10 @@ package com.raoulvdberge.refinedstorage.inventory;
import com.raoulvdberge.refinedstorage.api.network.INetworkNode;
public class ItemHandlerChangeListenerNode implements IItemHandlerChangeListener {
public class ItemHandlerListenerNetworkNode implements IItemHandlerListener {
private INetworkNode node;
public ItemHandlerChangeListenerNode(INetworkNode node) {
public ItemHandlerListenerNetworkNode(INetworkNode node) {
this.node = node;
}

View File

@@ -2,10 +2,10 @@ package com.raoulvdberge.refinedstorage.inventory;
import net.minecraft.tileentity.TileEntity;
public class ItemHandlerChangeListenerTile implements IItemHandlerChangeListener {
public class ItemHandlerListenerTile implements IItemHandlerListener {
private TileEntity tile;
public ItemHandlerChangeListenerTile(TileEntity tile) {
public ItemHandlerListenerTile(TileEntity tile) {
this.tile = tile;
}

View File

@@ -4,7 +4,7 @@ import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
public class ItemHandlerUpgrade extends ItemHandlerBasic {
public ItemHandlerUpgrade(int size, IItemHandlerChangeListener listener, int... supportedUpgrades) {
public ItemHandlerUpgrade(int size, IItemHandlerListener listener, int... supportedUpgrades) {
super(size, listener, new IItemValidator[supportedUpgrades.length]);
for (int i = 0; i < supportedUpgrades.length; ++i) {

View File

@@ -35,6 +35,8 @@ public abstract class TileBase extends TileEntity implements ITickable {
public void setDirection(EnumFacing direction) {
this.direction = direction;
world.notifyNeighborsOfStateChange(pos, getWorld().getBlockState(pos).getBlock(), true);
markDirty();
}

View File

@@ -346,7 +346,9 @@ public class TileController extends TileBase implements INetworkMaster, IRedston
public void invalidate() {
super.invalidate();
nodeGraph.disconnectAll();
if (getWorld() != null && !getWorld().isRemote) {
nodeGraph.disconnectAll();
}
}
@Override
@@ -928,7 +930,9 @@ public class TileController extends TileBase implements INetworkMaster, IRedston
@Override
public ItemStack getItemStack() {
IBlockState state = getWorld().getBlockState(pos);
Item item = Item.getItemFromBlock(state.getBlock());
return new ItemStack(item, 1, state.getBlock().getMetaFromState(state));
}

View File

@@ -2,6 +2,8 @@ package com.raoulvdberge.refinedstorage.tile;
import com.raoulvdberge.refinedstorage.api.network.INetworkNode;
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeProxy;
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeRegistry;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
import com.raoulvdberge.refinedstorage.proxy.CapabilityNetworkNodeProxy;
import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable;
@@ -12,8 +14,6 @@ import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.items.IItemHandler;
import javax.annotation.Nullable;
@@ -23,8 +23,6 @@ public abstract class TileNode extends TileBase implements INetworkNodeProxy, IN
private static final String NBT_ACTIVE = "Active";
private boolean active;
public TileNode() {
dataManager.addWatchedParameter(REDSTONE_MODE);
}
@@ -33,7 +31,24 @@ public abstract class TileNode extends TileBase implements INetworkNodeProxy, IN
public void update() {
super.update();
getNode().update();
if (!getWorld().isRemote) {
getNode().update();
}
}
@Override
public void invalidate() {
super.invalidate();
if (getWorld() != null && !getWorld().isRemote) {
INetworkNode node = getNode();
API.instance().getNetworkNodeRegistry(getWorld().provider.getDimension()).removeNode(pos);
if (node.getNetwork() != null) {
node.getNetwork().getNodeGraph().rebuild();
}
}
}
@Override
@@ -75,17 +90,13 @@ public abstract class TileNode extends TileBase implements INetworkNodeProxy, IN
public NBTTagCompound writeUpdate(NBTTagCompound tag) {
super.writeUpdate(tag);
if (((NetworkNode) getNode()).hasConnectivityState()) {
tag.setBoolean(NBT_ACTIVE, getNode().getNetwork() != null && getNode().canUpdate());
}
tag.setBoolean(NBT_ACTIVE, getNode().getNetwork() != null && getNode().canUpdate());
return tag;
}
public void readUpdate(NBTTagCompound tag) {
if (((NetworkNode) getNode()).hasConnectivityState()) {
active = tag.getBoolean(NBT_ACTIVE);
}
((NetworkNode) getNode()).setActive(tag.getBoolean(NBT_ACTIVE));
super.readUpdate(tag);
}
@@ -94,17 +105,17 @@ public abstract class TileNode extends TileBase implements INetworkNodeProxy, IN
return ((NetworkNode) getNode()).getDrops();
}
// @TODO
private INetworkNode node;
@Override
public INetworkNode getNode() {
return node == null ? (node = createNode()) : node;
}
INetworkNodeRegistry registry = API.instance().getNetworkNodeRegistry(getWorld().provider.getDimension());
@SideOnly(Side.CLIENT)
public boolean isActive() {
return active;
INetworkNode node = registry.getNode(pos);
if (node == null) {
registry.setNode(pos, node = createNode());
}
return node;
}
@Override

View File

@@ -4,7 +4,7 @@ import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.RSUtils;
import com.raoulvdberge.refinedstorage.gui.GuiProcessingPatternEncoder;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerChangeListenerTile;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerTile;
import com.raoulvdberge.refinedstorage.inventory.ItemValidatorBasic;
import com.raoulvdberge.refinedstorage.item.ItemPattern;
import com.raoulvdberge.refinedstorage.tile.data.ITileDataConsumer;
@@ -42,8 +42,8 @@ public class TileProcessingPatternEncoder extends TileBase {
}
});
private ItemHandlerBasic patterns = new ItemHandlerBasic(2, new ItemHandlerChangeListenerTile(this), new ItemValidatorBasic(RSItems.PATTERN));
private ItemHandlerBasic configuration = new ItemHandlerBasic(9 * 2, new ItemHandlerChangeListenerTile(this));
private ItemHandlerBasic patterns = new ItemHandlerBasic(2, new ItemHandlerListenerTile(this), new ItemValidatorBasic(RSItems.PATTERN));
private ItemHandlerBasic configuration = new ItemHandlerBasic(9 * 2, new ItemHandlerListenerTile(this));
private boolean oredictPattern;