ExamplePlugin.java 9.45 KiB
package de.griefed.serverpackcreatoraddonexample;
import de.griefed.serverpackcreator.ApplicationProperties;
import de.griefed.serverpackcreator.ConfigurationModel;
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;
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.*;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
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.");
LOG_ADDONS.info("You could download some files. Create or replace some files. Basically you can do whatever you want.");
/*
Write all your preparation code here..
*/
}
@Extension(ordinal = 1)
public static class ExampleStartExtension implements PreGenExtension {
@Override
public void run(ApplicationProperties applicationProperties, ConfigurationModel configurationModel, String destination) throws Exception {
LOG_ADDONS.info("This would run before a server pack generation.");
LOG_ADDONS.info("Received destination: " + destination);
LOG_ADDONS.info("We recieved the following configurationModel: " + configurationModel.toString());
LOG_ADDONS.info("We received the following applicationProperties: " + applicationProperties.toString());
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) {}
/*
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)
public static class ExampleCreatedExtension implements PreZipExtension {
@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.");
LOG_ADDONS.info("Received destination: " + destination);
LOG_ADDONS.info("We recieved the following configurationModel: " + configurationModel.toString());
LOG_ADDONS.info("We received the following applicationProperties: " + applicationProperties.toString());
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)
.writeConfigToFile(configurationModel, new File(destination + "/serverpackcreator.conf"));
/*
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)
public static class ExampleArchiveExtension implements PostGenExtension {
@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.");
LOG_ADDONS.info("Received destination: " + destination);
LOG_ADDONS.info("We recieved the following configurationModel: " + configurationModel.toString());
LOG_ADDONS.info("We received the following applicationProperties: " + applicationProperties.toString());
//Create example file in server pack
try {
Files.createFile(Paths.get(String.format("%s/%s",destination, this.getClass().getSimpleName())));
} catch (Exception ignored) {}
/*
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)
public static class ExampleAddTabExtension extends JComponent implements TabExtension {
@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 {
/*
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.
*/
}
@Override
public String getName() {
return NAME;
}
@Override
public String getDescription() {
return DESCRIPTION;
}
@Override
public String getAuthor() {
return AUTHOR;
}
@Override
public String getVersion() {
return VERSION;
}
}
}