IF - Inventory Framework icon

IF - Inventory Framework -----

Create, alter and manage GUIs in an easy and maintainable manner



This resource is for developers only, if you're a server owner then this isn't intended for you.
Tested Minecraft Versions shows the supported Minecraft version(s). This resource may work on other versions, but this hasn't been tested and no guarantees will be made that these versions keep working in the future.

IF

IF - Inventory Framework is a lightweight, but powerful GUI framework, intended to help you create, alter and manage GUIs more easy. Here are a few things why I think IF stands out from other similar frameworks:


Pane based: IF relies fully on the usage of panes which allow you to separate your GUI in smaller parts which can be changed individually, without altering any other parts of your GUI.

XML reading: IF can read XML files and create entire GUIs from those. No more long methods creating your GUIs, just load them from an XML file. (Don't worry, XML is fully optional, just ignore it if you don't want to use it.)

Extensible: You can create your own panes with their own features to behave exactly how you want them to, without having to redesign a new GUI framework yourself from the ground up.

No more event handlers: No need to create listeners, listen to events and use a dozen if-statements to determine which item was clicked. IF will handle this all for you, so you can focus on creating your plugin.

Rotations: Easily apply linear two dimensional rotations on your panes to rotate your panes in different ways.



IF has an in-depth wiki detailing the workings of the framework and how to use it. You can find the wiki here.

Usage

IF works standalone. You have to shade it into your plugin, rather than add it to the server.

If you're not using a build system, you can download the resource from the download link here and add it as a dependency in your IDE.

If you're using Maven, add the following as dependency to your pom.xml:
Code (XML):
<dependency>
    <groupId>com.github.stefvanschie.inventoryframework </groupId>
    <artifactId>IF </artifactId>
    <version>0.10.19 </version>
</dependency>
IF is in the Central Repository, so you don't have to specify a repository.

Then add this to shade IF into your plugin:
Code (XML):
<plugin>
    <groupId>org.apache.maven.plugins </groupId>
    <artifactId>maven-shade-plugin </artifactId>
    <version>3.5.2 </version>
    <configuration>
        <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml </dependencyReducedPomLocation>
        <relocations>
            <relocation>
                <pattern>com.github.stefvanschie.inventoryframework </pattern>
                <shadedPattern>[YOUR PACKAGE].inventoryframework </shadedPattern>
            </relocation>
        </relocations>
    </configuration>
    <executions>
        <execution>
            <phase>package </phase>
            <goals>
                <goal>shade </goal>
            </goals>
        </execution>
    </executions>
</plugin>
Replace [YOUR PACKAGE] with your main package.

There are extensive tutorials and examples on the wiki, so I highly recommend checking it out to see how it works. If you're uncertain how XML works, there's also a small tutorial on that on the wiki as well.

Here's a small snippet on how to create a base GUI with one item in it.

Code (Java):
//create a gui with 5 rows and the title My GUI
ChestGui gui = new ChestGui ( 5, "My GUI" ) ;
//create a new pane occupying the entire gui
OutlinePane pane = new OutlinePane ( 0, 0, 9, 5 ) ;
ItemStack item = new ItemStack (Material. ICE ) ;
//create an item which will send a message when clicked
GuiItem guiItem = new GuiItem (item, event -> event. getWhoClicked ( ). sendMessage ( "You clicked on ice!" ) ) ;
//add the item to the pane
pane. addItem (guiItem ) ;
//add the pane to the gui
gui. addPane (pane ) ;
Suggestions and feedback are highly appreciated!

Links:

Resource Information
Author:
----------
Total Downloads: 4,378
First Release: May 27, 2018
Last Update: Dec 9, 2024
Category: ---------------
All-Time Rating:
24 ratings
Find more info at github.com...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings