From 9f26fe2e282dfe448799260e3738f66265bb6f3f Mon Sep 17 00:00:00 2001 From: "hash@exultant.us" Date: Tue, 10 May 2011 22:14:25 -0500 Subject: [PATCH] Adding some new vector classes from craftbook. --- .../sk89q/worldedit/BlockWorldVector2D.java | 60 +++++++++++++ .../com/sk89q/worldedit/WorldVector2D.java | 85 +++++++++++++++++++ 2 files changed, 145 insertions(+) create mode 100644 src/main/java/com/sk89q/worldedit/BlockWorldVector2D.java create mode 100644 src/main/java/com/sk89q/worldedit/WorldVector2D.java diff --git a/src/main/java/com/sk89q/worldedit/BlockWorldVector2D.java b/src/main/java/com/sk89q/worldedit/BlockWorldVector2D.java new file mode 100644 index 000000000..54a97eca6 --- /dev/null +++ b/src/main/java/com/sk89q/worldedit/BlockWorldVector2D.java @@ -0,0 +1,60 @@ +// $Id$ +/* + * Copyright (C) 2010, 2011 sk89q + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU 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 General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +package com.sk89q.worldedit; + +public class BlockWorldVector2D extends WorldVector2D { + + public BlockWorldVector2D(LocalWorld world, double x, double z) { + super(world, x, z); + } + + public BlockWorldVector2D(LocalWorld world, float x, float z) { + super(world, x, z); + } + + public BlockWorldVector2D(LocalWorld world, int x, int z) { + super(world, x, z); + } + + public BlockWorldVector2D(LocalWorld world, Vector2D pt) { + super(world, pt); + } + + 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)) { + return false; + } + WorldVector2D other = (WorldVector2D) obj; + return other.getWorld().equals(world) + && (int) other.getX() == (int) this.x + && (int) other.getZ() == (int) this.z; + + } +} \ No newline at end of file diff --git a/src/main/java/com/sk89q/worldedit/WorldVector2D.java b/src/main/java/com/sk89q/worldedit/WorldVector2D.java new file mode 100644 index 000000000..a6b08ad07 --- /dev/null +++ b/src/main/java/com/sk89q/worldedit/WorldVector2D.java @@ -0,0 +1,85 @@ +// $Id$ +/* + * Copyright (C) 2010, 2011 sk89q + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU 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 General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +package com.sk89q.worldedit; + +public class WorldVector2D extends Vector2D { + + /** + * Represents the world. + */ + protected LocalWorld world; + + public WorldVector2D(LocalWorld world) { + super(); + this.world = world; + } + + public WorldVector2D(LocalWorld world, double x, double z) { + super(x, z); + this.world = world; + } + + public WorldVector2D(LocalWorld world, float x, float z) { + super(x, z); + this.world = world; + } + + public WorldVector2D(LocalWorld world, int x, int z) { + super(x, z); + this.world = world; + } + + public WorldVector2D(LocalWorld world, Vector2D pt) { + super(pt); + this.world = world; + } + + public LocalWorld getWorld() { + return 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)) { + return false; + } + WorldVector2D other = (WorldVector2D) obj; + return other.world.equals(world) && other.x == this.x + && other.z == this.z; + + } + + /** + * Gets the hash code. + * + * @return hash code + */ + @Override + public int hashCode() { + return (world.hashCode() >> 7) ^ + ((int)(Double.doubleToLongBits(x)^(Double.doubleToLongBits(x)>>>32)) >> 13) ^ + (int)(Double.doubleToLongBits(z)^(Double.doubleToLongBits(z)>>>32)); + } +}