Up Как поставить модель (3d) на блок и ещё 1 вопрос

Версия Minecraft
1.12.2
683
3
21
Как поставить на блок с разных сторон разные текстуры?
 
Решение
модель json на блок
А что её ставить то? Если кастомная то просто кидаешь копии в папки моделей для блоков и предметов и подключаешь её блокстейтом таким образом:
JSON:
{
    "forge_marker": 1,
    "defaults": {
        "textures": {
            "all": "tutorial:blocks/ore_copper"
        }
    },
    "variants": {
        "normal": {
            "model": "modid:blocks/yourmodel"
        },
        "inventory": {
            "model": "modid:items/yourmodel"
        }
    }
}
как сделать чтобы когда по блоку ходишь воспроизводился звук блока майнкрафта
В классе блока в конструкторе впиши:
Java:
this.setStepSound(SoundType.ЗВУК);
PS: отсылку увидел :sneaky:
683
3
21
конечно умею и готовый код выпрашивать не буду я там землю перерыл в ваниле так же сделал и нечего у меня только 1 вопрос в класс блока что-то писать надо?
 
1,031
19
87
в класс блока что-то писать надо?
Там смотри в классе печки пару методов или один, не помню. Они для того, чтобы блок ставился в зависимости от того, куда смотришь. А так больше в коде ничего не надо.
 
683
3
21
Я даже так сделал и всё равно!
Java:
{
    "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"
    }
}
 
1,031
19
87
Самокритика хорошая штука, сам пользуюсь. :sneaky:
Я даже так сделал и всё равно!
С одной стороны правильно, но вот как оно на самом деле работает:
В новых версиях игры блок состоит из двух частей. Блока как предмета, который отображается в инвентаре, и блока как размещаемого в мире объекта. Модели добавляются по отдельности для блока как предмета с идентификатором "inventory", и для блока как объекта в мире с идентификатором "normal". По умолчанию для обычного блока эти идентификаторы заменяются фактом расположения одинаковой модели в папке моделей как предметов, так и блоков. Но для ориентировочных блоков это работает по другому с моделями. Пока не знаю как реализовать моделями, но можно реализовать состоянием блока как я писал. В состоянии блока от кузницы мы указываем базовую модель для обоих идентификаторов (как "inventory" так и "normal"), может её как-то по другому писать надо, например полный путь.​
 
683
3
21
я сделал так как в одном моде но модели в мире нету и майн это знает походу
Java:
[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
и на блоке пишется mds/lawn_block#normal
может у меня чего то нет в классе я уже не знаю я такой тупойй божеее убей меня
 
683
3
21
Java:
{
    "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" }
    }
}
Java:
{
    "parent": "block/cube_bottom_top",
    "textures": {
        "bottom": "mdw:blocks/dirt_defiled",
        "top": "mdw:blocks/grass_defiled_top",
        "side": "mdw:blocks/grass_defiled_side"
    }
}
Java:
{
    "parent": "block/cube_bottom_top",
    "textures": {
        "bottom": "mdw:blocks/dirt_defiled",
        "top": "blocks/snow",
        "side": "mdw:blocks/grass_defiled_side_snowed"
    }
}
Но опять же он в инвентаре отображается нормально а в мире нет
 
683
3
21
Дай подсказку пожалуйста
Самокритика хорошая штука, сам пользуюсь. :sneaky:

С одной стороны правильно, но вот как оно на самом деле работает:
В новых версиях игры блок состоит из двух частей. Блока как предмета, который отображается в инвентаре, и блока как размещаемого в мире объекта. Модели добавляются по отдельности для блока как предмета с идентификатором "inventory", и для блока как объекта в мире с идентификатором "normal". По умолчанию для обычного блока эти идентификаторы заменяются фактом расположения одинаковой модели в папке моделей как предметов, так и блоков. Но для ориентировочных блоков это работает по другому с моделями. Пока не знаю как реализовать моделями, но можно реализовать состоянием блока как я писал. В состоянии блока от кузницы мы указываем базовую модель для обоих идентификаторов (как "inventory" так и "normal"), может её как-то по другому писать надо, например полный путь.​
 
1,031
19
87
Вот рабочий blockstate, отредактируй под себя:
JSON:
{
    "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"
        }
    }
}
У меня он отлично работает, главное не забудь модели удалить, они не нужны.
 
1,031
19
87
модель json на блок
А что её ставить то? Если кастомная то просто кидаешь копии в папки моделей для блоков и предметов и подключаешь её блокстейтом таким образом:
JSON:
{
    "forge_marker": 1,
    "defaults": {
        "textures": {
            "all": "tutorial:blocks/ore_copper"
        }
    },
    "variants": {
        "normal": {
            "model": "modid:blocks/yourmodel"
        },
        "inventory": {
            "model": "modid:items/yourmodel"
        }
    }
}
как сделать чтобы когда по блоку ходишь воспроизводился звук блока майнкрафта
В классе блока в конструкторе впиши:
Java:
this.setStepSound(SoundType.ЗВУК);
PS: отсылку увидел :sneaky:
 
Сверху