由于最近太忙了,所以无力一口气把所有教程更新完.
所以打算现在这里放出预览版然后慢慢更新,全部写完后再正式发到论坛.
注意由于是预览版,所以随时都会有更新和修正.
基础篇
第一章:MCP,Forge和Eclipse的配置
http://www.hakugyokurou.net/wordpress/?p=134
第二章:建立一个基于Forge的Mod
http://www.hakugyokurou.net/wordpress/?p=144
第三章:创建新的砖块,物品和冶炼
http://www.hakugyokurou.net/wordpress/?p=163
第四篇:实体
http://www.hakugyokurou.net/wordpress/?p=340
Extra篇
第一篇:Forge的事件系统
http://www.hakugyokurou.net/wordpress/?p=225
第二篇:在Eclipse下编译和调试(从1.7开始就不用考虑这个问题了)
http://www.hakugyokurou.net/wordpress/?p=257
第三篇:Coremod的制作
http://www.hakugyokurou.net/wordpress/?p=333
配套:Java字节码(Bytecode)与ASM简单说明
http://www.hakugyokurou.net/wordpress/?p=409
第四篇:Gui
http://www.hakugyokurou.net/wordpress/?p=333
常见问题
http://blog.hakugyokurou.net/?p=1298
Plus篇(同样未更新并且严重过时...)
什么是Plus篇?Plus篇倾向于讲那些原理和底层中的东西,或许对大部分人来说,是没有什么作用的.
http://www.hakugyokurou.net/wordpress/?p=284
ASMShooterMappingData的下载(供用来做Coremod的人使用,介绍看Extra编第三篇.)
http://sdrv.ms/1cv32le
另外,基础篇可能以后我不会更新了...换句话说旧教程的TileEntity和地形生成不会再被移植到新教程上,对于这几篇教程的空白,你可以参考别人的教程:
Manageryzy编写的综合索引站,包括所有中文教程的索引:https://mcdev-wiki.org
Manageryzy的教程:http://www.261day.com/minecraft-forge教程/
Darkyoooooo的教程:http://darkyoooooo.minestudio.org/minecraft-forge-开发实例/
非官方Forge文档:http://mcforge-cn.readthedocs.org/zh/latest/ (有点慢,可能需要翻墙)
如果你是位教程作者的话,可以叫我在这里加上你的教程的链接.
更新:
12.12.9 更新一点点...
12.12.12 更新了一点物品的部分
12.12.23 更新到Forge6.5.0.471
13.1.1 过年啦过年啦...旧坑未填又来新坑哟,这次是Forge的事件系统.同时,代码高亮插件修复,看起来挺不错.
13.1.2 紫妈大暴走(?),第二篇Extra教程出炉了!顺便对第一篇基础教程稍微调整了一下.
13.1.28 放出了Plus篇.
13.2.2 更新了基础教程(3)的一部分.
13.2.10 稍微修正了一点小细节(真的?)
13.2.26 Plus篇更新了一部分.为基础篇和Extra篇的更新做准备.
13.3.17 Extra第三篇和其配套教程发布.
13.6.24 Plus篇更新了"AABB盒与Vec3"
13.8.4 基础篇第四篇发布
13.9.1 修正了Extra第三篇的问题
15.1.6 更新了基础篇的1~3篇
15.2.5 更新了Extra第一篇
15.2.6 更新了Extra第三篇和ASM教程
15.2.22 加上了其他作者的教程的链接
16.2.22 时隔一年,在1.9发布前夕,教程开始向1.8更新
请问一下您,我的矿物生成代码有错嘛?我始终不能生成矿物...
package net.apple.moreusefulores;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.feature.WorldGenMinable;
import cpw.mods.fml.common.IWorldGenerator;
public class BlackOreGenerators implements IWorldGenerator {
@Override
public void generate(Random random, int chunkX, int chunkZ, World world,
IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
switch(world.provider.dimensionId){
case -1:
generateNether(world, random , chunkX*16, chunkZ*16);
break;
case 0:
generateSurface(world, random, chunkX * 16, chunkZ*16);
break;
case 1:
generateEnd(world,random, chunkX*16, chunkZ*16);
break;
}
}
private void generateEnd(World world, Random random, int i, int j) {
// TODO Auto-generated method stub
}
private void generateSurface(World world, Random random, int x, int z) {
// TODO Auto-generated method stub
this.addOreSpawn(net.apple.moreusefulores.Loading_mod.BlackOre, world, random, x, z, 16, 16, 2+random.nextInt(4), 100, 3, 20);
this.addOreSpawn(net.apple.moreusefulores.Loading_mod.GreenOre, world, random, x, z, 32, 32, 4+random.nextInt(30), 99, 3, 25);
}
private void generateNether(World world, Random random, int i, int j) {
// TODO Auto-generated method stub
}
public void addOreSpawn(Block block, World world, Random random, int blockXPos, int blockZPos, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY)
{
int maxPossY = minY + (maxY - 1);
assert maxY > minY: "The maximum Y must be greater than the Minimum Y";
assert maxX > 0 && maxX 0: "addOreSpawn: The Minimum Y must be greater than 0";
assert maxY 0: "addOreSpawn: The Maximum Y must be less than 256 but greater than 0";
assert maxZ > 0 && maxZ <= 16: "addOreSpawn: The Maximum Z must be greater than 0 and less than 16";
int diffBtwnMinMaxY = maxY - minY;
for(int x = 0; x < chancesToSpawn; x++)
{
int posX = blockXPos + random.nextInt(maxX);
int posY = minY + random.nextInt(diffBtwnMinMaxY);
int posZ = blockZPos + random.nextInt(maxZ);
(new WorldGenMinable(block.blockID, maxVeinSize)).generate(world, random, posX, posY, posZ);
}
}
}
第二次来这里了哦~最近正在学习制作1.7.2版本的mod,于是想起来收藏夹里几个月前就躺着这样一个博客。话说这次才发现博主就是mcbbs的szszss...你在mcbbs的教程已经看完大部分了,在百度能找到的为数不多的mod教程里感觉是最全面的。接下来我就好好拜读这个博客啦。
现在的配置已经不用那么费劲了啊。1.7.10之后forge gradle已经相当人性化的添加了两个任务是启动服务器和启动客户端了,可以通过gradle 直接一键启动软件了
sz大什么时候能写一些关于Renderer的教程呢?上次关于TileEntity绘制模型那次真是帮大忙了!现在我想试着在方块上方显示文字,是应该FontRenderer吗?不过不大会用这个,想问一下构造的方法里的参数都是做什么的
另外我刚才忘了问一件事QωQ
怎么才能在一个方块上方渲染出来的文字是时刻面向玩家的呢?不同玩家看到的都是面对自己的这种效果大概如何实现?
啊,我花了一个下午研究出来了。。。之所以我显示不出来字是因为作为FontRenderer.drawString(String,int,int,int)方法第四个作为颜色代码的参数,对应的Alpha值竟然是1为不透明,0为全透明QωQ
另外始终面向玩家我翻看RenderPlayer类,里面发现了RenderManager里的playerViexX和playerViewY两个参数可以用,然后就解决了呢
请教下,为什么我的纹理显示不出来 renoTable.setTextureName("reno:table");
在E:\MC\forge\mcp\src\minecraft\assets\reno\textures\items 下有table.png
初接触编程。对着博主教程捣鼓捣鼓,结果出问题了。
博主教程适合1.7.10么?有没有1.7.10的呢= =
泥萌欺负人!都写1.7的mod制作教程,我1.6党威严何在?!(手动斜眼)
1.6的教程在1.7发布了将近一年多后才去除掉,已经留了很久了...况且1.7已经成了主流,没有必要一直留在1.6了.
我擦,,作者先生啊。我要吐槽…………
1.剑怎么搞,你似乎只做了工具
2.矿脉生成问题
3.锄头…………
不要告诉我在第四章
1.知道工具怎么做了,剑照葫芦画瓢还不会吗→_→ 无非就是继承的类变了而已
2.这个确实没说,mcbbs上的旧教程有提,但你懂的,很多都已经过时了...新教程目前暂无更新计划,我基本就等着别人去更新了
3.这不是百科全书...你可以自己看看ItemHoe类是怎么写的
谢谢,不过能不能说明一下剑继承什么,我只是不知道这个
坐等…………
能讲一下关于成就的内容吗...
hihi, 好久没来参拜你的文章了, 你的文章始终能带给我新的方向, 真是感谢.