Optimized second render for captive changes

This commit is contained in:
Auxilor
2022-10-03 22:30:20 +01:00
parent ea64e69b4d
commit 17727c9015

View File

@@ -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)) {
@@ -61,15 +63,18 @@ class RenderedInventory(
menu.runOnRender(player)
for (row in (1..menu.rows)) {
for (column in (1..menu.columns)) {
val bukkit = MenuUtils.rowColumnToSlot(row, column, menu.columns)
// 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)
val slot = menu.getSlot(row, column, player, menu)
val renderedItem = slot.getItemStack(player)
if (!slot.isCaptive(player, menu)) {
inventory.setItem(bukkit, renderedItem)
if (!slot.isCaptive(player, menu)) {
inventory.setItem(bukkit, renderedItem)
}
}
}
}