Minecraft(我的世界)中文论坛

标题: 用MCP+MODLOADER制作MOD(正在更新)

作者: 719823597    时间: 2011-10-6 14:22
标题: 用MCP+MODLOADER制作MOD(正在更新)
本帖最后由 719823597 于 2012-7-31 13:44 编辑

第一篇教程


如果编译时出了错误,请把错误报告发上来




                                                                                                 一.如何在MCP里装modloader(只需改一下教程1的方法)
先把MCP解压了(我解压到了C盘 C:\MCP),复制BIN和RESOURCE和官方服务端到MCP目录里的jars文件夹(C:\MCP\JARS)然后点开decompile.bat,完成

注意!! 复制BIN之前先在MINECRAFT.JAR里装入modloader并删掉meta-inf文件夹

然后decompile

                                                                                                

                                                                                               二.如何用modloader添加一条合成公式
先在src文件夹里创建个名为mod_xxx.java的文件(xxx可以随便改),打开输入
  1. package net.minecraft.src;

  2. public class mod_xxx extends BaseMod
  3. {

  4. public String Version()
  5.     {
  6.         return "1.0 ";
  7.     }

  8.                 public mod_xxx ()
  9.     {
  10. ModLoader.AddRecipe(new ItemStack(tnt, 1), new Object[] {"s", "s", Character.valueOf('s'), Block.dirt});
  11.                    }
  12.                   
  13.                    }
复制代码


”public String Version()“为mod的版本号(不可以去掉 否则会崩溃),
ModLoader.AddRecipe(new ItemStack(tnt, 1), new Object[] {"s", "s", Character.valueOf('s'), Block.dirt});

这条就是合成公式啦,“new ItemStack(tnt, 1)”为合成后的物品,”"s", "s", Character.valueOf('s'), Block.dirt“为合成配方(打竖的两个土)

                                                                                                                          二.用modloader添加一个新方块

我们先新建一个名为Blockexample.java的文件,打开输入

  1.     package net.minecraft.src;

  2.     import java.util.Random;

  3.     public class Blockexample extends Block
  4.     {
  5.     public Blockexample(int i, int j)
  6.     {
  7.     super(i, j, Material.rock);
  8.     }

  9.     public int idDropped(int i, Random random)
  10.     {
  11.     return this.blockID;
  12.     }
  13.     }
复制代码

其实这里是引用了教程1的代码= =,modloader比MCP方便的原因之一就是添加东东不用怎么修改游戏自带文件,减少冲突

然后我们打开mod_xxx.java,添加一条

public static final Block example = (new Blockexample (114,0)).setHardness(0.3F).setResistance(30F).setBlockName("example");;

“public static final Block example”算是给这方块一个名字,在编mod时和下文用得到,“(new Blockexample (114,0))”是引用blockexample.java文件(刚刚弄的),方块编号为114,之后的那些sethardness之类的在教程1已经讲过

然后再添加
  1.        example.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/xxx/example.png");
  2.        ModLoader.RegisterBlock(example );
  3.            ModLoader.AddRecipe(new ItemStack(example , 1), new Object[]{ "X", Character.valueOf('X'), Block.cobblestone});
  4.            ModLoader.AddName(example , "example");
复制代码
“example .blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/xxx/example.png");”是添加刚刚那个方块的材质的路径(现在的路径为minecraft.jar/xxx/example.png),|| “ModLoader.RegisterBlock(example );”这句是必要的,注册方块用的   “ModLoader.AddRecipe(new ItemStack(example , 1), new Object[]{ "X", Character.valueOf('X'), Block.cobblestone});”
这个不用说啦,合成公式   “ModLoader.AddName(example , "example");”这个是添加此方块在游戏中的名字(就叫example吧)



完整代码如下:
  1. package net.minecraft.src;

  2. public class mod_xxx extends BaseMod
  3. {

  4. public static final Block example = (new Blockexample (114,0)).setHardness(0.3F).setResistance(30F).setBlockName("example");;

  5. public String Version()
  6.     {
  7.         return "1.0 ";
  8.     }
  9.         
  10.                 public mod_xxx ()
  11.     {
  12.                   
  13.                  
  14.            example.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/xxx/example.png");
  15.        ModLoader.RegisterBlock(example );
  16.            ModLoader.AddRecipe(new ItemStack(example , 1), new Object[]{ "X", Character.valueOf('X'), Block.cobblestone});
  17.            ModLoader.AddName(example , "example");
  18.                   
  19.                   
  20.                    }
  21.                   
  22.                   
  23.                    }
复制代码

                                                                                                           三.用modloader制作一个新物品

直接引用教程1的代码吧,把教程1的代码放入src文件夹,打开mod_xxx.java 输入
  1. public static final Item test = (new ItemExample (3010)).setItemName("test");;
复制代码

其实与方块的差不多,那就略过吧= =,继续输入
  1. test.iconIndex = ModLoader.addOverride("/gui/items.png", "/xxx/test.png");
  2. ModLoader.AddName(test, "test");
  3. ModLoader.AddRecipe(new ItemStack(test, 1), new Object[] {"s", "s", Character.valueOf('s'), Block.stone});
复制代码
这里的第一条是材质的路径(和刚才的一样,就是文件名为test.png),“ModLoader.AddName(test, "test");”是游戏中显示的的物品名字,”ModLoader.AddRecipe(new ItemStack(test, 1), new Object[] {"s", "s", Character.valueOf('s'), Block.stone});“是合成公式(打竖的两个石头), 与方块不同的是 这里并不需要注册道具


完整代码如下

  1. package net.minecraft.src;

  2. public class mod_xxx extends BaseMod
  3. {

  4. public static final Item test = (new ItemExample (3010)).setItemName("test");;

  5. public String Version()
  6.     {
  7.         return "1.0 ";
  8.     }
  9.         
  10.                 public mod_xxx ()
  11.     {
  12.                   
  13. test.iconIndex = ModLoader.addOverride("/gui/items.png", "/xxx/test.png");
  14. ModLoader.AddName(test, "test");
  15. ModLoader.AddRecipe(new ItemStack(test, 1), new Object[] {"s", "s", Character.valueOf('s'), Block.stone});

  16.                    }
  17.                   
  18.                    }
复制代码

                                                



                                                                                                                四.如何制做一个新的NPC(动物类)
先新建一个EntityXXX.java文件,写上

  1. // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
  2. // Jad home page: http://www.kpdus.com/jad.html
  3. // Decompiler options: packimports(3) braces deadcode

  4. package net.minecraft.src;

  5. import java.util.Random;

  6. // Referenced classes of package net.minecraft.src:
  7. //            EntityAnimal, Item, EntityPlayer, InventoryPlayer,
  8. //            ItemStack, World, NBTTagCompound

  9. public class EntityXXX extends EntityAnimal
  10. {

  11.     public EntityXXX(World world)
  12.     {
  13.         super(world);
  14.         texture = "/mob/xxx.png";
  15.         setSize(0.9F, 1.3F);
  16.     }

  17.     public void writeEntityToNBT(NBTTagCompound nbttagcompound)
  18.     {
  19.         super.writeEntityToNBT(nbttagcompound);
  20.     }

  21.     public void readEntityFromNBT(NBTTagCompound nbttagcompound)
  22.     {
  23.         super.readEntityFromNBT(nbttagcompound);
  24.     }

  25.     protected String getLivingSound()
  26.     {
  27.         return "mob.cow";
  28.     }

  29.     protected String getHurtSound()
  30.     {
  31.         return "mob.cowhurt";
  32.     }

  33.     protected String getDeathSound()
  34.     {
  35.         return "mob.cowhurt";
  36.     }

  37.     protected float getSoundVolume()
  38.     {
  39.         return 0.4F;
  40.     }

  41.     protected int getDropItemId()
  42.     {
  43.         return Block.stone.shiftedIndex;
  44.     }

  45. }
复制代码

        texture = "/mob/xxx.png";  是NPC的皮肤的路径,setSize(0.9F, 1.3F);是NPC的大小(这是改NPC的实际大小 改显示的大小在render文件里)


        然后我们需要模型和render文件,我们需要用到Techne ,可以自己制作模型和render文件

制作完后将render和模型文件放入src文件夹,然后打开mod_xxx.java

加上这句



  1.                 ModLoader.RegisterEntityID(EntityXXX.class, "XXX", ModLoader.getUniqueEntityId());
  2.                 ModLoader.AddSpawn(EntityXXX.class, 10, EnumCreatureType.creature);
复制代码

  1.   public void AddRenderer(Map map)
  2.     {   
  3.         map.put(EntityXXX.class, new RenderXXX(new ModelXXX(), 0.5F));
  4.     }
复制代码

完整代码如下


  1. package net.minecraft.src;

  2. public class mod_xxxextends BaseMod
  3. {

  4. public void AddRenderer(Map map)
  5. {
  6. map.put(EntityXXX.class, new RenderXXX(new ModelXXX(), 0.5F));
  7. }

  8. public String Version()
  9.     {
  10.         return "1.0 ";
  11.     }
  12.         
  13.         
  14.                 public mod_xxx ()
  15.     {
  16.                   

  17.                    ModLoader.RegisterEntityID(EntityXXX.class, "XXX", ModLoader.getUniqueEntityId());
  18. ModLoader.AddSpawn(EntityXXX.class, 10, EnumCreatureType.creature);
  19.                   
  20.                    }
  21.                    }
复制代码












剩下的晚上再更新

作者: 719823597    时间: 2011-10-6 14:24
占个楼
作者: numnum    时间: 2011-10-6 14:57
占2楼。。。支持!!!!!!!
作者: green丶bastard    时间: 2011-10-6 14:58
前排
作者: hhyx    时间: 2011-10-6 15:05
哇 好厉害。。可是光用MCP俺就不会了。。更别说modloader了。。悲剧
作者: 434942930    时间: 2011-10-6 15:16
回个贴看一下··
作者: qc00705    时间: 2011-10-6 15:34
路过看看   
作者: 498572118    时间: 2011-10-6 15:45
我要学。。。。。。。。。。。。。
作者: wzscsw    时间: 2011-10-6 15:48
小白受教~
作者: Hostolor    时间: 2011-10-6 15:53
o......................
作者: jyh    时间: 2011-10-6 16:02
既然是回复可见。。
作者: 1050595672    时间: 2011-10-6 16:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: ccfs    时间: 2011-10-6 16:20
我必须回复啊?      
作者: GG_bond    时间: 2011-10-6 16:20
看不懂                     
作者: ccfs    时间: 2011-10-6 16:21
非常复杂...............
作者: zhj6690260    时间: 2011-10-6 16:31
支持支持,但是为什么我的MCP运行时总是提示缺少文件呢?我明明把文件都复制好了啊
作者: john180    时间: 2011-10-6 16:34
小白 顶一下啊
作者: kirbykirby    时间: 2011-10-6 16:39
支持!!!
作者: pathfinder    时间: 2011-10-6 16:59
围个观……         
作者: xiekeas    时间: 2011-10-6 17:06
这是什么东西~
作者: 路邊電燈泡    时间: 2011-10-6 17:27
哇~又出現了~lz真的是太瘋MOD的製作了~
作者: tom777my    时间: 2011-10-6 17:35
THX~~~~~~~~~~~~~~~~~~~~~~~~~~
作者: 斯巴达    时间: 2011-10-6 17:45
= =回复啊
作者: laiwingyu    时间: 2011-10-6 17:47
看一看先
作者: hsulee    时间: 2011-10-6 19:27
想看看看的说
作者: qq983859181    时间: 2011-10-6 19:43
提示: 该帖被管理员或版主屏蔽
作者: wstdavid    时间: 2011-10-6 19:44
看一下,看一下。
作者: rickky2    时间: 2011-10-6 19:45
纯支持一下
作者: 543117996    时间: 2011-10-6 19:47
看看简单不
作者: a92050a92050    时间: 2011-10-6 19:47
wow cool              
作者: aop1f    时间: 2011-10-6 21:32
好吧回复....
作者: a919298641    时间: 2011-10-6 21:52
什么啊》?



作者: zhsx11    时间: 2011-10-7 01:56
必须要支持啊- -
作者: zjhs999    时间: 2011-10-7 02:26
什么东西?做MOD
作者: jzys    时间: 2011-10-7 09:43
支持!!!
作者: heidada    时间: 2011-10-7 12:25
看看内容先
作者: :spgbigfan:    时间: 2011-10-7 12:37
LZ头像又换了。
作者: 舜、    时间: 2011-10-7 12:54
回帖看内容..
作者: night    时间: 2011-10-7 16:56
好吧,继续学习...
作者: gdzoooo    时间: 2011-10-7 17:05
回复。。。。。。。。。。。。。。。。。
作者: tonyzhenyu    时间: 2011-10-7 17:17
看看而已啊
作者: Zasz    时间: 2011-10-7 21:57
我只是想去掉小黑
作者: WDWDDWWDWD    时间: 2011-10-8 06:37
來看看......到底是用什麼做的
作者: DYA3506    时间: 2011-10-8 06:56
后排围观zhong
作者: rian_rian_rian    时间: 2011-10-12 10:59
回复一下,你就知道
作者: 浩然天地    时间: 2011-10-12 14:03
[bedrock]地壳般的支持!
作者: cyz886886    时间: 2011-10-12 14:36
学习了,顶起
作者: shingshing09    时间: 2011-10-13 22:23
可以自己制作
作者: 蜘蛛侠hw    时间: 2011-10-14 05:57
= = 回复一下
作者: 西瓜    时间: 2011-10-14 06:01
厉害....可是光用MCP俺就不会了....更别说modloader了.........
作者: ang146    时间: 2011-10-14 22:16
這個要不要與上一篇的連上關係- -
作者: gsg94321    时间: 2011-10-15 14:07
可以自己作modㄟ

作者: pat159    时间: 2011-10-15 17:28
支持!!!!!!!
作者: 菜刀    时间: 2011-10-15 19:11
我要做MOD~~~
作者: ghostboyz    时间: 2011-10-15 20:06
支持
                  
作者: ak47xsb    时间: 2011-10-15 22:57
看看什么东东
作者: skyonesword    时间: 2011-10-16 01:10
学习啊~~!!
作者: ynny    时间: 2011-10-16 01:39
来学习!         
作者: 猫前月下    时间: 2011-10-16 01:53
希望能有系统类的MOD教程= =
作者: yuehuTI    时间: 2011-10-16 10:20
小白受教~~~
作者: peterfung518    时间: 2011-10-16 11:24
好一個回復!!!
作者: rasy    时间: 2011-10-17 11:58
占楼~~~~~~·
作者: ljyinvader    时间: 2011-10-17 18:12
看看怎么制作mod,有空的话我也来做
作者: abc52woool    时间: 2011-10-17 18:56
回复可见不解释
作者: coffee2008    时间: 2011-10-18 21:59
只想改下高度限制
作者: haonannann    时间: 2011-10-18 22:45
会了个复……………………

作者: l26107    时间: 2011-10-21 16:37
好学吗?。。。木有java基础

作者: huhu呼呼    时间: 2011-10-21 18:22
回复看看。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
作者: sudo    时间: 2011-10-22 15:18
回复看看~~~
作者: 地球孤鹰    时间: 2011-10-22 22:23
需要 JAVA 编程知识么?
作者: 455562092    时间: 2011-10-23 00:37
看看,{:lol:}
作者: yuxuanchiadm    时间: 2011-10-23 03:57
好吧,回复= =
作者: xpzlb    时间: 2011-10-25 18:18
提示: 该帖被管理员或版主屏蔽
作者: Mr.Nima    时间: 2011-10-25 18:23
过来学习 表示有联机MOD的教程么?
作者: jin947789056    时间: 2011-10-25 19:02
MCP是啥啊。
作者: 我是蟹柳    时间: 2011-10-25 20:10
This what? =W=
作者: bb5892914    时间: 2011-10-26 01:45
.....邪恶的隐藏了你。。。

作者: raytracesoak    时间: 2011-10-26 02:13
这个必须要支持
作者: l1995613    时间: 2011-10-26 10:52
果断看了.........
作者: 菜刀    时间: 2011-10-26 11:24
好复杂啊这个……
作者: vea    时间: 2011-10-26 12:35
回复看内容
作者: cuici163    时间: 2011-10-28 12:41
好东西要顶啊
作者: tonynet    时间: 2011-10-28 12:49
- -..  回复看帖。。
作者: wdtywlmc    时间: 2011-10-29 13:09
不明白,想学习学习
作者: weitiancai    时间: 2011-10-29 13:16
看看,哈哈
作者: Legend    时间: 2011-10-29 13:38
开 回复 确认

作者: wzhh07    时间: 2011-10-29 14:50
可以自己做mod?
作者: yokijudai    时间: 2011-10-29 14:54
我不知道能不能看懂……
作者: shing10287    时间: 2011-10-29 22:19
&diams
我要学!
作者: 599056390    时间: 2011-10-30 13:06
支持+回复
作者: stalincenlam    时间: 2011-10-31 06:48
回复啊啊啊啊啊啊啊啊啊啊啊~~~~~
作者: well    时间: 2011-10-31 07:14
不得不回啊...
作者: h01870070    时间: 2011-10-31 07:31
回帖看看......
作者: pan3820120    时间: 2011-11-1 18:54
支持     
作者: rtm40743    时间: 2011-11-1 19:29
回复看看教程,没这个真做不了
作者: cobersky    时间: 2011-11-2 13:20
路过+学习{:lol:}
作者: akes    时间: 2011-11-3 22:35
感谢分享.十字啊浑蛋
作者: 大好人    时间: 2011-11-4 06:45
支持顶顶我支持
作者: rjhang    时间: 2011-11-4 08:06
提示: 该帖被管理员或版主屏蔽
作者: 296694661    时间: 2011-11-4 17:43
看看~~~~~~~~