Home›Java›Mods›ObliviateInvs — Highly efficient modular GUI library
ObliviateInvs — Highly efficient modular GUI library
ModsJava

ObliviateInvs — Highly efficient modular GUI library

Java mod listed for Minecraft 1.8–26.x. Download on the author's site.

⬇ Download on Spigot
ObliviateInvs is stable and gets support still. Feel free to contact us about it via GitHub issues.
29 Aug 2026

1000+ downloads per month

IF YOU LIKED THE LIBRARY PLEASE GIVE A STAR TO THE GITHUB REPOSITORY

Introduction

ObliviateInvs offers efficient and fast GUI development. It is tested to handle even the most demanding GUI tasks.

Features​
Modules
Powerful as you need.
Small as you need.
​
Core
artifact id: configurablegui
The core module. Provides GUI classes.

Pagination
artifact id: pagination

Provides pagination support for GUIs.

ConfigurableGUI
artifact id: configurablegui

Provides Configurable GUI classes to serialize GUIs to human-readable configurations.

AdvancedSlot
artifact id: advancedslot
Provides advanced slots to GUIs. (remember, custom GUIs of anvils, enchantment tables, and brewing stands in Hypixel Skyblock)​

Maven & Gradle​
Maven
Code (XML):
<repository>
    <id>jitpack.io </id>
    <url>https://jitpack.io </url>
</repository>

<dependency>
    <groupId>com.github.hamza-cskn.obliviate-invs </groupId>
    <artifactId>core </artifactId>
    <version>4.3.1 </version>
</dependency>

<!-->
<dependency>
   <groupId>com.github.hamza-cskn.obliviate-invs</groupId>
   <artifactId>{MODULE}</artifactId>
   <version>4.3.1</version>
</dependency>
<-->

 
Gradle
Code (Groovy):
repositories {
    maven { url 'https://jitpack.io' }
}

dependencies {
    implementation 'com.github.hamza-cskn.obliviate-invs:core:4.3.0'
    //implementation 'com.github.hamza-cskn.obliviate-invs:{MODULE}:4.3.0'
}

The example codes below give the main idea. Visit the Wiki page to get actual help.
​
Spoiler: Core
Core​
Code (Java):
public class ExampleGui extends Gui {

    public ExampleGui (Player player ) {
        super (player, "example-gui", "Title", 6 ) ;
    }

    @Override
    public void onOpen (InventoryOpenEvent event ) {
        addItem ( 0, Material. STONE ) ;
      }
}
 
​
Spoiler: Configurable GUI
Configurable GUI module​
Code
Code (Java):
@Override
    public void onOpen (InventoryOpenEvent event ) {
                # puts all dysfunctional icons
        putDysfunctionalIcons ( ) ;

                # puts a functional icon which is named "functional-test-icon"
        putIcon ( "functional-test-icon", e -> {
            player. sendMessage ( "You clicked" ) ;
        } ) ;
    }
 
Config
​
Code (YAML):
example-configurable-gui:
  title
: 'Custom Title'
  row
: 5
  icons
:
    filler-item
:
      material
: BLACK_STAINED_GLASS_PANE
      display-name
: '&a'
      slot
: 0-8
    functional-test-icon
:
      material
: DIAMOND_BOOTS
      display-name
: '&aGem'
      slot
: 4
      enchantments
:
       - 'DEPTH_STRIDER:1'
      item-flags
:
        #- 'HIDE_ENCHANTS'
        - '*'
 

[​IMG] ​
Spoiler: Pagination
Pagination module​
Code (Java):
paginationManager. registerSlotsBetween ( 10, 15 ) ;

for (Material material : Material. values ( ) ) {
    paginationManager. addItem ( new Icon (material ) ) ;
}
paginationManager. update ( ) ;



[​IMG]
​
Spoiler: Advanced Slot
Advanced Slot module​
Spoiler: Code
Code (Java):
public class TestGUI extends GUI {

    public TestGUI (Player player ) {
        super (player, "test-gui", "Test Title", 6 ) ;
    }


    @Override
    public void onOpen (InventoryOpenEvent event ) {
        fillGui ( new ItemStack (Material. BLACK_STAINED_GLASS_PANE ) ) ;

        // FIRST ADVANCED SLOT

        AdvancedSlot advancedSlot2 = addAdvancedIcon ( 12, new Icon (Material. BARRIER ) ) ;

        advancedSlot2. onPut (e -> {
            enchantItem ( ) ;
        } ) ;

        // SECOND ADVANCED SLOT

        AdvancedSlot advancedSlot1 = addAdvancedIcon ( 14, new Icon (Material. BARRIER ) ) ;

        advancedSlot1. onPreClick ( (e, item ) -> {
            if ( !item. getType ( ). equals (Material. LAPIS_LAZULI ) ) {
                player. sendMessage ( "You cannot put items here except lapis lazuli." ) ;
                return true ;
            }
            return false ;
        } ). onPut (e -> {
            enchantItem ( ) ;
        } ) ;


    }

    /**
     * Purpose of this method,
     * remove one lapis from the 2. slot -if exist-
     * enchant item on 1. slot
     */

    private void enchantItem ( ) {
        final Inventory inventory = getInventory ( ) ;

        //get item on lapis lazuli slot
        ItemStack itemOnSlot14 = inventory. getItem ( 14 ) ;
        if ( !itemOnSlot14. getType ( ). equals (Material. LAPIS_LAZULI ) ) return ;

        //remove 1 lapis lazuli
        itemOnSlot14. setAmount (itemOnSlot14. getAmount ( ) - 1 ) ;
        getInventory ( ). setItem ( 14, itemOnSlot14 ) ; // Modifies the item with Bukkit's code.

        //enchant item
        ItemStack itemOnSlot12 = inventory. getItem ( 12 ) ;
        itemOnSlot12. addEnchantment (Enchantment. DURABILITY, 3 ) ;

        getInventory ( ). setItem ( 12, itemOnSlot12 ) ; // Modifies the item with Bukkit's code.

    }
}
[​IMG]
[​IMG]​

Other useful codes for GUI development
Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

ObliviateInvs — Highly efficient modular GUI library is a free Minecraft Java mod. Compatible with Minecraft 1.8, 1.16, 1.19, 1.20 and newer. Downloaded 1,452 times (via Spigot). Download it and open it directly in the game.

Explore more