mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-10-16 19:59:11 +00:00
Unfuck banners ...
This commit is contained in:
@@ -26,8 +26,8 @@ namespace pocketmine\item;
|
||||
use pocketmine\block\Block;
|
||||
use pocketmine\block\tile\Banner as TileBanner;
|
||||
use pocketmine\block\utils\BannerPatternLayer;
|
||||
use pocketmine\block\utils\BannerPatternType;
|
||||
use pocketmine\block\utils\DyeColor;
|
||||
use pocketmine\data\bedrock\BannerPatternTypeIdMap;
|
||||
use pocketmine\data\bedrock\DyeColorIdMap;
|
||||
use pocketmine\nbt\tag\CompoundTag;
|
||||
use pocketmine\nbt\tag\ListTag;
|
||||
@@ -100,12 +100,17 @@ class Banner extends ItemBlockWallOrFloor{
|
||||
$this->patterns = [];
|
||||
|
||||
$colorIdMap = DyeColorIdMap::getInstance();
|
||||
$patternIdMap = BannerPatternTypeIdMap::getInstance();
|
||||
$patterns = $tag->getListTag(self::TAG_PATTERNS);
|
||||
if($patterns !== null){
|
||||
/** @var CompoundTag $t */
|
||||
foreach($patterns as $t){
|
||||
$patternColor = $colorIdMap->fromInvertedId($t->getInt(self::TAG_PATTERN_COLOR)) ?? DyeColor::BLACK(); //TODO: missing pattern colour should be an error
|
||||
$this->patterns[] = new BannerPatternLayer(BannerPatternType::fromString($t->getString(self::TAG_PATTERN_NAME)), $patternColor);
|
||||
$patternType = $patternIdMap->fromId($t->getString(self::TAG_PATTERN_NAME));
|
||||
if($patternType === null){
|
||||
continue; //TODO: this should be an error
|
||||
}
|
||||
$this->patterns[] = new BannerPatternLayer($patternType, $patternColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -116,9 +121,10 @@ class Banner extends ItemBlockWallOrFloor{
|
||||
if(count($this->patterns) > 0){
|
||||
$patterns = new ListTag();
|
||||
$colorIdMap = DyeColorIdMap::getInstance();
|
||||
$patternIdMap = BannerPatternTypeIdMap::getInstance();
|
||||
foreach($this->patterns as $pattern){
|
||||
$patterns->push(CompoundTag::create()
|
||||
->setString(self::TAG_PATTERN_NAME, $pattern->getType()->getPatternId())
|
||||
->setString(self::TAG_PATTERN_NAME, $patternIdMap->toId($pattern->getType()))
|
||||
->setInt(self::TAG_PATTERN_COLOR, $colorIdMap->toInvertedId($pattern->getColor()))
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user