level 7
要谈到时序,我们首先要关心的东西是:延时刻!
在一个世界中,方块就是它的id加上4bit附加值罢了。除了随机方块刻和实体等向它发出的世界之外,它像个木头一样一动不动。那怎么实现“在几gt后处理什么事情”呢?答案就是通过延时刻(next tick entry)
注:next tick entry是mcp反混淆出来的名称,但我觉得这名字很不咋地...“to-do list element”都比这强。
这个方块会在世界专用的延时Set里添加一个延时标记。这个标记所含有的数据有:
它所标记的时间,延时标记的优先级,它的方块坐标与方块ID,和表示它进入延时Set顺序的一个数字id。
但需要注意的是,这个数字在重启游戏时是会重置的。
在延时刻的时候,mc会把当前tick的延时标记拿出来,复制到一个列表里,再去遍历它。这个列表的顺序是:优先级小的在前。如果两个标记优先级一样,则添加到延时Set越早越靠前。而在正常运行情况下,不会有什么别的线程来捣乱,id是完全不重复的。所以
延时标记的更新顺序和hash无关!
延时标记的更新顺序和hash无关!
延时标记的更新顺序和hash无关!
接下来的内容就需要mc截图了,等会儿去拿电脑
2016年01月27日 05点01分



