aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-10-18 18:46:32 +0200
committerLinnea Gräf <nea@nea.moe>2025-10-18 18:50:47 +0200
commit9036f2f09cab47bc78c0d7e5ae4909da745e07ec (patch)
tree3e2f925e5c5a6303a336a339958adbaec12efec2 /src
parentec6c57f53dd034d0865f5a0d3e84aeb1e52e1846 (diff)
downloadFirmament-9036f2f09cab47bc78c0d7e5ae4909da745e07ec.tar.gz
Firmament-9036f2f09cab47bc78c0d7e5ae4909da745e07ec.tar.bz2
Firmament-9036f2f09cab47bc78c0d7e5ae4909da745e07ec.zip
feat: only save storage overlay config on item change3.10.2+mc1.21.7
Diffstat (limited to 'src')
-rw-r--r--src/main/kotlin/events/TickEvent.kt3
-rw-r--r--src/main/kotlin/features/inventory/storageoverlay/StorageOverlay.kt14
-rw-r--r--src/main/kotlin/util/async/CompletableFutureExt.kt6
3 files changed, 17 insertions, 6 deletions
diff --git a/src/main/kotlin/events/TickEvent.kt b/src/main/kotlin/events/TickEvent.kt
index 18007f8..bf51774 100644
--- a/src/main/kotlin/events/TickEvent.kt
+++ b/src/main/kotlin/events/TickEvent.kt
@@ -3,5 +3,8 @@
package moe.nea.firmament.events
data class TickEvent(val tickCount: Int) : FirmamentEvent() {
+ // TODO: introduce a client / server tick system.
+ // client ticks should ignore the game state
+ // server ticks should per-tick count packets received by the server
companion object : FirmamentEventBus<TickEvent>()
}
diff --git a/src/main/kotlin/features/inventory/storageoverlay/StorageOverlay.kt b/src/main/kotlin/features/inventory/storageoverlay/StorageOverlay.kt
index 6043335..bd4bfdb 100644
--- a/src/main/kotlin/features/inventory/storageoverlay/StorageOverlay.kt
+++ b/src/main/kotlin/features/inventory/storageoverlay/StorageOverlay.kt
@@ -8,12 +8,15 @@ import net.minecraft.client.gui.screen.ingame.HandledScreen
import net.minecraft.entity.player.PlayerInventory
import net.minecraft.item.Items
import net.minecraft.network.packet.c2s.play.CloseHandledScreenC2SPacket
+import net.minecraft.text.Text
import moe.nea.firmament.annotations.Subscribe
+import moe.nea.firmament.events.ChestInventoryUpdateEvent
import moe.nea.firmament.events.ScreenChangeEvent
import moe.nea.firmament.events.SlotClickEvent
import moe.nea.firmament.events.SlotRenderEvents
import moe.nea.firmament.events.TickEvent
import moe.nea.firmament.util.MC
+import moe.nea.firmament.util.async.discard
import moe.nea.firmament.util.customgui.customGui
import moe.nea.firmament.util.data.Config
import moe.nea.firmament.util.data.ManagedConfig
@@ -90,8 +93,8 @@ object StorageOverlay {
var currentHandler: StorageBackingHandle? = null
@Subscribe
- fun onTick(event: TickEvent) {
- rememberContent(currentHandler ?: return)
+ fun onChestContentUpdate(event: ChestInventoryUpdateEvent) {
+ rememberContent(currentHandler)
}
@Subscribe
@@ -149,13 +152,11 @@ object StorageOverlay {
fun rememberContent(handler: StorageBackingHandle?) {
handler ?: return
- // TODO: Make all of these functions work on deltas / updates instead of the entire contents
- val data = Data.data?.storageInventories ?: return
+ val data = Data.data.storageInventories
when (handler) {
is StorageBackingHandle.Overview -> rememberStorageOverview(handler, data)
is StorageBackingHandle.Page -> rememberPage(handler, data)
}
- Data.markDirty()
}
private fun rememberStorageOverview(
@@ -176,13 +177,13 @@ object StorageOverlay {
data[slot] = StorageData.StorageInventory(slot.defaultName(), slot, null)
}
}
+ Data.markDirty()
}
private fun rememberPage(
handler: StorageBackingHandle.Page,
data: SortedMap<StoragePageSlot, StorageData.StorageInventory>
) {
- // TODO: FIXME: FIXME NOW: Definitely don't copy all of this every tick into persistence
val newStacks =
VirtualInventory(handler.handler.stacks.take(handler.handler.rows * 9).drop(9).map { it.copy() })
data.compute(handler.storagePageSlot) { slot, existingInventory ->
@@ -194,5 +195,6 @@ object StorageOverlay {
it.inventory = newStacks
}
}
+ Data.markDirty(newStacks.serializationCache.discard())
}
}
diff --git a/src/main/kotlin/util/async/CompletableFutureExt.kt b/src/main/kotlin/util/async/CompletableFutureExt.kt
new file mode 100644
index 0000000..5476371
--- /dev/null
+++ b/src/main/kotlin/util/async/CompletableFutureExt.kt
@@ -0,0 +1,6 @@
+package moe.nea.firmament.util.async
+
+import java.util.concurrent.CompletableFuture
+
+
+fun CompletableFuture<*>.discard(): CompletableFuture<Void?> = thenRun { }