77use muqsit \invmenu \inventory \InvMenuInventory ;
88use muqsit \invmenu \InvMenu ;
99use muqsit \invmenu \type \graphic \BlockActorInvMenuGraphic ;
10+ use muqsit \invmenu \type \graphic \BlockInvMenuGraphic ;
1011use muqsit \invmenu \type \graphic \InvMenuGraphic ;
1112use muqsit \invmenu \type \graphic \MultiBlockInvMenuGraphic ;
1213use muqsit \invmenu \type \graphic \network \InvMenuGraphicNetworkTranslator ;
1314use muqsit \invmenu \type \util \InvMenuTypeHelper ;
1415use pocketmine \block \Block ;
1516use pocketmine \block \tile \Chest ;
17+ use pocketmine \block \VanillaBlocks ;
1618use pocketmine \inventory \Inventory ;
19+ use pocketmine \math \Facing ;
1720use pocketmine \player \Player ;
1821
1922final class DoublePairableBlockActorFixedInvMenuType implements FixedInvMenuType{
@@ -31,17 +34,19 @@ public function getSize() : int{
3134 }
3235
3336 public function createGraphic (InvMenu $ menu , Player $ player ) : ?InvMenuGraphic {
34- $ origin = $ player ->getPosition ()->addVector (InvMenuTypeHelper::getBehindPositionOffset ($ player ))->floor ();
37+ $ position = $ player ->getPosition ();
38+ $ origin = $ position ->addVector (InvMenuTypeHelper::getBehindPositionOffset ($ player ))->floor ();
3539 if (!InvMenuTypeHelper::isValidYCoordinate ($ origin ->y )){
3640 return null ;
3741 }
3842
3943 $ graphics = [];
4044 $ menu_name = $ menu ->getName ();
45+ $ world = $ position ->getWorld ();
4146 foreach ([
42- [$ origin , $ origin ->east ()],
43- [$ origin ->east (), $ origin ]
44- ] as [$ origin_pos , $ pair_pos ]){
47+ [$ origin , $ origin ->east (), [Facing:: NORTH , Facing:: SOUTH , Facing:: WEST ] ],
48+ [$ origin ->east (), $ origin, [Facing:: NORTH , Facing:: SOUTH , Facing:: EAST ] ]
49+ ] as [$ origin_pos , $ pair_pos, $ connected_sides ]){
4550 $ graphics [] = new BlockActorInvMenuGraphic (
4651 $ this ->block ,
4752 $ origin_pos ,
@@ -51,6 +56,9 @@ public function createGraphic(InvMenu $menu, Player $player) : ?InvMenuGraphic{
5156 $ this ->network_translator ,
5257 $ this ->animation_duration
5358 );
59+ foreach (InvMenuTypeHelper::findConnectedBlocks ("Chest " , $ world , $ origin_pos , $ connected_sides ) as $ side ){
60+ $ graphics [] = new BlockInvMenuGraphic (VanillaBlocks::BARRIER (), $ side );
61+ }
5462 }
5563
5664 return count ($ graphics ) > 1 ? new MultiBlockInvMenuGraphic ($ graphics ) : $ graphics [0 ];
0 commit comments