mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
handle shovels and prevent any unforeseen issues (like if a channel gets separated by breaking/explosion)
This commit is contained in:
parent
8634d63625
commit
e65a98421f
@ -176,6 +176,7 @@ public class FoundryChannel extends BlockContainer implements ICrucibleAcceptor
|
|||||||
}
|
}
|
||||||
cast.amount = 0;
|
cast.amount = 0;
|
||||||
cast.type = null;
|
cast.type = null;
|
||||||
|
cast.propagateMaterial(null);
|
||||||
cast.markDirty();
|
cast.markDirty();
|
||||||
world.markBlockForUpdate(x, y, z);
|
world.markBlockForUpdate(x, y, z);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,6 +24,7 @@ public class TileEntityFoundryChannel extends TileEntityFoundryBase {
|
|||||||
|
|
||||||
protected NTMMaterial neighborType;
|
protected NTMMaterial neighborType;
|
||||||
protected boolean hasCheckedNeighbors;
|
protected boolean hasCheckedNeighbors;
|
||||||
|
protected int unpropagateTime;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateEntity() {
|
public void updateEntity() {
|
||||||
@ -115,10 +116,19 @@ public class TileEntityFoundryChannel extends TileEntityFoundryBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(neighborType != null && amount == 0) unpropagateTime++;
|
||||||
|
|
||||||
|
// every 5 seconds do a unprop test, will only occur once per contiguous channel per 5 seconds due to the timer getting updated in all channels from the prop
|
||||||
|
if(unpropagateTime > 100) {
|
||||||
|
propagateMaterial(null);
|
||||||
|
}
|
||||||
|
|
||||||
if(this.amount == 0) {
|
if(this.amount == 0) {
|
||||||
this.lastFlow = 0;
|
this.lastFlow = 0;
|
||||||
this.nextUpdate = 5;
|
this.nextUpdate = 5;
|
||||||
|
} else {
|
||||||
|
unpropagateTime = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,7 +174,7 @@ public class TileEntityFoundryChannel extends TileEntityFoundryBase {
|
|||||||
return super.pour(world, x, y, z, dX, dY, dZ, side, stack);
|
return super.pour(world, x, y, z, dX, dY, dZ, side, stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void propagateMaterial(NTMMaterial propType) {
|
public void propagateMaterial(NTMMaterial propType) {
|
||||||
if(propType != null && neighborType != null) return; // optimise away any pours that change nothing
|
if(propType != null && neighborType != null) return; // optimise away any pours that change nothing
|
||||||
|
|
||||||
List<TileEntityFoundryChannel> visited = new ArrayList<TileEntityFoundryChannel>();
|
List<TileEntityFoundryChannel> visited = new ArrayList<TileEntityFoundryChannel>();
|
||||||
@ -181,8 +191,13 @@ public class TileEntityFoundryChannel extends TileEntityFoundryBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected boolean propagateMaterial(NTMMaterial propType, List<TileEntityFoundryChannel> visited, boolean hasMaterial) {
|
protected boolean propagateMaterial(NTMMaterial propType, List<TileEntityFoundryChannel> visited, boolean hasMaterial) {
|
||||||
// if emptying, don't allow the channel to be marked as ready for a new material until it is entirely clear
|
// if emptying, don't mark the channel as ready for a new material until it is entirely clear
|
||||||
if(propType != null) neighborType = propType;
|
if(propType != null) {
|
||||||
|
neighborType = propType;
|
||||||
|
} else {
|
||||||
|
// and when empty testing, update the last unpropagate time
|
||||||
|
unpropagateTime = 0;
|
||||||
|
}
|
||||||
|
|
||||||
for(ForgeDirection dir : new ForgeDirection[] { ForgeDirection.NORTH, ForgeDirection.SOUTH, ForgeDirection.WEST, ForgeDirection.EAST }) {
|
for(ForgeDirection dir : new ForgeDirection[] { ForgeDirection.NORTH, ForgeDirection.SOUTH, ForgeDirection.WEST, ForgeDirection.EAST }) {
|
||||||
TileEntity b = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ);
|
TileEntity b = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user