Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f461a0b14c | ||
|
|
2daa1aa39e | ||
|
|
38af6f883b | ||
|
|
418357d8eb | ||
|
|
13a74f43ef | ||
|
|
a921337178 | ||
|
|
da5837d794 | ||
|
|
4dded860ce | ||
|
|
8e99dddb91 | ||
|
|
e662640377 | ||
|
|
bba0a3a3a6 | ||
|
|
4061e91e53 | ||
|
|
14e208e9d7 | ||
|
|
c5dacad81e |
No files matched your search
@@ -69,7 +69,7 @@ import java.util.logging.Logger;
|
||||
|
||||
public interface ViaBackwardsPlatform {
|
||||
|
||||
String MINIMUM_VV_VERSION = "5.0.0";
|
||||
String MINIMUM_VV_VERSION = "5.0.1";
|
||||
|
||||
/**
|
||||
* Initialize ViaBackwards.
|
||||
|
||||
+3
-9
@@ -67,14 +67,8 @@ public class BackwardsStructuredItemRewriter<C extends ClientboundPacketType, S
|
||||
|
||||
if (protocol.getComponentRewriter() != null) {
|
||||
// Handle name and lore components
|
||||
final StructuredData<Tag> customNameData = dataContainer.getNonEmpty(StructuredDataKey.CUSTOM_NAME);
|
||||
if (customNameData != null) {
|
||||
final Tag originalName = customNameData.value().copy();
|
||||
protocol.getComponentRewriter().processTag(connection, customNameData.value());
|
||||
if (!customNameData.value().equals(originalName)) {
|
||||
saveTag(createCustomTag(item), originalName, "Name");
|
||||
}
|
||||
}
|
||||
updateComponent(connection, item, StructuredDataKey.ITEM_NAME, "item_name");
|
||||
updateComponent(connection, item, StructuredDataKey.CUSTOM_NAME, "custom_name");
|
||||
|
||||
final StructuredData<Tag[]> loreData = dataContainer.getNonEmpty(StructuredDataKey.LORE);
|
||||
if (loreData != null) {
|
||||
@@ -115,7 +109,7 @@ public class BackwardsStructuredItemRewriter<C extends ClientboundPacketType, S
|
||||
// Set custom name - only done if there is no original one
|
||||
if (!dataContainer.contains(StructuredDataKey.CUSTOM_NAME)) {
|
||||
dataContainer.set(StructuredDataKey.CUSTOM_NAME, mappedItem.tagName());
|
||||
tag.putBoolean(nbtTagName("customName"), true);
|
||||
tag.putBoolean(nbtTagName("added_custom_name"), true);
|
||||
}
|
||||
|
||||
updateItemComponents(connection, dataContainer, this::handleItemToClient, itemIdRewriter, blockIdRewriter);
|
||||
|
||||
+12
-7
@@ -30,7 +30,6 @@ import com.viaversion.viaversion.api.minecraft.data.StructuredDataKey;
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
import com.viaversion.viaversion.api.minecraft.item.data.Enchantments;
|
||||
import com.viaversion.viaversion.libs.fastutil.ints.Int2IntMap;
|
||||
import com.viaversion.viaversion.libs.fastutil.ints.IntIntPair;
|
||||
import com.viaversion.viaversion.libs.fastutil.objects.ObjectIterator;
|
||||
import com.viaversion.viaversion.rewriter.IdRewriteFunction;
|
||||
import com.viaversion.viaversion.util.ComponentUtil;
|
||||
@@ -86,20 +85,20 @@ public class StructuredEnchantmentRewriter {
|
||||
boolean changed = false;
|
||||
|
||||
final ObjectIterator<Int2IntMap.Entry> iterator = enchantments.enchantments().int2IntEntrySet().iterator();
|
||||
final List<IntIntPair> updatedIds = new ArrayList<>();
|
||||
final List<PendingIdChange> updatedIds = new ArrayList<>();
|
||||
while (iterator.hasNext()) {
|
||||
final Int2IntMap.Entry entry = iterator.next();
|
||||
final int id = entry.getIntKey();
|
||||
final int mappedId = rewriteFunction.rewrite(id);
|
||||
final int level = entry.getIntValue();
|
||||
if (mappedId != -1) {
|
||||
if (rewriteIds) {
|
||||
// Update the map after to iteration to preserve the current ids before possibly saving the original, avoid CME
|
||||
updatedIds.add(IntIntPair.of(id, mappedId));
|
||||
updatedIds.add(new PendingIdChange(id, mappedId, level));
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
final int level = entry.getIntValue();
|
||||
final Tag description = descriptionSupplier.get(id, level);
|
||||
if (description != null) {
|
||||
if (!changed) {
|
||||
@@ -113,9 +112,12 @@ public class StructuredEnchantmentRewriter {
|
||||
}
|
||||
}
|
||||
|
||||
for (final IntIntPair pair : updatedIds) {
|
||||
final int level = enchantments.enchantments().remove(pair.firstInt());
|
||||
enchantments.add(pair.secondInt(), level);
|
||||
// Remove all first, then add the new ones
|
||||
for (final PendingIdChange change : updatedIds) {
|
||||
enchantments.remove(change.id());
|
||||
}
|
||||
for (final PendingIdChange change : updatedIds) {
|
||||
enchantments.add(change.mappedId(), change.level());
|
||||
}
|
||||
|
||||
if (loreToAdd.isEmpty()) {
|
||||
@@ -198,4 +200,7 @@ public class StructuredEnchantmentRewriter {
|
||||
|
||||
Tag get(int id, int level);
|
||||
}
|
||||
|
||||
private record PendingIdChange(int id, int mappedId, int level) {
|
||||
}
|
||||
}
|
||||
+13
-3
@@ -17,6 +17,9 @@
|
||||
*/
|
||||
package com.viaversion.viabackwards.protocol.v1_19_4to1_19_3.rewriter;
|
||||
|
||||
import com.viaversion.nbt.tag.CompoundTag;
|
||||
import com.viaversion.nbt.tag.ListTag;
|
||||
import com.viaversion.nbt.tag.NumberTag;
|
||||
import com.viaversion.viabackwards.api.entities.storage.EntityReplacement;
|
||||
import com.viaversion.viabackwards.api.rewriters.EntityRewriter;
|
||||
import com.viaversion.viabackwards.protocol.v1_19_4to1_19_3.Protocol1_19_4To1_19_3;
|
||||
@@ -30,9 +33,6 @@ import com.viaversion.viaversion.api.type.types.version.Types1_19_4;
|
||||
import com.viaversion.viaversion.libs.gson.JsonElement;
|
||||
import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.packet.ClientboundPackets1_19_3;
|
||||
import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ClientboundPackets1_19_4;
|
||||
import com.viaversion.nbt.tag.CompoundTag;
|
||||
import com.viaversion.nbt.tag.ListTag;
|
||||
import com.viaversion.nbt.tag.NumberTag;
|
||||
import com.viaversion.viaversion.util.TagUtil;
|
||||
|
||||
public final class EntityPacketRewriter1_19_4 extends EntityRewriter<ClientboundPackets1_19_4, Protocol1_19_4To1_19_3> {
|
||||
@@ -127,6 +127,16 @@ public final class EntityPacketRewriter1_19_4 extends EntityRewriter<Clientbound
|
||||
handler(worldDataTrackerHandlerByKey());
|
||||
}
|
||||
});
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_19_4.UPDATE_MOB_EFFECT, wrapper -> {
|
||||
wrapper.passthrough(Types.VAR_INT); // Entity id
|
||||
wrapper.passthrough(Types.VAR_INT); // Effect id
|
||||
wrapper.passthrough(Types.BYTE); // Amplifier
|
||||
|
||||
// Handle inifinite duration. Use a value the client still accepts without bugging out the display while still being practically infinite
|
||||
final int duration = wrapper.read(Types.VAR_INT);
|
||||
wrapper.write(Types.VAR_INT, duration == -1 ? 999999 : duration);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
@@ -29,6 +29,7 @@ import com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.storage.RegistryData
|
||||
import com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.storage.SecureChatStorage;
|
||||
import com.viaversion.viaversion.api.Via;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.minecraft.RegistryType;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5;
|
||||
import com.viaversion.viaversion.api.platform.providers.ViaProviders;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
@@ -77,6 +78,7 @@ public final class Protocol1_20_5To1_20_3 extends BackwardsProtocol<ClientboundP
|
||||
protected void registerPackets() {
|
||||
super.registerPackets();
|
||||
|
||||
tagRewriter.addEmptyTag(RegistryType.ITEM, "minecraft:axolotl_tempt_items");
|
||||
tagRewriter.registerGeneric(ClientboundPackets1_20_5.UPDATE_TAGS);
|
||||
registerClientbound(ClientboundConfigurationPackets1_20_5.UPDATE_TAGS, wrapper -> {
|
||||
// Send off registry data first, needed for tags
|
||||
|
||||
+17
@@ -186,6 +186,23 @@ public final class BlockItemPacketRewriter1_20_5 extends BackwardsStructuredItem
|
||||
}
|
||||
});
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_20_5.MAP_ITEM_DATA, wrapper -> {
|
||||
wrapper.passthrough(Types.VAR_INT); // Map id
|
||||
wrapper.passthrough(Types.BYTE); // Scale
|
||||
wrapper.passthrough(Types.BOOLEAN); // Locked
|
||||
if (wrapper.passthrough(Types.BOOLEAN)) {
|
||||
final int icons = wrapper.passthrough(Types.VAR_INT);
|
||||
for (int i = 0; i < icons; i++) {
|
||||
final int decorationType = wrapper.read(Types.VAR_INT);
|
||||
wrapper.write(Types.VAR_INT, decorationType == 34 ? 32 : decorationType); // Trial champer to jungle temple
|
||||
wrapper.passthrough(Types.BYTE); // X
|
||||
wrapper.passthrough(Types.BYTE); // Y
|
||||
wrapper.passthrough(Types.BYTE); // Rotation
|
||||
wrapper.passthrough(Types.OPTIONAL_TAG); // Display name
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
final RecipeRewriter1_20_3<ClientboundPacket1_20_5> recipeRewriter = new RecipeRewriter1_20_3<>(protocol);
|
||||
protocol.registerClientbound(ClientboundPackets1_20_5.UPDATE_RECIPES, wrapper -> {
|
||||
final int size = wrapper.passthrough(Types.VAR_INT);
|
||||
|
||||
+15
-18
@@ -380,23 +380,32 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter<Clientbound
|
||||
|
||||
@Override
|
||||
protected void registerRewrites() {
|
||||
filter().mapDataType(typeId -> {
|
||||
filter().handler((event, data) -> {
|
||||
final int typeId = data.dataType().typeId();
|
||||
if (typeId == Types1_20_5.ENTITY_DATA_TYPES.particlesType.typeId()) {
|
||||
// Handled with living entity
|
||||
return Types1_20_5.ENTITY_DATA_TYPES.particlesType;
|
||||
final Particle[] particles = data.value();
|
||||
int color = 0;
|
||||
for (final Particle particle : particles) {
|
||||
if (particle.id() == protocol.getMappingData().getParticleMappings().id("entity_effect")) {
|
||||
// Remove color argument, use one of them for the ambient particle color
|
||||
color = particle.<Integer>removeArgument(0).getValue();
|
||||
}
|
||||
}
|
||||
data.setTypeAndValue(Types1_20_3.ENTITY_DATA_TYPES.varIntType, removeAlpha(color));
|
||||
return;
|
||||
}
|
||||
|
||||
int id = typeId;
|
||||
if (typeId >= Types1_20_5.ENTITY_DATA_TYPES.wolfVariantType.typeId()) {
|
||||
if (typeId >= Types1_20_5.ENTITY_DATA_TYPES.armadilloState.typeId()) {
|
||||
id--;
|
||||
}
|
||||
if (typeId >= Types1_20_5.ENTITY_DATA_TYPES.armadilloState.typeId()) {
|
||||
if (typeId >= Types1_20_5.ENTITY_DATA_TYPES.wolfVariantType.typeId()) {
|
||||
id--;
|
||||
}
|
||||
if (typeId >= Types1_20_5.ENTITY_DATA_TYPES.particlesType.typeId()) {
|
||||
id--;
|
||||
}
|
||||
return Types1_20_3.ENTITY_DATA_TYPES.byId(id);
|
||||
data.setDataType(Types1_20_3.ENTITY_DATA_TYPES.byId(id));
|
||||
});
|
||||
|
||||
registerMetaTypeHandler1_20_3(
|
||||
@@ -410,18 +419,6 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter<Clientbound
|
||||
);
|
||||
registerBlockStateHandler(EntityTypes1_20_5.ABSTRACT_MINECART, 11);
|
||||
|
||||
filter().type(EntityTypes1_20_5.LIVING_ENTITY).index(10).handler((event, meta) -> {
|
||||
final Particle[] particles = meta.value();
|
||||
int color = 0;
|
||||
for (final Particle particle : particles) {
|
||||
if (particle.id() == protocol.getMappingData().getParticleMappings().id("entity_effect")) {
|
||||
// Remove color argument, use one of them for the ambient particle color
|
||||
color = particle.<Integer>removeArgument(0).getValue();
|
||||
}
|
||||
}
|
||||
meta.setTypeAndValue(Types1_20_3.ENTITY_DATA_TYPES.varIntType, removeAlpha(color));
|
||||
});
|
||||
|
||||
filter().type(EntityTypes1_20_5.AREA_EFFECT_CLOUD).addIndex(9); // Color
|
||||
filter().type(EntityTypes1_20_5.AREA_EFFECT_CLOUD).index(11).handler((event, meta) -> {
|
||||
final Particle particle = meta.value();
|
||||
|
||||
+2
-6
@@ -34,7 +34,7 @@ import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ServerboundPac
|
||||
import com.viaversion.viaversion.rewriter.ComponentRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
import java.util.Arrays;
|
||||
import com.viaversion.viaversion.util.ArrayUtil;
|
||||
|
||||
public final class Protocol1_20To1_19_4 extends BackwardsProtocol<ClientboundPackets1_19_4, ClientboundPackets1_19_4, ServerboundPackets1_19_4, ServerboundPackets1_19_4> {
|
||||
|
||||
@@ -62,7 +62,6 @@ public final class Protocol1_20To1_19_4 extends BackwardsProtocol<ClientboundPac
|
||||
|
||||
new StatisticsRewriter<>(this).register(ClientboundPackets1_19_4.AWARD_STATS);
|
||||
|
||||
//TODO open window
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.SET_ACTION_BAR_TEXT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.SET_TITLE_TEXT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.SET_SUBTITLE_TEXT);
|
||||
@@ -75,10 +74,7 @@ public final class Protocol1_20To1_19_4 extends BackwardsProtocol<ClientboundPac
|
||||
|
||||
registerClientbound(ClientboundPackets1_19_4.UPDATE_ENABLED_FEATURES, wrapper -> {
|
||||
String[] enabledFeatures = wrapper.read(Types.STRING_ARRAY);
|
||||
final int length = enabledFeatures.length;
|
||||
enabledFeatures = Arrays.copyOf(enabledFeatures, length + 1);
|
||||
enabledFeatures[length] = "minecraft:update_1_20";
|
||||
wrapper.write(Types.STRING_ARRAY, enabledFeatures);
|
||||
wrapper.write(Types.STRING_ARRAY, ArrayUtil.add(enabledFeatures, "minecraft:update_1_20"));
|
||||
});
|
||||
|
||||
registerClientbound(ClientboundPackets1_19_4.PLAYER_COMBAT_END, wrapper -> {
|
||||
|
||||
+7
-2
@@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.minecraft.BlockPosition;
|
||||
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
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.nbt.tag.CompoundTag;
|
||||
@@ -86,7 +85,13 @@ public final class BlockItemPacketRewriter1_20 extends BackwardsItemRewriter<Cli
|
||||
}
|
||||
});
|
||||
|
||||
registerOpenScreen(ClientboundPackets1_19_4.OPEN_SCREEN);
|
||||
protocol.registerClientbound(ClientboundPackets1_19_4.OPEN_SCREEN, wrapper -> {
|
||||
wrapper.passthrough(Types.VAR_INT); // Container id
|
||||
|
||||
handleMenuType(wrapper);
|
||||
protocol.getComponentRewriter().passthroughAndProcess(wrapper);
|
||||
});
|
||||
|
||||
registerCooldown(ClientboundPackets1_19_4.COOLDOWN);
|
||||
registerSetContent1_17_1(ClientboundPackets1_19_4.CONTAINER_SET_CONTENT);
|
||||
registerSetSlot1_17_1(ClientboundPackets1_19_4.CONTAINER_SET_SLOT);
|
||||
|
||||
+8
@@ -25,6 +25,7 @@ import com.viaversion.viabackwards.protocol.v1_21to1_20_5.rewriter.BlockItemPack
|
||||
import com.viaversion.viabackwards.protocol.v1_21to1_20_5.rewriter.ComponentRewriter1_21;
|
||||
import com.viaversion.viabackwards.protocol.v1_21to1_20_5.rewriter.EntityPacketRewriter1_21;
|
||||
import com.viaversion.viabackwards.protocol.v1_21to1_20_5.storage.EnchantmentsPaintingsStorage;
|
||||
import com.viaversion.viabackwards.protocol.v1_21to1_20_5.storage.PlayerRotationStorage;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.minecraft.Holder;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5;
|
||||
@@ -45,6 +46,7 @@ import com.viaversion.viaversion.protocols.v1_20_5to1_21.packet.ClientboundPacke
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.packet.ClientboundPackets1_21;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
import com.viaversion.viaversion.util.ArrayUtil;
|
||||
|
||||
import static com.viaversion.viaversion.util.ProtocolUtil.packetTypeMap;
|
||||
|
||||
@@ -174,12 +176,18 @@ public final class Protocol1_21To1_20_5 extends BackwardsProtocol<ClientboundPac
|
||||
wrapper.set(Types.VAR_INT, 1, newSize);
|
||||
}
|
||||
});
|
||||
|
||||
registerClientbound(ClientboundConfigurationPackets1_21.UPDATE_ENABLED_FEATURES, wrapper -> {
|
||||
final String[] enabledFeatures = wrapper.read(Types.STRING_ARRAY);
|
||||
wrapper.write(Types.STRING_ARRAY, ArrayUtil.add(enabledFeatures, "minecraft:update_1_21"));
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(final UserConnection user) {
|
||||
addEntityTracker(user, new EntityTrackerBase(user, EntityTypes1_20_5.PLAYER));
|
||||
user.put(new EnchantmentsPaintingsStorage());
|
||||
user.put(new PlayerRotationStorage());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+21
-5
@@ -26,6 +26,7 @@ import com.viaversion.viabackwards.api.rewriters.EnchantmentRewriter;
|
||||
import com.viaversion.viabackwards.api.rewriters.StructuredEnchantmentRewriter;
|
||||
import com.viaversion.viabackwards.protocol.v1_21to1_20_5.Protocol1_21To1_20_5;
|
||||
import com.viaversion.viabackwards.protocol.v1_21to1_20_5.storage.EnchantmentsPaintingsStorage;
|
||||
import com.viaversion.viabackwards.protocol.v1_21to1_20_5.storage.PlayerRotationStorage;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.minecraft.data.StructuredData;
|
||||
import com.viaversion.viaversion.api.minecraft.data.StructuredDataContainer;
|
||||
@@ -47,6 +48,7 @@ import com.viaversion.viaversion.rewriter.BlockRewriter;
|
||||
import com.viaversion.viaversion.rewriter.IdRewriteFunction;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static com.viaversion.viaversion.protocols.v1_20_5to1_21.rewriter.BlockItemPacketRewriter1_21.downgradeItemData;
|
||||
import static com.viaversion.viaversion.protocols.v1_20_5to1_21.rewriter.BlockItemPacketRewriter1_21.updateItemData;
|
||||
@@ -111,8 +113,10 @@ public final class BlockItemPacketRewriter1_21 extends BackwardsStructuredItemRe
|
||||
protocol.registerServerbound(ServerboundPackets1_20_5.USE_ITEM, wrapper -> {
|
||||
wrapper.passthrough(Types.VAR_INT); // Hand
|
||||
wrapper.passthrough(Types.VAR_INT); // Sequence
|
||||
wrapper.write(Types.FLOAT, 0f); // Y rotation
|
||||
wrapper.write(Types.FLOAT, 0f); // X rotation
|
||||
|
||||
final PlayerRotationStorage rotation = wrapper.user().get(PlayerRotationStorage.class);
|
||||
wrapper.write(Types.FLOAT, rotation.yaw());
|
||||
wrapper.write(Types.FLOAT, rotation.pitch());
|
||||
});
|
||||
|
||||
new RecipeRewriter1_20_3<>(protocol).register1_20_5(ClientboundPackets1_21.UPDATE_RECIPES);
|
||||
@@ -183,7 +187,8 @@ public final class BlockItemPacketRewriter1_21 extends BackwardsStructuredItemRe
|
||||
}
|
||||
|
||||
final Enchantments enchantments = enchantmentsData.value();
|
||||
for (final Int2IntMap.Entry entry : new ArrayList<>(enchantments.enchantments().int2IntEntrySet())) {
|
||||
final List<PendingIdChange> updatedIds = new ArrayList<>();
|
||||
for (final Int2IntMap.Entry entry : enchantments.enchantments().int2IntEntrySet()) {
|
||||
final int id = entry.getIntKey();
|
||||
final String enchantmentKey = Enchantments1_20_5.idToKey(id);
|
||||
if (enchantmentKey == null) {
|
||||
@@ -192,9 +197,20 @@ public final class BlockItemPacketRewriter1_21 extends BackwardsStructuredItemRe
|
||||
|
||||
final int mappedId = storage.enchantments().keyToId(enchantmentKey);
|
||||
if (id != mappedId) {
|
||||
enchantments.enchantments().remove(id);
|
||||
enchantments.enchantments().put(mappedId, entry.getIntValue());
|
||||
final int level = entry.getIntValue();
|
||||
updatedIds.add(new PendingIdChange(id, mappedId, level));
|
||||
}
|
||||
}
|
||||
|
||||
// Remove first, then add updated entries
|
||||
for (final PendingIdChange change : updatedIds) {
|
||||
enchantments.remove(change.id);
|
||||
}
|
||||
for (final PendingIdChange change : updatedIds) {
|
||||
enchantments.add(change.mappedId, change.level);
|
||||
}
|
||||
}
|
||||
|
||||
private record PendingIdChange(int id, int mappedId, int level) {
|
||||
}
|
||||
}
|
||||
+20
@@ -22,6 +22,7 @@ import com.viaversion.nbt.tag.Tag;
|
||||
import com.viaversion.viabackwards.api.rewriters.EntityRewriter;
|
||||
import com.viaversion.viabackwards.protocol.v1_21to1_20_5.Protocol1_21To1_20_5;
|
||||
import com.viaversion.viabackwards.protocol.v1_21to1_20_5.storage.EnchantmentsPaintingsStorage;
|
||||
import com.viaversion.viabackwards.protocol.v1_21to1_20_5.storage.PlayerRotationStorage;
|
||||
import com.viaversion.viaversion.api.minecraft.Holder;
|
||||
import com.viaversion.viaversion.api.minecraft.PaintingVariant;
|
||||
import com.viaversion.viaversion.api.minecraft.RegistryEntry;
|
||||
@@ -29,10 +30,12 @@ import com.viaversion.viaversion.api.minecraft.WolfVariant;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5;
|
||||
import com.viaversion.viaversion.api.minecraft.entitydata.EntityDataType;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
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.protocols.v1_20_3to1_20_5.packet.ServerboundPackets1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.data.Paintings1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.packet.ClientboundConfigurationPackets1_21;
|
||||
import com.viaversion.viaversion.protocols.v1_20_5to1_21.packet.ClientboundPacket1_21;
|
||||
@@ -123,6 +126,23 @@ public final class EntityPacketRewriter1_21 extends EntityRewriter<ClientboundPa
|
||||
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
|
||||
});
|
||||
|
||||
protocol.registerServerbound(ServerboundPackets1_20_5.MOVE_PLAYER_POS_ROT, wrapper -> {
|
||||
wrapper.passthrough(Types.DOUBLE); // X
|
||||
wrapper.passthrough(Types.DOUBLE); // Y
|
||||
wrapper.passthrough(Types.DOUBLE); // Z
|
||||
|
||||
storePlayerRotation(wrapper);
|
||||
});
|
||||
|
||||
protocol.registerServerbound(ServerboundPackets1_20_5.MOVE_PLAYER_ROT, this::storePlayerRotation);
|
||||
}
|
||||
|
||||
private void storePlayerRotation(final PacketWrapper wrapper) {
|
||||
final float yaw = wrapper.passthrough(Types.FLOAT);
|
||||
final float pitch = wrapper.passthrough(Types.FLOAT);
|
||||
|
||||
wrapper.user().get(PlayerRotationStorage.class).setRotation(yaw, pitch);
|
||||
}
|
||||
|
||||
private int[] paintingMappingsForEntries(final RegistryEntry[] entries) {
|
||||
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards
|
||||
* 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.viabackwards.protocol.v1_21to1_20_5.storage;
|
||||
|
||||
import com.viaversion.viaversion.api.connection.StorableObject;
|
||||
|
||||
public final class PlayerRotationStorage implements StorableObject {
|
||||
|
||||
private float yaw, pitch;
|
||||
|
||||
public void setRotation(final float yaw, final float pitch) {
|
||||
this.yaw = yaw;
|
||||
this.pitch = pitch;
|
||||
}
|
||||
|
||||
public float yaw() {
|
||||
return yaw;
|
||||
}
|
||||
|
||||
public float pitch() {
|
||||
return pitch;
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -11,41 +11,30 @@
|
||||
"attribute.name.player.submerged_mining_speed": "Submerged Mining Speed",
|
||||
"attribute.name.player.sweeping_damage_ratio": "Sweeping Damage Ratio",
|
||||
"gamerule.entitiesWithPassengersCanUsePortals": "Entities with passengers can use portals",
|
||||
"gamerule.entitiesWithPassengersCanUsePortals.description": "Allow entities with passengers to teleport through nether portals, end portals and end gateways.",
|
||||
"gamerule.entitiesWithPassengersCanUsePortals.description": "Allow entities with passengers to teleport through Nether Portals, End Portals, and End Gateways.",
|
||||
"gui.abuseReport.attestation": "By submitting this report, you confirm that the information you have provided is accurate and complete to the best of your knowledge.",
|
||||
"gui.abuseReport.send.not_attested": "Please read the text above and tick the checkbox to be able to send the report",
|
||||
"gui.fileDropFailure.detail": "Rejected %d files",
|
||||
"gui.fileDropFailure.title": "Failed to add files",
|
||||
"gui.open_report_dir": "Open Report Directory",
|
||||
"gui.report_to_server": "Report To Server",
|
||||
"item.minecraft.music_disc_creator": "Music Disc",
|
||||
"item.minecraft.music_disc_creator_music_box": "Music Disc",
|
||||
"item.minecraft.music_disc_creator_music_box.desc": "Lena Raine - Creator (Music Box)",
|
||||
"item.minecraft.music_disc_creator.desc": "Lena Raine - Creator",
|
||||
"item.minecraft.music_disc_precipice": "Music Disc",
|
||||
"item.minecraft.music_disc_precipice.desc": "Aaron Cherof - Precipice",
|
||||
"item.modifiers.any": "When equipped:",
|
||||
"item.modifiers.armor": "When worn:",
|
||||
"item.modifiers.hand": "When held:",
|
||||
"jukebox_song.minecraft.5": "Samuel �berg - 5",
|
||||
"jukebox_song.minecraft.11": "C418 - 11",
|
||||
"jukebox_song.minecraft.13": "C418 - 13",
|
||||
"jukebox_song.minecraft.blocks": "C418 - blocks",
|
||||
"jukebox_song.minecraft.cat": "C418 - cat",
|
||||
"jukebox_song.minecraft.chirp": "C418 - chirp",
|
||||
"jukebox_song.minecraft.creator": "Lena Raine - Creator",
|
||||
"jukebox_song.minecraft.creator_music_box": "Lena Raine - Creator (Music Box)",
|
||||
"jukebox_song.minecraft.far": "C418 - far",
|
||||
"jukebox_song.minecraft.mall": "C418 - mall",
|
||||
"jukebox_song.minecraft.mellohi": "C418 - mellohi",
|
||||
"jukebox_song.minecraft.otherside": "Lena Raine - otherside",
|
||||
"jukebox_song.minecraft.pigstep": "Lena Raine - Pigstep",
|
||||
"jukebox_song.minecraft.precipice": "Aaron Cherof - Precipice",
|
||||
"jukebox_song.minecraft.relic": "Aaron Cherof - Relic",
|
||||
"jukebox_song.minecraft.stal": "C418 - stal",
|
||||
"jukebox_song.minecraft.strad": "C418 - strad",
|
||||
"jukebox_song.minecraft.wait": "C418 - wait",
|
||||
"jukebox_song.minecraft.ward": "C418 - ward",
|
||||
"known_server_link.announcements": "Announcements",
|
||||
"known_server_link.community": "Community",
|
||||
"known_server_link.community_guidelines": "Community Guidelines",
|
||||
"known_server_link.feedback": "Feedback",
|
||||
"known_server_link.forums": "Forums",
|
||||
"known_server_link.news": "News",
|
||||
"known_server_link.report_bug": "Report Server Bug",
|
||||
"mco.compatibility.incompatible.popup.title": "Incompatible version",
|
||||
"known_server_link.support": "Support",
|
||||
"known_server_link.website": "Website",
|
||||
"mco.compatibility.incompatible.releaseType.popup.message": "The world you are trying to join is incompatible with the version you are on.",
|
||||
"mco.compatibility.incompatible.series.popup.message": "This world was last played in version %s; you are on version %s.\n\nThese series are not compatible with each other. A new world is needed to play on this version.",
|
||||
"mco.compatibility.upgrade.friend.description": "This world was last played in version %s; you are on version %s.\n\nA backup of the world will be saved under \"World Backups\".\n\nThe owner of the Realm can restore the world if needed.",
|
||||
@@ -57,53 +46,38 @@
|
||||
"menu.server_links": "Server Links...",
|
||||
"menu.server_links.title": "Server Links",
|
||||
"options.realmsNotifications.tooltip": "Fetches Realms news and invites in the title screen and displays their respective icon on the Realms button.",
|
||||
"painting.minecraft.backyard.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.backyard.title": "Backyard",
|
||||
"painting.minecraft.baroque.author": "Sarah Boeving",
|
||||
"painting.minecraft.baroque.title": "Baroque",
|
||||
"painting.minecraft.bouquet.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.bouquet.title": "Bouquet",
|
||||
"painting.minecraft.cavebird.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.cavebird.title": "Cavebird",
|
||||
"painting.minecraft.changing.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.changing.title": "Changing",
|
||||
"painting.minecraft.cotan.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.cotan.title": "Cot�n",
|
||||
"painting.minecraft.endboss.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.endboss.title": "Endboss",
|
||||
"painting.minecraft.fern.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.fern.title": "Fern",
|
||||
"painting.minecraft.finding.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.finding.title": "Finding",
|
||||
"painting.minecraft.humble.author": "Sarah Boeving",
|
||||
"painting.minecraft.humble.title": "Humble",
|
||||
"painting.minecraft.lowmist.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.lowmist.title": "Lowmist",
|
||||
"painting.minecraft.meditative.author": "Sarah Boeving",
|
||||
"painting.minecraft.meditative.title": "Meditative",
|
||||
"painting.minecraft.orb.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.orb.title": "Orb",
|
||||
"painting.minecraft.owlemons.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.owlemons.title": "Owlemons",
|
||||
"painting.minecraft.passage.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.passage.title": "Passage",
|
||||
"painting.minecraft.pond.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.pond.title": "Pond",
|
||||
"painting.minecraft.prairie_ride.author": "Sarah Boeving",
|
||||
"painting.minecraft.prairie_ride.title": "Prairie Ride",
|
||||
"painting.minecraft.sunflowers.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.sunflowers.title": "Sunflowers",
|
||||
"painting.minecraft.tides.author": "Kristoffer Zetterstrand",
|
||||
"painting.minecraft.tides.title": "Tides",
|
||||
"painting.minecraft.unpacked.author": "Sarah Boeving",
|
||||
"painting.minecraft.unpacked.title": "Unpacked",
|
||||
"subtitles.block.trial_spawner.ambient_ominous": "Ominous crackling",
|
||||
"subtitles.block.trial_spawner.ominous_activate": "Omen engulfs Trial Spawner",
|
||||
"subtitles.block.vault.reject_rewarded_player": "Vault rejects already rewarded player"
|
||||
"subtitles.block.vault.reject_rewarded_player": "Vault rejects player"
|
||||
},
|
||||
"1.20.5": {
|
||||
"advancements.adventure.blowback.description": "Kill a Breeze with a deflected Breeze-shot Wind Charge",
|
||||
"advancements.adventure.blowback.title": "Blowback",
|
||||
"advancements.adventure.brush_armadillo.description": "Get Armadillo Scutes from an Armadillo using a Brush",
|
||||
"advancements.adventure.brush_armadillo.title": "Isn't It Scute?",
|
||||
"advancements.adventure.crafters_crafting_crafters.description": "Be near a Crafter when it crafts a Crafter",
|
||||
"advancements.adventure.crafters_crafting_crafters.title": "Crafters Crafting Crafters",
|
||||
"advancements.adventure.lighten_up.description": "Scrape a Copper Bulb with an Axe to make it brighter",
|
||||
@@ -112,18 +86,28 @@
|
||||
"advancements.adventure.minecraft_trials_edition.title": "Minecraft: Trial(s) Edition",
|
||||
"advancements.adventure.overoverkill.description": "Deal 50 hearts of damage in a single hit using the Mace",
|
||||
"advancements.adventure.overoverkill.title": "Over-Overkill",
|
||||
"advancements.adventure.revaulting.description": "Unlock an Ominous Vault with an Ominous Trial Key",
|
||||
"advancements.adventure.revaulting.title": "Revaulting",
|
||||
"advancements.adventure.under_lock_and_key.description": "Unlock a Vault with a Trial Key",
|
||||
"advancements.adventure.under_lock_and_key.title": "Under Lock and Key",
|
||||
"advancements.adventure.who_needs_rockets.description": "Use a Wind Charge to launch yourself upward 8 blocks",
|
||||
"advancements.adventure.who_needs_rockets.title": "Who Needs Rockets?",
|
||||
"advancements.husbandry.remove_wolf_armor.description": "Remove Wolf Armor from a Wolf using Shears",
|
||||
"advancements.husbandry.remove_wolf_armor.title": "Shear Brilliance",
|
||||
"advancements.husbandry.repair_wolf_armor.description": "Repair a damaged Wolf Armor using Armadillo Scutes",
|
||||
"advancements.husbandry.repair_wolf_armor.title": "Good as New",
|
||||
"advancements.husbandry.whole_pack.description": "Tame one of each Wolf variant",
|
||||
"advancements.husbandry.whole_pack.title": "The Whole Pack",
|
||||
"argument.message.too_long": "Chat message was too long (%s > maximum %s characters)",
|
||||
"argument.resource_or_id.failed_to_parse": "Failed to parse structure: %s",
|
||||
"argument.resource_or_id.invalid": "Invalid id or tag",
|
||||
"arguments.item.component.expected": "Expected item component",
|
||||
"arguments.item.component.malformed": "Malformed '%s' component: '%s'",
|
||||
"arguments.item.component.repeated": "Item component '%s' was repeated, but only one value can be specified",
|
||||
"arguments.item.component.unknown": "Unknown item component '%s'",
|
||||
"arguments.item.malformed": "Malformed item: '%s'",
|
||||
"arguments.item.predicate.malformed": "Malformed '%s' predicate: '%s'",
|
||||
"arguments.item.predicate.unknown": "Unknown item predicate '%s''",
|
||||
"arguments.item.predicate.unknown": "Unknown item predicate '%s'",
|
||||
"attribute.name.generic.block_interaction_range": "Block Interaction Range",
|
||||
"attribute.name.generic.entity_interaction_range": "Entity Interaction Range",
|
||||
"attribute.name.generic.fall_damage_multiplier": "Fall Damage Multiplier",
|
||||
@@ -135,6 +119,38 @@
|
||||
"attribute.name.player.block_break_speed": "Block Break Speed",
|
||||
"attribute.name.player.block_interaction_range": "Block Interaction Range",
|
||||
"attribute.name.player.entity_interaction_range": "Entity Interaction Range",
|
||||
"block.minecraft.banner.flow.black": "Black Flow",
|
||||
"block.minecraft.banner.flow.blue": "Blue Flow",
|
||||
"block.minecraft.banner.flow.brown": "Brown Flow",
|
||||
"block.minecraft.banner.flow.cyan": "Cyan Flow",
|
||||
"block.minecraft.banner.flow.gray": "Gray Flow",
|
||||
"block.minecraft.banner.flow.green": "Green Flow",
|
||||
"block.minecraft.banner.flow.light_blue": "Light Blue Flow",
|
||||
"block.minecraft.banner.flow.light_gray": "Light Gray Flow",
|
||||
"block.minecraft.banner.flow.lime": "Lime Flow",
|
||||
"block.minecraft.banner.flow.magenta": "Magenta Flow",
|
||||
"block.minecraft.banner.flow.orange": "Orange Flow",
|
||||
"block.minecraft.banner.flow.pink": "Pink Flow",
|
||||
"block.minecraft.banner.flow.purple": "Purple Flow",
|
||||
"block.minecraft.banner.flow.red": "Red Flow",
|
||||
"block.minecraft.banner.flow.white": "White Flow",
|
||||
"block.minecraft.banner.flow.yellow": "Yellow Flow",
|
||||
"block.minecraft.banner.guster.black": "Black Guster",
|
||||
"block.minecraft.banner.guster.blue": "Blue Guster",
|
||||
"block.minecraft.banner.guster.brown": "Brown Guster",
|
||||
"block.minecraft.banner.guster.cyan": "Cyan Guster",
|
||||
"block.minecraft.banner.guster.gray": "Gray Guster",
|
||||
"block.minecraft.banner.guster.green": "Green Guster",
|
||||
"block.minecraft.banner.guster.light_blue": "Light Blue Guster",
|
||||
"block.minecraft.banner.guster.light_gray": "Light Gray Guster",
|
||||
"block.minecraft.banner.guster.lime": "Lime Guster",
|
||||
"block.minecraft.banner.guster.magenta": "Magenta Guster",
|
||||
"block.minecraft.banner.guster.orange": "Orange Guster",
|
||||
"block.minecraft.banner.guster.pink": "Pink Guster",
|
||||
"block.minecraft.banner.guster.purple": "Purple Guster",
|
||||
"block.minecraft.banner.guster.red": "Red Guster",
|
||||
"block.minecraft.banner.guster.white": "White Guster",
|
||||
"block.minecraft.banner.guster.yellow": "Yellow Guster",
|
||||
"block.minecraft.heavy_core": "Heavy Core",
|
||||
"block.minecraft.vault": "Vault",
|
||||
"chat.disabled.invalid_command_signature": "Command had unexpected or missing command argument signatures.",
|
||||
@@ -152,6 +168,7 @@
|
||||
"commands.transfer.success.single": "Transferring %s to %s:%s",
|
||||
"connect.failed.transfer": "Connection failed while transferring to the server",
|
||||
"connect.transferring": "Transferring to new server...",
|
||||
"disconnect.packetError": "Network Protocol Error",
|
||||
"disconnect.transfer": "Transferred to another server",
|
||||
"effect.minecraft.infested": "Infested",
|
||||
"effect.minecraft.oozing": "Oozing",
|
||||
@@ -161,28 +178,21 @@
|
||||
"effect.minecraft.wind_charged": "Wind Charged",
|
||||
"enchantment.minecraft.breach": "Breach",
|
||||
"enchantment.minecraft.density": "Density",
|
||||
"enchantment.minecraft.sweeping_edge": "Sweeping Edge",
|
||||
"enchantment.minecraft.wind_burst": "Wind Burst",
|
||||
"entity.minecraft.armadillo": "Armadillo",
|
||||
"entity.minecraft.bogged": "Bogged",
|
||||
"entity.minecraft.breeze_wind_charge": "Wind Charge",
|
||||
"entity.minecraft.ominous_item_spawner": "Ominous Item Spawner",
|
||||
"filled_map.trial_chambers": "Trial Chambers Map",
|
||||
"gamerule.spawnChunkRadius": "Spawn chunk radius",
|
||||
"gamerule.spawnChunkRadius.description": "Amount of chunks that stay loaded around the overworld spawn position.",
|
||||
"gamerule.spawnRadius.description": "Controls the size of the area around the spawn point that players can spawn in.",
|
||||
"item.canUse.unknown": "Unknown",
|
||||
"item.components": "%s component(s)",
|
||||
"item.minecraft.armadillo_scute": "Armadillo Scute",
|
||||
"item.minecraft.armadillo_spawn_egg": "Armadillo Spawn Egg",
|
||||
"item.minecraft.bogged_spawn_egg": "Bogged Spawn Egg",
|
||||
"item.minecraft.bolt_armor_trim_smithing_template": "Smithing Template",
|
||||
"item.minecraft.breeze_rod": "Breeze Rod",
|
||||
"item.minecraft.flow_armor_trim_smithing_template": "Smithing Template",
|
||||
"item.minecraft.flow_banner_pattern": "Banner Pattern",
|
||||
"item.minecraft.flow_banner_pattern.desc": "Flow",
|
||||
"item.minecraft.flow_pottery_sherd": "Flow Pottery Sherd",
|
||||
"item.minecraft.guster_banner_pattern": "Banner Pattern",
|
||||
"item.minecraft.guster_banner_pattern.desc": "Guster",
|
||||
"item.minecraft.guster_pottery_sherd": "Guster Pottery Sherd",
|
||||
"item.minecraft.lingering_potion.effect.infested": "Lingering Potion of Infestation",
|
||||
@@ -206,19 +216,16 @@
|
||||
"item.minecraft.tipped_arrow.effect.weaving": "Arrow of Weaving",
|
||||
"item.minecraft.tipped_arrow.effect.wind_charged": "Arrow of Wind Charging",
|
||||
"item.minecraft.turtle_scute": "Turtle Scute",
|
||||
"item.minecraft.wind_charge": "Wind Charge",
|
||||
"item.minecraft.wolf_armor": "Wolf Armor",
|
||||
"item.modifiers.body": "When equipped:",
|
||||
"mco.backup.narration": "Backup from %s",
|
||||
"mco.client.outdated.stable.version": "Your client version (%s) is not compatible with Realms.\n\nPlease use the most recent version of Minecraft.",
|
||||
"mco.client.unsupported.snapshot.version": "Your client version (%s) is not compatible with Realms.\n\nRealms is not available for this snapshot version.",
|
||||
"mco.invited.player.narration": "Invited player %s",
|
||||
"mco.upload.entry.commands": "%1$s, %2$s",
|
||||
"multiplayer.disconnect.transfers_disabled": "Server does not accept transfers",
|
||||
"optimizeWorld.stage.finished.chunks": "Finishing up upgrading chunks...",
|
||||
"optimizeWorld.stage.finished.entities": "Finishing up upgrading entities...",
|
||||
"optimizeWorld.stage.finished.poi": "Finishing up upgrading points of interest...",
|
||||
"optimizeWorld.stage.upgrading.chunks": "Upgrading all chunks...",
|
||||
"optimizeWorld.stage.upgrading.entities": "Upgrading all entities...",
|
||||
"optimizeWorld.stage.upgrading.poi": "Upgrading all points of interest...",
|
||||
"options.accessibility.menu_background_blurriness": "Menu Background Blur",
|
||||
@@ -228,6 +235,7 @@
|
||||
"options.japaneseGlyphVariants": "Japanese Glyph Variants",
|
||||
"options.japaneseGlyphVariants.tooltip": "Uses Japanese variants of CJK characters in the default font",
|
||||
"options.telemetry.disabled": "Telemetry is disabled.",
|
||||
"particle.invalidOptions": "Can't parse particle options: %s",
|
||||
"selectWorld.allowCommands.new": "Allow Commands",
|
||||
"selectWorld.commands": "Commands",
|
||||
"selectWorld.warning.lowDiskSpace.description": "There is not much space left on your device.\nRunning out of disk space while in game can lead to your world being damaged.",
|
||||
@@ -266,12 +274,9 @@
|
||||
"subtitles.entity.breeze.charge": "Breeze charges",
|
||||
"subtitles.entity.breeze.deflect": "Breeze deflects",
|
||||
"subtitles.entity.breeze.whirl": "Breeze whirls",
|
||||
"subtitles.entity.breeze.wind_burst": "Wind Charge bursts",
|
||||
"subtitles.entity.donkey.jump": "Donkey jumps",
|
||||
"subtitles.entity.mule.jump": "Mule jumps",
|
||||
"subtitles.entity.parrot.imitate.bogged": "Parrot rattles",
|
||||
"subtitles.entity.wind_charge.throw": "Wind Charge flies",
|
||||
"subtitles.entity.wind_charge.wind_burst": "Wind Charge bursts",
|
||||
"subtitles.event.mob_effect.bad_omen": "Omen takes hold",
|
||||
"subtitles.event.mob_effect.raid_omen": "Raid looms nearby",
|
||||
"subtitles.event.mob_effect.trial_omen": "Ominous trial looms nearby",
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
projectVersion=5.0.0
|
||||
projectVersion=5.0.1
|
||||
|
||||
# Smile emoji
|
||||
mcVersions=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
|
||||
|
||||
@@ -3,7 +3,7 @@ metadata.format.version = "1.1"
|
||||
[versions]
|
||||
|
||||
# ViaVersion
|
||||
viaver = "5.0.0"
|
||||
viaver = "5.0.1-SNAPSHOT"
|
||||
|
||||
# Common provided
|
||||
netty = "4.0.20.Final"
|
||||
|
||||
@@ -4,7 +4,6 @@ rootProject.name = "viabackwards-parent"
|
||||
|
||||
dependencyResolutionManagement {
|
||||
repositories {
|
||||
mavenLocal()
|
||||
maven("https://repo.viaversion.com")
|
||||
maven("https://repo.papermc.io/repository/maven-public/")
|
||||
mavenCentral()
|
||||
|
||||
Reference in new issue
Block a user