|
18 | 18 |
|
19 | 19 | package net.raphimc.viaproxy.injection.mixins; |
20 | 20 |
|
21 | | -import com.viaversion.viaversion.api.connection.UserConnection; |
22 | 21 | import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; |
23 | | -import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; |
24 | | -import com.viaversion.viaversion.api.type.Types; |
25 | | -import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundPacket1_20_3; |
26 | | -import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.Protocol1_20_3To1_20_5; |
27 | | -import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundPackets1_20_5; |
28 | 22 | import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.rewriter.EntityPacketRewriter1_20_5; |
29 | | -import com.viaversion.viaversion.rewriter.EntityRewriter; |
30 | 23 | import net.raphimc.vialegacy.api.LegacyProtocolVersion; |
31 | | -import org.spongepowered.asm.mixin.Final; |
32 | 24 | import org.spongepowered.asm.mixin.Mixin; |
33 | | -import org.spongepowered.asm.mixin.Overwrite; |
34 | 25 | import org.spongepowered.asm.mixin.Shadow; |
| 26 | +import org.spongepowered.asm.mixin.injection.At; |
| 27 | +import org.spongepowered.asm.mixin.injection.Redirect; |
35 | 28 |
|
36 | 29 | import java.util.UUID; |
37 | 30 |
|
38 | 31 | @Mixin(value = EntityPacketRewriter1_20_5.class, remap = false) |
39 | | -public abstract class MixinEntityPacketRewriter1_20_5 extends EntityRewriter<ClientboundPacket1_20_3, Protocol1_20_3To1_20_5> { |
40 | | - |
41 | | - @Shadow |
42 | | - @Final |
43 | | - private static UUID CREATIVE_BLOCK_INTERACTION_RANGE; |
44 | | - |
45 | | - @Shadow |
46 | | - @Final |
47 | | - private static UUID CREATIVE_ENTITY_INTERACTION_RANGE; |
48 | | - |
49 | | - protected MixinEntityPacketRewriter1_20_5(Protocol1_20_3To1_20_5 protocol) { |
50 | | - super(protocol); |
51 | | - } |
| 32 | +public abstract class MixinEntityPacketRewriter1_20_5 { |
52 | 33 |
|
53 | 34 | @Shadow |
54 | 35 | protected abstract void writeAttribute(PacketWrapper wrapper, String attributeId, double base, UUID modifierId, double amount); |
55 | 36 |
|
56 | | - /** |
57 | | - * @author RK_01 |
58 | | - * @reason Fix interaction range and step height differences |
59 | | - */ |
60 | | - @Overwrite |
61 | | - private void sendRangeAttributes(final UserConnection connection, final boolean creativeMode) { |
62 | | - final PacketWrapper updateAttributes = PacketWrapper.create(ClientboundPackets1_20_5.UPDATE_ATTRIBUTES, connection); |
63 | | - updateAttributes.write(Types.VAR_INT, this.tracker(connection).clientEntityId()); |
64 | | - if (connection.getProtocolInfo().serverProtocolVersion().olderThanOrEqualTo(ProtocolVersion.v1_7_6)) { |
65 | | - updateAttributes.write(Types.VAR_INT, 3); // Number of attributes |
66 | | - this.writeAttribute(updateAttributes, "generic.step_height", 0.5D, null, 0D); |
67 | | - } else { |
68 | | - updateAttributes.write(Types.VAR_INT, 2); // Number of attributes |
69 | | - } |
70 | | - if (connection.getProtocolInfo().serverProtocolVersion().olderThan(LegacyProtocolVersion.r1_0_0tor1_0_1)) { |
71 | | - this.writeAttribute(updateAttributes, "player.block_interaction_range", 4D, creativeMode ? CREATIVE_BLOCK_INTERACTION_RANGE : null, 1D); |
72 | | - } else { |
73 | | - this.writeAttribute(updateAttributes, "player.block_interaction_range", 4.5D, creativeMode ? CREATIVE_BLOCK_INTERACTION_RANGE : null, 0.5D); |
74 | | - } |
75 | | - if (connection.getProtocolInfo().serverProtocolVersion().olderThanOrEqualTo(LegacyProtocolVersion.r1_6_4)) { |
76 | | - this.writeAttribute(updateAttributes, "player.entity_interaction_range", 3D, creativeMode ? CREATIVE_ENTITY_INTERACTION_RANGE : null, 3D); |
77 | | - } else if (connection.getProtocolInfo().serverProtocolVersion().olderThanOrEqualTo(ProtocolVersion.v1_13_2)) { |
78 | | - this.writeAttribute(updateAttributes, "player.entity_interaction_range", 3D, creativeMode ? CREATIVE_ENTITY_INTERACTION_RANGE : null, 1D); |
| 37 | + @Redirect(method = "sendRangeAttributes", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/protocols/v1_20_3to1_20_5/rewriter/EntityPacketRewriter1_20_5;writeAttribute(Lcom/viaversion/viaversion/api/protocol/packet/PacketWrapper;Ljava/lang/String;DLjava/util/UUID;D)V")) |
| 38 | + private void useLegacyValues(EntityPacketRewriter1_20_5 instance, PacketWrapper wrapper, String attributeId, double base, UUID modifierId, double amount) { |
| 39 | + if (attributeId.equals("player.block_interaction_range") && wrapper.user().getProtocolInfo().serverProtocolVersion().olderThan(LegacyProtocolVersion.r1_0_0tor1_0_1)) { |
| 40 | + this.writeAttribute(wrapper, attributeId, 4D, modifierId, 1D); |
| 41 | + } else if (attributeId.equals("player.entity_interaction_range") && wrapper.user().getProtocolInfo().serverProtocolVersion().olderThanOrEqualTo(LegacyProtocolVersion.r1_6_4)) { |
| 42 | + this.writeAttribute(wrapper, attributeId, 3D, modifierId, 3D); |
79 | 43 | } else { |
80 | | - this.writeAttribute(updateAttributes, "player.entity_interaction_range", 3D, creativeMode ? CREATIVE_ENTITY_INTERACTION_RANGE : null, 2D); |
| 44 | + this.writeAttribute(wrapper, attributeId, base, modifierId, amount); |
81 | 45 | } |
82 | | - updateAttributes.scheduleSend(Protocol1_20_3To1_20_5.class); |
83 | 46 | } |
84 | 47 |
|
85 | 48 | } |
0 commit comments