1. Go to this page and download the library: Download muqsit/invmenu library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
muqsit / invmenu example snippets
> // in class MyPlugin extends PluginBase:
> protected function onEnable() : void{
> if(!InvMenuHandler::isRegistered()){
> InvMenuHandler::register($this);
> }
> }
## Create a virtual inventory
Quick start, use `InvMenu::create(InvMenu::TYPE_CHEST)->send($player);` to display a virtual chest inventory to a player.
`InvMenu::create($identifier)` creates an InvMenu instance. `$identifier` may be an identifier of a registered `InvMenuType` object.
InvMenu comes with 3 pre-registered inventory types of different sizes:
- `InvMenu::TYPE_CHEST` - a 27-slot normal chest inventory
- `InvMenu::TYPE_DOUBLE_CHEST` - a 54-slot double chest inventory
- `InvMenu::TYPE_HOPPER` - a 5-slot hopper inventory
$menu->setListener(function(InvMenuTransaction $transaction) : InvMenuTransactionResult{
if($transaction->getItemClicked()->getTypeId() === ItemTypeIds::APPLE){
$player->sendMessage("You cannot take apples out of that inventory.");
return $transaction->discard();
}
return $transaction->continue();
});
$menu->setListener(function(InvMenuTransaction $transaction) : InvMenuTransactionResult{
return $transaction->discard();
});
$menu->setListener(InvMenu::readonly()); // equivalent shorthand of the above
// you can also pass a callback in InvMenu::readonly()
$menu->setListener(InvMenu::readonly(function(DeterministicInvMenuTransaction $transaction) : void{
// do something
}));
$menu->setListener(function(InvMenuTransaction $transaction) : InvMenuTransactionResult{
$transaction->getPlayer()->removeCurrentWindow();
return $transaction->discard()->then(function(Player $player) : void{
$player->sendForm(new Form());
});
});
// or if you are using InvMenu::readonly():
$menu->setListener(InvMenu::readonly(function(DeterministicInvMenuTransaction $transaction) : void{
$transaction->getPlayer()->removeCurrentWindow();
$transaction->then(function(Player $player) : void{
$player->sendForm(new Form());
});
}));
/**
* @param Player $player the player that closed the menu
* @param Inventory $inventory the inventory of the menu
*/
Closure(Player $player, Inventory $inventory) : void;
$menu->setInventoryCloseListener(function(Player $player, Inventory $inventory) : void{
$player->sendMessage("You are no longer viewing the menu.");
});
public const TYPE_DISPENSER = "myplugin:dispenser";
protected function onEnable() : void{
InvMenuHandler::getTypeRegistry()->register(self::TYPE_DISPENSER, InvMenuTypeBuilders::BLOCK_ACTOR_FIXED()
->setBlock(ExtraVanillaBlocks::DISPENSER())
->setSize(9)
->setBlockActorId("Dispenser")
->setNetworkWindowType(WindowTypes::DISPENSER)
->build());
}
$menu = InvMenu::create(self::TYPE_DISPENSER);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.