Rechtsklick auf Block = GUI, wie?

2 Antworten

Von Experte Brockdish bestätigt

Vielleicht habe ich hier etwas für dich gefunden

du müsstest halt noch den Block auf den Cauldron ändern und hier und da noch ein paar sachen rausschmeissen.


package me.samtmh.Test3.Events;

import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.EquipmentSlot;

import net.md_5.bungee.api.ChatColor;

public class EventsClass implements Listener {
    @SuppressWarnings("deprecation")

    @EventHandler
    public void onInteract(PlayerInteractEvent event) {
        Action action = event.getAction();
        Player player = event.getPlayer();
        Block block = event.getClickedBlock();

        if (event.getHand() == EquipmentSlot.HAND) {
            if (action.equals(Action.LEFT_CLICK_BLOCK)) {
                if (block.getType().equals(Material.EMERALD_BLOCK)) {
                    if (player.getHealth() != player.getMaxHealth()) {
                        player.setHealth(player.getHealth() + 1);
                        player.sendMessage(ChatColor.GREEN + "You have been healed");
                    } else {
                        player.sendMessage(ChatColor.GOLD + "You have full health");
                    }
                } else {
                    player.sendMessage(
                            ChatColor.RED + "You clicked: " + ChatColor.RED + block.getType().toString().toUpperCase());
                }
            }
            if (event.getHand() == EquipmentSlot.HAND) {
                if (action.equals(Action.RIGHT_CLICK_BLOCK)) {
                    if (block.getType().equals(Material.EMERALD_BLOCK)) {
                        if (player.getHealth() != player.getMaxHealth()) {
                            player.setHealth(player.getHealth() + 1);
                            player.sendMessage(ChatColor.GREEN + "You have been healed");
                        } else {
                            player.sendMessage(ChatColor.GOLD + "You have full health");
                        }
                    } else {
                        player.sendMessage(ChatColor.RED + "You clicked: " + ChatColor.RED
                                + block.getType().toString().toUpperCase());
                    }
                }
            }
        }
    }
}

https://bukkit.org/threads/left-click-block-right-click-block.472255/

Woher ich das weiß:Studium / Ausbildung – Studium im Bereich IT
CorruptedSystem  04.07.2021, 09:52

Da wird doch gar kein GUI erstellt und keins geöffnet.

0

Hallo,

Ein Inventar kannst allgemein gesagt mit Player#openInventory() öffnen. Wenn du ein Inventar bei einem Klick auf einen Block, also bei einer Interaktion, öffnen möchtest, musst du dazu das PlayerInteractEvent verwenden.

Beachte aber, dass du am besten noch einige Sachen anfragst, damit du dir sicher bist, dass dies ein Rechtsklick war und auch der Block ein Kessel ist.

Viele Grüße

Woher ich das weiß:eigene Erfahrung