Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5f2255a3bc | ||
|
|
065ccfbe67 | ||
|
|
17727c9015 | ||
|
|
ea64e69b4d | ||
|
|
07ca6c2359 | ||
|
|
162558b1c2 | ||
|
|
10f9e8dce0 | ||
|
|
b02943d7ff | ||
|
|
1cf08955a0 |
@@ -139,7 +139,7 @@ public interface MenuBuilder extends PageBuilder {
|
||||
* @return The builder.
|
||||
*/
|
||||
default MenuBuilder maxPages(@NotNull final Function<Player, Integer> pages) {
|
||||
return onOpen((player, menu) -> menu.addState(player, Page.MAX_PAGE_KEY, pages.apply(player)));
|
||||
return onRender((player, menu) -> menu.addState(player, Page.MAX_PAGE_KEY, pages.apply(player)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -31,6 +31,8 @@ class RenderedInventory(
|
||||
val state = mutableMapOf<String, Any?>()
|
||||
|
||||
fun render() {
|
||||
val previousCaptive = captiveItems.toMap()
|
||||
|
||||
captiveItems.clear()
|
||||
|
||||
for (row in (1..menu.rows)) {
|
||||
@@ -60,9 +62,27 @@ class RenderedInventory(
|
||||
}
|
||||
|
||||
menu.runOnRender(player)
|
||||
|
||||
// Run second render if captive items changed
|
||||
if (captiveItems != previousCaptive) {
|
||||
for (row in (1..menu.rows)) {
|
||||
for (column in (1..menu.columns)) {
|
||||
val bukkit = MenuUtils.rowColumnToSlot(row, column, menu.columns)
|
||||
|
||||
val slot = menu.getSlot(row, column, player, menu)
|
||||
val renderedItem = slot.getItemStack(player)
|
||||
|
||||
if (!slot.isCaptive(player, menu)) {
|
||||
inventory.setItem(bukkit, renderedItem)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun renderDefaultCaptiveItems() {
|
||||
menu.runOnRender(player)
|
||||
|
||||
for (row in (1..menu.rows)) {
|
||||
for (column in (1..menu.columns)) {
|
||||
val bukkit = MenuUtils.rowColumnToSlot(row, column, menu.columns)
|
||||
|
||||
@@ -29,7 +29,27 @@ var SkullMeta.texture: String?
|
||||
setProfile.isAccessible = true
|
||||
}
|
||||
|
||||
if (base64 == null) {
|
||||
/* This length check below was lost in the conversion. For some reason the base64
|
||||
* string is length 8 when this is called pretty frequently, causing an
|
||||
* out of bounds exception.
|
||||
*
|
||||
* Could not pass event EntityPotionEffectEvent to Talismans v5.116.0
|
||||
* java.lang.StringIndexOutOfBoundsException: begin -12, end 8, length 8
|
||||
* at java.lang.String.checkBoundsBeginEnd(String.java:4604) ~[?:?]
|
||||
* at java.lang.String.substring(String.java:2707) ~[?:?]
|
||||
* at java.lang.String.substring(String.java:2680) ~[?:?]
|
||||
* at com.willfp.eco.internal.spigot.proxy.v1_19_R1.common.SkullKt.setTexture(Skull.kt:36)
|
||||
*
|
||||
if (base64.length < 20) {
|
||||
return
|
||||
}
|
||||
*
|
||||
* ^ Update to this comment: a length 8 string ("textures") was being sent
|
||||
* because the get() method wasn't working right. This has been fixed, but the
|
||||
* check needs to remain implemented.
|
||||
*/
|
||||
|
||||
if (base64 == null || base64.length < 20) {
|
||||
setProfile.invoke(this, null)
|
||||
} else {
|
||||
val uuid = UUID(
|
||||
|
||||
@@ -50,6 +50,14 @@ class GUIListener(private val plugin: EcoPlugin) : Listener {
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(
|
||||
priority = EventPriority.HIGHEST
|
||||
)
|
||||
fun handleRender(event: InventoryClickEvent) {
|
||||
val player = event.whoClicked as? Player ?: return
|
||||
player.renderActiveMenu()
|
||||
}
|
||||
|
||||
@EventHandler(
|
||||
priority = EventPriority.HIGH
|
||||
)
|
||||
@@ -63,8 +71,6 @@ class GUIListener(private val plugin: EcoPlugin) : Listener {
|
||||
val (row, column) = MenuUtils.convertSlotToRowColumn(event.slot, menu.columns)
|
||||
|
||||
menu.getSlot(row, column, player, menu).handle(player, event, menu)
|
||||
|
||||
plugin.scheduler.run { rendered.render() }
|
||||
}
|
||||
|
||||
@EventHandler(
|
||||
@@ -172,7 +178,6 @@ class GUIListener(private val plugin: EcoPlugin) : Listener {
|
||||
val rendered = player.renderedInventory ?: return
|
||||
|
||||
if (rendered.menu.allowsChangingHeldItem()) {
|
||||
player.renderActiveMenu()
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version = 6.43.2
|
||||
version = 6.43.4
|
||||
plugin-name = eco
|
||||
kotlin.code.style = official
|
||||
Reference in New Issue
Block a user