geforkt von Mirrors/FastAsyncWorldEdit
Current progress with update
Dieser Commit ist enthalten in:
Ursprung
9896a1339e
Commit
d4157b7e0e
@ -31,7 +31,9 @@ import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
|||||||
import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
|
import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
|
||||||
import com.sk89q.worldedit.bukkit.adapter.CachedBukkitAdapter;
|
import com.sk89q.worldedit.bukkit.adapter.CachedBukkitAdapter;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
|
import com.sk89q.worldedit.entity.Player;
|
||||||
import com.sk89q.worldedit.internal.Constants;
|
import com.sk89q.worldedit.internal.Constants;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.registry.state.*;
|
import com.sk89q.worldedit.registry.state.*;
|
||||||
import com.sk89q.worldedit.util.Direction;
|
import com.sk89q.worldedit.util.Direction;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
@ -411,15 +413,15 @@ public final class Spigot_v1_13_R2 extends CachedBukkitAdapter implements Bukkit
|
|||||||
}
|
}
|
||||||
return new CompoundTag(values);
|
return new CompoundTag(values);
|
||||||
} else if (foreign instanceof NBTTagByte) {
|
} else if (foreign instanceof NBTTagByte) {
|
||||||
return new ByteTag(((NBTTagByte) foreign).g()); // getByte
|
return new ByteTag(((NBTTagByte) foreign).asByte()); // getByte
|
||||||
} else if (foreign instanceof NBTTagByteArray) {
|
} else if (foreign instanceof NBTTagByteArray) {
|
||||||
return new ByteArrayTag(((NBTTagByteArray) foreign).c()); // data
|
return new ByteArrayTag(((NBTTagByteArray) foreign).c()); // data
|
||||||
} else if (foreign instanceof NBTTagDouble) {
|
} else if (foreign instanceof NBTTagDouble) {
|
||||||
return new DoubleTag(((NBTTagDouble) foreign).asDouble()); // getDouble
|
return new DoubleTag(((NBTTagDouble) foreign).asDouble()); // getDouble
|
||||||
} else if (foreign instanceof NBTTagFloat) {
|
} else if (foreign instanceof NBTTagFloat) {
|
||||||
return new FloatTag(((NBTTagFloat) foreign).i()); // getFloat
|
return new FloatTag(((NBTTagFloat) foreign).asByte()); // getFloat
|
||||||
} else if (foreign instanceof NBTTagInt) {
|
} else if (foreign instanceof NBTTagInt) {
|
||||||
return new IntTag(((NBTTagInt) foreign).e()); // getInt
|
return new IntTag(((NBTTagInt) foreign).asInt()); // getInt
|
||||||
} else if (foreign instanceof NBTTagIntArray) {
|
} else if (foreign instanceof NBTTagIntArray) {
|
||||||
return new IntArrayTag(((NBTTagIntArray) foreign).d()); // data
|
return new IntArrayTag(((NBTTagIntArray) foreign).d()); // data
|
||||||
} else if (foreign instanceof NBTTagList) {
|
} else if (foreign instanceof NBTTagList) {
|
||||||
@ -430,11 +432,11 @@ public final class Spigot_v1_13_R2 extends CachedBukkitAdapter implements Bukkit
|
|||||||
return new ListTag(ByteTag.class, new ArrayList<ByteTag>());
|
return new ListTag(ByteTag.class, new ArrayList<ByteTag>());
|
||||||
}
|
}
|
||||||
} else if (foreign instanceof NBTTagLong) {
|
} else if (foreign instanceof NBTTagLong) {
|
||||||
return new LongTag(((NBTTagLong) foreign).d()); // getLong
|
return new LongTag(((NBTTagLong) foreign).asLong()); // getLong
|
||||||
} else if (foreign instanceof NBTTagShort) {
|
} else if (foreign instanceof NBTTagShort) {
|
||||||
return new ShortTag(((NBTTagShort) foreign).f()); // getShort
|
return new ShortTag(((NBTTagShort) foreign).asShort()); // getShort
|
||||||
} else if (foreign instanceof NBTTagString) {
|
} else if (foreign instanceof NBTTagString) {
|
||||||
return new StringTag(foreign.b_()); // data
|
return new StringTag(foreign.asString()); // data
|
||||||
} else if (foreign instanceof NBTTagEnd) {
|
} else if (foreign instanceof NBTTagEnd) {
|
||||||
return EndTag.INSTANCE;
|
return EndTag.INSTANCE;
|
||||||
} else {
|
} else {
|
||||||
@ -539,4 +541,10 @@ public final class Spigot_v1_13_R2 extends CachedBukkitAdapter implements Bukkit
|
|||||||
BlockMaterial_1_13 material = (BlockMaterial_1_13) state.getMaterial();
|
BlockMaterial_1_13 material = (BlockMaterial_1_13) state.getMaterial();
|
||||||
return material.getCraftBlockData();
|
return material.getCraftBlockData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendFakeNBT(Player player, BlockVector3 pos, CompoundTag nbtData) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
@ -3,7 +3,8 @@ package com.boydti.fawe.bukkit.filter;
|
|||||||
import com.boydti.fawe.regions.general.CuboidRegionFilter;
|
import com.boydti.fawe.regions.general.CuboidRegionFilter;
|
||||||
import com.intellectualcrafters.plot.object.RunnableVal;
|
import com.intellectualcrafters.plot.object.RunnableVal;
|
||||||
import com.intellectualcrafters.plot.util.TaskManager;
|
import com.intellectualcrafters.plot.util.TaskManager;
|
||||||
import com.sk89q.worldedit.BlockVector2D;
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
|
||||||
import java.util.ArrayDeque;
|
import java.util.ArrayDeque;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import me.ryanhamshire.GriefPrevention.Claim;
|
import me.ryanhamshire.GriefPrevention.Claim;
|
||||||
@ -34,8 +35,8 @@ public class GriefPreventionFilter extends CuboidRegionFilter {
|
|||||||
org.bukkit.Location bot = claim.getGreaterBoundaryCorner();
|
org.bukkit.Location bot = claim.getGreaterBoundaryCorner();
|
||||||
if (world.equals(bot.getWorld())) {
|
if (world.equals(bot.getWorld())) {
|
||||||
org.bukkit.Location top = claim.getGreaterBoundaryCorner();
|
org.bukkit.Location top = claim.getGreaterBoundaryCorner();
|
||||||
BlockVector2D pos1 = new BlockVector2D(bot.getBlockX(), bot.getBlockZ());
|
BlockVector2 pos1 = new BlockVector2(bot.getBlockX(), bot.getBlockZ());
|
||||||
BlockVector2D pos2 = new BlockVector2D(top.getBlockX(), top.getBlockZ());
|
BlockVector2 pos2 = new BlockVector2(top.getBlockX(), top.getBlockZ());
|
||||||
add(pos1, pos2);
|
add(pos1, pos2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ import com.boydti.fawe.FaweAPI;
|
|||||||
import com.boydti.fawe.object.RunnableVal;
|
import com.boydti.fawe.object.RunnableVal;
|
||||||
import com.boydti.fawe.regions.general.CuboidRegionFilter;
|
import com.boydti.fawe.regions.general.CuboidRegionFilter;
|
||||||
import com.boydti.fawe.util.TaskManager;
|
import com.boydti.fawe.util.TaskManager;
|
||||||
import com.sk89q.worldedit.BlockVector;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldguard.WorldGuard;
|
import com.sk89q.worldguard.WorldGuard;
|
||||||
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
||||||
import com.sk89q.worldguard.protection.ApplicableRegionSet;
|
import com.sk89q.worldguard.protection.ApplicableRegionSet;
|
||||||
@ -33,14 +33,14 @@ public class WorldGuardFilter extends CuboidRegionFilter {
|
|||||||
public void run(Object value) {
|
public void run(Object value) {
|
||||||
WorldGuardFilter.this.manager = WorldGuard.getInstance().getPlatform().getRegionContainer().get(FaweAPI.getWorld(world.getName()));
|
WorldGuardFilter.this.manager = WorldGuard.getInstance().getPlatform().getRegionContainer().get(FaweAPI.getWorld(world.getName()));
|
||||||
for (ProtectedRegion region : manager.getRegions().values()) {
|
for (ProtectedRegion region : manager.getRegions().values()) {
|
||||||
BlockVector min = region.getMinimumPoint();
|
BlockVector3 min = region.getMinimumPoint();
|
||||||
BlockVector max = region.getMaximumPoint();
|
BlockVector3 max = region.getMaximumPoint();
|
||||||
if (max.getBlockX() - min.getBlockX() > 1024 || max.getBlockZ() - min.getBlockZ() > 1024) {
|
if (max.getBlockX() - min.getBlockX() > 1024 || max.getBlockZ() - min.getBlockZ() > 1024) {
|
||||||
Fawe.debug("Large or complex region shapes cannot be optimized. Filtering will be slower");
|
Fawe.debug("Large or complex region shapes cannot be optimized. Filtering will be slower");
|
||||||
large = true;
|
large = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
add(min.toVector2D(), max.toVector2D());
|
add(min.toBlockVector2(), max.toBlockVector2());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -49,8 +49,8 @@ public class WorldGuardFilter extends CuboidRegionFilter {
|
|||||||
@Override
|
@Override
|
||||||
public boolean containsChunk(int chunkX, int chunkZ) {
|
public boolean containsChunk(int chunkX, int chunkZ) {
|
||||||
if (!large) return super.containsChunk(chunkX, chunkZ);
|
if (!large) return super.containsChunk(chunkX, chunkZ);
|
||||||
BlockVector pos1 = new BlockVector(chunkX << 4, 0, chunkZ << 4);
|
BlockVector3 pos1 = new BlockVector3(chunkX << 4, 0, chunkZ << 4);
|
||||||
BlockVector pos2 = new BlockVector(pos1.getBlockX() + 15, 255, pos1.getBlockZ() + 15);
|
BlockVector3 pos2 = new BlockVector3(pos1.getBlockX() + 15, 255, pos1.getBlockZ() + 15);
|
||||||
ProtectedCuboidRegion chunkRegion = new ProtectedCuboidRegion("unimportant", pos1, pos2);
|
ProtectedCuboidRegion chunkRegion = new ProtectedCuboidRegion("unimportant", pos1, pos2);
|
||||||
ApplicableRegionSet set = manager.getApplicableRegions(chunkRegion);
|
ApplicableRegionSet set = manager.getApplicableRegions(chunkRegion);
|
||||||
return set.size() > 0 && !set.getRegions().iterator().next().getId().equals("__global__");
|
return set.size() > 0 && !set.getRegions().iterator().next().getId().equals("__global__");
|
||||||
@ -59,8 +59,8 @@ public class WorldGuardFilter extends CuboidRegionFilter {
|
|||||||
@Override
|
@Override
|
||||||
public boolean containsRegion(int mcaX, int mcaZ) {
|
public boolean containsRegion(int mcaX, int mcaZ) {
|
||||||
if (!large) return super.containsRegion(mcaX, mcaZ);
|
if (!large) return super.containsRegion(mcaX, mcaZ);
|
||||||
BlockVector pos1 = new BlockVector(mcaX << 9, 0, mcaZ << 9);
|
BlockVector3 pos1 = new BlockVector3(mcaX << 9, 0, mcaZ << 9);
|
||||||
BlockVector pos2 = new BlockVector(pos1.getBlockX() + 511, 255, pos1.getBlockZ() + 511);
|
BlockVector3 pos2 = new BlockVector3(pos1.getBlockX() + 511, 255, pos1.getBlockZ() + 511);
|
||||||
ProtectedCuboidRegion regionRegion = new ProtectedCuboidRegion("unimportant", pos1, pos2);
|
ProtectedCuboidRegion regionRegion = new ProtectedCuboidRegion("unimportant", pos1, pos2);
|
||||||
ApplicableRegionSet set = manager.getApplicableRegions(regionRegion);
|
ApplicableRegionSet set = manager.getApplicableRegions(regionRegion);
|
||||||
return set.size() > 0 && !set.getRegions().iterator().next().getId().equals("__global__");
|
return set.size() > 0 && !set.getRegions().iterator().next().getId().equals("__global__");
|
||||||
|
@ -14,6 +14,9 @@ import com.sk89q.worldedit.*;
|
|||||||
import com.sk89q.worldedit.command.tool.BrushTool;
|
import com.sk89q.worldedit.command.tool.BrushTool;
|
||||||
import com.sk89q.worldedit.command.tool.InvalidToolBindException;
|
import com.sk89q.worldedit.command.tool.InvalidToolBindException;
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
|
|
||||||
import java.util.ArrayDeque;
|
import java.util.ArrayDeque;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
@ -246,14 +249,14 @@ public class BukkitImageListener implements Listener {
|
|||||||
|
|
||||||
if (worldX < 0 || worldX > width || worldZ < 0 || worldZ > length) return;
|
if (worldX < 0 || worldX > width || worldZ < 0 || worldZ > length) return;
|
||||||
|
|
||||||
Vector wPos = new Vector(worldX, 0, worldZ);
|
|
||||||
|
|
||||||
fp.runAction(new Runnable() {
|
fp.runAction(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
BlockVector3 wPos = new BlockVector3(worldX, 0, worldZ);
|
||||||
viewer.refresh();
|
viewer.refresh();
|
||||||
int topY = generator.getNearestSurfaceTerrainBlock(wPos.getBlockX(), wPos.getBlockZ(), 255, 0, 255);
|
int topY = generator.getNearestSurfaceTerrainBlock(wPos.getBlockX(), wPos.getBlockZ(), 255, 0, 255);
|
||||||
wPos.mutY(topY);
|
wPos = wPos.withY(topY);
|
||||||
|
|
||||||
EditSession es = new EditSessionBuilder(fp.getWorld()).player(fp).combineStages(false).autoQueue(false).blockBag(null).limitUnlimited().build();
|
EditSession es = new EditSessionBuilder(fp.getWorld()).player(fp).combineStages(false).autoQueue(false).blockBag(null).limitUnlimited().build();
|
||||||
ExtentTraverser last = new ExtentTraverser(es.getExtent()).last();
|
ExtentTraverser last = new ExtentTraverser(es.getExtent()).last();
|
||||||
|
@ -22,7 +22,6 @@ import com.comphenix.protocol.wrappers.ChunkCoordIntPair;
|
|||||||
import com.comphenix.protocol.wrappers.EnumWrappers;
|
import com.comphenix.protocol.wrappers.EnumWrappers;
|
||||||
import com.comphenix.protocol.wrappers.WrappedBlockData;
|
import com.comphenix.protocol.wrappers.WrappedBlockData;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.WorldEdit;
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
@ -31,6 +30,9 @@ import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
|||||||
import com.sk89q.worldedit.event.platform.BlockInteractEvent;
|
import com.sk89q.worldedit.event.platform.BlockInteractEvent;
|
||||||
import com.sk89q.worldedit.event.platform.Interaction;
|
import com.sk89q.worldedit.event.platform.Interaction;
|
||||||
import com.sk89q.worldedit.extension.platform.PlatformManager;
|
import com.sk89q.worldedit.extension.platform.PlatformManager;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -62,12 +64,12 @@ public class CFIPacketListener implements Listener {
|
|||||||
this.protocolmanager = ProtocolLibrary.getProtocolManager();
|
this.protocolmanager = ProtocolLibrary.getProtocolManager();
|
||||||
|
|
||||||
// Direct digging to the virtual world
|
// Direct digging to the virtual world
|
||||||
registerBlockEvent(PacketType.Play.Client.BLOCK_DIG, false, new RunnableVal3<PacketEvent, VirtualWorld, Vector>() {
|
registerBlockEvent(PacketType.Play.Client.BLOCK_DIG, false, new RunnableVal3<PacketEvent, VirtualWorld, BlockVector3>() {
|
||||||
@Override
|
@Override
|
||||||
public void run(PacketEvent event, VirtualWorld gen, Vector pt) {
|
public void run(PacketEvent event, VirtualWorld gen, BlockVector3 pt) {
|
||||||
try {
|
try {
|
||||||
Player plr = event.getPlayer();
|
Player plr = event.getPlayer();
|
||||||
Vector realPos = pt.add(gen.getOrigin());
|
BlockVector3 realPos = pt.add(gen.getOrigin().toBlockPoint());
|
||||||
if (!sendBlockChange(plr, gen, pt, Interaction.HIT)) {
|
if (!sendBlockChange(plr, gen, pt, Interaction.HIT)) {
|
||||||
gen.setBlock(pt, EditSession.nullBlock);
|
gen.setBlock(pt, EditSession.nullBlock);
|
||||||
}
|
}
|
||||||
@ -78,9 +80,9 @@ public class CFIPacketListener implements Listener {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Direct placing to the virtual world
|
// Direct placing to the virtual world
|
||||||
RunnableVal3<PacketEvent, VirtualWorld, Vector> placeTask = new RunnableVal3<PacketEvent, VirtualWorld, Vector>() {
|
RunnableVal3<PacketEvent, VirtualWorld, BlockVector3> placeTask = new RunnableVal3<PacketEvent, VirtualWorld, BlockVector3>() {
|
||||||
@Override
|
@Override
|
||||||
public void run(PacketEvent event, VirtualWorld gen, Vector pt) {
|
public void run(PacketEvent event, VirtualWorld gen, BlockVector3 pt) {
|
||||||
try {
|
try {
|
||||||
Player plr = event.getPlayer();
|
Player plr = event.getPlayer();
|
||||||
List<EnumWrappers.Hand> hands = event.getPacket().getHands().getValues();
|
List<EnumWrappers.Hand> hands = event.getPacket().getHands().getValues();
|
||||||
@ -113,9 +115,9 @@ public class CFIPacketListener implements Listener {
|
|||||||
registerBlockEvent(PacketType.Play.Client.USE_ITEM, true, placeTask);
|
registerBlockEvent(PacketType.Play.Client.USE_ITEM, true, placeTask);
|
||||||
|
|
||||||
// Cancel block change packets where the real world overlaps with the virtual one
|
// Cancel block change packets where the real world overlaps with the virtual one
|
||||||
registerBlockEvent(PacketType.Play.Server.BLOCK_CHANGE, false, new RunnableVal3<PacketEvent, VirtualWorld, Vector>() {
|
registerBlockEvent(PacketType.Play.Server.BLOCK_CHANGE, false, new RunnableVal3<PacketEvent, VirtualWorld, BlockVector3>() {
|
||||||
@Override
|
@Override
|
||||||
public void run(PacketEvent event, VirtualWorld gen, Vector pt) {
|
public void run(PacketEvent event, VirtualWorld gen, BlockVector3 pt) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -128,7 +130,7 @@ public class CFIPacketListener implements Listener {
|
|||||||
|
|
||||||
VirtualWorld gen = getGenerator(event);
|
VirtualWorld gen = getGenerator(event);
|
||||||
if (gen != null) {
|
if (gen != null) {
|
||||||
Vector origin = gen.getOrigin();
|
BlockVector3 origin = gen.getOrigin().toBlockPoint();
|
||||||
PacketContainer packet = event.getPacket();
|
PacketContainer packet = event.getPacket();
|
||||||
StructureModifier<Integer> ints = packet.getIntegers();
|
StructureModifier<Integer> ints = packet.getIntegers();
|
||||||
int cx = ints.read(0);
|
int cx = ints.read(0);
|
||||||
@ -137,7 +139,7 @@ public class CFIPacketListener implements Listener {
|
|||||||
int ocx = origin.getBlockX() >> 4;
|
int ocx = origin.getBlockX() >> 4;
|
||||||
int ocz = origin.getBlockZ() >> 4;
|
int ocz = origin.getBlockZ() >> 4;
|
||||||
|
|
||||||
if (gen.contains(new Vector((cx - ocx) << 4, 0, (cz - ocz) << 4))) {
|
if (gen.contains(new BlockVector3((cx - ocx) << 4, 0, (cz - ocz) << 4))) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|
||||||
Player plr = event.getPlayer();
|
Player plr = event.getPlayer();
|
||||||
@ -163,8 +165,8 @@ public class CFIPacketListener implements Listener {
|
|||||||
Location pos = player.getLocation();
|
Location pos = player.getLocation();
|
||||||
VirtualWorld gen = getGenerator(event);
|
VirtualWorld gen = getGenerator(event);
|
||||||
if (gen != null) {
|
if (gen != null) {
|
||||||
Vector origin = gen.getOrigin();
|
BlockVector3 origin = gen.getOrigin().toBlockPoint();
|
||||||
Vector pt = new Vector(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ());
|
BlockVector3 pt = new BlockVector3(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ());
|
||||||
|
|
||||||
StructureModifier<Integer> ints = event.getPacket().getIntegers();
|
StructureModifier<Integer> ints = event.getPacket().getIntegers();
|
||||||
int id = ints.read(0);
|
int id = ints.read(0);
|
||||||
@ -188,12 +190,12 @@ public class CFIPacketListener implements Listener {
|
|||||||
Location pos = player.getLocation();
|
Location pos = player.getLocation();
|
||||||
VirtualWorld gen = getGenerator(event);
|
VirtualWorld gen = getGenerator(event);
|
||||||
if (gen != null) {
|
if (gen != null) {
|
||||||
Vector origin = gen.getOrigin();
|
BlockVector3 origin = gen.getOrigin().toBlockPoint();
|
||||||
Vector from = new Vector(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ());
|
BlockVector3 from = new BlockVector3(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ());
|
||||||
|
|
||||||
PacketContainer packet = event.getPacket();
|
PacketContainer packet = event.getPacket();
|
||||||
StructureModifier<Double> doubles = packet.getDoubles();
|
StructureModifier<Double> doubles = packet.getDoubles();
|
||||||
Vector to = new Vector(doubles.read(0), doubles.read(1), doubles.read(2));
|
BlockVector3 to = new BlockVector3(doubles.read(0), doubles.read(1), doubles.read(2));
|
||||||
if (gen.contains(to.subtract(origin)) && from.distanceSq(to) < 8) {
|
if (gen.contains(to.subtract(origin)) && from.distanceSq(to) < 8) {
|
||||||
int id = packet.getIntegers().read(0);
|
int id = packet.getIntegers().read(0);
|
||||||
PacketContainer reply = new PacketContainer(PacketType.Play.Client.TELEPORT_ACCEPT);
|
PacketContainer reply = new PacketContainer(PacketType.Play.Client.TELEPORT_ACCEPT);
|
||||||
@ -220,10 +222,10 @@ public class CFIPacketListener implements Listener {
|
|||||||
if (gen != null) {
|
if (gen != null) {
|
||||||
PacketContainer packet = event.getPacket();
|
PacketContainer packet = event.getPacket();
|
||||||
ChunkCoordIntPair chunk = packet.getChunkCoordIntPairs().read(0);
|
ChunkCoordIntPair chunk = packet.getChunkCoordIntPairs().read(0);
|
||||||
Vector origin = gen.getOrigin();
|
BlockVector3 origin = gen.getOrigin().toBlockPoint();
|
||||||
int cx = chunk.getChunkX() - (origin.getBlockX() >> 4);
|
int cx = chunk.getChunkX() - (origin.getBlockX() >> 4);
|
||||||
int cz = chunk.getChunkZ() - (origin.getBlockX() >> 4);
|
int cz = chunk.getChunkZ() - (origin.getBlockX() >> 4);
|
||||||
if (gen.contains(new Vector(cx << 4, 0, cz << 4))) {
|
if (gen.contains(new BlockVector3(cx << 4, 0, cz << 4))) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -246,14 +248,14 @@ public class CFIPacketListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean sendBlockChange(Player plr, VirtualWorld gen, Vector pt, Interaction action) {
|
private boolean sendBlockChange(Player plr, VirtualWorld gen, BlockVector3 pt, Interaction action) {
|
||||||
PlatformManager platform = WorldEdit.getInstance().getPlatformManager();
|
PlatformManager platform = WorldEdit.getInstance().getPlatformManager();
|
||||||
com.sk89q.worldedit.entity.Player actor = FawePlayer.wrap(plr).getPlayer();
|
com.sk89q.worldedit.entity.Player actor = FawePlayer.wrap(plr).getPlayer();
|
||||||
com.sk89q.worldedit.util.Location location = new com.sk89q.worldedit.util.Location(actor.getWorld(), pt);
|
com.sk89q.worldedit.util.Location location = new com.sk89q.worldedit.util.Location(actor.getWorld(), pt.toVector3());
|
||||||
BlockInteractEvent toCall = new BlockInteractEvent(actor, location, action);
|
BlockInteractEvent toCall = new BlockInteractEvent(actor, location, action);
|
||||||
platform.handleBlockInteract(toCall);
|
platform.handleBlockInteract(toCall);
|
||||||
if (toCall.isCancelled() || action == Interaction.OPEN) {
|
if (toCall.isCancelled() || action == Interaction.OPEN) {
|
||||||
Vector realPos = pt.add(gen.getOrigin());
|
BlockVector3 realPos = pt.add(gen.getOrigin().toBlockPoint());
|
||||||
BlockStateHolder block = gen.getBlock(pt);
|
BlockStateHolder block = gen.getBlock(pt);
|
||||||
sendBlockChange(plr, realPos, block);
|
sendBlockChange(plr, realPos, block);
|
||||||
return true;
|
return true;
|
||||||
@ -261,7 +263,7 @@ public class CFIPacketListener implements Listener {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendBlockChange(Player plr, Vector pt, BlockStateHolder block) {
|
private void sendBlockChange(Player plr, BlockVector3 pt, BlockStateHolder block) {
|
||||||
plr.sendBlockChange(new Location(plr.getWorld(), pt.getBlockX(), pt.getBlockY(), pt.getBlockZ()), BukkitAdapter.adapt(block));
|
plr.sendBlockChange(new Location(plr.getWorld(), pt.getBlockX(), pt.getBlockY(), pt.getBlockZ()), BukkitAdapter.adapt(block));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,20 +282,20 @@ public class CFIPacketListener implements Listener {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Vector getRelPos(PacketEvent event, VirtualWorld generator) {
|
private BlockVector3 getRelPos(PacketEvent event, VirtualWorld generator) {
|
||||||
PacketContainer packet = event.getPacket();
|
PacketContainer packet = event.getPacket();
|
||||||
StructureModifier<BlockPosition> position = packet.getBlockPositionModifier();
|
StructureModifier<BlockPosition> position = packet.getBlockPositionModifier();
|
||||||
BlockPosition loc = position.readSafely(0);
|
BlockPosition loc = position.readSafely(0);
|
||||||
if (loc == null) return null;
|
if (loc == null) return null;
|
||||||
Vector origin = generator.getOrigin();
|
BlockVector3 origin = generator.getOrigin().toBlockPoint();
|
||||||
Vector pt = new Vector(loc.getX() - origin.getBlockX(), loc.getY() - origin.getBlockY(), loc.getZ() - origin.getBlockZ());
|
BlockVector3 pt = new BlockVector3(loc.getX() - origin.getBlockX(), loc.getY() - origin.getBlockY(), loc.getZ() - origin.getBlockZ());
|
||||||
return pt;
|
return pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleBlockEvent(PacketEvent event, boolean relative, RunnableVal3<PacketEvent, VirtualWorld, Vector> task) {
|
private void handleBlockEvent(PacketEvent event, boolean relative, RunnableVal3<PacketEvent, VirtualWorld, BlockVector3> task) {
|
||||||
VirtualWorld gen = getGenerator(event);
|
VirtualWorld gen = getGenerator(event);
|
||||||
if (gen != null) {
|
if (gen != null) {
|
||||||
Vector pt = getRelPos(event, gen);
|
BlockVector3 pt = getRelPos(event, gen);
|
||||||
if (pt != null) {
|
if (pt != null) {
|
||||||
if (relative) pt = getRelative(event, pt);
|
if (relative) pt = getRelative(event, pt);
|
||||||
if (gen.contains(pt)) {
|
if (gen.contains(pt)) {
|
||||||
@ -304,7 +306,7 @@ public class CFIPacketListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerBlockEvent(PacketType type, boolean relative, RunnableVal3<PacketEvent, VirtualWorld, Vector> task) {
|
private void registerBlockEvent(PacketType type, boolean relative, RunnableVal3<PacketEvent, VirtualWorld, BlockVector3> task) {
|
||||||
protocolmanager.addPacketListener(new PacketAdapter(plugin, ListenerPriority.NORMAL, type) {
|
protocolmanager.addPacketListener(new PacketAdapter(plugin, ListenerPriority.NORMAL, type) {
|
||||||
@Override
|
@Override
|
||||||
public void onPacketReceiving(final PacketEvent event) {
|
public void onPacketReceiving(final PacketEvent event) {
|
||||||
@ -318,7 +320,7 @@ public class CFIPacketListener implements Listener {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private Vector getRelative(PacketEvent container, Vector pt) {
|
private BlockVector3 getRelative(PacketEvent container, BlockVector3 pt) {
|
||||||
PacketContainer packet = container.getPacket();
|
PacketContainer packet = container.getPacket();
|
||||||
StructureModifier<EnumWrappers.Direction> dirs = packet.getDirections();
|
StructureModifier<EnumWrappers.Direction> dirs = packet.getDirections();
|
||||||
EnumWrappers.Direction dir = dirs.readSafely(0);
|
EnumWrappers.Direction dir = dirs.readSafely(0);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
package com.boydti.fawe.bukkit.regions;
|
package com.boydti.fawe.bukkit.regions;
|
||||||
|
|
||||||
import com.boydti.fawe.regions.FaweMask;
|
import com.boydti.fawe.regions.FaweMask;
|
||||||
import com.sk89q.worldedit.BlockVector;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|
||||||
public class BukkitMask extends FaweMask {
|
public class BukkitMask extends FaweMask {
|
||||||
@ -11,6 +12,6 @@ public class BukkitMask extends FaweMask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public BukkitMask(Location pos1, Location pos2, String name) {
|
public BukkitMask(Location pos1, Location pos2, String name) {
|
||||||
super(new BlockVector(pos1.getBlockX(), pos1.getBlockY(), pos1.getBlockZ()), new BlockVector(pos2.getBlockX(), pos2.getBlockY(), pos2.getBlockZ()), name);
|
super(new BlockVector3(pos1.getBlockX(), pos1.getBlockY(), pos1.getBlockZ()), new BlockVector3(pos2.getBlockX(), pos2.getBlockY(), pos2.getBlockZ()), name);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,8 +5,8 @@ import com.boydti.fawe.bukkit.wrapper.AsyncWorld;
|
|||||||
import com.boydti.fawe.object.FawePlayer;
|
import com.boydti.fawe.object.FawePlayer;
|
||||||
import com.boydti.fawe.object.queue.NullFaweQueue;
|
import com.boydti.fawe.object.queue.NullFaweQueue;
|
||||||
import com.boydti.fawe.regions.FaweMask;
|
import com.boydti.fawe.regions.FaweMask;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||||
@ -55,8 +55,8 @@ public class FreeBuildRegion extends BukkitMaskManager {
|
|||||||
World bukkitWorld = player.parent.getWorld();
|
World bukkitWorld = player.parent.getWorld();
|
||||||
AsyncWorld asyncWorld = AsyncWorld.wrap(bukkitWorld);
|
AsyncWorld asyncWorld = AsyncWorld.wrap(bukkitWorld);
|
||||||
|
|
||||||
Vector vec1 = new Vector(0, 0, 0);
|
BlockVector3 vec1 = new BlockVector3(0, 0, 0);
|
||||||
Vector vec2 = vec1;
|
BlockVector3 vec2 = vec1;
|
||||||
Location pos1 = BukkitAdapter.adapt(bukkitWorld, vec1);
|
Location pos1 = BukkitAdapter.adapt(bukkitWorld, vec1);
|
||||||
Location pos2 = BukkitAdapter.adapt(bukkitWorld, vec2);
|
Location pos2 = BukkitAdapter.adapt(bukkitWorld, vec2);
|
||||||
|
|
||||||
|
@ -3,7 +3,8 @@ package com.boydti.fawe.bukkit.regions;
|
|||||||
import com.boydti.fawe.bukkit.FaweBukkit;
|
import com.boydti.fawe.bukkit.FaweBukkit;
|
||||||
import com.boydti.fawe.object.FawePlayer;
|
import com.boydti.fawe.object.FawePlayer;
|
||||||
import com.boydti.fawe.regions.FaweMask;
|
import com.boydti.fawe.regions.FaweMask;
|
||||||
import com.sk89q.worldedit.BlockVector;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import net.sacredlabyrinth.Phaed.PreciousStones.PreciousStones;
|
import net.sacredlabyrinth.Phaed.PreciousStones.PreciousStones;
|
||||||
import net.sacredlabyrinth.Phaed.PreciousStones.field.Field;
|
import net.sacredlabyrinth.Phaed.PreciousStones.field.Field;
|
||||||
@ -40,8 +41,8 @@ public class PreciousStonesFeature extends BukkitMaskManager implements Listener
|
|||||||
boolean member = fp.hasPermission("fawe.preciousstones.member");
|
boolean member = fp.hasPermission("fawe.preciousstones.member");
|
||||||
for (final Field myField : fields) {
|
for (final Field myField : fields) {
|
||||||
if (isAllowed(player, myField, type, member)) {
|
if (isAllowed(player, myField, type, member)) {
|
||||||
BlockVector pos1 = new BlockVector(myField.getMinx(), myField.getMiny(), myField.getMinz());
|
BlockVector3 pos1 = new BlockVector3(myField.getMinx(), myField.getMiny(), myField.getMinz());
|
||||||
BlockVector pos2 = new BlockVector(myField.getMaxx(), myField.getMaxy(), myField.getMaxz());
|
BlockVector3 pos2 = new BlockVector3(myField.getMaxx(), myField.getMaxy(), myField.getMaxz());
|
||||||
return new FaweMask(pos1, pos2, "FIELD: " + myField) {
|
return new FaweMask(pos1, pos2, "FIELD: " + myField) {
|
||||||
@Override
|
@Override
|
||||||
public boolean isValid(FawePlayer player, MaskType type) {
|
public boolean isValid(FawePlayer player, MaskType type) {
|
||||||
|
@ -7,8 +7,8 @@ import com.boydti.fawe.object.FawePlayer;
|
|||||||
import com.boydti.fawe.object.RegionWrapper;
|
import com.boydti.fawe.object.RegionWrapper;
|
||||||
import com.boydti.fawe.regions.FaweMask;
|
import com.boydti.fawe.regions.FaweMask;
|
||||||
import com.boydti.fawe.regions.general.RegionFilter;
|
import com.boydti.fawe.regions.general.RegionFilter;
|
||||||
import com.sk89q.worldedit.BlockVector;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.Vector;
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.regions.AbstractRegion;
|
import com.sk89q.worldedit.regions.AbstractRegion;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
import com.sk89q.worldedit.regions.Polygonal2DRegion;
|
import com.sk89q.worldedit.regions.Polygonal2DRegion;
|
||||||
@ -61,7 +61,7 @@ public class Worldguard extends BukkitMaskManager implements Listener {
|
|||||||
if (global != null && isAllowed(player, global)) {
|
if (global != null && isAllowed(player, global)) {
|
||||||
return global;
|
return global;
|
||||||
}
|
}
|
||||||
final ApplicableRegionSet regions = manager.getApplicableRegions(new Vector(loc.getX(), loc.getY(), loc.getZ()));
|
final ApplicableRegionSet regions = manager.getApplicableRegions(new BlockVector3(loc.getX(), loc.getY(), loc.getZ()));
|
||||||
for (final ProtectedRegion region : regions) {
|
for (final ProtectedRegion region : regions) {
|
||||||
if (isAllowed(player, region)) {
|
if (isAllowed(player, region)) {
|
||||||
return region;
|
return region;
|
||||||
@ -145,27 +145,27 @@ public class Worldguard extends BukkitMaskManager implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getMinimumPoint() {
|
public BlockVector3 getMinimumPoint() {
|
||||||
return region.getMinimumPoint();
|
return region.getMinimumPoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getMaximumPoint() {
|
public BlockVector3 getMaximumPoint() {
|
||||||
return region.getMaximumPoint();
|
return region.getMaximumPoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void expand(Vector... changes) {
|
public void expand(BlockVector3... changes) {
|
||||||
throw new UnsupportedOperationException("Region is immutable");
|
throw new UnsupportedOperationException("Region is immutable");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void contract(Vector... changes) {
|
public void contract(BlockVector3... changes) {
|
||||||
throw new UnsupportedOperationException("Region is immutable");
|
throw new UnsupportedOperationException("Region is immutable");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean contains(Vector position) {
|
public boolean contains(BlockVector3 position) {
|
||||||
return region.contains(position);
|
return region.contains(position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -179,8 +179,8 @@ public class Worldguard extends BukkitMaskManager implements Listener {
|
|||||||
}
|
}
|
||||||
if (region instanceof ProtectedPolygonalRegion) {
|
if (region instanceof ProtectedPolygonalRegion) {
|
||||||
ProtectedPolygonalRegion casted = (ProtectedPolygonalRegion) region;
|
ProtectedPolygonalRegion casted = (ProtectedPolygonalRegion) region;
|
||||||
BlockVector max = region.getMaximumPoint();
|
BlockVector3 max = region.getMaximumPoint();
|
||||||
BlockVector min = region.getMinimumPoint();
|
BlockVector3 min = region.getMinimumPoint();
|
||||||
return new Polygonal2DRegion(null, casted.getPoints(), min.getBlockY(), max.getBlockY());
|
return new Polygonal2DRegion(null, casted.getPoints(), min.getBlockY(), max.getBlockY());
|
||||||
}
|
}
|
||||||
return new AdaptedRegion(region);
|
return new AdaptedRegion(region);
|
||||||
|
@ -5,7 +5,7 @@ import com.boydti.fawe.bukkit.filter.WorldGuardFilter;
|
|||||||
import com.boydti.fawe.object.FawePlayer;
|
import com.boydti.fawe.object.FawePlayer;
|
||||||
import com.boydti.fawe.regions.FaweMask;
|
import com.boydti.fawe.regions.FaweMask;
|
||||||
import com.boydti.fawe.regions.general.RegionFilter;
|
import com.boydti.fawe.regions.general.RegionFilter;
|
||||||
import com.sk89q.worldedit.Vector;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.AbstractRegion;
|
import com.sk89q.worldedit.regions.AbstractRegion;
|
||||||
import com.sk89q.worldguard.LocalPlayer;
|
import com.sk89q.worldguard.LocalPlayer;
|
||||||
import com.sk89q.worldguard.WorldGuard;
|
import com.sk89q.worldguard.WorldGuard;
|
||||||
@ -65,45 +65,45 @@ public class WorldguardFlag extends BukkitMaskManager implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getMinimumPoint() {
|
public BlockVector3 getMinimumPoint() {
|
||||||
Vector point = null;
|
BlockVector3 point = null;
|
||||||
for (Map.Entry<String, ProtectedRegion> entry : manager.getRegions().entrySet()) {
|
for (Map.Entry<String, ProtectedRegion> entry : manager.getRegions().entrySet()) {
|
||||||
Vector p = entry.getValue().getMinimumPoint();
|
BlockVector3 p = entry.getValue().getMinimumPoint();
|
||||||
if (point == null) {
|
if (point == null) {
|
||||||
point = p;
|
point = p;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
point = Vector.getMinimum(point, p);
|
point = point.getMinimum(p);
|
||||||
}
|
}
|
||||||
return point;
|
return point;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getMaximumPoint() {
|
public BlockVector3 getMaximumPoint() {
|
||||||
Vector point = null;
|
BlockVector3 point = null;
|
||||||
for (Map.Entry<String, ProtectedRegion> entry : manager.getRegions().entrySet()) {
|
for (Map.Entry<String, ProtectedRegion> entry : manager.getRegions().entrySet()) {
|
||||||
Vector p = entry.getValue().getMaximumPoint();
|
BlockVector3 p = entry.getValue().getMaximumPoint();
|
||||||
if (point == null) {
|
if (point == null) {
|
||||||
point = p;
|
point = p;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
point = Vector.getMaximum(point, p);
|
point = point.getMaximum(p);
|
||||||
}
|
}
|
||||||
return point;
|
return point;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void expand(Vector... changes) {
|
public void expand(BlockVector3... changes) {
|
||||||
throw new UnsupportedOperationException("Region is immutable");
|
throw new UnsupportedOperationException("Region is immutable");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void contract(Vector... changes) {
|
public void contract(BlockVector3... changes) {
|
||||||
throw new UnsupportedOperationException("Region is immutable");
|
throw new UnsupportedOperationException("Region is immutable");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean contains(Vector position) {
|
public boolean contains(BlockVector3 position) {
|
||||||
// Make sure that all these flags are not denied. Denies override allows. WorldGuardExtraFlags can add Flags.WORLDEDIT
|
// Make sure that all these flags are not denied. Denies override allows. WorldGuardExtraFlags can add Flags.WORLDEDIT
|
||||||
return manager.getApplicableRegions(position).testState(localplayer, Flags.BUILD, Flags.BLOCK_PLACE, Flags.BLOCK_BREAK);
|
return manager.getApplicableRegions(position).testState(localplayer, Flags.BUILD, Flags.BLOCK_PLACE, Flags.BLOCK_BREAK);
|
||||||
}
|
}
|
||||||
|
@ -13,11 +13,12 @@ import com.comphenix.protocol.wrappers.BlockPosition;
|
|||||||
import com.comphenix.protocol.wrappers.nbt.NbtBase;
|
import com.comphenix.protocol.wrappers.nbt.NbtBase;
|
||||||
import com.comphenix.protocol.wrappers.nbt.NbtCompound;
|
import com.comphenix.protocol.wrappers.nbt.NbtCompound;
|
||||||
import com.comphenix.protocol.wrappers.nbt.NbtFactory;
|
import com.comphenix.protocol.wrappers.nbt.NbtFactory;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||||
import com.sk89q.worldedit.internal.cui.CUIEvent;
|
import com.sk89q.worldedit.internal.cui.CUIEvent;
|
||||||
import com.sk89q.worldedit.internal.cui.SelectionPointEvent;
|
import com.sk89q.worldedit.internal.cui.SelectionPointEvent;
|
||||||
import com.sk89q.worldedit.internal.cui.SelectionShapeEvent;
|
import com.sk89q.worldedit.internal.cui.SelectionShapeEvent;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -33,10 +34,10 @@ import org.bukkit.entity.Player;
|
|||||||
public class StructureCUI extends CUI {
|
public class StructureCUI extends CUI {
|
||||||
private boolean cuboid = true;
|
private boolean cuboid = true;
|
||||||
|
|
||||||
private Vector pos1;
|
private BlockVector3 pos1;
|
||||||
private Vector pos2;
|
private BlockVector3 pos2;
|
||||||
|
|
||||||
private Vector remove;
|
private BlockVector3 remove;
|
||||||
private NbtCompound removeTag;
|
private NbtCompound removeTag;
|
||||||
private BlockState state;
|
private BlockState state;
|
||||||
|
|
||||||
@ -56,7 +57,7 @@ public class StructureCUI extends CUI {
|
|||||||
int x = Integer.parseInt(param[1]);
|
int x = Integer.parseInt(param[1]);
|
||||||
int y = Integer.parseInt(param[2]);
|
int y = Integer.parseInt(param[2]);
|
||||||
int z = Integer.parseInt(param[3]);
|
int z = Integer.parseInt(param[3]);
|
||||||
Vector pos = new Vector(x, y, z);
|
BlockVector3 pos = new BlockVector3(x, y, z);
|
||||||
if (id == 0) {
|
if (id == 0) {
|
||||||
pos1 = pos;
|
pos1 = pos;
|
||||||
} else {
|
} else {
|
||||||
@ -123,7 +124,7 @@ public class StructureCUI extends CUI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendNbt(Vector pos, NbtCompound compound) {
|
private void sendNbt(BlockVector3 pos, NbtCompound compound) {
|
||||||
Player player = this.<Player>getPlayer().parent;
|
Player player = this.<Player>getPlayer().parent;
|
||||||
ProtocolManager manager = ProtocolLibrary.getProtocolManager();
|
ProtocolManager manager = ProtocolLibrary.getProtocolManager();
|
||||||
|
|
||||||
@ -158,8 +159,8 @@ public class StructureCUI extends CUI {
|
|||||||
remove = null;
|
remove = null;
|
||||||
}
|
}
|
||||||
if (pos1 == null || pos2 == null) return;
|
if (pos1 == null || pos2 == null) return;
|
||||||
Vector min = Vector.getMinimum(pos1, pos2);
|
BlockVector3 min = pos1.getMinimum(pos2);
|
||||||
Vector max = Vector.getMaximum(pos1, pos2);
|
BlockVector3 max = pos1.getMaximum(pos2);
|
||||||
|
|
||||||
// Position
|
// Position
|
||||||
double rotX = playerLoc.getYaw();
|
double rotX = playerLoc.getYaw();
|
||||||
@ -187,7 +188,7 @@ public class StructureCUI extends CUI {
|
|||||||
NbtCompound compound = constructStructureNbt(x, y, z, posX, posY, posZ, sizeX, sizeY, sizeZ);
|
NbtCompound compound = constructStructureNbt(x, y, z, posX, posY, posZ, sizeX, sizeY, sizeZ);
|
||||||
|
|
||||||
Block block = player.getWorld().getBlockAt(x, y, z);
|
Block block = player.getWorld().getBlockAt(x, y, z);
|
||||||
remove = new Vector(x, y, z);
|
remove = new BlockVector3(x, y, z);
|
||||||
state = BukkitAdapter.adapt(block.getBlockData());
|
state = BukkitAdapter.adapt(block.getBlockData());
|
||||||
removeTag = compound;
|
removeTag = compound;
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
//import com.sk89q.jnbt.StringTag;
|
//import com.sk89q.jnbt.StringTag;
|
||||||
//import com.sk89q.jnbt.Tag;
|
//import com.sk89q.jnbt.Tag;
|
||||||
//import com.sk89q.worldedit.blocks.BaseBlock;
|
//import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
//import com.sk89q.worldedit.world.block.BlockState;
|
||||||
//import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
|
//import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
|
||||||
//import com.sk89q.worldedit.entity.BaseEntity;
|
//import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
//import com.sk89q.worldedit.internal.Constants;
|
//import com.sk89q.worldedit.internal.Constants;
|
||||||
|
@ -19,12 +19,13 @@
|
|||||||
|
|
||||||
package com.sk89q.worldedit.bukkit;
|
package com.sk89q.worldedit.bukkit;
|
||||||
|
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseItemStack;
|
import com.sk89q.worldedit.blocks.BaseItemStack;
|
||||||
import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
|
import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
|
||||||
import com.sk89q.worldedit.bukkit.adapter.IBukkitAdapter;
|
import com.sk89q.worldedit.bukkit.adapter.IBukkitAdapter;
|
||||||
import com.sk89q.worldedit.bukkit.adapter.SimpleBukkitAdapter;
|
import com.sk89q.worldedit.bukkit.adapter.SimpleBukkitAdapter;
|
||||||
import com.sk89q.worldedit.entity.Entity;
|
import com.sk89q.worldedit.entity.Entity;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.util.Location;
|
import com.sk89q.worldedit.util.Location;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
@ -34,6 +35,7 @@ import com.sk89q.worldedit.world.block.BlockTypes;
|
|||||||
import com.sk89q.worldedit.world.entity.EntityType;
|
import com.sk89q.worldedit.world.entity.EntityType;
|
||||||
import com.sk89q.worldedit.world.gamemode.GameMode;
|
import com.sk89q.worldedit.world.gamemode.GameMode;
|
||||||
import com.sk89q.worldedit.world.item.ItemType;
|
import com.sk89q.worldedit.world.item.ItemType;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -84,7 +86,11 @@ public enum BukkitAdapter {
|
|||||||
return getAdapter().adapt(location);
|
return getAdapter().adapt(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static org.bukkit.Location adapt(org.bukkit.World world, Vector position) {
|
public static org.bukkit.Location adapt(org.bukkit.World world, Vector3 position) {
|
||||||
|
return getAdapter().adapt(world, position);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static org.bukkit.Location adapt(org.bukkit.World world, BlockVector3 position) {
|
||||||
return getAdapter().adapt(world, position);
|
return getAdapter().adapt(world, position);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,10 +98,14 @@ public enum BukkitAdapter {
|
|||||||
return getAdapter().adapt(world, location);
|
return getAdapter().adapt(world, location);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Vector asVector(org.bukkit.Location location) {
|
public static Vector3 asVector(org.bukkit.Location location) {
|
||||||
return getAdapter().asVector(location);
|
return getAdapter().asVector(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static BlockVector3 asBlockVector(org.bukkit.Location location) {
|
||||||
|
return getAdapter().asBlockVector(location);
|
||||||
|
}
|
||||||
|
|
||||||
public static Entity adapt(org.bukkit.entity.Entity entity) {
|
public static Entity adapt(org.bukkit.entity.Entity entity) {
|
||||||
return getAdapter().adapt(entity);
|
return getAdapter().adapt(entity);
|
||||||
}
|
}
|
||||||
|
@ -22,20 +22,26 @@ package com.sk89q.worldedit.bukkit;
|
|||||||
import com.boydti.fawe.object.RunnableVal;
|
import com.boydti.fawe.object.RunnableVal;
|
||||||
import com.boydti.fawe.util.TaskManager;
|
import com.boydti.fawe.util.TaskManager;
|
||||||
import com.sk89q.util.StringUtil;
|
import com.sk89q.util.StringUtil;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.WorldEdit;
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.blocks.BaseItemStack;
|
import com.sk89q.worldedit.blocks.BaseItemStack;
|
||||||
|
import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
import com.sk89q.worldedit.extension.platform.AbstractPlayerActor;
|
import com.sk89q.worldedit.extension.platform.AbstractPlayerActor;
|
||||||
import com.sk89q.worldedit.extent.inventory.BlockBag;
|
import com.sk89q.worldedit.extent.inventory.BlockBag;
|
||||||
import com.sk89q.worldedit.internal.cui.CUIEvent;
|
import com.sk89q.worldedit.internal.cui.CUIEvent;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.session.SessionKey;
|
import com.sk89q.worldedit.session.SessionKey;
|
||||||
import com.sk89q.worldedit.util.HandSide;
|
import com.sk89q.worldedit.util.HandSide;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
|
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||||
import com.sk89q.worldedit.world.gamemode.GameMode;
|
import com.sk89q.worldedit.world.gamemode.GameMode;
|
||||||
import com.sk89q.worldedit.world.gamemode.GameModes;
|
import com.sk89q.worldedit.world.gamemode.GameModes;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -147,7 +153,7 @@ public class BukkitPlayer extends AbstractPlayerActor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPosition(Vector pos, float pitch, float yaw) {
|
public void setPosition(Vector3 pos, float pitch, float yaw) {
|
||||||
player.teleport(new Location(player.getWorld(), pos.getX(), pos.getY(),
|
player.teleport(new Location(player.getWorld(), pos.getX(), pos.getY(),
|
||||||
pos.getZ(), yaw, pitch));
|
pos.getZ(), yaw, pitch));
|
||||||
}
|
}
|
||||||
@ -205,7 +211,7 @@ public class BukkitPlayer extends AbstractPlayerActor {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
setPosition(new Vector(x + 0.5, y, z + 0.5));
|
setPosition(new Vector3(x + 0.5, y, z + 0.5));
|
||||||
player.setFlying(true);
|
player.setFlying(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -217,7 +223,7 @@ public class BukkitPlayer extends AbstractPlayerActor {
|
|||||||
@Override
|
@Override
|
||||||
public com.sk89q.worldedit.util.Location getLocation() {
|
public com.sk89q.worldedit.util.Location getLocation() {
|
||||||
Location nativeLocation = player.getLocation();
|
Location nativeLocation = player.getLocation();
|
||||||
Vector position = BukkitAdapter.asVector(nativeLocation);
|
Vector3 position = BukkitAdapter.asVector(nativeLocation);
|
||||||
return new com.sk89q.worldedit.util.Location(
|
return new com.sk89q.worldedit.util.Location(
|
||||||
getWorld(),
|
getWorld(),
|
||||||
position,
|
position,
|
||||||
|
@ -21,13 +21,20 @@ package com.sk89q.worldedit.bukkit;
|
|||||||
|
|
||||||
import com.boydti.fawe.Fawe;
|
import com.boydti.fawe.Fawe;
|
||||||
import com.sk89q.worldedit.*;
|
import com.sk89q.worldedit.*;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
|
||||||
|
import com.sk89q.worldedit.EditSession;
|
||||||
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.blocks.BaseItemStack;
|
import com.sk89q.worldedit.blocks.BaseItemStack;
|
||||||
import com.sk89q.worldedit.blocks.LazyBlock;
|
import com.sk89q.worldedit.blocks.LazyBlock;
|
||||||
import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
|
import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
import com.sk89q.worldedit.history.change.BlockChange;
|
import com.sk89q.worldedit.history.change.BlockChange;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.util.TreeGenerator;
|
import com.sk89q.worldedit.util.TreeGenerator;
|
||||||
import com.sk89q.worldedit.world.AbstractWorld;
|
import com.sk89q.worldedit.world.AbstractWorld;
|
||||||
@ -35,6 +42,7 @@ import com.sk89q.worldedit.world.biome.BaseBiome;
|
|||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
import com.sk89q.worldedit.world.weather.WeatherType;
|
import com.sk89q.worldedit.world.weather.WeatherType;
|
||||||
import com.sk89q.worldedit.world.weather.WeatherTypes;
|
import com.sk89q.worldedit.world.weather.WeatherTypes;
|
||||||
|
|
||||||
import org.bukkit.Effect;
|
import org.bukkit.Effect;
|
||||||
import org.bukkit.TreeType;
|
import org.bukkit.TreeType;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
@ -53,8 +61,6 @@ import java.util.*;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
|
||||||
|
|
||||||
public class BukkitWorld extends AbstractWorld {
|
public class BukkitWorld extends AbstractWorld {
|
||||||
|
|
||||||
private static final Logger logger = WorldEdit.logger;
|
private static final Logger logger = WorldEdit.logger;
|
||||||
@ -84,7 +90,7 @@ public class BukkitWorld extends AbstractWorld {
|
|||||||
List<Entity> ents = world.getEntities();
|
List<Entity> ents = world.getEntities();
|
||||||
List<com.sk89q.worldedit.entity.Entity> entities = new ArrayList<>();
|
List<com.sk89q.worldedit.entity.Entity> entities = new ArrayList<>();
|
||||||
for (Entity ent : ents) {
|
for (Entity ent : ents) {
|
||||||
if (region.contains(BukkitAdapter.asVector(ent.getLocation()))) {
|
if (region.contains(BukkitAdapter.asBlockVector(ent.getLocation()))) {
|
||||||
addEntities(ent, entities);
|
addEntities(ent, entities);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -185,7 +191,7 @@ public class BukkitWorld extends AbstractWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getBlockLightLevel(Vector pt) {
|
public int getBlockLightLevel(BlockVector3 pt) {
|
||||||
return getWorld().getBlockAt(pt.getBlockX(), pt.getBlockY(), pt.getBlockZ()).getLightLevel();
|
return getWorld().getBlockAt(pt.getBlockX(), pt.getBlockY(), pt.getBlockZ()).getLightLevel();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,14 +199,14 @@ public class BukkitWorld extends AbstractWorld {
|
|||||||
public boolean regenerate(Region region, EditSession editSession) {
|
public boolean regenerate(Region region, EditSession editSession) {
|
||||||
com.sk89q.worldedit.world.block.BlockStateHolder[] history = new com.sk89q.worldedit.world.block.BlockState[16 * 16 * (getMaxY() + 1)];
|
com.sk89q.worldedit.world.block.BlockStateHolder[] history = new com.sk89q.worldedit.world.block.BlockState[16 * 16 * (getMaxY() + 1)];
|
||||||
|
|
||||||
for (Vector2D chunk : region.getChunks()) {
|
for (BlockVector2 chunk : region.getChunks()) {
|
||||||
Vector min = new Vector(chunk.getBlockX() * 16, 0, chunk.getBlockZ() * 16);
|
BlockVector3 min = new BlockVector3(chunk.getBlockX() * 16, 0, chunk.getBlockZ() * 16);
|
||||||
|
|
||||||
// First save all the blocks inside
|
// First save all the blocks inside
|
||||||
for (int x = 0; x < 16; ++x) {
|
for (int x = 0; x < 16; ++x) {
|
||||||
for (int y = 0; y < (getMaxY() + 1); ++y) {
|
for (int y = 0; y < (getMaxY() + 1); ++y) {
|
||||||
for (int z = 0; z < 16; ++z) {
|
for (int z = 0; z < 16; ++z) {
|
||||||
Vector pt = min.add(x, y, z);
|
BlockVector3 pt = min.add(x, y, z);
|
||||||
int index = y * 16 * 16 + z * 16 + x;
|
int index = y * 16 * 16 + z * 16 + x;
|
||||||
history[index] = editSession.getFullBlock(pt);
|
history[index] = editSession.getFullBlock(pt);
|
||||||
}
|
}
|
||||||
@ -217,14 +223,14 @@ public class BukkitWorld extends AbstractWorld {
|
|||||||
for (int x = 0; x < 16; ++x) {
|
for (int x = 0; x < 16; ++x) {
|
||||||
for (int y = 0; y < (getMaxY() + 1); ++y) {
|
for (int y = 0; y < (getMaxY() + 1); ++y) {
|
||||||
for (int z = 0; z < 16; ++z) {
|
for (int z = 0; z < 16; ++z) {
|
||||||
Vector pt = min.add(x, y, z);
|
BlockVector3 pt = min.add(x, y, z);
|
||||||
int index = y * 16 * 16 + z * 16 + x;
|
int index = y * 16 * 16 + z * 16 + x;
|
||||||
|
|
||||||
// We have to restore the block if it was outside
|
// We have to restore the block if it was outside
|
||||||
if (!region.contains(pt)) {
|
if (!region.contains(pt)) {
|
||||||
editSession.smartSetBlock(pt, history[index]);
|
editSession.smartSetBlock(pt, history[index]);
|
||||||
} else { // Otherwise fool with history
|
} else { // Otherwise fool with history
|
||||||
editSession.getChangeSet().add(new BlockChange(pt.toBlockVector(), history[index], editSession.getFullBlock(pt)));
|
editSession.getChangeSet().add(new BlockChange(pt, history[index], editSession.getFullBlock(pt)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -263,7 +269,7 @@ public class BukkitWorld extends AbstractWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean clearContainerBlockContents(Vector pt) {
|
public boolean clearContainerBlockContents(BlockVector3 pt) {
|
||||||
Block block = getWorld().getBlockAt(pt.getBlockX(), pt.getBlockY(), pt.getBlockZ());
|
Block block = getWorld().getBlockAt(pt.getBlockX(), pt.getBlockY(), pt.getBlockZ());
|
||||||
if (block == null) {
|
if (block == null) {
|
||||||
return false;
|
return false;
|
||||||
@ -317,7 +323,7 @@ public class BukkitWorld extends AbstractWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean generateTree(TreeGenerator.TreeType type, EditSession editSession, Vector pt) {
|
public boolean generateTree(TreeGenerator.TreeType type, EditSession editSession, BlockVector3 pt) {
|
||||||
World world = getWorld();
|
World world = getWorld();
|
||||||
TreeType bukkitType = toBukkitTreeType(type);
|
TreeType bukkitType = toBukkitTreeType(type);
|
||||||
return type != null && world.generateTree(BukkitAdapter.adapt(world, pt), bukkitType,
|
return type != null && world.generateTree(BukkitAdapter.adapt(world, pt), bukkitType,
|
||||||
@ -325,13 +331,13 @@ public class BukkitWorld extends AbstractWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dropItem(Vector pt, BaseItemStack item) {
|
public void dropItem(Vector3 pt, BaseItemStack item) {
|
||||||
World world = getWorld();
|
World world = getWorld();
|
||||||
world.dropItemNaturally(BukkitAdapter.adapt(world, pt), BukkitAdapter.adapt(item));
|
world.dropItemNaturally(BukkitAdapter.adapt(world, pt), BukkitAdapter.adapt(item));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkLoadedChunk(Vector pt) {
|
public void checkLoadedChunk(BlockVector3 pt) {
|
||||||
World world = getWorld();
|
World world = getWorld();
|
||||||
|
|
||||||
if (!world.isChunkLoaded(pt.getBlockX() >> 4, pt.getBlockZ() >> 4)) {
|
if (!world.isChunkLoaded(pt.getBlockX() >> 4, pt.getBlockZ() >> 4)) {
|
||||||
@ -363,15 +369,15 @@ public class BukkitWorld extends AbstractWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void fixAfterFastMode(Iterable<BlockVector2D> chunks) {
|
public void fixAfterFastMode(Iterable<BlockVector2> chunks) {
|
||||||
World world = getWorld();
|
World world = getWorld();
|
||||||
for (BlockVector2D chunkPos : chunks) {
|
for (BlockVector2 chunkPos : chunks) {
|
||||||
world.refreshChunk(chunkPos.getBlockX(), chunkPos.getBlockZ());
|
world.refreshChunk(chunkPos.getBlockX(), chunkPos.getBlockZ());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean playEffect(Vector position, int type, int data) {
|
public boolean playEffect(Vector3 position, int type, int data) {
|
||||||
World world = getWorld();
|
World world = getWorld();
|
||||||
|
|
||||||
final Effect effect = effects.get(type);
|
final Effect effect = effects.get(type);
|
||||||
@ -430,18 +436,18 @@ public class BukkitWorld extends AbstractWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void simulateBlockMine(Vector pt) {
|
public void simulateBlockMine(BlockVector3 pt) {
|
||||||
getWorld().getBlockAt(pt.getBlockX(), pt.getBlockY(), pt.getBlockZ()).breakNaturally();
|
getWorld().getBlockAt(pt.getBlockX(), pt.getBlockY(), pt.getBlockZ()).breakNaturally();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public com.sk89q.worldedit.world.block.BlockState getBlock(Vector position) {
|
public com.sk89q.worldedit.world.block.BlockState getBlock(BlockVector3 position) {
|
||||||
Block bukkitBlock = getWorld().getBlockAt(position.getBlockX(), position.getBlockY(), position.getBlockZ());
|
Block bukkitBlock = getWorld().getBlockAt(position.getBlockX(), position.getBlockY(), position.getBlockZ());
|
||||||
return BukkitAdapter.adapt(bukkitBlock.getBlockData());
|
return BukkitAdapter.adapt(bukkitBlock.getBlockData());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBlock(Vector position, BlockStateHolder block, boolean notifyAndLight) {
|
public boolean setBlock(BlockVector3 position, BlockStateHolder block, boolean notifyAndLight) throws WorldEditException {
|
||||||
BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter();
|
BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter();
|
||||||
if (adapter != null) {
|
if (adapter != null) {
|
||||||
try {
|
try {
|
||||||
@ -467,12 +473,12 @@ public class BukkitWorld extends AbstractWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public com.sk89q.worldedit.world.block.BlockState getLazyBlock(Vector position) {
|
public com.sk89q.worldedit.world.block.BlockState getLazyBlock(BlockVector3 position) {
|
||||||
return getBlock(position);
|
return getBlock(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public com.sk89q.worldedit.world.block.BlockState getFullBlock(Vector position) {
|
public com.sk89q.worldedit.world.block.BlockState getFullBlock(BlockVector3 position) {
|
||||||
BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter();
|
BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter();
|
||||||
if (adapter != null) {
|
if (adapter != null) {
|
||||||
return adapter.getBlock(BukkitAdapter.adapt(getWorld(), position));
|
return adapter.getBlock(BukkitAdapter.adapt(getWorld(), position));
|
||||||
@ -482,7 +488,7 @@ public class BukkitWorld extends AbstractWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseBiome getBiome(Vector2D position) {
|
public BaseBiome getBiome(BlockVector2 position) {
|
||||||
BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter();
|
BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter();
|
||||||
if (adapter != null) {
|
if (adapter != null) {
|
||||||
int id = adapter.getBiomeId(getWorld().getBiome(position.getBlockX(), position.getBlockZ()));
|
int id = adapter.getBiomeId(getWorld().getBiome(position.getBlockX(), position.getBlockZ()));
|
||||||
@ -493,7 +499,7 @@ public class BukkitWorld extends AbstractWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBiome(Vector2D position, BaseBiome biome) {
|
public boolean setBiome(BlockVector2 position, BaseBiome biome) {
|
||||||
BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter();
|
BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter();
|
||||||
if (adapter != null) {
|
if (adapter != null) {
|
||||||
Biome bukkitBiome = adapter.getBiome(biome.getId());
|
Biome bukkitBiome = adapter.getBiome(biome.getId());
|
||||||
|
@ -21,8 +21,8 @@ package com.sk89q.worldedit.bukkit;
|
|||||||
|
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
|
||||||
import org.bukkit.BlockChangeDelegate;
|
import org.bukkit.BlockChangeDelegate;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ public class EditSessionBlockChangeDelegate implements BlockChangeDelegate {
|
|||||||
@Override
|
@Override
|
||||||
public boolean setBlockData(int x, int y, int z, BlockData blockData) {
|
public boolean setBlockData(int x, int y, int z, BlockData blockData) {
|
||||||
try {
|
try {
|
||||||
editSession.setBlock(new Vector(x, y, z), BukkitAdapter.adapt(blockData));
|
editSession.setBlock(new BlockVector3(x, y, z), BukkitAdapter.adapt(blockData));
|
||||||
} catch (MaxChangedBlocksException e) {
|
} catch (MaxChangedBlocksException e) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -49,7 +49,7 @@ public class EditSessionBlockChangeDelegate implements BlockChangeDelegate {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockData getBlockData(int x, int y, int z) {
|
public BlockData getBlockData(int x, int y, int z) {
|
||||||
return BukkitAdapter.adapt(editSession.getBlock(new Vector(x, y, z)));
|
return BukkitAdapter.adapt(editSession.getBlock(new BlockVector3(x, y, z)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -59,7 +59,7 @@ public class EditSessionBlockChangeDelegate implements BlockChangeDelegate {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEmpty(int x, int y, int z) {
|
public boolean isEmpty(int x, int y, int z) {
|
||||||
return editSession.getBlock(new Vector(x, y, z)).getBlockType().getMaterial().isAir();
|
return editSession.getBlock(new BlockVector3(x, y, z)).getBlockType().getMaterial().isAir();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,10 @@ import com.sk89q.jnbt.Tag;
|
|||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.blocks.BlockMaterial;
|
import com.sk89q.worldedit.blocks.BlockMaterial;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
|
import com.sk89q.worldedit.entity.Player;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.registry.state.Property;
|
import com.sk89q.worldedit.registry.state.Property;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
@ -104,6 +108,14 @@ public interface BukkitImplAdapter<T> extends IBukkitAdapter {
|
|||||||
default BlockMaterial getMaterial(BlockType blockType) {
|
default BlockMaterial getMaterial(BlockType blockType) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Send the given NBT data to the player.
|
||||||
|
*
|
||||||
|
* @param player The player
|
||||||
|
* @param pos The position
|
||||||
|
* @param nbtData The NBT Data
|
||||||
|
*/
|
||||||
|
void sendFakeNBT(Player player, BlockVector3 pos, CompoundTag nbtData);
|
||||||
|
|
||||||
default BlockMaterial getMaterial(BlockState blockState) {
|
default BlockMaterial getMaterial(BlockState blockState) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
package com.sk89q.worldedit.bukkit.adapter;
|
package com.sk89q.worldedit.bukkit.adapter;
|
||||||
|
|
||||||
import com.sk89q.worldedit.NotABlockException;
|
import com.sk89q.worldedit.NotABlockException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseItemStack;
|
import com.sk89q.worldedit.blocks.BaseItemStack;
|
||||||
import com.sk89q.worldedit.bukkit.*;
|
import com.sk89q.worldedit.bukkit.*;
|
||||||
import com.sk89q.worldedit.entity.Entity;
|
import com.sk89q.worldedit.entity.Entity;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.util.Location;
|
import com.sk89q.worldedit.util.Location;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
@ -96,7 +97,7 @@ public interface IBukkitAdapter {
|
|||||||
*/
|
*/
|
||||||
default Location adapt(org.bukkit.Location location) {
|
default Location adapt(org.bukkit.Location location) {
|
||||||
checkNotNull(location);
|
checkNotNull(location);
|
||||||
Vector position = asVector(location);
|
Vector3 position = asVector(location);
|
||||||
return new com.sk89q.worldedit.util.Location(
|
return new com.sk89q.worldedit.util.Location(
|
||||||
adapt(location.getWorld()),
|
adapt(location.getWorld()),
|
||||||
position,
|
position,
|
||||||
@ -112,7 +113,7 @@ public interface IBukkitAdapter {
|
|||||||
*/
|
*/
|
||||||
default org.bukkit.Location adapt(Location location) {
|
default org.bukkit.Location adapt(Location location) {
|
||||||
checkNotNull(location);
|
checkNotNull(location);
|
||||||
Vector position = location.toVector();
|
Vector3 position = location.toVector();
|
||||||
return new org.bukkit.Location(
|
return new org.bukkit.Location(
|
||||||
adapt((World) location.getExtent()),
|
adapt((World) location.getExtent()),
|
||||||
position.getX(), position.getY(), position.getZ(),
|
position.getX(), position.getY(), position.getZ(),
|
||||||
@ -127,7 +128,7 @@ public interface IBukkitAdapter {
|
|||||||
* @param position the WorldEdit position
|
* @param position the WorldEdit position
|
||||||
* @return a Bukkit location
|
* @return a Bukkit location
|
||||||
*/
|
*/
|
||||||
default org.bukkit.Location adapt(org.bukkit.World world, Vector position) {
|
default org.bukkit.Location adapt(org.bukkit.World world, Vector3 position) {
|
||||||
checkNotNull(world);
|
checkNotNull(world);
|
||||||
checkNotNull(position);
|
checkNotNull(position);
|
||||||
return new org.bukkit.Location(
|
return new org.bukkit.Location(
|
||||||
@ -135,6 +136,10 @@ public interface IBukkitAdapter {
|
|||||||
position.getX(), position.getY(), position.getZ());
|
position.getX(), position.getY(), position.getZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default org.bukkit.Location adapt(org.bukkit.World world, BlockVector3 position){
|
||||||
|
return adapt(world, position.toVector3());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a Bukkit location from a WorldEdit location with a Bukkit world.
|
* Create a Bukkit location from a WorldEdit location with a Bukkit world.
|
||||||
*
|
*
|
||||||
@ -158,9 +163,20 @@ public interface IBukkitAdapter {
|
|||||||
* @param location The Bukkit location
|
* @param location The Bukkit location
|
||||||
* @return a WorldEdit vector
|
* @return a WorldEdit vector
|
||||||
*/
|
*/
|
||||||
default Vector asVector(org.bukkit.Location location) {
|
default Vector3 asVector(org.bukkit.Location location) {
|
||||||
checkNotNull(location);
|
checkNotNull(location);
|
||||||
return new Vector(location.getX(), location.getY(), location.getZ());
|
return new Vector3(location.getX(), location.getY(), location.getZ());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a WorldEdit BlockVector from a Bukkit location.
|
||||||
|
*
|
||||||
|
* @param location The Bukkit location
|
||||||
|
* @return a WorldEdit vector
|
||||||
|
*/
|
||||||
|
default BlockVector3 asBlockVector(org.bukkit.Location location) {
|
||||||
|
checkNotNull(location);
|
||||||
|
return new BlockVector3(location.getX(), location.getY(), location.getZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -19,13 +19,7 @@ import com.boydti.fawe.util.SetQueue;
|
|||||||
import com.boydti.fawe.util.TaskManager;
|
import com.boydti.fawe.util.TaskManager;
|
||||||
import com.boydti.fawe.util.WEManager;
|
import com.boydti.fawe.util.WEManager;
|
||||||
import com.boydti.fawe.wrappers.WorldWrapper;
|
import com.boydti.fawe.wrappers.WorldWrapper;
|
||||||
import com.sk89q.jnbt.ByteArrayTag;
|
|
||||||
import com.sk89q.jnbt.IntTag;
|
|
||||||
import com.sk89q.jnbt.NBTInputStream;
|
|
||||||
import com.sk89q.jnbt.ShortTag;
|
|
||||||
import com.sk89q.jnbt.Tag;
|
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.WorldEdit;
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.extension.factory.DefaultMaskParser;
|
import com.sk89q.worldedit.extension.factory.DefaultMaskParser;
|
||||||
@ -39,27 +33,22 @@ import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
|||||||
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat;
|
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat;
|
||||||
import com.sk89q.worldedit.internal.registry.AbstractFactory;
|
import com.sk89q.worldedit.internal.registry.AbstractFactory;
|
||||||
import com.sk89q.worldedit.internal.registry.InputParser;
|
import com.sk89q.worldedit.internal.registry.InputParser;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.world.AbstractWorld;
|
import com.sk89q.worldedit.world.AbstractWorld;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.nio.channels.Channels;
|
|
||||||
import java.nio.channels.ReadableByteChannel;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.zip.GZIPInputStream;
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
@ -468,8 +457,8 @@ public class FaweAPI {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static int fixLighting(World world, Region selection, @Nullable FaweQueue queue, final FaweQueue.RelightMode mode) {
|
public static int fixLighting(World world, Region selection, @Nullable FaweQueue queue, final FaweQueue.RelightMode mode) {
|
||||||
final Vector bot = selection.getMinimumPoint();
|
final BlockVector3 bot = selection.getMinimumPoint();
|
||||||
final Vector top = selection.getMaximumPoint();
|
final BlockVector3 top = selection.getMaximumPoint();
|
||||||
|
|
||||||
final int minX = bot.getBlockX() >> 4;
|
final int minX = bot.getBlockX() >> 4;
|
||||||
final int minZ = bot.getBlockZ() >> 4;
|
final int minZ = bot.getBlockZ() >> 4;
|
||||||
|
@ -21,7 +21,6 @@ import com.boydti.fawe.util.StringMan;
|
|||||||
import com.sk89q.minecraft.util.commands.Command;
|
import com.sk89q.minecraft.util.commands.Command;
|
||||||
import com.sk89q.minecraft.util.commands.CommandPermissions;
|
import com.sk89q.minecraft.util.commands.CommandPermissions;
|
||||||
import com.sk89q.worldedit.*;
|
import com.sk89q.worldedit.*;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.blocks.BlockType;
|
import com.sk89q.worldedit.blocks.BlockType;
|
||||||
@ -29,6 +28,7 @@ import com.sk89q.worldedit.entity.Player;
|
|||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
import com.sk89q.worldedit.function.pattern.RandomPattern;
|
import com.sk89q.worldedit.function.pattern.RandomPattern;
|
||||||
import com.sk89q.worldedit.internal.annotation.Selection;
|
import com.sk89q.worldedit.internal.annotation.Selection;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.util.command.binding.Switch;
|
import com.sk89q.worldedit.util.command.binding.Switch;
|
||||||
@ -396,8 +396,8 @@ public class AnvilCommands {
|
|||||||
)
|
)
|
||||||
@CommandPermissions("worldedit.anvil.clear")
|
@CommandPermissions("worldedit.anvil.clear")
|
||||||
public void unset(Player player, EditSession editSession, @Selection Region selection) throws WorldEditException {
|
public void unset(Player player, EditSession editSession, @Selection Region selection) throws WorldEditException {
|
||||||
Vector bot = selection.getMinimumPoint();
|
BlockVector3 bot = selection.getMinimumPoint();
|
||||||
Vector top = selection.getMaximumPoint();
|
BlockVector3 top = selection.getMaximumPoint();
|
||||||
RegionWrapper region = new RegionWrapper(bot, top);
|
RegionWrapper region = new RegionWrapper(bot, top);
|
||||||
|
|
||||||
MCAFilterCounter filter = new MCAFilterCounter() {
|
MCAFilterCounter filter = new MCAFilterCounter() {
|
||||||
@ -618,8 +618,8 @@ public class AnvilCommands {
|
|||||||
)
|
)
|
||||||
@CommandPermissions("worldedit.anvil.removelayer")
|
@CommandPermissions("worldedit.anvil.removelayer")
|
||||||
public void removeLayers(Player player, EditSession editSession, @Selection Region selection, int id) throws WorldEditException {
|
public void removeLayers(Player player, EditSession editSession, @Selection Region selection, int id) throws WorldEditException {
|
||||||
Vector min = selection.getMinimumPoint();
|
BlockVector3 min = selection.getMinimumPoint();
|
||||||
Vector max = selection.getMaximumPoint();
|
BlockVector3 max = selection.getMaximumPoint();
|
||||||
int minY = min.getBlockY();
|
int minY = min.getBlockY();
|
||||||
int maxY = max.getBlockY();
|
int maxY = max.getBlockY();
|
||||||
RemoveLayerFilter filter = new RemoveLayerFilter(minY, maxY, id);
|
RemoveLayerFilter filter = new RemoveLayerFilter(minY, maxY, id);
|
||||||
@ -644,7 +644,7 @@ public class AnvilCommands {
|
|||||||
String worldName = Fawe.imp().getWorldName(editSession.getWorld());
|
String worldName = Fawe.imp().getWorldName(editSession.getWorld());
|
||||||
FaweQueue tmp = SetQueue.IMP.getNewQueue(worldName, true, false);
|
FaweQueue tmp = SetQueue.IMP.getNewQueue(worldName, true, false);
|
||||||
MCAQueue queue = new MCAQueue(tmp);
|
MCAQueue queue = new MCAQueue(tmp);
|
||||||
Vector origin = session.getPlacementPosition(player);
|
BlockVector3 origin = session.getPlacementPosition(player);
|
||||||
MCAClipboard clipboard = new MCAClipboard(queue, cuboid, origin);
|
MCAClipboard clipboard = new MCAClipboard(queue, cuboid, origin);
|
||||||
FawePlayer fp = FawePlayer.wrap(player);
|
FawePlayer fp = FawePlayer.wrap(player);
|
||||||
fp.setMeta(FawePlayer.METADATA_KEYS.ANVIL_CLIPBOARD, clipboard);
|
fp.setMeta(FawePlayer.METADATA_KEYS.ANVIL_CLIPBOARD, clipboard);
|
||||||
|
@ -41,6 +41,8 @@ import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat;
|
|||||||
import com.sk89q.worldedit.function.mask.Mask;
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
import com.sk89q.worldedit.function.pattern.BlockPattern;
|
import com.sk89q.worldedit.function.pattern.BlockPattern;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.registry.state.PropertyKey;
|
import com.sk89q.worldedit.registry.state.PropertyKey;
|
||||||
import com.sk89q.worldedit.session.ClipboardHolder;
|
import com.sk89q.worldedit.session.ClipboardHolder;
|
||||||
import com.sk89q.worldedit.session.request.Request;
|
import com.sk89q.worldedit.session.request.Request;
|
||||||
@ -421,7 +423,7 @@ public class CFICommands extends MethodCommands {
|
|||||||
ClipboardHolder holder = fp.getSession().getClipboard();
|
ClipboardHolder holder = fp.getSession().getClipboard();
|
||||||
Clipboard clipboard = holder.getClipboard();
|
Clipboard clipboard = holder.getClipboard();
|
||||||
boolean[] ids = new boolean[BlockTypes.size()];
|
boolean[] ids = new boolean[BlockTypes.size()];
|
||||||
for (Vector pt : clipboard.getRegion()) {
|
for (BlockVector3 pt : clipboard.getRegion()) {
|
||||||
ids[clipboard.getBlock(pt).getInternalBlockTypeId()] = true;
|
ids[clipboard.getBlock(pt).getInternalBlockTypeId()] = true;
|
||||||
}
|
}
|
||||||
blocks = new HashSet<>();
|
blocks = new HashSet<>();
|
||||||
@ -447,7 +449,7 @@ public class CFICommands extends MethodCommands {
|
|||||||
BlockType type = BlockTypes.get(typeId);
|
BlockType type = BlockTypes.get(typeId);
|
||||||
BlockStateHolder block = type.getDefaultState();
|
BlockStateHolder block = type.getDefaultState();
|
||||||
pattern.setBlock(block);
|
pattern.setBlock(block);
|
||||||
if (mask.test(Vector.ZERO)) blocks.add(type);
|
if (mask.test(BlockVector3.ZERO)) blocks.add(type);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -663,7 +665,7 @@ public class CFICommands extends MethodCommands {
|
|||||||
public void tp(FawePlayer fp) throws ParameterException, WorldEditException {
|
public void tp(FawePlayer fp) throws ParameterException, WorldEditException {
|
||||||
HeightMapMCAGenerator gen = assertSettings(fp).getGenerator();
|
HeightMapMCAGenerator gen = assertSettings(fp).getGenerator();
|
||||||
msg("Teleporting...").send(fp);
|
msg("Teleporting...").send(fp);
|
||||||
Vector origin = gen.getOrigin();
|
Vector3 origin = gen.getOrigin();
|
||||||
Player player = fp.getPlayer();
|
Player player = fp.getPlayer();
|
||||||
player.setPosition(origin.subtract(16, 0, 16));
|
player.setPosition(origin.subtract(16, 0, 16));
|
||||||
player.findFreePosition();
|
player.findFreePosition();
|
||||||
|
@ -9,8 +9,6 @@ import com.boydti.fawe.util.TextureUtil;
|
|||||||
import com.boydti.fawe.util.image.ImageUtil;
|
import com.boydti.fawe.util.image.ImageUtil;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.LocalSession;
|
import com.sk89q.worldedit.LocalSession;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.Vector2D;
|
|
||||||
import com.sk89q.worldedit.WorldEdit;
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
import com.sk89q.worldedit.entity.Entity;
|
import com.sk89q.worldedit.entity.Entity;
|
||||||
import com.sk89q.worldedit.entity.Player;
|
import com.sk89q.worldedit.entity.Player;
|
||||||
@ -22,6 +20,8 @@ import com.sk89q.worldedit.extent.Extent;
|
|||||||
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 com.sk89q.worldedit.internal.expression.runtime.EvaluationException;
|
import com.sk89q.worldedit.internal.expression.runtime.EvaluationException;
|
||||||
|
import com.sk89q.worldedit.math.Vector2;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.session.request.Request;
|
import com.sk89q.worldedit.session.request.Request;
|
||||||
import com.sk89q.worldedit.util.command.binding.Range;
|
import com.sk89q.worldedit.util.command.binding.Range;
|
||||||
import com.sk89q.worldedit.util.command.binding.Text;
|
import com.sk89q.worldedit.util.command.binding.Text;
|
||||||
@ -257,11 +257,11 @@ public class FawePrimitiveBinding extends BindingHelper {
|
|||||||
* @return the requested type
|
* @return the requested type
|
||||||
* @throws ParameterException on error
|
* @throws ParameterException on error
|
||||||
*/
|
*/
|
||||||
@BindingMatch(type = Vector.class,
|
@BindingMatch(type = Vector3.class,
|
||||||
behavior = BindingBehavior.CONSUMES,
|
behavior = BindingBehavior.CONSUMES,
|
||||||
consumedCount = 1,
|
consumedCount = 1,
|
||||||
provideModifiers = true)
|
provideModifiers = true)
|
||||||
public Vector getVector(ArgumentStack context, Annotation[] modifiers) throws ParameterException {
|
public Vector3 getVector(ArgumentStack context, Annotation[] modifiers) throws ParameterException {
|
||||||
String radiusString = context.next();
|
String radiusString = context.next();
|
||||||
String[] radii = radiusString.split(",");
|
String[] radii = radiusString.split(",");
|
||||||
final double radiusX, radiusY, radiusZ;
|
final double radiusX, radiusY, radiusZ;
|
||||||
@ -279,7 +279,7 @@ public class FawePrimitiveBinding extends BindingHelper {
|
|||||||
default:
|
default:
|
||||||
throw new ParameterException("You must either specify 1 or 3 radius values.");
|
throw new ParameterException("You must either specify 1 or 3 radius values.");
|
||||||
}
|
}
|
||||||
return new Vector(radiusX, radiusY, radiusZ);
|
return new Vector3(radiusX, radiusY, radiusZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -290,11 +290,11 @@ public class FawePrimitiveBinding extends BindingHelper {
|
|||||||
* @return the requested type
|
* @return the requested type
|
||||||
* @throws ParameterException on error
|
* @throws ParameterException on error
|
||||||
*/
|
*/
|
||||||
@BindingMatch(type = Vector2D.class,
|
@BindingMatch(type = Vector2.class,
|
||||||
behavior = BindingBehavior.CONSUMES,
|
behavior = BindingBehavior.CONSUMES,
|
||||||
consumedCount = 1,
|
consumedCount = 1,
|
||||||
provideModifiers = true)
|
provideModifiers = true)
|
||||||
public Vector2D getVector2D(ArgumentStack context, Annotation[] modifiers) throws ParameterException {
|
public Vector2 getVector2D(ArgumentStack context, Annotation[] modifiers) throws ParameterException {
|
||||||
String radiusString = context.next();
|
String radiusString = context.next();
|
||||||
String[] radii = radiusString.split(",");
|
String[] radii = radiusString.split(",");
|
||||||
final double radiusX, radiusZ;
|
final double radiusX, radiusZ;
|
||||||
@ -311,7 +311,7 @@ public class FawePrimitiveBinding extends BindingHelper {
|
|||||||
default:
|
default:
|
||||||
throw new ParameterException("You must either specify 1 or 2 radius values.");
|
throw new ParameterException("You must either specify 1 or 2 radius values.");
|
||||||
}
|
}
|
||||||
return new Vector2D(radiusX, radiusZ);
|
return new Vector2(radiusX, radiusZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -9,7 +9,8 @@ import com.boydti.fawe.object.changeset.DiskStorageHistory;
|
|||||||
import com.boydti.fawe.object.task.AsyncNotifyQueue;
|
import com.boydti.fawe.object.task.AsyncNotifyQueue;
|
||||||
import com.boydti.fawe.util.MainUtil;
|
import com.boydti.fawe.util.MainUtil;
|
||||||
import com.boydti.fawe.util.TaskManager;
|
import com.boydti.fawe.util.TaskManager;
|
||||||
import com.sk89q.worldedit.Vector;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -126,7 +127,7 @@ public class RollbackDatabase extends AsyncNotifyQueue {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void getPotentialEdits(final UUID uuid, final long minTime, final Vector pos1, final Vector pos2, final RunnableVal<DiskStorageHistory> onEach, final Runnable whenDone, final boolean delete, final boolean ascending) {
|
public void getPotentialEdits(final UUID uuid, final long minTime, final BlockVector3 pos1, final BlockVector3 pos2, final RunnableVal<DiskStorageHistory> onEach, final Runnable whenDone, final boolean delete, final boolean ascending) {
|
||||||
final World world = FaweAPI.getWorld(this.worldName);
|
final World world = FaweAPI.getWorld(this.worldName);
|
||||||
addTask(new Runnable() {
|
addTask(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -9,10 +9,11 @@ import com.boydti.fawe.object.clipboard.MemoryOptimizedClipboard;
|
|||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.jnbt.ListTag;
|
import com.sk89q.jnbt.ListTag;
|
||||||
import com.sk89q.jnbt.NBTInputStream;
|
import com.sk89q.jnbt.NBTInputStream;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
|
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
|
||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
import java.io.DataInputStream;
|
import java.io.DataInputStream;
|
||||||
@ -81,7 +82,7 @@ public class CorruptSchematicStreamer {
|
|||||||
if (fc != null) {
|
if (fc != null) {
|
||||||
return fc;
|
return fc;
|
||||||
}
|
}
|
||||||
Vector dimensions = guessDimensions(volume.get(), width.get(), height.get(), length.get());
|
BlockVector3 dimensions = guessDimensions(volume.get(), width.get(), height.get(), length.get());
|
||||||
if (width.get() == 0 || height.get() == 0 || length.get() == 0) {
|
if (width.get() == 0 || height.get() == 0 || length.get() == 0) {
|
||||||
Fawe.debug("No dimensions found! Estimating based on factors:" + dimensions);
|
Fawe.debug("No dimensions found! Estimating based on factors:" + dimensions);
|
||||||
}
|
}
|
||||||
@ -265,21 +266,21 @@ public class CorruptSchematicStreamer {
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
private Vector guessDimensions(int volume, int width, int height, int length) {
|
private BlockVector3 guessDimensions(int volume, int width, int height, int length) {
|
||||||
if (volume == 0) {
|
if (volume == 0) {
|
||||||
return new Vector(width, height, length);
|
return new BlockVector3(width, height, length);
|
||||||
}
|
}
|
||||||
if (volume == width * height * length) {
|
if (volume == width * height * length) {
|
||||||
return new Vector(width, height, length);
|
return new BlockVector3(width, height, length);
|
||||||
}
|
}
|
||||||
if (width == 0 && height != 0 && length != 0 && volume % (height * length) == 0 && height * length <= volume) {
|
if (width == 0 && height != 0 && length != 0 && volume % (height * length) == 0 && height * length <= volume) {
|
||||||
return new Vector(volume / (height * length), height, length);
|
return new BlockVector3(volume / (height * length), height, length);
|
||||||
}
|
}
|
||||||
if (height == 0 && width != 0 && length != 0 && volume % (width * length) == 0 && width * length <= volume) {
|
if (height == 0 && width != 0 && length != 0 && volume % (width * length) == 0 && width * length <= volume) {
|
||||||
return new Vector(width, volume / (width * length), length);
|
return new BlockVector3(width, volume / (width * length), length);
|
||||||
}
|
}
|
||||||
if (length == 0 && height != 0 && width != 0 && volume % (height * width) == 0 && height * width <= volume) {
|
if (length == 0 && height != 0 && width != 0 && volume % (height * width) == 0 && height * width <= volume) {
|
||||||
return new Vector(width, height, volume / (width * height));
|
return new BlockVector3(width, height, volume / (width * height));
|
||||||
}
|
}
|
||||||
List<Integer> factors = new ArrayList<>();
|
List<Integer> factors = new ArrayList<>();
|
||||||
for (int i = (int) Math.sqrt(volume); i > 0; i--) {
|
for (int i = (int) Math.sqrt(volume); i > 0; i--) {
|
||||||
@ -289,7 +290,7 @@ public class CorruptSchematicStreamer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
int min = Integer.MAX_VALUE;
|
int min = Integer.MAX_VALUE;
|
||||||
Vector dimensions = new Vector();
|
int vx = 0, vy = 0, vz = 0;
|
||||||
for (int x = 0; x < factors.size(); x++) {
|
for (int x = 0; x < factors.size(); x++) {
|
||||||
int xValue = factors.get(x);
|
int xValue = factors.get(x);
|
||||||
for (int y = 0; y < factors.size(); y++) {
|
for (int y = 0; y < factors.size(); y++) {
|
||||||
@ -300,12 +301,14 @@ public class CorruptSchematicStreamer {
|
|||||||
int max = Math.max(Math.max(xValue, yValue), z);
|
int max = Math.max(Math.max(xValue, yValue), z);
|
||||||
if (max < min) {
|
if (max < min) {
|
||||||
min = max;
|
min = max;
|
||||||
dimensions = new Vector(xValue, z, yValue);
|
vx = xValue;
|
||||||
|
vz = z;
|
||||||
|
vy = yValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return dimensions;
|
return new BlockVector3(vx, vz, vy);
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface CorruptReader {
|
public interface CorruptReader {
|
||||||
|
@ -14,12 +14,12 @@ import com.sk89q.jnbt.CompoundTag;
|
|||||||
import com.sk89q.jnbt.ListTag;
|
import com.sk89q.jnbt.ListTag;
|
||||||
import com.sk89q.jnbt.NBTInputStream;
|
import com.sk89q.jnbt.NBTInputStream;
|
||||||
import com.sk89q.jnbt.StringTag;
|
import com.sk89q.jnbt.StringTag;
|
||||||
import com.sk89q.worldedit.BlockVector;
|
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BlockMaterial;
|
import com.sk89q.worldedit.blocks.BlockMaterial;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
|
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
|
||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
import com.sk89q.worldedit.registry.state.PropertyKey;
|
import com.sk89q.worldedit.registry.state.PropertyKey;
|
||||||
import com.sk89q.worldedit.util.Direction;
|
import com.sk89q.worldedit.util.Direction;
|
||||||
@ -49,7 +49,7 @@ public class SchematicStreamer extends NBTStreamer {
|
|||||||
public SchematicStreamer(NBTInputStream stream, UUID uuid) {
|
public SchematicStreamer(NBTInputStream stream, UUID uuid) {
|
||||||
super(stream);
|
super(stream);
|
||||||
this.uuid = uuid;
|
this.uuid = uuid;
|
||||||
clipboard = new BlockArrayClipboard(new CuboidRegion(new Vector(0, 0, 0), new Vector(0, 0, 0)), fc);
|
clipboard = new BlockArrayClipboard(new CuboidRegion(new BlockVector3(0, 0, 0), new BlockVector3(0, 0, 0)), fc);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addBlockReaders() throws IOException {
|
public void addBlockReaders() throws IOException {
|
||||||
@ -180,7 +180,7 @@ public class SchematicStreamer extends NBTStreamer {
|
|||||||
FaweInputStream dataIn = new FaweInputStream(new LZ4BlockInputStream(new FastByteArraysInputStream(dataOut.toByteArrays())));
|
FaweInputStream dataIn = new FaweInputStream(new LZ4BlockInputStream(new FastByteArraysInputStream(dataOut.toByteArrays())));
|
||||||
|
|
||||||
LegacyMapper remap = LegacyMapper.getInstance();
|
LegacyMapper remap = LegacyMapper.getInstance();
|
||||||
Vector dimensions = fc.getDimensions();
|
BlockVector3 dimensions = fc.getDimensions();
|
||||||
int length = dimensions.getBlockX() * dimensions.getBlockY() * dimensions.getBlockZ();
|
int length = dimensions.getBlockX() * dimensions.getBlockY() * dimensions.getBlockZ();
|
||||||
if (adds == null) {
|
if (adds == null) {
|
||||||
for (int i = 0; i < length; i++) {
|
for (int i = 0; i < length; i++) {
|
||||||
@ -223,7 +223,7 @@ public class SchematicStreamer extends NBTStreamer {
|
|||||||
Object half = block.getState(PropertyKey.HALF);
|
Object half = block.getState(PropertyKey.HALF);
|
||||||
Direction facing = block.getState(PropertyKey.FACING);
|
Direction facing = block.getState(PropertyKey.FACING);
|
||||||
|
|
||||||
BlockVector forward = facing.toBlockVector();
|
BlockVector3 forward = facing.toBlockVector();
|
||||||
Direction left = facing.getLeft();
|
Direction left = facing.getLeft();
|
||||||
Direction right = facing.getRight();
|
Direction right = facing.getRight();
|
||||||
|
|
||||||
@ -419,7 +419,7 @@ public class SchematicStreamer extends NBTStreamer {
|
|||||||
private FaweClipboard setupClipboard(int size) {
|
private FaweClipboard setupClipboard(int size) {
|
||||||
if (fc != null) {
|
if (fc != null) {
|
||||||
if (fc.getDimensions().getX() == 0) {
|
if (fc.getDimensions().getX() == 0) {
|
||||||
fc.setDimensions(new Vector(size, 1, 1));
|
fc.setDimensions(new BlockVector3(size, 1, 1));
|
||||||
}
|
}
|
||||||
return fc;
|
return fc;
|
||||||
}
|
}
|
||||||
@ -432,16 +432,16 @@ public class SchematicStreamer extends NBTStreamer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector getOrigin() {
|
public BlockVector3 getOrigin() {
|
||||||
return new Vector(originX, originY, originZ);
|
return new BlockVector3(originX, originY, originZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector getOffset() {
|
public BlockVector3 getOffset() {
|
||||||
return new Vector(offsetX, offsetY, offsetZ);
|
return new BlockVector3(offsetX, offsetY, offsetZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector getDimensions() {
|
public BlockVector3 getDimensions() {
|
||||||
return new Vector(width, height, length);
|
return new BlockVector3(width, height, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setClipboard(FaweClipboard clipboard) {
|
public void setClipboard(FaweClipboard clipboard) {
|
||||||
@ -453,13 +453,13 @@ public class SchematicStreamer extends NBTStreamer {
|
|||||||
addDimensionReaders();
|
addDimensionReaders();
|
||||||
addBlockReaders();
|
addBlockReaders();
|
||||||
readFully();
|
readFully();
|
||||||
Vector min = new Vector(originX, originY, originZ);
|
BlockVector3 min = new BlockVector3(originX, originY, originZ);
|
||||||
Vector offset = new Vector(offsetX, offsetY, offsetZ);
|
BlockVector3 offset = new BlockVector3(offsetX, offsetY, offsetZ);
|
||||||
Vector origin = min.subtract(offset);
|
BlockVector3 origin = min.subtract(offset);
|
||||||
Vector dimensions = new Vector(width, height, length);
|
BlockVector3 dimensions = new BlockVector3(width, height, length);
|
||||||
fc.setDimensions(dimensions);
|
fc.setDimensions(dimensions);
|
||||||
fixStates();
|
fixStates();
|
||||||
CuboidRegion region = new CuboidRegion(min, min.add(width, height, length).subtract(Vector.ONE));
|
CuboidRegion region = new CuboidRegion(min, min.add(width, height, length).subtract(BlockVector3.ONE));
|
||||||
clipboard.init(region, fc);
|
clipboard.init(region, fc);
|
||||||
clipboard.setOrigin(origin);
|
clipboard.setOrigin(origin);
|
||||||
return clipboard;
|
return clipboard;
|
||||||
|
@ -16,13 +16,17 @@ import com.boydti.fawe.util.image.Drawable;
|
|||||||
import com.boydti.fawe.util.image.ImageViewer;
|
import com.boydti.fawe.util.image.ImageViewer;
|
||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.worldedit.*;
|
import com.sk89q.worldedit.*;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.blocks.BaseItemStack;
|
import com.sk89q.worldedit.blocks.BaseItemStack;
|
||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
import com.sk89q.worldedit.function.mask.Mask;
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
import com.sk89q.worldedit.function.operation.Operation;
|
import com.sk89q.worldedit.function.operation.Operation;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.MutableBlockVector;
|
||||||
|
import com.sk89q.worldedit.math.Vector2;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.math.transform.AffineTransform;
|
import com.sk89q.worldedit.math.transform.AffineTransform;
|
||||||
import com.sk89q.worldedit.math.transform.Transform;
|
import com.sk89q.worldedit.math.transform.Transform;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
@ -194,7 +198,7 @@ public class HeightMapMCAGenerator extends MCAWriter implements StreamChange, Dr
|
|||||||
// These three variables should be set together
|
// These three variables should be set together
|
||||||
// private FaweQueue packetQueue;
|
// private FaweQueue packetQueue;
|
||||||
private FawePlayer player;
|
private FawePlayer player;
|
||||||
private Vector2D chunkOffset = Vector2D.ZERO;
|
private BlockVector2 chunkOffset = BlockVector2.ZERO;
|
||||||
private EditSession editSession;
|
private EditSession editSession;
|
||||||
// end
|
// end
|
||||||
|
|
||||||
@ -229,8 +233,8 @@ public class HeightMapMCAGenerator extends MCAWriter implements StreamChange, Dr
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getOrigin() {
|
public Vector3 getOrigin() {
|
||||||
return new BlockVector(chunkOffset.getBlockX() << 4, 0, chunkOffset.getBlockZ() << 4);
|
return new Vector3(chunkOffset.getBlockX() << 4, 0, chunkOffset.getBlockZ() << 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasPacketViewer() {
|
public boolean hasPacketViewer() {
|
||||||
@ -241,7 +245,7 @@ public class HeightMapMCAGenerator extends MCAWriter implements StreamChange, Dr
|
|||||||
this.player = player;
|
this.player = player;
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
FaweLocation pos = player.getLocation();
|
FaweLocation pos = player.getLocation();
|
||||||
this.chunkOffset = new Vector2D(1 + (pos.x >> 4), 1 + (pos.z >> 4));
|
this.chunkOffset = new BlockVector2(1 + (pos.x >> 4), 1 + (pos.z >> 4));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -375,7 +379,7 @@ public class HeightMapMCAGenerator extends MCAWriter implements StreamChange, Dr
|
|||||||
smooth(null, mask, false, radius, iterations);
|
smooth(null, mask, false, radius, iterations);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void smooth(Vector2D min, Vector2D max, int radius, int iterations) {
|
public void smooth(BlockVector2 min, BlockVector2 max, int radius, int iterations) {
|
||||||
int snowLayer = BlockTypes.SNOW.getInternalId();
|
int snowLayer = BlockTypes.SNOW.getInternalId();
|
||||||
int snowBlock = BlockTypes.SNOW_BLOCK.getInternalId();
|
int snowBlock = BlockTypes.SNOW_BLOCK.getInternalId();
|
||||||
|
|
||||||
@ -550,13 +554,13 @@ public class HeightMapMCAGenerator extends MCAWriter implements StreamChange, Dr
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addCaves() throws WorldEditException {
|
public void addCaves() throws WorldEditException {
|
||||||
CuboidRegion region = new CuboidRegion(new Vector(0, 0, 0), new Vector(getWidth() -1, 255, getLength() -1));
|
CuboidRegion region = new CuboidRegion(new BlockVector3(0, 0, 0), new BlockVector3(getWidth() -1, 255, getLength() -1));
|
||||||
addCaves(region);
|
addCaves(region);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void addSchems(Mask mask, List<ClipboardHolder> clipboards, int rarity, boolean rotate) throws WorldEditException {
|
public void addSchems(Mask mask, List<ClipboardHolder> clipboards, int rarity, boolean rotate) throws WorldEditException {
|
||||||
CuboidRegion region = new CuboidRegion(new Vector(0, 0, 0), new Vector(getWidth() -1, 255, getLength() -1));
|
CuboidRegion region = new CuboidRegion(new BlockVector3(0, 0, 0), new BlockVector3(getWidth() -1, 255, getLength() -1));
|
||||||
addSchems(region, mask, clipboards, rarity, rotate);
|
addSchems(region, mask, clipboards, rarity, rotate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -661,17 +665,17 @@ public class HeightMapMCAGenerator extends MCAWriter implements StreamChange, Dr
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addOre(Mask mask, Pattern material, int size, int frequency, int rarity, int minY, int maxY) throws WorldEditException {
|
public void addOre(Mask mask, Pattern material, int size, int frequency, int rarity, int minY, int maxY) throws WorldEditException {
|
||||||
CuboidRegion region = new CuboidRegion(new Vector(0, 0, 0), new Vector(getWidth() -1, 255, getLength() -1));
|
CuboidRegion region = new CuboidRegion(new BlockVector3(0, 0, 0), new BlockVector3(getWidth() -1, 255, getLength() -1));
|
||||||
addOre(region, mask, material, size, frequency, rarity, minY, maxY);
|
addOre(region, mask, material, size, frequency, rarity, minY, maxY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addDefaultOres(Mask mask) throws WorldEditException {
|
public void addDefaultOres(Mask mask) throws WorldEditException {
|
||||||
addOres(new CuboidRegion(new Vector(0, 0, 0), new Vector(getWidth() -1, 255, getLength() -1)), mask);
|
addOres(new CuboidRegion(new BlockVector3(0, 0, 0), new BlockVector3(getWidth() -1, 255, getLength() -1)), mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getMinimumPoint() {
|
public BlockVector3 getMinimumPoint() {
|
||||||
return new Vector(0, 0, 0);
|
return new BlockVector3(0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -680,17 +684,17 @@ public class HeightMapMCAGenerator extends MCAWriter implements StreamChange, Dr
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getMaximumPoint() {
|
public BlockVector3 getMaximumPoint() {
|
||||||
return new Vector(getWidth() - 1, 255, getLength() - 1);
|
return new BlockVector3(getWidth() - 1, 255, getLength() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBlock(Vector position, BlockStateHolder block) throws WorldEditException {
|
public boolean setBlock(BlockVector3 position, BlockStateHolder block) throws WorldEditException {
|
||||||
return setBlock(position.getBlockX(), position.getBlockY(), position.getBlockZ(), block);
|
return setBlock(position.getBlockX(), position.getBlockY(), position.getBlockZ(), block);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBiome(Vector2D position, BaseBiome biome) {
|
public boolean setBiome(BlockVector2 position, BaseBiome biome) {
|
||||||
return this.setBiome(position.getBlockX(), position.getBlockZ(), biome);
|
return this.setBiome(position.getBlockX(), position.getBlockZ(), biome);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1011,12 +1015,12 @@ public class HeightMapMCAGenerator extends MCAWriter implements StreamChange, Dr
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseBiome getBiome(Vector2D position) {
|
public BaseBiome getBiome(BlockVector2 position) {
|
||||||
return FaweCache.CACHE_BIOME[getBiomeId(position.getBlockX(), position.getBlockZ())];
|
return FaweCache.CACHE_BIOME[getBiomeId(position.getBlockX(), position.getBlockZ())];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState getBlock(Vector position) {
|
public BlockState getBlock(BlockVector3 position) {
|
||||||
return getLazyBlock(position);
|
return getLazyBlock(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1040,7 +1044,7 @@ public class HeightMapMCAGenerator extends MCAWriter implements StreamChange, Dr
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState getLazyBlock(Vector position) {
|
public BlockState getLazyBlock(BlockVector3 position) {
|
||||||
return getLazyBlock(position.getBlockX(), position.getBlockY(), position.getBlockZ());
|
return getLazyBlock(position.getBlockX(), position.getBlockY(), position.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2240,33 +2244,40 @@ public class HeightMapMCAGenerator extends MCAWriter implements StreamChange, Dr
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBlock(Vector position, BlockStateHolder block, boolean notifyAndLight) throws WorldEditException {
|
public boolean setBlock(BlockVector3 position, BlockStateHolder block, boolean notifyAndLight) throws WorldEditException {
|
||||||
return setBlock(position, block);
|
return setBlock(position, block);
|
||||||
}
|
}
|
||||||
|
|
||||||
// These aren't implemented yet...
|
// These aren't implemented yet...
|
||||||
@Override
|
@Override
|
||||||
public int getBlockLightLevel(Vector position) {
|
public int getBlockLightLevel(BlockVector3 position) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean clearContainerBlockContents(Vector position) {
|
public boolean clearContainerBlockContents(BlockVector3 position) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void dropItem(Vector position, BaseItemStack item) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean regenerate(Region region, EditSession editSession) {
|
public boolean regenerate(Region region, EditSession editSession) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean generateTree(TreeGenerator.TreeType type, EditSession editSession, Vector position) throws MaxChangedBlocksException {
|
public boolean generateTree(TreeGenerator.TreeType type, EditSession editSession, BlockVector3 position) throws MaxChangedBlocksException {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dropItem(Vector3 position, BaseItemStack item) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean playEffect(Vector3 position, int type, int data) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
package com.boydti.fawe.jnbt.anvil;
|
package com.boydti.fawe.jnbt.anvil;
|
||||||
|
|
||||||
import com.sk89q.worldedit.Vector;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
|
|
||||||
public class MCAClipboard {
|
public class MCAClipboard {
|
||||||
private final MCAQueue queue;
|
private final MCAQueue queue;
|
||||||
private final CuboidRegion region;
|
private final CuboidRegion region;
|
||||||
private final Vector origin;
|
private final BlockVector3 origin;
|
||||||
|
|
||||||
public MCAClipboard(MCAQueue queue, CuboidRegion region, Vector origin) {
|
public MCAClipboard(MCAQueue queue, CuboidRegion region, BlockVector3 origin) {
|
||||||
this.queue = queue;
|
this.queue = queue;
|
||||||
this.region = region;
|
this.region = region;
|
||||||
this.origin = origin;
|
this.origin = origin;
|
||||||
@ -22,7 +22,7 @@ public class MCAClipboard {
|
|||||||
return region;
|
return region;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector getOrigin() {
|
public BlockVector3 getOrigin() {
|
||||||
return origin;
|
return origin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ import com.boydti.fawe.object.RunnableVal4;
|
|||||||
import com.boydti.fawe.object.collection.IterableThreadLocal;
|
import com.boydti.fawe.object.collection.IterableThreadLocal;
|
||||||
import com.boydti.fawe.util.MainUtil;
|
import com.boydti.fawe.util.MainUtil;
|
||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.worldedit.Vector;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -155,11 +155,11 @@ public class MCAQueue extends NMSMappedFaweQueue<FaweQueue, FaweChunk, FaweChunk
|
|||||||
return super.setMCA(mcaX, mcaZ, region, whileLocked, save, unload);
|
return super.setMCA(mcaX, mcaZ, region, whileLocked, save, unload);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void pasteRegion(MCAQueue from, final RegionWrapper regionFrom, Vector offset) throws IOException {
|
public void pasteRegion(MCAQueue from, final RegionWrapper regionFrom, BlockVector3 offset) throws IOException {
|
||||||
pasteRegion(from, regionFrom, offset, new NullAnvilHistory());
|
pasteRegion(from, regionFrom, offset, new NullAnvilHistory());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void pasteRegion(MCAQueue from, final RegionWrapper regionFrom, Vector offset, IAnvilHistory history) throws IOException {
|
public void pasteRegion(MCAQueue from, final RegionWrapper regionFrom, BlockVector3 offset, IAnvilHistory history) throws IOException {
|
||||||
int oX = offset.getBlockX();
|
int oX = offset.getBlockX();
|
||||||
int oZ = offset.getBlockZ();
|
int oZ = offset.getBlockZ();
|
||||||
int oY = offset.getBlockY();
|
int oY = offset.getBlockY();
|
||||||
|
@ -6,14 +6,16 @@ import com.sk89q.jnbt.CompoundTag;
|
|||||||
import com.sk89q.jnbt.ListTag;
|
import com.sk89q.jnbt.ListTag;
|
||||||
import com.sk89q.jnbt.Tag;
|
import com.sk89q.jnbt.Tag;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.Vector2D;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.blocks.BaseItemStack;
|
import com.sk89q.worldedit.blocks.BaseItemStack;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
import com.sk89q.worldedit.entity.Entity;
|
import com.sk89q.worldedit.entity.Entity;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector2;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.util.Location;
|
import com.sk89q.worldedit.util.Location;
|
||||||
import com.sk89q.worldedit.world.SimpleWorld;
|
import com.sk89q.worldedit.world.SimpleWorld;
|
||||||
@ -48,17 +50,17 @@ public class MCAWorld implements SimpleWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBlock(Vector position, BlockStateHolder block) throws WorldEditException {
|
public boolean setBlock(BlockVector3 position, BlockStateHolder block) throws WorldEditException {
|
||||||
return extent.setBlock(position, block);
|
return extent.setBlock(position, block);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getBlockLightLevel(Vector position) {
|
public int getBlockLightLevel(BlockVector3 position) {
|
||||||
return queue.getEmmittedLight(position.getBlockX(), position.getBlockY(), position.getBlockZ());
|
return queue.getEmmittedLight(position.getBlockX(), position.getBlockY(), position.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean clearContainerBlockContents(Vector position) {
|
public boolean clearContainerBlockContents(BlockVector3 position) {
|
||||||
BlockStateHolder block = extent.getLazyBlock(position);
|
BlockStateHolder block = extent.getLazyBlock(position);
|
||||||
if (block.hasNbtData()) {
|
if (block.hasNbtData()) {
|
||||||
Map<String, Tag> nbt = ReflectionUtils.getMap(block.getNbtData().getValue());
|
Map<String, Tag> nbt = ReflectionUtils.getMap(block.getNbtData().getValue());
|
||||||
@ -75,7 +77,7 @@ public class MCAWorld implements SimpleWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dropItem(Vector position, BaseItemStack item) {
|
public void dropItem(Vector3 position, BaseItemStack item) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,17 +103,23 @@ public class MCAWorld implements SimpleWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState getBlock(Vector position) {
|
public BlockState getBlock(BlockVector3 position) {
|
||||||
return extent.getLazyBlock(position);
|
return extent.getLazyBlock(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseBiome getBiome(Vector2D position) {
|
public BaseBiome getBiome(BlockVector2 position) {
|
||||||
return extent.getBiome(position);
|
return extent.getBiome(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBiome(Vector2D position, BaseBiome biome) {
|
public boolean setBiome(BlockVector2 position, BaseBiome biome) {
|
||||||
return extent.setBiome(position, biome);
|
return extent.setBiome(position, biome);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean playEffect(Vector3 position, int type, int data) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ import com.boydti.fawe.FaweCache;
|
|||||||
import com.boydti.fawe.jnbt.anvil.MCAFilterCounter;
|
import com.boydti.fawe.jnbt.anvil.MCAFilterCounter;
|
||||||
import com.boydti.fawe.object.number.MutableLong;
|
import com.boydti.fawe.object.number.MutableLong;
|
||||||
import com.boydti.fawe.util.StringMan;
|
import com.boydti.fawe.util.StringMan;
|
||||||
import com.sk89q.worldedit.MutableBlockVector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.extension.input.InputParseException;
|
import com.sk89q.worldedit.extension.input.InputParseException;
|
||||||
@ -53,7 +52,7 @@ public class MappedReplacePatternFilter extends MCAFilterCounter {
|
|||||||
// map[block.getCombined()] = pattern;
|
// map[block.getCombined()] = pattern;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final MutableBlockVector mutable = new MutableBlockVector(0, 0, 0);
|
// private final MutableBlockVector mutable = new MutableBlockVector(0, 0, 0);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void applyBlock(int x, int y, int z, BaseBlock block, MutableLong ignore) {
|
public void applyBlock(int x, int y, int z, BaseBlock block, MutableLong ignore) {
|
||||||
|
@ -3,11 +3,11 @@ package com.boydti.fawe.jnbt.anvil.generator;
|
|||||||
import com.boydti.fawe.FaweCache;
|
import com.boydti.fawe.FaweCache;
|
||||||
import com.boydti.fawe.object.PseudoRandom;
|
import com.boydti.fawe.object.PseudoRandom;
|
||||||
import com.boydti.fawe.util.MathMan;
|
import com.boydti.fawe.util.MathMan;
|
||||||
import com.sk89q.worldedit.Vector2D;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
import com.sk89q.worldedit.world.block.BlockType;
|
import com.sk89q.worldedit.world.block.BlockType;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||||
@ -42,11 +42,11 @@ public class CavesGen extends GenBase {
|
|||||||
this.caveSystemPocketMaxSize = caveSystemPocketMaxSize;
|
this.caveSystemPocketMaxSize = caveSystemPocketMaxSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void generateLargeCaveNode(long seed, Vector2D pos, Extent chunk, double x, double y, double z) throws WorldEditException {
|
protected void generateLargeCaveNode(long seed, BlockVector2 pos, Extent chunk, double x, double y, double z) throws WorldEditException {
|
||||||
generateCaveNode(seed, pos, chunk, x, y, z, 1.0F + PseudoRandom.random.nextDouble() * 6.0F, 0.0F, 0.0F, -1, -1, 0.5D);
|
generateCaveNode(seed, pos, chunk, x, y, z, 1.0F + PseudoRandom.random.nextDouble() * 6.0F, 0.0F, 0.0F, -1, -1, 0.5D);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void generateCaveNode(long seed, Vector2D chunkPos, Extent chunk, double x, double y, double z, double paramdouble1, double paramdouble2, double paramdouble3, int angle, int maxAngle, double paramDouble4) throws WorldEditException {
|
protected void generateCaveNode(long seed, BlockVector2 chunkPos, Extent chunk, double x, double y, double z, double paramdouble1, double paramdouble2, double paramdouble3, int angle, int maxAngle, double paramDouble4) throws WorldEditException {
|
||||||
int bx = (chunkPos.getBlockX() << 4);
|
int bx = (chunkPos.getBlockX() << 4);
|
||||||
int bz = (chunkPos.getBlockZ() << 4);
|
int bz = (chunkPos.getBlockZ() << 4);
|
||||||
double real_x = bx + 7;
|
double real_x = bx + 7;
|
||||||
@ -220,7 +220,7 @@ public class CavesGen extends GenBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void generateChunk(Vector2D adjacentChunk, Vector2D originChunk, Extent chunk) throws WorldEditException {
|
public void generateChunk(int chunkX, int chunkZ, BlockVector2 originChunk, Extent chunk) throws WorldEditException {
|
||||||
PseudoRandom random = getRandom();
|
PseudoRandom random = getRandom();
|
||||||
int i = random.nextInt(random.nextInt(random.nextInt(this.caveFrequency) + 1) + 1);
|
int i = random.nextInt(random.nextInt(random.nextInt(this.caveFrequency) + 1) + 1);
|
||||||
if (this.evenCaveDistribution)
|
if (this.evenCaveDistribution)
|
||||||
@ -229,7 +229,7 @@ public class CavesGen extends GenBase {
|
|||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
for (int j = 0; j < i; j++) {
|
for (int j = 0; j < i; j++) {
|
||||||
double x = (adjacentChunk.getBlockX() << 4) + random.nextInt(16);
|
double x = (chunkX << 4) + random.nextInt(16);
|
||||||
|
|
||||||
double y;
|
double y;
|
||||||
|
|
||||||
@ -238,7 +238,7 @@ public class CavesGen extends GenBase {
|
|||||||
else
|
else
|
||||||
y = random.nextInt(random.nextInt(this.caveMaxAltitude - this.caveMinAltitude + 1) + 1) + this.caveMinAltitude;
|
y = random.nextInt(random.nextInt(this.caveMaxAltitude - this.caveMinAltitude + 1) + 1) + this.caveMinAltitude;
|
||||||
|
|
||||||
double z = (adjacentChunk.getBlockZ() << 4) + random.nextInt(16);
|
double z = (chunkZ << 4) + random.nextInt(16);
|
||||||
|
|
||||||
int count = this.caveSystemFrequency;
|
int count = this.caveSystemFrequency;
|
||||||
boolean largeCaveSpawned = false;
|
boolean largeCaveSpawned = false;
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
package com.boydti.fawe.jnbt.anvil.generator;
|
package com.boydti.fawe.jnbt.anvil.generator;
|
||||||
|
|
||||||
import com.boydti.fawe.object.PseudoRandom;
|
import com.boydti.fawe.object.PseudoRandom;
|
||||||
import com.sk89q.worldedit.MutableBlockVector2D;
|
|
||||||
import com.sk89q.worldedit.Vector2D;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
|
||||||
public abstract class GenBase {
|
public abstract class GenBase {
|
||||||
|
|
||||||
@ -12,7 +11,6 @@ public abstract class GenBase {
|
|||||||
private final PseudoRandom random;
|
private final PseudoRandom random;
|
||||||
private final long seed;
|
private final long seed;
|
||||||
private final long worldSeed1, worldSeed2;
|
private final long worldSeed1, worldSeed2;
|
||||||
private MutableBlockVector2D mutable = new MutableBlockVector2D();
|
|
||||||
|
|
||||||
public GenBase(int area) {
|
public GenBase(int area) {
|
||||||
this.random = new PseudoRandom();
|
this.random = new PseudoRandom();
|
||||||
@ -30,20 +28,17 @@ public abstract class GenBase {
|
|||||||
return random;
|
return random;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void generate(Vector2D chunkPos, Extent chunk) throws WorldEditException {
|
public void generate(BlockVector2 chunkPos, Extent chunk) throws WorldEditException {
|
||||||
int i = this.checkAreaSize;
|
int i = this.checkAreaSize;
|
||||||
int chunkX = chunkPos.getBlockX();
|
int chunkX = chunkPos.getBlockX();
|
||||||
int chunkZ = chunkPos.getBlockZ();
|
int chunkZ = chunkPos.getBlockZ();
|
||||||
|
|
||||||
for (int x = chunkX - i; x <= chunkX + i; x++) {
|
for (int x = chunkX - i; x <= chunkX + i; x++) {
|
||||||
mutable.mutX(x);
|
|
||||||
for (int z = chunkZ - i; z <= chunkZ + i; z++) {
|
for (int z = chunkZ - i; z <= chunkZ + i; z++) {
|
||||||
mutable.mutZ(z);
|
|
||||||
this.random.setSeed(worldSeed1 * x ^ worldSeed2 * z ^ seed);
|
this.random.setSeed(worldSeed1 * x ^ worldSeed2 * z ^ seed);
|
||||||
generateChunk(mutable, chunkPos, chunk);
|
generateChunk(x, z, chunkPos, chunk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void generateChunk(Vector2D adjacentChunk, Vector2D originChunk, Extent chunk) throws WorldEditException;
|
public abstract void generateChunk(int x, int z, BlockVector2 originChunk, Extent chunk) throws WorldEditException;
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,11 @@ package com.boydti.fawe.jnbt.anvil.generator;
|
|||||||
|
|
||||||
import com.boydti.fawe.object.PseudoRandom;
|
import com.boydti.fawe.object.PseudoRandom;
|
||||||
import com.boydti.fawe.util.MathMan;
|
import com.boydti.fawe.util.MathMan;
|
||||||
import com.sk89q.worldedit.MutableBlockVector;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
import com.sk89q.worldedit.function.mask.Mask;
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.MutableBlockVector;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ package com.boydti.fawe.jnbt.anvil.generator;
|
|||||||
|
|
||||||
import com.boydti.fawe.object.PseudoRandom;
|
import com.boydti.fawe.object.PseudoRandom;
|
||||||
import com.boydti.fawe.object.schematic.Schematic;
|
import com.boydti.fawe.object.schematic.Schematic;
|
||||||
import com.sk89q.worldedit.MutableBlockVector;
|
import com.sk89q.worldedit.math.MutableBlockVector;
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
|
@ -4,7 +4,7 @@ import com.boydti.fawe.Fawe;
|
|||||||
import com.boydti.fawe.database.DBHandler;
|
import com.boydti.fawe.database.DBHandler;
|
||||||
import com.boydti.fawe.database.RollbackDatabase;
|
import com.boydti.fawe.database.RollbackDatabase;
|
||||||
import com.boydti.fawe.object.changeset.DiskStorageHistory;
|
import com.boydti.fawe.object.changeset.DiskStorageHistory;
|
||||||
import com.sk89q.worldedit.Vector;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
@ -68,7 +68,7 @@ public class RollbackOptimizedHistory extends DiskStorageHistory {
|
|||||||
return maxZ;
|
return maxZ;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDimensions(Vector pos1, Vector pos2) {
|
public void setDimensions(BlockVector3 pos1, BlockVector3 pos2) {
|
||||||
this.minX = pos1.getBlockX();
|
this.minX = pos1.getBlockX();
|
||||||
this.minY = pos1.getBlockY();
|
this.minY = pos1.getBlockY();
|
||||||
this.minZ = pos1.getBlockZ();
|
this.minZ = pos1.getBlockZ();
|
||||||
|
@ -2,12 +2,12 @@ package com.boydti.fawe.object;
|
|||||||
|
|
||||||
import com.boydti.fawe.FaweCache;
|
import com.boydti.fawe.FaweCache;
|
||||||
import com.boydti.fawe.object.extent.ExtentHeightCacher;
|
import com.boydti.fawe.object.extent.ExtentHeightCacher;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
import com.sk89q.worldedit.function.pattern.AbstractPattern;
|
import com.sk89q.worldedit.function.pattern.AbstractPattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ public class DataAnglePattern extends AbstractPattern {
|
|||||||
this.FACTOR = (1D / distance) * (1D / 255);
|
this.FACTOR = (1D / distance) * (1D / 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getSlope(BlockStateHolder block, Vector vector) {
|
public int getSlope(BlockStateHolder block, BlockVector3 vector) {
|
||||||
int x = vector.getBlockX();
|
int x = vector.getBlockX();
|
||||||
int y = vector.getBlockY();
|
int y = vector.getBlockY();
|
||||||
int z = vector.getBlockZ();
|
int z = vector.getBlockZ();
|
||||||
@ -41,7 +41,7 @@ public class DataAnglePattern extends AbstractPattern {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockStateHolder apply(Vector position) {
|
public BlockStateHolder apply(BlockVector3 position) {
|
||||||
BlockStateHolder block = extent.getBlock(position);
|
BlockStateHolder block = extent.getBlock(position);
|
||||||
int slope = getSlope(block, position);
|
int slope = getSlope(block, position);
|
||||||
if (slope == -1) return block;
|
if (slope == -1) return block;
|
||||||
@ -50,7 +50,7 @@ public class DataAnglePattern extends AbstractPattern {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Extent extent, Vector setPosition, Vector getPosition) throws WorldEditException {
|
public boolean apply(Extent extent, BlockVector3 setPosition, BlockVector3 getPosition) throws WorldEditException {
|
||||||
BlockStateHolder block = extent.getBlock(getPosition);
|
BlockStateHolder block = extent.getBlock(getPosition);
|
||||||
int slope = getSlope(block, getPosition);
|
int slope = getSlope(block, getPosition);
|
||||||
if (slope == -1) return false;
|
if (slope == -1) return false;
|
||||||
|
@ -17,13 +17,14 @@ import com.boydti.fawe.wrappers.LocationMaskedPlayerWrapper;
|
|||||||
import com.boydti.fawe.wrappers.PlayerWrapper;
|
import com.boydti.fawe.wrappers.PlayerWrapper;
|
||||||
import com.sk89q.minecraft.util.commands.CommandContext;
|
import com.sk89q.minecraft.util.commands.CommandContext;
|
||||||
import com.sk89q.worldedit.*;
|
import com.sk89q.worldedit.*;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.command.tool.BrushTool;
|
import com.sk89q.worldedit.command.tool.BrushTool;
|
||||||
import com.sk89q.worldedit.command.tool.Tool;
|
import com.sk89q.worldedit.command.tool.Tool;
|
||||||
import com.sk89q.worldedit.entity.Player;
|
import com.sk89q.worldedit.entity.Player;
|
||||||
import com.sk89q.worldedit.event.platform.CommandEvent;
|
import com.sk89q.worldedit.event.platform.CommandEvent;
|
||||||
import com.sk89q.worldedit.extension.platform.*;
|
import com.sk89q.worldedit.extension.platform.*;
|
||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.regions.*;
|
import com.sk89q.worldedit.regions.*;
|
||||||
import com.sk89q.worldedit.regions.selector.ConvexPolyhedralRegionSelector;
|
import com.sk89q.worldedit.regions.selector.ConvexPolyhedralRegionSelector;
|
||||||
import com.sk89q.worldedit.regions.selector.CuboidRegionSelector;
|
import com.sk89q.worldedit.regions.selector.CuboidRegionSelector;
|
||||||
@ -208,12 +209,13 @@ public abstract class FawePlayer<T> extends Metadatable {
|
|||||||
public void checkConfirmationStack(@Nullable Runnable task, String command, Region region, int times, CommandContext context) throws RegionOperationException {
|
public void checkConfirmationStack(@Nullable Runnable task, String command, Region region, int times, CommandContext context) throws RegionOperationException {
|
||||||
if (command != null && !getMeta("cmdConfirmRunning", false)) {
|
if (command != null && !getMeta("cmdConfirmRunning", false)) {
|
||||||
if (region != null) {
|
if (region != null) {
|
||||||
Vector min = region.getMinimumPoint().toBlockVector();
|
BlockVector3 min = region.getMinimumPoint();
|
||||||
Vector max = region.getMaximumPoint().toBlockVector();
|
BlockVector3 max = region.getMaximumPoint();
|
||||||
long area = (long) ((max.getX() - min.getX()) * (max.getZ() - min.getZ() + 1)) * times;
|
long area = (long) ((max.getX() - min.getX()) * (max.getZ() - min.getZ() + 1)) * times;
|
||||||
if (area > 2 << 18) {
|
if (area > 2 << 18) {
|
||||||
setConfirmTask(task, context, command);
|
setConfirmTask(task, context, command);
|
||||||
long volume = (long) max.subtract(min).add(Vector.ONE).volume() * times;
|
BlockVector3 base = max.subtract(min).add(BlockVector3.ONE);
|
||||||
|
long volume = (long) base.getX() * base.getZ() * base.getY() * times;
|
||||||
throw new RegionOperationException(BBC.WORLDEDIT_CANCEL_REASON_CONFIRM.f(min, max, command, NumberFormat.getNumberInstance().format(volume)));
|
throw new RegionOperationException(BBC.WORLDEDIT_CANCEL_REASON_CONFIRM.f(min, max, command, NumberFormat.getNumberInstance().format(volume)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -224,12 +226,13 @@ public abstract class FawePlayer<T> extends Metadatable {
|
|||||||
public void checkConfirmationRegion(@Nullable Runnable task, String command, Region region, CommandContext context) throws RegionOperationException {
|
public void checkConfirmationRegion(@Nullable Runnable task, String command, Region region, CommandContext context) throws RegionOperationException {
|
||||||
if (command != null && !getMeta("cmdConfirmRunning", false)) {
|
if (command != null && !getMeta("cmdConfirmRunning", false)) {
|
||||||
if (region != null) {
|
if (region != null) {
|
||||||
Vector min = region.getMinimumPoint().toBlockVector();
|
BlockVector3 min = region.getMinimumPoint();
|
||||||
Vector max = region.getMaximumPoint().toBlockVector();
|
BlockVector3 max = region.getMaximumPoint();
|
||||||
long area = (long) ((max.getX() - min.getX()) * (max.getZ() - min.getZ() + 1));
|
long area = (long) ((max.getX() - min.getX()) * (max.getZ() - min.getZ() + 1));
|
||||||
if (area > 2 << 18) {
|
if (area > 2 << 18) {
|
||||||
setConfirmTask(task, context, command);
|
setConfirmTask(task, context, command);
|
||||||
long volume = (long) max.subtract(min).add(Vector.ONE).volume();
|
BlockVector3 base = max.subtract(min).add(BlockVector3.ONE);
|
||||||
|
long volume = (long) base.getX() * base.getZ() * base.getY();
|
||||||
throw new RegionOperationException(BBC.WORLDEDIT_CANCEL_REASON_CONFIRM.f(min, max, command, NumberFormat.getNumberInstance().format(volume)));
|
throw new RegionOperationException(BBC.WORLDEDIT_CANCEL_REASON_CONFIRM.f(min, max, command, NumberFormat.getNumberInstance().format(volume)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -561,8 +564,8 @@ public abstract class FawePlayer<T> extends Metadatable {
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
public void setSelection(final RegionWrapper region) {
|
public void setSelection(final RegionWrapper region) {
|
||||||
final Player player = this.getPlayer();
|
final Player player = this.getPlayer();
|
||||||
Vector top = region.getMaximumPoint();
|
BlockVector3 top = region.getMaximumPoint();
|
||||||
top.mutY(getWorld().getMaxY());
|
top.withY(getWorld().getMaxY());
|
||||||
final RegionSelector selector = new CuboidRegionSelector(player.getWorld(), region.getMinimumPoint(), top);
|
final RegionSelector selector = new CuboidRegionSelector(player.getWorld(), region.getMinimumPoint(), top);
|
||||||
this.getSession().setRegionSelector(player.getWorld(), selector);
|
this.getSession().setRegionSelector(player.getWorld(), selector);
|
||||||
}
|
}
|
||||||
@ -692,7 +695,7 @@ public abstract class FawePlayer<T> extends Metadatable {
|
|||||||
|
|
||||||
PlayerProxy proxy = new PlayerProxy(player, permActor, cuiActor, world);
|
PlayerProxy proxy = new PlayerProxy(player, permActor, cuiActor, world);
|
||||||
if (world instanceof VirtualWorld) {
|
if (world instanceof VirtualWorld) {
|
||||||
proxy.setOffset(Vector.ZERO.subtract(((VirtualWorld) world).getOrigin()));
|
proxy.setOffset(Vector3.ZERO.subtract(((VirtualWorld) world).getOrigin()));
|
||||||
}
|
}
|
||||||
return proxy;
|
return proxy;
|
||||||
}
|
}
|
||||||
|
@ -12,13 +12,13 @@ import com.boydti.fawe.util.MemUtil;
|
|||||||
import com.boydti.fawe.util.SetQueue;
|
import com.boydti.fawe.util.SetQueue;
|
||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MutableBlockVector;
|
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.Vector2D;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.MutableBlockVector;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
@ -61,13 +61,13 @@ public interface FaweQueue extends HasFaweQueue, Extent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default Vector getMinimumPoint() {
|
default BlockVector3 getMinimumPoint() {
|
||||||
return new Vector(-30000000, 0, -30000000);
|
return new BlockVector3(-30000000, 0, -30000000);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default Vector getMaximumPoint() {
|
default BlockVector3 getMaximumPoint() {
|
||||||
return new Vector(30000000, getMaxY(), 30000000);
|
return new BlockVector3(30000000, getMaxY(), 30000000);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -94,17 +94,17 @@ public interface FaweQueue extends HasFaweQueue, Extent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default BlockState getFullBlock(Vector position) {
|
default BlockState getFullBlock(BlockVector3 position) {
|
||||||
return getLazyBlock(position.getBlockX(), position.getBlockY(), position.getBlockZ());
|
return getLazyBlock(position.getBlockX(), position.getBlockY(), position.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default BaseBiome getBiome(Vector2D position) {
|
default BaseBiome getBiome(BlockVector2 position) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default boolean setBlock(Vector position, BlockStateHolder block) throws WorldEditException {
|
default boolean setBlock(BlockVector3 position, BlockStateHolder block) throws WorldEditException {
|
||||||
return setBlock(position.getBlockX(), position.getBlockY(), position.getBlockZ(), block);
|
return setBlock(position.getBlockX(), position.getBlockY(), position.getBlockZ(), block);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,7 +119,7 @@ public interface FaweQueue extends HasFaweQueue, Extent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default boolean setBiome(Vector2D position, BaseBiome biome) {
|
default boolean setBiome(BlockVector2 position, BaseBiome biome) {
|
||||||
return setBiome(position.getBlockX(), position.getBlockZ(), biome);
|
return setBiome(position.getBlockX(), position.getBlockZ(), biome);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -262,7 +262,7 @@ public interface FaweQueue extends HasFaweQueue, Extent {
|
|||||||
|
|
||||||
void addTask(Runnable whenFree);
|
void addTask(Runnable whenFree);
|
||||||
|
|
||||||
default void forEachBlockInChunk(int cx, int cz, RunnableVal2<Vector, BlockState> onEach) {
|
default void forEachBlockInChunk(int cx, int cz, RunnableVal2<BlockVector3, BlockState> onEach) {
|
||||||
int bx = cx << 4;
|
int bx = cx << 4;
|
||||||
int bz = cz << 4;
|
int bz = cz << 4;
|
||||||
MutableBlockVector mutable = new MutableBlockVector(0, 0, 0);
|
MutableBlockVector mutable = new MutableBlockVector(0, 0, 0);
|
||||||
@ -295,7 +295,7 @@ public interface FaweQueue extends HasFaweQueue, Extent {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
default void forEachTileInChunk(int cx, int cz, RunnableVal2<Vector, BlockState> onEach) {
|
default void forEachTileInChunk(int cx, int cz, RunnableVal2<BlockVector3, BlockState> onEach) {
|
||||||
int bx = cx << 4;
|
int bx = cx << 4;
|
||||||
int bz = cz << 4;
|
int bz = cz << 4;
|
||||||
MutableBlockVector mutable = new MutableBlockVector(0, 0, 0);
|
MutableBlockVector mutable = new MutableBlockVector(0, 0, 0);
|
||||||
|
@ -12,6 +12,9 @@ import com.sk89q.worldedit.entity.Entity;
|
|||||||
import com.sk89q.worldedit.extent.AbstractDelegateExtent;
|
import com.sk89q.worldedit.extent.AbstractDelegateExtent;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
import com.sk89q.worldedit.history.changeset.ChangeSet;
|
import com.sk89q.worldedit.history.changeset.ChangeSet;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector2;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.util.Location;
|
import com.sk89q.worldedit.util.Location;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
@ -69,7 +72,7 @@ public class HistoryExtent extends AbstractDelegateExtent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBlock(final Vector location, final BlockStateHolder block) throws WorldEditException {
|
public boolean setBlock(final BlockVector3 location, final BlockStateHolder block) throws WorldEditException {
|
||||||
return setBlock(location.getBlockX(), location.getBlockY(), location.getBlockZ(), block);
|
return setBlock(location.getBlockX(), location.getBlockY(), location.getBlockZ(), block);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,7 +105,7 @@ public class HistoryExtent extends AbstractDelegateExtent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBiome(Vector2D position, BaseBiome newBiome) {
|
public boolean setBiome(BlockVector2 position, BaseBiome newBiome) {
|
||||||
BaseBiome oldBiome = this.getBiome(position);
|
BaseBiome oldBiome = this.getBiome(position);
|
||||||
if (oldBiome.getId() != newBiome.getId()) {
|
if (oldBiome.getId() != newBiome.getId()) {
|
||||||
this.changeSet.addBiomeChange(position.getBlockX(), position.getBlockZ(), oldBiome, newBiome);
|
this.changeSet.addBiomeChange(position.getBlockX(), position.getBlockZ(), oldBiome, newBiome);
|
||||||
@ -114,7 +117,7 @@ public class HistoryExtent extends AbstractDelegateExtent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBiome(int x, int y, int z, BaseBiome newBiome) {
|
public boolean setBiome(int x, int y, int z, BaseBiome newBiome) {
|
||||||
BaseBiome oldBiome = this.getBiome(MutableBlockVector2D.get(x, z));
|
BaseBiome oldBiome = this.getBiome(new BlockVector2(x, z));
|
||||||
if (oldBiome.getId() != newBiome.getId()) {
|
if (oldBiome.getId() != newBiome.getId()) {
|
||||||
this.changeSet.addBiomeChange(x, z, oldBiome, newBiome);
|
this.changeSet.addBiomeChange(x, z, oldBiome, newBiome);
|
||||||
return getExtent().setBiome(x, y, z, newBiome);
|
return getExtent().setBiome(x, y, z, newBiome);
|
||||||
|
@ -6,10 +6,10 @@ import com.boydti.fawe.object.extent.MultiRegionExtent;
|
|||||||
import com.boydti.fawe.object.extent.SingleRegionExtent;
|
import com.boydti.fawe.object.extent.SingleRegionExtent;
|
||||||
import com.boydti.fawe.object.queue.DelegateFaweQueue;
|
import com.boydti.fawe.object.queue.DelegateFaweQueue;
|
||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.Vector2D;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
@ -73,7 +73,7 @@ public class MaskedFaweQueue extends DelegateFaweQueue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBlock(Vector position, BlockStateHolder block) throws WorldEditException {
|
public boolean setBlock(BlockVector3 position, BlockStateHolder block) throws WorldEditException {
|
||||||
if (region.contains(position.getBlockX(), position.getBlockZ())) {
|
if (region.contains(position.getBlockX(), position.getBlockZ())) {
|
||||||
return super.setBlock(position, block);
|
return super.setBlock(position, block);
|
||||||
}
|
}
|
||||||
@ -89,7 +89,7 @@ public class MaskedFaweQueue extends DelegateFaweQueue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBiome(Vector2D position, BaseBiome biome) {
|
public boolean setBiome(BlockVector2 position, BaseBiome biome) {
|
||||||
if (region.contains(position.getBlockX(), position.getBlockZ())) {
|
if (region.contains(position.getBlockX(), position.getBlockZ())) {
|
||||||
return super.setBiome(position, biome);
|
return super.setBiome(position, biome);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.boydti.fawe.object;
|
package com.boydti.fawe.object;
|
||||||
|
|
||||||
import com.sk89q.worldedit.Vector;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
@ -23,10 +23,10 @@ public class RegionWrapper extends CuboidRegion {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public RegionWrapper(final int minX, final int maxX, final int minY, final int maxY, final int minZ, final int maxZ) {
|
public RegionWrapper(final int minX, final int maxX, final int minY, final int maxY, final int minZ, final int maxZ) {
|
||||||
this(new Vector(minX, 0, minZ), new Vector(maxX, 255, maxZ));
|
this(new BlockVector3(minX, 0, minZ), new BlockVector3(maxX, 255, maxZ));
|
||||||
}
|
}
|
||||||
|
|
||||||
public RegionWrapper(final Vector pos1, final Vector pos2) {
|
public RegionWrapper(final BlockVector3 pos1, final BlockVector3 pos2) {
|
||||||
super(pos1, pos2);
|
super(pos1, pos2);
|
||||||
this.minX = Math.min(pos1.getBlockX(), pos2.getBlockX());
|
this.minX = Math.min(pos1.getBlockX(), pos2.getBlockX());
|
||||||
this.minZ = Math.min(pos1.getBlockZ(), pos2.getBlockZ());
|
this.minZ = Math.min(pos1.getBlockZ(), pos2.getBlockZ());
|
||||||
@ -39,8 +39,8 @@ public class RegionWrapper extends CuboidRegion {
|
|||||||
@Override
|
@Override
|
||||||
protected void recalculate() {
|
protected void recalculate() {
|
||||||
super.recalculate();
|
super.recalculate();
|
||||||
Vector pos1 = getMinimumPoint();
|
BlockVector3 pos1 = getMinimumPoint();
|
||||||
Vector pos2 = getMaximumPoint();
|
BlockVector3 pos2 = getMaximumPoint();
|
||||||
this.minX = Math.min(pos1.getBlockX(), pos2.getBlockX());
|
this.minX = Math.min(pos1.getBlockX(), pos2.getBlockX());
|
||||||
this.minZ = Math.min(pos1.getBlockZ(), pos2.getBlockZ());
|
this.minZ = Math.min(pos1.getBlockZ(), pos2.getBlockZ());
|
||||||
this.maxX = Math.max(pos1.getBlockX(), pos2.getBlockX());
|
this.maxX = Math.max(pos1.getBlockX(), pos2.getBlockX());
|
||||||
|
@ -4,10 +4,10 @@ import com.boydti.fawe.object.mask.RadiusMask;
|
|||||||
import com.boydti.fawe.object.mask.SurfaceMask;
|
import com.boydti.fawe.object.mask.SurfaceMask;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.function.mask.SolidBlockMask;
|
import com.sk89q.worldedit.function.mask.SolidBlockMask;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
public class AngleBrush implements Brush {
|
public class AngleBrush implements Brush {
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ public class AngleBrush implements Brush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
SurfaceMask surface = new SurfaceMask(editSession);
|
SurfaceMask surface = new SurfaceMask(editSession);
|
||||||
final SolidBlockMask solid = new SolidBlockMask(editSession);
|
final SolidBlockMask solid = new SolidBlockMask(editSession);
|
||||||
final RadiusMask radius = new RadiusMask(0, (int) size);
|
final RadiusMask radius = new RadiusMask(0, (int) size);
|
||||||
|
@ -3,9 +3,9 @@ package com.boydti.fawe.object.brush;
|
|||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ import java.util.Map;
|
|||||||
public class BlendBall implements Brush {
|
public class BlendBall implements Brush {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
final int outsetSize = (int) (size + 1);
|
final int outsetSize = (int) (size + 1);
|
||||||
double brushSizeSquared = size * size;
|
double brushSizeSquared = size * size;
|
||||||
|
|
||||||
|
@ -4,20 +4,22 @@ import com.boydti.fawe.object.random.SimplexNoise;
|
|||||||
import com.boydti.fawe.util.MathMan;
|
import com.boydti.fawe.util.MathMan;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.MutableBlockVector;
|
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.MutableBlockVector;
|
||||||
|
import com.sk89q.worldedit.math.MutableVector;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.math.transform.AffineTransform;
|
import com.sk89q.worldedit.math.transform.AffineTransform;
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
public class BlobBrush implements Brush {
|
public class BlobBrush implements Brush {
|
||||||
private final double amplitude;
|
private final double amplitude;
|
||||||
private final double frequency;
|
private final double frequency;
|
||||||
private final Vector radius;
|
private final Vector3 radius;
|
||||||
private final double sphericity;
|
private final double sphericity;
|
||||||
|
|
||||||
public BlobBrush(Vector radius, double frequency, double amplitude, double sphericity) {
|
public BlobBrush(Vector3 radius, double frequency, double amplitude, double sphericity) {
|
||||||
this.frequency = frequency;
|
this.frequency = frequency;
|
||||||
this.amplitude = amplitude;
|
this.amplitude = amplitude;
|
||||||
this.radius = radius;
|
this.radius = radius;
|
||||||
@ -25,7 +27,7 @@ public class BlobBrush implements Brush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
double seedX = ThreadLocalRandom.current().nextDouble();
|
double seedX = ThreadLocalRandom.current().nextDouble();
|
||||||
double seedY = ThreadLocalRandom.current().nextDouble();
|
double seedY = ThreadLocalRandom.current().nextDouble();
|
||||||
double seedZ = ThreadLocalRandom.current().nextDouble();
|
double seedZ = ThreadLocalRandom.current().nextDouble();
|
||||||
@ -70,7 +72,7 @@ public class BlobBrush implements Brush {
|
|||||||
double manScaleY = (1.25 + seedY * 0.5);
|
double manScaleY = (1.25 + seedY * 0.5);
|
||||||
double manScaleZ = (1.25 + seedZ * 0.5);
|
double manScaleZ = (1.25 + seedZ * 0.5);
|
||||||
|
|
||||||
MutableBlockVector mutable = new MutableBlockVector();
|
MutableVector mutable = new MutableVector();
|
||||||
double roughness = 1 - sphericity;
|
double roughness = 1 - sphericity;
|
||||||
for (int xr = -sizeInt; xr <= sizeInt; xr++) {
|
for (int xr = -sizeInt; xr <= sizeInt; xr++) {
|
||||||
mutable.mutX(xr);
|
mutable.mutX(xr);
|
||||||
@ -78,10 +80,10 @@ public class BlobBrush implements Brush {
|
|||||||
mutable.mutY(yr);
|
mutable.mutY(yr);
|
||||||
for (int zr = -sizeInt; zr <= sizeInt; zr++) {
|
for (int zr = -sizeInt; zr <= sizeInt; zr++) {
|
||||||
mutable.mutZ(zr);
|
mutable.mutZ(zr);
|
||||||
Vector pt = transform.apply(mutable);
|
Vector3 pt = transform.apply(mutable);
|
||||||
int x = MathMan.roundInt(pt.getBlockX());
|
int x = MathMan.roundInt(pt.getX());
|
||||||
int y = MathMan.roundInt(pt.getBlockY());
|
int y = MathMan.roundInt(pt.getY());
|
||||||
int z = MathMan.roundInt(pt.getBlockZ());
|
int z = MathMan.roundInt(pt.getZ());
|
||||||
|
|
||||||
double xScaled = Math.abs(x) * modX;
|
double xScaled = Math.abs(x) * modX;
|
||||||
double yScaled = Math.abs(y) * modY;
|
double yScaled = Math.abs(y) * modY;
|
||||||
|
@ -2,12 +2,15 @@ package com.boydti.fawe.object.brush;
|
|||||||
|
|
||||||
import com.boydti.fawe.config.BBC;
|
import com.boydti.fawe.config.BBC;
|
||||||
import com.boydti.fawe.object.brush.visualization.VisualExtent;
|
import com.boydti.fawe.object.brush.visualization.VisualExtent;
|
||||||
|
import com.boydti.fawe.util.MathMan;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.MathUtils;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.util.Location;
|
import com.sk89q.worldedit.util.Location;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -18,9 +21,9 @@ public class CatenaryBrush implements Brush, ResettableTool {
|
|||||||
private final boolean shell, select, direction;
|
private final boolean shell, select, direction;
|
||||||
private final double slack;
|
private final double slack;
|
||||||
|
|
||||||
private Vector pos1;
|
private BlockVector3 pos1;
|
||||||
private Vector pos2;
|
private BlockVector3 pos2;
|
||||||
private Vector vertex;
|
private BlockVector3 vertex;
|
||||||
|
|
||||||
public CatenaryBrush(boolean shell, boolean select, boolean direction, double lengthFactor) {
|
public CatenaryBrush(boolean shell, boolean select, boolean direction, double lengthFactor) {
|
||||||
this.shell = shell;
|
this.shell = shell;
|
||||||
@ -30,7 +33,7 @@ public class CatenaryBrush implements Brush, ResettableTool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector pos2, final Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 pos2, final Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
boolean visual = (editSession.getExtent() instanceof VisualExtent);
|
boolean visual = (editSession.getExtent() instanceof VisualExtent);
|
||||||
if (pos1 == null || pos2.equals(pos1)) {
|
if (pos1 == null || pos2.equals(pos1)) {
|
||||||
if (!visual) {
|
if (!visual) {
|
||||||
@ -47,12 +50,12 @@ public class CatenaryBrush implements Brush, ResettableTool {
|
|||||||
}
|
}
|
||||||
} else if (this.direction) {
|
} else if (this.direction) {
|
||||||
Location loc = editSession.getPlayer().getPlayer().getLocation();
|
Location loc = editSession.getPlayer().getPlayer().getLocation();
|
||||||
Vector facing = loc.getDirection().normalize();
|
Vector3 facing = loc.getDirection().normalize();
|
||||||
Vector midpoint = pos1.add(pos2).divide(2);
|
BlockVector3 midpoint = pos1.add(pos2).divide(2);
|
||||||
Vector offset = midpoint.subtract(vertex);
|
BlockVector3 offset = midpoint.subtract(vertex);
|
||||||
vertex = midpoint.add(facing.multiply(offset.length()));
|
vertex = midpoint.add(facing.multiply(offset.length()).toBlockPoint());
|
||||||
}
|
}
|
||||||
List<Vector> nodes = Arrays.asList(pos1, vertex, pos2);
|
List<BlockVector3> nodes = Arrays.asList(pos1, vertex, pos2);
|
||||||
vertex = null;
|
vertex = null;
|
||||||
try {
|
try {
|
||||||
editSession.drawSpline(pattern, nodes, 0, 0, 0, 10, size, !shell);
|
editSession.drawSpline(pattern, nodes, 0, 0, 0, 10, size, !shell);
|
||||||
@ -76,8 +79,8 @@ public class CatenaryBrush implements Brush, ResettableTool {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Vector getVertex(Vector pos1, Vector pos2, double lenPercent) {
|
public static BlockVector3 getVertex(BlockVector3 pos1, BlockVector3 pos2, double lenPercent) {
|
||||||
if (lenPercent <= 1) return Vector.getMidpoint(pos1, pos2);
|
if (lenPercent <= 1) return MathUtils.midpoint(pos1, pos2);
|
||||||
double curveLen = pos1.distance(pos2) * lenPercent;
|
double curveLen = pos1.distance(pos2) * lenPercent;
|
||||||
double dy = pos2.getY() - pos1.getY();
|
double dy = pos2.getY() - pos1.getY();
|
||||||
double dx = pos2.getX() - pos1.getX();
|
double dx = pos2.getX() - pos1.getX();
|
||||||
@ -90,6 +93,6 @@ public class CatenaryBrush implements Brush, ResettableTool {
|
|||||||
double z = (dh/2)/a;
|
double z = (dh/2)/a;
|
||||||
double oY = (dy - curveLen * (Math.cosh(z) / Math.sinh(z))) / 2;
|
double oY = (dy - curveLen * (Math.cosh(z) / Math.sinh(z))) / 2;
|
||||||
double vertY = a * 1 + oY;
|
double vertY = a * 1 + oY;
|
||||||
return pos1.add(pos2.subtract(pos1).multiply(vertX / dh).add(0, vertY, 0)).round();
|
return pos1.add(pos2.subtract(pos1).multiply(MathMan.roundInt(vertX / dh)).add(0, MathMan.roundInt(vertY), 0)).round();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,10 +3,11 @@ package com.boydti.fawe.object.brush;
|
|||||||
import com.boydti.fawe.wrappers.LocationMaskedPlayerWrapper;
|
import com.boydti.fawe.wrappers.LocationMaskedPlayerWrapper;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.entity.Player;
|
import com.sk89q.worldedit.entity.Player;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.math.transform.AffineTransform;
|
import com.sk89q.worldedit.math.transform.AffineTransform;
|
||||||
|
|
||||||
public class CircleBrush implements Brush {
|
public class CircleBrush implements Brush {
|
||||||
@ -17,21 +18,21 @@ public class CircleBrush implements Brush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
Vector normal = position.subtract(player.getLocation());
|
Vector3 normal = position.toVector3().subtract(player.getLocation().toVector());
|
||||||
editSession.makeCircle(position, pattern, size, size, size, false, normal);
|
editSession.makeCircle(position, pattern, size, size, size, false, normal);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Vector any90Rotate(Vector normal) {
|
private Vector3 any90Rotate(Vector3 normal) {
|
||||||
normal = normal.normalize();
|
normal = normal.normalize();
|
||||||
if (normal.getX() == 1 || normal.getY() == 1 || normal.getZ() == 1) {
|
if (normal.getX() == 1 || normal.getY() == 1 || normal.getZ() == 1) {
|
||||||
return new Vector(normal.getZ(), normal.getX(), normal.getY());
|
return new Vector3(normal.getZ(), normal.getX(), normal.getY());
|
||||||
}
|
}
|
||||||
AffineTransform affine = new AffineTransform();
|
AffineTransform affine = new AffineTransform();
|
||||||
affine = affine.rotateX(90);
|
affine = affine.rotateX(90);
|
||||||
affine = affine.rotateY(90);
|
affine = affine.rotateY(90);
|
||||||
affine = affine.rotateZ(90);
|
affine = affine.rotateZ(90);
|
||||||
Vector random = affine.apply(normal);
|
Vector3 random = affine.apply(normal);
|
||||||
return random.cross(normal).normalize();
|
return random.cross(normal).normalize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,12 +7,12 @@ import com.boydti.fawe.wrappers.PlayerWrapper;
|
|||||||
import com.boydti.fawe.wrappers.SilentPlayerWrapper;
|
import com.boydti.fawe.wrappers.SilentPlayerWrapper;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.entity.Player;
|
import com.sk89q.worldedit.entity.Player;
|
||||||
import com.sk89q.worldedit.event.platform.CommandEvent;
|
import com.sk89q.worldedit.event.platform.CommandEvent;
|
||||||
import com.sk89q.worldedit.extension.platform.CommandManager;
|
import com.sk89q.worldedit.extension.platform.CommandManager;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.selector.CuboidRegionSelector;
|
import com.sk89q.worldedit.regions.selector.CuboidRegionSelector;
|
||||||
import com.sk89q.worldedit.util.Location;
|
import com.sk89q.worldedit.util.Location;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -26,7 +26,7 @@ public class CommandBrush implements Brush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
int radius = (int) size;
|
int radius = (int) size;
|
||||||
CuboidRegionSelector selector = new CuboidRegionSelector(editSession.getWorld(), position.subtract(radius, radius, radius), position.add(radius, radius, radius));
|
CuboidRegionSelector selector = new CuboidRegionSelector(editSession.getWorld(), position.subtract(radius, radius, radius), position.add(radius, radius, radius));
|
||||||
String replaced = command.replace("{x}", position.getBlockX() + "")
|
String replaced = command.replace("{x}", position.getBlockX() + "")
|
||||||
@ -41,10 +41,10 @@ public class CommandBrush implements Brush {
|
|||||||
if (face == null) {
|
if (face == null) {
|
||||||
position = position.add(0, 1, 1);
|
position = position.add(0, 1, 1);
|
||||||
} else {
|
} else {
|
||||||
position = position.add(face.getDirection());
|
position = position.add(face.getDirection().toBlockPoint());
|
||||||
}
|
}
|
||||||
fp.setSelection(selector);
|
fp.setSelection(selector);
|
||||||
PlayerWrapper wePlayer = new SilentPlayerWrapper(new LocationMaskedPlayerWrapper(player, new Location(player.getExtent(), position)));
|
PlayerWrapper wePlayer = new SilentPlayerWrapper(new LocationMaskedPlayerWrapper(player, new Location(player.getExtent(), position.toVector3())));
|
||||||
List<String> cmds = StringMan.split(replaced, ';');
|
List<String> cmds = StringMan.split(replaced, ';');
|
||||||
for (String cmd : cmds) {
|
for (String cmd : cmds) {
|
||||||
CommandEvent event = new CommandEvent(wePlayer, cmd);
|
CommandEvent event = new CommandEvent(wePlayer, cmd);
|
||||||
|
@ -10,7 +10,6 @@ import com.boydti.fawe.object.function.mask.AbstractDelegateMask;
|
|||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.LocalSession;
|
import com.sk89q.worldedit.LocalSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
@ -22,6 +21,7 @@ import com.sk89q.worldedit.function.operation.Operation;
|
|||||||
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.visitor.RecursiveVisitor;
|
import com.sk89q.worldedit.function.visitor.RecursiveVisitor;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.math.transform.AffineTransform;
|
import com.sk89q.worldedit.math.transform.AffineTransform;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.session.ClipboardHolder;
|
import com.sk89q.worldedit.session.ClipboardHolder;
|
||||||
@ -50,7 +50,7 @@ public class CopyPastaBrush implements Brush, ResettableTool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(final EditSession editSession, Vector position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(final EditSession editSession, BlockVector3 position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
FawePlayer fp = editSession.getPlayer();
|
FawePlayer fp = editSession.getPlayer();
|
||||||
ClipboardHolder clipboard = session.getExistingClipboard();
|
ClipboardHolder clipboard = session.getExistingClipboard();
|
||||||
if (clipboard == null) {
|
if (clipboard == null) {
|
||||||
@ -66,7 +66,7 @@ public class CopyPastaBrush implements Brush, ResettableTool {
|
|||||||
final int minY = position.getBlockY();
|
final int minY = position.getBlockY();
|
||||||
mask = new AbstractDelegateMask(mask) {
|
mask = new AbstractDelegateMask(mask) {
|
||||||
@Override
|
@Override
|
||||||
public boolean test(Vector vector) {
|
public boolean test(BlockVector3 vector) {
|
||||||
if (super.test(vector) && vector.getBlockY() >= minY) {
|
if (super.test(vector) && vector.getBlockY() >= minY) {
|
||||||
BlockStateHolder block = editSession.getLazyBlock(vector);
|
BlockStateHolder block = editSession.getLazyBlock(vector);
|
||||||
if (!block.getBlockType().getMaterial().isAir()) {
|
if (!block.getBlockType().getMaterial().isAir()) {
|
||||||
|
@ -7,12 +7,12 @@ import com.boydti.fawe.object.clipboard.FaweClipboard;
|
|||||||
import com.boydti.fawe.object.clipboard.OffsetFaweClipboard;
|
import com.boydti.fawe.object.clipboard.OffsetFaweClipboard;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.blocks.Blocks;
|
import com.sk89q.worldedit.blocks.Blocks;
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
import com.sk89q.worldedit.world.block.BlockType;
|
import com.sk89q.worldedit.world.block.BlockType;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||||
@ -23,14 +23,14 @@ public class ErodeBrush implements Brush {
|
|||||||
|
|
||||||
private PseudoRandom rand = new PseudoRandom();
|
private PseudoRandom rand = new PseudoRandom();
|
||||||
|
|
||||||
private static final Vector[] FACES_TO_CHECK = {new Vector(0, 0, 1), new Vector(0, 0, -1), new Vector(0, 1, 0), new Vector(0, -1, 0), new Vector(1, 0, 0), new Vector(-1, 0, 0)};
|
private static final BlockVector3[] FACES_TO_CHECK = {new BlockVector3(0, 0, 1), new BlockVector3(0, 0, -1), new BlockVector3(0, 1, 0), new BlockVector3(0, -1, 0), new BlockVector3(1, 0, 0), new BlockVector3(-1, 0, 0)};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
this.erosion(editSession, 2, 1, 5, 1, position, size);
|
this.erosion(editSession, 2, 1, 5, 1, position, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void erosion(final EditSession es, int erodeFaces, int erodeRec, int fillFaces, int fillRec, Vector target, double size) {
|
public void erosion(final EditSession es, int erodeFaces, int erodeRec, int fillFaces, int fillRec, BlockVector3 target, double size) {
|
||||||
int brushSize = (int) size + 1;
|
int brushSize = (int) size + 1;
|
||||||
int brushSizeSquared = (int) (size * size);
|
int brushSizeSquared = (int) (size * size);
|
||||||
int dimension = brushSize * 2 + 1;
|
int dimension = brushSize * 2 + 1;
|
||||||
@ -98,7 +98,7 @@ public class ErodeBrush implements Brush {
|
|||||||
} else {
|
} else {
|
||||||
Arrays.fill(frequency, 0);
|
Arrays.fill(frequency, 0);
|
||||||
}
|
}
|
||||||
for (Vector offs : FACES_TO_CHECK) {
|
for (BlockVector3 offs : FACES_TO_CHECK) {
|
||||||
BlockStateHolder next = current.getBlock(x + offs.getBlockX(), y + offs.getBlockY(), z + offs.getBlockZ());
|
BlockStateHolder next = current.getBlock(x + offs.getBlockX(), y + offs.getBlockY(), z + offs.getBlockZ());
|
||||||
if (!next.getBlockType().getMaterial().isMovementBlocker()) {
|
if (!next.getBlockType().getMaterial().isMovementBlocker()) {
|
||||||
continue;
|
continue;
|
||||||
@ -142,7 +142,7 @@ public class ErodeBrush implements Brush {
|
|||||||
} else {
|
} else {
|
||||||
Arrays.fill(frequency, 0);
|
Arrays.fill(frequency, 0);
|
||||||
}
|
}
|
||||||
for (Vector offs : FACES_TO_CHECK) {
|
for (BlockVector3 offs : FACES_TO_CHECK) {
|
||||||
BlockStateHolder next = current.getBlock(x + offs.getBlockX(), y + offs.getBlockY(), z + offs.getBlockZ());
|
BlockStateHolder next = current.getBlock(x + offs.getBlockX(), y + offs.getBlockY(), z + offs.getBlockZ());
|
||||||
if (next.getBlockType().getMaterial().isMovementBlocker()) {
|
if (next.getBlockType().getMaterial().isMovementBlocker()) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -3,13 +3,13 @@ package com.boydti.fawe.object.brush;
|
|||||||
import com.boydti.fawe.util.MathMan;
|
import com.boydti.fawe.util.MathMan;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
public class FallingSphere implements Brush {
|
public class FallingSphere implements Brush {
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
int px = position.getBlockX();
|
int px = position.getBlockX();
|
||||||
int py = position.getBlockY();
|
int py = position.getBlockY();
|
||||||
int pz = position.getBlockZ();
|
int pz = position.getBlockZ();
|
||||||
|
@ -4,11 +4,12 @@ import com.boydti.fawe.object.brush.heightmap.HeightMap;
|
|||||||
import com.boydti.fawe.object.brush.heightmap.ScalableHeightMap;
|
import com.boydti.fawe.object.brush.heightmap.ScalableHeightMap;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
import com.sk89q.worldedit.function.mask.Mask;
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
import com.sk89q.worldedit.function.mask.Masks;
|
import com.sk89q.worldedit.function.mask.Masks;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
public class FlattenBrush extends HeightBrush {
|
public class FlattenBrush extends HeightBrush {
|
||||||
@ -18,7 +19,7 @@ public class FlattenBrush extends HeightBrush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double sizeDouble) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double sizeDouble) throws MaxChangedBlocksException {
|
||||||
int size = (int) sizeDouble;
|
int size = (int) sizeDouble;
|
||||||
Mask mask = editSession.getMask();
|
Mask mask = editSession.getMask();
|
||||||
if (mask == Masks.alwaysTrue() || mask == Masks.alwaysTrue2D()) {
|
if (mask == Masks.alwaysTrue() || mask == Masks.alwaysTrue2D()) {
|
||||||
|
@ -11,13 +11,15 @@ import com.boydti.fawe.object.exception.FaweException;
|
|||||||
import com.boydti.fawe.util.MathMan;
|
import com.boydti.fawe.util.MathMan;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.Vector2D;
|
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
import com.sk89q.worldedit.function.mask.Mask;
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
import com.sk89q.worldedit.function.mask.Masks;
|
import com.sk89q.worldedit.function.mask.Masks;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
@ -68,7 +70,7 @@ public class HeightBrush implements Brush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double sizeDouble) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double sizeDouble) throws MaxChangedBlocksException {
|
||||||
int size = (int) sizeDouble;
|
int size = (int) sizeDouble;
|
||||||
HeightMap map = getHeightMap();
|
HeightMap map = getHeightMap();
|
||||||
map.setSize(size);
|
map.setSize(size);
|
||||||
@ -83,7 +85,7 @@ public class HeightBrush implements Brush {
|
|||||||
hmmg.getMetaData().setMeta("PRECISION_HEIGHT", metaHeight = new byte[hmmg.getArea()]);
|
hmmg.getMetaData().setMeta("PRECISION_HEIGHT", metaHeight = new byte[hmmg.getArea()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector origin = hmmg.getOrigin();
|
Vector3 origin = hmmg.getOrigin();
|
||||||
|
|
||||||
int bx = position.getBlockX();
|
int bx = position.getBlockX();
|
||||||
int bz = position.getBlockZ();
|
int bz = position.getBlockZ();
|
||||||
@ -131,14 +133,14 @@ public class HeightBrush implements Brush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (smooth) {
|
if (smooth) {
|
||||||
Vector2D min = new Vector2D(Math.max(0, bx - size), Math.max(0, bz - size));
|
BlockVector2 min = new BlockVector2(Math.max(0, bx - size), Math.max(0, bz - size));
|
||||||
Vector2D max = new Vector2D(Math.min(hmmg.getWidth() - 1, bx + size), Math.min(hmmg.getLength() - 1, bz + size));
|
BlockVector2 max = new BlockVector2(Math.min(hmmg.getWidth() - 1, bx + size), Math.min(hmmg.getLength() - 1, bz + size));
|
||||||
hmmg.smooth(min, max, 8, 1);
|
hmmg.smooth(min, max, 8, 1);
|
||||||
|
|
||||||
if (size > 20) {
|
if (size > 20) {
|
||||||
int smoothSize = size + 8;
|
int smoothSize = size + 8;
|
||||||
min = new Vector2D(Math.max(0, bx - smoothSize), Math.max(0, bz - smoothSize));
|
min = new BlockVector2(Math.max(0, bx - smoothSize), Math.max(0, bz - smoothSize));
|
||||||
max = new Vector2D(Math.min(hmmg.getWidth() - 1, bx + smoothSize), Math.min(hmmg.getLength() - 1, bz + smoothSize));
|
max = new BlockVector2(Math.min(hmmg.getWidth() - 1, bx + smoothSize), Math.min(hmmg.getLength() - 1, bz + smoothSize));
|
||||||
hmmg.smooth(min, max, 1, 1);
|
hmmg.smooth(min, max, 1, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,6 @@ import com.boydti.fawe.util.TextureUtil;
|
|||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.LocalSession;
|
import com.sk89q.worldedit.LocalSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
@ -16,6 +15,9 @@ import com.sk89q.worldedit.function.mask.SolidBlockMask;
|
|||||||
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.visitor.RecursiveVisitor;
|
import com.sk89q.worldedit.function.visitor.RecursiveVisitor;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.MutableVector;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.math.transform.AffineTransform;
|
import com.sk89q.worldedit.math.transform.AffineTransform;
|
||||||
import com.sk89q.worldedit.util.Location;
|
import com.sk89q.worldedit.util.Location;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
@ -64,15 +66,15 @@ public class ImageBrush implements Brush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private interface ColorFunction {
|
private interface ColorFunction {
|
||||||
int call(int x1, int z1, int x2, int z2, Extent extent, Vector pos);
|
int call(int x1, int z1, int x2, int z2, Extent extent, BlockVector3 pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
private interface BlockFunction {
|
private interface BlockFunction {
|
||||||
void apply(int color, Extent extent, Vector pos);
|
void apply(int color, Extent extent, BlockVector3 pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double sizeDouble) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double sizeDouble) throws MaxChangedBlocksException {
|
||||||
TextureUtil texture = session.getTextureUtil();
|
TextureUtil texture = session.getTextureUtil();
|
||||||
|
|
||||||
final int cx = position.getBlockX();
|
final int cx = position.getBlockX();
|
||||||
@ -88,19 +90,19 @@ public class ImageBrush implements Brush {
|
|||||||
AffineTransform transform = new AffineTransform().rotateY((-yaw) % 360).rotateX((pitch - 90) % 360).inverse();
|
AffineTransform transform = new AffineTransform().rotateY((-yaw) % 360).rotateX((pitch - 90) % 360).inverse();
|
||||||
|
|
||||||
RecursiveVisitor visitor = new RecursiveVisitor(new Mask() {
|
RecursiveVisitor visitor = new RecursiveVisitor(new Mask() {
|
||||||
private final Vector mutable = new Vector();
|
private final MutableVector mutable = new MutableVector();
|
||||||
@Override
|
@Override
|
||||||
public boolean test(Vector vector) {
|
public boolean test(BlockVector3 vector) {
|
||||||
if (solid.test(vector)) {
|
if (solid.test(vector)) {
|
||||||
int dx = vector.getBlockX() - cx;
|
int dx = vector.getBlockX() - cx;
|
||||||
int dy = vector.getBlockY() - cy;
|
int dy = vector.getBlockY() - cy;
|
||||||
int dz = vector.getBlockZ() - cz;
|
int dz = vector.getBlockZ() - cz;
|
||||||
|
|
||||||
Vector pos1 = transform.apply(mutable.setComponents(dx - 0.5, dy - 0.5, dz - 0.5));
|
Vector3 pos1 = transform.apply(mutable.setComponents(dx - 0.5, dy - 0.5, dz - 0.5));
|
||||||
int x1 = (int) (pos1.getX() * scale + centerX);
|
int x1 = (int) (pos1.getX() * scale + centerX);
|
||||||
int z1 = (int) (pos1.getZ() * scale + centerZ);
|
int z1 = (int) (pos1.getZ() * scale + centerZ);
|
||||||
|
|
||||||
Vector pos2 = transform.apply(mutable.setComponents(dx + 0.5, dy + 0.5, dz + 0.5));
|
Vector3 pos2 = transform.apply(mutable.setComponents(dx + 0.5, dy + 0.5, dz + 0.5));
|
||||||
int x2 = (int) (pos2.getX() * scale + centerX);
|
int x2 = (int) (pos2.getX() * scale + centerX);
|
||||||
int z2 = (int) (pos2.getZ() * scale + centerZ);
|
int z2 = (int) (pos2.getZ() * scale + centerZ);
|
||||||
if (x2 < x1) {
|
if (x2 < x1) {
|
||||||
|
@ -13,12 +13,13 @@ import com.boydti.fawe.util.EditSessionBuilder;
|
|||||||
import com.boydti.fawe.util.MainUtil;
|
import com.boydti.fawe.util.MainUtil;
|
||||||
import com.sk89q.worldedit.LocalConfiguration;
|
import com.sk89q.worldedit.LocalConfiguration;
|
||||||
import com.sk89q.worldedit.LocalSession;
|
import com.sk89q.worldedit.LocalSession;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.command.tool.BrushTool;
|
import com.sk89q.worldedit.command.tool.BrushTool;
|
||||||
import com.sk89q.worldedit.command.tool.DoubleActionTraceTool;
|
import com.sk89q.worldedit.command.tool.DoubleActionTraceTool;
|
||||||
import com.sk89q.worldedit.entity.Player;
|
import com.sk89q.worldedit.entity.Player;
|
||||||
import com.sk89q.worldedit.extension.platform.Actor;
|
import com.sk89q.worldedit.extension.platform.Actor;
|
||||||
import com.sk89q.worldedit.extension.platform.Platform;
|
import com.sk89q.worldedit.extension.platform.Platform;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.util.Location;
|
import com.sk89q.worldedit.util.Location;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
@ -47,7 +48,7 @@ public class InspectBrush extends BrushTool implements DoubleActionTraceTool {
|
|||||||
return perform(player, session, true);
|
return perform(player, session, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector getTarget(Player player, boolean adjacent) {
|
public Vector3 getTarget(Player player, boolean adjacent) {
|
||||||
Location target = null;
|
Location target = null;
|
||||||
int range = this.range > -1 ? getRange() : MAX_RANGE;
|
int range = this.range > -1 ? getRange() : MAX_RANGE;
|
||||||
if (adjacent) {
|
if (adjacent) {
|
||||||
@ -67,7 +68,7 @@ public class InspectBrush extends BrushTool implements DoubleActionTraceTool {
|
|||||||
player.print(BBC.getPrefix() + BBC.SETTING_DISABLE.f("history.use-database (Import with /frb #import )"));
|
player.print(BBC.getPrefix() + BBC.SETTING_DISABLE.f("history.use-database (Import with /frb #import )"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Vector target = getTarget(player, rightClick);
|
BlockVector3 target = getTarget(player, rightClick).toBlockPoint();
|
||||||
final int x = target.getBlockX();
|
final int x = target.getBlockX();
|
||||||
final int y = target.getBlockY();
|
final int y = target.getBlockY();
|
||||||
final int z = target.getBlockZ();
|
final int z = target.getBlockZ();
|
||||||
|
@ -6,8 +6,6 @@ import com.boydti.fawe.object.mask.AdjacentAnyMask;
|
|||||||
import com.boydti.fawe.object.mask.RadiusMask;
|
import com.boydti.fawe.object.mask.RadiusMask;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.MutableBlockVector;
|
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.function.mask.BlockMask;
|
import com.sk89q.worldedit.function.mask.BlockMask;
|
||||||
import com.sk89q.worldedit.function.mask.BlockTypeMask;
|
import com.sk89q.worldedit.function.mask.BlockTypeMask;
|
||||||
@ -17,6 +15,8 @@ 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.visitor.BreadthFirstSearch;
|
import com.sk89q.worldedit.function.visitor.BreadthFirstSearch;
|
||||||
import com.sk89q.worldedit.function.visitor.RecursiveVisitor;
|
import com.sk89q.worldedit.function.visitor.RecursiveVisitor;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.MutableBlockVector;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||||
@ -34,7 +34,7 @@ public class LayerBrush implements Brush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern ignore, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern ignore, double size) throws MaxChangedBlocksException {
|
||||||
final FaweQueue queue = editSession.getQueue();
|
final FaweQueue queue = editSession.getQueue();
|
||||||
final AdjacentAnyMask adjacent = new AdjacentAnyMask(new BlockTypeMask(editSession, BlockTypes.AIR, BlockTypes.CAVE_AIR, BlockTypes.VOID_AIR));
|
final AdjacentAnyMask adjacent = new AdjacentAnyMask(new BlockTypeMask(editSession, BlockTypes.AIR, BlockTypes.CAVE_AIR, BlockTypes.VOID_AIR));
|
||||||
final SolidBlockMask solid = new SolidBlockMask(editSession);
|
final SolidBlockMask solid = new SolidBlockMask(editSession);
|
||||||
@ -51,7 +51,7 @@ public class LayerBrush implements Brush {
|
|||||||
boolean found = false;
|
boolean found = false;
|
||||||
int previous = layers[depth - 1].getInternalId();
|
int previous = layers[depth - 1].getInternalId();
|
||||||
int previous2 = layers[depth - 2].getInternalId();
|
int previous2 = layers[depth - 2].getInternalId();
|
||||||
for (Vector dir : BreadthFirstSearch.DEFAULT_DIRECTIONS) {
|
for (BlockVector3 dir : BreadthFirstSearch.DEFAULT_DIRECTIONS) {
|
||||||
mutable.setComponents(pos.getBlockX() + dir.getBlockX(), pos.getBlockY() + dir.getBlockY(), pos.getBlockZ() + dir.getBlockZ());
|
mutable.setComponents(pos.getBlockX() + dir.getBlockX(), pos.getBlockY() + dir.getBlockY(), pos.getBlockZ() + dir.getBlockZ());
|
||||||
if (visitor.isVisited(mutable) && queue.getCachedCombinedId4Data(mutable.getBlockX(), mutable.getBlockY(), mutable.getBlockZ()) == previous) {
|
if (visitor.isVisited(mutable) && queue.getCachedCombinedId4Data(mutable.getBlockX(), mutable.getBlockY(), mutable.getBlockZ()) == previous) {
|
||||||
mutable.setComponents(pos.getBlockX() + dir.getBlockX() * 2, pos.getBlockY() + dir.getBlockY() * 2, pos.getBlockZ() + dir.getBlockZ() * 2);
|
mutable.setComponents(pos.getBlockX() + dir.getBlockX() * 2, pos.getBlockY() + dir.getBlockY() * 2, pos.getBlockZ() + dir.getBlockZ() * 2);
|
||||||
@ -73,7 +73,7 @@ public class LayerBrush implements Brush {
|
|||||||
BlockStateHolder currentPattern = layers[depth];
|
BlockStateHolder currentPattern = layers[depth];
|
||||||
return editSession.setBlock(pos, currentPattern);
|
return editSession.setBlock(pos, currentPattern);
|
||||||
}, layers.length - 1, editSession);
|
}, layers.length - 1, editSession);
|
||||||
for (Vector pos : visited) {
|
for (BlockVector3 pos : visited) {
|
||||||
visitor.visit(pos);
|
visitor.visit(pos);
|
||||||
}
|
}
|
||||||
Operations.completeBlindly(visitor);
|
Operations.completeBlindly(visitor);
|
||||||
|
@ -4,14 +4,14 @@ import com.boydti.fawe.config.BBC;
|
|||||||
import com.boydti.fawe.object.brush.visualization.VisualExtent;
|
import com.boydti.fawe.object.brush.visualization.VisualExtent;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
public class LineBrush implements Brush, ResettableTool {
|
public class LineBrush implements Brush, ResettableTool {
|
||||||
|
|
||||||
private final boolean shell, select, flat;
|
private final boolean shell, select, flat;
|
||||||
private Vector pos1;
|
private BlockVector3 pos1;
|
||||||
|
|
||||||
public LineBrush(boolean shell, boolean select, boolean flat) {
|
public LineBrush(boolean shell, boolean select, boolean flat) {
|
||||||
this.shell = shell;
|
this.shell = shell;
|
||||||
@ -20,7 +20,7 @@ public class LineBrush implements Brush, ResettableTool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, final Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, final Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
boolean visual = (editSession.getExtent() instanceof VisualExtent);
|
boolean visual = (editSession.getExtent() instanceof VisualExtent);
|
||||||
if (pos1 == null) {
|
if (pos1 == null) {
|
||||||
if (!visual) {
|
if (!visual) {
|
||||||
|
@ -2,13 +2,14 @@ package com.boydti.fawe.object.brush;
|
|||||||
|
|
||||||
import com.boydti.fawe.jnbt.anvil.generator.SchemGen;
|
import com.boydti.fawe.jnbt.anvil.generator.SchemGen;
|
||||||
import com.boydti.fawe.util.MaskTraverser;
|
import com.boydti.fawe.util.MaskTraverser;
|
||||||
|
import com.intellectualcrafters.plot.util.MathMan;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.function.mask.Mask;
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
import com.sk89q.worldedit.session.ClipboardHolder;
|
import com.sk89q.worldedit.session.ClipboardHolder;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -27,10 +28,11 @@ public class PopulateSchem implements Brush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
new MaskTraverser(mask).reset(editSession);
|
new MaskTraverser(mask).reset(editSession);
|
||||||
SchemGen gen = new SchemGen(mask, editSession, clipboards, randomRotate);
|
SchemGen gen = new SchemGen(mask, editSession, clipboards, randomRotate);
|
||||||
CuboidRegion cuboid = new CuboidRegion(editSession.getWorld(), position.subtract(size, size, size), position.add(size, size, size));
|
int size1 = MathMan.roundInt(size);
|
||||||
|
CuboidRegion cuboid = new CuboidRegion(editSession.getWorld(), position.subtract(size1, size1, size1), position.add(size1, size1, size1));
|
||||||
try {
|
try {
|
||||||
editSession.addSchems(cuboid, mask, clipboards, rarity, randomRotate);
|
editSession.addSchems(cuboid, mask, clipboards, rarity, randomRotate);
|
||||||
} catch (WorldEditException e) {
|
} catch (WorldEditException e) {
|
||||||
|
@ -2,12 +2,12 @@ package com.boydti.fawe.object.brush;
|
|||||||
|
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
public class RaiseBrush extends ErodeBrush {
|
public class RaiseBrush extends ErodeBrush {
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
this.erosion(editSession, 6, 0, 1, 1, position, size);
|
this.erosion(editSession, 6, 0, 1, 1, position, size);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,7 +4,6 @@ import com.boydti.fawe.object.mask.RadiusMask;
|
|||||||
import com.boydti.fawe.object.visitor.DFSRecursiveVisitor;
|
import com.boydti.fawe.object.visitor.DFSRecursiveVisitor;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
@ -14,6 +13,7 @@ import com.sk89q.worldedit.function.mask.Masks;
|
|||||||
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.visitor.RecursiveVisitor;
|
import com.sk89q.worldedit.function.visitor.RecursiveVisitor;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
|
|
||||||
public class RecurseBrush implements Brush {
|
public class RecurseBrush implements Brush {
|
||||||
@ -25,7 +25,7 @@ public class RecurseBrush implements Brush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(final EditSession editSession, final Vector position, Pattern to, double size) throws MaxChangedBlocksException {
|
public void build(final EditSession editSession, final BlockVector3 position, Pattern to, double size) throws MaxChangedBlocksException {
|
||||||
Mask mask = editSession.getMask();
|
Mask mask = editSession.getMask();
|
||||||
if (mask == null) {
|
if (mask == null) {
|
||||||
mask = Masks.alwaysTrue();
|
mask = Masks.alwaysTrue();
|
||||||
@ -42,7 +42,7 @@ public class RecurseBrush implements Brush {
|
|||||||
final Mask radMask = new RadiusMask(0, (int) size);
|
final Mask radMask = new RadiusMask(0, (int) size);
|
||||||
DFSRecursiveVisitor visitor = new DFSRecursiveVisitor(mask, replace, Integer.MAX_VALUE, Integer.MAX_VALUE) {
|
DFSRecursiveVisitor visitor = new DFSRecursiveVisitor(mask, replace, Integer.MAX_VALUE, Integer.MAX_VALUE) {
|
||||||
@Override
|
@Override
|
||||||
public boolean isVisitable(Vector from, Vector to) {
|
public boolean isVisitable(BlockVector3 from, BlockVector3 to) {
|
||||||
int y = to.getBlockY();
|
int y = to.getBlockY();
|
||||||
return y >= y && y < maxY && radMask.test(to) && super.isVisitable(from, to);
|
return y >= y && y < maxY && radMask.test(to) && super.isVisitable(from, to);
|
||||||
}
|
}
|
||||||
@ -52,7 +52,7 @@ public class RecurseBrush implements Brush {
|
|||||||
} else {
|
} else {
|
||||||
RecursiveVisitor visitor = new RecursiveVisitor(mask, replace, radius, editSession) {
|
RecursiveVisitor visitor = new RecursiveVisitor(mask, replace, radius, editSession) {
|
||||||
@Override
|
@Override
|
||||||
public boolean isVisitable(Vector from, Vector to) {
|
public boolean isVisitable(BlockVector3 from, BlockVector3 to) {
|
||||||
int y = to.getBlockY();
|
int y = to.getBlockY();
|
||||||
return y >= y && y < maxY && super.isVisitable(from, to);
|
return y >= y && y < maxY && super.isVisitable(from, to);
|
||||||
}
|
}
|
||||||
|
@ -3,24 +3,26 @@ package com.boydti.fawe.object.brush;
|
|||||||
import com.boydti.fawe.object.random.SimplexNoise;
|
import com.boydti.fawe.object.random.SimplexNoise;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
|
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
public class RockBrush implements Brush {
|
public class RockBrush implements Brush {
|
||||||
private final double amplitude;
|
private final double amplitude;
|
||||||
private final double frequency;
|
private final double frequency;
|
||||||
private final Vector radius;
|
private final Vector3 radius;
|
||||||
|
|
||||||
public RockBrush(Vector radius, double frequency, double amplitude) {
|
public RockBrush(Vector3 radius, double frequency, double amplitude) {
|
||||||
this.frequency = frequency;
|
this.frequency = frequency;
|
||||||
this.amplitude = amplitude;
|
this.amplitude = amplitude;
|
||||||
this.radius = radius;
|
this.radius = radius;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
double seedX = ThreadLocalRandom.current().nextDouble();
|
double seedX = ThreadLocalRandom.current().nextDouble();
|
||||||
double seedY = ThreadLocalRandom.current().nextDouble();
|
double seedY = ThreadLocalRandom.current().nextDouble();
|
||||||
double seedZ = ThreadLocalRandom.current().nextDouble();
|
double seedZ = ThreadLocalRandom.current().nextDouble();
|
||||||
|
@ -8,7 +8,6 @@ import com.boydti.fawe.object.mask.RadiusMask;
|
|||||||
import com.boydti.fawe.object.mask.SurfaceMask;
|
import com.boydti.fawe.object.mask.SurfaceMask;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.function.mask.Mask;
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
import com.sk89q.worldedit.function.mask.Masks;
|
import com.sk89q.worldedit.function.mask.Masks;
|
||||||
@ -16,6 +15,8 @@ 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.visitor.BreadthFirstSearch;
|
import com.sk89q.worldedit.function.visitor.BreadthFirstSearch;
|
||||||
import com.sk89q.worldedit.function.visitor.RecursiveVisitor;
|
import com.sk89q.worldedit.function.visitor.RecursiveVisitor;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class ScatterBrush implements Brush {
|
public class ScatterBrush implements Brush {
|
||||||
@ -39,7 +40,7 @@ public class ScatterBrush implements Brush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
this.mask = editSession.getMask();
|
this.mask = editSession.getMask();
|
||||||
if (this.mask == null) {
|
if (this.mask == null) {
|
||||||
this.mask = Masks.alwaysTrue();
|
this.mask = Masks.alwaysTrue();
|
||||||
@ -63,7 +64,7 @@ public class ScatterBrush implements Brush {
|
|||||||
int maxFails = 1000;
|
int maxFails = 1000;
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
int index = PseudoRandom.random.nextInt(length);
|
int index = PseudoRandom.random.nextInt(length);
|
||||||
Vector pos = visited.get(index);
|
BlockVector3 pos = visited.get(index);
|
||||||
if (pos != null && canApply(editSession, pos)) {
|
if (pos != null && canApply(editSession, pos)) {
|
||||||
int x = pos.getBlockX();
|
int x = pos.getBlockX();
|
||||||
int y = pos.getBlockY();
|
int y = pos.getBlockY();
|
||||||
@ -82,18 +83,18 @@ public class ScatterBrush implements Brush {
|
|||||||
finish(editSession, placed, position, pattern, size);
|
finish(editSession, placed, position, pattern, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void finish(EditSession editSession, LocalBlockVectorSet placed, Vector pos, Pattern pattern, double size) {
|
public void finish(EditSession editSession, LocalBlockVectorSet placed, BlockVector3 pos, Pattern pattern, double size) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canApply(EditSession editSession, Vector pos) {
|
public boolean canApply(EditSession editSession, BlockVector3 pos) {
|
||||||
return mask.test(pos);
|
return mask.test(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector getDirection(Vector pt) {
|
public BlockVector3 getDirection(BlockVector3 pt) {
|
||||||
return surface.direction(pt);
|
return surface.direction(pt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void apply(EditSession editSession, LocalBlockVectorSet placed, Vector pt, Pattern p, double size) throws MaxChangedBlocksException {
|
public void apply(EditSession editSession, LocalBlockVectorSet placed, BlockVector3 pt, Pattern p, double size) throws MaxChangedBlocksException {
|
||||||
editSession.setBlock(pt, p);
|
editSession.setBlock(pt, p);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -8,11 +8,11 @@ import com.boydti.fawe.wrappers.PlayerWrapper;
|
|||||||
import com.boydti.fawe.wrappers.SilentPlayerWrapper;
|
import com.boydti.fawe.wrappers.SilentPlayerWrapper;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.entity.Player;
|
import com.sk89q.worldedit.entity.Player;
|
||||||
import com.sk89q.worldedit.event.platform.CommandEvent;
|
import com.sk89q.worldedit.event.platform.CommandEvent;
|
||||||
import com.sk89q.worldedit.extension.platform.CommandManager;
|
import com.sk89q.worldedit.extension.platform.CommandManager;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.selector.CuboidRegionSelector;
|
import com.sk89q.worldedit.regions.selector.CuboidRegionSelector;
|
||||||
import com.sk89q.worldedit.util.Location;
|
import com.sk89q.worldedit.util.Location;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -26,7 +26,7 @@ public class ScatterCommand extends ScatterBrush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply(EditSession editSession, LocalBlockVectorSet placed, Vector position, Pattern p, double size) throws MaxChangedBlocksException {
|
public void apply(EditSession editSession, LocalBlockVectorSet placed, BlockVector3 position, Pattern p, double size) throws MaxChangedBlocksException {
|
||||||
int radius = getDistance();
|
int radius = getDistance();
|
||||||
CuboidRegionSelector selector = new CuboidRegionSelector(editSession.getWorld(), position.subtract(radius, radius, radius), position.add(radius, radius, radius));
|
CuboidRegionSelector selector = new CuboidRegionSelector(editSession.getWorld(), position.subtract(radius, radius, radius), position.add(radius, radius, radius));
|
||||||
String replaced = command.replace("{x}", position.getBlockX() + "")
|
String replaced = command.replace("{x}", position.getBlockX() + "")
|
||||||
@ -38,7 +38,7 @@ public class ScatterCommand extends ScatterBrush {
|
|||||||
FawePlayer fp = editSession.getPlayer();
|
FawePlayer fp = editSession.getPlayer();
|
||||||
Player player = fp.getPlayer();
|
Player player = fp.getPlayer();
|
||||||
fp.setSelection(selector);
|
fp.setSelection(selector);
|
||||||
PlayerWrapper wePlayer = new SilentPlayerWrapper(new LocationMaskedPlayerWrapper(player, new Location(player.getExtent(), position)));
|
PlayerWrapper wePlayer = new SilentPlayerWrapper(new LocationMaskedPlayerWrapper(player, new Location(player.getExtent(), position.toVector3())));
|
||||||
List<String> cmds = StringMan.split(replaced, ';');
|
List<String> cmds = StringMan.split(replaced, ';');
|
||||||
for (String cmd : cmds) {
|
for (String cmd : cmds) {
|
||||||
CommandEvent event = new CommandEvent(wePlayer, cmd);
|
CommandEvent event = new CommandEvent(wePlayer, cmd);
|
||||||
|
@ -3,8 +3,8 @@ package com.boydti.fawe.object.brush;
|
|||||||
import com.boydti.fawe.object.collection.LocalBlockVectorSet;
|
import com.boydti.fawe.object.collection.LocalBlockVectorSet;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
public class ScatterOverlayBrush extends ScatterBrush {
|
public class ScatterOverlayBrush extends ScatterBrush {
|
||||||
public ScatterOverlayBrush(int count, int distance) {
|
public ScatterOverlayBrush(int count, int distance) {
|
||||||
@ -12,12 +12,12 @@ public class ScatterOverlayBrush extends ScatterBrush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply(EditSession editSession, LocalBlockVectorSet placed, Vector pt, Pattern p, double size) throws MaxChangedBlocksException {
|
public void apply(EditSession editSession, LocalBlockVectorSet placed, BlockVector3 pt, Pattern p, double size) throws MaxChangedBlocksException {
|
||||||
int x = pt.getBlockX();
|
int x = pt.getBlockX();
|
||||||
int y = pt.getBlockY();
|
int y = pt.getBlockY();
|
||||||
int z = pt.getBlockZ();
|
int z = pt.getBlockZ();
|
||||||
Vector dir = getDirection(pt);
|
BlockVector3 dir = getDirection(pt);
|
||||||
dir.setComponents(x + dir.getBlockX(), y + dir.getBlockY(), z + dir.getBlockZ());
|
// dir.setComponents(x + dir.getBlockX(), y + dir.getBlockY(), z + dir.getBlockZ());
|
||||||
editSession.setBlock(dir, p);
|
editSession.setBlock(x + dir.getBlockX(), y + dir.getBlockY(), z + dir.getBlockZ(), p);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,12 +5,12 @@ import com.boydti.fawe.object.collection.LocalBlockVectorSet;
|
|||||||
import com.boydti.fawe.object.mask.SurfaceMask;
|
import com.boydti.fawe.object.mask.SurfaceMask;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.MutableBlockVector;
|
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.function.mask.Mask;
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
import com.sk89q.worldedit.function.mask.Masks;
|
import com.sk89q.worldedit.function.mask.Masks;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
import com.sk89q.worldedit.function.visitor.BreadthFirstSearch;
|
import com.sk89q.worldedit.function.visitor.BreadthFirstSearch;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.MutableBlockVector;
|
||||||
|
|
||||||
public class ShatterBrush extends ScatterBrush {
|
public class ShatterBrush extends ScatterBrush {
|
||||||
private final MutableBlockVector mutable = new MutableBlockVector();
|
private final MutableBlockVector mutable = new MutableBlockVector();
|
||||||
@ -20,11 +20,11 @@ public class ShatterBrush extends ScatterBrush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply(final EditSession editSession, final LocalBlockVectorSet placed, final Vector position, Pattern p, double size) throws MaxChangedBlocksException {
|
public void apply(final EditSession editSession, final LocalBlockVectorSet placed, final BlockVector3 position, Pattern p, double size) throws MaxChangedBlocksException {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void finish(EditSession editSession, LocalBlockVectorSet placed, final Vector position, Pattern pattern, double size) {
|
public void finish(EditSession editSession, LocalBlockVectorSet placed, final BlockVector3 position, Pattern pattern, double size) {
|
||||||
int radius2 = (int) (size * size);
|
int radius2 = (int) (size * size);
|
||||||
// Keep track of where we've visited
|
// Keep track of where we've visited
|
||||||
LocalBlockVectorSet tmp = new LocalBlockVectorSet();
|
LocalBlockVectorSet tmp = new LocalBlockVectorSet();
|
||||||
@ -34,7 +34,7 @@ public class ShatterBrush extends ScatterBrush {
|
|||||||
LocalBlockVectorSet[] frontiersVisited = new LocalBlockVectorSet[placed.size()];
|
LocalBlockVectorSet[] frontiersVisited = new LocalBlockVectorSet[placed.size()];
|
||||||
// Initiate the frontier with the starting points
|
// Initiate the frontier with the starting points
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (Vector pos : placed) {
|
for (BlockVector3 pos : placed) {
|
||||||
LocalBlockVectorSet set = new LocalBlockVectorSet();
|
LocalBlockVectorSet set = new LocalBlockVectorSet();
|
||||||
set.add(pos);
|
set.add(pos);
|
||||||
frontiers[i] = set;
|
frontiers[i] = set;
|
||||||
@ -66,7 +66,7 @@ public class ShatterBrush extends ScatterBrush {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < BreadthFirstSearch.DIAGONAL_DIRECTIONS.length; i++) {
|
for (int i = 0; i < BreadthFirstSearch.DIAGONAL_DIRECTIONS.length; i++) {
|
||||||
Vector direction = BreadthFirstSearch.DIAGONAL_DIRECTIONS[i];
|
BlockVector3 direction = BreadthFirstSearch.DIAGONAL_DIRECTIONS[i];
|
||||||
int x2 = x + direction.getBlockX();
|
int x2 = x + direction.getBlockX();
|
||||||
int y2 = y + direction.getBlockY();
|
int y2 = y + direction.getBlockY();
|
||||||
int z2 = z + direction.getBlockZ();
|
int z2 = z + direction.getBlockZ();
|
||||||
|
@ -2,14 +2,14 @@ package com.boydti.fawe.object.brush;
|
|||||||
|
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
public class SpikeBrush implements Brush {
|
public class SpikeBrush implements Brush {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -6,7 +6,6 @@ import com.boydti.fawe.object.mask.SurfaceMask;
|
|||||||
import com.boydti.fawe.object.pattern.BiomePattern;
|
import com.boydti.fawe.object.pattern.BiomePattern;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.function.RegionFunction;
|
import com.sk89q.worldedit.function.RegionFunction;
|
||||||
import com.sk89q.worldedit.function.mask.Mask;
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
@ -14,6 +13,8 @@ import com.sk89q.worldedit.function.mask.SolidBlockMask;
|
|||||||
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.visitor.RecursiveVisitor;
|
import com.sk89q.worldedit.function.visitor.RecursiveVisitor;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class SplatterBrush extends ScatterBrush {
|
public class SplatterBrush extends ScatterBrush {
|
||||||
@ -27,7 +28,7 @@ public class SplatterBrush extends ScatterBrush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply(final EditSession editSession, final LocalBlockVectorSet placed, final Vector position, Pattern p, double size) throws MaxChangedBlocksException {
|
public void apply(final EditSession editSession, final LocalBlockVectorSet placed, final BlockVector3 position, Pattern p, double size) throws MaxChangedBlocksException {
|
||||||
final Pattern finalPattern;
|
final Pattern finalPattern;
|
||||||
if (solid) {
|
if (solid) {
|
||||||
Pattern tmp;
|
Pattern tmp;
|
||||||
@ -46,7 +47,7 @@ public class SplatterBrush extends ScatterBrush {
|
|||||||
|
|
||||||
RecursiveVisitor visitor = new RecursiveVisitor(new Mask() {
|
RecursiveVisitor visitor = new RecursiveVisitor(new Mask() {
|
||||||
@Override
|
@Override
|
||||||
public boolean test(Vector vector) {
|
public boolean test(BlockVector3 vector) {
|
||||||
double dist = vector.distanceSq(position);
|
double dist = vector.distanceSq(position);
|
||||||
if (dist < size2 && !placed.contains(vector) && (PseudoRandom.random.random(5) < 2) && surface.test(vector)) {
|
if (dist < size2 && !placed.contains(vector) && (PseudoRandom.random.random(5) < 2) && surface.test(vector)) {
|
||||||
placed.add(vector);
|
placed.add(vector);
|
||||||
@ -56,7 +57,7 @@ public class SplatterBrush extends ScatterBrush {
|
|||||||
}
|
}
|
||||||
}, new RegionFunction() {
|
}, new RegionFunction() {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Vector vector) throws WorldEditException {
|
public boolean apply(BlockVector3 vector) throws WorldEditException {
|
||||||
return editSession.setBlock(vector, finalPattern);
|
return editSession.setBlock(vector, finalPattern);
|
||||||
}
|
}
|
||||||
}, recursion, editSession);
|
}, recursion, editSession);
|
||||||
|
@ -8,7 +8,6 @@ import com.boydti.fawe.object.visitor.DFSRecursiveVisitor;
|
|||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.LocalSession;
|
import com.sk89q.worldedit.LocalSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.entity.Player;
|
import com.sk89q.worldedit.entity.Player;
|
||||||
@ -17,6 +16,9 @@ import com.sk89q.worldedit.function.mask.Mask;
|
|||||||
import com.sk89q.worldedit.function.mask.MaskIntersection;
|
import com.sk89q.worldedit.function.mask.MaskIntersection;
|
||||||
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.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.MutableVector;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.math.interpolation.Node;
|
import com.sk89q.worldedit.math.interpolation.Node;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@ -27,12 +29,12 @@ import java.util.List;
|
|||||||
public class SplineBrush implements Brush, ResettableTool {
|
public class SplineBrush implements Brush, ResettableTool {
|
||||||
|
|
||||||
public static int MAX_POINTS = 15;
|
public static int MAX_POINTS = 15;
|
||||||
private ArrayList<ArrayList<Vector>> positionSets;
|
private ArrayList<ArrayList<BlockVector3>> positionSets;
|
||||||
private int numSplines;
|
private int numSplines;
|
||||||
|
|
||||||
private final LocalSession session;
|
private final LocalSession session;
|
||||||
private final Player player;
|
private final Player player;
|
||||||
private Vector position;
|
private BlockVector3 position;
|
||||||
|
|
||||||
public SplineBrush(Player player, LocalSession session) {
|
public SplineBrush(Player player, LocalSession session) {
|
||||||
this.session = session;
|
this.session = session;
|
||||||
@ -50,7 +52,7 @@ public class SplineBrush implements Brush, ResettableTool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, final Vector position, Pattern pattern, double size) throws WorldEditException {
|
public void build(EditSession editSession, final BlockVector3 position, Pattern pattern, double size) throws WorldEditException {
|
||||||
Mask mask = editSession.getMask();
|
Mask mask = editSession.getMask();
|
||||||
if (mask == null) {
|
if (mask == null) {
|
||||||
mask = new IdMask(editSession);
|
mask = new IdMask(editSession);
|
||||||
@ -68,21 +70,21 @@ public class SplineBrush implements Brush, ResettableTool {
|
|||||||
if (positionSets.size() >= MAX_POINTS) {
|
if (positionSets.size() >= MAX_POINTS) {
|
||||||
throw new FaweException(BBC.WORLDEDIT_CANCEL_REASON_MAX_CHECKS);
|
throw new FaweException(BBC.WORLDEDIT_CANCEL_REASON_MAX_CHECKS);
|
||||||
}
|
}
|
||||||
final ArrayList<Vector> points = new ArrayList<>();
|
final ArrayList<BlockVector3> points = new ArrayList<>();
|
||||||
if (size > 0) {
|
if (size > 0) {
|
||||||
DFSRecursiveVisitor visitor = new DFSRecursiveVisitor(mask, new RegionFunction() {
|
DFSRecursiveVisitor visitor = new DFSRecursiveVisitor(mask, new RegionFunction() {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Vector p) {
|
public boolean apply(BlockVector3 p) {
|
||||||
points.add(new Vector(p));
|
points.add(p);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}, (int) size, 1);
|
}, (int) size, 1);
|
||||||
List<Vector> directions = visitor.getDirections();
|
List<BlockVector3> directions = visitor.getDirections();
|
||||||
for (int x = -1; x <= 1; x++) {
|
for (int x = -1; x <= 1; x++) {
|
||||||
for (int y = -1; y <= 1; y++) {
|
for (int y = -1; y <= 1; y++) {
|
||||||
for (int z = -1; z <= 1; z++) {
|
for (int z = -1; z <= 1; z++) {
|
||||||
if (x != 0 || y != 0 || z != 0) {
|
if (x != 0 || y != 0 || z != 0) {
|
||||||
Vector pos = new Vector(x, y, z);
|
BlockVector3 pos = new BlockVector3(x, y, z);
|
||||||
if (!directions.contains(pos)) {
|
if (!directions.contains(pos)) {
|
||||||
directions.add(pos);
|
directions.add(pos);
|
||||||
}
|
}
|
||||||
@ -109,8 +111,8 @@ public class SplineBrush implements Brush, ResettableTool {
|
|||||||
player.print(BBC.getPrefix() + BBC.BRUSH_SPLINE_SECONDARY_ERROR.s());
|
player.print(BBC.getPrefix() + BBC.BRUSH_SPLINE_SECONDARY_ERROR.s());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<Vector> centroids = new ArrayList<>();
|
List<Vector3> centroids = new ArrayList<>();
|
||||||
for (List<Vector> points : positionSets) {
|
for (List<BlockVector3> points : positionSets) {
|
||||||
centroids.add(getCentroid(points));
|
centroids.add(getCentroid(points));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,7 +123,7 @@ public class SplineBrush implements Brush, ResettableTool {
|
|||||||
|
|
||||||
final List<Node> nodes = new ArrayList<Node>(centroids.size());
|
final List<Node> nodes = new ArrayList<Node>(centroids.size());
|
||||||
|
|
||||||
for (final Vector nodevector : centroids) {
|
for (final Vector3 nodevector : centroids) {
|
||||||
final Node n = new Node(nodevector);
|
final Node n = new Node(nodevector);
|
||||||
n.setTension(tension);
|
n.setTension(tension);
|
||||||
n.setBias(bias);
|
n.setBias(bias);
|
||||||
@ -130,8 +132,8 @@ public class SplineBrush implements Brush, ResettableTool {
|
|||||||
}
|
}
|
||||||
int samples = numSplines;
|
int samples = numSplines;
|
||||||
for (int i = 0; i < numSplines; i++) {
|
for (int i = 0; i < numSplines; i++) {
|
||||||
List<Vector> currentSpline = new ArrayList<>();
|
List<BlockVector3> currentSpline = new ArrayList<>();
|
||||||
for (ArrayList<Vector> points : positionSets) {
|
for (ArrayList<BlockVector3> points : positionSets) {
|
||||||
int listSize = points.size();
|
int listSize = points.size();
|
||||||
int index = (int) (i * listSize / (double) (numSplines));
|
int index = (int) (i * listSize / (double) (numSplines));
|
||||||
currentSpline.add(points.get(index));
|
currentSpline.add(points.get(index));
|
||||||
@ -148,9 +150,9 @@ public class SplineBrush implements Brush, ResettableTool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Vector getCentroid(Collection<Vector> points) {
|
private Vector3 getCentroid(Collection<BlockVector3> points) {
|
||||||
Vector sum = new Vector();
|
MutableVector sum = new MutableVector();
|
||||||
for (Vector p : points) {
|
for (BlockVector3 p : points) {
|
||||||
sum.mutX(sum.getX() + p.getX());
|
sum.mutX(sum.getX() + p.getX());
|
||||||
sum.mutY(sum.getY() + p.getY());
|
sum.mutY(sum.getY() + p.getY());
|
||||||
sum.mutZ(sum.getZ() + p.getZ());
|
sum.mutZ(sum.getZ() + p.getZ());
|
||||||
@ -158,7 +160,7 @@ public class SplineBrush implements Brush, ResettableTool {
|
|||||||
return sum.multiply(1.0 / points.size());
|
return sum.multiply(1.0 / points.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
private Vector normal(Collection<Vector> points, Vector centroid) {
|
private BlockVector3 normal(Collection<BlockVector3> points, BlockVector3 centroid) {
|
||||||
int n = points.size();
|
int n = points.size();
|
||||||
switch (n) {
|
switch (n) {
|
||||||
case 1: {
|
case 1: {
|
||||||
@ -177,8 +179,8 @@ public class SplineBrush implements Brush, ResettableTool {
|
|||||||
double yz = 0.0;
|
double yz = 0.0;
|
||||||
double zz = 0.0;
|
double zz = 0.0;
|
||||||
|
|
||||||
Vector r = new Vector();
|
MutableVector r = new MutableVector();
|
||||||
for (Vector p : points) {
|
for (BlockVector3 p : points) {
|
||||||
r.mutX((p.getX() - centroid.getX()));
|
r.mutX((p.getX() - centroid.getX()));
|
||||||
r.mutY((p.getY() - centroid.getY()));
|
r.mutY((p.getY() - centroid.getY()));
|
||||||
r.mutZ((p.getZ() - centroid.getZ()));
|
r.mutZ((p.getZ() - centroid.getZ()));
|
||||||
@ -200,19 +202,19 @@ public class SplineBrush implements Brush, ResettableTool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Pick path with best conditioning:
|
// Pick path with best conditioning:
|
||||||
Vector dir;
|
BlockVector3 dir;
|
||||||
if (det_max == det_x) {
|
if (det_max == det_x) {
|
||||||
double a = (xz * yz - xy * zz) / det_x;
|
double a = (xz * yz - xy * zz) / det_x;
|
||||||
double b = (xy * yz - xz * yy) / det_x;
|
double b = (xy * yz - xz * yy) / det_x;
|
||||||
dir = new Vector(1.0, a, b);
|
dir = new BlockVector3(1.0, a, b);
|
||||||
} else if (det_max == det_y) {
|
} else if (det_max == det_y) {
|
||||||
double a = (yz * xz - xy * zz) / det_y;
|
double a = (yz * xz - xy * zz) / det_y;
|
||||||
double b = (xy * xz - yz * xx) / det_y;
|
double b = (xy * xz - yz * xx) / det_y;
|
||||||
dir = new Vector(a, 1.0, b);
|
dir = new BlockVector3(a, 1.0, b);
|
||||||
} else {
|
} else {
|
||||||
double a = (yz * xy - xz * yy) / det_z;
|
double a = (yz * xy - xz * yy) / det_z;
|
||||||
double b = (xz * xy - yz * xx) / det_z;
|
double b = (xz * xy - yz * xx) / det_z;
|
||||||
dir = new Vector(a, b, 1.0);
|
dir = new BlockVector3(a, b, 1.0);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
return dir.normalize();
|
return dir.normalize();
|
||||||
|
@ -3,10 +3,9 @@ package com.boydti.fawe.object.brush;
|
|||||||
import com.boydti.fawe.object.PseudoRandom;
|
import com.boydti.fawe.object.PseudoRandom;
|
||||||
import com.boydti.fawe.object.brush.heightmap.HeightMap;
|
import com.boydti.fawe.object.brush.heightmap.HeightMap;
|
||||||
import com.boydti.fawe.object.mask.AdjacentAnyMask;
|
import com.boydti.fawe.object.mask.AdjacentAnyMask;
|
||||||
|
import com.intellectualcrafters.plot.util.MathMan;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.MutableBlockVector;
|
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.entity.Player;
|
import com.sk89q.worldedit.entity.Player;
|
||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
import com.sk89q.worldedit.function.mask.Mask;
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
@ -15,6 +14,10 @@ import com.sk89q.worldedit.function.mask.SolidBlockMask;
|
|||||||
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.visitor.RecursiveVisitor;
|
import com.sk89q.worldedit.function.visitor.RecursiveVisitor;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.MutableBlockVector;
|
||||||
|
import com.sk89q.worldedit.math.MutableVector;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.math.transform.AffineTransform;
|
import com.sk89q.worldedit.math.transform.AffineTransform;
|
||||||
import com.sk89q.worldedit.util.Location;
|
import com.sk89q.worldedit.util.Location;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@ -29,7 +32,7 @@ public class StencilBrush extends HeightBrush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double sizeDouble) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double sizeDouble) throws MaxChangedBlocksException {
|
||||||
final int cx = position.getBlockX();
|
final int cx = position.getBlockX();
|
||||||
final int cy = position.getBlockY();
|
final int cy = position.getBlockY();
|
||||||
final int cz = position.getBlockZ();
|
final int cz = position.getBlockZ();
|
||||||
@ -51,7 +54,7 @@ public class StencilBrush extends HeightBrush {
|
|||||||
|
|
||||||
|
|
||||||
Player player = editSession.getPlayer().getPlayer();
|
Player player = editSession.getPlayer().getPlayer();
|
||||||
Vector pos = player.getLocation();
|
// BlockVector3 pos = player.getLocation().toVector();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -62,17 +65,17 @@ public class StencilBrush extends HeightBrush {
|
|||||||
|
|
||||||
|
|
||||||
RecursiveVisitor visitor = new RecursiveVisitor(new Mask() {
|
RecursiveVisitor visitor = new RecursiveVisitor(new Mask() {
|
||||||
private final MutableBlockVector mutable = new MutableBlockVector();
|
private final MutableVector mutable = new MutableVector();
|
||||||
@Override
|
@Override
|
||||||
public boolean test(Vector vector) {
|
public boolean test(BlockVector3 vector) {
|
||||||
if (solid.test(vector)) {
|
if (solid.test(vector)) {
|
||||||
int dx = vector.getBlockX() - cx;
|
int dx = vector.getBlockX() - cx;
|
||||||
int dy = vector.getBlockY() - cy;
|
int dy = vector.getBlockY() - cy;
|
||||||
int dz = vector.getBlockZ() - cz;
|
int dz = vector.getBlockZ() - cz;
|
||||||
|
|
||||||
Vector srcPos = transform.apply(mutable.setComponents(dx, dy, dz));
|
Vector3 srcPos = transform.apply(mutable.setComponents(dx, dy, dz));
|
||||||
dx = srcPos.getBlockX();
|
dx = MathMan.roundInt(srcPos.getX());
|
||||||
dz = srcPos.getBlockZ();
|
dz = MathMan.roundInt(srcPos.getZ());
|
||||||
|
|
||||||
int distance = dx * dx + dz * dz;
|
int distance = dx * dx + dz * dz;
|
||||||
if (distance > size2 || Math.abs(dx) > 256 || Math.abs(dz) > 256) return false;
|
if (distance > size2 || Math.abs(dx) > 256 || Math.abs(dz) > 256) return false;
|
||||||
|
@ -4,18 +4,19 @@ import com.boydti.fawe.object.mask.RadiusMask;
|
|||||||
import com.boydti.fawe.object.mask.SurfaceMask;
|
import com.boydti.fawe.object.mask.SurfaceMask;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.function.mask.SolidBlockMask;
|
import com.sk89q.worldedit.function.mask.SolidBlockMask;
|
||||||
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.visitor.BreadthFirstSearch;
|
import com.sk89q.worldedit.function.visitor.BreadthFirstSearch;
|
||||||
import com.sk89q.worldedit.function.visitor.RecursiveVisitor;
|
import com.sk89q.worldedit.function.visitor.RecursiveVisitor;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class SurfaceSphereBrush implements Brush {
|
public class SurfaceSphereBrush implements Brush {
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
SurfaceMask surface = new SurfaceMask(editSession);
|
SurfaceMask surface = new SurfaceMask(editSession);
|
||||||
final SolidBlockMask solid = new SolidBlockMask(editSession);
|
final SolidBlockMask solid = new SolidBlockMask(editSession);
|
||||||
final RadiusMask radius = new RadiusMask(0, (int) size);
|
final RadiusMask radius = new RadiusMask(0, (int) size);
|
||||||
|
@ -7,6 +7,9 @@ import com.boydti.fawe.util.MathMan;
|
|||||||
import com.sk89q.worldedit.*;
|
import com.sk89q.worldedit.*;
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.MutableBlockVector;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.math.interpolation.KochanekBartelsInterpolation;
|
import com.sk89q.worldedit.math.interpolation.KochanekBartelsInterpolation;
|
||||||
import com.sk89q.worldedit.math.interpolation.Node;
|
import com.sk89q.worldedit.math.interpolation.Node;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -22,17 +25,17 @@ public class SurfaceSpline implements Brush {
|
|||||||
this.quality = quality;
|
this.quality = quality;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArrayList<Vector> path = new ArrayList<>();
|
private ArrayList<Vector3> path = new ArrayList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector pos, Pattern pattern, double radius) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 pos, Pattern pattern, double radius) throws MaxChangedBlocksException {
|
||||||
int maxY = editSession.getMaxY();
|
int maxY = editSession.getMaxY();
|
||||||
boolean vis = editSession.getExtent() instanceof VisualExtent;
|
boolean vis = editSession.getExtent() instanceof VisualExtent;
|
||||||
if (path.isEmpty() || !pos.equals(path.get(path.size() - 1))) {
|
if (path.isEmpty() || !pos.equals(path.get(path.size() - 1))) {
|
||||||
int max = editSession.getNearestSurfaceTerrainBlock(pos.getBlockX(), pos.getBlockZ(), pos.getBlockY(), 0, editSession.getMaxY());
|
int max = editSession.getNearestSurfaceTerrainBlock(pos.getBlockX(), pos.getBlockZ(), pos.getBlockY(), 0, editSession.getMaxY());
|
||||||
if (max == -1) return;
|
if (max == -1) return;
|
||||||
pos.mutY(max);
|
// pos.mutY(max);
|
||||||
path.add(pos);
|
path.add(new Vector3(pos.getBlockX(), max, pos.getBlockZ()));
|
||||||
editSession.getPlayer().sendMessage(BBC.getPrefix() + BBC.BRUSH_SPLINE_PRIMARY_2.s());
|
editSession.getPlayer().sendMessage(BBC.getPrefix() + BBC.BRUSH_SPLINE_PRIMARY_2.s());
|
||||||
if (!vis) return;
|
if (!vis) return;
|
||||||
}
|
}
|
||||||
@ -40,7 +43,7 @@ public class SurfaceSpline implements Brush {
|
|||||||
final List<Node> nodes = new ArrayList<>(path.size());
|
final List<Node> nodes = new ArrayList<>(path.size());
|
||||||
final KochanekBartelsInterpolation interpol = new KochanekBartelsInterpolation();
|
final KochanekBartelsInterpolation interpol = new KochanekBartelsInterpolation();
|
||||||
|
|
||||||
for (final Vector nodevector : path) {
|
for (final Vector3 nodevector : path) {
|
||||||
final Node n = new Node(nodevector);
|
final Node n = new Node(nodevector);
|
||||||
n.setTension(tension);
|
n.setTension(tension);
|
||||||
n.setBias(bias);
|
n.setBias(bias);
|
||||||
@ -50,14 +53,14 @@ public class SurfaceSpline implements Brush {
|
|||||||
interpol.setNodes(nodes);
|
interpol.setNodes(nodes);
|
||||||
final double splinelength = interpol.arcLength(0, 1);
|
final double splinelength = interpol.arcLength(0, 1);
|
||||||
for (double loop = 0; loop <= 1; loop += 1D / splinelength / quality) {
|
for (double loop = 0; loop <= 1; loop += 1D / splinelength / quality) {
|
||||||
final Vector tipv = interpol.getPosition(loop);
|
final Vector3 tipv = interpol.getPosition(loop);
|
||||||
final int tipx = MathMan.roundInt(tipv.getX());
|
final int tipx = MathMan.roundInt(tipv.getX());
|
||||||
final int tipz = (int) tipv.getZ();
|
final int tipz = (int) tipv.getZ();
|
||||||
int tipy = MathMan.roundInt(tipv.getY());
|
int tipy = MathMan.roundInt(tipv.getY());
|
||||||
tipy = editSession.getNearestSurfaceTerrainBlock(tipx, tipz, tipy, 0, maxY);
|
tipy = editSession.getNearestSurfaceTerrainBlock(tipx, tipz, tipy, 0, maxY);
|
||||||
if (tipy == -1) continue;
|
if (tipy == -1) continue;
|
||||||
if (radius == 0) {
|
if (radius == 0) {
|
||||||
Vector set = MutableBlockVector.get(tipx, tipy, tipz);
|
BlockVector3 set = MutableBlockVector.get(tipx, tipy, tipz);
|
||||||
try {
|
try {
|
||||||
pattern.apply(editSession, set, set);
|
pattern.apply(editSession, set, set);
|
||||||
} catch (WorldEditException e) {
|
} catch (WorldEditException e) {
|
||||||
@ -71,7 +74,7 @@ public class SurfaceSpline implements Brush {
|
|||||||
double radius2 = (radius * radius);
|
double radius2 = (radius * radius);
|
||||||
LocalBlockVectorSet newSet = new LocalBlockVectorSet();
|
LocalBlockVectorSet newSet = new LocalBlockVectorSet();
|
||||||
final int ceilrad = (int) Math.ceil(radius);
|
final int ceilrad = (int) Math.ceil(radius);
|
||||||
for (final Vector v : vset) {
|
for (final BlockVector3 v : vset) {
|
||||||
final int tipx = v.getBlockX(), tipy = v.getBlockY(), tipz = v.getBlockZ();
|
final int tipx = v.getBlockX(), tipy = v.getBlockY(), tipz = v.getBlockZ();
|
||||||
for (int loopx = tipx - ceilrad; loopx <= (tipx + ceilrad); loopx++) {
|
for (int loopx = tipx - ceilrad; loopx <= (tipx + ceilrad); loopx++) {
|
||||||
for (int loopz = tipz - ceilrad; loopz <= (tipz + ceilrad); loopz++) {
|
for (int loopz = tipz - ceilrad; loopz <= (tipz + ceilrad); loopz++) {
|
||||||
|
@ -4,9 +4,9 @@ import com.boydti.fawe.object.PseudoRandom;
|
|||||||
import com.boydti.fawe.util.MainUtil;
|
import com.boydti.fawe.util.MainUtil;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.function.mask.Mask;
|
import com.sk89q.worldedit.function.mask.Mask;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.math.convolution.GaussianKernel;
|
import com.sk89q.worldedit.math.convolution.GaussianKernel;
|
||||||
import com.sk89q.worldedit.math.convolution.HeightMapFilter;
|
import com.sk89q.worldedit.math.convolution.HeightMapFilter;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
@ -19,19 +19,19 @@ public interface HeightMap {
|
|||||||
public void setSize(int size);
|
public void setSize(int size);
|
||||||
|
|
||||||
|
|
||||||
default void perform(EditSession session, Mask mask, Vector pos, int size, int rotationMode, double yscale, boolean smooth, boolean towards, boolean layers) throws MaxChangedBlocksException {
|
default void perform(EditSession session, Mask mask, BlockVector3 pos, int size, int rotationMode, double yscale, boolean smooth, boolean towards, boolean layers) throws MaxChangedBlocksException {
|
||||||
int[][] data = generateHeightData(session, mask, pos, size, rotationMode, yscale, smooth, towards, layers);
|
int[][] data = generateHeightData(session, mask, pos, size, rotationMode, yscale, smooth, towards, layers);
|
||||||
applyHeightMapData(data, session, mask, pos, size, rotationMode, yscale, smooth, towards, layers);
|
applyHeightMapData(data, session, mask, pos, size, rotationMode, yscale, smooth, towards, layers);
|
||||||
}
|
}
|
||||||
|
|
||||||
default void applyHeightMapData(int[][] data, EditSession session, Mask mask, Vector pos, int size, int rotationMode, double yscale, boolean smooth, boolean towards, boolean layers) throws MaxChangedBlocksException {
|
default void applyHeightMapData(int[][] data, EditSession session, Mask mask, BlockVector3 pos, int size, int rotationMode, double yscale, boolean smooth, boolean towards, boolean layers) throws MaxChangedBlocksException {
|
||||||
Vector top = session.getMaximumPoint();
|
BlockVector3 top = session.getMaximumPoint();
|
||||||
int maxY = top.getBlockY();
|
int maxY = top.getBlockY();
|
||||||
int diameter = 2 * size + 1;
|
int diameter = 2 * size + 1;
|
||||||
int iterations = 1;
|
int iterations = 1;
|
||||||
Location min = new Location(session.getWorld(), pos.subtract(size, maxY, size));
|
Location min = new Location(session.getWorld(), pos.subtract(size, maxY, size).toVector3());
|
||||||
Vector max = pos.add(size, maxY, size);
|
BlockVector3 max = pos.add(size, maxY, size);
|
||||||
Region region = new CuboidRegion(session.getWorld(), min, max);
|
Region region = new CuboidRegion(session.getWorld(), min.toVector().toBlockPoint(), max);
|
||||||
com.sk89q.worldedit.math.convolution.HeightMap heightMap = new com.sk89q.worldedit.math.convolution.HeightMap(session, region, data[0], layers);
|
com.sk89q.worldedit.math.convolution.HeightMap heightMap = new com.sk89q.worldedit.math.convolution.HeightMap(session, region, data[0], layers);
|
||||||
if (smooth) {
|
if (smooth) {
|
||||||
try {
|
try {
|
||||||
@ -52,8 +52,8 @@ public interface HeightMap {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
default int[][] generateHeightData(EditSession session, Mask mask, Vector pos, int size, final int rotationMode, double yscale, boolean smooth, boolean towards, final boolean layers) {
|
default int[][] generateHeightData(EditSession session, Mask mask, BlockVector3 pos, int size, final int rotationMode, double yscale, boolean smooth, boolean towards, final boolean layers) {
|
||||||
Vector top = session.getMaximumPoint();
|
BlockVector3 top = session.getMaximumPoint();
|
||||||
int maxY = top.getBlockY();
|
int maxY = top.getBlockY();
|
||||||
int diameter = 2 * size + 1;
|
int diameter = 2 * size + 1;
|
||||||
int centerX = pos.getBlockX();
|
int centerX = pos.getBlockX();
|
||||||
@ -67,14 +67,14 @@ public interface HeightMap {
|
|||||||
centerY <<= 3;
|
centerY <<= 3;
|
||||||
maxY <<= 3;
|
maxY <<= 3;
|
||||||
}
|
}
|
||||||
Vector mutablePos = new Vector(0, 0, 0);
|
// Vector mutablePos = new Vector(0, 0, 0);
|
||||||
if (towards) {
|
if (towards) {
|
||||||
double sizePowInv = 1d / Math.pow(size, yscale);
|
double sizePowInv = 1d / Math.pow(size, yscale);
|
||||||
int targetY = pos.getBlockY();
|
int targetY = pos.getBlockY();
|
||||||
int tmpY = targetY;
|
int tmpY = targetY;
|
||||||
for (int x = -size; x <= size; x++) {
|
for (int x = -size; x <= size; x++) {
|
||||||
int xx = centerX + x;
|
int xx = centerX + x;
|
||||||
mutablePos.mutX(xx);
|
// mutablePos.mutX(xx);
|
||||||
for (int z = -size; z <= size; z++) {
|
for (int z = -size; z <= size; z++) {
|
||||||
int index = (z + size) * diameter + (x + size);
|
int index = (z + size) * diameter + (x + size);
|
||||||
int zz = centerZ + z;
|
int zz = centerZ + z;
|
||||||
@ -118,7 +118,7 @@ public interface HeightMap {
|
|||||||
int height = pos.getBlockY();
|
int height = pos.getBlockY();
|
||||||
for (int x = -size; x <= size; x++) {
|
for (int x = -size; x <= size; x++) {
|
||||||
int xx = centerX + x;
|
int xx = centerX + x;
|
||||||
mutablePos.mutX(xx);
|
// mutablePos.mutX(xx);
|
||||||
for (int z = -size; z <= size; z++) {
|
for (int z = -size; z <= size; z++) {
|
||||||
int index = (z + size) * diameter + (x + size);
|
int index = (z + size) * diameter + (x + size);
|
||||||
int zz = centerZ + z;
|
int zz = centerZ + z;
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
package com.boydti.fawe.object.brush.heightmap;
|
package com.boydti.fawe.object.brush.heightmap;
|
||||||
|
|
||||||
import com.sk89q.worldedit.MutableBlockVector;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.Vector;
|
import com.sk89q.worldedit.math.MutableVector;
|
||||||
import com.sk89q.worldedit.math.transform.AffineTransform;
|
import com.sk89q.worldedit.math.transform.AffineTransform;
|
||||||
|
|
||||||
public class RotatableHeightMap extends AbstractDelegateHeightMap {
|
public class RotatableHeightMap extends AbstractDelegateHeightMap {
|
||||||
private AffineTransform transform;
|
private AffineTransform transform;
|
||||||
private MutableBlockVector mutable;
|
private MutableVector mutable;
|
||||||
|
|
||||||
public RotatableHeightMap(HeightMap parent) {
|
public RotatableHeightMap(HeightMap parent) {
|
||||||
super(parent);
|
super(parent);
|
||||||
mutable = new MutableBlockVector();
|
mutable = new MutableVector();
|
||||||
this.transform = new AffineTransform();
|
this.transform = new AffineTransform();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ public class RotatableHeightMap extends AbstractDelegateHeightMap {
|
|||||||
public double getHeight(int x, int z) {
|
public double getHeight(int x, int z) {
|
||||||
mutable.mutX(x);
|
mutable.mutX(x);
|
||||||
mutable.mutZ(z);
|
mutable.mutZ(z);
|
||||||
Vector pos = transform.apply(mutable.setComponents(x, 0, z));
|
BlockVector3 pos = transform.apply(mutable.setComponents(x, 0, z)).toBlockPoint();
|
||||||
return super.getHeight(pos.getBlockX(), pos.getBlockZ());
|
return super.getHeight(pos.getBlockX(), pos.getBlockZ());
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,10 +3,11 @@ package com.boydti.fawe.object.brush.heightmap;
|
|||||||
import com.boydti.fawe.object.IntegerPair;
|
import com.boydti.fawe.object.IntegerPair;
|
||||||
import com.boydti.fawe.util.MainUtil;
|
import com.boydti.fawe.util.MainUtil;
|
||||||
import com.boydti.fawe.util.MathMan;
|
import com.boydti.fawe.util.MathMan;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.MutableBlockVector;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
@ -60,7 +61,7 @@ public class ScalableHeightMap implements com.boydti.fawe.object.brush.heightmap
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static ScalableHeightMap fromClipboard(Clipboard clipboard) {
|
public static ScalableHeightMap fromClipboard(Clipboard clipboard) {
|
||||||
Vector dim = clipboard.getDimensions();
|
BlockVector3 dim = clipboard.getDimensions();
|
||||||
byte[][] heightArray = new byte[dim.getBlockX()][dim.getBlockZ()];
|
byte[][] heightArray = new byte[dim.getBlockX()][dim.getBlockZ()];
|
||||||
int minX = clipboard.getMinimumPoint().getBlockX();
|
int minX = clipboard.getMinimumPoint().getBlockX();
|
||||||
int minZ = clipboard.getMinimumPoint().getBlockZ();
|
int minZ = clipboard.getMinimumPoint().getBlockZ();
|
||||||
@ -68,7 +69,7 @@ public class ScalableHeightMap implements com.boydti.fawe.object.brush.heightmap
|
|||||||
int maxY = clipboard.getMaximumPoint().getBlockY();
|
int maxY = clipboard.getMaximumPoint().getBlockY();
|
||||||
int clipHeight = maxY - minY + 1;
|
int clipHeight = maxY - minY + 1;
|
||||||
HashSet<IntegerPair> visited = new HashSet<>();
|
HashSet<IntegerPair> visited = new HashSet<>();
|
||||||
for (Vector pos : clipboard.getRegion()) {
|
for (BlockVector3 pos : clipboard.getRegion()) {
|
||||||
IntegerPair pair = new IntegerPair(pos.getBlockX(), pos.getBlockZ());
|
IntegerPair pair = new IntegerPair(pos.getBlockX(), pos.getBlockZ());
|
||||||
if (visited.contains(pair)) {
|
if (visited.contains(pair)) {
|
||||||
continue;
|
continue;
|
||||||
@ -77,9 +78,10 @@ public class ScalableHeightMap implements com.boydti.fawe.object.brush.heightmap
|
|||||||
int xx = pos.getBlockX();
|
int xx = pos.getBlockX();
|
||||||
int zz = pos.getBlockZ();
|
int zz = pos.getBlockZ();
|
||||||
int highestY = minY;
|
int highestY = minY;
|
||||||
|
MutableBlockVector bv = new MutableBlockVector(pos);
|
||||||
for (int y = minY; y <= maxY; y++) {
|
for (int y = minY; y <= maxY; y++) {
|
||||||
pos.mutY(y);
|
bv.mutY(y);
|
||||||
BlockStateHolder block = clipboard.getBlock(pos);
|
BlockStateHolder block = clipboard.getBlock(bv);
|
||||||
if (!block.getBlockType().getMaterial().isAir()) {
|
if (!block.getBlockType().getMaterial().isAir()) {
|
||||||
highestY = y + 1;
|
highestY = y + 1;
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,11 @@ package com.boydti.fawe.object.brush.sweep;
|
|||||||
import com.boydti.fawe.object.collection.LocalBlockVectorSet;
|
import com.boydti.fawe.object.collection.LocalBlockVectorSet;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
import com.sk89q.worldedit.function.operation.ForwardExtentCopy;
|
import com.sk89q.worldedit.function.operation.ForwardExtentCopy;
|
||||||
import com.sk89q.worldedit.function.operation.Operation;
|
import com.sk89q.worldedit.function.operation.Operation;
|
||||||
import com.sk89q.worldedit.function.operation.Operations;
|
import com.sk89q.worldedit.function.operation.Operations;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.math.interpolation.Interpolation;
|
import com.sk89q.worldedit.math.interpolation.Interpolation;
|
||||||
import com.sk89q.worldedit.math.transform.AffineTransform;
|
import com.sk89q.worldedit.math.transform.AffineTransform;
|
||||||
import com.sk89q.worldedit.math.transform.RoundedTransform;
|
import com.sk89q.worldedit.math.transform.RoundedTransform;
|
||||||
@ -24,11 +24,11 @@ public class ClipboardSpline extends Spline {
|
|||||||
|
|
||||||
private final Transform transform;
|
private final Transform transform;
|
||||||
private ClipboardHolder clipboardHolder;
|
private ClipboardHolder clipboardHolder;
|
||||||
private Vector originalOrigin;
|
private BlockVector3 originalOrigin;
|
||||||
private Transform originalTransform;
|
private Transform originalTransform;
|
||||||
|
|
||||||
private Vector center;
|
private BlockVector3 center;
|
||||||
private Vector centerOffset;
|
private BlockVector3 centerOffset;
|
||||||
private LocalBlockVectorSet buffer;
|
private LocalBlockVectorSet buffer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -70,8 +70,9 @@ public class ClipboardSpline extends Spline {
|
|||||||
this.originalOrigin = clipboard.getOrigin();
|
this.originalOrigin = clipboard.getOrigin();
|
||||||
|
|
||||||
Region region = clipboard.getRegion();
|
Region region = clipboard.getRegion();
|
||||||
Vector origin = clipboard.getOrigin();
|
BlockVector3 origin = clipboard.getOrigin();
|
||||||
center = region.getCenter().setY(origin.getY() - 1);
|
// center = region.getCenter().setY(origin.getY() - 1);
|
||||||
|
center = region.getCenter().withY(origin.getY() - 1).toBlockPoint();
|
||||||
this.centerOffset = center.subtract(center.round());
|
this.centerOffset = center.subtract(center.round());
|
||||||
this.center = center.subtract(centerOffset);
|
this.center = center.subtract(centerOffset);
|
||||||
this.transform = transform;
|
this.transform = transform;
|
||||||
@ -79,7 +80,7 @@ public class ClipboardSpline extends Spline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int pasteBlocks(Vector target, Vector offset, double angle) throws MaxChangedBlocksException {
|
protected int pasteBlocks(BlockVector3 target, BlockVector3 offset, double angle) throws MaxChangedBlocksException {
|
||||||
RoundedTransform transform = new RoundedTransform(new AffineTransform()
|
RoundedTransform transform = new RoundedTransform(new AffineTransform()
|
||||||
.translate(offset)
|
.translate(offset)
|
||||||
.rotateY(angle));
|
.rotateY(angle));
|
||||||
@ -95,7 +96,7 @@ public class ClipboardSpline extends Spline {
|
|||||||
clipboard.setOrigin(center.subtract(centerOffset).round());
|
clipboard.setOrigin(center.subtract(centerOffset).round());
|
||||||
clipboardHolder.setTransform(transform);
|
clipboardHolder.setTransform(transform);
|
||||||
|
|
||||||
Vector functionOffset = target.subtract(clipboard.getOrigin());
|
BlockVector3 functionOffset = target.subtract(clipboard.getOrigin());
|
||||||
final int offX = functionOffset.getBlockX();
|
final int offX = functionOffset.getBlockX();
|
||||||
final int offY = functionOffset.getBlockY();
|
final int offY = functionOffset.getBlockY();
|
||||||
final int offZ = functionOffset.getBlockZ();
|
final int offZ = functionOffset.getBlockZ();
|
||||||
|
@ -3,8 +3,10 @@ package com.boydti.fawe.object.brush.sweep;
|
|||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
import com.sk89q.worldedit.Vector2D;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector2;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.math.interpolation.Interpolation;
|
import com.sk89q.worldedit.math.interpolation.Interpolation;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -19,7 +21,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public abstract class Spline {
|
public abstract class Spline {
|
||||||
|
|
||||||
private Vector2D direction = new Vector2D(1, 0);
|
private BlockVector2 direction = new BlockVector2(1, 0);
|
||||||
private final int nodeCount;
|
private final int nodeCount;
|
||||||
|
|
||||||
protected EditSession editSession;
|
protected EditSession editSession;
|
||||||
@ -77,7 +79,7 @@ public abstract class Spline {
|
|||||||
* The default direction is a (1;0) vector (pointing in the positive x-direction).
|
* The default direction is a (1;0) vector (pointing in the positive x-direction).
|
||||||
* @param direction A normalized vector representing the horizontal forward direction of the clipboard content
|
* @param direction A normalized vector representing the horizontal forward direction of the clipboard content
|
||||||
*/
|
*/
|
||||||
public void setDirection(Vector2D direction) {
|
public void setDirection(BlockVector2 direction) {
|
||||||
this.direction = direction;
|
this.direction = direction;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,7 +93,7 @@ public abstract class Spline {
|
|||||||
* The default direction is a (1;0) vector (pointing in the positive x-direction).
|
* The default direction is a (1;0) vector (pointing in the positive x-direction).
|
||||||
* @return A vector representing the horizontal forward direction of the clipboard content
|
* @return A vector representing the horizontal forward direction of the clipboard content
|
||||||
*/
|
*/
|
||||||
public Vector2D getDirection() {
|
public BlockVector2 getDirection() {
|
||||||
return direction;
|
return direction;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,14 +127,14 @@ public abstract class Spline {
|
|||||||
Preconditions.checkArgument(position <= 1);
|
Preconditions.checkArgument(position <= 1);
|
||||||
|
|
||||||
// Calculate position from spline
|
// Calculate position from spline
|
||||||
Vector target = interpolation.getPosition(position);
|
BlockVector3 target = interpolation.getPosition(position).toBlockPoint();
|
||||||
Vector offset = target.subtract(target.round());
|
BlockVector3 offset = target.subtract(target.round());
|
||||||
target = target.subtract(offset);
|
target = target.subtract(offset);
|
||||||
|
|
||||||
// Calculate rotation from spline
|
// Calculate rotation from spline
|
||||||
|
|
||||||
Vector deriv = interpolation.get1stDerivative(position);
|
Vector3 deriv = interpolation.get1stDerivative(position);
|
||||||
Vector2D deriv2D = new Vector2D(deriv.getX(), deriv.getZ()).normalize();
|
Vector2 deriv2D = new Vector2(deriv.getX(), deriv.getZ()).normalize();
|
||||||
double angle = Math.toDegrees(
|
double angle = Math.toDegrees(
|
||||||
Math.atan2(direction.getZ(), direction.getX()) - Math.atan2(deriv2D.getZ(), deriv2D.getX())
|
Math.atan2(direction.getZ(), direction.getX()) - Math.atan2(deriv2D.getZ(), deriv2D.getX())
|
||||||
);
|
);
|
||||||
@ -140,7 +142,7 @@ public abstract class Spline {
|
|||||||
return pasteBlocks(target, offset, angle);
|
return pasteBlocks(target, offset, angle);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract int pasteBlocks(Vector target, Vector offset, double angle) throws MaxChangedBlocksException;
|
protected abstract int pasteBlocks(BlockVector3 target, BlockVector3 offset, double angle) throws MaxChangedBlocksException;
|
||||||
|
|
||||||
private void initSections() {
|
private void initSections() {
|
||||||
int sectionCount = nodeCount - 1;
|
int sectionCount = nodeCount - 1;
|
||||||
|
@ -9,10 +9,12 @@ import com.sk89q.worldedit.EditSession;
|
|||||||
import com.sk89q.worldedit.EmptyClipboardException;
|
import com.sk89q.worldedit.EmptyClipboardException;
|
||||||
import com.sk89q.worldedit.LocalSession;
|
import com.sk89q.worldedit.LocalSession;
|
||||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.command.tool.brush.Brush;
|
import com.sk89q.worldedit.command.tool.brush.Brush;
|
||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
import com.sk89q.worldedit.function.pattern.Pattern;
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.MutableVector;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.math.interpolation.Interpolation;
|
import com.sk89q.worldedit.math.interpolation.Interpolation;
|
||||||
import com.sk89q.worldedit.math.interpolation.KochanekBartelsInterpolation;
|
import com.sk89q.worldedit.math.interpolation.KochanekBartelsInterpolation;
|
||||||
import com.sk89q.worldedit.math.interpolation.Node;
|
import com.sk89q.worldedit.math.interpolation.Node;
|
||||||
@ -23,8 +25,8 @@ import java.util.List;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class SweepBrush implements Brush, ResettableTool {
|
public class SweepBrush implements Brush, ResettableTool {
|
||||||
private List<Vector> positions;
|
private List<BlockVector3> positions;
|
||||||
private Vector position;
|
private BlockVector3 position;
|
||||||
private int copies;
|
private int copies;
|
||||||
|
|
||||||
private static final double tension = 0D;
|
private static final double tension = 0D;
|
||||||
@ -37,7 +39,7 @@ public class SweepBrush implements Brush, ResettableTool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(EditSession editSession, Vector position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
public void build(EditSession editSession, BlockVector3 position, Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||||
boolean visualization = editSession.getExtent() instanceof VisualExtent;
|
boolean visualization = editSession.getExtent() instanceof VisualExtent;
|
||||||
if (visualization && positions.isEmpty()) {
|
if (visualization && positions.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
@ -59,7 +61,7 @@ public class SweepBrush implements Brush, ResettableTool {
|
|||||||
|
|
||||||
Interpolation interpol = new KochanekBartelsInterpolation();
|
Interpolation interpol = new KochanekBartelsInterpolation();
|
||||||
List<Node> nodes = positions.stream().map(v -> {
|
List<Node> nodes = positions.stream().map(v -> {
|
||||||
Node n = new Node(v);
|
Node n = new Node(v.toVector3());
|
||||||
n.setTension(tension);
|
n.setTension(tension);
|
||||||
n.setBias(bias);
|
n.setBias(bias);
|
||||||
n.setContinuity(continuity);
|
n.setContinuity(continuity);
|
||||||
@ -74,7 +76,7 @@ public class SweepBrush implements Brush, ResettableTool {
|
|||||||
}
|
}
|
||||||
Clipboard clipboard = holder.getClipboard();
|
Clipboard clipboard = holder.getClipboard();
|
||||||
|
|
||||||
Vector dimensions = clipboard.getDimensions();
|
BlockVector3 dimensions = clipboard.getDimensions();
|
||||||
AffineTransform transform = new AffineTransform();
|
AffineTransform transform = new AffineTransform();
|
||||||
if (dimensions.getBlockX() > dimensions.getBlockZ()) {
|
if (dimensions.getBlockX() > dimensions.getBlockZ()) {
|
||||||
transform = transform.rotateY(90);
|
transform = transform.rotateY(90);
|
||||||
@ -93,10 +95,10 @@ public class SweepBrush implements Brush, ResettableTool {
|
|||||||
double blockDistance = 1d / splineLength;
|
double blockDistance = 1d / splineLength;
|
||||||
double step = blockDistance / quality;
|
double step = blockDistance / quality;
|
||||||
double accumulation = 0;
|
double accumulation = 0;
|
||||||
Vector last = null;
|
MutableVector last = new MutableVector(0, 0, 0);
|
||||||
for (double pos = 0D; pos <= 1D; pos += step) {
|
for (double pos = 0D; pos <= 1D; pos += step) {
|
||||||
Vector gradient = interpol.get1stDerivative(pos);
|
Vector3 gradient = interpol.get1stDerivative(pos);
|
||||||
if (last == null) last = new Vector(interpol.get1stDerivative(pos));
|
if (last == null) last = new MutableVector(interpol.get1stDerivative(pos));
|
||||||
double dist = MathMan.sqrtApprox(last.distanceSq(gradient));
|
double dist = MathMan.sqrtApprox(last.distanceSq(gradient));
|
||||||
last.mutX(gradient.getX());
|
last.mutX(gradient.getX());
|
||||||
last.mutY(gradient.getY());
|
last.mutY(gradient.getY());
|
||||||
|
@ -13,6 +13,9 @@ import com.sk89q.worldedit.blocks.BaseBlock;
|
|||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.blocks.BaseItemStack;
|
import com.sk89q.worldedit.blocks.BaseItemStack;
|
||||||
import com.sk89q.worldedit.function.operation.Operation;
|
import com.sk89q.worldedit.function.operation.Operation;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.util.TreeGenerator;
|
import com.sk89q.worldedit.util.TreeGenerator;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
@ -59,7 +62,7 @@ public abstract class ImmutableVirtualWorld implements VirtualWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseBiome getBiome(Vector2D position) {
|
public BaseBiome getBiome(BlockVector2 position) {
|
||||||
return FaweCache.getBiome(0);
|
return FaweCache.getBiome(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,27 +188,27 @@ public abstract class ImmutableVirtualWorld implements VirtualWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBlock(Vector position, BlockStateHolder block, boolean notifyAndLight) throws WorldEditException {
|
public boolean setBlock(BlockVector3 position, BlockStateHolder block, boolean notifyAndLight) throws WorldEditException {
|
||||||
return setBlock(position, block);
|
return setBlock(position, block);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getBlockLightLevel(Vector position) {
|
public int getBlockLightLevel(BlockVector3 position) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean clearContainerBlockContents(Vector position) {
|
public boolean clearContainerBlockContents(BlockVector3 position) {
|
||||||
return unsupported();
|
return unsupported();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dropItem(Vector position, BaseItemStack item) {
|
public void dropItem(Vector3 position, BaseItemStack item) {
|
||||||
unsupported();
|
unsupported();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean generateTree(TreeGenerator.TreeType type, EditSession editSession, Vector position) throws MaxChangedBlocksException {
|
public boolean generateTree(TreeGenerator.TreeType type, EditSession editSession, BlockVector3 position) throws MaxChangedBlocksException {
|
||||||
return unsupported();
|
return unsupported();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,12 +267,12 @@ public abstract class ImmutableVirtualWorld implements VirtualWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBlock(Vector pt, BlockStateHolder block) throws WorldEditException {
|
public boolean setBlock(BlockVector3 pt, BlockStateHolder block) throws WorldEditException {
|
||||||
return unsupported();
|
return unsupported();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void simulateBlockMine(Vector position) {
|
public void simulateBlockMine(BlockVector3 position) {
|
||||||
unsupported();
|
unsupported();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,11 +3,12 @@ package com.boydti.fawe.object.brush.visualization;
|
|||||||
import com.boydti.fawe.object.FaweChunk;
|
import com.boydti.fawe.object.FaweChunk;
|
||||||
import com.boydti.fawe.object.FawePlayer;
|
import com.boydti.fawe.object.FawePlayer;
|
||||||
import com.boydti.fawe.object.FaweQueue;
|
import com.boydti.fawe.object.FaweQueue;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.entity.Player;
|
import com.sk89q.worldedit.entity.Player;
|
||||||
import com.sk89q.worldedit.event.platform.BlockInteractEvent;
|
import com.sk89q.worldedit.event.platform.BlockInteractEvent;
|
||||||
import com.sk89q.worldedit.event.platform.PlayerInputEvent;
|
import com.sk89q.worldedit.event.platform.PlayerInputEvent;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.world.SimpleWorld;
|
import com.sk89q.worldedit.world.SimpleWorld;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
@ -16,12 +17,12 @@ import java.io.Closeable;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
public interface VirtualWorld extends SimpleWorld, FaweQueue, Closeable {
|
public interface VirtualWorld extends SimpleWorld, FaweQueue, Closeable {
|
||||||
Vector getOrigin();
|
Vector3 getOrigin();
|
||||||
|
|
||||||
FaweChunk getSnapshot(int chunkX, int chunkZ);
|
FaweChunk getSnapshot(int chunkX, int chunkZ);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default BlockState getFullBlock(Vector position) {
|
default BlockState getFullBlock(BlockVector3 position) {
|
||||||
return getLazyBlock(position);
|
return getLazyBlock(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,15 +30,15 @@ public interface VirtualWorld extends SimpleWorld, FaweQueue, Closeable {
|
|||||||
int getMaxY();
|
int getMaxY();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean setBlock(Vector pt, BlockStateHolder block) throws WorldEditException;
|
boolean setBlock(BlockVector3 pt, BlockStateHolder block) throws WorldEditException;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default Vector getMaximumPoint() {
|
default BlockVector3 getMaximumPoint() {
|
||||||
return FaweQueue.super.getMaximumPoint();
|
return FaweQueue.super.getMaximumPoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default Vector getMinimumPoint() {
|
default BlockVector3 getMinimumPoint() {
|
||||||
return FaweQueue.super.getMinimumPoint();
|
return FaweQueue.super.getMinimumPoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,7 +53,7 @@ public interface VirtualWorld extends SimpleWorld, FaweQueue, Closeable {
|
|||||||
|
|
||||||
void close(boolean update) throws IOException;
|
void close(boolean update) throws IOException;
|
||||||
|
|
||||||
default void handleBlockInteract(Player player, Vector pos, BlockInteractEvent event) {}
|
default void handleBlockInteract(Player player, BlockVector3 pos, BlockInteractEvent event) {}
|
||||||
|
|
||||||
default void handlePlayerInput(Player player, PlayerInputEvent event) {}
|
default void handlePlayerInput(Player player, PlayerInputEvent event) {}
|
||||||
}
|
}
|
||||||
|
@ -7,13 +7,13 @@ import com.boydti.fawe.object.FawePlayer;
|
|||||||
import com.boydti.fawe.object.FaweQueue;
|
import com.boydti.fawe.object.FaweQueue;
|
||||||
import com.boydti.fawe.object.visitor.FaweChunkVisitor;
|
import com.boydti.fawe.object.visitor.FaweChunkVisitor;
|
||||||
import com.boydti.fawe.util.MathMan;
|
import com.boydti.fawe.util.MathMan;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.Vector2D;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.extent.AbstractDelegateExtent;
|
import com.sk89q.worldedit.extent.AbstractDelegateExtent;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
|
import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
|
||||||
@ -31,7 +31,7 @@ public class VisualExtent extends AbstractDelegateExtent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBlock(Vector location, BlockStateHolder block) throws WorldEditException {
|
public boolean setBlock(BlockVector3 location, BlockStateHolder block) throws WorldEditException {
|
||||||
return setBlock(location.getBlockX(), location.getBlockY(), location.getBlockZ(), block);
|
return setBlock(location.getBlockX(), location.getBlockY(), location.getBlockZ(), block);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ public class VisualExtent extends AbstractDelegateExtent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBiome(Vector2D position, BaseBiome biome) {
|
public boolean setBiome(BlockVector2 position, BaseBiome biome) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package com.boydti.fawe.object.change;
|
package com.boydti.fawe.object.change;
|
||||||
|
|
||||||
import com.sk89q.worldedit.MutableBlockVector2D;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.history.UndoContext;
|
import com.sk89q.worldedit.history.UndoContext;
|
||||||
import com.sk89q.worldedit.history.change.Change;
|
import com.sk89q.worldedit.history.change.Change;
|
||||||
|
import com.sk89q.worldedit.math.MutableBlockVector2D;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
|
|
||||||
public class MutableBiomeChange implements Change {
|
public class MutableBiomeChange implements Change {
|
||||||
|
@ -4,7 +4,6 @@ import com.boydti.fawe.object.FawePlayer;
|
|||||||
import com.boydti.fawe.object.FaweQueue;
|
import com.boydti.fawe.object.FaweQueue;
|
||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.extent.inventory.BlockBag;
|
import com.sk89q.worldedit.extent.inventory.BlockBag;
|
||||||
@ -12,6 +11,7 @@ import com.sk89q.worldedit.history.change.BlockChange;
|
|||||||
import com.sk89q.worldedit.history.change.Change;
|
import com.sk89q.worldedit.history.change.Change;
|
||||||
import com.sk89q.worldedit.history.change.EntityCreate;
|
import com.sk89q.worldedit.history.change.EntityCreate;
|
||||||
import com.sk89q.worldedit.history.change.EntityRemove;
|
import com.sk89q.worldedit.history.change.EntityRemove;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
@ -154,7 +154,7 @@ public class AbstractDelegateChangeSet extends FaweChangeSet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void add(Vector loc, BlockStateHolder from, BlockStateHolder to) {
|
public void add(BlockVector3 loc, BlockStateHolder from, BlockStateHolder to) {
|
||||||
parent.add(loc, from, to);
|
parent.add(loc, from, to);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,11 +5,11 @@ import com.boydti.fawe.object.exception.FaweException;
|
|||||||
import com.boydti.fawe.util.ReflectionUtils;
|
import com.boydti.fawe.util.ReflectionUtils;
|
||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.jnbt.Tag;
|
import com.sk89q.jnbt.Tag;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.extent.inventory.BlockBag;
|
import com.sk89q.worldedit.extent.inventory.BlockBag;
|
||||||
import com.sk89q.worldedit.extent.inventory.BlockBagException;
|
import com.sk89q.worldedit.extent.inventory.BlockBagException;
|
||||||
import com.sk89q.worldedit.extent.inventory.UnplaceableBlockException;
|
import com.sk89q.worldedit.extent.inventory.UnplaceableBlockException;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
import com.sk89q.worldedit.world.block.BlockType;
|
import com.sk89q.worldedit.world.block.BlockType;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||||
@ -71,7 +71,7 @@ public class BlockBagChangeSet extends AbstractDelegateChangeSet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void add(Vector loc, BlockStateHolder from, BlockStateHolder to) {
|
public void add(BlockVector3 loc, BlockStateHolder from, BlockStateHolder to) {
|
||||||
int x = loc.getBlockX();
|
int x = loc.getBlockX();
|
||||||
int y = loc.getBlockY();
|
int y = loc.getBlockY();
|
||||||
int z = loc.getBlockZ();
|
int z = loc.getBlockZ();
|
||||||
|
@ -13,9 +13,7 @@ import com.boydti.fawe.util.EditSessionBuilder;
|
|||||||
import com.boydti.fawe.util.MainUtil;
|
import com.boydti.fawe.util.MainUtil;
|
||||||
import com.boydti.fawe.util.TaskManager;
|
import com.boydti.fawe.util.TaskManager;
|
||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.worldedit.BlockVector;
|
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.extent.inventory.BlockBag;
|
import com.sk89q.worldedit.extent.inventory.BlockBag;
|
||||||
@ -24,6 +22,7 @@ import com.sk89q.worldedit.history.change.Change;
|
|||||||
import com.sk89q.worldedit.history.change.EntityCreate;
|
import com.sk89q.worldedit.history.change.EntityCreate;
|
||||||
import com.sk89q.worldedit.history.change.EntityRemove;
|
import com.sk89q.worldedit.history.change.EntityRemove;
|
||||||
import com.sk89q.worldedit.history.changeset.ChangeSet;
|
import com.sk89q.worldedit.history.changeset.ChangeSet;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
@ -197,7 +196,7 @@ public abstract class FaweChangeSet implements ChangeSet {
|
|||||||
|
|
||||||
public void add(BlockChange change) {
|
public void add(BlockChange change) {
|
||||||
try {
|
try {
|
||||||
BlockVector loc = change.getPosition();
|
BlockVector3 loc = change.getPosition();
|
||||||
BlockStateHolder from = change.getPrevious();
|
BlockStateHolder from = change.getPrevious();
|
||||||
BlockStateHolder to = change.getCurrent();
|
BlockStateHolder to = change.getCurrent();
|
||||||
add(loc, from, to);
|
add(loc, from, to);
|
||||||
@ -206,7 +205,7 @@ public abstract class FaweChangeSet implements ChangeSet {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void add(Vector loc, BlockStateHolder from, BlockStateHolder to) {
|
public void add(BlockVector3 loc, BlockStateHolder from, BlockStateHolder to) {
|
||||||
int x = loc.getBlockX();
|
int x = loc.getBlockX();
|
||||||
int y = loc.getBlockY();
|
int y = loc.getBlockY();
|
||||||
int z = loc.getBlockZ();
|
int z = loc.getBlockZ();
|
||||||
|
@ -2,12 +2,12 @@ package com.boydti.fawe.object.clipboard;
|
|||||||
|
|
||||||
import com.boydti.fawe.jnbt.NBTStreamer;
|
import com.boydti.fawe.jnbt.NBTStreamer;
|
||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
import com.sk89q.worldedit.entity.Entity;
|
import com.sk89q.worldedit.entity.Entity;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
@ -87,12 +87,12 @@ public class AbstractDelegateFaweClipboard extends FaweClipboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setOrigin(Vector offset) {
|
public void setOrigin(BlockVector3 offset) {
|
||||||
parent.setOrigin(offset);
|
parent.setOrigin(offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setDimensions(Vector dimensions) {
|
public void setDimensions(BlockVector3 dimensions) {
|
||||||
parent.setDimensions(dimensions);
|
parent.setDimensions(dimensions);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,7 +107,7 @@ public class AbstractDelegateFaweClipboard extends FaweClipboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getDimensions() {
|
public BlockVector3 getDimensions() {
|
||||||
return parent.getDimensions();
|
return parent.getDimensions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,12 +8,12 @@ import com.sk89q.jnbt.CompoundTag;
|
|||||||
import com.sk89q.jnbt.IntTag;
|
import com.sk89q.jnbt.IntTag;
|
||||||
import com.sk89q.jnbt.Tag;
|
import com.sk89q.jnbt.Tag;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
import com.sk89q.worldedit.entity.Entity;
|
import com.sk89q.worldedit.entity.Entity;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
@ -112,7 +112,7 @@ public class CPUOptimizedClipboard extends FaweClipboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setDimensions(Vector dimensions) {
|
public void setDimensions(BlockVector3 dimensions) {
|
||||||
width = dimensions.getBlockX();
|
width = dimensions.getBlockX();
|
||||||
height = dimensions.getBlockY();
|
height = dimensions.getBlockY();
|
||||||
length = dimensions.getBlockZ();
|
length = dimensions.getBlockZ();
|
||||||
@ -125,8 +125,8 @@ public class CPUOptimizedClipboard extends FaweClipboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getDimensions() {
|
public BlockVector3 getDimensions() {
|
||||||
return new Vector(width, height, length);
|
return new BlockVector3(width, height, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int ylast;
|
private int ylast;
|
||||||
|
@ -11,13 +11,13 @@ import com.sk89q.jnbt.CompoundTag;
|
|||||||
import com.sk89q.jnbt.IntTag;
|
import com.sk89q.jnbt.IntTag;
|
||||||
import com.sk89q.jnbt.Tag;
|
import com.sk89q.jnbt.Tag;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
import com.sk89q.worldedit.entity.Entity;
|
import com.sk89q.worldedit.entity.Entity;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
|
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
@ -166,18 +166,18 @@ public class DiskOptimizedClipboard extends FaweClipboard implements Closeable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getDimensions() {
|
public BlockVector3 getDimensions() {
|
||||||
return new Vector(width, height, length);
|
return new BlockVector3(width, height, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BlockArrayClipboard toClipboard() {
|
public BlockArrayClipboard toClipboard() {
|
||||||
try {
|
try {
|
||||||
CuboidRegion region = new CuboidRegion(new Vector(0, 0, 0), new Vector(width - 1, height - 1, length - 1));
|
CuboidRegion region = new CuboidRegion(new BlockVector3(0, 0, 0), new BlockVector3(width - 1, height - 1, length - 1));
|
||||||
int ox = mbb.getShort(8);
|
int ox = mbb.getShort(8);
|
||||||
int oy = mbb.getShort(10);
|
int oy = mbb.getShort(10);
|
||||||
int oz = mbb.getShort(12);
|
int oz = mbb.getShort(12);
|
||||||
BlockArrayClipboard clipboard = new BlockArrayClipboard(region, this);
|
BlockArrayClipboard clipboard = new BlockArrayClipboard(region, this);
|
||||||
clipboard.setOrigin(new Vector(ox, oy, oz));
|
clipboard.setOrigin(new BlockVector3(ox, oy, oz));
|
||||||
return clipboard;
|
return clipboard;
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
MainUtil.handleError(e);
|
MainUtil.handleError(e);
|
||||||
@ -223,7 +223,7 @@ public class DiskOptimizedClipboard extends FaweClipboard implements Closeable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setOrigin(Vector offset) {
|
public void setOrigin(BlockVector3 offset) {
|
||||||
try {
|
try {
|
||||||
mbb.putShort(8, (short) offset.getBlockX());
|
mbb.putShort(8, (short) offset.getBlockX());
|
||||||
mbb.putShort(10, (short) offset.getBlockY());
|
mbb.putShort(10, (short) offset.getBlockY());
|
||||||
@ -234,7 +234,7 @@ public class DiskOptimizedClipboard extends FaweClipboard implements Closeable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setDimensions(Vector dimensions) {
|
public void setDimensions(BlockVector3 dimensions) {
|
||||||
try {
|
try {
|
||||||
width = dimensions.getBlockX();
|
width = dimensions.getBlockX();
|
||||||
height = dimensions.getBlockY();
|
height = dimensions.getBlockY();
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
package com.boydti.fawe.object.clipboard;
|
package com.boydti.fawe.object.clipboard;
|
||||||
|
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.Vector2D;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
@ -10,6 +8,8 @@ import com.sk89q.worldedit.entity.BaseEntity;
|
|||||||
import com.sk89q.worldedit.entity.Entity;
|
import com.sk89q.worldedit.entity.Entity;
|
||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
import com.sk89q.worldedit.function.operation.Operation;
|
import com.sk89q.worldedit.function.operation.Operation;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.util.Location;
|
import com.sk89q.worldedit.util.Location;
|
||||||
@ -30,31 +30,31 @@ public class EmptyClipboard implements Clipboard {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Region getRegion() {
|
public Region getRegion() {
|
||||||
return new CuboidRegion(Vector.ZERO, Vector.ZERO);
|
return new CuboidRegion(BlockVector3.ZERO, BlockVector3.ZERO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getDimensions() {
|
public BlockVector3 getDimensions() {
|
||||||
return Vector.ZERO;
|
return BlockVector3.ZERO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getOrigin() {
|
public BlockVector3 getOrigin() {
|
||||||
return Vector.ZERO;
|
return BlockVector3.ZERO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setOrigin(Vector origin) {
|
public void setOrigin(BlockVector3 origin) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getMinimumPoint() {
|
public BlockVector3 getMinimumPoint() {
|
||||||
return Vector.ZERO;
|
return BlockVector3.ZERO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getMaximumPoint() {
|
public BlockVector3 getMaximumPoint() {
|
||||||
return Vector.ZERO;
|
return BlockVector3.ZERO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -74,27 +74,27 @@ public class EmptyClipboard implements Clipboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState getFullBlock(Vector position) {
|
public BlockState getFullBlock(BlockVector3 position) {
|
||||||
return EditSession.nullBlock;
|
return EditSession.nullBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState getLazyBlock(Vector position) {
|
public BlockState getLazyBlock(BlockVector3 position) {
|
||||||
return EditSession.nullBlock;
|
return EditSession.nullBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseBiome getBiome(Vector2D position) {
|
public BaseBiome getBiome(BlockVector2 position) {
|
||||||
return EditSession.nullBiome;
|
return EditSession.nullBiome;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBlock(Vector position, BlockStateHolder block) throws WorldEditException {
|
public boolean setBlock(BlockVector3 position, BlockStateHolder block) throws WorldEditException {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBiome(Vector2D position, BaseBiome biome) {
|
public boolean setBiome(BlockVector2 position, BaseBiome biome) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,12 +5,12 @@ import com.boydti.fawe.util.ReflectionUtils;
|
|||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.jnbt.IntTag;
|
import com.sk89q.jnbt.IntTag;
|
||||||
import com.sk89q.jnbt.Tag;
|
import com.sk89q.jnbt.Tag;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
import com.sk89q.worldedit.entity.Entity;
|
import com.sk89q.worldedit.entity.Entity;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.util.Location;
|
import com.sk89q.worldedit.util.Location;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
@ -51,12 +51,12 @@ public abstract class FaweClipboard {
|
|||||||
|
|
||||||
public abstract boolean remove(ClipboardEntity clipboardEntity);
|
public abstract boolean remove(ClipboardEntity clipboardEntity);
|
||||||
|
|
||||||
public void setOrigin(Vector offset) {
|
public void setOrigin(BlockVector3 offset) {
|
||||||
} // Do nothing
|
} // Do nothing
|
||||||
|
|
||||||
public abstract void setDimensions(Vector dimensions);
|
public abstract void setDimensions(BlockVector3 dimensions);
|
||||||
|
|
||||||
public abstract Vector getDimensions();
|
public abstract BlockVector3 getDimensions();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The locations provided are relative to the clipboard min
|
* The locations provided are relative to the clipboard min
|
||||||
|
@ -10,12 +10,12 @@ import com.sk89q.jnbt.CompoundTag;
|
|||||||
import com.sk89q.jnbt.IntTag;
|
import com.sk89q.jnbt.IntTag;
|
||||||
import com.sk89q.jnbt.Tag;
|
import com.sk89q.jnbt.Tag;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
import com.sk89q.worldedit.entity.Entity;
|
import com.sk89q.worldedit.entity.Entity;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||||
@ -159,7 +159,7 @@ public class MemoryOptimizedClipboard extends FaweClipboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setDimensions(Vector dimensions) {
|
public void setDimensions(BlockVector3 dimensions) {
|
||||||
width = dimensions.getBlockX();
|
width = dimensions.getBlockX();
|
||||||
height = dimensions.getBlockY();
|
height = dimensions.getBlockY();
|
||||||
length = dimensions.getBlockZ();
|
length = dimensions.getBlockZ();
|
||||||
@ -174,8 +174,8 @@ public class MemoryOptimizedClipboard extends FaweClipboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getDimensions() {
|
public BlockVector3 getDimensions() {
|
||||||
return new Vector(width, height, length);
|
return new BlockVector3(width, height, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int lastI;
|
private int lastI;
|
||||||
|
@ -3,12 +3,12 @@ package com.boydti.fawe.object.clipboard;
|
|||||||
import com.boydti.fawe.jnbt.NBTStreamer;
|
import com.boydti.fawe.jnbt.NBTStreamer;
|
||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
import com.sk89q.worldedit.entity.Entity;
|
import com.sk89q.worldedit.entity.Entity;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
@ -36,12 +36,12 @@ public abstract class ReadOnlyClipboard extends FaweClipboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector getDimensions() {
|
public BlockVector3 getDimensions() {
|
||||||
return region.getMaximumPoint().subtract(region.getMinimumPoint()).add(1, 1, 1);
|
return region.getMaximumPoint().subtract(region.getMinimumPoint()).add(1, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setDimensions(Vector dimensions) {
|
public void setDimensions(BlockVector3 dimensions) {
|
||||||
throw new UnsupportedOperationException("Clipboard is immutable");
|
throw new UnsupportedOperationException("Clipboard is immutable");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ public abstract class ReadOnlyClipboard extends FaweClipboard {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void streamBiomes(NBTStreamer.ByteReader task) {
|
public void streamBiomes(NBTStreamer.ByteReader task) {
|
||||||
Vector dim = getDimensions();
|
BlockVector3 dim = getDimensions();
|
||||||
int index = 0;
|
int index = 0;
|
||||||
for (int z = 0; z <= dim.getBlockZ(); z++) {
|
for (int z = 0; z <= dim.getBlockZ(); z++) {
|
||||||
for (int x = 0; x <= dim.getBlockX(); x++, index++) {
|
for (int x = 0; x <= dim.getBlockX(); x++, index++) {
|
||||||
|
@ -3,12 +3,12 @@ package com.boydti.fawe.object.clipboard;
|
|||||||
import com.boydti.fawe.object.change.MutableBlockChange;
|
import com.boydti.fawe.object.change.MutableBlockChange;
|
||||||
import com.boydti.fawe.object.change.MutableTileChange;
|
import com.boydti.fawe.object.change.MutableTileChange;
|
||||||
import com.boydti.fawe.object.changeset.MemoryOptimizedHistory;
|
import com.boydti.fawe.object.changeset.MemoryOptimizedHistory;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
|
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
|
||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
import com.sk89q.worldedit.history.change.Change;
|
import com.sk89q.worldedit.history.change.Change;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
@ -60,8 +60,8 @@ public class ResizableClipboardBuilder extends MemoryOptimizedHistory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Clipboard build() {
|
public Clipboard build() {
|
||||||
Vector pos1 = new Vector(minX, minY, minZ);
|
BlockVector3 pos1 = new BlockVector3(minX, minY, minZ);
|
||||||
Vector pos2 = new Vector(maxX, maxY, maxZ);
|
BlockVector3 pos2 = new BlockVector3(maxX, maxY, maxZ);
|
||||||
CuboidRegion region = new CuboidRegion(pos1, pos2);
|
CuboidRegion region = new CuboidRegion(pos1, pos2);
|
||||||
BlockArrayClipboard clipboard = new BlockArrayClipboard(region);
|
BlockArrayClipboard clipboard = new BlockArrayClipboard(region);
|
||||||
Iterator<Change> iter = getIterator(true);
|
Iterator<Change> iter = getIterator(true);
|
||||||
|
@ -5,8 +5,6 @@ import com.sk89q.jnbt.CompoundTag;
|
|||||||
import com.sk89q.jnbt.IntTag;
|
import com.sk89q.jnbt.IntTag;
|
||||||
import com.sk89q.jnbt.Tag;
|
import com.sk89q.jnbt.Tag;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.MutableBlockVector2D;
|
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
@ -14,6 +12,9 @@ import com.sk89q.worldedit.entity.Entity;
|
|||||||
import com.sk89q.worldedit.function.RegionFunction;
|
import com.sk89q.worldedit.function.RegionFunction;
|
||||||
import com.sk89q.worldedit.function.operation.Operations;
|
import com.sk89q.worldedit.function.operation.Operations;
|
||||||
import com.sk89q.worldedit.function.visitor.RegionVisitor;
|
import com.sk89q.worldedit.function.visitor.RegionVisitor;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.MutableBlockVector;
|
||||||
|
import com.sk89q.worldedit.math.MutableBlockVector2D;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
@ -38,7 +39,7 @@ public class WorldCopyClipboard extends ReadOnlyClipboard {
|
|||||||
super(region);
|
super(region);
|
||||||
this.hasBiomes = hasBiomes;
|
this.hasBiomes = hasBiomes;
|
||||||
this.hasEntities = hasEntities;
|
this.hasEntities = hasEntities;
|
||||||
final Vector origin = region.getMinimumPoint();
|
final BlockVector3 origin = region.getMinimumPoint();
|
||||||
this.mx = origin.getBlockX();
|
this.mx = origin.getBlockX();
|
||||||
this.my = origin.getBlockY();
|
this.my = origin.getBlockY();
|
||||||
this.mz = origin.getBlockZ();
|
this.mz = origin.getBlockZ();
|
||||||
@ -72,15 +73,15 @@ public class WorldCopyClipboard extends ReadOnlyClipboard {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void forEach(BlockReader task, boolean air) {
|
public void forEach(BlockReader task, boolean air) {
|
||||||
Vector min = region.getMinimumPoint();
|
BlockVector3 min = region.getMinimumPoint();
|
||||||
Vector max = region.getMaximumPoint();
|
BlockVector3 max = region.getMaximumPoint();
|
||||||
final Vector pos = new Vector();
|
MutableBlockVector pos = new MutableBlockVector();
|
||||||
if (region instanceof CuboidRegion) {
|
if (region instanceof CuboidRegion) {
|
||||||
if (air) {
|
if (air) {
|
||||||
((CuboidRegion) region).setUseOldIterator(true);
|
((CuboidRegion) region).setUseOldIterator(true);
|
||||||
RegionVisitor visitor = new RegionVisitor(region, new RegionFunction() {
|
RegionVisitor visitor = new RegionVisitor(region, new RegionFunction() {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Vector pos) throws WorldEditException {
|
public boolean apply(BlockVector3 pos) throws WorldEditException {
|
||||||
BlockState block = getBlockAbs(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ());
|
BlockState block = getBlockAbs(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ());
|
||||||
int x = pos.getBlockX() - mx;
|
int x = pos.getBlockX() - mx;
|
||||||
int y = pos.getBlockY() - my;
|
int y = pos.getBlockY() - my;
|
||||||
@ -102,7 +103,7 @@ public class WorldCopyClipboard extends ReadOnlyClipboard {
|
|||||||
cuboidEquivalent.setUseOldIterator(true);
|
cuboidEquivalent.setUseOldIterator(true);
|
||||||
RegionVisitor visitor = new RegionVisitor(cuboidEquivalent, new RegionFunction() {
|
RegionVisitor visitor = new RegionVisitor(cuboidEquivalent, new RegionFunction() {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Vector pos) throws WorldEditException {
|
public boolean apply(BlockVector3 pos) throws WorldEditException {
|
||||||
int x = pos.getBlockX() - mx;
|
int x = pos.getBlockX() - mx;
|
||||||
int y = pos.getBlockY() - my;
|
int y = pos.getBlockY() - my;
|
||||||
int z = pos.getBlockZ() - mz;
|
int z = pos.getBlockZ() - mz;
|
||||||
|
@ -7,7 +7,6 @@ import com.google.gson.JsonObject;
|
|||||||
import com.google.gson.JsonParser;
|
import com.google.gson.JsonParser;
|
||||||
import com.intellectualcrafters.plot.util.MathMan;
|
import com.intellectualcrafters.plot.util.MathMan;
|
||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.worldedit.BlockVector;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
@ -15,7 +14,6 @@ import com.sk89q.worldedit.blocks.BaseItem;
|
|||||||
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
|
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
|
||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
import com.sk89q.worldedit.world.item.ItemTypes;
|
import com.sk89q.worldedit.world.item.ItemTypes;
|
||||||
import com.sk89q.worldedit.world.registry.BundledBlockData;
|
import com.sk89q.worldedit.world.registry.BundledBlockData;
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
package com.boydti.fawe.object.collection;
|
package com.boydti.fawe.object.collection;
|
||||||
|
|
||||||
import com.boydti.fawe.util.MathMan;
|
import com.boydti.fawe.util.MathMan;
|
||||||
import com.sk89q.worldedit.MutableBlockVector;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.Vector;
|
import com.sk89q.worldedit.math.MutableBlockVector;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.objects.ObjectIterator;
|
import it.unimi.dsi.fastutil.objects.ObjectIterator;
|
||||||
@ -20,7 +21,7 @@ import java.util.Set;
|
|||||||
* - All BlockVectors must be a valid world coordinate: y=[0,255],x=[-30000000,30000000],z=[-30000000,30000000]
|
* - All BlockVectors must be a valid world coordinate: y=[0,255],x=[-30000000,30000000],z=[-30000000,30000000]
|
||||||
* - This will use ~8 bytes for every 64 BlockVectors (about 800x less than a HashSet)
|
* - This will use ~8 bytes for every 64 BlockVectors (about 800x less than a HashSet)
|
||||||
*/
|
*/
|
||||||
public class BlockVectorSet extends AbstractCollection<Vector> implements Set<Vector> {
|
public class BlockVectorSet extends AbstractCollection<BlockVector3> implements Set<BlockVector3> {
|
||||||
private Int2ObjectMap<LocalBlockVectorSet> localSets = new Int2ObjectOpenHashMap<>();
|
private Int2ObjectMap<LocalBlockVectorSet> localSets = new Int2ObjectOpenHashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -32,7 +33,7 @@ public class BlockVectorSet extends AbstractCollection<Vector> implements Set<Ve
|
|||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector get(int index) {
|
public BlockVector3 get(int index) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
ObjectIterator<Int2ObjectMap.Entry<LocalBlockVectorSet>> iter = localSets.int2ObjectEntrySet().iterator();
|
ObjectIterator<Int2ObjectMap.Entry<LocalBlockVectorSet>> iter = localSets.int2ObjectEntrySet().iterator();
|
||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
@ -42,7 +43,7 @@ public class BlockVectorSet extends AbstractCollection<Vector> implements Set<Ve
|
|||||||
int newSize = count + size;
|
int newSize = count + size;
|
||||||
if (newSize > index) {
|
if (newSize > index) {
|
||||||
int localIndex = index - count;
|
int localIndex = index - count;
|
||||||
Vector pos = set.getIndex(localIndex);
|
MutableBlockVector pos = new MutableBlockVector(set.getIndex(localIndex));
|
||||||
if (pos != null) {
|
if (pos != null) {
|
||||||
int pair = entry.getIntKey();
|
int pair = entry.getIntKey();
|
||||||
int cx = MathMan.unpairX(pair);
|
int cx = MathMan.unpairX(pair);
|
||||||
@ -75,22 +76,22 @@ public class BlockVectorSet extends AbstractCollection<Vector> implements Set<Ve
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean contains(Object o) {
|
public boolean contains(Object o) {
|
||||||
if (o instanceof Vector) {
|
if (o instanceof BlockVector3) {
|
||||||
Vector v = (Vector) o;
|
BlockVector3 v = (BlockVector3) o;
|
||||||
return contains(v.getBlockX(), v.getBlockY(), v.getBlockZ());
|
return contains(v.getBlockX(), v.getBlockY(), v.getBlockZ());
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterator<Vector> iterator() {
|
public Iterator<BlockVector3> iterator() {
|
||||||
final ObjectIterator<Int2ObjectMap.Entry<LocalBlockVectorSet>> entries = localSets.int2ObjectEntrySet().iterator();
|
final ObjectIterator<Int2ObjectMap.Entry<LocalBlockVectorSet>> entries = localSets.int2ObjectEntrySet().iterator();
|
||||||
if (!entries.hasNext()) {
|
if (!entries.hasNext()) {
|
||||||
return new ArrayList<Vector>().iterator();
|
return new ArrayList<BlockVector3>().iterator();
|
||||||
}
|
}
|
||||||
return new Iterator<Vector>() {
|
return new Iterator<BlockVector3>() {
|
||||||
Int2ObjectMap.Entry<LocalBlockVectorSet> entry = entries.next();
|
Int2ObjectMap.Entry<LocalBlockVectorSet> entry = entries.next();
|
||||||
Iterator<Vector> entryIter = entry.getValue().iterator();
|
Iterator<BlockVector3> entryIter = entry.getValue().iterator();
|
||||||
MutableBlockVector mutable = new MutableBlockVector();
|
MutableBlockVector mutable = new MutableBlockVector();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -104,7 +105,7 @@ public class BlockVectorSet extends AbstractCollection<Vector> implements Set<Ve
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector next() {
|
public BlockVector3 next() {
|
||||||
while (!entryIter.hasNext()) {
|
while (!entryIter.hasNext()) {
|
||||||
if (!entries.hasNext()) {
|
if (!entries.hasNext()) {
|
||||||
throw new NoSuchElementException("End of iterator");
|
throw new NoSuchElementException("End of iterator");
|
||||||
@ -112,7 +113,7 @@ public class BlockVectorSet extends AbstractCollection<Vector> implements Set<Ve
|
|||||||
entry = entries.next();
|
entry = entries.next();
|
||||||
entryIter = entry.getValue().iterator();
|
entryIter = entry.getValue().iterator();
|
||||||
}
|
}
|
||||||
Vector localPos = entryIter.next();
|
BlockVector3 localPos = entryIter.next();
|
||||||
int pair = entry.getIntKey();
|
int pair = entry.getIntKey();
|
||||||
int cx = MathMan.unpairX(pair);
|
int cx = MathMan.unpairX(pair);
|
||||||
int cz = MathMan.unpairY(pair);
|
int cz = MathMan.unpairY(pair);
|
||||||
@ -122,7 +123,7 @@ public class BlockVectorSet extends AbstractCollection<Vector> implements Set<Ve
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean add(Vector vector) {
|
public boolean add(BlockVector3 vector) {
|
||||||
return add(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ());
|
return add(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -154,8 +155,8 @@ public class BlockVectorSet extends AbstractCollection<Vector> implements Set<Ve
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean remove(Object o) {
|
public boolean remove(Object o) {
|
||||||
if (o instanceof Vector) {
|
if (o instanceof BlockVector3) {
|
||||||
Vector v = (Vector) o;
|
BlockVector3 v = (BlockVector3) o;
|
||||||
return remove(v.getBlockX(), v.getBlockY(), v.getBlockZ());
|
return remove(v.getBlockX(), v.getBlockY(), v.getBlockZ());
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -172,9 +173,9 @@ public class BlockVectorSet extends AbstractCollection<Vector> implements Set<Ve
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean addAll(Collection<? extends Vector> c) {
|
public boolean addAll(Collection<? extends BlockVector3> c) {
|
||||||
boolean result = false;
|
boolean result = false;
|
||||||
for (Vector v : c) {
|
for (BlockVector3 v : c) {
|
||||||
result |= add(v);
|
result |= add(v);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package com.boydti.fawe.object.collection;
|
package com.boydti.fawe.object.collection;
|
||||||
|
|
||||||
import com.boydti.fawe.util.MathMan;
|
import com.boydti.fawe.util.MathMan;
|
||||||
import com.sk89q.worldedit.BlockVector2D;
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
import com.sk89q.worldedit.MutableBlockVector2D;
|
import com.sk89q.worldedit.math.MutableBlockVector2D;
|
||||||
import com.sk89q.worldedit.Vector2D;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -13,7 +13,7 @@ import java.util.Set;
|
|||||||
* - All Vector2Ds must be within x[0,32768), y[0,32768)
|
* - All Vector2Ds must be within x[0,32768), y[0,32768)
|
||||||
* - This will use 8 bytes for every 64 Vector2Ds (about 800x less than a HashSet)
|
* - This will use 8 bytes for every 64 Vector2Ds (about 800x less than a HashSet)
|
||||||
*/
|
*/
|
||||||
public class LocalBlockVector2DSet implements Set<Vector2D> {
|
public class LocalBlockVector2DSet implements Set<BlockVector2> {
|
||||||
private final SparseBitSet set;
|
private final SparseBitSet set;
|
||||||
private final MutableBlockVector2D mutable = new MutableBlockVector2D();
|
private final MutableBlockVector2D mutable = new MutableBlockVector2D();
|
||||||
|
|
||||||
@ -41,8 +41,8 @@ public class LocalBlockVector2DSet implements Set<Vector2D> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean contains(Object o) {
|
public boolean contains(Object o) {
|
||||||
if (o instanceof Vector2D) {
|
if (o instanceof BlockVector2) {
|
||||||
Vector2D v = (Vector2D) o;
|
BlockVector2 v = (BlockVector2) o;
|
||||||
return contains(v.getBlockX(), v.getBlockZ());
|
return contains(v.getBlockX(), v.getBlockZ());
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -90,7 +90,7 @@ public class LocalBlockVector2DSet implements Set<Vector2D> {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector2D getIndex(int getIndex) {
|
public BlockVector2 getIndex(int getIndex) {
|
||||||
int size = size();
|
int size = size();
|
||||||
if (getIndex > size) {
|
if (getIndex > size) {
|
||||||
return null;
|
return null;
|
||||||
@ -108,8 +108,8 @@ public class LocalBlockVector2DSet implements Set<Vector2D> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterator<Vector2D> iterator() {
|
public Iterator<BlockVector2> iterator() {
|
||||||
return new Iterator<Vector2D>() {
|
return new Iterator<BlockVector2>() {
|
||||||
int index = set.nextSetBit(0);
|
int index = set.nextSetBit(0);
|
||||||
int previous = -1;
|
int previous = -1;
|
||||||
|
|
||||||
@ -124,7 +124,7 @@ public class LocalBlockVector2DSet implements Set<Vector2D> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector2D next() {
|
public BlockVector2 next() {
|
||||||
if (index != -1) {
|
if (index != -1) {
|
||||||
int x = MathMan.unpairSearchCoordsX(index);
|
int x = MathMan.unpairSearchCoordsX(index);
|
||||||
int y = MathMan.unpairSearchCoordsY(index);
|
int y = MathMan.unpairSearchCoordsY(index);
|
||||||
@ -147,14 +147,14 @@ public class LocalBlockVector2DSet implements Set<Vector2D> {
|
|||||||
public <T> T[] toArray(T[] array) {
|
public <T> T[] toArray(T[] array) {
|
||||||
int size = size();
|
int size = size();
|
||||||
if (array == null || array.length < size) {
|
if (array == null || array.length < size) {
|
||||||
array = (T[]) new BlockVector2D[size];
|
array = (T[]) new BlockVector2[size];
|
||||||
}
|
}
|
||||||
int index = 0;
|
int index = 0;
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
index = set.nextSetBit(index);
|
index = set.nextSetBit(index);
|
||||||
int x = MathMan.unpairSearchCoordsX(index);
|
int x = MathMan.unpairSearchCoordsX(index);
|
||||||
int y = MathMan.unpairSearchCoordsY(index);
|
int y = MathMan.unpairSearchCoordsY(index);
|
||||||
array[i] = (T) new BlockVector2D(x, y);
|
array[i] = (T) new BlockVector2(x, y);
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
return array;
|
return array;
|
||||||
@ -174,11 +174,11 @@ public class LocalBlockVector2DSet implements Set<Vector2D> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean add(Vector2D vector) {
|
public boolean add(BlockVector2 vector) {
|
||||||
return add(vector.getBlockX(), vector.getBlockZ());
|
return add(vector.getBlockX(), vector.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getIndex(Vector2D vector) {
|
private int getIndex(BlockVector2 vector) {
|
||||||
return MathMan.pairSearchCoords(vector.getBlockX(), vector.getBlockZ());
|
return MathMan.pairSearchCoords(vector.getBlockX(), vector.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,8 +200,8 @@ public class LocalBlockVector2DSet implements Set<Vector2D> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean remove(Object o) {
|
public boolean remove(Object o) {
|
||||||
if (o instanceof Vector2D) {
|
if (o instanceof BlockVector2) {
|
||||||
Vector2D v = (Vector2D) o;
|
BlockVector2 v = (BlockVector2) o;
|
||||||
return remove(v.getBlockX(), v.getBlockZ());
|
return remove(v.getBlockX(), v.getBlockZ());
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -218,9 +218,9 @@ public class LocalBlockVector2DSet implements Set<Vector2D> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean addAll(Collection<? extends Vector2D> c) {
|
public boolean addAll(Collection<? extends BlockVector2> c) {
|
||||||
boolean result = false;
|
boolean result = false;
|
||||||
for (Vector2D v : c) {
|
for (BlockVector2 v : c) {
|
||||||
result |= add(v);
|
result |= add(v);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package com.boydti.fawe.object.collection;
|
package com.boydti.fawe.object.collection;
|
||||||
|
|
||||||
import com.boydti.fawe.util.MathMan;
|
import com.boydti.fawe.util.MathMan;
|
||||||
import com.sk89q.worldedit.BlockVector;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.MutableBlockVector;
|
import com.sk89q.worldedit.math.MutableBlockVector;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -13,7 +13,7 @@ import java.util.Set;
|
|||||||
* - All vectors must be in a 2048 * 2048 area centered around the first entry
|
* - All vectors must be in a 2048 * 2048 area centered around the first entry
|
||||||
* - This will use 8 bytes for every 64 BlockVectors (about 800x less than a HashSet)
|
* - This will use 8 bytes for every 64 BlockVectors (about 800x less than a HashSet)
|
||||||
*/
|
*/
|
||||||
public class LocalBlockVectorSet implements Set<Vector> {
|
public class LocalBlockVectorSet implements Set<BlockVector3> {
|
||||||
private int offsetX, offsetZ;
|
private int offsetX, offsetZ;
|
||||||
private final SparseBitSet set;
|
private final SparseBitSet set;
|
||||||
|
|
||||||
@ -48,8 +48,8 @@ public class LocalBlockVectorSet implements Set<Vector> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean contains(Object o) {
|
public boolean contains(Object o) {
|
||||||
if (o instanceof Vector) {
|
if (o instanceof BlockVector3) {
|
||||||
Vector v = (Vector) o;
|
BlockVector3 v = (BlockVector3) o;
|
||||||
return contains(v.getBlockX(), v.getBlockY(), v.getBlockZ());
|
return contains(v.getBlockX(), v.getBlockY(), v.getBlockZ());
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -100,7 +100,7 @@ public class LocalBlockVectorSet implements Set<Vector> {
|
|||||||
this.offsetZ = z;
|
this.offsetZ = z;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector getIndex(int getIndex) {
|
public BlockVector3 getIndex(int getIndex) {
|
||||||
int size = size();
|
int size = size();
|
||||||
if (getIndex > size) {
|
if (getIndex > size) {
|
||||||
return null;
|
return null;
|
||||||
@ -123,8 +123,8 @@ public class LocalBlockVectorSet implements Set<Vector> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterator<Vector> iterator() {
|
public Iterator<BlockVector3> iterator() {
|
||||||
return new Iterator<Vector>() {
|
return new Iterator<BlockVector3>() {
|
||||||
int index = set.nextSetBit(0);
|
int index = set.nextSetBit(0);
|
||||||
int previous = -1;
|
int previous = -1;
|
||||||
MutableBlockVector mutable = new MutableBlockVector(0, 0, 0);
|
MutableBlockVector mutable = new MutableBlockVector(0, 0, 0);
|
||||||
@ -140,7 +140,7 @@ public class LocalBlockVectorSet implements Set<Vector> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockVector next() {
|
public BlockVector3 next() {
|
||||||
if (index != -1) {
|
if (index != -1) {
|
||||||
int b1 = (index & 0xFF);
|
int b1 = (index & 0xFF);
|
||||||
int b2 = ((byte) (index >> 8)) & 0x7F;
|
int b2 = ((byte) (index >> 8)) & 0x7F;
|
||||||
@ -167,7 +167,7 @@ public class LocalBlockVectorSet implements Set<Vector> {
|
|||||||
public <T> T[] toArray(T[] array) {
|
public <T> T[] toArray(T[] array) {
|
||||||
int size = size();
|
int size = size();
|
||||||
if (array == null || array.length < size) {
|
if (array == null || array.length < size) {
|
||||||
array = (T[]) new BlockVector[size];
|
array = (T[]) new BlockVector3[size];
|
||||||
}
|
}
|
||||||
int index = 0;
|
int index = 0;
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
@ -179,7 +179,7 @@ public class LocalBlockVectorSet implements Set<Vector> {
|
|||||||
int x = offsetX + (((b3 + ((MathMan.unpair8x(b2)) << 8)) << 21) >> 21);
|
int x = offsetX + (((b3 + ((MathMan.unpair8x(b2)) << 8)) << 21) >> 21);
|
||||||
int y = b1;
|
int y = b1;
|
||||||
int z = offsetZ + (((b4 + ((MathMan.unpair8y(b2)) << 8)) << 21) >> 21);
|
int z = offsetZ + (((b4 + ((MathMan.unpair8y(b2)) << 8)) << 21) >> 21);
|
||||||
array[i] = (T) new BlockVector(x, y, z);
|
array[i] = (T) new BlockVector3(x, y, z);
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
return array;
|
return array;
|
||||||
@ -223,11 +223,11 @@ public class LocalBlockVectorSet implements Set<Vector> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean add(Vector vector) {
|
public boolean add(BlockVector3 vector) {
|
||||||
return add(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ());
|
return add(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getIndex(Vector vector) {
|
private int getIndex(BlockVector3 vector) {
|
||||||
return MathMan.tripleSearchCoords(vector.getBlockX() - offsetX, vector.getBlockY(), vector.getBlockZ() - offsetZ);
|
return MathMan.tripleSearchCoords(vector.getBlockX() - offsetX, vector.getBlockY(), vector.getBlockZ() - offsetZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,8 +249,8 @@ public class LocalBlockVectorSet implements Set<Vector> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean remove(Object o) {
|
public boolean remove(Object o) {
|
||||||
if (o instanceof Vector) {
|
if (o instanceof BlockVector3) {
|
||||||
Vector v = (Vector) o;
|
BlockVector3 v = (BlockVector3) o;
|
||||||
return remove(v.getBlockX(), v.getBlockY(), v.getBlockZ());
|
return remove(v.getBlockX(), v.getBlockY(), v.getBlockZ());
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -267,9 +267,9 @@ public class LocalBlockVectorSet implements Set<Vector> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean addAll(Collection<? extends Vector> c) {
|
public boolean addAll(Collection<? extends BlockVector3> c) {
|
||||||
boolean result = false;
|
boolean result = false;
|
||||||
for (Vector v : c) {
|
for (BlockVector3 v : c) {
|
||||||
result |= add(v);
|
result |= add(v);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@ -280,7 +280,7 @@ public class LocalBlockVectorSet implements Set<Vector> {
|
|||||||
boolean result = false;
|
boolean result = false;
|
||||||
int size = size();
|
int size = size();
|
||||||
int index = -1;
|
int index = -1;
|
||||||
Vector mVec = MutableBlockVector.get(0, 0, 0);
|
MutableBlockVector mVec = MutableBlockVector.get(0, 0, 0);
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
index = set.nextSetBit(index + 1);
|
index = set.nextSetBit(index + 1);
|
||||||
int b1 = (index & 0xFF);
|
int b1 = (index & 0xFF);
|
||||||
@ -310,7 +310,7 @@ public class LocalBlockVectorSet implements Set<Vector> {
|
|||||||
public void forEach(BlockVectorSetVisitor visitor) {
|
public void forEach(BlockVectorSetVisitor visitor) {
|
||||||
int size = size();
|
int size = size();
|
||||||
int index = -1;
|
int index = -1;
|
||||||
Vector mVec = MutableBlockVector.get(0, 0, 0);
|
BlockVector3 mVec = MutableBlockVector.get(0, 0, 0);
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
index = set.nextSetBit(index + 1);
|
index = set.nextSetBit(index + 1);
|
||||||
int b1 = (index & 0xFF);
|
int b1 = (index & 0xFF);
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package com.boydti.fawe.object.extent;
|
package com.boydti.fawe.object.extent;
|
||||||
|
|
||||||
import com.sk89q.worldedit.MutableBlockVector;
|
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.Vector2D;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.extent.AbstractDelegateExtent;
|
import com.sk89q.worldedit.extent.AbstractDelegateExtent;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
|
import com.sk89q.worldedit.math.MutableBlockVector;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||||
@ -24,7 +24,7 @@ public class BlockTranslateExtent extends AbstractDelegateExtent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBlock(Vector location, BlockStateHolder block) throws WorldEditException {
|
public boolean setBlock(BlockVector3 location, BlockStateHolder block) throws WorldEditException {
|
||||||
mutable.mutX((location.getX() + dx));
|
mutable.mutX((location.getX() + dx));
|
||||||
mutable.mutY((location.getY() + dy));
|
mutable.mutY((location.getY() + dy));
|
||||||
mutable.mutZ((location.getZ() + dz));
|
mutable.mutZ((location.getZ() + dz));
|
||||||
@ -40,7 +40,7 @@ public class BlockTranslateExtent extends AbstractDelegateExtent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBiome(Vector2D position, BaseBiome biome) {
|
public boolean setBiome(BlockVector2 position, BaseBiome biome) {
|
||||||
return super.setBiome(position.add(dx, dz), biome);
|
return super.setBiome(position.add(dx, dz), biome);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,17 +50,17 @@ public class BlockTranslateExtent extends AbstractDelegateExtent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseBiome getBiome(Vector2D position) {
|
public BaseBiome getBiome(BlockVector2 position) {
|
||||||
return super.getBiome(position.add(dx, dz));
|
return super.getBiome(position.add(dx, dz));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState getBlock(Vector location) {
|
public BlockState getBlock(BlockVector3 location) {
|
||||||
return getLazyBlock(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
return getLazyBlock(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState getLazyBlock(Vector location) {
|
public BlockState getLazyBlock(BlockVector3 location) {
|
||||||
return getLazyBlock(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
return getLazyBlock(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
package com.boydti.fawe.object.extent;
|
package com.boydti.fawe.object.extent;
|
||||||
|
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.Vector2D;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
@ -10,6 +8,8 @@ import com.sk89q.worldedit.entity.BaseEntity;
|
|||||||
import com.sk89q.worldedit.entity.Entity;
|
import com.sk89q.worldedit.entity.Entity;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
import com.sk89q.worldedit.function.operation.Operation;
|
import com.sk89q.worldedit.function.operation.Operation;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.util.Location;
|
import com.sk89q.worldedit.util.Location;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
@ -23,12 +23,12 @@ public class EmptyExtent implements Extent {
|
|||||||
public EmptyExtent() {
|
public EmptyExtent() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector getMinimumPoint() {
|
public BlockVector3 getMinimumPoint() {
|
||||||
return Vector.ZERO;
|
return BlockVector3.ZERO;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector getMaximumPoint() {
|
public BlockVector3 getMaximumPoint() {
|
||||||
return Vector.ZERO;
|
return BlockVector3.ZERO;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Entity> getEntities(Region region) {
|
public List<Entity> getEntities(Region region) {
|
||||||
@ -45,27 +45,27 @@ public class EmptyExtent implements Extent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState getFullBlock(Vector position) {
|
public BlockState getFullBlock(BlockVector3 position) {
|
||||||
return EditSession.nullBlock;
|
return EditSession.nullBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState getLazyBlock(Vector position) {
|
public BlockState getLazyBlock(BlockVector3 position) {
|
||||||
return EditSession.nullBlock;
|
return EditSession.nullBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public BaseBiome getBiome(Vector2D position) {
|
public BaseBiome getBiome(BlockVector2 position) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBlock(Vector position, BlockStateHolder block) throws WorldEditException {
|
public boolean setBlock(BlockVector3 position, BlockStateHolder block) throws WorldEditException {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBiome(Vector2D position, BaseBiome biome) {
|
public boolean setBiome(BlockVector2 position, BaseBiome biome) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,14 +6,14 @@ import com.boydti.fawe.object.HasFaweQueue;
|
|||||||
import com.boydti.fawe.util.MainUtil;
|
import com.boydti.fawe.util.MainUtil;
|
||||||
import com.boydti.fawe.util.ReflectionUtils;
|
import com.boydti.fawe.util.ReflectionUtils;
|
||||||
import com.sk89q.jnbt.*;
|
import com.sk89q.jnbt.*;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.Vector2D;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
import com.sk89q.worldedit.entity.Entity;
|
import com.sk89q.worldedit.entity.Entity;
|
||||||
import com.sk89q.worldedit.extent.AbstractDelegateExtent;
|
import com.sk89q.worldedit.extent.AbstractDelegateExtent;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.util.Location;
|
import com.sk89q.worldedit.util.Location;
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
@ -106,17 +106,17 @@ public class FastWorldEditExtent extends AbstractDelegateExtent implements HasFa
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseBiome getBiome(final Vector2D position) {
|
public BaseBiome getBiome(final BlockVector2 position) {
|
||||||
return FaweCache.CACHE_BIOME[queue.getBiomeId(position.getBlockX(), position.getBlockZ())];
|
return FaweCache.CACHE_BIOME[queue.getBiomeId(position.getBlockX(), position.getBlockZ())];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBlock(final Vector location, final BlockStateHolder block) throws WorldEditException {
|
public boolean setBlock(final BlockVector3 location, final BlockStateHolder block) throws WorldEditException {
|
||||||
return setBlock(location.getBlockX(), location.getBlockY(), location.getBlockZ(), block);
|
return setBlock(location.getBlockX(), location.getBlockY(), location.getBlockZ(), block);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState getLazyBlock(Vector location) {
|
public BlockState getLazyBlock(BlockVector3 location) {
|
||||||
return getLazyBlock(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
return getLazyBlock(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,12 +145,12 @@ public class FastWorldEditExtent extends AbstractDelegateExtent implements HasFa
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState getBlock(final Vector position) {
|
public BlockState getBlock(final BlockVector3 position) {
|
||||||
return this.getLazyBlock(position);
|
return this.getLazyBlock(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBiome(final Vector2D position, final BaseBiome biome) {
|
public boolean setBiome(final BlockVector2 position, final BaseBiome biome) {
|
||||||
queue.setBiome(position.getBlockX(), position.getBlockZ(), biome);
|
queue.setBiome(position.getBlockX(), position.getBlockZ(), biome);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -4,14 +4,14 @@ import com.boydti.fawe.config.BBC;
|
|||||||
import com.boydti.fawe.object.FaweLimit;
|
import com.boydti.fawe.object.FaweLimit;
|
||||||
import com.boydti.fawe.util.WEManager;
|
import com.boydti.fawe.util.WEManager;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.Vector;
|
|
||||||
import com.sk89q.worldedit.Vector2D;
|
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
import com.sk89q.worldedit.entity.Entity;
|
import com.sk89q.worldedit.entity.Entity;
|
||||||
import com.sk89q.worldedit.extent.Extent;
|
import com.sk89q.worldedit.extent.Extent;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.Region;
|
import com.sk89q.worldedit.regions.Region;
|
||||||
import com.sk89q.worldedit.util.Location;
|
import com.sk89q.worldedit.util.Location;
|
||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
@ -48,16 +48,16 @@ public abstract class FaweRegionExtent extends ResettableExtent {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final boolean contains(Vector p) {
|
public final boolean contains(BlockVector3 p) {
|
||||||
return contains(p.getBlockX(), p.getBlockY(), p.getBlockZ());
|
return contains(p.getBlockX(), p.getBlockY(), p.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
public final boolean contains(Vector2D p) {
|
public final boolean contains(BlockVector2 p) {
|
||||||
return contains(p.getBlockX(), p.getBlockZ());
|
return contains(p.getBlockX(), p.getBlockZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBlock(Vector location, BlockStateHolder block) throws WorldEditException {
|
public boolean setBlock(BlockVector3 location, BlockStateHolder block) throws WorldEditException {
|
||||||
if (!contains(location)) {
|
if (!contains(location)) {
|
||||||
if (!limit.MAX_FAILS()) {
|
if (!limit.MAX_FAILS()) {
|
||||||
WEManager.IMP.cancelEditSafe(this, BBC.WORLDEDIT_CANCEL_REASON_OUTSIDE_REGION);
|
WEManager.IMP.cancelEditSafe(this, BBC.WORLDEDIT_CANCEL_REASON_OUTSIDE_REGION);
|
||||||
@ -79,7 +79,7 @@ public abstract class FaweRegionExtent extends ResettableExtent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBiome(Vector2D position, BaseBiome biome) {
|
public boolean setBiome(BlockVector2 position, BaseBiome biome) {
|
||||||
if (!contains(position)) {
|
if (!contains(position)) {
|
||||||
if (!limit.MAX_FAILS()) {
|
if (!limit.MAX_FAILS()) {
|
||||||
WEManager.IMP.cancelEditSafe(this, BBC.WORLDEDIT_CANCEL_REASON_OUTSIDE_REGION);
|
WEManager.IMP.cancelEditSafe(this, BBC.WORLDEDIT_CANCEL_REASON_OUTSIDE_REGION);
|
||||||
@ -101,7 +101,7 @@ public abstract class FaweRegionExtent extends ResettableExtent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BaseBiome getBiome(Vector2D position) {
|
public BaseBiome getBiome(BlockVector2 position) {
|
||||||
if (!contains(position)) {
|
if (!contains(position)) {
|
||||||
if (!limit.MAX_FAILS()) {
|
if (!limit.MAX_FAILS()) {
|
||||||
WEManager.IMP.cancelEditSafe(this, BBC.WORLDEDIT_CANCEL_REASON_OUTSIDE_REGION);
|
WEManager.IMP.cancelEditSafe(this, BBC.WORLDEDIT_CANCEL_REASON_OUTSIDE_REGION);
|
||||||
@ -112,7 +112,7 @@ public abstract class FaweRegionExtent extends ResettableExtent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState getBlock(Vector position) {
|
public BlockState getBlock(BlockVector3 position) {
|
||||||
if (!contains(position)) {
|
if (!contains(position)) {
|
||||||
if (!limit.MAX_FAILS()) {
|
if (!limit.MAX_FAILS()) {
|
||||||
WEManager.IMP.cancelEditSafe(this, BBC.WORLDEDIT_CANCEL_REASON_OUTSIDE_REGION);
|
WEManager.IMP.cancelEditSafe(this, BBC.WORLDEDIT_CANCEL_REASON_OUTSIDE_REGION);
|
||||||
@ -123,7 +123,7 @@ public abstract class FaweRegionExtent extends ResettableExtent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState getLazyBlock(Vector position) {
|
public BlockState getLazyBlock(BlockVector3 position) {
|
||||||
if (!contains(position)) {
|
if (!contains(position)) {
|
||||||
if (!limit.MAX_FAILS()) {
|
if (!limit.MAX_FAILS()) {
|
||||||
WEManager.IMP.cancelEditSafe(this, BBC.WORLDEDIT_CANCEL_REASON_OUTSIDE_REGION);
|
WEManager.IMP.cancelEditSafe(this, BBC.WORLDEDIT_CANCEL_REASON_OUTSIDE_REGION);
|
||||||
|
Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden Mehr anzeigen
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren