use of me.realized.tokenmanager.util.compat.Potions in project TokenManager by RealizedMC.
the class ItemUtil method loadFromString.
public static ItemStack loadFromString(final String line) {
if (line == null || line.isEmpty()) {
throw new IllegalArgumentException("Line is empty or null!");
}
final String[] args = line.split(" +");
final String[] materialData = args[0].split(":");
final Material material = Material.matchMaterial(materialData[0]);
if (material == null) {
throw new IllegalArgumentException("'" + args[0] + "' is not a valid material.");
}
ItemStack result = new ItemStack(material, 1);
if (materialData.length > 1) {
// Handle potions and spawn eggs switching to NBT in 1.9+
if (!ItemUtil.isPre1_9()) {
if (material.name().contains("POTION")) {
final String[] values = materialData[1].split("-");
final PotionType type;
if ((type = EnumUtil.getByName(values[0], PotionType.class)) == null) {
throw new IllegalArgumentException("'" + values[0] + "' is not a valid PotionType. Available: " + EnumUtil.getNames(PotionType.class));
}
result = new Potions(type, Arrays.asList(values)).toItemStack();
} else if (material == Material.MONSTER_EGG) {
final EntityType type;
if ((type = EnumUtil.getByName(materialData[1], EntityType.class)) == null) {
throw new IllegalArgumentException("'" + materialData[0] + "' is not a valid EntityType. Available: " + EnumUtil.getNames(EntityType.class));
}
result = new SpawnEggs(type).toItemStack();
}
}
final OptionalLong value;
if ((value = NumberUtil.parseLong(materialData[1])).isPresent()) {
result.setDurability((short) value.getAsLong());
}
}
if (args.length < 2) {
return result;
}
result.setAmount(Integer.parseInt(args[1]));
if (args.length > 2) {
for (int i = 2; i < args.length; i++) {
final String argument = args[i];
final String[] pair = argument.split(":", 2);
if (pair.length < 2) {
continue;
}
applyMeta(result, pair[0], pair[1]);
}
}
return result;
}
Aggregations