From 22ee698d7ca2da79adeedfdc675cf0dd4ac4ea9e Mon Sep 17 00:00:00 2001 From: Rosenthalk0 Date: Mon, 26 Jun 2023 17:08:03 -0500 Subject: [PATCH] Proposing this as the system for the timeout. I havent test this yet though as my MMOCore is not builing properly. --- .../java/net/Indyuce/mmocore/api/player/PlayerData.java | 6 +++++- .../java/net/Indyuce/mmocore/manager/ConfigManager.java | 7 +++++-- .../Indyuce/mmocore/skill/cast/SkillCastingInstance.java | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java index bb20021f..48cbc5ef 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java @@ -439,7 +439,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD } public long getLastActivity(PlayerActivity activity) { - return this.lastActivity.getOrDefault(activity, 0l); + return this.lastActivity.getOrDefault(activity, 0L); } public long getActivityTimeOut(PlayerActivity activity) { @@ -1062,6 +1062,10 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD return true; } + public boolean isCastingTimeoutExpired(){ + return isCasting() && System.currentTimeMillis() - getLastActivity(PlayerActivity.CAST_SKILL) > (MMOCore.plugin.configManager.castingTimeoutTime * 1000L) && MMOCore.plugin.configManager.castingTimeoutTime > 0; + } + public void displayActionBar(String message) { setLastActivity(PlayerActivity.ACTION_BAR_MESSAGE); getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message)); diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/ConfigManager.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/ConfigManager.java index 2e030706..5fd9dd97 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/ConfigManager.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/ConfigManager.java @@ -34,11 +34,10 @@ public class ConfigManager { public long combatLogTimer, lootChestExpireTime, lootChestPlayerCooldown, globalSkillCooldown; public double lootChestsChanceWeight, dropItemsChanceWeight, fishingDropsChanceWeight, partyMaxExpSplitRange, pvpModeToggleOnCooldown, pvpModeToggleOffCooldown, pvpModeCombatCooldown, pvpModeCombatTimeout, pvpModeInvulnerabilityTimeRegionChange, pvpModeInvulnerabilityTimeCommand, pvpModeRegionEnterCooldown, pvpModeRegionLeaveCooldown; - public int maxPartyLevelDifference, maxSkillSlots, minCombatLevel, maxCombatLevelDifference, skillTreeScrollStepX, skillTreeScrollStepY; + public int maxPartyLevelDifference, maxSkillSlots, minCombatLevel, maxCombatLevelDifference, skillTreeScrollStepX, skillTreeScrollStepY, castingTimeoutTime; public final List combatLogDamageCauses = new ArrayList<>(); private final FileConfiguration messages; - /* * The instance must be created after the other managers since all it does * is to update them based on the config except for the classes which are @@ -124,6 +123,10 @@ public class ConfigManager { lootChestExpireTime = Math.max(MMOCore.plugin.getConfig().getInt("loot-chests.chest-expire-time"), 1) * 20; lootChestPlayerCooldown = (long) MMOCore.plugin.getConfig().getDouble("player-cooldown") * 1000L; globalSkillCooldown = MMOCore.plugin.getConfig().getLong("global-skill-cooldown") * 50; + + //Timeout for casting + castingTimeoutTime = MMOCore.plugin.getConfig().getInt("skill-casting.timeout",0); + noSkillBoundPlaceholder = getSimpleMessage("no-skill-placeholder").message(); lootChestsChanceWeight = MMOCore.plugin.getConfig().getDouble("chance-stat-weight.loot-chests"); dropItemsChanceWeight = MMOCore.plugin.getConfig().getDouble("chance-stat-weight.drop-items"); diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/cast/SkillCastingInstance.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/cast/SkillCastingInstance.java index 7dac62a8..2177b23e 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/cast/SkillCastingInstance.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/cast/SkillCastingInstance.java @@ -39,7 +39,7 @@ public abstract class SkillCastingInstance extends BukkitRunnable implements Lis @Override public void run() { - if (!caster.isOnline() || caster.getPlayer().isDead()) { + if (!caster.isOnline() || caster.getPlayer().isDead() || caster.isCastingTimeoutExpired()) { caster.leaveSkillCasting(); return; }