2016-03-31 12 views

Antwort

3

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); 
}