Implement item cachine for 26.3

This commit is contained in:
Tanner
2026-11-04 18:54:04 +00:00
parent 459e288407
commit 9fd565c3c9
10 changed files with 228 additions and 37 deletions
+23 -2
View File
@@ -1,10 +1,13 @@
import io
import unittest
from munch import Munch
from minecraft.networking.modern import ClientTickEnd
from minecraft.networking.modern import ClientTickEnd, ContainerOpenPacket
from minecraft.networking.packets import PacketBuffer
from mosfet.game import ContainerClickDropPacket, Game
from mosfet.game import (
ContainerClickDropPacket, ContainerClickQuickMovePacket, Game,
)
from mosfet.protocol.types import Slot
@@ -27,6 +30,24 @@ class TestInventoryDrain(unittest.TestCase):
self.assertEqual(payload.get_writable(), bytes.fromhex(
'0007002d01040000'))
def test_quick_move_packet_encodes_shift_click(self):
packet = ContainerClickQuickMovePacket(
container_id=3, state_id=7, slot=42)
payload = PacketBuffer()
packet.write_fields(payload)
self.assertEqual(packet.id, 0x12)
self.assertEqual(payload.get_writable(), bytes.fromhex(
'0307002a00010000'))
def test_open_window_packet_decodes_container_metadata(self):
# window id, menu type, empty anonymous-NBT title
packet = ContainerOpenPacket()
packet.read(io.BytesIO(bytes.fromhex('010200')))
self.assertEqual(packet.window_id, 1)
self.assertEqual(packet.inventory_type, 2)
self.assertIsNone(packet.title)
def test_drain_waits_for_authoritative_slot_update(self):
connection = FakeConnection()
game = Game.__new__(Game)