Current progress with update

Dieser Commit ist enthalten in:
IronApollo 2018-12-23 11:19:33 -05:00
Ursprung 9896a1339e
Commit d4157b7e0e
417 geänderte Dateien mit 8994 neuen und 4644 gelöschten Zeilen

Datei anzeigen

@ -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
}
} }

Datei anzeigen

@ -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);
} }
} }

Datei anzeigen

@ -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__");

Datei anzeigen

@ -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();

Datei anzeigen

@ -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);

Datei anzeigen

@ -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);
} }
} }

Datei anzeigen

@ -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);

Datei anzeigen

@ -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) {

Datei anzeigen

@ -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);

Datei anzeigen

@ -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);
} }

Datei anzeigen

@ -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;

Datei anzeigen

@ -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;

Datei anzeigen

@ -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);
} }

Datei anzeigen

@ -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,

Datei anzeigen

@ -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());

Datei anzeigen

@ -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();
} }
} }

Datei anzeigen

@ -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;

Datei anzeigen

@ -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());
} }
/** /**

Datei anzeigen

@ -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;

Datei anzeigen

@ -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);

Datei anzeigen

@ -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();

Datei anzeigen

@ -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);
} }
/** /**

Datei anzeigen

@ -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

Datei anzeigen

@ -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 {

Datei anzeigen

@ -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;

Datei anzeigen

@ -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;
}
} }

Datei anzeigen

@ -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;
} }
} }

Datei anzeigen

@ -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();

Datei anzeigen

@ -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;
}
} }

Datei anzeigen

@ -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) {

Datei anzeigen

@ -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;

Datei anzeigen

@ -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;
} }

Datei anzeigen

@ -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;

Datei anzeigen

@ -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;

Datei anzeigen

@ -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();

Datei anzeigen

@ -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;

Datei anzeigen

@ -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;
} }

Datei anzeigen

@ -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);

Datei anzeigen

@ -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);

Datei anzeigen

@ -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);
} }

Datei anzeigen

@ -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());

Datei anzeigen

@ -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);

Datei anzeigen

@ -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;

Datei anzeigen

@ -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;

Datei anzeigen

@ -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();
} }
} }

Datei anzeigen

@ -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();
} }
} }

Datei anzeigen

@ -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);

Datei anzeigen

@ -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()) {

Datei anzeigen

@ -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;

Datei anzeigen

@ -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();

Datei anzeigen

@ -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()) {

Datei anzeigen

@ -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);
} }
} }

Datei anzeigen

@ -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) {

Datei anzeigen

@ -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();

Datei anzeigen

@ -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);

Datei anzeigen

@ -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) {

Datei anzeigen

@ -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) {

Datei anzeigen

@ -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);
} }
} }

Datei anzeigen

@ -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);
} }

Datei anzeigen

@ -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();

Datei anzeigen

@ -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);
} }
} }

Datei anzeigen

@ -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);

Datei anzeigen

@ -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);
} }
} }

Datei anzeigen

@ -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();

Datei anzeigen

@ -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 {
} }
} }

Datei anzeigen

@ -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);

Datei anzeigen

@ -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();

Datei anzeigen

@ -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;

Datei anzeigen

@ -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);

Datei anzeigen

@ -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++) {

Datei anzeigen

@ -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;

Datei anzeigen

@ -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());
} }
} }

Datei anzeigen

@ -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;
} }

Datei anzeigen

@ -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();

Datei anzeigen

@ -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;

Datei anzeigen

@ -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());

Datei anzeigen

@ -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();
} }

Datei anzeigen

@ -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) {}
} }

Datei anzeigen

@ -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;
} }

Datei anzeigen

@ -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 {

Datei anzeigen

@ -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);
} }

Datei anzeigen

@ -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();

Datei anzeigen

@ -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();

Datei anzeigen

@ -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();
} }

Datei anzeigen

@ -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;

Datei anzeigen

@ -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();

Datei anzeigen

@ -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;
} }

Datei anzeigen

@ -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

Datei anzeigen

@ -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;

Datei anzeigen

@ -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++) {

Datei anzeigen

@ -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);

Datei anzeigen

@ -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;

Datei anzeigen

@ -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;

Datei anzeigen

@ -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;

Datei anzeigen

@ -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;

Datei anzeigen

@ -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);

Datei anzeigen

@ -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());
} }

Datei anzeigen

@ -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;
} }

Datei anzeigen

@ -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;
} }

Datei anzeigen

@ -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