mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-26 00:38:35 +01:00
possibly fixed laser relays sometimes disconnecting (finally? D:)
This commit is contained in:
parent
f7576c652a
commit
d9695923d8
2 changed files with 8 additions and 26 deletions
|
@ -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,
|
||||||
|
|
|
@ -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(){
|
||||||
|
|
Loading…
Reference in a new issue