Creating a Basic Button
In this section, you'll learn how to create a basic custom button using zMenu.
Goal
We will create a button that sends a message to the player when clicked. The button is registered with the name BASIC_EXAMPLE
.
Step 1: Create the Button Class
Create a class BasicButton
that extends Button
:
import fr.maxlego08.menu.api.button.Button;
import fr.maxlego08.menu.api.engine.InventoryEngine;
import fr.maxlego08.menu.api.utils.Placeholders;
import net.kyori.adventure.text.Component;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
public class BasicButton extends Button {
private final String key;
public BasicButton(String key) {
this.key = key;
}
@Override
public void onClick(Player player, InventoryClickEvent event, InventoryEngine inventory, int slot, Placeholders placeholders) {
super.onClick(player, event, inventory, slot, placeholders);
player.sendMessage(Component.text("Hey, it's nice to meet you! Button key: ").append(Component.text(key)));
}
@Override
public boolean isPermanent() {
return true;
}
}
Step 2: Create a Loader
A loader allows zMenu to instantiate your button from a configuration file.
import fr.maxlego08.example.buttons.BasicButton;
import fr.maxlego08.menu.api.button.Button;
import fr.maxlego08.menu.api.button.DefaultButtonValue;
import fr.maxlego08.menu.api.loader.ButtonLoader;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.Plugin;
public class BasicLoader extends ButtonLoader {
public BasicLoader(Plugin plugin) {
super(plugin, "BASIC_EXAMPLE");
}
@Override
public Button load(YamlConfiguration configuration, String path, DefaultButtonValue defaultButtonValue) {
String key = configuration.getString(path + "key-example", "default key");
return new BasicButton(key);
}
}
Step 3: Register the Loader
In your plugin’s onEnable()
method, register the loader:
buttonManager.register(new BasicLoader(this));
Step 4: Use It in an Inventory
Example usage in inventories/example.yml
:
basic:
type: BASIC_EXAMPLE
slot: 10
key-example: basic
item:
material: DIAMOND
name: "&7Basic"
Result
When a player clicks the button, they will receive a message like:
Hey, it's nice to meet you! Button key: basic
Last updated