Время чат гпт...
Возможно дальше написана дичь, но это не я писал.
Для создания GUI в плагине Minecraft вам понадобится использовать API Bukkit/Spigot, который предоставляет необходимые инструменты для работы с интерфейсами пользователя.
Пример создания GUI без возможности вытаскивания вещей и с поддержкой HEX цветов:
public class ExampleGUI implements InventoryHolder {
private Inventory inventory;
public ExampleGUI() {
// Создаем GUI с 27 ячейками и заголовком "Пример GUI"
this.inventory = Bukkit.createInventory(this, 27, ChatColor.translateAlternateColorCodes('&', "Пример GUI"));
// Добавляем предметы в инвентарь
inventory.addItem(new ItemStack(Material.DIAMOND), new ItemStack(Material.GOLD_INGOT), new ItemStack(Material.IRON_INGOT));
}
@Override
public Inventory getInventory() {
return inventory;
}
public void openGUI(Player player) {
// Открываем GUI для игрока
player.openInventory(inventory);
}
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
// Отменяем возможность вытаскивания предметов из GUI
if (event.getInventory().getHolder() instanceof ExampleGUI) {
event.setCancelled(true);
}
}
}
Тута сломался чат пришло перегенрить и он выдал еще один альтернативный код...
public class MyPlugin extends JavaPlugin implements Listener {
private Inventory myGui;
@Override
public void onEnable() {
// создание GUI
myGui = Bukkit.createInventory(null, 9, "My GUI");
// добавление предметов в GUI
ItemStack item = new ItemStack(Material.DIAMOND);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(ChatColor.GREEN + "Diamond");
item.setItemMeta(meta);
myGui.addItem(item);
// регистрация обработчика событий
getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
// открытие GUI при нажатии правой кнопки мыши на блоке
event.getPlayer().openInventory(myGui);
}
}
}
В этом примере создается GUI, содержащий один предмет - алмаз, и открывается при нажатии правой кнопки мыши на блоке. Обратите внимание, что в примере не предусмотрено перемещение предметов в инвентаре.
Чтобы изменять/получать NBT у сущности, можно использовать классы NBTTagCompound и NBTTagList из библиотеки NBT. Например, чтобы установить NBT тэг "MyTag" у сущности "entity", можно использовать следующий код:
NBTTagCompound nbt = new NBTTagCompound();
nbt.setString("MyTag", "Hello world!");
((CraftEntity) entity).getHandle().load(nbt);
А чтобы получить значение NBT тэга "MyTag" у сущности "entity":
NBTTagCompound nbt = ((CraftEntity) entity).getHandle().save(new NBTTagCompound());
String myTagValue = nbt.getString("MyTag");