Code Patterns
Copy-paste examples for common plugin tasks. Commands, events, ECS, GUI, and more.
All
225
Command
60
Damage
2
Ecs
27
Entity
5
Gui
75
Interaction
2
Inventory
4
Moderation
3
Permission
2
Player
9
Plugin
4
Storage
2
Teleport
3
Ui
22
Util
5
← Back to Patterns
java
interaction
Configurable Item Interactions
Per-player configurable actions for custom item interactions
Example Code
public class AdminStickCustomConfig extends BlockingDiskFile {
public HashMap<UUID, Config> config = new HashMap<>();
public AdminStickCustomConfig() {
super(Path.of("MyPlugin/StickConfig.json"));
}
public Config getPlayer(UUID uuid) {
if (!this.config.containsKey(uuid)) {
addPlayer(uuid, new Config("", "default1", "default2", "", "", ""));
}
return this.config.get(uuid);
}
public void addPlayer(UUID uuid, Config config) {
this.fileLock.writeLock().lock();
this.config.put(uuid, config);
this.fileLock.writeLock().unlock();
this.syncSave();
}
public static class Config {
private String ability1, ability2, ability3;
private String primary, secondary, pick;
// Constructor, getters, setters...
}
}
// In interaction handler:
var config = plugin.getStickConfig().getPlayer(playerRef.getUuid());
String actionId = switch (interactionType) {
case Primary -> config.primary();
case Secondary -> config.secondary();
case Ability1 -> config.ability1();
case Ability2 -> config.ability2();
case Ability3 -> config.ability3();
case Pick -> config.pick();
};
if (!actionId.isEmpty()) {
var entry = Registry.getInstance().getEntry(actionId);
if (entry != null) {
player.getPageManager().openCustomPage(ref, store, entry.guiSupplier().apply(playerRef));
}
}