【流言终结者】【直播】源码解密!用源码解开冤魂不散的流言!



使用软体:MC1.4.7、MCP7.26、Forge Build 6.6.1.527




 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 00:17:00 +0800 CST  
上回提要:

附魔跟附魔文字无关之证明,源码版
2013-02-12 02:12
http://tieba.baidu.com/p/2159811761




 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 00:18:00 +0800 CST  

流言#001:甘蔗在沙子上长得比泥土上快

经典阿 呵呵




 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 00:27:00 +0800 CST  
甘蔗(道具状态)的源代码的一部分

世界判断可不可以放的源代码的一部分

方块判断可不可以放的源代码的一部分

甘蔗(方块)判断可不可以放的源代码的一部分(此段代码把普通方块的方法覆盖了)






 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 00:46:00 +0800 CST  
判断可不可以活植物的源代码的一部分


由从可见:在种下去的一刻,沙子和泥土没有任何分别。

接下来看看甘蔗的生长过程。




 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 00:53:00 +0800 CST  
甘蔗的随机更新代码的一部分

这里说明一下
首先,随机更新是植物生长的关键。如果MC每秒都检查一次所有方块能不能长的话,那太耗资源了,然后就是,你的小麦田一次就长一整片,全都同一高度...也太不自然了吧?
所以MC的机制是,每1/20秒都会进行一次「tick」,会做以下的东西:
1.所有玩家睡著了,就天亮
2.判断刷怪笼能否刷怪(距上次发动的时间、有没有玩家在附近等等)
3.正常刷怪
4.更新红石状态
5.挑选最多1000个座标,并一一进行更新
6.等等等等

所以,这1000个坐标就像是一个老师随便点学生答问题一样,使植物的生长变得随机。

至於这个15的作用是..
如果没有这个15的话甘蔗的生长将会比现在快16倍...有点像是,老师把一个学生的名字点一次他就升一个级。那可不行!所以加入一个15,使学生被点到16次才升一级。





 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 01:18:00 +0800 CST  
关於15的补充,这个15也确保了甘蔗已存在一段时间才会往上长。
例如,这个甘蔗上面的空气已经数到13了,再来三次点名就会长了。这时候我在上面放了石头然后拿开,就会令那个13变成0。0嘛,就是重新再来喽。


总结以上各点:
1.甘蔗被种下时会检查有没有水和沙子或泥土(或草地)。但只关系到能否种下去,与生长速度没关。)
2.甘蔗生长的时候乾脆不检查有没有沙子或泥土!







 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 01:25:00 +0800 CST  
呼吁:请提供更多流言!LZ对流言一般都置之不理,长久以来都忘了!


流言#002:树苗旁边放水会加速生长


(其实我已经要在Q群里找主意了..真的忘得一乾二净了..)




 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 01:32:00 +0800 CST  

这里的「第4个位」的解释:
如果你有在服务器开过商店的话,你会发现树苗的ID有个冒号,那就是附加的资料。
这资料可以用来表示工具的伤害值(所以也会被叫作伤害值),木板的种类,楼梯的种类等等。
所以像甘蔗一样只是+1是不行的,会把树苗的种类换了!解决方法就是用更高的位值。第1和2个位是用於表示树苗的种类,而第4个位,就用於判断这树苗有没有被点名过一次。

也许你会问:「水呢?」嗯,的确没水。树苗旁有没有放水对树苗的生长没有任何影响。







 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 01:53:00 +0800 CST  
@link__企鹅


流言#003:小蘑菇在菌丝上繁殖更快

请继续提供流言,嗯




 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 02:07:00 +0800 CST  
蘑菇(方块)的源代码的一部分

同一段代码,后面部分


单凭这点资讯,还不能确定跟菌丝有没有关系,因为「判断可以停留」的代码说不定跟菌丝有关。




 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 02:33:00 +0800 CST  
判断可以停留的代码:

菌丝出现了!这里的意思是,如果亮度低於13的话蘑菇才会繁殖,除了在菌丝上,不管亮度了
所以,蘑菇在菌丝上的话就算是白天也能繁殖。

总结:蘑菇在菌丝上,13亮度的限制会被无视,所以如果在白天的烈日下种磨菇的话,是的,会比较快,因为不在菌丝上的话直接就被连根拔起了。


(其实我不知道这时应该说证实还是终结就是了)




 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 02:52:00 +0800 CST  

流言#004:饥饿值其实有两条


晚了,LZ去睡了,大家晚安(喂喂)
先开个头,明天再来吧




 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 02:55:00 +0800 CST  
玩家的源码中的一部分:

找到食物状态的源码:

看下去,吃东西时执行的代码:

再看下去,找到更新时会执行的代码:

同一段,后面部分:







 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 11:08:00 +0800 CST  
我们来看看64L都是神马
(其实只是忘了打解释)
首两张图都只是用来指出食物到哪里了(不是胃!)

第三张指出,吃东西的时候,会同时补充食物水平及饱和度!

等等...在这里停下来好像有点奇怪,这样根本没有涨到姿势...
所以,进一步解释MC在食物处理的机制


第四张是更新,
如果疲惫度大於4的话就把饱和度减1、饱和度是0以下的话就把食物水平减1
然后把疲惫度重设
也就是说,减去半个之前会先检查饱和度,饱和度可以代替食物水平的下降

第五张也是更新,
如果没有80的话就把计时器加1,到80就加血或扣血
而每1/20秒都会有一个tick..
这里可以看出,回血或扣血是每4秒1点(半个)




 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 11:29:00 +0800 CST  
疲惫度的调用层次:

所以,跑、跳、打怪、打方块之类的全都会加到疲惫度中。




 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 11:33:00 +0800 CST  
求主意(用光了)




 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 12:08:00 +0800 CST  
@abc612008

流言#005:甘蔗可以自然生长四格




 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 12:36:00 +0800 CST  
20L的一部分
甘蔗生长的代码的一部分

从流言#001,我们可以知道甘蔗生长时最多只会长到三格,但也有可靠消息来源说,自然有4格高的甘蔗...这到底是真的还是假的?





 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 12:40:00 +0800 CST  

值得注意的是,这里的2~4每个数字出现的机率不是平均的33%
以下进行一段运算,看不懂的可以跳过去
var10 = 2+ par2Random.nextInt(par2Random.nextInt(3) + 1);
var10 = 2+ par2Random.nextInt(<33.3%>0/<33.3%>1/<33.3%>2 + 1);
var10 = 2+ par2Random.nextInt(<33.3%>1/<33.3%>2/<33.3%>3);
var10 = 2+ <61.1%>0/<27.8%>1/<11.1%>2;
var10 = <61.1%>2/<27.8%>3/<11.1%>4;
生成2格高的甘蔗的机率是六成,3格高的是三成,4格高的是一成
什么?你说你看的甘蔗大都是3格高的?那就是2格的甘蔗自己长高的啦!

总结:生成世界的时候每次生成甘蔗时有11.1%的机率会生出4格高的甘蔗,但算不算自然生长嘛....既然是生成出来的,也算是生出来的吧!







 ------咲夜真心碉堡了

楼主 咲夜碉堡了  发布于 2013-02-23 13:06:00 +0800 CST  

楼主:咲夜碉堡了

字数:15469

发表时间:2013-02-23 08:17:00 +0800 CST

更新时间:2016-03-15 11:29:31 +0800 CST

评论数:812条评论

帖子来源:百度贴吧  访问原帖

 

热门帖子

随机列表

大家在看