From 1f8cc45f32cc02ca4bfadad960844225d4c5e28f Mon Sep 17 00:00:00 2001 From: Xanadu13 Date: Wed, 31 Jul 2024 14:58:57 +0800 Subject: [PATCH] 1.20.5+ bug fix --- .../java/pers/xanadu/enderdragon/EnderDragon.java | 8 ++++++-- .../enderdragon/listener/DragonFireballListener.java | 12 ++++++++++-- .../xanadu/enderdragon/listener/PlayerListener.java | 3 ++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/java/pers/xanadu/enderdragon/EnderDragon.java b/src/main/java/pers/xanadu/enderdragon/EnderDragon.java index f975a23..d8436b1 100644 --- a/src/main/java/pers/xanadu/enderdragon/EnderDragon.java +++ b/src/main/java/pers/xanadu/enderdragon/EnderDragon.java @@ -34,6 +34,7 @@ import java.io.*; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.Optional; import static pers.xanadu.enderdragon.util.UpdateChecker.checkUpdate; @@ -203,8 +204,11 @@ public final class EnderDragon extends JavaPlugin { Objects.requireNonNull(getCommand("enderdragon")).setTabCompleter(new TabCompleter()); } private void unregisterCommands(){ - Objects.requireNonNull(getCommand("enderdragon")).setExecutor(null); - Objects.requireNonNull(getCommand("enderdragon")).setTabCompleter(null); + Optional.ofNullable(getCommand("enderdragon")) + .ifPresent(command -> { + command.setExecutor(null); + command.setTabCompleter(null); + }); } private void loadConfig(){ saveDefaultConfig(); diff --git a/src/main/java/pers/xanadu/enderdragon/listener/DragonFireballListener.java b/src/main/java/pers/xanadu/enderdragon/listener/DragonFireballListener.java index 589ceda..0555014 100644 --- a/src/main/java/pers/xanadu/enderdragon/listener/DragonFireballListener.java +++ b/src/main/java/pers/xanadu/enderdragon/listener/DragonFireballListener.java @@ -12,6 +12,7 @@ import org.bukkit.potion.PotionEffect; import pers.xanadu.enderdragon.manager.DragonManager; import pers.xanadu.enderdragon.manager.WorldManager; import pers.xanadu.enderdragon.metadata.MyDragon; +import pers.xanadu.enderdragon.util.Version; import static pers.xanadu.enderdragon.manager.DragonManager.getSpecialKey; @@ -34,6 +35,7 @@ public class DragonFireballListener implements Listener { // } // // } + private static final Particle ILLEGAL_SPELL_MOB = Version.NBT_UPDATE?null:Particle.valueOf("SPELL_MOB"); @EventHandler(priority = EventPriority.HIGH) public void OnEffectCloudSpawn(final EntitySpawnEvent e){ @@ -51,8 +53,14 @@ public class DragonFireballListener implements Listener { effectCloud.setRadiusPerTick((float) myDragon.effect_cloud_expand_speed/20f); effectCloud.setDuration(myDragon.effect_cloud_duration * 20); if(myDragon.effect_cloud_color_R != -1){ - effectCloud.setParticle(Particle.SPELL_MOB); - effectCloud.setColor(Color.fromRGB(myDragon.effect_cloud_color_R,myDragon.effect_cloud_color_G,myDragon.effect_cloud_color_B)); + Color color = Color.fromRGB(myDragon.effect_cloud_color_R,myDragon.effect_cloud_color_G,myDragon.effect_cloud_color_B); + if (Version.NBT_UPDATE){ + effectCloud.setParticle(Particle.ENTITY_EFFECT, color); + } + else{ + effectCloud.setParticle(ILLEGAL_SPELL_MOB); + } + effectCloud.setColor(color); } effectCloud.clearCustomEffects(); for(PotionEffect effect : myDragon.effect_cloud_potion){ diff --git a/src/main/java/pers/xanadu/enderdragon/listener/PlayerListener.java b/src/main/java/pers/xanadu/enderdragon/listener/PlayerListener.java index 382ea85..aa2484b 100644 --- a/src/main/java/pers/xanadu/enderdragon/listener/PlayerListener.java +++ b/src/main/java/pers/xanadu/enderdragon/listener/PlayerListener.java @@ -15,6 +15,7 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.ItemStack; import pers.xanadu.enderdragon.config.Config; +import pers.xanadu.enderdragon.manager.DragonManager; import pers.xanadu.enderdragon.manager.GlowManager; import java.util.Collection; @@ -57,7 +58,7 @@ public class PlayerListener implements Listener { int amount = item.getAmount(); e.getItem().setAmount(amount-1); } - EnderCrystal crystal = (EnderCrystal) world.spawnEntity(cen,EntityType.ENDER_CRYSTAL); + EnderCrystal crystal = (EnderCrystal) world.spawnEntity(cen, DragonManager.getENDER_CRYSTAL()); crystal.setShowingBottom(false); }