Skip to content
On this page

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

  • /blueprint
    • edit <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)
  • /marker
    • addhere <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

uruchomienie kreatora 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.

punkt środka

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. kluczowe lokacje

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 lub null.

  • @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:

spawner marker

Metadane zapisane wewnątrz markera: metadata

Odczytywanie informacji

java
// ...
@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.