由於最近太忙了,所以無力一口氣把所有教程更新完.
所以打算現在這裡放出預覽版然後慢慢更新,全部寫完後再正式發到論壇.
注意由於是預覽版,所以隨時都會有更新和修正.
基礎篇
第一章: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, 好久沒來參拜你的文章了, 你的文章始終能帶給我新的方向, 真是感謝.