• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Java Ärgert... Problem mit getDisplayName

AntiThunder

Minecrafter
Registriert
28 November 2019
Beiträge
28
Diamanten
300
so, damit die Codesüchtigen Aus dem Discord glücklich sind schildere ich mal mein Problem:
Ich will das etwas nur dann passiert, wenn ein Item einen bestimmten Displayname hat. das frage ich in folgendem Code in Zeile 29 bis 33 ab.
Java:
package de.reallifeintoleranz.zoneprotector;

import org.bukkit.ChatColor;
import org.bukkit.Location;
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.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.util.Vector;


public class PlayerListener implements Listener{
    Vector pos1 = new Vector();
    Vector pos2 = new Vector();
    public PlayerListener(ZoneProtector plugin){

        plugin.getServer().getPluginManager().registerEvents(this, plugin);

    }
    @EventHandler
    public void  onclick(PlayerInteractEvent e){
        Action action = e.getAction();
        Block block = e.getClickedBlock();
        Player player = e.getPlayer();
        ItemStack item = player.getInventory().getItemInMainHand();
        ItemMeta m = item.getItemMeta();
        String s = m.getDisplayName();

        if (s == ChatColor.DARK_BLUE + "Zonenwerkzeug") {

            if (action == Action.LEFT_CLICK_BLOCK) {

                Location location = block.getLocation();
                Vector vector = new Vector(location.getX(), location.getY(), location.getZ());
                pos1 = vector;
                player.sendMessage(ChatColor.AQUA + "Die erste Position wurde auf " + pos1 + " gesetzt");

            }

            if (action == Action.RIGHT_CLICK_BLOCK) {

                Location location = block.getLocation();
                Vector vector = new Vector(location.getX(), location.getY(), location.getZ());
                pos2 = vector;
                player.sendMessage(ChatColor.AQUA + "Die zweite Position wurde auf " + pos2 + " gesetzt");

            }
        }
    }
}

Da 3 Leute im Discord meinen dass es nur an meiner Dummheit liegt sollte das hier schnell gelöst sein

MfG
Anti | Nils
 

JTK222

Threadripper
Registriert
5 September 2013
Beiträge
1.150
Diamanten
323
Minecraft
JTK222
Du vergleichst Strings mit == was so nicht geht.
Benutz die equals methode.

P.s. wenn du es genau willst hatten die aus dem Discord recht :p
Dass ist mehr oder weniger eine Java Grundlage.
Dass liegt daran dass jeder String der Dynamisch erstellt wird ein neues Object wird.
Und == vergleicht nur ob das Objekt das gleiche ist.
Java:
String x = "H";
"Hallo" == "Hallo"; //Nicht dynamisch also True
"Hallo" == x + "allo"; //False
(Wortwahl ist mit Vorsicht zu genießen, habe die ganzen Fachbegriffe diesbezüglich verlernt.
 
Zuletzt bearbeitet:
Oben