public AbstractEffect getEffect(UUID playerUUID, String effectName) { if (!this.playersEffects.containsKey(playerUUID)) { return null; } List<AbstractEffect> effects = this.playersEffects.get(playerUUID); for (AbstractEffect effect : effects) { if (effect.getName().equals(effectName)) { return effect; } } return null; }
@Override public Map<String, Object> serialize() { Map<String, Object> map = new TreeMap<String, Object>(); for (UUID playerUUID : this.playersEffects.keySet()) { StringBuilder sb = new StringBuilder(); List<AbstractEffect> playerEffects = this.playersEffects.get(playerUUID); for (int i = 0; i < playerEffects.size(); i++) { AbstractEffect effect = playerEffects.get(i); sb.append(effect.getName()); if (i + 1 < playerEffects.size()) { sb.append(";"); } } if (playerEffects.size() > 0) { map.put(playerUUID.toString(), sb.toString()); } } return map; }
private void checkEffectTypeDuplication( Player player, AbstractEffect effect, boolean checkIfPlayerExists) { if (!playersEffects.containsKey(player.getUniqueId())) { return; } List<AbstractEffect> effects = playersEffects.get(player.getUniqueId()); if (effects == null) { return; } for (AbstractEffect cEffect : effects) { if ((cEffect.getType().equals(effect.getType()) && !effect.getType().isStackable())) { throw new IllegalArgumentException( "The effect " + cEffect.getName() + " of the same type (" + effect.getType().getName() + ") is already associated to the player " + player.getName() + "."); } } }