Mirror von
https://github.com/ViaVersion/ViaBackwards.git
synchronisiert 2024-12-25 07:40:08 +01:00
Add mappings for changed block states and sounds
Dieser Commit ist enthalten in:
Ursprung
725e505514
Commit
95e3446e8c
@ -18,6 +18,8 @@
|
|||||||
package com.viaversion.viabackwards.protocol.protocol1_20to1_20_2;
|
package com.viaversion.viabackwards.protocol.protocol1_20to1_20_2;
|
||||||
|
|
||||||
import com.viaversion.viabackwards.api.BackwardsProtocol;
|
import com.viaversion.viabackwards.api.BackwardsProtocol;
|
||||||
|
import com.viaversion.viabackwards.api.data.BackwardsMappings;
|
||||||
|
import com.viaversion.viabackwards.api.rewriters.SoundRewriter;
|
||||||
import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.rewriter.BlockItemPacketRewriter1_20_2;
|
import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.rewriter.BlockItemPacketRewriter1_20_2;
|
||||||
import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.rewriter.EntityPacketRewriter1_20_2;
|
import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.rewriter.EntityPacketRewriter1_20_2;
|
||||||
import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.storage.ConfigurationPacketStorage;
|
import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.storage.ConfigurationPacketStorage;
|
||||||
@ -36,6 +38,7 @@ import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets;
|
|||||||
import com.viaversion.viaversion.protocols.base.ServerboundLoginPackets;
|
import com.viaversion.viaversion.protocols.base.ServerboundLoginPackets;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ClientboundPackets1_19_4;
|
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ClientboundPackets1_19_4;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ServerboundPackets1_19_4;
|
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ServerboundPackets1_19_4;
|
||||||
|
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.Protocol1_20_2To1_20;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundConfigurationPackets1_20_2;
|
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundConfigurationPackets1_20_2;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPackets1_20_2;
|
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPackets1_20_2;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundConfigurationPackets1_20_2;
|
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundConfigurationPackets1_20_2;
|
||||||
@ -44,6 +47,7 @@ import java.util.UUID;
|
|||||||
|
|
||||||
public final class Protocol1_20To1_20_2 extends BackwardsProtocol<ClientboundPackets1_20_2, ClientboundPackets1_19_4, ServerboundPackets1_20_2, ServerboundPackets1_19_4> {
|
public final class Protocol1_20To1_20_2 extends BackwardsProtocol<ClientboundPackets1_20_2, ClientboundPackets1_19_4, ServerboundPackets1_20_2, ServerboundPackets1_19_4> {
|
||||||
|
|
||||||
|
public static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.20.2", "1.20", Protocol1_20_2To1_20.class);
|
||||||
private final EntityPacketRewriter1_20_2 entityPacketRewriter = new EntityPacketRewriter1_20_2(this);
|
private final EntityPacketRewriter1_20_2 entityPacketRewriter = new EntityPacketRewriter1_20_2(this);
|
||||||
private final BlockItemPacketRewriter1_20_2 itemPacketRewriter = new BlockItemPacketRewriter1_20_2(this);
|
private final BlockItemPacketRewriter1_20_2 itemPacketRewriter = new BlockItemPacketRewriter1_20_2(this);
|
||||||
|
|
||||||
@ -55,6 +59,11 @@ public final class Protocol1_20To1_20_2 extends BackwardsProtocol<ClientboundPac
|
|||||||
protected void registerPackets() {
|
protected void registerPackets() {
|
||||||
super.registerPackets();
|
super.registerPackets();
|
||||||
|
|
||||||
|
final SoundRewriter<ClientboundPackets1_20_2> soundRewriter = new SoundRewriter<>(this);
|
||||||
|
soundRewriter.register1_19_3Sound(ClientboundPackets1_20_2.SOUND);
|
||||||
|
soundRewriter.registerSound(ClientboundPackets1_20_2.ENTITY_SOUND);
|
||||||
|
soundRewriter.registerStopSound(ClientboundPackets1_20_2.STOP_SOUND);
|
||||||
|
|
||||||
registerClientbound(ClientboundPackets1_20_2.SCOREBOARD_OBJECTIVE, wrapper -> {
|
registerClientbound(ClientboundPackets1_20_2.SCOREBOARD_OBJECTIVE, wrapper -> {
|
||||||
final int slot = wrapper.read(Type.VAR_INT);
|
final int slot = wrapper.read(Type.VAR_INT);
|
||||||
wrapper.write(Type.BYTE, (byte) slot);
|
wrapper.write(Type.BYTE, (byte) slot);
|
||||||
@ -146,6 +155,11 @@ public final class Protocol1_20To1_20_2 extends BackwardsProtocol<ClientboundPac
|
|||||||
addEntityTracker(connection, new EntityTrackerBase(connection, Entity1_19_4Types.PLAYER));
|
addEntityTracker(connection, new EntityTrackerBase(connection, Entity1_19_4Types.PLAYER));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BackwardsMappings getMappingData() {
|
||||||
|
return MAPPINGS;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityRewriter<Protocol1_20To1_20_2> getEntityRewriter() {
|
public EntityRewriter<Protocol1_20To1_20_2> getEntityRewriter() {
|
||||||
return entityPacketRewriter;
|
return entityPacketRewriter;
|
||||||
|
@ -23,6 +23,9 @@ import com.viaversion.viaversion.api.data.ParticleMappings;
|
|||||||
import com.viaversion.viaversion.api.data.entity.EntityTracker;
|
import com.viaversion.viaversion.api.data.entity.EntityTracker;
|
||||||
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
|
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
|
||||||
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
|
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.item.Item;
|
||||||
import com.viaversion.viaversion.api.minecraft.metadata.ChunkPosition;
|
import com.viaversion.viaversion.api.minecraft.metadata.ChunkPosition;
|
||||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||||
@ -40,6 +43,7 @@ import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.Serverbou
|
|||||||
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.rewriter.RecipeRewriter1_20_2;
|
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.rewriter.RecipeRewriter1_20_2;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.type.ChunkType1_20_2;
|
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.type.ChunkType1_20_2;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_20to1_19_4.Protocol1_20To1_19_4;
|
import com.viaversion.viaversion.protocols.protocol1_20to1_19_4.Protocol1_20To1_19_4;
|
||||||
|
import com.viaversion.viaversion.rewriter.BlockRewriter;
|
||||||
import com.viaversion.viaversion.util.Key;
|
import com.viaversion.viaversion.util.Key;
|
||||||
import com.viaversion.viaversion.util.MathUtil;
|
import com.viaversion.viaversion.util.MathUtil;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -96,6 +100,12 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter<Clientboun
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerPackets() {
|
public void registerPackets() {
|
||||||
|
final BlockRewriter<ClientboundPackets1_20_2> blockRewriter = new BlockRewriter<>(protocol, Type.POSITION1_14);
|
||||||
|
blockRewriter.registerBlockAction(ClientboundPackets1_20_2.BLOCK_ACTION);
|
||||||
|
blockRewriter.registerBlockChange(ClientboundPackets1_20_2.BLOCK_CHANGE);
|
||||||
|
blockRewriter.registerVarLongMultiBlockChange1_20(ClientboundPackets1_20_2.MULTI_BLOCK_CHANGE);
|
||||||
|
blockRewriter.registerEffect(ClientboundPackets1_20_2.EFFECT, 1010, 2001);
|
||||||
|
|
||||||
protocol.cancelClientbound(ClientboundPackets1_20_2.CHUNK_BATCH_START);
|
protocol.cancelClientbound(ClientboundPackets1_20_2.CHUNK_BATCH_START);
|
||||||
protocol.registerClientbound(ClientboundPackets1_20_2.CHUNK_BATCH_FINISHED, null, wrapper -> {
|
protocol.registerClientbound(ClientboundPackets1_20_2.CHUNK_BATCH_FINISHED, null, wrapper -> {
|
||||||
wrapper.cancel();
|
wrapper.cancel();
|
||||||
@ -125,15 +135,23 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter<Clientboun
|
|||||||
protocol.registerClientbound(ClientboundPackets1_20_2.CHUNK_DATA, wrapper -> {
|
protocol.registerClientbound(ClientboundPackets1_20_2.CHUNK_DATA, wrapper -> {
|
||||||
final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user());
|
final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user());
|
||||||
final Type<Chunk> chunkType = new ChunkType1_20_2(tracker.currentWorldSectionHeight(),
|
final Type<Chunk> chunkType = new ChunkType1_20_2(tracker.currentWorldSectionHeight(),
|
||||||
MathUtil.ceilLog2(Protocol1_20To1_19_4.MAPPINGS.getBlockStateMappings().mappedSize()),
|
MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().size()),
|
||||||
MathUtil.ceilLog2(tracker.biomesSent()));
|
MathUtil.ceilLog2(tracker.biomesSent()));
|
||||||
final Chunk chunk = wrapper.read(chunkType);
|
final Chunk chunk = wrapper.read(chunkType);
|
||||||
|
|
||||||
final Type<Chunk> newChunkType = new Chunk1_18Type(tracker.currentWorldSectionHeight(),
|
final Type<Chunk> newChunkType = new Chunk1_18Type(tracker.currentWorldSectionHeight(),
|
||||||
MathUtil.ceilLog2(Protocol1_20To1_19_4.MAPPINGS.getBlockStateMappings().mappedSize()),
|
MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()),
|
||||||
MathUtil.ceilLog2(tracker.biomesSent()));
|
MathUtil.ceilLog2(tracker.biomesSent()));
|
||||||
wrapper.write(newChunkType, chunk);
|
wrapper.write(newChunkType, chunk);
|
||||||
|
|
||||||
|
for (final ChunkSection section : chunk.getSections()) {
|
||||||
|
final DataPalette blockPalette = section.palette(PaletteType.BLOCKS);
|
||||||
|
for (int i = 0; i < blockPalette.size(); i++) {
|
||||||
|
final int id = blockPalette.idByIndex(i);
|
||||||
|
blockPalette.setIdByIndex(i, protocol.getMappingData().getNewBlockStateId(id));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (final BlockEntity blockEntity : chunk.blockEntities()) {
|
for (final BlockEntity blockEntity : chunk.blockEntities()) {
|
||||||
handleBlockEntity(blockEntity.tag());
|
handleBlockEntity(blockEntity.tag());
|
||||||
}
|
}
|
||||||
@ -169,7 +187,7 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter<Clientboun
|
|||||||
});
|
});
|
||||||
protocol.registerClientbound(ClientboundPackets1_20_2.ADVANCEMENTS, wrapper -> {
|
protocol.registerClientbound(ClientboundPackets1_20_2.ADVANCEMENTS, wrapper -> {
|
||||||
wrapper.passthrough(Type.BOOLEAN); // Reset/clear
|
wrapper.passthrough(Type.BOOLEAN); // Reset/clear
|
||||||
int size = wrapper.passthrough(Type.VAR_INT); // Mapping size
|
final int size = wrapper.passthrough(Type.VAR_INT); // Mapping size
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
wrapper.passthrough(Type.STRING); // Identifier
|
wrapper.passthrough(Type.STRING); // Identifier
|
||||||
|
|
||||||
@ -183,7 +201,7 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter<Clientboun
|
|||||||
wrapper.passthrough(Type.COMPONENT); // Description
|
wrapper.passthrough(Type.COMPONENT); // Description
|
||||||
wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.ITEM1_20_2)); // Icon
|
wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.ITEM1_20_2)); // Icon
|
||||||
wrapper.passthrough(Type.VAR_INT); // Frame type
|
wrapper.passthrough(Type.VAR_INT); // Frame type
|
||||||
int flags = wrapper.passthrough(Type.INT); // Flags
|
final int flags = wrapper.passthrough(Type.INT); // Flags
|
||||||
if ((flags & 1) != 0) {
|
if ((flags & 1) != 0) {
|
||||||
wrapper.passthrough(Type.STRING); // Background texture
|
wrapper.passthrough(Type.STRING); // Background texture
|
||||||
}
|
}
|
||||||
@ -193,7 +211,7 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter<Clientboun
|
|||||||
|
|
||||||
wrapper.passthrough(Type.STRING_ARRAY); // Criteria
|
wrapper.passthrough(Type.STRING_ARRAY); // Criteria
|
||||||
|
|
||||||
int arrayLength = wrapper.passthrough(Type.VAR_INT);
|
final int arrayLength = wrapper.passthrough(Type.VAR_INT);
|
||||||
for (int array = 0; array < arrayLength; array++) {
|
for (int array = 0; array < arrayLength; array++) {
|
||||||
wrapper.passthrough(Type.STRING_ARRAY); // String array
|
wrapper.passthrough(Type.STRING_ARRAY); // String array
|
||||||
}
|
}
|
||||||
@ -225,7 +243,7 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter<Clientboun
|
|||||||
|
|
||||||
handler(wrapper -> {
|
handler(wrapper -> {
|
||||||
// Affected items
|
// Affected items
|
||||||
int length = wrapper.passthrough(Type.VAR_INT);
|
final int length = wrapper.passthrough(Type.VAR_INT);
|
||||||
for (int i = 0; i < length; i++) {
|
for (int i = 0; i < length; i++) {
|
||||||
wrapper.passthrough(Type.SHORT); // Slot
|
wrapper.passthrough(Type.SHORT); // Slot
|
||||||
wrapper.write(Type.ITEM1_20_2, wrapper.read(Type.FLAT_VAR_INT_ITEM));
|
wrapper.write(Type.ITEM1_20_2, wrapper.read(Type.FLAT_VAR_INT_ITEM));
|
||||||
@ -239,7 +257,7 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter<Clientboun
|
|||||||
protocol.registerClientbound(ClientboundPackets1_20_2.TRADE_LIST, wrapper -> {
|
protocol.registerClientbound(ClientboundPackets1_20_2.TRADE_LIST, wrapper -> {
|
||||||
wrapper.cancel();
|
wrapper.cancel();
|
||||||
wrapper.passthrough(Type.VAR_INT); // Container id
|
wrapper.passthrough(Type.VAR_INT); // Container id
|
||||||
int size = wrapper.passthrough(Type.VAR_INT);
|
final int size = wrapper.passthrough(Type.VAR_INT);
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.ITEM1_20_2)); // Input
|
wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.ITEM1_20_2)); // Input
|
||||||
wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.ITEM1_20_2)); // Output
|
wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.ITEM1_20_2)); // Output
|
||||||
@ -275,9 +293,13 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter<Clientboun
|
|||||||
map(Type.FLOAT); // 8 - Particle Data
|
map(Type.FLOAT); // 8 - Particle Data
|
||||||
map(Type.INT); // 9 - Particle Count
|
map(Type.INT); // 9 - Particle Count
|
||||||
handler(wrapper -> {
|
handler(wrapper -> {
|
||||||
int id = wrapper.get(Type.VAR_INT, 0);
|
final int id = wrapper.get(Type.VAR_INT, 0);
|
||||||
ParticleMappings mappings = Protocol1_20To1_19_4.MAPPINGS.getParticleMappings();
|
// Use 1.19.4->1.20 mappings
|
||||||
if (mappings.isItemParticle(id)) {
|
final ParticleMappings mappings = Protocol1_20To1_19_4.MAPPINGS.getParticleMappings();
|
||||||
|
if (mappings.isBlockParticle(id)) {
|
||||||
|
final int data = wrapper.read(Type.VAR_INT);
|
||||||
|
wrapper.write(Type.VAR_INT, protocol.getMappingData().getNewBlockStateId(data));
|
||||||
|
} else if (mappings.isItemParticle(id)) {
|
||||||
wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.ITEM1_20_2));
|
wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.ITEM1_20_2));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -132,7 +132,14 @@ public final class EntityPacketRewriter1_20_2 extends EntityRewriter<Clientbound
|
|||||||
@Override
|
@Override
|
||||||
protected void registerRewrites() {
|
protected void registerRewrites() {
|
||||||
filter().handler((event, meta) -> meta.setMetaType(Types1_20.META_TYPES.byId(meta.metaType().typeId())));
|
filter().handler((event, meta) -> meta.setMetaType(Types1_20.META_TYPES.byId(meta.metaType().typeId())));
|
||||||
|
registerMetaTypeHandler(null, Types1_20.META_TYPES.blockStateType, Types1_20.META_TYPES.optionalBlockStateType, Types1_20.META_TYPES.particleType, null, null);
|
||||||
|
|
||||||
filter().filterFamily(Entity1_19_4Types.DISPLAY).removeIndex(10);
|
filter().filterFamily(Entity1_19_4Types.DISPLAY).removeIndex(10);
|
||||||
|
|
||||||
|
filter().filterFamily(Entity1_19_4Types.MINECART_ABSTRACT).index(11).handler((event, meta) -> {
|
||||||
|
final int blockState = meta.value();
|
||||||
|
meta.setValue(protocol.getMappingData().getNewBlockStateId(blockState));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Binäre Datei nicht angezeigt.
Binäre Datei nicht angezeigt.
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren