private static void addAlias(String alias, String material) { try { NAMES_TO_MATERIALS.put(stripSpacingChars(alias).toLowerCase(), Material.valueOf(material)); } catch (IllegalArgumentException e) { // Not found, do nothing. } }
public static CraftHologramLine readLineFromString(String rawText, CraftHologram hologram) { if (rawText.toLowerCase().startsWith("icon:")) { String iconMaterial = ItemUtils.stripSpacingChars(rawText.substring("icon:".length(), rawText.length())); short dataValue = 0; if (iconMaterial.contains(":")) { try { dataValue = (short) Integer.parseInt(iconMaterial.split(":")[1]); } catch (NumberFormatException e) { } iconMaterial = iconMaterial.split(":")[0]; } Material mat = ItemUtils.matchMaterial(iconMaterial); if (mat == null) { mat = Material.BEDROCK; } return new CraftItemLine(hologram, new ItemStack(mat, 1, dataValue)); } else { if (rawText.trim().equalsIgnoreCase("{empty}")) { return new CraftTextLine(hologram, ""); } else { return new CraftTextLine(hologram, StringConverter.toReadableFormat(rawText)); } } }
@Override public void execute(CommandSender sender, String label, String[] args) throws CommandException { NamedHologram hologram = NamedHologramManager.getHologram(args[0].toLowerCase()); CommandValidator.notNull(hologram, Strings.noSuchHologram(args[0].toLowerCase())); String line = Utils.join(args, " ", 1, args.length); // Check material validity if (line.toLowerCase().startsWith("icon:")) { String iconMaterial = ItemUtils.stripSpacingChars(line.substring("icon:".length(), line.length())); if (iconMaterial.contains(":")) { iconMaterial = iconMaterial.split(":")[0]; } Material mat = ItemUtils.matchMaterial(iconMaterial); CommandValidator.notNull(mat, "Invalid icon material."); } hologram.getLinesUnsafe().add(HologramDatabase.readLineFromString(line, hologram)); hologram.refreshAll(); HologramDatabase.saveHologram(hologram); HologramDatabase.trySaveToDisk(); sender.sendMessage(Colors.PRIMARY + "Line added!"); Bukkit.getPluginManager().callEvent(new NamedHologramEditedEvent(hologram)); }
String iconMaterial = ItemUtils.stripSpacingChars(line.substring("icon:".length(), line.length())); Material mat = ItemUtils.matchMaterial(iconMaterial); CommandValidator.notNull(mat, "Invalid icon material.");
@SuppressWarnings("deprecation") public static Material matchMaterial(String input) { if (!NMSVersion.isGreaterEqualThan(NMSVersion.v1_13_R1)) { // Before 1.13, allow IDs as materials. try { return Material.getMaterial(Integer.parseInt(input)); } catch (NumberFormatException e) { // Not a number, ignore and go on. } } return NAMES_TO_MATERIALS.get(stripSpacingChars(input).toLowerCase()); }