From 4ccc4b8696fe9ca15cb14a5bd26ba97a47696814 Mon Sep 17 00:00:00 2001 From: Hermelijn15 Date: Wed, 15 Nov 2023 15:31:22 +0100 Subject: [PATCH] Reduce config calls by saving material list of unbreakable and protection blocks in memory. --- src/main/java/stanuwu/fragmentcore2/Config.java | 14 ++++++++++++++ .../fragmentcore2/features/ProtectionBlocks.java | 7 ++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/java/stanuwu/fragmentcore2/Config.java b/src/main/java/stanuwu/fragmentcore2/Config.java index 5bf0518..e4a077b 100644 --- a/src/main/java/stanuwu/fragmentcore2/Config.java +++ b/src/main/java/stanuwu/fragmentcore2/Config.java @@ -1,6 +1,7 @@ package stanuwu.fragmentcore2; import org.bukkit.ChatColor; +import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -8,11 +9,17 @@ import org.bukkit.plugin.Plugin; import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; import java.util.Map; public class Config implements CommandExecutor { private final Plugin plugin; + public static List protectedBlocks = new ArrayList<>(); + public static List unbreakableBlocks = new ArrayList<>(); + public Config(Plugin plugin) { this.plugin = plugin; } @@ -24,6 +31,13 @@ public static void initConfig(Plugin plugin) { } plugin.getConfig().options().copyDefaults(true); plugin.saveConfig(); + + for(String s : config.getStringList("fragmentcore.cannoning.protection-blocks")){ + protectedBlocks.add(Material.valueOf(s.toUpperCase(Locale.ROOT))); + } + for(String s : config.getStringList("fragmentcore.cannoning.unbreakable-blocks")){ + unbreakableBlocks.add(Material.valueOf(s.toUpperCase(Locale.ROOT))); + } } @Override diff --git a/src/main/java/stanuwu/fragmentcore2/features/ProtectionBlocks.java b/src/main/java/stanuwu/fragmentcore2/features/ProtectionBlocks.java index 91bfa91..28b295c 100644 --- a/src/main/java/stanuwu/fragmentcore2/features/ProtectionBlocks.java +++ b/src/main/java/stanuwu/fragmentcore2/features/ProtectionBlocks.java @@ -9,6 +9,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityExplodeEvent; +import stanuwu.fragmentcore2.Config; import stanuwu.fragmentcore2.FragmentCore2; import java.util.Iterator; @@ -22,7 +23,7 @@ public void onEntityExplode(EntityExplodeEvent e) { World world = explosionLoc.getWorld(); for (int y = -64; y <= 320; y++) { Material materialType = world.getBlockAt(explosionLoc.getBlockX(), y, explosionLoc.getBlockZ()).getType(); - if(FragmentCore2.config.getStringList("fragmentcore.cannoning.protection-blocks").contains(materialType.name().toLowerCase())){ + if(Config.protectedBlocks.contains(materialType)){ isProtected = true; break; } @@ -34,13 +35,13 @@ public void onEntityExplode(EntityExplodeEvent e) { while(iterator.hasNext()) { Block b = iterator.next(); - if(FragmentCore2.config.getStringList("fragmentcore.cannoning.unbreakable-blocks").contains(b.getType().name().toLowerCase())){ + if(Config.unbreakableBlocks.contains(b.getType())){ iterator.remove(); continue; } for (int y = -64; y <= 320; y++) { Material materialType = world.getBlockAt(b.getX(), y, b.getZ()).getType(); - if(FragmentCore2.config.getStringList("fragmentcore.cannoning.protection-blocks").contains(materialType.name().toLowerCase())){ + if(Config.protectedBlocks.contains(materialType)){ iterator.remove(); break; }