diff --git a/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityMatteryPoweredWorker.java b/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityMatteryPoweredWorker.java index 3f8f18131..ca3b8a5bd 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityMatteryPoweredWorker.java +++ b/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityMatteryPoweredWorker.java @@ -170,16 +170,18 @@ abstract public class BlockEntityMatteryPoweredWorker extends BlockEntityMattery private int idle_ticks_anim = 0; private int working_ticks_anim = 0; + private int error_ticks_anim = 0; protected void workerLoop() { - if (throttle_ticks > 0) { - 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); - } + if (level != null && error_ticks_anim > 20 && getBlockState().hasProperty(WORKER_STATE) && getBlockState().getValue(WORKER_STATE) != WorkerState.ERROR) { + level.setBlock(getBlockPos(), getBlockState().setValue(WORKER_STATE, WorkerState.ERROR), Block.UPDATE_CLIENTS); + } + if (throttle_ticks > 0) { working_ticks_anim = 0; idle_ticks_anim = 0; throttle_ticks--; + error_ticks_anim++; if (throttle_ticks > 0) return; @@ -187,6 +189,7 @@ abstract public class BlockEntityMatteryPoweredWorker extends BlockEntityMattery if (is_idling) { working_ticks_anim = 0; + error_ticks_anim = 0; idle_ticks_anim++; 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++; + error_ticks_anim = 0; double new_work_ticks = work_speed.doubleValue() + work_ticks; @@ -265,6 +269,7 @@ abstract public class BlockEntityMatteryPoweredWorker extends BlockEntityMattery } working_ticks_anim++; + error_ticks_anim = 0; work_ticks += 1d; if (work_ticks >= current_job.ticks_processing_time) { @@ -284,12 +289,14 @@ abstract public class BlockEntityMatteryPoweredWorker extends BlockEntityMattery if (finish.valid) { current_job = null; work_ticks = 0d; + error_ticks_anim = 0; } else { 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); } }