Coding mit Java | Java-basierten APIs

  • Ersteller Ersteller ij9F_i0FaF-d9lrDSDDpDbfo
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
Die Methode matchMaterial returnt null, falls ein falscher Wert eingegeben wurde. Also überprüfst du einfach, ob das Material null ist und sendest dem Spieler die Fehlermeldung, falls das der Fall ist.
Geht leider nicht oder ich habe es falsch gemacht.
Code:
if (cmd.getName().equalsIgnoreCase("Hut"))
        {
            //Wenn ein Item eingegebn wird
            if (args.length == 1)
            {
                ItemStack txt = new ItemStack(Material.matchMaterial(args[0]));
                if (txt == null)
                {
                    p.sendMessage(prefix + ChatColor.RED + "Du hast das Item falsch geschrieben!");
                }
                else
                {
                    p.getInventory().setHelmet(txt);
                }
            }

            //Wenn kein Item eingegeben wird.
            else
            {
                ItemStack hi = p.getInventory().getItemInHand();
                p.getInventory().setHelmet(hi);
            }

        }
 
Geht leider nicht oder ich habe es falsch gemacht.
Code:
if (cmd.getName().equalsIgnoreCase("Hut"))
        {
            //Wenn ein Item eingegebn wird
            if (args.length == 1)
            {
                ItemStack txt = new ItemStack(Material.matchMaterial(args[0]));
                if (txt == null)
                {
                    p.sendMessage(prefix + ChatColor.RED + "Du hast das Item falsch geschrieben!");
                }
                else
                {
                    p.getInventory().setHelmet(txt);
                }
            }

            //Wenn kein Item eingegeben wird.
            else
            {
                ItemStack hi = p.getInventory().getItemInHand();
                p.getInventory().setHelmet(hi);
            }

        }
Du überprüfst du nur, ob der ItemStack null ist, aber da du ihn davor bereits gesetzt hast, ist er's in keinem Fall. Speicher am besten das Material in einer extra Variable und überprüf, ob sie null ist.
 
Du überprüfst du nur, ob der ItemStack null ist, aber da du ihn davor bereits gesetzt hast, ist er's in keinem Fall. Speicher am besten das Material in einer extra Variable und überprüf, ob sie null ist.
Ich galube ich sollte mich noch mal besser über Java und Bukkit informieren... Wenn ich eine Material variabel probiere zu erstellen, dann steht da "Material has private access in org.bukkit.Material"
 
Ich galube ich sollte mich noch mal besser über Java und Bukkit informieren... Wenn ich eine Material variabel probiere zu erstellen, dann steht da "Material has private access in org.bukkit.Material"
Nein, nein, du sollst auch kein neues Material erstellen. Ich meinte es eher so:
Code:
Material material = Material.matchMaterial(args[0]);
if (material == null) {
// Fehlermeldung
}
und so weiter.
 
Nein, nein, du sollst auch kein neues Material erstellen. Ich meinte es eher so:
Code:
Material material = Material.matchMaterial(args[0]);
if (material == null) {
// Fehlermeldung
}
und so weiter.
@Niki
Vielen herzlichen Dank! Und Entschuldigung, dass ich mich so doof angestellt habe. Ein neues Material zu erstellen war wirklich dumm. Ich bin schließlich nicht Notch.
 
Zuletzt bearbeitet von einem Moderator:
Nein, nein, du sollst auch kein neues Material erstellen. Ich meinte es eher so:
Code:
Material material = Material.matchMaterial(args[0]);
if (material == null) {
// Fehlermeldung
}
und so weiter.
Einfacher wäre:

Code:
Material mat = Material.matchMaterial(args[0]);
if(mat != null)
{...}
else{...Fehlermeldung...}
Da man die Fehlermeldung meist immer nachdem es nicht null ist setzt. Genauso wie try-catch.

BTW... Gab es nicht eine andere Methode für Material(String)?
 
Einfacher wäre:

Code:
Material mat = Material.matchMaterial(args[0]);
if(mat != null)
{...}
else{...Fehlermeldung...}
Da man die Fehlermeldung meist immer nachdem es nicht null ist setzt. Genauso wie try-catch.

BTW... Gab es nicht eine andere Methode für Material(String)?
Falsch. Eher andersrum. Else mag ich nicht ._.
Code:
if(mat == null) {
    //FEHLER
    return;
}

//Aktion
 
Hey, folgendes Problem:
Ich erstelle Potion Break Partikel und zwar diese hier: http://minecraft.gamepedia.com/Data_values#Status_effects Nummer 6. Zuerst habe ich es mit
Code:
p.playEffect(new Location(p.getWorld(),x,y,z), Effect.POTION_BREAK, 5);
gemacht.
Da hierbei aber auch der Potion_Break Sound entsteht, wollte ich es über das Particle-Packet versuchen.
Code:
particle.getStrings().write(0, "instantSpell");
particle.getFloat().write(0, x).write(1, y).write(2, z).write(3, 0F).write(4, 0F).write(5, 0F).write(6, 6F);
particle.getIntegers().write(0, 10);
Wichtig ist hierbei Zeile 2 Index 6.
Egal was ich als "Particle Data" angebe, ich erhalte immer die Standard Partikel (einfach nur weiße Kreuze, wie mein gewünschter Effekt, nur weiß). 6 geht nicht (Value des Effektes), 5 nicht (wie bei PlayEffect). Diese ganze Zeile bei Instant Health auch nicht http://minecraft.gamepedia.com/Potion#Data_value_table
Auch alle anderen Zahlen (z.B. 3) liefern nur die Standard weißen Partikel.

Packetinformation (ist eine alte Version weil in der neuen Version der Seite alles für den 1.8 Server geändert wurde):
http://wiki.vg/index.php?title=Protocol&oldid=5980#Particle

Hat jemand eine Lösung wie ich die gewünschten Partikel (http://minecraft.gamepedia.com/Data_values#Status_effects Nummer 6) erstellen kann ohne Sound?
Also was muss ich bei "Data Value" im Float index 6 angeben? Oder lässt sich der Sound unterdrücken?
 
Hey, folgendes Problem:
Ich erstelle Potion Break Partikel und zwar diese hier: http://minecraft.gamepedia.com/Data_values#Status_effects Nummer 6. Zuerst habe ich es mit
Code:
p.playEffect(new Location(p.getWorld(),x,y,z), Effect.POTION_BREAK, 5);
gemacht.
Da hierbei aber auch der Potion_Break Sound entsteht, wollte ich es über das Particle-Packet versuchen.
Code:
particle.getStrings().write(0, "instantSpell");
particle.getFloat().write(0, x).write(1, y).write(2, z).write(3, 0F).write(4, 0F).write(5, 0F).write(6, 6F);
particle.getIntegers().write(0, 10);
Wichtig ist hierbei Zeile 2 Index 6.
Egal was ich als "Particle Data" angebe, ich erhalte immer die Standard Partikel (einfach nur weiße Kreuze, wie mein gewünschter Effekt, nur weiß). 6 geht nicht (Value des Effektes), 5 nicht (wie bei PlayEffect). Diese ganze Zeile bei Instant Health auch nicht http://minecraft.gamepedia.com/Potion#Data_value_table
Auch alle anderen Zahlen (z.B. 3) liefern nur die Standard weißen Partikel.

Packetinformation (ist eine alte Version weil in der neuen Version der Seite alles für den 1.8 Server geändert wurde):
http://wiki.vg/index.php?title=Protocol&oldid=5980#Particle

Hat jemand eine Lösung wie ich die gewünschten Partikel (http://minecraft.gamepedia.com/Data_values#Status_effects Nummer 6) erstellen kann ohne Sound?
Also was muss ich bei "Data Value" im Float index 6 angeben? Oder lässt sich der Sound unterdrücken?
Da der Sound bei der Location abgespielt wird, könntest du versuchen den Spieler zu einer Location und dann wieder zurück zu porten. Das wäre Ressourcenaufwändig, aber spontan die einfachste Lösung die mir einfällt.
 
Da der Sound bei der Location abgespielt wird, könntest du versuchen den Spieler zu einer Location und dann wieder zurück zu porten. Das wäre Ressourcenaufwändig, aber spontan die einfachste Lösung die mir einfällt.
Auch nicht so das wahre. Vor allem wenn ich viele Partikel schicken will....
Hey, folgendes Problem:
Ich erstelle Potion Break Partikel und zwar diese hier: http://minecraft.gamepedia.com/Data_values#Status_effects Nummer 6. Zuerst habe ich es mit
Code:
p.playEffect(new Location(p.getWorld(),x,y,z), Effect.POTION_BREAK, 5);
gemacht.
Da hierbei aber auch der Potion_Break Sound entsteht, wollte ich es über das Particle-Packet versuchen.
Code:
particle.getStrings().write(0, "instantSpell");
particle.getFloat().write(0, x).write(1, y).write(2, z).write(3, 0F).write(4, 0F).write(5, 0F).write(6, 6F);
particle.getIntegers().write(0, 10);
Wichtig ist hierbei Zeile 2 Index 6.
Egal was ich als "Particle Data" angebe, ich erhalte immer die Standard Partikel (einfach nur weiße Kreuze, wie mein gewünschter Effekt, nur weiß). 6 geht nicht (Value des Effektes), 5 nicht (wie bei PlayEffect). Diese ganze Zeile bei Instant Health auch nicht http://minecraft.gamepedia.com/Potion#Data_value_table
Auch alle anderen Zahlen (z.B. 3) liefern nur die Standard weißen Partikel.

Packetinformation (ist eine alte Version weil in der neuen Version der Seite alles für den 1.8 Server geändert wurde):
http://wiki.vg/index.php?title=Protocol&oldid=5980#Particle

Hat jemand eine Lösung wie ich die gewünschten Partikel (http://minecraft.gamepedia.com/Data_values#Status_effects Nummer 6) erstellen kann ohne Sound?
Also was muss ich bei "Data Value" im Float index 6 angeben? Oder lässt sich der Sound unterdrücken?
@DREAMZii
 
Status
Für weitere Antworten geschlossen.

Soziale Medien

  • X
  • TikTok

Über uns

  • GommeHD.net ist einer der größten Minecraft-Server der Welt. Dir gefällt unser Server? Dann unterstütze uns durch einen Kauf im Shop!
  • Shop