Specifying enchant level is no longer necessary

This commit is contained in:
Jules 2024-06-19 19:43:33 -07:00
parent e045a6a2ab
commit f8e5d6cc65

View File

@ -78,18 +78,17 @@ public class Enchants extends ItemStat<RandomEnchantListData, EnchantListData> i
*/
@Override
public void whenInput(@NotNull EditionInventory inv, @NotNull String message, Object... info) {
String[] split = message.split(" ");
Validate.isTrue(split.length >= 2, "Use this format: {Enchant Name} {Enchant Level Numeric Formula}. Example: 'sharpness 5 0.3' "
+ "stands for Sharpness 5, plus 0.3 level per item level (rounded up to lower integer)");
final String[] split = message.split(" ");
Enchantment enchant = getEnchant(split[0]);
final Enchantment enchant = getEnchant(split[0]);
Validate.notNull(enchant, split[0]
+ " is not a valid enchantment! All enchants can be found here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/enchantments/Enchantment.html");
final NumericStatFormula formula = split.length > 1 ? new NumericStatFormula(message.substring(message.indexOf(" ") + 1))
: new NumericStatFormula(1, 0, 0, 0);
NumericStatFormula formula = new NumericStatFormula(message.substring(message.indexOf(" ") + 1));
formula.fillConfigurationSection(inv.getEditedSection(), "enchants." + enchant.getKey().getKey());
inv.registerTemplateEdition();
inv.getPlayer().sendMessage(MMOItems.plugin.getPrefix() + enchant.getKey().getKey() + " " + formula.toString() + " successfully added.");
inv.getPlayer().sendMessage(MMOItems.plugin.getPrefix() + enchant.getKey().getKey() + " " + formula + " successfully added.");
}
@Override
@ -181,16 +180,18 @@ public class Enchants extends ItemStat<RandomEnchantListData, EnchantListData> i
/**
* @param source Something that may not even have enchs.
*
* @return Enchantments of this extracted as a list of enchants data.
*/
@NotNull public static EnchantListData fromVanilla(@Nullable ItemStack source) {
@NotNull
public static EnchantListData fromVanilla(@Nullable ItemStack source) {
// List
EnchantListData eld = new EnchantListData();
// Null is clear
if (source == null) { return eld; }
if (source == null) {
return eld;
}
// For each enchants
for (Enchantment e : source.getEnchantments().keySet()) {
@ -199,7 +200,9 @@ public class Enchants extends ItemStat<RandomEnchantListData, EnchantListData> i
int l = source.getEnchantmentLevel(e);
// Add if significant
if (l != 0) { eld.addEnchant(e, l); }
if (l != 0) {
eld.addEnchant(e, l);
}
}
return eld;
@ -274,8 +277,10 @@ public class Enchants extends ItemStat<RandomEnchantListData, EnchantListData> i
// Vanilla enchanted books expect this behaviour from enchants I guess
((EnchantmentStorageMeta) item.getMeta()).addStoredEnchant(enchant, lvl, true);
// Add normally
} else { item.getMeta().addEnchant(enchant, lvl, true); }
// Add normally
} else {
item.getMeta().addEnchant(enchant, lvl, true);
}
// Handle custom enchant
for (EnchantPlugin enchantPlugin : MMOItems.plugin.getEnchantPlugins())
@ -497,17 +502,15 @@ public class Enchants extends ItemStat<RandomEnchantListData, EnchantListData> i
@Nullable
public static Enchantment getEnchant(String key) {
key = key.toLowerCase().replace("-", "_");
Enchantment enchant = Enchantment.getByKey(NamespacedKey.minecraft(key));
// Vanilla enchant
if (enchant != null)
return enchant;
Enchantment enchant = Enchantment.getByKey(NamespacedKey.minecraft(key));
if (enchant != null) return enchant;
// Check for custom enchants
for (EnchantPlugin enchPlugin : MMOItems.plugin.getEnchantPlugins()) {
Enchantment checked = Enchantment.getByKey(enchPlugin.getNamespacedKey(key));
if (checked != null)
return checked;
if (checked != null) return checked;
}
// Last try, vanilla enchant with name