Decreased amount of network updates required for engines significantly.
This commit is contained in:
parent
abe7ef1b6a
commit
3a162283bc
1 changed files with 28 additions and 17 deletions
|
@ -46,6 +46,8 @@ public class TileEngine extends TileBuildCraft implements IPowerReceptor, IInven
|
||||||
int progressPart = 0;
|
int progressPart = 0;
|
||||||
public @TileNetworkData
|
public @TileNetworkData
|
||||||
float serverPistonSpeed = 0;
|
float serverPistonSpeed = 0;
|
||||||
|
public @TileNetworkData
|
||||||
|
boolean isActive = false; // Used for SMP synch
|
||||||
|
|
||||||
boolean lastPower = false;
|
boolean lastPower = false;
|
||||||
|
|
||||||
|
@ -88,14 +90,22 @@ public class TileEngine extends TileBuildCraft implements IPowerReceptor, IInven
|
||||||
|
|
||||||
if (engine.progress > 1) {
|
if (engine.progress > 1) {
|
||||||
progressPart = 0;
|
progressPart = 0;
|
||||||
|
engine.progress = 0;
|
||||||
}
|
}
|
||||||
}
|
} else if(this.isActive)
|
||||||
|
progressPart = 1;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
engine.update();
|
engine.update();
|
||||||
|
|
||||||
|
float newPistonSpeed = engine.getPistonSpeed();
|
||||||
|
if (newPistonSpeed != serverPistonSpeed) {
|
||||||
|
serverPistonSpeed = newPistonSpeed;
|
||||||
|
sendNetworkUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
if (progressPart != 0) {
|
if (progressPart != 0) {
|
||||||
engine.progress += engine.getPistonSpeed();
|
engine.progress += engine.getPistonSpeed();
|
||||||
|
|
||||||
|
@ -121,6 +131,7 @@ public class TileEngine extends TileBuildCraft implements IPowerReceptor, IInven
|
||||||
progressPart = 0;
|
progressPart = 0;
|
||||||
}
|
}
|
||||||
} else if (isRedstonePowered && engine.isActive()) {
|
} else if (isRedstonePowered && engine.isActive()) {
|
||||||
|
|
||||||
Position pos = new Position(xCoord, yCoord, zCoord, engine.orientation);
|
Position pos = new Position(xCoord, yCoord, zCoord, engine.orientation);
|
||||||
pos.moveForwards(1.0);
|
pos.moveForwards(1.0);
|
||||||
TileEntity tile = worldObj.getBlockTileEntity((int) pos.x, (int) pos.y, (int) pos.z);
|
TileEntity tile = worldObj.getBlockTileEntity((int) pos.x, (int) pos.y, (int) pos.z);
|
||||||
|
@ -131,26 +142,26 @@ public class TileEngine extends TileBuildCraft implements IPowerReceptor, IInven
|
||||||
if (engine.extractEnergy(receptor.getPowerProvider().minEnergyReceived,
|
if (engine.extractEnergy(receptor.getPowerProvider().minEnergyReceived,
|
||||||
receptor.getPowerProvider().maxEnergyReceived, false) > 0) {
|
receptor.getPowerProvider().maxEnergyReceived, false) > 0) {
|
||||||
progressPart = 1;
|
progressPart = 1;
|
||||||
|
setActive(true);
|
||||||
if (APIProxy.isServerSide()) {
|
} else
|
||||||
sendNetworkUpdate();
|
setActive(false);
|
||||||
}
|
} else
|
||||||
}
|
setActive(false);
|
||||||
}
|
|
||||||
} else {
|
} else
|
||||||
// If we're not in an active movement process, update the client
|
setActive(false);
|
||||||
// from time to time in order to e.g. display proper color.
|
|
||||||
|
|
||||||
if (APIProxy.isServerSide()) {
|
|
||||||
if (worldObj.getWorldTime() % 20 * 10 == 0) {
|
|
||||||
sendNetworkUpdate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
engine.burn();
|
engine.burn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setActive(boolean isActive) {
|
||||||
|
if(this.isActive == isActive)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.isActive = isActive;
|
||||||
|
sendNetworkUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
private void createEngineIfNeeded() {
|
private void createEngineIfNeeded() {
|
||||||
if (engine == null) {
|
if (engine == null) {
|
||||||
int kind = worldObj.getBlockMetadata(xCoord, yCoord, zCoord);
|
int kind = worldObj.getBlockMetadata(xCoord, yCoord, zCoord);
|
||||||
|
|
Loading…
Reference in a new issue