Что то я пытался сделать, сразу говорю, чать этого кода делал ЧатГПТ.
Код работает так, как не должен. Кто сможет помочь?
Код
class LlamaInventory extends BaseInventory{
protected Llama $holder;
public function __construct(Llama $holder, array $items = []){
$this->holder = $holder;
parent::__construct($items, $this->getDefaultSize(), "Llama");
}
public function getName(): string{
return "Llama";
}
public function getNetworkType(): int{
return WindowTypes::LLAMA;
}
public function getDefaultSize(): int{
return $this->holder->hasChest() ? 10 : 1;
}
public function getCarpet(): Item{
return $this->getItem(0);
}
public function onOpen(Player $who): void{
parent::onOpen($who);
$pk = new UpdateEquipPacket();
$pk->entityUniqueId = $this->holder->getId();
$pk->windowType = $this->getNetworkType();
$pk->windowId = $who->getWindowId($this);
$pk->windowSlotCount = 0;
$pk->namedtag = (new NetworkLittleEndianNBTStream())
->write($this->getNamedtag($who->getProtocolVersion()));
$who->sendDataPacket($pk);
$this->sendContents($who);
}
public function onClose(Player $who): void{
$pk = new ContainerClosePacket();
$pk->windowId = $who->getWindowId($this);
$pk->windowType = $who->getCurrentWindowType();
$pk->server = false;
$who->sendDataPacket($pk);
parent::onClose($who);
}
public function getNamedtag(int $protocol): CompoundTag{
return $protocol >= ProtocolInfo::PROTOCOL_407
? $this->getModernNamedtag()
: $this->getLegacyNamedtag();
}
protected function getModernNamedtag(): CompoundTag{
$slots = [];
// SLOT 0 — CARPET
$slots[] = new CompoundTag("", [
new IntTag("slotNumber", 0),
new ListTag("acceptedItems", [
new CompoundTag("", [
new CompoundTag("slotItem", [
new StringTag("Name", "minecraft:carpet"),
new ShortTag("Aux", 32767)
])
])
]),
$this->getItem(0)->isNull()
? null
: $this->getItem(0)->nbtSerialize(-1, "item")
]);
// STORAGE SLOTS 1–9 (ТОЛЬКО ЕСЛИ СУНДУК)
if($this->holder->hasChest()){
for($i = 1; $i <= 9; $i++){
$slots[] = new CompoundTag("", [
new IntTag("slotNumber", $i),
$this->getItem($i)->nbtSerialize(-1, "item")
]);
}
}
return new CompoundTag("", [
new ListTag("slots", $slots)
]);
}
protected function getLegacyNamedtag(): CompoundTag{
$slots = [];
// SLOT 0 — CARPET
$slots[] = new CompoundTag("", [
new IntTag("slotNumber", 0),
$this->getItem(0)->nbtSerialize(-1, "item")
]);
// STORAGE SLOTS 1–9
if($this->holder->hasChest()){
for($i = 1; $i <= 9; $i++){
$slots[] = new CompoundTag("", [
new IntTag("slotNumber", $i),
$this->getItem($i)->nbtSerialize(-1, "item")
]);
}
}
return new CompoundTag("", [
new ListTag("slots", $slots)
]);
}
public function getHolder(): Llama{
return $this->holder;
}
}
Нет сундука: + нету иконки “Ковра” в слоте как в ванили,
Есть сундук, но слоты не справа 3х3 а вот так вот:

