Kreator Blueprint
Kreator to wbudowane narzędzie umożliwiające modyfikację schematów budowli oraz lokacji kluczowych w schemacie. Został zaprojektowany tak, aby mógł z niego korzystać każdy, nawet bez umiejętności programowania. Pozwala na tworzenie nowych szablonów budowli oraz edycję istniejących.
Komendy
/blueprintedit <nazwa>- Opens the editor using an existing schematic or creates a new file.save- Saves the currently edited schematic without exiting.exit- Exits the editor.radius <number>- Sets the maximum size of the schematic. (size = 2*radius-1)
/markeraddhere <nazwa>- Creates a marker at the player’s current position.removeid <id>- Removes a specific marker by its ID.removename <name>- Removes all markers with the specified name.givemarkerblock <name>- Gives the player a block that creates a marker at the placement location.giveclearblock- Gives a block that deletes markers at the placement location.list- Displays all markers grouped by name.list <name>- Display all markers in group.tp <id>- Teleports the player to the specified marker.setmetadata <id> <key> <value- Sets metadata for an existing marker.removemetadata <id> <key>- Deletes a metadata key from an existing marker.info <id>- Displays detailed information about a marker.
Zalecany format nazwy szablonu
Aby uniknąć konfliktów między nazwami szablonów i ułatwić identyfikację pluginu, z którego pochodzi dany szablon, stosuj format <nazwa_pluginu>#<nazwa_szablonu> pisany małymi literami.
Przykład
/blueprint edit bedwars#arena1/blueprint edit duelspvp#arena1
Jeśli szablon nie istnieje, zostanie utworzony nowy, domyślny szablon.
Punkt origin schematu
Origin określa punkt odniesienia, względem którego schemat będzie wklejany do świata.

Kluczowe lokacje
Kluczowe lokacje to specjalne punkty oznaczone w edytorze, do których można później odwoływać się w kodzie.
Ustawienie lokacji
Za pomocą komendy /markers. 
Pobieranie lokacji
@NotNull List<Marker> requireAnyByName(String name)
Wymaga co najmniej jednego markera o podanej nazwie (inaczej wyjątek).@NotNull Marker requireOneByName(String name)
Wymaga dokładnie jednego markera o podanej nazwie (inaczej wyjątek).@NotNull Location requireOneLocationByName(String name)
Wymaga dokładnie jednego markera i zwraca jego lokalizację.@NotNull List<Location> requireAnyLocationsByName(String name)
Wymaga co najmniej jednego markera i zwraca ich lokalizacje.
Pozostałe metody
@NotNull Location getBase()
Zwraca bazową lokalizację według, której zostały wyliczone markery.@NotNull List<Marker> getMarkers()
Pobiera wszystkie istniejące markery.@Nullable Marker getById(int id)
Pobiera marker na podstawie jego identyfikatora lubnull.@NotNull List<Marker> getByName(String name)
Pobiera wszystkie markery o podanej nazwie (może być pusta lista).@NotNull List<Marker> getNearbyMarkers(Location location, double radius)
Pobiera wszystkie markery w zadanym promieniu od lokalizacji.
Metadane lokacji
Każdy marker może przechowywać metadane w postaci par klucz=wartość. Dzięki temu można dodać do markera dowolne, dodatkowe informacje.
Metadane są zapisywane jako string:string, ale wbudowane metody umożliwiają ich łatwe odczytywanie i parsowanie do innych typów.
Przykładowe zastosowanie
Marker ze spawnerem:

Metadane zapisane wewnątrz markera: 
Odczytywanie informacji
// ...
@Override
public void onComponentInit(ComponentConstructor event) {
// Pobieramy unikalny marker dla generatora przedmiotów.
var spawnerMarkers = markers.getByName("spawner");
for (var spawnerMarker : spawnerMarkers) {
var metadata = spawnerMarker.getMetadata();
// required (@NotNull parsed value or exception)
var type = metadata.requireString("type"); // string or exception
var isActive = metadata.requireBoolean("active"); // boolean or exception
// default
int max = Optional.ofNullable(metadata.getInteger("max")).orElse(30);
// optional (@Nullable)
int ticks = metadata.getInteger("min");
// ...
}
}
Przykłady
Aby zobaczyć, jak wykorzystać przygotowane schematy i markery w praktyce, zajrzyj do sekcji Generowanie mapy, gdzie znajdziesz przykłady statycznego i dynamicznego wczytywania map oraz pobierania kluczowych lokacji.