Trigary / Iodine

A Minecraft mod - server plugin pair that adds custom GUIs and overlays. No more inventory and chat menus!
GNU General Public License v3.0
24 stars 0 forks source link
bukkit bukkit-plugin forge forge-mod java minecraft minecraft-forge minecraft-forge-mod minecraft-mod

Iodine

A Minecraft mod - server plugin pair that adds custom GUIs and overlays. No more inventory and chat menus! This is a successor to NickAc's Lithium project.

This project is under heavy development currently. There are no stable releases, but Bukkit and Forge builds are automatically generated after each commit. These can be downloaded from the Actions page. The plugin API is available through JitPack, see the API section.

Currently a Forge based client-side and a Bukkit based server-side is being worked on. Adding Fabric or especially Sponge support shouldn't be much trouble at all thanks to how the project is structured: Forge and Bukkit are abstracted away.

What this project offers:

Showcase

Showcase of some of the implemented elements:

Showcase of a proof-of-concept Factions minimap:

API

Very simple, "Hello World" sample code:

IodineApi.get().createGui()
    .addElement(GuiElements.TEXT, e -> e.setText("Hello, world!").setWidth(75))
    .addElement(GuiElements.BUTTON, 0, 15, e -> e.setText("Exit").setWidth(75)
        .onClicked((ee, p) -> p.closeOpenGui()))
    .onClosed((gui, p, byPlayer) -> p.sendMessage(
        byPlayer ? "You pressed the escape key" : "You clicked the exit button"))
    .openFor(IodineApi.get().getPlayer(player.getUniqueId()));

Real examples can be found in the showcase subproject.

The JavaDocs are available online, hosted on JitPack: latest
(It might take a while to load, because the build might have to run first.)

Gradle coordinates:

repositories {
    maven { url 'https://jitpack.io' }
}

dependencies {
    compileOnly 'com.github.Trigary.Iodine:api:master-SNAPSHOT'
}

Maven coordinates:

<repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
</repository>

<dependency>
    <groupId>com.github.Trigary.Iodine</groupId>
    <artifactId>api</artifactId>
    <version>master-SNAPSHOT</version>
    <scope>provided</scope>
</dependency>

Modules

This project consists of multiple subprojects, each with their own role:

The forge-VERSION projects are not real subprojects due to ForgeGradle issues, they are actually considered separate projects by Gradle. The showcase project isn't a subproject either since it's not an actual component in Iodine, it only depends on it.

To recap which projects depend on which: