Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions src/main/java/games/omg/channeling/TeleportTools.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import games.omg.menus.InventoryMenu;
import games.omg.resources.Decorations;
import games.omg.utils.StringUtils;
import games.omg.utils.TaskManager;
import games.omg.utils.OldTaskManager;
import games.omg.utils.Utils;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
Expand All @@ -46,7 +46,7 @@ public static TeleportReason channelTeleport(Player p, ChannelingObject channeli
Material.PACKED_ICE, "All channels must either be instant or last at least 10 seconds."));
channels.put(p, channelingObject);

if (TaskManager.isTaskRunning(p, "teleportation"))
if (OldTaskManager.isTaskRunning(p, "teleportation"))
return TeleportReason.ALREADY_TELEPORTING;

InventoryMenu channelingMenu = new InventoryMenu(p, "ChannelingMenu", 9 * 3, menuTitle,
Expand Down Expand Up @@ -96,7 +96,7 @@ public void inventoryInteractEvent(InventoryInteractEvent e) {
@Override
public void create(Inventory i) {
updateChannelingInventory(i);
TaskManager.initTask(p, "teleportation",
OldTaskManager.initTask(p, "teleportation",
Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getPlugin(), new Runnable() {
public void run() {
if (!channelingObject.next()) {
Expand All @@ -110,7 +110,7 @@ public void run() {

@Override
public void close(Inventory i) {
if (TaskManager.isTaskRunning(p, "teleportation")) {
if (OldTaskManager.isTaskRunning(p, "teleportation")) {
teleportInterrupted(p);
p.sendMessage(Decorations.createSystemMessage(NamedTextColor.BLUE, "Teleport",
Component.text("You cancelled the teleport.")));
Expand All @@ -125,7 +125,7 @@ public void close(Inventory i) {
}

private static void teleportFinished(Player p, boolean complete) {
TaskManager.stopTask(p, "teleportation");
OldTaskManager.stopTask(p, "teleportation");
// ScoreboardTools.setGlobalPrefix(p, "");
// Main.updateScoreboard();
p.closeInventory();
Expand Down
87 changes: 68 additions & 19 deletions src/main/java/games/omg/combat/Combat.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,42 @@
package games.omg.combat;

import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.bukkit.Bukkit;
import org.bukkit.entity.Entity;

import games.omg.combat.combatants.Combatant;

public class Combat {

private static final int COMBAT_TIMEOUT = 20 * 10;

private static HashMap<Entity, Combat> combatMap = new HashMap<>();
private static HashMap<String, Integer> combatTaskMap = new HashMap<>();

public static Combat get(Entity entity) {
return combatMap.get(entity);
}

public static boolean isInCombat(Entity entity) {
return combatMap.containsKey(entity);
}

protected static void engageEntityInCombat(Entity entity, Entity otherEntity) {
Combat combat = combatMap.get(entity);

if (combat == null) {
combat = new Combat(entity);
combatMap.put(entity, combat);
}

combat.addCombatant(otherEntity);
}

//

private Entity entity;

// TODO: certain types of non-entity causes
Expand All @@ -22,26 +50,29 @@ public class Combat {
private Set<Combatant> currentCombatants = new HashSet<>();
private Set<Combatant> allCombatants = new HashSet<>();

private long startTime = System.currentTimeMillis();
private long endTime = 0;
private int startTick = Bukkit.getCurrentTick();
private int updateTick = startTick;
private int endTick = 0;

public Combat(Entity entity) {
this.entity = entity;

combatMap.put(entity, this);
}

public Combat(Entity entity, List<Combatant> combatants) {
this(entity);
// public Combat(Entity entity, List<Combatant> combatants) {
// this(entity);

this.currentCombatants.addAll(combatants);
this.allCombatants.addAll(combatants);
}
// this.currentCombatants.addAll(combatants);
// this.allCombatants.addAll(combatants);
// }

public Combat(Entity entity, Combatant combatant) {
this(entity);
// public Combat(Entity entity, Combatant combatant) {
// this(entity);

this.currentCombatants.add(combatant);
this.allCombatants.add(combatant);
}
// this.currentCombatants.add(combatant);
// this.allCombatants.add(combatant);
// }

//

Expand All @@ -57,26 +88,44 @@ public Set<Combatant> getAllCombatants() {
return allCombatants;
}

public long getStartTime() {
return startTime;
public int getStartTick() {
return startTick;
}

public int getEndTick() {
return endTick;
}

public boolean hasEnded() {
return endTime != 0;
return endTick != 0;
}

public int getDuration() {
if (hasEnded()) {
return endTick - startTick;
}
return Bukkit.getCurrentTick() - startTick;
}

public long getDuration() {
public int getRemainingTime() {
if (hasEnded()) {
return endTime - startTime;
return 0;
}
return System.currentTimeMillis() - startTime;
return Math.max(0, COMBAT_TIMEOUT - (Bukkit.getCurrentTick() - updateTick));
}

//

public void addCombatant(Combatant combatant) {
currentCombatants.add(combatant);
allCombatants.add(combatant);

updateTick = Bukkit.getCurrentTick();
// TODO: remove this combatant after the timeout
}

public void addCombatant(Entity entity) {
addCombatant(Combatant.from(entity));
}

public void removeCombatant(Combatant combatant) {
Expand Down
26 changes: 0 additions & 26 deletions src/main/java/games/omg/combat/CombatTracker.java

This file was deleted.

4 changes: 2 additions & 2 deletions src/main/java/games/omg/command/commands/TeleportCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import games.omg.command.RegularCommand;
import games.omg.utils.PlayerUtils;
import games.omg.utils.StringUtils;
import games.omg.utils.TaskManager;
import games.omg.utils.OldTaskManager;
import net.kyori.adventure.text.Component;
import net.md_5.bungee.api.ChatColor;

Expand Down Expand Up @@ -54,7 +54,7 @@ public CommandMessage execute(CommandSender sender, String label, String[] args)
.sendTo(p);
}
teleportAsk.put(p, player);
TaskManager.initTask(p, "teleport",
OldTaskManager.initTask(p, "teleport",
Bukkit.getScheduler().scheduleSyncDelayedTask(Main.getPlugin(), new Runnable() {
public void run() {
teleportAsk.remove(p);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,14 @@
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

public class TaskManager {
/**
* A utility class for managing tasks.
*
* Written 10 years ago by a child.
*
* @deprecated Use {@link games.omg.utils.TaskManager} instead.
*/
public class OldTaskManager {
private static HashMap<String, Integer> tasks = new HashMap<String, Integer>();
private static HashMap<String, Integer> alwaystasks = new HashMap<String, Integer>();
private static HashMap<UUID, HashMap<String, Integer>> ptasks = new HashMap<UUID, HashMap<String, Integer>>();
Expand Down