Fix pregen command parameters

This commit is contained in:
BuildTools 2020-11-03 15:50:01 +01:00
parent 44358c122f
commit 4c24c570a8

View File

@ -14,7 +14,7 @@ public class CommandIrisPregen extends MortarCommand
public CommandIrisPregen() public CommandIrisPregen()
{ {
super("pregen"); super("pregen");
setDescription("Pregen this world"); setDescription("Pregen this world with optional parameters: '1k' = 1000 by 1000 blocks, '1c' = 1 by 1 chunks, and '1r' = 32 by 32 chunks");
requiresPermission(Iris.perm.studio); requiresPermission(Iris.perm.studio);
setCategory("Pregen"); setCategory("Pregen");
} }
@ -28,8 +28,10 @@ public class CommandIrisPregen extends MortarCommand
list.add("1000"); list.add("1000");
list.add("10k"); list.add("10k");
list.add("25k"); list.add("25k");
list.add("chunksAcross=20"); list.add("10c");
list.add("regionsAcross=8"); list.add("25c");
list.add("5r");
list.add("10r");
} }
@Override @Override
@ -41,7 +43,7 @@ public class CommandIrisPregen extends MortarCommand
return true; return true;
} }
if(args[0].equalsIgnoreCase("stop")) if(args[0].equalsIgnoreCase("stop") || args[0].equalsIgnoreCase("x"))
{ {
if(PregenJob.task == -1) if(PregenJob.task == -1)
{ {
@ -77,15 +79,22 @@ public class CommandIrisPregen extends MortarCommand
} }
return true; return true;
} } else
if(sender.isPlayer()) if(sender.isPlayer())
{ {
Player p = sender.player(); Player p = sender.player();
World world = p.getWorld(); World world = p.getWorld();
try {
new PregenJob(world, getVal(args[0]), sender, () -> new PregenJob(world, getVal(args[0]), sender, () ->
{ {
}); });
} catch (NumberFormatException e){
sender.sendMessage("Invalid argument in command");
return true;
} catch (NullPointerException e){
sender.sendMessage("No radius specified");
}
return true; return true;
} }
@ -98,26 +107,24 @@ public class CommandIrisPregen extends MortarCommand
} }
private int getVal(String arg) { private int getVal(String arg) {
if(arg.toLowerCase().endsWith("c") || arg.toLowerCase().endsWith("chunks"))
{
return Integer.valueOf(arg.toLowerCase().replaceAll("\\Qc\\E", "").replaceAll("\\Qchunks\\E", "")) * 16;
}
if(arg.toLowerCase().endsWith("r") || arg.toLowerCase().endsWith("regions"))
{
return Integer.valueOf(arg.toLowerCase().replaceAll("\\Qr\\E", "").replaceAll("\\Qregions\\E", "")) * 512;
}
if(arg.toLowerCase().endsWith("k")) if(arg.toLowerCase().endsWith("k"))
{ {
return Integer.valueOf(arg.toLowerCase().replaceAll("\\Qk\\E", "")) * 1000; return Integer.valueOf(arg.toLowerCase().replaceAll("\\Qk\\E", "")) * 1000;
} }
if(arg.toLowerCase().contains("chunksAcross="))
{
return Integer.valueOf(arg.toLowerCase().replaceAll("\\QchunksAcross=\\E", "")) * 16;
}
if(arg.toLowerCase().endsWith("regionsAcross="))
{
return Integer.valueOf(arg.toLowerCase().replaceAll("\\QregionsAcross=\\E", "")) * 16;
}
else
{
return Integer.valueOf(arg.toLowerCase()); return Integer.valueOf(arg.toLowerCase());
} }
}
@Override @Override
protected String getArgsUsage() protected String getArgsUsage()