- 198
- 1
- 24
Стал делать блок, на основе вот этого туториала: Создание блока - MC Modding Учебник
По нему я когда-то делал самый первый мод на блок, и столкнулся с той же проблемой (блок в мире отображается а в инвентаре нет), потом нашёл решение, но уже забыл что и как надо было исправить. Вот как выглядит то что получается:
Код - почти полностью копипаста из туториала, JSON моделек скопирован из ванильных досок и изменён под мой блок.
Текстурка, лежащая в assets/godsanddemons/textures/blocks/soul_scales_top.png:
(Изначально блок задумывался на основе модельки стола зачарований, JSON взял сначала от него, но решив что не работает из-за того что неполный блок делается как-то по-другому, сделал просто кубик. Оказалось, неполный блок ни при чём, но тогда в чём дело?!)
По нему я когда-то делал самый первый мод на блок, и столкнулся с той же проблемой (блок в мире отображается а в инвентаре нет), потом нашёл решение, но уже забыл что и как надо было исправить. Вот как выглядит то что получается:
Код - почти полностью копипаста из туториала, JSON моделек скопирован из ванильных досок и изменён под мой блок.
SoulScales.java:
import com.madalchemist.godsanddemons.GodsAndDemons;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
public class SoulScales extends Block
{
public SoulScales(String name)
{
super(Material.ROCK);
this.setRegistryName(name);
this.setUnlocalizedName(name);
this.setCreativeTab(GodsAndDemons.CTAB);
}
@Override
public boolean isOpaqueCube(IBlockState state)
{
return false;
}
@Override
public boolean isFullCube(IBlockState state)
{
return false;
}
}
BlocksRegister.java:
import com.madalchemist.godsanddemons.blocks.SoulScales;
import net.minecraft.block.Block;
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.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class BlocksRegister
{
public static Block SOUL_SCALES = new SoulScales("soul_scales");
public static void register()
{
setRegister(SOUL_SCALES);
}
@SideOnly(Side.CLIENT)
public static void registerRender()
{
setRender(SOUL_SCALES);
}
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"));
}
}
Как и написано в туториале, добавил это в CommonProxy.java:
BlocksRegister.register();
assets/godsanddemons/blockstates/soul_scales.json:
{
"variants": {
"normal": { "model": "godsanddemons:soul_scales" }
}
}
assets/godsanddemons/models/block/soul_scales.json:
{
"parent": "block/cube_all",
"textures": {
"all": "godsanddemons:blocks/soul_scales_top"
}
}
assets/godsanddemons/models/item/soul_scales.json:
{
"parent": "godsanddemons:block/soul_scales"
}
Текстурка, лежащая в assets/godsanddemons/textures/blocks/soul_scales_top.png:
(Изначально блок задумывался на основе модельки стола зачарований, JSON взял сначала от него, но решив что не работает из-за того что неполный блок делается как-то по-другому, сделал просто кубик. Оказалось, неполный блок ни при чём, но тогда в чём дело?!)