This repository has been archived on 2023-10-03. You can view files and clone it, but cannot push or open issues or pull requests.
ServerPackCreatorExampleAddon/src/main/java/de/griefed/exampleaddon/serverpack/PreZipArchive.java

170 lines
5.9 KiB
Java

/*
* MIT License
*
* Copyright (c) 2022 Griefed
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*/
package de.griefed.exampleaddon.serverpack;
import com.electronwill.nightconfig.core.CommentedConfig;
import com.electronwill.nightconfig.toml.TomlWriter;
import de.griefed.serverpackcreator.ApplicationProperties;
import de.griefed.serverpackcreator.ConfigurationModel;
import de.griefed.serverpackcreator.addons.serverpackhandler.PreZipExtension;
import de.griefed.serverpackcreator.utilities.common.Utilities;
import de.griefed.serverpackcreator.versionmeta.VersionMeta;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Optional;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.pf4j.Extension;
@Extension
public class PreZipArchive implements PreZipExtension {
private static final Logger LOG_ADDONS = LogManager.getLogger("AddonsLogger");
private TomlWriter tomlWriter = null;
/**
* @param versionMeta Instance of {@link VersionMeta} so you can work with available
* Minecraft, Forge, Fabric, LegacyFabric and Quilt versions.
* @param utilities Instance of {@link Utilities} commonly used across
* ServerPackCreator.
* @param applicationProperties Instance of {@link ApplicationProperties} as ServerPackCreator
* itself uses it.
* @param configurationModel Instance of {@link ConfigurationModel} for a given server pack.
* @param destination String. The destination of the server pack.
* @param addonConfig Configuration for this addon, conveniently provided by
* ServerPackCreator.
* @param packSpecificConfigs Modpack and server pack specific configurations for this addon,
* conveniently provided by ServerPackCreator.
* @throws Exception {@link Exception} when an uncaught error occurs in the addon.
* @author Griefed
*/
@Override
public void run(
VersionMeta versionMeta,
Utilities utilities,
ApplicationProperties applicationProperties,
ConfigurationModel configurationModel,
String destination,
Optional<CommentedConfig> addonConfig,
ArrayList<CommentedConfig> packSpecificConfigs
) throws Exception {
LOG_ADDONS.info("I am: " + getName() + "(" + getVersion() + ") by " + getAuthor() + ". "
+ getDescription());
LOG_ADDONS.info(
"Running with ServerPackCreator " + applicationProperties.SERVERPACKCREATOR_VERSION());
LOG_ADDONS.info("I would do stuff right before a ZIP-archive of the server pack is created!");
LOG_ADDONS.info("I could make some magic happen in the " + destination + "-directory :-)");
LOG_ADDONS.info("Maybe something based on this server packs Minecraft version "
+ configurationModel.getMinecraftVersion() + "?");
if (addonConfig.isPresent()) {
LOG_ADDONS.info("I got passed the following configuration:");
StringWriter stringWriter = new StringWriter();
getTomlWriter().write(addonConfig.get(), stringWriter);
LOG_ADDONS.info(stringWriter);
}
LOG_ADDONS.info("I got passed the following pack specific configuration(s):");
for (int i = 0; i < packSpecificConfigs.size(); i++) {
LOG_ADDONS.info("Configuration " + i + " of " + packSpecificConfigs.size() + ":");
StringWriter stringWriter = new StringWriter();
getTomlWriter().write(packSpecificConfigs.get(i), stringWriter);
LOG_ADDONS.info(stringWriter);
}
}
private TomlWriter getTomlWriter() {
if (tomlWriter == null) {
tomlWriter = new TomlWriter();
}
return tomlWriter;
}
/**
* Get the if of this extension. Used by ServerPackCreator to determine which configuration, if
* any, to provide to any given extension being run.
*
* @return The ID of this extension.
* @author Griefed
*/
@Override
public String getExtensionId() {
return "prezipexample";
}
/**
* Get the name of this addon.
*
* @return The name of this addon.
* @author Griefed
*/
@Override
public String getName() {
return "Example Pre ZIP-Archive Creation Extension";
}
/**
* Get the description of this addon.
*
* @return The description of this addon.
* @author Griefed
*/
@Override
public String getDescription() {
return "An example for an extension which executes right before the creation of a ZIP-archive of a server pack is started.";
}
/**
* Get the author of this addon.
*
* @return The author of this addon.
* @author Griefed
*/
@Override
public String getAuthor() {
return "Griefed";
}
/**
* Get the version of this addon.
*
* @return The version of this addon.
* @author Griefed
*/
@Override
public String getVersion() {
return "0.0.1-SNAPSHOT";
}
}