mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-26 08:48:34 +01:00
parent
9c07287261
commit
3d6273ac38
2 changed files with 23 additions and 9 deletions
|
@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.api.laser.IConnectionPair;
|
||||||
import de.ellpeck.actuallyadditions.api.laser.LaserType;
|
import de.ellpeck.actuallyadditions.api.laser.LaserType;
|
||||||
import de.ellpeck.actuallyadditions.api.laser.Network;
|
import de.ellpeck.actuallyadditions.api.laser.Network;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityLaserRelayEnergy.Mode;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityLaserRelayEnergy.Mode;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
@ -36,7 +37,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
public class TileEntityLaserRelayFluids extends TileEntityLaserRelay{
|
public class TileEntityLaserRelayFluids extends TileEntityLaserRelay{
|
||||||
|
|
||||||
public final ConcurrentHashMap<EnumFacing, TileEntity> receiversAround = new ConcurrentHashMap<EnumFacing, TileEntity>();
|
public final ConcurrentHashMap<EnumFacing, TileEntity> handlersAround = new ConcurrentHashMap<EnumFacing, TileEntity>();
|
||||||
private final IFluidHandler[] fluidHandlers = new IFluidHandler[6];
|
private final IFluidHandler[] fluidHandlers = new IFluidHandler[6];
|
||||||
private Mode mode = Mode.BOTH;
|
private Mode mode = Mode.BOTH;
|
||||||
|
|
||||||
|
@ -69,6 +70,19 @@ public class TileEntityLaserRelayFluids extends TileEntityLaserRelay{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateEntity(){
|
||||||
|
super.updateEntity();
|
||||||
|
|
||||||
|
if(!this.world.isRemote){
|
||||||
|
if(this.mode == Mode.INPUT_ONLY){
|
||||||
|
for(EnumFacing side : this.handlersAround.keySet()){
|
||||||
|
WorldUtil.doFluidInteraction(this.handlersAround.get(side), this, side.getOpposite(), Integer.MAX_VALUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldSaveDataOnChangeOrWorldStart(){
|
public boolean shouldSaveDataOnChangeOrWorldStart(){
|
||||||
return true;
|
return true;
|
||||||
|
@ -76,16 +90,16 @@ public class TileEntityLaserRelayFluids extends TileEntityLaserRelay{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveDataOnChangeOrWorldStart(){
|
public void saveDataOnChangeOrWorldStart(){
|
||||||
Map<EnumFacing, TileEntity> old = new HashMap<EnumFacing, TileEntity>(this.receiversAround);
|
Map<EnumFacing, TileEntity> old = new HashMap<EnumFacing, TileEntity>(this.handlersAround);
|
||||||
boolean change = false;
|
boolean change = false;
|
||||||
|
|
||||||
this.receiversAround.clear();
|
this.handlersAround.clear();
|
||||||
for(EnumFacing side : EnumFacing.values()){
|
for(EnumFacing side : EnumFacing.values()){
|
||||||
BlockPos pos = this.getPos().offset(side);
|
BlockPos pos = this.getPos().offset(side);
|
||||||
TileEntity tile = this.world.getTileEntity(pos);
|
TileEntity tile = this.world.getTileEntity(pos);
|
||||||
if(tile != null && !(tile instanceof TileEntityLaserRelay)){
|
if(tile != null && !(tile instanceof TileEntityLaserRelay)){
|
||||||
if(tile.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side.getOpposite())){
|
if(tile.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side.getOpposite())){
|
||||||
this.receiversAround.put(side, tile);
|
this.handlersAround.put(side, tile);
|
||||||
|
|
||||||
TileEntity oldTile = old.get(side);
|
TileEntity oldTile = old.get(side);
|
||||||
if(oldTile == null || !tile.equals(oldTile)){
|
if(oldTile == null || !tile.equals(oldTile)){
|
||||||
|
@ -95,7 +109,7 @@ public class TileEntityLaserRelayFluids extends TileEntityLaserRelay{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(change || old.size() != this.receiversAround.size()){
|
if(change || old.size() != this.handlersAround.size()){
|
||||||
Network network = ActuallyAdditionsAPI.connectionHandler.getNetworkFor(this.getPos(), this.getWorld());
|
Network network = ActuallyAdditionsAPI.connectionHandler.getNetworkFor(this.getPos(), this.getWorld());
|
||||||
if(network != null){
|
if(network != null){
|
||||||
network.changeAmount++;
|
network.changeAmount++;
|
||||||
|
@ -137,9 +151,9 @@ public class TileEntityLaserRelayFluids extends TileEntityLaserRelay{
|
||||||
if(theRelay.mode != Mode.INPUT_ONLY){
|
if(theRelay.mode != Mode.INPUT_ONLY){
|
||||||
boolean workedOnce = false;
|
boolean workedOnce = false;
|
||||||
|
|
||||||
for(EnumFacing facing : theRelay.receiversAround.keySet()){
|
for(EnumFacing facing : theRelay.handlersAround.keySet()){
|
||||||
if(theRelay != this || facing != from){
|
if(theRelay != this || facing != from){
|
||||||
TileEntity tile = theRelay.receiversAround.get(facing);
|
TileEntity tile = theRelay.handlersAround.get(facing);
|
||||||
|
|
||||||
EnumFacing opp = facing.getOpposite();
|
EnumFacing opp = facing.getOpposite();
|
||||||
if(tile.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, opp)){
|
if(tile.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, opp)){
|
||||||
|
@ -168,7 +182,7 @@ public class TileEntityLaserRelayFluids extends TileEntityLaserRelay{
|
||||||
}
|
}
|
||||||
|
|
||||||
for(TileEntityLaserRelayFluids theRelay : relaysThatWork){
|
for(TileEntityLaserRelayFluids theRelay : relaysThatWork){
|
||||||
for(Map.Entry<EnumFacing, TileEntity> receiver : theRelay.receiversAround.entrySet()){
|
for(Map.Entry<EnumFacing, TileEntity> receiver : theRelay.handlersAround.entrySet()){
|
||||||
if(receiver != null){
|
if(receiver != null){
|
||||||
EnumFacing side = receiver.getKey();
|
EnumFacing side = receiver.getKey();
|
||||||
EnumFacing opp = side.getOpposite();
|
EnumFacing opp = side.getOpposite();
|
||||||
|
|
|
@ -1084,7 +1084,7 @@ booklet.actuallyadditions.chapter.empowerer.text.3=<n><n><n><i>Because every mod
|
||||||
booklet.actuallyadditions.chapter.empowerer.text.4=The <item>Display Stand<r> can also be used for other things! See the <imp>Blocks that use CF<r> section for more info about it!
|
booklet.actuallyadditions.chapter.empowerer.text.4=The <item>Display Stand<r> can also be used for other things! See the <imp>Blocks that use CF<r> section for more info about it!
|
||||||
|
|
||||||
booklet.actuallyadditions.chapter.fluidLaser.name=Fluid Laser Relays
|
booklet.actuallyadditions.chapter.fluidLaser.name=Fluid Laser Relays
|
||||||
booklet.actuallyadditions.chapter.fluidLaser.text.1=The <item>Fluid Laser Relays<r> work much in the same way that normal <item>Laser Relays<r> do, however the thing that makes the <item>Fluid Laser Relay<r> different from the <item>Energy Laser Relay<r>, however, is that it transfers <imp>fluids<r> from internal tanks of blocks into other blocks. <n><n><item>Fluid Laser Relays<r> can not be connected by Phantomfaces.
|
booklet.actuallyadditions.chapter.fluidLaser.text.1=The <item>Fluid Laser Relays<r> work much in the same way that normal <item>Laser Relays<r> do, however the thing that makes the <item>Fluid Laser Relay<r> different from the <item>Energy Laser Relay<r>, however, is that it transfers <imp>fluids<r> from internal tanks of blocks into other blocks. <n><n><item>Fluid Laser Relays<r> can not be connected by Phantomfaces. <n><n>Note that when they are toggled to <imp>Only out of adjacent Blocks<r> mode, they will <imp>actively pull<r> fluids out of containers around them.
|
||||||
|
|
||||||
booklet.actuallyadditions.chapter.distributorItem.name=Item Distributor
|
booklet.actuallyadditions.chapter.distributorItem.name=Item Distributor
|
||||||
booklet.actuallyadditions.chapter.distributorItem.text.1=The <item>Item Distributor<r> is a simple way to split up items and make them go <imp>in different directions<r>. <n><n>The distributor will <imp>pull items into it from the top<r> by itself, and then split them up and <imp>put them<r> out into inventories connected to all of the <imp>other sides<r> of it. <n>It tries to do split the items <imp>equally<r>, however this works best when inputting <imp>one item at a time<r>, which its pulling feature does automatically.
|
booklet.actuallyadditions.chapter.distributorItem.text.1=The <item>Item Distributor<r> is a simple way to split up items and make them go <imp>in different directions<r>. <n><n>The distributor will <imp>pull items into it from the top<r> by itself, and then split them up and <imp>put them<r> out into inventories connected to all of the <imp>other sides<r> of it. <n>It tries to do split the items <imp>equally<r>, however this works best when inputting <imp>one item at a time<r>, which its pulling feature does automatically.
|
||||||
|
|
Loading…
Reference in a new issue