mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-28 05:35:40 +00:00
previously, these were forced to extend BaseInventory because of the amount of crap in Inventory's interface. This meant that these inventories had their own slots storage, which would be _mostly_ unused because these inventories aren't real inventories, but rather just delegates. This lead to a variety of bugs in the past, such as certain API methods on BaseInventory not working correctly for DoubleChestInventory in particular. Now, BaseInventory just implements the functional part of the inventory implementation, leaving the storage system up to the implementation. A SimpleInventory class is provided with a simple SplFixedArray storage backing, which is used by most inventories. EnderChestInventory and DoubleChestInventory now extend BaseInventory directly, and implement custom methods for dealing with their delegates.
79 lines
1.9 KiB
PHP
79 lines
1.9 KiB
PHP
<?php
|
|
|
|
/*
|
|
*
|
|
* ____ _ _ __ __ _ __ __ ____
|
|
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
|
|
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
|
|
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
|
|
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* @author PocketMine Team
|
|
* @link http://www.pocketmine.net/
|
|
*
|
|
*
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace pocketmine\inventory;
|
|
|
|
use pocketmine\entity\Living;
|
|
use pocketmine\item\Item;
|
|
|
|
class ArmorInventory extends SimpleInventory{
|
|
public const SLOT_HEAD = 0;
|
|
public const SLOT_CHEST = 1;
|
|
public const SLOT_LEGS = 2;
|
|
public const SLOT_FEET = 3;
|
|
|
|
/** @var Living */
|
|
protected $holder;
|
|
|
|
public function __construct(Living $holder){
|
|
$this->holder = $holder;
|
|
parent::__construct(4);
|
|
}
|
|
|
|
public function getHolder() : Living{
|
|
return $this->holder;
|
|
}
|
|
|
|
public function getHelmet() : Item{
|
|
return $this->getItem(self::SLOT_HEAD);
|
|
}
|
|
|
|
public function getChestplate() : Item{
|
|
return $this->getItem(self::SLOT_CHEST);
|
|
}
|
|
|
|
public function getLeggings() : Item{
|
|
return $this->getItem(self::SLOT_LEGS);
|
|
}
|
|
|
|
public function getBoots() : Item{
|
|
return $this->getItem(self::SLOT_FEET);
|
|
}
|
|
|
|
public function setHelmet(Item $helmet) : void{
|
|
$this->setItem(self::SLOT_HEAD, $helmet);
|
|
}
|
|
|
|
public function setChestplate(Item $chestplate) : void{
|
|
$this->setItem(self::SLOT_CHEST, $chestplate);
|
|
}
|
|
|
|
public function setLeggings(Item $leggings) : void{
|
|
$this->setItem(self::SLOT_LEGS, $leggings);
|
|
}
|
|
|
|
public function setBoots(Item $boots) : void{
|
|
$this->setItem(self::SLOT_FEET, $boots);
|
|
}
|
|
}
|