Reworked storage network code, should fix weird machine disconnection issues
This commit is contained in:
@@ -5,6 +5,8 @@
|
|||||||
- Updated Dutch translation for Fluid Storage (raoulvdberge)
|
- Updated Dutch translation for Fluid Storage (raoulvdberge)
|
||||||
- Added Chinese translation (TartaricAcid)
|
- Added Chinese translation (TartaricAcid)
|
||||||
- Added Crafting Tweaks integration (blay09)
|
- Added Crafting Tweaks integration (blay09)
|
||||||
|
- Reworked storage network code, should fix weird machine disconnection issues (raoulvdberge)
|
||||||
|
- Fixed that the Fluid Storage Disk recipe returns an invalid disk (raoulvdberge)
|
||||||
|
|
||||||
### 0.9.2
|
### 0.9.2
|
||||||
**Bugfixes**
|
**Bugfixes**
|
||||||
|
|||||||
@@ -1,10 +1,55 @@
|
|||||||
package refinedstorage.api;
|
package refinedstorage.api;
|
||||||
|
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import refinedstorage.api.network.INetworkMaster;
|
||||||
|
import refinedstorage.api.network.INetworkNode;
|
||||||
|
import refinedstorage.api.network.registry.INetworkRegistry;
|
||||||
|
import refinedstorage.api.network.registry.INetworkRegistryProvider;
|
||||||
import refinedstorage.api.solderer.ISoldererRegistry;
|
import refinedstorage.api.solderer.ISoldererRegistry;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public final class RefinedStorageAPI {
|
public final class RefinedStorageAPI {
|
||||||
/**
|
/**
|
||||||
* The solderer registry, set in pre-initialization
|
* The solderer registry, set in pre-initialization
|
||||||
*/
|
*/
|
||||||
public static ISoldererRegistry SOLDERER_REGISTRY;
|
public static ISoldererRegistry SOLDERER_REGISTRY;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The network registry provider, set in pre-initialization
|
||||||
|
*/
|
||||||
|
public static INetworkRegistryProvider NETWORK_REGISTRY_PROVIDER;
|
||||||
|
|
||||||
|
private static final Map<Integer, INetworkRegistry> NETWORK_REGISTRY = new HashMap<>();
|
||||||
|
|
||||||
|
public static INetworkRegistry getNetworkRegistry(World world) {
|
||||||
|
return getNetworkRegistry(world.provider.getDimension());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void removeNetworkRegistry(World world) {
|
||||||
|
NETWORK_REGISTRY.remove(world.provider.getDimension());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static INetworkRegistry getNetworkRegistry(int dimension) {
|
||||||
|
if (!NETWORK_REGISTRY.containsKey(dimension)) {
|
||||||
|
NETWORK_REGISTRY.put(dimension, NETWORK_REGISTRY_PROVIDER.provide(dimension));
|
||||||
|
}
|
||||||
|
|
||||||
|
return NETWORK_REGISTRY.get(dimension);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static INetworkMaster getNetwork(INetworkNode node) {
|
||||||
|
for (INetworkRegistry registry : NETWORK_REGISTRY.values()) {
|
||||||
|
for (INetworkMaster network : registry.getNetworks()) {
|
||||||
|
for (INetworkNode otherNode : network.getNodeGraph().all()) {
|
||||||
|
if (node.equals(otherNode)) {
|
||||||
|
return network;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
41
src/main/java/refinedstorage/api/network/registry/INetworkRegistry.java
Executable file
41
src/main/java/refinedstorage/api/network/registry/INetworkRegistry.java
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
package refinedstorage.api.network.registry;
|
||||||
|
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import refinedstorage.api.network.INetworkMaster;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A registry of all Refined Storage networks on this server.
|
||||||
|
*/
|
||||||
|
public interface INetworkRegistry {
|
||||||
|
/**
|
||||||
|
* Adds a network to the registry.
|
||||||
|
*
|
||||||
|
* @param network The network
|
||||||
|
*/
|
||||||
|
void addNetwork(@Nonnull INetworkMaster network);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes a network from the registry.
|
||||||
|
*
|
||||||
|
* @param pos The position of the network
|
||||||
|
*/
|
||||||
|
void removeNetwork(@Nonnull BlockPos pos);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return All the networks in this registry
|
||||||
|
*/
|
||||||
|
Collection<INetworkMaster> getNetworks();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a network at a position.
|
||||||
|
*
|
||||||
|
* @param pos The position of the network
|
||||||
|
* @return The network
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
INetworkMaster getNetwork(@Nonnull BlockPos pos);
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package refinedstorage.api.network.registry;
|
||||||
|
|
||||||
|
public interface INetworkRegistryProvider {
|
||||||
|
INetworkRegistry provide(int dimension);
|
||||||
|
}
|
||||||
39
src/main/java/refinedstorage/apiimpl/network/registry/NetworkRegistry.java
Executable file
39
src/main/java/refinedstorage/apiimpl/network/registry/NetworkRegistry.java
Executable file
@@ -0,0 +1,39 @@
|
|||||||
|
package refinedstorage.apiimpl.network.registry;
|
||||||
|
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import refinedstorage.api.network.INetworkMaster;
|
||||||
|
import refinedstorage.api.network.registry.INetworkRegistry;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class NetworkRegistry implements INetworkRegistry {
|
||||||
|
private Map<BlockPos, INetworkMaster> networks = new HashMap<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addNetwork(@Nonnull INetworkMaster network) {
|
||||||
|
networks.put(network.getPosition(), network);
|
||||||
|
System.out.println("Added " + network.getPosition());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeNetwork(@Nonnull BlockPos pos) {
|
||||||
|
networks.remove(pos);
|
||||||
|
|
||||||
|
System.out.println("Removed " + pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<INetworkMaster> getNetworks() {
|
||||||
|
return networks.values();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public INetworkMaster getNetwork(@Nonnull BlockPos pos) {
|
||||||
|
return networks.get(pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package refinedstorage.apiimpl.network.registry;
|
||||||
|
|
||||||
|
import refinedstorage.api.network.registry.INetworkRegistry;
|
||||||
|
import refinedstorage.api.network.registry.INetworkRegistryProvider;
|
||||||
|
|
||||||
|
public class NetworkRegistryProvider implements INetworkRegistryProvider {
|
||||||
|
@Override
|
||||||
|
public INetworkRegistry provide(int dimension) {
|
||||||
|
return new NetworkRegistry();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package refinedstorage.apiimpl.network.registry;
|
||||||
|
|
||||||
|
import net.minecraftforge.event.world.WorldEvent;
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
import refinedstorage.api.RefinedStorageAPI;
|
||||||
|
|
||||||
|
public class NetworkRegistryUnloader {
|
||||||
|
@Mod.EventHandler
|
||||||
|
public void onWorldUnload(WorldEvent.Unload e) {
|
||||||
|
System.out.println("Unloaded " + e.getWorld().provider.getDimension());
|
||||||
|
RefinedStorageAPI.removeNetworkRegistry(e.getWorld());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -106,7 +106,7 @@ public class BlockController extends BlockBase {
|
|||||||
@Override
|
@Override
|
||||||
public void breakBlock(World world, BlockPos pos, IBlockState state) {
|
public void breakBlock(World world, BlockPos pos, IBlockState state) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
((TileController) world.getTileEntity(pos)).getNodeGraph().disconnectAll();
|
((TileController) world.getTileEntity(pos)).onDestroyed();
|
||||||
}
|
}
|
||||||
|
|
||||||
super.breakBlock(world, pos, state);
|
super.breakBlock(world, pos, state);
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import net.minecraftforge.common.MinecraftForge;
|
|||||||
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
||||||
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
|
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
|
||||||
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
||||||
import net.minecraftforge.fml.common.network.NetworkRegistry;
|
|
||||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.oredict.OreDictionary;
|
import net.minecraftforge.oredict.OreDictionary;
|
||||||
@@ -18,6 +17,8 @@ import refinedstorage.RefinedStorage;
|
|||||||
import refinedstorage.RefinedStorageBlocks;
|
import refinedstorage.RefinedStorageBlocks;
|
||||||
import refinedstorage.RefinedStorageItems;
|
import refinedstorage.RefinedStorageItems;
|
||||||
import refinedstorage.api.RefinedStorageAPI;
|
import refinedstorage.api.RefinedStorageAPI;
|
||||||
|
import refinedstorage.apiimpl.network.registry.NetworkRegistryProvider;
|
||||||
|
import refinedstorage.apiimpl.network.registry.NetworkRegistryUnloader;
|
||||||
import refinedstorage.apiimpl.solderer.*;
|
import refinedstorage.apiimpl.solderer.*;
|
||||||
import refinedstorage.apiimpl.storage.item.ItemStorageNBT;
|
import refinedstorage.apiimpl.storage.item.ItemStorageNBT;
|
||||||
import refinedstorage.block.*;
|
import refinedstorage.block.*;
|
||||||
@@ -44,6 +45,10 @@ public class CommonProxy {
|
|||||||
|
|
||||||
RefinedStorageAPI.SOLDERER_REGISTRY = new SoldererRegistry();
|
RefinedStorageAPI.SOLDERER_REGISTRY = new SoldererRegistry();
|
||||||
|
|
||||||
|
RefinedStorageAPI.NETWORK_REGISTRY_PROVIDER = new NetworkRegistryProvider();
|
||||||
|
|
||||||
|
MinecraftForge.EVENT_BUS.register(new NetworkRegistryUnloader());
|
||||||
|
|
||||||
int id = 0;
|
int id = 0;
|
||||||
|
|
||||||
RefinedStorage.INSTANCE.network.registerMessage(MessageTileDataParameter.class, MessageTileDataParameter.class, id++, Side.CLIENT);
|
RefinedStorage.INSTANCE.network.registerMessage(MessageTileDataParameter.class, MessageTileDataParameter.class, id++, Side.CLIENT);
|
||||||
@@ -65,7 +70,7 @@ public class CommonProxy {
|
|||||||
RefinedStorage.INSTANCE.network.registerMessage(MessageProcessingPatternEncoderClear.class, MessageProcessingPatternEncoderClear.class, id++, Side.SERVER);
|
RefinedStorage.INSTANCE.network.registerMessage(MessageProcessingPatternEncoderClear.class, MessageProcessingPatternEncoderClear.class, id++, Side.SERVER);
|
||||||
RefinedStorage.INSTANCE.network.registerMessage(MessageGridFilterUpdate.class, MessageGridFilterUpdate.class, id++, Side.SERVER);
|
RefinedStorage.INSTANCE.network.registerMessage(MessageGridFilterUpdate.class, MessageGridFilterUpdate.class, id++, Side.SERVER);
|
||||||
|
|
||||||
NetworkRegistry.INSTANCE.registerGuiHandler(RefinedStorage.INSTANCE, new GuiHandler());
|
net.minecraftforge.fml.common.network.NetworkRegistry.INSTANCE.registerGuiHandler(RefinedStorage.INSTANCE, new GuiHandler());
|
||||||
|
|
||||||
MinecraftForge.EVENT_BUS.register(new ContainerListener());
|
MinecraftForge.EVENT_BUS.register(new ContainerListener());
|
||||||
|
|
||||||
|
|||||||
@@ -236,4 +236,16 @@ public abstract class TileBase extends TileEntity implements ITickable {
|
|||||||
|
|
||||||
return handler;
|
return handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
return o instanceof TileBase && ((TileBase) o).getPos().equals(pos) && ((TileBase) o).getWorld().provider.getDimension() == worldObj.provider.getDimension();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
int result = pos.hashCode();
|
||||||
|
result = 31 * result + worldObj.provider.getDimension();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ public class TileConstructor extends TileMultipartNode implements IComparable, I
|
|||||||
BlockPos front = pos.offset(getDirection());
|
BlockPos front = pos.offset(getDirection());
|
||||||
|
|
||||||
if (worldObj.isAirBlock(front) && block.getBlock().canPlaceBlockAt(worldObj, front)) {
|
if (worldObj.isAirBlock(front) && block.getBlock().canPlaceBlockAt(worldObj, front)) {
|
||||||
ItemStack took = network.extractItem(itemFilters.getStackInSlot(0), 1, compare);
|
ItemStack took = getNetwork().extractItem(itemFilters.getStackInSlot(0), 1, compare);
|
||||||
|
|
||||||
if (took != null) {
|
if (took != null) {
|
||||||
scheduler.resetSchedule();
|
scheduler.resetSchedule();
|
||||||
@@ -88,7 +88,7 @@ public class TileConstructor extends TileMultipartNode implements IComparable, I
|
|||||||
ItemStack craft = itemFilters.getStackInSlot(0);
|
ItemStack craft = itemFilters.getStackInSlot(0);
|
||||||
|
|
||||||
if (scheduler.canSchedule(compare, craft)) {
|
if (scheduler.canSchedule(compare, craft)) {
|
||||||
scheduler.schedule(network, compare, craft);
|
scheduler.schedule(getNetwork(), compare, craft);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -101,7 +101,7 @@ public class TileConstructor extends TileMultipartNode implements IComparable, I
|
|||||||
Block block = stack.getFluid().getBlock();
|
Block block = stack.getFluid().getBlock();
|
||||||
|
|
||||||
if (worldObj.isAirBlock(front) && block.canPlaceBlockAt(worldObj, front)) {
|
if (worldObj.isAirBlock(front) && block.canPlaceBlockAt(worldObj, front)) {
|
||||||
FluidStack took = network.extractFluid(stack, Fluid.BUCKET_VOLUME, compare);
|
FluidStack took = getNetwork().extractFluid(stack, Fluid.BUCKET_VOLUME, compare);
|
||||||
|
|
||||||
if (took != null) {
|
if (took != null) {
|
||||||
IBlockState state = block.getDefaultState();
|
IBlockState state = block.getDefaultState();
|
||||||
|
|||||||
@@ -18,12 +18,14 @@ import net.minecraftforge.fluids.FluidStack;
|
|||||||
import net.minecraftforge.items.ItemHandlerHelper;
|
import net.minecraftforge.items.ItemHandlerHelper;
|
||||||
import refinedstorage.RefinedStorage;
|
import refinedstorage.RefinedStorage;
|
||||||
import refinedstorage.RefinedStorageBlocks;
|
import refinedstorage.RefinedStorageBlocks;
|
||||||
|
import refinedstorage.api.RefinedStorageAPI;
|
||||||
import refinedstorage.api.autocrafting.ICraftingPattern;
|
import refinedstorage.api.autocrafting.ICraftingPattern;
|
||||||
import refinedstorage.api.autocrafting.ICraftingPatternContainer;
|
import refinedstorage.api.autocrafting.ICraftingPatternContainer;
|
||||||
import refinedstorage.api.autocrafting.ICraftingTask;
|
import refinedstorage.api.autocrafting.ICraftingTask;
|
||||||
import refinedstorage.api.network.*;
|
import refinedstorage.api.network.*;
|
||||||
import refinedstorage.api.network.grid.IFluidGridHandler;
|
import refinedstorage.api.network.grid.IFluidGridHandler;
|
||||||
import refinedstorage.api.network.grid.IItemGridHandler;
|
import refinedstorage.api.network.grid.IItemGridHandler;
|
||||||
|
import refinedstorage.api.network.registry.INetworkRegistry;
|
||||||
import refinedstorage.api.storage.CompareUtils;
|
import refinedstorage.api.storage.CompareUtils;
|
||||||
import refinedstorage.api.storage.fluid.IFluidStorage;
|
import refinedstorage.api.storage.fluid.IFluidStorage;
|
||||||
import refinedstorage.api.storage.fluid.IGroupedFluidStorage;
|
import refinedstorage.api.storage.fluid.IGroupedFluidStorage;
|
||||||
@@ -184,6 +186,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
|||||||
private IControllerEnergyIC2 energyEU;
|
private IControllerEnergyIC2 energyEU;
|
||||||
private ControllerEnergyTesla energyTesla;
|
private ControllerEnergyTesla energyTesla;
|
||||||
|
|
||||||
|
private boolean destroyed;
|
||||||
|
|
||||||
private int lastEnergyDisplay;
|
private int lastEnergyDisplay;
|
||||||
private int lastEnergyComparator;
|
private int lastEnergyComparator;
|
||||||
|
|
||||||
@@ -234,6 +238,12 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
|||||||
@Override
|
@Override
|
||||||
public void update() {
|
public void update() {
|
||||||
if (!worldObj.isRemote) {
|
if (!worldObj.isRemote) {
|
||||||
|
INetworkRegistry registry = RefinedStorageAPI.getNetworkRegistry(worldObj);
|
||||||
|
|
||||||
|
if (!destroyed && registry.getNetwork(pos) == null) {
|
||||||
|
registry.addNetwork(this);
|
||||||
|
}
|
||||||
|
|
||||||
energyEU.update();
|
energyEU.update();
|
||||||
|
|
||||||
if (canRun()) {
|
if (canRun()) {
|
||||||
@@ -335,9 +345,9 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void invalidate() {
|
public void invalidate() {
|
||||||
energyEU.invalidate();
|
|
||||||
|
|
||||||
super.invalidate();
|
super.invalidate();
|
||||||
|
|
||||||
|
energyEU.invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -362,6 +372,14 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
|||||||
energyEU.onChunkUnload();
|
energyEU.onChunkUnload();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onDestroyed() {
|
||||||
|
nodeGraph.disconnectAll();
|
||||||
|
|
||||||
|
destroyed = true;
|
||||||
|
|
||||||
|
RefinedStorageAPI.getNetworkRegistry(worldObj).removeNetwork(pos);
|
||||||
|
}
|
||||||
|
|
||||||
public IGroupedItemStorage getItemStorage() {
|
public IGroupedItemStorage getItemStorage() {
|
||||||
return itemStorage;
|
return itemStorage;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ public class TileCrafter extends TileNode implements ICraftingPatternContainer {
|
|||||||
protected void onContentsChanged(int slot) {
|
protected void onContentsChanged(int slot) {
|
||||||
super.onContentsChanged(slot);
|
super.onContentsChanged(slot);
|
||||||
|
|
||||||
if (network != null) {
|
if (getNetwork() != null) {
|
||||||
network.rebuildPatterns();
|
getNetwork().rebuildPatterns();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ public class TileCraftingMonitor extends TileNode {
|
|||||||
public static final TileDataParameter<List<ClientCraftingTask>> TASKS = new TileDataParameter<>(RefinedStorageSerializers.CLIENT_CRAFTING_TASK_SERIALIZER, new ArrayList<>(), new ITileDataProducer<List<ClientCraftingTask>, TileCraftingMonitor>() {
|
public static final TileDataParameter<List<ClientCraftingTask>> TASKS = new TileDataParameter<>(RefinedStorageSerializers.CLIENT_CRAFTING_TASK_SERIALIZER, new ArrayList<>(), new ITileDataProducer<List<ClientCraftingTask>, TileCraftingMonitor>() {
|
||||||
@Override
|
@Override
|
||||||
public List<ClientCraftingTask> getValue(TileCraftingMonitor tile) {
|
public List<ClientCraftingTask> getValue(TileCraftingMonitor tile) {
|
||||||
if (tile.connected) {
|
if (tile.isConnected()) {
|
||||||
List<ClientCraftingTask> tasks = tile.network.getCraftingTasks().stream().map(t -> new ClientCraftingTask(
|
List<ClientCraftingTask> tasks = tile.getNetwork().getCraftingTasks().stream().map(t -> new ClientCraftingTask(
|
||||||
t.getInfo(),
|
t.getInfo(),
|
||||||
t.getPattern().getOutputs()
|
t.getPattern().getOutputs()
|
||||||
)).collect(Collectors.toList());
|
)).collect(Collectors.toList());
|
||||||
|
|||||||
@@ -85,10 +85,10 @@ public class TileDestructor extends TileMultipartNode implements IComparable, IF
|
|||||||
for (ItemStack drop : drops) {
|
for (ItemStack drop : drops) {
|
||||||
// We check if the controller isn't null here because when a destructor faces a node and removes it
|
// We check if the controller isn't null here because when a destructor faces a node and removes it
|
||||||
// it will essentially remove this block itself from the network without knowing
|
// it will essentially remove this block itself from the network without knowing
|
||||||
if (network == null) {
|
if (getNetwork() == null) {
|
||||||
InventoryHelper.spawnItemStack(worldObj, front.getX(), front.getY(), front.getZ(), drop);
|
InventoryHelper.spawnItemStack(worldObj, front.getX(), front.getY(), front.getZ(), drop);
|
||||||
} else {
|
} else {
|
||||||
ItemStack remainder = network.insertItem(drop, drop.stackSize, false);
|
ItemStack remainder = getNetwork().insertItem(drop, drop.stackSize, false);
|
||||||
|
|
||||||
if (remainder != null) {
|
if (remainder != null) {
|
||||||
InventoryHelper.spawnItemStack(worldObj, front.getX(), front.getY(), front.getZ(), remainder);
|
InventoryHelper.spawnItemStack(worldObj, front.getX(), front.getY(), front.getZ(), remainder);
|
||||||
@@ -113,10 +113,10 @@ public class TileDestructor extends TileMultipartNode implements IComparable, IF
|
|||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
FluidStack stack = handler.drain(Fluid.BUCKET_VOLUME, false);
|
FluidStack stack = handler.drain(Fluid.BUCKET_VOLUME, false);
|
||||||
|
|
||||||
if (stack != null && IFilterable.canTakeFluids(fluidFilters, mode, compare, stack) && network.insertFluid(stack, stack.amount, true) == null) {
|
if (stack != null && IFilterable.canTakeFluids(fluidFilters, mode, compare, stack) && getNetwork().insertFluid(stack, stack.amount, true) == null) {
|
||||||
FluidStack drained = handler.drain(Fluid.BUCKET_VOLUME, true);
|
FluidStack drained = handler.drain(Fluid.BUCKET_VOLUME, true);
|
||||||
|
|
||||||
network.insertFluid(drained, drained.amount, false);
|
getNetwork().insertFluid(drained, drained.amount, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ public class TileDetector extends TileNode implements IComparable, IType {
|
|||||||
ItemStack slot = itemFilters.getStackInSlot(0);
|
ItemStack slot = itemFilters.getStackInSlot(0);
|
||||||
|
|
||||||
if (slot != null) {
|
if (slot != null) {
|
||||||
ItemStack stack = network.getItemStorage().get(slot, compare);
|
ItemStack stack = getNetwork().getItemStorage().get(slot, compare);
|
||||||
|
|
||||||
powered = isPowered(stack == null ? null : stack.stackSize);
|
powered = isPowered(stack == null ? null : stack.stackSize);
|
||||||
} else {
|
} else {
|
||||||
@@ -116,7 +116,7 @@ public class TileDetector extends TileNode implements IComparable, IType {
|
|||||||
FluidStack slot = fluidFilters.getFluids()[0];
|
FluidStack slot = fluidFilters.getFluids()[0];
|
||||||
|
|
||||||
if (slot != null) {
|
if (slot != null) {
|
||||||
FluidStack stack = network.getFluidStorage().get(slot, compare);
|
FluidStack stack = getNetwork().getFluidStorage().get(slot, compare);
|
||||||
|
|
||||||
powered = isPowered(stack == null ? null : stack.amount);
|
powered = isPowered(stack == null ? null : stack.amount);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -114,9 +114,9 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (network != null) {
|
if (getNetwork() != null) {
|
||||||
network.getItemStorage().rebuild();
|
getNetwork().getItemStorage().rebuild();
|
||||||
network.getFluidStorage().rebuild();
|
getNetwork().getFluidStorage().rebuild();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ public class TileExporter extends TileMultipartNode implements IComparable, ITyp
|
|||||||
ItemStack slot = itemFilters.getStackInSlot(i);
|
ItemStack slot = itemFilters.getStackInSlot(i);
|
||||||
|
|
||||||
if (slot != null) {
|
if (slot != null) {
|
||||||
ItemStack took = network.extractItem(slot, size, compare);
|
ItemStack took = getNetwork().extractItem(slot, size, compare);
|
||||||
|
|
||||||
if (took != null) {
|
if (took != null) {
|
||||||
scheduler.resetSchedule();
|
scheduler.resetSchedule();
|
||||||
@@ -74,11 +74,11 @@ public class TileExporter extends TileMultipartNode implements IComparable, ITyp
|
|||||||
ItemStack remainder = ItemHandlerHelper.insertItem(handler, took, false);
|
ItemStack remainder = ItemHandlerHelper.insertItem(handler, took, false);
|
||||||
|
|
||||||
if (remainder != null) {
|
if (remainder != null) {
|
||||||
network.insertItem(remainder, remainder.stackSize, false);
|
getNetwork().insertItem(remainder, remainder.stackSize, false);
|
||||||
}
|
}
|
||||||
} else if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
} else if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
||||||
if (scheduler.canSchedule(compare, slot)) {
|
if (scheduler.canSchedule(compare, slot)) {
|
||||||
scheduler.schedule(network, compare, slot);
|
scheduler.schedule(getNetwork(), compare, slot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -90,13 +90,13 @@ public class TileExporter extends TileMultipartNode implements IComparable, ITyp
|
|||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
for (FluidStack stack : fluidFilters.getFluids()) {
|
for (FluidStack stack : fluidFilters.getFluids()) {
|
||||||
if (stack != null) {
|
if (stack != null) {
|
||||||
FluidStack took = network.extractFluid(stack, Fluid.BUCKET_VOLUME, compare);
|
FluidStack took = getNetwork().extractFluid(stack, Fluid.BUCKET_VOLUME, compare);
|
||||||
|
|
||||||
if (took != null) {
|
if (took != null) {
|
||||||
int remainder = Fluid.BUCKET_VOLUME - handler.fill(took, true);
|
int remainder = Fluid.BUCKET_VOLUME - handler.fill(took, true);
|
||||||
|
|
||||||
if (remainder > 0) {
|
if (remainder > 0) {
|
||||||
network.insertFluid(took, remainder, false);
|
getNetwork().insertFluid(took, remainder, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ public class TileFluidInterface extends TileNode implements IComparable {
|
|||||||
FluidStack drained = tankIn.drainInternal(Fluid.BUCKET_VOLUME, true);
|
FluidStack drained = tankIn.drainInternal(Fluid.BUCKET_VOLUME, true);
|
||||||
|
|
||||||
if (drained != null) {
|
if (drained != null) {
|
||||||
FluidStack remainder = network.insertFluid(drained, drained.amount, false);
|
FluidStack remainder = getNetwork().insertFluid(drained, drained.amount, false);
|
||||||
|
|
||||||
if (remainder != null) {
|
if (remainder != null) {
|
||||||
tankIn.fillInternal(remainder, true);
|
tankIn.fillInternal(remainder, true);
|
||||||
@@ -116,16 +116,16 @@ public class TileFluidInterface extends TileNode implements IComparable {
|
|||||||
FluidStack remainder = tankOut.drainInternal(Fluid.BUCKET_VOLUME, true);
|
FluidStack remainder = tankOut.drainInternal(Fluid.BUCKET_VOLUME, true);
|
||||||
|
|
||||||
if (remainder != null) {
|
if (remainder != null) {
|
||||||
network.insertFluid(remainder, remainder.amount, false);
|
getNetwork().insertFluid(remainder, remainder.amount, false);
|
||||||
}
|
}
|
||||||
} else if (stack != null) {
|
} else if (stack != null) {
|
||||||
FluidStack result = network.extractFluid(stack, Fluid.BUCKET_VOLUME, compare);
|
FluidStack result = getNetwork().extractFluid(stack, Fluid.BUCKET_VOLUME, compare);
|
||||||
|
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
int remainder = Fluid.BUCKET_VOLUME - tankOut.fillInternal(result, true);
|
int remainder = Fluid.BUCKET_VOLUME - tankOut.fillInternal(result, true);
|
||||||
|
|
||||||
if (remainder > 0) {
|
if (remainder > 0) {
|
||||||
network.insertFluid(stack, remainder, false);
|
getNetwork().insertFluid(stack, remainder, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,8 +93,8 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider,
|
|||||||
if (storage == null && storageTag != null) {
|
if (storage == null && storageTag != null) {
|
||||||
storage = new FluidStorage();
|
storage = new FluidStorage();
|
||||||
|
|
||||||
if (network != null) {
|
if (getNetwork() != null) {
|
||||||
network.getFluidStorage().rebuild();
|
getNetwork().getFluidStorage().rebuild();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,8 +79,8 @@ public class TileImporter extends TileMultipartNode implements IComparable, IFil
|
|||||||
|
|
||||||
ItemStack result = handler.extractItem(currentSlot, quantity, true);
|
ItemStack result = handler.extractItem(currentSlot, quantity, true);
|
||||||
|
|
||||||
if (result != null && network.insertItem(result, result.stackSize, true) == null) {
|
if (result != null && getNetwork().insertItem(result, result.stackSize, true) == null) {
|
||||||
network.insertItem(result, result.stackSize, false);
|
getNetwork().insertItem(result, result.stackSize, false);
|
||||||
|
|
||||||
handler.extractItem(currentSlot, quantity, false);
|
handler.extractItem(currentSlot, quantity, false);
|
||||||
} else {
|
} else {
|
||||||
@@ -94,10 +94,10 @@ public class TileImporter extends TileMultipartNode implements IComparable, IFil
|
|||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
FluidStack stack = handler.drain(Fluid.BUCKET_VOLUME, false);
|
FluidStack stack = handler.drain(Fluid.BUCKET_VOLUME, false);
|
||||||
|
|
||||||
if (stack != null && IFilterable.canTakeFluids(fluidFilters, mode, compare, stack) && network.insertFluid(stack, stack.amount, true) == null) {
|
if (stack != null && IFilterable.canTakeFluids(fluidFilters, mode, compare, stack) && getNetwork().insertFluid(stack, stack.amount, true) == null) {
|
||||||
FluidStack drain = handler.drain(Fluid.BUCKET_VOLUME, true);
|
FluidStack drain = handler.drain(Fluid.BUCKET_VOLUME, true);
|
||||||
|
|
||||||
network.insertFluid(drain, drain.amount, false);
|
getNetwork().insertFluid(drain, drain.amount, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ public class TileInterface extends TileNode implements IComparable {
|
|||||||
} else if (ticks % upgrades.getSpeed() == 0) {
|
} else if (ticks % upgrades.getSpeed() == 0) {
|
||||||
int size = Math.min(slot.stackSize, upgrades.hasUpgrade(ItemUpgrade.TYPE_STACK) ? 64 : 1);
|
int size = Math.min(slot.stackSize, upgrades.hasUpgrade(ItemUpgrade.TYPE_STACK) ? 64 : 1);
|
||||||
|
|
||||||
ItemStack remainder = network.insertItem(slot, size, false);
|
ItemStack remainder = getNetwork().insertItem(slot, size, false);
|
||||||
|
|
||||||
if (remainder == null) {
|
if (remainder == null) {
|
||||||
importItems.extractItem(currentSlot, size, false);
|
importItems.extractItem(currentSlot, size, false);
|
||||||
@@ -65,13 +65,13 @@ public class TileInterface extends TileNode implements IComparable {
|
|||||||
|
|
||||||
if (wanted == null) {
|
if (wanted == null) {
|
||||||
if (got != null) {
|
if (got != null) {
|
||||||
exportItems.setStackInSlot(i, network.insertItem(got, got.stackSize, false));
|
exportItems.setStackInSlot(i, getNetwork().insertItem(got, got.stackSize, false));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int delta = got == null ? wanted.stackSize : (wanted.stackSize - got.stackSize);
|
int delta = got == null ? wanted.stackSize : (wanted.stackSize - got.stackSize);
|
||||||
|
|
||||||
if (delta > 0) {
|
if (delta > 0) {
|
||||||
ItemStack result = network.extractItem(wanted, delta, compare);
|
ItemStack result = getNetwork().extractItem(wanted, delta, compare);
|
||||||
|
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
if (got == null) {
|
if (got == null) {
|
||||||
@@ -81,7 +81,7 @@ public class TileInterface extends TileNode implements IComparable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (delta < 0) {
|
} else if (delta < 0) {
|
||||||
ItemStack remainder = network.insertItem(got, Math.abs(delta), false);
|
ItemStack remainder = getNetwork().insertItem(got, Math.abs(delta), false);
|
||||||
|
|
||||||
if (remainder == null) {
|
if (remainder == null) {
|
||||||
exportItems.extractItem(i, Math.abs(delta), false);
|
exportItems.extractItem(i, Math.abs(delta), false);
|
||||||
|
|||||||
@@ -70,8 +70,8 @@ public abstract class TileMultipartNode extends TileNode implements IMicroblockC
|
|||||||
public void onMicroblocksChanged() {
|
public void onMicroblocksChanged() {
|
||||||
markDirty();
|
markDirty();
|
||||||
|
|
||||||
if (network != null) {
|
if (getNetwork() != null) {
|
||||||
NetworkUtils.rebuildGraph(network);
|
NetworkUtils.rebuildGraph(getNetwork());
|
||||||
} else if (worldObj != null) {
|
} else if (worldObj != null) {
|
||||||
RefinedStorageBlocks.CABLE.attemptConnect(worldObj, pos);
|
RefinedStorageBlocks.CABLE.attemptConnect(worldObj, pos);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,8 +44,8 @@ public class TileNetworkTransmitter extends TileNode {
|
|||||||
protected void onContentsChanged(int slot) {
|
protected void onContentsChanged(int slot) {
|
||||||
super.onContentsChanged(slot);
|
super.onContentsChanged(slot);
|
||||||
|
|
||||||
if (network != null) {
|
if (getNetwork() != null) {
|
||||||
NetworkUtils.rebuildGraph(network);
|
NetworkUtils.rebuildGraph(getNetwork());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -64,8 +64,8 @@ public class TileNetworkTransmitter extends TileNode {
|
|||||||
receiverDimension = ItemNetworkCard.getDimension(card);
|
receiverDimension = ItemNetworkCard.getDimension(card);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (network != null) {
|
if (getNetwork() != null) {
|
||||||
NetworkUtils.rebuildGraph(network);
|
NetworkUtils.rebuildGraph(getNetwork());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import net.minecraft.nbt.NBTTagCompound;
|
|||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import refinedstorage.api.RefinedStorageAPI;
|
||||||
import refinedstorage.api.network.INetworkMaster;
|
import refinedstorage.api.network.INetworkMaster;
|
||||||
import refinedstorage.api.network.INetworkNode;
|
import refinedstorage.api.network.INetworkNode;
|
||||||
import refinedstorage.api.network.NetworkUtils;
|
import refinedstorage.api.network.NetworkUtils;
|
||||||
@@ -19,10 +20,9 @@ public abstract class TileNode extends TileBase implements INetworkNode, IRedsto
|
|||||||
private RedstoneMode redstoneMode = RedstoneMode.IGNORE;
|
private RedstoneMode redstoneMode = RedstoneMode.IGNORE;
|
||||||
private boolean active;
|
private boolean active;
|
||||||
private boolean update;
|
private boolean update;
|
||||||
|
private boolean connected;
|
||||||
|
|
||||||
protected boolean rebuildOnUpdateChange;
|
protected boolean rebuildOnUpdateChange;
|
||||||
protected boolean connected;
|
|
||||||
protected INetworkMaster network;
|
|
||||||
|
|
||||||
public TileNode() {
|
public TileNode() {
|
||||||
dataManager.addWatchedParameter(REDSTONE_MODE);
|
dataManager.addWatchedParameter(REDSTONE_MODE);
|
||||||
@@ -40,13 +40,13 @@ public abstract class TileNode extends TileBase implements INetworkNode, IRedsto
|
|||||||
@Override
|
@Override
|
||||||
public void update() {
|
public void update() {
|
||||||
if (!worldObj.isRemote) {
|
if (!worldObj.isRemote) {
|
||||||
if (update != canUpdate() && network != null) {
|
if (update != canUpdate() && getNetwork() != null) {
|
||||||
update = canUpdate();
|
update = canUpdate();
|
||||||
|
|
||||||
onConnectionChange(network, update);
|
onConnectionChange(getNetwork(), update);
|
||||||
|
|
||||||
if (rebuildOnUpdateChange) {
|
if (rebuildOnUpdateChange) {
|
||||||
NetworkUtils.rebuildGraph(network);
|
NetworkUtils.rebuildGraph(getNetwork());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,18 +66,12 @@ public abstract class TileNode extends TileBase implements INetworkNode, IRedsto
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onConnected(INetworkMaster network) {
|
public void onConnected(INetworkMaster network) {
|
||||||
this.connected = true;
|
|
||||||
this.network = network;
|
|
||||||
|
|
||||||
onConnectionChange(network, true);
|
onConnectionChange(network, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisconnected(INetworkMaster network) {
|
public void onDisconnected(INetworkMaster network) {
|
||||||
onConnectionChange(network, false);
|
onConnectionChange(network, false);
|
||||||
|
|
||||||
this.connected = false;
|
|
||||||
this.network = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -92,7 +86,7 @@ public abstract class TileNode extends TileBase implements INetworkNode, IRedsto
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public INetworkMaster getNetwork() {
|
public INetworkMaster getNetwork() {
|
||||||
return network;
|
return !worldObj.isRemote ? RefinedStorageAPI.getNetwork(this) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -107,11 +101,7 @@ public abstract class TileNode extends TileBase implements INetworkNode, IRedsto
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isConnected() {
|
public boolean isConnected() {
|
||||||
return connected;
|
return worldObj.isRemote ? connected : (getNetwork() != null);
|
||||||
}
|
|
||||||
|
|
||||||
public void setConnected(boolean connected) {
|
|
||||||
this.connected = connected;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -165,16 +155,4 @@ public abstract class TileNode extends TileBase implements INetworkNode, IRedsto
|
|||||||
public boolean hasConnectivityState() {
|
public boolean hasConnectivityState() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
return o instanceof TileNode && ((TileNode) o).getPosition().equals(pos);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
int result = pos.hashCode();
|
|
||||||
result = 31 * result + worldObj.provider.getDimension();
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,8 +93,8 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor
|
|||||||
if (storage == null && storageTag != null) {
|
if (storage == null && storageTag != null) {
|
||||||
storage = new ItemStorage();
|
storage = new ItemStorage();
|
||||||
|
|
||||||
if (network != null) {
|
if (getNetwork() != null) {
|
||||||
network.getItemStorage().rebuild();
|
getNetwork().getItemStorage().rebuild();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update() {
|
public void update() {
|
||||||
if (!worldObj.isRemote && network != null) {
|
if (!worldObj.isRemote && getNetwork() != null) {
|
||||||
boolean itemChangeDetected = false, fluidChangeDetected = false;
|
boolean itemChangeDetected = false, fluidChangeDetected = false;
|
||||||
|
|
||||||
for (ItemStorageExternal storage : itemStorages) {
|
for (ItemStorageExternal storage : itemStorages) {
|
||||||
@@ -139,17 +139,17 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (itemChangeDetected) {
|
if (itemChangeDetected) {
|
||||||
network.getItemStorage().rebuild();
|
getNetwork().getItemStorage().rebuild();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fluidChangeDetected) {
|
if (fluidChangeDetected) {
|
||||||
network.getFluidStorage().rebuild();
|
getNetwork().getFluidStorage().rebuild();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getFacingTile() instanceof IDrawerGroup && lastDrawerCount != ((IDrawerGroup) getFacingTile()).getDrawerCount()) {
|
if (getFacingTile() instanceof IDrawerGroup && lastDrawerCount != ((IDrawerGroup) getFacingTile()).getDrawerCount()) {
|
||||||
lastDrawerCount = ((IDrawerGroup) getFacingTile()).getDrawerCount();
|
lastDrawerCount = ((IDrawerGroup) getFacingTile()).getDrawerCount();
|
||||||
|
|
||||||
updateStorage(network);
|
updateStorage(getNetwork());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -188,27 +188,27 @@ public class TileGrid extends TileNode implements IGrid {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockPos getNetworkPosition() {
|
public BlockPos getNetworkPosition() {
|
||||||
return network != null ? network.getPosition() : null;
|
return getNetwork() != null ? getNetwork().getPosition() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onGridOpened(EntityPlayer player) {
|
public void onGridOpened(EntityPlayer player) {
|
||||||
if (isConnected()) {
|
if (isConnected()) {
|
||||||
if (getType() == EnumGridType.FLUID) {
|
if (getType() == EnumGridType.FLUID) {
|
||||||
network.sendFluidStorageToClient((EntityPlayerMP) player);
|
getNetwork().sendFluidStorageToClient((EntityPlayerMP) player);
|
||||||
} else {
|
} else {
|
||||||
network.sendItemStorageToClient((EntityPlayerMP) player);
|
getNetwork().sendItemStorageToClient((EntityPlayerMP) player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IItemGridHandler getItemHandler() {
|
public IItemGridHandler getItemHandler() {
|
||||||
return isConnected() ? network.getItemGridHandler() : null;
|
return getNetwork() != null ? getNetwork().getItemGridHandler() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IFluidGridHandler getFluidHandler() {
|
public IFluidGridHandler getFluidHandler() {
|
||||||
return isConnected() ? network.getFluidGridHandler() : null;
|
return getNetwork() != null ? getNetwork().getFluidGridHandler() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -263,7 +263,7 @@ public class TileGrid extends TileNode implements IGrid {
|
|||||||
} else {
|
} else {
|
||||||
if (slot != null) {
|
if (slot != null) {
|
||||||
if (slot.stackSize == 1 && isConnected()) {
|
if (slot.stackSize == 1 && isConnected()) {
|
||||||
matrix.setInventorySlotContents(i, NetworkUtils.extractItem(network, slot, 1));
|
matrix.setInventorySlotContents(i, NetworkUtils.extractItem(getNetwork(), slot, 1));
|
||||||
} else {
|
} else {
|
||||||
matrix.decrStackSize(i, 1);
|
matrix.decrStackSize(i, 1);
|
||||||
}
|
}
|
||||||
@@ -340,10 +340,10 @@ public class TileGrid extends TileNode implements IGrid {
|
|||||||
|
|
||||||
if (slot != null) {
|
if (slot != null) {
|
||||||
if (getType() == EnumGridType.CRAFTING) {
|
if (getType() == EnumGridType.CRAFTING) {
|
||||||
if (network.insertItem(slot, slot.stackSize, true) != null) {
|
if (getNetwork().insertItem(slot, slot.stackSize, true) != null) {
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
network.insertItem(slot, slot.stackSize, false);
|
getNetwork().insertItem(slot, slot.stackSize, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -357,7 +357,7 @@ public class TileGrid extends TileNode implements IGrid {
|
|||||||
|
|
||||||
if (getType() == EnumGridType.CRAFTING) {
|
if (getType() == EnumGridType.CRAFTING) {
|
||||||
for (ItemStack possibility : possibilities) {
|
for (ItemStack possibility : possibilities) {
|
||||||
ItemStack took = NetworkUtils.extractItem(network, possibility, 1);
|
ItemStack took = NetworkUtils.extractItem(getNetwork(), possibility, 1);
|
||||||
|
|
||||||
if (took != null) {
|
if (took != null) {
|
||||||
matrix.setInventorySlotContents(i, took);
|
matrix.setInventorySlotContents(i, took);
|
||||||
|
|||||||
Reference in New Issue
Block a user