Minecraft(我的世界)中文论坛
标题: Minecraft MOD制作:从入门到精通——第四章第一节:
作者: DJXGAME 时间: 2012-8-22 12:48
标题: Minecraft MOD制作:从入门到精通——第四章第一节:
本帖最后由 1137246733 于 2015-8-16 20:18 编辑
Minecraft MOD制作:从入门到精通
The Dummy's Guide to Modding - From Setup to Advanced!
第四章:您等待已久的一章
我希望您能多加阅读一些Minecraft的代码,虽然对于一个java造诣不精人来说,代码有可能显得凌乱,但是不要灰心丧气。
第一节:您的第一个方块
通过在net.minecraft.src包内右击任意文件,点击New ->Class。
将其命名为“mod_YOURMODNAME”,必须确保其以“mod_”开头,因为只有这样系统才会识别该文件为一个MOD并开始加载。无需在底部选择任何的选项,点击"Finish"完成创建。
此时您会看见一段预先写好的类代码。您的第一件事就是要扩展这个MOD使之成为一个基本类(BaseMod)。您可以通过添加“extends BaseMod”这样的代码完成类的声明,此时代码如下:
- package net.minecraft.src;
- public class mod_YourModName extends BaseMod {
- }
复制代码
当然,此时会在“mod_YOURMODNAME”处显示错误,此时将鼠标移至该错误处,在弹出的对话框中单击“Add unimplemented methods”。此时会在当前的基本类里添加两个类函数:“load”与“getVersion”。您可以删除掉“//TODO”这种行,在“getVersion”类函数中,您需要将null替换为”1.0“或者其他您喜欢的版本号。您需要保留引用,就如同需要返回一个字符串一样。此时的代码如下所示:
- package net.minecraft.src;
- public class mod_YourModName extends BaseMod {
- @Override
- public String getVersion() {
- return "1.0";
- }
- @Override
- public void load() {
-
- }
- }
复制代码
现在您终于可以开始创作您的第一份方块代码啦~
在类的顶端添加下列代码(在“{}”之内):
- public static Block yourFirstBlock = new BlockTutorial(blockID, 0).setHardness(2.5F).setStepSound(Block.soundWoodFootstep).setBlockName("blockName");
复制代码
其中:
名称
| 含义
|
public | 表示所有类均可以访问。 |
static
| 表示在类内不创建一个新的实例的条件下即可访问(详情请查阅java教程) |
Block | 该变量引用“Block.java” |
yourfirstBLock | 变量名,叫什么都行 |
= new BlockTutorial | 此时在BlockTutorial类中创建了一个新的实例,由于我们之前没有声明,因此会出错。您可以将其改为任何您喜欢的名字,只要之后的名字与其相同就可以了。 |
(blockID, 0)
| 您所传递给BlockTutorial类的信息,就是方块ID。您可以在这里将其替换成您所希望的任何数值。特别提醒您,在最新版本的Forge中,可以自动调整您的方块ID,并将其设置到137到4096中的一个未使用过的数值。您可以在这里查看您的MOD与MOD的兼容性。之后的0稍后会为您详细阐述,现在暂且放过它。 |
.setHardness(2.5F) | 设置该方块的硬度为2.5,您可以随意调整。 |
.setStepSound(Block.soundWoodFootstep)
| 走在上面的声音,如果您喜欢的话,也可以将“soundWoodFootstep”改成“soundClothFootstep”或者任何你喜欢的声音。 |
.setBlockName("blockName"); | 这个变量无关紧要,只是要保证每个的名字不同就可以了。
|
现在您已经掌握了如何新建一个BlockTutorial类了,当然有可能在之前您就把这个名字改掉了……
现在我们要扩展方块,我们首先需要执行ITextureProvider,当您将如下代码复制进其中时,可以使鼠标悬停在ITextureProvider处并单击导入(import)。
- public class BlockTutorial extends Block implements ITextureProvider {
复制代码
现在我们需要为我们之前跳过的那部分创建一个构造函数(可以在java教程中获得更为详实的信息)。
- public BlockTutorial(int i, int j)
- {
- super(i, j, Material.wood);
- }
复制代码
名称
| 含义
|
BlockTutorial | 由于是构造函数,此处需与类的名字相同。
|
(int i, int j) | 我们在之前使用(blockID, 0)的声明。更为详细的来说,表示该构造函数使用两个整数变量并将其命名为i和j。
|
super
| 表示需要使用超类来传递方块信息,这也是问什么我们扩展这个类的缘故。可能难以理解但是请参阅java教程o(∩_∩)o~~ |
(i, j, Material.wood); | 这是由我们的MOD类中继承的将要传给方块的参数,我们同时也传递了Material.wood是因为我希望这个方块在被镐敲击时可以更为容易地被破坏。 |
好,现在您即将进行的步骤是添加一个Forge的类函数以便我们可以为这个方块设置材质。
- public String getTextureFile()
- {
- return "/Mic'sMods/CrossbowMod/gui/Crossbow.png";
- }
复制代码
切记:不要更改类函数的第一行!乱修改可能覆盖或者替换类函数。
这是一个用于十字弓MOD的例子,其中的材质存储在minecraft.jar的相应位置中。您可以很轻松地修改您所使用的材质,但是如果指向一个空位置则无法进行加载。当然也要保证是双引号~
最后还需要一个Forge的类函数将该方块添加至创造模式的物品栏中。
- public void addCreativeItems(ArrayList itemList)
- {
- if(blockID == mod_ YourModName. yourFirstBlock.blockID)
- {
- itemList.add(new ItemStack(this));
- }
- }
复制代码
当鼠标悬停至ArrayList时可以导入。
最后一个类函数可能有些复杂……
名称
| 含义
|
void | 表示该函数没有返回值 |
addCreativeItems(ArrayList itemList) | 类函数和构造函数的名字。不要进行修改,否则会覆盖Forge的类函数。 |
if(
| 根据真假不同返回值也不同,如果不懂请多看看教程 |
blockID == mod_ YourModName. yourFirstBlock.blockID | 逻辑表达式,如果该方块的方块ID与您创建的方块的方块ID则继续 |
itemList.add(new ItemStack(this));
| 在创造模式中可以创建和堆叠这一方块,这条语句不懂亦无妨。 |
之后,我们在load()类函数中添加如下语句:
- ModLoader.registerBlock(yourFirstBlock);
- ModLoader.addName(yourFirstBlock, "Woohoo! My first Block :D");
复制代码
其中:
名称
| 含义
|
ModLoader.registerBlock | 您所调用的类函数 |
(yourFirstBlock) | 您所使用的方块,确保之前声明过。 |
ModLoader.addName | 调用另一个类函数,用于添加名字 |
(yourFirstBlock, "Woohoo! My first Block :D"); | 这里是为您的方块实例赋予名字的地方,您可以在这里写“红石灯(Redstone Lamp)”,“楼主我要整合包~(LouzhuWoyaoZhengheBao)”等等。 |
现在要做一件最为重要的事请:
在Eclipse中单击Run运行Minecraft,进入创造模式,去寻找您的方块吧!
您已经为Minecraft制作了一个属于您的MOD,不再是MOD制作小白痴了!无论这个MOD多么粗糙和简陋,但都是您在MOD制作大师之路的一个见证!希望当您在成为大师之时蓦然回首还能记得您的第一份作品,无论如何,恭喜您!!!
作者: g-g-g 时间: 2012-8-22 12:51
最重要的事情给隐藏了
作者: pogox 时间: 2012-8-22 12:52
虽然不懂。。。但还是想看看隐藏的是啥
作者: likeliang 时间: 2012-8-22 12:53
为什么悲催的我看不懂啊
作者: DJXGAME 时间: 2012-8-22 12:53
g-g-g 发表于 2012-8-22 12:51 
最重要的事情给隐藏了
隐藏的事情很重要吧~~~
作者: 侠客 时间: 2012-8-22 12:53
表示完全看不懂=v=
作者: 路邊電燈泡 时间: 2012-8-22 12:54
暫時還是先用ModLoader來開發的我悲劇...
作者: DJXGAME 时间: 2012-8-22 12:57
路邊電燈泡 发表于 2012-8-22 12:54 
暫時還是先用ModLoader來開發的我悲劇...
一个精通也满好的~~~
作者: yeyaowei 时间: 2012-8-22 13:30
来看看隐藏的是什么!!
作者: yeyaowei 时间: 2012-8-22 13:31
我上当了..........
作者: jianghr 时间: 2012-8-22 13:33
本帖最后由 jianghr 于 2012-8-22 13:34 编辑
我要做坦克~~
我猜隐藏的内容是求回帖。
===
猜错了…
作者: DJXGAME 时间: 2012-8-22 13:38
jianghr 发表于 2012-8-22 13:33 
我要做坦克~~
我猜隐藏的内容是求回帖。
===
我不会做那种求回帖的事情的……
作者: qw4wer 时间: 2012-8-22 13:53
学习ing,搞一个最新环境翻了n道墙。。。
作者: DJXGAME 时间: 2012-8-22 14:43
qw4wer 发表于 2012-8-22 13:53 
学习ing,搞一个最新环境翻了n道墙。。。
好吧~~人家一会吧需要的软件都传到网盘里~~
作者: diauweb 时间: 2012-8-22 14:48
[gold_ore][wood_pickaxe]
作者: katetem4 时间: 2012-8-22 16:33
其實可以這樣寫嗎?
public void addCreativeItems(ArrayList itemList)
{
if(blockID == mod_ YourModName. yourFirstBlock.blockID)
{
itemList.add(new ItemStack(this));
}else{
throw new Exception("An error occured");
}
作者: DJXGAME 时间: 2012-8-22 16:41
katetem4 发表于 2012-8-22 16:33 
其實可以這樣寫嗎?
这是在后面添加了一个else~~~应该可以
但是人家是在翻译别人的教程还是要遵循原文~~~
作者: qw4wer 时间: 2012-8-22 18:30
为什么我的项目这么多错误呢,但是不影响编译,游戏,但是很多错误,有时候都不知道是不是真的错误。{:10_503:}(=w=)
然后如果是我的6.2版本就不会这样。。为啥呢{:10_527:}
-
QQ截图20120822182335.png
(36.38 KB, 下载次数: 8)
作者: qw4wer 时间: 2012-8-22 19:45
qw4wer 发表于 2012-8-22 18:30 
为什么我的项目这么多错误呢,但是不影响编译,游戏,但是很多错误,有时候都不知道是不是真的错误。{:10_5 ...
搞定了,工作环境跟以前不一样,orz
作者: 299uipHjk 时间: 2012-8-23 08:59
终于看懂了一点
作者: 448620246 时间: 2012-8-23 20:43
唉 学习一下
作者: 老李是我 时间: 2012-8-23 21:27
好无耻的回复可见...
作者: S.T.R→刺客 时间: 2012-8-23 21:28
回复可见啊 啊啊 啊
作者: kylexdd 时间: 2012-8-23 22:17
希望學習後可以制作server轉用MOD
作者: 公猫 时间: 2012-8-24 17:15
楼主厉害!
作者: heronger25 时间: 2012-8-24 20:54
现在要做一件最为重要的事请
作者: 994523036 时间: 2012-8-26 12:05
... 你最少要弄个简单的JAVA教程丫 要不然 就相当于 直接开始制作了!!
作者: 863548793 时间: 2012-8-27 14:00
喜欢 喜欢 喜欢 !!!!!!!!!
作者: shiau109 时间: 2012-8-28 19:38
不錯的教學
可惜有些地方似乎有缺漏
作者: yaya 时间: 2012-8-29 11:42
讨厌回复可见
作者: 可乐丸子 时间: 2012-8-30 18:16
……一定要回复……另外:执行ITextureProvider是什么情况……大雾
作者: 1053108088 时间: 2012-9-1 19:03
Mcbbs有你更精彩~
作者: shiau109 时间: 2012-9-2 15:33
這似乎是舊版寫法了
新的1.3.2版更簡潔更給力阿
作者: DJXGAME 时间: 2012-9-2 15:58
shiau109 发表于 2012-9-2 15:33 
這似乎是舊版寫法了
新的1.3.2版更簡潔更給力阿
确实如此~~~待全文发完后再行更新~~~请稍后哈 ~~~
作者: nbmahe 时间: 2012-9-4 16:44
隐藏干哈
作者: 49471005 时间: 2012-9-4 19:06
回帖是美德-w-
作者: 1076742624 时间: 2012-9-7 04:31
回复看看 =w=+
作者: Dimaxiya 时间: 2012-9-10 21:22
好东西~
作者: 大腦-格式化 时间: 2012-9-12 01:43
只为了回复看看{:10_512:}
作者: pandaking102 时间: 2012-9-15 01:56
居然隐藏了,我要看——
作者: 398914337 时间: 2012-9-15 10:39
net.minecraft.src不需要经过反翻译就能找到么?
作者: 88771013 时间: 2012-9-16 19:33
有些描述有点问题
作者: case32bfk 时间: 2012-9-18 19:18
正好需要学习MOD的制作法,有这种教学真的太棒了
作者: S寒冰瞬杀S 时间: 2012-9-18 20:05
呵呵,我一直想自己做MOD
作者: DJXGAME 时间: 2012-9-18 20:10
88771013 发表于 2012-9-16 19:33 
有些描述有点问题
这个确实是这样子的……我不是很会计算机的,万分抱歉哈~
作者: 901 时间: 2012-9-18 21:29
very good!
作者: lammankai 时间: 2012-9-19 19:22
看看........
作者: dangs456789 时间: 2012-9-20 00:33
正学着 看隐藏
作者: kycy123 时间: 2012-9-21 23:13
{:10_492:}我看看是什么东东
作者: lndexlawet 时间: 2012-9-22 19:05
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK~
作者: lndexlawet 时间: 2012-9-22 19:16
能给一份网盘的下载吗那个国外网站下载不能
作者: lndexlawet 时间: 2012-9-22 19:20
添加“extends BaseMod”这样的代码完成类的声明 extends是继承的意思 BaseMod这个父类并且可以使用他的方法和构造
作者: 神ID 时间: 2012-9-22 20:52
窝就看看隐藏的是神毛0 0
作者: garysh2012 时间: 2012-9-23 12:09
回复支持一下
作者: cwc 时间: 2012-9-23 12:56
fds不错 由你更精彩
作者: beda0912 时间: 2012-9-23 19:29
一步一步慢慢學
感謝翻譯
作者: 136374067 时间: 2012-9-23 19:37
听不懂啊aaaaaaa
作者: l9010 时间: 2012-9-23 21:39
{:10_512:}好贴
作者: 邪恶面具 时间: 2012-9-25 08:44
极为重要的是?
作者: nacnac 时间: 2012-9-25 08:53
诶,我脑子不够使唤啊。
作者: frkthaha 时间: 2012-9-26 22:28
最重要的是。。。。
作者: sdsdsdsdsd23 时间: 2012-10-1 14:05
很棒的作品!
作者: yueou 时间: 2012-10-1 14:10
来学习了~~
作者: roco33 时间: 2012-10-3 02:07
看看隐藏的是啥
作者: h296863785 时间: 2012-10-3 11:08
看看隐藏的东西是什么
作者: xu871676258 时间: 2012-10-3 21:42
e。。。。。。。。。。。。。。。
作者: mr21e 时间: 2012-10-4 00:54
技术贴一定要顶啊
作者: 121955907 时间: 2012-10-5 09:25
看到一半竟然要回复了!
作者: mingl0280 时间: 2012-10-5 21:59
回复可见。。。能不能不要那么多的回复可见。。。
作者: 714979518qq 时间: 2012-10-6 15:35
et.minecraft.src包内右击任意文件,点击New ->Class。
将其命名为“mod_YOURMODNAME”,必须确保其以“mod_”开头,因为只有这样系统才会识别该文件为一个MOD并开始加载。无需在底部选择任何的选项,点击"Finish"完成创建。
作者: Minezeratul 时间: 2012-10-6 15:57
看一看,以后毕业了做个CSOl 的mod
作者: thomasmi 时间: 2012-10-7 11:10
我就说我怎么看不完整
作者: pkljl001 时间: 2012-10-7 11:21
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
作者: jpg456 时间: 2012-10-7 13:50
我看看!!!
作者: 御坂美琴_wzh 时间: 2012-10-7 14:57
好支持顶儿
作者: stlfatboy 时间: 2012-10-7 15:28
.必须顶。。。
作者: stlfatboy 时间: 2012-10-7 15:28
.必须顶。。。
作者: KeuioYan 时间: 2012-10-7 22:21
現在碰到有點小疑惑...
我已經可以製作出一個獨立的MOD,有著自己的礦脈自己的工具
但是我想做出一個"雕像"
我想過製造一個新方塊,把材質替換成人物Skin的png檔。
事後證明我是個智障-3-
我希望可以弄出一個客製化方塊...可以自訂xyz等
簡而言之,我想把人物擺在遊戲中當裝飾。
想請教大神Orz。
作者: myland123456 时间: 2012-10-7 23:17
好!b b b b b b b b b b b b b
作者: SnakeLing 时间: 2012-10-8 21:16
为什么还有隐藏起来的内容……
作者: 汤团 时间: 2012-10-9 02:29
隐藏的是什么
让我看看
作者: hendyzone 时间: 2012-10-9 10:02
教程果断顶(其实是好奇隐藏←_←)
作者: Godfrey.Mao 时间: 2012-10-9 11:37
ggggggggggggggggggggggggggg
作者: liyou 时间: 2012-10-13 13:25
隐藏神马?
不是骗回帖吧?
作者: 1459103511 时间: 2012-10-13 16:15
= =我来看看要做什么
作者: zhukaijun 时间: 2012-10-14 02:50
会点java编程 学习一下啊
作者: lianchengtc 时间: 2012-10-16 15:08
支持楼组~~~
作者: qrqrttyt 时间: 2012-10-16 16:13
你好,我很想向您学习
作者: keith_crazy 时间: 2012-10-18 18:43
隐藏了啥子呦
作者: lhy594250 时间: 2012-10-19 23:19
好厉害,顶!!!
作者: 13510115841aaa 时间: 2012-10-20 00:01
我小学就想学做MOD,我就得太生奥了啊啊啊啊啊啊啊啊啊啊
作者: sylqiuyifeng 时间: 2012-10-20 14:49
好吧居然还有隐藏……我好奇了看看
作者: hyvlarn 时间: 2012-10-20 18:35
感觉还是有好多地方看不懂
作者: wwwfcxz 时间: 2012-10-20 19:41
很像看一下隐藏了什么
作者: 大虫 时间: 2012-10-20 20:59
虽然不是很明白,但是觉得好厉害哦
作者: andylvldd 时间: 2012-10-22 18:32
果然是最重要的东西不见了
作者: liuthou 时间: 2012-10-22 18:52
O(∩_∩)O哈哈~ 学了一个学期java 试试做做[diamond_chestplate]
作者: dute007 时间: 2012-10-23 09:52
回复看隐藏
作者: xmq1991 时间: 2012-10-23 12:18
学习学习~~~~~~~~~~~~
作者: xiaoxiami 时间: 2012-10-24 17:36
支持一下啊