diff --git a/example/src/endstone_inventoryui_example/main.py b/example/src/endstone_inventoryui_example/main.py index c956748..cf069b5 100644 --- a/example/src/endstone_inventoryui_example/main.py +++ b/example/src/endstone_inventoryui_example/main.py @@ -1,5 +1,5 @@ from endstone import Player -from endstone._internal.endstone_python import ItemStack +from endstone.inventory import ItemStack from endstone.command import CommandSender, Command from endstone.plugin import Plugin diff --git a/pyproject.toml b/pyproject.toml index 7d2b02f..6dcc0cf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,9 +4,9 @@ build-backend = "hatchling.build" [project] name = "endstone-inventoryui" -version = "1.1.0" +version = "1.1.1" dependencies = [ - "bedrock-protocol-packets" + "bedrock-protocol-packets-ng" ] authors = [ { name = "Shock95", email = "" }, diff --git a/src/endstone_inventoryui/listener.py b/src/endstone_inventoryui/listener.py index 75301c6..a1574d5 100644 --- a/src/endstone_inventoryui/listener.py +++ b/src/endstone_inventoryui/listener.py @@ -1,8 +1,7 @@ from bedrock_protocol.packets import MinecraftPacketIds from bedrock_protocol.packets.enums import ItemStackRequestActionType from bedrock_protocol.packets.packet import ContainerClosePacket, ItemRegistryPacket, ItemStackRequestPacket -from endstone._internal.endstone_python import PacketSendEvent -from endstone.event import event_handler, EventPriority, PlayerQuitEvent, PacketReceiveEvent +from endstone.event import event_handler, EventPriority, PlayerQuitEvent, PacketReceiveEvent, PacketSendEvent from endstone.plugin import Plugin from .manager import Session diff --git a/src/endstone_inventoryui/menu/graphic/block_graphic.py b/src/endstone_inventoryui/menu/graphic/block_graphic.py index c5bf4ce..d8e5c5a 100644 --- a/src/endstone_inventoryui/menu/graphic/block_graphic.py +++ b/src/endstone_inventoryui/menu/graphic/block_graphic.py @@ -1,5 +1,5 @@ from bedrock_protocol.packets.packet import BlockActorDataPacket, ContainerOpenPacket -from bedrock_protocol.packets.types import BlockPos, NetworkBlockPosition +from bedrock_protocol.packets.types import BlockPos from endstone import Player from rapidnbt import CompoundTag @@ -24,12 +24,12 @@ def send_data(self, player: Player): pos = self.pos tag.set("id", self.menu.type.block_actor_id) tag.set("CustomName", self.menu.name) - pk = BlockActorDataPacket(NetworkBlockPosition(pos.x, pos.y, pos.z), tag) + pk = BlockActorDataPacket(BlockPos(pos.x, pos.y, pos.z), tag) player.send_packet(pk.get_packet_id(), pk.serialize()) def open(self, player: Player): from endstone_inventoryui.manager import Session - pos = NetworkBlockPosition(self.pos.x, self.pos.y, self.pos.z) + pos = BlockPos(self.pos.x, self.pos.y, self.pos.z) pk = ContainerOpenPacket(Session.CONTAINER_ID, self.menu.type.container_type, pos) player.send_packet(pk.get_packet_id(), pk.serialize()) diff --git a/src/endstone_inventoryui/menu/graphic/block_pair_graphic.py b/src/endstone_inventoryui/menu/graphic/block_pair_graphic.py index cd36d26..98ca66e 100644 --- a/src/endstone_inventoryui/menu/graphic/block_pair_graphic.py +++ b/src/endstone_inventoryui/menu/graphic/block_pair_graphic.py @@ -1,5 +1,5 @@ from bedrock_protocol.packets.packet import BlockActorDataPacket, ContainerOpenPacket -from bedrock_protocol.packets.types import BlockPos, NetworkBlockPosition +from bedrock_protocol.packets.types import BlockPos from endstone import Player from rapidnbt import CompoundTag @@ -28,13 +28,13 @@ def send_data(self, player: Player): tag = CompoundTag() tag.set("id", self.menu.type.block_actor_id) tag.set("CustomName", self.menu.name) - pk = BlockActorDataPacket(NetworkBlockPosition(p.x, p.y, p.z), tag) + pk = BlockActorDataPacket(BlockPos(p.x, p.y, p.z), tag) player.send_packet(pk.get_packet_id(), pk.serialize()) def open(self, player: Player): from endstone_inventoryui.manager import Session pos, _ = self.pos - net_pos = NetworkBlockPosition(pos.x, pos.y, pos.z) + net_pos = BlockPos(pos.x, pos.y, pos.z) pk = ContainerOpenPacket(Session.CONTAINER_ID, self.menu.type.container_type, net_pos) player.send_packet(pk.get_packet_id(), pk.serialize()) diff --git a/src/endstone_inventoryui/menu/inventory.py b/src/endstone_inventoryui/menu/inventory.py index 90fd8f4..e31c19b 100644 --- a/src/endstone_inventoryui/menu/inventory.py +++ b/src/endstone_inventoryui/menu/inventory.py @@ -1,6 +1,6 @@ from typing import overload, Callable -from endstone._internal.endstone_python import ItemStack +from endstone.inventory import ItemStack from endstone_inventoryui.util.item_utils import clone_item @@ -71,8 +71,10 @@ def add_item(self, *args: ItemStack) -> dict[int, ItemStack]: min(self._max_stack_size, slot_item.max_stack_size) - slot_item.amount) if max_add > 0: slot_item.amount += max_add - remaining.amount -= max_add self._notify_slot_update(slot_idx) + if remaining.amount == max_add: + break + remaining.amount -= max_add for slot_idx in range(self._size): if remaining.amount <= 0: @@ -83,6 +85,8 @@ def add_item(self, *args: ItemStack) -> dict[int, ItemStack]: new_item = clone_item(remaining) new_item.amount = max_add self._slots[slot_idx] = new_item + if remaining.amount == max_add: + break remaining.amount -= max_add self._notify_slot_update(slot_idx) if remaining.amount > 0: diff --git a/src/endstone_inventoryui/menu/menu.py b/src/endstone_inventoryui/menu/menu.py index acc7688..c47f172 100644 --- a/src/endstone_inventoryui/menu/menu.py +++ b/src/endstone_inventoryui/menu/menu.py @@ -1,8 +1,7 @@ from typing import Optional, Callable, TYPE_CHECKING from endstone import Player -from endstone._internal.endstone_python import ItemStack - +from endstone.inventory import ItemStack from endstone_inventoryui.manager.player_manager import find_session, create_session from endstone_inventoryui.menu.inventory import UIInventory from endstone_inventoryui.menu.menu_type import MenuType diff --git a/src/endstone_inventoryui/network/item_stack_wrapper.py b/src/endstone_inventoryui/network/item_stack_wrapper.py index f84bd25..c29a0d5 100644 --- a/src/endstone_inventoryui/network/item_stack_wrapper.py +++ b/src/endstone_inventoryui/network/item_stack_wrapper.py @@ -1,7 +1,6 @@ from bedrock_protocol.packets.types import ItemData from bstream import BinaryStream -from endstone._internal.endstone_python import ItemStack - +from endstone.inventory import ItemStack from endstone_inventoryui.util.item_utils import build_tag from endstone_inventoryui.util.item_utils import is_air diff --git a/src/endstone_inventoryui/util/item_utils.py b/src/endstone_inventoryui/util/item_utils.py index 063c546..e25bffe 100644 --- a/src/endstone_inventoryui/util/item_utils.py +++ b/src/endstone_inventoryui/util/item_utils.py @@ -1,7 +1,7 @@ from ctypes import c_int16 from bedrock_protocol.packets.types import ItemData -from endstone._internal.endstone_python import ItemStack, ItemMeta +from endstone.inventory import ItemStack, ItemMeta from rapidnbt import CompoundTag, ListTag enchant_map = { diff --git a/src/endstone_inventoryui/util/utils.py b/src/endstone_inventoryui/util/utils.py index a11829c..40d38fa 100644 --- a/src/endstone_inventoryui/util/utils.py +++ b/src/endstone_inventoryui/util/utils.py @@ -2,7 +2,7 @@ import random from bedrock_protocol.packets.packet import UpdateBlockPacket -from bedrock_protocol.packets.types import BlockPos, NetworkBlockPosition +from bedrock_protocol.packets.types import BlockPos from endstone import Player, Server from endstone_inventoryui.network.network_stack_latency_packet import NetworkStackLatencyPacket @@ -25,7 +25,7 @@ def send_ack_packet(player: Player) -> int: def send_block(player: Player, name: str, pos: BlockPos): block_data = player.server.create_block_data(name) - pk = UpdateBlockPacket(NetworkBlockPosition(pos.x, pos.y, pos.z), block_data.runtime_id, 0b0010, 0) + pk = UpdateBlockPacket(BlockPos(pos.x, pos.y, pos.z), block_data.runtime_id, 0b0010, 0) player.send_packet(pk.get_packet_id(), pk.serialize())