This fixes the deprecated setSkillCasting, and also fixes the casting-timeout system to use the latest action, whether its the casting mode enter or the casting skill action.

This commit is contained in:
Rosenthalk0 2023-06-27 14:21:05 -05:00
parent 264024e385
commit 385f554116
2 changed files with 21 additions and 11 deletions

View File

@ -23,7 +23,7 @@ public enum PlayerActivity {
CAST_SKILL(() -> MMOCore.plugin.configManager.globalSkillCooldown), CAST_SKILL(() -> MMOCore.plugin.configManager.globalSkillCooldown),
; ENTER_CASTING(null);
private final Provider<Long> timeout; private final Provider<Long> timeout;

View File

@ -1007,13 +1007,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
@Deprecated @Deprecated
public boolean setSkillCasting(@NotNull SkillCastingInstance skillCasting) { public boolean setSkillCasting(@NotNull SkillCastingInstance skillCasting) {
Validate.isTrue(!isCasting(), "Player already in casting mode"); Validate.isTrue(!isCasting(), "Player already in casting mode");
PlayerEnterCastingModeEvent event = new PlayerEnterCastingModeEvent(getPlayer()); return setSkillCasting();
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) return false;
skillCasting.close();
setSkillCasting();
return true;
} }
/** /**
@ -1025,8 +1019,8 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
PlayerEnterCastingModeEvent event = new PlayerEnterCastingModeEvent(getPlayer()); PlayerEnterCastingModeEvent event = new PlayerEnterCastingModeEvent(getPlayer());
Bukkit.getPluginManager().callEvent(event); Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) return false; if (event.isCancelled()) return false;
this.skillCasting = SkillCastingMode.getCurrent().newInstance(this); this.skillCasting = SkillCastingMode.getCurrent().newInstance(this);
setLastActivity(PlayerActivity.ENTER_CASTING);
return true; return true;
} }
@ -1062,10 +1056,26 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
return true; return true;
} }
public boolean isCastingTimeoutExpired(){ public boolean isCastingTimeoutExpired() {
return isCasting() && System.currentTimeMillis() - getLastActivity(PlayerActivity.CAST_SKILL) > (MMOCore.plugin.configManager.castingTimeoutTime * 1000L) && MMOCore.plugin.configManager.castingTimeoutTime > 0; if (MMOCore.plugin.configManager.castingTimeoutTime <= 0) return false;
if (!isCasting()) return false;
long lastSkillCastTime = getLastActivity(PlayerActivity.CAST_SKILL);
long lastEnterCastingTime = getLastActivity(PlayerActivity.ENTER_CASTING);
// If the player is in casting mode but has not yet cast a skill, use the enter casting time
if (lastSkillCastTime == 0L)
lastSkillCastTime = lastEnterCastingTime;
long lastActivityTime = Math.max(lastSkillCastTime, lastEnterCastingTime);
long timeSinceLastActivity = System.currentTimeMillis() - lastActivityTime;
long castingTimeoutMillis = MMOCore.plugin.configManager.castingTimeoutTime * 1000L;
return timeSinceLastActivity > castingTimeoutMillis;
} }
public void displayActionBar(String message) { public void displayActionBar(String message) {
setLastActivity(PlayerActivity.ACTION_BAR_MESSAGE); setLastActivity(PlayerActivity.ACTION_BAR_MESSAGE);
getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message)); getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message));