mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2025-06-11 20:13:55 +00:00
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:
@ -21,12 +21,13 @@ package com.sk89q.worldedit.sponge;
|
||||
|
||||
import com.flowpowered.math.vector.Vector3d;
|
||||
import com.sk89q.util.StringUtil;
|
||||
import com.sk89q.worldedit.Vector;
|
||||
import com.sk89q.worldedit.blocks.BaseItemStack;
|
||||
import com.sk89q.worldedit.entity.BaseEntity;
|
||||
import com.sk89q.worldedit.extension.platform.AbstractPlayerActor;
|
||||
import com.sk89q.worldedit.extent.inventory.BlockBag;
|
||||
import com.sk89q.worldedit.internal.cui.CUIEvent;
|
||||
import com.sk89q.worldedit.math.BlockVector3;
|
||||
import com.sk89q.worldedit.math.Vector3;
|
||||
import com.sk89q.worldedit.session.SessionKey;
|
||||
import com.sk89q.worldedit.util.HandSide;
|
||||
import com.sk89q.worldedit.util.Location;
|
||||
@ -34,6 +35,7 @@ import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||
import com.sk89q.worldedit.world.gamemode.GameMode;
|
||||
import com.sk89q.worldedit.world.gamemode.GameModes;
|
||||
import com.sk89q.worldedit.world.item.ItemTypes;
|
||||
|
||||
import org.spongepowered.api.Sponge;
|
||||
import org.spongepowered.api.data.type.HandTypes;
|
||||
import org.spongepowered.api.entity.living.player.Player;
|
||||
@ -144,7 +146,7 @@ public class SpongePlayer extends AbstractPlayerActor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPosition(Vector pos, float pitch, float yaw) {
|
||||
public void setPosition(Vector3 pos, float pitch, float yaw) {
|
||||
org.spongepowered.api.world.Location<World> loc = new org.spongepowered.api.world.Location<>(
|
||||
this.player.getWorld(), pos.getX(), pos.getY(), pos.getZ()
|
||||
);
|
||||
@ -185,7 +187,7 @@ public class SpongePlayer extends AbstractPlayerActor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendFakeBlock(Vector pos, BlockStateHolder block) {
|
||||
public void sendFakeBlock(BlockVector3 pos, BlockStateHolder block) {
|
||||
org.spongepowered.api.world.Location<World> loc = player.getWorld().getLocation(pos.getX(), pos.getY(), pos.getZ());
|
||||
if (block == null) {
|
||||
player.sendBlockChange(loc.getBlockPosition(), loc.getBlock());
|
||||
|
@ -24,22 +24,24 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import com.flowpowered.math.vector.Vector3d;
|
||||
import com.flowpowered.math.vector.Vector3i;
|
||||
import com.sk89q.worldedit.EditSession;
|
||||
import com.sk89q.worldedit.Vector;
|
||||
import com.sk89q.worldedit.Vector2D;
|
||||
import com.sk89q.worldedit.WorldEditException;
|
||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||
import com.sk89q.worldedit.blocks.BaseItemStack;
|
||||
import com.sk89q.worldedit.entity.BaseEntity;
|
||||
import com.sk89q.worldedit.entity.Entity;
|
||||
import com.sk89q.worldedit.math.BlockVector2;
|
||||
import com.sk89q.worldedit.math.BlockVector3;
|
||||
import com.sk89q.worldedit.math.Vector3;
|
||||
import com.sk89q.worldedit.regions.Region;
|
||||
import com.sk89q.worldedit.registry.state.Property;
|
||||
import com.sk89q.worldedit.util.Location;
|
||||
import com.sk89q.worldedit.world.AbstractWorld;
|
||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||
import com.sk89q.worldedit.world.item.ItemTypes;
|
||||
import com.sk89q.worldedit.world.weather.WeatherType;
|
||||
import com.sk89q.worldedit.world.weather.WeatherTypes;
|
||||
|
||||
import org.spongepowered.api.Sponge;
|
||||
import org.spongepowered.api.block.BlockSnapshot;
|
||||
import org.spongepowered.api.block.BlockState;
|
||||
@ -134,7 +136,7 @@ public abstract class SpongeWorld extends AbstractWorld {
|
||||
private static final BlockSnapshot.Builder builder = BlockSnapshot.builder();
|
||||
|
||||
@Override
|
||||
public boolean setBlock(Vector position, BlockStateHolder block, boolean notifyAndLight) throws WorldEditException {
|
||||
public boolean setBlock(BlockVector3 position, BlockStateHolder block, boolean notifyAndLight) throws WorldEditException {
|
||||
checkNotNull(position);
|
||||
checkNotNull(block);
|
||||
|
||||
@ -167,7 +169,7 @@ public abstract class SpongeWorld extends AbstractWorld {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlockLightLevel(Vector position) {
|
||||
public int getBlockLightLevel(BlockVector3 position) {
|
||||
checkNotNull(position);
|
||||
|
||||
BlockState state = getWorld().getBlock(new Vector3i(position.getX(), position.getY(), position.getZ()));
|
||||
@ -185,13 +187,13 @@ public abstract class SpongeWorld extends AbstractWorld {
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaseBiome getBiome(Vector2D position) {
|
||||
public BaseBiome getBiome(BlockVector2 position) {
|
||||
checkNotNull(position);
|
||||
return new BaseBiome(SpongeWorldEdit.inst().getAdapter().resolve(getWorld().getBiome(position.getBlockX(), 0, position.getBlockZ())));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setBiome(Vector2D position, BaseBiome biome) {
|
||||
public boolean setBiome(BlockVector2 position, BaseBiome biome) {
|
||||
checkNotNull(position);
|
||||
checkNotNull(biome);
|
||||
|
||||
@ -200,7 +202,7 @@ public abstract class SpongeWorld extends AbstractWorld {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dropItem(Vector position, BaseItemStack item) {
|
||||
public void dropItem(Vector3 position, BaseItemStack item) {
|
||||
checkNotNull(position);
|
||||
checkNotNull(item);
|
||||
|
||||
@ -218,7 +220,7 @@ public abstract class SpongeWorld extends AbstractWorld {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void simulateBlockMine(Vector position) {
|
||||
public void simulateBlockMine(BlockVector3 position) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
@ -247,7 +249,7 @@ public abstract class SpongeWorld extends AbstractWorld {
|
||||
List<Entity> entities = new ArrayList<>();
|
||||
for (org.spongepowered.api.entity.Entity entity : getWorld().getEntities()) {
|
||||
org.spongepowered.api.world.Location<World> loc = entity.getLocation();
|
||||
if (region.contains(new Vector(loc.getX(), loc.getY(), loc.getZ()))) {
|
||||
if (region.contains(new BlockVector3(loc.getX(), loc.getY(), loc.getZ()))) {
|
||||
entities.add(new SpongeEntity(entity));
|
||||
}
|
||||
}
|
||||
@ -279,7 +281,7 @@ public abstract class SpongeWorld extends AbstractWorld {
|
||||
}
|
||||
|
||||
// Overwrite any data set by the NBT application
|
||||
Vector dir = location.getDirection();
|
||||
Vector3 dir = location.getDirection();
|
||||
|
||||
newEnt.setLocationAndRotation(
|
||||
new org.spongepowered.api.world.Location<>(getWorld(), pos),
|
||||
|
@ -20,11 +20,12 @@
|
||||
package com.sk89q.worldedit.sponge.adapter;
|
||||
|
||||
import com.flowpowered.math.vector.Vector3d;
|
||||
import com.sk89q.worldedit.Vector;
|
||||
import com.sk89q.worldedit.blocks.BaseItemStack;
|
||||
import com.sk89q.worldedit.entity.BaseEntity;
|
||||
import com.sk89q.worldedit.math.Vector3;
|
||||
import com.sk89q.worldedit.sponge.SpongeWorld;
|
||||
import com.sk89q.worldedit.util.Location;
|
||||
|
||||
import org.spongepowered.api.entity.Entity;
|
||||
import org.spongepowered.api.item.inventory.ItemStack;
|
||||
import org.spongepowered.api.world.World;
|
||||
@ -56,7 +57,7 @@ public interface SpongeImplAdapter {
|
||||
}
|
||||
|
||||
default Location adapt(org.spongepowered.api.world.Location<org.spongepowered.api.world.World> loc, Vector3d rot) {
|
||||
Vector position = new Vector(loc.getX(), loc.getY(), loc.getZ());
|
||||
Vector3 position = new Vector3(loc.getX(), loc.getY(), loc.getZ());
|
||||
|
||||
return new Location(getWorld(loc.getExtent()), position, (float) rot.getY(), (float) rot.getX());
|
||||
}
|
||||
|
Reference in New Issue
Block a user