网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
可签
7
级以上的吧
50
个
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月18日
漏签
0
天
minecraft吧
关注:
2,527,401
贴子:
31,639,670
看贴
图片
吧主推荐
视频
玩乐
1
2
下一页
尾页
21
回复贴,共
2
页
,跳到
页
确定
<返回minecraft吧
>0< 加载中...
[17-02-06]【程序员乱入】Minecraft源代码分析
取消只看楼主
收藏
回复
CharlesDong87
地下要塞
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
MC源代码镇楼
送TA礼物
IP属地:广东
1楼
2017-02-06 15:44
回复
CharlesDong87
地下要塞
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
先自我介绍一下:本人初二,会C++和Java
IP属地:广东
2楼
2017-02-06 15:44
回复(4)
收起回复
CharlesDong87
地下要塞
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
今天上午发过一个这样的贴,但是因为没有加前缀被删掉了,因此现在重发(多谢吧主恢复)
IP属地:广东
3楼
2017-02-06 15:46
回复
收起回复
CharlesDong87
地下要塞
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
正好前面看到了这两个贴:
http://tieba.baidu.com/p/4421623213
http://tieba.baidu.com/p/4684133375
都和MC源代码有关,一个是反编译,一个是分析冷知识
然后因为楼主也是热爱编程的人,而又没有怎么在本吧发过“有意义”的贴(目前只有一个自己造MC2D的贴,其他都是提问),所以脑子一热,决定发一贴
IP属地:广东
4楼
2017-02-06 15:46
回复(1)
收起回复
CharlesDong87
地下要塞
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
PS:不保证不会弃坑,因为MC的代码实在太~太~太~难了!(╯‵□′)╯︵┻━┻
IP属地:广东
5楼
2017-02-06 15:46
回复
收起回复
CharlesDong87
地下要塞
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
首先,要研究Minecraft的源代码,我们需要首先取得它的源代码。有两种方式:
1. 自己反编译,参见
http://tieba.baidu.com/p/4421623213
2. 直接下载已经存在的代码
链接:
https://pan.baidu.com/s/1o8EkoGU
(
http://tieba.baidu.com/p/4684133375
21楼)
备用链接:
https://pan.baidu.com/s/1qYfKS6S
(自己发的)
IP属地:广东
7楼
2017-02-06 15:46
回复(2)
收起回复
CharlesDong87
地下要塞
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
代码是mcp910,对应于Minecraft 1.8
IP属地:广东
8楼
2017-02-06 15:46
回复
收起回复
CharlesDong87
地下要塞
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
好了,我要开始了!!!
IP属地:广东
9楼
2017-02-06 15:46
回复
收起回复
CharlesDong87
地下要塞
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
众所周知
,看一份C/C++、Java代码时,应该寻找它的“入口点”——main()函数。现在就让我们去寻找它
IP属地:广东
10楼
2017-02-06 15:47
回复
收起回复
CharlesDong87
地下要塞
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
打开文件夹(确保你已经解压),进入src/minecraft文件夹,看见一个Start.java,或许这就是main()函数所在的文件?打开看看:
Start.java里定义了一个Start类,里面定义了两个方法:一个是main()函数,是程序的入口点;另一个是concat函数,用来拼接两个数组,这个我们可以不管它
IP属地:广东
11楼
2017-02-06 15:47
回复
收起回复
CharlesDong87
地下要塞
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
main()里面只有一条语句:
Main.main(concat(new String[] {"--version", "mcp", "--accessToken", "0", "--assetsDir", "assets", "--assetIndex", "1.8", "--userProperties", "{}"}, args));
这句语句的意思是调用Main类的main()方法,而且是静态的。再看一看前面有这样一句:
import net.minecraft.client.main.Main;
import的意思是导入。(记得当我开始研究Minecraft代码时,根本不知道import怎么用我都知道这是什么意思。)
看回刚才的目录,有个net文件夹;打开它,发现有个minecraft文件夹;然后发现有个client文件夹;然后是main;最后看见一个Main.java。
IP属地:广东
12楼
2017-02-06 15:47
回复
收起回复
CharlesDong87
地下要塞
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
没错,net.minecraft.client.main.Main指的是net/minecraft/client/main/Main.java中定义的Main类。import后面加的net.minecraft.client.main是包(package,Java里的概念),如果没学过Java可以暂时认为代表一个目录。
IP属地:广东
13楼
2017-02-06 15:47
回复
收起回复
CharlesDong87
地下要塞
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
好,现在打开net/minecraft/client/main/Main.java,一共有122行。找到main()。(为什么有两个main()?)
一堆初始化。翻到结尾看看?
最后一句是(new Minecraft(var42)).run(),如果一个类叫Minecraft,那这应该是代码的核心了。new Minecraft(var42)意思是让Java创建一个Minecraft对象,并把var42作为参数(类型为GameConfiguration,可以不管)传给其构造函数。
IP属地:广东
14楼
2017-02-06 15:47
回复(2)
收起回复
CharlesDong87
地下要塞
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
还是老样子,17行有一句:
import net.minecraft.client.Minecraft;
打开net/minecraft/client目录下的Minecraft.java。看到的就是镇楼图上的代码。
IP属地:广东
15楼
2017-02-06 15:48
回复
收起回复
CharlesDong87
地下要塞
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
按理说应该先找到Minecraft类的构造函数,叫做Minecraft()。
记住,Minecraft代码中,xxx.java就代表文件里定义了一个xxx类。但是这里这不是最重要的。
我们直接找到run()。但是Minecraft.java里有3307行啊,你怎么能快速地找到run()呢?使用搜索功能。
(如果你不使用Eclipse你就要自己了解一下怎么查找了)
IP属地:广东
本楼含有高级字体
16楼
2017-02-06 15:48
回复(1)
收起回复
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧热议榜
1
捡手机索要三瓶饮料被失主挂校园墙
2263980
2
吧友机智对战恶毒导师
2116855
3
耍猴?如何评价海信联动黑神话发布会
1759828
4
吧友反杀演唱会女主
1694250
5
欧冠四强出炉
1294930
6
各吧一看就很绝望的图片
976150
7
虚拟建筑大赏
945048
8
飞飞一杯酒去世
908270
9
考古曾经用过的智能机
905168
10
手把手教你种蓝莓
669942
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示