From 2e5577622bdb7c068be2a7272cc64626ebdd920b Mon Sep 17 00:00:00 2001 From: Xanadu13 Date: Sat, 9 Sep 2023 21:22:26 +0800 Subject: [PATCH] add command "/ed spawn [dragon] (world_name)" --- .../enderdragon/command/MainCommand.java | 87 ++++++++++++------- .../enderdragon/command/TabCompleter.java | 8 +- .../listener/DragonSpawnListener.java | 6 +- 3 files changed, 69 insertions(+), 32 deletions(-) diff --git a/src/main/java/pers/xanadu/enderdragon/command/MainCommand.java b/src/main/java/pers/xanadu/enderdragon/command/MainCommand.java index fc85e46..7a13021 100644 --- a/src/main/java/pers/xanadu/enderdragon/command/MainCommand.java +++ b/src/main/java/pers/xanadu/enderdragon/command/MainCommand.java @@ -31,34 +31,34 @@ public class MainCommand implements CommandExecutor { return false; } switch(args[0].toLowerCase()){ -// case "parse" : { -// if(!sender.isOp()) return false; + case "parse" : { + if(!sender.isOp()) return false; + + if(args.length == 2) GroovyManager.invoke("test.groovy", args[1]); + else if(args.length == 3) GroovyManager.invoke("test.groovy",args[1],Bukkit.getPlayer(args[2])); +// List entities = p.getNearbyEntities(50,50,50); +// entities.forEach(entity -> { +// if(entity instanceof org.bukkit.entity.EnderDragon){ +// org.bukkit.entity.EnderDragon dragon = (org.bukkit.entity.EnderDragon) entity; +// //dragon.setPhase(CHARGE_PLAYER); +// //SkillManager.launchDragonFireball(dragon,p.getLocation()); +// SkillManager.callEnderManReinforce(p,3); +// } +// // -// if(args.length == 2) GroovyManager.invoke("test.groovy", args[1]); -// else if(args.length == 3) GroovyManager.invoke("test.groovy",args[1],Bukkit.getPlayer(args[2])); -//// List entities = p.getNearbyEntities(50,50,50); -//// entities.forEach(entity -> { //// if(entity instanceof org.bukkit.entity.EnderDragon){ -//// org.bukkit.entity.EnderDragon dragon = (org.bukkit.entity.EnderDragon) entity; -//// //dragon.setPhase(CHARGE_PLAYER); -//// //SkillManager.launchDragonFireball(dragon,p.getLocation()); -//// SkillManager.callEnderManReinforce(p,3); +//// Bukkit.broadcastMessage(entity.getName());//1 Special Ender Dragon //// } -//// -//// -////// if(entity instanceof org.bukkit.entity.EnderDragon){ -////// Bukkit.broadcastMessage(entity.getName());//1 Special Ender Dragon -////// } -////// if(entity instanceof ComplexEntityPart){ -////// Bukkit.broadcastMessage(entity.getName());//1 Special Ender Dragon -////// } -////// if(entity instanceof ComplexLivingEntity){ -////// Bukkit.broadcastMessage(entity.getName());//8 EnderDragon -////// } -//// }); -// -// return true; -// } +//// if(entity instanceof ComplexEntityPart){ +//// Bukkit.broadcastMessage(entity.getName());//1 Special Ender Dragon +//// } +//// if(entity instanceof ComplexLivingEntity){ +//// Bukkit.broadcastMessage(entity.getName());//8 EnderDragon +//// } +// }); + + return true; + } case "action" : { if(!sender.isOp()){ Lang.sendFeedback(sender,Lang.command_no_permission); @@ -109,7 +109,34 @@ public class MainCommand implements CommandExecutor { } break; } - case "respawn" : {//ed respawn [world_name] + case "spawn" : {//ed spawn [dragon] (world_name) + if(!sender.hasPermission("ed.respawn")){ + Lang.sendFeedback(sender,Lang.command_no_permission); + return false; + } + if(args.length == 2){ + if(!(sender instanceof Player)){ + Lang.sendFeedback(sender,"§cConsole usage: /ed spawn [dragon] [world_name]"); + return false; + } + Player player = (Player) sender; + DragonManager.initiateRespawn(player,args[1]); + return true; + } + else if(args.length == 3){ + String world_name = args[2]; + DragonManager.initiateRespawn(sender,world_name,args[1]); + return true; + } + else{//if world_name contains " " + int size = args.length; + StringBuilder builder = new StringBuilder(args[2]); + for(int i=3;i arguments_ed = Arrays.asList("action", "drop", "reload", "respawn", "respawn_cd", "update"); + private static final List arguments_ed = Arrays.asList("action", "drop", "reload", "respawn", "respawn_cd", "spawn", "update"); private static final List arguments_drop = Arrays.asList("add", "clear", "edit", "remove", "gui"); private static final List arguments_action = Arrays.asList("tell:","tell-colorless:","tell-raw:","groovy:"); private static final List arguments_respawn_cd = Arrays.asList("get","remove","removeAll","set","start"); @@ -42,6 +42,9 @@ public class TabCompleter implements org.bukkit.command.TabCompleter { else if(args[0].equalsIgnoreCase("reload")){ result.addAll(arguments_reload); } + else if(args[0].equalsIgnoreCase("spawn")){ + result.addAll(DragonManager.dragon_names); + } else if(args[0].equalsIgnoreCase("action")){ Stream stream = Bukkit.getOnlinePlayers().stream().map(Player::getName); return filterResult(stream,Arrays.asList("me"),args[args.length-1]); @@ -60,6 +63,9 @@ public class TabCompleter implements org.bukkit.command.TabCompleter { result.addAll(WorldManager.worlds); } } + else if("spawn".equals(args[0])){ + result.addAll(WorldManager.worlds); + } else if("action".equals(args[0])){ result.addAll(arguments_action); } diff --git a/src/main/java/pers/xanadu/enderdragon/listener/DragonSpawnListener.java b/src/main/java/pers/xanadu/enderdragon/listener/DragonSpawnListener.java index 005997c..2e9c518 100644 --- a/src/main/java/pers/xanadu/enderdragon/listener/DragonSpawnListener.java +++ b/src/main/java/pers/xanadu/enderdragon/listener/DragonSpawnListener.java @@ -27,7 +27,11 @@ public class DragonSpawnListener implements Listener { if(!(e.getEntity() instanceof EnderDragon)) return; if(Config.blacklist_worlds.contains(e.getEntity().getWorld().getName())) return; EnderDragon dragon = (EnderDragon) e.getEntity(); - MyDragon myDragon = judge(); + MyDragon myDragon = null; + if(e.getSpawnReason() == CreatureSpawnEvent.SpawnReason.DEFAULT){ + myDragon = getDesignatedDragon(dragon.getWorld()); + } + if(myDragon == null) myDragon = judge(); if(myDragon == null) { Lang.warn("special_dragon_jude_mode setting error!"); return;