Skip to content
Snippets Groups Projects
ExamplePlugin.java 9.45 KiB
Newer Older
Griefed's avatar
Griefed committed
package de.griefed.serverpackcreatoraddonexample;

import de.griefed.serverpackcreator.ApplicationProperties;
import de.griefed.serverpackcreator.ConfigurationModel;
Griefed's avatar
Griefed committed
import de.griefed.serverpackcreator.plugins.serverpackhandler.PostGenExtension;
import de.griefed.serverpackcreator.plugins.serverpackhandler.PreZipExtension;
import de.griefed.serverpackcreator.plugins.serverpackhandler.PreGenExtension;
import de.griefed.serverpackcreator.plugins.swinggui.TabExtension;
import de.griefed.serverpackcreator.utilities.ConfigUtilities;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
Griefed's avatar
Griefed committed
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.pf4j.Extension;
import org.pf4j.Plugin;
import org.pf4j.PluginWrapper;

import javax.swing.*;
import java.awt.*;
Griefed's avatar
Griefed committed
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
Griefed's avatar
Griefed committed

public class ExamplePlugin extends Plugin {

    private static final Logger LOG_ADDONS = LogManager.getLogger("AddonsLogger");

    /*
        You should provide and read all these from the manifest.
                                                                    */
    public static final String NAME = "ServerPackCreatorExampleAddon";
    public static final String DESCRIPTION = "This is an example addon for ServerPackCreator showcasing all, currently 4, aspects of" +
            "ServerPackCreators addon functionality. In this example you see code which gets executed before a server pack is generated," +
            "code that gets executed after a server pack was generated but before the ZIP-archive is created, code that gets executed" +
            "after this ZIP-archive was created, as well as code adding a new tabbed pane to the GUI.";
    public static final String AUTHOR = "Griefed";
    public static final String VERSION = "0.0.1";

    public ExamplePlugin(PluginWrapper wrapper) {
        super(wrapper);
    }

    @Override
    public void start() {
        LOG_ADDONS.info("Starting ExamplePlugin...");
        LOG_ADDONS.info("This methods should prepare the environment for anything you want to do with it.");
Griefed's avatar
Griefed committed
        LOG_ADDONS.info("You could download some files. Create or replace some files. Basically you can do whatever you want.");
Griefed's avatar
Griefed committed
        /*
            Write all your preparation code here..
                                                    */
    }

    @Extension(ordinal = 1)
Griefed's avatar
Griefed committed
    public static class ExampleStartExtension implements PreGenExtension {
Griefed's avatar
Griefed committed

        @Override
        public void run(ApplicationProperties applicationProperties, ConfigurationModel configurationModel, String destination) throws Exception {
            LOG_ADDONS.info("This would run before a server pack generation.");
Griefed's avatar
Griefed committed
            LOG_ADDONS.info("Received destination: " + destination);
Griefed's avatar
Griefed committed
            LOG_ADDONS.info("We recieved the following configurationModel: " + configurationModel.toString());
            LOG_ADDONS.info("We received the following applicationProperties: " + applicationProperties.toString());
Griefed's avatar
Griefed committed
            StringUtils.upperCase("some text in lower case");
            //Create example file in server pack
            try {
            Files.createFile(Paths.get(String.format("%s/%s",destination, this.getClass().getSimpleName())));
            } catch (Exception ignored) {}
Griefed's avatar
Griefed committed
            /*
                Write all your pre-gen stuff here...
                                                        */
        }

        @Override
        public String getName() {
            return NAME;
        }

        @Override
        public String getDescription() {
            return DESCRIPTION;
        }

        @Override
        public String getAuthor() {
            return AUTHOR;
        }

        @Override
        public String getVersion() {
            return VERSION;
        }
    }

    @Extension(ordinal = 1)
Griefed's avatar
Griefed committed
    public static class ExampleCreatedExtension implements PreZipExtension {
Griefed's avatar
Griefed committed

        @Override
        public void run(ApplicationProperties applicationProperties, ConfigurationModel configurationModel, String destination) throws Exception {
            LOG_ADDONS.info("This would run after a server pack was generated, but BEFORE the ZIP-archive would be generated.");
Griefed's avatar
Griefed committed
            LOG_ADDONS.info("Received destination: " + destination);
Griefed's avatar
Griefed committed
            LOG_ADDONS.info("We recieved the following configurationModel: " + configurationModel.toString());
            LOG_ADDONS.info("We received the following applicationProperties: " + applicationProperties.toString());
Griefed's avatar
Griefed committed
            StringUtils.upperCase("some text in lower case");
            //Create example file in server pack
            try {
                FileUtils.createParentDirectories(new File(destination + "/some/folder/with/a/name"));
            } catch (Exception ex) {
                LOG_ADDONS.info("Error occurred creating parent directories.", ex);
            }

            new ConfigUtilities(null,null,null,applicationProperties, null, null)
Griefed's avatar
Griefed committed
                    .writeConfigToFile(configurationModel, new File(destination + "/serverpackcreator.conf"));
Griefed's avatar
Griefed committed
            /*
                Write all your post-gen-pre-zip stuff here...
                                                                 */
        }

        @Override
        public String getName() {
            return NAME;
        }

        @Override
        public String getDescription() {
            return DESCRIPTION;
        }

        @Override
        public String getAuthor() {
            return AUTHOR;
        }

        @Override
        public String getVersion() {
            return VERSION;
        }
    }

    @Extension(ordinal = 1)
Griefed's avatar
Griefed committed
    public static class ExampleArchiveExtension implements PostGenExtension {
Griefed's avatar
Griefed committed

        @Override
        public void run(ApplicationProperties applicationProperties, ConfigurationModel configurationModel, String destination) throws Exception {
            LOG_ADDONS.info("This would run after the server pack ZIP-archive was created.");
Griefed's avatar
Griefed committed
            LOG_ADDONS.info("Received destination: " + destination);
Griefed's avatar
Griefed committed
            LOG_ADDONS.info("We recieved the following configurationModel: " + configurationModel.toString());
            LOG_ADDONS.info("We received the following applicationProperties: " + applicationProperties.toString());
Griefed's avatar
Griefed committed
            //Create example file in server pack
            try {
                Files.createFile(Paths.get(String.format("%s/%s",destination, this.getClass().getSimpleName())));
            } catch (Exception ignored) {}

Griefed's avatar
Griefed committed
            /*
                Write all your post-archive stuff here...
                                                        */
        }

        @Override
        public String getName() {
            return NAME;
        }

        @Override
        public String getDescription() {
            return DESCRIPTION;
        }

        @Override
        public String getAuthor() {
            return AUTHOR;
        }

        @Override
        public String getVersion() {
            return VERSION;
        }
    }

    @Extension(ordinal = 1)
Griefed's avatar
Griefed committed
    public static class ExampleAddTabExtension extends JComponent implements TabExtension {
Griefed's avatar
Griefed committed

        @Override
        public JComponent getTab() {
            JComponent jComponent = new JPanel(false);
            jComponent.setLayout(new GridBagLayout());

            GridBagConstraints gridBagConstraints = new GridBagConstraints();
            gridBagConstraints.fill = GridBagConstraints.NONE;
            gridBagConstraints.anchor = GridBagConstraints.CENTER;
            gridBagConstraints.gridwidth = 1;
            gridBagConstraints.gridheight = 1;
            gridBagConstraints.weightx = 1;
            gridBagConstraints.weighty = 1;

            JLabel jLabel = new JLabel("This is a label");
            jLabel.setToolTipText("Some label tooltip");
            gridBagConstraints.gridx = 1;
            gridBagConstraints.gridy = 1;
            jComponent.add(jLabel, gridBagConstraints);

            JButton jButton = new JButton("Some button");
            jButton.setToolTipText("This could do anything");
            gridBagConstraints.gridx = 1;
            gridBagConstraints.gridy = 2;
            jComponent.add(jButton, gridBagConstraints);

            return jComponent;
        }

        @Override
        public Icon getTabIcon() {
            /*
             * other default icons can be:
             *   OptionPane.errorIcon
             *   OptionPane.warningIcon
             *   OptionPane.questionIcon
            */
            return UIManager.getIcon("OptionPane.informationIcon");
        }

        @Override
        public String getTabTitle() {
            return "Some title text";
        }

        @Override
        public String getTabTooltip() {
            return "Some tooltip text";
        }

        @Override
        public void run(ApplicationProperties applicationProperties, ConfigurationModel configurationModel, String destination) throws Exception {
            /*
Griefed's avatar
Griefed committed
                So far, the run(...) method for AddTab extensions never gets called.
                There is no point in writing code here with the intention of
                ServerPackCreator executing it.
Griefed's avatar
Griefed committed
                                                        */
        }

        @Override
        public String getName() {
            return NAME;
        }

        @Override
        public String getDescription() {
            return DESCRIPTION;
        }

        @Override
        public String getAuthor() {
            return AUTHOR;
        }

        @Override
        public String getVersion() {
            return VERSION;
        }
    }
}