当前位置: 我的世界 > 游戏攻略 > 正文

源码解读我的世界红石更新时序

小编:3F时间:2017-03-23 13:46回到游戏园首页

  源码解读我的世界红石更新时序。那下面则是用源码解读我的世界中的红石更新时序问题哦~那有不知道的玩家不妨进来看看哦~希望对大家有所帮助。

  游戏园我的世界官方群:325049520  256070479 欢迎各路喜爱我的世界的小伙伴们加入讨论!

  玩服务器的小伙伴们可以加入:141931866 群一起联机玩游戏哦!

  如果你是腐竹的话可以给我们投稿你的服务器哦~投稿地址点我进入

  如果你有心仪的作品或者心得分享的话,欢迎来游戏园投稿,大家可以点击>>>投稿<<<进行投稿哦~ 有奖品哦~

  所用mc版本为1.8.8,java版本1.8.0_45 64bit,纯净原版无插件。

  一、游戏主循环中的红石部分

  主循环是mc最重要的一部分代码了,在这一次次的循环中,mc对红石都进行了哪些操作呢?

  这是1tick中,对红石电路部分有关的操作,顺序由上到下:

  1.Next Tick Entry(以下简称NTE)

  很多人想来都不陌生了,mc红石电路中的延时即由此实现。有些电路元件如中继器、比较器、红石火把等,受到更新时会把自己加入这个列表,实现在x tick之后的再次更新。有方块加入时,这个列表会进行排序,规则是延迟先结束的在前,然后优先级低的在前,都相同就按入列的先后排序。这样可以保证在同一tick内,优先级高的元件先被更新。关于各种元件的优先级,后面再讨论。

  2.Piston Update(简称PU)

  主循环中,被更新到的活塞,包括粘性和非粘性,不会加入NTE,只是将自己加入这个列表中,在NTE结束后统一进行更新。这个列表没有排序,所以更新顺序就是入列的顺序。

  3.Tile Entity Update

  活塞推动时,所有移动的方块和活塞臂,会成为一个个TileEntity进行移动,移动完成后恢复为方块。在此过程中,方块原有位置被设置为36号方块。移动的更新即在此处进行。

  4.Network

  无论是单人还是服务器,玩家的操作都要由客户端上传到服务端,如玩家拉下拉杆,此操作形成的更新即在此处进行。

  二、先定义几个术语

  主要让后面的说明变得更简单一点,同时也更严谨233

  1.被方块更新

  红石元件被其他方块更新时,如中继器被充能,活塞被充能等。

  2.NTE更新

  即中继器、火把等元件通过NTE进行的延时更新。

  3.更新方块

  更新单个方块,不涉及其他方块。

  4.更新周围方块

  更新一个方块周围的6个方块,顺序为西东下上北南。

  三、当红石元件受到更新时,都进行了哪些操作?

  1.Redstone Wire

  红石线是电路中最基础的部分了。当受到更新时,游戏会重新计算红石线能量大小,若与原来能量相等,则不去更新其他方块。若不相等,红石线会遍历自身和周围6个方块,总共7个方块,即图中间紫色玻璃和橙色玻璃。

  被遍历到的方块会更新周围的6个方块,如图右侧的橙色玻璃和白色玻璃。一个红石所更新的所有方块如下图所示。

  注意这个遍历的顺序是根据java中的Set类确定,遍历顺序无法预测。对于同一个坐标,遍历顺序始终相同。遍历顺序随红石线坐标的改变而改变。遍历顺序与mc版本无关,与java版本有关。如图,左右两个结构完全相同,但是活塞伸出的顺序却不同,证明红石更新方块顺序不是固定的。

分享到:更多

游戏信息

我的世界
我的世界类型:休闲娱乐平台:PC,iOS,安卓电脑版下载
  • 游戏大礼包
  • 手游开测表