mirror of
https://github.com/ViaVersion/ViaBackwards.git
synced 2026-11-04 17:00:16 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
76b98eb396 | ||
|
|
b33221b95c | ||
|
|
8ce26b1353 | ||
|
|
9a79f9e217 | ||
|
|
44476f2468 | ||
|
|
54655e34e7 | ||
|
|
863258df4e | ||
|
|
8a5fce2d2e | ||
|
|
5374c3b626 | ||
|
|
96e0d85bc0 | ||
|
|
84576d1d95 | ||
|
|
c6f0717ad5 | ||
|
|
395bebac62 | ||
|
|
6d19ad3b81 | ||
|
|
38080fc5cc | ||
|
|
285dcdd81f |
No files matched your search
@@ -8,6 +8,7 @@ jobs:
|
||||
# Only run on PRs if the source branch is on a different repo. We do not need to run everything twice.
|
||||
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
|
||||
runs-on: ubuntu-24.04
|
||||
timeout-minutes: 30
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # 6.0.0
|
||||
|
||||
@@ -13,6 +13,7 @@ jobs:
|
||||
publish:
|
||||
if: github.repository_owner == 'ViaVersion'
|
||||
runs-on: ubuntu-24.04
|
||||
timeout-minutes: 30
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # 6.0.0
|
||||
|
||||
@@ -11,6 +11,7 @@ permissions:
|
||||
jobs:
|
||||
update-gradle-wrapper:
|
||||
runs-on: ubuntu-24.04
|
||||
timeout-minutes: 30
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # 6.0.0
|
||||
|
||||
@@ -78,13 +78,16 @@ import java.util.logging.Logger;
|
||||
|
||||
public interface ViaBackwardsPlatform {
|
||||
|
||||
String MINIMUM_VV_VERSION = "5.6.0";
|
||||
String MINIMUM_VV_VERSION = "5.7.0";
|
||||
|
||||
default void init(final File configFile) {
|
||||
init(new ViaBackwardsConfig(configFile, getLogger()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize ViaBackwards.
|
||||
*/
|
||||
default void init(final File configFile) {
|
||||
ViaBackwardsConfig config = new ViaBackwardsConfig(configFile, getLogger());
|
||||
default void init(final ViaBackwardsConfig config) {
|
||||
config.reload();
|
||||
Via.getManager().getConfigurationProvider().register(config);
|
||||
|
||||
|
||||
+3
@@ -93,6 +93,7 @@ final class Protocol1_99To1_98 extends BackwardsProtocol<ClientboundPacket1_21_2
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_2.SET_SUBTITLE_TEXT);
|
||||
translatableRewriter.registerBossEvent(ClientboundPackets1_21_2.BOSS_EVENT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_2.DISCONNECT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundConfigurationPackets1_21.DISCONNECT);
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_21_2.TAB_LIST);
|
||||
translatableRewriter.registerSetPlayerTeam1_21_5(ClientboundPackets1_21_2.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerPlayerCombatKill1_20(ClientboundPackets1_21_2.PLAYER_COMBAT_KILL);
|
||||
@@ -100,6 +101,8 @@ final class Protocol1_99To1_98 extends BackwardsProtocol<ClientboundPacket1_21_2
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_2.SYSTEM_CHAT);
|
||||
translatableRewriter.registerDisguisedChat(ClientboundPackets1_21_2.DISGUISED_CHAT);
|
||||
translatableRewriter.registerPlayerChat1_21_5(ClientboundPackets1_21_2.PLAYER_CHAT);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_21_2.SET_OBJECTIVE);
|
||||
translatableRewriter.registerSetScore1_20_3(ClientboundPackets1_21_2.SET_SCORE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
// If needed for any particle, item, or block changes. Extend ParticleRewriter for particle serializer changes
|
||||
|
||||
+1
@@ -71,6 +71,7 @@ public class Protocol1_13_1To1_13 extends BackwardsProtocol<ClientboundPackets1_
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_13.TAB_LIST);
|
||||
translatableRewriter.registerSetPlayerTeam1_13(ClientboundPackets1_13.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerTitle(ClientboundPackets1_13.SET_TITLES);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_13.SET_OBJECTIVE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
new CommandRewriter1_13_1(this).registerDeclareCommands(ClientboundPackets1_13.COMMANDS);
|
||||
|
||||
+2
-2
@@ -508,7 +508,7 @@ public class BlockItemPacketRewriter1_13 extends BackwardsItemRewriter<Clientbou
|
||||
if (originalId == 362) { // base/colorless shulker box
|
||||
rawId = 0xe50000; // purple shulker box
|
||||
} else {
|
||||
if (!Via.getConfig().isSuppressConversionWarnings()) {
|
||||
if (Via.getConfig().logOtherConversionWarnings()) {
|
||||
protocol.getLogger().warning("Failed to get new item for " + originalId);
|
||||
}
|
||||
|
||||
@@ -818,7 +818,7 @@ public class BlockItemPacketRewriter1_13 extends BackwardsItemRewriter<Clientbou
|
||||
} else if (protocol.getMappingData().getItemMappings().inverse().getNewId(rawId & ~0xF) != -1) {
|
||||
rawId &= ~0xF; // Remove data
|
||||
} else {
|
||||
if (!Via.getConfig().isSuppressConversionWarnings()) {
|
||||
if (Via.getConfig().logOtherConversionWarnings()) {
|
||||
protocol.getLogger().warning("Failed to get old item for " + item.identifier());
|
||||
}
|
||||
rawId = 16; // Stone
|
||||
|
||||
+5
-5
@@ -81,7 +81,7 @@ public class PlayerPacketRewriter1_13 extends RewriterBase<Protocol1_13To1_12_2>
|
||||
} else {
|
||||
String oldChannel = ItemPacketRewriter1_13.getOldPluginChannelId(channel);
|
||||
if (oldChannel == null) {
|
||||
if (!Via.getConfig().isSuppressConversionWarnings()) {
|
||||
if (Via.getConfig().logOtherConversionWarnings()) {
|
||||
protocol.getLogger().warning("Ignoring clientbound plugin message with channel: " + channel);
|
||||
}
|
||||
wrapper.cancel();
|
||||
@@ -96,7 +96,7 @@ public class PlayerPacketRewriter1_13 extends RewriterBase<Protocol1_13To1_12_2>
|
||||
String rewritten = ItemPacketRewriter1_13.getOldPluginChannelId(s);
|
||||
if (rewritten != null) {
|
||||
rewrittenChannels.add(rewritten);
|
||||
} else if (!Via.getConfig().isSuppressConversionWarnings()) {
|
||||
} else if (Via.getConfig().logOtherConversionWarnings()) {
|
||||
protocol.getLogger().warning("Ignoring plugin channel in clientbound " + oldChannel + ": " + s);
|
||||
}
|
||||
}
|
||||
@@ -367,7 +367,7 @@ public class PlayerPacketRewriter1_13 extends RewriterBase<Protocol1_13To1_12_2>
|
||||
//Maybe older versions used this and we need to implement this? The issue is that we would have to save the command block types
|
||||
wrapper.setPacketType(ServerboundPackets1_13.SET_COMMAND_BLOCK);
|
||||
wrapper.cancel();
|
||||
if (!Via.getConfig().isSuppressConversionWarnings()) {
|
||||
if (Via.getConfig().logOtherConversionWarnings()) {
|
||||
protocol.getLogger().warning("Client send MC|AdvCmd custom payload to update command block, weird!");
|
||||
}
|
||||
} else if (type == 1) {
|
||||
@@ -457,7 +457,7 @@ public class PlayerPacketRewriter1_13 extends RewriterBase<Protocol1_13To1_12_2>
|
||||
default -> {
|
||||
String newChannel = ItemPacketRewriter1_13.getNewPluginChannelId(channel);
|
||||
if (newChannel == null) {
|
||||
if (!Via.getConfig().isSuppressConversionWarnings()) {
|
||||
if (Via.getConfig().logOtherConversionWarnings()) {
|
||||
protocol.getLogger().warning("Ignoring serverbound plugin message with channel: " + channel);
|
||||
}
|
||||
wrapper.cancel();
|
||||
@@ -472,7 +472,7 @@ public class PlayerPacketRewriter1_13 extends RewriterBase<Protocol1_13To1_12_2>
|
||||
String rewritten = ItemPacketRewriter1_13.getNewPluginChannelId(s);
|
||||
if (rewritten != null) {
|
||||
rewrittenChannels.add(rewritten);
|
||||
} else if (!Via.getConfig().isSuppressConversionWarnings()) {
|
||||
} else if (Via.getConfig().logOtherConversionWarnings()) {
|
||||
protocol.getLogger().warning("Ignoring plugin channel in serverbound " + Key.stripMinecraftNamespace(newChannel).toUpperCase(Locale.ROOT) + ": " + s);
|
||||
}
|
||||
}
|
||||
|
||||
+1
@@ -64,6 +64,7 @@ public class Protocol1_14To1_13_2 extends BackwardsProtocol<ClientboundPackets1_
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_14.TAB_LIST);
|
||||
translatableRewriter.registerSetPlayerTeam1_13(ClientboundPackets1_14.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerTitle(ClientboundPackets1_14.SET_TITLES);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_14.SET_OBJECTIVE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
particleRewriter.registerLevelParticles1_13(ClientboundPackets1_14.LEVEL_PARTICLES, Types.FLOAT);
|
||||
|
||||
+1
-1
@@ -487,7 +487,7 @@ public class EntityPacketRewriter1_14 extends LegacyEntityRewriter<ClientboundPa
|
||||
|
||||
filter().handler((event, data) -> {
|
||||
if (data.dataType().typeId() > 15) {
|
||||
throw new IllegalArgumentException("Unhandled entity data: " + data);
|
||||
event.cancel(); // Cancel bad data (generally from plugins sending data for despawned entities)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+1
@@ -66,6 +66,7 @@ public class Protocol1_15To1_14_4 extends BackwardsProtocol<ClientboundPackets1_
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_15.TAB_LIST);
|
||||
translatableRewriter.registerSetPlayerTeam1_13(ClientboundPackets1_15.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerTitle(ClientboundPackets1_15.SET_TITLES);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_15.SET_OBJECTIVE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
SoundRewriter<ClientboundPackets1_15> soundRewriter = new SoundRewriter<>(this);
|
||||
|
||||
+1
@@ -69,6 +69,7 @@ public class Protocol1_16_2To1_16_1 extends BackwardsProtocol<ClientboundPackets
|
||||
translatableRewriter.registerTitle(ClientboundPackets1_16_2.SET_TITLES);
|
||||
translatableRewriter.registerSetPlayerTeam1_13(ClientboundPackets1_16_2.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerOpenScreen1_14(ClientboundPackets1_16_2.OPEN_SCREEN);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_16_2.SET_OBJECTIVE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
particleRewriter.registerLevelParticles1_13(ClientboundPackets1_16_2.LEVEL_PARTICLES, Types.DOUBLE);
|
||||
|
||||
+1
-1
@@ -136,7 +136,7 @@ public final class BiomeMappings1_16_1 {
|
||||
public static int toLegacyBiome(String biome) {
|
||||
final int legacyBiome = MODERN_TO_LEGACY_ID.getInt(Key.stripMinecraftNamespace(biome));
|
||||
if (legacyBiome == -1) {
|
||||
if (!Via.getConfig().isSuppressConversionWarnings()) {
|
||||
if (Via.getConfig().logOtherConversionWarnings()) {
|
||||
Protocol1_16_2To1_16_1.LOGGER.warning("Biome with id " + biome + " has no legacy biome mapping (custom datapack?)");
|
||||
}
|
||||
return 1; // Plains
|
||||
|
||||
+1
@@ -72,6 +72,7 @@ public class Protocol1_16To1_15_2 extends BackwardsProtocol<ClientboundPackets1_
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_16.TAB_LIST);
|
||||
translatableRewriter.registerSetPlayerTeam1_13(ClientboundPackets1_16.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerTitle(ClientboundPackets1_16.SET_TITLES);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_16.SET_OBJECTIVE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
particleRewriter.registerLevelParticles1_13(ClientboundPackets1_16.LEVEL_PARTICLES, Types.DOUBLE);
|
||||
|
||||
+1
@@ -76,6 +76,7 @@ public final class Protocol1_17To1_16_4 extends BackwardsProtocol<ClientboundPac
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_17.TAB_LIST);
|
||||
translatableRewriter.registerSetPlayerTeam1_13(ClientboundPackets1_17.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerOpenScreen1_14(ClientboundPackets1_17.OPEN_SCREEN);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_17.SET_OBJECTIVE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
SoundRewriter<ClientboundPackets1_17> soundRewriter = new SoundRewriter<>(this);
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ public final class Protocol1_18_2To1_18 extends BackwardsProtocol<ClientboundPac
|
||||
final PacketHandler entityEffectIdHandler = wrapper -> {
|
||||
final int id = wrapper.read(Types.VAR_INT);
|
||||
if ((byte) id != id) {
|
||||
if (!Via.getConfig().isSuppressConversionWarnings()) {
|
||||
if (Via.getConfig().logOtherConversionWarnings()) {
|
||||
getLogger().warning("Cannot send entity effect id " + id + " to old client");
|
||||
}
|
||||
wrapper.cancel();
|
||||
|
||||
+1
@@ -85,6 +85,7 @@ public final class Protocol1_19_1To1_19 extends BackwardsProtocol<ClientboundPac
|
||||
translatableRewriter.registerSetPlayerTeam1_13(ClientboundPackets1_19_1.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerOpenScreen1_14(ClientboundPackets1_19_1.OPEN_SCREEN);
|
||||
translatableRewriter.registerPlayerCombatKill(ClientboundPackets1_19_1.PLAYER_COMBAT_KILL);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_19_1.SET_OBJECTIVE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
entityRewriter.register();
|
||||
|
||||
+1
@@ -96,6 +96,7 @@ public final class Protocol1_19_3To1_19_1 extends BackwardsProtocol<ClientboundP
|
||||
translatableRewriter.registerSetPlayerTeam1_13(ClientboundPackets1_19_3.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerOpenScreen1_14(ClientboundPackets1_19_3.OPEN_SCREEN);
|
||||
translatableRewriter.registerPlayerCombatKill(ClientboundPackets1_19_3.PLAYER_COMBAT_KILL);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_19_3.SET_OBJECTIVE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
particleRewriter.registerLevelParticles1_19(ClientboundPackets1_19_3.LEVEL_PARTICLES);
|
||||
|
||||
+1
@@ -74,6 +74,7 @@ public final class Protocol1_19_4To1_19_3 extends BackwardsProtocol<ClientboundP
|
||||
translatableRewriter.registerSetPlayerTeam1_13(ClientboundPackets1_19_4.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.SYSTEM_CHAT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.DISGUISED_CHAT);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_19_4.SET_OBJECTIVE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
particleRewriter.registerLevelParticles1_19(ClientboundPackets1_19_4.LEVEL_PARTICLES);
|
||||
|
||||
+1
@@ -89,6 +89,7 @@ public final class Protocol1_19To1_18_2 extends BackwardsProtocol<ClientboundPac
|
||||
translatableRewriter.registerSetPlayerTeam1_13(ClientboundPackets1_19.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerOpenScreen1_14(ClientboundPackets1_19.OPEN_SCREEN);
|
||||
translatableRewriter.registerPlayerCombatKill(ClientboundPackets1_19.PLAYER_COMBAT_KILL);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_19.SET_OBJECTIVE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
final SoundRewriter<ClientboundPackets1_19> soundRewriter = new SoundRewriter<>(this);
|
||||
|
||||
+3
@@ -110,6 +110,7 @@ public final class Protocol1_20_5To1_20_3 extends BackwardsProtocol<ClientboundP
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.SET_SUBTITLE_TEXT);
|
||||
translatableRewriter.registerBossEvent(ClientboundPackets1_20_5.BOSS_EVENT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.DISCONNECT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundConfigurationPackets1_20_5.DISCONNECT);
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_20_5.TAB_LIST);
|
||||
translatableRewriter.registerSetPlayerTeam1_13(ClientboundPackets1_20_5.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerPlayerCombatKill1_20(ClientboundPackets1_20_5.PLAYER_COMBAT_KILL);
|
||||
@@ -117,6 +118,8 @@ public final class Protocol1_20_5To1_20_3 extends BackwardsProtocol<ClientboundP
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.DISGUISED_CHAT);
|
||||
translatableRewriter.registerPlayerChat(ClientboundPackets1_20_5.PLAYER_CHAT, Types.VAR_INT);
|
||||
translatableRewriter.registerPlayerInfoUpdate1_20_3(ClientboundPackets1_20_5.PLAYER_INFO_UPDATE);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_20_5.SET_OBJECTIVE);
|
||||
translatableRewriter.registerSetScore1_20_3(ClientboundPackets1_20_5.SET_SCORE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
registerClientbound(State.LOGIN, ClientboundLoginPackets.HELLO, wrapper -> {
|
||||
|
||||
+1
@@ -74,6 +74,7 @@ public final class Protocol1_20To1_19_4 extends BackwardsProtocol<ClientboundPac
|
||||
translatableRewriter.registerSetPlayerTeam1_13(ClientboundPackets1_19_4.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.SYSTEM_CHAT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.DISGUISED_CHAT);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_19_4.SET_OBJECTIVE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
registerClientbound(ClientboundPackets1_19_4.UPDATE_ENABLED_FEATURES, wrapper -> {
|
||||
|
||||
+24
-2
@@ -34,6 +34,7 @@ import com.viaversion.viabackwards.protocol.v1_21_11to1_21_9.rewriter.ComponentR
|
||||
import com.viaversion.viabackwards.protocol.v1_21_11to1_21_9.rewriter.EntityPacketRewriter1_21_11;
|
||||
import com.viaversion.viabackwards.protocol.v1_21_11to1_21_9.storage.GameTimeStorage;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.data.FullMappings;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_11;
|
||||
import com.viaversion.viaversion.api.protocol.packet.provider.PacketTypesProvider;
|
||||
import com.viaversion.viaversion.api.protocol.packet.provider.SimplePacketTypesProvider;
|
||||
@@ -67,13 +68,29 @@ public final class Protocol1_21_11To1_21_9 extends BackwardsProtocol<Clientbound
|
||||
|
||||
public static final BackwardsMappingData MAPPINGS = new BackwardsMappingData("1.21.11", "1.21.9", Protocol1_21_9To1_21_11.class);
|
||||
private static final int END_FOG_COLOR = 10518688;
|
||||
private static final int OVERWORLD_FOG_COLOR = 126384063;
|
||||
private static final int OVERWORLD_FOG_COLOR = -4138753;
|
||||
private final EntityPacketRewriter1_21_11 entityRewriter = new EntityPacketRewriter1_21_11(this);
|
||||
private final BlockItemPacketRewriter1_21_11 itemRewriter = new BlockItemPacketRewriter1_21_11(this);
|
||||
private final ParticleRewriter<ClientboundPacket1_21_11> particleRewriter = new ParticleRewriter<>(this);
|
||||
private final NBTComponentRewriter<ClientboundPacket1_21_11> translatableRewriter = new ComponentRewriter1_21_11(this);
|
||||
private final TagRewriter<ClientboundPacket1_21_11> tagRewriter = new TagRewriter<>(this);
|
||||
private final RegistryDataRewriter registryDataRewriter = new BackwardsRegistryRewriter(this);
|
||||
private final RegistryDataRewriter registryDataRewriter = new BackwardsRegistryRewriter(this) {
|
||||
@Override
|
||||
protected void updateType(final CompoundTag tag, final String key, final FullMappings mappings) {
|
||||
super.updateType(tag, key, mappings);
|
||||
|
||||
if (key.equals("sound") && tag.get(key) instanceof ListTag<?> listTag) {
|
||||
// From a compact list to a single value
|
||||
final Tag first;
|
||||
if (listTag.isEmpty()) {
|
||||
first = new StringTag(mappings.mappedIdentifier(0)); // Dummy
|
||||
} else {
|
||||
first = listTag.get(0);
|
||||
}
|
||||
tag.put(key, first);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public Protocol1_21_11To1_21_9() {
|
||||
super(ClientboundPacket1_21_11.class, ClientboundPacket1_21_9.class, ServerboundPacket1_21_9.class, ServerboundPacket1_21_9.class);
|
||||
@@ -142,6 +159,8 @@ public final class Protocol1_21_11To1_21_9 extends BackwardsProtocol<Clientbound
|
||||
TagUtil.removeNamespaced(effects, "post_piercing_attack");
|
||||
}
|
||||
});
|
||||
registryDataRewriter.remove("zombie_nautilus_variant");
|
||||
registryDataRewriter.remove("timeline");
|
||||
registerClientbound(ClientboundConfigurationPackets1_21_9.REGISTRY_DATA, registryDataRewriter::handle);
|
||||
|
||||
tagRewriter.removeTags("timeline");
|
||||
@@ -162,12 +181,15 @@ public final class Protocol1_21_11To1_21_9 extends BackwardsProtocol<Clientbound
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_11.SET_SUBTITLE_TEXT);
|
||||
translatableRewriter.registerBossEvent(ClientboundPackets1_21_11.BOSS_EVENT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_11.DISCONNECT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundConfigurationPackets1_21_9.DISCONNECT);
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_21_11.TAB_LIST);
|
||||
translatableRewriter.registerPlayerCombatKill1_20(ClientboundPackets1_21_11.PLAYER_COMBAT_KILL);
|
||||
translatableRewriter.registerPlayerInfoUpdate1_21_4(ClientboundPackets1_21_11.PLAYER_INFO_UPDATE);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_11.SYSTEM_CHAT);
|
||||
translatableRewriter.registerDisguisedChat(ClientboundPackets1_21_11.DISGUISED_CHAT);
|
||||
translatableRewriter.registerPlayerChat1_21_5(ClientboundPackets1_21_11.PLAYER_CHAT);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_21_11.SET_OBJECTIVE);
|
||||
translatableRewriter.registerSetScore1_20_3(ClientboundPackets1_21_11.SET_SCORE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
particleRewriter.registerLevelParticles1_21_4(ClientboundPackets1_21_11.LEVEL_PARTICLES);
|
||||
|
||||
+12
@@ -83,6 +83,18 @@ public final class BlockItemPacketRewriter1_21_11 extends BackwardsStructuredIte
|
||||
recipeRewriter.registerRecipeBookAdd(ClientboundPackets1_21_11.RECIPE_BOOK_ADD);
|
||||
recipeRewriter.registerPlaceGhostRecipe(ClientboundPackets1_21_11.PLACE_GHOST_RECIPE);
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_21_11.SET_BORDER_LERP_SIZE, wrapper -> {
|
||||
wrapper.passthrough(Types.DOUBLE); // oldSize
|
||||
wrapper.passthrough(Types.DOUBLE); // newSize
|
||||
wrapper.write(Types.VAR_LONG, wrapper.read(Types.VAR_LONG) * 50); // lerpTime
|
||||
});
|
||||
protocol.registerClientbound(ClientboundPackets1_21_11.INITIALIZE_BORDER, wrapper -> {
|
||||
wrapper.passthrough(Types.DOUBLE); // newCenterX
|
||||
wrapper.passthrough(Types.DOUBLE); // newCenterZ
|
||||
wrapper.passthrough(Types.DOUBLE); // oldSize
|
||||
wrapper.passthrough(Types.DOUBLE); // newSize
|
||||
wrapper.write(Types.VAR_LONG, wrapper.read(Types.VAR_LONG) * 50); // lerpTime
|
||||
});
|
||||
protocol.registerClientbound(ClientboundPackets1_21_11.SET_TIME, wrapper -> {
|
||||
final long gameTime = wrapper.passthrough(Types.LONG);
|
||||
wrapper.user().get(GameTimeStorage.class).setGameTime(gameTime);
|
||||
|
||||
+18
-11
@@ -30,6 +30,7 @@ import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.packet.ClientboundPac
|
||||
import com.viaversion.viaversion.protocols.v1_21_9to1_21_11.packet.ClientboundPacket1_21_11;
|
||||
import com.viaversion.viaversion.protocols.v1_21_9to1_21_11.packet.ClientboundPackets1_21_11;
|
||||
import com.viaversion.viaversion.rewriter.entitydata.EntityDataHandlerEvent;
|
||||
import com.viaversion.viaversion.util.MathUtil;
|
||||
|
||||
public final class EntityPacketRewriter1_21_11 extends EntityRewriter<ClientboundPacket1_21_11, Protocol1_21_11To1_21_9> {
|
||||
|
||||
@@ -54,15 +55,23 @@ public final class EntityPacketRewriter1_21_11 extends EntityRewriter<Clientboun
|
||||
protected void registerRewrites() {
|
||||
final EntityDataTypes1_21_11 unmappedDataTypes = VersionedTypes.V1_21_11.entityDataTypes;
|
||||
final EntityDataTypes1_21_9 entityDataTypes = VersionedTypes.V1_21_9.entityDataTypes;
|
||||
filter().mapDataType(id -> {
|
||||
if (id == unmappedDataTypes.humanoidArmType.typeId() || id == unmappedDataTypes.zombieNautilusVariantType.typeId()) {
|
||||
return null;
|
||||
filter().handler((event, data) -> {
|
||||
if (data.dataType() == unmappedDataTypes.humanoidArmType) {
|
||||
final int arm = data.value();
|
||||
data.setTypeAndValue(entityDataTypes.byteType, (byte) arm);
|
||||
return;
|
||||
} else if (data.dataType() == unmappedDataTypes.zombieNautilusVariantType) {
|
||||
event.cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
int id = data.dataType().typeId();
|
||||
if (id > unmappedDataTypes.zombieNautilusVariantType.typeId()) {
|
||||
id--;
|
||||
}
|
||||
return entityDataTypes.byId(id);
|
||||
data.setDataType(entityDataTypes.byId(id));
|
||||
});
|
||||
|
||||
registerEntityDataTypeHandler1_20_3(
|
||||
entityDataTypes.itemType,
|
||||
entityDataTypes.blockStateType,
|
||||
@@ -73,21 +82,19 @@ public final class EntityPacketRewriter1_21_11 extends EntityRewriter<Clientboun
|
||||
entityDataTypes.optionalComponentType
|
||||
);
|
||||
|
||||
filter().type(EntityTypes1_21_11.AVATAR).index(15).handler(((event, data) -> {
|
||||
final int arm = data.value();
|
||||
data.setTypeAndValue(entityDataTypes.byteType, (byte) arm);
|
||||
}));
|
||||
filter().type(EntityTypes1_21_11.WOLF).index(21).handler(this::absoluteToRelativeTicks);
|
||||
filter().type(EntityTypes1_21_11.BEE).index(18).handler(this::absoluteToRelativeTicks);
|
||||
|
||||
filter().type(EntityTypes1_21_11.ABSTRACT_NAUTILUS).removeIndex(19); // Dashing
|
||||
filter().type(EntityTypes1_21_11.ZOMBIE_NAUTILUS).removeIndex(20); // Variant
|
||||
filter().type(EntityTypes1_21_11.ABSTRACT_NAUTILUS).cancel(17); // Tamable flags
|
||||
filter().type(EntityTypes1_21_11.ABSTRACT_NAUTILUS).cancel(18); // Owner UUID
|
||||
filter().type(EntityTypes1_21_11.ABSTRACT_NAUTILUS).cancel(19); // Dashing
|
||||
filter().type(EntityTypes1_21_11.ZOMBIE_NAUTILUS).cancel(20); // Variant
|
||||
}
|
||||
|
||||
private void absoluteToRelativeTicks(final EntityDataHandlerEvent event, final EntityData data) {
|
||||
final long currentGameTime = event.user().get(GameTimeStorage.class).gameTime();
|
||||
final long angerEndTime = data.value();
|
||||
final int angerEndIn = Math.toIntExact(angerEndTime - currentGameTime);
|
||||
final int angerEndIn = (int) MathUtil.clamp(angerEndTime - currentGameTime, Integer.MIN_VALUE, Integer.MAX_VALUE);
|
||||
data.setTypeAndValue(VersionedTypes.V1_21_9.entityDataTypes.varIntType, Math.max(angerEndIn, 0));
|
||||
}
|
||||
|
||||
|
||||
+3
@@ -95,12 +95,15 @@ public final class Protocol1_21_2To1_21 extends BackwardsProtocol<ClientboundPac
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_2.SET_SUBTITLE_TEXT);
|
||||
translatableRewriter.registerBossEvent(ClientboundPackets1_21_2.BOSS_EVENT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_2.DISCONNECT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundConfigurationPackets1_21.DISCONNECT);
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_21_2.TAB_LIST);
|
||||
translatableRewriter.registerSetPlayerTeam1_13(ClientboundPackets1_21_2.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerPlayerCombatKill1_20(ClientboundPackets1_21_2.PLAYER_COMBAT_KILL);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_2.SYSTEM_CHAT);
|
||||
translatableRewriter.registerDisguisedChat(ClientboundPackets1_21_2.DISGUISED_CHAT);
|
||||
translatableRewriter.registerPlayerChat(ClientboundPackets1_21_2.PLAYER_CHAT, ChatType.TYPE);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_21_2.SET_OBJECTIVE);
|
||||
translatableRewriter.registerSetScore1_20_3(ClientboundPackets1_21_2.SET_SCORE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
registerServerbound(ServerboundPackets1_20_5.CLIENT_INFORMATION, this::clientInformation);
|
||||
|
||||
+3
@@ -88,12 +88,15 @@ public final class Protocol1_21_4To1_21_2 extends BackwardsProtocol<ClientboundP
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_2.SET_SUBTITLE_TEXT);
|
||||
translatableRewriter.registerBossEvent(ClientboundPackets1_21_2.BOSS_EVENT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_2.DISCONNECT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundConfigurationPackets1_21.DISCONNECT);
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_21_2.TAB_LIST);
|
||||
translatableRewriter.registerSetPlayerTeam1_13(ClientboundPackets1_21_2.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerPlayerCombatKill1_20(ClientboundPackets1_21_2.PLAYER_COMBAT_KILL);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_2.SYSTEM_CHAT);
|
||||
translatableRewriter.registerDisguisedChat(ClientboundPackets1_21_2.DISGUISED_CHAT);
|
||||
translatableRewriter.registerPlayerChat(ClientboundPackets1_21_2.PLAYER_CHAT, ChatType.TYPE);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_21_2.SET_OBJECTIVE);
|
||||
translatableRewriter.registerSetScore1_20_3(ClientboundPackets1_21_2.SET_SCORE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
particleRewriter.registerExplode1_21_2(ClientboundPackets1_21_2.EXPLODE);
|
||||
|
||||
+3
@@ -105,11 +105,14 @@ public final class Protocol1_21_5To1_21_4 extends BackwardsProtocol<ClientboundP
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_5.SET_SUBTITLE_TEXT);
|
||||
translatableRewriter.registerBossEvent(ClientboundPackets1_21_5.BOSS_EVENT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_5.DISCONNECT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundConfigurationPackets1_21.DISCONNECT);
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_21_5.TAB_LIST);
|
||||
translatableRewriter.registerPlayerCombatKill1_20(ClientboundPackets1_21_5.PLAYER_COMBAT_KILL);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_5.SYSTEM_CHAT);
|
||||
translatableRewriter.registerDisguisedChat(ClientboundPackets1_21_5.DISGUISED_CHAT);
|
||||
translatableRewriter.registerPlayerInfoUpdate1_21_4(ClientboundPackets1_21_5.PLAYER_INFO_UPDATE);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_21_5.SET_OBJECTIVE);
|
||||
translatableRewriter.registerSetScore1_20_3(ClientboundPackets1_21_5.SET_SCORE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
particleRewriter.registerLevelParticles1_21_4(ClientboundPackets1_21_5.LEVEL_PARTICLES);
|
||||
|
||||
+3
@@ -131,6 +131,7 @@ public final class Protocol1_21_6To1_21_5 extends BackwardsProtocol<ClientboundP
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_6.SET_SUBTITLE_TEXT);
|
||||
translatableRewriter.registerBossEvent(ClientboundPackets1_21_6.BOSS_EVENT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_6.DISCONNECT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundConfigurationPackets1_21_6.DISCONNECT);
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_21_6.TAB_LIST);
|
||||
translatableRewriter.registerSetPlayerTeam1_21_5(ClientboundPackets1_21_6.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerPlayerCombatKill1_20(ClientboundPackets1_21_6.PLAYER_COMBAT_KILL);
|
||||
@@ -138,6 +139,8 @@ public final class Protocol1_21_6To1_21_5 extends BackwardsProtocol<ClientboundP
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_6.SYSTEM_CHAT);
|
||||
translatableRewriter.registerDisguisedChat(ClientboundPackets1_21_6.DISGUISED_CHAT);
|
||||
translatableRewriter.registerPlayerChat1_21_5(ClientboundPackets1_21_6.PLAYER_CHAT);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_21_6.SET_OBJECTIVE);
|
||||
translatableRewriter.registerSetScore1_20_3(ClientboundPackets1_21_6.SET_SCORE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
particleRewriter.registerLevelParticles1_21_4(ClientboundPackets1_21_6.LEVEL_PARTICLES);
|
||||
|
||||
+3
@@ -84,6 +84,7 @@ public final class Protocol1_21_7To1_21_6 extends BackwardsProtocol<ClientboundP
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_6.SET_SUBTITLE_TEXT);
|
||||
translatableRewriter.registerBossEvent(ClientboundPackets1_21_6.BOSS_EVENT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_6.DISCONNECT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundConfigurationPackets1_21_6.DISCONNECT);
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_21_6.TAB_LIST);
|
||||
translatableRewriter.registerSetPlayerTeam1_21_5(ClientboundPackets1_21_6.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerPlayerCombatKill1_20(ClientboundPackets1_21_6.PLAYER_COMBAT_KILL);
|
||||
@@ -91,6 +92,8 @@ public final class Protocol1_21_7To1_21_6 extends BackwardsProtocol<ClientboundP
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_6.SYSTEM_CHAT);
|
||||
translatableRewriter.registerDisguisedChat(ClientboundPackets1_21_6.DISGUISED_CHAT);
|
||||
translatableRewriter.registerPlayerChat1_21_5(ClientboundPackets1_21_6.PLAYER_CHAT);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_21_6.SET_OBJECTIVE);
|
||||
translatableRewriter.registerSetScore1_20_3(ClientboundPackets1_21_6.SET_SCORE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
particleRewriter.registerLevelParticles1_21_4(ClientboundPackets1_21_6.LEVEL_PARTICLES);
|
||||
|
||||
+6
@@ -55,6 +55,7 @@ import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.packet.ClientboundPac
|
||||
import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.packet.ClientboundPackets1_21_9;
|
||||
import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.packet.ServerboundConfigurationPackets1_21_9;
|
||||
import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.packet.ServerboundPacket1_21_9;
|
||||
import com.viaversion.viaversion.protocols.v1_21to1_21_2.storage.BundleStateTracker;
|
||||
import com.viaversion.viaversion.rewriter.ParticleRewriter;
|
||||
import com.viaversion.viaversion.rewriter.RegistryDataRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
@@ -98,6 +99,7 @@ public final class Protocol1_21_9To1_21_7 extends BackwardsProtocol<ClientboundP
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_9.SET_SUBTITLE_TEXT);
|
||||
translatableRewriter.registerBossEvent(ClientboundPackets1_21_9.BOSS_EVENT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_9.DISCONNECT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundConfigurationPackets1_21_9.DISCONNECT);
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_21_9.TAB_LIST);
|
||||
translatableRewriter.registerSetPlayerTeam1_21_5(ClientboundPackets1_21_9.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerPlayerCombatKill1_20(ClientboundPackets1_21_9.PLAYER_COMBAT_KILL);
|
||||
@@ -105,6 +107,8 @@ public final class Protocol1_21_9To1_21_7 extends BackwardsProtocol<ClientboundP
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21_9.SYSTEM_CHAT);
|
||||
translatableRewriter.registerDisguisedChat(ClientboundPackets1_21_9.DISGUISED_CHAT);
|
||||
translatableRewriter.registerPlayerChat1_21_5(ClientboundPackets1_21_9.PLAYER_CHAT);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_21_9.SET_OBJECTIVE);
|
||||
translatableRewriter.registerSetScore1_20_3(ClientboundPackets1_21_9.SET_SCORE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
particleRewriter.registerLevelParticles1_21_4(ClientboundPackets1_21_9.LEVEL_PARTICLES);
|
||||
@@ -199,6 +203,7 @@ public final class Protocol1_21_9To1_21_7 extends BackwardsProtocol<ClientboundP
|
||||
wrapper.write(Types.VAR_INT, 0); // Subscription registry id (DEDICATED_SERVER_TICK_TIME)
|
||||
}
|
||||
});
|
||||
registerClientbound(ClientboundPackets1_21_9.BUNDLE_DELIMITER, wrapper -> wrapper.user().get(BundleStateTracker.class).toggleBundling());
|
||||
|
||||
cancelClientbound(ClientboundPackets1_21_9.DEBUG_BLOCK_VALUE);
|
||||
cancelClientbound(ClientboundPackets1_21_9.DEBUG_CHUNK_VALUE);
|
||||
@@ -213,6 +218,7 @@ public final class Protocol1_21_9To1_21_7 extends BackwardsProtocol<ClientboundP
|
||||
addItemHasher(connection, new ItemHasherBase(this, connection));
|
||||
connection.put(new PlayerRotationStorage());
|
||||
connection.put(new DimensionScaleStorage());
|
||||
connection.put(new BundleStateTracker());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
-1
@@ -68,7 +68,6 @@ public final class BlockItemPacketRewriter1_21_9 extends BackwardsStructuredItem
|
||||
registerSetContent1_21_2(ClientboundPackets1_21_9.CONTAINER_SET_CONTENT);
|
||||
registerSetSlot1_21_2(ClientboundPackets1_21_9.CONTAINER_SET_SLOT);
|
||||
registerAdvancements1_20_3(ClientboundPackets1_21_9.UPDATE_ADVANCEMENTS);
|
||||
registerSetEquipment(ClientboundPackets1_21_9.SET_EQUIPMENT);
|
||||
registerMerchantOffers1_20_5(ClientboundPackets1_21_9.MERCHANT_OFFERS);
|
||||
registerContainerClick1_21_5(ServerboundPackets1_21_6.CONTAINER_CLICK);
|
||||
registerSetCreativeModeSlot1_21_5(ServerboundPackets1_21_6.SET_CREATIVE_MODE_SLOT);
|
||||
|
||||
+234
-29
@@ -24,7 +24,9 @@ import com.viaversion.viabackwards.api.rewriters.EntityRewriter;
|
||||
import com.viaversion.viabackwards.protocol.v1_21_9to1_21_7.Protocol1_21_9To1_21_7;
|
||||
import com.viaversion.viabackwards.protocol.v1_21_9to1_21_7.storage.MannequinData;
|
||||
import com.viaversion.viabackwards.protocol.v1_21_9to1_21_7.storage.PlayerRotationStorage;
|
||||
import com.viaversion.viabackwards.protocol.v1_21_9to1_21_7.tracker.EntityTracker1_21_9;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.data.entity.TrackedEntity;
|
||||
import com.viaversion.viaversion.api.minecraft.BlockPosition;
|
||||
import com.viaversion.viaversion.api.minecraft.GameProfile;
|
||||
import com.viaversion.viaversion.api.minecraft.GlobalBlockPosition;
|
||||
@@ -33,7 +35,9 @@ import com.viaversion.viaversion.api.minecraft.Vector3d;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_6;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_9;
|
||||
import com.viaversion.viaversion.api.minecraft.entitydata.EntityData;
|
||||
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_5;
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.api.type.types.version.VersionedTypes;
|
||||
@@ -41,9 +45,13 @@ import com.viaversion.viaversion.protocols.v1_21_5to1_21_6.packet.ClientboundPac
|
||||
import com.viaversion.viaversion.protocols.v1_21_5to1_21_6.packet.ServerboundPackets1_21_6;
|
||||
import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.packet.ClientboundPacket1_21_9;
|
||||
import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.packet.ClientboundPackets1_21_9;
|
||||
import com.viaversion.viaversion.protocols.v1_21to1_21_2.storage.BundleStateTracker;
|
||||
import com.viaversion.viaversion.rewriter.entitydata.EntityDataHandler;
|
||||
import com.viaversion.viaversion.util.ChatColorUtil;
|
||||
import com.viaversion.viaversion.util.Copyable;
|
||||
import java.util.BitSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
@@ -68,15 +76,16 @@ public final class EntityPacketRewriter1_21_9 extends EntityRewriter<Clientbound
|
||||
final UUID uuid = wrapper.passthrough(Types.UUID);
|
||||
final int entityTypeId = wrapper.passthrough(Types.VAR_INT);
|
||||
|
||||
wrapper.passthrough(Types.DOUBLE); // X
|
||||
wrapper.passthrough(Types.DOUBLE); // Y
|
||||
wrapper.passthrough(Types.DOUBLE); // Z
|
||||
final double x = wrapper.passthrough(Types.DOUBLE);
|
||||
final double y = wrapper.passthrough(Types.DOUBLE);
|
||||
final double z = wrapper.passthrough(Types.DOUBLE);
|
||||
|
||||
final Vector3d movement = wrapper.read(Types.MOVEMENT_VECTOR);
|
||||
|
||||
wrapper.passthrough(Types.BYTE); // Pitch
|
||||
wrapper.passthrough(Types.BYTE); // Yaw
|
||||
wrapper.passthrough(Types.BYTE); // Head yaw
|
||||
final byte pitch = wrapper.passthrough(Types.BYTE);
|
||||
final byte yaw = wrapper.passthrough(Types.BYTE);
|
||||
final byte headYaw = wrapper.passthrough(Types.BYTE);
|
||||
|
||||
final int data = wrapper.passthrough(Types.VAR_INT);
|
||||
final EntityType entityType = trackAndRewrite(wrapper, entityTypeId, entityId);
|
||||
if (protocol.getMappingData() != null && entityType == EntityTypes1_21_9.FALLING_BLOCK) {
|
||||
@@ -89,11 +98,72 @@ public final class EntityPacketRewriter1_21_9 extends EntityRewriter<Clientbound
|
||||
if (EntityTypes1_21_9.getTypeFromId(entityTypeId) == EntityTypes1_21_9.MANNEQUIN) {
|
||||
final String name = randomHackyEmptyName();
|
||||
final MannequinData mannequinData = new MannequinData(uuid, name);
|
||||
tracker(wrapper.user()).entity(entityId).data().put(mannequinData);
|
||||
sendInitialPlayerInfoUpdate(wrapper, mannequinData);
|
||||
final TrackedEntity trackedEntity = tracker(wrapper.user()).entity(entityId);
|
||||
|
||||
trackedEntity.data().put(mannequinData);
|
||||
sendInitialPlayerInfoUpdate(wrapper.user(), mannequinData, null, new GameProfile.Property[0]);
|
||||
|
||||
mannequinData.setPosition(x, y, z);
|
||||
mannequinData.setRotation(yaw, pitch);
|
||||
mannequinData.setHeadYaw(headYaw);
|
||||
}
|
||||
});
|
||||
|
||||
// Track movement
|
||||
protocol.registerClientbound(ClientboundPackets1_21_9.TELEPORT_ENTITY, this::trackMannequinTeleport);
|
||||
protocol.registerClientbound(ClientboundPackets1_21_9.ENTITY_POSITION_SYNC, this::trackMannequinTeleport);
|
||||
protocol.registerClientbound(ClientboundPackets1_21_9.MOVE_ENTITY_POS, wrapper -> storeMovementMannequinData(wrapper, true, false));
|
||||
protocol.registerClientbound(ClientboundPackets1_21_9.MOVE_ENTITY_POS_ROT, wrapper -> storeMovementMannequinData(wrapper, true, true));
|
||||
protocol.registerClientbound(ClientboundPackets1_21_9.MOVE_ENTITY_ROT, wrapper -> storeMovementMannequinData(wrapper, false, true));
|
||||
protocol.registerClientbound(ClientboundPackets1_21_9.ROTATE_HEAD, wrapper -> {
|
||||
final int vehicleId = wrapper.passthrough(Types.VAR_INT);
|
||||
final byte headRotation = wrapper.passthrough(Types.BYTE);
|
||||
|
||||
final EntityTracker1_21_9 tracker = tracker(wrapper.user());
|
||||
final TrackedEntity trackedEntity = tracker.entity(vehicleId);
|
||||
if (trackedEntity != null && trackedEntity.hasData()) {
|
||||
final MannequinData data = trackedEntity.data().get(MannequinData.class);
|
||||
if (data != null) {
|
||||
data.setHeadYaw(headRotation);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Track passengers
|
||||
protocol.registerClientbound(ClientboundPackets1_21_9.SET_PASSENGERS, wrapper -> {
|
||||
final int vehicleId = wrapper.passthrough(Types.VAR_INT);
|
||||
final int[] passengerIds = wrapper.passthrough(Types.VAR_INT_ARRAY_PRIMITIVE);
|
||||
|
||||
final EntityTracker1_21_9 tracker = tracker(wrapper.user());
|
||||
final TrackedEntity trackedEntity = tracker.entity(vehicleId);
|
||||
if (trackedEntity != null && trackedEntity.hasData()) {
|
||||
final MannequinData data = trackedEntity.data().get(MannequinData.class);
|
||||
if (data != null) {
|
||||
data.setPassengers(passengerIds);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Track items
|
||||
protocol.registerClientbound(ClientboundPackets1_21_9.SET_EQUIPMENT, wrapper -> {
|
||||
final int entityId = wrapper.passthrough(Types.VAR_INT);
|
||||
|
||||
final TrackedEntity trackedEntity = tracker(wrapper.user()).entity(entityId);
|
||||
final MannequinData mannequinData = trackedEntity != null && trackedEntity.hasData() ? trackedEntity.data().get(MannequinData.class) : null;
|
||||
|
||||
byte slot;
|
||||
do {
|
||||
slot = wrapper.passthrough(Types.BYTE);
|
||||
|
||||
final Item item = protocol.getItemRewriter().handleItemToClient(wrapper.user(), wrapper.read(protocol.getItemRewriter().itemType()));
|
||||
wrapper.write(protocol.getItemRewriter().mappedItemType(), item);
|
||||
if (mannequinData != null) {
|
||||
mannequinData.setEquipment((byte) (slot & 0x7F), item);
|
||||
}
|
||||
} while (slot < 0);
|
||||
});
|
||||
|
||||
// Back to more non-mannequin things
|
||||
protocol.registerClientbound(ClientboundPackets1_21_9.SET_ENTITY_MOTION, wrapper -> {
|
||||
wrapper.passthrough(Types.VAR_INT); // Entity ID
|
||||
writeMovementShorts(wrapper, wrapper.read(Types.MOVEMENT_VECTOR));
|
||||
@@ -135,8 +205,63 @@ public final class EntityPacketRewriter1_21_9 extends EntityRewriter<Clientbound
|
||||
protocol.registerServerbound(ServerboundPackets1_21_6.MOVE_PLAYER_ROT, this::storePlayerRotation);
|
||||
}
|
||||
|
||||
private void sendInitialPlayerInfoUpdate(final PacketWrapper wrapper, final MannequinData mannequinData) {
|
||||
final PacketWrapper playerInfo = wrapper.create(ClientboundPackets1_21_6.PLAYER_INFO_UPDATE);
|
||||
private void trackMannequinTeleport(final PacketWrapper wrapper) {
|
||||
final int entityId = wrapper.passthrough(Types.VAR_INT);
|
||||
final EntityTracker1_21_9 tracker = tracker(wrapper.user());
|
||||
final TrackedEntity trackedEntity = tracker.entity(entityId);
|
||||
if (trackedEntity == null || !trackedEntity.hasData()) {
|
||||
return;
|
||||
}
|
||||
|
||||
final MannequinData mannequinData = trackedEntity.data().get(MannequinData.class);
|
||||
if (mannequinData == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final double x = wrapper.passthrough(Types.DOUBLE);
|
||||
final double y = wrapper.passthrough(Types.DOUBLE);
|
||||
final double z = wrapper.passthrough(Types.DOUBLE);
|
||||
|
||||
wrapper.passthrough(Types.DOUBLE); // Delta movement X
|
||||
wrapper.passthrough(Types.DOUBLE); // Delta movement Y
|
||||
wrapper.passthrough(Types.DOUBLE); // Delta movement Z
|
||||
|
||||
final byte yaw = (byte) Math.floor(wrapper.passthrough(Types.FLOAT) * 256F / 360F);
|
||||
final byte pitch = (byte) Math.floor(wrapper.passthrough(Types.FLOAT) * 256F / 360F);
|
||||
|
||||
mannequinData.setPosition(x, y, z);
|
||||
mannequinData.setRotation(yaw, pitch);
|
||||
}
|
||||
|
||||
private void storeMovementMannequinData(final PacketWrapper wrapper, final boolean position, final boolean rotation) {
|
||||
final int entityId = wrapper.passthrough(Types.VAR_INT);
|
||||
|
||||
final TrackedEntity trackedEntity = tracker(wrapper.user()).entity(entityId);
|
||||
if (trackedEntity == null || !trackedEntity.hasData()) {
|
||||
return;
|
||||
}
|
||||
|
||||
final MannequinData mannequinData = trackedEntity.data().get(MannequinData.class);
|
||||
if (mannequinData == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (position) {
|
||||
final double deltaX = wrapper.passthrough(Types.SHORT) / 4096.0;
|
||||
final double deltaY = wrapper.passthrough(Types.SHORT) / 4096.0;
|
||||
final double deltaZ = wrapper.passthrough(Types.SHORT) / 4096.0;
|
||||
mannequinData.setPosition(mannequinData.x() + deltaX, mannequinData.y() + deltaY, mannequinData.z() + deltaZ);
|
||||
}
|
||||
|
||||
if (rotation) {
|
||||
final byte yaw = wrapper.passthrough(Types.BYTE);
|
||||
final byte pitch = wrapper.passthrough(Types.BYTE);
|
||||
mannequinData.setRotation(yaw, pitch);
|
||||
}
|
||||
}
|
||||
|
||||
private void sendInitialPlayerInfoUpdate(final UserConnection connection, final MannequinData mannequinData, final @Nullable String nameOverride, final GameProfile.Property[] properties) {
|
||||
final PacketWrapper playerInfo = PacketWrapper.create(ClientboundPackets1_21_6.PLAYER_INFO_UPDATE, connection);
|
||||
|
||||
final BitSet actions = new BitSet(8);
|
||||
for (int i = 0; i < 8; i++) {
|
||||
@@ -145,8 +270,8 @@ public final class EntityPacketRewriter1_21_9 extends EntityRewriter<Clientbound
|
||||
playerInfo.write(Types.PROFILE_ACTIONS_ENUM1_21_4, actions);
|
||||
playerInfo.write(Types.VAR_INT, 1); // One entry
|
||||
playerInfo.write(Types.UUID, mannequinData.uuid());
|
||||
playerInfo.write(Types.STRING, mannequinData.name());
|
||||
playerInfo.write(Types.PROFILE_PROPERTY_ARRAY, new GameProfile.Property[0]);
|
||||
playerInfo.write(Types.STRING, nameOverride != null ? nameOverride : mannequinData.name());
|
||||
playerInfo.write(Types.PROFILE_PROPERTY_ARRAY, properties);
|
||||
playerInfo.write(Types.BOOLEAN, false); // Session info
|
||||
playerInfo.write(Types.VAR_INT, 0); // Gamemode
|
||||
playerInfo.write(Types.BOOLEAN, false); // Listed
|
||||
@@ -156,7 +281,7 @@ public final class EntityPacketRewriter1_21_9 extends EntityRewriter<Clientbound
|
||||
playerInfo.write(Types.BOOLEAN, true); // Show hat
|
||||
playerInfo.send(Protocol1_21_9To1_21_7.class);
|
||||
|
||||
sendPlayerTeamDisplayName(wrapper.user(), mannequinData, null);
|
||||
sendPlayerTeamDisplayName(connection, mannequinData, mannequinData.displayName());
|
||||
}
|
||||
|
||||
private void sendPlayerInfoDisplayNameUpdate(final UserConnection connection, final MannequinData mannequinData, @Nullable final Tag displayName) {
|
||||
@@ -191,18 +316,6 @@ public final class EntityPacketRewriter1_21_9 extends EntityRewriter<Clientbound
|
||||
addTeam.send(Protocol1_21_9To1_21_7.class);
|
||||
}
|
||||
|
||||
private void sendPlayerInfoProfileUpdate(final UserConnection connection, final UUID uuid, @Nullable final String name, final GameProfile.Property[] properties) {
|
||||
final PacketWrapper playerInfo = PacketWrapper.create(ClientboundPackets1_21_6.PLAYER_INFO_UPDATE, connection);
|
||||
final BitSet actions = new BitSet(8);
|
||||
actions.set(0);
|
||||
playerInfo.write(Types.PROFILE_ACTIONS_ENUM1_21_4, actions);
|
||||
playerInfo.write(Types.VAR_INT, 1);
|
||||
playerInfo.write(Types.UUID, uuid);
|
||||
playerInfo.write(Types.STRING, name != null ? name : randomHackyEmptyName());
|
||||
playerInfo.write(Types.PROFILE_PROPERTY_ARRAY, properties);
|
||||
playerInfo.send(Protocol1_21_9To1_21_7.class);
|
||||
}
|
||||
|
||||
private String randomHackyEmptyName() {
|
||||
final StringBuilder builder = new StringBuilder();
|
||||
// Player names cannot be updated after the initial add without fully respawning them;
|
||||
@@ -283,15 +396,84 @@ public final class EntityPacketRewriter1_21_9 extends EntityRewriter<Clientbound
|
||||
}
|
||||
});
|
||||
|
||||
filter().type(EntityTypes1_21_9.MANNEQUIN).handler(((event, data) -> {
|
||||
filter().type(EntityTypes1_21_9.MANNEQUIN).handler((event, data) -> {
|
||||
if (event.index() == 2) { // Display name
|
||||
final Tag displayName = data.value();
|
||||
final MannequinData mannequinData = event.trackedEntity().data().get(MannequinData.class);
|
||||
mannequinData.setDisplayName(displayName);
|
||||
sendPlayerInfoDisplayNameUpdate(event.user(), mannequinData, displayName);
|
||||
} else if (event.index() == 17) { // Profile
|
||||
final boolean isBundling = event.user().get(BundleStateTracker.class).isBundling();
|
||||
if (!isBundling) {
|
||||
final PacketWrapper bundleStart = PacketWrapper.create(ClientboundPackets1_21_6.BUNDLE_DELIMITER, event.user());
|
||||
bundleStart.send(Protocol1_21_9To1_21_7.class);
|
||||
}
|
||||
|
||||
final ResolvableProfile profile = data.value();
|
||||
final UUID uuid = event.trackedEntity().data().get(MannequinData.class).uuid();
|
||||
sendPlayerInfoProfileUpdate(event.user(), uuid, profile.profile().name(), profile.profile().properties());
|
||||
final MannequinData mannequinData = event.trackedEntity().data().get(MannequinData.class);
|
||||
final UUID uuid = mannequinData.uuid();
|
||||
|
||||
// Remove the old entity
|
||||
final PacketWrapper removeEntityPacket = PacketWrapper.create(ClientboundPackets1_21_6.REMOVE_ENTITIES, event.user());
|
||||
removeEntityPacket.write(Types.VAR_INT_ARRAY_PRIMITIVE, new int[]{event.entityId()});
|
||||
removeEntityPacket.send(Protocol1_21_9To1_21_7.class);
|
||||
|
||||
final PacketWrapper playerInfoRemove = PacketWrapper.create(ClientboundPackets1_21_6.PLAYER_INFO_REMOVE, event.user());
|
||||
playerInfoRemove.write(Types.UUID_ARRAY, new UUID[]{uuid});
|
||||
playerInfoRemove.send(Protocol1_21_9To1_21_7.class);
|
||||
|
||||
// Spawn new entity
|
||||
sendInitialPlayerInfoUpdate(event.user(), mannequinData, profile.profile().name(), profile.profile().properties());
|
||||
|
||||
final PacketWrapper spawnEntityPacket = PacketWrapper.create(ClientboundPackets1_21_6.ADD_ENTITY, event.user());
|
||||
spawnEntityPacket.write(Types.VAR_INT, event.entityId());
|
||||
spawnEntityPacket.write(Types.UUID, mannequinData.uuid());
|
||||
spawnEntityPacket.write(Types.VAR_INT, EntityTypes1_21_6.PLAYER.getId());
|
||||
spawnEntityPacket.write(Types.DOUBLE, mannequinData.x());
|
||||
spawnEntityPacket.write(Types.DOUBLE, mannequinData.y());
|
||||
spawnEntityPacket.write(Types.DOUBLE, mannequinData.z());
|
||||
spawnEntityPacket.write(Types.BYTE, mannequinData.pitch());
|
||||
spawnEntityPacket.write(Types.BYTE, mannequinData.yaw());
|
||||
spawnEntityPacket.write(Types.BYTE, mannequinData.headYaw());
|
||||
spawnEntityPacket.write(Types.VAR_INT, 0); // Data
|
||||
spawnEntityPacket.write(Types.SHORT, (short) 0); // Velocity X
|
||||
spawnEntityPacket.write(Types.SHORT, (short) 0); // Velocity Y
|
||||
spawnEntityPacket.write(Types.SHORT, (short) 0); // Velocity Z
|
||||
spawnEntityPacket.send(Protocol1_21_9To1_21_7.class);
|
||||
|
||||
// Re-apply entity data previously set
|
||||
final PacketWrapper setEntityDataPacket = PacketWrapper.create(ClientboundPackets1_21_6.SET_ENTITY_DATA, event.user());
|
||||
setEntityDataPacket.write(Types.VAR_INT, event.entityId());
|
||||
setEntityDataPacket.write(VersionedTypes.V1_21_6.entityDataList, mannequinData.entityData());
|
||||
setEntityDataPacket.send(Protocol1_21_9To1_21_7.class);
|
||||
|
||||
// Re-attach all passengers
|
||||
if (mannequinData.passengers() != null) {
|
||||
final PacketWrapper setPassengersPacket = PacketWrapper.create(ClientboundPackets1_21_6.SET_PASSENGERS, event.user());
|
||||
setPassengersPacket.write(Types.VAR_INT, event.entityId());
|
||||
setPassengersPacket.write(Types.VAR_INT_ARRAY_PRIMITIVE, mannequinData.passengers());
|
||||
setPassengersPacket.send(Protocol1_21_9To1_21_7.class);
|
||||
}
|
||||
|
||||
// Put on items
|
||||
if (!mannequinData.itemMap().isEmpty()) {
|
||||
final PacketWrapper equipment = PacketWrapper.create(ClientboundPackets1_21_6.SET_EQUIPMENT, event.user());
|
||||
equipment.write(Types.VAR_INT, event.entityId());
|
||||
int i = 0;
|
||||
for (final Map.Entry<Byte, Item> itemEntry : mannequinData.itemMap().entrySet()) {
|
||||
final boolean more = i < mannequinData.itemMap().size() - 1;
|
||||
equipment.write(Types.BYTE, more ? (byte) (itemEntry.getKey() | -128) : itemEntry.getKey());
|
||||
equipment.write(protocol.getItemRewriter().mappedItemType(), itemEntry.getValue());
|
||||
i++;
|
||||
}
|
||||
equipment.send(Protocol1_21_9To1_21_7.class);
|
||||
}
|
||||
|
||||
if (!isBundling) {
|
||||
final PacketWrapper bundleStart = PacketWrapper.create(ClientboundPackets1_21_6.BUNDLE_DELIMITER, event.user());
|
||||
bundleStart.send(Protocol1_21_9To1_21_7.class);
|
||||
}
|
||||
|
||||
event.cancel();
|
||||
} else if (event.index() == 15) {
|
||||
event.setIndex(18);
|
||||
@@ -303,7 +485,30 @@ public final class EntityPacketRewriter1_21_9 extends EntityRewriter<Clientbound
|
||||
} else if (event.index() == 19) {
|
||||
event.cancel(); // Description
|
||||
}
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleEntityData(final int entityId, final List<EntityData> dataList, final UserConnection connection) {
|
||||
super.handleEntityData(entityId, dataList, connection);
|
||||
|
||||
final EntityTracker1_21_9 tracker = tracker(connection);
|
||||
final EntityType entityType = tracker.entityType(entityId);
|
||||
if (entityType == null || !entityType.isOrHasParent(EntityTypes1_21_9.MANNEQUIN)) {
|
||||
return;
|
||||
}
|
||||
|
||||
final MannequinData mannequinData = tracker.entity(entityId).data().get(MannequinData.class);
|
||||
if (mannequinData == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final List<EntityData> entityData = mannequinData.entityData();
|
||||
entityData.removeIf(first -> dataList.stream().anyMatch(second -> first.id() == second.id()));
|
||||
for (final EntityData data : dataList) {
|
||||
final Object value = data.value();
|
||||
entityData.add(new EntityData(data.id(), data.dataType(), Copyable.copy(value)));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+91
@@ -17,6 +17,14 @@
|
||||
*/
|
||||
package com.viaversion.viabackwards.protocol.v1_21_9to1_21_7.storage;
|
||||
|
||||
import com.viaversion.nbt.tag.Tag;
|
||||
import com.viaversion.viaversion.api.minecraft.entitydata.EntityData;
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public final class MannequinData {
|
||||
@@ -24,6 +32,22 @@ public final class MannequinData {
|
||||
private final String name;
|
||||
private boolean hasTeam;
|
||||
|
||||
|
||||
private double x;
|
||||
private double y;
|
||||
private double z;
|
||||
|
||||
// Packed values
|
||||
private byte yaw;
|
||||
private byte pitch;
|
||||
private byte headYaw;
|
||||
|
||||
private int[] passengers;
|
||||
|
||||
private final List<EntityData> entityData = new ArrayList<>();
|
||||
private final Map<Byte, Item> itemMap = new HashMap<>();
|
||||
private Tag displayName;
|
||||
|
||||
public MannequinData(final UUID uuid, final String name) {
|
||||
this.uuid = uuid;
|
||||
this.name = name;
|
||||
@@ -44,4 +68,71 @@ public final class MannequinData {
|
||||
public String name() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setPosition(final double x, final double y, final double z) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.z = z;
|
||||
}
|
||||
|
||||
public void setRotation(final byte yaw, final byte pitch) {
|
||||
this.yaw = yaw;
|
||||
this.pitch = pitch;
|
||||
}
|
||||
|
||||
public void setPassengers(final int[] passengers) {
|
||||
this.passengers = passengers;
|
||||
}
|
||||
|
||||
public double x() {
|
||||
return x;
|
||||
}
|
||||
|
||||
public double y() {
|
||||
return y;
|
||||
}
|
||||
|
||||
public double z() {
|
||||
return z;
|
||||
}
|
||||
|
||||
public byte yaw() {
|
||||
return yaw;
|
||||
}
|
||||
|
||||
public byte pitch() {
|
||||
return pitch;
|
||||
}
|
||||
|
||||
public List<EntityData> entityData() {
|
||||
return entityData;
|
||||
}
|
||||
|
||||
public int[] passengers() {
|
||||
return passengers;
|
||||
}
|
||||
|
||||
public void setDisplayName(Tag displayName) {
|
||||
this.displayName = displayName;
|
||||
}
|
||||
|
||||
public Tag displayName() {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
public void setEquipment(byte slot, Item item) {
|
||||
itemMap.put(slot, item);
|
||||
}
|
||||
|
||||
public Map<Byte, Item> itemMap() {
|
||||
return itemMap;
|
||||
}
|
||||
|
||||
public byte headYaw() {
|
||||
return headYaw;
|
||||
}
|
||||
|
||||
public void setHeadYaw(byte headYaw) {
|
||||
this.headYaw = headYaw;
|
||||
}
|
||||
}
|
||||
+3
@@ -92,10 +92,13 @@ public final class Protocol1_21To1_20_5 extends BackwardsProtocol<ClientboundPac
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21.SET_SUBTITLE_TEXT);
|
||||
translatableRewriter.registerBossEvent(ClientboundPackets1_21.BOSS_EVENT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21.DISCONNECT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundConfigurationPackets1_21.DISCONNECT);
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_21.TAB_LIST);
|
||||
translatableRewriter.registerSetPlayerTeam1_13(ClientboundPackets1_21.SET_PLAYER_TEAM);
|
||||
translatableRewriter.registerPlayerCombatKill1_20(ClientboundPackets1_21.PLAYER_COMBAT_KILL);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_21.SYSTEM_CHAT);
|
||||
translatableRewriter.registerSetObjective(ClientboundPackets1_21.SET_OBJECTIVE);
|
||||
translatableRewriter.registerSetScore1_20_3(ClientboundPackets1_21.SET_SCORE);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
// Format change we can't properly map - all this really results in is a desync one version earlier
|
||||
|
||||
Binary file not shown.
+1
-1
@@ -1,4 +1,4 @@
|
||||
projectVersion=5.6.0
|
||||
projectVersion=5.7.0
|
||||
|
||||
# Smile emoji (note that modrinth may not have added the version on release yet)
|
||||
mcVersions=1.21.11, 1.21.10, 1.21.9, 1.21.8, 1.21.7, 1.21.6, 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
|
||||
|
||||
@@ -3,7 +3,7 @@ metadata.format.version = "1.1"
|
||||
[versions]
|
||||
|
||||
# ViaVersion
|
||||
viaver = "5.6.0"
|
||||
viaver = "5.7.0"
|
||||
|
||||
# Common provided
|
||||
netty = "4.0.20.Final"
|
||||
@@ -16,7 +16,7 @@ checkerQual = "3.51.0"
|
||||
paper = "1.16.5-R0.1-SNAPSHOT"
|
||||
velocity = "3.1.1"
|
||||
fabricLoader = "0.11.6"
|
||||
viaProxy = "3.4.7-SNAPSHOT"
|
||||
viaProxy = "[3.0.0,4.0.0)"
|
||||
|
||||
[libraries]
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
},
|
||||
{
|
||||
"id": "viaversion",
|
||||
"version": "[5.6.0-SNAPSHOT,)"
|
||||
"version": "[5.7.0-SNAPSHOT,)"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user