
还原tick rate 的表现
henryyuyhy opened this issue · 3 comments
Motivation
1.20.3加入的tick指令中将tick rate设为20以下的数会降低客户端玩家的行为速度,让习惯了用carpet慢速检查机器时序的人非常不爽
Description
添加一个规则,启用时不降低玩家的移动速度,就像carpet做的那样
Other information
No response
我似乎发现了一个可行的方法,让服务端给客户端发tick rate的包时造假,让客户端不知道tps低于20
mixin如下(使用yarn mappings)
import net.minecraft.network.packet.s2c.play.UpdateTickRateS2CPacket;
@mixin(UpdateTickRateS2CPacket.class)
public class UpdateTickRateS2CPacketMixin {
/**
* @author yu
* @Reason fuck you mojang
*/
@overwrite
public static UpdateTickRateS2CPacket create(TickManager tickManager) {
float tickrate = tickManager.getTickRate();
if (tickrate <= 20 ) {
tickrate=20;
}
return new UpdateTickRateS2CPacket(tickrate, tickManager.isFrozen());
}
}
然后在if里面加上规则是否已启用的判断就行了
经测试,在单人中可用。在服务器上不需要客户端配合即可用。不影响minihud的tps显示。与其他模组的兼容性未知(但应该问题不大,谁会闲的没事改这玩意)