add command "/ed spawn [dragon] (world_name)"

This commit is contained in:
Xanadu13
2023-09-09 21:22:26 +08:00
parent 52f2728bd0
commit 2e5577622b
3 changed files with 69 additions and 32 deletions
@@ -31,34 +31,34 @@ public class MainCommand implements CommandExecutor {
return false; return false;
} }
switch(args[0].toLowerCase()){ switch(args[0].toLowerCase()){
// case "parse" : { case "parse" : {
// if(!sender.isOp()) return false; if(!sender.isOp()) return false;
//
// if(args.length == 2) GroovyManager.invoke("test.groovy", args[1]); 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])); else if(args.length == 3) GroovyManager.invoke("test.groovy",args[1],Bukkit.getPlayer(args[2]));
//// List<Entity> entities = p.getNearbyEntities(50,50,50); // List<Entity> entities = p.getNearbyEntities(50,50,50);
//// entities.forEach(entity -> { // entities.forEach(entity -> {
//// if(entity instanceof org.bukkit.entity.EnderDragon){ // if(entity instanceof org.bukkit.entity.EnderDragon){
//// org.bukkit.entity.EnderDragon dragon = (org.bukkit.entity.EnderDragon) entity; // org.bukkit.entity.EnderDragon dragon = (org.bukkit.entity.EnderDragon) entity;
//// //dragon.setPhase(CHARGE_PLAYER); // //dragon.setPhase(CHARGE_PLAYER);
//// //SkillManager.launchDragonFireball(dragon,p.getLocation()); // //SkillManager.launchDragonFireball(dragon,p.getLocation());
//// SkillManager.callEnderManReinforce(p,3); // SkillManager.callEnderManReinforce(p,3);
//// }
////
////
////// 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 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;
}
case "action" : { case "action" : {
if(!sender.isOp()){ if(!sender.isOp()){
Lang.sendFeedback(sender,Lang.command_no_permission); Lang.sendFeedback(sender,Lang.command_no_permission);
@@ -109,7 +109,34 @@ public class MainCommand implements CommandExecutor {
} }
break; 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<size;i++) builder.append(" ").append(args[i]);
DragonManager.initiateRespawn(sender,builder.toString(),args[1]);
return true;
}
}
case "respawn" : {//ed respawn (world_name)
if(!sender.hasPermission("ed.respawn")){ if(!sender.hasPermission("ed.respawn")){
Lang.sendFeedback(sender,Lang.command_no_permission); Lang.sendFeedback(sender,Lang.command_no_permission);
return false; return false;
@@ -120,19 +147,19 @@ public class MainCommand implements CommandExecutor {
return false; return false;
} }
Player player = (Player) sender; Player player = (Player) sender;
EnderDragon.getInstance().getDragonManager().initiateRespawn(player); DragonManager.initiateRespawn(player);
return true; return true;
} }
else if(args.length == 2){ else if(args.length == 2){
String world_name = args[1]; String world_name = args[1];
EnderDragon.getInstance().getDragonManager().initiateRespawn(sender,world_name); DragonManager.initiateRespawn(sender,world_name);
return true; return true;
} }
else { else {//if world_name contains " "
int size = args.length; int size = args.length;
StringBuilder builder = new StringBuilder(args[1]); StringBuilder builder = new StringBuilder(args[1]);
for(int i=2;i<size;i++) builder.append(" ").append(args[i]); for(int i=2;i<size;i++) builder.append(" ").append(args[i]);
EnderDragon.getInstance().getDragonManager().initiateRespawn(sender,builder.toString()); DragonManager.initiateRespawn(sender,builder.toString());
return true; return true;
} }
} }
@@ -17,7 +17,7 @@ import java.util.stream.Stream;
public class TabCompleter implements org.bukkit.command.TabCompleter { public class TabCompleter implements org.bukkit.command.TabCompleter {
private static final List<String> arguments_ed = Arrays.asList("action", "drop", "reload", "respawn", "respawn_cd", "update"); private static final List<String> arguments_ed = Arrays.asList("action", "drop", "reload", "respawn", "respawn_cd", "spawn", "update");
private static final List<String> arguments_drop = Arrays.asList("add", "clear", "edit", "remove", "gui"); private static final List<String> arguments_drop = Arrays.asList("add", "clear", "edit", "remove", "gui");
private static final List<String> arguments_action = Arrays.asList("tell:","tell-colorless:","tell-raw:","groovy:"); private static final List<String> arguments_action = Arrays.asList("tell:","tell-colorless:","tell-raw:","groovy:");
private static final List<String> arguments_respawn_cd = Arrays.asList("get","remove","removeAll","set","start"); private static final List<String> 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")){ else if(args[0].equalsIgnoreCase("reload")){
result.addAll(arguments_reload); result.addAll(arguments_reload);
} }
else if(args[0].equalsIgnoreCase("spawn")){
result.addAll(DragonManager.dragon_names);
}
else if(args[0].equalsIgnoreCase("action")){ else if(args[0].equalsIgnoreCase("action")){
Stream<String> stream = Bukkit.getOnlinePlayers().stream().map(Player::getName); Stream<String> stream = Bukkit.getOnlinePlayers().stream().map(Player::getName);
return filterResult(stream,Arrays.asList("me"),args[args.length-1]); 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); result.addAll(WorldManager.worlds);
} }
} }
else if("spawn".equals(args[0])){
result.addAll(WorldManager.worlds);
}
else if("action".equals(args[0])){ else if("action".equals(args[0])){
result.addAll(arguments_action); result.addAll(arguments_action);
} }
@@ -27,7 +27,11 @@ public class DragonSpawnListener implements Listener {
if(!(e.getEntity() instanceof EnderDragon)) return; if(!(e.getEntity() instanceof EnderDragon)) return;
if(Config.blacklist_worlds.contains(e.getEntity().getWorld().getName())) return; if(Config.blacklist_worlds.contains(e.getEntity().getWorld().getName())) return;
EnderDragon dragon = (EnderDragon) e.getEntity(); 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) { if(myDragon == null) {
Lang.warn("special_dragon_jude_mode setting error!"); Lang.warn("special_dragon_jude_mode setting error!");
return; return;