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