Skip to content
On this page

Obsługa wielu wersji gry

Podczas projektowania komponentów należy uwzględnić różnice pomiędzy wersjami gry.

Obsługa wielu wersji

Jeśli chcemy, aby komponent był uniwersalny, możemy zaimplementować różne rozwiązania w zależności od wersji Minecrafta.

java
public class Hologram extends Controller {
    private final Component hologram;
    public Hologram(Component component, Location location, net.kyori.adventure.text.Component text) {
        super(component);

        // If version > 1.19.4
        if (MinecraftVersion.isGreaterOrEqual(1, 19, 4)) {
            // Use TextDisplay Entity
            hologram = new HologramTD(this, location, text);
        } else {
            // Use ArmorSand Entity
            hologram = new HologramAS(this, location, text);
        }
    }

    @Override
    public void onComponentInit(ComponentConstructor event) {
        super.onComponentInit(event);
        hologram.start();
    }
}

Wykluczanie wersji

Jeśli komponent działa wyłącznie w określonej wersji gry, należy to jasno zakomunikować poprzez rzucenie wyjątku.

java
public class TextDisplayHologram extends Controller {
    private final net.kyori.adventure.text.Component text;
    private final Location location;

    public TextDisplayHologram(Component component, Location location, net.kyori.adventure.text.Component text) {
        super(component);

        // If version < 1.19.4 → throw exception
        if (!MinecraftVersion.isGreaterOrEqual(1, 19, 4)) {
            throw new UnsupportedMinecraftVersion(
                    "TextDisplayHologram requires Minecraft version 1.19.4 or newer."
            );
        }

        this.text = text;
        this.location = location;
    }
    
    // ...
}