entityStatemachine.addTransition(new TickingTransition<>(EntityState.INIT, () -> true, this::initialize, 40));
entityStatemachine.addTransition(new TickingTransition<>(EntityState.ACTIVE_CLIENT, () -> {citizenColonyHandler.updateColonyClient();return false;}, () -> null, 1));
entityStatemachine.addTransition(new TickingTransition<>(EntityState.ACTIVE_CLIENT, this::shouldBeInactive, () -> EntityState.INACTIVE, TICKS_20));
entityStatemachine.addTransition(new TickingTransition<>(EntityState.ACTIVE_CLIENT, this::refreshCitizenDataView, () -> null, TICKS_20));
entityStatemachine.addTransition(new TickingTransition<>(EntityState.ACTIVE_SERVER, this::updateSaturation, () -> null, HEAL_CITIZENS_AFTER));
entityStatemachine.addTransition(new TickingTransition<>(EntityState.ACTIVE_SERVER, this::updateVisualData, () -> null, 200));
entityStatemachine.addTransition(new TickingTransition<>(EntityState.ACTIVE_SERVER, this::onServerUpdateHandlers, () -> null, TICKS_20));
entityStatemachine.addTransition(new TickingTransition<>(EntityState.ACTIVE_SERVER, this::onTickDecrements, () -> null, 1));
entityStatemachine.addTransition(new TickingTransition<>(EntityState.ACTIVE_SERVER, this::shouldBeInactive, () -> EntityState.INACTIVE, TICKS_20));
entityStatemachine.addTransition(new TickingTransition<>(EntityState.ACTIVE_SERVER, this::determineDesiredActivity, () -> null, 100));
entityStatemachine.addTransition(new TickingTransition<>(EntityState.INACTIVE, this::isAlive, () -> EntityState.INIT, 100));
/**
* Called frequently so the entity can update its state every tick as required.
For example, zombies and skeletons. use this to react to sunlight and start to burn.
*/
@Override
public void livingTick()
{
super.livingTick();
entityStatemachine.tick();
}
this.goalSelector.addGoal(++priority, new EntityAIEatTask(this));
public EntityAIWorkDeliveryman(@NotNull final JobDeliveryman deliveryman)
{
super(deliveryman);
super.registerTargets(
/*
* Check if tasks should be executed.
*/
new AITarget(IDLE, () -> START_WORKING, 1),
new AITarget(START_WORKING, this::checkIfExecute, this::decide, DECISION_DELAY),
new AITarget(PREPARE_DELIVERY, this::prepareDelivery, STANDARD_DELAY),
new AITarget(DELIVERY, this::deliver, STANDARD_DELAY),
new AITarget(PICKUP, this::pickup, PICKUP_DELAY),
new AITarget(DUMPING, this::dump, TICKS_SECOND)
);
worker.setCanPickUpLoot(true);
}
评论区