Skip to content

Commit

Permalink
Further work on migrating to Adventure NBT
Browse files Browse the repository at this point in the history
  • Loading branch information
me4502 committed Feb 8, 2021
1 parent 85c150e commit 4ac2bb3
Show file tree
Hide file tree
Showing 18 changed files with 260 additions and 269 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ public <B extends BlockStateHolder<B>> void sendFakeBlock(BlockVector3 pos, B bl
BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter();
if (adapter != null) {
if (block.getBlockType() == BlockTypes.STRUCTURE_BLOCK) {
adapter.sendFakeNBT(player, pos, ((BaseBlock) block).getNbtData());
adapter.sendFakeNBT(player, pos, ((BaseBlock) block).getNbt());
adapter.sendFakeOP(player);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@

package com.sk89q.worldedit.bukkit.adapter;

import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.blocks.BaseItem;
import com.sk89q.worldedit.blocks.BaseItemStack;
import com.sk89q.worldedit.entity.BaseEntity;
Expand All @@ -31,6 +30,7 @@
import com.sk89q.worldedit.util.Direction;
import com.sk89q.worldedit.util.SideEffect;
import com.sk89q.worldedit.util.formatting.text.Component;
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
import com.sk89q.worldedit.world.DataFixer;
import com.sk89q.worldedit.world.RegenOptions;
import com.sk89q.worldedit.world.block.BaseBlock;
Expand Down Expand Up @@ -151,7 +151,7 @@ default void tickWatchdog() {
* @param pos The position
* @param nbtData The NBT Data
*/
void sendFakeNBT(Player player, BlockVector3 pos, CompoundTag nbtData);
void sendFakeNBT(Player player, BlockVector3 pos, CompoundBinaryTag nbtData);

/**
* Make the client think it has operator status.
Expand Down
Binary file modified worldedit-bukkit/src/main/resources/worldedit-adapters.jar
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ public BaseItem(ItemType itemType) {
* @param nbtData NBT Compound tag
*/
@Deprecated
public BaseItem(ItemType itemType, CompoundTag nbtData) {
this(itemType, checkNotNull(nbtData).asBinaryTag());
public BaseItem(ItemType itemType, @Nullable CompoundTag nbtData) {
this(itemType, nbtData == null ? null : nbtData.asBinaryTag());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,14 @@

package com.sk89q.worldedit.internal.wna;

import com.sk89q.jnbt.CompoundTag;
import com.google.common.collect.ImmutableMap;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.util.SideEffect;
import com.sk89q.worldedit.util.SideEffectSet;
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
import com.sk89q.worldedit.util.nbt.IntBinaryTag;
import com.sk89q.worldedit.util.nbt.StringBinaryTag;
import com.sk89q.worldedit.world.block.BaseBlock;
import com.sk89q.worldedit.world.block.BlockState;
import com.sk89q.worldedit.world.block.BlockStateHolder;
Expand Down Expand Up @@ -66,14 +69,15 @@ default <B extends BlockStateHolder<B>> boolean setBlock(BlockVector3 position,
if (successful || old == newState) {
if (block instanceof BaseBlock) {
BaseBlock baseBlock = (BaseBlock) block;
CompoundTag tag = baseBlock.getNbtData();
CompoundBinaryTag tag = baseBlock.getNbt();
if (tag != null) {
tag = tag.createBuilder()
.putString("id", baseBlock.getNbtId())
.putInt("x", position.getX())
.putInt("y", position.getY())
.putInt("z", position.getZ())
.build();
tag = tag.put(ImmutableMap.of(
"id", StringBinaryTag.of(baseBlock.getNbtId()),
"x", IntBinaryTag.of(position.getX()),
"y", IntBinaryTag.of(position.getY()),
"z", IntBinaryTag.of(position.getZ())
));

// update if TE changed as well
successful = updateTileEntity(pos, tag);
}
Expand Down Expand Up @@ -136,7 +140,7 @@ default void setCurrentSideEffectSet(SideEffectSet sideEffectSet) {

void updateLightingForBlock(NP position);

boolean updateTileEntity(NP position, CompoundTag tag);
boolean updateTileEntity(NP position, CompoundBinaryTag tag);

void notifyBlockUpdate(NP position, NBS oldState, NBS newState);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ default boolean hasNbtData() {
@Deprecated
@Nullable
default CompoundTag getNbtData() {
return AdventureNBTConverter.fromAdventure(getNbt());
CompoundBinaryTag tag = getNbt();
return tag == null ? null : AdventureNBTConverter.fromAdventure(tag);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@
package com.sk89q.worldedit.fabric;

import com.google.common.collect.ImmutableList;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.jnbt.Tag;
import com.sk89q.worldedit.blocks.BaseItemStack;
import com.sk89q.worldedit.fabric.internal.NBTConverter;
import com.sk89q.worldedit.math.BlockVector3;
Expand All @@ -32,6 +30,8 @@
import com.sk89q.worldedit.registry.state.IntegerProperty;
import com.sk89q.worldedit.registry.state.Property;
import com.sk89q.worldedit.util.Direction;
import com.sk89q.worldedit.util.nbt.BinaryTag;
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.biome.BiomeTypes;
Expand Down Expand Up @@ -228,22 +228,22 @@ public static ItemType adapt(Item item) {

public static ItemStack adapt(BaseItemStack baseItemStack) {
net.minecraft.nbt.CompoundTag fabricCompound = null;
if (baseItemStack.getNbtData() != null) {
fabricCompound = NBTConverter.toNative(baseItemStack.getNbtData());
if (baseItemStack.getNbt() != null) {
fabricCompound = NBTConverter.toNative(baseItemStack.getNbt());
}
final ItemStack itemStack = new ItemStack(adapt(baseItemStack.getType()), baseItemStack.getAmount());
itemStack.setTag(fabricCompound);
return itemStack;
}

public static BaseItemStack adapt(ItemStack itemStack) {
CompoundTag tag = NBTConverter.fromNative(itemStack.toTag(new net.minecraft.nbt.CompoundTag()));
if (tag.getValue().isEmpty()) {
CompoundBinaryTag tag = NBTConverter.fromNative(itemStack.toTag(new net.minecraft.nbt.CompoundTag()));
if (tag.keySet().isEmpty()) {
tag = null;
} else {
final Tag tagTag = tag.getValue().get("tag");
if (tagTag instanceof CompoundTag) {
tag = ((CompoundTag) tagTag);
final BinaryTag tagTag = tag.get("tag");
if (tagTag instanceof CompoundBinaryTag) {
tag = ((CompoundBinaryTag) tagTag);
} else {
tag = null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@
import com.mojang.datafixers.DataFixerBuilder;
import com.mojang.datafixers.schemas.Schema;
import com.mojang.serialization.Dynamic;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.fabric.internal.NBTConverter;
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
import net.minecraft.datafixer.Schemas;
import net.minecraft.datafixer.TypeReferences;
import net.minecraft.nbt.FloatTag;
Expand Down Expand Up @@ -92,11 +92,11 @@ class FabricDataFixer extends DataFixerBuilder implements com.sk89q.worldedit.wo
@Override
public <T> T fixUp(FixType<T> type, T original, int srcVer) {
if (type == FixTypes.CHUNK) {
return (T) fixChunk((CompoundTag) original, srcVer);
return (T) fixChunk((CompoundBinaryTag) original, srcVer);
} else if (type == FixTypes.BLOCK_ENTITY) {
return (T) fixBlockEntity((CompoundTag) original, srcVer);
return (T) fixBlockEntity((CompoundBinaryTag) original, srcVer);
} else if (type == FixTypes.ENTITY) {
return (T) fixEntity((CompoundTag) original, srcVer);
return (T) fixEntity((CompoundBinaryTag) original, srcVer);
} else if (type == FixTypes.BLOCK_STATE) {
return (T) fixBlockState((String) original, srcVer);
} else if (type == FixTypes.ITEM_TYPE) {
Expand All @@ -107,19 +107,19 @@ public <T> T fixUp(FixType<T> type, T original, int srcVer) {
return original;
}

private CompoundTag fixChunk(CompoundTag originalChunk, int srcVer) {
private CompoundBinaryTag fixChunk(CompoundBinaryTag originalChunk, int srcVer) {
net.minecraft.nbt.CompoundTag tag = NBTConverter.toNative(originalChunk);
net.minecraft.nbt.CompoundTag fixed = convert(LegacyType.CHUNK, tag, srcVer);
return NBTConverter.fromNative(fixed);
}

private CompoundTag fixBlockEntity(CompoundTag origTileEnt, int srcVer) {
private CompoundBinaryTag fixBlockEntity(CompoundBinaryTag origTileEnt, int srcVer) {
net.minecraft.nbt.CompoundTag tag = NBTConverter.toNative(origTileEnt);
net.minecraft.nbt.CompoundTag fixed = convert(LegacyType.BLOCK_ENTITY, tag, srcVer);
return NBTConverter.fromNative(fixed);
}

private CompoundTag fixEntity(CompoundTag origEnt, int srcVer) {
private CompoundBinaryTag fixEntity(CompoundBinaryTag origEnt, int srcVer) {
net.minecraft.nbt.CompoundTag tag = NBTConverter.toNative(origEnt);
net.minecraft.nbt.CompoundTag fixed = convert(LegacyType.ENTITY, tag, srcVer);
return NBTConverter.fromNative(fixed);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@

package com.sk89q.worldedit.fabric;

import com.sk89q.jnbt.CompoundTag;
import com.sk89q.util.StringUtil;
import com.sk89q.worldedit.blocks.BaseItemStack;
import com.sk89q.worldedit.entity.BaseEntity;
Expand All @@ -38,6 +37,7 @@
import com.sk89q.worldedit.util.formatting.component.TextUtils;
import com.sk89q.worldedit.util.formatting.text.Component;
import com.sk89q.worldedit.util.formatting.text.serializer.gson.GsonComponentSerializer;
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.world.block.BaseBlock;
import com.sk89q.worldedit.world.block.BlockStateHolder;
Expand All @@ -55,7 +55,6 @@
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Hand;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;

import java.io.IOException;
Expand Down Expand Up @@ -243,7 +242,7 @@ public <B extends BlockStateHolder<B>> void sendFakeBlock(BlockVector3 pos, B bl
player.networkHandler.sendPacket(packetOut);
if (block instanceof BaseBlock && block.getBlockType().equals(BlockTypes.STRUCTURE_BLOCK)) {
final BaseBlock baseBlock = (BaseBlock) block;
final CompoundTag nbtData = baseBlock.getNbtData();
final CompoundBinaryTag nbtData = baseBlock.getNbt();
if (nbtData != null) {
player.networkHandler.sendPacket(new BlockEntityUpdateS2CPacket(
new BlockPos(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ()),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import com.google.common.collect.Sets;
import com.google.common.util.concurrent.Futures;
import com.mojang.serialization.Dynamic;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.blocks.BaseItem;
Expand All @@ -53,6 +52,7 @@
import com.sk89q.worldedit.util.SideEffectSet;
import com.sk89q.worldedit.util.TreeGenerator.TreeType;
import com.sk89q.worldedit.util.io.file.SafeFiles;
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
import com.sk89q.worldedit.world.AbstractWorld;
import com.sk89q.worldedit.world.RegenOptions;
import com.sk89q.worldedit.world.biome.BiomeType;
Expand Down Expand Up @@ -248,7 +248,7 @@ public boolean setBiome(BlockVector3 position, BiomeType biome) {

@Override
public boolean useItem(BlockVector3 position, BaseItem item, Direction face) {
ItemStack stack = FabricAdapter.adapt(new BaseItemStack(item.getType(), item.getNbtData(), 1));
ItemStack stack = FabricAdapter.adapt(new BaseItemStack(item.getType(), item.getNbt(), 1));
ServerWorld world = (ServerWorld) getWorld();
final WorldEditFakePlayer fakePlayer;
try {
Expand Down Expand Up @@ -667,9 +667,9 @@ public Entity createEntity(Location location, BaseEntity entity) {
}
net.minecraft.entity.Entity createdEntity = entityType.get().create(world);
if (createdEntity != null) {
CompoundTag nativeTag = entity.getNbtData();
CompoundBinaryTag nativeTag = entity.getNbt();
if (nativeTag != null) {
net.minecraft.nbt.CompoundTag tag = NBTConverter.toNative(entity.getNbtData());
net.minecraft.nbt.CompoundTag tag = NBTConverter.toNative(nativeTag);
for (String name : Constants.NO_COPY_ENTITY_NBT_FIELDS) {
tag.remove(name);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.sk89q.worldedit.internal.wna.WorldNativeAccess;
import com.sk89q.worldedit.util.SideEffect;
import com.sk89q.worldedit.util.SideEffectSet;
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntity;
Expand Down Expand Up @@ -103,7 +104,7 @@ public void updateLightingForBlock(BlockPos position) {
}

@Override
public boolean updateTileEntity(BlockPos position, com.sk89q.jnbt.CompoundTag tag) {
public boolean updateTileEntity(BlockPos position, CompoundBinaryTag tag) {
CompoundTag nativeTag = NBTConverter.toNative(tag);
BlockEntity tileEntity = getWorld().getWorldChunk(position).getBlockEntity(position);
if (tileEntity == null) {
Expand Down
Loading

0 comments on commit 4ac2bb3

Please sign in to comment.