Set state to error even if throttle is minimal

This commit is contained in:
DBotThePony 2021-08-18 17:55:51 +07:00
parent bb8e594b4c
commit 51faf655b9
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -170,16 +170,18 @@ abstract public class BlockEntityMatteryPoweredWorker extends BlockEntityMattery
private int idle_ticks_anim = 0; private int idle_ticks_anim = 0;
private int working_ticks_anim = 0; private int working_ticks_anim = 0;
private int error_ticks_anim = 0;
protected void workerLoop() { protected void workerLoop() {
if (throttle_ticks > 0) { if (level != null && error_ticks_anim > 20 && getBlockState().hasProperty(WORKER_STATE) && getBlockState().getValue(WORKER_STATE) != WorkerState.ERROR) {
if (level != null && throttle_ticks > 40 && getBlockState().hasProperty(WORKER_STATE) && getBlockState().getValue(WORKER_STATE) != WorkerState.ERROR) {
level.setBlock(getBlockPos(), getBlockState().setValue(WORKER_STATE, WorkerState.ERROR), Block.UPDATE_CLIENTS); level.setBlock(getBlockPos(), getBlockState().setValue(WORKER_STATE, WorkerState.ERROR), Block.UPDATE_CLIENTS);
} }
if (throttle_ticks > 0) {
working_ticks_anim = 0; working_ticks_anim = 0;
idle_ticks_anim = 0; idle_ticks_anim = 0;
throttle_ticks--; throttle_ticks--;
error_ticks_anim++;
if (throttle_ticks > 0) if (throttle_ticks > 0)
return; return;
@ -187,6 +189,7 @@ abstract public class BlockEntityMatteryPoweredWorker extends BlockEntityMattery
if (is_idling) { if (is_idling) {
working_ticks_anim = 0; working_ticks_anim = 0;
error_ticks_anim = 0;
idle_ticks_anim++; idle_ticks_anim++;
if (level != null && idle_ticks_anim > 20 && getBlockState().hasProperty(WORKER_STATE) && getBlockState().getValue(WORKER_STATE) != WorkerState.IDLE) { if (level != null && idle_ticks_anim > 20 && getBlockState().hasProperty(WORKER_STATE) && getBlockState().getValue(WORKER_STATE) != WorkerState.IDLE) {
@ -235,6 +238,7 @@ abstract public class BlockEntityMatteryPoweredWorker extends BlockEntityMattery
} }
working_ticks_anim++; working_ticks_anim++;
error_ticks_anim = 0;
double new_work_ticks = work_speed.doubleValue() + work_ticks; double new_work_ticks = work_speed.doubleValue() + work_ticks;
@ -265,6 +269,7 @@ abstract public class BlockEntityMatteryPoweredWorker extends BlockEntityMattery
} }
working_ticks_anim++; working_ticks_anim++;
error_ticks_anim = 0;
work_ticks += 1d; work_ticks += 1d;
if (work_ticks >= current_job.ticks_processing_time) { if (work_ticks >= current_job.ticks_processing_time) {
@ -284,12 +289,14 @@ abstract public class BlockEntityMatteryPoweredWorker extends BlockEntityMattery
if (finish.valid) { if (finish.valid) {
current_job = null; current_job = null;
work_ticks = 0d; work_ticks = 0d;
error_ticks_anim = 0;
} else { } else {
throttle_ticks += finish.throttle; throttle_ticks += finish.throttle;
error_ticks_anim++;
} }
} }
if (level != null && working_ticks_anim > 20 && getBlockState().hasProperty(WORKER_STATE) && getBlockState().getValue(WORKER_STATE) != WorkerState.WORKING) { if (level != null && (working_ticks_anim > 20 && error_ticks_anim == 0) && getBlockState().hasProperty(WORKER_STATE) && getBlockState().getValue(WORKER_STATE) != WorkerState.WORKING) {
level.setBlock(getBlockPos(), getBlockState().setValue(WORKER_STATE, WorkerState.WORKING), Block.UPDATE_CLIENTS); level.setBlock(getBlockPos(), getBlockState().setValue(WORKER_STATE, WorkerState.WORKING), Block.UPDATE_CLIENTS);
} }
} }