Added recipe packet splitting

This commit is contained in:
Auxilor
2022-05-28 12:31:55 +01:00
parent a49a9e92b4
commit 336cdc3716
6 changed files with 89 additions and 1 deletions

View File

@@ -115,6 +115,7 @@ import com.willfp.eco.internal.spigot.proxy.FastItemStackFactoryProxy
import com.willfp.eco.internal.spigot.proxy.SkullProxy
import com.willfp.eco.internal.spigot.proxy.TPSProxy
import com.willfp.eco.internal.spigot.recipes.CraftingRecipeListener
import com.willfp.eco.internal.spigot.recipes.RecipePacketFixer
import com.willfp.eco.internal.spigot.recipes.StackedRecipeListener
import com.willfp.eco.internal.spigot.recipes.listeners.ComplexInComplex
import com.willfp.eco.internal.spigot.recipes.listeners.ComplexInVanilla
@@ -344,7 +345,8 @@ abstract class EcoSpigotPlugin : EcoPlugin() {
PacketSetSlot(this),
PacketWindowItems(this),
PacketHeldWindowItems(this),
PacketOpenWindowMerchant(this)
PacketOpenWindowMerchant(this),
RecipePacketFixer(this)
)
}

View File

@@ -0,0 +1,27 @@
package com.willfp.eco.internal.spigot.recipes
import com.comphenix.protocol.PacketType
import com.comphenix.protocol.ProtocolLibrary
import com.comphenix.protocol.events.PacketContainer
import com.comphenix.protocol.events.PacketEvent
import com.willfp.eco.core.AbstractPacketAdapter
import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.internal.spigot.proxy.RecipePacketProxy
import org.bukkit.entity.Player
class RecipePacketFixer(
plugin: EcoPlugin
) : AbstractPacketAdapter(
plugin,
PacketType.Play.Server.RECIPE_UPDATE,
false
) {
override fun onSend(packet: PacketContainer, player: Player, event: PacketEvent) {
val nmsPackets = this.getPlugin().getProxy(RecipePacketProxy::class.java).splitPacket(packet.handle)
for (nmsPacket in nmsPackets) {
val protocolLibPacket = PacketContainer.fromPacket(nmsPacket)
ProtocolLibrary.getProtocolManager().sendServerPacket(player, protocolLibPacket, false)
}
}
}