这个模组会在处理可消耗物品(任何食物物品)时,强制更多流程在客户端侧完成。
信息
默认情况下,Minecraft 需要玩家先等待服务器响应,之后才能完成物品的食用。在低延迟下,这种延迟几乎难以察觉;但在高延迟下就会明显得多,并导致玩家卡在进食动画中,直到服务器最终作出响应。
这个优化器会确保这些处理在客户端而不是服务器端完成,从而让物品可以无延迟地被食用,并且精确地在应完成的那个 tick 结束。服务器仍然会应用物品效果(例如金苹果提供的伤害吸收或生命恢复),而客户端则负责实际的进食过程。
高延迟还会偶尔在食用物品时导致不同步,迫使服务器为玩家重新开始进食流程。这会进一步拖慢整体食用速度,并让体验显得不一致。这个优化器通过在不需要时取消这些来自服务器的回调来修复此问题。
演示视频
服务器禁用方式
在使用流行反作弊(如 Grim 或 Vulkan)的服务器上,Consumable Optimizer 通常不太可能被判定为异常。不过,如果你的服务器有关于 Consumable Optimizer 触发检测的报告,或者你不希望玩家群体使用这个模组,你可以通过一个非常简单的插件来选择禁用。下面提供了一些示例代码:
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);
}
}
}
鸣谢
友情链接: 网易我的世界 | 泰拉瑞亚 | ocent云计算 | 米饭Minecraft插件文档 | 友链合作
历史访问人数:218,976 | 历史访问人次:329,204
今日访问人数:25,949 | 今日访问人次:30,955
昨日访问人数:30,537 | 昨日访问人次:36,142
Copyright © 2019-2026 我的世界服务器列表站. All rights reserved.
❤ Powered by GermMC 京ICP备17023959号-6