Search in sources :

Example 1 with ComponentRewriter1_14

use of com.viaversion.viaversion.protocols.protocol1_14to1_13_2.data.ComponentRewriter1_14 in project ViaVersion by ViaVersion.

the class Protocol1_14To1_13_2 method registerPackets.

@Override
protected void registerPackets() {
    metadataRewriter.register();
    itemRewriter.register();
    EntityPackets.register(this);
    WorldPackets.register(this);
    PlayerPackets.register(this);
    new SoundRewriter(this).registerSound(ClientboundPackets1_13.SOUND);
    new StatisticsRewriter(this).register(ClientboundPackets1_13.STATISTICS);
    ComponentRewriter componentRewriter = new ComponentRewriter1_14(this);
    componentRewriter.registerComponentPacket(ClientboundPackets1_13.CHAT_MESSAGE);
    CommandRewriter1_14 commandRewriter = new CommandRewriter1_14(this);
    commandRewriter.registerDeclareCommands(ClientboundPackets1_13.DECLARE_COMMANDS);
    registerClientbound(ClientboundPackets1_13.TAGS, new PacketRemapper() {

        @Override
        public void registerMap() {
            handler(new PacketHandler() {

                @Override
                public void handle(PacketWrapper wrapper) throws Exception {
                    int blockTagsSize = wrapper.read(Type.VAR_INT);
                    // block tags
                    wrapper.write(Type.VAR_INT, blockTagsSize + 6);
                    for (int i = 0; i < blockTagsSize; i++) {
                        wrapper.passthrough(Type.STRING);
                        int[] blockIds = wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE);
                        for (int j = 0; j < blockIds.length; j++) {
                            blockIds[j] = getMappingData().getNewBlockId(blockIds[j]);
                        }
                    }
                    // Minecraft crashes if we not send signs tags
                    wrapper.write(Type.STRING, "minecraft:signs");
                    wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[] { getMappingData().getNewBlockId(150), getMappingData().getNewBlockId(155) });
                    wrapper.write(Type.STRING, "minecraft:wall_signs");
                    wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[] { getMappingData().getNewBlockId(155) });
                    wrapper.write(Type.STRING, "minecraft:standing_signs");
                    wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[] { getMappingData().getNewBlockId(150) });
                    // Fences and walls tags - used for block connections
                    wrapper.write(Type.STRING, "minecraft:fences");
                    wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[] { 189, 248, 472, 473, 474, 475 });
                    wrapper.write(Type.STRING, "minecraft:walls");
                    wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[] { 271, 272 });
                    wrapper.write(Type.STRING, "minecraft:wooden_fences");
                    wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[] { 189, 472, 473, 474, 475 });
                    int itemTagsSize = wrapper.read(Type.VAR_INT);
                    // item tags
                    wrapper.write(Type.VAR_INT, itemTagsSize + 2);
                    for (int i = 0; i < itemTagsSize; i++) {
                        wrapper.passthrough(Type.STRING);
                        int[] itemIds = wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE);
                        for (int j = 0; j < itemIds.length; j++) {
                            itemIds[j] = getMappingData().getNewItemId(itemIds[j]);
                        }
                    }
                    // Should fix fuel shift clicking
                    wrapper.write(Type.STRING, "minecraft:signs");
                    wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[] { getMappingData().getNewItemId(541) });
                    // Arrows tag (used by bow)
                    wrapper.write(Type.STRING, "minecraft:arrows");
                    wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[] { 526, 825, 826 });
                    // fluid tags
                    int fluidTagsSize = wrapper.passthrough(Type.VAR_INT);
                    for (int i = 0; i < fluidTagsSize; i++) {
                        wrapper.passthrough(Type.STRING);
                        wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE);
                    }
                    // new entity tags - do we need to send this?
                    wrapper.write(Type.VAR_INT, 0);
                }
            });
        }
    });
    // Set Difficulty packet added in 19w11a
    cancelServerbound(ServerboundPackets1_14.SET_DIFFICULTY);
    // Lock Difficulty packet added in 19w11a
    cancelServerbound(ServerboundPackets1_14.LOCK_DIFFICULTY);
    // Unknown packet added in 19w13a
    cancelServerbound(ServerboundPackets1_14.UPDATE_JIGSAW_BLOCK);
}
Also used : StatisticsRewriter(com.viaversion.viaversion.rewriter.StatisticsRewriter) PacketHandler(com.viaversion.viaversion.api.protocol.remapper.PacketHandler) ComponentRewriter(com.viaversion.viaversion.rewriter.ComponentRewriter) PacketWrapper(com.viaversion.viaversion.api.protocol.packet.PacketWrapper) PacketRemapper(com.viaversion.viaversion.api.protocol.remapper.PacketRemapper) CommandRewriter1_14(com.viaversion.viaversion.protocols.protocol1_14to1_13_2.data.CommandRewriter1_14) SoundRewriter(com.viaversion.viaversion.rewriter.SoundRewriter) ComponentRewriter1_14(com.viaversion.viaversion.protocols.protocol1_14to1_13_2.data.ComponentRewriter1_14)

Aggregations

PacketWrapper (com.viaversion.viaversion.api.protocol.packet.PacketWrapper)1 PacketHandler (com.viaversion.viaversion.api.protocol.remapper.PacketHandler)1 PacketRemapper (com.viaversion.viaversion.api.protocol.remapper.PacketRemapper)1 CommandRewriter1_14 (com.viaversion.viaversion.protocols.protocol1_14to1_13_2.data.CommandRewriter1_14)1 ComponentRewriter1_14 (com.viaversion.viaversion.protocols.protocol1_14to1_13_2.data.ComponentRewriter1_14)1 ComponentRewriter (com.viaversion.viaversion.rewriter.ComponentRewriter)1 SoundRewriter (com.viaversion.viaversion.rewriter.SoundRewriter)1 StatisticsRewriter (com.viaversion.viaversion.rewriter.StatisticsRewriter)1