Operate on panel list copy
This commit is contained in:
parent
8551e2fa64
commit
fbfca5d937
@ -3,6 +3,7 @@ package ru.dbotthepony.mc.otm.client.screen
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectFunction
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
|
||||
import it.unimi.dsi.fastutil.objects.ObjectArrayList
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.client.gui.Font
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
@ -54,6 +55,7 @@ import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
|
||||
import ru.dbotthepony.mc.otm.menu.widget.ProfiledLevelGaugeWidget
|
||||
import java.util.*
|
||||
import kotlin.collections.ArrayDeque
|
||||
import kotlin.collections.ArrayList
|
||||
import kotlin.collections.List
|
||||
import kotlin.collections.MutableSet
|
||||
import kotlin.collections.isNotEmpty
|
||||
@ -471,7 +473,7 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
||||
|
||||
override fun onClose() {
|
||||
super.onClose()
|
||||
panels.forEach { it.markRemoved() }
|
||||
ObjectArrayList(panels).forEach { it.markRemoved() }
|
||||
}
|
||||
|
||||
public override fun recalculateQuickCraftRemaining() {
|
||||
@ -506,7 +508,7 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
||||
var click = false
|
||||
var focusKilled = false
|
||||
|
||||
for (panel in panels) {
|
||||
for (panel in ObjectArrayList(panels)) {
|
||||
if (click || !panel.mouseClickedChecked(x, y, button)) {
|
||||
focusKilled = panel.killFocus() || focusKilled
|
||||
} else {
|
||||
@ -525,7 +527,7 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
||||
private var lastDragSlot: Slot? = null
|
||||
|
||||
override fun mouseDragged(x: Double, y: Double, button: Int, xDelta: Double, yDelta: Double): Boolean {
|
||||
for (panel in panels) {
|
||||
for (panel in ObjectArrayList(panels)) {
|
||||
if (panel.mouseDraggedChecked(x, y, button, xDelta, yDelta)) {
|
||||
if (returnSlot != null) {
|
||||
super.mouseDragged(x, y, button, xDelta, yDelta)
|
||||
@ -553,7 +555,7 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
||||
}
|
||||
}
|
||||
|
||||
for (panel in panels) {
|
||||
for (panel in ObjectArrayList(panels)) {
|
||||
if (panel.mouseReleasedChecked(p_97812_, p_97813_, p_97814_)) {
|
||||
if (returnSlot != null) {
|
||||
super.mouseReleased(p_97812_, p_97813_, p_97814_)
|
||||
@ -569,7 +571,7 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
||||
}
|
||||
|
||||
override fun mouseScrolled(mouseX: Double, mouseY: Double, scrollX: Double, scrollY: Double): Boolean {
|
||||
for (panel in panels) {
|
||||
for (panel in ObjectArrayList(panels)) {
|
||||
if (panel.mouseScrolledChecked(mouseX, mouseY, scrollY)) {
|
||||
return true
|
||||
}
|
||||
@ -579,7 +581,7 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
||||
}
|
||||
|
||||
override fun keyReleased(p_94715_: Int, p_94716_: Int, p_94717_: Int): Boolean {
|
||||
for (panel in panels) {
|
||||
for (panel in ObjectArrayList(panels)) {
|
||||
if (panel.keyReleased(p_94715_, p_94716_, p_94717_)) {
|
||||
return true
|
||||
}
|
||||
@ -589,7 +591,7 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
||||
}
|
||||
|
||||
override fun charTyped(p_94683_: Char, p_94684_: Int): Boolean {
|
||||
for (panel in panels) {
|
||||
for (panel in ObjectArrayList(panels)) {
|
||||
if (panel.charTyped(p_94683_, p_94684_)) {
|
||||
return true
|
||||
}
|
||||
@ -599,7 +601,7 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
||||
}
|
||||
|
||||
override fun keyPressed(key: Int, scancode: Int, mods: Int): Boolean {
|
||||
for (panel in panels) {
|
||||
for (panel in ObjectArrayList(panels)) {
|
||||
if (panel.keyPressed(key, scancode, mods)) {
|
||||
if (returnSlot != null) {
|
||||
super.keyPressed(key, scancode, mods)
|
||||
|
Loading…
Reference in New Issue
Block a user