Added logging for items traded with villagers (MC 1.18+)

This commit is contained in:
Intelli 2022-03-03 15:22:37 -07:00
parent 7bc95931d2
commit 83fc221bf2
15 changed files with 193 additions and 37 deletions

View file

@ -15,6 +15,7 @@ import org.bukkit.entity.ItemFrame;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.MerchantRecipe;
import org.bukkit.inventory.meta.ItemMeta;
import net.coreprotect.config.ConfigHandler;
@ -43,9 +44,11 @@ public class BukkitAdapter implements BukkitInterface {
BukkitAdapter.ADAPTER = new Bukkit_v1_16();
break;
case BUKKIT_V1_17:
BukkitAdapter.ADAPTER = new Bukkit_v1_17();
break;
case BUKKIT_V1_18:
default:
BukkitAdapter.ADAPTER = new Bukkit_v1_17();
BukkitAdapter.ADAPTER = new Bukkit_v1_18();
break;
}
}
@ -144,4 +147,9 @@ public class BukkitAdapter implements BukkitInterface {
return Util.isAir(material);
}
@Override
public ItemStack adjustIngredient(MerchantRecipe recipe, ItemStack itemStack) {
return null;
}
}

View file

@ -13,10 +13,13 @@ import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.MerchantRecipe;
import org.bukkit.inventory.meta.ItemMeta;
public interface BukkitInterface {
public ItemStack adjustIngredient(MerchantRecipe recipe, ItemStack itemStack);
public Material getBucketContents(Material material);
public Material getFrameType(Entity entity);

View file

@ -0,0 +1,31 @@
package net.coreprotect.bukkit;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.MerchantRecipe;
public class Bukkit_v1_18 extends Bukkit_v1_17 implements BukkitInterface {
private Boolean hasAdjust = null;
@Override
public ItemStack adjustIngredient(MerchantRecipe recipe, ItemStack itemStack) {
try {
if (hasAdjust == null) {
hasAdjust = true;
MerchantRecipe.class.getMethod("adjust", ItemStack.class); // Bukkit 1.18.1+
}
else if (Boolean.FALSE.equals(hasAdjust)) {
return null;
}
ItemStack adjustedStack = itemStack.clone();
recipe.adjust(adjustedStack);
return adjustedStack;
}
catch (Exception e) {
hasAdjust = false;
return null;
}
}
}