NotEnoughMinecraft

NotEnoughMinecraft

你是否曾经想过在Minecraft里玩Minecraft,而无需在客户端安装任何模组?不想???不管怎样,现在你可以了!

NotEnoughMinecraft

你有没有想过在 Minecraft 里玩 Minecraft,而无需在客户端安装任何模组?没有???不管了,现在你可以了!

设置

  1. 安装 fabric-api 和 polymer。
  2. 此模组需要服务器资源包。最简单的方式是启用 polymer 的 autohost。
  3. 给自己一台电脑 /give @s not-enough-minecraft:computer 并将其放置下来。
  4. 右键点击电脑开始游玩。

操作

  • 移动、跳跃和疾跑的输入与你的默认输入相同
  • 破坏、放置、丢弃和拾取方块也使用你的默认输入
  • 使用滚轮或数字键来浏览快捷栏
  • 你可以右键*(开始)*使用物品。你可以再次右键来结束使用物品。
  • 你可以潜行来停止游玩并退出电脑
  • 你可以按下物品栏键来切换 FPS 计数器

因为这是一个仅服务端模组,它只能使用客户端发送给它的输入!

工作原理

游玩时,会创建一个假玩家并将其添加到服务器中。每个 tick 都会使用来自 tomalbrc 的服务端光线投射渲染器渲染出一张图像。渲染出的图像随后通过自定义屏幕物品显示给客户端,其中每个像素都可以使用自定义模型数据颜色来着色。

配置

配置文件位于 config/not-enough-minecraft.json。

{
  // 以方块为单位的渲染距离
  "renderDistance": 64,
  // 实验性实体渲染的开关
  "renderEntities": false,
  // 启用实体渲染时要渲染的实体数量
  "renderEntitiesAmount": 20,
  // 是否忽略光照等级,以最高光照等级渲染一切。
  "fullbright": false,
  // 视场角,工作方式与原版客户端 FOV 相同,最小值为 30,最大值为 110(Quake Pro)。
  "fov": 70,
  // 生物群系过渡值
  "biomeBlend": 1,
  // 应该用多少个线程渲染所有实例。这可用于增加或减少服务器上的 CPU 使用率,
  // 并直接影响 FPS 计数
  "renderThreadCount": 4,
  // 当生成假玩家实体时执行的命令列表
  // 例如可用于给予自定义物品或移动到特定位置
  "spawnCommands": [
    "item replace entity @s hotbar.0 with minecraft:grass_block",
    "item replace entity @s hotbar.1 with minecraft:dirt",
    "item replace entity @s hotbar.2 with minecraft:stone",
    "item replace entity @s hotbar.3 with minecraft:cobblestone",
    "item replace entity @s hotbar.4 with minecraft:oak_planks",
    "item replace entity @s hotbar.5 with minecraft:oak_log",
    "item replace entity @s hotbar.6 with minecraft:glass",
    "item replace entity @s hotbar.7 with minecraft:oak_door",
    "item replace entity @s hotbar.8 with minecraft:oak_stairs"
  ],
  // 是否允许假玩家放置方块
  "allowPlacing": true,
  // 是否允许假玩家破坏方块
  "allowBreaking": true,
  // 是否允许假玩家使用物品
  "allowItemUsage": true,
  // 是否允许假玩家丢弃物品
  "allowDropping": false,
  // 是否允许假玩家从方块中拾取物品
  "allowPicking": true
}

许可证

此模组使用了来自 https://github.com/tomalbrc/camera-obscura 的渲染代码。de.tomalbrc.cameraobscura 包中的所有代码均按 LGPL-3.0-only 许可。 使用自定义屏幕物品显示渲染图像的想法取自 https://github.com/tomalbrc/BlockBoy-Arcade,其按 MIT 许可。

限制

这是一个相当邪门/取巧的周末项目。

像这样在服务端渲染效率相当低下,会显著增加 CPU 使用率,在低端配置上可能导致问题。

我们没有任何方法来压缩或优化屏幕数据以便通过网络发送,因此我们必须每帧发送原始像素。在查看电脑屏幕时,这可能会导致网络负载增加。在使用默认 Minecraft 网络压缩的情况下,每个屏幕预计会增加 300-400 KiB/s。

假玩家在几乎所有方面都会像普通玩家一样行事,例如世界交互、命令、玩家列表、玩家数据等。 每个玩家都会获得自己专属的假玩家同伴,它具有相同的 UUID,但最低位加一。