diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/FlowerPotHandler.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/FlowerPotHandler.java index d7ebfbb9..7a406efc 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/FlowerPotHandler.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/FlowerPotHandler.java @@ -13,8 +13,8 @@ package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handler import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; import us.myles.ViaVersion.api.Pair; import us.myles.ViaVersion.api.data.UserConnection; -import us.myles.viaversion.libs.opennbt.tag.builtin.ByteTag; import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.IntTag; import us.myles.viaversion.libs.opennbt.tag.builtin.StringTag; import java.util.Map; @@ -53,6 +53,10 @@ public class FlowerPotHandler implements BackwardsBlockEntityProvider.BackwardsB flowers.put(id, new Pair<>(identifier, data)); } + public static boolean isFlowah(int id) { + return flowers.containsKey(id); + } + public Pair getOrDefault(int blockId) { if (flowers.containsKey(blockId)) return flowers.get(blockId); @@ -66,7 +70,7 @@ public class FlowerPotHandler implements BackwardsBlockEntityProvider.BackwardsB Pair item = getOrDefault(blockId); tag.put(new StringTag("Item", item.getKey())); - tag.put(new ByteTag("Data", item.getValue())); + tag.put(new IntTag("Data", item.getValue())); return tag; } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java index 600ad538..7a5cabf5 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java @@ -14,11 +14,13 @@ import com.google.common.base.Optional; import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.api.rewriters.BlockItemRewriter; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; +import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.FlowerPotHandler; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.data.BackwardsMappings; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; import nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.storage.BackwardsBlockStorage; import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.Via; +import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.minecraft.BlockChangeRecord; import us.myles.ViaVersion.api.minecraft.Position; import us.myles.ViaVersion.api.minecraft.chunks.Chunk; @@ -58,6 +60,20 @@ public class BlockItemPackets1_13 extends BlockItemRewriter= 256 && id <= 259 // iron shovel, pickaxe, axe, flint and steel + || id == 261 // bow + || id >= 267 && id <= 279 // iron sword, wooden+stone+diamond swords, shovels, pickaxes, axes + || id >= 283 && id <= 286 // gold sword, shovel, pickaxe, axe + || id >= 290 && id <= 294 // hoes + || id >= 298 && id <= 317 // armors + || id == 346 // fishing rod + || id == 359 // shears + || id == 398 // carrot on a stick + || id == 442 // shield + || id == 443; // elytra + } + @Override protected void registerPackets(Protocol1_12_2To1_13 protocol) { NBT_TAG_NAME = "ViaBackwards|" + protocol.getClass().getSimpleName(); @@ -140,12 +156,16 @@ public class BlockItemPackets1_13 extends BlockItemRewriter 0) { + if (dummyEnchatment && enchantments.size() > 0) { ByteTag hideFlags = tag.get("HideFlags"); - if(hideFlags == null){ + if (hideFlags == null) { hideFlags = new ByteTag("HideFlags"); tag.put(new ByteTag(NBT_TAG_NAME + "|noHideFlags")); } @@ -892,13 +941,13 @@ public class BlockItemPackets1_13 extends BlockItemRewriter= 256 && id <= 259 // iron shovel, pickaxe, axe, flint and steel - || id == 261 // bow - || id >= 267 && id <= 279 // iron sword, wooden+stone+diamond swords, shovels, pickaxes, axes - || id >= 283 && id <= 286 // gold sword, shovel, pickaxe, axe - || id >= 290 && id <= 294 // hoes - || id >= 298 && id <= 317 // armors - || id == 346 // fishing rod - || id == 359 // shears - || id == 398 // carrot on a stick - || id == 442 // shield - || id == 443; // elytra - } + private static void flowerPotSpecialTreatment(UserConnection user, int blockState, Position position) throws Exception { + if (FlowerPotHandler.isFlowah(blockState)) { + BackwardsBlockEntityProvider beProvider = Via.getManager().getProviders().get(BackwardsBlockEntityProvider.class); + CompoundTag nbt = beProvider.transform(user, position, "minecraft:flower_pot"); - private void handleEnchantmentClient(Item item) { + PacketWrapper wrapper = new PacketWrapper(0x09, null, user); + wrapper.write(Type.POSITION, position); + wrapper.write(Type.UNSIGNED_BYTE, (short) 5); + wrapper.write(Type.NBT, nbt); + // TODO Why does this not work? + wrapper.send(Protocol1_12_2To1_13.class, true); + } } } diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java index 3792a978..bb02f256 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java @@ -18,6 +18,8 @@ import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.minecraft.Position; import us.myles.ViaVersion.api.platform.providers.Provider; import us.myles.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.IntTag; +import us.myles.viaversion.libs.opennbt.tag.builtin.StringTag; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -72,6 +74,23 @@ public class BackwardsBlockEntityProvider implements Provider { return handler.transform(user, storage.get(position), tag); } + /** + * Transform blocks to block entities! + * + * @param user The user + * @param position The position of the block entity + * @param id The block entity id + */ + public CompoundTag transform(UserConnection user, Position position, String id) throws Exception { + CompoundTag tag = new CompoundTag(""); + tag.put(new StringTag("id", id)); + tag.put(new IntTag("x", Math.toIntExact(position.getX()))); + tag.put(new IntTag("y", Math.toIntExact(position.getY()))); + tag.put(new IntTag("z", Math.toIntExact(position.getZ()))); + + return this.transform(user, position, tag); + } + public interface BackwardsBlockEntityHandler { CompoundTag transform(UserConnection user, int blockId, CompoundTag tag); }