9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-29 20:19:06 +00:00

Fix command and sync parallax

This commit is contained in:
Daniel Mills
2021-01-05 13:57:11 -05:00
parent c6aad25ef2
commit 18e203f007
5 changed files with 123 additions and 77 deletions

View File

@@ -11,6 +11,9 @@ public class CommandIris extends MortarCommand
@Command
private CommandIrisCreate create;
@Command
private CommandIrisFix fix;
@Command
private CommandIrisStudio studio;

View File

@@ -0,0 +1,69 @@
package com.volmit.iris.manager.command;
import com.volmit.iris.Iris;
import com.volmit.iris.scaffold.IrisWorlds;
import com.volmit.iris.scaffold.engine.IrisAccess;
import com.volmit.iris.util.*;
import java.util.concurrent.atomic.AtomicInteger;
public class CommandIrisFix extends MortarCommand
{
public CommandIrisFix()
{
super("fix");
requiresPermission(Iris.perm.studio);
setDescription("Fix nearby chunks");
setCategory("Studio");
}
@Override
public void addTabOptions(MortarSender sender, String[] args, KList<String> list) {
}
@Override
public boolean handle(MortarSender sender, String[] args)
{
try
{
IrisAccess a = IrisWorlds.access(sender.player().getWorld());
if(a.getCompound().getSize() > 1)
{
sender.sendMessage("Cant fix engine composite worlds!");
return true;
}
int viewDistance = args.length > 0 ? Integer.valueOf(args[0]) : -1;
if(viewDistance <=1)
{
J.a(() -> {
int fixed = a.getCompound().getDefaultEngine().getFramework().getEngineParallax().repairChunk(sender.player().getLocation().getChunk());
sender.sendMessage("Fixed " + Form.f(fixed) + " blocks!");
});
}
else
{
AtomicInteger v = new AtomicInteger();
J.a(() -> {
new Spiraler(viewDistance, viewDistance, (x,z) -> v.set(v.get() + a.getCompound().getDefaultEngine().getFramework().getEngineParallax().repairChunk(sender.player().getWorld().getChunkAt(x, z)))).drain();
sender.sendMessage("Fixed " + Form.f(v.get()) + " blocks in " + (viewDistance * viewDistance) + " chunks!");
});
}
}
catch(Throwable e)
{
sender.sendMessage("Not a valid Iris World (or bad argument)");
}
return true;
}
@Override
protected String getArgsUsage()
{
return "[view-distance]";
}
}

View File

@@ -12,9 +12,6 @@ public class CommandIrisStudio extends MortarCommand
@Command
private CommandIrisStudioCreate create;
@Command
private CommandIrisStudioFix fix;
@Command
private CommandIrisStudioOpen open;

View File

@@ -1,65 +0,0 @@
package com.volmit.iris.manager.command;
import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings;
import com.volmit.iris.scaffold.hunk.Hunk;
import com.volmit.iris.util.KList;
import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender;
import org.bukkit.Chunk;
import org.bukkit.block.data.BlockData;
public class CommandIrisStudioFix extends MortarCommand
{
public CommandIrisStudioFix()
{
super("fix");
requiresPermission(Iris.perm.studio);
setDescription("Go to the spawn of the currently open studio world.");
setCategory("Studio");
}
@Override
public void addTabOptions(MortarSender sender, String[] args, KList<String> list) {
}
@Override
public boolean handle(MortarSender sender, String[] args)
{
if(!IrisSettings.get().isStudio())
{
sender.sendMessage("To use Iris Studio, please enable studio in Iris/settings.json");
return true;
}
if(!Iris.proj.isProjectOpen())
{
sender.sendMessage("There is not a studio currently loaded.");
return true;
}
try
{
Chunk c = sender.player().getLocation().getChunk();
int cx = c.getX() * 16;
int cz = c.getZ() * 16;
Hunk<BlockData> bd = Hunk.viewBlocks(c);
Iris.proj.getActiveProject().getActiveProvider().getCompound().getDefaultEngine().getFramework().getEngineParallax().insertParallax(cx, cz, bd);
sender.sendMessage("Done!");
}
catch(Throwable e)
{
sender.sendMessage("Failed to teleport to the studio world. Try re-opening the project.");
}
return true;
}
@Override
protected String getArgsUsage()
{
return "";
}
}