- 23
- 1
Здравствуйте.
Я пока начинающий в этом деле, но немного соображаю. Я решил добавить в свой мод особую угольную руду, естественно со сразу дропающимся углем. Слизнул код у LG (Maxik001), но он не работает. Сделал через базовый класс Максика001 с небольшими изменениями. Вот его класс. Вот код моего базового класса:
Как видно, я не стал наследовать этот класс от BlockBase, а сразу запилил конструктор оттуда и ввинтил остальной код. (Также я пробовал и экстендом от BlockBase, но результат тот же) Вот регистрация блока:
Просто из блока ничего не дропается. Если нужен еще код, то пишите
Я пока начинающий в этом деле, но немного соображаю. Я решил добавить в свой мод особую угольную руду, естественно со сразу дропающимся углем. Слизнул код у LG (Maxik001), но он не работает. Сделал через базовый класс Максика001 с небольшими изменениями. Вот его класс. Вот код моего базового класса:
Java:
package ru.darknd.redcraft.basic.Block;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import ru.darknd.redcraft.RedCraft;
import java.util.List;
import java.util.Random;
public class BlockWithDropItemBase extends Block {
public Item drop;
public int valueDrops;
public int meta;
public BlockWithDropItemBase(String name, final Material material, float hardness, float resistance, String harvToolType, int harvLevel, SoundType soundType, Item drop, int valueDrops, int meta) {
super(material);
this.setRegistryName(name);
this.setUnlocalizedName(name);
this.setCreativeTab(RedCraft.redCraftTab);
this.setHardness(hardness);
this.setResistance(resistance);
this.setHarvestLevel(harvToolType, harvLevel);
this.setSoundType(soundType);
setItemDrop();
this.drop = drop;
this.meta = meta;
this.valueDrops = valueDrops;
}
public void setItemDrop() {
if (drop == null) {
this.drop = drop.getItemFromBlock(Blocks.AIR);
}
}
@Override
public List<ItemStack> getDrops(IBlockAccess world, BlockPos pos, IBlockState state, int fortune) {
Random rand = new Random();
java.util.List<ItemStack> ret = super.getDrops(world, pos, state, fortune);
ret.add(new ItemStack(drop, valueDrops + rand.nextInt(4), meta));
return ret;
}
@Override
public Item getItemDropped(IBlockState state, Random rand, int fortune) {
return Item.getItemFromBlock(Blocks.AIR);
}
@Override
public int damageDropped(IBlockState state) {
return 0;
}
}
Как видно, я не стал наследовать этот класс от BlockBase, а сразу запилил конструктор оттуда и ввинтил остальной код. (Также я пробовал и экстендом от BlockBase, но результат тот же) Вот регистрация блока:
Код:
package ru.darknd.redcraft;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import ru.darknd.redcraft.basic.Block.BlockBase;
import ru.darknd.redcraft.basic.Block.BlockWithDropItemBase;
import ru.darknd.redcraft.blocks.BlockCounter;
import ru.darknd.redcraft.items.dense_coal_itemblock;
public class BlocksRegister {
// Тут разные блоки
public static Block dense_coal_ore = new BlockWithDropItemBase("dense_coal_ore", Material.ROCK, 2.1F, 17.0F, "pickaxe", 4, SoundType.STONE, ItemsRegister.dense_coal, 1, 0);
public static void register(){
//И тут
setRegister(dense_coal_ore);
}
@SideOnly(Side.CLIENT)
public static void registerRender(){
//И тут тоже
setRender(dense_coal_ore);
}
private static void setRegister(Block block){
ForgeRegistries.BLOCKS.register(block);
ForgeRegistries.ITEMS.register(new ItemBlock(block).setRegistryName(block.getRegistryName()));
}
@SideOnly(Side.CLIENT)
private static void setRender(Block block){
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(block), 0, new ModelResourceLocation(block.getRegistryName(), "inventory"));
}
private static void setRegisterItemBlock(Block block, ItemBlock item){
ForgeRegistries.BLOCKS.register(block);
ForgeRegistries.ITEMS.register(item);
}
private static void setRenderItemBlock(Block block, ItemBlock item){
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(block), 0, new ModelResourceLocation(block.getRegistryName(), "inventory"));
}
}
Просто из блока ничего не дропается. Если нужен еще код, то пишите
Последнее редактирование: