Removed ugly registry system, need to find a better alternative
This commit is contained in:
@@ -1,55 +1,10 @@
|
||||
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 java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public final class RefinedStorageAPI {
|
||||
/**
|
||||
* The solderer registry, set in pre-initialization
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
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);
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package refinedstorage.api.network.registry;
|
||||
|
||||
public interface INetworkRegistryProvider {
|
||||
INetworkRegistry provide(int dimension);
|
||||
}
|
||||
@@ -52,8 +52,8 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
|
||||
while ((currentPos = toCheck.poll()) != null) {
|
||||
TileEntity tile = world.getTileEntity(currentPos);
|
||||
|
||||
if (tile instanceof TileController && !controller.getPos().equals(tile.getPos())) {
|
||||
world.createExplosion(null, tile.getPos().getX(), tile.getPos().getY(), tile.getPos().getZ(), 4.5f, true);
|
||||
if (tile instanceof TileController && !controller.getPos().equals(currentPos)) {
|
||||
world.createExplosion(null, currentPos.getX(), currentPos.getY(), currentPos.getZ(), 3.5f, true);
|
||||
}
|
||||
|
||||
if (!(tile instanceof INetworkNode)) {
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
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);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeNetwork(@Nonnull BlockPos pos) {
|
||||
networks.remove(pos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<INetworkMaster> getNetworks() {
|
||||
return networks.values();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public INetworkMaster getNetwork(@Nonnull BlockPos pos) {
|
||||
return networks.get(pos);
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
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) {
|
||||
RefinedStorageAPI.removeNetworkRegistry(e.getWorld());
|
||||
}
|
||||
}
|
||||
@@ -17,8 +17,6 @@ import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.RefinedStorageBlocks;
|
||||
import refinedstorage.RefinedStorageItems;
|
||||
import refinedstorage.api.RefinedStorageAPI;
|
||||
import refinedstorage.apiimpl.network.registry.NetworkRegistryProvider;
|
||||
import refinedstorage.apiimpl.network.registry.NetworkRegistryUnloader;
|
||||
import refinedstorage.apiimpl.solderer.*;
|
||||
import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT;
|
||||
import refinedstorage.apiimpl.storage.item.ItemStorageNBT;
|
||||
@@ -46,10 +44,6 @@ public class CommonProxy {
|
||||
|
||||
RefinedStorageAPI.SOLDERER_REGISTRY = new SoldererRegistry();
|
||||
|
||||
RefinedStorageAPI.NETWORK_REGISTRY_PROVIDER = new NetworkRegistryProvider();
|
||||
|
||||
MinecraftForge.EVENT_BUS.register(new NetworkRegistryUnloader());
|
||||
|
||||
int id = 0;
|
||||
|
||||
RefinedStorage.INSTANCE.network.registerMessage(MessageTileDataParameter.class, MessageTileDataParameter.class, id++, Side.CLIENT);
|
||||
|
||||
@@ -18,14 +18,12 @@ import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.items.ItemHandlerHelper;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.RefinedStorageBlocks;
|
||||
import refinedstorage.api.RefinedStorageAPI;
|
||||
import refinedstorage.api.autocrafting.ICraftingPattern;
|
||||
import refinedstorage.api.autocrafting.ICraftingPatternContainer;
|
||||
import refinedstorage.api.autocrafting.ICraftingTask;
|
||||
import refinedstorage.api.network.*;
|
||||
import refinedstorage.api.network.grid.IFluidGridHandler;
|
||||
import refinedstorage.api.network.grid.IItemGridHandler;
|
||||
import refinedstorage.api.network.registry.INetworkRegistry;
|
||||
import refinedstorage.api.storage.CompareUtils;
|
||||
import refinedstorage.api.storage.fluid.IFluidStorage;
|
||||
import refinedstorage.api.storage.fluid.IGroupedFluidStorage;
|
||||
@@ -186,8 +184,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
private IControllerEnergyIC2 energyEU;
|
||||
private ControllerEnergyTesla energyTesla;
|
||||
|
||||
private boolean destroyed;
|
||||
|
||||
private int lastEnergyDisplay;
|
||||
private int lastEnergyComparator;
|
||||
|
||||
@@ -238,12 +234,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
@Override
|
||||
public void update() {
|
||||
if (!worldObj.isRemote) {
|
||||
INetworkRegistry registry = RefinedStorageAPI.getNetworkRegistry(worldObj);
|
||||
|
||||
if (!destroyed && registry.getNetwork(pos) == null) {
|
||||
registry.addNetwork(this);
|
||||
}
|
||||
|
||||
energyEU.update();
|
||||
|
||||
if (canRun()) {
|
||||
@@ -370,14 +360,12 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
super.onChunkUnload();
|
||||
|
||||
energyEU.onChunkUnload();
|
||||
|
||||
onDestroyed();
|
||||
}
|
||||
|
||||
public void onDestroyed() {
|
||||
nodeGraph.disconnectAll();
|
||||
|
||||
destroyed = true;
|
||||
|
||||
RefinedStorageAPI.getNetworkRegistry(worldObj).removeNetwork(pos);
|
||||
}
|
||||
|
||||
public IGroupedItemStorage getItemStorage() {
|
||||
|
||||
@@ -4,7 +4,6 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import refinedstorage.api.RefinedStorageAPI;
|
||||
import refinedstorage.api.network.INetworkMaster;
|
||||
import refinedstorage.api.network.INetworkNode;
|
||||
import refinedstorage.api.network.NetworkUtils;
|
||||
@@ -21,6 +20,7 @@ public abstract class TileNode extends TileBase implements INetworkNode, IRedsto
|
||||
private boolean active;
|
||||
private boolean update;
|
||||
private boolean connected;
|
||||
private INetworkMaster network;
|
||||
|
||||
protected boolean rebuildOnUpdateChange;
|
||||
|
||||
@@ -66,12 +66,18 @@ public abstract class TileNode extends TileBase implements INetworkNode, IRedsto
|
||||
|
||||
@Override
|
||||
public void onConnected(INetworkMaster network) {
|
||||
this.connected = true;
|
||||
this.network = network;
|
||||
|
||||
onConnectionChange(network, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisconnected(INetworkMaster network) {
|
||||
onConnectionChange(network, false);
|
||||
|
||||
this.connected = false;
|
||||
this.network = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -86,7 +92,7 @@ public abstract class TileNode extends TileBase implements INetworkNode, IRedsto
|
||||
|
||||
@Override
|
||||
public INetworkMaster getNetwork() {
|
||||
return (worldObj != null && !worldObj.isRemote) ? RefinedStorageAPI.getNetwork(this) : null;
|
||||
return network;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -101,7 +107,7 @@ public abstract class TileNode extends TileBase implements INetworkNode, IRedsto
|
||||
|
||||
@Override
|
||||
public boolean isConnected() {
|
||||
return worldObj.isRemote ? connected : (getNetwork() != null);
|
||||
return connected;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user