Инвентарь для ламы

Что то я пытался сделать, сразу говорю, чать этого кода делал ЧатГПТ.

Код работает так, как не должен. Кто сможет помочь?

Код

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 а вот так вот:

так это создается фейк энтити вроде нет? когда и так уже есть энтити настоящий. Мне нужно именно как в моем коде пример, LlamaInventory т.к это я в ядро пихаю, не плагином.

кто сможет помочь? или хоть подсказать какие методы юзать, или для ламы вообще невозможно в ядре сделать сундук в GUI ?

Все возможно, главное нужно уметь

помоги если не трудно

Он написал тебе что всё возможно, а не “Да, я умею”

Это ладно, тогда кто подскажет как сделать ковер ламе? какой то дата флаг мб?

или это через варианты лам делается?

Какая разница, посмотри реализацию там

мне уже не нужны инвентари, мне ковры для ламы нужны, именно внешку его как поменять под ковер.

лама наследует лошадь, следовательно используй нбт сущности ChestedHorse чтобы отображать сундук на ламе
можешь менять цвет ламы с помощью нбтшки Variant (см. здесь). так же нбт для ковров DecorItem

короче дохера всего есть, судя по некоторым реализациям наккита нбтшки соответствуют с этими

Эта тема была автоматически закрыта через 12 часов после последнего ответа. В ней больше нельзя отвечать.