forked from Upstream/mmocore
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:
parent
264024e385
commit
385f554116
@ -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;
|
||||||
|
|
||||||
|
@ -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));
|
||||||
|
Loading…
Reference in New Issue
Block a user