Fix entities copying to original location.

Fixes WORLDEDIT-3275.
This commit is contained in:
wizjany 2015-05-29 15:44:17 -04:00
parent 78a8683df3
commit 642f2a1f58

View File

@ -89,19 +89,19 @@ public class ExtentEntityCopy implements EntityFunction {
BaseEntity state = entity.getState(); BaseEntity state = entity.getState();
if (state != null) { if (state != null) {
Location newLocation; Location newLocation;
if (!transform.isIdentity()) {
Location location = entity.getLocation(); Location location = entity.getLocation();
Vector pivot = from.round().add(0.5, 0.5, 0.5); Vector pivot = from.round().add(0.5, 0.5, 0.5);
Vector newPosition = transform.apply(location.toVector().subtract(pivot)); Vector newPosition = transform.apply(location.toVector().subtract(pivot));
Vector newDirection = transform.apply(location.getDirection()).subtract(transform.apply(Vector.ZERO)).normalize(); Vector newDirection;
newDirection = transform.isIdentity() ?
entity.getLocation().getDirection()
: transform.apply(location.getDirection()).subtract(transform.apply(Vector.ZERO)).normalize();
newLocation = new Location(destination, newPosition.add(to.round().add(0.5, 0.5, 0.5)), newDirection); newLocation = new Location(destination, newPosition.add(to.round().add(0.5, 0.5, 0.5)), newDirection);
// Some entities store their position data in NBT // Some entities store their position data in NBT
state = transformNbtData(state); state = transformNbtData(state);
} else {
newLocation = entity.getLocation();
}
boolean success = destination.createEntity(newLocation, state) != null; boolean success = destination.createEntity(newLocation, state) != null;