From c953aaa8833a27c267eaf109a8e42e68caa669a6 Mon Sep 17 00:00:00 2001 From: Thiago Gebrim Date: Tue, 15 Aug 2023 07:11:27 -0300 Subject: [PATCH] feat: added config to disable fly to break specic blocks --- .../spazzinq/flightcontrol/FlightControl.java | 3 +- .../BlockBreakFlyDisableListener.java | 33 +++++++++++++++++++ .../flightcontrol/manager/ConfManager.java | 6 ++++ .../flightcontrol/manager/LangManager.java | 3 ++ FlightControl/src/main/resources/config.yml | 7 ++++ FlightControl/src/main/resources/lang_en.yml | 1 + FlightControl/src/main/resources/lang_pt.yml | 1 + 7 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 FlightControl/src/main/java/org/spazzinq/flightcontrol/listener/BlockBreakFlyDisableListener.java diff --git a/FlightControl/src/main/java/org/spazzinq/flightcontrol/FlightControl.java b/FlightControl/src/main/java/org/spazzinq/flightcontrol/FlightControl.java index e8c7252c..a3ea0714 100644 --- a/FlightControl/src/main/java/org/spazzinq/flightcontrol/FlightControl.java +++ b/FlightControl/src/main/java/org/spazzinq/flightcontrol/FlightControl.java @@ -15,6 +15,7 @@ import org.bukkit.plugin.Plugin; import org.bukkit.scheduler.BukkitRunnable; import org.spazzinq.flightcontrol.command.*; +import org.spazzinq.flightcontrol.listener.BlockBreakFlyDisableListener; import org.spazzinq.flightcontrol.manager.*; import org.spazzinq.flightcontrol.multiversion.Particle; import org.spazzinq.flightcontrol.multiversion.current.Particle13; @@ -67,7 +68,7 @@ public void onEnable() { updateManager.checkForUpdate(); } }.runTaskAsynchronously(this); - + getServer().getPluginManager().registerEvents(new BlockBreakFlyDisableListener(this), this); // Start bStats new MetricsLite(this, 4704); // 4704 = plugin ID } diff --git a/FlightControl/src/main/java/org/spazzinq/flightcontrol/listener/BlockBreakFlyDisableListener.java b/FlightControl/src/main/java/org/spazzinq/flightcontrol/listener/BlockBreakFlyDisableListener.java new file mode 100644 index 00000000..a12792aa --- /dev/null +++ b/FlightControl/src/main/java/org/spazzinq/flightcontrol/listener/BlockBreakFlyDisableListener.java @@ -0,0 +1,33 @@ +package org.spazzinq.flightcontrol.listener; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockBreakEvent; +import org.spazzinq.flightcontrol.FlightControl; + +public class BlockBreakFlyDisableListener implements Listener { + private final FlightControl pl; + + public BlockBreakFlyDisableListener(FlightControl pl) { + this.pl = pl; + } + + @EventHandler + public void onBlockBreak(BlockBreakEvent event) { + Player player = event.getPlayer(); + Material blockType = event.getBlock().getType(); + + if (pl.getConfManager().getBlockBreakDisableList().contains(blockType.name())) { + if (player.isFlying()) { + player.setAllowFlight(false); + player.setFlying(false); + + String message = org.bukkit.ChatColor.translateAlternateColorCodes('&', + pl.getLangManager().getBlockBreakDisable().replace("%block%", blockType.name().toLowerCase())); + player.sendMessage(message); + } + } + } +} diff --git a/FlightControl/src/main/java/org/spazzinq/flightcontrol/manager/ConfManager.java b/FlightControl/src/main/java/org/spazzinq/flightcontrol/manager/ConfManager.java index 252afa43..9606a26a 100644 --- a/FlightControl/src/main/java/org/spazzinq/flightcontrol/manager/ConfManager.java +++ b/FlightControl/src/main/java/org/spazzinq/flightcontrol/manager/ConfManager.java @@ -18,6 +18,7 @@ import java.io.File; import java.io.IOException; import java.util.Collections; +import java.util.List; public class ConfManager extends StorageManager { @Getter @Setter private boolean autoEnable; @@ -40,6 +41,8 @@ public class ConfManager extends StorageManager { @Getter @Setter private String flyCommandName; @Getter @Setter private String aeEnchantName; + @Getter @Setter private List blockBreakDisableList; + public ConfManager() { super("config.yml"); @@ -76,6 +79,9 @@ public ConfManager() { flyCommandName = conf.getString("settings.fly_command_name", "fly"); aeEnchantName = conf.getString("settings.ae_enchant_name"); + // Lists + blockBreakDisableList = conf.getStringList("block_break_disable_list"); + // Load other stuff that have separate methods loadSounds(); loadTrail(); diff --git a/FlightControl/src/main/java/org/spazzinq/flightcontrol/manager/LangManager.java b/FlightControl/src/main/java/org/spazzinq/flightcontrol/manager/LangManager.java index 0c884fb5..df13f5a3 100644 --- a/FlightControl/src/main/java/org/spazzinq/flightcontrol/manager/LangManager.java +++ b/FlightControl/src/main/java/org/spazzinq/flightcontrol/manager/LangManager.java @@ -75,6 +75,8 @@ public class LangManager extends StorageManager { @Getter private String tempFlyDisabled; @Getter private String tempFlyCheck; @Getter private String tempFlyUsage = ""; + @Getter private String blockBreakDisable; + public LangManager() { super("lang.yml"); @@ -147,6 +149,7 @@ public LangManager() { tempFlyDisable = lang.getString("admin.tempfly.disable"); tempFlyDisabled = lang.getString("admin.tempfly.disabled"); tempFlyCheck = lang.getString("admin.tempfly.check"); + blockBreakDisable = lang.getString("player.flight.block_break_disable"); } @Override protected void updateFormatting() { diff --git a/FlightControl/src/main/resources/config.yml b/FlightControl/src/main/resources/config.yml index 73e12daf..8f2b3f80 100644 --- a/FlightControl/src/main/resources/config.yml +++ b/FlightControl/src/main/resources/config.yml @@ -56,6 +56,13 @@ trail: # Color picker (RBG): https://www.google.com/search?q=color+picker rgb: "0,0,0" +block_break_disable_list: + - BARRIER + - CARROTS + - POTATOES + # - SUGAR_CANE + # Add more blocks + sounds: # Plays the sounds on EVERY double tap of the space bar every_enable: false diff --git a/FlightControl/src/main/resources/lang_en.yml b/FlightControl/src/main/resources/lang_en.yml index c4206acf..2bb3294c 100644 --- a/FlightControl/src/main/resources/lang_en.yml +++ b/FlightControl/src/main/resources/lang_en.yml @@ -22,6 +22,7 @@ player: can_enable: '&bYou can use /fly now.' cannot_enable: '&cYou cannot fly right now.' height_denied: '&cYou cannot fly this high!' + block_break_disable: "&cFlight disabled when breaking %block%!" trail: enabled: '&aYou enabled the flight trail!' disabled: '&cYou disabled the flight trail!' diff --git a/FlightControl/src/main/resources/lang_pt.yml b/FlightControl/src/main/resources/lang_pt.yml index 618c590f..1f99b37d 100644 --- a/FlightControl/src/main/resources/lang_pt.yml +++ b/FlightControl/src/main/resources/lang_pt.yml @@ -21,6 +21,7 @@ player: can_enable: '&bVocê pode usar o /fly agora.' cannot_enable: '&cVocê não pode voar agora.' height_denied: '&cVocê não pode voar tão alto!' + block_break_disable: "&cVoo desativado ao quebrar %block%!" trail: enabled: '&aVocê ativou o rastro ao voar!' disabled: '&cVocê desativou o rastro ao voar!'