статичный id для предметов/блоков

Версия Minecraft
1.7.10
235
3
21
вечер добрый
хочу сделать для своего ВАКУМНОГО мода статические id для блоков и предметов, чтобы forge их не менял и можно было нормально worldedit пользоваться
как это делается?
 
3,005
192
592
Там вроде в реге блоков, дается ид для ванильных. Регай свои блоки там же.
 
7,099
324
1,510
Не нужно юзать числовые id, есть буквенные, которые как раз не меняются у конкретного блока/предмета, если сам не поменяешь
 
235
3
21
я знаю что предмет можно квалифицировать по буквенному id, я знаю, что по цифрам не корректно, но у меня вакуумный мод, где нужно делать много мехнических действий с картой, и мне нужны статические численные id
 
7,099
324
1,510
235
3
21
вспомнил мод в котором это было сделано, нашел ту его версию у себя, декомпильнул
вот решение, мжб кому еще пригодится
Java:
@Mod(modid="mMineTrax", name="MineTrax", version="1.1.4")
public class MineTrax {
    int[] arrayDisc;
    public int numberOfDiscs;
    public static Item newDisc;
    public String songAuthor;
    public String songTitle;
    public String songFilename;
    @SidedProxy(clientSide="mods.mminetrax.ClientProxyMineTrax", serverSide="mods.mminetrax.CommonProxyMineTrax")
    public static CommonProxyMineTrax proxyCommon;
    public Configuration configFile;
    public static final RegistryNamespaced itemRegistry;

    @Mod.EventHandler
    public void preInit(FMLPreInitializationEvent event) throws IOException {
        Configuration config = new Configuration(event.getSuggestedConfigurationFile());
        config.load();
        DataProxyMineTrax.discStartID = config.get("General", "DiscStartID", 15000).getInt(15000);
        this.numberOfDiscs = config.get("General", "NumberOfDiscs", 110).getInt();
        this.arrayDisc = new int[this.numberOfDiscs];
        for (int curDisc = 0; curDisc < this.arrayDisc.length; ++curDisc) {
            this.arrayDisc[curDisc] = curDisc;
            int discID = this.arrayDisc[curDisc] + DataProxyMineTrax.discStartID;
            String curDiscStr = Integer.toString(curDisc);
            this.songAuthor = config.get(curDiscStr, "SongAuthor", curDiscStr).getString();
            this.songTitle = config.get(curDiscStr, "SongTitle", curDiscStr).getString();
            this.songFilename = config.get(curDiscStr, "SongFilename", curDiscStr).getString();
            newDisc = new ItemMineTraxRecord(this.songFilename, this.songAuthor, this.songTitle).setUnlocalizedName("MusicDisc" + curDisc).setMaxStackSize(1).setFull3D().setTextureName("mminetrax:disc");
            itemRegistry.addObject(discID, "record" + curDisc, (Object)newDisc);
            LanguageRegistry.addName((Object)newDisc, (String)"Music Disc");
        }
        config.save();
    }

    @Mod.EventHandler
    public void postInit(FMLPostInitializationEvent event) throws IOException {
    }

    public void parseMainConfig() {
    }

    static {
        proxyCommon = new CommonProxyMineTrax();
        itemRegistry = GameData.getItemRegistry();
    }
}
 
235
3
21
начал делать и немного запнулся
итемы регает нормально, а блоки не хочет
Java:
private static void registerBlock(Block block, int id)
    {
        id += BLOCK_MIN_ID;
        if(!idList.contains(id))
        {
            blockRegistry.addObject(id, block.getUnlocalizedName().substring(5), block);
            idList.add(id);
        }
        else
        {
            throw new RuntimeException("Duplicate id while objects registration - " + id);
        }
    }
    
    private static void registerItem(Item item, int id)
    {
        id += ITEM_MIN_ID;
        if(!idList.contains(id))
        {
            itemRegistry.addObject(id, item.getUnlocalizedName().substring(5), item);
        }
        else
        {
            throw new RuntimeException("Duplicate id while objects registration - " + id);
        }
    }
 
Сверху