diff --git a/Plugin/pom.xml b/Plugin/pom.xml index 91e00770..5c4c8f5d 100644 --- a/Plugin/pom.xml +++ b/Plugin/pom.xml @@ -245,7 +245,7 @@ com.comphenix.protocol ProtocolLib - 4.5.0 + 4.6.0-SNAPSHOT provided diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/display/DisplayPacketAdapter.java b/Plugin/src/main/java/com/willfp/ecoenchants/display/DisplayPacketAdapter.java index 29360ad7..7e6571cc 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/display/DisplayPacketAdapter.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/display/DisplayPacketAdapter.java @@ -4,15 +4,18 @@ import com.comphenix.protocol.PacketType; import com.comphenix.protocol.events.PacketAdapter; import com.comphenix.protocol.events.PacketEvent; import com.willfp.ecoenchants.Main; +import org.bukkit.inventory.MerchantRecipe; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; public class DisplayPacketAdapter extends PacketAdapter { private static final List packets = Arrays.asList( PacketType.Play.Server.WINDOW_ITEMS, PacketType.Play.Server.SET_SLOT, - PacketType.Play.Client.SET_CREATIVE_SLOT + PacketType.Play.Client.SET_CREATIVE_SLOT, + PacketType.Play.Server.OPEN_WINDOW_MERCHANT ); public DisplayPacketAdapter() { @@ -34,6 +37,24 @@ public class DisplayPacketAdapter extends PacketAdapter { item = EnchantDisplay.displayEnchantments(item); return item; }); + } else if (PacketType.Play.Server.OPEN_WINDOW_MERCHANT.equals(packetType)) { + List merchantRecipes = event.getPacket().getMerchantRecipeLists().readSafely(0); + if (merchantRecipes != null) { + List newList = + merchantRecipes.stream().map(oldRecipe -> { + MerchantRecipe recipe = + new MerchantRecipe(EnchantDisplay.displayEnchantments(oldRecipe.getResult()), + oldRecipe.getUses(), + oldRecipe.getMaxUses(), + oldRecipe.hasExperienceReward(), + oldRecipe.getVillagerExperience(), + oldRecipe.getPriceMultiplier()); + recipe.setIngredients(oldRecipe.getIngredients()); + return recipe; + }).collect(Collectors.toList()); + + event.getPacket().getMerchantRecipeLists().writeSafely(0, newList); + } } }