mirror of
https://github.com/ViaVersion/ViaBackwards.git
synced 2026-11-04 17:00:16 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aecd74425d | ||
|
|
53584b01f7 | ||
|
|
7f97ae80c3 | ||
|
|
4dd4b2f53b | ||
|
|
8a9cc8bd9b | ||
|
|
9e3861fb21 | ||
|
|
b74ac19d9d | ||
|
|
4cca914c5d | ||
|
|
fa90711056 | ||
|
|
d5d4073857 | ||
|
|
b8e0b39eeb | ||
|
|
6ec175dff2 | ||
|
|
9bd1785886 | ||
|
|
9fabc4b11e | ||
|
|
3969186439 | ||
|
|
422826a9b8 |
No files matched your search
@@ -22,4 +22,4 @@ jobs:
|
||||
java-version: 17
|
||||
check-latest: true
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew build
|
||||
run: ./gradlew build --refresh-dependencies
|
||||
@@ -26,4 +26,4 @@ jobs:
|
||||
env:
|
||||
HANGAR_TOKEN: ${{ secrets.HANGAR_TOKEN }}
|
||||
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
|
||||
run: ./gradlew build modrinth publishAllPublicationsToHangar --stacktrace
|
||||
run: ./gradlew build modrinth publishAllPublicationsToHangar --refresh-dependencies --stacktrace
|
||||
@@ -1,7 +1,7 @@
|
||||
# ViaBackwards
|
||||
|
||||
[](https://github.com/ViaVersion/ViaBackwards/releases)
|
||||
[](https://github.com/ViaVersion/ViaBackwards/actions)
|
||||
[](https://github.com/ViaVersion/ViaBackwards/actions)
|
||||
[](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.
|
||||
|
||||
+4
-23
@@ -20,7 +20,6 @@ package com.viaversion.viabackwards.protocol.template;
|
||||
import com.viaversion.viabackwards.api.rewriters.EntityRewriter;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_4;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_21_4;
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.packet.ClientboundConfigurationPackets1_21;
|
||||
import com.viaversion.viaversion.protocols.v1_21to1_21_2.packet.ClientboundPacket1_21_2;
|
||||
@@ -41,31 +40,13 @@ final class EntityPacketRewriter1_99 extends EntityRewriter<ClientboundPacket1_2
|
||||
registerTrackerWithData1_19(ClientboundPackets1_21_2.ADD_ENTITY, EntityTypes1_21_4.FALLING_BLOCK);
|
||||
registerSetEntityData(ClientboundPackets1_21_2.SET_ENTITY_DATA, /*Types1_OLD.ENTITY_DATA_LIST, */Types1_21_4.ENTITY_DATA_LIST); // Specify old and new entity data list if changed
|
||||
registerRemoveEntities(ClientboundPackets1_21_2.REMOVE_ENTITIES);
|
||||
registerPlayerAbilities(ClientboundPackets1_21_2.PLAYER_ABILITIES);
|
||||
registerGameEvent(ClientboundPackets1_21_2.GAME_EVENT);
|
||||
registerLogin1_20_5(ClientboundPackets1_21_2.LOGIN);
|
||||
registerRespawn1_20_5(ClientboundPackets1_21_2.RESPAWN);
|
||||
|
||||
final RegistryDataRewriter registryDataRewriter = new RegistryDataRewriter(protocol);
|
||||
protocol.registerClientbound(ClientboundConfigurationPackets1_21.REGISTRY_DATA, registryDataRewriter::handle);
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_21_2.LOGIN, wrapper -> {
|
||||
final int entityId = wrapper.passthrough(Types.INT); // Entity id
|
||||
wrapper.passthrough(Types.BOOLEAN); // Hardcore
|
||||
wrapper.passthrough(Types.STRING_ARRAY); // World List
|
||||
wrapper.passthrough(Types.VAR_INT); // Max players
|
||||
wrapper.passthrough(Types.VAR_INT); // View distance
|
||||
wrapper.passthrough(Types.VAR_INT); // Simulation distance
|
||||
wrapper.passthrough(Types.BOOLEAN); // Reduced debug info
|
||||
wrapper.passthrough(Types.BOOLEAN); // Show death screen
|
||||
wrapper.passthrough(Types.BOOLEAN); // Limited crafting
|
||||
final int dimensionId = wrapper.passthrough(Types.VAR_INT);
|
||||
final String world = wrapper.passthrough(Types.STRING);
|
||||
trackWorldDataByKey1_20_5(wrapper.user(), dimensionId, world);
|
||||
trackPlayer(wrapper.user(), entityId);
|
||||
});
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_21_2.RESPAWN, wrapper -> {
|
||||
final int dimensionId = wrapper.passthrough(Types.VAR_INT);
|
||||
final String world = wrapper.passthrough(Types.STRING);
|
||||
trackWorldDataByKey1_20_5(wrapper.user(), dimensionId, world); // Tracks world height and name for chunk data and entity (un)tracking
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+8
@@ -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;
|
||||
|
||||
+1
@@ -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--;
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
|
||||
+1
-1
@@ -111,7 +111,7 @@ public final class Protocol1_20_5To1_20_3 extends BackwardsProtocol<ClientboundP
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_20_5.TAB_LIST);
|
||||
translatableRewriter.registerPlayerCombatKill1_20(ClientboundPackets1_20_5.PLAYER_COMBAT_KILL);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.SYSTEM_CHAT);
|
||||
translatableRewriter.registerDisguisedChat(ClientboundPackets1_20_5.DISGUISED_CHAT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.DISGUISED_CHAT);
|
||||
translatableRewriter.registerPlayerInfoUpdate1_20_3(ClientboundPackets1_20_5.PLAYER_INFO_UPDATE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
|
||||
+4
-1
@@ -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
|
||||
|
||||
+3
@@ -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;
|
||||
|
||||
+1
-1
@@ -72,7 +72,7 @@ public final class Protocol1_20To1_19_4 extends BackwardsProtocol<ClientboundPac
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.DISCONNECT);
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_19_4.TAB_LIST);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.SYSTEM_CHAT);
|
||||
translatableRewriter.registerDisguisedChat(ClientboundPackets1_19_4.DISGUISED_CHAT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.DISGUISED_CHAT);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
registerClientbound(ClientboundPackets1_19_4.UPDATE_ENABLED_FEATURES, wrapper -> {
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
+62
-4
@@ -42,6 +42,7 @@ import com.viaversion.viaversion.api.minecraft.SoundEvent;
|
||||
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
|
||||
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
|
||||
import com.viaversion.viaversion.api.minecraft.chunks.Chunk1_18;
|
||||
import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
|
||||
import com.viaversion.viaversion.api.minecraft.chunks.Heightmap;
|
||||
import com.viaversion.viaversion.api.minecraft.data.StructuredDataContainer;
|
||||
import com.viaversion.viaversion.api.minecraft.data.StructuredDataKey;
|
||||
@@ -60,8 +61,11 @@ 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;
|
||||
import com.viaversion.viaversion.api.type.types.chunk.ChunkBiomesType1_21_5;
|
||||
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2;
|
||||
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_21_5;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_21_4;
|
||||
@@ -75,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;
|
||||
@@ -128,6 +133,19 @@ public final class BlockItemPacketRewriter1_21_5 extends BackwardsStructuredItem
|
||||
wrapper.write(newChunkType, mappedChunk);
|
||||
});
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_21_5.CHUNKS_BIOMES, wrapper -> {
|
||||
final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user());
|
||||
final int globalPaletteBiomeBits = ceilLog2(tracker.biomesSent());
|
||||
final Type<DataPalette[]> biomesType = new ChunkBiomesType1_21_5(tracker.currentWorldSectionHeight(), globalPaletteBiomeBits);
|
||||
final Type<DataPalette[]> newBiomesType = new ChunkBiomesType1_19_4(tracker.currentWorldSectionHeight(), globalPaletteBiomeBits);
|
||||
|
||||
final int size = wrapper.passthrough(Types.VAR_INT);
|
||||
for (int i = 0; i < size; i++) {
|
||||
wrapper.passthrough(Types.CHUNK_POSITION);
|
||||
wrapper.passthroughAndMap(biomesType, newBiomesType);
|
||||
}
|
||||
});
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_21_5.SET_CURSOR_ITEM, this::passthroughClientboundItem);
|
||||
registerSetPlayerInventory(ClientboundPackets1_21_5.SET_PLAYER_INVENTORY);
|
||||
registerCooldown1_21_2(ClientboundPackets1_21_5.COOLDOWN);
|
||||
@@ -170,17 +188,50 @@ public final class BlockItemPacketRewriter1_21_5 extends BackwardsStructuredItem
|
||||
final int equipmentSlot = value & 0x7F;
|
||||
if (equipmentSlot == SADDLE_EQUIPMENT_SLOT) {
|
||||
if (trackedEntity != null && trackedEntity.entityType().isOrHasParent(EntityTypes1_21_5.ABSTRACT_HORSE)) {
|
||||
wrapper.cancel();
|
||||
sendSaddledEntityData(wrapper.user(), trackedEntity, entityId);
|
||||
return;
|
||||
}
|
||||
wrapper.cancel();
|
||||
return;
|
||||
}
|
||||
passthroughClientboundItem(wrapper);
|
||||
} 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++) {
|
||||
@@ -211,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()) {
|
||||
|
||||
+6
-6
@@ -17,11 +17,6 @@
|
||||
*/
|
||||
package com.viaversion.viabackwards.protocol.v1_21_5to1_21_4.rewriter;
|
||||
|
||||
import static com.viaversion.viaversion.util.TagUtil.getNamespacedCompoundTag;
|
||||
import static com.viaversion.viaversion.util.TagUtil.getNamespacedCompoundTagList;
|
||||
import static com.viaversion.viaversion.util.TagUtil.getNamespacedNumberTag;
|
||||
import static com.viaversion.viaversion.util.TagUtil.removeNamespaced;
|
||||
|
||||
import com.viaversion.nbt.tag.CompoundTag;
|
||||
import com.viaversion.nbt.tag.ListTag;
|
||||
import com.viaversion.nbt.tag.NumberTag;
|
||||
@@ -38,6 +33,11 @@ import com.viaversion.viaversion.util.TagUtil;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import static com.viaversion.viaversion.util.TagUtil.getNamespacedCompoundTag;
|
||||
import static com.viaversion.viaversion.util.TagUtil.getNamespacedCompoundTagList;
|
||||
import static com.viaversion.viaversion.util.TagUtil.getNamespacedNumberTag;
|
||||
import static com.viaversion.viaversion.util.TagUtil.removeNamespaced;
|
||||
|
||||
public final class ComponentRewriter1_21_5 extends NBTComponentRewriter<ClientboundPacket1_21_5> {
|
||||
|
||||
public ComponentRewriter1_21_5(final BackwardsProtocol<ClientboundPacket1_21_5, ?, ?, ?> protocol) {
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2;
|
||||
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.libs.fastutil.ints.Int2IntMap;
|
||||
import com.viaversion.viaversion.libs.mcstructs.core.TextFormatting;
|
||||
import com.viaversion.viaversion.libs.mcstructs.text.TextFormatting;
|
||||
import com.viaversion.viaversion.libs.mcstructs.text.components.StringComponent;
|
||||
import com.viaversion.viaversion.libs.mcstructs.text.components.TranslationComponent;
|
||||
import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.rewriter.RecipeRewriter1_20_3;
|
||||
|
||||
@@ -17,10 +17,12 @@
|
||||
*/
|
||||
package com.viaversion.viabackwards.utils;
|
||||
|
||||
import com.viaversion.viaversion.libs.mcstructs.text.ATextComponent;
|
||||
import com.viaversion.viaversion.libs.mcstructs.text.Style;
|
||||
import com.viaversion.viaversion.libs.mcstructs.text.TextComponent;
|
||||
import com.viaversion.viaversion.libs.mcstructs.text.components.TranslationComponent;
|
||||
import com.viaversion.viaversion.libs.mcstructs.text.serializer.LegacyStringDeserializer;
|
||||
import com.viaversion.viaversion.libs.mcstructs.text.stringformat.StringFormat;
|
||||
import com.viaversion.viaversion.libs.mcstructs.text.stringformat.handling.ColorHandling;
|
||||
import com.viaversion.viaversion.libs.mcstructs.text.stringformat.handling.DeserializerUnknownHandling;
|
||||
import com.viaversion.viaversion.util.SerializerVersion;
|
||||
import java.util.HashSet;
|
||||
import java.util.Objects;
|
||||
@@ -43,8 +45,8 @@ public final class ChatUtil {
|
||||
}, itemData);
|
||||
}
|
||||
|
||||
public static String legacyToJsonString(String legacy, Consumer<ATextComponent> consumer, boolean itemData) {
|
||||
final ATextComponent component = LegacyStringDeserializer.parse(legacy, true);
|
||||
public static String legacyToJsonString(String legacy, Consumer<TextComponent> consumer, boolean itemData) {
|
||||
final TextComponent component = StringFormat.vanilla().fromString(legacy, ColorHandling.RESET, DeserializerUnknownHandling.WHITE);
|
||||
consumer.accept(component);
|
||||
|
||||
if (itemData) {
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
projectVersion=5.3.0
|
||||
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
|
||||
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
|
||||
mcVersionRange=1.10-1.21.5
|
||||
velocityVersion=3.4
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ metadata.format.version = "1.1"
|
||||
[versions]
|
||||
|
||||
# ViaVersion
|
||||
viaver = "5.3.0"
|
||||
viaver = "5.3.2-SNAPSHOT"
|
||||
|
||||
# Common provided
|
||||
netty = "4.0.20.Final"
|
||||
@@ -16,7 +16,7 @@ checkerQual = "3.49.1"
|
||||
paper = "1.16.5-R0.1-SNAPSHOT"
|
||||
velocity = "3.1.1"
|
||||
fabricLoader = "0.11.6"
|
||||
viaProxy = "3.4.0-SNAPSHOT"
|
||||
viaProxy = "3.4.1-SNAPSHOT"
|
||||
|
||||
[libraries]
|
||||
|
||||
|
||||
Reference in new issue
Block a user