Rechtsklick auf Block = GUI, wie?
ich will in einem Listener schreiben, das wenn ich einen CAULDRON (Kessel) rechtsklicke sich ein inventar erstellt, wie man das Inventar erstellt weiß ich aber wie kann ich es öffnen lassen durch den rechtsklick auf den Kessel?
(Java, Intellij IDEA, Minecraft Java Edition)
2 Antworten
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/
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