Fixed compile issues and disabled plotsquared hook

This commit is contained in:
MattBDev 2020-01-03 16:05:25 -05:00
parent f3e0109be2
commit 05760c49cd
6 changed files with 144 additions and 101 deletions

View File

@ -10,7 +10,6 @@ import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.extent.PassthroughExtent; import com.sk89q.worldedit.extent.PassthroughExtent;
import com.sk89q.worldedit.function.operation.Operation; import com.sk89q.worldedit.function.operation.Operation;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockState;
import java.io.File; import java.io.File;
@ -76,7 +75,8 @@ import org.jetbrains.annotations.Nullable;
* @see #wrap(World) * @see #wrap(World)
* @see #create(WorldCreator) * @see #create(WorldCreator)
*/ */
public class AsyncWorld extends PassthroughExtent implements World { public class AsyncWorld
extends PassthroughExtent implements World {
private World parent; private World parent;
private BukkitImplAdapter adapter; private BukkitImplAdapter adapter;
@ -181,13 +181,13 @@ public class AsyncWorld extends PassthroughExtent implements World {
} }
@Override @Override
public <T> void spawnParticle(Particle particle, double v, double v1, double v2, int i, T t) { public <T> void spawnParticle(Particle particle, double x, double y, double z, int count, T data) {
parent.spawnParticle(particle, v, v1, v2, i, t); parent.spawnParticle(particle, x, y, z, count, data);
} }
@Override @Override
public void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2) { public void spawnParticle(Particle particle, Location location, int count, double offsetX, double offsetY, double offsetZ) {
parent.spawnParticle(particle, location, i, v, v1, v2); parent.spawnParticle(particle, location, count, offsetX, offsetY, offsetZ);
} }
@Override @Override
@ -830,22 +830,43 @@ public class AsyncWorld extends PassthroughExtent implements World {
return adapter.adapt(getExtent().getBiomeType(x, 0, z)); return adapter.adapt(getExtent().getBiomeType(x, 0, z));
} }
@Override
public @NotNull Biome getBiome(int x, int y, int z) {
return adapter.adapt(getExtent().getBiomeType(x,y,z));
}
@Override @Override
public void setBiome(int x, int z, Biome bio) { public void setBiome(int x, int z, Biome bio) {
BiomeType biome = adapter.adapt(bio); BiomeType biome = adapter.adapt(bio);
getExtent().setBiome(x, 0, z, biome); getExtent().setBiome(x, 0, z, biome);
} }
@Override
public void setBiome(int x, int y, int z, @NotNull Biome bio) {
BiomeType biome = adapter.adapt(bio);
getExtent().setBiome(x, y, z, biome);
}
@Override @Override
public double getTemperature(int x, int z) { public double getTemperature(int x, int z) {
return parent.getTemperature(x, z); return parent.getTemperature(x, z);
} }
@Override
public double getTemperature(int x, int y, int z) {
return parent.getTemperature(x, y, z);
}
@Override @Override
public double getHumidity(int x, int z) { public double getHumidity(int x, int z) {
return parent.getHumidity(x, z); return parent.getHumidity(x, z);
} }
@Override
public double getHumidity(int x, int y, int z) {
return parent.getHumidity(x, y, z);
}
@Override @Override
public int getMaxHeight() { public int getMaxHeight() {
return parent.getMaxHeight(); return parent.getMaxHeight();
@ -1143,19 +1164,19 @@ public class AsyncWorld extends PassthroughExtent implements World {
} }
@Override @Override
public RayTraceResult rayTraceBlocks(Location arg0, Vector arg1, double arg2, FluidCollisionMode arg3) { public RayTraceResult rayTraceBlocks(Location start, Vector direction, double maxDistance, FluidCollisionMode fluidCollisionMode) {
return parent.rayTraceBlocks(arg0, arg1, arg2, arg3); return parent.rayTraceBlocks(start, direction, maxDistance, fluidCollisionMode);
} }
@Override @Override
public RayTraceResult rayTraceBlocks(Location arg0, Vector arg1, double arg2, FluidCollisionMode arg3, public RayTraceResult rayTraceBlocks(Location start, Vector direction, double arg2, FluidCollisionMode fluidCollisionMode,
boolean arg4) { boolean ignorePassableBlocks) {
return parent.rayTraceBlocks(arg0, arg1, arg2, arg3, arg4); return parent.rayTraceBlocks(start, direction, arg2, fluidCollisionMode, ignorePassableBlocks);
} }
@Override @Override
public RayTraceResult rayTraceEntities(Location arg0, Vector arg1, double arg2) { public RayTraceResult rayTraceEntities(Location start, Vector direction, double maxDistance) {
return parent.rayTraceEntities(arg0, arg1, arg2); return parent.rayTraceEntities(start, direction, maxDistance);
} }
@Override @Override
@ -1174,16 +1195,11 @@ public class AsyncWorld extends PassthroughExtent implements World {
return parent.rayTraceEntities(arg0, arg1, arg2, arg3, arg4); return parent.rayTraceEntities(arg0, arg1, arg2, arg3, arg4);
} }
@Override
public <T> void spawnParticle(Particle arg0, Location arg1, int arg2, double arg3, double arg4, double arg5,
double arg6, T arg7, boolean arg8) {
parent.spawnParticle(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
}
@Override @Override
public <T> void spawnParticle(Particle arg0, double arg1, double arg2, double arg3, int arg4, double arg5, public <T> void spawnParticle(@NotNull Particle particle, double x, double y, double z,
double arg6, double arg7, double arg8, T arg9, boolean arg10) { int count, double offsetX, double offsetY, double offsetZ, double extra, @Nullable T data,
parent.spawnParticle(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); boolean force) {
} }
@ -1340,4 +1356,11 @@ public class AsyncWorld extends PassthroughExtent implements World {
public <T> void spawnParticle(Particle particle, List<Player> list, Player player, double v, double v1, double v2, int i, double v3, double v4, double v5, double v6, T t, boolean b) { public <T> void spawnParticle(Particle particle, List<Player> list, Player player, double v, double v1, double v2, int i, double v3, double v4, double v5, double v6, T t, boolean b) {
parent.spawnParticle(particle, list, player, v, v1, v2, i, v3, v4, v5, v6, t, b); parent.spawnParticle(particle, list, player, v, v1, v2, i, v3, v4, v5, v6, t, b);
} }
@Override
public <T> void spawnParticle(@NotNull Particle particle, @NotNull Location location, int count,
double offsetX, double offsetY, double offsetZ, double extra, @Nullable T data,
boolean force) {
}
} }

View File

@ -15,7 +15,7 @@ public class Settings extends Config {
@Ignore @Ignore
public boolean PROTOCOL_SUPPORT_FIX = false; public boolean PROTOCOL_SUPPORT_FIX = false;
@Ignore @Ignore
public boolean PLOTSQUARED_HOOK = true; public boolean PLOTSQUARED_HOOK = false;
@Comment("These first 6 aren't configurable") // This is a comment @Comment("These first 6 aren't configurable") // This is a comment
@Final // Indicates that this value isn't configurable @Final // Indicates that this value isn't configurable

View File

@ -15,12 +15,10 @@ import com.sk89q.jnbt.ShortTag;
import com.sk89q.jnbt.StringTag; import com.sk89q.jnbt.StringTag;
import com.sk89q.jnbt.Tag; import com.sk89q.jnbt.Tag;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.Iterator;
import java.util.Stack; import java.util.Stack;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class JSON2NBT { public class JSON2NBT {
private static final Pattern INT_ARRAY_MATCHER = Pattern.compile("\\[[-+\\d|,\\s]+\\]"); private static final Pattern INT_ARRAY_MATCHER = Pattern.compile("\\[[-+\\d|,\\s]+\\]");
@ -42,7 +40,7 @@ public class JSON2NBT {
public static int topTagsCount(String str) throws NBTException { public static int topTagsCount(String str) throws NBTException {
int i = 0; int i = 0;
boolean flag = false; boolean flag = false;
Stack<Character> stack = new Stack<>(); Stack stack = new Stack();
for (int j = 0; j < str.length(); ++j) { for (int j = 0; j < str.length(); ++j) {
char c0 = str.charAt(j); char c0 = str.charAt(j);
@ -56,11 +54,11 @@ public class JSON2NBT {
} }
} else if (!flag) { } else if (!flag) {
if (c0 != 123 && c0 != 91) { if (c0 != 123 && c0 != 91) {
if (c0 == 125 && (stack.isEmpty() || stack.pop() != 123)) { if (c0 == 125 && (stack.isEmpty() || ((Character) stack.pop()).charValue() != 123)) {
throw new NBTException("Unbalanced curly brackets {}: " + str); throw new NBTException("Unbalanced curly brackets {}: " + str);
} }
if (c0 == 93 && (stack.isEmpty() || stack.pop() != 91)) { if (c0 == 93 && (stack.isEmpty() || ((Character) stack.pop()).charValue() != 91)) {
throw new NBTException("Unbalanced square brackets []: " + str); throw new NBTException("Unbalanced square brackets []: " + str);
} }
} else { } else {
@ -68,7 +66,7 @@ public class JSON2NBT {
++i; ++i;
} }
stack.push(c0); stack.push(Character.valueOf(c0));
} }
} }
} }
@ -93,6 +91,7 @@ public class JSON2NBT {
private static JSON2NBT.Any nameValueToNBT(String key, String value) throws NBTException { private static JSON2NBT.Any nameValueToNBT(String key, String value) throws NBTException {
value = value.trim(); value = value.trim();
String s; String s;
boolean c0;
char c01; char c01;
if (value.startsWith("{")) { if (value.startsWith("{")) {
value = value.substring(1, value.length() - 1); value = value.substring(1, value.length() - 1);
@ -101,6 +100,7 @@ public class JSON2NBT {
for (JSON2NBT$list1 = new JSON2NBT.Compound(key); value.length() > 0; value = value.substring(s.length() + 1)) { for (JSON2NBT$list1 = new JSON2NBT.Compound(key); value.length() > 0; value = value.substring(s.length() + 1)) {
s = nextNameValuePair(value, true); s = nextNameValuePair(value, true);
if (s.length() > 0) { if (s.length() > 0) {
c0 = false;
JSON2NBT$list1.tagList.add(getTagFromNameValue(s, false)); JSON2NBT$list1.tagList.add(getTagFromNameValue(s, false));
} }
@ -122,6 +122,7 @@ public class JSON2NBT {
for (JSON2NBT$list = new JSON2NBT.List(key); value.length() > 0; value = value.substring(s.length() + 1)) { for (JSON2NBT$list = new JSON2NBT.List(key); value.length() > 0; value = value.substring(s.length() + 1)) {
s = nextNameValuePair(value, false); s = nextNameValuePair(value, false);
if (s.length() > 0) { if (s.length() > 0) {
c0 = true;
JSON2NBT$list.tagList.add(getTagFromNameValue(s, true)); JSON2NBT$list.tagList.add(getTagFromNameValue(s, true));
} }
@ -144,7 +145,7 @@ public class JSON2NBT {
private static JSON2NBT.Any getTagFromNameValue(String str, boolean isArray) throws NBTException { private static JSON2NBT.Any getTagFromNameValue(String str, boolean isArray) throws NBTException {
String s = locateName(str, isArray); String s = locateName(str, isArray);
String s1 = locateValue(str, isArray); String s1 = locateValue(str, isArray);
return joinStrToNBT(s, s1); return joinStrToNBT(new String[]{s, s1});
} }
private static String nextNameValuePair(String str, boolean isCompound) throws NBTException { private static String nextNameValuePair(String str, boolean isCompound) throws NBTException {
@ -166,7 +167,7 @@ public class JSON2NBT {
} }
private static String locateValueAt(String str, int index) throws NBTException { private static String locateValueAt(String str, int index) throws NBTException {
Stack<Character> stack = new Stack<>(); Stack stack = new Stack();
int i = index + 1; int i = index + 1;
boolean flag = false; boolean flag = false;
boolean flag1 = false; boolean flag1 = false;
@ -191,11 +192,11 @@ public class JSON2NBT {
} }
} else if (!flag) { } else if (!flag) {
if (c0 != 123 && c0 != 91) { if (c0 != 123 && c0 != 91) {
if (c0 == 125 && (stack.isEmpty() || stack.pop() != 123)) { if (c0 == 125 && (stack.isEmpty() || ((Character) stack.pop()).charValue() != 123)) {
throw new NBTException("Unbalanced curly brackets {}: " + str); throw new NBTException("Unbalanced curly brackets {}: " + str);
} }
if (c0 == 93 && (stack.isEmpty() || stack.pop() != 91)) { if (c0 == 93 && (stack.isEmpty() || ((Character) stack.pop()).charValue() != 91)) {
throw new NBTException("Unbalanced square brackets []: " + str); throw new NBTException("Unbalanced square brackets []: " + str);
} }
@ -203,7 +204,7 @@ public class JSON2NBT {
return str.substring(0, i); return str.substring(0, i);
} }
} else { } else {
stack.push(c0); stack.push(Character.valueOf(c0));
} }
} }
@ -342,11 +343,14 @@ public class JSON2NBT {
if (this.jsonValue.startsWith("[") && this.jsonValue.endsWith("]")) { if (this.jsonValue.startsWith("[") && this.jsonValue.endsWith("]")) {
String var7 = this.jsonValue.substring(1, this.jsonValue.length() - 1); String var7 = this.jsonValue.substring(1, this.jsonValue.length() - 1);
String[] var8 = Iterables.toArray(SPLITTER.split(var7), String.class); String[] var8 = (String[]) ((String[]) Iterables.toArray(SPLITTER.split(var7), String.class));
try { try {
int[] var5 = Arrays.stream(var8).mapToInt(s -> Integer.parseInt(s.trim())) int[] var5 = new int[var8.length];
.toArray();
for (int j = 0; j < var8.length; ++j) {
var5[j] = Integer.parseInt(var8[j].trim());
}
return new IntArrayTag(var5); return new IntArrayTag(var5);
} catch (NumberFormatException var51) { } catch (NumberFormatException var51) {
@ -375,23 +379,27 @@ public class JSON2NBT {
} }
private static class List extends JSON2NBT.Any { private static class List extends JSON2NBT.Any {
protected List<JSON2NBT.Any> tagList = Lists.newArrayList(); protected java.util.List<JSON2NBT.Any> tagList = Lists.newArrayList();
public List(String json) { public List(String json) {
this.json = json; this.json = json;
} }
public Tag parse() throws NBTException { public Tag parse() throws NBTException {
ArrayList<Tag> list = this.tagList.stream().map(Any::parse) ArrayList<Tag> list = new ArrayList<>();
.collect(Collectors.toCollection(ArrayList::new)); Iterator var2 = this.tagList.iterator();
while (var2.hasNext()) {
JSON2NBT.Any JSON2NBT$any = (JSON2NBT.Any) var2.next();
list.add(JSON2NBT$any.parse());
}
Class<? extends Tag> tagType = list.isEmpty() ? CompoundTag.class : list.get(0).getClass(); Class<? extends Tag> tagType = list.isEmpty() ? CompoundTag.class : list.get(0).getClass();
return new ListTag(tagType, list); return new ListTag(tagType, list);
} }
} }
private static class Compound extends JSON2NBT.Any { private static class Compound extends JSON2NBT.Any {
protected List<JSON2NBT.Any> tagList = Lists.newArrayList(); protected java.util.List<JSON2NBT.Any> tagList = Lists.newArrayList();
public Compound(String jsonIn) { public Compound(String jsonIn) {
this.json = jsonIn; this.json = jsonIn;
@ -399,8 +407,10 @@ public class JSON2NBT {
public Tag parse() throws NBTException { public Tag parse() throws NBTException {
HashMap<String, Tag> map = new HashMap<>(); HashMap<String, Tag> map = new HashMap<>();
Iterator var2 = this.tagList.iterator();
for (Any JSON2NBT$any : this.tagList) { while (var2.hasNext()) {
JSON2NBT.Any JSON2NBT$any = (JSON2NBT.Any) var2.next();
map.put(JSON2NBT$any.json, JSON2NBT$any.parse()); map.put(JSON2NBT$any.json, JSON2NBT$any.parse());
} }

View File

@ -12,6 +12,7 @@ import com.boydti.fawe.logging.rollback.RollbackOptimizedHistory;
import com.boydti.fawe.object.RegionWrapper; import com.boydti.fawe.object.RegionWrapper;
import com.boydti.fawe.object.changeset.DiskStorageHistory; import com.boydti.fawe.object.changeset.DiskStorageHistory;
import com.boydti.fawe.util.MainUtil; import com.boydti.fawe.util.MainUtil;
import com.google.common.base.Function;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.sk89q.worldedit.LocalSession; import com.sk89q.worldedit.LocalSession;
import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.WorldEditException;
@ -31,6 +32,7 @@ import com.sk89q.worldedit.util.Direction;
import com.sk89q.worldedit.util.Identifiable; import com.sk89q.worldedit.util.Identifiable;
import com.sk89q.worldedit.util.Location; import com.sk89q.worldedit.util.Location;
import com.sk89q.worldedit.util.formatting.component.PaginationBox; import com.sk89q.worldedit.util.formatting.component.PaginationBox;
import com.sk89q.worldedit.util.formatting.text.Component;
import com.sk89q.worldedit.util.formatting.text.TextComponent; import com.sk89q.worldedit.util.formatting.text.TextComponent;
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent; import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
import com.sk89q.worldedit.util.formatting.text.event.ClickEvent; import com.sk89q.worldedit.util.formatting.text.event.ClickEvent;
@ -46,11 +48,13 @@ import java.util.UUID;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.atomic.LongAdder; import java.util.concurrent.atomic.LongAdder;
import java.util.function.Supplier; import java.util.function.Supplier;
import javax.annotation.Nullable;
import org.enginehub.piston.annotation.Command; import org.enginehub.piston.annotation.Command;
import org.enginehub.piston.annotation.CommandContainer; import org.enginehub.piston.annotation.CommandContainer;
import org.enginehub.piston.annotation.param.Arg; import org.enginehub.piston.annotation.param.Arg;
import org.enginehub.piston.annotation.param.ArgFlag; import org.enginehub.piston.annotation.param.ArgFlag;
import org.enginehub.piston.annotation.param.Switch; import org.enginehub.piston.annotation.param.Switch;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Range; import org.jetbrains.annotations.Range;
@CommandContainer(superTypes = CommandPermissionsConditionGenerator.Registration.class) @CommandContainer(superTypes = CommandPermissionsConditionGenerator.Registration.class)
@ -313,40 +317,44 @@ public class HistorySubCommands {
player.setMeta(pageCommand, new SoftReference<>(list)); player.setMeta(pageCommand, new SoftReference<>(list));
} }
PaginationBox pages = PaginationBox.fromStrings("Edits:", pageCommand, list, input -> { PaginationBox pages = PaginationBox.fromStrings("Edits:", pageCommand, list, new Function<Supplier<RollbackOptimizedHistory>, Component>() {
RollbackOptimizedHistory edit = input.get(); @NotNull
UUID uuid = edit.getUUID(); @Override
int index = edit.getIndex(); public Component apply(@Nullable Supplier<RollbackOptimizedHistory> input) {
if (!edit.isEmpty()) { RollbackOptimizedHistory edit = input.get();
database.delete(uuid, index); UUID uuid = edit.getUUID();
return TextComponent.empty(); int index = edit.getIndex();
if (!edit.isEmpty()) {
database.delete(uuid, index);
return TextComponent.empty();
}
String name = Fawe.imp().getName(edit.getUUID());
String cmd = edit.getCommand();
BlockVector3 pos1 = edit.getMinimumPoint();
BlockVector3 pos2 = edit.getMaximumPoint();
double distanceX = Math.min(Math.abs(pos1.getX() - origin.getX()), Math.abs(pos2.getX() - origin.getX()));
double distanceZ = Math.min(Math.abs(pos1.getZ() - origin.getZ()), Math.abs(pos2.getZ() - origin.getZ()));
int distance = (int) Math.sqrt(distanceX * distanceX + distanceZ * distanceZ);
BlockVector2 dirVec = BlockVector2.at(edit.getOriginX() - origin.getX(), edit.getOriginZ() - origin.getZ());
Direction direction = Direction.findClosest(dirVec.toVector3(), Direction.Flag.ALL);
long seconds = (System.currentTimeMillis() - edit.getBDFile().lastModified()) / 1000;
String timeStr = MainUtil.secToTime(seconds);
int size = edit.size();
TranslatableComponent elem = Caption.of("fawe.worldedit.history.find.element", name, timeStr, distance, direction.name(), cmd);
String infoCmd = "//history summary " + uuid + " " + index;
TranslatableComponent hover = Caption.of("fawe.worldedit.history.find.hover", size);
elem = elem.hoverEvent(HoverEvent.of(HoverEvent.Action.SHOW_TEXT, hover));
elem = elem.clickEvent(ClickEvent.of(ClickEvent.Action.RUN_COMMAND, infoCmd));
return elem;
} }
String name = Fawe.imp().getName(edit.getUUID());
String cmd = edit.getCommand();
BlockVector3 pos1 = edit.getMinimumPoint();
BlockVector3 pos2 = edit.getMaximumPoint();
double distanceX = Math.min(Math.abs(pos1.getX() - origin.getX()), Math.abs(pos2.getX() - origin.getX()));
double distanceZ = Math.min(Math.abs(pos1.getZ() - origin.getZ()), Math.abs(pos2.getZ() - origin.getZ()));
int distance = (int) Math.sqrt(distanceX * distanceX + distanceZ * distanceZ);
BlockVector2 dirVec = BlockVector2.at(edit.getOriginX() - origin.getX(), edit.getOriginZ() - origin.getZ());
Direction direction = Direction.findClosest(dirVec.toVector3(), Direction.Flag.ALL);
long seconds = (System.currentTimeMillis() - edit.getBDFile().lastModified()) / 1000;
String timeStr = MainUtil.secToTime(seconds);
int size = edit.size();
TranslatableComponent elem = Caption.of("fawe.worldedit.history.find.element", name, timeStr, distance, direction.name(), cmd);
String infoCmd = "//history summary " + uuid + " " + index;
TranslatableComponent hover = Caption.of("fawe.worldedit.history.find.hover", size);
elem = elem.hoverEvent(HoverEvent.of(HoverEvent.Action.SHOW_TEXT, hover));
elem = elem.clickEvent(ClickEvent.of(ClickEvent.Action.RUN_COMMAND, infoCmd));
return elem;
}); });
player.print(pages.create(page)); player.print(pages.create(page));
} }

View File

@ -23,11 +23,14 @@ import static com.sk89q.worldedit.command.util.Logging.LogMode.PLACEMENT;
import com.boydti.fawe.Fawe; import com.boydti.fawe.Fawe;
import com.boydti.fawe.config.Caption; import com.boydti.fawe.config.Caption;
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
import com.boydti.fawe.config.Settings; import com.boydti.fawe.config.Settings;
import com.boydti.fawe.object.DelegateConsumer; import com.boydti.fawe.object.DelegateConsumer;
import com.boydti.fawe.object.function.QuadFunction; import com.boydti.fawe.object.function.QuadFunction;
import com.boydti.fawe.util.MainUtil; import com.boydti.fawe.util.MainUtil;
import com.boydti.fawe.util.image.ImageUtil; import com.boydti.fawe.util.image.ImageUtil;
import com.google.common.base.Function;
import com.google.common.collect.Lists;
import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.IncompleteRegionException; import com.sk89q.worldedit.IncompleteRegionException;
import com.sk89q.worldedit.LocalConfiguration; import com.sk89q.worldedit.LocalConfiguration;
@ -42,7 +45,6 @@ import com.sk89q.worldedit.command.util.CreatureButcher;
import com.sk89q.worldedit.command.util.EntityRemover; import com.sk89q.worldedit.command.util.EntityRemover;
import com.sk89q.worldedit.command.util.Logging; import com.sk89q.worldedit.command.util.Logging;
import com.sk89q.worldedit.command.util.PrintCommandHelp; import com.sk89q.worldedit.command.util.PrintCommandHelp;
import com.sk89q.worldedit.command.util.WorldEditAsyncCommandBuilder;
import com.sk89q.worldedit.command.util.annotation.SkipQueue; import com.sk89q.worldedit.command.util.annotation.SkipQueue;
import com.sk89q.worldedit.entity.Entity; import com.sk89q.worldedit.entity.Entity;
import com.sk89q.worldedit.entity.Player; import com.sk89q.worldedit.entity.Player;
@ -50,16 +52,19 @@ import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat; import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats; import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats;
import com.sk89q.worldedit.function.EntityFunction; import com.sk89q.worldedit.function.EntityFunction;
import com.sk89q.worldedit.function.mask.BlockTypeMask;
import com.sk89q.worldedit.function.mask.ExistingBlockMask; import com.sk89q.worldedit.function.mask.ExistingBlockMask;
import com.sk89q.worldedit.function.mask.Mask; import com.sk89q.worldedit.function.mask.Mask;
import com.sk89q.worldedit.command.util.WorldEditAsyncCommandBuilder;
import com.sk89q.worldedit.function.operation.Operations; import com.sk89q.worldedit.function.operation.Operations;
import com.sk89q.worldedit.function.pattern.Pattern; import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.function.mask.BlockTypeMask;
import com.sk89q.worldedit.function.visitor.EntityVisitor; import com.sk89q.worldedit.function.visitor.EntityVisitor;
import com.sk89q.worldedit.internal.annotation.Direction; import com.sk89q.worldedit.internal.annotation.Direction;
import com.sk89q.worldedit.internal.expression.EvaluationException; import com.sk89q.worldedit.internal.expression.EvaluationException;
import com.sk89q.worldedit.internal.expression.Expression; import com.sk89q.worldedit.internal.expression.Expression;
import com.sk89q.worldedit.internal.expression.ExpressionException; import com.sk89q.worldedit.internal.expression.ExpressionException;
import java.text.DecimalFormat;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.CuboidRegion; import com.sk89q.worldedit.regions.CuboidRegion;
import com.sk89q.worldedit.regions.CylinderRegion; import com.sk89q.worldedit.regions.CylinderRegion;
@ -67,7 +72,6 @@ import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.util.formatting.component.SubtleFormat; import com.sk89q.worldedit.util.formatting.component.SubtleFormat;
import com.sk89q.worldedit.util.formatting.text.Component; import com.sk89q.worldedit.util.formatting.text.Component;
import com.sk89q.worldedit.util.formatting.text.TextComponent; import com.sk89q.worldedit.util.formatting.text.TextComponent;
import com.sk89q.worldedit.util.formatting.text.TranslatableComponent;
import com.sk89q.worldedit.util.formatting.text.format.TextColor; import com.sk89q.worldedit.util.formatting.text.format.TextColor;
import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.world.block.BlockTypes; import com.sk89q.worldedit.world.block.BlockTypes;
@ -77,9 +81,8 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.URI; import java.net.URI;
import java.nio.file.Files; import java.nio.file.Files;
import java.text.DecimalFormat;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.util.AbstractMap.SimpleEntry; import java.util.AbstractMap;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.LinkedList; import java.util.LinkedList;
@ -88,9 +91,7 @@ import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.stream.Collectors;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import org.enginehub.piston.annotation.Command; import org.enginehub.piston.annotation.Command;
import org.enginehub.piston.annotation.CommandContainer; import org.enginehub.piston.annotation.CommandContainer;
@ -712,12 +713,11 @@ public class UtilityCommands {
} }
public static List<Map.Entry<URI, String>> filesToEntry(final File root, final List<File> files, final UUID uuid) { public static List<Map.Entry<URI, String>> filesToEntry(final File root, final List<File> files, final UUID uuid) {
return files.stream() return Lists.transform(files, input -> { // Keep this functional, as transform is evaluated lazily
.map(input -> { // Keep this functional, as transform is evaluated lazily URI uri = input.toURI();
URI uri = input.toURI(); String path = getPath(root, input, uuid);
String path = getPath(root, input, uuid); return new AbstractMap.SimpleEntry<>(uri, path);
return new SimpleEntry<>(uri, path); });
}).collect(Collectors.toList());
} }
public static enum URIType { public static enum URIType {
@ -728,7 +728,7 @@ public class UtilityCommands {
} }
public static List<Component> entryToComponent(File root, List<Map.Entry<URI, String>> entries, Function<URI, Boolean> isLoaded, QuadFunction<String, String, URIType, Boolean, Component> adapter) { public static List<Component> entryToComponent(File root, List<Map.Entry<URI, String>> entries, Function<URI, Boolean> isLoaded, QuadFunction<String, String, URIType, Boolean, Component> adapter) {
return entries.stream().map(input -> { return Lists.transform(entries, input -> {
URI uri = input.getKey(); URI uri = input.getKey();
String path = input.getValue(); String path = input.getValue();
@ -745,13 +745,11 @@ public class UtilityCommands {
if (file.isDirectory()) { if (file.isDirectory()) {
type = URIType.DIRECTORY; type = URIType.DIRECTORY;
} else { } else {
if (name.indexOf('.') != -1) if (name.indexOf('.') != -1) name = name.substring(0, name.lastIndexOf('.'));
name = name.substring(0, name.lastIndexOf('.'));
} }
try { try {
if (!MainUtil.isInSubDirectory(root, file)) { if (!MainUtil.isInSubDirectory(root, file)) {
throw new RuntimeException( throw new RuntimeException(new StopExecutionException(TextComponent.of("Invalid path")));
new StopExecutionException(TextComponent.of("Invalid path")));
} }
} catch (IOException ignore) { } catch (IOException ignore) {
} }
@ -762,7 +760,7 @@ public class UtilityCommands {
} }
return adapter.apply(name, path, type, loaded); return adapter.apply(name, path, type, loaded);
}).collect(Collectors.toList()); });
} }
public static List<File> getFiles(File dir, Actor actor, List<String> args, String formatName, boolean playerFolder, boolean oldFirst, boolean newFirst) { public static List<File> getFiles(File dir, Actor actor, List<String> args, String formatName, boolean playerFolder, boolean oldFirst, boolean newFirst) {
@ -812,7 +810,8 @@ public class UtilityCommands {
boolean listMine = false; boolean listMine = false;
boolean listGlobal = !Settings.IMP.PATHS.PER_PLAYER_SCHEMATICS; boolean listGlobal = !Settings.IMP.PATHS.PER_PLAYER_SCHEMATICS;
if (len > 0) { if (len > 0) {
for (String arg : args) { for (int i = 0; i < len; i++) {
String arg = args.get(i);
switch (arg.toLowerCase()) { switch (arg.toLowerCase()) {
case "me": case "me":
case "mine": case "mine":
@ -832,10 +831,7 @@ public class UtilityCommands {
if (arg.endsWith("/") || arg.endsWith(File.separator)) { if (arg.endsWith("/") || arg.endsWith(File.separator)) {
arg = arg.replace("/", File.separator); arg = arg.replace("/", File.separator);
String newDirFilter = dirFilter + arg; String newDirFilter = dirFilter + arg;
boolean exists = boolean exists = new File(dir, newDirFilter).exists() || playerFolder && MainUtil.resolveRelative(new File(dir, actor.getUniqueId() + newDirFilter)).exists();
new File(dir, newDirFilter).exists() || playerFolder && MainUtil
.resolveRelative(
new File(dir, actor.getUniqueId() + newDirFilter)).exists();
if (!exists) { if (!exists) {
arg = arg.substring(0, arg.length() - File.separator.length()); arg = arg.substring(0, arg.length() - File.separator.length());
if (arg.length() > 3 && arg.length() <= 16) { if (arg.length() > 3 && arg.length() <= 16) {
@ -847,7 +843,8 @@ public class UtilityCommands {
} }
} }
dirFilter = newDirFilter; dirFilter = newDirFilter;
} else { }
else {
filters.add(arg); filters.add(arg);
} }
break; break;

View File

@ -19,18 +19,23 @@
package com.sk89q.worldedit.util.formatting.component; package com.sk89q.worldedit.util.formatting.component;
import com.boydti.fawe.object.collection.AdaptedSetCollection;
import com.google.common.base.Function; import com.google.common.base.Function;
import com.google.common.collect.Collections2; import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;
import com.sk89q.worldedit.util.formatting.text.Component; import com.sk89q.worldedit.util.formatting.text.Component;
import com.sk89q.worldedit.util.formatting.text.TextComponent; import com.sk89q.worldedit.util.formatting.text.TextComponent;
import com.sk89q.worldedit.util.formatting.text.event.ClickEvent; import com.sk89q.worldedit.util.formatting.text.event.ClickEvent;
import com.sk89q.worldedit.util.formatting.text.event.HoverEvent; import com.sk89q.worldedit.util.formatting.text.event.HoverEvent;
import com.sk89q.worldedit.util.formatting.text.format.TextColor; import com.sk89q.worldedit.util.formatting.text.format.TextColor;
import javax.annotation.Nullable;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.function.Supplier; import java.util.function.Supplier;
import javax.annotation.Nullable;
public abstract class PaginationBox extends MessageBox { public abstract class PaginationBox extends MessageBox {