This commit is contained in:
Jesse Boyd
2019-06-29 04:20:48 +10:00
parent f1e98da01f
commit 58c6b6278f
12 changed files with 121 additions and 61 deletions

View File

@ -33,6 +33,7 @@ import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.session.ClipboardHolder;
import java.io.File;
import java.io.FileInputStream;
@ -111,7 +112,7 @@ public interface ClipboardFormat {
* @param in
* @throws IOException
*/
default void hold(Player player, URI uri, InputStream in) throws IOException {
default URIClipboardHolder hold(Player player, URI uri, InputStream in) throws IOException {
checkNotNull(player);
checkNotNull(uri);
checkNotNull(in);
@ -125,6 +126,7 @@ public interface ClipboardFormat {
clipboard = reader.read(player.getUniqueId());
URIClipboardHolder holder = new URIClipboardHolder(uri, clipboard);
session.setClipboard(holder);
return holder;
}
default Schematic load(File file) throws IOException {

View File

@ -143,11 +143,10 @@ public class SpongeSchematicWriter implements ClipboardWriter {
@Override
public <B extends BlockStateHolder<B>> void run(int x, int y, int z, B block) {
try {
boolean hasNbt = block instanceof BaseBlock && block.hasNbtData();
if (hasNbt) {
if (block.getNbtData() != null) {
BaseBlock localBlock = (BaseBlock) block;
Map<String, Tag> values = localBlock.getNbtData().getValue();
if (block.hasNbtData()) {
CompoundTag nbt = block.getNbtData();
if (nbt != null) {
Map<String, Tag> values = nbt.getValue();
values.remove("id"); // Remove 'id' if it exists. We want 'Id'
@ -164,7 +163,7 @@ public class SpongeSchematicWriter implements ClipboardWriter {
z
}));
numTiles[0]++;
tilesOut.writeTagPayload(localBlock.getNbtData());
tilesOut.writeTagPayload(block.getNbtData());
}
}
int ordinal = block.getOrdinal();

View File

@ -26,6 +26,7 @@ import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSyntaxException;
import com.sk89q.jnbt.StringTag;
import com.sk89q.jnbt.Tag;
import com.sk89q.worldedit.world.block.BlockID;
import com.sk89q.worldedit.world.block.BlockStateHolder;
import com.sk89q.worldedit.world.block.BlockTypes;
@ -35,7 +36,13 @@ public class SignCompatibilityHandler implements NBTCompatibilityHandler {
@Override
public <B extends BlockStateHolder<B>> boolean isAffectedBlock(B block) {
return block.getBlockType() == BlockTypes.SIGN || block.getBlockType() == BlockTypes.WALL_SIGN;
switch (block.getBlockType().getInternalId()) {
case BlockID.SIGN:
case BlockID.WALL_SIGN:
return true;
default:
return false;
}
}
@Override