没啥可说的了其实,但是只写两点太难看了,也就是说这一点是用来凑数的。废话不多说了,我们开整。
放mod的java文件的包要放在…/src/main/java这个目录里面,一般都起名为com.你的Minecraft中用的名字.你这个mod的名字。例如com.darkill.examplemod 。
然后再建两个包,分别为com.darkill.examplemod.util和com.darkill.examplemod.proxy和。结构如下(其他的包暂时不用管,也不用加入):
在com.darkill.examplemod.util(注意,包名因人而异,我这里只是为了举例子)包里面写一个Reference类。这个类的作用其实就相当于一个properties配置文件,它的里面全部是常量。
package com.darkill.examplemod.util;
public class Reference {
public static final String MODID = "examplemod";
public static final String NAME = "Example Mod";
public static final String VERSION = "1.0";
public static final String ACCEPTED_VERSIONS = "[1.12.2]";
public static final String CLIENT_PROXY_CLASS = "com.darkill.tutorialmod.proxy.ClientProxy";
public static final String COMMON_PROXY_CLASS = "com.darkill.tutorialmod.proxy.CommonProxy";
}
上面提到的这几个都可以随意些,后面两个变量必须是proxy包下面的这两个类,不过这时这两个类还没写呢,一会儿再写。我们先接着写Main文件
在com.darkill.examplemod包里面写一个Main类。具体代码如下:
package com.darkill.examplemod;
import com.darkill.examplemod.util.Reference;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
@Mod(modid = Reference.MODID, name = Reference.NAME, version = Reference.VERSION)
public class Main {
@Instance
public static Main instance;
@SidedProxy(clientSide = Reference.CLIENT_PROXY_CLASS, serverSide = Reference.COMMON_PROXY_CLASS)
public static CommonProxy proxy;
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
}
@EventHandler
public void init(FMLInitializationEvent event) {
ModRecipes.init();
}
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
}
}
我们在第三步写的Reference类中可以注意到有两个类的路径我们并没有写任何java文件,这一步的操作就是写上他们。
package com.darkill.examplemod.proxy;
import net.minecraft.item.Item;
public class CommonProxy {
public void registerItemRenderer(Item item, int meta, String id) {}
}
package com.darkill.examplemod.proxy;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.client.model.ModelLoader;
public class ClientProxy extends CommonProxy {
@Override
public void registerItemRenderer(Item item, int meta, String id) {
ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(item.getRegistryName(), id));
}
}
该文件名为mcmod.info的位于…/src/main/resources目录下,内容为:
[
{
"modid": "examplemod",
"name": "Example Mod",
"description": "Example placeholder mod.",
"version": "1.0",
"mcversion": "1.12.2",
"url": "",
"updateUrl": "",
"authorList": ["darkill"],
"credits": "The Forge and FML guys, for making this example",
"logoFile": "",
"screenshots": [],
"dependencies": []
}
]
现在这个模组充其量只能算得上是一个空壳模组,没有物品,没有方块,什么都没有。下面的张杰我们会逐一介绍,我们现在先讲讲如何运行模组。
打开Main类。然后点这儿:
同样打开Main类,先点这(或alt+u):
然后点这个(或alt+shift+f10):
然后再弹出的东西里面点这个runClient: