<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # :-: 主類,代理和Mod信息 ***** 在src.main.java里面創建一個包net.你的名稱.Mod名稱如net.xiaobang.bm或者com.你的名稱.Mod名稱如com.xiaobang.bm,并在其中新建一個類(強烈建議類名稱與mod名稱相符,當然其他也好),那么這就是你Mod的主類了。 把以下代碼抄進mod的主類,下列代碼中的//代表注釋,有解釋說明的作用,;符合代表一條語句的結束 `src/main/java/net/xiaobang/bm/bm.java`(這個不要抄,這是文件位置) ~~~java package net.xiaobang.bm;//package是導入包,這個你們應該都知道把(汗顏.jpg),后面是包的位置,自己寫你自己包的位置啊 import net.xiaobang.bm.common.CommonProxy;//這個類暫時不存在先不要管它 import cpw.mods.fml.common.Mod;//import是導入類或導入整個包,這個也該都知道把,后面也是位置 import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; @Mod(modid = "bm",name = "bm",version="1.0")//modid是Mod的唯一標識符(ID),name是Mod的名稱,version是Mod的版本 public class bm{//主類 @Instance//前面有加@的是注解,這個作用是將生成該mod的實例注冊到對應mod的id里面,也可以訪問其他mod的,要注意這里的id和此mod的id相同 public static bm instance = new bm(); @EventHandler//在Forge找到主類后,會檢查主類含有這個注解的函數,并通過函數的參數類型判斷應該何時調用這些函數 public void preInit(FMLPreInitializationEvent event){//在所有mod初始化之前調用此函數,這里應該加載配置文件,實例化方塊和物品,并注冊它們 } @EventHandler public void Init(FMLInitializationEvent event){//在此mod初始化時調用此函數,這里應該注冊合成表和燒練系統,并向其他mod發送交互信息,注意不要在這里注冊方塊和物品等等操作,forge支持在preInit函數執行 } @EventHandler public void postInit(FMLPostInitializationEvent event){//在所有mod初始化后調用此函數,這里應該接收其他mod發送的交互信息,并完成設置mod } } ~~~ 代理?我們知道,Minecraft(我的世界)有客戶端和服務端兩種使用方式,兩種方式既足夠大又足夠小,使得Mod需要采取兩種初始化方式,兩種方式又使得Mod沒必要制作客戶端和服務端兩種版本。這時候代理便起到了很大的作用,它會區別兩種初始化方式。在單機客戶端中,Minecraft也會生成一個本地服務端。客戶端和服務端之間的差異十分復雜,其中服務端的代碼,客戶端往往會執行。 接下來在主類添加以下代碼: `src/main/java/net/xiaobang/bm/bm.java` ~~~java @SidedProxy(clientSide = "net.xiaobang.bm.client.ClientProxy", //ClientProxy待會創建在src/main/java/net/xiaobang/bm/client目錄下 serverSide = "net.xiaobang.bm.common.CommonProxy")//CommonProxy待會創建在src/main/java/net/xiaobang/bm/common目錄下 public static CommonProxy proxy; ~~~ 當Forge在加載Mod的時候會自動使用上面的類名對這個代理進行實例化。 接下來我們要創建ClientProxy和CommonProxy 新建包net.xiaobang.bm.common,并在里面新建類CommonProxy: `src/main/java/net/xiaobang/bm/common/CommonProxy.java` ~~~ package net.xiaobang.bm.common; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; public class CommonProxy { public void preInit(FMLPreInitializationEvent event) { } public void init(FMLInitializationEvent event) { } public void postInit(FMLPostInitializationEvent event) { } } ~~~ 再新建包net.xiaobang.bm.client,并在里面新建類ClientProxy,并繼承類CommonProxy: `src/main/java/net/xiaobang/bm/client/ClientProxy.java` ~~~ package net.xiaobang.bm.client; import net.xiaobang.bm.common.CommonProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; public class ClientProxy extends CommonProxy { @Override//聲明該方法覆蓋了父類方法,如果(拼寫錯誤等)沒有覆寫,編譯器會報錯 public void preInit(FMLPreInitializationEvent event) { super.preInit(event);//調用父類的方法 } @Override public void init(FMLInitializationEvent event) { super.init(event); } @Override public void postInit(FMLPostInitializationEvent event) { super.postInit(event); } } ~~~ 主類的調整(不要直接復制粘貼把主類的代碼搞沒了): `src/main/java/net/xiaobang/bm/bm.java` ~~~ @EventHandler public void preInit(FMLPreInitializationEvent event) { proxy.preInit(event); } @EventHandler public void init(FMLInitializationEvent event) { proxy.init(event); } @EventHandler public void postInit(FMLPostInitializationEvent event) { proxy.postInit(event); } ~~~ 寫到這里(復制粘貼),你現在應該知道當服務端運行時,CommonProxy類的函數會被調用,如果是客戶端,ClientProxy的函數會被調用,這樣我們就可以實現服務端和客戶端之間的差異。 最后就是完善Mod信息了(啊激動終于可以偷懶了) Mod的信息一般都是在一個叫mcmod.info的文件夾里面,它通常保存在src/main/resources/里面,現在以文本的形式打開它來完善你的mod信息。(注意version和mcversion不應該去修改,它們會在Gradle構建mod的時候自動替換掉,如果真的要改應該更改build.gradle) 如本教程的mcmod.info是醬紫的: ~~~ [ { "modid": "bm", "name": "Bang's First Mod", "description": "Mod for DBC", "version": "${version}", "mcversion": "${mcversion}", "url": "", "updateUrl": "", "authorList": ["xiaobang"], "credits": "Notch, Cpw, etc.", "logoFile": "", "screenshots": [], "dependencies": [] } ] ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看