Package ch.njol.skript.util

Source Code of ch.njol.skript.util.PotionEffectUtils

/*
*   This file is part of Skript.
*
*  Skript is free software: you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation, either version 3 of the License, or
*  (at your option) any later version.
*
*  Skript is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with Skript.  If not, see <http://www.gnu.org/licenses/>.
*
*
* Copyright 2011-2014 Peter Güttinger
*
*/

package ch.njol.skript.util;

import java.util.HashMap;
import java.util.Map;

import org.bukkit.entity.ThrownPotion;
import org.bukkit.potion.Potion;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.potion.PotionType;
import org.eclipse.jdt.annotation.Nullable;

import ch.njol.skript.localization.Language;
import ch.njol.skript.localization.LanguageChangeListener;

/**
* @author Peter Güttinger
*/
@SuppressWarnings("deprecation")
public abstract class PotionEffectUtils {
 
  private PotionEffectUtils() {}
 
  final static Map<String, PotionEffectType> types = new HashMap<String, PotionEffectType>();
 
  final static String[] names = new String[getMaxPotionId() + 1];
 
  // MCPC+ workaround
  private final static int getMaxPotionId() {
    int i = 0;
    for (final PotionEffectType t : PotionEffectType.values()) {
      if (t != null && t.getId() > i)
        i = t.getId();
    }
    return i;
  }
 
  static {
    Language.addListener(new LanguageChangeListener() {
      @Override
      public void onLanguageChange() {
        types.clear();
        for (final PotionEffectType t : PotionEffectType.values()) {
          if (t == null)
            continue;
          final String[] ls = Language.getList("potions." + t.getName());
          names[t.getId()] = ls[0];
          for (final String l : ls) {
            types.put(l.toLowerCase(), t);
          }
        }
      }
    });
  }
 
  @Nullable
  public static PotionEffectType parseType(final String s) {
    return types.get(s.toLowerCase());
  }
 
  @SuppressWarnings("null")
  public static String toString(final PotionEffectType t) {
    return names[t.getId()];
  }
 
  // REMIND flags?
  @SuppressWarnings("null")
  public static String toString(final PotionEffectType t, final int flags) {
    return names[t.getId()];
  }
 
  public final static String[] getNames() {
    return names;
  }
 
  public static short guessData(final ThrownPotion p) {
    if (p.getEffects().size() == 1) {
      final PotionEffect e = p.getEffects().iterator().next();
      final Potion d = new Potion(PotionType.getByEffect(e.getType())).splash();
      return d.toDamageValue();
    }
    return 0;
  }
}
TOP

Related Classes of ch.njol.skript.util.PotionEffectUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.