Minecraft 块部分如何存储

2024-04-05

我目前正在制作一个 Minecraft 块操作程序,我想知道 Minecraft 块部分是如何存储的。

来自Minecraft Wiki 关于 Minecraft 如何存储其区块的文章 http://minecraft.gamepedia.com/Chunk_format.

部分:复合标签列表,每个标签都是一个子块。

一个单独的部分。

Y:该部分的 Y 索引(不是坐标)。范围 0 到 15(从下到上),没有重复项,但如果为空,某些部分可能会丢失。

块:定义地形的 4096 字节块 ID。每块 8 位,加上 ?来自下面的添加标签的位。

添加:可能不存在。 2048 字节的附加块 ID 数据。添加到(组合)上述块 ID 以形成 0 到 4095 范围内的真实块 ID 的值。每个块 4 位。组合是通过将该值移至左侧 8 位,然后将其添加到上面的块 ID 来完成的。

数据:2048 字节的块数据另外定义了部分地形。每块 4 位。

BlockLight:2048字节记录每个块中块发射的光量。与加载时重新计算相比,加载时间更快。每块 4 位。

SkyLight:2048 字节记录照射到每个块的阳光或月光量。每块 4 位。

但我不明白如何Blocks已读。块中的每个部分都是 16 x 16 x 16 块。但是 Minecraft 将块存储在1-d array.


3D 数组也线性存储在 RAM 中。您需要将坐标转换为索引。对于“Blocks”标签,其公式如下:

Index = Ycoord * 256 + Zcoord * 16 + Xcoord

这称为 YZX 阶。标签“HeightMap”或“Biomes”使用 ZX 顺序(索引 = Zcoord * 16 + X)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Minecraft 块部分如何存储 的相关文章

  • 如何在 Ubuntu 20.04 上制作 Minecraft 服务器

    我的世界 是有史以来最受欢迎的游戏之一 这是一款沙盒视频游戏 玩家可以探索无限的世界并建造不同的结构 从简单的房屋到高耸的摩天大楼 本教程介绍如何在 Ubuntu 20 04 上创建 Minecraft 服务器 我们将使用 Systemd
  • 如何在 CentOS 7 上安装 Minecraft 服务器

    我的世界 是有史以来最受欢迎的游戏之一 这是一款关于放置方块并进行冒险的沙盒视频游戏 在本教程中 我们将完成在 CentOS 7 上安装和配置 Minecraft 服务器所需的步骤 我们将使用 Systemd 来运行 Minecraft 服
  • 将巨大的(95Mb)JSON 数组分割成更小的块?

    我以 JSON 的形式从数据库中导出了一些数据 它本质上只是一个 列表 其中包含一堆 900K objects 现在尝试将其导入到我的生产服务器上 但我有一些便宜的网络服务器 他们不喜欢我在 10 分钟内吃掉他们所有的资源 如何将该文件分割
  • 导入/加载带块的库

    情况 我正在尝试使用 Webpack 加载库 该库本身已使用 Webpack 分成多个块 项目 A 依赖于项目 B 项目 B 是使用 Webpack 构建的 由多个块组成 项目 A 现在通过动态导入加载项目 B 当项目 A 构建时 我希望在
  • 如何使用实例引用实例?

    我试图尽量减少创建实例的次数 因为我对 Java 不是特别熟练 目前我的 Main 中有一组其他类的实例 一个简单的例子 public final class ClassName extends JavaPlugin AntiSwear a
  • 这段代码的作用是什么?

    我不太确定这意味着什么或它在做什么 有人可以详细说明吗 Player player Player sender 它获取发送者引用的对象 并尝试将其转换为 Player 类型 Java 对象是强类型的 这意味着您必须声明对象的类型 如果发送者
  • Bukkit 从库存中移除物品

    我正在尝试检查玩家的库存中是否有物品 如果有则删除其中一个 这是我现在所拥有的 Material ammomat parseMaterial plugin getConfig getString game ammo material Ite
  • 如何用 C 语言按行块处理文本文件?

    我正在用 C 编写一个程序 该程序处理一个文本文件并跟踪每个唯一的单词 通过使用一个具有该单词的 char 数组和其出现次数的计数的结构 并将该结构存储到数据结构中 然而 作业中包含这样的内容 整个 txt 文件可能非常大 无法保存在主内存
  • 指针 - 减少内存消耗

    我一直在为 OpenGL 练习编写 Minecraft 复制品 我猜有很多 但是在编写了基本渲染 API 后 我注意到真正的 Minecraft 使用了lot或内存 大约 800MB 我完全理解为什么它必须记住所有块以及小怪以及生成器的地形
  • 对齐音频以便使用网络音频 api 流畅播放

    我目前正在尝试弄清楚如何使用网络音频 API 播放分块音频 一切都正常 但是 大多数块之间的转换并不像我希望的那样顺利 有一个非常非常短暂的时刻大多数人之间保持沉默 我当前的加载和播放代码 const response await fetc
  • 如何从 Minecraft 编辑 .mca 文件?

    介绍 我想将我的各个 Minecraft 世界合并成一个世界 这似乎是一个相对容易的壮举 但随着我的研究 它演变成需要制作一个自定义程序 奋斗 我首先移动区域文件并将它们合并到一个区域文件夹中 这似乎是显而易见的解决方案 而且几乎有效 注意
  • 在 Python 中向 Minecraft 服务器发送登录数据包不起作用

    我有以下 Python 脚本 它的作用是尝试连接到 MineCraft 服务器 首先发送 握手 然后发送登录请求 协议规范可以在这里找到 http wiki vg 协议 http wiki vg Protocol 无论如何 python 脚
  • Stacktrace Java Eclipse 中的未知来源

    我有一个非常烦人的问题 当在 Eclipse 中从源代码中导出 jar 文件时 我不会在堆栈跟踪中获得有关发生错误的源代码和行号的信息 我已经检查了 ecplise 中项目的编译器设置 并且设置了类文件生成部分中的所有选项 我正在为 Min
  • 如何让conemu双击打开bat文件?

    我有一个家庭服务器 我在其中运行开发minecraft服务器 并已转移到conemu作为CMD替代品 除了每次我想启动服务器时 我都需要CD到DIR并运行start bat 有没有一种方法可以创建一个快捷方式 只需双击即可在conemu中启
  • 在 Laravel-Excel 中导出大数据

    使用此代码 我可以将 MyModel 的数据导出到 Excel 工作正常 Excel create Filename function excel excel gt sheet Contratos function sheet datos
  • Minecraft 插件 ScheduleSyncDelayedTask 错误

    我遇到了一个问题 并且在制作 Minecraft 插件和编写一般代码方面还很陌生 我正在尝试制作一个插件 在执行第二个命令之前等待大约 15 秒 但是当我尝试执行 plugin new Runnable 时 我现在的代码出现错误 我做了一些
  • 将字符写入 Java 套接字时 fsockopen 10053 错误

    Right 我正在尝试用 PHP 编写一个小脚本 将游戏中的聊天包发送到 Minecraft Deliberately low timeout mc fsockopen localhost 25565 errno err 3 现在 如果连接
  • 使用 C# 登录《我的世界》

    我正在尝试为自己和一些朋友创建一个简单的自定义 Minecraft 启动器 我不需要启动 Minecraft 的代码 只需要登录的实际代码行 例如 据我所知 您过去可以使用 string netResponse httpGET https
  • 如何将毫秒转换为天、小时、分钟

    我尝试这样做 long Plptime player getStatistic Statistic PLAY ONE TICK 50L from ticks to ms 1 tick 20 each sec by 50 gives apro
  • 如何使用 Dart 将列表拆分或分块为相等的部分?

    假设我有一个类似的列表 var letters a b c d e f g h 我想要一个列表 每个列表包含 2 个元素 var chunks a b c d e f g h 使用 Dart 执行此操作的好方法是什么 这是另一种方法 var

随机推荐