А что её ставить то? Если кастомная то просто кидаешь копии в папки моделей для блоков и предметов и подключаешь её блокстейтом таким образом:модель json на блок
{
"forge_marker": 1,
"defaults": {
"textures": {
"all": "tutorial:blocks/ore_copper"
}
},
"variants": {
"normal": {
"model": "modid:blocks/yourmodel"
},
"inventory": {
"model": "modid:items/yourmodel"
}
}
}
В классе блока в конструкторе впиши:как сделать чтобы когда по блоку ходишь воспроизводился звук блока майнкрафта
this.setStepSound(SoundType.ЗВУК);
Там смотри в классе печки пару методов или один, не помню. Они для того, чтобы блок ставился в зависимости от того, куда смотришь. А так больше в коде ничего не надо.в класс блока что-то писать надо?
{
"variants": {
"facing=north": { "model": "mdw:block_north" },
"facing=south": { "model": "mdw:block_south", "y": 180 },
"facing=west": { "model": "mdw:block_west", "y": 270 },
"facing=east": { "model": "mdw:block_east", "y": 90 }
"facing=top": { "model": "mdw:block_top", "x": 90},
"facing-bottom":{ "model": "mdw:block_bottom", "x": 270}
}
}
{
"parent": "block/orientable",
"textures": {
"north": "mdw:blocks/block_north",
"south": "mdw:blocks/block_south",
"west": "mdw:blocks/block_west",
"east": "mdw:blocks/block_east",
"top": "mdw:blocks/block_top",
"bottom": "mdw:blocks/block_bottom"
}
}
Самокритика хорошая штука, сам пользуюсь.я тупой
С одной стороны правильно, но вот как оно на самом деле работает:Я даже так сделал и всё равно!
[main/ERROR]: Exception loading model for variant mdw:lawn_block#normal for blockstate "mdw:lawn_block"
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model mdw:lawn_block#normal with loader VariantLoader.INSTANCE, skipping
at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:237) ~[ModelLoader.class:?]
at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?]
at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:225) ~[ModelLoader.class:?]
at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:152) ~[ModelLoader.class:?]
at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
at net.minecraft.client.Minecraft.init(Minecraft.java:512) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:377) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_101]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_101]
at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:83) ~[ModelBlockDefinition.class:?]
at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1182) ~[ModelLoader$VariantLoader.class:?]
at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
... 21 more
{
"variants": {
"snowy=false": [
{ "model": "mdw:lawn_block" },
{ "model": "mdw:lawn_block", "y": 90 },
{ "model": "mdw:lawn_block", "y": 180 },
{ "model": "mdw:lawn_block", "y": 270 }
],
"snowy=true": { "model": "mdw:lawn_block_snowed" }
}
}
{
"parent": "block/cube_bottom_top",
"textures": {
"bottom": "mdw:blocks/dirt_defiled",
"top": "mdw:blocks/grass_defiled_top",
"side": "mdw:blocks/grass_defiled_side"
}
}
{
"parent": "block/cube_bottom_top",
"textures": {
"bottom": "mdw:blocks/dirt_defiled",
"top": "blocks/snow",
"side": "mdw:blocks/grass_defiled_side_snowed"
}
}
Самокритика хорошая штука, сам пользуюсь.
С одной стороны правильно, но вот как оно на самом деле работает:
В новых версиях игры блок состоит из двух частей. Блока как предмета, который отображается в инвентаре, и блока как размещаемого в мире объекта. Модели добавляются по отдельности для блока как предмета с идентификатором "inventory", и для блока как объекта в мире с идентификатором "normal". По умолчанию для обычного блока эти идентификаторы заменяются фактом расположения одинаковой модели в папке моделей как предметов, так и блоков. Но для ориентировочных блоков это работает по другому с моделями. Пока не знаю как реализовать моделями, но можно реализовать состоянием блока как я писал. В состоянии блока от кузницы мы указываем базовую модель для обоих идентификаторов (как "inventory" так и "normal"), может её как-то по другому писать надо, например полный путь.
{
"forge_marker": 1,
"defaults": {
"textures": {
"north": "galaxy:blocks/test_1",
"south": "galaxy:blocks/test_2",
"west": "galaxy:blocks/test_3",
"east": "galaxy:blocks/test_4",
"up": "galaxy:blocks/test_5",
"down": "galaxy:blocks/test_6"
}
},
"variants": {
"normal": {
"model": "orientable"
},
"inventory": {
"model": "orientable"
}
}
}
А что её ставить то? Если кастомная то просто кидаешь копии в папки моделей для блоков и предметов и подключаешь её блокстейтом таким образом:модель json на блок
{
"forge_marker": 1,
"defaults": {
"textures": {
"all": "tutorial:blocks/ore_copper"
}
},
"variants": {
"normal": {
"model": "modid:blocks/yourmodel"
},
"inventory": {
"model": "modid:items/yourmodel"
}
}
}
В классе блока в конструкторе впиши:как сделать чтобы когда по блоку ходишь воспроизводился звук блока майнкрафта
this.setStepSound(SoundType.ЗВУК);