From 13ea6cb9bf56385817bbad59d6cc82c4d652536a Mon Sep 17 00:00:00 2001 From: Tim <tim@DESKTOP-N90H3LL> Date: Sat, 3 Feb 2024 11:16:27 +0100 Subject: [PATCH] * --- pom.xml | 1 + .../tnt_crusher/ChangeBlockModifier.java | 19 +++++++++++- .../fsmpi/gaming/tnt_crusher/MyPlugin.java | 29 ++++++++++++++++--- src/main/resources/config.yml | 0 4 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/config.yml diff --git a/pom.xml b/pom.xml index 21aa7d9..6b85b6f 100644 --- a/pom.xml +++ b/pom.xml @@ -23,6 +23,7 @@ <directory>${project.basedir}/src/main/resources</directory> <includes> <include>plugin.yml</include> + <include>config.yml</include> </includes> </resource> </resources> diff --git a/src/main/java/fsmpi/gaming/tnt_crusher/ChangeBlockModifier.java b/src/main/java/fsmpi/gaming/tnt_crusher/ChangeBlockModifier.java index 97c5986..a89eaa2 100644 --- a/src/main/java/fsmpi/gaming/tnt_crusher/ChangeBlockModifier.java +++ b/src/main/java/fsmpi/gaming/tnt_crusher/ChangeBlockModifier.java @@ -1,11 +1,14 @@ package fsmpi.gaming.tnt_crusher; +import java.util.HashMap; +import java.util.Map; import java.util.Random; import org.bukkit.Material; import org.bukkit.block.Block; +import org.bukkit.configuration.serialization.ConfigurationSerializable; -public class ChangeBlockModifier implements BlockModifier { +public class ChangeBlockModifier implements BlockModifier, ConfigurationSerializable { public Material checkFor; public Material changeTo; public float modifierChance; @@ -15,6 +18,12 @@ public class ChangeBlockModifier implements BlockModifier { this.changeTo = changeTo; this.modifierChance = modifierChance; } + public ChangeBlockModifier(Map<String, Object> attributes) { + checkFor = Material.matchMaterial((String) attributes.get("checkFor")); + + changeTo = Material.matchMaterial((String) attributes.get("changeTo")); + modifierChance = Float.parseFloat((String) attributes.get("modifierChance")); + } @Override public void modify(Block block) { if (block.getType() == checkFor) { @@ -24,5 +33,13 @@ public class ChangeBlockModifier implements BlockModifier { } } } + @Override + public Map<String, Object> serialize() { + Map<String, Object> map = new HashMap<>(); + map.put("checkFor", checkFor.toString()); + map.put("changeTo", changeTo.toString()); + map.put("modifierChance", modifierChance + ""); + return map; + } } diff --git a/src/main/java/fsmpi/gaming/tnt_crusher/MyPlugin.java b/src/main/java/fsmpi/gaming/tnt_crusher/MyPlugin.java index a3d1edd..14b6020 100644 --- a/src/main/java/fsmpi/gaming/tnt_crusher/MyPlugin.java +++ b/src/main/java/fsmpi/gaming/tnt_crusher/MyPlugin.java @@ -1,21 +1,42 @@ package fsmpi.gaming.tnt_crusher; import java.util.ArrayList; +import java.util.List; import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.serialization.ConfigurationSerialization; import org.bukkit.plugin.java.JavaPlugin; public class MyPlugin extends JavaPlugin { - + ArrayList<BlockModifier> modifiers; @Override public void onEnable() { - ArrayList<BlockModifier> modifiers = new ArrayList<>(); - modifiers.add(new ChangeBlockModifier(Material.COBBLESTONE, Material.DIAMOND_BLOCK, 1)); + ConfigurationSerialization.registerClass(ChangeBlockModifier.class); + + List<?> list = getConfig().getList("modifiers", new ArrayList<>()); + modifiers = new ArrayList<>(); + for (Object object : list) { + if (object instanceof BlockModifier) { + modifiers.add((BlockModifier) object); + } + } + getServer().getPluginManager().registerEvents(new ExplosionBlockHandler(modifiers), this); } @Override public void onDisable() { - } + + @Override + public FileConfiguration getConfig() { + if (super.getConfig().getCurrentPath().equals("")) { + super.saveDefaultConfig(); + } + return super.getConfig(); + } + + } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..e69de29 -- GitLab