diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/MagicPills.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/MagicPills.java index 58f4b4a75..5f6248b60 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/MagicPills.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/MagicPills.java @@ -1,11 +1,10 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.magical; +import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils; import org.bukkit.Sound; import org.bukkit.entity.EntityType; -import org.bukkit.entity.Player; import org.bukkit.entity.Villager; import org.bukkit.entity.ZombieVillager; -import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; import io.github.thebusybiscuit.slimefun4.api.MinecraftVersion; @@ -19,7 +18,7 @@ import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; /** * This {@link SlimefunItem} allows you to convert any {@link ZombieVillager} to - * their {@link Villager} variant. + * their {@link Villager} variant. It is also one of the very few utilisations of {@link EntityInteractHandler}. * * @author Linox * @@ -34,20 +33,13 @@ public class MagicPills extends SimpleSlimefunItem { @Override public EntityInteractHandler getItemHandler() { - return (e, item) -> { - if (e.getRightClicked().getType() == EntityType.ZOMBIE_VILLAGER) { - Player p = e.getPlayer(); - - item.setAmount(item.getAmount() - 1); - if (e.getHand() == EquipmentSlot.OFF_HAND) { - p.getInventory().setItemInOffHand(item); - } else { - p.getInventory().setItemInMainHand(item); - } + return (p, entity, item, offhand) -> { + if (entity.getType() == EntityType.ZOMBIE_VILLAGER) { + ItemUtils.consumeItem(item, false); p.playSound(p.getLocation(), Sound.ENTITY_ZOMBIE_VILLAGER_CONVERTED, 1, 1); - ZombieVillager zombieVillager = (ZombieVillager) e.getRightClicked(); + ZombieVillager zombieVillager = (ZombieVillager) entity; zombieVillager.setConversionTime(1); if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_15)) { zombieVillager.setConversionPlayer(p); diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/EntityInteractHandler.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/EntityInteractHandler.java index 32cc21542..c7fa151a9 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/EntityInteractHandler.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/handlers/EntityInteractHandler.java @@ -3,6 +3,7 @@ package me.mrCookieSlime.Slimefun.Objects.handlers; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerInteractAtEntityEvent; +import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; @@ -15,6 +16,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; * * @see ItemHandler * @see SimpleSlimefunItem + * @see PlayerInteractAtEntityEvent * */ @FunctionalInterface @@ -24,10 +26,16 @@ public interface EntityInteractHandler extends ItemHandler { * This function is triggered when a {@link Player} right clicks with the assigned {@link SlimefunItem} * in his hand. * - * @param e - * The {@link PlayerInteractAtEntityEvent} that was triggered + * @param p + * The {@link Player} that right clicked + * @param entity + * The {@link Entity} that was right clicked on + * @param item + * The {@link ItemStack} that was held and used while triggering + * @param offHand + * true if the {@link EquipmentSlot} is off hand */ - void onInteract(PlayerInteractAtEntityEvent e, ItemStack item); + void onInteract(Player p, Entity entity, ItemStack item, boolean offHand); @Override default Class getIdentifier() { diff --git a/src/main/resources/languages/researches_en.yml b/src/main/resources/languages/researches_en.yml index 3160e811f..744c95ffd 100644 --- a/src/main/resources/languages/researches_en.yml +++ b/src/main/resources/languages/researches_en.yml @@ -233,3 +233,4 @@ slimefun: tree_growth_accelerator: Faster Trees industrial_miner: Industrial Mining advanced_industrial_miner: Better Mining + magic_pills: De-Zombification \ No newline at end of file