Minecraft Blume programmieren?
Hey,
ich würde gerne mit einem Command eine Blume spawnen. Da kommt aber immer nur die Rote raus. Wie kann ich auch andere spawnen lassen? Mit ItemStacks geht es nicht, da ich beim Setzen nur ein Material angeben kann.
Wie ich es versuche:
p.getWorld().getBlockAt(location).setType(Material.RED_FLOWER);
Danke für jede Hilfe, im voraus.
Ps. Serverversion 1.8.8
4 Antworten
Anscheinend musst du zuerst die Rose mit setType() setzen, und sie dann mit setData() ändern. Quelle:
https://www.spigotmc.org/threads/defining-metadata-of-a-material.321349/
new ItemStack( Material.RED_FLOWER, 1, (byte)X )
Anstatt dem X die Zahl die hinter dem Doppelpunkt steht, also für eine Blue Orchid z.B. 1.
Du kannst den ItemStack in ein Material umwandeln indem du
.getType()
machst.
Also:
p.getWorld().getBlockAt(location).setType((new ItemStack( Material.RED_FLOWER, 1, (byte)0 )).getType());
Siehe hier:
https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/inventory/ItemStack.html
Mit .getType()
Hättest du aber auch einfach kurz googlen können xD
https://www.spigotmc.org/threads/get-material-of-an-item-stack.156989/
Oder einfach in Intellij/Eclipse kucken können, welche Methoden ItemStack so hat, und was sie zurückgeben :D
Dann wird es aber wieder die normale Rote Rose. ;D
Hööö sure? xD Sollte nicht xD
p.getWorld().getBlockAt(location).setType((new ItemStack( Material.RED_FLOWER, 1, (byte)1 )).getType());
Das sollte ne Blue Orchid spawnen.
Weird.
Habs schon hinbekommen. Funktioniert anders.
Wo ist das Problem?
Einfach anstatt RED_FLOWER den jeweiligen Blumennamen einsetzen.
z.B. Dandelion:
p.getWorld().getBlockAt(location).setType(Material.DANDELION);
Hier eine Liste aller Blumen: https://minecraft.gamepedia.com/Flower
Hier eine Liste aller Materialien (inklusive aller Blumen): https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
Ich meine Blumen, wie zum Beispiel "RED_FLOWER (short) 1"
Ingame: Blue Orchid
What?
Von einer Blume namens "RED_FLOWER (short) 1" hab ich noch nie gehört.
Wenn du eine Blue Orchid willst, dann gib doch einfach BLUE_ORCHID ein?
Dann gib doch bitte in deiner Frage an, dass dein Server auf einer veralteten Version läuft. Wir sind keine Hellseher.
Man muss dann ja angeben RED_ROSE mit dem short 1. Das ist aber kein Material. Kann man das jetzt iwi umwandeln?
Ich bin jetzt FINALY auch mal drauf gekommen.
Für alle, die das selbe Problem haben:
p.getWorld().getBlockAt(location).setType(Material.RED_ROSE);
p.getWorld().getBlockAt(location).setData((byte) 1);
Da bin ich auch grad draufgekommen lul :D
https://www.spigotmc.org/threads/defining-metadata-of-a-material.321349/
So weit war ich auch schon. Nur weiß ich nicht, wie ich es in ein Material Umwandeln kann. xD