commit cca8ae9a55918a7fd11811443fe85c9ff062af41 Author: SticksDev Date: Wed May 31 16:33:06 2023 -0400 Add basic things: - Added util to handle config loading and unloading - Added some base structs for spells - Added base spell package diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4788b4b --- /dev/null +++ b/.gitignore @@ -0,0 +1,113 @@ +# User-specific stuff +.idea/ + +*.iml +*.ipr +*.iws + +# IntelliJ +out/ + +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +target/ + +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next + +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar +.flattened-pom.xml + +# Common working directory +run/ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..8ab2841 --- /dev/null +++ b/pom.xml @@ -0,0 +1,74 @@ + + + 4.0.0 + + me.sticksdev + runic-spells + 1.0-SNAPSHOT + jar + + runic-spells + + + 1.8 + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + ${java.version} + ${java.version} + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + false + + + + + + + + src/main/resources + true + + + + + + + papermc-repo + https://repo.papermc.io/repository/maven-public/ + + + sonatype + https://oss.sonatype.org/content/groups/public/ + + + + + + io.papermc.paper + paper-api + 1.19.4-R0.1-SNAPSHOT + provided + + + diff --git a/src/main/java/me/sticksdev/runicspells/Runic_spells.java b/src/main/java/me/sticksdev/runicspells/Runic_spells.java new file mode 100644 index 0000000..1e1011d --- /dev/null +++ b/src/main/java/me/sticksdev/runicspells/Runic_spells.java @@ -0,0 +1,28 @@ +package me.sticksdev.runicspells; + +import me.sticksdev.runicspells.utils.Yaml; +import org.bukkit.plugin.java.JavaPlugin; + +public final class Runic_spells extends JavaPlugin { + public static Runic_spells instance; + + private final Yaml config = new Yaml(this); // TODO: Maybe make this use instance instead of this - was dealing with a null pointer exception + + @Override + public void onEnable() { + // Plugin startup logic + instance = this; + getLogger().info("Runic Spells has been enabled!"); + getLogger().info("Loading config..."); + config.init(); + } + + @Override + public void onDisable() { + config.destroy(); + } + + public static Runic_spells getInstance() { + return instance; + } +} diff --git a/src/main/java/me/sticksdev/runicspells/structures/BaseSpell.java b/src/main/java/me/sticksdev/runicspells/structures/BaseSpell.java new file mode 100644 index 0000000..5ae3464 --- /dev/null +++ b/src/main/java/me/sticksdev/runicspells/structures/BaseSpell.java @@ -0,0 +1,10 @@ +package me.sticksdev.runicspells.structures; + +/** + * The base class for spells, only contains a name and a description + */ +public class BaseSpell { + public String name; + public String description; + +} diff --git a/src/main/java/me/sticksdev/runicspells/structures/ItemBasedSpell.java b/src/main/java/me/sticksdev/runicspells/structures/ItemBasedSpell.java new file mode 100644 index 0000000..86f743b --- /dev/null +++ b/src/main/java/me/sticksdev/runicspells/structures/ItemBasedSpell.java @@ -0,0 +1,19 @@ +package me.sticksdev.runicspells.structures; + +public class ItemBasedSpell extends BaseSpell { + // Spell that uses minecraft in-game item to use/cast + public String item; + public int amount; + public int cooldown; + public int manaCost; + + + public ItemBasedSpell(String name, String description, String item, int amount, int cooldown, int manaCost) { + this.name = name; + this.description = description; + this.item = item; + this.amount = amount; + this.cooldown = cooldown; + this.manaCost = manaCost; + } +} diff --git a/src/main/java/me/sticksdev/runicspells/utils/Yaml.java b/src/main/java/me/sticksdev/runicspells/utils/Yaml.java new file mode 100644 index 0000000..274ff18 --- /dev/null +++ b/src/main/java/me/sticksdev/runicspells/utils/Yaml.java @@ -0,0 +1,64 @@ +package me.sticksdev.runicspells.utils; +import me.sticksdev.runicspells.Runic_spells; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; + +import java.io.File; +import java.io.IOException; + +public class Yaml { + // Basic YAML Loader and data holder for minecraft plugins + private final Runic_spells plugin; + public FileConfiguration spellsConfig; + private File spellsFilePath; + + public Yaml(Runic_spells plugin) { + this.plugin = plugin; + } + + + /** + * Loads the config file from the plugin's data folder or creates it if it doesn't exist + */ + public void init() { + spellsFilePath = new File(plugin.getDataFolder(), "spells.yml"); + + if (!spellsFilePath.exists()) { + plugin.getLogger().info("Spells.yml not found, creating..."); + spellsFilePath.getParentFile().mkdirs(); + plugin.saveResource("spells.yml", false); + } + + spellsConfig = new YamlConfiguration(); + try { + spellsConfig.load(spellsFilePath); + plugin.getLogger().info("Spells.yml loaded!"); + } catch (IOException | InvalidConfigurationException e) { + plugin.getLogger().warning("Spells.yml failed to load - see stack trace below:"); + e.printStackTrace(); + } + } + + /** + * Cleans up when plugin is disabled + */ + public void destroy() { + spellsConfig = null; + spellsFilePath = null; + } + + + /** + * Returns the currently loaded config file + * @return FileConfiguration + * @throws IllegalStateException if the config file hasn't been loaded yet + */ + public FileConfiguration getConfig() { + if (spellsConfig == null) { + throw new IllegalStateException("YamlError: Config not loaded yet, have you called init()?"); + } + + return spellsConfig; + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..7130cb7 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,4 @@ +name: runic-spells +version: '${project.version}' +main: me.sticksdev.runicspells.Runic_spells +api-version: 1.19 diff --git a/src/main/resources/spells.yml b/src/main/resources/spells.yml new file mode 100644 index 0000000..46c0c8e --- /dev/null +++ b/src/main/resources/spells.yml @@ -0,0 +1 @@ +# Spells configuration file \ No newline at end of file