Refactor vector system to be cleaner

- Move Vector, etc. into `.math` package
- Drop many methods that will be auto-promoted anyways, eg. with
`divide(int)` and `divide(double)` the first is now gone.
- Take Block vectors into their own class hierarchy
- Make it clear throughout the API what takes blockvectors
- many more improvements
This commit is contained in:
Kenzie Togami
2018-10-14 03:40:53 -07:00
parent d7c528247b
commit 399e0ad5fa
230 changed files with 4216 additions and 3913 deletions

View File

@ -19,8 +19,6 @@
package com.sk89q.worldedit.world;
import com.sk89q.worldedit.BlockVector2D;
import com.sk89q.worldedit.Vector;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.blocks.BaseItem;
import com.sk89q.worldedit.blocks.BaseItemStack;
@ -28,6 +26,9 @@ import com.sk89q.worldedit.extension.platform.Platform;
import com.sk89q.worldedit.function.mask.BlockTypeMask;
import com.sk89q.worldedit.function.mask.Mask;
import com.sk89q.worldedit.function.operation.Operation;
import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.math.Vector3;
import com.sk89q.worldedit.util.Direction;
import com.sk89q.worldedit.world.block.BlockStateHolder;
import com.sk89q.worldedit.world.block.BlockType;
@ -46,12 +47,12 @@ public abstract class AbstractWorld implements World {
private int taskId = -1;
@Override
public boolean useItem(Vector position, BaseItem item, Direction face) {
public boolean useItem(BlockVector3 position, BaseItem item, Direction face) {
return false;
}
@Override
public final boolean setBlock(Vector pt, BlockStateHolder block) throws WorldEditException {
public final boolean setBlock(BlockVector3 pt, BlockStateHolder block) throws WorldEditException {
return setBlock(pt, block, true);
}
@ -66,31 +67,31 @@ public abstract class AbstractWorld implements World {
}
@Override
public void dropItem(Vector pt, BaseItemStack item, int times) {
public void dropItem(Vector3 pt, BaseItemStack item, int times) {
for (int i = 0; i < times; ++i) {
dropItem(pt, item);
}
}
@Override
public void checkLoadedChunk(Vector pt) {
public void checkLoadedChunk(BlockVector3 pt) {
}
@Override
public void fixAfterFastMode(Iterable<BlockVector2D> chunks) {
public void fixAfterFastMode(Iterable<BlockVector2> chunks) {
}
@Override
public void fixLighting(Iterable<BlockVector2D> chunks) {
public void fixLighting(Iterable<BlockVector2> chunks) {
}
@Override
public boolean playEffect(Vector position, int type, int data) {
public boolean playEffect(Vector3 position, int type, int data) {
return false;
}
@Override
public boolean queueBlockBreakEffect(Platform server, Vector position, BlockType blockType, double priority) {
public boolean queueBlockBreakEffect(Platform server, BlockVector3 position, BlockType blockType, double priority) {
if (taskId == -1) {
taskId = server.schedule(0, 1, () -> {
int max = Math.max(1, Math.min(30, effectQueue.size() / 3));
@ -106,19 +107,19 @@ public abstract class AbstractWorld implements World {
return false;
}
effectQueue.offer(new QueuedEffect(position, blockType, priority));
effectQueue.offer(new QueuedEffect(position.toVector3(), blockType, priority));
return true;
}
@Override
public Vector getMinimumPoint() {
return new Vector(-30000000, 0, -30000000);
public BlockVector3 getMinimumPoint() {
return new BlockVector3(-30000000, 0, -30000000);
}
@Override
public Vector getMaximumPoint() {
return new Vector(30000000, 255, 30000000);
public BlockVector3 getMaximumPoint() {
return new BlockVector3(30000000, 255, 30000000);
}
@Override
@ -127,11 +128,11 @@ public abstract class AbstractWorld implements World {
}
private class QueuedEffect implements Comparable<QueuedEffect> {
private final Vector position;
private final Vector3 position;
private final BlockType blockType;
private final double priority;
private QueuedEffect(Vector position, BlockType blockType, double priority) {
private QueuedEffect(Vector3 position, BlockType blockType, double priority) {
this.position = position;
this.blockType = blockType;
this.priority = priority;