
消耗品优化器
在客户端处理进食,确保服务器不会拖慢进食过程。
消耗品优化器!
本模组在处理消耗品(任何食物物品)时,强制执行更多客户端侧的处理。
信息
默认情况下,Minecraft要求用户在消耗物品前等待服务器的响应。虽然这种延迟在低延迟(ping)下几乎察觉不到,但在高延迟下会变得非常明显,并导致玩家卡在食用动画中,直到服务器最终响应。 此优化器确保所有处理均在客户端侧而非服务器侧完成,使物品能够无延迟地消耗,并在应完成的准确游戏刻(tick)内完成。服务器仍然应用物品的效果(例如金苹果提供的吸收或再生效果),而客户端则处理实际的食用过程。
高延迟有时也会在消耗物品时导致同步丢失(desync),迫使服务器为玩家重新开始食用过程。这会进一步拖慢整体消耗物品的流程,并使其感觉不一致。此优化器通过在不需要时取消来自服务器的这些召回(recall),修复了此问题。
演示视频
服务器选择退出
在使用流行反作弊系统(如Grim或Vulkan)的服务器上,消耗品优化器不太可能触发误报。但是,如果你的服务器有关于消耗品优化器导致误报的报告,或者你不希望玩家群体使用此模组,你可以通过一个非常简单的插件选择退出。以下可以找到一些示例代码:
public class ConsumableOptimizerDisable extends JavaPlugin implements PluginMessageListener {
private static final String S2C_CHANNEL = "consumable_optimizer:disable_payload";
private static final String C2S_CHANNEL = "consumable_optimizer:handshake_payload";
@Override
public void onEnable() {
this.getServer().getMessenger().registerOutgoingPluginChannel(this, S2C_CHANNEL);
this.getServer().getMessenger().registerIncomingPluginChannel(this, C2S_CHANNEL, this);
}
@Override
public void onPluginMessageReceived(String channel, Player player, byte[] message) {
if (channel.equals(C2S_CHANNEL)) {
Bukkit.getScheduler().runTaskLater(this, () -> {
if (player.isOnline()) {
player.sendPluginMessage(this, S2C_CHANNEL, new byte[0]);
getLogger().info("Disabled consumable optimizer for " + player.getName());
}
}, 20L);
}
}
}
鸣谢
- 模组:Walksy
- 图标:SakuraFX
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。