mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-09 11:16:57 +00:00
this allows getting rid of several container window classes. we should probably look into adding more info to the BlockInventoryWindow to make the type easier to identify, though. now that holder is tracked by an ephemeral window, we can put whatever we like in there.
60 lines
1.6 KiB
PHP
60 lines
1.6 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\block\inventory\window;
|
|
|
|
use pocketmine\block\utils\AnimatedContainer;
|
|
use pocketmine\inventory\Inventory;
|
|
use pocketmine\player\InventoryWindow;
|
|
use pocketmine\player\Player;
|
|
use pocketmine\world\Position;
|
|
|
|
class BlockInventoryWindow extends InventoryWindow{
|
|
|
|
public function __construct(
|
|
Player $viewer,
|
|
Inventory $inventory,
|
|
protected Position $holder
|
|
){
|
|
parent::__construct($viewer, $inventory);
|
|
}
|
|
|
|
public function getHolder() : Position{ return $this->holder; }
|
|
|
|
public function onOpen() : void{
|
|
parent::onOpen();
|
|
$block = $this->holder->getWorld()->getBlock($this->holder);
|
|
if($block instanceof AnimatedContainer){
|
|
$block->onContainerOpen();
|
|
}
|
|
}
|
|
|
|
public function onClose() : void{
|
|
$block = $this->holder->getWorld()->getBlock($this->holder);
|
|
if($block instanceof AnimatedContainer){
|
|
$block->onContainerClose();
|
|
}
|
|
parent::onClose();
|
|
}
|
|
}
|