Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
group=me.arasple.mc.trmenu
version=3.8.2
version=3.8.4
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ package trplugins.menu.module.conf

import org.bukkit.event.inventory.InventoryType
import org.bukkit.inventory.InventoryView
import org.bukkit.inventory.ItemFlag
import taboolib.common.platform.function.pluginId
import taboolib.common.platform.function.warning
import taboolib.common.util.asList
import taboolib.library.configuration.ConfigurationSection
import taboolib.library.xseries.XItemFlag
import taboolib.module.configuration.Configuration
import taboolib.module.configuration.Type
import taboolib.module.lang.Language
Expand Down Expand Up @@ -42,6 +42,7 @@ import trplugins.menu.util.collections.IndivList
import trplugins.menu.util.conf.Property
import trplugins.menu.util.parseIconId
import java.io.File
import kotlin.jvm.optionals.getOrNull
import kotlin.math.max

/**
Expand Down Expand Up @@ -342,7 +343,8 @@ object MenuSerializer : ISerializer {
val flags = if (inherit.contains(Property.ICON_DISPLAY_FLAGS)) {
def!!.display.meta.flags
} else Property.ICON_DISPLAY_FLAGS.ofStringList(display).mapNotNull { flag ->
ItemFlag.entries.find { it.name.equals(flag, true) }
// ItemFlag.entries.find { it.name.equals(flag, true) }
XItemFlag.of(flag).getOrNull()?.get()
}.toTypedArray()
val nbt = if (inherit.contains(Property.ICON_DISPLAY_NBT)) {
def!!.display.meta.nbt
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package trplugins.menu.module.internal.listener

import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftInventory
import org.bukkit.event.player.PlayerInteractEvent
import org.bukkit.inventory.EquipmentSlot
import org.bukkit.inventory.Inventory
import taboolib.common.platform.event.EventPriority
import taboolib.common.platform.event.SubscribeEvent
import taboolib.common5.Baffle
import taboolib.module.nms.MinecraftVersion
import taboolib.module.nms.MinecraftVersion.versionId
import taboolib.module.nms.nmsProxy
import taboolib.module.nms.obcClass
import trplugins.menu.TrMenu
import trplugins.menu.api.event.MenuOpenEvent
import trplugins.menu.module.display.Menu
Expand All @@ -28,11 +31,15 @@ object ListenerItemInteract {
fun onInteract(e: PlayerInteractEvent) {
ListenerItemInteract::interactCooldown.get()

if (MinecraftVersion.majorLegacy >= 10900 && e.hand == EquipmentSlot.OFF_HAND) return
if (versionId >= 10900 && e.hand == EquipmentSlot.OFF_HAND) return
val player = e.player
val item = e.item ?: return
val session = MenuSession.getSession(player)

if (!InventoryNMS.instance.checkInventory(player.openInventory.topInventory)
|| !InventoryNMS.instance.checkInventory(player.inventory)
) return

if (player.openInventory.topInventory.holder != (player.inventory as Inventory).holder || session.menu != null) return
if (interactCooldown.value.hasNext(player.name)) {
val menu = Menu.menus.find { it -> it.settings.boundItems.any { it.itemMatches(item, true) } }
Expand All @@ -43,4 +50,23 @@ object ListenerItemInteract {
}
}

class InventoryNMSImpl : InventoryNMS() {

private val `clazz$CraftInventoryCustom$MinecraftInventory` =
obcClass("org.bukkit.craftbukkit.inventory.CraftInventoryCustom\$MinecraftInventory")

override fun checkInventory(inventory: Inventory): Boolean {
return `clazz$CraftInventoryCustom$MinecraftInventory`.isInstance((inventory as CraftInventory).inventory)
}

}

abstract class InventoryNMS {
abstract fun checkInventory(inventory: Inventory): Boolean

companion object {
val instance by lazy { nmsProxy<InventoryNMS>() }
}
}

}