Port to upstream changes
This commit is contained in:
parent
cd41e5cab3
commit
38580e328c
|
@ -14,16 +14,16 @@ maven_group=de.florianmichael
|
|||
archives_base_name=ViaFabricPlus
|
||||
|
||||
# ViaVersion Libraries
|
||||
viaversion_version=4.10.3-20240515.214803-2
|
||||
viabackwards_version=4.10.3-20240510.194921-1
|
||||
vialegacy_version=2.2.22
|
||||
viaaprilfools_version=2.0.12
|
||||
vialoader_version=2.2.13
|
||||
viaversion_version=5.0.0-SNAPSHOT
|
||||
viabackwards_version=5.0.0-SNAPSHOT
|
||||
vialegacy_version=3.0.0-SNAPSHOT
|
||||
viaaprilfools_version=3.0.0-SNAPSHOT
|
||||
vialoader_version=3.0.0-SNAPSHOT
|
||||
|
||||
# RaphiMC Libraries
|
||||
minecraftauth_version=4.0.0
|
||||
|
||||
viabedrock_version=0.0.7-SNAPSHOT
|
||||
viabedrock_version=0.0.8-SNAPSHOT
|
||||
raknet_transport_version=1.0.0.CR3-SNAPSHOT
|
||||
|
||||
# Lenni0451 Libraries
|
||||
|
|
|
@ -26,8 +26,9 @@ import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType;
|
|||
import com.viaversion.viaversion.api.protocol.packet.State;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPackets1_20_5;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundPackets1_20_5;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundPackets1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ServerboundPackets1_20_5;
|
||||
import com.viaversion.viaversion.util.Key;
|
||||
import net.minecraft.network.packet.BrandCustomPayload;
|
||||
import net.minecraft.network.packet.CustomPayload;
|
||||
|
@ -48,12 +49,12 @@ public class VFPProtocol extends AbstractSimpleProtocol {
|
|||
private final Map<String, Pair<ProtocolVersion, PacketReader>> payloadDiff = new HashMap<>();
|
||||
|
||||
public VFPProtocol() {
|
||||
registerMapping(BrandCustomPayload.ID, LegacyProtocolVersion.c0_0_15a_1, wrapper -> wrapper.passthrough(Type.STRING));
|
||||
registerMapping(BrandCustomPayload.ID, LegacyProtocolVersion.c0_0_15a_1, wrapper -> wrapper.passthrough(Types.STRING));
|
||||
registerMapping(DebugGameTestAddMarkerCustomPayload.ID, ProtocolVersion.v1_14, wrapper -> {
|
||||
wrapper.passthrough(Type.POSITION1_14);
|
||||
wrapper.passthrough(Type.INT);
|
||||
wrapper.passthrough(Type.STRING);
|
||||
wrapper.passthrough(Type.INT);
|
||||
wrapper.passthrough(Types.BLOCK_POSITION1_14);
|
||||
wrapper.passthrough(Types.INT);
|
||||
wrapper.passthrough(Types.STRING);
|
||||
wrapper.passthrough(Types.INT);
|
||||
});
|
||||
registerMapping(DebugGameTestClearCustomPayload.ID, ProtocolVersion.v1_14, wrapper -> {});
|
||||
}
|
||||
|
@ -61,7 +62,7 @@ public class VFPProtocol extends AbstractSimpleProtocol {
|
|||
@Override
|
||||
protected void registerPackets() {
|
||||
registerClientbound(State.PLAY, getPluginMessagePacket().getId(), getPluginMessagePacket().getId(), wrapper -> {
|
||||
final String channel = Key.namespaced(wrapper.passthrough(Type.STRING));
|
||||
final String channel = Key.namespaced(wrapper.passthrough(Types.STRING));
|
||||
if (!channel.startsWith(Identifier.DEFAULT_NAMESPACE)) {
|
||||
// Mods might add custom payloads that we don't want to filter, so we check for the namespace.
|
||||
// Mods should NEVER use the default namespace of the game, not only to not break this code,
|
||||
|
@ -83,7 +84,7 @@ public class VFPProtocol extends AbstractSimpleProtocol {
|
|||
final PacketReader reader = payloadDiff.get(channel).getRight();
|
||||
try {
|
||||
reader.read(wrapper);
|
||||
wrapper.read(Type.REMAINING_BYTES);
|
||||
wrapper.read(Types.REMAINING_BYTES);
|
||||
} catch (Exception ignored) {
|
||||
wrapper.cancel();
|
||||
}
|
||||
|
@ -96,11 +97,11 @@ public class VFPProtocol extends AbstractSimpleProtocol {
|
|||
}
|
||||
|
||||
public static ServerboundPacketType getCreativeInventoryActionPacket() {
|
||||
return ServerboundPackets1_20_5.CREATIVE_INVENTORY_ACTION;
|
||||
return ServerboundPackets1_20_5.SET_CREATIVE_MODE_SLOT;
|
||||
}
|
||||
|
||||
public static ClientboundPacketType getPluginMessagePacket() {
|
||||
return ClientboundPackets1_20_5.PLUGIN_MESSAGE;
|
||||
return ClientboundPackets1_20_5.CUSTOM_PAYLOAD;
|
||||
}
|
||||
|
||||
@FunctionalInterface
|
||||
|
|
|
@ -26,8 +26,9 @@ import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
|
|||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
|
||||
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_17;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag;
|
||||
import com.viaversion.nbt.tag.CompoundTag;
|
||||
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
|
||||
import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.model.ClassicLevel;
|
||||
import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.providers.ClassicWorldHeightProvider;
|
||||
|
@ -45,10 +46,10 @@ public class WorldHeightSupport {
|
|||
if (wrapper.isCancelled()) return;
|
||||
|
||||
if (wrapper.user().getProtocolInfo().serverProtocolVersion().olderThanOrEqualTo(LegacyProtocolVersion.c0_28toc0_30)) {
|
||||
for (CompoundTag dimension : wrapper.get(Type.NAMED_COMPOUND_TAG, 0).getCompoundTag("minecraft:dimension_type").getListTag("value", CompoundTag.class)) {
|
||||
for (CompoundTag dimension : wrapper.get(Types.NAMED_COMPOUND_TAG, 0).getCompoundTag("minecraft:dimension_type").getListTag("value", CompoundTag.class)) {
|
||||
changeDimensionTagHeight(wrapper.user(), dimension.getCompoundTag("element"));
|
||||
}
|
||||
changeDimensionTagHeight(wrapper.user(), wrapper.get(Type.NAMED_COMPOUND_TAG, 1));
|
||||
changeDimensionTagHeight(wrapper.user(), wrapper.get(Types.NAMED_COMPOUND_TAG, 1));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -59,7 +60,7 @@ public class WorldHeightSupport {
|
|||
if (wrapper.isCancelled()) return;
|
||||
|
||||
if (wrapper.user().getProtocolInfo().serverProtocolVersion().olderThanOrEqualTo(LegacyProtocolVersion.c0_28toc0_30)) {
|
||||
changeDimensionTagHeight(wrapper.user(), wrapper.get(Type.NAMED_COMPOUND_TAG, 0));
|
||||
changeDimensionTagHeight(wrapper.user(), wrapper.get(Types.NAMED_COMPOUND_TAG, 0));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -103,14 +104,14 @@ public class WorldHeightSupport {
|
|||
final PacketHandler classicLightHandler = new PacketHandlers() {
|
||||
@Override
|
||||
public void register() {
|
||||
map(Type.VAR_INT); // x
|
||||
map(Type.VAR_INT); // y
|
||||
map(Type.BOOLEAN); // trust edges
|
||||
map(Types.VAR_INT); // x
|
||||
map(Types.VAR_INT); // y
|
||||
map(Types.BOOLEAN); // trust edges
|
||||
handler(wrapper -> {
|
||||
wrapper.read(Type.VAR_INT); // sky light mask
|
||||
wrapper.read(Type.VAR_INT); // block light mask
|
||||
final int emptySkyLightMask = wrapper.read(Type.VAR_INT); // empty sky light mask
|
||||
final int emptyBlockLightMask = wrapper.read(Type.VAR_INT); // empty block light mask
|
||||
wrapper.read(Types.VAR_INT); // sky light mask
|
||||
wrapper.read(Types.VAR_INT); // block light mask
|
||||
final int emptySkyLightMask = wrapper.read(Types.VAR_INT); // empty sky light mask
|
||||
final int emptyBlockLightMask = wrapper.read(Types.VAR_INT); // empty block light mask
|
||||
|
||||
final ClassicLevel level = wrapper.user().get(ClassicLevelStorage.class).getClassicLevel();
|
||||
final ClassicWorldHeightProvider heightProvider = Via.getManager().getProviders().get(ClassicWorldHeightProvider.class);
|
||||
|
@ -122,8 +123,8 @@ public class WorldHeightSupport {
|
|||
}
|
||||
|
||||
final List<byte[]> lightArrays = new ArrayList<>();
|
||||
while (wrapper.isReadable(Type.BYTE_ARRAY_PRIMITIVE, 0)) {
|
||||
lightArrays.add(wrapper.read(Type.BYTE_ARRAY_PRIMITIVE));
|
||||
while (wrapper.isReadable(Types.BYTE_ARRAY_PRIMITIVE, 0)) {
|
||||
lightArrays.add(wrapper.read(Types.BYTE_ARRAY_PRIMITIVE));
|
||||
}
|
||||
|
||||
int skyLightCount = 16;
|
||||
|
@ -141,18 +142,18 @@ public class WorldHeightSupport {
|
|||
skyLightMask.set(0, skyLightCount);
|
||||
blockLightMask.set(0, blockLightCount);
|
||||
|
||||
wrapper.write(Type.LONG_ARRAY_PRIMITIVE, skyLightMask.toLongArray());
|
||||
wrapper.write(Type.LONG_ARRAY_PRIMITIVE, blockLightMask.toLongArray());
|
||||
wrapper.write(Type.LONG_ARRAY_PRIMITIVE, new long[emptySkyLightMask]);
|
||||
wrapper.write(Type.LONG_ARRAY_PRIMITIVE, new long[emptyBlockLightMask]);
|
||||
wrapper.write(Types.LONG_ARRAY_PRIMITIVE, skyLightMask.toLongArray());
|
||||
wrapper.write(Types.LONG_ARRAY_PRIMITIVE, blockLightMask.toLongArray());
|
||||
wrapper.write(Types.LONG_ARRAY_PRIMITIVE, new long[emptySkyLightMask]);
|
||||
wrapper.write(Types.LONG_ARRAY_PRIMITIVE, new long[emptyBlockLightMask]);
|
||||
|
||||
wrapper.write(Type.VAR_INT, skyLightCount);
|
||||
wrapper.write(Types.VAR_INT, skyLightCount);
|
||||
for (int i = 0; i < skyLightCount; i++) {
|
||||
wrapper.write(Type.BYTE_ARRAY_PRIMITIVE, lightArrays.remove(0));
|
||||
wrapper.write(Types.BYTE_ARRAY_PRIMITIVE, lightArrays.remove(0));
|
||||
}
|
||||
wrapper.write(Type.VAR_INT, blockLightCount);
|
||||
wrapper.write(Types.VAR_INT, blockLightCount);
|
||||
for (int i = 0; i < blockLightCount; i++) {
|
||||
wrapper.write(Type.BYTE_ARRAY_PRIMITIVE, lightArrays.remove(0));
|
||||
wrapper.write(Types.BYTE_ARRAY_PRIMITIVE, lightArrays.remove(0));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ import net.minecraft.util.Formatting;
|
|||
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
|
||||
import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.storage.ExtensionProtocolMetadataStorage;
|
||||
|
||||
public class ListExtensionsCommand extends VFPViaSubCommand {
|
||||
public class ListExtensionsCommand implements VFPViaSubCommand {
|
||||
|
||||
@Override
|
||||
public String name() {
|
||||
|
|
|
@ -25,7 +25,7 @@ import net.minecraft.util.Formatting;
|
|||
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
|
||||
import net.raphimc.vialegacy.protocols.alpha.protocola1_0_17_1_0_17_4toa1_0_16_2.storage.TimeLockStorage;
|
||||
|
||||
public class SetTimeCommand extends VFPViaSubCommand {
|
||||
public class SetTimeCommand implements VFPViaSubCommand {
|
||||
|
||||
@Override
|
||||
public String name() {
|
||||
|
|
|
@ -21,10 +21,10 @@ package de.florianmichael.viafabricplus.fixes.versioned.visual;
|
|||
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.ArmorType;
|
||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9;
|
||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.protocols.v1_8to1_9.Protocol1_8To1_9;
|
||||
import com.viaversion.viaversion.protocols.v1_8to1_9.data.ArmorTypes1_8;
|
||||
import com.viaversion.viaversion.protocols.v1_8to1_9.packet.ClientboundPackets1_9;
|
||||
import de.florianmichael.viafabricplus.ViaFabricPlus;
|
||||
import de.florianmichael.viafabricplus.protocoltranslator.ProtocolTranslator;
|
||||
import de.florianmichael.viafabricplus.settings.impl.VisualSettings;
|
||||
|
@ -62,11 +62,11 @@ public class ArmorHudEmulation1_8 {
|
|||
});
|
||||
}
|
||||
|
||||
private static void sendArmorUpdate(final UserConnection userConnection) throws Exception {
|
||||
private static void sendArmorUpdate(final UserConnection userConnection) {
|
||||
// Calculate the armor points.
|
||||
int armor = 0;
|
||||
for (final ItemStack stack : MinecraftClient.getInstance().player.getInventory().armor) {
|
||||
armor += ArmorType.findByType(Registries.ITEM.getId(stack.getItem()).toString()).getArmorPoints();
|
||||
armor += ArmorTypes1_8.findByType(Registries.ITEM.getId(stack.getItem()).toString()).getArmorPoints();
|
||||
}
|
||||
|
||||
// We only want to update the armor points if they actually changed.
|
||||
|
@ -75,16 +75,16 @@ public class ArmorHudEmulation1_8 {
|
|||
}
|
||||
previousArmorPoints = armor;
|
||||
|
||||
final PacketWrapper entityProperties = PacketWrapper.create(ClientboundPackets1_9.ENTITY_PROPERTIES, userConnection);
|
||||
entityProperties.write(Type.VAR_INT, MinecraftClient.getInstance().player.getId());
|
||||
entityProperties.write(Type.INT, 1);
|
||||
entityProperties.write(Type.STRING, "generic.armor");
|
||||
entityProperties.write(Type.DOUBLE, 0.0D);
|
||||
entityProperties.write(Type.VAR_INT, 1);
|
||||
entityProperties.write(Type.UUID, ARMOR_POINTS_UUID);
|
||||
entityProperties.write(Type.DOUBLE, (double) armor);
|
||||
entityProperties.write(Type.BYTE, (byte) 0);
|
||||
entityProperties.scheduleSend(Protocol1_9To1_8.class);
|
||||
final PacketWrapper entityProperties = PacketWrapper.create(ClientboundPackets1_9.UPDATE_ATTRIBUTES, userConnection);
|
||||
entityProperties.write(Types.VAR_INT, MinecraftClient.getInstance().player.getId());
|
||||
entityProperties.write(Types.INT, 1);
|
||||
entityProperties.write(Types.STRING, "generic.armor");
|
||||
entityProperties.write(Types.DOUBLE, 0.0D);
|
||||
entityProperties.write(Types.VAR_INT, 1);
|
||||
entityProperties.write(Types.UUID, ARMOR_POINTS_UUID);
|
||||
entityProperties.write(Types.DOUBLE, (double) armor);
|
||||
entityProperties.write(Types.BYTE, (byte) 0);
|
||||
entityProperties.scheduleSend(Protocol1_8To1_9.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -23,9 +23,9 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
|
|||
import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.Protocol1_12To1_11_1;
|
||||
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.protocols.v1_11_1to1_12.Protocol1_11_1To1_12;
|
||||
import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ServerboundPackets1_9_3;
|
||||
import de.florianmichael.viafabricplus.fixes.data.ItemRegistryDiff;
|
||||
import de.florianmichael.viafabricplus.injection.access.IMouseKeyboard;
|
||||
import de.florianmichael.viafabricplus.protocoltranslator.ProtocolTranslator;
|
||||
|
@ -122,9 +122,9 @@ public abstract class MixinMinecraftClient {
|
|||
@Inject(method = "handleInputEvents", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/tutorial/TutorialManager;onInventoryOpened()V", shift = At.Shift.AFTER))
|
||||
private void sendOpenInventoryPacket(CallbackInfo ci) throws Exception {
|
||||
if (DebugSettings.global().sendOpenInventoryPacket.isEnabled()) {
|
||||
final PacketWrapper clientStatus = PacketWrapper.create(ServerboundPackets1_9_3.CLIENT_STATUS, ProtocolTranslator.getPlayNetworkUserConnection());
|
||||
clientStatus.write(Type.VAR_INT, 2); // Open Inventory Achievement
|
||||
clientStatus.scheduleSendToServer(Protocol1_12To1_11_1.class);
|
||||
final PacketWrapper clientStatus = PacketWrapper.create(ServerboundPackets1_9_3.CLIENT_COMMAND, ProtocolTranslator.getPlayNetworkUserConnection());
|
||||
clientStatus.write(Types.VAR_INT, 2); // Open Inventory Achievement
|
||||
clientStatus.scheduleSendToServer(Protocol1_11_1To1_12.class);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
|
|||
import com.mojang.authlib.GameProfile;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import de.florianmichael.viafabricplus.injection.access.IClientConnection;
|
||||
import de.florianmichael.viafabricplus.protocoltranslator.ProtocolTranslator;
|
||||
import de.florianmichael.viafabricplus.settings.impl.DebugSettings;
|
||||
|
@ -217,16 +217,16 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity
|
|||
}
|
||||
|
||||
@Redirect(method = "tick", slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;hasVehicle()Z")), at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;sendPacket(Lnet/minecraft/network/packet/Packet;)V", ordinal = 0))
|
||||
private void modifyPositionPacket(ClientPlayNetworkHandler instance, Packet<?> packet) throws Exception {
|
||||
private void modifyPositionPacket(ClientPlayNetworkHandler instance, Packet<?> packet) {
|
||||
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(LegacyProtocolVersion.r1_5_2)) {
|
||||
final PacketWrapper playerPosition = PacketWrapper.create(ServerboundPackets1_5_2.PLAYER_POSITION_AND_ROTATION, ((IClientConnection) this.networkHandler.getConnection()).viaFabricPlus$getUserConnection());
|
||||
playerPosition.write(Type.DOUBLE, this.getVelocity().x); // x
|
||||
playerPosition.write(Type.DOUBLE, -999.0D); // y
|
||||
playerPosition.write(Type.DOUBLE, -999.0D); // stance
|
||||
playerPosition.write(Type.DOUBLE, this.getVelocity().z); // z
|
||||
playerPosition.write(Type.FLOAT, this.getYaw()); // yaw
|
||||
playerPosition.write(Type.FLOAT, this.getPitch()); // pitch
|
||||
playerPosition.write(Type.BOOLEAN, this.isOnGround()); // onGround
|
||||
final PacketWrapper playerPosition = PacketWrapper.create(ServerboundPackets1_5_2.MOVE_PLAYER_POS_ROT, ((IClientConnection) this.networkHandler.getConnection()).viaFabricPlus$getUserConnection());
|
||||
playerPosition.write(Types.DOUBLE, this.getVelocity().x); // x
|
||||
playerPosition.write(Types.DOUBLE, -999.0D); // y
|
||||
playerPosition.write(Types.DOUBLE, -999.0D); // stance
|
||||
playerPosition.write(Types.DOUBLE, this.getVelocity().z); // z
|
||||
playerPosition.write(Types.FLOAT, this.getYaw()); // yaw
|
||||
playerPosition.write(Types.FLOAT, this.getPitch()); // pitch
|
||||
playerPosition.write(Types.BOOLEAN, this.isOnGround()); // onGround
|
||||
playerPosition.scheduleSendToServer(Protocol1_6_1to1_5_2.class);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.network;
|
||||
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.storage.InventoryAcknowledgements;
|
||||
import com.viaversion.viaversion.protocols.v1_16_4to1_17.storage.InventoryAcknowledgements;
|
||||
import de.florianmichael.viafabricplus.fixes.ClientsideFixes;
|
||||
import de.florianmichael.viafabricplus.injection.access.IClientConnection;
|
||||
import de.florianmichael.viafabricplus.protocoltranslator.ProtocolTranslator;
|
||||
|
|
|
@ -23,9 +23,9 @@ import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
|
|||
import com.llamalad7.mixinextras.sugar.Local;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ServerboundPackets1_16_2;
|
||||
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.Protocol1_17To1_16_4;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ServerboundPackets1_16_2;
|
||||
import com.viaversion.viaversion.protocols.v1_16_4to1_17.Protocol1_16_4To1_17;
|
||||
import de.florianmichael.viafabricplus.fixes.versioned.ActionResultException1_12_2;
|
||||
import de.florianmichael.viafabricplus.fixes.versioned.ClientPlayerInteractionManager1_18_2;
|
||||
import de.florianmichael.viafabricplus.injection.access.IClientConnection;
|
||||
|
@ -142,7 +142,7 @@ public abstract class MixinClientPlayerInteractionManager implements IClientPlay
|
|||
}
|
||||
|
||||
@WrapWithCondition(method = "clickSlot", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;sendPacket(Lnet/minecraft/network/packet/Packet;)V"))
|
||||
private boolean handleWindowClick1_16_5(ClientPlayNetworkHandler instance, Packet<?> packet) throws Exception {
|
||||
private boolean handleWindowClick1_16_5(ClientPlayNetworkHandler instance, Packet<?> packet) {
|
||||
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_16_4) && packet instanceof ClickSlotC2SPacket clickSlot) {
|
||||
ItemStack slotItemBeforeModification;
|
||||
if (this.viaFabricPlus$shouldBeEmpty(clickSlot.getActionType(), clickSlot.getSlot())) {
|
||||
|
@ -153,14 +153,14 @@ public abstract class MixinClientPlayerInteractionManager implements IClientPlay
|
|||
slotItemBeforeModification = viaFabricPlus$oldItems.get(clickSlot.getSlot());
|
||||
}
|
||||
|
||||
final PacketWrapper clickWindowPacket = PacketWrapper.create(ServerboundPackets1_16_2.CLICK_WINDOW, ((IClientConnection) networkHandler.getConnection()).viaFabricPlus$getUserConnection());
|
||||
clickWindowPacket.write(Type.UNSIGNED_BYTE, (short) clickSlot.getSyncId());
|
||||
clickWindowPacket.write(Type.SHORT, (short) clickSlot.getSlot());
|
||||
clickWindowPacket.write(Type.BYTE, (byte) clickSlot.getButton());
|
||||
clickWindowPacket.write(Type.SHORT, ((IScreenHandler) client.player.currentScreenHandler).viaFabricPlus$incrementAndGetActionId());
|
||||
clickWindowPacket.write(Type.VAR_INT, clickSlot.getActionType().ordinal());
|
||||
clickWindowPacket.write(Type.ITEM1_13_2, ItemTranslator.mcToVia(slotItemBeforeModification, ProtocolVersion.v1_16_4));
|
||||
clickWindowPacket.scheduleSendToServer(Protocol1_17To1_16_4.class);
|
||||
final PacketWrapper clickWindowPacket = PacketWrapper.create(ServerboundPackets1_16_2.CONTAINER_CLICK, ((IClientConnection) networkHandler.getConnection()).viaFabricPlus$getUserConnection());
|
||||
clickWindowPacket.write(Types.UNSIGNED_BYTE, (short) clickSlot.getSyncId());
|
||||
clickWindowPacket.write(Types.SHORT, (short) clickSlot.getSlot());
|
||||
clickWindowPacket.write(Types.BYTE, (byte) clickSlot.getButton());
|
||||
clickWindowPacket.write(Types.SHORT, ((IScreenHandler) client.player.currentScreenHandler).viaFabricPlus$incrementAndGetActionId());
|
||||
clickWindowPacket.write(Types.VAR_INT, clickSlot.getActionType().ordinal());
|
||||
clickWindowPacket.write(Types.ITEM1_13_2, ItemTranslator.mcToVia(slotItemBeforeModification, ProtocolVersion.v1_16_4));
|
||||
clickWindowPacket.scheduleSendToServer(Protocol1_16_4To1_17.class);
|
||||
|
||||
viaFabricPlus$oldCursorStack = null;
|
||||
viaFabricPlus$oldItems = null;
|
||||
|
|
|
@ -22,9 +22,9 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.vialegacy;
|
|||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8;
|
||||
import com.viaversion.viaversion.protocols.protocol1_8.ServerboundPackets1_8;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.protocols.v1_8to1_9.packet.ClientboundPackets1_8;
|
||||
import com.viaversion.viaversion.protocols.v1_8to1_9.packet.ServerboundPackets1_8;
|
||||
import de.florianmichael.viafabricplus.fixes.tracker.TeleportTracker;
|
||||
import net.raphimc.vialegacy.protocols.release.protocol1_7_6_10to1_7_2_5.ClientboundPackets1_7_2;
|
||||
import net.raphimc.vialegacy.protocols.release.protocol1_7_6_10to1_7_2_5.ServerboundPackets1_7_2;
|
||||
|
@ -42,38 +42,38 @@ public abstract class MixinProtocol1_8to1_7_6_10 extends AbstractProtocol<Client
|
|||
this.registerClientbound(ClientboundPackets1_7_2.PLAYER_POSITION, ClientboundPackets1_8.PLAYER_POSITION, new PacketHandlers() {
|
||||
@Override
|
||||
public void register() {
|
||||
map(Type.DOUBLE); // x
|
||||
map(Type.DOUBLE, Type.DOUBLE, stance -> stance - 1.62F); // y
|
||||
map(Type.DOUBLE); // z
|
||||
map(Type.FLOAT); // yaw
|
||||
map(Type.FLOAT); // pitch
|
||||
map(Types.DOUBLE); // x
|
||||
map(Types.DOUBLE, Types.DOUBLE, stance -> stance - 1.62F); // y
|
||||
map(Types.DOUBLE); // z
|
||||
map(Types.FLOAT); // yaw
|
||||
map(Types.FLOAT); // pitch
|
||||
handler(wrapper -> {
|
||||
final boolean onGround = wrapper.read(Type.BOOLEAN); // On Ground
|
||||
final boolean onGround = wrapper.read(Types.BOOLEAN); // On Ground
|
||||
final TeleportTracker teleportTracker = wrapper.user().get(TeleportTracker.class);
|
||||
if (teleportTracker != null) {
|
||||
teleportTracker.setPending(onGround);
|
||||
}
|
||||
|
||||
wrapper.write(Type.BYTE, (byte) 0); // flags
|
||||
wrapper.write(Types.BYTE, (byte) 0); // flags
|
||||
});
|
||||
}
|
||||
}, true);
|
||||
this.registerServerbound(ServerboundPackets1_8.PLAYER_POSITION_AND_ROTATION, ServerboundPackets1_7_2.PLAYER_POSITION_AND_ROTATION, new PacketHandlers() {
|
||||
this.registerServerbound(ServerboundPackets1_8.MOVE_PLAYER_POS_ROT, ServerboundPackets1_7_2.MOVE_PLAYER_POS_ROT, new PacketHandlers() {
|
||||
@Override
|
||||
public void register() {
|
||||
map(Type.DOUBLE); // x
|
||||
map(Type.DOUBLE); // y
|
||||
handler(wrapper -> wrapper.write(Type.DOUBLE, wrapper.get(Type.DOUBLE, 1) + 1.62)); // stance
|
||||
map(Type.DOUBLE); // z
|
||||
map(Type.FLOAT); // yaw
|
||||
map(Type.FLOAT); // pitch
|
||||
map(Type.BOOLEAN); // onGround
|
||||
map(Types.DOUBLE); // x
|
||||
map(Types.DOUBLE); // y
|
||||
handler(wrapper -> wrapper.write(Types.DOUBLE, wrapper.get(Types.DOUBLE, 1) + 1.62)); // stance
|
||||
map(Types.DOUBLE); // z
|
||||
map(Types.FLOAT); // yaw
|
||||
map(Types.FLOAT); // pitch
|
||||
map(Types.BOOLEAN); // onGround
|
||||
handler(wrapper -> {
|
||||
final TeleportTracker teleportTracker = wrapper.user().get(TeleportTracker.class);
|
||||
if (teleportTracker != null) {
|
||||
Boolean pendingTeleport = teleportTracker.getPending();
|
||||
if (pendingTeleport != null) {
|
||||
wrapper.set(Type.BOOLEAN, 0, pendingTeleport);
|
||||
wrapper.set(Types.BOOLEAN, 0, pendingTeleport);
|
||||
teleportTracker.setPending(null);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,9 +22,9 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.vialegacy;
|
|||
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ClientboundPackets1_19_4;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.Protocol1_19_4To1_19_3;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.Protocol1_19_3To1_19_4;
|
||||
import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ClientboundPackets1_19_4;
|
||||
import de.florianmichael.viafabricplus.fixes.versioned.classic.CPEAdditions;
|
||||
import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.ClientboundPacketsc0_28;
|
||||
import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.ServerboundPacketsc0_28;
|
||||
|
@ -46,18 +46,18 @@ public abstract class MixinProtocolc0_30toc0_30cpe extends AbstractProtocol<Clie
|
|||
public void register() {
|
||||
handler(wrapper -> {
|
||||
wrapper.cancel();
|
||||
final byte weatherType = wrapper.read(Type.BYTE);
|
||||
final byte weatherType = wrapper.read(Types.BYTE);
|
||||
|
||||
final PacketWrapper changeRainState = PacketWrapper.create(ClientboundPackets1_19_4.GAME_EVENT, wrapper.user());
|
||||
changeRainState.write(Type.BYTE, weatherType == 0 /* sunny */ ? (byte) 2 : (byte) 1); // start raining
|
||||
changeRainState.write(Type.FLOAT, 0F); // unused
|
||||
changeRainState.send(Protocol1_19_4To1_19_3.class);
|
||||
changeRainState.write(Types.UNSIGNED_BYTE, weatherType == 0 /* sunny */ ? (short) 2 : (short) 1); // start raining
|
||||
changeRainState.write(Types.FLOAT, 0F); // unused
|
||||
changeRainState.send(Protocol1_19_3To1_19_4.class);
|
||||
|
||||
if (weatherType == 1 /* raining */ || weatherType == 2 /* snowing */) {
|
||||
final PacketWrapper changeRainType = PacketWrapper.create(ClientboundPackets1_19_4.GAME_EVENT, wrapper.user());
|
||||
changeRainType.write(Type.BYTE, (byte) 7);
|
||||
changeRainType.write(Type.FLOAT, weatherType == 1 /* raining */ ? 0F : 1F);
|
||||
changeRainType.send(Protocol1_19_4To1_19_3.class);
|
||||
changeRainType.write(Types.UNSIGNED_BYTE, (short) 7);
|
||||
changeRainType.write(Types.FLOAT, weatherType == 1 /* raining */ ? 0F : 1F);
|
||||
changeRainType.send(Protocol1_19_3To1_19_4.class);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -35,10 +35,10 @@ import com.viaversion.viaversion.libs.fastutil.ints.IntSet;
|
|||
import com.viaversion.viaversion.libs.gson.JsonArray;
|
||||
import com.viaversion.viaversion.libs.gson.JsonElement;
|
||||
import com.viaversion.viaversion.libs.gson.JsonObject;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPacket1_20_3;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.Protocol1_20_5To1_20_3;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundPacket1_20_5;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.rewriter.BlockItemPacketRewriter1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundPacket1_20_3;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.Protocol1_20_3To1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ServerboundPacket1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.rewriter.BlockItemPacketRewriter1_20_5;
|
||||
import com.viaversion.viaversion.rewriter.ItemRewriter;
|
||||
import de.florianmichael.viafabricplus.event.PostViaVersionLoadCallback;
|
||||
import de.florianmichael.viafabricplus.protocoltranslator.impl.ViaFabricPlusMappingDataLoader;
|
||||
|
@ -53,7 +53,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|||
import java.util.*;
|
||||
|
||||
@Mixin(value = BlockItemPacketRewriter1_20_5.class, remap = false)
|
||||
public abstract class MixinBlockItemPacketRewriter1_20_5 extends ItemRewriter<ClientboundPacket1_20_3, ServerboundPacket1_20_5, Protocol1_20_5To1_20_3> {
|
||||
public abstract class MixinBlockItemPacketRewriter1_20_5 extends ItemRewriter<ClientboundPacket1_20_3, ServerboundPacket1_20_5, Protocol1_20_3To1_20_5> {
|
||||
|
||||
@Unique
|
||||
private final Set<String> viaFabricPlus$foodItems_b1_7_3 = new HashSet<>();
|
||||
|
@ -67,12 +67,12 @@ public abstract class MixinBlockItemPacketRewriter1_20_5 extends ItemRewriter<Cl
|
|||
@Unique
|
||||
private final Map<ProtocolVersion, Map<String, ToolProperties>> viaFabricPlus$toolDataChanges = new LinkedHashMap<>();
|
||||
|
||||
public MixinBlockItemPacketRewriter1_20_5(Protocol1_20_5To1_20_3 protocol, Type<Item> itemType, Type<Item[]> itemArrayType, Type<Item> mappedItemType, Type<Item[]> mappedItemArrayType) {
|
||||
public MixinBlockItemPacketRewriter1_20_5(Protocol1_20_3To1_20_5 protocol, Type<Item> itemType, Type<Item[]> itemArrayType, Type<Item> mappedItemType, Type<Item[]> mappedItemArrayType) {
|
||||
super(protocol, itemType, itemArrayType, mappedItemType, mappedItemArrayType);
|
||||
}
|
||||
|
||||
@Inject(method = "<init>", at = @At("RETURN"))
|
||||
public void loadItemMappings(Protocol1_20_5To1_20_3 protocol, CallbackInfo ci) {
|
||||
public void loadItemMappings(Protocol1_20_3To1_20_5 protocol, CallbackInfo ci) {
|
||||
// Technically it would be cleaner to split mapping loading into there respective protocols, but that will be impossible
|
||||
// in a clean way, so let's just wait for Via* to load all protocols and then load everything in here.
|
||||
this.viaFabricPlus$foodItems_b1_7_3.add("minecraft:apple");
|
||||
|
@ -134,33 +134,33 @@ public abstract class MixinBlockItemPacketRewriter1_20_5 extends ItemRewriter<Cl
|
|||
// Older servers don't have these components, so we can use them to emulate old item behaviour without the need
|
||||
// of modifying tons of code in the game.
|
||||
@Inject(method = "toStructuredItem", at = @At("RETURN"))
|
||||
private void appendItemDataFixComponents(UserConnection connection, Item old, CallbackInfoReturnable<Item> cir) {
|
||||
private void appendItemDataFixComponents(UserConnection user, Item old, CallbackInfoReturnable<Item> cir) {
|
||||
final StructuredDataContainer data = cir.getReturnValue().structuredData();
|
||||
final String identifier = this.protocol.getMappingData().getFullItemMappings().identifier(cir.getReturnValue().identifier());
|
||||
|
||||
// Fix damage bar being displayed wrong
|
||||
if (connection.getProtocolInfo().serverProtocolVersion().olderThanOrEqualTo(ProtocolVersion.v1_17_1)) {
|
||||
if (user.getProtocolInfo().serverProtocolVersion().olderThanOrEqualTo(ProtocolVersion.v1_17_1)) {
|
||||
if (identifier.equals("minecraft:crossbow")) {
|
||||
data.set(StructuredDataKey.MAX_DAMAGE, 326);
|
||||
}
|
||||
}
|
||||
|
||||
// Add item blocking by make the sword eatable, counterpart in MixinSwordItem
|
||||
if (connection.getProtocolInfo().serverProtocolVersion().betweenInclusive(LegacyProtocolVersion.b1_8tob1_8_1, ProtocolVersion.v1_8)) {
|
||||
if (user.getProtocolInfo().serverProtocolVersion().betweenInclusive(LegacyProtocolVersion.b1_8tob1_8_1, ProtocolVersion.v1_8)) {
|
||||
if (this.viaFabricPlus$swordItems1_8.contains(identifier)) {
|
||||
data.set(StructuredDataKey.FOOD, new FoodProperties(0, 0F, true, 3600, new FoodEffect[0]));
|
||||
}
|
||||
}
|
||||
|
||||
// Fix durability tooltip displaying wrong
|
||||
if (connection.getProtocolInfo().serverProtocolVersion().olderThanOrEqualTo(LegacyProtocolVersion.b1_8tob1_8_1)) {
|
||||
if (user.getProtocolInfo().serverProtocolVersion().olderThanOrEqualTo(LegacyProtocolVersion.b1_8tob1_8_1)) {
|
||||
if (this.viaFabricPlus$armorMaxDamage_b1_8_1.containsKey(identifier)) {
|
||||
data.set(StructuredDataKey.MAX_DAMAGE, this.viaFabricPlus$armorMaxDamage_b1_8_1.get(identifier));
|
||||
}
|
||||
}
|
||||
|
||||
// Fix item desyncs
|
||||
if (connection.getProtocolInfo().serverProtocolVersion().olderThanOrEqualTo(LegacyProtocolVersion.b1_7tob1_7_3)) {
|
||||
if (user.getProtocolInfo().serverProtocolVersion().olderThanOrEqualTo(LegacyProtocolVersion.b1_7tob1_7_3)) {
|
||||
if (this.viaFabricPlus$foodItems_b1_7_3.contains(identifier)) {
|
||||
data.set(StructuredDataKey.MAX_STACK_SIZE, 1);
|
||||
data.addEmpty(StructuredDataKey.FOOD);
|
||||
|
@ -169,7 +169,7 @@ public abstract class MixinBlockItemPacketRewriter1_20_5 extends ItemRewriter<Cl
|
|||
|
||||
// Tool data changes include mining speeds as well as suitable blocks and damage values
|
||||
for (Map.Entry<ProtocolVersion, Map<String, ToolProperties>> entry : this.viaFabricPlus$toolDataChanges.entrySet()) {
|
||||
if (connection.getProtocolInfo().serverProtocolVersion().olderThanOrEqualTo(entry.getKey())) {
|
||||
if (user.getProtocolInfo().serverProtocolVersion().olderThanOrEqualTo(entry.getKey())) {
|
||||
final ToolProperties toolProperties = entry.getValue().get(identifier);
|
||||
if (toolProperties != null) {
|
||||
data.set(StructuredDataKey.TOOL, toolProperties);
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.CommandBlockProvider;
|
||||
import com.viaversion.viaversion.protocols.v1_8to1_9.provider.CommandBlockProvider;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.Constant;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyConstant;
|
||||
|
|
|
@ -20,17 +20,17 @@
|
|||
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.ByteTag;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag;
|
||||
import com.viaversion.viaversion.protocols.protocol1_11to1_10.rewriter.EntityIdRewriter;
|
||||
import com.viaversion.nbt.tag.ByteTag;
|
||||
import com.viaversion.nbt.tag.CompoundTag;
|
||||
import com.viaversion.viaversion.protocols.v1_10to1_11.data.EntityMappings1_11;
|
||||
import de.florianmichael.viafabricplus.fixes.ClientsideFixes;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(value = EntityIdRewriter.class, remap = false)
|
||||
public abstract class MixinEntityIdRewriter {
|
||||
@Mixin(value = EntityMappings1_11.class, remap = false)
|
||||
public abstract class MixinEntityMappings1_11 {
|
||||
|
||||
@Inject(method = "toClientItem(Lcom/viaversion/viaversion/api/minecraft/item/Item;Z)V", at = @At("HEAD"))
|
||||
private static void handleNegativeItemCountS2C(Item item, boolean backwards, CallbackInfo ci) {
|
||||
|
@ -50,7 +50,7 @@ public abstract class MixinEntityIdRewriter {
|
|||
private static void handleNegativeItemCountC2S(Item item, boolean backwards, CallbackInfo ci) {
|
||||
if (item != null && item.tag() != null) {
|
||||
if (item.tag().contains(ClientsideFixes.ITEM_COUNT_FIX_KEY)) {
|
||||
item.setAmount(item.tag().<ByteTag>remove(ClientsideFixes.ITEM_COUNT_FIX_KEY).asByte());
|
||||
item.setAmount(item.tag().<ByteTag>removeUnchecked(ClientsideFixes.ITEM_COUNT_FIX_KEY).asByte());
|
||||
if (item.tag().isEmpty()) item.setTag(null);
|
||||
}
|
||||
}
|
|
@ -19,25 +19,25 @@
|
|||
|
||||
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.protocols.protocol1_14_4to1_14_3.ClientboundPackets1_14_4;
|
||||
import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.Protocol1_15To1_14_4;
|
||||
import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.metadata.MetadataRewriter1_15To1_14_4;
|
||||
import com.viaversion.viaversion.protocols.v1_14_3to1_14_4.packet.ClientboundPackets1_14_4;
|
||||
import com.viaversion.viaversion.protocols.v1_14_4to1_15.Protocol1_14_4To1_15;
|
||||
import com.viaversion.viaversion.protocols.v1_14_4to1_15.rewriter.EntityPacketRewriter1_15;
|
||||
import com.viaversion.viaversion.rewriter.EntityRewriter;
|
||||
import com.viaversion.viaversion.rewriter.meta.MetaFilter;
|
||||
import com.viaversion.viaversion.rewriter.entitydata.EntityDataFilter;
|
||||
import de.florianmichael.viafabricplus.fixes.tracker.WolfHealthTracker;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
@Mixin(value = MetadataRewriter1_15To1_14_4.class, remap = false)
|
||||
public abstract class MixinMetadataRewriter1_15To1_14_4 extends EntityRewriter<ClientboundPackets1_14_4, Protocol1_15To1_14_4> {
|
||||
@Mixin(value = EntityPacketRewriter1_15.class, remap = false)
|
||||
public abstract class MixinEntityPacketRewriter1_15 extends EntityRewriter<ClientboundPackets1_14_4, Protocol1_14_4To1_15> {
|
||||
|
||||
public MixinMetadataRewriter1_15To1_14_4(Protocol1_15To1_14_4 protocol) {
|
||||
public MixinEntityPacketRewriter1_15(Protocol1_14_4To1_15 protocol) {
|
||||
super(protocol);
|
||||
}
|
||||
|
||||
@Redirect(method = "registerRewrites", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/rewriter/meta/MetaFilter$Builder;removeIndex(I)V"))
|
||||
private void trackHealth(MetaFilter.Builder instance, int index) {
|
||||
@Redirect(method = "registerRewrites", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/rewriter/entitydata/EntityDataFilter$Builder;removeIndex(I)V"))
|
||||
private void trackHealth(EntityDataFilter.Builder instance, int index) {
|
||||
instance.handler((event, meta) -> { // Basically removeIndex, but we need to track the actual health value
|
||||
final int metaIndex = event.index();
|
||||
if (metaIndex == index) {
|
|
@ -22,21 +22,21 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
|||
import com.viaversion.viaversion.api.protocol.Protocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
|
||||
import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2;
|
||||
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.Protocol1_17To1_16_4;
|
||||
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.packets.EntityPackets;
|
||||
import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ClientboundPackets1_16_2;
|
||||
import com.viaversion.viaversion.protocols.v1_16_4to1_17.Protocol1_16_4To1_17;
|
||||
import com.viaversion.viaversion.protocols.v1_16_4to1_17.rewriter.EntityPacketRewriter1_17;
|
||||
import de.florianmichael.viafabricplus.fixes.versioned.classic.WorldHeightSupport;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
@SuppressWarnings({"unchecked", "rawtypes"})
|
||||
@Mixin(value = EntityPackets.class, remap = false)
|
||||
public abstract class MixinEntityPackets1_17 {
|
||||
@Mixin(value = EntityPacketRewriter1_17.class, remap = false)
|
||||
public abstract class MixinEntityPacketRewriter1_17 {
|
||||
|
||||
@Redirect(method = "registerPackets", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4;registerClientbound(Lcom/viaversion/viaversion/api/protocol/packet/ClientboundPacketType;Lcom/viaversion/viaversion/api/protocol/remapper/PacketHandler;)V"))
|
||||
private void handleClassicWorldHeight(Protocol1_17To1_16_4 instance, ClientboundPacketType packetType, PacketHandler packetHandler) {
|
||||
if (packetType == ClientboundPackets1_16_2.JOIN_GAME) packetHandler = WorldHeightSupport.handleJoinGame(packetHandler);
|
||||
@Redirect(method = "registerPackets", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/protocols/v1_16_4to1_17/Protocol1_16_4To1_17;registerClientbound(Lcom/viaversion/viaversion/api/protocol/packet/ClientboundPacketType;Lcom/viaversion/viaversion/api/protocol/remapper/PacketHandler;)V"))
|
||||
private void handleClassicWorldHeight(Protocol1_16_4To1_17 instance, ClientboundPacketType packetType, PacketHandler packetHandler) {
|
||||
if (packetType == ClientboundPackets1_16_2.LOGIN) packetHandler = WorldHeightSupport.handleJoinGame(packetHandler);
|
||||
if (packetType == ClientboundPackets1_16_2.RESPAWN) packetHandler = WorldHeightSupport.handleRespawn(packetHandler);
|
||||
|
||||
((Protocol) instance).registerClientbound(packetType, packetHandler);
|
|
@ -19,26 +19,26 @@
|
|||
|
||||
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ClientboundPackets1_19_3;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ClientboundPackets1_19_4;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.Protocol1_19_4To1_19_3;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.packets.EntityPackets;
|
||||
import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.packet.ClientboundPackets1_19_3;
|
||||
import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.Protocol1_19_3To1_19_4;
|
||||
import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ClientboundPackets1_19_4;
|
||||
import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.rewriter.EntityPacketRewriter1_19_4;
|
||||
import com.viaversion.viaversion.rewriter.EntityRewriter;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(value = EntityPackets.class, remap = false)
|
||||
public abstract class MixinEntityPackets1_19_4 extends EntityRewriter<ClientboundPackets1_19_3, Protocol1_19_4To1_19_3> {
|
||||
@Mixin(value = EntityPacketRewriter1_19_4.class, remap = false)
|
||||
public abstract class MixinEntityPacketRewriter1_19_4 extends EntityRewriter<ClientboundPackets1_19_3, Protocol1_19_3To1_19_4> {
|
||||
|
||||
protected MixinEntityPackets1_19_4(Protocol1_19_4To1_19_3 protocol) {
|
||||
protected MixinEntityPacketRewriter1_19_4(Protocol1_19_3To1_19_4 protocol) {
|
||||
super(protocol);
|
||||
}
|
||||
|
||||
@Inject(method = "registerPackets", at = @At("RETURN"))
|
||||
private void fixTeleportBehaviour(CallbackInfo ci) {
|
||||
this.protocol.registerClientbound(ClientboundPackets1_19_3.ENTITY_TELEPORT, ClientboundPackets1_19_4.ENTITY_TELEPORT, wrapper -> {
|
||||
this.protocol.registerClientbound(ClientboundPackets1_19_3.TELEPORT_ENTITY, ClientboundPackets1_19_4.TELEPORT_ENTITY, wrapper -> {
|
||||
}, true);
|
||||
}
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.rewriter.EntityPacketRewriter1_20_3;
|
||||
import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.rewriter.EntityPacketRewriter1_20_3;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
|
|
|
@ -22,11 +22,11 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
|||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPacket1_20_3;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.Protocol1_20_5To1_20_3;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPackets1_20_5;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.rewriter.EntityPacketRewriter1_20_5;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundPacket1_20_3;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.Protocol1_20_3To1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundPackets1_20_5;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.rewriter.EntityPacketRewriter1_20_5;
|
||||
import com.viaversion.viaversion.rewriter.EntityRewriter;
|
||||
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
@ -38,7 +38,7 @@ import org.spongepowered.asm.mixin.Shadow;
|
|||
import java.util.UUID;
|
||||
|
||||
@Mixin(value = EntityPacketRewriter1_20_5.class, remap = false)
|
||||
public abstract class MixinEntityPacketRewriter1_20_5 extends EntityRewriter<ClientboundPacket1_20_3, Protocol1_20_5To1_20_3> {
|
||||
public abstract class MixinEntityPacketRewriter1_20_5 extends EntityRewriter<ClientboundPacket1_20_3, Protocol1_20_3To1_20_5> {
|
||||
|
||||
@Shadow
|
||||
@Final
|
||||
|
@ -48,7 +48,7 @@ public abstract class MixinEntityPacketRewriter1_20_5 extends EntityRewriter<Cli
|
|||
@Final
|
||||
private static UUID CREATIVE_ENTITY_INTERACTION_RANGE;
|
||||
|
||||
protected MixinEntityPacketRewriter1_20_5(Protocol1_20_5To1_20_3 protocol) {
|
||||
protected MixinEntityPacketRewriter1_20_5(Protocol1_20_3To1_20_5 protocol) {
|
||||
super(protocol);
|
||||
}
|
||||
|
||||
|
@ -61,13 +61,13 @@ public abstract class MixinEntityPacketRewriter1_20_5 extends EntityRewriter<Cli
|
|||
*/
|
||||
@Overwrite
|
||||
private void sendRangeAttributes(final UserConnection connection, final boolean creativeMode) throws Exception {
|
||||
final PacketWrapper wrapper = PacketWrapper.create(ClientboundPackets1_20_5.ENTITY_PROPERTIES, connection);
|
||||
wrapper.write(Type.VAR_INT, this.tracker(connection).clientEntityId());
|
||||
final PacketWrapper wrapper = PacketWrapper.create(ClientboundPackets1_20_5.UPDATE_ATTRIBUTES, connection);
|
||||
wrapper.write(Types.VAR_INT, this.tracker(connection).clientEntityId());
|
||||
if (connection.getProtocolInfo().serverProtocolVersion().olderThanOrEqualTo(ProtocolVersion.v1_7_6)) {
|
||||
wrapper.write(Type.VAR_INT, 3); // Number of attributes
|
||||
wrapper.write(Types.VAR_INT, 3); // Number of attributes
|
||||
this.writeAttribute(wrapper, "generic.step_height", 0.5D, null, 0D);
|
||||
} else {
|
||||
wrapper.write(Type.VAR_INT, 2); // Number of attributes
|
||||
wrapper.write(Types.VAR_INT, 2); // Number of attributes
|
||||
}
|
||||
if (connection.getProtocolInfo().serverProtocolVersion().olderThan(LegacyProtocolVersion.r1_0_0tor1_0_1)) {
|
||||
this.writeAttribute(wrapper, "player.block_interaction_range", 4D, creativeMode ? CREATIVE_BLOCK_INTERACTION_RANGE : null, 1D);
|
||||
|
@ -81,7 +81,7 @@ public abstract class MixinEntityPacketRewriter1_20_5 extends EntityRewriter<Cli
|
|||
} else {
|
||||
this.writeAttribute(wrapper, "player.entity_interaction_range", 3D, creativeMode ? CREATIVE_ENTITY_INTERACTION_RANGE : null, 2D);
|
||||
}
|
||||
wrapper.scheduleSend(Protocol1_20_5To1_20_3.class);
|
||||
wrapper.scheduleSend(Protocol1_20_3To1_20_5.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,21 +19,21 @@
|
|||
|
||||
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
|
||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
|
||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.metadata.MetadataRewriter1_9To1_8;
|
||||
import com.viaversion.viaversion.rewriter.meta.MetaHandlerEvent;
|
||||
import com.viaversion.viaversion.api.minecraft.entitydata.EntityData;
|
||||
import com.viaversion.viaversion.protocols.v1_8to1_9.Protocol1_8To1_9;
|
||||
import com.viaversion.viaversion.protocols.v1_8to1_9.rewriter.EntityPacketRewriter1_9;
|
||||
import com.viaversion.viaversion.rewriter.entitydata.EntityDataHandlerEvent;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(value = MetadataRewriter1_9To1_8.class, remap = false)
|
||||
public abstract class MixinMetadataRewriter1_9To1_8 {
|
||||
@Mixin(value = EntityPacketRewriter1_9.class, remap = false)
|
||||
public abstract class MixinEntityPacketRewriter1_9 {
|
||||
|
||||
@Inject(method = "handleMetadata", at = @At(value = "FIELD", target = "Lcom/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetaIndex;PLAYER_HAND:Lcom/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetaIndex;", ordinal = 0, shift = At.Shift.BEFORE), cancellable = true)
|
||||
private void preventMetadataForClientPlayer(MetaHandlerEvent event, Metadata metadata, CallbackInfo ci) {
|
||||
if (event.user().getEntityTracker(Protocol1_9To1_8.class).clientEntityId() == event.entityId()) {
|
||||
@Inject(method = "handleMetadata", at = @At(value = "FIELD", target = "Lcom/viaversion/viaversion/api/minecraft/entities/EntityTypes1_9$EntityType;PLAYER:Lcom/viaversion/viaversion/api/minecraft/entities/EntityTypes1_9$EntityType;", ordinal = 0, shift = At.Shift.BEFORE), cancellable = true)
|
||||
private void preventMetadataForClientPlayer(EntityDataHandlerEvent event, EntityData metadata, CallbackInfo ci) {
|
||||
if (event.user().getEntityTracker(Protocol1_8To1_9.class).clientEntityId() == event.entityId()) {
|
||||
ci.cancel();
|
||||
}
|
||||
}
|
|
@ -19,8 +19,8 @@
|
|||
|
||||
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
|
||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9;
|
||||
import com.viaversion.viaversion.api.minecraft.entitydata.EntityData;
|
||||
import com.viaversion.viaversion.protocols.v1_8to1_9.storage.EntityTracker1_9;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
@ -39,8 +39,8 @@ public abstract class MixinEntityTracker1_9 {
|
|||
return b;
|
||||
}
|
||||
|
||||
@Redirect(method = "handleMetadata", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/api/minecraft/metadata/Metadata;getValue()Ljava/lang/Object;"), slice = @Slice(from = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/api/configuration/ViaVersionConfig;isBossbarAntiflicker()Z")))
|
||||
private Object remapNaNToZero(Metadata instance) {
|
||||
@Redirect(method = "handleMetadata", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/api/minecraft/entitydata/EntityData;getValue()Ljava/lang/Object;"), slice = @Slice(from = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/api/configuration/ViaVersionConfig;isBossbarAntiflicker()Z")))
|
||||
private Object remapNaNToZero(EntityData instance) {
|
||||
if (instance.getValue() instanceof Float && ((Float) instance.getValue()).isNaN()) {
|
||||
return 0F;
|
||||
} else {
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.libs.fastutil.ints.IntList;
|
||||
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.storage.InventoryAcknowledgements;
|
||||
import com.viaversion.viaversion.protocols.v1_16_4to1_17.storage.InventoryAcknowledgements;
|
||||
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
||||
import it.unimi.dsi.fastutil.ints.IntLists;
|
||||
import org.spongepowered.asm.mixin.*;
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
/*
|
||||
* This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus
|
||||
* Copyright (C) 2021-2024 FlorianMichael/EnZaXD <florian.michael07@gmail.com> and RK_01/RaphiMC
|
||||
* Copyright (C) 2023-2024 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 de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13;
|
||||
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ServerboundPackets1_13;
|
||||
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.Protocol1_14To1_13_2;
|
||||
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14;
|
||||
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.packets.InventoryPackets;
|
||||
import com.viaversion.viaversion.rewriter.ItemRewriter;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(value = InventoryPackets.class, remap = false)
|
||||
public abstract class MixinInventoryPackets1_13 extends ItemRewriter<ClientboundPackets1_13, ServerboundPackets1_14, Protocol1_14To1_13_2> {
|
||||
|
||||
public MixinInventoryPackets1_13(Protocol1_14To1_13_2 protocol, Type<Item> itemType, Type<Item[]> itemArrayType) {
|
||||
super(protocol, itemType, itemArrayType);
|
||||
}
|
||||
|
||||
@Inject(method = "registerPackets", at = @At("RETURN"))
|
||||
private void dontResyncInventory(CallbackInfo ci) {
|
||||
this.protocol.registerServerbound(ServerboundPackets1_14.SELECT_TRADE, ServerboundPackets1_13.SELECT_TRADE, (PacketHandler) null, true);
|
||||
}
|
||||
|
||||
}
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.storage.InventoryTracker1_16;
|
||||
import com.viaversion.viaversion.protocols.v1_15_2to1_16.storage.InventoryTracker1_16;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Overwrite;
|
||||
|
||||
|
|
|
@ -19,11 +19,19 @@
|
|||
|
||||
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.libs.gson.JsonElement;
|
||||
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14;
|
||||
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.packets.InventoryPackets;
|
||||
import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13;
|
||||
import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ServerboundPackets1_13;
|
||||
import com.viaversion.viaversion.protocols.v1_13_2to1_14.Protocol1_13_2To1_14;
|
||||
import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ClientboundPackets1_14;
|
||||
import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ServerboundPackets1_14;
|
||||
import com.viaversion.viaversion.protocols.v1_13_2to1_14.rewriter.ItemPacketRewriter1_14;
|
||||
import com.viaversion.viaversion.rewriter.ItemRewriter;
|
||||
import de.florianmichael.viafabricplus.fixes.ClientsideFixes;
|
||||
import de.florianmichael.viafabricplus.protocoltranslator.translator.TextComponentTranslator;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
|
@ -39,11 +47,20 @@ import org.spongepowered.asm.mixin.injection.Inject;
|
|||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||
|
||||
@Mixin(value = InventoryPackets.class, remap = false)
|
||||
public abstract class MixinInventoryPackets {
|
||||
@Mixin(value = ItemPacketRewriter1_14.class, remap = false)
|
||||
public abstract class MixinItemPacketRewriter1_14 extends ItemRewriter<ClientboundPackets1_13, ServerboundPackets1_14, Protocol1_13_2To1_14> {
|
||||
|
||||
@Inject(method = "lambda$registerPackets$0", at = @At(value = "INVOKE", target = "Ljava/util/logging/Logger;warning(Ljava/lang/String;)V", remap = false), locals = LocalCapture.CAPTURE_FAILHARD, cancellable = true)
|
||||
private static void supportLargeContainers(PacketWrapper wrapper, CallbackInfo ci, Short windowId, String type, JsonElement title, Short slots) {
|
||||
public MixinItemPacketRewriter1_14(Protocol1_13_2To1_14 protocol, Type<Item> itemType, Type<Item[]> itemArrayType) {
|
||||
super(protocol, itemType, itemArrayType);
|
||||
}
|
||||
|
||||
@Inject(method = "registerPackets", at = @At("RETURN"))
|
||||
private void dontResyncInventory(CallbackInfo ci) {
|
||||
this.protocol.registerServerbound(ServerboundPackets1_14.SELECT_TRADE, ServerboundPackets1_13.SELECT_TRADE, null, true);
|
||||
}
|
||||
|
||||
@Inject(method = "lambda$registerPackets$0", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/util/ProtocolLogger;warning(Ljava/lang/String;)V", remap = false), locals = LocalCapture.CAPTURE_FAILHARD, cancellable = true)
|
||||
private void supportLargeContainers(PacketWrapper wrapper, CallbackInfo ci, Short windowId, String type, JsonElement title, Short slots) {
|
||||
if ((type.equals("minecraft:container") || type.equals("minecraft:chest")) && (slots > 54 || slots <= 0)) {
|
||||
ci.cancel();
|
||||
|
||||
|
@ -64,12 +81,12 @@ public abstract class MixinInventoryPackets {
|
|||
});
|
||||
|
||||
wrapper.clearPacket();
|
||||
wrapper.setPacketType(ClientboundPackets1_14.PLUGIN_MESSAGE);
|
||||
wrapper.write(Type.STRING, ClientsideFixes.PACKET_SYNC_IDENTIFIER); // sync task header
|
||||
wrapper.write(Type.STRING, uuid); // sync task id
|
||||
wrapper.write(Type.UNSIGNED_BYTE, windowId);
|
||||
wrapper.write(Type.UNSIGNED_BYTE, slots);
|
||||
wrapper.write(Type.TAG, TextComponentTranslator.via1_14toViaLatest(title));
|
||||
wrapper.setPacketType(ClientboundPackets1_14.CUSTOM_PAYLOAD);
|
||||
wrapper.write(Types.STRING, ClientsideFixes.PACKET_SYNC_IDENTIFIER); // sync task header
|
||||
wrapper.write(Types.STRING, uuid); // sync task id
|
||||
wrapper.write(Types.UNSIGNED_BYTE, windowId);
|
||||
wrapper.write(Types.UNSIGNED_BYTE, slots);
|
||||
wrapper.write(Types.TAG, TextComponentTranslator.via1_14toViaLatest(title));
|
||||
}
|
||||
}
|
||||
|
|
@ -22,27 +22,27 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
|||
import com.viaversion.viaversion.api.Via;
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2;
|
||||
import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ServerboundPackets1_16_2;
|
||||
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.Protocol1_17To1_16_4;
|
||||
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ServerboundPackets1_17;
|
||||
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.packets.InventoryPackets;
|
||||
import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ClientboundPackets1_16_2;
|
||||
import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ServerboundPackets1_16_2;
|
||||
import com.viaversion.viaversion.protocols.v1_16_4to1_17.Protocol1_16_4To1_17;
|
||||
import com.viaversion.viaversion.protocols.v1_16_4to1_17.packet.ServerboundPackets1_17;
|
||||
import com.viaversion.viaversion.protocols.v1_16_4to1_17.rewriter.ItemPacketRewriter1_17;
|
||||
import com.viaversion.viaversion.rewriter.ItemRewriter;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(value = InventoryPackets.class, remap = false)
|
||||
public abstract class MixinInventoryPackets1_17 extends ItemRewriter<ClientboundPackets1_16_2, ServerboundPackets1_17, Protocol1_17To1_16_4> {
|
||||
@Mixin(value = ItemPacketRewriter1_17.class, remap = false)
|
||||
public abstract class MixinItemPacketRewriter1_17 extends ItemRewriter<ClientboundPackets1_16_2, ServerboundPackets1_17, Protocol1_16_4To1_17> {
|
||||
|
||||
public MixinInventoryPackets1_17(Protocol1_17To1_16_4 protocol, Type<Item> itemType, Type<Item[]> itemArrayType) {
|
||||
public MixinItemPacketRewriter1_17(Protocol1_16_4To1_17 protocol, Type<Item> itemType, Type<Item[]> itemArrayType) {
|
||||
super(protocol, itemType, itemArrayType);
|
||||
}
|
||||
|
||||
@Inject(method = "registerPackets", at = @At("RETURN"))
|
||||
private void removeWindowClickHandler(CallbackInfo ci) {
|
||||
this.protocol.registerServerbound(ServerboundPackets1_17.CLICK_WINDOW, ServerboundPackets1_16_2.CLICK_WINDOW, wrapper -> {
|
||||
this.protocol.registerServerbound(ServerboundPackets1_17.CONTAINER_CLICK, ServerboundPackets1_16_2.CONTAINER_CLICK, wrapper -> {
|
||||
Via.getPlatform().getLogger().severe("Tried to remap >=1.17 CLICK_WINDOW packet which is impossible without breaking the content! Find the cause and fix it!");
|
||||
wrapper.cancel();
|
||||
}, true);
|
|
@ -25,9 +25,9 @@ import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap;
|
|||
import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
import com.viaversion.viaversion.libs.gson.JsonElement;
|
||||
import com.viaversion.viaversion.libs.gson.JsonObject;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag;
|
||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.ItemRewriter;
|
||||
import com.viaversion.nbt.tag.CompoundTag;
|
||||
import com.viaversion.nbt.tag.ListTag;
|
||||
import com.viaversion.viaversion.protocols.v1_8to1_9.rewriter.ItemPacketRewriter1_9;
|
||||
import com.viaversion.viaversion.util.Pair;
|
||||
import de.florianmichael.viafabricplus.fixes.ClientsideFixes;
|
||||
import de.florianmichael.viafabricplus.protocoltranslator.impl.ViaFabricPlusMappingDataLoader;
|
||||
|
@ -36,25 +36,26 @@ import org.spongepowered.asm.mixin.Unique;
|
|||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
@Mixin(value = ItemRewriter.class, remap = false)
|
||||
public abstract class MixinItemRewriter {
|
||||
@Mixin(value = ItemPacketRewriter1_9.class, remap = false)
|
||||
public abstract class MixinItemPacketRewriter1_9 {
|
||||
|
||||
@Unique
|
||||
private static final Int2ObjectMap<String> ITEM_IDENTIFIERS = new Int2ObjectOpenHashMap<>();
|
||||
private final Int2ObjectMap<String> viaFabricPlus$itemIdentifiers = new Int2ObjectOpenHashMap<>();
|
||||
|
||||
@Unique
|
||||
private static final Map<String, Map<String, Pair<String, ModifierData>>> ITEM_ATTRIBUTES = new HashMap<>();
|
||||
private final Map<String, Map<String, Pair<String, ModifierData>>> viaFabricPlus$itemAttributes = new HashMap<>();
|
||||
|
||||
@Inject(method = "<clinit>", at = @At("RETURN"))
|
||||
private static void loadAdditionalData(CallbackInfo ci) {
|
||||
@Inject(method = "<init>", at = @At("RETURN"))
|
||||
private void loadAdditionalData(CallbackInfo ci) {
|
||||
final JsonObject itemIdentifiers = ViaFabricPlusMappingDataLoader.INSTANCE.loadData("item-identifiers-1.8.json");
|
||||
for (Map.Entry<String, JsonElement> entry : itemIdentifiers.entrySet()) {
|
||||
ITEM_IDENTIFIERS.put(entry.getValue().getAsInt(), entry.getKey());
|
||||
viaFabricPlus$itemIdentifiers.put(entry.getValue().getAsInt(), entry.getKey());
|
||||
}
|
||||
|
||||
final JsonObject itemAttributes = ViaFabricPlusMappingDataLoader.INSTANCE.loadData("item-attributes-1.8.json");
|
||||
|
@ -68,17 +69,18 @@ public abstract class MixinItemRewriter {
|
|||
final String slot = attributeData.get("slot").getAsString();
|
||||
attributes.put(attribute, new Pair<>(slot, modifierData));
|
||||
}
|
||||
ITEM_ATTRIBUTES.put(itemIdentifier, attributes);
|
||||
viaFabricPlus$itemAttributes.put(itemIdentifier, attributes);
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "toClient", at = @At("RETURN"))
|
||||
private static void addAttributeFixData(Item item, CallbackInfo ci) {
|
||||
@Inject(method = "handleItemToClient", at = @At("RETURN"))
|
||||
private void addAttributeFixData(CallbackInfoReturnable<Item> cir) {
|
||||
final Item item = cir.getReturnValue();
|
||||
if (item == null) return;
|
||||
|
||||
final String identifier = ITEM_IDENTIFIERS.get(item.identifier());
|
||||
if (identifier != null && ITEM_ATTRIBUTES.containsKey(identifier)) {
|
||||
final Map<String, Pair<String, ModifierData>> attributes = ITEM_ATTRIBUTES.get(identifier);
|
||||
final String identifier = viaFabricPlus$itemIdentifiers.get(item.identifier());
|
||||
if (identifier != null && viaFabricPlus$itemAttributes.containsKey(identifier)) {
|
||||
final Map<String, Pair<String, ModifierData>> attributes = viaFabricPlus$itemAttributes.get(identifier);
|
||||
final CompoundTag attributeFixTag = new CompoundTag();
|
||||
CompoundTag tag = item.tag();
|
||||
if (tag == null) {
|
||||
|
@ -108,8 +110,9 @@ public abstract class MixinItemRewriter {
|
|||
}
|
||||
}
|
||||
|
||||
@Inject(method = "toServer", at = @At("RETURN"))
|
||||
private static void removeAttributeFixData(Item item, CallbackInfo ci) {
|
||||
@Inject(method = "handleItemToServer", at = @At("RETURN"))
|
||||
private void removeAttributeFixData(CallbackInfoReturnable<Item> cir) {
|
||||
final Item item = cir.getReturnValue();
|
||||
if (item == null) return;
|
||||
final CompoundTag tag = item.tag();
|
||||
if (tag == null) return;
|
|
@ -20,7 +20,7 @@
|
|||
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.api.type.types.misc.NamedCompoundTagType;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.limiter.TagLimiter;
|
||||
import com.viaversion.nbt.limiter.TagLimiter;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
@ -28,7 +28,7 @@ import org.spongepowered.asm.mixin.injection.Redirect;
|
|||
@Mixin(value = NamedCompoundTagType.class, remap = false)
|
||||
public abstract class MixinNamedCompoundTagType {
|
||||
|
||||
@Redirect(method = "read(Lio/netty/buffer/ByteBuf;Z)Lcom/viaversion/viaversion/libs/opennbt/tag/builtin/CompoundTag;", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/libs/opennbt/tag/limiter/TagLimiter;create(II)Lcom/viaversion/viaversion/libs/opennbt/tag/limiter/TagLimiter;"))
|
||||
@Redirect(method = "read(Lio/netty/buffer/ByteBuf;Z)Lcom/viaversion/nbt/tag/CompoundTag;", at = @At(value = "INVOKE", target = "Lcom/viaversion/nbt/limiter/TagLimiter;create(II)Lcom/viaversion/nbt/limiter/TagLimiter;"))
|
||||
private static TagLimiter removeNBTSizeLimit(int maxBytes, int maxLevels) {
|
||||
return TagLimiter.noop();
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.ParticleRewriter;
|
||||
import com.viaversion.viaversion.protocols.v1_12_2to1_13.data.ParticleIdMappings1_13;
|
||||
import de.florianmichael.viafabricplus.fixes.versioned.visual.FootStepParticle1_12_2;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
|
@ -31,8 +31,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
@Mixin(value = ParticleRewriter.class, remap = false)
|
||||
public abstract class MixinParticleRewriter {
|
||||
@Mixin(value = ParticleIdMappings1_13.class, remap = false)
|
||||
public abstract class MixinParticleIdMappings1_13 {
|
||||
|
||||
@Shadow
|
||||
@Final
|
||||
|
@ -45,7 +45,7 @@ public abstract class MixinParticleRewriter {
|
|||
}
|
||||
}
|
||||
|
||||
@ModifyArg(method = "add(I)V", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ParticleRewriter$NewParticle;<init>(ILcom/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ParticleRewriter$ParticleDataHandler;)V"))
|
||||
@ModifyArg(method = "add(I)V", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/protocols/v1_12_2to1_13/data/ParticleIdMappings1_13$NewParticle;<init>(ILcom/viaversion/viaversion/protocols/v1_12_2to1_13/data/ParticleIdMappings1_13$ParticleDataHandler;)V"))
|
||||
private static int replaceFootStepId(int id) {
|
||||
if (particles.size() == 28) { // minecraft:footstep -> viafabricplus:footstep
|
||||
return FootStepParticle1_12_2.ID;
|
|
@ -24,8 +24,8 @@ import org.spongepowered.asm.mixin.Mixin;
|
|||
import org.spongepowered.asm.mixin.injection.Constant;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyConstant;
|
||||
|
||||
@Mixin(targets = "com.viaversion.viaversion.protocols.protocol1_11to1_10.Protocol1_11To1_10$13", remap = false)
|
||||
public abstract class MixinProtocol1_11To1_10 {
|
||||
@Mixin(targets = "com.viaversion.viaversion.protocols.v1_10to1_11.Protocol1_10To1_11$8", remap = false)
|
||||
public abstract class MixinProtocol1_10To1_11 {
|
||||
|
||||
@ModifyConstant(method = "lambda$register$0", constant = @Constant(intValue = 100))
|
||||
private static int changeMaxChatLength(int constant) {
|
|
@ -24,8 +24,8 @@ import org.spongepowered.asm.mixin.Mixin;
|
|||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
@Mixin(targets = "com.viaversion.viaversion.protocols.protocol1_12to1_11_1.Protocol1_12To1_11_1$3", remap = false)
|
||||
public abstract class MixinProtocol1_12To1_11_1 {
|
||||
@Mixin(targets = "com.viaversion.viaversion.protocols.v1_11_1to1_12.Protocol1_11_1To1_12$1", remap = false)
|
||||
public abstract class MixinProtocol1_11_1To1_12 {
|
||||
|
||||
@Redirect(method = "lambda$register$1", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/api/protocol/version/ProtocolVersion;newerThanOrEqualTo(Lcom/viaversion/viaversion/api/protocol/version/ProtocolVersion;)Z"))
|
||||
private static boolean dontClearRecipes(ProtocolVersion instance, ProtocolVersion other) {
|
|
@ -20,24 +20,24 @@
|
|||
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ServerboundPackets1_19_4;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.Protocol1_20_2To1_20;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundPackets1_20_2;
|
||||
import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ServerboundPackets1_19_4;
|
||||
import com.viaversion.viaversion.protocols.v1_20to1_20_2.Protocol1_20To1_20_2;
|
||||
import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundPackets1_20_2;
|
||||
import de.florianmichael.viafabricplus.settings.impl.DebugSettings;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(value = Protocol1_20_2To1_20.class, remap = false)
|
||||
public abstract class MixinProtocol1_20_2To1_20 {
|
||||
@Mixin(value = Protocol1_20To1_20_2.class, remap = false)
|
||||
public abstract class MixinProtocol1_20To1_20_2 {
|
||||
|
||||
@Inject(method = "lambda$queueServerboundPacket$11", at = @At("HEAD"), cancellable = true)
|
||||
private static void dontQueueConfigPackets(ServerboundPackets1_20_2 packetType, PacketWrapper wrapper, CallbackInfo ci) {
|
||||
if (!DebugSettings.global().queueConfigPackets.getValue()) {
|
||||
ci.cancel();
|
||||
switch (packetType) {
|
||||
case PLUGIN_MESSAGE -> wrapper.setPacketType(ServerboundPackets1_19_4.PLUGIN_MESSAGE);
|
||||
case CUSTOM_PAYLOAD -> wrapper.setPacketType(ServerboundPackets1_19_4.CUSTOM_PAYLOAD);
|
||||
case KEEP_ALIVE -> wrapper.setPacketType(ServerboundPackets1_19_4.KEEP_ALIVE);
|
||||
case PONG -> wrapper.setPacketType(ServerboundPackets1_19_4.PONG);
|
||||
default -> throw new IllegalStateException("Unexpected packet type: " + packetType);
|
|
@ -20,7 +20,7 @@
|
|||
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.api.type.types.misc.TagType;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.limiter.TagLimiter;
|
||||
import com.viaversion.nbt.limiter.TagLimiter;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
@ -28,7 +28,7 @@ import org.spongepowered.asm.mixin.injection.Redirect;
|
|||
@Mixin(value = TagType.class, remap = false)
|
||||
public abstract class MixinTagType {
|
||||
|
||||
@Redirect(method = "read(Lio/netty/buffer/ByteBuf;)Lcom/viaversion/viaversion/libs/opennbt/tag/builtin/Tag;", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/libs/opennbt/tag/limiter/TagLimiter;create(II)Lcom/viaversion/viaversion/libs/opennbt/tag/limiter/TagLimiter;"))
|
||||
@Redirect(method = "read(Lio/netty/buffer/ByteBuf;)Lcom/viaversion/nbt/tag/Tag;", at = @At(value = "INVOKE", target = "Lcom/viaversion/nbt/limiter/TagLimiter;create(II)Lcom/viaversion/nbt/limiter/TagLimiter;"))
|
||||
private TagLimiter removeNBTSizeLimit(int maxBytes, int maxLevels) {
|
||||
return TagLimiter.noop();
|
||||
}
|
||||
|
|
|
@ -19,15 +19,15 @@
|
|||
|
||||
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.packets.WorldPackets;
|
||||
import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.rewriter.WorldPacketRewriter1_16_2;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.Constant;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyConstant;
|
||||
|
||||
@Mixin(value = WorldPackets.class, remap = false)
|
||||
public abstract class MixinWorldPackets1_16_2 {
|
||||
@Mixin(value = WorldPacketRewriter1_16_2.class, remap = false)
|
||||
public abstract class MixinWorldPacketRewriter1_16_2 {
|
||||
|
||||
@ModifyConstant(method = "lambda$register$1", constant = @Constant(intValue = 16))
|
||||
@ModifyConstant(method = "lambda$register$0", constant = @Constant(intValue = 16))
|
||||
private static int modifySectionCountToSupportClassicWorldHeight(int constant) {
|
||||
return 64;
|
||||
}
|
|
@ -22,22 +22,22 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
|||
import com.viaversion.viaversion.api.protocol.Protocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
|
||||
import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2;
|
||||
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.Protocol1_17To1_16_4;
|
||||
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.packets.WorldPackets;
|
||||
import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ClientboundPackets1_16_2;
|
||||
import com.viaversion.viaversion.protocols.v1_16_4to1_17.Protocol1_16_4To1_17;
|
||||
import com.viaversion.viaversion.protocols.v1_16_4to1_17.rewriter.WorldPacketRewriter1_17;
|
||||
import de.florianmichael.viafabricplus.fixes.versioned.classic.WorldHeightSupport;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
@SuppressWarnings({"unchecked", "rawtypes"})
|
||||
@Mixin(value = WorldPackets.class, remap = false)
|
||||
public abstract class MixinWorldPackets1_17 {
|
||||
@Mixin(value = WorldPacketRewriter1_17.class, remap = false)
|
||||
public abstract class MixinWorldPacketRewriter1_17 {
|
||||
|
||||
@Redirect(method = "register", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4;registerClientbound(Lcom/viaversion/viaversion/api/protocol/packet/ClientboundPacketType;Lcom/viaversion/viaversion/api/protocol/remapper/PacketHandler;)V"))
|
||||
private static void handleClassicWorldHeight(Protocol1_17To1_16_4 instance, ClientboundPacketType packetType, PacketHandler packetHandler) {
|
||||
if (packetType == ClientboundPackets1_16_2.CHUNK_DATA) packetHandler = WorldHeightSupport.handleChunkData(packetHandler);
|
||||
if (packetType == ClientboundPackets1_16_2.UPDATE_LIGHT) packetHandler = WorldHeightSupport.handleUpdateLight(packetHandler);
|
||||
@Redirect(method = "register", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/protocols/v1_16_4to1_17/Protocol1_16_4To1_17;registerClientbound(Lcom/viaversion/viaversion/api/protocol/packet/ClientboundPacketType;Lcom/viaversion/viaversion/api/protocol/remapper/PacketHandler;)V"))
|
||||
private static void handleClassicWorldHeight(Protocol1_16_4To1_17 instance, ClientboundPacketType packetType, PacketHandler packetHandler) {
|
||||
if (packetType == ClientboundPackets1_16_2.LEVEL_CHUNK) packetHandler = WorldHeightSupport.handleChunkData(packetHandler);
|
||||
if (packetType == ClientboundPackets1_16_2.LIGHT_UPDATE) packetHandler = WorldHeightSupport.handleUpdateLight(packetHandler);
|
||||
|
||||
((Protocol) instance).registerClientbound(packetType, packetHandler);
|
||||
}
|
|
@ -20,11 +20,11 @@
|
|||
package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.ClientboundPackets1_18;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ClientboundPackets1_19;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_18_2;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.packets.WorldPackets;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.protocols.v1_17_1to1_18.packet.ClientboundPackets1_18;
|
||||
import com.viaversion.viaversion.protocols.v1_18_2to1_19.Protocol1_18_2To1_19;
|
||||
import com.viaversion.viaversion.protocols.v1_18_2to1_19.packet.ClientboundPackets1_19;
|
||||
import com.viaversion.viaversion.protocols.v1_18_2to1_19.rewriter.WorldPacketRewriter1_19;
|
||||
import de.florianmichael.viafabricplus.fixes.ClientsideFixes;
|
||||
import de.florianmichael.viafabricplus.injection.access.IClientPlayerInteractionManager;
|
||||
import de.florianmichael.viafabricplus.protocoltranslator.translator.BlockStateTranslator;
|
||||
|
@ -36,12 +36,12 @@ import org.spongepowered.asm.mixin.Mixin;
|
|||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
@Mixin(value = WorldPackets.class, remap = false)
|
||||
public abstract class MixinWorldPackets1_19 {
|
||||
@Mixin(value = WorldPacketRewriter1_19.class, remap = false)
|
||||
public abstract class MixinWorldPacketRewriter1_19 {
|
||||
|
||||
@Redirect(method = "register", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/protocols/protocol1_19to1_18_2/Protocol1_19To1_18_2;cancelClientbound(Lcom/viaversion/viaversion/api/protocol/packet/ClientboundPacketType;)V"))
|
||||
private static void handleLegacyAcknowledgePlayerDigging(Protocol1_19To1_18_2 instance, ClientboundPacketType clientboundPacketType) {
|
||||
instance.registerClientbound(ClientboundPackets1_18.ACKNOWLEDGE_PLAYER_DIGGING, ClientboundPackets1_19.PLUGIN_MESSAGE, wrapper -> {
|
||||
@Redirect(method = "register", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/protocols/v1_18_2to1_19/Protocol1_18_2To1_19;cancelClientbound(Lcom/viaversion/viaversion/api/protocol/packet/ClientboundPacketType;)V"))
|
||||
private static void handleLegacyAcknowledgePlayerDigging(Protocol1_18_2To1_19 instance, ClientboundPacketType clientboundPacketType) {
|
||||
instance.registerClientbound(ClientboundPackets1_18.BLOCK_BREAK_ACK, ClientboundPackets1_19.CUSTOM_PAYLOAD, wrapper -> {
|
||||
wrapper.resetReader();
|
||||
|
||||
final String uuid = ClientsideFixes.executeSyncTask(data -> {
|
||||
|
@ -57,8 +57,8 @@ public abstract class MixinWorldPackets1_19 {
|
|||
throw new RuntimeException("Failed to handle BlockBreakAck packet data", t);
|
||||
}
|
||||
});
|
||||
wrapper.write(Type.STRING, ClientsideFixes.PACKET_SYNC_IDENTIFIER);
|
||||
wrapper.write(Type.STRING, uuid);
|
||||
wrapper.write(Types.STRING, ClientsideFixes.PACKET_SYNC_IDENTIFIER);
|
||||
wrapper.write(Types.STRING, uuid);
|
||||
});
|
||||
}
|
||||
|
|
@ -33,7 +33,7 @@ import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
|||
import com.viaversion.viaversion.api.protocol.version.VersionType;
|
||||
import com.viaversion.viaversion.connection.UserConnectionImpl;
|
||||
import com.viaversion.viaversion.protocol.ProtocolPipelineImpl;
|
||||
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.Protocol1_20_5To1_20_3;
|
||||
import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.Protocol1_20_3To1_20_5;
|
||||
import de.florianmichael.viafabricplus.event.ChangeProtocolVersionCallback;
|
||||
import de.florianmichael.viafabricplus.fixes.VFPProtocol;
|
||||
import de.florianmichael.viafabricplus.injection.access.IClientConnection;
|
||||
|
@ -321,7 +321,7 @@ public class ProtocolTranslator {
|
|||
ViaAprilFoolsPlatformImpl::new,
|
||||
ViaBedrockPlatformImpl::new
|
||||
);
|
||||
Protocol1_20_5To1_20_3.strictErrorHandling = false;
|
||||
Protocol1_20_3To1_20_5.strictErrorHandling = false;
|
||||
ProtocolVersion.register(AUTO_DETECT_PROTOCOL);
|
||||
VFPProtocol.INSTANCE.initialize();
|
||||
});
|
||||
|
|
|
@ -25,16 +25,16 @@ import com.viaversion.viaversion.api.connection.UserConnection;
|
|||
import de.florianmichael.viafabricplus.protocoltranslator.ProtocolTranslator;
|
||||
import de.florianmichael.viafabricplus.util.ChatUtil;
|
||||
|
||||
public abstract class VFPViaSubCommand extends ViaSubCommand {
|
||||
public interface VFPViaSubCommand extends ViaSubCommand {
|
||||
|
||||
/**
|
||||
* Automatically prefix all messages
|
||||
*/
|
||||
public void sendMessage(final ViaCommandSender sender, final String message) {
|
||||
ViaSubCommand.sendMessage(sender, ChatUtil.PREFIX + " " + message);
|
||||
default void sendMessage(final ViaCommandSender sender, final String message) {
|
||||
ViaSubCommand.super.sendMessage(sender, ChatUtil.PREFIX + " " + message);
|
||||
}
|
||||
|
||||
public UserConnection getUser() {
|
||||
default UserConnection getUser() {
|
||||
return ProtocolTranslator.getPlayNetworkUserConnection();
|
||||
}
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ public class ViaFabricPlusViaVersionPlatformImpl extends ViaVersionPlatformImpl
|
|||
|
||||
@Override
|
||||
protected AbstractViaConfig createConfig() {
|
||||
return new ViaFabricPlusVLViaConfig(new File(this.getDataFolder(), "viaversion.yml"));
|
||||
return new ViaFabricPlusVLViaConfig(new File(this.getDataFolder(), "viaversion.yml"), this.getLogger());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
package de.florianmichael.viafabricplus.protocoltranslator.impl.provider.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.provider.AckSequenceProvider;
|
||||
import com.viaversion.viaversion.protocols.v1_18_2to1_19.provider.AckSequenceProvider;
|
||||
|
||||
public class ViaFabricPlusAckSequenceProvider extends AckSequenceProvider {
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ package de.florianmichael.viafabricplus.protocoltranslator.impl.provider.viavers
|
|||
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
import com.viaversion.viaversion.protocols.base.BaseVersionProvider;
|
||||
import com.viaversion.viaversion.protocol.version.BaseVersionProvider;
|
||||
import de.florianmichael.viafabricplus.protocoltranslator.ProtocolTranslator;
|
||||
|
||||
public class ViaFabricPlusBaseVersionProvider extends BaseVersionProvider {
|
||||
|
|
|
@ -22,7 +22,7 @@ package de.florianmichael.viafabricplus.protocoltranslator.impl.provider.viavers
|
|||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.HandItemProvider;
|
||||
import com.viaversion.viaversion.protocols.v1_8to1_9.provider.HandItemProvider;
|
||||
import de.florianmichael.viafabricplus.protocoltranslator.translator.ItemTranslator;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
package de.florianmichael.viafabricplus.protocoltranslator.impl.provider.viaversion;
|
||||
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.provider.PlayerAbilitiesProvider;
|
||||
import com.viaversion.viaversion.protocols.v1_15_2to1_16.provider.PlayerAbilitiesProvider;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
|
||||
public class ViaFabricPlusPlayerAbilitiesProvider extends PlayerAbilitiesProvider {
|
||||
|
|
|
@ -21,7 +21,7 @@ package de.florianmichael.viafabricplus.protocoltranslator.impl.provider.viavers
|
|||
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.minecraft.Position;
|
||||
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.PlayerLookTargetProvider;
|
||||
import com.viaversion.viaversion.protocols.v1_12_2to1_13.provider.PlayerLookTargetProvider;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.util.hit.BlockHitResult;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
|
|
@ -23,10 +23,10 @@ import com.viaversion.viaversion.api.Via;
|
|||
import com.viaversion.viaversion.api.minecraft.signature.SignableCommandArgumentsProvider;
|
||||
import com.viaversion.viaversion.api.platform.providers.ViaProviders;
|
||||
import com.viaversion.viaversion.api.protocol.version.VersionProvider;
|
||||
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.PlayerLookTargetProvider;
|
||||
import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.provider.PlayerAbilitiesProvider;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.provider.AckSequenceProvider;
|
||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.HandItemProvider;
|
||||
import com.viaversion.viaversion.protocols.v1_12_2to1_13.provider.PlayerLookTargetProvider;
|
||||
import com.viaversion.viaversion.protocols.v1_15_2to1_16.provider.PlayerAbilitiesProvider;
|
||||
import com.viaversion.viaversion.protocols.v1_18_2to1_19.provider.AckSequenceProvider;
|
||||
import com.viaversion.viaversion.protocols.v1_8to1_9.provider.HandItemProvider;
|
||||
import de.florianmichael.viafabricplus.event.PostViaVersionLoadCallback;
|
||||
import de.florianmichael.viafabricplus.protocoltranslator.impl.provider.viabedrock.ViaFabricPlusNettyPipelineProvider;
|
||||
import de.florianmichael.viafabricplus.protocoltranslator.impl.provider.vialegacy.*;
|
||||
|
|
|
@ -22,11 +22,12 @@ package de.florianmichael.viafabricplus.protocoltranslator.impl.viaversion;
|
|||
import net.raphimc.vialoader.impl.viaversion.VLViaConfig;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class ViaFabricPlusVLViaConfig extends VLViaConfig {
|
||||
|
||||
public ViaFabricPlusVLViaConfig(File configFile) {
|
||||
super(configFile);
|
||||
public ViaFabricPlusVLViaConfig(File configFile, Logger logger) {
|
||||
super(configFile, logger);
|
||||
|
||||
UNSUPPORTED.add("simulate-pt");
|
||||
}
|
||||
|
|
|
@ -25,8 +25,8 @@ import com.viaversion.viaversion.api.protocol.packet.Direction;
|
|||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.packet.State;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.ClientboundPackets1_18;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.protocols.v1_17_1to1_18.packet.ClientboundPackets1_18;
|
||||
import de.florianmichael.viafabricplus.ViaFabricPlus;
|
||||
import de.florianmichael.viafabricplus.protocoltranslator.ProtocolTranslator;
|
||||
import net.minecraft.block.Block;
|
||||
|
@ -45,18 +45,18 @@ public class BlockStateTranslator {
|
|||
*/
|
||||
public static BlockState via1_18_2toMc(final int blockStateId) {
|
||||
try {
|
||||
final PacketWrapper wrapper = PacketWrapper.create(ClientboundPackets1_18.EFFECT, DUMMY_USER_CONNECTION);
|
||||
wrapper.write(Type.INT, 2001); // eventId
|
||||
wrapper.write(Type.POSITION1_14, new Position(0, 0, 0)); // position
|
||||
wrapper.write(Type.INT, blockStateId); // data
|
||||
wrapper.write(Type.BOOLEAN, false); // global
|
||||
final PacketWrapper wrapper = PacketWrapper.create(ClientboundPackets1_18.LEVEL_EVENT, DUMMY_USER_CONNECTION);
|
||||
wrapper.write(Types.INT, 2001); // eventId
|
||||
wrapper.write(Types.BLOCK_POSITION1_14, new Position(0, 0, 0)); // position
|
||||
wrapper.write(Types.INT, blockStateId); // data
|
||||
wrapper.write(Types.BOOLEAN, false); // global
|
||||
|
||||
wrapper.resetReader();
|
||||
wrapper.user().getProtocolInfo().getPipeline().transform(Direction.CLIENTBOUND, State.PLAY, wrapper);
|
||||
|
||||
wrapper.read(Type.INT); // eventId
|
||||
wrapper.read(Type.POSITION1_14); // position
|
||||
return Block.getStateFromRawId(wrapper.read(Type.INT)); // data
|
||||
wrapper.read(Types.INT); // eventId
|
||||
wrapper.read(Types.BLOCK_POSITION1_14); // position
|
||||
return Block.getStateFromRawId(wrapper.read(Types.INT)); // data
|
||||
} catch (Throwable t) {
|
||||
ViaFabricPlus.global().getLogger().error("Error converting ViaVersion 1.18.2 block state to native block state", t);
|
||||
return Blocks.AIR.getDefaultState();
|
||||
|
|
|
@ -26,6 +26,7 @@ import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
|||
import com.viaversion.viaversion.api.protocol.packet.State;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_20_5;
|
||||
import de.florianmichael.viafabricplus.ViaFabricPlus;
|
||||
import de.florianmichael.viafabricplus.fixes.VFPProtocol;
|
||||
|
@ -62,7 +63,7 @@ public class ItemTranslator {
|
|||
final PacketWrapper wrapper = PacketWrapper.create(VFPProtocol.getCreativeInventoryActionPacket(), buf, user);
|
||||
user.getProtocolInfo().getPipeline().transform(Direction.SERVERBOUND, State.PLAY, wrapper);
|
||||
|
||||
wrapper.read(Type.SHORT); // slot
|
||||
wrapper.read(Types.SHORT); // slot
|
||||
return wrapper.read(getItemType(targetVersion)); // item
|
||||
} catch (Throwable t) {
|
||||
ViaFabricPlus.global().getLogger().error("Error converting native item stack to ViaVersion {} item stack", targetVersion, t);
|
||||
|
@ -80,13 +81,13 @@ public class ItemTranslator {
|
|||
if (targetVersion.olderThanOrEqualTo(LegacyProtocolVersion.b1_8tob1_8_1)) {
|
||||
return Typesb1_8_0_1.CREATIVE_ITEM;
|
||||
} else if (targetVersion.olderThan(ProtocolVersion.v1_13)) {
|
||||
return Type.ITEM1_8;
|
||||
return Types.ITEM1_8;
|
||||
} else if (targetVersion.olderThan(ProtocolVersion.v1_13_2)) {
|
||||
return Type.ITEM1_13;
|
||||
return Types.ITEM1_13;
|
||||
} else if (targetVersion.olderThanOrEqualTo(ProtocolVersion.v1_20_2)) {
|
||||
return Type.ITEM1_13_2;
|
||||
return Types.ITEM1_13_2;
|
||||
} else if (targetVersion.olderThanOrEqualTo(ProtocolVersion.v1_20_3)) {
|
||||
return Type.ITEM1_20_2;
|
||||
return Types.ITEM1_20_2;
|
||||
} else {
|
||||
return Types1_20_5.ITEM;
|
||||
}
|
||||
|
@ -100,17 +101,17 @@ public class ItemTranslator {
|
|||
*/
|
||||
public static ItemStack viaB1_8toMc(final Item item) {
|
||||
try {
|
||||
final PacketWrapper wrapper = PacketWrapper.create(ClientboundPacketsb1_8.SET_SLOT, VIA_B1_8_TO_MC_USER_CONNECTION);
|
||||
wrapper.write(Type.BYTE, (byte) 0); // window id
|
||||
wrapper.write(Type.SHORT, (short) 0); // slot
|
||||
final PacketWrapper wrapper = PacketWrapper.create(ClientboundPacketsb1_8.CONTAINER_SET_SLOT, VIA_B1_8_TO_MC_USER_CONNECTION);
|
||||
wrapper.write(Types.BYTE, (byte) 0); // window id
|
||||
wrapper.write(Types.SHORT, (short) 0); // slot
|
||||
wrapper.write(Types1_4_2.NBTLESS_ITEM, item); // item
|
||||
|
||||
wrapper.resetReader();
|
||||
wrapper.user().getProtocolInfo().getPipeline().transform(Direction.CLIENTBOUND, State.PLAY, wrapper);
|
||||
|
||||
wrapper.read(Type.UNSIGNED_BYTE); // sync id
|
||||
wrapper.read(Type.VAR_INT); // revision
|
||||
wrapper.read(Type.SHORT); // slot
|
||||
wrapper.read(Types.UNSIGNED_BYTE); // sync id
|
||||
wrapper.read(Types.VAR_INT); // revision
|
||||
wrapper.read(Types.SHORT); // slot
|
||||
final Item viaItem = wrapper.read(getItemType(ProtocolTranslator.NATIVE_VERSION)); // item
|
||||
final ItemStack mcItem = new ItemStack(Registries.ITEM.get(viaItem.identifier()));
|
||||
mcItem.setCount(viaItem.amount());
|
||||
|
|
|
@ -25,9 +25,10 @@ import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
|||
import com.viaversion.viaversion.api.protocol.packet.State;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.libs.gson.JsonElement;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag;
|
||||
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14;
|
||||
import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ClientboundPackets1_14;
|
||||
import com.viaversion.nbt.tag.Tag;
|
||||
import de.florianmichael.viafabricplus.ViaFabricPlus;
|
||||
import de.florianmichael.viafabricplus.protocoltranslator.ProtocolTranslator;
|
||||
|
||||
|
@ -43,17 +44,17 @@ public class TextComponentTranslator {
|
|||
*/
|
||||
public static Tag via1_14toViaLatest(final JsonElement component) {
|
||||
try {
|
||||
final PacketWrapper wrapper = PacketWrapper.create(ClientboundPackets1_14.OPEN_WINDOW, DUMMY_USER_CONNECTION);
|
||||
wrapper.write(Type.VAR_INT, 1); // window id
|
||||
wrapper.write(Type.VAR_INT, 0); // type id
|
||||
wrapper.write(Type.COMPONENT, component); // title
|
||||
final PacketWrapper wrapper = PacketWrapper.create(ClientboundPackets1_14.OPEN_SCREEN, DUMMY_USER_CONNECTION);
|
||||
wrapper.write(Types.VAR_INT, 1); // window id
|
||||
wrapper.write(Types.VAR_INT, 0); // type id
|
||||
wrapper.write(Types.COMPONENT, component); // title
|
||||
|
||||
wrapper.resetReader();
|
||||
wrapper.user().getProtocolInfo().getPipeline().transform(Direction.CLIENTBOUND, State.PLAY, wrapper);
|
||||
|
||||
wrapper.read(Type.VAR_INT); // window id
|
||||
wrapper.read(Type.VAR_INT); // type id
|
||||
return wrapper.read(Type.TAG); // title
|
||||
wrapper.read(Types.VAR_INT); // window id
|
||||
wrapper.read(Types.VAR_INT); // type id
|
||||
return wrapper.read(Types.TAG); // title
|
||||
} catch (Throwable t) {
|
||||
ViaFabricPlus.global().getLogger().error("Error converting ViaVersion 1.14 text component to native text component", t);
|
||||
return null;
|
||||
|
|
|
@ -167,36 +167,35 @@
|
|||
"fixes.viaversion.MixinBlockItemPacketRewriter1_20_5",
|
||||
"fixes.viaversion.MixinCommandBlockProvider",
|
||||
"fixes.viaversion.MixinCommonBoss",
|
||||
"fixes.viaversion.MixinEntityIdRewriter",
|
||||
"fixes.viaversion.MixinEntityMappings1_11",
|
||||
"fixes.viaversion.MixinEntityPacketRewriter1_20_3",
|
||||
"fixes.viaversion.MixinEntityPacketRewriter1_20_5",
|
||||
"fixes.viaversion.MixinEntityPackets1_17",
|
||||
"fixes.viaversion.MixinEntityPackets1_19_4",
|
||||
"fixes.viaversion.MixinEntityPacketRewriter1_17",
|
||||
"fixes.viaversion.MixinEntityPacketRewriter1_19_4",
|
||||
"fixes.viaversion.MixinEntityTracker1_9",
|
||||
"fixes.viaversion.MixinInventoryAcknowledgements",
|
||||
"fixes.viaversion.MixinInventoryPackets",
|
||||
"fixes.viaversion.MixinInventoryPackets1_13",
|
||||
"fixes.viaversion.MixinInventoryPackets1_17",
|
||||
"fixes.viaversion.MixinItemPacketRewriter1_14",
|
||||
"fixes.viaversion.MixinItemPacketRewriter1_17",
|
||||
"fixes.viaversion.MixinInventoryTracker1_16",
|
||||
"fixes.viaversion.MixinItemRewriter",
|
||||
"fixes.viaversion.MixinItemPacketRewriter1_9",
|
||||
"fixes.viaversion.MixinMappingDataBase",
|
||||
"fixes.viaversion.MixinMetadataRewriter1_15To1_14_4",
|
||||
"fixes.viaversion.MixinMetadataRewriter1_9To1_8",
|
||||
"fixes.viaversion.MixinEntityPacketRewriter1_15",
|
||||
"fixes.viaversion.MixinEntityPacketRewriter1_9",
|
||||
"fixes.viaversion.MixinNamedCompoundTagType",
|
||||
"fixes.viaversion.MixinParticleRewriter",
|
||||
"fixes.viaversion.MixinProtocol1_11To1_10",
|
||||
"fixes.viaversion.MixinProtocol1_12To1_11_1",
|
||||
"fixes.viaversion.MixinProtocol1_20_2To1_20",
|
||||
"fixes.viaversion.MixinParticleIdMappings1_13",
|
||||
"fixes.viaversion.MixinProtocol1_10To1_11",
|
||||
"fixes.viaversion.MixinProtocol1_11_1To1_12",
|
||||
"fixes.viaversion.MixinProtocol1_20To1_20_2",
|
||||
"fixes.viaversion.MixinTagType",
|
||||
"fixes.viaversion.MixinUserConnectionImpl",
|
||||
"fixes.viaversion.MixinWorldPackets1_16_2",
|
||||
"fixes.viaversion.MixinWorldPackets1_17",
|
||||
"fixes.viaversion.MixinWorldPackets1_19",
|
||||
"fixes.viaversion.MixinWorldPacketRewriter1_16_2",
|
||||
"fixes.viaversion.MixinWorldPacketRewriter1_17",
|
||||
"fixes.viaversion.MixinWorldPacketRewriter1_19",
|
||||
"viabedrock.MixinBedrockProtocol",
|
||||
"viabedrock.MixinJoinPackets",
|
||||
"vialegacy.MixinExtensionProtocolMetadataStorage",
|
||||
"vialegacy.MixinViaLegacyConfig",
|
||||
"fixes.viaversion.MixinItemRewriter"
|
||||
"fixes.viaversion.MixinItemPacketRewriter1_9"
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
|
|
Loading…
Reference in New Issue