diff --git a/src/legacy/java/com/sk89q/worldedit/blocks/MobSpawnerBlock.java b/src/legacy/java/com/sk89q/worldedit/blocks/MobSpawnerBlock.java
index ed38b5bc8..78bd8c7d3 100644
--- a/src/legacy/java/com/sk89q/worldedit/blocks/MobSpawnerBlock.java
+++ b/src/legacy/java/com/sk89q/worldedit/blocks/MobSpawnerBlock.java
@@ -25,7 +25,7 @@ import com.sk89q.jnbt.NBTUtils;
import com.sk89q.jnbt.ShortTag;
import com.sk89q.jnbt.StringTag;
import com.sk89q.jnbt.Tag;
-import com.sk89q.worldedit.MobType;
+import com.sk89q.worldedit.blocks.metadata.MobType;
import com.sk89q.worldedit.world.storage.InvalidFormatException;
import java.util.HashMap;
diff --git a/src/main/java/com/sk89q/minecraft/util/commands/CommandContext.java b/src/main/java/com/sk89q/minecraft/util/commands/CommandContext.java
index dd3fa00e2..7f1a4e185 100644
--- a/src/main/java/com/sk89q/minecraft/util/commands/CommandContext.java
+++ b/src/main/java/com/sk89q/minecraft/util/commands/CommandContext.java
@@ -31,6 +31,7 @@ public class CommandContext {
protected final String command;
protected final List parsedArgs;
+
protected final List originalArgIndices;
protected final String[] originalArgs;
protected final Set booleanFlags = new HashSet();
diff --git a/src/main/java/com/sk89q/worldedit/BlockVector.java b/src/main/java/com/sk89q/worldedit/BlockVector.java
index f59e377ef..474d24f33 100644
--- a/src/main/java/com/sk89q/worldedit/BlockVector.java
+++ b/src/main/java/com/sk89q/worldedit/BlockVector.java
@@ -20,11 +20,11 @@
package com.sk89q.worldedit;
/**
- * Extension of Vector that supports being compared as ints (for accuracy).
- *
- * @author sk89q
+ * Extension of {@code Vector} that that compares with other instances
+ * using integer components.
*/
public class BlockVector extends Vector {
+
public static final BlockVector ZERO = new BlockVector(0, 0, 0);
public static final BlockVector UNIT_X = new BlockVector(1, 0, 0);
public static final BlockVector UNIT_Y = new BlockVector(0, 1, 0);
@@ -32,55 +32,47 @@ public class BlockVector extends Vector {
public static final BlockVector ONE = new BlockVector(1, 1, 1);
/**
- * Construct the Vector object.
+ * Construct an instance as a copy of another instance.
*
- * @param pt
+ * @param position the other position
*/
- public BlockVector(Vector pt) {
- super(pt);
+ public BlockVector(Vector position) {
+ super(position);
}
/**
- * Construct the Vector object.
+ * Construct a new instance.
*
- * @param x
- * @param y
- * @param z
+ * @param x the X coordinate
+ * @param y the Y coordinate
+ * @param z the Z coordinate
*/
public BlockVector(int x, int y, int z) {
super(x, y, z);
}
/**
- * Construct the Vector object.
+ * Construct a new instance.
*
- *
- * @param x
- * @param y
- * @param z
+ * @param x the X coordinate
+ * @param y the Y coordinate
+ * @param z the Z coordinate
*/
public BlockVector(float x, float y, float z) {
super(x, y, z);
}
/**
- * Construct the Vector object.
+ * Construct a new instance.
*
- *
- * @param x
- * @param y
- * @param z
+ * @param x the X coordinate
+ * @param y the Y coordinate
+ * @param z the Z coordinate
*/
public BlockVector(double x, double y, double z) {
super(x, y, z);
}
- /**
- * Checks if another object is equivalent.
- *
- * @param obj
- * @return whether the other object is equivalent
- */
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Vector)) {
@@ -92,11 +84,6 @@ public class BlockVector extends Vector {
}
- /**
- * Gets the hash code.
- *
- * @return hash code
- */
@Override
public int hashCode() {
return ((int) x << 19) ^
@@ -108,4 +95,5 @@ public class BlockVector extends Vector {
public BlockVector toBlockVector() {
return this;
}
+
}
diff --git a/src/main/java/com/sk89q/worldedit/BlockVector2D.java b/src/main/java/com/sk89q/worldedit/BlockVector2D.java
index 0960083f2..9a0ae4b91 100644
--- a/src/main/java/com/sk89q/worldedit/BlockVector2D.java
+++ b/src/main/java/com/sk89q/worldedit/BlockVector2D.java
@@ -20,76 +20,66 @@
package com.sk89q.worldedit;
/**
- * Extension of Vector2D that supports being compared as ints (for accuracy).
- *
- * @author sk89q
+ * Extension of {@code Vector2D} that that compares with other instances
+ * using integer components.
*/
public class BlockVector2D extends Vector2D {
+
public static final BlockVector2D ZERO = new BlockVector2D(0, 0);
public static final BlockVector2D UNIT_X = new BlockVector2D(1, 0);
public static final BlockVector2D UNIT_Z = new BlockVector2D(0, 1);
public static final BlockVector2D ONE = new BlockVector2D(1, 1);
/**
- * Construct the Vector object.
+ * Construct an instance from another instance.
*
- * @param pt
+ * @param position the position to copy
*/
- public BlockVector2D(Vector2D pt) {
- super(pt);
+ public BlockVector2D(Vector2D position) {
+ super(position);
}
/**
- * Construct the Vector object.
+ * Construct a new instance.
*
- * @param x
- * @param z
+ * @param x the X coordinate
+ * @param z the Z coordinate
*/
public BlockVector2D(int x, int z) {
super(x, z);
}
/**
- * Construct the Vector object.
+ * Construct a new instance.
*
- * @param x
- * @param z
+ * @param x the X coordinate
+ * @param z the Z coordinate
*/
public BlockVector2D(float x, float z) {
super(x, z);
}
/**
- * Construct the Vector object.
+ * Construct a new instance.
*
- * @param x
- * @param z
+ * @param x the X coordinate
+ * @param z the Z coordinate
*/
public BlockVector2D(double x, double z) {
super(x, z);
}
- /**
- * Checks if another object is equivalent.
- *
- * @param obj
- * @return whether the other object is equivalent
- */
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Vector2D)) {
return false;
}
+
Vector2D other = (Vector2D) obj;
return (int) other.x == (int) this.x && (int) other.z == (int) this.z;
}
- /**
- * Gets the hash code.
- *
- * @return hash code
- */
@Override
public int hashCode() {
return (Integer.valueOf((int) x).hashCode() >> 13) ^
@@ -100,4 +90,5 @@ public class BlockVector2D extends Vector2D {
public BlockVector2D toBlockVector2D() {
return this;
}
+
}
diff --git a/src/main/java/com/sk89q/worldedit/BlockWorldVector.java b/src/main/java/com/sk89q/worldedit/BlockWorldVector.java
index 5831b3e17..4fcc70624 100644
--- a/src/main/java/com/sk89q/worldedit/BlockWorldVector.java
+++ b/src/main/java/com/sk89q/worldedit/BlockWorldVector.java
@@ -20,94 +20,89 @@
package com.sk89q.worldedit;
/**
- * Extension of Vector that supports being compared as ints (for accuracy).
- *
- * @author sk89q
+ * @deprecated Replace all uses of {@link WorldVector}s with {@link Location}s
*/
+@SuppressWarnings("deprecation")
+@Deprecated
public class BlockWorldVector extends WorldVector {
+
/**
- * Construct the Vector object.
+ * Construct an instance from another instance.
*
- * @param pt
+ * @param position the position to copy
*/
- public BlockWorldVector(WorldVector pt) {
- super(pt.getWorld(), pt);
+ public BlockWorldVector(WorldVector position) {
+ super(position.getWorld(), position);
}
/**
- * Construct the Vector object.
- * @param world
+ * Construct an instance from another instance.
*
- * @param pt
+ * @param world the world
+ * @param position the position to copy
*/
- public BlockWorldVector(LocalWorld world, Vector pt) {
- super(world, pt);
+ public BlockWorldVector(LocalWorld world, Vector position) {
+ super(world, position);
}
/**
- * Construct the Vector object.
- *
- * @param world
- * @param x
- * @param y
- * @param z
+ * Construct a new instance.
+ *
+ * @param world another instance
+ * @param x the X coordinate
+ * @param y the Y coordinate
+ * @param z the Z coordinate
*/
public BlockWorldVector(WorldVector world, int x, int y, int z) {
super(world.getWorld(), x, y, z);
}
/**
- * Construct the Vector object.
- *
- * @param world
- * @param v
+ * Construct a new instance.
+ *
+ * @param world another instance
+ * @param v the other vector
*/
public BlockWorldVector(WorldVector world, Vector v) {
super(world.getWorld(), v.getX(), v.getY(), v.getZ());
}
/**
- * Construct the Vector object.
- *
- * @param world
- * @param x
- * @param y
- * @param z
+ * Construct a new instance.
+ *
+ * @param world a world
+ * @param x the X coordinate
+ * @param y the Y coordinate
+ * @param z the Z coordinate
*/
public BlockWorldVector(LocalWorld world, int x, int y, int z) {
super(world, x, y, z);
}
/**
- * Construct the Vector object.
- *
- * @param world
- * @param x
- * @param y
- * @param z
+ * Construct a new instance.
+ *
+ * @param world a world
+ * @param x the X coordinate
+ * @param y the Y coordinate
+ * @param z the Z coordinate
*/
public BlockWorldVector(LocalWorld world, float x, float y, float z) {
super(world, x, y, z);
}
/**
- * Construct the Vector object.
- *
- * @param world
- * @param x
- * @param y
- * @param z
+ * Construct a new instance.
+ *
+ * @param world a world
+ * @param x the X coordinate
+ * @param y the Y coordinate
+ * @param z the Z coordinate
*/
public BlockWorldVector(LocalWorld world, double x, double y, double z) {
super(world, x, y, z);
}
- /**
- * Checks if another object is equivalent.
- *
- * @param obj
- * @return whether the other object is equivalent
- */
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Vector)) {
@@ -119,15 +114,11 @@ public class BlockWorldVector extends WorldVector {
}
- /**
- * Gets the hash code.
- *
- * @return hash code
- */
@Override
public int hashCode() {
return (Integer.valueOf((int) x).hashCode() << 19) ^
(Integer.valueOf((int) y).hashCode() << 12) ^
Integer.valueOf((int) z).hashCode();
}
+
}
diff --git a/src/main/java/com/sk89q/worldedit/BlockWorldVector2D.java b/src/main/java/com/sk89q/worldedit/BlockWorldVector2D.java
index 3dde8a034..70289f8f2 100644
--- a/src/main/java/com/sk89q/worldedit/BlockWorldVector2D.java
+++ b/src/main/java/com/sk89q/worldedit/BlockWorldVector2D.java
@@ -19,34 +19,65 @@
package com.sk89q.worldedit;
+/**
+ * @deprecated Replace all uses of {@link WorldVector}s with {@link Location}s
+ */
+@SuppressWarnings("deprecation")
+@Deprecated
public class BlockWorldVector2D extends WorldVector2D {
+ /**
+ * Construct a new instance.
+ *
+ * @param world the world
+ * @param x the X coordinate
+ * @param z the Z coordinate
+ */
public BlockWorldVector2D(LocalWorld world, double x, double z) {
super(world, x, z);
}
+ /**
+ * Construct a new instance.
+ *
+ * @param world the world
+ * @param x the X coordinate
+ * @param z the Z coordinate
+ */
public BlockWorldVector2D(LocalWorld world, float x, float z) {
super(world, x, z);
}
+ /**
+ * Construct a new instance.
+ *
+ * @param world the world
+ * @param x the X coordinate
+ * @param z the Z coordinate
+ */
public BlockWorldVector2D(LocalWorld world, int x, int z) {
super(world, x, z);
}
- public BlockWorldVector2D(LocalWorld world, Vector2D pt) {
- super(world, pt);
+ /**
+ * Construct a new instance.
+ *
+ * @param world the world
+ * @param position a position
+ */
+ public BlockWorldVector2D(LocalWorld world, Vector2D position) {
+ super(world, position);
}
+ /**
+ * Construct a new instance with X and Z set to (0, 0).
+ *
+ * @param world the world
+ */
public BlockWorldVector2D(LocalWorld world) {
super(world);
}
- /**
- * Checks if another object is equivalent.
- *
- * @param obj
- * @return whether the other object is equivalent
- */
@Override
public boolean equals(Object obj) {
if (!(obj instanceof WorldVector2D)) {
diff --git a/src/main/java/com/sk89q/worldedit/CuboidClipboard.java b/src/main/java/com/sk89q/worldedit/CuboidClipboard.java
index fad4ddc5c..237d8c010 100644
--- a/src/main/java/com/sk89q/worldedit/CuboidClipboard.java
+++ b/src/main/java/com/sk89q/worldedit/CuboidClipboard.java
@@ -19,6 +19,18 @@
package com.sk89q.worldedit;
+import com.sk89q.worldedit.blocks.BaseBlock;
+import com.sk89q.worldedit.blocks.BlockID;
+import com.sk89q.worldedit.command.ClipboardCommands;
+import com.sk89q.worldedit.command.SchematicCommands;
+import com.sk89q.worldedit.extent.Extent;
+import com.sk89q.worldedit.extent.clipboard.Clipboard;
+import com.sk89q.worldedit.function.operation.ForwardExtentCopy;
+import com.sk89q.worldedit.regions.CuboidRegion;
+import com.sk89q.worldedit.regions.Region;
+import com.sk89q.worldedit.schematic.SchematicFormat;
+import com.sk89q.worldedit.util.Countable;
+import com.sk89q.worldedit.world.DataException;
import java.io.File;
import java.io.IOException;
@@ -28,21 +40,29 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import com.sk89q.worldedit.blocks.BaseBlock;
-import com.sk89q.worldedit.blocks.BlockID;
-import com.sk89q.worldedit.world.DataException;
-import com.sk89q.worldedit.regions.Region;
-import com.sk89q.worldedit.schematic.SchematicFormat;
-import com.sk89q.worldedit.util.Countable;
+import static com.google.common.base.Preconditions.checkNotNull;
/**
* The clipboard remembers the state of a cuboid region.
*
- * @author sk89q
+ * @deprecated This is slowly being replaced with {@link Clipboard}, which is
+ * far more versatile. Transforms are supported using affine
+ * transformations and full entity support is provided because
+ * the clipboard properly implements {@link Extent}. However,
+ * the new clipboard class is only available in WorldEdit 6.x and
+ * beyond. We intend on keeping this deprecated class in WorldEdit
+ * for an extended amount of time so there is no rush to
+ * switch (but new features will not be supported). To copy between
+ * a clipboard and a world (or between any two {@code Extent}s),
+ * one can use {@link ForwardExtentCopy}. See
+ * {@link ClipboardCommands} and {@link SchematicCommands} for
+ * more information.
*/
+@Deprecated
public class CuboidClipboard {
+
/**
- * Flip direction.
+ * An enum of possible flip directions.
*/
public enum FlipDirection {
NORTH_SOUTH,
@@ -59,9 +79,11 @@ public class CuboidClipboard {
/**
* Constructs the clipboard.
*
- * @param size
+ * @param size the dimensions of the clipboard (should be at least 1 on every dimension)
*/
public CuboidClipboard(Vector size) {
+ checkNotNull(size);
+
this.size = size;
data = new BaseBlock[size.getBlockX()][size.getBlockY()][size.getBlockZ()];
origin = new Vector();
@@ -71,10 +93,14 @@ public class CuboidClipboard {
/**
* Constructs the clipboard.
*
- * @param size
- * @param origin
+ * @param size the dimensions of the clipboard (should be at least 1 on every dimension)
+ * @param origin the origin point where the copy was made, which must be the
+ * {@link CuboidRegion#getMinimumPoint()} relative to the copy
*/
public CuboidClipboard(Vector size, Vector origin) {
+ checkNotNull(size);
+ checkNotNull(origin);
+
this.size = size;
data = new BaseBlock[size.getBlockX()][size.getBlockY()][size.getBlockZ()];
this.origin = origin;
@@ -84,11 +110,16 @@ public class CuboidClipboard {
/**
* Constructs the clipboard.
*
- * @param size
- * @param origin
- * @param offset
+ * @param size the dimensions of the clipboard (should be at least 1 on every dimension)
+ * @param origin the origin point where the copy was made, which must be the
+ * {@link CuboidRegion#getMinimumPoint()} relative to the copy
+ * @param offset the offset from the minimum point of the copy where the user was
*/
public CuboidClipboard(Vector size, Vector origin, Vector offset) {
+ checkNotNull(size);
+ checkNotNull(origin);
+ checkNotNull(offset);
+
this.size = size;
data = new BaseBlock[size.getBlockX()][size.getBlockY()][size.getBlockZ()];
this.origin = origin;
@@ -127,6 +158,7 @@ public class CuboidClipboard {
*
* @param angle in degrees
*/
+ @SuppressWarnings("deprecation")
public void rotate2D(int angle) {
angle = angle % 360;
if (angle % 90 != 0) { // Can only rotate 90 degrees at the moment
@@ -196,7 +228,10 @@ public class CuboidClipboard {
* @param dir direction to flip
* @param aroundPlayer flip the offset around the player
*/
+ @SuppressWarnings("deprecation")
public void flip(FlipDirection dir, boolean aroundPlayer) {
+ checkNotNull(dir);
+
final int width = getWidth();
final int length = getLength();
final int height = getHeight();
@@ -303,7 +338,7 @@ public class CuboidClipboard {
/**
* Copies blocks to the clipboard.
*
- * @param editSession The EditSession from which to take the blocks
+ * @param editSession the EditSession from which to take the blocks
*/
public void copy(EditSession editSession) {
for (int x = 0; x < size.getBlockX(); ++x) {
@@ -337,21 +372,38 @@ public class CuboidClipboard {
}
}
- public void paste(EditSession editSession, Vector newOrigin, boolean noAir)
- throws MaxChangedBlocksException {
+ /**
+ * Paste the clipboard at the given location using the given {@code EditSession}.
+ *
+ * This method blocks the server/game until the entire clipboard is
+ * pasted. In the future, {@link ForwardExtentCopy} will be recommended,
+ * which, if combined with the proposed operation scheduler framework,
+ * will not freeze the game/server.
+ *
+ * @param editSession the EditSession to which blocks are to be copied to
+ * @param newOrigin the new origin point (must correspond to the minimum point of the cuboid)
+ * @param noAir true to not copy air blocks in the source
+ * @throws MaxChangedBlocksException thrown if too many blocks were changed
+ */
+ public void paste(EditSession editSession, Vector newOrigin, boolean noAir) throws MaxChangedBlocksException {
paste(editSession, newOrigin, noAir, false);
}
/**
- * Paste from the clipboard.
+ * Paste the clipboard at the given location using the given {@code EditSession}.
*
- * @param editSession
- * @param newOrigin Position to paste it from
- * @param noAir True to not paste air
- * @throws MaxChangedBlocksException
+ * This method blocks the server/game until the entire clipboard is
+ * pasted. In the future, {@link ForwardExtentCopy} will be recommended,
+ * which, if combined with the proposed operation scheduler framework,
+ * will not freeze the game/server.
+ *
+ * @param editSession the EditSession to which blocks are to be copied to
+ * @param newOrigin the new origin point (must correspond to the minimum point of the cuboid)
+ * @param noAir true to not copy air blocks in the source
+ * @param entities true to copy entities
+ * @throws MaxChangedBlocksException thrown if too many blocks were changed
*/
- public void paste(EditSession editSession, Vector newOrigin, boolean noAir, boolean entities)
- throws MaxChangedBlocksException {
+ public void paste(EditSession editSession, Vector newOrigin, boolean noAir, boolean entities) throws MaxChangedBlocksException {
place(editSession, newOrigin.add(offset), noAir);
if (entities) {
pasteEntities(newOrigin.add(offset));
@@ -359,14 +411,19 @@ public class CuboidClipboard {
}
/**
- * Places the blocks in a position from the minimum corner.
+ * Paste the clipboard at the given location using the given {@code EditSession}.
*
- * @param editSession
- * @param pos
- * @param noAir
- * @throws MaxChangedBlocksException
+ * This method blocks the server/game until the entire clipboard is
+ * pasted. In the future, {@link ForwardExtentCopy} will be recommended,
+ * which, if combined with the proposed operation scheduler framework,
+ * will not freeze the game/server.
+ *
+ * @param editSession the EditSession to which blocks are to be copied to
+ * @param newOrigin the new origin point (must correspond to the minimum point of the cuboid)
+ * @param noAir true to not copy air blocks in the source
+ * @throws MaxChangedBlocksException thrown if too many blocks were changed
*/
- public void place(EditSession editSession, Vector pos, boolean noAir) throws MaxChangedBlocksException {
+ public void place(EditSession editSession, Vector newOrigin, boolean noAir) throws MaxChangedBlocksException {
for (int x = 0; x < size.getBlockX(); ++x) {
for (int y = 0; y < size.getBlockY(); ++y) {
for (int z = 0; z < size.getBlockZ(); ++z) {
@@ -379,37 +436,50 @@ public class CuboidClipboard {
continue;
}
- editSession.setBlock(new Vector(x, y, z).add(pos), block);
+ editSession.setBlock(new Vector(x, y, z).add(newOrigin), block);
}
}
}
}
- public LocalEntity[] pasteEntities(Vector pos) {
+ /**
+ * Paste the stored entities to the given position.
+ *
+ * @param newOrigin the new origin
+ * @return a list of entities that were pasted
+ */
+ public LocalEntity[] pasteEntities(Vector newOrigin) {
LocalEntity[] entities = new LocalEntity[this.entities.size()];
for (int i = 0; i < this.entities.size(); ++i) {
CopiedEntity copied = this.entities.get(i);
- if (copied.entity.spawn(copied.entity.getPosition().setPosition(copied.relativePosition.add(pos)))) {
+ if (copied.entity.spawn(copied.entity.getPosition().setPosition(copied.relativePosition.add(newOrigin)))) {
entities[i] = copied.entity;
}
}
return entities;
}
+ /**
+ * Store an entity.
+ *
+ * @param entity the entity
+ */
public void storeEntity(LocalEntity entity) {
this.entities.add(new CopiedEntity(entity));
}
/**
- * Get one point in the copy.
+ * Get the block at the given position.
*
- * @param The point, relative to the origin of the copy (0, 0, 0) and not to the actual copy origin.
+ * If the position is out of bounds, air will be returned.
+ *
+ * @param position the point, relative to the origin of the copy (0, 0, 0) and not to the actual copy origin
* @return air, if this block was outside the (non-cuboid) selection while copying
* @throws ArrayIndexOutOfBoundsException if the position is outside the bounds of the CuboidClipboard
* @deprecated Use {@link #getBlock(Vector)} instead
*/
- public BaseBlock getPoint(Vector pos) throws ArrayIndexOutOfBoundsException {
- final BaseBlock block = getBlock(pos);
+ public BaseBlock getPoint(Vector position) throws ArrayIndexOutOfBoundsException {
+ final BaseBlock block = getBlock(position);
if (block == null) {
return new BaseBlock(BlockID.AIR);
}
@@ -418,30 +488,32 @@ public class CuboidClipboard {
}
/**
- * Get one point in the copy.
+ * Get the block at the given position.
*
- * @param The point, relative to the origin of the copy (0, 0, 0) and not to the actual copy origin.
+ * If the position is out of bounds, air will be returned.
+ *
+ * @param position the point, relative to the origin of the copy (0, 0, 0) and not to the actual copy origin
* @return null, if this block was outside the (non-cuboid) selection while copying
* @throws ArrayIndexOutOfBoundsException if the position is outside the bounds of the CuboidClipboard
*/
- public BaseBlock getBlock(Vector pos) throws ArrayIndexOutOfBoundsException {
- return data[pos.getBlockX()][pos.getBlockY()][pos.getBlockZ()];
+ public BaseBlock getBlock(Vector position) throws ArrayIndexOutOfBoundsException {
+ return data[position.getBlockX()][position.getBlockY()][position.getBlockZ()];
}
/**
- * Set one point in the copy. Pass null to remove the block.
+ * Set the block at a position in the clipboard.
*
- * @param The point, relative to the origin of the copy (0, 0, 0) and not to the actual copy origin.
+ * @param position the point, relative to the origin of the copy (0, 0, 0) and not to the actual copy origin.
* @throws ArrayIndexOutOfBoundsException if the position is outside the bounds of the CuboidClipboard
*/
- public void setBlock(Vector pt, BaseBlock block) {
- data[pt.getBlockX()][pt.getBlockY()][pt.getBlockZ()] = block;
+ public void setBlock(Vector position, BaseBlock block) {
+ data[position.getBlockX()][position.getBlockY()][position.getBlockZ()] = block;
}
/**
- * Get the size of the copy.
+ * Get the dimensions of the clipboard.
*
- * @return
+ * @return the dimensions, where (1, 1, 1) is 1 wide, 1 across, 1 deep
*/
public Vector getSize() {
return size;
@@ -450,30 +522,37 @@ public class CuboidClipboard {
/**
* Saves the clipboard data to a .schematic-format file.
*
- * @param path
- * @throws IOException
- * @throws DataException
+ * @param path the path to the file to save
+ * @throws IOException thrown on I/O error
+ * @throws DataException thrown on error writing the data for other reasons
+ * @deprecated use {@link SchematicFormat#MCEDIT}
*/
@Deprecated
public void saveSchematic(File path) throws IOException, DataException {
+ checkNotNull(path);
SchematicFormat.MCEDIT.save(this, path);
}
/**
* Load a .schematic file into a clipboard.
*
- * @param path
- * @return clipboard
- * @throws DataException
- * @throws IOException
+ * @param path the path to the file to load
+ * @return a clipboard
+ * @throws IOException thrown on I/O error
+ * @throws DataException thrown on error writing the data for other reasons
+ * @deprecated use {@link SchematicFormat#MCEDIT}
*/
@Deprecated
- public static CuboidClipboard loadSchematic(File path)
- throws DataException, IOException {
+ public static CuboidClipboard loadSchematic(File path) throws DataException, IOException {
+ checkNotNull(path);
return SchematicFormat.MCEDIT.load(path);
}
/**
+ * Get the origin point, which corresponds to where the copy was
+ * originally copied from. The origin is the lowest possible X, Y, and
+ * Z components of the cuboid region that was copied.
+ *
* @return the origin
*/
public Vector getOrigin() {
@@ -481,39 +560,45 @@ public class CuboidClipboard {
}
/**
+ * Set the origin point, which corresponds to where the copy was
+ * originally copied from. The origin is the lowest possible X, Y, and
+ * Z components of the cuboid region that was copied.
+ *
* @param origin the origin to set
*/
public void setOrigin(Vector origin) {
+ checkNotNull(origin);
this.origin = origin;
}
/**
- * @return the offset
+ * Get the offset of the player to the clipboard's minimum point
+ * (minimum X, Y, Z coordinates).
+ *
+ * The offset is inverse (multiplied by -1).
+ *
+ * @return the offset the offset
*/
public Vector getOffset() {
return offset;
}
/**
- * @param offset
+ * Set the offset of the player to the clipboard's minimum point
+ * (minimum X, Y, Z coordinates).
+ *
+ * The offset is inverse (multiplied by -1).
+ *
+ * @param offset the new offset
*/
public void setOffset(Vector offset) {
this.offset = offset;
}
- private class CopiedEntity {
- private final LocalEntity entity;
- private final Vector relativePosition;
-
- public CopiedEntity(LocalEntity entity) {
- this.entity = entity;
- this.relativePosition = entity.getPosition().getPosition().subtract(getOrigin());
- }
- }
/**
* Get the block distribution inside a clipboard.
*
- * @return
+ * @return a block distribution
*/
public List> getBlockDistribution() {
List> distribution = new ArrayList>();
@@ -553,7 +638,7 @@ public class CuboidClipboard {
/**
* Get the block distribution inside a clipboard with data values.
*
- * @return
+ * @return a block distribution
*/
// TODO reduce code duplication
public List> getBlockDistributionWithData() {
@@ -591,4 +676,18 @@ public class CuboidClipboard {
return distribution;
}
+
+ /**
+ * Stores a copied entity.
+ */
+ private class CopiedEntity {
+ private final LocalEntity entity;
+ private final Vector relativePosition;
+
+ private CopiedEntity(LocalEntity entity) {
+ this.entity = entity;
+ this.relativePosition = entity.getPosition().getPosition().subtract(getOrigin());
+ }
+ }
+
}
diff --git a/src/main/java/com/sk89q/worldedit/DisallowedItemException.java b/src/main/java/com/sk89q/worldedit/DisallowedItemException.java
index 5b7cf5bc3..294c08924 100644
--- a/src/main/java/com/sk89q/worldedit/DisallowedItemException.java
+++ b/src/main/java/com/sk89q/worldedit/DisallowedItemException.java
@@ -20,11 +20,9 @@
package com.sk89q.worldedit;
/**
- *
- * @author sk89q
+ * Thrown when a disallowed item is used.
*/
public class DisallowedItemException extends WorldEditException {
- private static final long serialVersionUID = -8080026411461549979L;
private String type;
@@ -40,4 +38,5 @@ public class DisallowedItemException extends WorldEditException {
public String getID() {
return type;
}
+
}
diff --git a/src/main/java/com/sk89q/worldedit/EditSession.java b/src/main/java/com/sk89q/worldedit/EditSession.java
index e946f11d3..f537341f3 100644
--- a/src/main/java/com/sk89q/worldedit/EditSession.java
+++ b/src/main/java/com/sk89q/worldedit/EditSession.java
@@ -88,10 +88,10 @@ import static com.sk89q.worldedit.regions.Regions.*;
/**
* An {@link Extent} that handles history, {@link BlockBag}s, change limits,
* block re-ordering, and much more. Most operations in WorldEdit use this class.
- *
- * Most of the actual functionality is implemented with a number of other
+ *
+ * Most of the actual functionality is implemented with a number of other
* {@link Extent}s that are chained together. For example, history is logged
- * using the {@link ChangeSetExtent}.
+ * using the {@link ChangeSetExtent}.
*/
@SuppressWarnings("FieldCanBeLocal")
public class EditSession implements Extent {
diff --git a/src/main/java/com/sk89q/worldedit/EditSessionFactory.java b/src/main/java/com/sk89q/worldedit/EditSessionFactory.java
index a3c6120c2..c1d4ead5c 100644
--- a/src/main/java/com/sk89q/worldedit/EditSessionFactory.java
+++ b/src/main/java/com/sk89q/worldedit/EditSessionFactory.java
@@ -30,10 +30,10 @@ import static com.google.common.base.Preconditions.checkNotNull;
/**
* Creates new {@link EditSession}s. To get an instance of this factory,
* use {@link WorldEdit#getEditSessionFactory()}.
- *
- * It is no longer possible to replace the instance of this in WorldEdit
+ *
+ * It is no longer possible to replace the instance of this in WorldEdit
* with a custom one. Use {@link EditSessionEvent} to override
- * the creation of {@link EditSession}s.
+ * the creation of {@link EditSession}s.
*/
public class EditSessionFactory {
diff --git a/src/main/java/com/sk89q/worldedit/EmptyClipboardException.java b/src/main/java/com/sk89q/worldedit/EmptyClipboardException.java
index b9816cbce..bc9d021c5 100644
--- a/src/main/java/com/sk89q/worldedit/EmptyClipboardException.java
+++ b/src/main/java/com/sk89q/worldedit/EmptyClipboardException.java
@@ -20,10 +20,8 @@
package com.sk89q.worldedit;
/**
- *
- * @author Albert
+ * Thrown when there is no clipboard set.
*/
public class EmptyClipboardException extends WorldEditException {
- private static final long serialVersionUID = -3197424556127109425L;
}
diff --git a/src/main/java/com/sk89q/worldedit/IncompleteRegionException.java b/src/main/java/com/sk89q/worldedit/IncompleteRegionException.java
index 5387fe661..f76d495cc 100644
--- a/src/main/java/com/sk89q/worldedit/IncompleteRegionException.java
+++ b/src/main/java/com/sk89q/worldedit/IncompleteRegionException.java
@@ -21,10 +21,7 @@ package com.sk89q.worldedit;
/**
* Raised when a region is not fully defined.
- *
- * @author sk89q
*/
public class IncompleteRegionException extends WorldEditException {
- private static final long serialVersionUID = 458988897980179094L;
}
diff --git a/src/main/java/com/sk89q/worldedit/InvalidItemException.java b/src/main/java/com/sk89q/worldedit/InvalidItemException.java
index 8b31fd9f6..536ea19ea 100644
--- a/src/main/java/com/sk89q/worldedit/InvalidItemException.java
+++ b/src/main/java/com/sk89q/worldedit/InvalidItemException.java
@@ -20,13 +20,12 @@
package com.sk89q.worldedit;
/**
- *
- * @author sk89q
+ * Thrown when an invalid item is specified.
*/
public class InvalidItemException extends DisallowedItemException {
- private static final long serialVersionUID = -2739618871154124586L;
public InvalidItemException(String type, String message) {
super(type, message);
}
+
}
diff --git a/src/main/java/com/sk89q/worldedit/LocalConfiguration.java b/src/main/java/com/sk89q/worldedit/LocalConfiguration.java
index a89123841..f27bb5808 100644
--- a/src/main/java/com/sk89q/worldedit/LocalConfiguration.java
+++ b/src/main/java/com/sk89q/worldedit/LocalConfiguration.java
@@ -29,10 +29,9 @@ import java.util.Set;
/**
* Represents WorldEdit's configuration.
- *
- * @author sk89q
*/
public abstract class LocalConfiguration {
+
protected static final int[] defaultDisallowedBlocks = new int[] {
// dangerous stuff (physics/drops items)
BlockID.SAPLING,
@@ -114,16 +113,17 @@ public abstract class LocalConfiguration {
public boolean allowSymlinks = false;
/**
- * Loads the configuration.
+ * Load the configuration.
*/
public abstract void load();
/**
* Get the working directory to work from.
*
- * @return
+ * @return a working directory
*/
public File getWorkingDirectory() {
return new File(".");
}
+
}
diff --git a/src/main/java/com/sk89q/worldedit/LocalEntity.java b/src/main/java/com/sk89q/worldedit/LocalEntity.java
index b038387e5..dcddfde2a 100644
--- a/src/main/java/com/sk89q/worldedit/LocalEntity.java
+++ b/src/main/java/com/sk89q/worldedit/LocalEntity.java
@@ -19,10 +19,17 @@
package com.sk89q.worldedit;
+import com.sk89q.worldedit.entity.BaseEntity;
+import com.sk89q.worldedit.entity.Entity;
+
/**
- * @author zml2008
+ * Holds an entity.
+ *
+ * @deprecated replaced with the new entity API using {@link Entity} and {@link BaseEntity}
*/
+@Deprecated
public abstract class LocalEntity {
+
private final Location position;
protected LocalEntity(Location position) {
@@ -38,4 +45,5 @@ public abstract class LocalEntity {
}
public abstract boolean spawn(Location loc);
+
}
diff --git a/src/main/java/com/sk89q/worldedit/LocalPlayer.java b/src/main/java/com/sk89q/worldedit/LocalPlayer.java
index 49c7e28bc..b7df2ed9b 100644
--- a/src/main/java/com/sk89q/worldedit/LocalPlayer.java
+++ b/src/main/java/com/sk89q/worldedit/LocalPlayer.java
@@ -26,7 +26,7 @@ import com.sk89q.worldedit.extension.platform.Actor;
/**
* Represents a player that uses WorldEdit.
*
- * @deprecated Use {@link Actor} (or {@link Player}, etc.) instead (and {@link AbstractPlayerActor} to extend)
+ * @deprecated use {@link Actor} (or {@link Player}, etc.) instead (and {@link AbstractPlayerActor} to extend)
*/
@Deprecated
public abstract class LocalPlayer extends AbstractPlayerActor {
diff --git a/src/main/java/com/sk89q/worldedit/LocalSession.java b/src/main/java/com/sk89q/worldedit/LocalSession.java
index 5b4a709e0..5cbfea2eb 100644
--- a/src/main/java/com/sk89q/worldedit/LocalSession.java
+++ b/src/main/java/com/sk89q/worldedit/LocalSession.java
@@ -25,6 +25,7 @@ import com.sk89q.jchronic.utils.Span;
import com.sk89q.jchronic.utils.Time;
import com.sk89q.worldedit.command.tool.BlockTool;
import com.sk89q.worldedit.command.tool.BrushTool;
+import com.sk89q.worldedit.command.tool.InvalidToolBindException;
import com.sk89q.worldedit.command.tool.SinglePickaxe;
import com.sk89q.worldedit.command.tool.Tool;
import com.sk89q.worldedit.entity.Player;
@@ -315,8 +316,6 @@ public class LocalSession {
return selector;
}
-
-
/**
* @deprecated use {@link #getRegionSelector(World)}
*/
diff --git a/src/main/java/com/sk89q/worldedit/MaxBrushRadiusException.java b/src/main/java/com/sk89q/worldedit/MaxBrushRadiusException.java
index 4e1cd73fa..e2b6ac65f 100644
--- a/src/main/java/com/sk89q/worldedit/MaxBrushRadiusException.java
+++ b/src/main/java/com/sk89q/worldedit/MaxBrushRadiusException.java
@@ -20,10 +20,8 @@
package com.sk89q.worldedit;
/**
- *
* Thrown when a maximum radius for a brush is reached.
- *
*/
public class MaxBrushRadiusException extends MaxRadiusException {
- private static final long serialVersionUID = 1L;
+
}
diff --git a/src/main/java/com/sk89q/worldedit/MaxChangedBlocksException.java b/src/main/java/com/sk89q/worldedit/MaxChangedBlocksException.java
index 6bca8d69d..6eab37672 100644
--- a/src/main/java/com/sk89q/worldedit/MaxChangedBlocksException.java
+++ b/src/main/java/com/sk89q/worldedit/MaxChangedBlocksException.java
@@ -20,19 +20,29 @@
package com.sk89q.worldedit;
/**
- *
- * @author sk89q
+ * Thrown when too many blocks are changed (which may be limited
+ * due to the configuration).
*/
public class MaxChangedBlocksException extends WorldEditException {
- private static final long serialVersionUID = -2621044030640945259L;
int maxBlocks;
+ /**
+ * Create a new instance.
+ *
+ * @param maxBlocks the maximum number of blocks that can be changed
+ */
public MaxChangedBlocksException(int maxBlocks) {
this.maxBlocks = maxBlocks;
}
+ /**
+ * Get the limit.
+ *
+ * @return the maximum number of blocks that can be changed
+ */
public int getBlockLimit() {
return maxBlocks;
}
+
}
diff --git a/src/main/java/com/sk89q/worldedit/MaxRadiusException.java b/src/main/java/com/sk89q/worldedit/MaxRadiusException.java
index 6c6307696..5c6a36e7d 100644
--- a/src/main/java/com/sk89q/worldedit/MaxRadiusException.java
+++ b/src/main/java/com/sk89q/worldedit/MaxRadiusException.java
@@ -20,10 +20,9 @@
package com.sk89q.worldedit;
/**
- * Thrown when a maximum radius is reached.
- *
- * @author sk89q
+ * Thrown when a maximum radius is reached, such as, for example,
+ * in the case of a sphere command.
*/
public class MaxRadiusException extends WorldEditException {
- private static final long serialVersionUID = -8405382841529528119L;
+
}
diff --git a/src/main/java/com/sk89q/worldedit/NotABlockException.java b/src/main/java/com/sk89q/worldedit/NotABlockException.java
index 0c0728411..583b10ea3 100644
--- a/src/main/java/com/sk89q/worldedit/NotABlockException.java
+++ b/src/main/java/com/sk89q/worldedit/NotABlockException.java
@@ -19,16 +19,34 @@
package com.sk89q.worldedit;
+/**
+ * Raised when an item is used when a block was expected.
+ */
public class NotABlockException extends WorldEditException {
+
+ /**
+ * Create a new instance.
+ */
public NotABlockException() {
super("This item is not a block.");
}
- public NotABlockException(String type) {
- super("The item '"+type+"' is not a block.");
+ /**
+ * Create a new instance.
+ *
+ * @param input the input that was used
+ */
+ public NotABlockException(String input) {
+ super("The item '" + input + "' is not a block.");
}
- public NotABlockException(int typeId) {
- super("The item with the ID "+typeId+" is not a block.");
+ /**
+ * Create a new instance.
+ *
+ * @param input the input that was used
+ */
+ public NotABlockException(int input) {
+ super("The item with the ID " + input + " is not a block.");
}
+
}
diff --git a/src/main/java/com/sk89q/worldedit/PlayerDirection.java b/src/main/java/com/sk89q/worldedit/PlayerDirection.java
index 03e5cc5ce..d7fbdb422 100644
--- a/src/main/java/com/sk89q/worldedit/PlayerDirection.java
+++ b/src/main/java/com/sk89q/worldedit/PlayerDirection.java
@@ -19,10 +19,15 @@
package com.sk89q.worldedit;
+import com.sk89q.worldedit.util.Direction;
+
/**
- * Direction.
+ * The player's direction.
+ *
+ * In the future, this class will be replaced with {@link Direction}.
*/
public enum PlayerDirection {
+
NORTH(new Vector(0, 0, -1), new Vector(-1, 0, 0), true),
NORTH_EAST((new Vector(1, 0, -1)).normalize(), (new Vector(-1, 0, -1)).normalize(), false),
EAST(new Vector(1, 0, 0), new Vector(0, 0, -1), true),
@@ -56,4 +61,5 @@ public enum PlayerDirection {
public boolean isOrthogonal() {
return isOrthogonal;
}
+
}
diff --git a/src/main/java/com/sk89q/worldedit/PlayerNeededException.java b/src/main/java/com/sk89q/worldedit/PlayerNeededException.java
deleted file mode 100644
index c370ea02a..000000000
--- a/src/main/java/com/sk89q/worldedit/PlayerNeededException.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * WorldEdit, a Minecraft world manipulation toolkit
- * Copyright (C) sk89q
- * Copyright (C) WorldEdit team and contributors
- *
- * This program is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by the
- * Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-
-package com.sk89q.worldedit;
-
-/**
- * Thrown when an operation is run that needs an actual player, not a console.
- *
- */
-public class PlayerNeededException extends RuntimeException {
- private static final long serialVersionUID = 1L;
-
- public PlayerNeededException() {
- super("This command cannot be run on the console.");
- }
-}
diff --git a/src/main/java/com/sk89q/worldedit/UnknownBiomeTypeException.java b/src/main/java/com/sk89q/worldedit/UnknownBiomeTypeException.java
deleted file mode 100644
index 8c219d31c..000000000
--- a/src/main/java/com/sk89q/worldedit/UnknownBiomeTypeException.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * WorldEdit, a Minecraft world manipulation toolkit
- * Copyright (C) sk89q
- * Copyright (C) WorldEdit team and contributors
- *
- * This program is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by the
- * Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-
-package com.sk89q.worldedit;
-
-public class UnknownBiomeTypeException extends WorldEditException {
- private static final long serialVersionUID = -6239229394330814896L;
-
- private String typeName;
-
- public UnknownBiomeTypeException(String typeName) {
- super("Unknown " + typeName + " biome type.");
- this.typeName = typeName;
- }
-
- public String getTypeName() {
- return typeName;
- }
-
-}
diff --git a/src/main/java/com/sk89q/worldedit/UnknownDirectionException.java b/src/main/java/com/sk89q/worldedit/UnknownDirectionException.java
index 551f3b405..49c323d17 100644
--- a/src/main/java/com/sk89q/worldedit/UnknownDirectionException.java
+++ b/src/main/java/com/sk89q/worldedit/UnknownDirectionException.java
@@ -20,19 +20,28 @@
package com.sk89q.worldedit;
/**
- *
- * @author sk89q
+ * Thrown when an unknown direction is specified or detected.
*/
public class UnknownDirectionException extends WorldEditException {
- private static final long serialVersionUID = 5705931351293248358L;
private String dir;
+ /**
+ * Create a new instance.
+ *
+ * @param dir the input that was tried
+ */
public UnknownDirectionException(String dir) {
this.dir = dir;
}
+ /**
+ * Get the direction string that was input.
+ *
+ * @return input
+ */
public String getDirection() {
return dir;
}
+
}
diff --git a/src/main/java/com/sk89q/worldedit/UnknownItemException.java b/src/main/java/com/sk89q/worldedit/UnknownItemException.java
index 98453cbf9..aa78520bf 100644
--- a/src/main/java/com/sk89q/worldedit/UnknownItemException.java
+++ b/src/main/java/com/sk89q/worldedit/UnknownItemException.java
@@ -21,19 +21,27 @@ package com.sk89q.worldedit;
/**
* Thrown when no item exist by the ID.
- *
- * @author sk89q
*/
public class UnknownItemException extends WorldEditException {
- private static final long serialVersionUID = 2661079183700565880L;
private String type;
+ /**
+ * Create a new instance.
+ *
+ * @param type the input that was provided
+ */
public UnknownItemException(String type) {
this.type = type;
}
+ /**
+ * Get the input.
+ *
+ * @return the input
+ */
public String getID() {
return type;
}
+
}
diff --git a/src/main/java/com/sk89q/worldedit/Vector.java b/src/main/java/com/sk89q/worldedit/Vector.java
index c1fd0475e..6dd084543 100644
--- a/src/main/java/com/sk89q/worldedit/Vector.java
+++ b/src/main/java/com/sk89q/worldedit/Vector.java
@@ -19,11 +19,15 @@
package com.sk89q.worldedit;
+import com.sk89q.worldedit.math.transform.AffineTransform;
+
+import javax.annotation.Nullable;
+
/**
- *
- * @author sk89q
+ * An immutable 3-dimensional vector.
*/
public class Vector implements Comparable {
+
public static final Vector ZERO = new Vector(0, 0, 0);
public static final Vector UNIT_X = new Vector(1, 0, 0);
public static final Vector UNIT_Y = new Vector(0, 1, 0);
@@ -33,11 +37,11 @@ public class Vector implements Comparable {
protected final double x, y, z;
/**
- * Construct the Vector object.
+ * Construct an instance.
*
- * @param x
- * @param y
- * @param z
+ * @param x the X coordinate
+ * @param y the Y coordinate
+ * @param z the Z coordinate
*/
public Vector(double x, double y, double z) {
this.x = x;
@@ -46,11 +50,11 @@ public class Vector implements Comparable {
}
/**
- * Construct the Vector object.
+ * Construct an instance.
*
- * @param x
- * @param y
- * @param z
+ * @param x the X coordinate
+ * @param y the Y coordinate
+ * @param z the Z coordinate
*/
public Vector(int x, int y, int z) {
this.x = (double) x;
@@ -59,11 +63,11 @@ public class Vector implements Comparable {
}
/**
- * Construct the Vector object.
+ * Construct an instance.
*
- * @param x
- * @param y
- * @param z
+ * @param x the X coordinate
+ * @param y the Y coordinate
+ * @param z the Z coordinate
*/
public Vector(float x, float y, float z) {
this.x = (double) x;
@@ -72,18 +76,20 @@ public class Vector implements Comparable {
}
/**
- * Construct the Vector object.
+ * Copy another vector.
*
- * @param pt
+ * @param other another vector to make a copy of
*/
- public Vector(Vector pt) {
- this.x = pt.x;
- this.y = pt.y;
- this.z = pt.z;
+ public Vector(Vector other) {
+ this.x = other.x;
+ this.y = other.y;
+ this.z = other.z;
}
/**
- * Construct the Vector object.
+ * Construct a new instance with X, Y, and Z coordinates set to 0.
+ *
+ * One can also refer to a static {@link #ZERO}.
*/
public Vector() {
this.x = 0;
@@ -92,33 +98,37 @@ public class Vector implements Comparable {
}
/**
- * @return the x
+ * Get the X coordinate.
+ *
+ * @return the x coordinate
*/
public double getX() {
return x;
}
/**
- * @return the x
+ * Get the X coordinate rounded.
+ *
+ * @return the x coordinate
*/
public int getBlockX() {
return (int) Math.round(x);
}
/**
- * Set X.
+ * Set the X coordinate.
*
- * @param x
- * @return new vector
+ * @param x the new X
+ * @return a new vector
*/
public Vector setX(double x) {
return new Vector(x, y, z);
}
/**
- * Set X.
+ * Set the X coordinate.
*
- * @param x
+ * @param x the X coordinate
* @return new vector
*/
public Vector setX(int x) {
@@ -126,315 +136,331 @@ public class Vector implements Comparable {
}
/**
- * @return the y
+ * Get the Y coordinate.
+ *
+ * @return the y coordinate
*/
public double getY() {
return y;
}
/**
- * @return the y
+ * Get the Y coordinate rounded.
+ *
+ * @return the y coordinate
*/
public int getBlockY() {
return (int) Math.round(y);
}
/**
- * Set Y.
+ * Set the Y coordinate.
*
- * @param y
- * @return new vector
+ * @param y the new Y
+ * @return a new vector
*/
public Vector setY(double y) {
return new Vector(x, y, z);
}
/**
- * Set Y.
+ * Set the Y coordinate.
*
- * @param y
- * @return new vector
+ * @param y the new Y
+ * @return a new vector
*/
public Vector setY(int y) {
return new Vector(x, y, z);
}
/**
- * @return the z
+ * Get the Z coordinate.
+ *
+ * @return the z coordinate
*/
public double getZ() {
return z;
}
/**
- * @return the z
+ * Get the Z coordinate rounded.
+ *
+ * @return the z coordinate
*/
public int getBlockZ() {
return (int) Math.round(z);
}
/**
- * Set Z.
+ * Set the Z coordinate.
*
- * @param z
- * @return new vector
+ * @param z the new Z
+ * @return a new vector
*/
public Vector setZ(double z) {
return new Vector(x, y, z);
}
/**
- * Set Z.
+ * Set the Z coordinate.
*
- * @param z
- * @return new vector
+ * @param z the new Z
+ * @return a new vector
*/
public Vector setZ(int z) {
return new Vector(x, y, z);
}
/**
- * Adds two points.
+ * Add another vector to this vector and return the result as a new vector.
*
- * @param other
- * @return New point
+ * @param other the other vector
+ * @return a new vector
*/
public Vector add(Vector other) {
return new Vector(x + other.x, y + other.y, z + other.z);
}
/**
- * Adds two points.
+ * Add another vector to this vector and return the result as a new vector.
*
- * @param x
- * @param y
- * @param z
- * @return New point
+ * @param x the value to add
+ * @param y the value to add
+ * @param z the value to add
+ * @return a new vector
*/
public Vector add(double x, double y, double z) {
return new Vector(this.x + x, this.y + y, this.z + z);
}
/**
- * Adds two points.
+ * Add another vector to this vector and return the result as a new vector.
*
- * @param x
- * @param y
- * @param z
- * @return New point
+ * @param x the value to add
+ * @param y the value to add
+ * @param z the value to add
+ * @return a new vector
*/
public Vector add(int x, int y, int z) {
return new Vector(this.x + x, this.y + y, this.z + z);
}
/**
- * Adds points.
+ * Add a list of vectors to this vector and return the
+ * result as a new vector.
*
- * @param others
- * @return New point
+ * @param others an array of vectors
+ * @return a new vector
*/
public Vector add(Vector... others) {
double newX = x, newY = y, newZ = z;
- for (int i = 0; i < others.length; ++i) {
- newX += others[i].x;
- newY += others[i].y;
- newZ += others[i].z;
+ for (Vector other : others) {
+ newX += other.x;
+ newY += other.y;
+ newZ += other.z;
}
+
return new Vector(newX, newY, newZ);
}
/**
- * Subtracts two points.
+ * Subtract another vector from this vector and return the result
+ * as a new vector.
*
- * @param other
- * @return New point
+ * @param other the other vector
+ * @return a new vector
*/
public Vector subtract(Vector other) {
return new Vector(x - other.x, y - other.y, z - other.z);
}
/**
- * Subtract two points.
+ * Subtract another vector from this vector and return the result
+ * as a new vector.
*
- * @param x
- * @param y
- * @param z
- * @return New point
+ * @param x the value to subtract
+ * @param y the value to subtract
+ * @param z the value to subtract
+ * @return a new vector
*/
public Vector subtract(double x, double y, double z) {
return new Vector(this.x - x, this.y - y, this.z - z);
}
/**
- * Subtract two points.
+ * Subtract another vector from this vector and return the result
+ * as a new vector.
*
- * @param x
- * @param y
- * @param z
- * @return New point
+ * @param x the value to subtract
+ * @param y the value to subtract
+ * @param z the value to subtract
+ * @return a new vector
*/
public Vector subtract(int x, int y, int z) {
return new Vector(this.x - x, this.y - y, this.z - z);
}
/**
- * Subtract points.
+ * Subtract a list of vectors from this vector and return the result
+ * as a new vector.
*
- * @param others
- * @return New point
+ * @param others an array of vectors
+ * @return a new vector
*/
public Vector subtract(Vector... others) {
double newX = x, newY = y, newZ = z;
- for (int i = 0; i < others.length; ++i) {
- newX -= others[i].x;
- newY -= others[i].y;
- newZ -= others[i].z;
+ for (Vector other : others) {
+ newX -= other.x;
+ newY -= other.y;
+ newZ -= other.z;
}
+
return new Vector(newX, newY, newZ);
}
/**
- * Component-wise multiplication
+ * Multiply this vector by another vector on each component.
*
- * @param other
- * @return New point
+ * @param other the other vector
+ * @return a new vector
*/
public Vector multiply(Vector other) {
return new Vector(x * other.x, y * other.y, z * other.z);
}
/**
- * Component-wise multiplication
+ * Multiply this vector by another vector on each component.
*
- * @param x
- * @param y
- * @param z
- * @return New point
+ * @param x the value to multiply
+ * @param y the value to multiply
+ * @param z the value to multiply
+ * @return a new vector
*/
public Vector multiply(double x, double y, double z) {
return new Vector(this.x * x, this.y * y, this.z * z);
}
/**
- * Component-wise multiplication
+ * Multiply this vector by another vector on each component.
*
- * @param x
- * @param y
- * @param z
- * @return New point
+ * @param x the value to multiply
+ * @param y the value to multiply
+ * @param z the value to multiply
+ * @return a new vector
*/
public Vector multiply(int x, int y, int z) {
return new Vector(this.x * x, this.y * y, this.z * z);
}
/**
- * Component-wise multiplication
+ * Multiply this vector by zero or more vectors on each component.
*
- * @param others
- * @return New point
+ * @param others an array of vectors
+ * @return a new vector
*/
public Vector multiply(Vector... others) {
double newX = x, newY = y, newZ = z;
- for (int i = 0; i < others.length; ++i) {
- newX *= others[i].x;
- newY *= others[i].y;
- newZ *= others[i].z;
+ for (Vector other : others) {
+ newX *= other.x;
+ newY *= other.y;
+ newZ *= other.z;
}
+
return new Vector(newX, newY, newZ);
}
/**
- * Scalar multiplication.
+ * Perform scalar multiplication and return a new vector.
*
- * @param n
- * @return New point
+ * @param n the value to multiply
+ * @return a new vector
*/
public Vector multiply(double n) {
return new Vector(this.x * n, this.y * n, this.z * n);
}
/**
- * Scalar multiplication.
+ * Perform scalar multiplication and return a new vector.
*
- * @param n
- * @return New point
+ * @param n the value to multiply
+ * @return a new vector
*/
public Vector multiply(float n) {
return new Vector(this.x * n, this.y * n, this.z * n);
}
/**
- * Scalar multiplication.
+ * Perform scalar multiplication and return a new vector.
*
- * @param n
- * @return New point
+ * @param n the value to multiply
+ * @return a new vector
*/
public Vector multiply(int n) {
return new Vector(this.x * n, this.y * n, this.z * n);
}
/**
- * Component-wise division
+ * Divide this vector by another vector on each component.
*
- * @param other
- * @return New point
+ * @param other the other vector
+ * @return a new vector
*/
public Vector divide(Vector other) {
return new Vector(x / other.x, y / other.y, z / other.z);
}
/**
- * Component-wise division
+ * Divide this vector by another vector on each component.
*
- * @param x
- * @param y
- * @param z
- * @return New point
+ * @param x the value to divide by
+ * @param y the value to divide by
+ * @param z the value to divide by
+ * @return a new vector
*/
public Vector divide(double x, double y, double z) {
return new Vector(this.x / x, this.y / y, this.z / z);
}
/**
- * Component-wise division
+ * Divide this vector by another vector on each component.
*
- * @param x
- * @param y
- * @param z
- * @return New point
+ * @param x the value to divide by
+ * @param y the value to divide by
+ * @param z the value to divide by
+ * @return a new vector
*/
public Vector divide(int x, int y, int z) {
return new Vector(this.x / x, this.y / y, this.z / z);
}
/**
- * Scalar division.
+ * Perform scalar division and return a new vector.
*
- * @param n
- * @return new point
+ * @param n the value to divide by
+ * @return a new vector
*/
public Vector divide(int n) {
return new Vector(x / n, y / n, z / n);
}
/**
- * Scalar division.
+ * Perform scalar division and return a new vector.
*
- * @param n
- * @return new point
+ * @param n the value to divide by
+ * @return a new vector
*/
public Vector divide(double n) {
return new Vector(x / n, y / n, z / n);
}
/**
- * Scalar division.
+ * Perform scalar division and return a new vector.
*
- * @param n
- * @return new point
+ * @param n the value to divide by
+ * @return a new vector
*/
public Vector divide(float n) {
return new Vector(x / n, y / n, z / n);
@@ -450,42 +476,43 @@ public class Vector implements Comparable {
}
/**
- * Get the length^2 of the vector.
+ * Get the length, squared, of the vector.
*
- * @return length^2
+ * @return length, squared
*/
public double lengthSq() {
return x * x + y * y + z * z;
}
/**
- * Get the distance away from a point.
+ * Get the distance between this vector and another vector.
*
- * @param pt
+ * @param other the other vector
* @return distance
*/
- public double distance(Vector pt) {
- return Math.sqrt(Math.pow(pt.x - x, 2) +
- Math.pow(pt.y - y, 2) +
- Math.pow(pt.z - z, 2));
+ public double distance(Vector other) {
+ return Math.sqrt(Math.pow(other.x - x, 2) +
+ Math.pow(other.y - y, 2) +
+ Math.pow(other.z - z, 2));
}
/**
- * Get the distance away from a point, squared.
+ * Get the distance between this vector and another vector, squared.
*
- * @param pt
+ * @param other the other vector
* @return distance
*/
- public double distanceSq(Vector pt) {
- return Math.pow(pt.x - x, 2) +
- Math.pow(pt.y - y, 2) +
- Math.pow(pt.z - z, 2);
+ public double distanceSq(Vector other) {
+ return Math.pow(other.x - x, 2) +
+ Math.pow(other.y - y, 2) +
+ Math.pow(other.z - z, 2);
}
/**
- * Get the normalized vector.
+ * Get the normalized vector, which is the vector divided by its
+ * length, as a new vector.
*
- * @return vector
+ * @return a new vector
*/
public Vector normalize() {
return divide(length());
@@ -494,7 +521,7 @@ public class Vector implements Comparable {
/**
* Gets the dot product of this and another vector.
*
- * @param other
+ * @param other the other vector
* @return the dot product of this and the other vector
*/
public double dot(Vector other) {
@@ -504,7 +531,7 @@ public class Vector implements Comparable {
/**
* Gets the cross product of this and another vector.
*
- * @param other
+ * @param other the other vector
* @return the cross product of this and the other vector
*/
public Vector cross(Vector other) {
@@ -518,22 +545,21 @@ public class Vector implements Comparable {
/**
* Checks to see if a vector is contained with another.
*
- * @param min
- * @param max
- * @return
+ * @param min the minimum point (X, Y, and Z are the lowest)
+ * @param max the maximum point (X, Y, and Z are the lowest)
+ * @return true if the vector is contained
*/
public boolean containedWithin(Vector min, Vector max) {
- return x >= min.x && x <= max.x
- && y >= min.y && y <= max.y
- && z >= min.z && z <= max.z;
+ return x >= min.x && x <= max.x && y >= min.y && y <= max.y && z >= min.z && z <= max.z;
}
/**
- * Checks to see if a vector is contained with another.
+ * Checks to see if a vector is contained with another, comparing
+ * using discrete comparisons, inclusively.
*
- * @param min
- * @param max
- * @return
+ * @param min the minimum point (X, Y, and Z are the lowest)
+ * @param max the maximum point (X, Y, and Z are the lowest)
+ * @return true if the vector is contained
*/
public boolean containedWithinBlock(Vector min, Vector max) {
return getBlockX() >= min.getBlockX() && getBlockX() <= max.getBlockX()
@@ -544,18 +570,18 @@ public class Vector implements Comparable {
/**
* Clamp the Y component.
*
- * @param min
- * @param max
- * @return
+ * @param min the minimum value
+ * @param max the maximum value
+ * @return a new vector
*/
public Vector clampY(int min, int max) {
return new Vector(x, Math.max(min, Math.min(max, y)), z);
}
/**
- * Rounds all components down.
+ * Floors the values of all components.
*
- * @return
+ * @return a new vector
*/
public Vector floor() {
return new Vector(Math.floor(x), Math.floor(y), Math.floor(z));
@@ -564,41 +590,43 @@ public class Vector implements Comparable {
/**
* Rounds all components up.
*
- * @return
+ * @return a new vector
*/
public Vector ceil() {
return new Vector(Math.ceil(x), Math.ceil(y), Math.ceil(z));
}
/**
- * Rounds all components to the closest integer.
- *
- * Components < 0.5 are rounded down, otherwise up
+ * Rounds all components to the closest integer.
*
- * @return
+ * Components < 0.5 are rounded down, otherwise up.
+ *
+ * @return a new vector
*/
public Vector round() {
return new Vector(Math.floor(x + 0.5), Math.floor(y + 0.5), Math.floor(z + 0.5));
}
/**
- * Returns a vector with the absolute values of the components of this vector.
+ * Returns a vector with the absolute values of the components of
+ * this vector.
*
- * @return
+ * @return a new vector
*/
public Vector positive() {
return new Vector(Math.abs(x), Math.abs(y), Math.abs(z));
}
/**
- * 2D transformation.
+ * Perform a 2D transformation on this vector and return a new one.
*
* @param angle in degrees
* @param aboutX about which x coordinate to rotate
* @param aboutZ about which z coordinate to rotate
* @param translateX what to add after rotation
* @param translateZ what to add after rotation
- * @return
+ * @return a new vector
+ * @see AffineTransform another method to transform vectors
*/
public Vector transform2D(double angle, double aboutX, double aboutZ, double translateX, double translateZ) {
angle = Math.toRadians(angle);
@@ -614,6 +642,12 @@ public class Vector implements Comparable {
);
}
+ /**
+ * Returns whether this vector is collinear with another vector.
+ *
+ * @param other the other vector
+ * @return true if collinear
+ */
public boolean isCollinearWith(Vector other) {
if (x == 0 && y == 0 && z == 0) {
// this is a zero vector
@@ -686,12 +720,12 @@ public class Vector implements Comparable {
}
/**
- * Get a block point from a point.
+ * Create a new {@code BlockVector} using the given components.
*
- * @param x
- * @param y
- * @param z
- * @return point
+ * @param x the X coordinate
+ * @param y the Y coordinate
+ * @param z the Z coordinate
+ * @return a new {@code BlockVector}
*/
public static BlockVector toBlockPoint(double x, double y, double z) {
return new BlockVector(
@@ -702,9 +736,9 @@ public class Vector implements Comparable {
}
/**
- * Get a block point from a point.
+ * Create a new {@code BlockVector} from this vector.
*
- * @return point
+ * @return a new {@code BlockVector}
*/
public BlockVector toBlockPoint() {
return new BlockVector(
@@ -715,11 +749,23 @@ public class Vector implements Comparable {
}
/**
- * Checks if another object is equivalent.
+ * Create a new {@code BlockVector} from this vector.
*
- * @param obj
- * @return whether the other object is equivalent
+ * @return a new {@code BlockVector}
*/
+ public BlockVector toBlockVector() {
+ return new BlockVector(this);
+ }
+
+ /**
+ * Creates a 2D vector by dropping the Y component from this vector.
+ *
+ * @return a new {@code Vector2D}
+ */
+ public Vector2D toVector2D() {
+ return new Vector2D(x, z);
+ }
+
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Vector)) {
@@ -731,18 +777,16 @@ public class Vector implements Comparable {
}
@Override
- public int compareTo(Vector other) {
+ public int compareTo(@Nullable Vector other) {
+ if (other == null) {
+ throw new IllegalArgumentException("null not supported");
+ }
if (y != other.y) return Double.compare(y, other.y);
if (z != other.z) return Double.compare(z, other.z);
if (x != other.x) return Double.compare(x, other.x);
return 0;
}
- /**
- * Gets the hash code.
- *
- * @return hash code
- */
@Override
public int hashCode() {
int hash = 7;
@@ -753,76 +797,53 @@ public class Vector implements Comparable {
return hash;
}
- /**
- * Returns string representation "(x, y, z)".
- *
- * @return string
- */
@Override
public String toString() {
return "(" + x + ", " + y + ", " + z + ")";
}
- /**
- * Gets a BlockVector version.
- *
- * @return BlockVector
- */
- public BlockVector toBlockVector() {
- return new BlockVector(this);
- }
-
- /**
- * Creates a 2D vector by dropping the Y component from this vector.
- *
- * @return Vector2D
- */
- public Vector2D toVector2D() {
- return new Vector2D(x, z);
- }
-
/**
* Gets the minimum components of two vectors.
*
- * @param v1
- * @param v2
+ * @param v1 the first vector
+ * @param v2 the second vector
* @return minimum
*/
public static Vector getMinimum(Vector v1, Vector v2) {
return new Vector(
- Math.min(v1.x, v2.x),
- Math.min(v1.y, v2.y),
- Math.min(v1.z, v2.z)
+ Math.min(v1.x, v2.x),
+ Math.min(v1.y, v2.y),
+ Math.min(v1.z, v2.z)
);
}
/**
* Gets the maximum components of two vectors.
*
- * @param v1
- * @param v2
+ * @param v1 the first vector
+ * @param v2 the second vector
* @return maximum
*/
public static Vector getMaximum(Vector v1, Vector v2) {
return new Vector(
- Math.max(v1.x, v2.x),
- Math.max(v1.y, v2.y),
- Math.max(v1.z, v2.z)
+ Math.max(v1.x, v2.x),
+ Math.max(v1.y, v2.y),
+ Math.max(v1.z, v2.z)
);
}
/**
* Gets the midpoint of two vectors.
*
- * @param v1
- * @param v2
+ * @param v1 the first vector
+ * @param v2 the second vector
* @return maximum
*/
public static Vector getMidpoint(Vector v1, Vector v2) {
return new Vector(
- (v1.x + v2.x) / 2,
- (v1.y + v2.y) / 2,
- (v1.z + v2.z) / 2
+ (v1.x + v2.x) / 2,
+ (v1.y + v2.y) / 2,
+ (v1.z + v2.z) / 2
);
}
diff --git a/src/main/java/com/sk89q/worldedit/Vector2D.java b/src/main/java/com/sk89q/worldedit/Vector2D.java
index 77ba862a1..cf1f98097 100644
--- a/src/main/java/com/sk89q/worldedit/Vector2D.java
+++ b/src/main/java/com/sk89q/worldedit/Vector2D.java
@@ -19,9 +19,10 @@
package com.sk89q.worldedit;
+import com.sk89q.worldedit.math.transform.AffineTransform;
+
/**
- *
- * @author sk89q
+ * An immutable 2-dimensional vector.
*/
public class Vector2D {
public static final Vector2D ZERO = new Vector2D(0, 0);
@@ -32,10 +33,10 @@ public class Vector2D {
protected final double x, z;
/**
- * Construct the Vector2D object.
+ * Construct an instance.
*
- * @param x
- * @param z
+ * @param x the X coordinate
+ * @param z the Z coordinate
*/
public Vector2D(double x, double z) {
this.x = x;
@@ -43,10 +44,10 @@ public class Vector2D {
}
/**
- * Construct the Vector2D object.
+ * Construct an instance.
*
- * @param x
- * @param z
+ * @param x the X coordinate
+ * @param z the Z coordinate
*/
public Vector2D(int x, int z) {
this.x = (double) x;
@@ -54,10 +55,10 @@ public class Vector2D {
}
/**
- * Construct the Vector2D object.
+ * Construct an instance.
*
- * @param x
- * @param z
+ * @param x the X coordinate
+ * @param z the Z coordinate
*/
public Vector2D(float x, float z) {
this.x = (double) x;
@@ -65,17 +66,19 @@ public class Vector2D {
}
/**
- * Construct the Vector2D object.
+ * Copy another vector.
*
- * @param pt
+ * @param other the other vector
*/
- public Vector2D(Vector2D pt) {
- this.x = pt.x;
- this.z = pt.z;
+ public Vector2D(Vector2D other) {
+ this.x = other.x;
+ this.z = other.z;
}
/**
- * Construct the Vector2D object.
+ * Construct a new instance with X and Z coordinates set to 0.
+ *
+ * One can also refer to a static {@link #ZERO}.
*/
public Vector2D() {
this.x = 0;
@@ -83,304 +86,320 @@ public class Vector2D {
}
/**
- * @return the x
+ * Get the X coordinate.
+ *
+ * @return the x coordinate
*/
public double getX() {
return x;
}
/**
- * @return the x
+ * Get the X coordinate rounded.
+ *
+ * @return the x coordinate
*/
public int getBlockX() {
return (int) Math.round(x);
}
/**
- * Set X.
+ * Set the X coordinate.
*
- * @param x
- * @return new vector
+ * @param x the new X
+ * @return a new vector
*/
public Vector2D setX(double x) {
return new Vector2D(x, z);
}
/**
- * Set X.
+ * Set the X coordinate.
*
- * @param x
- * @return new vector
+ * @param x the new X
+ * @return a new vector
*/
public Vector2D setX(int x) {
return new Vector2D(x, z);
}
/**
- * @return the z
+ * Get the Z coordinate.
+ *
+ * @return the z coordinate
*/
public double getZ() {
return z;
}
/**
- * @return the z
+ * Get the Z coordinate rounded.
+ *
+ * @return the z coordinate
*/
public int getBlockZ() {
return (int) Math.round(z);
}
/**
- * Set Z.
+ * Set the Z coordinate.
*
- * @param z
- * @return new vector
+ * @param z the new Z
+ * @return a new vector
*/
public Vector2D setZ(double z) {
return new Vector2D(x, z);
}
/**
- * Set Z.
+ * Set the Z coordinate.
*
- * @param z
- * @return new vector
+ * @param z the new Z
+ * @return a new vector
*/
public Vector2D setZ(int z) {
return new Vector2D(x, z);
}
/**
- * Adds two points.
+ * Add another vector to this vector and return the result as a new vector.
*
- * @param other
- * @return New point
+ * @param other the other vector
+ * @return a new vector
*/
public Vector2D add(Vector2D other) {
return new Vector2D(x + other.x, z + other.z);
}
/**
- * Adds two points.
+ * Add another vector to this vector and return the result as a new vector.
*
- * @param x
- * @param z
- * @return New point
+ * @param x the value to add
+ * @param z the value to add
+ * @return a new vector
*/
public Vector2D add(double x, double z) {
return new Vector2D(this.x + x, this.z + z);
}
/**
- * Adds two points.
+ * Add another vector to this vector and return the result as a new vector.
*
- * @param x
- * @param z
- * @return New point
+ * @param x the value to add
+ * @param z the value to add
+ * @return a new vector
*/
public Vector2D add(int x, int z) {
return new Vector2D(this.x + x, this.z + z);
}
/**
- * Adds points.
+ * Add a list of vectors to this vector and return the
+ * result as a new vector.
*
- * @param others
- * @return New point
+ * @param others an array of vectors
+ * @return a new vector
*/
public Vector2D add(Vector2D... others) {
double newX = x, newZ = z;
- for (int i = 0; i < others.length; ++i) {
- newX += others[i].x;
- newZ += others[i].z;
+ for (Vector2D other : others) {
+ newX += other.x;
+ newZ += other.z;
}
+
return new Vector2D(newX, newZ);
}
/**
- * Subtracts two points.
+ * Subtract another vector from this vector and return the result
+ * as a new vector.
*
- * @param other
- * @return New point
+ * @param other the other vector
+ * @return a new vector
*/
public Vector2D subtract(Vector2D other) {
return new Vector2D(x - other.x, z - other.z);
}
/**
- * Subtract two points.
+ * Subtract another vector from this vector and return the result
+ * as a new vector.
*
- * @param x
- * @param z
- * @return New point
+ * @param x the value to subtract
+ * @param z the value to subtract
+ * @return a new vector
*/
public Vector2D subtract(double x, double z) {
return new Vector2D(this.x - x, this.z - z);
}
/**
- * Subtract two points.
+ * Subtract another vector from this vector and return the result
+ * as a new vector.
*
- * @param x
- * @param z
- * @return New point
+ * @param x the value to subtract
+ * @param z the value to subtract
+ * @return a new vector
*/
public Vector2D subtract(int x, int z) {
return new Vector2D(this.x - x, this.z - z);
}
/**
- * Subtract points.
+ * Subtract a list of vectors from this vector and return the result
+ * as a new vector.
*
- * @param others
- * @return New point
+ * @param others an array of vectors
+ * @return a new vector
*/
public Vector2D subtract(Vector2D... others) {
double newX = x, newZ = z;
- for (int i = 0; i < others.length; ++i) {
- newX -= others[i].x;
- newZ -= others[i].z;
+ for (Vector2D other : others) {
+ newX -= other.x;
+ newZ -= other.z;
}
+
return new Vector2D(newX, newZ);
}
/**
- * Component-wise multiplication
+ * Multiply this vector by another vector on each component.
*
- * @param other
- * @return New point
+ * @param other the other vector
+ * @return a new vector
*/
public Vector2D multiply(Vector2D other) {
return new Vector2D(x * other.x, z * other.z);
}
/**
- * Component-wise multiplication
+ * Multiply this vector by another vector on each component.
*
- * @param x
- * @param z
- * @return New point
+ * @param x the value to multiply
+ * @param z the value to multiply
+ * @return a new vector
*/
public Vector2D multiply(double x, double z) {
return new Vector2D(this.x * x, this.z * z);
}
/**
- * Component-wise multiplication
+ * Multiply this vector by another vector on each component.
*
- * @param x
- * @param z
- * @return New point
+ * @param x the value to multiply
+ * @param z the value to multiply
+ * @return a new vector
*/
public Vector2D multiply(int x, int z) {
return new Vector2D(this.x * x, this.z * z);
}
/**
- * Component-wise multiplication
+ * Multiply this vector by zero or more vectors on each component.
*
- * @param others
- * @return New point
+ * @param others an array of vectors
+ * @return a new vector
*/
public Vector2D multiply(Vector2D... others) {
double newX = x, newZ = z;
- for (int i = 0; i < others.length; ++i) {
- newX *= others[i].x;
- newZ *= others[i].z;
+ for (Vector2D other : others) {
+ newX *= other.x;
+ newZ *= other.z;
}
+
return new Vector2D(newX, newZ);
}
/**
- * Scalar multiplication.
+ * Perform scalar multiplication and return a new vector.
*
- * @param n
- * @return New point
+ * @param n the value to multiply
+ * @return a new vector
*/
public Vector2D multiply(double n) {
return new Vector2D(this.x * n, this.z * n);
}
/**
- * Scalar multiplication.
+ * Perform scalar multiplication and return a new vector.
*
- * @param n
- * @return New point
+ * @param n the value to multiply
+ * @return a new vector
*/
public Vector2D multiply(float n) {
return new Vector2D(this.x * n, this.z * n);
}
/**
- * Scalar multiplication.
+ * Perform scalar multiplication and return a new vector.
*
- * @param n
- * @return New point
+ * @param n the value to multiply
+ * @return a new vector
*/
public Vector2D multiply(int n) {
return new Vector2D(this.x * n, this.z * n);
}
/**
- * Component-wise division
+ * Divide this vector by another vector on each component.
*
- * @param other
- * @return New point
+ * @param other the other vector
+ * @return a new vector
*/
public Vector2D divide(Vector2D other) {
return new Vector2D(x / other.x, z / other.z);
}
/**
- * Component-wise division
+ * Divide this vector by another vector on each component.
*
- * @param x
- * @param z
- * @return New point
+ * @param x the value to divide by
+ * @param z the value to divide by
+ * @return a new vector
*/
public Vector2D divide(double x, double z) {
return new Vector2D(this.x / x, this.z / z);
}
/**
- * Component-wise division
+ * Divide this vector by another vector on each component.
*
- * @param x
- * @param z
- * @return New point
+ * @param x the value to divide by
+ * @param z the value to divide by
+ * @return a new vector
*/
public Vector2D divide(int x, int z) {
return new Vector2D(this.x / x, this.z / z);
}
/**
- * Scalar division.
+ * Perform scalar division and return a new vector.
*
- * @param n
- * @return new point
+ * @param n the value to divide by
+ * @return a new vector
*/
public Vector2D divide(int n) {
return new Vector2D(x / n, z / n);
}
/**
- * Scalar division.
+ * Perform scalar division and return a new vector.
*
- * @param n
- * @return new point
+ * @param n the value to divide by
+ * @return a new vector
*/
public Vector2D divide(double n) {
return new Vector2D(x / n, z / n);
}
/**
- * Scalar division.
+ * Perform scalar division and return a new vector.
*
- * @param n
- * @return new point
+ * @param n the value to divide by
+ * @return a new vector
*/
public Vector2D divide(float n) {
return new Vector2D(x / n, z / n);
@@ -396,40 +415,40 @@ public class Vector2D {
}
/**
- * Get the length^2 of the vector.
+ * Get the length, squared, of the vector.
*
- * @return length^2
+ * @return length, squared
*/
public double lengthSq() {
return x * x + z * z;
}
/**
- * Get the distance away from a point.
+ * Get the distance between this vector and another vector.
*
- * @param pt
+ * @param other the other vector
* @return distance
*/
- public double distance(Vector2D pt) {
- return Math.sqrt(Math.pow(pt.x - x, 2) +
- Math.pow(pt.z - z, 2));
+ public double distance(Vector2D other) {
+ return Math.sqrt(Math.pow(other.x - x, 2) + Math.pow(other.z - z, 2));
}
/**
- * Get the distance away from a point, squared.
+ * Get the distance between this vector and another vector, squared.
*
- * @param pt
+ * @param other the other vector
* @return distance
*/
- public double distanceSq(Vector2D pt) {
- return Math.pow(pt.x - x, 2) +
- Math.pow(pt.z - z, 2);
+ public double distanceSq(Vector2D other) {
+ return Math.pow(other.x - x, 2) +
+ Math.pow(other.z - z, 2);
}
/**
- * Get the normalized vector.
+ * Get the normalized vector, which is the vector divided by its
+ * length, as a new vector.
*
- * @return vector
+ * @return a new vector
*/
public Vector2D normalize() {
return divide(length());
@@ -438,7 +457,7 @@ public class Vector2D {
/**
* Gets the dot product of this and another vector.
*
- * @param other
+ * @param other the other vector
* @return the dot product of this and the other vector
*/
public double dot(Vector2D other) {
@@ -448,9 +467,9 @@ public class Vector2D {
/**
* Checks to see if a vector is contained with another.
*
- * @param min
- * @param max
- * @return
+ * @param min the minimum point (X, Y, and Z are the lowest)
+ * @param max the maximum point (X, Y, and Z are the lowest)
+ * @return true if the vector is contained
*/
public boolean containedWithin(Vector2D min, Vector2D max) {
return x >= min.x && x <= max.x
@@ -460,9 +479,9 @@ public class Vector2D {
/**
* Checks to see if a vector is contained with another.
*
- * @param min
- * @param max
- * @return
+ * @param min the minimum point (X, Y, and Z are the lowest)
+ * @param max the maximum point (X, Y, and Z are the lowest)
+ * @return true if the vector is contained
*/
public boolean containedWithinBlock(Vector2D min, Vector2D max) {
return getBlockX() >= min.getBlockX() && getBlockX() <= max.getBlockX()
@@ -470,9 +489,9 @@ public class Vector2D {
}
/**
- * Rounds all components down.
+ * Floors the values of all components.
*
- * @return
+ * @return a new vector
*/
public Vector2D floor() {
return new Vector2D(Math.floor(x), Math.floor(z));
@@ -481,41 +500,43 @@ public class Vector2D {
/**
* Rounds all components up.
*
- * @return
+ * @return a new vector
*/
public Vector2D ceil() {
return new Vector2D(Math.ceil(x), Math.ceil(z));
}
/**
- * Rounds all components to the closest integer.
- *
- * Components < 0.5 are rounded down, otherwise up
+ * Rounds all components to the closest integer.
*
- * @return
+ * Components < 0.5 are rounded down, otherwise up.
+ *
+ * @return a new vector
*/
public Vector2D round() {
return new Vector2D(Math.floor(x + 0.5), Math.floor(z + 0.5));
}
/**
- * Returns a vector with the absolute values of the components of this vector.
+ * Returns a vector with the absolute values of the components of
+ * this vector.
*
- * @return
+ * @return a new vector
*/
public Vector2D positive() {
return new Vector2D(Math.abs(x), Math.abs(z));
}
/**
- * 2D transformation.
+ * Perform a 2D transformation on this vector and return a new one.
*
* @param angle in degrees
* @param aboutX about which x coordinate to rotate
* @param aboutZ about which z coordinate to rotate
* @param translateX what to add after rotation
* @param translateZ what to add after rotation
- * @return
+ * @return a new vector
+ * @see AffineTransform another method to transform vectors
*/
public Vector2D transform2D(double angle, double aboutX, double aboutZ, double translateX, double translateZ) {
angle = Math.toRadians(angle);
@@ -529,6 +550,12 @@ public class Vector2D {
);
}
+ /**
+ * Returns whether this vector is collinear with another vector.
+ *
+ * @param other the other vector
+ * @return true if collinear
+ */
public boolean isCollinearWith(Vector2D other) {
if (x == 0 && z == 0) {
// this is a zero vector
@@ -560,20 +587,32 @@ public class Vector2D {
}
/**
- * Gets a BlockVector version.
+ * Create a new {@code BlockVector2D} from this vector.
*
- * @return BlockVector
+ * @return a new {@code BlockVector2D}
*/
public BlockVector2D toBlockVector2D() {
return new BlockVector2D(this);
}
/**
- * Checks if another object is equivalent.
+ * Creates a 3D vector by adding a zero Y component to this vector.
*
- * @param obj
- * @return whether the other object is equivalent
+ * @return a new vector
*/
+ public Vector toVector() {
+ return new Vector(x, 0, z);
+ }
+
+ /**
+ * Creates a 3D vector by adding the specified Y component to this vector.
+ *
+ * @return a new vector
+ */
+ public Vector toVector(double y) {
+ return new Vector(x, y, z);
+ }
+
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Vector2D)) {
@@ -585,50 +624,22 @@ public class Vector2D {
}
- /**
- * Gets the hash code.
- *
- * @return hash code
- */
@Override
public int hashCode() {
return ((new Double(x)).hashCode() >> 13) ^
(new Double(z)).hashCode();
}
- /**
- * Returns string representation "(x, y, z)".
- *
- * @return string
- */
@Override
public String toString() {
return "(" + x + ", " + z + ")";
}
- /**
- * Creates a 3D vector by adding a zero Y component to this vector.
- *
- * @return Vector
- */
- public Vector toVector() {
- return new Vector(x, 0, z);
- }
-
- /**
- * Creates a 3D vector by adding the specified Y component to this vector.
- *
- * @return Vector
- */
- public Vector toVector(double y) {
- return new Vector(x, y, z);
- }
-
/**
* Gets the minimum components of two vectors.
*
- * @param v1
- * @param v2
+ * @param v1 the first vector
+ * @param v2 the second vector
* @return minimum
*/
public static Vector2D getMinimum(Vector2D v1, Vector2D v2) {
@@ -641,8 +652,8 @@ public class Vector2D {
/**
* Gets the maximum components of two vectors.
*
- * @param v1
- * @param v2
+ * @param v1 the first vector
+ * @param v2 the second vector
* @return maximum
*/
public static Vector2D getMaximum(Vector2D v1, Vector2D v2) {
@@ -651,4 +662,5 @@ public class Vector2D {
Math.max(v1.z, v2.z)
);
}
+
}
diff --git a/src/main/java/com/sk89q/worldedit/VectorFace.java b/src/main/java/com/sk89q/worldedit/VectorFace.java
index f29ad84ff..e0a3ba3a6 100644
--- a/src/main/java/com/sk89q/worldedit/VectorFace.java
+++ b/src/main/java/com/sk89q/worldedit/VectorFace.java
@@ -19,12 +19,15 @@
package com.sk89q.worldedit;
+import com.sk89q.worldedit.util.Direction;
+
/**
* Represents the adjacency of one vector to another. Works similarly to
* Bukkit's BlockFace class.
*
- * @author wizjany
+ * @deprecated to be replaced with {@link Direction}
*/
+@Deprecated
public enum VectorFace {
NORTH(-1, 0, 0),
EAST(0, 0, -1),
diff --git a/src/main/java/com/sk89q/worldedit/WorldEdit.java b/src/main/java/com/sk89q/worldedit/WorldEdit.java
index dd87aa225..30c077abd 100644
--- a/src/main/java/com/sk89q/worldedit/WorldEdit.java
+++ b/src/main/java/com/sk89q/worldedit/WorldEdit.java
@@ -45,6 +45,10 @@ import com.sk89q.worldedit.scripting.RhinoCraftScriptEngine;
import com.sk89q.worldedit.session.SessionManager;
import com.sk89q.worldedit.session.request.Request;
import com.sk89q.worldedit.util.eventbus.EventBus;
+import com.sk89q.worldedit.util.io.file.FileSelectionAbortedException;
+import com.sk89q.worldedit.util.io.file.FilenameException;
+import com.sk89q.worldedit.util.io.file.FilenameResolutionException;
+import com.sk89q.worldedit.util.io.file.InvalidFilenameException;
import com.sk89q.worldedit.util.logging.WorldEditPrefixHandler;
import com.sk89q.worldedit.world.registry.BundledBlockData;
@@ -66,16 +70,16 @@ import static com.sk89q.worldedit.event.platform.Interaction.OPEN;
/**
* The entry point and container for a working implementation of WorldEdit.
- *
- * An instance handles event handling; block, mask, pattern, etc. registration;
+ *
+ * An instance handles event handling; block, mask, pattern, etc. registration;
* the management of sessions; the creation of {@link EditSession}s; and more.
* In order to use WorldEdit, at least one {@link Platform} must be registered
* with WorldEdit using {@link PlatformManager#register(Platform)} on the
- * manager retrieved using {@link WorldEdit#getPlatformManager()}.
- *
- * An instance of WorldEdit can be retrieved using the static
+ * manager retrieved using {@link WorldEdit#getPlatformManager()}.
+ *
+ * An instance of WorldEdit can be retrieved using the static
* method {@link WorldEdit#getInstance()}, which is shared among all
- * platforms within the same classloader hierarchy.
+ * platforms within the same classloader hierarchy.
*/
public class WorldEdit {
@@ -104,10 +108,10 @@ public class WorldEdit {
/**
* Gets the current instance of this class.
- *
- * An instance will always be available, but no platform may yet be
+ *
+ * An instance will always be available, but no platform may yet be
* registered with WorldEdit, meaning that a number of operations
- * may fail. However, event handlers can be registered.
+ * may fail. However, event handlers can be registered.
*
* @return an instance of WorldEdit.
*/
@@ -128,8 +132,8 @@ public class WorldEdit {
/**
* Get the event bus for WorldEdit.
- *
- * Event handlers can be registered on the event bus.
+ *
+ * Event handlers can be registered on the event bus.
*
* @return the event bus
*/
diff --git a/src/main/java/com/sk89q/worldedit/WorldEditNotInstalled.java b/src/main/java/com/sk89q/worldedit/WorldEditNotInstalled.java
deleted file mode 100644
index b956b0b3a..000000000
--- a/src/main/java/com/sk89q/worldedit/WorldEditNotInstalled.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * WorldEdit, a Minecraft world manipulation toolkit
- * Copyright (C) sk89q
- * Copyright (C) WorldEdit team and contributors
- *
- * This program is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by the
- * Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-
-package com.sk89q.worldedit;
-
-/**
- * Raised when WorldEdit is not installed.
- *
- * @author sk89q
- */
-public class WorldEditNotInstalled extends WorldEditException {
- private static final long serialVersionUID = -4698408698930848121L;
-
-}
diff --git a/src/main/java/com/sk89q/worldedit/WorldEditOperation.java b/src/main/java/com/sk89q/worldedit/WorldEditOperation.java
index f325d1541..26628f017 100644
--- a/src/main/java/com/sk89q/worldedit/WorldEditOperation.java
+++ b/src/main/java/com/sk89q/worldedit/WorldEditOperation.java
@@ -22,9 +22,12 @@ package com.sk89q.worldedit;
/**
* Represents a WorldEdit operation.
*
- * @author sk89q
+ * @deprecated This will be removed with no direct replacement. Please use the
+ * WorldEdit API.
*/
+@Deprecated
public abstract class WorldEditOperation {
- public abstract void run(LocalSession session,
- LocalPlayer player, EditSession editSession) throws Throwable;
+
+ public abstract void run(LocalSession session, LocalPlayer player, EditSession editSession) throws Throwable;
+
}
diff --git a/src/main/java/com/sk89q/worldedit/WorldVector2D.java b/src/main/java/com/sk89q/worldedit/WorldVector2D.java
index 718304fd9..72cc761f6 100644
--- a/src/main/java/com/sk89q/worldedit/WorldVector2D.java
+++ b/src/main/java/com/sk89q/worldedit/WorldVector2D.java
@@ -19,11 +19,12 @@
package com.sk89q.worldedit;
+/**
+ * @deprecated Use {@link com.sk89q.worldedit.util.Location} wherever possible
+ */
+@Deprecated
public class WorldVector2D extends Vector2D {
- /**
- * Represents the world.
- */
protected LocalWorld world;
public WorldVector2D(LocalWorld world) {
diff --git a/src/main/java/com/sk89q/worldedit/WorldVectorFace.java b/src/main/java/com/sk89q/worldedit/WorldVectorFace.java
index 3e61eda5b..db21a075d 100644
--- a/src/main/java/com/sk89q/worldedit/WorldVectorFace.java
+++ b/src/main/java/com/sk89q/worldedit/WorldVectorFace.java
@@ -20,12 +20,11 @@
package com.sk89q.worldedit;
/**
- * A WorldVector that emphasizes one side of the block
+ * @deprecated Use {@link com.sk89q.worldedit.util.Location} wherever possible
*/
+@Deprecated
public class WorldVectorFace extends WorldVector {
- /**
- * Represents the side.
- */
+
private VectorFace face;
/**
diff --git a/src/main/java/com/sk89q/worldedit/MobType.java b/src/main/java/com/sk89q/worldedit/blocks/metadata/MobType.java
similarity index 97%
rename from src/main/java/com/sk89q/worldedit/MobType.java
rename to src/main/java/com/sk89q/worldedit/blocks/metadata/MobType.java
index f85f8b12c..b498c9d7d 100644
--- a/src/main/java/com/sk89q/worldedit/MobType.java
+++ b/src/main/java/com/sk89q/worldedit/blocks/metadata/MobType.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.sk89q.worldedit;
+package com.sk89q.worldedit.blocks.metadata;
/**
* Represents the possible types of mobs.
diff --git a/src/main/java/com/sk89q/worldedit/command/SchematicCommands.java b/src/main/java/com/sk89q/worldedit/command/SchematicCommands.java
index 67e8ba20f..459ecf72c 100644
--- a/src/main/java/com/sk89q/worldedit/command/SchematicCommands.java
+++ b/src/main/java/com/sk89q/worldedit/command/SchematicCommands.java
@@ -24,8 +24,8 @@ import com.sk89q.minecraft.util.commands.CommandContext;
import com.sk89q.minecraft.util.commands.CommandException;
import com.sk89q.minecraft.util.commands.CommandPermissions;
import com.sk89q.worldedit.EditSession;
-import com.sk89q.worldedit.FilenameException;
-import com.sk89q.worldedit.FilenameResolutionException;
+import com.sk89q.worldedit.util.io.file.FilenameException;
+import com.sk89q.worldedit.util.io.file.FilenameResolutionException;
import com.sk89q.worldedit.LocalConfiguration;
import com.sk89q.worldedit.LocalSession;
import com.sk89q.worldedit.WorldEdit;
diff --git a/src/main/java/com/sk89q/worldedit/InvalidToolBindException.java b/src/main/java/com/sk89q/worldedit/command/tool/InvalidToolBindException.java
similarity index 92%
rename from src/main/java/com/sk89q/worldedit/InvalidToolBindException.java
rename to src/main/java/com/sk89q/worldedit/command/tool/InvalidToolBindException.java
index 02fe259a0..d86b427ce 100644
--- a/src/main/java/com/sk89q/worldedit/InvalidToolBindException.java
+++ b/src/main/java/com/sk89q/worldedit/command/tool/InvalidToolBindException.java
@@ -1,35 +1,37 @@
-/*
- * WorldEdit, a Minecraft world manipulation toolkit
- * Copyright (C) sk89q
- * Copyright (C) WorldEdit team and contributors
- *
- * This program is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by the
- * Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-
-package com.sk89q.worldedit;
-
-public class InvalidToolBindException extends WorldEditException {
- private static final long serialVersionUID = -1865311004052447699L;
-
- private int itemId;
-
- public InvalidToolBindException(int itemId, String msg) {
- super(msg);
- this.itemId = itemId;
- }
-
- public int getItemId() {
- return itemId;
- }
-}
+/*
+ * WorldEdit, a Minecraft world manipulation toolkit
+ * Copyright (C) sk89q
+ * Copyright (C) WorldEdit team and contributors
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+package com.sk89q.worldedit.command.tool;
+
+import com.sk89q.worldedit.WorldEditException;
+
+public class InvalidToolBindException extends WorldEditException {
+ private static final long serialVersionUID = -1865311004052447699L;
+
+ private int itemId;
+
+ public InvalidToolBindException(int itemId, String msg) {
+ super(msg);
+ this.itemId = itemId;
+ }
+
+ public int getItemId() {
+ return itemId;
+ }
+}
diff --git a/src/main/java/com/sk89q/worldedit/extension/factory/DefaultBlockParser.java b/src/main/java/com/sk89q/worldedit/extension/factory/DefaultBlockParser.java
index 5b21294b0..dd1dde444 100644
--- a/src/main/java/com/sk89q/worldedit/extension/factory/DefaultBlockParser.java
+++ b/src/main/java/com/sk89q/worldedit/extension/factory/DefaultBlockParser.java
@@ -21,6 +21,7 @@ package com.sk89q.worldedit.extension.factory;
import com.sk89q.worldedit.*;
import com.sk89q.worldedit.blocks.*;
+import com.sk89q.worldedit.blocks.metadata.MobType;
import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.extension.input.DisallowedUsageException;
import com.sk89q.worldedit.extension.input.InputParseException;
diff --git a/src/main/java/com/sk89q/worldedit/internal/command/WorldEditExceptionConverter.java b/src/main/java/com/sk89q/worldedit/internal/command/WorldEditExceptionConverter.java
index 393e8c134..8cd7aa2f6 100644
--- a/src/main/java/com/sk89q/worldedit/internal/command/WorldEditExceptionConverter.java
+++ b/src/main/java/com/sk89q/worldedit/internal/command/WorldEditExceptionConverter.java
@@ -23,10 +23,14 @@ import com.sk89q.minecraft.util.commands.CommandException;
import com.sk89q.worldedit.*;
import com.sk89q.worldedit.blocks.ItemType;
import com.sk89q.worldedit.command.InsufficientArgumentsException;
+import com.sk89q.worldedit.command.tool.InvalidToolBindException;
import com.sk89q.worldedit.internal.expression.ExpressionException;
import com.sk89q.worldedit.regions.RegionOperationException;
import com.sk89q.worldedit.util.command.parametric.ExceptionConverterHelper;
import com.sk89q.worldedit.util.command.parametric.ExceptionMatch;
+import com.sk89q.worldedit.util.io.file.FileSelectionAbortedException;
+import com.sk89q.worldedit.util.io.file.FilenameResolutionException;
+import com.sk89q.worldedit.util.io.file.InvalidFilenameException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -46,11 +50,6 @@ public class WorldEditExceptionConverter extends ExceptionConverterHelper {
this.worldEdit = worldEdit;
}
- @ExceptionMatch
- public void convert(PlayerNeededException e) throws CommandException {
- throw new CommandException(e.getMessage());
- }
-
@ExceptionMatch
public void convert(NumberFormatException e) throws CommandException {
final Matcher matcher = numberFormat.matcher(e.getMessage());
diff --git a/src/main/java/com/sk89q/worldedit/scripting/CraftScriptContext.java b/src/main/java/com/sk89q/worldedit/scripting/CraftScriptContext.java
index f1cfaf157..bd4725655 100644
--- a/src/main/java/com/sk89q/worldedit/scripting/CraftScriptContext.java
+++ b/src/main/java/com/sk89q/worldedit/scripting/CraftScriptContext.java
@@ -25,6 +25,7 @@ import com.sk89q.worldedit.command.InsufficientArgumentsException;
import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.extension.platform.Platform;
import com.sk89q.worldedit.patterns.Pattern;
+import com.sk89q.worldedit.util.io.file.FilenameException;
import java.io.File;
import java.util.ArrayList;
@@ -206,7 +207,7 @@ public class CraftScriptContext extends CraftScriptEnvironment {
* @param folder sub-directory to look in
* @param filename filename (user-submitted)
* @return
- * @throws FilenameException
+ * @throws FilenameException
*/
@Deprecated
public File getSafeFile(String folder, String filename) throws FilenameException {
diff --git a/src/main/java/com/sk89q/worldedit/FileSelectionAbortedException.java b/src/main/java/com/sk89q/worldedit/util/io/file/FileSelectionAbortedException.java
similarity index 94%
rename from src/main/java/com/sk89q/worldedit/FileSelectionAbortedException.java
rename to src/main/java/com/sk89q/worldedit/util/io/file/FileSelectionAbortedException.java
index 5e9d04378..e25c79002 100644
--- a/src/main/java/com/sk89q/worldedit/FileSelectionAbortedException.java
+++ b/src/main/java/com/sk89q/worldedit/util/io/file/FileSelectionAbortedException.java
@@ -1,32 +1,32 @@
-/*
- * WorldEdit, a Minecraft world manipulation toolkit
- * Copyright (C) sk89q
- * Copyright (C) WorldEdit team and contributors
- *
- * This program is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by the
- * Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-
-package com.sk89q.worldedit;
-
-public class FileSelectionAbortedException extends FilenameException {
- private static final long serialVersionUID = 7377072269988014886L;
-
- public FileSelectionAbortedException() {
- super("");
- }
-
- public FileSelectionAbortedException(String msg) {
- super("", msg);
- }
-}
+/*
+ * WorldEdit, a Minecraft world manipulation toolkit
+ * Copyright (C) sk89q
+ * Copyright (C) WorldEdit team and contributors
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+package com.sk89q.worldedit.util.io.file;
+
+public class FileSelectionAbortedException extends FilenameException {
+ private static final long serialVersionUID = 7377072269988014886L;
+
+ public FileSelectionAbortedException() {
+ super("");
+ }
+
+ public FileSelectionAbortedException(String msg) {
+ super("", msg);
+ }
+}
diff --git a/src/main/java/com/sk89q/worldedit/FilenameException.java b/src/main/java/com/sk89q/worldedit/util/io/file/FilenameException.java
similarity index 93%
rename from src/main/java/com/sk89q/worldedit/FilenameException.java
rename to src/main/java/com/sk89q/worldedit/util/io/file/FilenameException.java
index c18306ef3..1c585a0cc 100644
--- a/src/main/java/com/sk89q/worldedit/FilenameException.java
+++ b/src/main/java/com/sk89q/worldedit/util/io/file/FilenameException.java
@@ -1,40 +1,42 @@
-/*
- * WorldEdit, a Minecraft world manipulation toolkit
- * Copyright (C) sk89q
- * Copyright (C) WorldEdit team and contributors
- *
- * This program is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by the
- * Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-
-package com.sk89q.worldedit;
-
-public class FilenameException extends WorldEditException {
- private static final long serialVersionUID = 6072601657326106265L;
-
- private String filename;
-
- public FilenameException(String filename) {
- super();
- this.filename = filename;
- }
-
- public FilenameException(String filename, String msg) {
- super(msg);
- this.filename = filename;
- }
-
- public String getFilename() {
- return filename;
- }
-}
+/*
+ * WorldEdit, a Minecraft world manipulation toolkit
+ * Copyright (C) sk89q
+ * Copyright (C) WorldEdit team and contributors
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+package com.sk89q.worldedit.util.io.file;
+
+import com.sk89q.worldedit.WorldEditException;
+
+public class FilenameException extends WorldEditException {
+ private static final long serialVersionUID = 6072601657326106265L;
+
+ private String filename;
+
+ public FilenameException(String filename) {
+ super();
+ this.filename = filename;
+ }
+
+ public FilenameException(String filename, String msg) {
+ super(msg);
+ this.filename = filename;
+ }
+
+ public String getFilename() {
+ return filename;
+ }
+}
diff --git a/src/main/java/com/sk89q/worldedit/FilenameResolutionException.java b/src/main/java/com/sk89q/worldedit/util/io/file/FilenameResolutionException.java
similarity index 95%
rename from src/main/java/com/sk89q/worldedit/FilenameResolutionException.java
rename to src/main/java/com/sk89q/worldedit/util/io/file/FilenameResolutionException.java
index bbaa96bc9..b214795cb 100644
--- a/src/main/java/com/sk89q/worldedit/FilenameResolutionException.java
+++ b/src/main/java/com/sk89q/worldedit/util/io/file/FilenameResolutionException.java
@@ -1,32 +1,32 @@
-/*
- * WorldEdit, a Minecraft world manipulation toolkit
- * Copyright (C) sk89q
- * Copyright (C) WorldEdit team and contributors
- *
- * This program is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by the
- * Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-
-package com.sk89q.worldedit;
-
-public class FilenameResolutionException extends FilenameException {
- private static final long serialVersionUID = 4673670296313383121L;
-
- public FilenameResolutionException(String filename) {
- super(filename);
- }
-
- public FilenameResolutionException(String filename, String msg) {
- super(filename, msg);
- }
-}
+/*
+ * WorldEdit, a Minecraft world manipulation toolkit
+ * Copyright (C) sk89q
+ * Copyright (C) WorldEdit team and contributors
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+package com.sk89q.worldedit.util.io.file;
+
+public class FilenameResolutionException extends FilenameException {
+ private static final long serialVersionUID = 4673670296313383121L;
+
+ public FilenameResolutionException(String filename) {
+ super(filename);
+ }
+
+ public FilenameResolutionException(String filename, String msg) {
+ super(filename, msg);
+ }
+}
diff --git a/src/main/java/com/sk89q/worldedit/InvalidFilenameException.java b/src/main/java/com/sk89q/worldedit/util/io/file/InvalidFilenameException.java
similarity index 94%
rename from src/main/java/com/sk89q/worldedit/InvalidFilenameException.java
rename to src/main/java/com/sk89q/worldedit/util/io/file/InvalidFilenameException.java
index e0dae1cf9..73a3b9d46 100644
--- a/src/main/java/com/sk89q/worldedit/InvalidFilenameException.java
+++ b/src/main/java/com/sk89q/worldedit/util/io/file/InvalidFilenameException.java
@@ -1,32 +1,32 @@
-/*
- * WorldEdit, a Minecraft world manipulation toolkit
- * Copyright (C) sk89q
- * Copyright (C) WorldEdit team and contributors
- *
- * This program is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by the
- * Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-
-package com.sk89q.worldedit;
-
-public class InvalidFilenameException extends FilenameException {
- private static final long serialVersionUID = 7377072269988014886L;
-
- public InvalidFilenameException(String filename) {
- super(filename);
- }
-
- public InvalidFilenameException(String filename, String msg) {
- super(filename, msg);
- }
-}
+/*
+ * WorldEdit, a Minecraft world manipulation toolkit
+ * Copyright (C) sk89q
+ * Copyright (C) WorldEdit team and contributors
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+package com.sk89q.worldedit.util.io.file;
+
+public class InvalidFilenameException extends FilenameException {
+ private static final long serialVersionUID = 7377072269988014886L;
+
+ public InvalidFilenameException(String filename) {
+ super(filename);
+ }
+
+ public InvalidFilenameException(String filename, String msg) {
+ super(filename, msg);
+ }
+}