mirror of
https://github.com/ViaVersion/ViaForge.git
synced 2025-03-02 04:02:15 +01:00
Remove broken on ground fix
This commit is contained in:
parent
b153a5b623
commit
837f7fd871
viaforge-mc1122/src/main
java/de/florianmichael/viaforge/mixin/impl/fixes
resources
viaforge-mc1165/src/main
java/de/florianmichael/viaforge/mixin/fixes
resources
viaforge-mc1171/src/main
java/de/florianmichael/viaforge/mixin/fixes
resources
viaforge-mc1182/src/main
java/de/florianmichael/viaforge/mixin/fixes
resources
viaforge-mc1192/src/main
java/de/florianmichael/viaforge/mixin/fixes
resources
viaforge-mc1194/src/main
java/de/florianmichael/viaforge/mixin/fixes
resources
viaforge-mc1204/src/main
java/de/florianmichael/viaforge/mixin/fixes
resources
viaforge-mc1206/src/main
java/de/florianmichael/viaforge/mixin/fixes
resources
viaforge-mc1214/src/main
java/de/florianmichael/viaforge/mixin/fixes
resources
@ -1,56 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge
|
|
||||||
* Copyright (C) 2021-2025 FlorianMichael/EnZaXD <florian.michael07@gmail.com> and contributors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package de.florianmichael.viaforge.mixin.impl.fixes;
|
|
||||||
|
|
||||||
import com.mojang.authlib.GameProfile;
|
|
||||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
|
||||||
import de.florianmichael.viaforge.common.ViaForgeCommon;
|
|
||||||
import net.minecraft.client.entity.AbstractClientPlayer;
|
|
||||||
import net.minecraft.client.entity.EntityPlayerSP;
|
|
||||||
import net.minecraft.world.World;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
|
||||||
|
|
||||||
@Mixin(EntityPlayerSP.class)
|
|
||||||
public class MixinEntityPlayerSP extends AbstractClientPlayer {
|
|
||||||
|
|
||||||
@Shadow private boolean prevOnGround;
|
|
||||||
|
|
||||||
public MixinEntityPlayerSP(World worldIn, GameProfile playerProfile) {
|
|
||||||
super(worldIn, playerProfile);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Redirect(method = "onUpdateWalkingPlayer", at = @At(value = "FIELD", target = "Lnet/minecraft/client/entity/EntityPlayerSP;prevOnGround:Z", ordinal = 0))
|
|
||||||
public boolean emulateIdlePacket(EntityPlayerSP instance) {
|
|
||||||
if (ViaForgeCommon.getManager().getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_8)) {
|
|
||||||
// <= 1.8 spams the idle packet instead of only sending it when the ground state changes
|
|
||||||
// So we invert the original logic:
|
|
||||||
// if (prevOnGround != onGround) sendPacket
|
|
||||||
// To be like:
|
|
||||||
// if (!onGround != onGround) sendPacket
|
|
||||||
// Which is the same as:
|
|
||||||
// if (true) sendPacket
|
|
||||||
return !onGround;
|
|
||||||
}
|
|
||||||
return prevOnGround;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -15,8 +15,7 @@
|
|||||||
"connect.MixinNetworkManager",
|
"connect.MixinNetworkManager",
|
||||||
"connect.MixinNetworkManager_5",
|
"connect.MixinNetworkManager_5",
|
||||||
"MixinServerData",
|
"MixinServerData",
|
||||||
"connect.MixinServerPinger",
|
"connect.MixinServerPinger"
|
||||||
"fixes.MixinEntityPlayerSP"
|
|
||||||
],
|
],
|
||||||
"verbose": true
|
"verbose": true
|
||||||
}
|
}
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge
|
|
||||||
* Copyright (C) 2021-2025 FlorianMichael/EnZaXD <florian.michael07@gmail.com> and contributors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package de.florianmichael.viaforge.mixin.fixes;
|
|
||||||
|
|
||||||
import com.mojang.authlib.GameProfile;
|
|
||||||
import de.florianmichael.viaforge.common.ViaForgeCommon;
|
|
||||||
import net.minecraft.client.entity.player.AbstractClientPlayerEntity;
|
|
||||||
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
|
||||||
import net.minecraft.client.world.ClientWorld;
|
|
||||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
|
||||||
|
|
||||||
@Mixin(ClientPlayerEntity.class)
|
|
||||||
public class MixinClientPlayerEntity extends AbstractClientPlayerEntity {
|
|
||||||
|
|
||||||
@Shadow private boolean lastOnGround;
|
|
||||||
|
|
||||||
public MixinClientPlayerEntity(ClientWorld world, GameProfile profile) {
|
|
||||||
super(world, profile);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Redirect(method = "sendPosition", at = @At(value = "FIELD", target = "Lnet/minecraft/client/entity/player/ClientPlayerEntity;lastOnGround:Z", ordinal = 0))
|
|
||||||
public boolean emulateIdlePacket(ClientPlayerEntity instance) {
|
|
||||||
if (ViaForgeCommon.getManager().getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_8)) {
|
|
||||||
// <= 1.8 spams the idle packet instead of only sending it when the ground state changes
|
|
||||||
// So we invert the original logic:
|
|
||||||
// if (prevOnGround != onGround) sendPacket
|
|
||||||
// To be like:
|
|
||||||
// if (!onGround != onGround) sendPacket
|
|
||||||
// Which is the same as:
|
|
||||||
// if (true) sendPacket
|
|
||||||
return !onGround;
|
|
||||||
}
|
|
||||||
return lastOnGround;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -14,8 +14,7 @@
|
|||||||
"connect.MixinNetworkManager_1",
|
"connect.MixinNetworkManager_1",
|
||||||
"MixinServerData",
|
"MixinServerData",
|
||||||
"MixinServerListScreen",
|
"MixinServerListScreen",
|
||||||
"connect.MixinServerPinger",
|
"connect.MixinServerPinger"
|
||||||
"fixes.MixinClientPlayerEntity"
|
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge
|
|
||||||
* Copyright (C) 2021-2025 FlorianMichael/EnZaXD <florian.michael07@gmail.com> and contributors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package de.florianmichael.viaforge.mixin.fixes;
|
|
||||||
|
|
||||||
import com.mojang.authlib.GameProfile;
|
|
||||||
import de.florianmichael.viaforge.common.ViaForgeCommon;
|
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
|
||||||
import net.minecraft.client.player.AbstractClientPlayer;
|
|
||||||
import net.minecraft.client.player.LocalPlayer;
|
|
||||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
|
||||||
|
|
||||||
@Mixin(LocalPlayer.class)
|
|
||||||
public class MixinLocalPlayer extends AbstractClientPlayer {
|
|
||||||
|
|
||||||
@Shadow private boolean lastOnGround;
|
|
||||||
|
|
||||||
public MixinLocalPlayer(ClientLevel level, GameProfile profile) {
|
|
||||||
super(level, profile);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Redirect(method = "sendPosition", at = @At(value = "FIELD", target = "Lnet/minecraft/client/player/LocalPlayer;lastOnGround:Z", ordinal = 0))
|
|
||||||
public boolean emulateIdlePacket(LocalPlayer instance) {
|
|
||||||
if (ViaForgeCommon.getManager().getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_8)) {
|
|
||||||
// <= 1.8 spams the idle packet instead of only sending it when the ground state changes
|
|
||||||
// So we invert the original logic:
|
|
||||||
// if (prevOnGround != onGround) sendPacket
|
|
||||||
// To be like:
|
|
||||||
// if (!onGround != onGround) sendPacket
|
|
||||||
// Which is the same as:
|
|
||||||
// if (true) sendPacket
|
|
||||||
return !onGround;
|
|
||||||
}
|
|
||||||
return lastOnGround;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -13,8 +13,7 @@
|
|||||||
"MixinJoinMultiplayerScreen",
|
"MixinJoinMultiplayerScreen",
|
||||||
"MixinServerData",
|
"MixinServerData",
|
||||||
"connect.MixinServerStatusPinger",
|
"connect.MixinServerStatusPinger",
|
||||||
"MixinTitleScreen",
|
"MixinTitleScreen"
|
||||||
"fixes.MixinLocalPlayer",
|
|
||||||
"connect.MixinConnection_1",
|
"connect.MixinConnection_1",
|
||||||
"connect.MixinConnectScreen_1"
|
"connect.MixinConnectScreen_1"
|
||||||
],
|
],
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge
|
|
||||||
* Copyright (C) 2021-2025 FlorianMichael/EnZaXD <florian.michael07@gmail.com> and contributors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package de.florianmichael.viaforge.mixin.fixes;
|
|
||||||
|
|
||||||
import com.mojang.authlib.GameProfile;
|
|
||||||
import de.florianmichael.viaforge.common.ViaForgeCommon;
|
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
|
||||||
import net.minecraft.client.player.AbstractClientPlayer;
|
|
||||||
import net.minecraft.client.player.LocalPlayer;
|
|
||||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
|
||||||
|
|
||||||
@Mixin(LocalPlayer.class)
|
|
||||||
public class MixinLocalPlayer extends AbstractClientPlayer {
|
|
||||||
|
|
||||||
@Shadow private boolean lastOnGround;
|
|
||||||
|
|
||||||
public MixinLocalPlayer(ClientLevel level, GameProfile profile) {
|
|
||||||
super(level, profile);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Redirect(method = "sendPosition", at = @At(value = "FIELD", target = "Lnet/minecraft/client/player/LocalPlayer;lastOnGround:Z", ordinal = 0))
|
|
||||||
public boolean emulateIdlePacket(LocalPlayer instance) {
|
|
||||||
if (ViaForgeCommon.getManager().getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_8)) {
|
|
||||||
// <= 1.8 spams the idle packet instead of only sending it when the ground state changes
|
|
||||||
// So we invert the original logic:
|
|
||||||
// if (prevOnGround != onGround) sendPacket
|
|
||||||
// To be like:
|
|
||||||
// if (!onGround != onGround) sendPacket
|
|
||||||
// Which is the same as:
|
|
||||||
// if (true) sendPacket
|
|
||||||
return !onGround;
|
|
||||||
}
|
|
||||||
return lastOnGround;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -14,8 +14,7 @@
|
|||||||
"MixinJoinMultiplayerScreen",
|
"MixinJoinMultiplayerScreen",
|
||||||
"MixinServerData",
|
"MixinServerData",
|
||||||
"connect.MixinServerStatusPinger",
|
"connect.MixinServerStatusPinger",
|
||||||
"MixinTitleScreen",
|
"MixinTitleScreen"
|
||||||
"fixes.MixinLocalPlayer"
|
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
|
@ -1,58 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge
|
|
||||||
* Copyright (C) 2021-2025 FlorianMichael/EnZaXD <florian.michael07@gmail.com> and contributors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package de.florianmichael.viaforge.mixin.fixes;
|
|
||||||
|
|
||||||
import com.mojang.authlib.GameProfile;
|
|
||||||
import de.florianmichael.viaforge.common.ViaForgeCommon;
|
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
|
||||||
import net.minecraft.client.player.AbstractClientPlayer;
|
|
||||||
import net.minecraft.client.player.LocalPlayer;
|
|
||||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
|
||||||
import net.minecraft.world.entity.player.ProfilePublicKey;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
|
||||||
|
|
||||||
@Mixin(LocalPlayer.class)
|
|
||||||
public class MixinLocalPlayer extends AbstractClientPlayer {
|
|
||||||
|
|
||||||
@Shadow private boolean lastOnGround;
|
|
||||||
|
|
||||||
public MixinLocalPlayer(ClientLevel p_234112_, GameProfile p_234113_, @Nullable ProfilePublicKey p_234114_) {
|
|
||||||
super(p_234112_, p_234113_, p_234114_);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Redirect(method = "sendPosition", at = @At(value = "FIELD", target = "Lnet/minecraft/client/player/LocalPlayer;lastOnGround:Z", ordinal = 0))
|
|
||||||
public boolean emulateIdlePacket(LocalPlayer instance) {
|
|
||||||
if (ViaForgeCommon.getManager().getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_8)) {
|
|
||||||
// <= 1.8 spams the idle packet instead of only sending it when the ground state changes
|
|
||||||
// So we invert the original logic:
|
|
||||||
// if (prevOnGround != onGround) sendPacket
|
|
||||||
// To be like:
|
|
||||||
// if (!onGround != onGround) sendPacket
|
|
||||||
// Which is the same as:
|
|
||||||
// if (true) sendPacket
|
|
||||||
return !onGround;
|
|
||||||
}
|
|
||||||
return lastOnGround;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -14,8 +14,7 @@
|
|||||||
"MixinJoinMultiplayerScreen",
|
"MixinJoinMultiplayerScreen",
|
||||||
"MixinServerData",
|
"MixinServerData",
|
||||||
"connect.MixinServerStatusPinger",
|
"connect.MixinServerStatusPinger",
|
||||||
"MixinTitleScreen",
|
"MixinTitleScreen"
|
||||||
"fixes.MixinLocalPlayer"
|
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge
|
|
||||||
* Copyright (C) 2021-2025 FlorianMichael/EnZaXD <florian.michael07@gmail.com> and contributors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package de.florianmichael.viaforge.mixin.fixes;
|
|
||||||
|
|
||||||
import com.mojang.authlib.GameProfile;
|
|
||||||
import de.florianmichael.viaforge.common.ViaForgeCommon;
|
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
|
||||||
import net.minecraft.client.player.AbstractClientPlayer;
|
|
||||||
import net.minecraft.client.player.LocalPlayer;
|
|
||||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
|
||||||
|
|
||||||
@Mixin(LocalPlayer.class)
|
|
||||||
public class MixinLocalPlayer extends AbstractClientPlayer {
|
|
||||||
|
|
||||||
@Shadow private boolean lastOnGround;
|
|
||||||
|
|
||||||
public MixinLocalPlayer(ClientLevel level, GameProfile profile) {
|
|
||||||
super(level, profile);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Redirect(method = "sendPosition", at = @At(value = "FIELD", target = "Lnet/minecraft/client/player/LocalPlayer;lastOnGround:Z", ordinal = 0))
|
|
||||||
public boolean emulateIdlePacket(LocalPlayer instance) {
|
|
||||||
if (ViaForgeCommon.getManager().getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_8)) {
|
|
||||||
// <= 1.8 spams the idle packet instead of only sending it when the ground state changes
|
|
||||||
// So we invert the original logic:
|
|
||||||
// if (prevOnGround != onGround) sendPacket
|
|
||||||
// To be like:
|
|
||||||
// if (!onGround != onGround) sendPacket
|
|
||||||
// Which is the same as:
|
|
||||||
// if (true) sendPacket
|
|
||||||
return !onGround;
|
|
||||||
}
|
|
||||||
return lastOnGround;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -14,8 +14,7 @@
|
|||||||
"MixinJoinMultiplayerScreen",
|
"MixinJoinMultiplayerScreen",
|
||||||
"MixinServerData",
|
"MixinServerData",
|
||||||
"connect.MixinServerStatusPinger",
|
"connect.MixinServerStatusPinger",
|
||||||
"MixinTitleScreen",
|
"MixinTitleScreen"
|
||||||
"fixes.MixinLocalPlayer"
|
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge
|
|
||||||
* Copyright (C) 2021-2025 FlorianMichael/EnZaXD <florian.michael07@gmail.com> and contributors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package de.florianmichael.viaforge.mixin.fixes;
|
|
||||||
|
|
||||||
import com.mojang.authlib.GameProfile;
|
|
||||||
import de.florianmichael.viaforge.common.ViaForgeCommon;
|
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
|
||||||
import net.minecraft.client.player.AbstractClientPlayer;
|
|
||||||
import net.minecraft.client.player.LocalPlayer;
|
|
||||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
|
||||||
|
|
||||||
@Mixin(LocalPlayer.class)
|
|
||||||
public class MixinLocalPlayer extends AbstractClientPlayer {
|
|
||||||
|
|
||||||
@Shadow private boolean lastOnGround;
|
|
||||||
|
|
||||||
public MixinLocalPlayer(ClientLevel level, GameProfile profile) {
|
|
||||||
super(level, profile);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Redirect(method = "sendPosition", at = @At(value = "FIELD", target = "Lnet/minecraft/client/player/LocalPlayer;lastOnGround:Z", ordinal = 0))
|
|
||||||
public boolean emulateIdlePacket(LocalPlayer instance) {
|
|
||||||
if (ViaForgeCommon.getManager().getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_8)) {
|
|
||||||
// <= 1.8 spams the idle packet instead of only sending it when the ground state changes
|
|
||||||
// So we invert the original logic:
|
|
||||||
// if (prevOnGround != onGround) sendPacket
|
|
||||||
// To be like:
|
|
||||||
// if (!onGround != onGround) sendPacket
|
|
||||||
// Which is the same as:
|
|
||||||
// if (true) sendPacket
|
|
||||||
return !onGround();
|
|
||||||
}
|
|
||||||
return lastOnGround;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -14,8 +14,7 @@
|
|||||||
"connect.MixinConnection",
|
"connect.MixinConnection",
|
||||||
"connect.MixinConnection_1",
|
"connect.MixinConnection_1",
|
||||||
"connect.MixinConnectScreen_1",
|
"connect.MixinConnectScreen_1",
|
||||||
"connect.MixinServerStatusPinger",
|
"connect.MixinServerStatusPinger"
|
||||||
"fixes.MixinLocalPlayer"
|
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
|
@ -1,57 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge
|
|
||||||
* Copyright (C) 2021-2025 FlorianMichael/EnZaXD <florian.michael07@gmail.com> and contributors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package de.florianmichael.viaforge.mixin.fixes;
|
|
||||||
|
|
||||||
import com.mojang.authlib.GameProfile;
|
|
||||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
|
||||||
import de.florianmichael.viaforge.common.ViaForgeCommon;
|
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
|
||||||
import net.minecraft.client.player.AbstractClientPlayer;
|
|
||||||
import net.minecraft.client.player.LocalPlayer;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
|
||||||
|
|
||||||
@Mixin(LocalPlayer.class)
|
|
||||||
public class MixinLocalPlayer extends AbstractClientPlayer {
|
|
||||||
|
|
||||||
@Shadow
|
|
||||||
private boolean lastOnGround;
|
|
||||||
|
|
||||||
public MixinLocalPlayer(ClientLevel level, GameProfile profile) {
|
|
||||||
super(level, profile);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Redirect(method = "sendPosition", at = @At(value = "FIELD", target = "Lnet/minecraft/client/player/LocalPlayer;lastOnGround:Z", ordinal = 0))
|
|
||||||
public boolean emulateIdlePacket(LocalPlayer instance) {
|
|
||||||
if (ViaForgeCommon.getManager().getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_8)) {
|
|
||||||
// <= 1.8 spams the idle packet instead of only sending it when the ground state changes
|
|
||||||
// So we invert the original logic:
|
|
||||||
// if (prevOnGround != onGround) sendPacket
|
|
||||||
// To be like:
|
|
||||||
// if (!onGround != onGround) sendPacket
|
|
||||||
// Which is the same as:
|
|
||||||
// if (true) sendPacket
|
|
||||||
return !onGround();
|
|
||||||
}
|
|
||||||
return lastOnGround;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -14,8 +14,7 @@
|
|||||||
"connect.MixinConnection",
|
"connect.MixinConnection",
|
||||||
"connect.MixinConnection_1",
|
"connect.MixinConnection_1",
|
||||||
"connect.MixinConnectScreen_1",
|
"connect.MixinConnectScreen_1",
|
||||||
"connect.MixinServerStatusPinger",
|
"connect.MixinServerStatusPinger"
|
||||||
"fixes.MixinLocalPlayer"
|
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of ViaForge - https://github.com/FlorianMichael/ViaForge
|
|
||||||
* Copyright (C) 2021-2025 FlorianMichael/EnZaXD <florian.michael07@gmail.com> and contributors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package de.florianmichael.viaforge.mixin.fixes;
|
|
||||||
|
|
||||||
import com.mojang.authlib.GameProfile;
|
|
||||||
import de.florianmichael.viaforge.common.ViaForgeCommon;
|
|
||||||
import net.minecraft.client.multiplayer.ClientLevel;
|
|
||||||
import net.minecraft.client.player.AbstractClientPlayer;
|
|
||||||
import net.minecraft.client.player.LocalPlayer;
|
|
||||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
|
||||||
|
|
||||||
@Mixin(LocalPlayer.class)
|
|
||||||
public class MixinLocalPlayer extends AbstractClientPlayer {
|
|
||||||
|
|
||||||
@Shadow private boolean lastOnGround;
|
|
||||||
|
|
||||||
public MixinLocalPlayer(ClientLevel level, GameProfile profile) {
|
|
||||||
super(level, profile);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Redirect(method = "sendPosition", at = @At(value = "FIELD", target = "Lnet/minecraft/client/player/LocalPlayer;lastOnGround:Z", ordinal = 0))
|
|
||||||
public boolean emulateIdlePacket(LocalPlayer instance) {
|
|
||||||
if (ViaForgeCommon.getManager().getTargetVersion().olderThanOrEqualTo(ProtocolVersion.v1_8)) {
|
|
||||||
// <= 1.8 spams the idle packet instead of only sending it when the ground state changes
|
|
||||||
// So we invert the original logic:
|
|
||||||
// if (prevOnGround != onGround) sendPacket
|
|
||||||
// To be like:
|
|
||||||
// if (!onGround != onGround) sendPacket
|
|
||||||
// Which is the same as:
|
|
||||||
// if (true) sendPacket
|
|
||||||
return !onGround();
|
|
||||||
}
|
|
||||||
return lastOnGround;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -14,8 +14,7 @@
|
|||||||
"connect.MixinConnection",
|
"connect.MixinConnection",
|
||||||
"connect.MixinConnection_1",
|
"connect.MixinConnection_1",
|
||||||
"connect.MixinConnectScreen_1",
|
"connect.MixinConnectScreen_1",
|
||||||
"connect.MixinServerStatusPinger",
|
"connect.MixinServerStatusPinger"
|
||||||
"fixes.MixinLocalPlayer"
|
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
|
Loading…
Reference in New Issue
Block a user