Создание вещей в одном классе/Как создать init модуль для создания вещей.

Версия Minecraft
1.7.10
2,932
44
598
Доброго времени суток старые и новые форумчане! С вами ваш старый вернувшийся в моддинг коллега Garik1303, администрация попрошу ваш не банить за мультиакаунт так как это бессмысленно! Я пришёл сюда с миром и хочу получить ответы на свой вопросы касательно создания модификаций.
Сегодня у меня появился вопрос как создать класс, в котором можно регистрировать и создавать вещи по типу как у MJaroslav:
Java:
@ModInitModule(modid = PeatizedMod.MODID)
public class PeatizedBlocks implements IModModule {
    public static Block bogDirt = new BlockBogDirt(Material.ground, false).setCreativeTab(PeatizedMod.tab)
            .setBlockName("peatized.bogDirt").setHardness(0.5F).setStepSound(Block.soundTypeGravel);
    public static Block bogDirtGenerated = new BlockBogDirt(Material.ground, true).setCreativeTab(PeatizedMod.tab)
            .setBlockName("peatized.bogDirt").setHardness(0.5F).setStepSound(Block.soundTypeGravel);
    public static Block compressor = new BlockCompressor(false).setStepSound(Block.soundTypeStone)
            .setBlockName("peatized.compressor").setBlockTextureName("stone").setCreativeTab(PeatizedMod.tab);
    public static Block compressorLit = new BlockCompressor(false).setLightLevel(0.875F)
            .setStepSound(Block.soundTypeStone).setBlockName("peatized.compressor").setBlockTextureName("stone");
    public static Block peat = new BlockPeat().setBlockName("peatized.peat").setStepSound(Block.soundTypeStone)
            .setHardness(1.5F).setResistance(10.0F);
    public static Block peatSlab = new BlockPeatSlab(false).setBlockName("peatized.peatSlab")
            .setBlockTextureName(PeatizedMod.MODID + ":peatbrick").setStepSound(Block.soundTypeStone).setHardness(2.0F)
            .setResistance(10.0F);
    public static Block peatSlabDouble = new BlockPeatSlab(true).setBlockName("peatized.peatSlab")
            .setBlockTextureName(PeatizedMod.MODID + ":peatbrick").setStepSound(Block.soundTypeStone).setHardness(2.0F)
            .setResistance(10.0F);
    public static Block peatStairs = new BlockPeatizedStairs(peat, 0).setBlockName("peatized.peatStairs")
            .setStepSound(Block.soundTypeStone);

    @Override
    public void preInit(FMLPreInitializationEvent event) {
        GameRegistry.registerBlock(bogDirt, ItemBlockBogDirt.class, "bog_dirt");
        GameRegistry.registerBlock(bogDirtGenerated, ItemBlockBogDirt.class, "bog_dirt_generated");
        Blocks.fire.setFireInfo(bogDirt, 60, 20);
        Blocks.fire.setFireInfo(bogDirtGenerated, 60, 20);
        GameRegistry.registerBlock(compressor, ItemPeatizedBlock.class, "compressor");
        GameRegistry.registerBlock(compressorLit, ItemPeatizedBlock.class, "compressor_lit");
        GameRegistry.registerTileEntity(TileCompressor.class, "tile_compressor");
        GameRegistry.registerTileEntity(TileRFCompressor.class, "tile_compressor_rf");
        GameRegistry.registerTileEntity(TileFuelCompressor.class, "tile_compressor_fuel");
        GameRegistry.registerBlock(peat, ItemPeatizedBlock.class, "peat");
        GameRegistry.registerBlock(peatSlab, ItemPeatSlab.class, "peat_slab");
        GameRegistry.registerBlock(peatSlabDouble, ItemPeatSlab.class, "peat_slab_double");
        GameRegistry.registerBlock(peatStairs, "peat_stairs");
    }

    @Override
    public void init(FMLInitializationEvent event) {
    }

    @Override
    public void postInit(FMLPostInitializationEvent event) {
    }

    @Override
    public String getModuleName() {
        return "Blocks";
    }

    @Override
    public int getPriority() {
        return 0;
    }
}

Ещё раз поясняю: Мне надо создать отдельный класс, в котором я смогу регистрировать и создавать вещи.
 
Решение
Создаешь в любом месте класс, создаешь в нем метод, например^
Код:
public static void initialize() {
furnace = new Furnace();
GameRegistry.registerBlock(furnace, "furnace");
}
И Вызываешь его в главном классе в преините.
Код:
ClassName.initialize();
=====
А если не хочешь мутить классы для этих блоков и вещей, то делай через анонимные классы или через конструктор. Больше советую конструктор. Вот недавно на форуме светился:
*Кликабельно*
И если юзаешь его, то и регистрируешь сразу в том классе:
Код:
public static BlockPattern Future;
public static void initialize() {
            Future= new BlockPattern (Core.modID, ....);
            GameRegistry.registerBlock(furnace, "furnace");
}
3,005
192
592
...
~~~
По теме:
А что мешает так же сделать
Код:
    public static Block bogDirt = new BlockBogDirt(Material.ground, false).setCreativeTab(PeatizedMod.tab)
.setBlockName("peatized.bogDirt").setHardness(0.5F).setStepSound(Block.soundTypeGravel);
И потом его зарегистрировать через обычный GameRegistry?
IModModule нужен для того, что бы запускать "preInit" "init" и тд.
 
2,932
44
598
Меня интересует как создать класс, в котором всё это добро писать.

(Настолько всё забыл что уже не способен класс для регистраций создать)
 
Последнее редактирование модератором:
3,005
192
592
1,417
44
594
Создаешь в любом месте класс, создаешь в нем метод, например^
Код:
public static void initialize() {
furnace = new Furnace();
GameRegistry.registerBlock(furnace, "furnace");
}
И Вызываешь его в главном классе в преините.
Код:
ClassName.initialize();
=====
А если не хочешь мутить классы для этих блоков и вещей, то делай через анонимные классы или через конструктор. Больше советую конструктор. Вот недавно на форуме светился:
*Кликабельно*
И если юзаешь его, то и регистрируешь сразу в том классе:
Код:
public static BlockPattern Future;
public static void initialize() {
            Future= new BlockPattern (Core.modID, ....);
            GameRegistry.registerBlock(furnace, "furnace");
}
 
1,417
44
594
programmer.gif
Пожалуйста, обновил инфу,глянь
 
1,111
47
420
Java:
@SuppressWarnings("unused")
@RegistryObjectsContainer
@Module(priority = EventPriority.HIGHEST, isMandatory = true)
public class JamCommon implements IGuiHandler {

    public static final int PIT_GUI = 0;
    public static final int FURNACE_GUI = 1;

    public static final BlockLestera lestera = new BlockLestera();
    public static final BlockRoughLestera rough_lestera = new BlockRoughLestera();
    public static final BlockLesteraColumn column_lestera = new BlockLesteraColumn();
    public static final BlockStoneBowl stone_bowl = new BlockStoneBowl();
    @RegistryBlockSpecial(classItemBlock = ItemJamCooper.class)
    @RegistrySpecial(oreDict = "oreCopper")
    public static final BlockJamCooper jam_cooper = new BlockJamCooper();
    public static final Block solid_lax = new BlockSolidLax();
    public static final Block oil_sapling = new BlockOilSapling();
    @RegistryBlockSpecial(classItemBlock = MultitextureItemBlock.class)
    public static final BlockJamFlower flower = new BlockJamFlower();
    public static final BlockLaxGas lax_gas = new BlockLaxGas();
    public static final BlockRune rune = new BlockRune();
    @RegistrySpecial(oreDict = "logWood")
    public static final BlockOilTree oil_tree = new BlockOilTree();
    public static final BlockLeavesOil oil_leaves = new BlockLeavesOil();
    public static final BlockCooperPiston cooper_piston = new BlockCooperPiston();
    @RegistryExcept
    public static final BlockJamFluid oil_fluid = FluidHelper.createNewFluid("jam:oil_flowing", "jam:oil_still", "jam_oil");
    @RegistryBlockSpecial(classItemBlock = ItemBlockSpigot.class)
    public static final BlockOilSpigot oil_spigot = new BlockOilSpigot();
    public static final BlockClayPot clay_pot = new BlockClayPot();
    public static final BlockExtractor extractor = new BlockExtractor();
    @RegistrySpecial(oreDict = "plankWood")
    public static final Block impregnated_planks = new BlockJam(Material.wood).setBlockTextureName("jam:impregnated_planks").setBlockName("impregnated_planks");
    @RegistrySpecial(oreDict = "blockCopper")
    public static final Block cooper_block = new BlockJam(Material.iron).setBlockTextureName("jam:copper_block").setBlockName("copper_block");
    @RegistrySpecial(oreDict = "blockSteel")
    public static final Block steel_block = new BlockJam(Material.iron).setBlockTextureName("jam:steel_block").setBlockName("steel_block");
    public static final Block hardened_bricks = new BlockJam(Material.iron).setBlockTextureName("jam:hardened_bricks").setBlockName("hardened_bricks");
    public static final ItemTestRune test_rune = new ItemTestRune();
    public static final ItemLaxPowder lax_glue_powder = new ItemLaxPowder();
    public static final ItemLaxShard lax_shard = new ItemLaxShard();
    public static final ItemMortarPestle mortar_pestle = new ItemMortarPestle();
    public static final ItemMultiTexture petal = new ItemMultiTexture("Petal", flower.getSubTypes());
    public static final ItemMultiTexture seed = new ItemMultiTexture("Seed", flower.getSubTypes());
    public static final ItemMultiTexture powder = new ItemMultiTexture("Powder", flower.getSubTypes());
    public static final Item wand = new ItemJamWand().setTextureName("jam_wand");
    @RegistrySpecial(oreDict = "ingotSteel")
    public static final Item steel = new ItemJam().setTextureName("steel");

    @RegistryExcept
    public static Item oil_bucket;
    @RegistryExcept
    public static Item thick_lax_bucket;
    @RegistryExcept
    public static Item hot_lax_bucket;
    @RegistryExcept
    public static BlockLaxFluid lax_fluid;
    @RegistryExcept
    public static Item lax_bucket;

    @RegistryExcept
    public static BlockLaxFluid thick_lax_fluid;
    @RegistryExcept
    public static BlockLaxFluid hot_lax_fluid;
   
private JamCommon() {
}

@ModuleEventHandler
private static void init(FMLPreInitializationEvent e) {
registerFluids();
    registerFurnaceRecipes();
    registerTableRecipes();
    registerFluidContainers();
    registerGenerators();

    NetworkRegistry.INSTANCE.registerGuiHandler(JAM.getInstance(), new JamCommon());
    FMLCommonHandler.instance().bus().register(JamListener.getInstance());
    MinecraftForge.EVENT_BUS.register(JamListener.getInstance());
}
.......
}
Хе хе
 
Последнее редактирование:
Сверху