MoonStar Studios
Public API

MoonPillars Public API

Last updated: 6/28/2025

πŸ“¦ Repository & Dependencies

Maven Repository:

<repository>
    <id>moonpillars-repo</id>
    <name>MoonPillars Maven Repository</name>
    <url>https://moonpillars.kloppie74.xyz/repository/MoonPillars/</url>
</repository>

Maven Dependency:

<dependency>
    <groupId>org.Kloppie74</groupId>
    <artifactId>MoonPillars-PaperMC-MacMC</artifactId>
    <version>8.0.0</version>
    <classifier>api</classifier>
</dependency>

Gradle:

implementation 'org.Kloppie74:MoonPillars-PaperMC-MacMC:8.0.0:api@jar'

🧩 How to Create a MoonPillars Addon
  1. Create a new Kotlin or Java plugin project.

  2. Update your main class to implement MoonAddon:

package org.Kloppie74.MyAddon;

import org.Kloppie74.MyAddon.Commands.MyCommand;
import org.Kloppie74.MyAddon.Listeners.MyListener;
import org.bukkit.command.CommandExecutor;
import org.bukkit.event.Listener;
import org.bukkit.plugin.Plugin;
import org.kloppie74.MoonPillars.PaperMC.AddonsManager.CommandDefinition;
import org.kloppie74.MoonPillars.PaperMC.AddonsManager.MoonAddon;
import org.kloppie74.MoonPillars.PaperMC.AddonsManager.PermissionDefinition;

import java.util.*;

public class MyAddon implements MoonAddon {

    private final List<Listener> listeners = new ArrayList<>();
    private final Map<String, CommandExecutor> commands = new HashMap<>();
    private Plugin plugin;

    @Override
    public void onEnable(Plugin plugin) {
        this.plugin = plugin;

        // Register listeners
        listeners.add(new MyListener());

        // Register commands
        commands.put("myaddoncommand", new MyCommand());

        plugin.getLogger().info("MyAddon has been enabled!");
    }

    @Override
    public void onDisable() {
        // Cleanup if needed
    }

    @Override
    public String getName() {
        return "MyAddon";
    }

    @Override
    public String getVersion() {
        return "1.0.0";
    }

    @Override
    public List<Listener> getListeners() {
        return listeners;
    }

    @Override
    public Map<String, CommandExecutor> getCommands() {
        return commands;
    }

    @Override
    public Map<String, CommandDefinition> getCommandDefinitions() {
        Map<String, CommandDefinition> commandDefs = new HashMap<>();

        commandDefs.put("myaddoncommand", new CommandDefinition.Builder("myaddoncommand")
            .description("A command provided by MyAddon")
            .usage("/myaddoncommand <argument>")
            .permission("myaddon.command.use")
            .permissionMessage("You don't have permission to use this command.")
            .alias("myacmd")
            .build());

        return commandDefs;
    }

    @Override
    public List<PermissionDefinition> getPermissionDefinitions() {
        return Collections.singletonList(
            new PermissionDefinition(
                "myaddon.command.use",
                "Allows use of MyAddon commands",
                "true"
            )
        );
    }
}

πŸ“ Addon Metadata

Create a file named addon.properties in your resources/ directory with the following content:

main-class=com.yourdomain.YourAddonMainClass

Make sure main-class points to the fully qualified name of your class that implements MoonAddon.


Need help? Join our community or check the documentation! Let’s build amazing things together with MoonPillars Addons! πŸŒ™