diff --git a/Core/pom.xml b/Core/pom.xml index 59c391b..994ce0c 100644 --- a/Core/pom.xml +++ b/Core/pom.xml @@ -5,7 +5,7 @@ ExcellentEnchants su.nightexpress.excellentenchants - 3.5.0 + 3.5.1 4.0.0 @@ -21,40 +21,25 @@ md_5-releases https://repo.md-5.net/content/repositories/releases/ - - sk89q-repo - https://maven.enginehub.org/repo/ - - false - - dmulloy2-repo https://repo.dmulloy2.net/repository/public/ - - false - + placeholderapi https://repo.extendedclip.com/content/repositories/placeholderapi/ - - false - + lumine-repo https://mvn.lumine.io/repository/maven-public/ - - false - + lumine-snapshot http://mvn.lumine.io/repository/maven-snapshots/ - - false - + @@ -79,7 +64,8 @@ com.comphenix.protocol ProtocolLib - 5.0.0-SNAPSHOT + 5.0.0 + provided me.clip @@ -95,27 +81,27 @@ su.nightexpress.excellentenchants NMS - 3.5.0 + 3.5.1 su.nightexpress.excellentenchants V1_17_R1 - 3.5.0 + 3.5.1 su.nightexpress.excellentenchants V1_18_R2 - 3.5.0 + 3.5.1 su.nightexpress.excellentenchants V1_19_R3 - 3.5.0 + 3.5.1 su.nightexpress.excellentenchants V1_20_R1 - 3.5.0 + 3.5.1 diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/Placeholders.java b/Core/src/main/java/su/nightexpress/excellentenchants/Placeholders.java index 2c6a306..12bc277 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/Placeholders.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/Placeholders.java @@ -36,8 +36,13 @@ public class Placeholders extends su.nexmedia.engine.utils.Placeholders { public static final String ENCHANTMENT_CHARGES_RECHARGE_AMOUNT = "%enchantment_charges_recharge_amount%"; public static final String ENCHANTMENT_CHARGES_FUEL_ITEM = "%enchantment_charges_fuel_item%"; - public static final String TIER_ID = "%tier_id%"; - public static final String TIER_NAME = "%tier_name%"; + public static final String TIER_ID = "%tier_id%"; + public static final String TIER_NAME = "%tier_name%"; + public static final String TIER_OBTAIN_CHANCE_ENCHANTING = "%tier_obtain_chance_enchanting%"; + public static final String TIER_OBTAIN_CHANCE_VILLAGER = "%tier_obtain_chance_villager%"; + public static final String TIER_OBTAIN_CHANCE_LOOT_GENERATION = "%tier_obtain_chance_loot_generation%"; + public static final String TIER_OBTAIN_CHANCE_FISHING = "%tier_obtain_chance_fishing%"; + public static final String TIER_OBTAIN_CHANCE_MOB_SPAWNING = "%tier_obtain_chance_mob_spawning%"; } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/command/BookCommand.java b/Core/src/main/java/su/nightexpress/excellentenchants/command/BookCommand.java index 6afe3e3..ba28383 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/command/BookCommand.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/command/BookCommand.java @@ -9,7 +9,6 @@ import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; import su.nexmedia.engine.api.command.AbstractCommand; import su.nexmedia.engine.api.command.CommandResult; -import su.nexmedia.engine.lang.LangManager; import su.nexmedia.engine.utils.CollectionsUtil; import su.nexmedia.engine.utils.PlayerUtil; import su.nexmedia.engine.utils.random.Rnd; @@ -75,7 +74,7 @@ public class BookCommand extends AbstractCommand { PlayerUtil.addItem(player, item); plugin.getMessage(Lang.COMMAND_BOOK_DONE) - .replace(Placeholders.GENERIC_ENCHANT, LangManager.getEnchantment(enchantment)) + .replace(Placeholders.GENERIC_ENCHANT, EnchantUtils.getLocalized(enchantment)) .replace(Placeholders.forPlayer(player)) .send(sender); } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/ExcellentEnchant.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/ExcellentEnchant.java index 91d14ba..49020fc 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/ExcellentEnchant.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/ExcellentEnchant.java @@ -91,6 +91,7 @@ public abstract class ExcellentEnchant extends Enchantment implements IEnchantme map.add(Placeholders.ENCHANTMENT_POTION_DURATION, () -> NumberUtil.format(potioned.getEffectDuration(level) / 20D)); map.add(Placeholders.ENCHANTMENT_POTION_TYPE, () -> LangManager.getPotionType(potioned.getEffectType())); } + map.add(this.getTier().getPlaceholders()); this.placeholdersMap.put(level, map); } diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/FlareEnchant.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/FlareEnchant.java index 2ca511c..0394371 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/FlareEnchant.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/impl/bow/FlareEnchant.java @@ -10,10 +10,11 @@ import org.bukkit.entity.Arrow; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; -import org.bukkit.event.block.BlockCanBuildEvent; +import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityShootBowEvent; import org.bukkit.event.entity.ProjectileHitEvent; +import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; import su.nexmedia.engine.api.particle.SimpleParticle; @@ -89,9 +90,9 @@ public class FlareEnchant extends ExcellentEnchant implements Chanced, Arrowed, if (!relative.getType().isAir()) return false; if (projectile.getShooter() instanceof Player player) { - BlockCanBuildEvent event = new BlockCanBuildEvent(relative, player, Material.TORCH.createBlockData(), true); + BlockPlaceEvent event = new BlockPlaceEvent(relative, relative.getState(), block, new ItemStack(Material.TORCH), player,true, EquipmentSlot.HAND); plugin.getPluginManager().callEvent(event); - if (!event.isBuildable()) return false; + if (event.isCancelled() || !event.canBuild()) return false; } if (face == BlockFace.UP) { diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/menu/EnchantmentsListMenu.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/menu/EnchantmentsListMenu.java index 77aeea2..8e61b11 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/menu/EnchantmentsListMenu.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/menu/EnchantmentsListMenu.java @@ -1,7 +1,6 @@ package su.nightexpress.excellentenchants.enchantment.menu; import org.bukkit.NamespacedKey; -import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; @@ -13,7 +12,6 @@ import su.nexmedia.engine.api.menu.click.ItemClick; import su.nexmedia.engine.api.menu.impl.ConfigMenu; import su.nexmedia.engine.api.menu.impl.MenuOptions; import su.nexmedia.engine.api.menu.impl.MenuViewer; -import su.nexmedia.engine.lang.LangManager; import su.nexmedia.engine.utils.Colorizer; import su.nexmedia.engine.utils.ItemUtil; import su.nexmedia.engine.utils.PDCUtil; @@ -22,6 +20,7 @@ import su.nightexpress.excellentenchants.ExcellentEnchants; import su.nightexpress.excellentenchants.Placeholders; import su.nightexpress.excellentenchants.enchantment.EnchantRegistry; import su.nightexpress.excellentenchants.enchantment.impl.ExcellentEnchant; +import su.nightexpress.excellentenchants.enchantment.util.EnchantUtils; import java.util.*; import java.util.function.Predicate; @@ -84,7 +83,7 @@ public class EnchantmentsListMenu extends ConfigMenu implemen public List getObjects(@NotNull Player player) { return new ArrayList<>(EnchantRegistry.getRegistered().stream() .filter(Predicate.not(enchant -> enchant.getDefaults().isHiddenFromList())) - .sorted(Comparator.comparing(ExcellentEnchant::getName)).toList()); + .sorted(Comparator.comparing(e -> Colorizer.strip(e.getDisplayName()))).toList()); } @Override @@ -125,8 +124,7 @@ public class EnchantmentsListMenu extends ConfigMenu implemen if (lore == null) lore = new ArrayList<>(); List conflicts = enchant.getConflicts().isEmpty() ? Collections.emptyList() : new ArrayList<>(this.enchantLoreConflicts); - List conflictNames = enchant.getConflicts().stream().map(key -> Enchantment.getByKey(NamespacedKey.minecraft(key))) - .filter(Objects::nonNull).map(LangManager::getEnchantment).toList(); + List conflictNames = enchant.getConflicts().stream().map(EnchantUtils::getLocalized).toList(); conflicts = StringUtil.replace(conflicts, Placeholders.ENCHANTMENT_NAME, true, conflictNames); List charges = enchant.isChargesEnabled() ? new ArrayList<>(this.enchantLoreCharges) : Collections.emptyList(); diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/util/EnchantUtils.java b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/util/EnchantUtils.java index 9f679e5..b02ef07 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/util/EnchantUtils.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/enchantment/util/EnchantUtils.java @@ -13,6 +13,7 @@ import org.bukkit.inventory.meta.EnchantmentStorageMeta; import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import su.nexmedia.engine.lang.LangManager; import su.nexmedia.engine.utils.CollectionsUtil; import su.nexmedia.engine.utils.EntityUtil; import su.nexmedia.engine.utils.ItemUtil; @@ -44,6 +45,20 @@ public class EnchantUtils { return NamespacedKey.minecraft(id.toLowerCase()); } + @NotNull + public static String getLocalized(@NotNull String keyRaw) { + Enchantment enchantment = Enchantment.getByKey(NamespacedKey.minecraft(keyRaw)); + return enchantment == null ? "null" : getLocalized(enchantment); + } + + @NotNull + public static String getLocalized(@NotNull Enchantment enchantment) { + if (enchantment instanceof ExcellentEnchant excellentEnchant) { + return excellentEnchant.getDisplayName(); + } + return LangManager.getEnchantment(enchantment); + } + public static boolean isEnchantable(@NotNull ItemStack item) { if (item.getType().isAir()) return false; diff --git a/Core/src/main/java/su/nightexpress/excellentenchants/tier/Tier.java b/Core/src/main/java/su/nightexpress/excellentenchants/tier/Tier.java index ca21aa4..49a9cdd 100644 --- a/Core/src/main/java/su/nightexpress/excellentenchants/tier/Tier.java +++ b/Core/src/main/java/su/nightexpress/excellentenchants/tier/Tier.java @@ -5,6 +5,7 @@ import org.jetbrains.annotations.NotNull; import su.nexmedia.engine.api.placeholder.Placeholder; import su.nexmedia.engine.api.placeholder.PlaceholderMap; import su.nexmedia.engine.utils.Colorizer; +import su.nexmedia.engine.utils.NumberUtil; import su.nightexpress.excellentenchants.Placeholders; import su.nightexpress.excellentenchants.enchantment.type.ObtainType; @@ -29,6 +30,11 @@ public class Tier implements Placeholder { this.placeholderMap = new PlaceholderMap() .add(Placeholders.TIER_ID, this::getId) .add(Placeholders.TIER_NAME, this::getName) + .add(Placeholders.TIER_OBTAIN_CHANCE_ENCHANTING, () -> NumberUtil.format(this.getChance(ObtainType.ENCHANTING))) + .add(Placeholders.TIER_OBTAIN_CHANCE_VILLAGER, () -> NumberUtil.format(this.getChance(ObtainType.VILLAGER))) + .add(Placeholders.TIER_OBTAIN_CHANCE_LOOT_GENERATION, () -> NumberUtil.format(this.getChance(ObtainType.LOOT_GENERATION))) + .add(Placeholders.TIER_OBTAIN_CHANCE_FISHING, () -> NumberUtil.format(this.getChance(ObtainType.FISHING))) + .add(Placeholders.TIER_OBTAIN_CHANCE_MOB_SPAWNING, () -> NumberUtil.format(this.getChance(ObtainType.MOB_SPAWNING))) ; } diff --git a/NMS/pom.xml b/NMS/pom.xml index fdadd60..8ae3187 100644 --- a/NMS/pom.xml +++ b/NMS/pom.xml @@ -5,7 +5,7 @@ ExcellentEnchants su.nightexpress.excellentenchants - 3.5.0 + 3.5.1 4.0.0 @@ -27,7 +27,7 @@ org.spigotmc spigot-api - 1.18.1-R0.1-SNAPSHOT + 1.20.1-R0.1-SNAPSHOT