From 581a4f77514119cb8385ef19f7a9af6e2ec23657 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Fri, 7 Jan 2022 19:38:25 +0000 Subject: [PATCH] Added custom entity support to beheading --- .../ecoenchants/normal/Beheading.java | 35 +++++++++++++------ .../resources/enchants/normal/beheading.yml | 6 +++- 2 files changed, 30 insertions(+), 11 deletions(-) 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/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