Initializer key cleanup

This commit is contained in:
Indyuce 2022-08-18 13:31:14 +02:00
parent 908db88dae
commit 174898ba72

View File

@ -1,6 +1,5 @@
package net.Indyuce.mmocore.skill.cast.listener; package net.Indyuce.mmocore.skill.cast.listener;
import io.lumine.mythic.lib.MythicLib;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.event.skill.PlayerCastSkillEvent; import io.lumine.mythic.lib.api.event.skill.PlayerCastSkillEvent;
import io.lumine.mythic.lib.api.player.EquipmentSlot; import io.lumine.mythic.lib.api.player.EquipmentSlot;
@ -8,15 +7,14 @@ import io.lumine.mythic.lib.player.PlayerMetadata;
import io.lumine.mythic.lib.skill.trigger.TriggerMetadata; import io.lumine.mythic.lib.skill.trigger.TriggerMetadata;
import io.lumine.mythic.lib.skill.trigger.TriggerType; import io.lumine.mythic.lib.skill.trigger.TriggerType;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.SoundObject;
import net.Indyuce.mmocore.api.event.PlayerKeyPressEvent; import net.Indyuce.mmocore.api.event.PlayerKeyPressEvent;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.gui.api.item.Placeholders; import net.Indyuce.mmocore.gui.api.item.Placeholders;
import net.Indyuce.mmocore.skill.cast.PlayerKey;
import net.Indyuce.mmocore.api.SoundObject;
import net.Indyuce.mmocore.skill.cast.KeyCombo; import net.Indyuce.mmocore.skill.cast.KeyCombo;
import net.Indyuce.mmocore.skill.cast.PlayerKey;
import net.Indyuce.mmocore.skill.cast.SkillCastingHandler; import net.Indyuce.mmocore.skill.cast.SkillCastingHandler;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@ -34,15 +32,18 @@ public class KeyCombos implements Listener {
* hash code method * hash code method
*/ */
private final Map<KeyCombo, Integer> combos = new HashMap<>(); private final Map<KeyCombo, Integer> combos = new HashMap<>();
/** /**
* All the keys that are at the start of a combo. * All the keys that are at the start of a combo.
*/ */
private final Set<PlayerKey> firstComboKeys = new HashSet<>(); private final Set<PlayerKey> firstComboKeys = new HashSet<>();
/** /**
* Key players need to press to start a combo * Key players need to press to start a combo. If it's set to
* null then the player can press any key which starts a combo.
* These "starting keys" are saved in {@link #firstComboKeys}
*/ */
private final boolean needsInitializerKey; @Nullable
private final PlayerKey initializerKey; private final PlayerKey initializerKey;
private final int longestCombo; private final int longestCombo;
@ -58,9 +59,8 @@ public class KeyCombos implements Listener {
public KeyCombos(ConfigurationSection config) { public KeyCombos(ConfigurationSection config) {
int longestCombo = 0;
// Load different combos // Load different combos
int currentLongestCombo = 0;
for (String key : config.getConfigurationSection("combos").getKeys(false)) for (String key : config.getConfigurationSection("combos").getKeys(false))
try { try {
int spellSlot = Integer.valueOf(key); int spellSlot = Integer.valueOf(key);
@ -72,12 +72,12 @@ public class KeyCombos implements Listener {
combos.put(combo, spellSlot); combos.put(combo, spellSlot);
firstComboKeys.add(combo.getAt(0)); firstComboKeys.add(combo.getAt(0));
longestCombo = Math.max(longestCombo, combo.countKeys()); currentLongestCombo = Math.max(currentLongestCombo, combo.countKeys());
} catch (RuntimeException exception) { } catch (RuntimeException exception) {
MMOCore.plugin.getLogger().log(Level.WARNING, "Could not load key combo '" + key + "': " + exception.getMessage()); MMOCore.plugin.getLogger().log(Level.WARNING, "Could not load key combo '" + key + "': " + exception.getMessage());
} }
this.longestCombo = longestCombo; this.longestCombo = currentLongestCombo;
// Load player key names // Load player key names
actionBarOptions = config.contains("action-bar") ? new ActionBarOptions(config.getConfigurationSection("action-bar")) : null; actionBarOptions = config.contains("action-bar") ? new ActionBarOptions(config.getConfigurationSection("action-bar")) : null;
@ -87,13 +87,9 @@ public class KeyCombos implements Listener {
comboClickSound = config.contains("sound.combo-key") ? new SoundObject(config.getConfigurationSection("sound.combo-key")) : null; comboClickSound = config.contains("sound.combo-key") ? new SoundObject(config.getConfigurationSection("sound.combo-key")) : null;
failComboSound = config.contains("sound.fail-combo") ? new SoundObject(config.getConfigurationSection("sound.fail-combo")) : null; failComboSound = config.contains("sound.fail-combo") ? new SoundObject(config.getConfigurationSection("sound.fail-combo")) : null;
needsInitializerKey = config.getBoolean("needs-initializer-key", true);
// Find initializer key // Find initializer key
initializerKey = needsInitializerKey ? PlayerKey.valueOf(UtilityMethods.enumName(Objects.requireNonNull( initializerKey = config.contains("initializer-key") ? PlayerKey.valueOf(UtilityMethods.enumName(Objects.requireNonNull(
config.getString("initializer-key"), "Could not find initializer key"))) : null; config.getString("initializer-key"), "Could not find initializer key"))) : null;
} }
@EventHandler @EventHandler
@ -102,7 +98,7 @@ public class KeyCombos implements Listener {
Player player = playerData.getPlayer(); Player player = playerData.getPlayer();
if (!event.getData().isCasting()) { if (!event.getData().isCasting()) {
if (needsInitializerKey) { if (initializerKey != null) {
if (event.getPressed() == initializerKey) { if (event.getPressed() == initializerKey) {
// Always cancel event // Always cancel event
@ -132,7 +128,6 @@ public class KeyCombos implements Listener {
} }
} }
// Adding pressed key // Adding pressed key
CustomSkillCastingHandler casting = (CustomSkillCastingHandler) playerData.getSkillCasting(); CustomSkillCastingHandler casting = (CustomSkillCastingHandler) playerData.getSkillCasting();
casting.current.registerKey(event.getPressed()); casting.current.registerKey(event.getPressed());