diff options
| author | Linnea Gräf <nea@nea.moe> | 2025-10-18 18:46:32 +0200 |
|---|---|---|
| committer | Linnea Gräf <nea@nea.moe> | 2025-10-18 18:50:47 +0200 |
| commit | 9036f2f09cab47bc78c0d7e5ae4909da745e07ec (patch) | |
| tree | 3e2f925e5c5a6303a336a339958adbaec12efec2 /src | |
| parent | ec6c57f53dd034d0865f5a0d3e84aeb1e52e1846 (diff) | |
| download | Firmament-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.kt | 3 | ||||
| -rw-r--r-- | src/main/kotlin/features/inventory/storageoverlay/StorageOverlay.kt | 14 | ||||
| -rw-r--r-- | src/main/kotlin/util/async/CompletableFutureExt.kt | 6 |
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 { } |
