Ich erstelle einen Mod und möchte einen Block auf bestimmte Koordinaten setzen, wie kann ich das machen? Ich benutze Minecraft Forge 1.7.10. Ich habe die Block.class und World.class überprüft, aber ich habe nicht gefunden, was das tut .. Ich würde wirklich schätzen, wenn jemand helfen kann. Beste,Minecraft Forge 1.7.10: Wie platziere ich einen Block auf bestimmte Koordinaten?
Antwort
Es gibt mehrere World
Methoden, die Blöcke setzen. Die einzige Sache, die du sicherstellen musst, ist, dass du sie auf der Server-Seite des Mods aufrufen musst, nicht auf der Client-Seite. Wenn er von der Server-Seite aus aufgerufen wird (mit der richtigen Methode), wird er automatisch die Blockänderung an alle in der Nähe befindlichen Spieler senden (und die Blockänderung speichern). Sie können diese Methoden entweder von der Server- oder Client-Seite aufrufen, aber im Allgemeinen möchten Sie sie nur von der Serverseite aufrufen (Sie können das Feld isRemote
der World
überprüfen - wenn es stimmt, dann ist es auf dem Client; Sie werden nur möchte eigentlich Sachen machen, wenn es falsch ist). Manchmal macht es Sinn, sowohl vom Client als auch vom Server aus zu rufen (zB ein Element, das immer einen Block ändert, nur damit der Spieler nicht mit Verzögerung umgehen muss), aber Sie wollen es immer auch mit dem Server ändern .
Jetzt gibt es mehrere setBlock
ähnliche Methoden. Die am meisten interessierenden sind setBlock
's 4-Parameter-Methode. Diese Methode benötigt eine x, y und z Koordinate und dann die Block
Einstellung. Wenn Sie Metadaten hinzufügen möchten, müssen Sie die 6-Parameter-Methode verwenden, die x, y, z, die Block
, die Metadaten und dann einen flags
-Parameter hat. Dieser Flags-Parameter führt mehrere Dinge aus, aber Sie möchten ihn im Allgemeinen auf 3 setzen, damit er eine Blockaktualisierung verursacht, die Änderung an den Client sendet und das Rendering nicht überspringt. Das 4-Parameter-Methode ruft einfach die 6-Parameter-Methode mit einem Metadatenwert von 0 und einem Flaggen-Wert von 3.
So:
if (!world.isRemote) {
// Sets the block at 9, 64, 20 to dirt
world.setBlock(9, 64, 20, Blocks.dirt);
// Sets the block at 9, 64, 21 to wool:15, IE black wool
world.setBlock(9, 64, 21, Blocks.wool, 15, 3);
}