diff --git a/eco-core/core-nms/v1_18_R1/build.gradle b/eco-core/core-nms/v1_18_R1/build.gradle index 33a12990..2aa928f6 100644 --- a/eco-core/core-nms/v1_18_R1/build.gradle +++ b/eco-core/core-nms/v1_18_R1/build.gradle @@ -2,5 +2,5 @@ group 'com.willfp' version rootProject.version dependencies { - compileOnly 'org.spigotmc:spigot:1.18.1-R0.1-SNAPSHOT' + compileOnly 'org.spigotmc:spigot:1.18-R0.1-SNAPSHOT' } \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/EnchantDisplay.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/EnchantDisplay.java index ca516930..e7507ce0 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/EnchantDisplay.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/display/EnchantDisplay.java @@ -124,6 +124,10 @@ public class EnchantDisplay extends DisplayModule { enchantments.clear(); unsorted.forEach(enchantment -> enchantments.put(enchantment, tempEnchantments.get(enchantment))); enchantments.forEach((enchantment, level) -> { + if (enchantment instanceof EcoEnchant ecoEnchant && ecoEnchant.hasFlag("hide-in-lore")) { + return; + } + String name = player == null ? EnchantmentCache.getEntry(enchantment).getNameWithLevel(level) : EnchantmentCache.getEntry(enchantment).getNameWithLevel(level, player); diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/Beheading.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/Beheading.java index d38c7b45..b9d2ffde 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/Beheading.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/Beheading.java @@ -1,6 +1,7 @@ package com.willfp.ecoenchants.enchantments.ecoenchants.normal; import com.willfp.eco.core.drops.DropQueue; +import com.willfp.eco.core.items.builder.SkullBuilder; import com.willfp.ecoenchants.enchantments.EcoEnchant; import com.willfp.ecoenchants.enchantments.meta.EnchantmentType; import com.willfp.ecoenchants.enchantments.util.EnchantChecks; @@ -64,16 +65,19 @@ public class Beheading extends EcoEnchant { meta.setOwningPlayer((Player) victim); item.setItemMeta(meta); } else { - if (event.getEntityType().equals(EntityType.ZOMBIE)) { - item = new ItemStack(Material.ZOMBIE_HEAD, 1); - } else if (event.getEntityType().equals(EntityType.SKELETON)) { - item = new ItemStack(Material.SKELETON_SKULL, 1); - } else if (event.getEntityType().equals(EntityType.CREEPER)) { - item = new ItemStack(Material.CREEPER_HEAD, 1); - } else if (event.getEntityType().equals(EntityType.ENDER_DRAGON)) { - item = new ItemStack(Material.DRAGON_HEAD, 1); - } else { - return; + item = getHead(event.getEntityType()); + if (item == null) { + if (event.getEntityType().equals(EntityType.ZOMBIE)) { + item = new ItemStack(Material.ZOMBIE_HEAD, 1); + } else if (event.getEntityType().equals(EntityType.SKELETON)) { + item = new ItemStack(Material.SKELETON_SKULL, 1); + } else if (event.getEntityType().equals(EntityType.CREEPER)) { + item = new ItemStack(Material.CREEPER_HEAD, 1); + } else if (event.getEntityType().equals(EntityType.ENDER_DRAGON)) { + item = new ItemStack(Material.DRAGON_HEAD, 1); + } else { + return; + } } } @@ -85,4 +89,15 @@ public class Beheading extends EcoEnchant { event.setDroppedExp(0); } + + ItemStack getHead(@NotNull final EntityType type) { + for (String s : this.getConfig().getStrings("custom-heads")) { + String[] split = s.split("::"); + if (!type.name().equalsIgnoreCase(split[0])) { + continue; + } + return new SkullBuilder().setSkullTexture(split[1]).build(); + } + return null; + } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/InfernalTouch.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/InfernalTouch.java index 6ffadee2..2cfebdd7 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/InfernalTouch.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/InfernalTouch.java @@ -1,5 +1,6 @@ package com.willfp.ecoenchants.enchantments.ecoenchants.normal; +import com.willfp.eco.core.Prerequisite; import com.willfp.eco.core.drops.DropQueue; import com.willfp.eco.core.integrations.antigrief.AntigriefManager; import com.willfp.eco.core.tuples.Pair; @@ -50,6 +51,10 @@ public class InfernalTouch extends EcoEnchant { int xp = (int) Math.ceil(furnaceRecipe.getExperience()); RECIPES.put(furnaceRecipe.getInput().getType(), new Pair<>(furnaceRecipe.getResult().getType(), xp)); } + + if (Prerequisite.HAS_1_17.isMet()) { + FORTUNE_MATERIALS.add(Material.COPPER_INGOT); + } } public InfernalTouch() { diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/spell/Charge.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/spell/Charge.java index 5fb224f1..d677d235 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/spell/Charge.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/spell/Charge.java @@ -23,10 +23,26 @@ public class Charge extends Spell { velocity.normalize(); velocity.multiply(level * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "velocity-per-level")); velocity.setY(player.getEyeLocation().getDirection().clone().getY() + 0.2); - player.setVelocity(velocity); + player.setVelocity(safenVector(velocity)); this.getPlugin().getScheduler().runLater(() -> AnticheatManager.unexemptPlayer(player), 10); return true; } + + private Vector safenVector(@NotNull final Vector vector) { + if (Math.abs(vector.getX()) > 4) { + vector.setX(vector.getX() < 0 ? -3.9 : 3.9); + } + + if (Math.abs(vector.getY()) > 4) { + vector.setY(vector.getY() < 0 ? -3.9 : 3.9); + } + + if (Math.abs(vector.getZ()) > 4) { + vector.setZ(vector.getZ() < 0 ? -3.9 : 3.9); + } + + return vector; + } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/itemtypes/Spell.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/itemtypes/Spell.java index 318b9077..99e54e49 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/itemtypes/Spell.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/itemtypes/Spell.java @@ -75,7 +75,8 @@ public abstract class Spell extends EcoEnchant { Material.BLAST_FURNACE, Material.BREWING_STAND, Material.DISPENSER, - Material.DROPPER + Material.DROPPER, + Material.FIRE )); static { diff --git a/eco-core/core-plugin/src/main/resources/enchants/normal/beheading.yml b/eco-core/core-plugin/src/main/resources/enchants/normal/beheading.yml index a2974202..6434092f 100644 --- a/eco-core/core-plugin/src/main/resources/enchants/normal/beheading.yml +++ b/eco-core/core-plugin/src/main/resources/enchants/normal/beheading.yml @@ -26,4 +26,8 @@ general-config: maximum-level: 3 config: - chance-per-level: 10 #chance of dropping skull per level \ No newline at end of file + chance-per-level: 10 # chance of dropping skull per level + custom-heads: # custom heads for mobs (mob_type::texture_value) + - "enderman::eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTZjMGIzNmQ1M2ZmZjY5YTQ5YzdkNmYzOTMyZjJiMGZlOTQ4ZTAzMjIyNmQ1ZTgwNDVlYzU4NDA4YTM2ZTk1MSJ9fX0=" + - "spider::eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2Q1NDE1NDFkYWFmZjUwODk2Y2QyNThiZGJkZDRjZjgwYzNiYTgxNjczNTcyNjA3OGJmZTM5MzkyN2U1N2YxIn19fQ==" + - "cave_spider::eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDE2NDVkZmQ3N2QwOTkyMzEwN2IzNDk2ZTk0ZWViNWMzMDMyOWY5N2VmYzk2ZWQ3NmUyMjZlOTgyMjQifX19" \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 28b6052a..183981c1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 8.14.33 +version = 8.15.3 plugin-name = EcoEnchants \ No newline at end of file