zkm00323
本帖最后由 zkm00323 于 2017-1-29 14:16 编辑

命名其实按照自己喜好就可以,但怕出bug的话,可以先完全按照我的名字打,之后再自己把名字都改掉,来了解代码之间的关系

1.mod入口文件
我们先在src/main/java下创建一个包,再在包里创建一个class

Main.java里我们写入这样的代码↓
@Mod(modid = "soa")
public class Main {        
        @EventHandler
        public void preInit(FMLPreInitializationEvent event){
        }
        
        @EventHandler
        public void init(FMLInitializationEvent event){
        }
        
        @EventHandler
        public void Postinit(FMLPostInitializationEvent event){
        }
}


这可以算是最基本的框架了,之后我们将不断扩展下去.不过你已经可以进入游戏看到mod列表里出现了你的mod了!







2.完善@Mod注解
@Mod有许多的参数可以输入,不输入的话会给一个默认值(按住ctrl点击@Mod可以进入Mod.class查看)
呢我们就来把比较有用的几个给输入一下
  1. @Mod(modid = "soa",name = "Soul of Ashes",version = "1.0",acceptedMinecraftVersions = "[1.11]")
复制代码
modid:必填(只有modid是必填的其他都可以不用),mod的ID
name:默认"",mod的名字
version:默认"1.0",mod的版本
acceptedMinecraftVersions:设定可支持的minecraft版本号(不设定则全版本通用),如果将mod放入不支持的mc版本将会在启动时报错
(acceptedMinecraftVersions可以支持版本范围输入:
acceptedMinecraftVersions = "[1.7.10,1.13]"版本在1.7.10到1.13内的MC可以读取(我在写这里的时候还只出到1.11但依然可行,它似乎会自动判断))

移放命名
有的时候我们必须调用modID,或者mod版本等,所以其实直接输入进@Mod里似乎不太有前瞻性
所以我们新建一个专门放命名的class


在Name.java里我们输入↓
public class Name {
        public static final String MOD_ID ="soa";
        public static final String NAME ="Soul of Ashes";
        public static final String VERSION ="1.0";
        public static final String ACCEPT_VRTDION ="[1.11]";
}

之后我们将在Main.java里的命名替换一下
  1. @Mod(modid = Name.MOD_ID,name = Name.NAME,version = Name.VERSION,acceptedMinecraftVersions = Name.ACCEPT_VRTDION)
复制代码







3.proxy客户端口和服务端口
有点概念的同学应该已经知道,现在就算单人玩mc,也等于mc在你电脑上开个服务器给你玩
不管你单人还是多人,都有一个在运作的服务器
而渲染方块这类的事情不需要也不可以放在服务端运行
而计算类的事情最好是放在服务端去运作,如果让客户端去运算可能会产生外挂

新建一个包,并在里面新建3个class

在CommonProxy.java里我们写↓
public interface CommonProxy {
        public void init();
}

在ClitentProxy.java里我们写↓
public class ClientProxy implements CommonProxy{
        public void init(){        
        }
}

在ServerProxy.java里我们写↓
public class ServerProxy implements CommonProxy{
        public void init(){
        }
}

ClientProxy和ServerProxy都implement了CommonProxy,这样他们就必须从写CommonProxy的方法
然后我们回到Main.java来告诉forge我们的客户端端口和服务端端口在哪里
public class Main {的下方写↓
  1. @SidedProxy(clientSide = Name.CLIENT_PROXY_CLASS,serverSide = Name.SERVER_PROXY_CLASS)
  2.         public static CommonProxy proxy;
复制代码
并在Name.java里把两个命名写上去
  1.         public static final String CLIENT_PROXY_CLASS = "ModSoul_of_Ashes.proxy.ClientProxy";
  2.         public static final String SERVER_PROXY_CLASS = "ModSoul_of_Ashes.proxy.ServerProxy";
复制代码
这两个命名内容就是ClientProxy.java和ServerProxy.java的路径位置





到此我们的基本框架就算完成下一章我们就可以开始制作物品了
所有文件最后代码↓(供检查用)
src_教程2.rar (1.91 KB, 下载次数: 279)












zkm00323
本帖最后由 zkm00323 于 2017-1-14 22:39 编辑

上一篇:modding环境下一篇:新建一个item


thestronger
不错,像俺这样的新手需要

yinahihan
学两年的java后,终于能理解这些代码意思了!感谢lz的教程,感谢祖国!

wsd81377
请问,包里面怎么在加一个包?

zkm00323
wsd81377 发表于 2017-6-21 08:37
请问,包里面怎么在加一个包?

额,点一个包,然后右键new package

猜猜谁是谁
运行游戏怎么运行?是手动将文件提到游戏里还是用eclipse?

zkm00323
猜猜谁是谁 发表于 2017-7-29 18:36
运行游戏怎么运行?是手动将文件提到游戏里还是用eclipse?

上面有个绿色的播放按钮

下一页 最后一页