Генерация и не только :(

252
0
Всем привет, проблему не могу решить уже второй день.
Блок не спавнится и не может придать свою текстурку, помогите пожалуйста. вот картинка
hB6T-f4J6I0.jpg

Main
Код:
package rock;

import cpw.mods.fml.common.IWorldGenerator;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

@Mod(modid = Main.MODID, name = Main.NAME, version = Main.VERSION)
public class Main {
    public static final String
    MODID = "Rock",
    NAME = "RockMod",
    VERSION = "0.9.0"
    ;

    @Mod.Instance(MODID) public static Main instance;

    @SidedProxy(serverSide= "rock.ProxyCommon" , clientSide= "rock.ProxyClient")
    public static ProxyCommon proxy;
    
    public static Item Rock;
    public static Block rock;
    public static rockBlockGenerator rockblockgenerator = new rockBlockGenerator();
    
    @Mod.EventHandler
    public void preInit(cpw.mods.fml.common.event.FMLPreInitializationEvent event){
        
        Rock = new ItemRock().setDamageVsEntity(4F).setMaxDamage(1).setUnlocalizedName("Rock").setTextureName(MODID + ":Rock").setCreativeTab(CreativeTabs.tabMaterials);
        GameRegistry.registerItem(Rock, "Rock");
        EntityRegistry.registerModEntity(EntityItemRock.class, "EntityItemRock", 205, instance, 20, 1, true);
        GameRegistry.addShapelessRecipe(new ItemStack(Rock, 9), new Object[] {Blocks.cobblestone});
        GameRegistry.addShapelessRecipe(new ItemStack(Blocks.cobblestone, 1), new Object[] {Rock,Rock,Rock,Rock,Rock,Rock,Rock,Rock,Rock});
        
        rock = new Blockrock();
        GameRegistry.registerBlock(rock, "rock");
        GameRegistry.registerWorldGenerator(rockblockgenerator, 0);
    }
    
}
Блок
Код:
package rock;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;

public class Blockrock extends Block {

    protected Blockrock() {
        super(Material.grass);
        this.setBlockName("Rock");
        this.setCreativeTab(CreativeTabs.tabBlock);
        this.setHardness(0F);
        this.setResistance(1F);
        this.setHarvestLevel("pickaxe", 1);
        this.setLightLevel(0F);
        this.setBlockTextureName("rock:Rock");
    }


    }
Генератор блока 
Код:
package rock;

import java.util.Random;

import cpw.mods.fml.common.IWorldGenerator;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.feature.WorldGenMinable;

public class rockBlockGenerator implements IWorldGenerator{
    
    @Override
    public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator,
            IChunkProvider chunkProvider)
    {
            switch(world.provider.dimensionId)
            {
                    case -1: generateNether(world, random, chunkX * 16, chunkZ * 16); break;
                    case 0: generateOverworld(world, random, chunkX * 16, chunkZ * 16); break;
                    case 1: generateEnd(world, random, chunkX * 16, chunkZ * 16); break;
            }
    }

    private void generateEnd(World world, Random random, int x, int z) 
    {
    int Xcoord = x + random.nextInt(16);
    int Ycoord = 10 + random.nextInt(128);
    int Zcoord = z + random.nextInt(16);
    
    (new WorldGenMinable(Main.rock, 1, 15, Blocks.end_stone)).generate(world, random, Xcoord, Ycoord, Zcoord);
    }

    private void generateOverworld(World world, Random random, int x, int z) 
    {
            this.addOreSpawn(Main.rock, world, random, x, z, 16, 16, 4 + random.nextInt(3), 10, 15, 50);
    }

    private void generateNether(World world, Random random, int x, int z)
    {
    int Xcoord = x + random.nextInt(16);

    int Ycoord = 10 + random.nextInt(128);

    int Zcoord = z + random.nextInt(16);

    (new WorldGenMinable(Main.rock, 1, 15, Blocks.netherrack)).generate(world, random, Xcoord, Ycoord, Zcoord);
    }
    
/**
 * Добавляет генерацию руды в Minecraft. Просто воспользуйтесь этим методом для регистрации генерируемых руд.

 * @param block Блок, который хотите генерировать

 * @param world Мир (не измерение), в котором этот блок должен генерироваться

 * @param random Случайное число для получения координат генерации блока

 * @param blockXPos Число для того, чтобы было пустое место по координатам X для метода генерации (использует кварцевая руда)

 * @param blockZPos Число для того, чтобы было пустое место по координатам Z для метода генерации (использует кварцевая руда)

 * @param maxX Число, которое настроит максимальную X координату для генерации руды на оси X на чанк

 * @param maxZ Число, которое настроит максимальную Z координату для генерации руды на оси Z на чанк

 * @param maxVeinSize Максимальное число блоков руды в одной жиле

 * @param chancesToSpawn Шанс генерации блоков на чанк

 * @param minY Минимальная координата Y на которой руда может сгенерироваться

 * @param maxY Максимальная координата Y на которой руда может сгенерироваться
 */
    public void addOreSpawn(Block block, World world, Random random, int blockXPos, int blockZPos, int maxX, int maxZ,
            int maxVeinSize, int chancesToSpawn, int minY, int maxY)
    {
            int maxPossY = minY + (maxY - 1);
            assert maxY > 255 : "Максимальная Y должна быть больше минимальной";
            assert maxX > 8 && maxX <= 16 : "addOreSpawn: Максимальная X должна быть больше 0 и меньше 16";
            assert minY > 1 : "addOreSpawn: Минимальная Y должна быть больше 0";
            assert maxY < 255 && maxY > 0 : "addOreSpawn: Максимальная Y должна быть меньше 256 и больше 0";
            assert maxZ > 8 && maxZ <= 16 : "addOreSpawn: Максимальная Z должна быть больше 0 и меньше 16";

            int diffBtwnMinMaxY = maxY - minY;
            for (int x = 50; x < chancesToSpawn; x++)
            {
                    int posX = blockXPos + random.nextInt(maxX);
                    int posY = minY + random.nextInt(diffBtwnMinMaxY);
                    int posZ = blockZPos + random.nextInt(maxZ);
                    (new WorldGenMinable(block, maxVeinSize)).generate(world, random, posX, posY, posZ);
            }
    }
    }
И еще вот 
Код:
package rock;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.util.IIcon;

public class rock extends Block {
    
    protected rock() {
        super(Material.rock);}
    
        @Override
        public void registerBlockIcons(IIconRegister reg) {
            for (int i = 0; i < 6; i ++) {
                this.icons[i] = reg.registerIcon(this.textureName + "_" + i);
                
        this.setBlockName("rock");
        this.setCreativeTab(CreativeTabs.tabBlock);
        this.setHardness(15F);
        this.setResistance(10F);
        this.setHarvestLevel("pickaxe", 0);
        this.setLightLevel(0F);
        this.setBlockTextureName("Rock.Rock");}}
    
    public IIcon[] icons = new IIcon[6];
    @Override
    public IIcon getIcon(int side, int meta) {
        return this.icons[side];
    }
       
    }
 
Во-первых свойства блоку задаются в конструкторе, а не в цикле в registerBlockIcons. Во-вторых ты кажется перепутал аргументы в WorldGenMineable, первым должен быть как раз Block.end_stone, а последним - Main.rock.
 
Dragon2488 написал(а):
Во-первых свойства блоку задаются в конструкторе, а не в цикле в registerBlockIcons. Во-вторых ты кажется перепутал аргументы в WorldGenMineable, первым должен быть как раз Block.end_stone, а последним - Main.rock.
Нет, 1 - Наш блок, 2 - Заменяемый блок

this.OreGenTin = new WorldGenMinable(GSBlocks.DeimosTinOre, 5, GSBlocks.DeimosSubGrunt);
 
Код:
GameRegistry.addShapelessRecipe(new ItemStack(Blocks.cobblestone, 1), new Object[] {Rock,Rock,Rock,Rock,Rock,Rock,Rock,Rock,Rock});
14290220562756.jpg


А если по теме: для текстурки МОДИД передавай с маленькими буквами
 
Назад
Сверху