<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # :-: 自動注冊 自動注冊將會是低版本開發者的福音,比如每次做一個新物品新方塊都要實例化注冊一次,這要是做了100個方塊物品什么的,一個一個注冊,這不得累死(一切為了偷懶!!),所以我自己搞了個一鍵全部注冊(目前僅支持Windows系統,這是教程唯一拿得出手的東西了)![](https://i.vgy.me/T5VWim.jpg),這次就把它分享了,以后做實體的時候會用到它。 1.12.2就有了全部注冊,寫1.12.2可以直接略過了(沒有興趣的也是)。 好的進入正題,在Mod主類旁邊創建一個新類regAll。 `src/main/java/net/xiaobang/bm/regAll.java` ~~~ package net.xiaobang.bm; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; import net.minecraft.item.Item; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; public class regAll { private static int entityId = 0; private static Object mod; public regAll() { } public static void reg(String pos, String zc, Object mod, int trackingRange, int updateFrequency) { regAll.mod = mod; Class cl = mod.getClass(); try { String str = new URL(cl.getResource("").getPath().split("!")[0]).getPath(); if (str.contains("file:/")) { str = str.replace("file:/", ""); } if (str.endsWith(".jar")) { pos = cl.getPackage().getName().replaceAll("\\.", "/") + "/" + pos; FileInputStream input = null; try { try { input = new FileInputStream(str); } catch (FileNotFoundException fileNotFoundException) { fileNotFoundException.printStackTrace(); } ZipInputStream zip = new ZipInputStream(new BufferedInputStream(input), StandardCharsets.UTF_8); ZipEntry ze = null; while (((ze = zip.getNextEntry()) != null)) { if (ze.toString().contains(pos)) { if (ze.toString() != pos) { String[] ze2 = ze.toString().split("/"); for (int i = 0; i < ze2.length; i++) { if (ze2[i].contains("class")) { String ze3 = ze2[i].replace(".class", ""); try { pos = pos.replaceAll("/", "."); Class c = Class.forName(pos + ze3); try { if (zc.equalsIgnoreCase("Block")) { Object obj = c.newInstance(); if (obj instanceof Block) { registerblock((Block) obj, ze3); } } else if (zc.equalsIgnoreCase("Item")) { Object obj = c.newInstance(); if (obj instanceof Item) { registeritem((Item) obj, ze3); } } else if (zc.equalsIgnoreCase("Entity")) { registerent(c, trackingRange, updateFrequency, ze3); } } catch (InstantiationException instantiationException) { instantiationException.printStackTrace(); } catch (IllegalAccessException illegalAccessException) { illegalAccessException.printStackTrace(); } } catch (ClassNotFoundException classNotFoundException) { classNotFoundException.printStackTrace(); } } } } } } } catch (IOException exception) { exception.printStackTrace(); } } } catch (MalformedURLException e) { e.printStackTrace(); } } public static void registerblock(Block block, String name) { GameRegistry.registerBlock(block, name); } public static void registeritem(Item item, String name) { GameRegistry.registerItem(item, name); } public static void registerent(Class entityclass, int trackingRange, int updateFrequency, String entityName) { EntityRegistry.registerModEntity(entityclass, entityName, entityId, mod, trackingRange, updateFrequency, true); entityId++; } } ~~~ 也許你看不懂,但不用管,抄它就完事了,注意這個東西只能用在編譯后的mod,不能是來自idea的![](https://i.vgy.me/zAiIe4.png) 這里的構造函數的第一個參數pos是指你Mod中方塊們的位置,物品們的位置,實體們這些包的位置。 第二個參數zc是你要一次全部注冊的是要方塊,物品還是實體,如果為Block就注冊全部方塊,如果為Item就注冊全部物品,如果為Entity就注冊全部實體。 第三個參數mod是指你的mod的instance。 第四個參數和第五個參數,如果不是注冊實體的,可以隨便填 第四個參數是實體的trackingRange,指實體離玩家的距離更新,如果超過,就不更新(還沒學實體可以忽略) 第五個參數是實體的更新頻率,每幾個tick更新一次(20tick等于一秒) 使用例子: 使用的方法是:在CommonProxy文件中添加以下代碼: `src/main/java/net/xiaobang/bm/common/CommonProxy.java`(部分) ~~~ public void preInit(FMLPreInitializationEvent event) { //new ItemLoader(event); //new BlockLoader(event);這兩個已經不需要了,有更好的方法了 regAll.reg("bm","item/","Item",bm.instance,0,0);//一鍵注冊所有物品 regAll.reg("bm","block/","Block",bm.instance,0,0);//一鍵注冊所有方塊 } //不要忘了導入regAll和主類哦 ~~~ 這下應該懂了吧![](https://i.vgy.me/26Gkm0.png),現在闊以把net.xiaobang.bm.loader包的文件全部刪除了,有了自動注冊,不需要這玩意。 (注意這玩意特別雞肋)
                  <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>

                              哎呀哎呀视频在线观看