Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Avatar for tksimeji

The Minecraft GUI framework

Report visualkit?

Visualkit

Visualkit is a free, open-source GUI framework for Paper server.

Version Licence

Eye-catching

This is an overview of Visualkit's features, but you can find more details in the README in the GitHub repository.

Placeholders

Automatically update your GUI with powerful placeholders. To change the display, simply change a field variable.

public final class MyUI extends ChestUI {
    @Element(0)
    private final VisualkitElement element = VisualkitElement.create(Material.PUMPKIN_PIE)
            .title(Component.text("Delicious Pumpkin Pie 🎃").color(NamedTextColor.GOLD))
            .lore(Component.text("Price: ${price} yen"));

    private int price = 64;
    
    // Some code omitted

    @Override
    public void onTick() {
        price ++;
    }
}

Placeholders can be used anywhere in the GUI you create with Visualkit.

Chest GUI

Use declarative element definitions to rapidly create rich GUIs.

public final class MyChestUI extends ChestUI {
    @Element(13)
    private final VisualkitElement cookie = VisualkitElement.create(Material.COOKIE)
            .title(Component.text("Click me!").color(NamedTextColor.GREEN))
            .handler((slot, click, mouse) -> count ++)
            .sound(Sound.UI_BUTTON_CLICK, 1.0f, 1.2f);
            .lore(Component.text("Count:").appendSpace().append(Component.text("${count}").color(NamedTextColor.GREEN)));

    private int count = 0;

    public MyChestUI(@NotNull Player player) {
        super(player);
    }

    @Override
    public @NotNull Size size() {
        return Size.SIZE_36;
    }

    @Override
    public @NotNull Component title() {
        return Component.text("Cookie Clicker");
    }
}

Panel GUI

It is the fastest way to create a GUI with a scoreboard sidebar, which was previously complicated.

public final class MyPanelUI extends PanelUI {
    private int health;
    private int hunger;
    private int ping;

    public MyPanelUI(@NotNull Player player) {
        super(player);
        
        setTitle(Component.text("INFO").color(NamedTextColor.YELLOW));

        addLine(Component.text("Hello, ").color(NamedTextColor.GRAY)
                .append(Component.text(player.getName()).color(NamedTextColor.WHITE))
                .append(Component.text("!").color(NamedTextColor.GRAY)));
        addLine();
        addLine(Component.text("Health: ").append(Component.text("${health}💗").color(NamedTextColor.RED)));
        addLine(Component.text("Hunger: ").append(Component.text("${hunger}🍖").color(NamedTextColor.GOLD)));
        addLine(Component.text("Ping: ").append(Component.text("${ping} ms").color(NamedTextColor.GREEN)));
    }

    @Override
    public void onTick() {
        health = (int) player.getHealth();
        hunger = (int) player.getHealth();
        ping = player.getPing();
    }
}

Information

CategoryDeveloper Tools
Published onDecember 2, 2024
LicenseMIT
Downloads8
Stars1
Watchers0
Library

Pinned Versions

Members