跳转到主要内容
GTMC
  • 总序
    • 00引言
    • 01更新的概念与不同类型的更新
    • 02连续的方块更新及其分析方法
    • 01刻与刻间时序
    • 02初窥刻内时序
    • 03计划刻与计划刻元件
    • 04树电与脚电
    • 05方块实体
    • 06方块事件
    • 07活塞:方块事件与方块实体
    • 01Masa Gadget
    • 02投影模组教程
    • 00绪论
    • 01实体运动基础
    • 02实体移动过程及碰撞机制
    • 03实体自由运动相关公式推导
    • 04外界因素对运动的影响
    • 05LivingEntity运动机制
    • 06几类具体实体运动分析
    • 07实体运动应用举例
    • 08参考文献
    • 附录
    • I.附录
    • 01铁轨
    • 02铜灯
  • 附录
  • A.栈的概念
  • B.术语表

文章目录

  • 总序
    • 00引言
    • 01更新的概念与不同类型的更新
    • 02连续的方块更新及其分析方法
    • 01刻与刻间时序
    • 02初窥刻内时序
    • 03计划刻与计划刻元件
    • 04树电与脚电
    • 05方块实体
    • 06方块事件
    • 07活塞:方块事件与方块实体
    • 01Masa Gadget
    • 02投影模组教程
    • 00绪论
    • 01实体运动基础
    • 02实体移动过程及碰撞机制
    • 03实体自由运动相关公式推导
    • 04外界因素对运动的影响
    • 05LivingEntity运动机制
    • 06几类具体实体运动分析
    • 07实体运动应用举例
    • 08参考文献
    • 附录
    • I.附录
    • 01铁轨
    • 02铜灯
  • 附录
  • A.栈的概念
  • B.术语表
Loading article content
Loading
Loading article
GTMC

Graduate Texts in Minecraft

求知于方寸之间。

前言

文章
25
作者
12
最近修订
2026年8月

社区

  • 关于
  • 贡献者
  • 团队
  • QQ 群

参与

  • 参与贡献
  • 编辑政策
  • 议题

源码

  • 代码仓库
  • CC BY-NC-SA 4.0
  • Apache-2.0

本站为非官方 Minecraft 产品,与 Mojang Studios 无任何关联。

贡献者保留各自作品的版权。文章内容以 CC BY-NC-SA 4.0 协议发布,署名信息保存在文章元数据与源代码历史记录中。

© 2024–2026 GTMC Collectiveec529be

GTMC

  • 文章
  • PDF
  • 术语表
  • 关于
  • 贡献者
  • 总序
    • 00引言
    • 01更新的概念与不同类型的更新
    • 02连续的方块更新及其分析方法
    • 01刻与刻间时序
    • 02初窥刻内时序
    • 03计划刻与计划刻元件
    • 04树电与脚电
    • 05方块实体
    • 06方块事件
    • 07活塞:方块事件与方块实体
    • 01Masa Gadget
    • 02投影模组教程
    • 00绪论
    • 01实体运动基础
    • 02实体移动过程及碰撞机制
    • 03实体自由运动相关公式推导
    • 04外界因素对运动的影响
    • 05LivingEntity运动机制
    • 06几类具体实体运动分析
    • 07实体运动应用举例
    • 08参考文献
    • 附录
    • I.附录
    • 01铁轨
    • 02铜灯
  • 附录
  • A.栈的概念
  • B.术语表

文章目录

  • 总序
    • 00引言
    • 01更新的概念与不同类型的更新
    • 02连续的方块更新及其分析方法
    • 01刻与刻间时序
    • 02初窥刻内时序
    • 03计划刻与计划刻元件
    • 04树电与脚电
    • 05方块实体
    • 06方块事件
    • 07活塞:方块事件与方块实体
    • 01Masa Gadget
    • 02投影模组教程
    • 00绪论
    • 01实体运动基础
    • 02实体移动过程及碰撞机制
    • 03实体自由运动相关公式推导
    • 04外界因素对运动的影响
    • 05LivingEntity运动机制
    • 06几类具体实体运动分析
    • 07实体运动应用举例
    • 08参考文献
    • 附录
    • I.附录
    • 01铁轨
    • 02铜灯
  • 附录
  • A.栈的概念
  • B.术语表
Loading article content
Loading
Loading article
APP I实体运动
路径: EntityMove/09-附录.zh.md
BFladderbeanawa
字数: 3,545
预计阅读时间: 14 分钟
最后编辑: 2026-07-08
贡献者:
  • BBFladderbeanawa
创建时间:
2026-07-07
最后编辑:
2026-07-08
链接:
https://www.techmc.wiki/zh/articles/entity-motion-intro/appendix
复用
CC BY-NC-SA 4.0

I. 附录

1 附录 A 常见实体运动属性

下面总结一些常见的实体的运动相关属性,其中运算顺序含义见 3.1 节,A 为重力之外的某种加速。为了方便实际应用,这里给出的是实体的速度乘数,也就是公式中用到的 "k",阻力系数并未直接给出。

表 A1 常见实体运动属性表

实体重力/(m/gt2m/gt^2m/gt2)速度乘数(k 值)高度/m宽度/m眼部高度/m运算顺序1
TNT0.040.980.980.980.15GMD
下落的方块0.040.980.980.980.833GMD
空中的物品0.040.9820.250.250.2125GMD
空中的经验球0.030.9830.50.50.425GMD
空中的船0.04水平 0.9,Y 轴 10.56251.3750.5625GDM
空中的矿车0.040.950.70.980.595GMD
空中的箭矢/三叉戟0.0540.9940.50.50.13MDG
空中的雪球/鸡蛋/末影珍珠0.0340.99450.250.250.2125MDG6
空中的药水瓶0.0540.99450.250.250.2125MDG6
空中的附魔之瓶0.0740.99450.250.250.2125MDG6
空中的恶魂和末影龙火球00.954110.85MAD
空中的烈焰人火球/普通凋零之首00.9540.31250.31250.265625MAD
空中的鱼竿浮标0.030.920.250.250.2125GMD
空中的蓝色凋零之首00.7340.31250.31250.265625MAD
空中的羊驼唾沫0.0640.9940.250.250.2125MDG
无有效目标的潜影贝导弹0.0410.31250.31250.265625GM
空中或地面上的玩家(除体积和眼部高度外也适用于大部分生物和盔甲架)0.08水平 0.914,Y 轴 0.984站立时 1.8,睡觉和濒死时 0.2,鞘翅飞行和游泳和激流飞行时 0.6,潜行时 1.5站立、潜行、鞘翅飞行和游泳和激流飞行时 0.6,睡觉和濒死时 0.2睡觉时为 0.2,游泳、鞘翅飞行和激流飞行时为 0.4,潜行时为 1.27,站立时为 1.62MGD
水中的玩家(除体积和眼部高度外也适用于大部分生物和盔甲架)0.005水平取决于深海探索者等级,Y 轴 0.84 同上同上同上同上MDG
较深熔岩中的玩家(除体积和眼部高度外也适用于大部分生物和盔甲架)0.0050.5同上同上同上同上

2 附录 B 完整公式

这是第 3 节中部分公式对于不同实体类型的各种形式,除 MDA 类实体对应各式和求出Δdn\Delta d_{n}Δdn​、dnd_{n}dn​、v0v_{0}v0​、Δdmax⁡\Delta d_{\max}Δdmax​和dmax⁡d_{\max}dmax​的各式以及 "万能方程组" 基本确定无误外,其它公式不排除仍存在推导错误或录入错误,但缺少检验方法,希望有人帮忙检查一下。

2.1 MDA(移动 -> 阻力 -> 加速)

Δdn=kn−1v0t0+at02(1−kn−1)1−k(B.1.1)\Delta d_{n} = k^{n - 1}v_{0}t_{0} + \frac{a{t_{0}}^{2}\left( 1 - k^{n - 1} \right)}{1 - k} \tag{B.1.1}Δdn​=kn−1v0​t0​+1−kat0​2(1−kn−1)​(B.1.1) dn=v0t0(1−kn)1−k+at02[kn+n(1−k)−1](1−k)2(B.1.2)d_{n} = \frac{v_{0}t_{0}\left( 1 - k^{n} \right)}{1 - k} + \frac{a{t_{0}}^{2}\left\lbrack k^{n} + n(1 - k) - 1 \right\rbrack}{(1 - k)^{2}} \tag{B.1.2}dn​=1−kv0​t0​(1−kn)​+(1−k)2at0​2[kn+n(1−k)−1]​(B.1.2) v0=dnt0−1(1−k)−at0n1−kn+at01−k(B.1.3)v_{0} = \frac{d_{n}{t_{0}}^{- 1}(1 - k) - at_{0}n}{1 - k^{n}} + \frac{at_{0}}{1 - k} \tag{B.1.3}v0​=1−kndn​t0​−1(1−k)−at0​n​+1−kat0​​(B.1.3) n=−log⁡k[1k−v0(1−k)at0k](B.1.4)n = - \log_{k}\left\lbrack \frac{1}{k} - \frac{v_{0}(1 - k)}{at_{0}k} \right\rbrack \tag{B.1.4}n=−logk​[k1​−at0​kv0​(1−k)​](B.1.4) Δdmax⁡=at021−k(B.1.5)\Delta d_{\max} = \frac{a{t_{0}}^{2}}{1 - k} \tag{B.1.5}Δdmax​=1−kat0​2​(B.1.5) dmax⁡=v0t01−k(B.1.6)d_{\max} = \frac{v_{0}t_{0}}{1 - k} \tag{B.1.6}dmax​=1−kv0​t0​​(B.1.6) tan⁡αn=gt0(kn−1−1)kn−1(1−k)vx02+vz02−vy0vx02+vz02(B.1.7){\tan\alpha}_{n} = \frac{gt_{0}\left( k^{n - 1} - 1 \right)}{k^{n - 1}(1 - k)\sqrt{{v_{x0}}^{2} + {v_{z0}}^{2}}} - \frac{v_{y0}}{\sqrt{{v_{x0}}^{2} + {v_{z0}}^{2}}} \tag{B.1.7}tanαn​=kn−1(1−k)vx0​2+vz0​2​gt0​(kn−1−1)​−vx0​2+vz0​2​vy0​​(B.1.7) {y=vy(1−k)−gt0vx0(1−k)x−gt021−klog⁡k[1−x(1−k)vx0t0]y=vy(1−k)−gt0vz0(1−k)z−gt021−klog⁡k[1−z(1−k)vz0t0](B.1.8)\begin{cases}y = \frac{v_{y}(1 - k) - gt_{0}}{v_{x0}(1 - k)}x - \frac{g{t_{0}}^{2}}{1 - k}\log_{k}\lbrack 1 - \frac{x(1 - k)}{v_{x0}t_{0}}\rbrack \\ y = \frac{v_{y}(1 - k) - gt_{0}}{v_{z0}(1 - k)}z - \frac{g{t_{0}}^{2}}{1 - k}\log_{k}\left\lbrack 1 - \frac{z(1 - k)}{v_{z0}t_{0}} \right\rbrack \end{cases} \tag{B.1.8}⎩⎨⎧​y=vx0​(1−k)vy​(1−k)−gt0​​x−1−kgt0​2​logk​[1−vx0​t0​x(1−k)​]y=vz0​(1−k)vy​(1−k)−gt0​​z−1−kgt0​2​logk​[1−vz0​t0​z(1−k)​]​(B.1.8) tan⁡αxn2+zn2=gt02(1−kn)(1−k)2−gt02n−vy0′t0(1−kn)1−k−yn(B.1.9)\tan\alpha\sqrt{{x_{n}}^{2} + {z_{n}}^{2}} = \frac{g{t_{0}}^{2}\left( 1 - k^{n} \right)}{(1 - k)^{2}} - \frac{g{t_{0}}^{2}n - v_{y0}^{'}t_{0}\left( 1 - k^{n} \right)}{1 - k} - y_{n} \tag{B.1.9}tanαxn​2+zn​2​=(1−k)2gt0​2(1−kn)​−1−kgt0​2n−vy0′​t0​(1−kn)​−yn​(B.1.9)

2.2 DMA(阻力 -> 移动 -> 加速)

Δdn=knv0t0+at02(k−kn)1−k(B.2.1)\Delta d_{n} = k^{n}v_{0}t_{0} + \frac{a{t_{0}}^{2}\left( k - k^{n} \right)}{1 - k} \tag{B.2.1}Δdn​=knv0​t0​+1−kat0​2(k−kn)​(B.2.1) dn=v0t0(k−kn+1)1−k+at02k[kn+n(1−k)−1](1−k)2(B.2.2)d_{n} = \frac{v_{0}t_{0}\left( k - k^{n + 1} \right)}{1 - k} + \frac{a{t_{0}}^{2}k\left\lbrack k^{n} + n(1 - k) - 1 \right\rbrack}{(1 - k)^{2}} \tag{B.2.2}dn​=1−kv0​t0​(k−kn+1)​+(1−k)2at0​2k[kn+n(1−k)−1]​(B.2.2) v0=dnt0−1(1−k)−at0knk−kn+1+at01−k(B.2.3)v_{0} = \frac{d_{n}{t_{0}}^{- 1}(1 - k) - at_{0}kn}{k - k^{n + 1}} + \frac{at_{0}}{1 - k} \tag{B.2.3}v0​=k−kn+1dn​t0​−1(1−k)−at0​kn​+1−kat0​​(B.2.3) n=−log⁡k[1k−v0(1−k)at0k](B.2.4)n = - \log_{k}\left\lbrack \frac{1}{k} - \frac{v_{0}(1 - k)}{at_{0}k} \right\rbrack \tag{B.2.4}n=−logk​[k1​−at0​kv0​(1−k)​](B.2.4) Δdmax⁡=at02k1−k(B.2.5)\Delta d_{\max} = \frac{a{t_{0}}^{2}k}{1 - k} \tag{B.2.5}Δdmax​=1−kat0​2k​(B.2.5) dmax⁡=v0t0k1−k(B.2.6)d_{\max} = \frac{v_{0}t_{0}k}{1 - k} \tag{B.2.6}dmax​=1−kv0​t0​k​(B.2.6)

2.3 DAM(阻力 -> 加速 -> 移动)

Δdn=knv0t0+at02(1−kn)1−k(B.3.1)\Delta d_{n} = k^{n}v_{0}t_{0} + \frac{a{t_{0}}^{2}\left( 1 - k^{n} \right)}{1 - k} \tag{B.3.1}Δdn​=knv0​t0​+1−kat0​2(1−kn)​(B.3.1) dn=v0t0(k−kn+1)1−k+at02[kn+1+n(1−k)−k](1−k)2(B.3.2)d_{n} = \frac{v_{0}t_{0}\left( k - k^{n + 1} \right)}{1 - k} + \frac{a{t_{0}}^{2}\left\lbrack k^{n + 1} + n(1 - k) - k \right\rbrack}{(1 - k)^{2}} \tag{B.3.2}dn​=1−kv0​t0​(k−kn+1)​+(1−k)2at0​2[kn+1+n(1−k)−k]​(B.3.2) v0=dnt0−1(1−k)−at0nk−kn+1+at01−k(B.3.3)v_{0} = \frac{d_{n}{t_{0}}^{- 1}(1 - k) - at_{0}n}{k - k^{n + 1}} + \frac{at_{0}}{1 - k} \tag{B.3.3}v0​=k−kn+1dn​t0​−1(1−k)−at0​n​+1−kat0​​(B.3.3) n=−log⁡k[1−v0(1−k)at0](B.3.4)n = - \log_{k}\left\lbrack 1 - \frac{v_{0}(1 - k)}{at_{0}} \right\rbrack \tag{B.3.4}n=−logk​[1−at0​v0​(1−k)​](B.3.4) Δdmax⁡=at021−k(B.3.5)\Delta d_{\max} = \frac{a{t_{0}}^{2}}{1 - k} \tag{B.3.5}Δdmax​=1−kat0​2​(B.3.5) dmax⁡=v0t0k1−k(B.3.6)d_{\max} = \frac{v_{0}t_{0}k}{1 - k} \tag{B.3.6}dmax​=1−kv0​t0​k​(B.3.6)

2.4 MAD(移动 -> 加速 -> 阻力)

Δdn=kn−1v0t0+at02(k−kn)1−k(B.4.1)\Delta d_{n} = k^{n - 1}v_{0}t_{0} + \frac{a{t_{0}}^{2}\left( k - k^{n} \right)}{1 - k} \tag{B.4.1}Δdn​=kn−1v0​t0​+1−kat0​2(k−kn)​(B.4.1) dn=v0t0(1−kn)1−k+at02k[kn+n(1−k)−1](1−k)2(B.4.2)d_{n} = \frac{v_{0}t_{0}\left( 1 - k^{n} \right)}{1 - k} + \frac{a{t_{0}}^{2}k\left\lbrack k^{n} + n(1 - k) - 1 \right\rbrack}{(1 - k)^{2}} \tag{B.4.2}dn​=1−kv0​t0​(1−kn)​+(1−k)2at0​2k[kn+n(1−k)−1]​(B.4.2) v0=dnt0−1(1−k)−at0kn1−kn+at0k1−k(B.4.3)v_{0} = \frac{d_{n}{t_{0}}^{- 1}(1 - k) - at_{0}kn}{1 - k^{n}} + \frac{at_{0}k}{1 - k} \tag{B.4.3}v0​=1−kndn​t0​−1(1−k)−at0​kn​+1−kat0​k​(B.4.3) n=−log⁡k[1k−v0(1−k)at0k2](B.4.4)n = - \log_{k}\left\lbrack \frac{1}{k} - \frac{v_{0}(1 - k)}{at_{0}k^{2}} \right\rbrack \tag{B.4.4}n=−logk​[k1​−at0​k2v0​(1−k)​](B.4.4) Δdmax⁡=at02k1−k(B.4.5)\Delta d_{\max} = \frac{a{t_{0}}^{2}k}{1 - k} \tag{B.4.5}Δdmax​=1−kat0​2k​(B.4.5) dmax⁡=v0t01−k(B.4.6)d_{\max} = \frac{v_{0}t_{0}}{1 - k} \tag{B.4.6}dmax​=1−kv0​t0​​(B.4.6)

2.5 AMD(加速 -> 移动 -> 阻力)

Δdn=kn−1v0t0+at02(1−kn)1−k(B.5.1)\Delta d_{n} = k^{n - 1}v_{0}t_{0} + \frac{a{t_{0}}^{2}\left( 1 - k^{n} \right)}{1 - k} \tag{B.5.1}Δdn​=kn−1v0​t0​+1−kat0​2(1−kn)​(B.5.1) dn=v0t0(1−kn)1−k+at02[kn+1+n(1−k)−k](1−k)2(B.5.2)d_{n} = \frac{v_{0}t_{0}\left( 1 - k^{n} \right)}{1 - k} + \frac{a{t_{0}}^{2}\left\lbrack k^{n + 1} + n(1 - k) - k \right\rbrack}{(1 - k)^{2}} \tag{B.5.2}dn​=1−kv0​t0​(1−kn)​+(1−k)2at0​2[kn+1+n(1−k)−k]​(B.5.2) v0=dnt0−1(1−k)−at0n1−kn+at0k1−k(B.5.3)v_{0} = \frac{d_{n}{t_{0}}^{- 1}(1 - k) - at_{0}n}{1 - k^{n}} + \frac{at_{0}k}{1 - k} \tag{B.5.3}v0​=1−kndn​t0​−1(1−k)−at0​n​+1−kat0​k​(B.5.3) n=−log⁡k[1−v0(1−k)at0k](B.5.4)n = - \log_{k}\left\lbrack 1 - \frac{v_{0}(1 - k)}{at_{0}k} \right\rbrack \tag{B.5.4}n=−logk​[1−at0​kv0​(1−k)​](B.5.4) Δdmax⁡=at021−k(B.5.5)\Delta d_{\max} = \frac{a{t_{0}}^{2}}{1 - k} \tag{B.5.5}Δdmax​=1−kat0​2​(B.5.5) dmax⁡=v0t01−k(B.5.6)d_{\max} = \frac{v_{0}t_{0}}{1 - k} \tag{B.5.6}dmax​=1−kv0​t0​​(B.5.6) tan⁡αn=gt0(kn−1)kn−1(1−k)vx02+vz02−vy0vx02+vz02(B.5.7){\tan\alpha}_{n} = \frac{gt_{0}\left( k^{n} - 1 \right)}{k^{n - 1}(1 - k)\sqrt{{v_{x0}}^{2} + {v_{z0}}^{2}}} - \frac{v_{y0}}{\sqrt{{v_{x0}}^{2} + {v_{z0}}^{2}}} \tag{B.5.7}tanαn​=kn−1(1−k)vx0​2+vz0​2​gt0​(kn−1)​−vx0​2+vz0​2​vy0​​(B.5.7) tan⁡αxn2+zn2=gt02(k−kn+1)(1−k)2−gt02n−vy0′t0(1−kn)1−k−yn(B.5.8)\tan\alpha\sqrt{{x_{n}}^{2} + {z_{n}}^{2}} = \frac{g{t_{0}}^{2}\left( k - k^{n + 1} \right)}{(1 - k)^{2}} - \frac{g{t_{0}}^{2}n - v_{y0}^{'}t_{0}\left( 1 - k^{n} \right)}{1 - k} - y_{n} \tag{B.5.8}tanαxn​2+zn​2​=(1−k)2gt0​2(k−kn+1)​−1−kgt0​2n−vy0′​t0​(1−kn)​−yn​(B.5.8)

2.6 ADM(加速 -> 阻力 -> 移动)

Δdn=knv0t0+at02(k−kn+1)1−k(B.6.1)\Delta d_{n} = k^{n}v_{0}t_{0} + \frac{a{t_{0}}^{2}\left( k - k^{n + 1} \right)}{1 - k} \tag{B.6.1}Δdn​=knv0​t0​+1−kat0​2(k−kn+1)​(B.6.1) dn=v0t0(k−kn+1)1−k+at02k[kn+1+n(1−k)−k](1−k)2(B.6.2)d_{n} = \frac{v_{0}t_{0}\left( k - k^{n + 1} \right)}{1 - k} + \frac{a{t_{0}}^{2}k\left\lbrack k^{n + 1} + n(1 - k) - k \right\rbrack}{(1 - k)^{2}} \tag{B.6.2}dn​=1−kv0​t0​(k−kn+1)​+(1−k)2at0​2k[kn+1+n(1−k)−k]​(B.6.2) v0=dnt0−1(1−k)−at0knk−kn+1+at0k1−k(B.6.3)v_{0} = \frac{d_{n}{t_{0}}^{- 1}(1 - k) - at_{0}kn}{k - k^{n + 1}} + \frac{at_{0}k}{1 - k} \tag{B.6.3}v0​=k−kn+1dn​t0​−1(1−k)−at0​kn​+1−kat0​k​(B.6.3) n=−log⁡k[1−v0(1−k)at0k](B.6.4)n = - \log_{k}\left\lbrack 1 - \frac{v_{0}(1 - k)}{at_{0}k} \right\rbrack \tag{B.6.4}n=−logk​[1−at0​kv0​(1−k)​](B.6.4) Δdmax⁡=at02k1−k(B.6.5)\Delta d_{\max} = \frac{a{t_{0}}^{2}k}{1 - k} \tag{B.6.5}Δdmax​=1−kat0​2k​(B.6.5) dmax⁡=v0t0k1−k(B.6.6)d_{\max} = \frac{v_{0}t_{0}k}{1 - k} \tag{B.6.6}dmax​=1−kv0​t0​k​(B.6.6)

3 附录 C 研究环境及辅助性工具

大部分实验内容来自 Minecraft Java 版 1.16.4,极少部分来自 Java 版 1.16.5 的 MCP,在 1.16.4 的实验中用到了以下辅助 Mod:

(1) fabric-carpet-1.16.4-1.4.17+v201111

(2) mcwmem-1.16.4-20210714

(3) chunkmap-20210718

(4) malilib-fabric-1.16.4-0.10.0-dev.21+arne.1

(5) minihud-fabric-1.16.4-0.19.0-dev.20201103.184029

(6) tweakeroo-fabric-1.16.4-0.10.0-dev.20201110.132827

mcwmem 全称为 Minecraft World Manipulation Enchantment Mod(Minecraft 世界控制增强,似乎名称起的太大了,现已重命名为 MessMod),是我临时赶工期开发的一个用于进行世界数据访问和修改的 Mod,内容很乱,当时功能较不完善且仅支持 1.16.4 和 1.16.5,但是够研究使用。最近又对此进行了一些进一步开发,较新版本可以在以下地址下载:

MOD:

https://modrinth.com/mod/messmod

https://github.com/lovexyn0827/MessMod/releases/tag/1.16.4-20220408

README:

https://github.com/lovexyn0827/MessMod/blob/main/README.md。

https://github.com/lovexyn0827/MessMod/blob/master/README_zh_cn.md

实体运动研究中不能过于相信贴图(或者说是客户端上显示出的实体以及碰撞箱),因为贴图位置比在服务端上实体的真正位置通常是滞后的,研究过程中太相信贴图那么可以认为第一步就输了,而这个 Mod 个人认为最大的功能就是正确地显示服务端上实体的碰撞箱位置,防止被客户端欺骗。

chunkmap 是我主要在 7 月 9-18 日开发的一个用于可视化区块的加载、生成和区块加载票的 Mod,目前功能趋于完善。

最新版本下载地址:

https://github.com/lovexyn0827/Chunkmap/releases/tag/v20210825

https://modrinth.com/mod/chunkmap

MCBBS 上的介绍贴:

https://www.mcbbs.net/thread-1225181-1-1.html。

文中涉及所有源代码由 minecraft fabric 中 genSources 生成,mapping 使用 yarn-1.16.4+build.1-v2,如需要可以自行反编译。

用到的一些小程序(请在 classpath 中包含反混淆的 Minecraft 及其运行库):

https://github.com/lovexyn0827/Entity。

4 附录 D 主要符号及单位

这里仿照国际单位制选取时间和长度作为两个基本单位。定义时间是用于描述某一过程经过的运算周期的量,长度是用于描述两个点之间距离的量。常用单位及其换算关系如下,其中格与米是等价的,大家可以按照个人喜好使用,文中以米为准:

表 D1 主要符号表

量单位名符号简要的定义换算
长度米m完整方块的棱长1m
=1b
=16px
=1/16 区块
格b完整方块的棱长
像素px方块最小渲染单元的边长
区块无一个区块俯视图的边长
时间游戏刻gt一个游戏刻代表的时间1gt
=1/20s
=1/2 红石刻
无卡顿的秒s在 TPS 为 20 时的一秒
红石刻无一档红石中继器的延迟
速度米每刻m/gt1m/gt
=20m/s
米每秒m/s
加速度米每平方刻m/gt2m/gt^2m/gt21m/gt2m/gt^2m/gt2
=400m/s2m/s^2m/s2
米每平方秒m/s2m/s^2m/s2
阻力系数负一次方刻gt−1gt^{-1}gt−1

当然,这些单位的使用没有必要那么严格,把仅有 m 和 gt 组成的单位都看成 1 也行。

5 附录 E 定义索引

5.1 A

AI 加速度 (6)

5.2 B

爆炸半径 (5.15)

爆炸半径利用率 (8.1)

爆炸接触率 (5.15)

爆炸利用率 (8.1)

爆炸伤害半径 (5.15)

爆炸威力 (5.15)

爆炸影响力 (5.15)

爆炸中心 (5.15)

5.3 C

侧向加速度系数 (6)

冲量 (2.1)

5.4 D

地面移动加速度 (6)

地面阻力 (2.1)

5.5 F

FallDistance(2.4)

flyingSpeed(6.2)

forwardSpeed(6.2)

horizontalCollision(2.4)

方块网格 (4.2)

方块坐标 (2.1)

飞行时间利用率 (8.1)

飞行移动加速度 (6)

俯仰角 (2.1)

5.6 G

根实体 (2.2)

固体实体 (4.1)

5.7 H

horizontalCollision(2.4)

滑度 (5.4)

火球类 (2.3)

5.8 J

击退 (5.13)

加速度 (2.1)

加速度利用率 (8.1)

检查方块网格碰撞 (5.1)

接触率利用率 (8.1)

5.9 K

可攀登方块 (6)

空气阻力 (2.1)

空气阻力系数 (2.1)

5.10 L

LivingEntity(2.3)

流体加速 (2.1)

流体流向向量 (5.7)

流体深度阀值 (6)

流体阻力 (2.1)

5.11 M

Motion (2.1)

movementMultiplier(5.1)

movementSpeed(2.1)

5.12 N

noClip(2.4)

5.13 P

PersistentProjectileEntity(2.3)

pistonMovementDelta(2.4)

pistonMovementTick(2.4)

碰撞箱 (2.1)

偏航角 (2.1)

5.14 Q

前向加速度系数 (6.2)

取样点 (5.15)

5.15 R

raycast(4.2)

5.16 S

sidewaysSpeed(6.2)

stepHeight(2.4)

实际位移趋势 (4.1)

实体 ID (2.4)

实体基础运算 (2.4)

实体挤压 (5.10)

实体所处方块 (5)

实体下方方块 (5)

实体支撑方块 (5)

实体着陆方块 (5)

输入位移 (4.1)

拴绳固定点 (5.19)

速度 (2.1)

速度乘数 (2.1)

5.17 T

同位实体 (2.2)

弹射物 (2.3)

投掷物 (2.3)

5.18 U

upwardSpeed(6.2)

5.19 V

verticalCollision(2.4)

5.20 W

位移趋势 (4.1)

位移趋势预处理 (4.1)

位移确定 (2.1)

5.21 X

向上的加速度系数 (6.2)

5.22 Y

沿轴移动 (4.1)

坐标 (2.1)

移动 (2.1)

5.23 Z

着地 (2.4)

Footnotes

  1. 以实体只受重力和一般阻力时为准,其他情况下可以参考 6.1 节或第 7 节。 ↩

  2. 如需高精度计算水平运动,建议 X、Z 轴上使用这里给出的数值的单精度浮点真实值,可在表 2.5 中找到 ↩

  3. 如需高精度计算竖直运动,建议 Y 轴上使用这里给出的数值的单精度浮点真实值,可在表 2.5 中找到 ↩

  4. 如需高精度计算竖直运动,建议使用这里给出的数值的单精度浮点真实值,部分可在表 2.5 中找到 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16

  5. 1.20.5 之后改为双精度浮点数存储 ↩ ↩2 ↩3

  6. 1.21.2 之后为 GDM ↩ ↩2 ↩3

上一篇
参考文献
下一篇瞬时元件
铁轨
APP I实体运动
路径: EntityMove/09-附录.zh.md
BFladderbeanawa
字数: 3,545
预计阅读时间: 14 分钟
最后编辑: 2026-07-08
贡献者:
  • BBFladderbeanawa
创建时间:
2026-07-07
最后编辑:
2026-07-08
链接:
https://www.techmc.wiki/zh/articles/entity-motion-intro/appendix
复用
CC BY-NC-SA 4.0

I. 附录

1 附录 A 常见实体运动属性

下面总结一些常见的实体的运动相关属性,其中运算顺序含义见 3.1 节,A 为重力之外的某种加速。为了方便实际应用,这里给出的是实体的速度乘数,也就是公式中用到的 "k",阻力系数并未直接给出。

表 A1 常见实体运动属性表

实体重力/(m/gt2m/gt^2m/gt2)速度乘数(k 值)高度/m宽度/m眼部高度/m运算顺序1
TNT0.040.980.980.980.15GMD
下落的方块0.040.980.980.980.833GMD
空中的物品0.040.9820.250.250.2125GMD
空中的经验球0.030.9830.50.50.425GMD
空中的船0.04水平 0.9,Y 轴 10.56251.3750.5625GDM
空中的矿车0.040.950.70.980.595GMD
空中的箭矢/三叉戟0.0540.9940.50.50.13MDG
空中的雪球/鸡蛋/末影珍珠0.0340.99450.250.250.2125MDG6
空中的药水瓶0.0540.99450.250.250.2125MDG6
空中的附魔之瓶0.0740.99450.250.250.2125MDG6
空中的恶魂和末影龙火球00.954110.85MAD
空中的烈焰人火球/普通凋零之首00.9540.31250.31250.265625MAD
空中的鱼竿浮标0.030.920.250.250.2125GMD
空中的蓝色凋零之首00.7340.31250.31250.265625MAD
空中的羊驼唾沫0.0640.9940.250.250.2125MDG
无有效目标的潜影贝导弹0.0410.31250.31250.265625GM
空中或地面上的玩家(除体积和眼部高度外也适用于大部分生物和盔甲架)0.08水平 0.914,Y 轴 0.984站立时 1.8,睡觉和濒死时 0.2,鞘翅飞行和游泳和激流飞行时 0.6,潜行时 1.5站立、潜行、鞘翅飞行和游泳和激流飞行时 0.6,睡觉和濒死时 0.2睡觉时为 0.2,游泳、鞘翅飞行和激流飞行时为 0.4,潜行时为 1.27,站立时为 1.62MGD
水中的玩家(除体积和眼部高度外也适用于大部分生物和盔甲架)0.005水平取决于深海探索者等级,Y 轴 0.84 同上同上同上同上MDG
较深熔岩中的玩家(除体积和眼部高度外也适用于大部分生物和盔甲架)0.0050.5同上同上同上同上

2 附录 B 完整公式

这是第 3 节中部分公式对于不同实体类型的各种形式,除 MDA 类实体对应各式和求出Δdn\Delta d_{n}Δdn​、dnd_{n}dn​、v0v_{0}v0​、Δdmax⁡\Delta d_{\max}Δdmax​和dmax⁡d_{\max}dmax​的各式以及 "万能方程组" 基本确定无误外,其它公式不排除仍存在推导错误或录入错误,但缺少检验方法,希望有人帮忙检查一下。

2.1 MDA(移动 -> 阻力 -> 加速)

Δdn=kn−1v0t0+at02(1−kn−1)1−k(B.1.1)\Delta d_{n} = k^{n - 1}v_{0}t_{0} + \frac{a{t_{0}}^{2}\left( 1 - k^{n - 1} \right)}{1 - k} \tag{B.1.1}Δdn​=kn−1v0​t0​+1−kat0​2(1−kn−1)​(B.1.1) dn=v0t0(1−kn)1−k+at02[kn+n(1−k)−1](1−k)2(B.1.2)d_{n} = \frac{v_{0}t_{0}\left( 1 - k^{n} \right)}{1 - k} + \frac{a{t_{0}}^{2}\left\lbrack k^{n} + n(1 - k) - 1 \right\rbrack}{(1 - k)^{2}} \tag{B.1.2}dn​=1−kv0​t0​(1−kn)​+(1−k)2at0​2[kn+n(1−k)−1]​(B.1.2) v0=dnt0−1(1−k)−at0n1−kn+at01−k(B.1.3)v_{0} = \frac{d_{n}{t_{0}}^{- 1}(1 - k) - at_{0}n}{1 - k^{n}} + \frac{at_{0}}{1 - k} \tag{B.1.3}v0​=1−kndn​t0​−1(1−k)−at0​n​+1−kat0​​(B.1.3) n=−log⁡k[1k−v0(1−k)at0k](B.1.4)n = - \log_{k}\left\lbrack \frac{1}{k} - \frac{v_{0}(1 - k)}{at_{0}k} \right\rbrack \tag{B.1.4}n=−logk​[k1​−at0​kv0​(1−k)​](B.1.4) Δdmax⁡=at021−k(B.1.5)\Delta d_{\max} = \frac{a{t_{0}}^{2}}{1 - k} \tag{B.1.5}Δdmax​=1−kat0​2​(B.1.5) dmax⁡=v0t01−k(B.1.6)d_{\max} = \frac{v_{0}t_{0}}{1 - k} \tag{B.1.6}dmax​=1−kv0​t0​​(B.1.6) tan⁡αn=gt0(kn−1−1)kn−1(1−k)vx02+vz02−vy0vx02+vz02(B.1.7){\tan\alpha}_{n} = \frac{gt_{0}\left( k^{n - 1} - 1 \right)}{k^{n - 1}(1 - k)\sqrt{{v_{x0}}^{2} + {v_{z0}}^{2}}} - \frac{v_{y0}}{\sqrt{{v_{x0}}^{2} + {v_{z0}}^{2}}} \tag{B.1.7}tanαn​=kn−1(1−k)vx0​2+vz0​2​gt0​(kn−1−1)​−vx0​2+vz0​2​vy0​​(B.1.7) {y=vy(1−k)−gt0vx0(1−k)x−gt021−klog⁡k[1−x(1−k)vx0t0]y=vy(1−k)−gt0vz0(1−k)z−gt021−klog⁡k[1−z(1−k)vz0t0](B.1.8)\begin{cases}y = \frac{v_{y}(1 - k) - gt_{0}}{v_{x0}(1 - k)}x - \frac{g{t_{0}}^{2}}{1 - k}\log_{k}\lbrack 1 - \frac{x(1 - k)}{v_{x0}t_{0}}\rbrack \\ y = \frac{v_{y}(1 - k) - gt_{0}}{v_{z0}(1 - k)}z - \frac{g{t_{0}}^{2}}{1 - k}\log_{k}\left\lbrack 1 - \frac{z(1 - k)}{v_{z0}t_{0}} \right\rbrack \end{cases} \tag{B.1.8}⎩⎨⎧​y=vx0​(1−k)vy​(1−k)−gt0​​x−1−kgt0​2​logk​[1−vx0​t0​x(1−k)​]y=vz0​(1−k)vy​(1−k)−gt0​​z−1−kgt0​2​logk​[1−vz0​t0​z(1−k)​]​(B.1.8) tan⁡αxn2+zn2=gt02(1−kn)(1−k)2−gt02n−vy0′t0(1−kn)1−k−yn(B.1.9)\tan\alpha\sqrt{{x_{n}}^{2} + {z_{n}}^{2}} = \frac{g{t_{0}}^{2}\left( 1 - k^{n} \right)}{(1 - k)^{2}} - \frac{g{t_{0}}^{2}n - v_{y0}^{'}t_{0}\left( 1 - k^{n} \right)}{1 - k} - y_{n} \tag{B.1.9}tanαxn​2+zn​2​=(1−k)2gt0​2(1−kn)​−1−kgt0​2n−vy0′​t0​(1−kn)​−yn​(B.1.9)

2.2 DMA(阻力 -> 移动 -> 加速)

Δdn=knv0t0+at02(k−kn)1−k(B.2.1)\Delta d_{n} = k^{n}v_{0}t_{0} + \frac{a{t_{0}}^{2}\left( k - k^{n} \right)}{1 - k} \tag{B.2.1}Δdn​=knv0​t0​+1−kat0​2(k−kn)​(B.2.1) dn=v0t0(k−kn+1)1−k+at02k[kn+n(1−k)−1](1−k)2(B.2.2)d_{n} = \frac{v_{0}t_{0}\left( k - k^{n + 1} \right)}{1 - k} + \frac{a{t_{0}}^{2}k\left\lbrack k^{n} + n(1 - k) - 1 \right\rbrack}{(1 - k)^{2}} \tag{B.2.2}dn​=1−kv0​t0​(k−kn+1)​+(1−k)2at0​2k[kn+n(1−k)−1]​(B.2.2) v0=dnt0−1(1−k)−at0knk−kn+1+at01−k(B.2.3)v_{0} = \frac{d_{n}{t_{0}}^{- 1}(1 - k) - at_{0}kn}{k - k^{n + 1}} + \frac{at_{0}}{1 - k} \tag{B.2.3}v0​=k−kn+1dn​t0​−1(1−k)−at0​kn​+1−kat0​​(B.2.3) n=−log⁡k[1k−v0(1−k)at0k](B.2.4)n = - \log_{k}\left\lbrack \frac{1}{k} - \frac{v_{0}(1 - k)}{at_{0}k} \right\rbrack \tag{B.2.4}n=−logk​[k1​−at0​kv0​(1−k)​](B.2.4) Δdmax⁡=at02k1−k(B.2.5)\Delta d_{\max} = \frac{a{t_{0}}^{2}k}{1 - k} \tag{B.2.5}Δdmax​=1−kat0​2k​(B.2.5) dmax⁡=v0t0k1−k(B.2.6)d_{\max} = \frac{v_{0}t_{0}k}{1 - k} \tag{B.2.6}dmax​=1−kv0​t0​k​(B.2.6)

2.3 DAM(阻力 -> 加速 -> 移动)

Δdn=knv0t0+at02(1−kn)1−k(B.3.1)\Delta d_{n} = k^{n}v_{0}t_{0} + \frac{a{t_{0}}^{2}\left( 1 - k^{n} \right)}{1 - k} \tag{B.3.1}Δdn​=knv0​t0​+1−kat0​2(1−kn)​(B.3.1) dn=v0t0(k−kn+1)1−k+at02[kn+1+n(1−k)−k](1−k)2(B.3.2)d_{n} = \frac{v_{0}t_{0}\left( k - k^{n + 1} \right)}{1 - k} + \frac{a{t_{0}}^{2}\left\lbrack k^{n + 1} + n(1 - k) - k \right\rbrack}{(1 - k)^{2}} \tag{B.3.2}dn​=1−kv0​t0​(k−kn+1)​+(1−k)2at0​2[kn+1+n(1−k)−k]​(B.3.2) v0=dnt0−1(1−k)−at0nk−kn+1+at01−k(B.3.3)v_{0} = \frac{d_{n}{t_{0}}^{- 1}(1 - k) - at_{0}n}{k - k^{n + 1}} + \frac{at_{0}}{1 - k} \tag{B.3.3}v0​=k−kn+1dn​t0​−1(1−k)−at0​n​+1−kat0​​(B.3.3) n=−log⁡k[1−v0(1−k)at0](B.3.4)n = - \log_{k}\left\lbrack 1 - \frac{v_{0}(1 - k)}{at_{0}} \right\rbrack \tag{B.3.4}n=−logk​[1−at0​v0​(1−k)​](B.3.4) Δdmax⁡=at021−k(B.3.5)\Delta d_{\max} = \frac{a{t_{0}}^{2}}{1 - k} \tag{B.3.5}Δdmax​=1−kat0​2​(B.3.5) dmax⁡=v0t0k1−k(B.3.6)d_{\max} = \frac{v_{0}t_{0}k}{1 - k} \tag{B.3.6}dmax​=1−kv0​t0​k​(B.3.6)

2.4 MAD(移动 -> 加速 -> 阻力)

Δdn=kn−1v0t0+at02(k−kn)1−k(B.4.1)\Delta d_{n} = k^{n - 1}v_{0}t_{0} + \frac{a{t_{0}}^{2}\left( k - k^{n} \right)}{1 - k} \tag{B.4.1}Δdn​=kn−1v0​t0​+1−kat0​2(k−kn)​(B.4.1) dn=v0t0(1−kn)1−k+at02k[kn+n(1−k)−1](1−k)2(B.4.2)d_{n} = \frac{v_{0}t_{0}\left( 1 - k^{n} \right)}{1 - k} + \frac{a{t_{0}}^{2}k\left\lbrack k^{n} + n(1 - k) - 1 \right\rbrack}{(1 - k)^{2}} \tag{B.4.2}dn​=1−kv0​t0​(1−kn)​+(1−k)2at0​2k[kn+n(1−k)−1]​(B.4.2) v0=dnt0−1(1−k)−at0kn1−kn+at0k1−k(B.4.3)v_{0} = \frac{d_{n}{t_{0}}^{- 1}(1 - k) - at_{0}kn}{1 - k^{n}} + \frac{at_{0}k}{1 - k} \tag{B.4.3}v0​=1−kndn​t0​−1(1−k)−at0​kn​+1−kat0​k​(B.4.3) n=−log⁡k[1k−v0(1−k)at0k2](B.4.4)n = - \log_{k}\left\lbrack \frac{1}{k} - \frac{v_{0}(1 - k)}{at_{0}k^{2}} \right\rbrack \tag{B.4.4}n=−logk​[k1​−at0​k2v0​(1−k)​](B.4.4) Δdmax⁡=at02k1−k(B.4.5)\Delta d_{\max} = \frac{a{t_{0}}^{2}k}{1 - k} \tag{B.4.5}Δdmax​=1−kat0​2k​(B.4.5) dmax⁡=v0t01−k(B.4.6)d_{\max} = \frac{v_{0}t_{0}}{1 - k} \tag{B.4.6}dmax​=1−kv0​t0​​(B.4.6)

2.5 AMD(加速 -> 移动 -> 阻力)

Δdn=kn−1v0t0+at02(1−kn)1−k(B.5.1)\Delta d_{n} = k^{n - 1}v_{0}t_{0} + \frac{a{t_{0}}^{2}\left( 1 - k^{n} \right)}{1 - k} \tag{B.5.1}Δdn​=kn−1v0​t0​+1−kat0​2(1−kn)​(B.5.1) dn=v0t0(1−kn)1−k+at02[kn+1+n(1−k)−k](1−k)2(B.5.2)d_{n} = \frac{v_{0}t_{0}\left( 1 - k^{n} \right)}{1 - k} + \frac{a{t_{0}}^{2}\left\lbrack k^{n + 1} + n(1 - k) - k \right\rbrack}{(1 - k)^{2}} \tag{B.5.2}dn​=1−kv0​t0​(1−kn)​+(1−k)2at0​2[kn+1+n(1−k)−k]​(B.5.2) v0=dnt0−1(1−k)−at0n1−kn+at0k1−k(B.5.3)v_{0} = \frac{d_{n}{t_{0}}^{- 1}(1 - k) - at_{0}n}{1 - k^{n}} + \frac{at_{0}k}{1 - k} \tag{B.5.3}v0​=1−kndn​t0​−1(1−k)−at0​n​+1−kat0​k​(B.5.3) n=−log⁡k[1−v0(1−k)at0k](B.5.4)n = - \log_{k}\left\lbrack 1 - \frac{v_{0}(1 - k)}{at_{0}k} \right\rbrack \tag{B.5.4}n=−logk​[1−at0​kv0​(1−k)​](B.5.4) Δdmax⁡=at021−k(B.5.5)\Delta d_{\max} = \frac{a{t_{0}}^{2}}{1 - k} \tag{B.5.5}Δdmax​=1−kat0​2​(B.5.5) dmax⁡=v0t01−k(B.5.6)d_{\max} = \frac{v_{0}t_{0}}{1 - k} \tag{B.5.6}dmax​=1−kv0​t0​​(B.5.6) tan⁡αn=gt0(kn−1)kn−1(1−k)vx02+vz02−vy0vx02+vz02(B.5.7){\tan\alpha}_{n} = \frac{gt_{0}\left( k^{n} - 1 \right)}{k^{n - 1}(1 - k)\sqrt{{v_{x0}}^{2} + {v_{z0}}^{2}}} - \frac{v_{y0}}{\sqrt{{v_{x0}}^{2} + {v_{z0}}^{2}}} \tag{B.5.7}tanαn​=kn−1(1−k)vx0​2+vz0​2​gt0​(kn−1)​−vx0​2+vz0​2​vy0​​(B.5.7) tan⁡αxn2+zn2=gt02(k−kn+1)(1−k)2−gt02n−vy0′t0(1−kn)1−k−yn(B.5.8)\tan\alpha\sqrt{{x_{n}}^{2} + {z_{n}}^{2}} = \frac{g{t_{0}}^{2}\left( k - k^{n + 1} \right)}{(1 - k)^{2}} - \frac{g{t_{0}}^{2}n - v_{y0}^{'}t_{0}\left( 1 - k^{n} \right)}{1 - k} - y_{n} \tag{B.5.8}tanαxn​2+zn​2​=(1−k)2gt0​2(k−kn+1)​−1−kgt0​2n−vy0′​t0​(1−kn)​−yn​(B.5.8)

2.6 ADM(加速 -> 阻力 -> 移动)

Δdn=knv0t0+at02(k−kn+1)1−k(B.6.1)\Delta d_{n} = k^{n}v_{0}t_{0} + \frac{a{t_{0}}^{2}\left( k - k^{n + 1} \right)}{1 - k} \tag{B.6.1}Δdn​=knv0​t0​+1−kat0​2(k−kn+1)​(B.6.1) dn=v0t0(k−kn+1)1−k+at02k[kn+1+n(1−k)−k](1−k)2(B.6.2)d_{n} = \frac{v_{0}t_{0}\left( k - k^{n + 1} \right)}{1 - k} + \frac{a{t_{0}}^{2}k\left\lbrack k^{n + 1} + n(1 - k) - k \right\rbrack}{(1 - k)^{2}} \tag{B.6.2}dn​=1−kv0​t0​(k−kn+1)​+(1−k)2at0​2k[kn+1+n(1−k)−k]​(B.6.2) v0=dnt0−1(1−k)−at0knk−kn+1+at0k1−k(B.6.3)v_{0} = \frac{d_{n}{t_{0}}^{- 1}(1 - k) - at_{0}kn}{k - k^{n + 1}} + \frac{at_{0}k}{1 - k} \tag{B.6.3}v0​=k−kn+1dn​t0​−1(1−k)−at0​kn​+1−kat0​k​(B.6.3) n=−log⁡k[1−v0(1−k)at0k](B.6.4)n = - \log_{k}\left\lbrack 1 - \frac{v_{0}(1 - k)}{at_{0}k} \right\rbrack \tag{B.6.4}n=−logk​[1−at0​kv0​(1−k)​](B.6.4) Δdmax⁡=at02k1−k(B.6.5)\Delta d_{\max} = \frac{a{t_{0}}^{2}k}{1 - k} \tag{B.6.5}Δdmax​=1−kat0​2k​(B.6.5) dmax⁡=v0t0k1−k(B.6.6)d_{\max} = \frac{v_{0}t_{0}k}{1 - k} \tag{B.6.6}dmax​=1−kv0​t0​k​(B.6.6)

3 附录 C 研究环境及辅助性工具

大部分实验内容来自 Minecraft Java 版 1.16.4,极少部分来自 Java 版 1.16.5 的 MCP,在 1.16.4 的实验中用到了以下辅助 Mod:

(1) fabric-carpet-1.16.4-1.4.17+v201111

(2) mcwmem-1.16.4-20210714

(3) chunkmap-20210718

(4) malilib-fabric-1.16.4-0.10.0-dev.21+arne.1

(5) minihud-fabric-1.16.4-0.19.0-dev.20201103.184029

(6) tweakeroo-fabric-1.16.4-0.10.0-dev.20201110.132827

mcwmem 全称为 Minecraft World Manipulation Enchantment Mod(Minecraft 世界控制增强,似乎名称起的太大了,现已重命名为 MessMod),是我临时赶工期开发的一个用于进行世界数据访问和修改的 Mod,内容很乱,当时功能较不完善且仅支持 1.16.4 和 1.16.5,但是够研究使用。最近又对此进行了一些进一步开发,较新版本可以在以下地址下载:

MOD:

https://modrinth.com/mod/messmod

https://github.com/lovexyn0827/MessMod/releases/tag/1.16.4-20220408

README:

https://github.com/lovexyn0827/MessMod/blob/main/README.md。

https://github.com/lovexyn0827/MessMod/blob/master/README_zh_cn.md

实体运动研究中不能过于相信贴图(或者说是客户端上显示出的实体以及碰撞箱),因为贴图位置比在服务端上实体的真正位置通常是滞后的,研究过程中太相信贴图那么可以认为第一步就输了,而这个 Mod 个人认为最大的功能就是正确地显示服务端上实体的碰撞箱位置,防止被客户端欺骗。

chunkmap 是我主要在 7 月 9-18 日开发的一个用于可视化区块的加载、生成和区块加载票的 Mod,目前功能趋于完善。

最新版本下载地址:

https://github.com/lovexyn0827/Chunkmap/releases/tag/v20210825

https://modrinth.com/mod/chunkmap

MCBBS 上的介绍贴:

https://www.mcbbs.net/thread-1225181-1-1.html。

文中涉及所有源代码由 minecraft fabric 中 genSources 生成,mapping 使用 yarn-1.16.4+build.1-v2,如需要可以自行反编译。

用到的一些小程序(请在 classpath 中包含反混淆的 Minecraft 及其运行库):

https://github.com/lovexyn0827/Entity。

4 附录 D 主要符号及单位

这里仿照国际单位制选取时间和长度作为两个基本单位。定义时间是用于描述某一过程经过的运算周期的量,长度是用于描述两个点之间距离的量。常用单位及其换算关系如下,其中格与米是等价的,大家可以按照个人喜好使用,文中以米为准:

表 D1 主要符号表

量单位名符号简要的定义换算
长度米m完整方块的棱长1m
=1b
=16px
=1/16 区块
格b完整方块的棱长
像素px方块最小渲染单元的边长
区块无一个区块俯视图的边长
时间游戏刻gt一个游戏刻代表的时间1gt
=1/20s
=1/2 红石刻
无卡顿的秒s在 TPS 为 20 时的一秒
红石刻无一档红石中继器的延迟
速度米每刻m/gt1m/gt
=20m/s
米每秒m/s
加速度米每平方刻m/gt2m/gt^2m/gt21m/gt2m/gt^2m/gt2
=400m/s2m/s^2m/s2
米每平方秒m/s2m/s^2m/s2
阻力系数负一次方刻gt−1gt^{-1}gt−1

当然,这些单位的使用没有必要那么严格,把仅有 m 和 gt 组成的单位都看成 1 也行。

5 附录 E 定义索引

5.1 A

AI 加速度 (6)

5.2 B

爆炸半径 (5.15)

爆炸半径利用率 (8.1)

爆炸接触率 (5.15)

爆炸利用率 (8.1)

爆炸伤害半径 (5.15)

爆炸威力 (5.15)

爆炸影响力 (5.15)

爆炸中心 (5.15)

5.3 C

侧向加速度系数 (6)

冲量 (2.1)

5.4 D

地面移动加速度 (6)

地面阻力 (2.1)

5.5 F

FallDistance(2.4)

flyingSpeed(6.2)

forwardSpeed(6.2)

horizontalCollision(2.4)

方块网格 (4.2)

方块坐标 (2.1)

飞行时间利用率 (8.1)

飞行移动加速度 (6)

俯仰角 (2.1)

5.6 G

根实体 (2.2)

固体实体 (4.1)

5.7 H

horizontalCollision(2.4)

滑度 (5.4)

火球类 (2.3)

5.8 J

击退 (5.13)

加速度 (2.1)

加速度利用率 (8.1)

检查方块网格碰撞 (5.1)

接触率利用率 (8.1)

5.9 K

可攀登方块 (6)

空气阻力 (2.1)

空气阻力系数 (2.1)

5.10 L

LivingEntity(2.3)

流体加速 (2.1)

流体流向向量 (5.7)

流体深度阀值 (6)

流体阻力 (2.1)

5.11 M

Motion (2.1)

movementMultiplier(5.1)

movementSpeed(2.1)

5.12 N

noClip(2.4)

5.13 P

PersistentProjectileEntity(2.3)

pistonMovementDelta(2.4)

pistonMovementTick(2.4)

碰撞箱 (2.1)

偏航角 (2.1)

5.14 Q

前向加速度系数 (6.2)

取样点 (5.15)

5.15 R

raycast(4.2)

5.16 S

sidewaysSpeed(6.2)

stepHeight(2.4)

实际位移趋势 (4.1)

实体 ID (2.4)

实体基础运算 (2.4)

实体挤压 (5.10)

实体所处方块 (5)

实体下方方块 (5)

实体支撑方块 (5)

实体着陆方块 (5)

输入位移 (4.1)

拴绳固定点 (5.19)

速度 (2.1)

速度乘数 (2.1)

5.17 T

同位实体 (2.2)

弹射物 (2.3)

投掷物 (2.3)

5.18 U

upwardSpeed(6.2)

5.19 V

verticalCollision(2.4)

5.20 W

位移趋势 (4.1)

位移趋势预处理 (4.1)

位移确定 (2.1)

5.21 X

向上的加速度系数 (6.2)

5.22 Y

沿轴移动 (4.1)

坐标 (2.1)

移动 (2.1)

5.23 Z

着地 (2.4)

Footnotes

  1. 以实体只受重力和一般阻力时为准,其他情况下可以参考 6.1 节或第 7 节。 ↩

  2. 如需高精度计算水平运动,建议 X、Z 轴上使用这里给出的数值的单精度浮点真实值,可在表 2.5 中找到 ↩

  3. 如需高精度计算竖直运动,建议 Y 轴上使用这里给出的数值的单精度浮点真实值,可在表 2.5 中找到 ↩

  4. 如需高精度计算竖直运动,建议使用这里给出的数值的单精度浮点真实值,部分可在表 2.5 中找到 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16

  5. 1.20.5 之后改为双精度浮点数存储 ↩ ↩2 ↩3

  6. 1.21.2 之后为 GDM ↩ ↩2 ↩3

上一篇
参考文献
下一篇瞬时元件
铁轨