From d91137d920365da9be596af8c259e3d263b0c4fb Mon Sep 17 00:00:00 2001 From: TylerS1066 Date: Fri, 13 Sep 2024 20:15:34 -0500 Subject: [PATCH] Revert "Add #118 + Small refactor (#135)" (#140) This reverts commit bbda4b23b2e6a01f76a666298553f00fa362ee9f. --- .../movecraft/combat/MovecraftCombat.java | 83 +++++++++---------- .../movecraft/combat/features/Bleedfix.java | 44 ---------- .../combat/features/DurabilityOverride.java | 19 ++++- src/main/resources/config.yml | 1 - 4 files changed, 53 insertions(+), 94 deletions(-) delete mode 100644 src/main/java/net/countercraft/movecraft/combat/features/Bleedfix.java diff --git a/src/main/java/net/countercraft/movecraft/combat/MovecraftCombat.java b/src/main/java/net/countercraft/movecraft/combat/MovecraftCombat.java index 14898537..51f7c392 100644 --- a/src/main/java/net/countercraft/movecraft/combat/MovecraftCombat.java +++ b/src/main/java/net/countercraft/movecraft/combat/MovecraftCombat.java @@ -19,8 +19,6 @@ import net.countercraft.movecraft.combat.listener.CraftCollisionExplosionListener; import net.countercraft.movecraft.combat.listener.ExplosionListener; import net.countercraft.movecraft.combat.localisation.I18nSupport; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import java.io.File; @@ -65,81 +63,74 @@ public void onEnable() { // Load localisation and features from config - FileConfiguration config = getConfig(); - I18nSupport.load(config); + I18nSupport.load(getConfig()); - CombatRelease.load(config); + CombatRelease.load(getConfig()); - Directors.load(config); - AADirectors.load(config); - ArrowDirectors.load(config); - CannonDirectors.load(config); + Directors.load(getConfig()); + AADirectors.load(getConfig()); + ArrowDirectors.load(getConfig()); + CannonDirectors.load(getConfig()); - MovementTracers.load(config); - TNTTracers.load(config); + MovementTracers.load(getConfig()); + TNTTracers.load(getConfig()); - DamageTracking.load(config); + DamageTracking.load(getConfig()); - AddFiresToHitbox.load(config); - AntiRadar.load(config); - ContactExplosives.load(config); - DurabilityOverride.load(config); - FireballLifespan.load(config); - FireballPenetration.load(config); - ReImplementTNTTranslocation.load(config); - BlockBehaviorOverride.load(config); + AddFiresToHitbox.load(getConfig()); + AntiRadar.load(getConfig()); + ContactExplosives.load(getConfig()); + DurabilityOverride.load(getConfig()); + FireballLifespan.load(getConfig()); + FireballPenetration.load(getConfig()); + ReImplementTNTTranslocation.load(getConfig()); + BlockBehaviorOverride.load(getConfig()); // Register event translation listeners - PluginManager pluginManager = getServer().getPluginManager(); - pluginManager.registerEvents(new CraftCollisionExplosionListener(), this); - pluginManager.registerEvents(new ExplosionListener(), this); - + getServer().getPluginManager().registerEvents(new CraftCollisionExplosionListener(), this); + getServer().getPluginManager().registerEvents(new ExplosionListener(), this); // Register features var combatRelease = new CombatRelease(); - pluginManager.registerEvents(combatRelease, this); + getServer().getPluginManager().registerEvents(combatRelease, this); combatRelease.runTaskTimer(this, 0, 200); // Every 10 seconds var aaDirectors = new AADirectors(); - pluginManager.registerEvents(aaDirectors, this); + getServer().getPluginManager().registerEvents(aaDirectors, this); aaDirectors.runTaskTimer(this, 0, 1); // Every tick var arrowDirectors = new ArrowDirectors(); - pluginManager.registerEvents(arrowDirectors, this); + getServer().getPluginManager().registerEvents(arrowDirectors, this); arrowDirectors.runTaskTimer(this, 0, 1); // Every tick var cannonDirectors = new CannonDirectors(); - pluginManager.registerEvents(cannonDirectors, this); + getServer().getPluginManager().registerEvents(cannonDirectors, this); cannonDirectors.runTaskTimer(this, 0, 1); // Every tick var playerManager = new PlayerManager(); - pluginManager.registerEvents(playerManager, this); - pluginManager.registerEvents(new MovementTracers(playerManager), this); + getServer().getPluginManager().registerEvents(playerManager, this); + getServer().getPluginManager().registerEvents(new MovementTracers(playerManager), this); var tntTracers = new TNTTracers(playerManager); - pluginManager.registerEvents(tntTracers, this); + getServer().getPluginManager().registerEvents(tntTracers, this); tntTracers.runTaskTimer(this, 0, 1); // Every tick var damageTracking = new DamageTracking(); - pluginManager.registerEvents(damageTracking, this); - pluginManager.registerEvents(new FireballTracking(damageTracking, aaDirectors), this); - pluginManager.registerEvents(new TNTTracking(damageTracking, cannonDirectors), this); + getServer().getPluginManager().registerEvents(damageTracking, this); + getServer().getPluginManager().registerEvents(new FireballTracking(damageTracking, aaDirectors), this); + getServer().getPluginManager().registerEvents(new TNTTracking(damageTracking, cannonDirectors), this); - pluginManager.registerEvents(new AddFiresToHitbox(), this); - pluginManager.registerEvents(new AntiRadar(), this); + getServer().getPluginManager().registerEvents(new AddFiresToHitbox(), this); + getServer().getPluginManager().registerEvents(new AntiRadar(), this); var contactExplosives = new ContactExplosives(); - pluginManager.registerEvents(contactExplosives, this); + getServer().getPluginManager().registerEvents(contactExplosives, this); contactExplosives.runTaskTimer(this, 0, 1); // Every tick - pluginManager.registerEvents(new DurabilityOverride(), this); + getServer().getPluginManager().registerEvents(new DurabilityOverride(), this); var fireballLifespan = new FireballLifespan(); - pluginManager.registerEvents(fireballLifespan, this); + getServer().getPluginManager().registerEvents(fireballLifespan, this); fireballLifespan.runTaskTimer(this, 0, 20); // Every 1 second - pluginManager.registerEvents(new FireballLifespan(), this); - pluginManager.registerEvents(new FireballPenetration(), this); - pluginManager.registerEvents(new ReImplementTNTTranslocation(), this); + getServer().getPluginManager().registerEvents(new FireballLifespan(), this); + getServer().getPluginManager().registerEvents(new FireballPenetration(), this); + getServer().getPluginManager().registerEvents(new ReImplementTNTTranslocation(), this); - if (config.contains("BleedfixExplosion") && config.getBoolean("BleedfixExplosion")) { - // don't bother registering the event if the feature is disabled - pluginManager.registerEvents(new Bleedfix(), this); - } // Register commands getCommand("tnttracersetting").setExecutor(new TNTTracerSettingCommand(playerManager)); diff --git a/src/main/java/net/countercraft/movecraft/combat/features/Bleedfix.java b/src/main/java/net/countercraft/movecraft/combat/features/Bleedfix.java deleted file mode 100644 index 684dfe54..00000000 --- a/src/main/java/net/countercraft/movecraft/combat/features/Bleedfix.java +++ /dev/null @@ -1,44 +0,0 @@ -package net.countercraft.movecraft.combat.features; - -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.entity.EntityType; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.EntityExplodeEvent; -import org.jetbrains.annotations.NotNull; - -import java.util.HashSet; -import java.util.Set; - -public class Bleedfix implements Listener { - - @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) - public void onEntityExplode(@NotNull EntityExplodeEvent e) { - - if (e.getEntityType() != EntityType.PRIMED_TNT) - return; - - Set removeList = new HashSet<>(); - for (Block b : e.blockList()) { - // remove the block if no adjacent blocks are air (IE: the explosion skipped a block) - if (!nextToAir(b)) { - removeList.add(b); - } - } - - e.blockList().removeAll(removeList); - } - - private boolean nextToAir(@NotNull Block b) { - for (BlockFace face : BlockFace.values()) { - if (face == BlockFace.SELF) continue; - - if (b.getRelative(face).isEmpty()) - return true; - } - - return false; - } -} diff --git a/src/main/java/net/countercraft/movecraft/combat/features/DurabilityOverride.java b/src/main/java/net/countercraft/movecraft/combat/features/DurabilityOverride.java index 5d8f88f6..51f3dc94 100644 --- a/src/main/java/net/countercraft/movecraft/combat/features/DurabilityOverride.java +++ b/src/main/java/net/countercraft/movecraft/combat/features/DurabilityOverride.java @@ -3,6 +3,7 @@ import net.countercraft.movecraft.util.Tags; import org.bukkit.Material; import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.EntityType; import org.bukkit.event.EventHandler; @@ -20,7 +21,6 @@ public class DurabilityOverride implements Listener { public static Map DurabilityOverride = null; - private static final Random random = new Random(); public static void load(@NotNull FileConfiguration config) { if (!config.contains("DurabilityOverride")) @@ -37,6 +37,14 @@ public static void load(@NotNull FileConfiguration config) { } } + + private boolean nextToAir(@NotNull Block b) { + return b.getRelative(BlockFace.UP).isEmpty() || b.getRelative(BlockFace.DOWN).isEmpty() + || b.getRelative(BlockFace.EAST).isEmpty() || b.getRelative(BlockFace.WEST).isEmpty() + || b.getRelative(BlockFace.NORTH).isEmpty() || b.getRelative(BlockFace.SOUTH).isEmpty(); + } + + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onEntityExplode(@NotNull EntityExplodeEvent e) { if (DurabilityOverride == null) @@ -46,13 +54,18 @@ public void onEntityExplode(@NotNull EntityExplodeEvent e) { Set removeList = new HashSet<>(); for (Block b : e.blockList()) { + // remove the block if no adjacent blocks are air (IE: the explosion skipped a block) + if (!nextToAir(b)) { + removeList.add(b); + continue; + } + if (!DurabilityOverride.containsKey(b.getType())) continue; // Generate a random number based on the location and system time long seed = (long) b.getX() * b.getY() * b.getZ() + (System.currentTimeMillis() >> 12); - random.setSeed(seed); //don't create random each time just change the seed - int chance = random.nextInt(100); + int chance = new Random(seed).nextInt(100); if (chance > DurabilityOverride.get(b.getType())) continue; diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 83f721a9..635ee87b 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -37,7 +37,6 @@ ContactExplosivesMinImpulse: 0.35 # Minimum velocity for contact explosives to t DurabilityOverride: # List of block IDs: ignore percent END_STONE: 80 END_STONE_BRICKS: 80 -BleedfixExplosion: true # Fireball Lifespan FireballLifespan: 6 # Lifespan of fireballs in seconds