From ce5c1c50bf45bea1950052905b42e4009a00c11d Mon Sep 17 00:00:00 2001 From: Intelli Date: Thu, 8 Dec 2022 16:24:53 -0700 Subject: [PATCH] Added logging for player inventory transactions with allays --- .../player/PlayerInteractEntityListener.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/main/java/net/coreprotect/listener/player/PlayerInteractEntityListener.java b/src/main/java/net/coreprotect/listener/player/PlayerInteractEntityListener.java index cb4fedd..cba8770 100644 --- a/src/main/java/net/coreprotect/listener/player/PlayerInteractEntityListener.java +++ b/src/main/java/net/coreprotect/listener/player/PlayerInteractEntityListener.java @@ -7,6 +7,7 @@ import java.util.Locale; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.entity.Creature; import org.bukkit.entity.Entity; import org.bukkit.entity.ItemFrame; import org.bukkit.entity.Player; @@ -21,6 +22,7 @@ import org.bukkit.inventory.ItemStack; import net.coreprotect.config.Config; import net.coreprotect.config.ConfigHandler; import net.coreprotect.consumer.Queue; +import net.coreprotect.database.logger.ItemLogger; import net.coreprotect.model.BlockGroup; import net.coreprotect.utility.Util; @@ -74,6 +76,36 @@ public final class PlayerInteractEntityListener extends Queue implements Listene queueFrameTransaction(player.getName(), frame, false); } } + else if (!event.isCancelled() && entity instanceof Creature && entity.getType().name().equals("ALLAY")) { + ItemStack handItem = new ItemStack(Material.AIR); + ItemStack mainHand = player.getInventory().getItemInMainHand(); + ItemStack offHand = player.getInventory().getItemInOffHand(); + if (event.getHand().equals(EquipmentSlot.HAND) && mainHand.getType() != Material.AIR) { + handItem = mainHand; + } + else if (event.getHand().equals(EquipmentSlot.OFF_HAND) && offHand.getType() != Material.AIR) { + handItem = offHand; + } + else if (event.getHand().equals(EquipmentSlot.OFF_HAND)) { + return; + } + + ItemStack allayItem = ((Creature) entity).getEquipment().getItemInMainHand(); + if (handItem.getType().equals(allayItem.getType())) { + return; + } + + if (allayItem.getType().equals(Material.AIR)) { + ItemStack removedItem = handItem.clone(); + removedItem.setAmount(1); + CraftItemListener.logCraftedItem(player.getLocation(), player.getName(), removedItem, ItemLogger.ITEM_SELL); + } + else if (handItem.getType().equals(Material.AIR)) { + ItemStack addItem = allayItem.clone(); + addItem.setAmount(1); + CraftItemListener.logCraftedItem(player.getLocation(), player.getName(), addItem, ItemLogger.ITEM_BUY); + } + } } public static void queueFrameTransaction(String user, ItemFrame frame, boolean logDrop) {