possibly fixed laser relays sometimes disconnecting (finally? D:)

This commit is contained in:
Ellpeck 2017-03-30 18:11:42 +02:00
parent f7576c652a
commit d9695923d8
2 changed files with 8 additions and 26 deletions

View file

@ -10,6 +10,7 @@
package de.ellpeck.actuallyadditions.mod.blocks; package de.ellpeck.actuallyadditions.mod.blocks;
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.api.laser.Network; import de.ellpeck.actuallyadditions.api.laser.Network;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.blocks.base.BlockContainerBase; import de.ellpeck.actuallyadditions.mod.blocks.base.BlockContainerBase;
@ -273,6 +274,13 @@ public class BlockLaserRelay extends BlockContainerBase implements IHudDisplay{
} }
} }
@Override
public void breakBlock(World world, BlockPos pos, IBlockState state){
super.breakBlock(world, pos, state);
ActuallyAdditionsAPI.connectionHandler.removeRelayFromNetwork(pos, world);
}
public enum Type{ public enum Type{
ENERGY_BASIC, ENERGY_BASIC,
ENERGY_ADVANCED, ENERGY_ADVANCED,

View file

@ -28,8 +28,6 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import java.util.Set;
public abstract class TileEntityLaserRelay extends TileEntityInventoryBase{ public abstract class TileEntityLaserRelay extends TileEntityInventoryBase{
public static final int MAX_DISTANCE = 15; public static final int MAX_DISTANCE = 15;
@ -41,8 +39,6 @@ public abstract class TileEntityLaserRelay extends TileEntityInventoryBase{
private int changeAmountAtCaching = -1; private int changeAmountAtCaching = -1;
private int lastRange; private int lastRange;
private Set<IConnectionPair> tempConnectionStorage;
public TileEntityLaserRelay(String name, LaserType type){ public TileEntityLaserRelay(String name, LaserType type){
super(1, name); super(1, name);
this.type = type; this.type = type;
@ -153,28 +149,6 @@ public abstract class TileEntityLaserRelay extends TileEntityInventoryBase{
return this.cachedNetwork; return this.cachedNetwork;
} }
@Override
public void invalidate(){
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 = ActuallyAdditionsAPI.connectionHandler.getConnectionsFor(this.pos, this.world);
ActuallyAdditionsAPI.connectionHandler.removeRelayFromNetwork(this.pos, this.world);
}
@Override
public void validate(){
if(this.tempConnectionStorage != null){
for(IConnectionPair pair : this.tempConnectionStorage){
ActuallyAdditionsAPI.connectionHandler.addConnection(pair.getPositions()[0], pair.getPositions()[1], pair.getType(), this.world, pair.doesSuppressRender());
}
this.tempConnectionStorage = null;
}
super.validate();
}
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public AxisAlignedBB getRenderBoundingBox(){ public AxisAlignedBB getRenderBoundingBox(){