From df4bcf05cfc32964ceac14b89c0ee1d1e7e89c47 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Sat, 30 Jul 2016 17:07:32 +0200 Subject: [PATCH] Added ILaserRelayConnectionHandler to the API so that you can make your own Laser Relay connections :v --- .../api/ActuallyAdditionsAPI.java | 14 ++- .../api/laser/ConnectionPair.java | 76 ++++++++++++ .../laser/ILaserRelayConnectionHandler.java | 34 ++++++ .../actuallyadditions/api/laser/Network.java | 33 ++++++ .../mod/ActuallyAdditions.java | 6 +- .../actuallyadditions/mod/data/WorldData.java | 3 +- .../mod/items/ItemLaserWrench.java | 8 +- .../mod/misc/LaserRelayConnectionHandler.java | 112 +++--------------- .../mod/tile/TileEntityItemViewer.java | 4 +- .../mod/tile/TileEntityLaserRelay.java | 18 +-- .../mod/tile/TileEntityLaserRelayEnergy.java | 9 +- .../mod/tile/TileEntityLaserRelayItem.java | 6 +- 12 files changed, 204 insertions(+), 119 deletions(-) create mode 100644 src/main/java/de/ellpeck/actuallyadditions/api/laser/ConnectionPair.java create mode 100644 src/main/java/de/ellpeck/actuallyadditions/api/laser/ILaserRelayConnectionHandler.java create mode 100644 src/main/java/de/ellpeck/actuallyadditions/api/laser/Network.java diff --git a/src/main/java/de/ellpeck/actuallyadditions/api/ActuallyAdditionsAPI.java b/src/main/java/de/ellpeck/actuallyadditions/api/ActuallyAdditionsAPI.java index 776ea9ab4..d16a9bae0 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/api/ActuallyAdditionsAPI.java +++ b/src/main/java/de/ellpeck/actuallyadditions/api/ActuallyAdditionsAPI.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.api; import de.ellpeck.actuallyadditions.api.booklet.BookletPage; import de.ellpeck.actuallyadditions.api.booklet.IBookletEntry; import de.ellpeck.actuallyadditions.api.internal.IMethodHandler; +import de.ellpeck.actuallyadditions.api.laser.ILaserRelayConnectionHandler; import de.ellpeck.actuallyadditions.api.lens.Lens; import de.ellpeck.actuallyadditions.api.lens.LensConversion; import de.ellpeck.actuallyadditions.api.recipe.*; @@ -30,7 +31,7 @@ public final class ActuallyAdditionsAPI{ public static final String MOD_ID = "actuallyadditions"; public static final String API_ID = MOD_ID+"api"; - public static final String API_VERSION = "18"; + public static final String API_VERSION = "19"; public static final List CRUSHER_RECIPES = new ArrayList(); public static final List BALL_OF_FUR_RETURN_ITEMS = new ArrayList(); @@ -41,12 +42,23 @@ public final class ActuallyAdditionsAPI{ public static final List COMPOST_RECIPES = new ArrayList(); public static final List BOOKLET_ENTRIES = new ArrayList(); public static final List BOOKLET_PAGES_WITH_ITEM_DATA = new ArrayList(); + /** * Use this to handle things that aren't based in the API itself * DO NOT CHANGE/OVERRIDE THIS!! * This is getting initialized in Actually Additions' PreInit phase */ public static IMethodHandler methodHandler; + + /** + * Use this to add, remove or get Laser Relay Connections and Networks + * The network system is built in a way that doesn't need the individual + * positions to be Laser Relays, it relies only on BlockPos + * DO NOT CHANGE/OVERRIDE THIS!! + * This is getting initialized in Actually Additions' PreInit phase + */ + public static ILaserRelayConnectionHandler connectionHandler; + //These are getting initialized in Actually Additions' PreInit phase //DO NOT CHANGE/OVERRIDE THESE!! public static IBookletEntry entryGettingStarted; diff --git a/src/main/java/de/ellpeck/actuallyadditions/api/laser/ConnectionPair.java b/src/main/java/de/ellpeck/actuallyadditions/api/laser/ConnectionPair.java new file mode 100644 index 000000000..6245b445a --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/api/laser/ConnectionPair.java @@ -0,0 +1,76 @@ +/* + * This file ("ConnectionPair.java") is part of the Actually Additions mod for Minecraft. + * It is created and owned by Ellpeck and distributed + * under the Actually Additions License to be found at + * http://ellpeck.de/actaddlicense + * View the source code at https://github.com/Ellpeck/ActuallyAdditions + * + * © 2015-2016 Ellpeck + */ + +package de.ellpeck.actuallyadditions.api.laser; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.math.BlockPos; + +public class ConnectionPair{ + + public final BlockPos[] positions = new BlockPos[2]; + + public ConnectionPair(BlockPos firstRelay, BlockPos secondRelay){ + this.positions[0] = firstRelay; + this.positions[1] = secondRelay; + } + + public static ConnectionPair readFromNBT(NBTTagCompound compound){ + if(compound != null){ + BlockPos[] pos = new BlockPos[2]; + for(int i = 0; i < pos.length; i++){ + int anX = compound.getInteger("x"+i); + int aY = compound.getInteger("y"+i); + int aZ = compound.getInteger("z"+i); + pos[i] = new BlockPos(anX, aY, aZ); + } + return new ConnectionPair(pos[0], pos[1]); + } + return null; + } + + public boolean contains(BlockPos relay){ + for(BlockPos position : this.positions){ + if(position != null && position.equals(relay)){ + return true; + } + } + return false; + } + + @Override + public String toString(){ + return (this.positions[0] == null ? "-" : this.positions[0].toString())+" | "+(this.positions[1] == null ? "-" : this.positions[1].toString()); + } + + public NBTTagCompound writeToNBT(){ + NBTTagCompound compound = new NBTTagCompound(); + for(int i = 0; i < this.positions.length; i++){ + BlockPos relay = this.positions[i]; + compound.setInteger("x"+i, relay.getX()); + compound.setInteger("y"+i, relay.getY()); + compound.setInteger("z"+i, relay.getZ()); + } + return compound; + } + + @Override + public boolean equals(Object obj){ + if(obj instanceof ConnectionPair){ + ConnectionPair pair = (ConnectionPair)obj; + for(int i = 0; i < this.positions.length; i++){ + if(this.positions[i] == pair.positions[i] || (this.positions[i] != null && this.positions[i].equals(pair.positions[i]))){ + return true; + } + } + } + return super.equals(obj); + } +} diff --git a/src/main/java/de/ellpeck/actuallyadditions/api/laser/ILaserRelayConnectionHandler.java b/src/main/java/de/ellpeck/actuallyadditions/api/laser/ILaserRelayConnectionHandler.java new file mode 100644 index 000000000..e9e84e84d --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/api/laser/ILaserRelayConnectionHandler.java @@ -0,0 +1,34 @@ +/* + * This file ("ILaserRelayConnectionHandler.java") is part of the Actually Additions mod for Minecraft. + * It is created and owned by Ellpeck and distributed + * under the Actually Additions License to be found at + * http://ellpeck.de/actaddlicense + * View the source code at https://github.com/Ellpeck/ActuallyAdditions + * + * © 2015-2016 Ellpeck + */ + +package de.ellpeck.actuallyadditions.api.laser; + +import io.netty.util.internal.ConcurrentSet; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +/** + * This is the internal laser relay connection handler. + * Use ActuallyAdditionsAPI.connectionHandler for calling + * This is not supposed to be implemented. + * + * The network system is built in a way that doesn't need the individual + * positions to be Laser Relays, it relies only on BlockPos + */ +public interface ILaserRelayConnectionHandler{ + + ConcurrentSet getConnectionsFor(BlockPos relay, World world); + + void removeRelayFromNetwork(BlockPos relay, World world); + + Network getNetworkFor(BlockPos relay, World world); + + boolean addConnection(BlockPos firstRelay, BlockPos secondRelay, World world); +} diff --git a/src/main/java/de/ellpeck/actuallyadditions/api/laser/Network.java b/src/main/java/de/ellpeck/actuallyadditions/api/laser/Network.java new file mode 100644 index 000000000..cbe5427ea --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/api/laser/Network.java @@ -0,0 +1,33 @@ +/* + * This file ("Network.java") is part of the Actually Additions mod for Minecraft. + * It is created and owned by Ellpeck and distributed + * under the Actually Additions License to be found at + * http://ellpeck.de/actaddlicense + * View the source code at https://github.com/Ellpeck/ActuallyAdditions + * + * © 2015-2016 Ellpeck + */ + +package de.ellpeck.actuallyadditions.api.laser; + +import io.netty.util.internal.ConcurrentSet; + +public class Network{ + + public final ConcurrentSet connections = new ConcurrentSet(); + + @Override + public String toString(){ + return this.connections.toString(); + } + + @Override + public boolean equals(Object obj){ + if(obj instanceof Network){ + if(this.connections.equals(((Network)obj).connections)){ + return true; + } + } + return super.equals(obj); + } +} diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditions.java b/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditions.java index 31996552b..652398bcf 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditions.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditions.java @@ -31,10 +31,7 @@ import de.ellpeck.actuallyadditions.mod.items.lens.LensRecipeHandler; import de.ellpeck.actuallyadditions.mod.items.lens.Lenses; import de.ellpeck.actuallyadditions.mod.material.InitArmorMaterials; import de.ellpeck.actuallyadditions.mod.material.InitToolMaterials; -import de.ellpeck.actuallyadditions.mod.misc.BannerHelper; -import de.ellpeck.actuallyadditions.mod.misc.DungeonLoot; -import de.ellpeck.actuallyadditions.mod.misc.MethodHandler; -import de.ellpeck.actuallyadditions.mod.misc.SoundHandler; +import de.ellpeck.actuallyadditions.mod.misc.*; import de.ellpeck.actuallyadditions.mod.network.PacketHandler; import de.ellpeck.actuallyadditions.mod.ore.InitOreDict; import de.ellpeck.actuallyadditions.mod.proxy.IProxy; @@ -79,6 +76,7 @@ public class ActuallyAdditions{ ModUtil.LOGGER.info("Starting PreInitialization Phase..."); ActuallyAdditionsAPI.methodHandler = new MethodHandler(); + ActuallyAdditionsAPI.connectionHandler = new LaserRelayConnectionHandler(); Lenses.init(); InitBooklet.preInit(); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/data/WorldData.java b/src/main/java/de/ellpeck/actuallyadditions/mod/data/WorldData.java index 4ff564460..c0a9b9f9c 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/data/WorldData.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/data/WorldData.java @@ -12,7 +12,7 @@ package de.ellpeck.actuallyadditions.mod.data; import de.ellpeck.actuallyadditions.mod.data.PlayerData.PlayerSave; import de.ellpeck.actuallyadditions.mod.misc.LaserRelayConnectionHandler; -import de.ellpeck.actuallyadditions.mod.misc.LaserRelayConnectionHandler.Network; +import de.ellpeck.actuallyadditions.api.laser.Network; import de.ellpeck.actuallyadditions.mod.util.ModUtil; import io.netty.util.internal.ConcurrentSet; import net.minecraft.nbt.CompressedStreamTools; @@ -27,7 +27,6 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.ArrayList; -import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class WorldData{ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemLaserWrench.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemLaserWrench.java index 3e51a7ec5..5012ede44 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemLaserWrench.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/ItemLaserWrench.java @@ -10,6 +10,7 @@ package de.ellpeck.actuallyadditions.mod.items; +import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.mod.data.PlayerData; import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; import de.ellpeck.actuallyadditions.mod.misc.LaserRelayConnectionHandler; @@ -59,11 +60,12 @@ public class ItemLaserWrench extends ItemBase{ BlockPos savedPos = ItemPhantomConnector.getStoredPosition(stack); if(savedPos != null){ TileEntity savedTile = world.getTileEntity(savedPos); - if(ItemPhantomConnector.getStoredWorld(stack) == world && savedTile instanceof TileEntityLaserRelay && ((TileEntityLaserRelay)savedTile).isItem == ((TileEntityLaserRelay)tile).isItem && LaserRelayConnectionHandler.addConnection(savedPos, pos, world)){ + int distanceSq = (int)savedPos.distanceSq(pos); + if(ItemPhantomConnector.getStoredWorld(stack) == world && savedTile instanceof TileEntityLaserRelay && ((TileEntityLaserRelay)savedTile).isItem == ((TileEntityLaserRelay)tile).isItem && distanceSq <= TileEntityLaserRelay.MAX_DISTANCE*TileEntityLaserRelay.MAX_DISTANCE && ActuallyAdditionsAPI.connectionHandler.addConnection(savedPos, pos, world)){ ItemPhantomConnector.clearStorage(stack); - ((TileEntityLaserRelay)world.getTileEntity(savedPos)).sendUpdate(); - ((TileEntityLaserRelay)world.getTileEntity(pos)).sendUpdate(); + ((TileEntityLaserRelay)savedTile).sendUpdate(); + ((TileEntityLaserRelay)tile).sendUpdate(); player.addChatComponentMessage(new TextComponentTranslation("tooltip."+ModUtil.MOD_ID+".laser.connected.desc")); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/misc/LaserRelayConnectionHandler.java b/src/main/java/de/ellpeck/actuallyadditions/mod/misc/LaserRelayConnectionHandler.java index 7b0ba117d..d4d27f9fd 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/misc/LaserRelayConnectionHandler.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/misc/LaserRelayConnectionHandler.java @@ -10,15 +10,17 @@ package de.ellpeck.actuallyadditions.mod.misc; +import de.ellpeck.actuallyadditions.api.laser.ConnectionPair; +import de.ellpeck.actuallyadditions.api.laser.ILaserRelayConnectionHandler; +import de.ellpeck.actuallyadditions.api.laser.Network; import de.ellpeck.actuallyadditions.mod.data.WorldData; -import de.ellpeck.actuallyadditions.mod.tile.TileEntityLaserRelay; import io.netty.util.internal.ConcurrentSet; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -public final class LaserRelayConnectionHandler{ +public final class LaserRelayConnectionHandler implements ILaserRelayConnectionHandler{ public static NBTTagCompound writeNetworkToNBT(Network network){ NBTTagList list = new NBTTagList(); @@ -42,7 +44,8 @@ public final class LaserRelayConnectionHandler{ /** * Gets all Connections for a Relay */ - public static ConcurrentSet getConnectionsFor(BlockPos relay, World world){ + @Override + public ConcurrentSet getConnectionsFor(BlockPos relay, World world){ ConcurrentSet allPairs = new ConcurrentSet(); for(Network aNetwork : WorldData.getDataForWorld(world).laserRelayNetworks){ for(ConnectionPair pair : aNetwork.connections){ @@ -57,14 +60,15 @@ public final class LaserRelayConnectionHandler{ /** * Removes a Relay from its Network */ - public static void removeRelayFromNetwork(BlockPos relay, World world){ - Network network = getNetworkFor(relay, world); + @Override + public void removeRelayFromNetwork(BlockPos relay, World world){ + Network network = this.getNetworkFor(relay, world); if(network != null){ //Setup new network (so that splitting a network will cause it to break into two) WorldData.getDataForWorld(world).laserRelayNetworks.remove(network); for(ConnectionPair pair : network.connections){ if(!pair.contains(relay)){ - addConnection(pair.positions[0], pair.positions[1], world); + this.addConnection(pair.positions[0], pair.positions[1], world); } } //System.out.println("Removing a Relay from the Network!"); @@ -74,7 +78,8 @@ public final class LaserRelayConnectionHandler{ /** * Gets a Network for a Relay */ - public static Network getNetworkFor(BlockPos relay, World world){ + @Override + public Network getNetworkFor(BlockPos relay, World world){ for(Network aNetwork : WorldData.getDataForWorld(world).laserRelayNetworks){ for(ConnectionPair pair : aNetwork.connections){ if(pair.contains(relay)){ @@ -89,14 +94,14 @@ public final class LaserRelayConnectionHandler{ * Adds a new connection between two relays * (Puts it into the correct network!) */ - public static boolean addConnection(BlockPos firstRelay, BlockPos secondRelay, World world){ - int distanceSq = (int)firstRelay.distanceSq(secondRelay); - if(distanceSq > TileEntityLaserRelay.MAX_DISTANCE*TileEntityLaserRelay.MAX_DISTANCE || firstRelay.equals(secondRelay)){ + @Override + public boolean addConnection(BlockPos firstRelay, BlockPos secondRelay, World world){ + if(firstRelay == null || secondRelay == null || firstRelay == secondRelay || firstRelay.equals(secondRelay)){ return false; } - Network firstNetwork = getNetworkFor(firstRelay, world); - Network secondNetwork = getNetworkFor(secondRelay, world); + Network firstNetwork = this.getNetworkFor(firstRelay, world); + Network secondNetwork = this.getNetworkFor(secondRelay, world); //No Network exists if(firstNetwork == null && secondNetwork == null){ @@ -131,7 +136,7 @@ public final class LaserRelayConnectionHandler{ * Merges two laserRelayNetworks together * (Actually puts everything from the second network into the first one and removes the second one) */ - public static void mergeNetworks(Network firstNetwork, Network secondNetwork, World world){ + private static void mergeNetworks(Network firstNetwork, Network secondNetwork, World world){ for(ConnectionPair secondPair : secondNetwork.connections){ firstNetwork.connections.add(secondPair); } @@ -139,85 +144,4 @@ public final class LaserRelayConnectionHandler{ //System.out.println("Merged Two Networks!"); } - public static class ConnectionPair{ - - public final BlockPos[] positions = new BlockPos[2]; - - public ConnectionPair(BlockPos firstRelay, BlockPos secondRelay){ - this.positions[0] = firstRelay; - this.positions[1] = secondRelay; - } - - public static ConnectionPair readFromNBT(NBTTagCompound compound){ - if(compound != null){ - BlockPos[] pos = new BlockPos[2]; - for(int i = 0; i < pos.length; i++){ - int anX = compound.getInteger("x"+i); - int aY = compound.getInteger("y"+i); - int aZ = compound.getInteger("z"+i); - pos[i] = new BlockPos(anX, aY, aZ); - } - return new ConnectionPair(pos[0], pos[1]); - } - return null; - } - - public boolean contains(BlockPos relay){ - for(BlockPos position : this.positions){ - if(position != null && position.equals(relay)){ - return true; - } - } - return false; - } - - @Override - public String toString(){ - return (this.positions[0] == null ? "-" : this.positions[0].toString())+" | "+(this.positions[1] == null ? "-" : this.positions[1].toString()); - } - - public NBTTagCompound writeToNBT(){ - NBTTagCompound compound = new NBTTagCompound(); - for(int i = 0; i < this.positions.length; i++){ - BlockPos relay = this.positions[i]; - compound.setInteger("x"+i, relay.getX()); - compound.setInteger("y"+i, relay.getY()); - compound.setInteger("z"+i, relay.getZ()); - } - return compound; - } - - @Override - public boolean equals(Object obj){ - if(obj instanceof ConnectionPair){ - ConnectionPair pair = (ConnectionPair)obj; - for(int i = 0; i < this.positions.length; i++){ - if(this.positions[i] == pair.positions[i] || (this.positions[i] != null && this.positions[i].equals(pair.positions[i]))){ - return true; - } - } - } - return super.equals(obj); - } - } - - public static class Network{ - - public final ConcurrentSet connections = new ConcurrentSet(); - - @Override - public String toString(){ - return this.connections.toString(); - } - - @Override - public boolean equals(Object obj){ - if(obj instanceof Network){ - if(this.connections.equals(((Network)obj).connections)){ - return true; - } - } - return super.equals(obj); - } - } } \ No newline at end of file diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityItemViewer.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityItemViewer.java index a3e1cad34..80c2e662d 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityItemViewer.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityItemViewer.java @@ -10,6 +10,8 @@ package de.ellpeck.actuallyadditions.mod.tile; +import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; +import de.ellpeck.actuallyadditions.api.laser.Network; import de.ellpeck.actuallyadditions.mod.misc.LaserRelayConnectionHandler; import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import net.minecraft.item.ItemStack; @@ -44,7 +46,7 @@ public class TileEntityItemViewer extends TileEntityInventoryBase{ private List getItemHandlerInfos(){ TileEntityLaserRelayItem relay = this.connectedRelay; if(relay != null){ - LaserRelayConnectionHandler.Network network = LaserRelayConnectionHandler.getNetworkFor(relay.getPos(), this.worldObj); + Network network = ActuallyAdditionsAPI.connectionHandler.getNetworkFor(relay.getPos(), this.worldObj); if(network != null){ return relay.getItemHandlersInNetwork(network); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelay.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelay.java index 8a7deb848..a0586ac3a 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelay.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelay.java @@ -10,12 +10,14 @@ package de.ellpeck.actuallyadditions.mod.tile; +import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; +import de.ellpeck.actuallyadditions.api.laser.Network; import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; import de.ellpeck.actuallyadditions.mod.data.PlayerData; import de.ellpeck.actuallyadditions.mod.items.ItemLaserWrench; import de.ellpeck.actuallyadditions.mod.items.ItemLaserWrench.WrenchMode; import de.ellpeck.actuallyadditions.mod.misc.LaserRelayConnectionHandler; -import de.ellpeck.actuallyadditions.mod.misc.LaserRelayConnectionHandler.ConnectionPair; +import de.ellpeck.actuallyadditions.api.laser.ConnectionPair; import de.ellpeck.actuallyadditions.mod.util.AssetUtil; import de.ellpeck.actuallyadditions.mod.util.Util; import io.netty.util.internal.ConcurrentSet; @@ -48,13 +50,13 @@ public abstract class TileEntityLaserRelay extends TileEntityBase{ @Override public void receiveSyncCompound(NBTTagCompound compound){ - LaserRelayConnectionHandler.removeRelayFromNetwork(this.pos, this.worldObj); + ActuallyAdditionsAPI.connectionHandler.removeRelayFromNetwork(this.pos, this.worldObj); NBTTagList list = compound.getTagList("Connections", 10); if(!list.hasNoTags()){ for(int i = 0; i < list.tagCount(); i++){ ConnectionPair pair = ConnectionPair.readFromNBT(list.getCompoundTagAt(i)); - LaserRelayConnectionHandler.addConnection(pair.positions[0], pair.positions[1], this.worldObj); + ActuallyAdditionsAPI.connectionHandler.addConnection(pair.positions[0], pair.positions[1], this.worldObj); } } @@ -67,7 +69,7 @@ public abstract class TileEntityLaserRelay extends TileEntityBase{ NBTTagCompound compound = super.getUpdateTag(); NBTTagList list = new NBTTagList(); - ConcurrentSet connections = LaserRelayConnectionHandler.getConnectionsFor(this.pos, this.worldObj); + ConcurrentSet connections = ActuallyAdditionsAPI.connectionHandler.getConnectionsFor(this.pos, this.worldObj); if(connections != null && !connections.isEmpty()){ for(ConnectionPair pair : connections){ list.appendTag(pair.writeToNBT()); @@ -104,7 +106,7 @@ public abstract class TileEntityLaserRelay extends TileEntityBase{ if(mode != WrenchMode.NO_PARTICLES){ ItemStack stack = player.getHeldItemMainhand(); if(mode == WrenchMode.ALWAYS_PARTICLES || (stack != null && stack.getItem() instanceof ItemLaserWrench)){ - LaserRelayConnectionHandler.Network network = LaserRelayConnectionHandler.getNetworkFor(this.pos, this.worldObj); + Network network = ActuallyAdditionsAPI.connectionHandler.getNetworkFor(this.pos, this.worldObj); if(network != null){ for(ConnectionPair aPair : network.connections){ if(aPair.contains(this.pos) && this.pos.equals(aPair.positions[0])){ @@ -123,16 +125,16 @@ public abstract class TileEntityLaserRelay extends TileEntityBase{ super.invalidate(); //This is because Minecraft randomly invalidates tiles on world join and then validates them again //We need to compensate for this so that connections don't get broken randomly - this.tempConnectionStorage = LaserRelayConnectionHandler.getConnectionsFor(this.pos, this.worldObj); + this.tempConnectionStorage = ActuallyAdditionsAPI.connectionHandler.getConnectionsFor(this.pos, this.worldObj); - LaserRelayConnectionHandler.removeRelayFromNetwork(this.pos, this.worldObj); + ActuallyAdditionsAPI.connectionHandler.removeRelayFromNetwork(this.pos, this.worldObj); } @Override public void validate(){ if(this.tempConnectionStorage != null){ for(ConnectionPair pair : this.tempConnectionStorage){ - LaserRelayConnectionHandler.addConnection(pair.positions[0], pair.positions[1], this.worldObj); + ActuallyAdditionsAPI.connectionHandler.addConnection(pair.positions[0], pair.positions[1], this.worldObj); } this.tempConnectionStorage = null; } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelayEnergy.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelayEnergy.java index 50c3bee39..5bcbce6a1 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelayEnergy.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelayEnergy.java @@ -11,6 +11,9 @@ package de.ellpeck.actuallyadditions.mod.tile; import cofh.api.energy.IEnergyReceiver; +import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; +import de.ellpeck.actuallyadditions.api.laser.ConnectionPair; +import de.ellpeck.actuallyadditions.api.laser.Network; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; import de.ellpeck.actuallyadditions.mod.misc.LaserRelayConnectionHandler; @@ -57,7 +60,7 @@ public class TileEntityLaserRelayEnergy extends TileEntityLaserRelay implements public int transmitEnergy(EnumFacing from, int maxTransmit, boolean simulate){ int transmitted = 0; if(maxTransmit > 0){ - LaserRelayConnectionHandler.Network network = LaserRelayConnectionHandler.getNetworkFor(this.pos, this.worldObj); + Network network = ActuallyAdditionsAPI.connectionHandler.getNetworkFor(this.pos, this.worldObj); if(network != null){ transmitted = this.transferEnergyToReceiverInNeed(from, network, maxTransmit, simulate); } @@ -85,11 +88,11 @@ public class TileEntityLaserRelayEnergy extends TileEntityLaserRelay implements } } - private int transferEnergyToReceiverInNeed(EnumFacing from, LaserRelayConnectionHandler.Network network, int maxTransfer, boolean simulate){ + private int transferEnergyToReceiverInNeed(EnumFacing from, Network network, int maxTransfer, boolean simulate){ int transmitted = 0; List alreadyChecked = new ArrayList(); //Go through all of the connections in the network - for(LaserRelayConnectionHandler.ConnectionPair pair : network.connections){ + for(ConnectionPair pair : network.connections){ //Go through both relays in the connection for(BlockPos relay : pair.positions){ if(relay != null && !alreadyChecked.contains(relay)){ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelayItem.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelayItem.java index fff75745b..9ea4837c0 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelayItem.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityLaserRelayItem.java @@ -10,8 +10,8 @@ package de.ellpeck.actuallyadditions.mod.tile; -import de.ellpeck.actuallyadditions.mod.misc.LaserRelayConnectionHandler; -import de.ellpeck.actuallyadditions.mod.misc.LaserRelayConnectionHandler.Network; +import de.ellpeck.actuallyadditions.api.laser.ConnectionPair; +import de.ellpeck.actuallyadditions.api.laser.Network; import de.ellpeck.actuallyadditions.mod.tile.TileEntityItemViewer.GenericItemHandlerInfo; import de.ellpeck.actuallyadditions.mod.util.WorldUtil; import net.minecraft.item.ItemStack; @@ -59,7 +59,7 @@ public class TileEntityLaserRelayItem extends TileEntityLaserRelay{ public List getItemHandlersInNetwork(Network network){ List handlers = new ArrayList(); - for(LaserRelayConnectionHandler.ConnectionPair pair : network.connections){ + for(ConnectionPair pair : network.connections){ for(BlockPos relay : pair.positions){ if(relay != null){ TileEntity aRelayTile = this.worldObj.getTileEntity(relay);