Compare commits

...
9 Commits
12 changed files with 68 additions and 11 deletions

No files matched your search

+1 -1
View File
@@ -1,7 +1,7 @@
# ViaBackwards
[![Latest Release](https://img.shields.io/github/v/release/ViaVersion/ViaBackwards)](https://github.com/ViaVersion/ViaBackwards/releases)
[![Build Status](https://github.com/ViaVersion/ViaBackwards/actions/workflows/gradle.yml/badge.svg?branch=master)](https://github.com/ViaVersion/ViaBackwards/actions)
[![Build Status](https://github.com/ViaVersion/ViaBackwards/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/ViaVersion/ViaBackwards/actions)
[![Discord](https://img.shields.io/badge/chat-on%20discord-blue.svg)](https://viaversion.com/discord)
**Allows the connection of older clients to newer server versions for Minecraft servers.**
@@ -73,7 +73,7 @@ import java.util.logging.Logger;
public interface ViaBackwardsPlatform {
String MINIMUM_VV_VERSION = "5.3.0";
String MINIMUM_VV_VERSION = "5.3.2";
/**
* Initialize ViaBackwards.
@@ -70,6 +70,14 @@ public class TranslatableRewriter1_16 extends JsonNBTComponentRewriter<Clientbou
}
}
JsonObject clickEvent = object.getAsJsonObject("clickEvent");
if (clickEvent != null && clickEvent.has("action")) {
String action = clickEvent.get("action").getAsString();
if (action.equals("copy_to_clipboard")) {
clickEvent.addProperty("action", "suggest_command");
}
}
JsonObject hoverEvent = object.getAsJsonObject("hoverEvent");
if (hoverEvent == null || !hoverEvent.has("contents")) {
return;
@@ -220,6 +220,7 @@ public final class EntityPacketRewriter1_19_4 extends EntityRewriter<Clientbound
filter().handler((event, data) -> {
int id = data.dataType().typeId();
if (id >= 25) { // Sniffer state, Vector3f, Quaternion types
event.cancel();
return;
} else if (id >= 15) { // Optional block state - just map down to block state
id--;
@@ -198,7 +198,7 @@ public final class EntityPacketRewriter1_20_2 extends EntityRewriter<Clientbound
@Override
protected void registerRewrites() {
filter().handler((event, data) -> data.setDataType(Types1_20.ENTITY_DATA_TYPES.byId(data.dataType().typeId())));
filter().mapDataType(Types1_20.ENTITY_DATA_TYPES::byId);
registerEntityDataTypeHandler(Types1_20.ENTITY_DATA_TYPES.itemType, Types1_20.ENTITY_DATA_TYPES.blockStateType, Types1_20.ENTITY_DATA_TYPES.optionalBlockStateType, Types1_20.ENTITY_DATA_TYPES.particleType, null, null);
registerBlockStateHandler(EntityTypes1_19_4.ABSTRACT_MINECART, 11);
@@ -28,6 +28,7 @@ import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.minecraft.item.StructuredItem;
import com.viaversion.viaversion.api.type.types.version.Types1_20_5;
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundPacket1_20_5;
import com.viaversion.viaversion.util.ComponentUtil;
import com.viaversion.viaversion.util.SerializerVersion;
import java.util.List;
import org.checkerframework.checker.nullness.qual.Nullable;
@@ -67,7 +68,9 @@ public final class ComponentRewriter1_20_5 extends JsonNBTComponentRewriter<Clie
}
itemTag.remove("components");
itemTag.put("tag", new StringTag(outputSerializerVersion().toSNBT(dataItem.tag())));
final StringTag tag = new StringTag(outputSerializerVersion().toSNBT(dataItem.tag()));
itemTag.put("tag", ComponentUtil.trimStrings(tag));
}
@Override
@@ -419,6 +419,9 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter<Clientbound
}
data.setTypeAndValue(Types1_20_3.ENTITY_DATA_TYPES.varIntType, removeAlpha(color));
return;
} else if (typeId == Types1_20_5.ENTITY_DATA_TYPES.armadilloState.typeId() || typeId == Types1_20_5.ENTITY_DATA_TYPES.wolfVariantType.typeId()) {
event.cancel();
return;
}
int id = typeId;
@@ -122,7 +122,7 @@ public final class EntityPacketRewriter1_20 extends EntityRewriter<ClientboundPa
@Override
protected void registerRewrites() {
filter().handler((event, data) -> data.setDataType(Types1_19_4.ENTITY_DATA_TYPES.byId(data.dataType().typeId())));
filter().mapDataType(Types1_19_4.ENTITY_DATA_TYPES::byId);
registerEntityDataTypeHandler(Types1_19_4.ENTITY_DATA_TYPES.itemType, Types1_19_4.ENTITY_DATA_TYPES.blockStateType, Types1_19_4.ENTITY_DATA_TYPES.optionalBlockStateType,
Types1_19_4.ENTITY_DATA_TYPES.particleType, Types1_19_4.ENTITY_DATA_TYPES.componentType, Types1_19_4.ENTITY_DATA_TYPES.optionalComponentType);
registerBlockStateHandler(EntityTypes1_19_4.ABSTRACT_MINECART, 11);
@@ -61,6 +61,7 @@ import com.viaversion.viaversion.api.minecraft.item.data.ToolProperties;
import com.viaversion.viaversion.api.minecraft.item.data.TooltipDisplay;
import com.viaversion.viaversion.api.minecraft.item.data.Weapon;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.rewriter.ComponentRewriter;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.chunk.ChunkBiomesType1_19_4;
@@ -78,6 +79,7 @@ import com.viaversion.viaversion.protocols.v1_21to1_21_2.packet.ClientboundPacke
import com.viaversion.viaversion.rewriter.BlockRewriter;
import com.viaversion.viaversion.rewriter.RecipeDisplayRewriter;
import com.viaversion.viaversion.util.Either;
import com.viaversion.viaversion.util.Key;
import com.viaversion.viaversion.util.Limit;
import java.util.ArrayList;
import java.util.HashMap;
@@ -195,8 +197,41 @@ public final class BlockItemPacketRewriter1_21_5 extends BackwardsStructuredItem
} while (value < 0);
});
registerAdvancements1_20_3(ClientboundPackets1_21_5.UPDATE_ADVANCEMENTS);
protocol.appendClientbound(ClientboundPackets1_21_5.UPDATE_ADVANCEMENTS, wrapper -> {
protocol.registerClientbound(ClientboundPackets1_21_5.UPDATE_ADVANCEMENTS, wrapper -> {
wrapper.passthrough(Types.BOOLEAN); // Reset/clear
int size = wrapper.passthrough(Types.VAR_INT); // Mapping size
for (int i = 0; i < size; i++) {
wrapper.passthrough(Types.STRING); // Identifier
wrapper.passthrough(Types.OPTIONAL_STRING); // Parent
// Display data
if (wrapper.passthrough(Types.BOOLEAN)) {
final Tag title = wrapper.passthrough(Types.TAG);
final Tag description = wrapper.passthrough(Types.TAG);
final ComponentRewriter componentRewriter = protocol.getComponentRewriter();
if (componentRewriter != null) {
componentRewriter.processTag(wrapper.user(), title);
componentRewriter.processTag(wrapper.user(), description);
}
passthroughClientboundItem(wrapper); // Icon
wrapper.passthrough(Types.VAR_INT); // Frame type
int flags = wrapper.passthrough(Types.INT); // Flags
if ((flags & 1) != 0) {
convertClientAsset(wrapper);
}
wrapper.passthrough(Types.FLOAT); // X
wrapper.passthrough(Types.FLOAT); // Y
}
int requirements = wrapper.passthrough(Types.VAR_INT);
for (int array = 0; array < requirements; array++) {
wrapper.passthrough(Types.STRING_ARRAY);
}
wrapper.passthrough(Types.BOOLEAN); // Send telemetry
}
wrapper.passthrough(Types.STRING_ARRAY); // Removed
final int progressSize = wrapper.passthrough(Types.VAR_INT);
for (int i = 0; i < progressSize; i++) {
@@ -227,6 +262,13 @@ public final class BlockItemPacketRewriter1_21_5 extends BackwardsStructuredItem
recipeRewriter.registerPlaceGhostRecipe(ClientboundPackets1_21_5.PLACE_GHOST_RECIPE);
}
private void convertClientAsset(final PacketWrapper wrapper) {
final String background = wrapper.read(Types.STRING);
final String namespace = Key.namespace(background);
final String path = Key.stripNamespace(background);
wrapper.write(Types.STRING, namespace + ":textures/" + path + ".png");
}
private void sendSaddledEntityData(final UserConnection connection, final TrackedEntity trackedEntity, final int entityId) {
byte data = 0;
if (trackedEntity.hasData()) {
@@ -141,7 +141,7 @@ public final class ComponentRewriter1_21_5 extends NBTComponentRewriter<Clientbo
if (attributeModifiers != null) {
removeNamespaced(componentsTag, "attribute_modifiers");
final CompoundTag attributesParent = new CompoundTag();
attributesParent.put("modifiers", attributesParent);
attributesParent.put("modifiers", attributeModifiers);
attributesParent.putBoolean("show_in_tooltip", hiddenComponents.contains("attribute_modifiers"));
componentsTag.put("attribute_modifiers", attributesParent);
}
@@ -246,7 +246,7 @@ public final class ComponentRewriter1_21_5 extends NBTComponentRewriter<Clientbo
private String toUglyJson(final UserConnection connection, final Tag value) {
processTag(connection, value);
return SerializerVersion.V1_21_4.toString(SerializerVersion.V1_21_5.toComponent(value));
return SerializerVersion.V1_21_4.toString(SerializerVersion.V1_21_4.toComponent(value));
}
@Override
+1 -1
View File
@@ -1,4 +1,4 @@
projectVersion=5.3.1
projectVersion=5.3.2
# Smile emoji
mcVersions=1.21.5, 1.21.4, 1.21.3, 1.21.2, 1.21.1, 1.21, 1.20.6, 1.20.5, 1.20.4, 1.20.3, 1.20.2, 1.20.1, 1.20, 1.19.4, 1.19.3, 1.19.2, 1.19.1, 1.19, 1.18.2, 1.18.1, 1.18, 1.17.1, 1.17, 1.16.5, 1.16.4, 1.16.3, 1.16.2, 1.16.1, 1.16, 1.15.2, 1.15.1, 1.15, 1.14.4, 1.14.3, 1.14.2, 1.14.1, 1.14, 1.13.2, 1.13.1, 1.13, 1.12.2, 1.12.1, 1.12, 1.11.2, 1.11.1, 1.11, 1.10.2, 1.10.1, 1.10
+1 -1
View File
@@ -3,7 +3,7 @@ metadata.format.version = "1.1"
[versions]
# ViaVersion
viaver = "5.3.1-SNAPSHOT"
viaver = "5.3.2-SNAPSHOT"
# Common provided
netty = "4.0.20.Final"