mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-19 10:43:14 +00:00
Finalize regen command
This commit is contained in:
parent
4a82def974
commit
9bc65601c0
@ -20,6 +20,9 @@ public class CommandIris extends MortarCommand
|
|||||||
@Command
|
@Command
|
||||||
private CommandIrisObject object;
|
private CommandIrisObject object;
|
||||||
|
|
||||||
|
@Command
|
||||||
|
private CommandIrisRegen regen;
|
||||||
|
|
||||||
@Command
|
@Command
|
||||||
private CommandIrisDownload download;
|
private CommandIrisDownload download;
|
||||||
|
|
||||||
|
@ -1,134 +1,75 @@
|
|||||||
package com.volmit.iris.manager.command;
|
package com.volmit.iris.manager.command;
|
||||||
|
|
||||||
import com.volmit.iris.util.KList;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
|
import com.volmit.iris.scaffold.IrisWorlds;
|
||||||
|
import com.volmit.iris.util.KList;
|
||||||
import com.volmit.iris.util.MortarCommand;
|
import com.volmit.iris.util.MortarCommand;
|
||||||
import com.volmit.iris.util.MortarSender;
|
import com.volmit.iris.util.MortarSender;
|
||||||
import com.volmit.iris.util.PregenJob;
|
import com.volmit.iris.util.Spiraler;
|
||||||
|
|
||||||
public class CommandIrisPregen extends MortarCommand
|
public class CommandIrisRegen extends MortarCommand
|
||||||
{
|
{
|
||||||
public CommandIrisPregen()
|
public CommandIrisRegen()
|
||||||
{
|
{
|
||||||
super("pregen");
|
super("regen");
|
||||||
setDescription("Pregen this world with optional parameters: '1k' = 1000 by 1000 blocks, '1c' = 1 by 1 chunks, and '1r' = 32 by 32 chunks");
|
setDescription("Regenerate chunks around you (iris worlds only)");
|
||||||
requiresPermission(Iris.perm.studio);
|
requiresPermission(Iris.perm.studio);
|
||||||
setCategory("Pregen");
|
setCategory("Regen");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addTabOptions(MortarSender sender, String[] args, KList<String> list) {
|
public void addTabOptions(MortarSender sender, String[] args, KList<String> list) {
|
||||||
list.add("stop");
|
|
||||||
list.add("pause");
|
|
||||||
list.add("resume");
|
|
||||||
list.add("500");
|
|
||||||
list.add("1000");
|
|
||||||
list.add("10k");
|
|
||||||
list.add("25k");
|
|
||||||
list.add("10c");
|
|
||||||
list.add("25c");
|
|
||||||
list.add("5r");
|
|
||||||
list.add("10r");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean handle(MortarSender sender, String[] args)
|
public boolean handle(MortarSender sender, String[] args)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
if(args.length == 0)
|
if(args.length == 0)
|
||||||
{
|
{
|
||||||
sender.sendMessage("/iris pregen <blocks-wide|stop>");
|
IrisWorlds.access(sender.player().getWorld()).regenerate(
|
||||||
return true;
|
sender.player().getLocation().getChunk().getX(),
|
||||||
}
|
sender.player().getLocation().getChunk().getZ());
|
||||||
|
sender.sendMessage("Regenerated your current chunk");
|
||||||
if(args[0].equalsIgnoreCase("stop") || args[0].equalsIgnoreCase("x"))
|
|
||||||
{
|
|
||||||
if(PregenJob.task == -1)
|
|
||||||
{
|
|
||||||
sender.sendMessage("No Active Pregens");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sender.sendMessage("Stopped All Pregens.");
|
|
||||||
PregenJob.stop();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if(args[0].equalsIgnoreCase("pause"))
|
|
||||||
{
|
|
||||||
if(PregenJob.task == -1)
|
|
||||||
{
|
|
||||||
sender.sendMessage("No Active Pregens");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PregenJob.pauseResume();
|
try
|
||||||
|
|
||||||
if(PregenJob.isPaused())
|
|
||||||
{
|
{
|
||||||
sender.sendMessage("Pregen Paused");
|
int vx = sender.player().getLocation().getChunk().getX();
|
||||||
|
int vz = sender.player().getLocation().getChunk().getZ();
|
||||||
|
int rad = Integer.valueOf(args[0]);
|
||||||
|
int m = (int) Math.pow(rad, 2);
|
||||||
|
new Spiraler(rad, rad*2, (x,z) -> {
|
||||||
|
IrisWorlds.access(sender.player().getWorld()).regenerate(
|
||||||
|
vx + x,
|
||||||
|
vz + z);
|
||||||
|
}).drain();
|
||||||
|
|
||||||
|
sender.sendMessage("Regenerated " + m + " chunks");
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
catch(NumberFormatException e)
|
||||||
{
|
{
|
||||||
sender.sendMessage("Pregen Resumed");
|
sender.sendMessage(args[0] + " is not a number.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
catch(Throwable e1)
|
||||||
|
{
|
||||||
|
sender.sendMessage("You must be in a regen-capable iris world!");
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} else
|
|
||||||
|
|
||||||
if(sender.isPlayer())
|
|
||||||
{
|
|
||||||
Player p = sender.player();
|
|
||||||
World world = p.getWorld();
|
|
||||||
try {
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sender.sendMessage("Players only.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
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"))
|
|
||||||
{
|
|
||||||
return Integer.valueOf(arg.toLowerCase().replaceAll("\\Qk\\E", "")) * 1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Integer.valueOf(arg.toLowerCase());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getArgsUsage()
|
protected String getArgsUsage()
|
||||||
{
|
{
|
||||||
return "[width]";
|
return "[size]";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user