Agent migration from 2.0 (legacy), basic velocities and maneuvering.

This commit is contained in:
batchprogrammer314
2021-07-12 18:20:17 -05:00
parent 7c2de37bd8
commit 94da2ac11b
16 changed files with 1407 additions and 64 deletions

View File

@@ -0,0 +1,55 @@
package net.nuggetmc.ai.bot.agent;
import net.nuggetmc.ai.PlayerAI;
import net.nuggetmc.ai.bot.BotManager;
import org.bukkit.Bukkit;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitScheduler;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public abstract class Agent {
protected final PlayerAI plugin;
protected final BotManager manager;
protected final BukkitScheduler scheduler;
protected final Set<BukkitRunnable> taskList;
protected final Random random;
protected boolean enabled;
protected int taskID;
public Agent(BotManager manager) {
this.plugin = PlayerAI.getInstance();
this.manager = manager;
this.scheduler = Bukkit.getScheduler();
this.taskList = new HashSet<>();
this.random = new Random();
setEnabled(true);
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean b) {
enabled = b;
if (b) {
taskID = scheduler.scheduleSyncRepeatingTask(plugin, this::tick, 0, 1);
} else {
scheduler.cancelTask(taskID);
taskList.forEach(t -> {
if (!t.isCancelled()) {
t.cancel();
}
});
taskList.clear();
}
}
protected abstract void tick();
}