Current progress with update

This commit is contained in:
IronApollo
2018-12-23 11:19:33 -05:00
parent 9896a1339e
commit d4157b7e0e
417 changed files with 8994 additions and 4644 deletions

View File

@ -21,10 +21,22 @@ package com.sk89q.worldedit.extension.platform;
import com.sk89q.worldedit.NotABlockException;
import com.sk89q.worldedit.PlayerDirection;
import com.sk89q.worldedit.Vector;
import com.sk89q.worldedit.WorldEditException;
<<<<<<< HEAD
import com.sk89q.worldedit.blocks.BaseBlock;
import com.sk89q.worldedit.blocks.BlockMaterial;
=======
import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.internal.cui.CUIEvent;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.math.Vector3;
import com.sk89q.worldedit.util.HandSide;
import com.sk89q.worldedit.util.Location;
import com.sk89q.worldedit.util.TargetBlock;
import com.sk89q.worldedit.util.auth.AuthorizationException;
import com.sk89q.worldedit.world.block.BaseBlock;
>>>>>>> 399e0ad5... Refactor vector system to be cleaner
import com.sk89q.worldedit.world.block.BlockState;
import com.sk89q.worldedit.blocks.BlockType;
import com.sk89q.worldedit.world.block.BlockStateHolder;
@ -107,7 +119,7 @@ public abstract class AbstractPlayerActor implements Actor, Player, Cloneable {
byte free = 0;
while (y <= world.getMaximumPoint().getBlockY() + 2) {
if (!world.getBlock(new Vector(x, y, z)).getBlockType().getMaterial().isMovementBlocker()) {
if (!world.getBlock(new BlockVector3(x, y, z)).getBlockType().getMaterial().isMovementBlocker()) {
++free;
} else {
free = 0;
@ -115,9 +127,13 @@ public abstract class AbstractPlayerActor implements Actor, Player, Cloneable {
if (free == 2) {
if (y - 1 != origY) {
<<<<<<< HEAD
final Vector pos = new Vector(x, y - 2, z);
final BlockStateHolder state = world.getBlock(pos);
setPosition(new Vector(x + 0.5, y - 2 + BlockType.centralTopLimit(state), z + 0.5));
=======
setPosition(new Vector3(x + 0.5, y - 2 + 1, z + 0.5));
>>>>>>> 399e0ad5... Refactor vector system to be cleaner
}
return;
@ -135,10 +151,17 @@ public abstract class AbstractPlayerActor implements Actor, Player, Cloneable {
int z = searchPos.getBlockZ();
while (y >= 0) {
<<<<<<< HEAD
final Vector pos = new Vector(x, y, z);
final BlockStateHolder id = world.getBlock(pos);
if (id.getBlockType().getMaterial().isMovementBlocker()) {
setPosition(new Vector(x + 0.5, y + BlockType.centralTopLimit(id), z + 0.5));
=======
final BlockVector3 pos = new BlockVector3(x, y, z);
final BlockState id = world.getBlock(pos);
if (id.getBlockType().getMaterial().isMovementBlocker()) {
setPosition(new Vector3(x + 0.5, y + 1, z + 0.5));
>>>>>>> 399e0ad5... Refactor vector system to be cleaner
return;
}
@ -162,6 +185,7 @@ public abstract class AbstractPlayerActor implements Actor, Player, Cloneable {
int maxY = world.getMaxY();
if (y >= maxY) return false;
<<<<<<< HEAD
BlockMaterial initialMaterial = world.getBlockType(new Vector(x, y, z)).getMaterial();
boolean lastState = initialMaterial.isMovementBlocker() && initialMaterial.isFullCube();
@ -180,6 +204,29 @@ public abstract class AbstractPlayerActor implements Actor, Player, Cloneable {
if (!lastState) {
lastState = BlockType.centralBottomLimit(state) != 1;
continue;
=======
while (y <= world.getMaximumPoint().getY() + 2) {
if (!world.getBlock(new BlockVector3(x, y, z)).getBlockType().getMaterial().isMovementBlocker()) {
++free;
} else {
free = 0;
}
if (free == 2) {
++spots;
if (spots == 2) {
final BlockVector3 platform = new BlockVector3(x, y - 2, z);
final BlockStateHolder block = world.getBlock(platform);
final com.sk89q.worldedit.world.block.BlockType type = block.getBlockType();
// Don't get put in lava!
if (type == BlockTypes.LAVA) {
return false;
}
setPosition(platform.toVector3().add(0.5, 1, 0.5));
return true;
>>>>>>> 399e0ad5... Refactor vector system to be cleaner
}
if (freeStart == -1) {
freeStart = level + BlockType.centralTopLimit(state);
@ -213,6 +260,7 @@ public abstract class AbstractPlayerActor implements Actor, Player, Cloneable {
BlockMaterial initialMaterial = world.getBlockType(new Vector(x, y, z)).getMaterial();
<<<<<<< HEAD
boolean lastState = initialMaterial.isMovementBlocker() && initialMaterial.isFullCube();
double height = 1.85;
@ -241,6 +289,28 @@ public abstract class AbstractPlayerActor implements Actor, Player, Cloneable {
double space = freeEnd - freeStart;
if (space >= height) {
setPosition(new Vector(x + 0.5, freeStart, z + 0.5));
=======
while (y >= 1) {
if (!world.getBlock(new BlockVector3(x, y, z)).getBlockType().getMaterial().isMovementBlocker()) {
++free;
} else {
free = 0;
}
if (free == 2) {
// So we've found a spot, but we have to drop the player
// lightly and also check to see if there's something to
// stand upon
while (y >= 0) {
final BlockVector3 platform = new BlockVector3(x, y, z);
final BlockStateHolder block = world.getBlock(platform);
final BlockType type = block.getBlockType();
// Don't want to end up in lava
if (!type.getMaterial().isAir() && type != BlockTypes.LAVA) {
// Found a block!
setPosition(platform.toVector3().add(0.5, 1, 0.5));
>>>>>>> 399e0ad5... Refactor vector system to be cleaner
return true;
}
// Not enough room, reset the free position
@ -271,13 +341,13 @@ public abstract class AbstractPlayerActor implements Actor, Player, Cloneable {
Extent world = getLocation().getExtent();
// No free space above
if (!world.getBlock(new Vector(x, y, z)).getBlockType().getMaterial().isAir()) {
if (!world.getBlock(new BlockVector3(x, y, z)).getBlockType().getMaterial().isAir()) {
return false;
}
while (y <= world.getMaximumPoint().getY()) {
// Found a ceiling!
if (world.getBlock(new Vector(x, y, z)).getBlockType().getMaterial().isMovementBlocker()) {
if (world.getBlock(new BlockVector3(x, y, z)).getBlockType().getMaterial().isMovementBlocker()) {
int platformY = Math.max(initialY, y - 3 - clearance);
floatAt(x, platformY + 1, z, alwaysGlass);
return true;
@ -305,7 +375,7 @@ public abstract class AbstractPlayerActor implements Actor, Player, Cloneable {
final Extent world = getLocation().getExtent();
while (y <= world.getMaximumPoint().getY() + 2) {
if (world.getBlock(new Vector(x, y, z)).getBlockType().getMaterial().isMovementBlocker()) {
if (world.getBlock(new BlockVector3(x, y, z)).getBlockType().getMaterial().isMovementBlocker()) {
break; // Hit something
} else if (y > maxY + 1) {
break;
@ -322,26 +392,41 @@ public abstract class AbstractPlayerActor implements Actor, Player, Cloneable {
@Override
public void floatAt(int x, int y, int z, boolean alwaysGlass) {
<<<<<<< HEAD
Vector spot = new Vector(x, y - 1, z);
if (!getLocation().getExtent().getBlock(spot).getBlockType().getMaterial().isMovementBlocker()) {
try {
getLocation().getExtent().setBlock(new Vector(x, y - 1, z), BlockTypes.GLASS.getDefaultState());
} catch (WorldEditException e) {
e.printStackTrace();
=======
try {
BlockVector3 spot = new BlockVector3(x, y - 1, z);
if (!getLocation().getExtent().getBlock(spot).getBlockType().getMaterial().isMovementBlocker()) {
getLocation().getExtent().setBlock(spot, BlockTypes.GLASS.getDefaultState());
>>>>>>> 399e0ad5... Refactor vector system to be cleaner
}
}
setPosition(new Vector(x + 0.5, y, z + 0.5));
setPosition(new Vector3(x + 0.5, y, z + 0.5));
}
@Override
public Location getBlockIn() {
<<<<<<< HEAD
Location loc = getLocation();
return new Location(loc.getExtent(), loc.toBlockVector(), loc.getDirection());
=======
return getLocation().setPosition(getLocation().toVector().floor());
>>>>>>> 399e0ad5... Refactor vector system to be cleaner
}
@Override
public Location getBlockOn() {
<<<<<<< HEAD
return getLocation().setY(getLocation().getY() - 1);
=======
return getLocation().setPosition(getLocation().setY(getLocation().getY() - 1).toVector().floor());
>>>>>>> 399e0ad5... Refactor vector system to be cleaner
}
@Override
@ -416,7 +501,7 @@ public abstract class AbstractPlayerActor implements Actor, Player, Cloneable {
boolean inFree = false;
while ((block = hitBlox.getNextBlock()) != null) {
boolean free = !world.getBlock(block.toVector()).getBlockType().getMaterial().isMovementBlocker();
boolean free = !world.getBlock(block.toVector().toBlockPoint()).getBlockType().getMaterial().isMovementBlocker();
if (firstBlock) {
firstBlock = false;
@ -450,7 +535,7 @@ public abstract class AbstractPlayerActor implements Actor, Player, Cloneable {
}
@Override
public void setPosition(Vector pos) {
public void setPosition(Vector3 pos) {
setPosition(pos, getLocation().getPitch(), getLocation().getYaw());
}
@ -522,4 +607,12 @@ public abstract class AbstractPlayerActor implements Actor, Player, Cloneable {
return false;
}
}
<<<<<<< HEAD
}
=======
@Override
public void sendFakeBlock(BlockVector3 pos, BlockStateHolder block) {
}
}
>>>>>>> 399e0ad5... Refactor vector system to be cleaner

View File

@ -19,6 +19,7 @@
package com.sk89q.worldedit.extension.platform;
<<<<<<< HEAD
import com.boydti.fawe.config.BBC;
import com.boydti.fawe.object.FawePlayer;
import com.boydti.fawe.object.brush.visualization.VirtualWorld;
@ -31,9 +32,23 @@ import com.boydti.fawe.wrappers.WorldWrapper;
import com.sk89q.worldedit.*;
import com.sk89q.worldedit.Vector;
import com.sk89q.worldedit.command.tool.*;
=======
import static com.google.common.base.Preconditions.checkNotNull;
import com.sk89q.worldedit.LocalConfiguration;
import com.sk89q.worldedit.LocalSession;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.command.tool.BlockTool;
import com.sk89q.worldedit.command.tool.DoubleActionBlockTool;
import com.sk89q.worldedit.command.tool.DoubleActionTraceTool;
import com.sk89q.worldedit.command.tool.Tool;
import com.sk89q.worldedit.command.tool.TraceTool;
>>>>>>> 399e0ad5... Refactor vector system to be cleaner
import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.event.platform.*;
import com.sk89q.worldedit.extension.platform.permission.ActorSelectorLimits;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.math.Vector3;
import com.sk89q.worldedit.regions.RegionSelector;
import com.sk89q.worldedit.session.request.Request;
import com.sk89q.worldedit.util.HandSide;
@ -290,6 +305,7 @@ public class PlatformManager {
public void handleBlockInteract(BlockInteractEvent event) {
// Create a proxy actor with a potentially different world for
// making changes to the world
<<<<<<< HEAD
Request.reset();
final Actor actor = createProxyActor(event.getCause());
try {
@ -306,6 +322,12 @@ public class PlatformManager {
virtual.handleBlockInteract(playerActor, vector, event);
if (event.isCancelled()) return;
}
=======
Actor actor = createProxyActor(event.getCause());
Location location = event.getLocation();
Vector3 vector = location.toVector();
>>>>>>> 399e0ad5... Refactor vector system to be cleaner
if (event.getType() == Interaction.HIT) {
if (session.isToolControlEnabled() && playerActor.getItemInHand(HandSide.MAIN_HAND).getType().equals(getConfiguration().wandItem)) {
@ -342,6 +364,7 @@ public class PlatformManager {
return;
}
}
<<<<<<< HEAD
final Tool tool = session.getTool(playerActor);
if (tool != null && tool instanceof DoubleActionBlockTool) {
if (tool.canUse(playerActor)) {
@ -356,6 +379,14 @@ public class PlatformManager {
event.setCancelled(true);
return;
}
=======
RegionSelector selector = session.getRegionSelector(player.getWorld());
BlockVector3 blockPoint = vector.toBlockPoint();
if (selector.selectPrimary(blockPoint, ActorSelectorLimits.forActor(player))) {
selector.explainPrimarySelection(actor, session, blockPoint);
>>>>>>> 399e0ad5... Refactor vector system to be cleaner
}
} else if (event.getType() == Interaction.OPEN) {
if (session.isToolControlEnabled() && playerActor.getItemInHand(HandSide.MAIN_HAND).getType().equals(getConfiguration().wandItem)) {
@ -379,6 +410,7 @@ public class PlatformManager {
return;
}
<<<<<<< HEAD
final Tool tool = session.getTool(playerActor);
if (tool != null && tool instanceof BlockTool) {
if (tool.canUse(playerActor)) {
@ -399,6 +431,23 @@ public class PlatformManager {
return;
}
}
=======
RegionSelector selector = session.getRegionSelector(player.getWorld());
BlockVector3 blockPoint = vector.toBlockPoint();
if (selector.selectSecondary(blockPoint, ActorSelectorLimits.forActor(player))) {
selector.explainSecondarySelection(actor, session, blockPoint);
}
event.setCancelled(true);
return;
}
Tool tool = session.getTool(player.getItemInHand(HandSide.MAIN_HAND).getType());
if (tool instanceof BlockTool) {
if (tool.canUse(player)) {
((BlockTool) tool).actPrimary(queryCapability(Capability.WORLD_EDITING), getConfiguration(), player, session, location);
event.setCancelled(true);
>>>>>>> 399e0ad5... Refactor vector system to be cleaner
}
}
}

View File

@ -19,15 +19,20 @@
package com.sk89q.worldedit.extension.platform;
import com.sk89q.worldedit.Vector;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.blocks.BaseBlock;
import com.sk89q.worldedit.world.block.BlockState;
import com.sk89q.worldedit.world.block.BlockStateHolder;
import static com.google.common.base.Preconditions.checkNotNull;
import com.sk89q.worldedit.blocks.BaseItemStack;
import com.sk89q.worldedit.entity.BaseEntity;
import com.sk89q.worldedit.entity.Player;
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;
@ -46,7 +51,7 @@ public class PlayerProxy extends AbstractPlayerActor {
private final Actor permActor;
private final Actor cuiActor;
private final World world;
private Vector offset = Vector.ZERO;
private Vector3 offset = Vector3.ZERO;
public PlayerProxy(Player basePlayer, Actor permActor, Actor cuiActor, World world) {
checkNotNull(basePlayer);
@ -59,7 +64,7 @@ public class PlayerProxy extends AbstractPlayerActor {
this.world = world;
}
public void setOffset(Vector position) {
public void setOffset(Vector3 position) {
this.offset = position;
}
@ -106,7 +111,7 @@ public class PlayerProxy extends AbstractPlayerActor {
}
@Override
public void setPosition(Vector pos, float pitch, float yaw) {
public void setPosition(Vector3 pos, float pitch, float yaw) {
basePlayer.setPosition(pos, pitch, yaw);
}
@ -170,4 +175,10 @@ public class PlayerProxy extends AbstractPlayerActor {
public void setGameMode(GameMode gameMode) {
basePlayer.setGameMode(gameMode);
}
}
@Override
public void sendFakeBlock(BlockVector3 pos, BlockStateHolder block) {
basePlayer.sendFakeBlock(pos, block);
}
}