feat(assassin): add stealth and double jump
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
package games.dmg.spigottyrant;
|
||||
|
||||
import java.time.Clock;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public final class AbilityItemRefreshTask implements Runnable {
|
||||
private final TyrantStateManager stateManager;
|
||||
private final AbilityReadinessService readiness;
|
||||
private final AbilityItemService items;
|
||||
private final Server server;
|
||||
private final Clock clock;
|
||||
|
||||
public AbilityItemRefreshTask(
|
||||
TyrantStateManager stateManager,
|
||||
AbilityReadinessService readiness,
|
||||
AbilityItemService items,
|
||||
Server server,
|
||||
Clock clock
|
||||
) {
|
||||
this.stateManager = stateManager;
|
||||
this.readiness = readiness;
|
||||
this.items = items;
|
||||
this.server = server;
|
||||
this.clock = clock;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (stateManager.game().lifecycle() != GameLifecycle.RUNNING) {
|
||||
return;
|
||||
}
|
||||
for (Player player : server.getOnlinePlayers()) {
|
||||
PlayerState before = stateManager.player(player.getUniqueId(), player.getName());
|
||||
PlayerState after = readiness.refresh(before, clock.instant());
|
||||
if (!after.equals(before)) {
|
||||
stateManager.updatePlayer(
|
||||
player.getUniqueId(), player.getName(), current -> after
|
||||
);
|
||||
}
|
||||
items.removeInvalid(player, after);
|
||||
items.recover(player, after);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user