mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2024-12-23 01:37:37 +00:00
Fix pasting leashed entities. (#494)
This commit is contained in:
parent
927ae6d076
commit
9136139cfd
@ -23,6 +23,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
|||||||
|
|
||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.jnbt.CompoundTagBuilder;
|
import com.sk89q.jnbt.CompoundTagBuilder;
|
||||||
|
import com.sk89q.jnbt.Tag;
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
import com.sk89q.worldedit.WorldEditException;
|
||||||
import com.sk89q.worldedit.entity.BaseEntity;
|
import com.sk89q.worldedit.entity.BaseEntity;
|
||||||
import com.sk89q.worldedit.entity.Entity;
|
import com.sk89q.worldedit.entity.Entity;
|
||||||
@ -138,6 +139,23 @@ public class ExtentEntityCopy implements EntityFunction {
|
|||||||
CompoundTag tag = state.getNbtData();
|
CompoundTag tag = state.getNbtData();
|
||||||
|
|
||||||
if (tag != null) {
|
if (tag != null) {
|
||||||
|
// Handle leashed entities
|
||||||
|
Tag leashTag = tag.getValue().get("Leash");
|
||||||
|
if (leashTag instanceof CompoundTag) {
|
||||||
|
CompoundTag leashCompound = (CompoundTag) leashTag;
|
||||||
|
if (leashCompound.containsKey("X")) { // leashed to a fence
|
||||||
|
Vector3 tilePosition = Vector3.at(leashCompound.asInt("X"), leashCompound.asInt("Y"), leashCompound.asInt("Z"));
|
||||||
|
BlockVector3 newLeash = transform.apply(tilePosition.subtract(from)).add(to).toBlockPoint();
|
||||||
|
return new BaseEntity(state.getType(), tag.createBuilder()
|
||||||
|
.put("Leash", leashCompound.createBuilder()
|
||||||
|
.putInt("X", newLeash.getBlockX())
|
||||||
|
.putInt("Y", newLeash.getBlockY())
|
||||||
|
.putInt("Z", newLeash.getBlockZ())
|
||||||
|
.build()
|
||||||
|
).build());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Handle hanging entities (paintings, item frames, etc.)
|
// Handle hanging entities (paintings, item frames, etc.)
|
||||||
boolean hasTilePosition = tag.containsKey("TileX") && tag.containsKey("TileY") && tag.containsKey("TileZ");
|
boolean hasTilePosition = tag.containsKey("TileX") && tag.containsKey("TileY") && tag.containsKey("TileZ");
|
||||||
boolean hasFacing = tag.containsKey("Facing");
|
boolean hasFacing = tag.containsKey("Facing");
|
||||||
|
Loading…
Reference in New Issue
Block a user