mirror of
https://github.com/ViaVersion/ViaVersion.git
synced 2024-11-21 17:45:36 +01:00
Add ParticleRewriter base (#4203)
Co-authored-by: Nassim Jahnke <nassim@njahnke.dev>
This commit is contained in:
parent
d60a37f7e6
commit
c13b40a373
@ -36,6 +36,7 @@ import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
|
||||
import com.viaversion.viaversion.api.rewriter.ComponentRewriter;
|
||||
import com.viaversion.viaversion.api.rewriter.EntityRewriter;
|
||||
import com.viaversion.viaversion.api.rewriter.ItemRewriter;
|
||||
import com.viaversion.viaversion.api.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.api.rewriter.TagRewriter;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.exception.CancelException;
|
||||
@ -374,6 +375,15 @@ public interface Protocol<CU extends ClientboundPacketType, CM extends Clientbou
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the protocol's particle rewriter if present.
|
||||
*
|
||||
* @return particle rewriter
|
||||
*/
|
||||
default @Nullable ParticleRewriter getParticleRewriter() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the protocol's tag rewriter if present.
|
||||
*
|
||||
|
@ -23,7 +23,6 @@
|
||||
package com.viaversion.viaversion.api.rewriter;
|
||||
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.minecraft.Particle;
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
import com.viaversion.viaversion.api.protocol.Protocol;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
@ -51,9 +50,6 @@ public interface ItemRewriter<T extends Protocol<?, ?, ?, ?>> extends Rewriter<T
|
||||
@Nullable
|
||||
Item handleItemToServer(UserConnection connection, @Nullable Item item);
|
||||
|
||||
default void rewriteParticle(UserConnection connection, Particle particle) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the item type of the current protocol.
|
||||
*
|
||||
|
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||
* Copyright (C) 2016-2024 ViaVersion and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.viaversion.viaversion.api.rewriter;
|
||||
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.minecraft.Particle;
|
||||
|
||||
public interface ParticleRewriter {
|
||||
|
||||
void rewriteParticle(UserConnection connection, Particle particle);
|
||||
|
||||
}
|
@ -23,8 +23,8 @@ import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ServerboundPac
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ServerboundPackets1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.packet.ClientboundPacket1_21;
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.packet.ClientboundPackets1_21;
|
||||
import com.viaversion.viaversion.rewriter.RecipeDisplayRewriter;
|
||||
import com.viaversion.viaversion.rewriter.BlockRewriter;
|
||||
import com.viaversion.viaversion.rewriter.RecipeDisplayRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StructuredItemRewriter;
|
||||
|
||||
// To replace if needed:
|
||||
@ -37,8 +37,7 @@ final class BlockItemPacketRewriter1_99 extends StructuredItemRewriter<Clientbou
|
||||
super(protocol, Types1_21.ITEM, Types1_21.ITEM_ARRAY);
|
||||
/*super(protocol,
|
||||
Types1_OLD.ITEM, Types1_OLD.ITEM_ARRAY, Types1_21.ITEM, Types1_21.ITEM_ARRAY,
|
||||
Types1_OLD.ITEM_COST, Types1_OLD.OPTIONAL_ITEM_COST, Types1_21.ITEM_COST, Types1_21.OPTIONAL_ITEM_COST,
|
||||
Types1_OLD.PARTICLE, Types1_21.PARTICLE
|
||||
Types1_OLD.ITEM_COST, Types1_OLD.OPTIONAL_ITEM_COST, Types1_21.ITEM_COST, Types1_21.OPTIONAL_ITEM_COST
|
||||
);*/
|
||||
}
|
||||
|
||||
@ -67,8 +66,6 @@ final class BlockItemPacketRewriter1_99 extends StructuredItemRewriter<Clientbou
|
||||
registerContainerClick1_21_2(ServerboundPackets1_20_5.CONTAINER_CLICK);
|
||||
registerMerchantOffers1_20_5(ClientboundPackets1_21.MERCHANT_OFFERS);
|
||||
registerSetCreativeModeSlot(ServerboundPackets1_20_5.SET_CREATIVE_MODE_SLOT);
|
||||
registerLevelParticles1_20_5(ClientboundPackets1_21.LEVEL_PARTICLES);
|
||||
registerExplosion1_21_2(ClientboundPackets1_21.EXPLODE); // Rewrites the included sound and particles
|
||||
|
||||
final RecipeDisplayRewriter<ClientboundPacket1_21> recipeRewriter = new RecipeDisplayRewriter<>(protocol);
|
||||
recipeRewriter.registerUpdateRecipes(ClientboundPackets1_21.UPDATE_RECIPES);
|
||||
|
@ -25,6 +25,7 @@ import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.provider.PacketTypesProvider;
|
||||
import com.viaversion.viaversion.api.protocol.packet.provider.SimplePacketTypesProvider;
|
||||
import com.viaversion.viaversion.api.rewriter.ComponentRewriter;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_21_2;
|
||||
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ServerboundConfigurationPackets1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ServerboundPacket1_20_5;
|
||||
@ -33,6 +34,7 @@ import com.viaversion.viaversion.protocols.v1_20_5to1_21.packet.ClientboundConfi
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.packet.ClientboundPacket1_21;
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.packet.ClientboundPackets1_21;
|
||||
import com.viaversion.viaversion.rewriter.AttributeRewriter;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
@ -44,12 +46,14 @@ import static com.viaversion.viaversion.util.ProtocolUtil.packetTypeMap;
|
||||
// ClientboundPacket1_21
|
||||
// ServerboundPacket1_20_5
|
||||
// EntityTypes1_20_5 (MAPPED type)
|
||||
// Types1_21_2.PARTICLE
|
||||
// 1.99, 1.98
|
||||
final class Protocol1_99To_98 extends AbstractProtocol<ClientboundPacket1_21, ClientboundPacket1_21, ServerboundPacket1_20_5, ServerboundPacket1_20_5> {
|
||||
|
||||
public static final MappingData MAPPINGS = new MappingDataBase("1.98", "1.99");
|
||||
private final EntityPacketRewriter1_99 entityRewriter = new EntityPacketRewriter1_99(this);
|
||||
private final BlockItemPacketRewriter1_99 itemRewriter = new BlockItemPacketRewriter1_99(this);
|
||||
private final ParticleRewriter<ClientboundPacket1_21> particleRewriter = new ParticleRewriter<>(this, /*Types1_OLD.PARTICLE,*/ Types1_21_2.PARTICLE);
|
||||
private final TagRewriter<ClientboundPacket1_21> tagRewriter = new TagRewriter<>(this);
|
||||
private final ComponentRewriter1_99 componentRewriter = new ComponentRewriter1_99(this);
|
||||
|
||||
@ -79,6 +83,10 @@ final class Protocol1_99To_98 extends AbstractProtocol<ClientboundPacket1_21, Cl
|
||||
componentRewriter.registerPlayerInfoUpdate1_21_2(ClientboundPackets1_21.PLAYER_INFO_UPDATE);
|
||||
componentRewriter.registerPing();
|
||||
|
||||
// If needed for any particle, item, or block changes. Extend ParticleRewriter for particle serializer changes
|
||||
particleRewriter.registerLevelParticles1_20_5(ClientboundPackets1_21.LEVEL_PARTICLES);
|
||||
particleRewriter.registerExplode1_21_2(ClientboundPackets1_21.EXPLODE); // Rewrites the included sound and particles
|
||||
|
||||
final SoundRewriter<ClientboundPacket1_21> soundRewriter = new SoundRewriter<>(this);
|
||||
soundRewriter.registerSound1_19_3(ClientboundPackets1_21.SOUND);
|
||||
soundRewriter.registerSound1_19_3(ClientboundPackets1_21.SOUND_ENTITY);
|
||||
@ -146,6 +154,11 @@ final class Protocol1_99To_98 extends AbstractProtocol<ClientboundPacket1_21, Cl
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter<ClientboundPacket1_21> getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagRewriter<ClientboundPacket1_21> getTagRewriter() {
|
||||
return tagRewriter;
|
||||
|
@ -23,15 +23,16 @@ import com.viaversion.viaversion.api.minecraft.RegistryType;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_14;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.api.type.types.misc.ParticleType;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_13_2;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_14;
|
||||
import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13;
|
||||
import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ServerboundPackets1_13;
|
||||
import com.viaversion.viaversion.protocols.v1_13_2to1_14.rewriter.ComponentRewriter1_14;
|
||||
import com.viaversion.viaversion.protocols.v1_13_2to1_14.data.MappingData1_14;
|
||||
import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ClientboundPackets1_14;
|
||||
import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ServerboundPackets1_14;
|
||||
import com.viaversion.viaversion.protocols.v1_13_2to1_14.rewriter.ComponentRewriter1_14;
|
||||
import com.viaversion.viaversion.protocols.v1_13_2to1_14.rewriter.EntityPacketRewriter1_14;
|
||||
import com.viaversion.viaversion.protocols.v1_13_2to1_14.rewriter.ItemPacketRewriter1_14;
|
||||
import com.viaversion.viaversion.protocols.v1_13_2to1_14.rewriter.PlayerPacketRewriter1_14;
|
||||
@ -39,6 +40,7 @@ import com.viaversion.viaversion.protocols.v1_13_2to1_14.rewriter.WorldPacketRew
|
||||
import com.viaversion.viaversion.protocols.v1_13_2to1_14.storage.EntityTracker1_14;
|
||||
import com.viaversion.viaversion.rewriter.CommandRewriter;
|
||||
import com.viaversion.viaversion.rewriter.ComponentRewriter;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
@ -49,6 +51,7 @@ public class Protocol1_13_2To1_14 extends AbstractProtocol<ClientboundPackets1_1
|
||||
public static final MappingData1_14 MAPPINGS = new MappingData1_14();
|
||||
private final EntityPacketRewriter1_14 entityRewriter = new EntityPacketRewriter1_14(this);
|
||||
private final ItemPacketRewriter1_14 itemRewriter = new ItemPacketRewriter1_14(this);
|
||||
private final ParticleRewriter<ClientboundPackets1_13> particleRewriter = new ParticleRewriter<>(this);
|
||||
private final TagRewriter<ClientboundPackets1_13> tagRewriter = new TagRewriter<>(this);
|
||||
|
||||
public Protocol1_13_2To1_14() {
|
||||
@ -65,6 +68,8 @@ public class Protocol1_13_2To1_14 extends AbstractProtocol<ClientboundPackets1_1
|
||||
new SoundRewriter<>(this).registerSound(ClientboundPackets1_13.SOUND);
|
||||
new StatisticsRewriter<>(this).register(ClientboundPackets1_13.AWARD_STATS);
|
||||
|
||||
particleRewriter.registerLevelParticles1_13(ClientboundPackets1_13.LEVEL_PARTICLES, Types.FLOAT);
|
||||
|
||||
ComponentRewriter<ClientboundPackets1_13> componentRewriter = new ComponentRewriter1_14<>(this);
|
||||
componentRewriter.registerComponentPacket(ClientboundPackets1_13.CHAT);
|
||||
|
||||
@ -139,6 +144,11 @@ public class Protocol1_13_2To1_14 extends AbstractProtocol<ClientboundPackets1_1
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter<ClientboundPackets1_13> getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagRewriter<ClientboundPackets1_13> getTagRewriter() {
|
||||
return tagRewriter;
|
||||
|
@ -206,8 +206,6 @@ public class ItemPacketRewriter1_14 extends ItemRewriter<ClientboundPackets1_13,
|
||||
});
|
||||
|
||||
registerSetCreativeModeSlot(ServerboundPackets1_14.SET_CREATIVE_MODE_SLOT);
|
||||
|
||||
registerLevelParticles(ClientboundPackets1_13.LEVEL_PARTICLES, Types.FLOAT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -35,6 +35,7 @@ import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ServerboundPacke
|
||||
import com.viaversion.viaversion.protocols.v1_13to1_13_1.rewriter.EntityPacketRewriter1_13_1;
|
||||
import com.viaversion.viaversion.protocols.v1_13to1_13_1.rewriter.ItemPacketRewriter1_13_1;
|
||||
import com.viaversion.viaversion.protocols.v1_13to1_13_1.rewriter.WorldPacketRewriter1_13_1;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
|
||||
@ -43,6 +44,7 @@ public class Protocol1_13To1_13_1 extends AbstractProtocol<ClientboundPackets1_1
|
||||
public static final MappingData MAPPINGS = new MappingDataBase("1.13", "1.13.2");
|
||||
private final EntityPacketRewriter1_13_1 entityRewriter = new EntityPacketRewriter1_13_1(this);
|
||||
private final ItemPacketRewriter1_13_1 itemRewriter = new ItemPacketRewriter1_13_1(this);
|
||||
private final ParticleRewriter<ClientboundPackets1_13> particleRewriter = new ParticleRewriter<>(this);
|
||||
private final TagRewriter<ClientboundPackets1_13> tagRewriter = new TagRewriter<>(this);
|
||||
|
||||
public Protocol1_13To1_13_1() {
|
||||
@ -128,6 +130,8 @@ public class Protocol1_13To1_13_1 extends AbstractProtocol<ClientboundPackets1_1
|
||||
});
|
||||
|
||||
tagRewriter.register(ClientboundPackets1_13.UPDATE_TAGS, RegistryType.ITEM);
|
||||
particleRewriter.registerLevelParticles1_13(ClientboundPackets1_13.LEVEL_PARTICLES, Types.FLOAT);
|
||||
|
||||
new StatisticsRewriter<>(this).register(ClientboundPackets1_13.AWARD_STATS);
|
||||
}
|
||||
|
||||
@ -152,6 +156,11 @@ public class Protocol1_13To1_13_1 extends AbstractProtocol<ClientboundPackets1_1
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter<ClientboundPackets1_13> getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagRewriter<ClientboundPackets1_13> getTagRewriter() {
|
||||
return tagRewriter;
|
||||
|
@ -97,7 +97,5 @@ public class ItemPacketRewriter1_13_1 extends ItemRewriter<ClientboundPackets1_1
|
||||
|
||||
registerContainerClick(ServerboundPackets1_13.CONTAINER_CLICK);
|
||||
registerSetCreativeModeSlot(ServerboundPackets1_13.SET_CREATIVE_MODE_SLOT);
|
||||
|
||||
registerLevelParticles(ClientboundPackets1_13.LEVEL_PARTICLES, Types.FLOAT);
|
||||
}
|
||||
}
|
||||
|
@ -31,6 +31,7 @@ import com.viaversion.viaversion.protocols.v1_14_4to1_15.packet.ClientboundPacke
|
||||
import com.viaversion.viaversion.protocols.v1_14_4to1_15.rewriter.EntityPacketRewriter1_15;
|
||||
import com.viaversion.viaversion.protocols.v1_14_4to1_15.rewriter.ItemPacketRewriter1_15;
|
||||
import com.viaversion.viaversion.protocols.v1_14_4to1_15.rewriter.WorldPacketRewriter1_15;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
@ -40,6 +41,7 @@ public class Protocol1_14_4To1_15 extends AbstractProtocol<ClientboundPackets1_1
|
||||
public static final MappingData MAPPINGS = new MappingDataBase("1.14", "1.15");
|
||||
private final EntityPacketRewriter1_15 entityRewriter = new EntityPacketRewriter1_15(this);
|
||||
private final ItemPacketRewriter1_15 itemRewriter = new ItemPacketRewriter1_15(this);
|
||||
private final ParticleRewriter<ClientboundPackets1_14_4> particleRewriter = new ParticleRewriter<>(this);
|
||||
private final TagRewriter<ClientboundPackets1_14_4> tagRewriter = new TagRewriter<>(this);
|
||||
|
||||
public Protocol1_14_4To1_15() {
|
||||
@ -95,8 +97,13 @@ public class Protocol1_14_4To1_15 extends AbstractProtocol<ClientboundPackets1_1
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter<ClientboundPackets1_14_4> getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagRewriter<ClientboundPackets1_14_4> getTagRewriter() {
|
||||
return tagRewriter;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -47,6 +47,7 @@ import com.viaversion.viaversion.protocols.v1_15_2to1_16.rewriter.EntityPacketRe
|
||||
import com.viaversion.viaversion.protocols.v1_15_2to1_16.rewriter.ItemPacketRewriter1_16;
|
||||
import com.viaversion.viaversion.protocols.v1_15_2to1_16.rewriter.WorldPacketRewriter1_16;
|
||||
import com.viaversion.viaversion.protocols.v1_15_2to1_16.storage.InventoryTracker1_16;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
@ -63,6 +64,7 @@ public class Protocol1_15_2To1_16 extends AbstractProtocol<ClientboundPackets1_1
|
||||
public static final MappingData MAPPINGS = new MappingDataBase("1.15", "1.16");
|
||||
private final EntityPacketRewriter1_16 entityRewriter = new EntityPacketRewriter1_16(this);
|
||||
private final ItemPacketRewriter1_16 itemRewriter = new ItemPacketRewriter1_16(this);
|
||||
private final ParticleRewriter<ClientboundPackets1_15> particleRewriter = new ParticleRewriter<>(this);
|
||||
private final ComponentRewriter1_16 componentRewriter = new ComponentRewriter1_16(this);
|
||||
private final TagRewriter<ClientboundPackets1_15> tagRewriter = new TagRewriter<>(this);
|
||||
|
||||
@ -77,6 +79,7 @@ public class Protocol1_15_2To1_16 extends AbstractProtocol<ClientboundPackets1_1
|
||||
WorldPacketRewriter1_16.register(this);
|
||||
|
||||
tagRewriter.register(ClientboundPackets1_15.UPDATE_TAGS, RegistryType.ENTITY);
|
||||
particleRewriter.registerLevelParticles1_13(ClientboundPackets1_15.LEVEL_PARTICLES, Types.DOUBLE);
|
||||
|
||||
new StatisticsRewriter<>(this).register(ClientboundPackets1_15.AWARD_STATS);
|
||||
|
||||
@ -255,6 +258,11 @@ public class Protocol1_15_2To1_16 extends AbstractProtocol<ClientboundPackets1_1
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter<ClientboundPackets1_15> getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
public ComponentRewriter1_16 getComponentRewriter() {
|
||||
return componentRewriter;
|
||||
}
|
||||
|
@ -136,8 +136,6 @@ public class ItemPacketRewriter1_16 extends ItemRewriter<ClientboundPackets1_15,
|
||||
});
|
||||
|
||||
protocol.registerServerbound(ServerboundPackets1_16.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.user(), wrapper.passthrough(Types.ITEM1_13_2)));
|
||||
|
||||
registerLevelParticles(ClientboundPackets1_15.LEVEL_PARTICLES, Types.DOUBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -31,6 +31,7 @@ import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ServerboundPac
|
||||
import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.rewriter.EntityPacketRewriter1_16_2;
|
||||
import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.rewriter.ItemPacketRewriter1_16_2;
|
||||
import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.rewriter.WorldPacketRewriter1_16_2;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
@ -40,6 +41,7 @@ public class Protocol1_16_1To1_16_2 extends AbstractProtocol<ClientboundPackets1
|
||||
public static final MappingData1_16_2 MAPPINGS = new MappingData1_16_2();
|
||||
private final EntityPacketRewriter1_16_2 entityRewriter = new EntityPacketRewriter1_16_2(this);
|
||||
private final ItemPacketRewriter1_16_2 itemRewriter = new ItemPacketRewriter1_16_2(this);
|
||||
private final ParticleRewriter<ClientboundPackets1_16> particleRewriter = new ParticleRewriter<>(this);
|
||||
private final TagRewriter<ClientboundPackets1_16> tagRewriter = new TagRewriter<>(this);
|
||||
|
||||
public Protocol1_16_1To1_16_2() {
|
||||
@ -53,6 +55,7 @@ public class Protocol1_16_1To1_16_2 extends AbstractProtocol<ClientboundPackets1
|
||||
WorldPacketRewriter1_16_2.register(this);
|
||||
|
||||
tagRewriter.register(ClientboundPackets1_16.UPDATE_TAGS, RegistryType.ENTITY);
|
||||
particleRewriter.registerLevelParticles1_13(ClientboundPackets1_16.LEVEL_PARTICLES, Types.DOUBLE);
|
||||
|
||||
new StatisticsRewriter<>(this).register(ClientboundPackets1_16.AWARD_STATS);
|
||||
|
||||
@ -111,8 +114,13 @@ public class Protocol1_16_1To1_16_2 extends AbstractProtocol<ClientboundPackets1
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter<ClientboundPackets1_16> getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagRewriter<ClientboundPackets1_16> getTagRewriter() {
|
||||
return tagRewriter;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -57,7 +57,5 @@ public class ItemPacketRewriter1_16_2 extends ItemRewriter<ClientboundPackets1_1
|
||||
registerContainerClick(ServerboundPackets1_16_2.CONTAINER_CLICK);
|
||||
registerSetCreativeModeSlot(ServerboundPackets1_16_2.SET_CREATIVE_MODE_SLOT);
|
||||
protocol.registerServerbound(ServerboundPackets1_16_2.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.user(), wrapper.passthrough(Types.ITEM1_13_2)));
|
||||
|
||||
registerLevelParticles(ClientboundPackets1_16.LEVEL_PARTICLES, Types.DOUBLE);
|
||||
}
|
||||
}
|
||||
|
@ -37,6 +37,7 @@ import com.viaversion.viaversion.protocols.v1_16_4to1_17.packet.ServerboundPacke
|
||||
import com.viaversion.viaversion.protocols.v1_16_4to1_17.rewriter.EntityPacketRewriter1_17;
|
||||
import com.viaversion.viaversion.protocols.v1_16_4to1_17.rewriter.ItemPacketRewriter1_17;
|
||||
import com.viaversion.viaversion.protocols.v1_16_4to1_17.rewriter.WorldPacketRewriter1_17;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
@ -46,6 +47,7 @@ public final class Protocol1_16_4To1_17 extends AbstractProtocol<ClientboundPack
|
||||
public static final MappingData MAPPINGS = new MappingDataBase("1.16.2", "1.17");
|
||||
private final EntityPacketRewriter1_17 entityRewriter = new EntityPacketRewriter1_17(this);
|
||||
private final ItemPacketRewriter1_17 itemRewriter = new ItemPacketRewriter1_17(this);
|
||||
private final ParticleRewriter<ClientboundPackets1_16_2> particleRewriter = new ParticleRewriter<>(this);
|
||||
private final TagRewriter<ClientboundPackets1_16_2> tagRewriter = new TagRewriter<>(this);
|
||||
|
||||
public Protocol1_16_4To1_17() {
|
||||
@ -86,6 +88,8 @@ public final class Protocol1_16_4To1_17 extends AbstractProtocol<ClientboundPack
|
||||
soundRewriter.registerSound(ClientboundPackets1_16_2.SOUND);
|
||||
soundRewriter.registerSound(ClientboundPackets1_16_2.SOUND_ENTITY);
|
||||
|
||||
particleRewriter.registerLevelParticles1_13(ClientboundPackets1_16_2.LEVEL_PARTICLES, Types.DOUBLE);
|
||||
|
||||
registerClientbound(ClientboundPackets1_16_2.RESOURCE_PACK, wrapper -> {
|
||||
wrapper.passthrough(Types.STRING);
|
||||
wrapper.passthrough(Types.STRING);
|
||||
@ -208,6 +212,11 @@ public final class Protocol1_16_4To1_17 extends AbstractProtocol<ClientboundPack
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter<ClientboundPackets1_16_2> getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagRewriter<ClientboundPackets1_16_2> getTagRewriter() {
|
||||
return tagRewriter;
|
||||
|
@ -46,7 +46,6 @@ public final class ItemPacketRewriter1_17 extends ItemRewriter<ClientboundPacket
|
||||
registerSetSlot(ClientboundPackets1_16_2.CONTAINER_SET_SLOT);
|
||||
registerAdvancements(ClientboundPackets1_16_2.UPDATE_ADVANCEMENTS);
|
||||
registerSetEquipment(ClientboundPackets1_16_2.SET_EQUIPMENT);
|
||||
registerLevelParticles(ClientboundPackets1_16_2.LEVEL_PARTICLES, Types.DOUBLE);
|
||||
|
||||
new RecipeRewriter<>(protocol).register(ClientboundPackets1_16_2.UPDATE_RECIPES);
|
||||
|
||||
|
@ -35,6 +35,7 @@ import com.viaversion.viaversion.protocols.v1_17_1to1_18.rewriter.ItemPacketRewr
|
||||
import com.viaversion.viaversion.protocols.v1_17_1to1_18.rewriter.WorldPacketRewriter1_18;
|
||||
import com.viaversion.viaversion.protocols.v1_17_1to1_18.storage.ChunkLightStorage;
|
||||
import com.viaversion.viaversion.protocols.v1_17to1_17_1.packet.ClientboundPackets1_17_1;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
@ -46,6 +47,7 @@ public final class Protocol1_17_1To1_18 extends AbstractProtocol<ClientboundPack
|
||||
public static final ProtocolLogger LOGGER = new ProtocolLogger(Protocol1_17_1To1_18.class);
|
||||
private final EntityPacketRewriter1_18 entityRewriter = new EntityPacketRewriter1_18(this);
|
||||
private final ItemPacketRewriter1_18 itemRewriter = new ItemPacketRewriter1_18(this);
|
||||
private final ParticleRewriter<ClientboundPackets1_17_1> particleRewriter = new ParticleRewriter<>(this);
|
||||
private final TagRewriter<ClientboundPackets1_17_1> tagRewriter = new TagRewriter<>(this);
|
||||
|
||||
public Protocol1_17_1To1_18() {
|
||||
@ -123,8 +125,13 @@ public final class Protocol1_17_1To1_18 extends AbstractProtocol<ClientboundPack
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter<ClientboundPackets1_17_1> getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagRewriter<ClientboundPackets1_17_1> getTagRewriter() {
|
||||
return tagRewriter;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -90,7 +90,7 @@ public final class EntityPacketRewriter1_18 extends EntityRewriter<ClientboundPa
|
||||
} else if (particle.id() == 3) { // Light block
|
||||
particle.add(Types.VAR_INT, 7786); // Light block state
|
||||
} else {
|
||||
rewriteParticle(event.user(), particle);
|
||||
protocol.getParticleRewriter().rewriteParticle(event.user(), particle);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -45,6 +45,7 @@ import com.viaversion.viaversion.protocols.v1_18_2to1_19.storage.DimensionRegist
|
||||
import com.viaversion.viaversion.protocols.v1_18_2to1_19.storage.NonceStorage1_19;
|
||||
import com.viaversion.viaversion.protocols.v1_18_2to1_19.storage.SequenceStorage;
|
||||
import com.viaversion.viaversion.rewriter.CommandRewriter;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
@ -57,6 +58,7 @@ public final class Protocol1_18_2To1_19 extends AbstractProtocol<ClientboundPack
|
||||
public static final MappingData1_19 MAPPINGS = new MappingData1_19();
|
||||
private final EntityPacketRewriter1_19 entityRewriter = new EntityPacketRewriter1_19(this);
|
||||
private final ItemPacketRewriter1_19 itemRewriter = new ItemPacketRewriter1_19(this);
|
||||
private final ParticleRewriter<ClientboundPackets1_18> particleRewriter = new ParticleRewriter<>(this);
|
||||
private final TagRewriter<ClientboundPackets1_18> tagRewriter = new TagRewriter<>(this);
|
||||
|
||||
public Protocol1_18_2To1_19() {
|
||||
@ -347,6 +349,11 @@ public final class Protocol1_18_2To1_19 extends AbstractProtocol<ClientboundPack
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter<ClientboundPackets1_18> getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagRewriter<ClientboundPackets1_18> getTagRewriter() {
|
||||
return tagRewriter;
|
||||
|
@ -331,7 +331,7 @@ public final class EntityPacketRewriter1_19 extends EntityRewriter<ClientboundPa
|
||||
}
|
||||
}
|
||||
|
||||
rewriteParticle(event.user(), particle);
|
||||
protocol.getParticleRewriter().rewriteParticle(event.user(), particle);
|
||||
});
|
||||
|
||||
registerEntityDataTypeHandler(Types1_19.ENTITY_DATA_TYPES.itemType, Types1_19.ENTITY_DATA_TYPES.optionalBlockStateType, null);
|
||||
@ -349,4 +349,4 @@ public final class EntityPacketRewriter1_19 extends EntityRewriter<ClientboundPa
|
||||
public EntityType typeFromId(final int type) {
|
||||
return EntityTypes1_19.getTypeFromId(type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ public final class ItemPacketRewriter1_19 extends ItemRewriter<ClientboundPacket
|
||||
}
|
||||
}
|
||||
});
|
||||
handler(levelParticlesHandler(Types.VAR_INT));
|
||||
handler(protocol.getParticleRewriter().levelParticlesHandler1_13(Types.VAR_INT));
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -52,6 +52,7 @@ import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.storage.ReceivedMessa
|
||||
import com.viaversion.viaversion.protocols.v1_19to1_19_1.packet.ClientboundPackets1_19_1;
|
||||
import com.viaversion.viaversion.protocols.v1_19to1_19_1.packet.ServerboundPackets1_19_1;
|
||||
import com.viaversion.viaversion.rewriter.CommandRewriter;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
import com.viaversion.viaversion.util.ComponentUtil;
|
||||
@ -68,6 +69,7 @@ public final class Protocol1_19_1To1_19_3 extends AbstractProtocol<ClientboundPa
|
||||
private static final byte[] EMPTY_BYTES = new byte[0];
|
||||
private final EntityPacketRewriter1_19_3 entityRewriter = new EntityPacketRewriter1_19_3(this);
|
||||
private final ItemPacketRewriter1_19_3 itemRewriter = new ItemPacketRewriter1_19_3(this);
|
||||
private final ParticleRewriter<ClientboundPackets1_19_1> particleRewriter = new ParticleRewriter<>(this);
|
||||
private final TagRewriter<ClientboundPackets1_19_1> tagRewriter = new TagRewriter<>(this);
|
||||
|
||||
public Protocol1_19_1To1_19_3() {
|
||||
@ -78,6 +80,8 @@ public final class Protocol1_19_1To1_19_3 extends AbstractProtocol<ClientboundPa
|
||||
protected void registerPackets() {
|
||||
tagRewriter.registerGeneric(ClientboundPackets1_19_1.UPDATE_TAGS);
|
||||
|
||||
particleRewriter.registerLevelParticles1_19(ClientboundPackets1_19_1.LEVEL_PARTICLES);
|
||||
|
||||
entityRewriter.register();
|
||||
itemRewriter.register();
|
||||
|
||||
@ -380,6 +384,11 @@ public final class Protocol1_19_1To1_19_3 extends AbstractProtocol<ClientboundPa
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter<ClientboundPackets1_19_1> getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagRewriter<ClientboundPackets1_19_1> getTagRewriter() {
|
||||
return tagRewriter;
|
||||
|
@ -56,7 +56,6 @@ public final class ItemPacketRewriter1_19_3 extends ItemRewriter<ClientboundPack
|
||||
registerMerchantOffers1_19(ClientboundPackets1_19_1.MERCHANT_OFFERS);
|
||||
registerSetCreativeModeSlot(ServerboundPackets1_19_3.SET_CREATIVE_MODE_SLOT);
|
||||
registerContainerSetData(ClientboundPackets1_19_1.CONTAINER_SET_DATA);
|
||||
registerLevelParticles1_19(ClientboundPackets1_19_1.LEVEL_PARTICLES);
|
||||
|
||||
final RecipeRewriter<ClientboundPackets1_19_1> recipeRewriter = new RecipeRewriter<>(protocol);
|
||||
protocol.registerClientbound(ClientboundPackets1_19_1.UPDATE_RECIPES, wrapper -> {
|
||||
|
@ -22,7 +22,6 @@ import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_19_4;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.api.type.types.misc.ParticleType;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_19_4;
|
||||
@ -36,6 +35,7 @@ import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.rewriter.EntityPacket
|
||||
import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.rewriter.ItemPacketRewriter1_19_4;
|
||||
import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.storage.PlayerVehicleTracker;
|
||||
import com.viaversion.viaversion.rewriter.CommandRewriter;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
@ -48,6 +48,7 @@ public final class Protocol1_19_3To1_19_4 extends AbstractProtocol<ClientboundPa
|
||||
public static final MappingData1_19_4 MAPPINGS = new MappingData1_19_4();
|
||||
private final EntityPacketRewriter1_19_4 entityRewriter = new EntityPacketRewriter1_19_4(this);
|
||||
private final ItemPacketRewriter1_19_4 itemRewriter = new ItemPacketRewriter1_19_4(this);
|
||||
private final ParticleRewriter<ClientboundPackets1_19_3> particleRewriter = new ParticleRewriter<>(this);
|
||||
private final TagRewriter<ClientboundPackets1_19_3> tagRewriter = new TagRewriter<>(this);
|
||||
|
||||
public Protocol1_19_3To1_19_4() {
|
||||
@ -59,6 +60,8 @@ public final class Protocol1_19_3To1_19_4 extends AbstractProtocol<ClientboundPa
|
||||
super.registerPackets();
|
||||
|
||||
tagRewriter.registerGeneric(ClientboundPackets1_19_3.UPDATE_TAGS);
|
||||
particleRewriter.registerLevelParticles1_19(ClientboundPackets1_19_3.LEVEL_PARTICLES);
|
||||
|
||||
new StatisticsRewriter<>(this).register(ClientboundPackets1_19_3.AWARD_STATS);
|
||||
|
||||
final SoundRewriter<ClientboundPackets1_19_3> soundRewriter = new SoundRewriter<>(this);
|
||||
@ -133,6 +136,11 @@ public final class Protocol1_19_3To1_19_4 extends AbstractProtocol<ClientboundPa
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter<ClientboundPackets1_19_3> getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagRewriter<ClientboundPackets1_19_3> getTagRewriter() {
|
||||
return tagRewriter;
|
||||
|
@ -19,7 +19,6 @@ package com.viaversion.viaversion.protocols.v1_19_3to1_19_4.rewriter;
|
||||
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_18;
|
||||
import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.packet.ClientboundPackets1_19_3;
|
||||
@ -91,7 +90,6 @@ public final class ItemPacketRewriter1_19_4 extends ItemRewriter<ClientboundPack
|
||||
registerSetEquipment(ClientboundPackets1_19_3.SET_EQUIPMENT);
|
||||
registerMerchantOffers1_19(ClientboundPackets1_19_3.MERCHANT_OFFERS);
|
||||
registerContainerSetData(ClientboundPackets1_19_3.CONTAINER_SET_DATA);
|
||||
registerLevelParticles1_19(ClientboundPackets1_19_3.LEVEL_PARTICLES);
|
||||
registerSetCreativeModeSlot(ServerboundPackets1_19_4.SET_CREATIVE_MODE_SLOT);
|
||||
registerContainerClick1_17_1(ServerboundPackets1_19_4.CONTAINER_CLICK);
|
||||
|
||||
@ -103,4 +101,4 @@ public final class ItemPacketRewriter1_19_4 extends ItemRewriter<ClientboundPack
|
||||
}
|
||||
}.register(ClientboundPackets1_19_3.UPDATE_RECIPES);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -31,6 +31,7 @@ import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ClientboundPac
|
||||
import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ServerboundPackets1_19_4;
|
||||
import com.viaversion.viaversion.protocols.v1_19_4to1_20.rewriter.EntityPacketRewriter1_20;
|
||||
import com.viaversion.viaversion.protocols.v1_19_4to1_20.rewriter.ItemPacketRewriter1_20;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
@ -40,6 +41,7 @@ public final class Protocol1_19_4To1_20 extends AbstractProtocol<ClientboundPack
|
||||
public static final MappingData MAPPINGS = new MappingDataBase("1.19.4", "1.20");
|
||||
private final EntityPacketRewriter1_20 entityRewriter = new EntityPacketRewriter1_20(this);
|
||||
private final ItemPacketRewriter1_20 itemRewriter = new ItemPacketRewriter1_20(this);
|
||||
private final ParticleRewriter<ClientboundPackets1_19_4> particleRewriter = new ParticleRewriter<>(this);
|
||||
private final TagRewriter<ClientboundPackets1_19_4> tagRewriter = new TagRewriter<>(this);
|
||||
|
||||
public Protocol1_19_4To1_20() {
|
||||
@ -51,6 +53,7 @@ public final class Protocol1_19_4To1_20 extends AbstractProtocol<ClientboundPack
|
||||
super.registerPackets();
|
||||
|
||||
tagRewriter.registerGeneric(ClientboundPackets1_19_4.UPDATE_TAGS);
|
||||
particleRewriter.registerLevelParticles1_19(ClientboundPackets1_19_4.LEVEL_PARTICLES);
|
||||
|
||||
final SoundRewriter<ClientboundPackets1_19_4> soundRewriter = new SoundRewriter<>(this);
|
||||
soundRewriter.registerSound1_19_3(ClientboundPackets1_19_4.SOUND);
|
||||
@ -108,8 +111,13 @@ public final class Protocol1_19_4To1_20 extends AbstractProtocol<ClientboundPack
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter<ClientboundPackets1_19_4> getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagRewriter<ClientboundPackets1_19_4> getTagRewriter() {
|
||||
return tagRewriter;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -59,7 +59,6 @@ public final class ItemPacketRewriter1_20 extends ItemRewriter<ClientboundPacket
|
||||
registerMerchantOffers1_19(ClientboundPackets1_19_4.MERCHANT_OFFERS);
|
||||
registerSetCreativeModeSlot(ServerboundPackets1_19_4.SET_CREATIVE_MODE_SLOT);
|
||||
registerContainerSetData(ClientboundPackets1_19_4.CONTAINER_SET_DATA);
|
||||
registerLevelParticles1_19(ClientboundPackets1_19_4.LEVEL_PARTICLES);
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_19_4.UPDATE_ADVANCEMENTS, wrapper -> {
|
||||
wrapper.passthrough(Types.BOOLEAN); // Reset/clear
|
||||
@ -193,4 +192,4 @@ public final class ItemPacketRewriter1_20 extends ItemRewriter<ClientboundPacket
|
||||
frontText.put("has_glowing_text", glowing);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -47,6 +47,7 @@ import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ClientboundPacke
|
||||
import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundConfigurationPackets1_20_2;
|
||||
import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundPacket1_20_2;
|
||||
import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundPackets1_20_2;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
@ -61,6 +62,7 @@ public final class Protocol1_20_2To1_20_3 extends AbstractProtocol<ClientboundPa
|
||||
|
||||
public static final MappingData MAPPINGS = new MappingDataBase("1.20.2", "1.20.3");
|
||||
private final BlockItemPacketRewriter1_20_3 itemRewriter = new BlockItemPacketRewriter1_20_3(this);
|
||||
private final ParticleRewriter<ClientboundPacket1_20_2> particleRewriter = new ParticleRewriter<>(this);
|
||||
private final EntityPacketRewriter1_20_3 entityRewriter = new EntityPacketRewriter1_20_3(this);
|
||||
private final TagRewriter<ClientboundPacket1_20_2> tagRewriter = new TagRewriter<>(this);
|
||||
|
||||
@ -381,6 +383,11 @@ public final class Protocol1_20_2To1_20_3 extends AbstractProtocol<ClientboundPa
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter<ClientboundPacket1_20_2> getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityPacketRewriter1_20_3 getEntityRewriter() {
|
||||
return entityRewriter;
|
||||
|
@ -91,7 +91,7 @@ public final class BlockItemPacketRewriter1_20_3 extends ItemRewriter<Clientboun
|
||||
wrapper.write(Types.VAR_INT, resourceLocation.equals("block") ? 0 : 1);
|
||||
}
|
||||
});
|
||||
handler(levelParticlesHandler(Types.VAR_INT));
|
||||
handler(protocol.getParticleRewriter().levelParticlesHandler1_13(Types.VAR_INT));
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -49,6 +49,7 @@ import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ServerboundPac
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.rewriter.BlockItemPacketRewriter1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.rewriter.ComponentRewriter1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.rewriter.EntityPacketRewriter1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.rewriter.ParticleRewriter1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.storage.AcknowledgedMessagesStorage;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.storage.ArmorTrimStorage;
|
||||
import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundConfigurationPackets1_20_2;
|
||||
@ -71,6 +72,7 @@ public final class Protocol1_20_3To1_20_5 extends AbstractProtocol<ClientboundPa
|
||||
public static boolean strictErrorHandling = System.getProperty("viaversion.strict-error-handling1_20_5", "true").equalsIgnoreCase("true");
|
||||
private final EntityPacketRewriter1_20_5 entityRewriter = new EntityPacketRewriter1_20_5(this);
|
||||
private final BlockItemPacketRewriter1_20_5 itemRewriter = new BlockItemPacketRewriter1_20_5(this);
|
||||
private final ParticleRewriter1_20_5 particleRewriter = new ParticleRewriter1_20_5(this);
|
||||
private final TagRewriter<ClientboundPacket1_20_3> tagRewriter = new TagRewriter<>(this);
|
||||
private final ComponentRewriter1_20_5<ClientboundPacket1_20_3> componentRewriter = new ComponentRewriter1_20_5<>(this, Types1_20_5.STRUCTURED_DATA);
|
||||
|
||||
@ -318,6 +320,11 @@ public final class Protocol1_20_3To1_20_5 extends AbstractProtocol<ClientboundPa
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter1_20_5 getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagRewriter<ClientboundPacket1_20_3> getTagRewriter() {
|
||||
return tagRewriter;
|
||||
|
@ -306,8 +306,8 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter<Clientboun
|
||||
|
||||
final Particle smallExplosionParticle = wrapper.passthroughAndMap(Types1_20_3.PARTICLE, Types1_20_5.PARTICLE);
|
||||
final Particle largeExplosionParticle = wrapper.passthroughAndMap(Types1_20_3.PARTICLE, Types1_20_5.PARTICLE);
|
||||
rewriteParticle(wrapper.user(), smallExplosionParticle);
|
||||
rewriteParticle(wrapper.user(), largeExplosionParticle);
|
||||
protocol.getParticleRewriter().rewriteParticle(wrapper.user(), smallExplosionParticle);
|
||||
protocol.getParticleRewriter().rewriteParticle(wrapper.user(), largeExplosionParticle);
|
||||
|
||||
final String sound = wrapper.read(Types.STRING);
|
||||
final Float range = wrapper.read(Types.OPTIONAL_FLOAT);
|
||||
|
@ -100,7 +100,7 @@ import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
public class ComponentRewriter1_20_5<C extends ClientboundPacketType> extends ComponentRewriter<C> {
|
||||
public final class ComponentRewriter1_20_5<C extends ClientboundPacketType> extends ComponentRewriter<C> {
|
||||
|
||||
private final Map<StructuredDataKey<?>, ConverterPair<?>> converters = new Reference2ObjectOpenHashMap<>();
|
||||
private final StructuredDataType structuredDataType;
|
||||
|
@ -547,14 +547,6 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter<Clientbound
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rewriteParticle(final UserConnection connection, final Particle particle) {
|
||||
super.rewriteParticle(connection, particle);
|
||||
if (particle.id() == protocol.getMappingData().getParticleMappings().mappedId("entity_effect")) {
|
||||
particle.add(Types.INT, 0); // Default color, changed in the area effect handler
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMappingDataLoaded() {
|
||||
mapTypes();
|
||||
|
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||
* Copyright (C) 2016-2024 ViaVersion and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.viaversion.viaversion.protocols.v1_20_3to1_20_5.rewriter;
|
||||
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.minecraft.Particle;
|
||||
import com.viaversion.viaversion.api.protocol.Protocol;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundPacket1_20_3;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
|
||||
public final class ParticleRewriter1_20_5 extends ParticleRewriter<ClientboundPacket1_20_3> {
|
||||
|
||||
public ParticleRewriter1_20_5(final Protocol<ClientboundPacket1_20_3, ?, ?, ?> protocol) {
|
||||
super(protocol);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rewriteParticle(final UserConnection connection, final Particle particle) {
|
||||
super.rewriteParticle(connection, particle);
|
||||
|
||||
if (particle.id() == protocol.getMappingData().getParticleMappings().mappedId("entity_effect")) {
|
||||
particle.add(Types.INT, 0); // Default color, changed in the area effect handler
|
||||
}
|
||||
}
|
||||
}
|
@ -28,6 +28,7 @@ import com.viaversion.viaversion.api.protocol.packet.provider.PacketTypesProvide
|
||||
import com.viaversion.viaversion.api.protocol.packet.provider.SimplePacketTypesProvider;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.api.type.types.misc.ParticleType;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_20_5;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_21;
|
||||
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundConfigurationPackets1_20_5;
|
||||
@ -47,6 +48,7 @@ import com.viaversion.viaversion.protocols.v1_20_5to1_21.rewriter.EntityPacketRe
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.storage.EfficiencyAttributeStorage;
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.storage.OnGroundTracker;
|
||||
import com.viaversion.viaversion.rewriter.ComponentRewriter;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
@ -62,6 +64,7 @@ public final class Protocol1_20_5To1_21 extends AbstractProtocol<ClientboundPack
|
||||
public static final MappingData1_21 MAPPINGS = new MappingData1_21();
|
||||
private final EntityPacketRewriter1_21 entityRewriter = new EntityPacketRewriter1_21(this);
|
||||
private final BlockItemPacketRewriter1_21 itemRewriter = new BlockItemPacketRewriter1_21(this);
|
||||
private final ParticleRewriter<ClientboundPacket1_20_5> particleRewriter = new ParticleRewriter<>(this, Types1_20_5.PARTICLE, Types1_21.PARTICLE);
|
||||
private final TagRewriter<ClientboundPacket1_20_5> tagRewriter = new TagRewriter<>(this);
|
||||
private final ComponentRewriter<ClientboundPacket1_20_5> componentRewriter = new ComponentRewriter1_21(this);
|
||||
|
||||
@ -92,6 +95,9 @@ public final class Protocol1_20_5To1_21 extends AbstractProtocol<ClientboundPack
|
||||
componentRewriter.registerPlayerCombatKill1_20(ClientboundPackets1_20_5.PLAYER_COMBAT_KILL);
|
||||
componentRewriter.registerComponentPacket(ClientboundPackets1_20_5.SYSTEM_CHAT);
|
||||
|
||||
particleRewriter.registerLevelParticles1_20_5(ClientboundPackets1_20_5.LEVEL_PARTICLES);
|
||||
particleRewriter.registerExplode1_20_5(ClientboundPackets1_20_5.EXPLODE); // Rewrites the included sound and particles
|
||||
|
||||
registerClientbound(ClientboundPackets1_20_5.DISGUISED_CHAT, wrapper -> {
|
||||
componentRewriter.processTag(wrapper.user(), wrapper.passthrough(Types.TAG)); // Message
|
||||
|
||||
@ -246,6 +252,11 @@ public final class Protocol1_20_5To1_21 extends AbstractProtocol<ClientboundPack
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter<ClientboundPacket1_20_5> getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagRewriter<ClientboundPacket1_20_5> getTagRewriter() {
|
||||
return tagRewriter;
|
||||
|
@ -52,8 +52,7 @@ public final class BlockItemPacketRewriter1_21 extends StructuredItemRewriter<Cl
|
||||
public BlockItemPacketRewriter1_21(final Protocol1_20_5To1_21 protocol) {
|
||||
super(protocol,
|
||||
Types1_20_5.ITEM, Types1_20_5.ITEM_ARRAY, Types1_21.ITEM, Types1_21.ITEM_ARRAY,
|
||||
Types1_20_5.ITEM_COST, Types1_20_5.OPTIONAL_ITEM_COST, Types1_21.ITEM_COST, Types1_21.OPTIONAL_ITEM_COST,
|
||||
Types1_20_5.PARTICLE, Types1_21.PARTICLE
|
||||
Types1_20_5.ITEM_COST, Types1_20_5.OPTIONAL_ITEM_COST, Types1_21.ITEM_COST, Types1_21.OPTIONAL_ITEM_COST
|
||||
);
|
||||
}
|
||||
|
||||
@ -74,8 +73,6 @@ public final class BlockItemPacketRewriter1_21 extends StructuredItemRewriter<Cl
|
||||
registerContainerClick1_17_1(ServerboundPackets1_20_5.CONTAINER_CLICK);
|
||||
registerMerchantOffers1_20_5(ClientboundPackets1_20_5.MERCHANT_OFFERS);
|
||||
registerSetCreativeModeSlot(ServerboundPackets1_20_5.SET_CREATIVE_MODE_SLOT);
|
||||
registerLevelParticles1_20_5(ClientboundPackets1_20_5.LEVEL_PARTICLES);
|
||||
registerExplosion(ClientboundPackets1_20_5.EXPLODE); // Rewrites the included sound and particles
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_20_5.HORSE_SCREEN_OPEN, wrapper -> {
|
||||
wrapper.passthrough(Types.UNSIGNED_BYTE); // Container id
|
||||
|
@ -53,6 +53,7 @@ import com.viaversion.viaversion.protocols.v1_20to1_20_2.storage.ConfigurationSt
|
||||
import com.viaversion.viaversion.protocols.v1_20to1_20_2.storage.ConfigurationState.BridgePhase;
|
||||
import com.viaversion.viaversion.protocols.v1_20to1_20_2.storage.LastResourcePack;
|
||||
import com.viaversion.viaversion.protocols.v1_20to1_20_2.storage.LastTags;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.rewriter.SoundRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
import com.viaversion.viaversion.util.Key;
|
||||
@ -64,6 +65,7 @@ public final class Protocol1_20To1_20_2 extends AbstractProtocol<ClientboundPack
|
||||
public static final MappingData MAPPINGS = new MappingDataBase("1.20", "1.20.2");
|
||||
private final EntityPacketRewriter1_20_2 entityPacketRewriter = new EntityPacketRewriter1_20_2(this);
|
||||
private final BlockItemPacketRewriter1_20_2 itemPacketRewriter = new BlockItemPacketRewriter1_20_2(this);
|
||||
private final ParticleRewriter<ClientboundPackets1_19_4> particleRewriter = new ParticleRewriter<>(this);
|
||||
private final TagRewriter<ClientboundPackets1_19_4> tagRewriter = new TagRewriter<>(this);
|
||||
|
||||
public Protocol1_20To1_20_2() {
|
||||
@ -79,6 +81,8 @@ public final class Protocol1_20To1_20_2 extends AbstractProtocol<ClientboundPack
|
||||
soundRewriter.registerSound1_19_3(ClientboundPackets1_19_4.SOUND);
|
||||
soundRewriter.registerSound1_19_3(ClientboundPackets1_19_4.SOUND_ENTITY);
|
||||
|
||||
particleRewriter.registerLevelParticles1_19(ClientboundPackets1_19_4.LEVEL_PARTICLES);
|
||||
|
||||
registerClientbound(ClientboundPackets1_19_4.CUSTOM_PAYLOAD, new PacketHandlers() {
|
||||
@Override
|
||||
protected void register() {
|
||||
@ -377,6 +381,11 @@ public final class Protocol1_20To1_20_2 extends AbstractProtocol<ClientboundPack
|
||||
return itemPacketRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter<ClientboundPackets1_19_4> getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagRewriter<ClientboundPackets1_19_4> getTagRewriter() {
|
||||
return tagRewriter;
|
||||
|
@ -24,13 +24,13 @@ import com.viaversion.nbt.tag.StringTag;
|
||||
import com.viaversion.nbt.tag.Tag;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.data.entity.EntityTracker;
|
||||
import com.viaversion.viaversion.api.minecraft.ChunkPosition;
|
||||
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
|
||||
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
|
||||
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
|
||||
import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
|
||||
import com.viaversion.viaversion.api.minecraft.chunks.PaletteType;
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
import com.viaversion.viaversion.api.minecraft.ChunkPosition;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
@ -39,8 +39,8 @@ import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2;
|
||||
import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ClientboundPackets1_19_4;
|
||||
import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.rewriter.RecipeRewriter1_19_4;
|
||||
import com.viaversion.viaversion.protocols.v1_20to1_20_2.Protocol1_20To1_20_2;
|
||||
import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundPackets1_20_2;
|
||||
import com.viaversion.viaversion.protocols.v1_20to1_20_2.data.PotionEffects1_20_2;
|
||||
import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundPackets1_20_2;
|
||||
import com.viaversion.viaversion.rewriter.BlockRewriter;
|
||||
import com.viaversion.viaversion.rewriter.ItemRewriter;
|
||||
import com.viaversion.viaversion.util.MathUtil;
|
||||
@ -65,7 +65,6 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter<Clientboun
|
||||
registerContainerClick1_17_1(ServerboundPackets1_20_2.CONTAINER_CLICK);
|
||||
registerMerchantOffers1_19(ClientboundPackets1_19_4.MERCHANT_OFFERS);
|
||||
registerSetCreativeModeSlot(ServerboundPackets1_20_2.SET_CREATIVE_MODE_SLOT);
|
||||
registerLevelParticles1_19(ClientboundPackets1_19_4.LEVEL_PARTICLES);
|
||||
|
||||
protocol.registerServerbound(ServerboundPackets1_20_2.SET_BEACON, wrapper -> {
|
||||
// Effects start at 1 before 1.20.2
|
||||
|
@ -46,6 +46,7 @@ import com.viaversion.viaversion.protocols.v1_21to1_21_2.packet.ServerboundPacke
|
||||
import com.viaversion.viaversion.protocols.v1_21to1_21_2.rewriter.BlockItemPacketRewriter1_21_2;
|
||||
import com.viaversion.viaversion.protocols.v1_21to1_21_2.rewriter.ComponentRewriter1_21_2;
|
||||
import com.viaversion.viaversion.protocols.v1_21to1_21_2.rewriter.EntityPacketRewriter1_21_2;
|
||||
import com.viaversion.viaversion.protocols.v1_21to1_21_2.rewriter.ParticleRewriter1_21_2;
|
||||
import com.viaversion.viaversion.protocols.v1_21to1_21_2.storage.BundleStateTracker;
|
||||
import com.viaversion.viaversion.protocols.v1_21to1_21_2.storage.PlayerPositionStorage;
|
||||
import com.viaversion.viaversion.rewriter.AttributeRewriter;
|
||||
@ -61,6 +62,7 @@ public final class Protocol1_21To1_21_2 extends AbstractProtocol<ClientboundPack
|
||||
public static final MappingData MAPPINGS = new MappingDataBase("1.21", "1.21.2");
|
||||
private final EntityPacketRewriter1_21_2 entityRewriter = new EntityPacketRewriter1_21_2(this);
|
||||
private final BlockItemPacketRewriter1_21_2 itemRewriter = new BlockItemPacketRewriter1_21_2(this);
|
||||
private final ParticleRewriter1_21_2 particleRewriter = new ParticleRewriter1_21_2(this);
|
||||
private final TagRewriter<ClientboundPacket1_21> tagRewriter = new TagRewriter<>(this);
|
||||
private final ComponentRewriter1_21_2 componentRewriter = new ComponentRewriter1_21_2(this);
|
||||
|
||||
@ -87,6 +89,8 @@ public final class Protocol1_21To1_21_2 extends AbstractProtocol<ClientboundPack
|
||||
componentRewriter.registerComponentPacket(ClientboundPackets1_21.DISGUISED_CHAT);
|
||||
componentRewriter.registerPing();
|
||||
|
||||
particleRewriter.registerLevelParticles1_20_5(ClientboundPackets1_21.LEVEL_PARTICLES);
|
||||
|
||||
final SoundRewriter<ClientboundPacket1_21> soundRewriter = new SoundRewriter<>(this);
|
||||
soundRewriter.registerSound1_19_3(ClientboundPackets1_21.SOUND);
|
||||
soundRewriter.registerSound1_19_3(ClientboundPackets1_21.SOUND_ENTITY);
|
||||
@ -244,6 +248,11 @@ public final class Protocol1_21To1_21_2 extends AbstractProtocol<ClientboundPack
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParticleRewriter1_21_2 getParticleRewriter() {
|
||||
return particleRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagRewriter<ClientboundPacket1_21> getTagRewriter() {
|
||||
return tagRewriter;
|
||||
|
@ -70,8 +70,7 @@ public final class BlockItemPacketRewriter1_21_2 extends StructuredItemRewriter<
|
||||
public BlockItemPacketRewriter1_21_2(final Protocol1_21To1_21_2 protocol) {
|
||||
super(protocol,
|
||||
Types1_21.ITEM, Types1_21.ITEM_ARRAY, Types1_21_2.ITEM, Types1_21_2.ITEM_ARRAY,
|
||||
Types1_21.ITEM_COST, Types1_21.OPTIONAL_ITEM_COST, Types1_21_2.ITEM_COST, Types1_21_2.OPTIONAL_ITEM_COST,
|
||||
Types1_21.PARTICLE, Types1_21_2.PARTICLE
|
||||
Types1_21.ITEM_COST, Types1_21.OPTIONAL_ITEM_COST, Types1_21_2.ITEM_COST, Types1_21_2.OPTIONAL_ITEM_COST
|
||||
);
|
||||
}
|
||||
|
||||
@ -89,7 +88,6 @@ public final class BlockItemPacketRewriter1_21_2 extends StructuredItemRewriter<
|
||||
registerSetEquipment(ClientboundPackets1_21.SET_EQUIPMENT);
|
||||
registerMerchantOffers1_20_5(ClientboundPackets1_21.MERCHANT_OFFERS);
|
||||
registerSetCreativeModeSlot(ServerboundPackets1_21_2.SET_CREATIVE_MODE_SLOT);
|
||||
registerLevelParticles1_20_5(ClientboundPackets1_21.LEVEL_PARTICLES);
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_21.COOLDOWN, wrapper -> {
|
||||
final MappingData mappingData = protocol.getMappingData();
|
||||
@ -217,10 +215,10 @@ public final class BlockItemPacketRewriter1_21_2 extends StructuredItemRewriter<
|
||||
final Particle smallExplosionParticle = wrapper.read(Types1_21.PARTICLE);
|
||||
final Particle largeExplosionParticle = wrapper.read(Types1_21.PARTICLE);
|
||||
if (power >= 2.0F && blockInteractionMode != 0) {
|
||||
rewriteParticle(wrapper.user(), largeExplosionParticle);
|
||||
protocol.getParticleRewriter().rewriteParticle(wrapper.user(), largeExplosionParticle);
|
||||
wrapper.write(Types1_21_2.PARTICLE, largeExplosionParticle);
|
||||
} else {
|
||||
rewriteParticle(wrapper.user(), smallExplosionParticle);
|
||||
protocol.getParticleRewriter().rewriteParticle(wrapper.user(), smallExplosionParticle);
|
||||
wrapper.write(Types1_21_2.PARTICLE, smallExplosionParticle);
|
||||
}
|
||||
|
||||
@ -357,27 +355,6 @@ public final class BlockItemPacketRewriter1_21_2 extends StructuredItemRewriter<
|
||||
wrapper.write(Types.STRING, recipe.identifier());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rewriteParticle(final UserConnection connection, final Particle particle) {
|
||||
super.rewriteParticle(connection, particle);
|
||||
|
||||
final String identifier = protocol.getMappingData().getParticleMappings().mappedIdentifier(particle.id());
|
||||
if (identifier.equals("minecraft:dust_color_transition")) {
|
||||
floatsToARGB(particle, 0);
|
||||
floatsToARGB(particle, 1);
|
||||
} else if (identifier.equals("minecraft:dust")) {
|
||||
floatsToARGB(particle, 0);
|
||||
}
|
||||
}
|
||||
|
||||
private void floatsToARGB(final Particle particle, final int fromIndex) {
|
||||
final Particle.ParticleData<Float> r = particle.removeArgument(fromIndex);
|
||||
final Particle.ParticleData<Float> g = particle.removeArgument(fromIndex);
|
||||
final Particle.ParticleData<Float> b = particle.removeArgument(fromIndex);
|
||||
final int rgb = 255 << 24 | (int) (r.getValue() * 255) << 16 | (int) (g.getValue() * 255) << 8 | (int) (b.getValue() * 255);
|
||||
particle.add(fromIndex, Types.INT, rgb);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item handleItemToClient(final UserConnection connection, final Item item) {
|
||||
super.handleItemToClient(connection, item);
|
||||
|
@ -0,0 +1,55 @@
|
||||
/*
|
||||
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||
* Copyright (C) 2016-2024 ViaVersion and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.viaversion.viaversion.protocols.v1_21to1_21_2.rewriter;
|
||||
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.minecraft.Particle;
|
||||
import com.viaversion.viaversion.api.protocol.Protocol;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_21;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_21_2;
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.packet.ClientboundPacket1_21;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
|
||||
public final class ParticleRewriter1_21_2 extends ParticleRewriter<ClientboundPacket1_21> {
|
||||
|
||||
public ParticleRewriter1_21_2(final Protocol<ClientboundPacket1_21, ?, ?, ?> protocol) {
|
||||
super(protocol, Types1_21.PARTICLE, Types1_21_2.PARTICLE);
|
||||
}
|
||||
|
||||
private void floatsToARGB(final Particle particle, final int fromIndex) {
|
||||
final Particle.ParticleData<Float> r = particle.removeArgument(fromIndex);
|
||||
final Particle.ParticleData<Float> g = particle.removeArgument(fromIndex);
|
||||
final Particle.ParticleData<Float> b = particle.removeArgument(fromIndex);
|
||||
final int rgb = 255 << 24 | (int) (r.getValue() * 255) << 16 | (int) (g.getValue() * 255) << 8 | (int) (b.getValue() * 255);
|
||||
particle.add(fromIndex, Types.INT, rgb);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rewriteParticle(final UserConnection connection, final Particle particle) {
|
||||
super.rewriteParticle(connection, particle);
|
||||
|
||||
final String identifier = protocol.getMappingData().getParticleMappings().mappedIdentifier(particle.id());
|
||||
if (identifier.equals("minecraft:dust_color_transition")) {
|
||||
floatsToARGB(particle, 0);
|
||||
floatsToARGB(particle, 1);
|
||||
} else if (identifier.equals("minecraft:dust")) {
|
||||
floatsToARGB(particle, 0);
|
||||
}
|
||||
}
|
||||
}
|
@ -27,7 +27,6 @@ import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.data.FullMappings;
|
||||
import com.viaversion.viaversion.api.data.Int2IntMapMappings;
|
||||
import com.viaversion.viaversion.api.data.Mappings;
|
||||
import com.viaversion.viaversion.api.data.ParticleMappings;
|
||||
import com.viaversion.viaversion.api.data.entity.DimensionData;
|
||||
import com.viaversion.viaversion.api.data.entity.EntityTracker;
|
||||
import com.viaversion.viaversion.api.data.entity.TrackedEntity;
|
||||
@ -238,11 +237,11 @@ public abstract class EntityRewriter<C extends ClientboundPacketType, T extends
|
||||
data.setValue(protocol.getMappingData().getNewBlockStateId(value));
|
||||
}
|
||||
} else if (type == particleType) {
|
||||
rewriteParticle(event.user(), data.value());
|
||||
protocol.getParticleRewriter().rewriteParticle(event.user(), data.value());
|
||||
} else if (type == particlesType) {
|
||||
final Particle[] particles = data.value();
|
||||
for (final Particle particle : particles) {
|
||||
rewriteParticle(event.user(), particle);
|
||||
protocol.getParticleRewriter().rewriteParticle(event.user(), particle);
|
||||
}
|
||||
} else if (type == componentType || type == optionalComponentType) {
|
||||
if (protocol.getComponentRewriter() != null) {
|
||||
@ -591,23 +590,6 @@ public abstract class EntityRewriter<C extends ClientboundPacketType, T extends
|
||||
return newEntries;
|
||||
}
|
||||
|
||||
public void rewriteParticle(UserConnection connection, Particle particle) {
|
||||
if (protocol.getItemRewriter() != null) {
|
||||
protocol.getItemRewriter().rewriteParticle(connection, particle);
|
||||
return;
|
||||
}
|
||||
|
||||
// Dupe parts of the logic if no item rewriter is available
|
||||
ParticleMappings mappings = protocol.getMappingData().getParticleMappings();
|
||||
int id = particle.id();
|
||||
if (mappings.isBlockParticle(id)) {
|
||||
Particle.ParticleData<Integer> data = particle.getArgument(0);
|
||||
data.setValue(protocol.getMappingData().getNewBlockStateId(data.getValue()));
|
||||
}
|
||||
|
||||
particle.setId(protocol.getMappingData().getNewParticleId(id));
|
||||
}
|
||||
|
||||
private void logException(Exception e, @Nullable EntityType type, List<EntityData> entityDataList, EntityData entityData) {
|
||||
if (!Via.getConfig().isSuppressMetadataErrors() || Via.getManager().isDebug()) {
|
||||
protocol.getLogger().severe("An error occurred in entity data handler " + this.getClass().getSimpleName()
|
||||
|
@ -22,14 +22,11 @@ import com.viaversion.nbt.tag.Tag;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.data.FullMappings;
|
||||
import com.viaversion.viaversion.api.data.Mappings;
|
||||
import com.viaversion.viaversion.api.data.ParticleMappings;
|
||||
import com.viaversion.viaversion.api.minecraft.Particle;
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
import com.viaversion.viaversion.api.protocol.Protocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
||||
import com.viaversion.viaversion.api.rewriter.ComponentRewriter;
|
||||
import com.viaversion.viaversion.api.rewriter.RewriterBase;
|
||||
@ -47,14 +44,11 @@ public class ItemRewriter<C extends ClientboundPacketType, S extends Serverbound
|
||||
private final Type<Item> mappedItemCostType;
|
||||
private final Type<Item> optionalItemCostType;
|
||||
private final Type<Item> mappedOptionalItemCostType;
|
||||
private final Type<Particle> particleType;
|
||||
private final Type<Particle> mappedParticleType;
|
||||
|
||||
public ItemRewriter(
|
||||
T protocol,
|
||||
Type<Item> itemType, Type<Item[]> itemArrayType, Type<Item> mappedItemType, Type<Item[]> mappedItemArrayType,
|
||||
Type<Item> itemCostType, Type<Item> optionalItemCostType, Type<Item> mappedItemCostType, Type<Item> mappedOptionalItemCostType,
|
||||
Type<Particle> particleType, Type<Particle> mappedParticleType
|
||||
Type<Item> itemCostType, Type<Item> optionalItemCostType, Type<Item> mappedItemCostType, Type<Item> mappedOptionalItemCostType
|
||||
) {
|
||||
super(protocol);
|
||||
this.itemType = itemType;
|
||||
@ -65,12 +59,10 @@ public class ItemRewriter<C extends ClientboundPacketType, S extends Serverbound
|
||||
this.mappedItemCostType = mappedItemCostType;
|
||||
this.optionalItemCostType = optionalItemCostType;
|
||||
this.mappedOptionalItemCostType = mappedOptionalItemCostType;
|
||||
this.particleType = particleType;
|
||||
this.mappedParticleType = mappedParticleType;
|
||||
}
|
||||
|
||||
public ItemRewriter(T protocol, Type<Item> itemType, Type<Item[]> itemArrayType, Type<Item> mappedItemType, Type<Item[]> mappedItemArrayType) {
|
||||
this(protocol, itemType, itemArrayType, mappedItemType, mappedItemArrayType, null, null, null, null, null, null);
|
||||
this(protocol, itemType, itemArrayType, mappedItemType, mappedItemArrayType, null, null, null, null);
|
||||
}
|
||||
|
||||
public ItemRewriter(T protocol, Type<Item> itemType, Type<Item[]> itemArrayType) {
|
||||
@ -459,137 +451,6 @@ public class ItemRewriter<C extends ClientboundPacketType, S extends Serverbound
|
||||
});
|
||||
}
|
||||
|
||||
// Not the very best place for this, but has to stay here until *everything* is abstracted
|
||||
public void registerLevelParticles(C packetType, Type<?> coordType) {
|
||||
protocol.registerClientbound(packetType, new PacketHandlers() {
|
||||
@Override
|
||||
public void register() {
|
||||
map(Types.INT); // 0 - Particle ID
|
||||
map(Types.BOOLEAN); // 1 - Long Distance
|
||||
map(coordType); // 2 - X
|
||||
map(coordType); // 3 - Y
|
||||
map(coordType); // 4 - Z
|
||||
map(Types.FLOAT); // 5 - Offset X
|
||||
map(Types.FLOAT); // 6 - Offset Y
|
||||
map(Types.FLOAT); // 7 - Offset Z
|
||||
map(Types.FLOAT); // 8 - Particle Data
|
||||
map(Types.INT); // 9 - Particle Count
|
||||
handler(levelParticlesHandler());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void registerLevelParticles1_19(C packetType) {
|
||||
protocol.registerClientbound(packetType, new PacketHandlers() {
|
||||
@Override
|
||||
public void register() {
|
||||
map(Types.VAR_INT); // 0 - Particle ID
|
||||
map(Types.BOOLEAN); // 1 - Long Distance
|
||||
map(Types.DOUBLE); // 2 - X
|
||||
map(Types.DOUBLE); // 3 - Y
|
||||
map(Types.DOUBLE); // 4 - Z
|
||||
map(Types.FLOAT); // 5 - Offset X
|
||||
map(Types.FLOAT); // 6 - Offset Y
|
||||
map(Types.FLOAT); // 7 - Offset Z
|
||||
map(Types.FLOAT); // 8 - Particle Data
|
||||
map(Types.INT); // 9 - Particle Count
|
||||
handler(levelParticlesHandler(Types.VAR_INT));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void registerLevelParticles1_20_5(C packetType) {
|
||||
protocol.registerClientbound(packetType, new PacketHandlers() {
|
||||
@Override
|
||||
public void register() {
|
||||
map(Types.BOOLEAN); // Long Distance
|
||||
map(Types.DOUBLE); // X
|
||||
map(Types.DOUBLE); // Y
|
||||
map(Types.DOUBLE); // Z
|
||||
map(Types.FLOAT); // Offset X
|
||||
map(Types.FLOAT); // Offset Y
|
||||
map(Types.FLOAT); // Offset Z
|
||||
map(Types.FLOAT); // Particle Data
|
||||
map(Types.INT); // Particle Count
|
||||
handler(wrapper -> {
|
||||
final Particle particle = wrapper.passthroughAndMap(particleType, mappedParticleType);
|
||||
rewriteParticle(wrapper.user(), particle);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void registerExplosion(C packetType) {
|
||||
final SoundRewriter<C> soundRewriter = new SoundRewriter<>(protocol);
|
||||
protocol.registerClientbound(packetType, wrapper -> {
|
||||
wrapper.passthrough(Types.DOUBLE); // X
|
||||
wrapper.passthrough(Types.DOUBLE); // Y
|
||||
wrapper.passthrough(Types.DOUBLE); // Z
|
||||
wrapper.passthrough(Types.FLOAT); // Power
|
||||
final int blocks = wrapper.passthrough(Types.VAR_INT);
|
||||
for (int i = 0; i < blocks; i++) {
|
||||
wrapper.passthrough(Types.BYTE); // Relative X
|
||||
wrapper.passthrough(Types.BYTE); // Relative Y
|
||||
wrapper.passthrough(Types.BYTE); // Relative Z
|
||||
}
|
||||
wrapper.passthrough(Types.FLOAT); // Knockback X
|
||||
wrapper.passthrough(Types.FLOAT); // Knockback Y
|
||||
wrapper.passthrough(Types.FLOAT); // Knockback Z
|
||||
wrapper.passthrough(Types.VAR_INT); // Block interaction type
|
||||
|
||||
final Particle smallExplosionParticle = wrapper.passthroughAndMap(particleType, mappedParticleType);
|
||||
final Particle largeExplosionParticle = wrapper.passthroughAndMap(particleType, mappedParticleType);
|
||||
rewriteParticle(wrapper.user(), smallExplosionParticle);
|
||||
rewriteParticle(wrapper.user(), largeExplosionParticle);
|
||||
|
||||
soundRewriter.soundHolderHandler().handle(wrapper);
|
||||
});
|
||||
}
|
||||
|
||||
public void registerExplosion1_21_2(C packetType) {
|
||||
final SoundRewriter<C> soundRewriter = new SoundRewriter<>(protocol);
|
||||
protocol.registerClientbound(packetType, wrapper -> {
|
||||
wrapper.passthrough(Types.DOUBLE); // X
|
||||
wrapper.passthrough(Types.DOUBLE); // Y
|
||||
wrapper.passthrough(Types.DOUBLE); // Z
|
||||
wrapper.passthrough(Types.DOUBLE); // Knockback X
|
||||
wrapper.passthrough(Types.DOUBLE); // Knockback Y
|
||||
wrapper.passthrough(Types.DOUBLE); // Knockback Z
|
||||
|
||||
final Particle explosionParticle = wrapper.read(particleType);
|
||||
wrapper.write(mappedParticleType, explosionParticle);
|
||||
rewriteParticle(wrapper.user(), explosionParticle);
|
||||
|
||||
soundRewriter.soundHolderHandler().handle(wrapper);
|
||||
});
|
||||
}
|
||||
|
||||
public PacketHandler levelParticlesHandler() {
|
||||
return levelParticlesHandler(Types.INT);
|
||||
}
|
||||
|
||||
public PacketHandler levelParticlesHandler(Type<Integer> idType) {
|
||||
return wrapper -> {
|
||||
int id = wrapper.get(idType, 0);
|
||||
if (id == -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
ParticleMappings mappings = protocol.getMappingData().getParticleMappings();
|
||||
if (mappings.isBlockParticle(id)) {
|
||||
int data = wrapper.read(Types.VAR_INT);
|
||||
wrapper.write(Types.VAR_INT, protocol.getMappingData().getNewBlockStateId(data));
|
||||
} else if (mappings.isItemParticle(id)) {
|
||||
passthroughClientboundItem(wrapper);
|
||||
}
|
||||
|
||||
int mappedId = protocol.getMappingData().getNewParticleId(id);
|
||||
if (mappedId != id) {
|
||||
wrapper.set(idType, 0, mappedId);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
protected void passthroughClientboundItem(final PacketWrapper wrapper) {
|
||||
final Item item = handleItemToClient(wrapper.user(), wrapper.read(itemType));
|
||||
wrapper.write(mappedItemType, item);
|
||||
@ -600,27 +461,6 @@ public class ItemRewriter<C extends ClientboundPacketType, S extends Serverbound
|
||||
wrapper.write(itemType, item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rewriteParticle(UserConnection connection, Particle particle) {
|
||||
ParticleMappings mappings = protocol.getMappingData().getParticleMappings();
|
||||
int id = particle.id();
|
||||
if (mappings.isBlockParticle(id)) {
|
||||
Particle.ParticleData<Integer> data = particle.getArgument(0);
|
||||
data.setValue(protocol.getMappingData().getNewBlockStateId(data.getValue()));
|
||||
} else if (mappings.isItemParticle(id)) {
|
||||
Particle.ParticleData<Item> data = particle.getArgument(0);
|
||||
Item item = handleItemToClient(connection, data.getValue());
|
||||
if (mappedItemType() != null && itemType() != mappedItemType()) {
|
||||
// Replace the type
|
||||
particle.set(0, mappedItemType(), item);
|
||||
} else {
|
||||
data.setValue(item);
|
||||
}
|
||||
}
|
||||
|
||||
particle.setId(protocol.getMappingData().getNewParticleId(id));
|
||||
}
|
||||
|
||||
protected @Nullable String mappedIdentifier(final FullMappings mappings, final String identifier) {
|
||||
// Check if the original exists before mapping
|
||||
if (mappings.id(identifier) == -1) {
|
||||
|
@ -0,0 +1,199 @@
|
||||
/*
|
||||
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||
* Copyright (C) 2016-2024 ViaVersion and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.viaversion.viaversion.rewriter;
|
||||
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.data.ParticleMappings;
|
||||
import com.viaversion.viaversion.api.minecraft.Particle;
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
import com.viaversion.viaversion.api.protocol.Protocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
||||
import com.viaversion.viaversion.api.rewriter.ItemRewriter;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
|
||||
public class ParticleRewriter<C extends ClientboundPacketType> implements com.viaversion.viaversion.api.rewriter.ParticleRewriter {
|
||||
|
||||
protected final Protocol<C, ?, ?, ?> protocol;
|
||||
private final Type<Particle> particleType;
|
||||
private final Type<Particle> mappedParticleType;
|
||||
|
||||
public ParticleRewriter(final Protocol<C, ?, ?, ?> protocol) {
|
||||
this(protocol, null);
|
||||
}
|
||||
|
||||
public ParticleRewriter(final Protocol<C, ?, ?, ?> protocol, final Type<Particle> particleType) {
|
||||
this.protocol = protocol;
|
||||
this.particleType = particleType;
|
||||
this.mappedParticleType = particleType;
|
||||
}
|
||||
|
||||
public ParticleRewriter(final Protocol<C, ?, ?, ?> protocol, final Type<Particle> particleType, final Type<Particle> mappedParticleType) {
|
||||
this.protocol = protocol;
|
||||
this.particleType = particleType;
|
||||
this.mappedParticleType = mappedParticleType;
|
||||
}
|
||||
|
||||
public void registerLevelParticles1_13(C packetType, Type<?> coordType) {
|
||||
protocol.registerClientbound(packetType, new PacketHandlers() {
|
||||
@Override
|
||||
public void register() {
|
||||
map(Types.INT); // 0 - Particle ID
|
||||
map(Types.BOOLEAN); // 1 - Long Distance
|
||||
map(coordType); // 2 - X
|
||||
map(coordType); // 3 - Y
|
||||
map(coordType); // 4 - Z
|
||||
map(Types.FLOAT); // 5 - Offset X
|
||||
map(Types.FLOAT); // 6 - Offset Y
|
||||
map(Types.FLOAT); // 7 - Offset Z
|
||||
map(Types.FLOAT); // 8 - Particle Data
|
||||
map(Types.INT); // 9 - Particle Count
|
||||
handler(levelParticlesHandler1_13(Types.INT));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void registerLevelParticles1_19(C packetType) {
|
||||
protocol.registerClientbound(packetType, new PacketHandlers() {
|
||||
@Override
|
||||
public void register() {
|
||||
map(Types.VAR_INT); // 0 - Particle ID
|
||||
map(Types.BOOLEAN); // 1 - Long Distance
|
||||
map(Types.DOUBLE); // 2 - X
|
||||
map(Types.DOUBLE); // 3 - Y
|
||||
map(Types.DOUBLE); // 4 - Z
|
||||
map(Types.FLOAT); // 5 - Offset X
|
||||
map(Types.FLOAT); // 6 - Offset Y
|
||||
map(Types.FLOAT); // 7 - Offset Z
|
||||
map(Types.FLOAT); // 8 - Particle Data
|
||||
map(Types.INT); // 9 - Particle Count
|
||||
handler(levelParticlesHandler1_13(Types.VAR_INT));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public PacketHandler levelParticlesHandler1_13(Type<Integer> idType) {
|
||||
return wrapper -> {
|
||||
int id = wrapper.get(idType, 0);
|
||||
if (id == -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
ParticleMappings mappings = protocol.getMappingData().getParticleMappings();
|
||||
if (mappings.isBlockParticle(id)) {
|
||||
int data = wrapper.read(Types.VAR_INT);
|
||||
wrapper.write(Types.VAR_INT, protocol.getMappingData().getNewBlockStateId(data));
|
||||
} else if (mappings.isItemParticle(id)) {
|
||||
ItemRewriter<?> itemRewriter = protocol.getItemRewriter();
|
||||
final Item item = wrapper.read(itemRewriter.itemType());
|
||||
wrapper.write(itemRewriter.mappedItemType(), itemRewriter.handleItemToClient(wrapper.user(), item));
|
||||
}
|
||||
|
||||
int mappedId = protocol.getMappingData().getNewParticleId(id);
|
||||
if (mappedId != id) {
|
||||
wrapper.set(idType, 0, mappedId);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public void registerLevelParticles1_20_5(final C packetType) {
|
||||
protocol.registerClientbound(packetType, wrapper -> {
|
||||
wrapper.passthrough(Types.BOOLEAN); // Long Distance
|
||||
wrapper.passthrough(Types.DOUBLE); // X
|
||||
wrapper.passthrough(Types.DOUBLE); // Y
|
||||
wrapper.passthrough(Types.DOUBLE); // Z
|
||||
wrapper.passthrough(Types.FLOAT); // Offset X
|
||||
wrapper.passthrough(Types.FLOAT); // Offset Y
|
||||
wrapper.passthrough(Types.FLOAT); // Offset Z
|
||||
wrapper.passthrough(Types.FLOAT); // Particle Data
|
||||
wrapper.passthrough(Types.INT); // Particle Count
|
||||
|
||||
final Particle particle = wrapper.passthroughAndMap(particleType, mappedParticleType);
|
||||
rewriteParticle(wrapper.user(), particle);
|
||||
});
|
||||
}
|
||||
|
||||
public void registerExplode1_20_5(final C packetType) {
|
||||
final SoundRewriter<C> soundRewriter = new SoundRewriter<>(protocol);
|
||||
protocol.registerClientbound(packetType, wrapper -> {
|
||||
wrapper.passthrough(Types.DOUBLE); // X
|
||||
wrapper.passthrough(Types.DOUBLE); // Y
|
||||
wrapper.passthrough(Types.DOUBLE); // Z
|
||||
wrapper.passthrough(Types.FLOAT); // Power
|
||||
final int blocks = wrapper.passthrough(Types.VAR_INT);
|
||||
for (int i = 0; i < blocks; i++) {
|
||||
wrapper.passthrough(Types.BYTE); // Relative X
|
||||
wrapper.passthrough(Types.BYTE); // Relative Y
|
||||
wrapper.passthrough(Types.BYTE); // Relative Z
|
||||
}
|
||||
wrapper.passthrough(Types.FLOAT); // Knockback X
|
||||
wrapper.passthrough(Types.FLOAT); // Knockback Y
|
||||
wrapper.passthrough(Types.FLOAT); // Knockback Z
|
||||
wrapper.passthrough(Types.VAR_INT); // Block interaction type
|
||||
|
||||
final Particle smallExplosionParticle = wrapper.passthroughAndMap(particleType, mappedParticleType);
|
||||
final Particle largeExplosionParticle = wrapper.passthroughAndMap(particleType, mappedParticleType);
|
||||
rewriteParticle(wrapper.user(), smallExplosionParticle);
|
||||
rewriteParticle(wrapper.user(), largeExplosionParticle);
|
||||
|
||||
soundRewriter.soundHolderHandler().handle(wrapper);
|
||||
});
|
||||
}
|
||||
|
||||
public void registerExplode1_21_2(final C packetType) {
|
||||
final SoundRewriter<C> soundRewriter = new SoundRewriter<>(protocol);
|
||||
protocol.registerClientbound(packetType, wrapper -> {
|
||||
wrapper.passthrough(Types.DOUBLE); // X
|
||||
wrapper.passthrough(Types.DOUBLE); // Y
|
||||
wrapper.passthrough(Types.DOUBLE); // Z
|
||||
wrapper.passthrough(Types.DOUBLE); // Knockback X
|
||||
wrapper.passthrough(Types.DOUBLE); // Knockback Y
|
||||
wrapper.passthrough(Types.DOUBLE); // Knockback Z
|
||||
|
||||
final Particle explosionParticle = wrapper.read(particleType);
|
||||
wrapper.write(mappedParticleType, explosionParticle);
|
||||
rewriteParticle(wrapper.user(), explosionParticle);
|
||||
|
||||
soundRewriter.soundHolderHandler().handle(wrapper);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rewriteParticle(final UserConnection connection, final Particle particle) {
|
||||
final ParticleMappings mappings = protocol.getMappingData().getParticleMappings();
|
||||
final ItemRewriter<?> itemRewriter = protocol.getItemRewriter();
|
||||
final int id = particle.id();
|
||||
if (mappings.isBlockParticle(id)) {
|
||||
final Particle.ParticleData<Integer> data = particle.getArgument(0);
|
||||
data.setValue(protocol.getMappingData().getNewBlockStateId(data.getValue()));
|
||||
} else if (mappings.isItemParticle(id) && itemRewriter != null) {
|
||||
final Particle.ParticleData<Item> data = particle.getArgument(0);
|
||||
final Item item = itemRewriter.handleItemToClient(connection, data.getValue());
|
||||
if (itemRewriter.mappedItemType() != null && itemRewriter.itemType() != itemRewriter.mappedItemType()) {
|
||||
// Replace the type
|
||||
particle.set(0, itemRewriter.mappedItemType(), item);
|
||||
} else {
|
||||
data.setValue(item);
|
||||
}
|
||||
}
|
||||
|
||||
particle.setId(protocol.getMappingData().getNewParticleId(id));
|
||||
}
|
||||
}
|
@ -23,7 +23,6 @@ import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.data.FullMappings;
|
||||
import com.viaversion.viaversion.api.data.MappingData;
|
||||
import com.viaversion.viaversion.api.minecraft.Holder;
|
||||
import com.viaversion.viaversion.api.minecraft.Particle;
|
||||
import com.viaversion.viaversion.api.minecraft.data.StructuredData;
|
||||
import com.viaversion.viaversion.api.minecraft.data.StructuredDataContainer;
|
||||
import com.viaversion.viaversion.api.minecraft.data.StructuredDataKey;
|
||||
@ -45,10 +44,9 @@ public class StructuredItemRewriter<C extends ClientboundPacketType, S extends S
|
||||
public StructuredItemRewriter(
|
||||
T protocol,
|
||||
Type<Item> itemType, Type<Item[]> itemArrayType, Type<Item> mappedItemType, Type<Item[]> mappedItemArrayType,
|
||||
Type<Item> itemCostType, Type<Item> optionalItemCostType, Type<Item> mappedItemCostType, Type<Item> mappedOptionalItemCostType,
|
||||
Type<Particle> particleType, Type<Particle> mappedParticleType
|
||||
Type<Item> itemCostType, Type<Item> optionalItemCostType, Type<Item> mappedItemCostType, Type<Item> mappedOptionalItemCostType
|
||||
) {
|
||||
super(protocol, itemType, itemArrayType, mappedItemType, mappedItemArrayType, itemCostType, optionalItemCostType, mappedItemCostType, mappedOptionalItemCostType, particleType, mappedParticleType);
|
||||
super(protocol, itemType, itemArrayType, mappedItemType, mappedItemArrayType, itemCostType, optionalItemCostType, mappedItemCostType, mappedOptionalItemCostType);
|
||||
}
|
||||
|
||||
public StructuredItemRewriter(T protocol, Type<Item> itemType, Type<Item[]> itemArrayType, Type<Item> mappedItemType, Type<Item[]> mappedItemArrayType) {
|
||||
|
Loading…
Reference in New Issue
Block a user