Giter VIP home page Giter VIP logo

toberocat / guiengine Goto Github PK

View Code? Open in Web Editor NEW
6.0 2.0 2.0 3.47 MB

A powerful GUI Framework, allowing Server Owners and Developers to Craft Interactive Custom GUIs

Home Page: https://toberocat.github.io/GuiEngine/javadocs

License: GNU General Public License v3.0

Shell 0.16% Kotlin 99.83% JavaScript 0.01% HTML 0.01%
component-based easy-to-use graphical-user-interface minecraft-framework minecraft-plugin plugin-api spigot-gui well-documented

guiengine's Introduction

GuiEngineBanner

Javadoc ToberoCat - GuiEngine Donate PayPal stars - GuiEngine forks - GuiEngine GitHub release issues - GuiEngine SpigotMain - GuiEngine

Introducing GUI Engine – the ultimate GUI configuration tool for developers and server owners. Craft captivating GUIs effortlessly using user-friendly config files. Enhance your server with ease and create mesmerizing inventory layouts to set your server apart. Embrace boundless possibilities in GUI editing and elevate your Minecraft experience today!

Why you should use it over other Gui Plugins?

This plugin is other than the usual gui plugins. It allows developers to write guis not only they can modify by code, it also allows server owners of all skill levels to customize them to their will.

Interested? Get started today!

You can view our beginner guide. This guide will teach you the basics about using GuiEngine. You'll fall in love with this tool, I promise.

If you're intrested in using it in your plugin, you can take look at the developer docs. This is a documentation of the most essential things you might want to do with this framework.

Comparision

Gui Comparision

In the image provided, you can observe the GUI created using two distinct frameworks. On the left side, the RedLibs InventoryGui was used to create the displayed GUI. Meanwhile, on the right side, the GuiEngine was utilized.

The significant advantage of using GuiEngine over other frameworks is that individuals, without coding knowledge, can easily modify the GUI. This accessibility gives server owners, regardless of their coding expertise, the ability customize and tailor the GUIs according to their preferences and vision. Using this user-friendly frameworks is super easy. You can start using it without needing to code and if you still need more, the api allows you to interact with it. It only takes three lines of code to open a gui for the user, ased on such a gui file.

To get started, you can view the beginner guide on the GuiEngine wiki page

Technical overview

The GuiEngine utilizes an interpreted component-based approach to render GUIs effectively. With the help of components, developers can seamlessly create content that enhances the visual appeal of your GUIs.

The true power of the GuiEngine lies in its interpreter, which enables users to work with simple config files, shielding them from the underlying complexity. This means that users don't need to dive into the complicated coding details to craft their dreams GUI, making the process much more accessible and user-friendly.

Furthermore, GuiEngine supports both functions and placeholders. Functions act as actions triggered when specific events occur, providing dynamic functionality to the GUIs. Placeholders, on the other hand, offer a way for developers to pass values from their plugins to the GUI, allowing for graphical representation of data.

Overall, GuiEngine streamlines GUI development by simplifying configuration and enabling the integration of dynamic actions and data representation without requiring advanced coding knowledge. This empowers developers and server owners alike to craft visually appealing and functional GUIs with ease.

guiengine's People

Contributors

ling-ink avatar toberocat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

guiengine's Issues

Lost on-click function after edit

In this component:

<component type="item" id="green-button" x="3" y="2" material="GREEN_TERRACOTTA" name="§aGreen button">
    <lore>§7Click me</lore>
    <lore>§7I promise §ait's worth§7 it</lore>
    <on-click type="edit" target="green-button" attribute="name" set-value="§eYou clicked me :)"/>
    <on-click type="edit" target="green-button" attribute="material" set-value="YELLOW_TERRACOTTA"/>
</component>

After clicked once, the GREEN_TERRACOTTA replaced by YELLOW_TERRACOTTA, and the name changed
And then, if I continue to click, it will cause error:

[22:06:10 ERROR]: Could not pass event InventoryClickEvent to GuiEngine v1.2.1
java.lang.NullPointerException: Cannot invoke "io.github.toberocat.guiengine.function.GuiFunction.call(io.github.toberocat.guiengine.GuiEngineApi, io.github.toberocat.guiengine.context.GuiContext)" because "function" is null

I found that in DefaultInterpreter.java , after convertValue() method, the on-click will filled with null
image
image

Bug: Sign don't work when editing

Description

When placing signs the edit UI doesn't show and NBT copied signs are blank. Braking them shows this error.

Steps to reproduce

  1. Place sign
  2. Brake sign

Logs

error.txt

Versions

Plugin: 1.4.2
Server: Paper 1.20.1 build 196

nbt CustomModelData doesnt work

been trying for a day and a half to get it working, it doesnt work and ive concluded its an issue with the plugin

§7gun
[player] give @p minecraft:crossbow{CustomModelData:13}

PlaceHolders in Lore

Hi

For some reason whenever I place a placeholder inside of a lore, the whole lor disappears from the material/item.
Is there another way to place them or is it just missing?

How to use the PagedComponent

Is this code correct?

<gui title="§eTag" width="9" height="2">
    <component type="item" material="IRON_BLOCK" name="§eBack">
        <on-click type="action">[container:previous]</on-click>
    </component>
    <component type="item" x="8" material="DIAMOND_BLOCK" name="§eNext">
        <on-click type="action">[container:next]</on-click>
    </component>
    <component type="paged" id="container" y="1" width="9" height="1" interactions="true"
            pattern="0,1,2,3,4,5,6,7,8">
        <fill-empty type="item" material="GLASS_PANE">
            <on-click type="action">[message] Nothing here</on-click>
        </fill-empty>
        <page>
            <component type="item" x="1" material="EMERALD_BLOCK" name="§ePage 1">
                <on-click type="action">[message] Page 1</on-click>
            </component>
        </page>
        <page>
            <component type="item" x="7" material="REDSTONE_BLOCK" name="§ePage 2">
                <on-click type="action">[message] Page 2</on-click>
            </component>
        </page>
    </component>
</gui>

Add better invaild GUi error handling

Description

Currently when making a GUI and it has an issue (currently tested with Improved Factions ones), I get a big not useful java error. What It should show is the file location including name and line number it has an issue with parsing

Steps to reproduce

None

Logs

None

Versions

Server: Paper 1.20.1 build 108
GUI engine: 1.2.3

Single line of lore does not displayed

I was following the User Beginner Guide and I found when I add single lore to a item, it does not displayed
image
image

I found that ParserContext.getOptionalStringArray() used foreach to process the lore array, but when there have only one lore, the getOptionalNode() returned JsonNode is String instead of Array
image
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.