RuneHive-Game
Loading...
Searching...
No Matches
PlayerRemovalTask.java
Go to the documentation of this file.
1package com.runehive.game.task.impl;
2
3import com.runehive.content.activity.Activity;
4import com.runehive.content.activity.impl.duelarena.DuelArenaActivity;
5import com.runehive.content.combat.cannon.CannonManager;
6import com.runehive.game.task.TickableTask;
7import com.runehive.game.world.entity.mob.player.Player;
8import com.runehive.game.world.entity.mob.player.persist.PlayerSerializer;
9import com.runehive.util.Stopwatch;
10
11import java.util.concurrent.TimeUnit;
12
13public class PlayerRemovalTask extends TickableTask {
14
15 private final Player player;
17 private final boolean force;
18 private boolean flag;
19
21 super(true, 0);
22 this.player = player;
23 this.force = force;
24 }
25
26 @Override
27 protected void tick() {
28
29 // wait till player death task is finished
30 if (player.isDead()) {
31 return;
32 }
33
34 // player is in combat for too long
35 if (player.getCombat().isUnderAttack() && stopwatch.elapsedTime(TimeUnit.SECONDS) < 60) {
36 return;
37 }
38
39 // if a player is in an activity they can logout if the activity lets them or unless 60 seconds has elapsed
40 if (Activity.evaluate(player, it -> !it.canLogout(player)) && (Activity.search(player, DuelArenaActivity.class).isPresent() || stopwatch.elapsedTime(TimeUnit.SECONDS) < 60)) {
41 return;
42 }
43
44 if (!flag) {
46 com.runehive.content.ai.LazyAIManager.clearPlayerConsent(player.getUsername());
48 flag = true;
49 return;
50 }
51
52 // make sure the players account has saved first, player saving is on a different thread so its gonna take
53 // a few seconds
54 if (player.saved.get()) {
55 cancel();
56 }
57
58 }
59
60 @Override
61 protected void onCancel(boolean logout) {
62 player.unregister();
63 }
64
65}
A Activity object constructs an in-game activity and sequences it through the start() and finish() me...
Definition Activity.java:31
static< T extends Activity > Optional< T > search(Player player, Class< T > clazz)
Definition Activity.java:60
static boolean evaluate(Mob mob, Predicate< Activity > predicate)
Definition Activity.java:74
synchronized final void cancel()
Cancels all subsequent executions.
Definition Task.java:113
TickableTask(boolean instant, int delay)
void onCancel(boolean logout)
A function executed on cancellation.
This class represents a character controlled by a player.
Definition Player.java:125
static Stopwatch start()