diff --git a/pom.xml b/pom.xml index 21aa7d91f219fc31cf2a48407dc740abd9b674a7..6b85b6ff56ce98cabb705707172a15ece4713456 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 97c59869047402a278d42235c2330b5defa064ae..a89eaa2478106c34009705f27592485b96dfcd83 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 a3d1edd9dd135e04ef2b2ed3d11841398f01547e..14b6020885affaa97566fbe5c5aabc7076e3e115 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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391