- 252
- 0
Всем привет, проблему не могу решить уже второй день.
Блок не спавнится и не может придать свою текстурку, помогите пожалуйста. вот картинка
Main
Блок
Генератор блока
И еще вот
Блок не спавнится и не может придать свою текстурку, помогите пожалуйста. вот картинка
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];
}
}