41 public const TAG_PAIRX =
"pairx";
42 public const TAG_PAIRZ =
"pairz";
43 public const TAG_PAIR_LEAD =
"pairlead";
52 private ?array $pairXZ =
null;
55 parent::__construct($world, $pos);
59 public function readSaveData(
CompoundTag $nbt) :
void{
60 if(($pairXTag = $nbt->
getTag(self::TAG_PAIRX)) instanceof
IntTag && ($pairZTag = $nbt->
getTag(self::TAG_PAIRZ)) instanceof
IntTag){
61 $pairX = $pairXTag->getValue();
62 $pairZ = $pairZTag->getValue();
64 ($this->position->x === $pairX && abs($this->position->z - $pairZ) === 1) ||
65 ($this->position->z === $pairZ && abs($this->position->x - $pairX) === 1)
67 $this->pairXZ = [$pairX, $pairZ];
72 $this->loadName($nbt);
73 $this->loadItems($nbt);
77 if($this->pairXZ !== null){
78 [$pairX, $pairZ] = $this->pairXZ;
79 $nbt->
setInt(self::TAG_PAIRX, $pairX);
80 $nbt->
setInt(self::TAG_PAIRZ, $pairZ);
82 $this->saveName($nbt);
83 $this->saveItems($nbt);
87 $tag = parent::getCleanedNBT();
90 $tag->removeTag(self::TAG_PAIRX, self::TAG_PAIRZ);
95 public function close() : void{
97 $this->inventory->removeAllWindows();
102 public function getInventory() : Inventory{
103 return $this->inventory;
106 public function getRealInventory() : Inventory{
107 return $this->inventory;
110 public function getDefaultName() : string{
119 return $this->pairXZ;
127 $this->pairXZ = $pairXZ;
131 if($this->pairXZ !== null){
132 $nbt->
setInt(self::TAG_PAIRX, $this->pairXZ[0]);
133 $nbt->
setInt(self::TAG_PAIRZ, $this->pairXZ[1]);
136 $this->addNameSpawnData($nbt);