From f3b199cf8abd93e6b8b761af8e7b28bed5fe7592 Mon Sep 17 00:00:00 2001 From: Roman / Linnea Gräf Date: Thu, 20 Apr 2023 21:59:19 +0200 Subject: Mark packet event as async and fix threading issue in garden visitor … (#51) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../skyhanni/events/OwnInventorItemUpdateEvent.kt | 5 ++++- .../at/hannibal2/skyhanni/events/PacketEvent.kt | 26 +++++++++++++--------- .../garden/visitor/GardenVisitorFeatures.kt | 5 ++++- 3 files changed, 24 insertions(+), 12 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni') diff --git a/src/main/java/at/hannibal2/skyhanni/events/OwnInventorItemUpdateEvent.kt b/src/main/java/at/hannibal2/skyhanni/events/OwnInventorItemUpdateEvent.kt index d9b641cee..892651a3d 100644 --- a/src/main/java/at/hannibal2/skyhanni/events/OwnInventorItemUpdateEvent.kt +++ b/src/main/java/at/hannibal2/skyhanni/events/OwnInventorItemUpdateEvent.kt @@ -2,4 +2,7 @@ package at.hannibal2.skyhanni.events import net.minecraft.item.ItemStack -class OwnInventorItemUpdateEvent(val itemStack: ItemStack): LorenzEvent() \ No newline at end of file +/** + * Note: This event is async and may not be executed on the main minecraft thread. + */ +data class OwnInventorItemUpdateEvent(val itemStack: ItemStack): LorenzEvent() \ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/events/PacketEvent.kt b/src/main/java/at/hannibal2/skyhanni/events/PacketEvent.kt index abdb79b39..71c1cfa73 100644 --- a/src/main/java/at/hannibal2/skyhanni/events/PacketEvent.kt +++ b/src/main/java/at/hannibal2/skyhanni/events/PacketEvent.kt @@ -4,19 +4,25 @@ import net.minecraft.network.Packet import net.minecraftforge.fml.common.eventhandler.Cancelable @Cancelable -open class PacketEvent(val packet: Packet<*>) : LorenzEvent() { - var direction: Direction? = null +/** + * Note: This event is async and may not be executed on the main minecraft thread. + */ +abstract class PacketEvent : LorenzEvent() { + abstract val direction: Direction + abstract val packet: Packet<*> - class ReceiveEvent(packet: Packet<*>) : PacketEvent(packet) { - init { - direction = Direction.INBOUND - } + /** + * Note: This event is async and may not be executed on the main minecraft thread. + */ + data class ReceiveEvent(override val packet: Packet<*>) : PacketEvent() { + override val direction = Direction.INBOUND } - class SendEvent(packet: Packet<*>) : PacketEvent(packet) { - init { - direction = Direction.OUTBOUND - } + /** + * Note: This event is async and may not be executed on the main minecraft thread. + */ + data class SendEvent(override val packet: Packet<*>) : PacketEvent() { + override val direction = Direction.OUTBOUND } enum class Direction { diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorFeatures.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorFeatures.kt index 17adc4f2c..c339a5425 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorFeatures.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorFeatures.kt @@ -20,6 +20,7 @@ import at.hannibal2.skyhanni.utils.RenderUtils.renderStringsAndItems import at.hannibal2.skyhanni.utils.StringUtils.removeColor import at.hannibal2.skyhanni.utils.renderables.Renderable import io.github.moulberry.notenoughupdates.events.SlotClickEvent +import io.github.moulberry.notenoughupdates.util.MinecraftExecutor import io.github.moulberry.notenoughupdates.util.SBInfo import net.minecraft.client.Minecraft import net.minecraft.client.gui.inventory.GuiEditSign @@ -203,7 +204,9 @@ class GardenVisitorFeatures { @SubscribeEvent fun onOwnInventoryItemUpdate(event: OwnInventorItemUpdateEvent) { if (GardenAPI.onBarnPlot) { - update() + MinecraftExecutor.OnThread.execute { + update() + } } } -- cgit