diff --git a/paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperEntityExtensions.java b/paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperEntityExtensions.java index 94bcb7f641..3ac1e86823 100644 --- a/paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperEntityExtensions.java +++ b/paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperEntityExtensions.java @@ -13,6 +13,7 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.ExperienceOrb; import org.bukkit.entity.Goat; +import org.bukkit.entity.Villager; import org.bukkit.inventory.EquipmentSlot; import java.util.UUID; @@ -187,6 +188,27 @@ public static void register() { object.getLivingEntity().damageItemStack(slot.asEnum(EquipmentSlot.class), amount.asInt()); }); + if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_21)) { + + // <--[mechanism] + // @object EntityTag + // @name restock_trades + // @input None + // @Plugin Paper + // @group paper + // @description + // Restocks a villager's trades. + // Note: this mechanism will fire the <@link event villager replenishes trade> event for every trade the villager is offering. + // This mechanism also updates the villager's demand for offers, which may cause item trade prices to rise or fall. + // --> + EntityTag.registerSpawnedOnlyMechanism("restock_trades", false, (object, mechanism) -> { + if (!(object.getBukkitEntity() instanceof Villager villager)) { + return; + } + villager.restock(); + }); + } + // <--[mechanism] // @object EntityTag // @name shear