@Override public String describeItem(ItemStack item) { return messages.describeItem(item); }
@Override public String getLevelString(String templateName, float amount, float max) { String templateString = get(templateName, ""); return formatLevelString(templateString, amount, max); }
@Override public String getPropertyString(String templateName, float amount, float max, String propertyTemplateName) { String templateString = get(templateName, ""); String propertyTemplateString = get(propertyTemplateName, ""); return formatPropertyString(templateString, amount, max, propertyTemplateString); }
@Override public String get(String key) { return get(key, key); }
@Override public String getLevelString(String templateName, float amount) { return getLevelString(templateName, amount, 1); }
@Override public String formatLevelString(String message, float amount, float max) { return formatPropertyString(message, amount, max, null); }
@Override public String formatLevelString(String message, float amount) { return formatLevelString(message, amount, 1); }
@Override public String escape(String source) { Matcher matcher = PARAMETER_PATTERN.matcher(source); String result = source; while (matcher.find()) { String key = matcher.group(1); if (key != null) { String randomized = getRandomized(key); if (randomized != null) { result = result.replace("$" + key, randomized); } } } return result; }
@Override public String formatPropertyString(String message, float amount, float max, @Nullable String propertyTemplate) { if (message.contains("$roman")) { if (max != 1) { amount = amount / max; } String property = getRomanString(amount); if (propertyTemplate != null) { property = propertyTemplate.replace("$property", property); } message = message.replace("$roman",property); } String valueString = Math.floor(amount) == amount ? Integer.toString((int)Math.floor(amount)) : formatter.format(amount); if (propertyTemplate != null) { valueString = propertyTemplate.replace("$property", valueString); } String amountString = Integer.toString(Math.round(amount)); if (propertyTemplate != null) { amountString = propertyTemplate.replace("$property", amountString); } String percentString = Integer.toString((int)Math.round(100.0 * amount)); if (propertyTemplate != null) { percentString = propertyTemplate.replace("$property", percentString); } return message.replace("$amount", amountString) .replace("$value", valueString) .replace("$percent", percentString); }
messages.load(loader.getMessages()); loadMaterials(loader.getMaterials());
private String getRomanString(float amount) { String roman = ""; boolean negative = false; if (amount < 0) { amount = -amount; negative = true; } if (amount > 1) { roman = get("wand.enchantment_level_max"); } else if (amount > 0.8f) { roman = get("wand.enchantment_level_5"); } else if (amount > 0.6f) { roman = get("wand.enchantment_level_4"); } else if (amount > 0.4f) { roman = get("wand.enchantment_level_3"); } else if (amount > 0.2f) { roman = get("wand.enchantment_level_2"); } else { roman = get("wand.enchantment_level_1"); } if (negative) { roman = "-" + roman; } return roman; } }
@Override public String getParameterized(String key, String paramName, String paramValue) { return get(key, key).replace(paramName, paramValue); }
@Override public String getPercentageString(String templateName, float amount) { String templateString = get(templateName, ""); return templateString.replace("$amount", Integer.toString((int)(amount * 100))); }
@Override public String getParameterized(String key, String paramName1, String paramValue1, String paramName2, String paramValue2) { return get(key, key).replace(paramName1, paramValue1).replace(paramName2, paramValue2); }
@Override public String formatList(String basePath, Collection<String> nodes, String nameKey) { StringBuilder buffer = new StringBuilder(); for (String node : nodes) { if (buffer.length() != 0) { buffer.append(", "); } String path = node; if (basePath != null) { path = basePath + "." + path; } if (nameKey != null) { path = path + "." + nameKey; } node = get(path, node); buffer.append(node); } return buffer.toString(); }
@Override public boolean promptResourcePack(final Player player) { if (resourcePack == null || resourcePackHash == null) { return false; } if (resourcePackPrompt) { String message = messages.get("resource_pack.prompt"); if (message != null && !message.isEmpty()) { player.sendMessage(message); } return false; } return sendResourcePack(player); }
@Override public String describeCurrency(double amount) { VaultController vault = VaultController.getInstance(); if (vault == null) return Integer.toString((int)amount); String formatted = vault.format(amount); if (!VaultController.hasEconomy()) { formatted = get("costs.currency_amount").replace("$amount", formatted); } return formatted; }
@Override public @Nullable String checkRequirements(@Nonnull CastContext context, @Nullable Collection<Requirement> requirements) { if (requirements == null) return null; for (Requirement requirement : requirements) { String type = requirement.getType(); RequirementsProcessor processor = requirementProcessors.get(type); if (processor != null) { if (!processor.checkRequirement(context, requirement)) { String message = processor.getRequirementDescription(context, requirement); if (message == null || message.isEmpty()) { message = messages.get("requirements.unknown"); } return message; } } } return null; }
@Override public String getCurrency() { VaultController vault = VaultController.getInstance(); if (VaultController.hasEconomy()) { return vault.getCurrency(); } return get("costs.currency_singular"); }
@Override public boolean sendResourcePack(final Player player) { if (resourcePack == null || resourcePackHash == null) { return false; } String message = messages.get("resource_pack.sending"); if (message != null && !message.isEmpty()) { player.sendMessage(message); } // Give them 2 seconds to read the message Bukkit.getScheduler().runTaskLater(plugin, new Runnable() { @Override public void run() { CompatibilityUtils.setResourcePack(player, resourcePack, resourcePackHash); } }, resourcePackDelay * 20 / 1000); return true; }