/SimpleGuiFormat

Simple tree gui generator for Spigot plugins!

Primary LanguageJava

SimpleGuiFormat

Simple Gui Format used for formatting guis for Spigot minigames!

Build Status

Look into our wiki: https://github.com/Misat11/SimpleGuiFormat/wiki

How to use

  1. Import maven repository
<repository>
  <id>mtorus-repo</id>
  <url>https://jenkins.mtorus.cz/plugin/repository/everything/</url>
</repository>
  1. Include dependency
<dependency>
  <groupId>misat11.lib.sgui</groupId>
  <artifactId>SimpleGuiFormat</artifactId>
  <version>0.0.4</version>
  <scope>compile</scope>
</dependency>
  1. Use in code
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

import misat11.lib.sgui.SimpleGuiFormat;
import misat11.lib.sgui.InventoryListener;
import misat11.lib.sgui.events.GenerateItemEvent;
import misat11.lib.sgui.events.PostActionEvent;
import misat11.lib.sgui.events.PreActionEvent;

public class Sample extends JavaPlugin implements Listener {

    public SimpleGuiFormat format;

    public void onEnable() {
    
        InventoryListener listener = new InventoryListener(); // for all guis
        Bukkit.getServer().getPluginManager().registerEvents(listener, this); // Needed for navigate in inventory

        // here do some things to load the configuration

        ItemStack backItem = someItemStack1; // here load item for go back to parent inventory
        ItemStack pageBackItem = someItemStack2; // here load item for page back
        ItemStack pageForwardItem = someItemStack3; // here load item for page forward
        ItemStack cosmeticItem = someItemStack4; // here load cosmetics on first and last line

        List<Map<String, Object>> data = myBestConfiguration; // here load your configuration

        // now we must create gui from configuration

        format = new SimpleGuiFormat(nameOfYourInventory, backItem, pageBackItem, pageForwardItem, cosmeticItem);
        format.load(data);

        Bukkit.getServer().getPluginManager().registerEvents(this, this); // Needed for onclick action

        format.generateData();
    }

    @EventHandler
    public void onGeneratingItem(GenerateItemEvent event) {
        if (event.getFormat() != format) {
            return; // you should check if the format is yours
        }

        // here do some stuff on generating item with creator
    }

    @EventHandler
    public void onPreAction(PreActionEvent event) {
        if (event.getFormat() != format) {
            return; // you should check if the format is yours
        }

        if (event.isCancelled()) {
            return; // you should stop working when event is cancelled
        }

        // here you should check that player has permissions for this inventory, if not, you should cancel this event
    
    }

    @EventHandler
    public void onPostAction(PostActionEvent event) {
        if (event.getFormat() != format) {
            return; // you should check if the format is yours
        }

        if (event.isCancelled()) {
            return; // you should stop working when event is cancelled
        }

        // here you should make do some stuff when player clicks to item

    }

    public void show(Player player) {
        format.openForPlayer(player);
    }
}
  1. Relocate package
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>shade</goal>
          </goals>
          <configuration>
            <relocations>
              <relocation>
                <pattern>misat11.lib</pattern>
                <shadedPattern>yourcustompackage.lib</shadedPattern>
              </relocation>
            </relocations>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>
  1. Now build your plugin and enjoy it! mvn install