package net.glowstone.util;
import org.bukkit.Achievement;
import org.bukkit.Material;
import org.bukkit.Statistic;
import org.bukkit.UnsafeValues;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.StringUtil;
import java.util.ArrayList;
import java.util.List;
/**
* Implementation of Bukkit's internal-use UnsafeValues. In CraftBukkit, this
* uses Mojang identifiers, but here we just stick to Bukkit's. The
* implementation may be a bit sketchy but this isn't a problem since the
* behavior of this class isn't strictly specified.
*/
@Deprecated
public final class GlowUnsafeValues implements UnsafeValues {
@Override
public Material getMaterialFromInternalName(String name) {
try {
return Material.valueOf(name);
} catch (IllegalArgumentException ex) {
return null;
}
}
@Override
public List<String> tabCompleteInternalMaterialName(String token, List<String> completions) {
List<String> materialNames = new ArrayList<>(Material.values().length);
for (Material mat : Material.values()) {
materialNames.add(mat.name());
}
return StringUtil.copyPartialMatches(token, materialNames, completions);
}
@Override
public ItemStack modifyItemStack(ItemStack stack, String arguments) {
return stack;
}
@Override
public Statistic getStatisticFromInternalName(String name) {
try {
return Statistic.valueOf(name);
} catch (IllegalArgumentException ex) {
return null;
}
}
@Override
public Achievement getAchievementFromInternalName(String name) {
try {
return Achievement.valueOf(name);
} catch (IllegalArgumentException ex) {
return null;
}
}
@Override
public List<String> tabCompleteInternalStatisticOrAchievementName(String token, List<String> completions) {
Statistic[] stats = Statistic.values();
Achievement[] achievements = Achievement.values();
List<String> names = new ArrayList<>(stats.length + achievements.length);
for (Statistic stat : stats) {
names.add(stat.name());
}
for (Achievement achievement : achievements) {
names.add(achievement.name());
}
return StringUtil.copyPartialMatches(token, names, completions);
}
}