diff --git a/src/main/java/com/volmit/iris/manager/command/CommandIris.java b/src/main/java/com/volmit/iris/manager/command/CommandIris.java index 8d869422c..69e23b41f 100644 --- a/src/main/java/com/volmit/iris/manager/command/CommandIris.java +++ b/src/main/java/com/volmit/iris/manager/command/CommandIris.java @@ -20,6 +20,9 @@ public class CommandIris extends MortarCommand @Command private CommandIrisObject object; + @Command + private CommandIrisRegen regen; + @Command private CommandIrisDownload download; diff --git a/src/main/java/com/volmit/iris/manager/command/CommandIrisRegen.java b/src/main/java/com/volmit/iris/manager/command/CommandIrisRegen.java index 87fc03346..b1c1ce07d 100644 --- a/src/main/java/com/volmit/iris/manager/command/CommandIrisRegen.java +++ b/src/main/java/com/volmit/iris/manager/command/CommandIrisRegen.java @@ -1,134 +1,75 @@ 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.scaffold.IrisWorlds; +import com.volmit.iris.util.KList; import com.volmit.iris.util.MortarCommand; 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"); - setDescription("Pregen this world with optional parameters: '1k' = 1000 by 1000 blocks, '1c' = 1 by 1 chunks, and '1r' = 32 by 32 chunks"); + super("regen"); + setDescription("Regenerate chunks around you (iris worlds only)"); requiresPermission(Iris.perm.studio); - setCategory("Pregen"); + setCategory("Regen"); } @Override public void addTabOptions(MortarSender sender, String[] args, KList 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 public boolean handle(MortarSender sender, String[] args) { - if(args.length == 0) + try { - sender.sendMessage("/iris pregen "); - return true; - } - - if(args[0].equalsIgnoreCase("stop") || args[0].equalsIgnoreCase("x")) - { - if(PregenJob.task == -1) + if(args.length == 0) { - 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"); + IrisWorlds.access(sender.player().getWorld()).regenerate( + sender.player().getLocation().getChunk().getX(), + sender.player().getLocation().getChunk().getZ()); + sender.sendMessage("Regenerated your current chunk"); } else { - PregenJob.pauseResume(); - - if(PregenJob.isPaused()) + try { - 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."); } } - - 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 + + catch(Throwable e1) { - sender.sendMessage("Players only."); + sender.sendMessage("You must be in a regen-capable iris world!"); } 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 protected String getArgsUsage() { - return "[width]"; + return "[size]"; } }