Jump to content

[1.18.1] A block with two texture layers


Mattah12

Recommended Posts

I'm trying to create a block that has semi-transparent gems encrusted in it. My previous attempts using the .translucent property and just the one texture layer resulted in a block that I could see right through into the world behind.

So therefore I thought that two texture layers would be the way to go. I've tried two different ways with no success, using both block/block and block/cube and cube_all.

 

{
  "parent": "minecraft:block/block",
  "textures": {
    "layer0": "kanohicraft:block/lightstone_block_deepslate",
    "layer1": "kanohicraft:block/lightstone_block_deepslate_gems"
  }
}
{
  "parent": "minecraft:block/block",
  "textures": {
    "down": {
      "layer0": "kanohicraft:block/lightstone_block_overworld",
      "layer1": "kanohicraft:block/lightstone_block_overworld_gems"
    },
    "up": {
      "layer0": "kanohicraft:block/lightstone_block_overworld",
      "layer1": "kanohicraft:block/lightstone_block_overworld_gems"
    },
    "north": {
      "layer0": "kanohicraft:block/lightstone_block_overworld",
      "layer1": "kanohicraft:block/lightstone_block_overworld_gems"
    },
    "south": {
      "layer0": "kanohicraft:block/lightstone_block_overworld",
      "layer1": "kanohicraft:block/lightstone_block_overworld_gems"
    },
    "east": {
      "layer0": "kanohicraft:block/lightstone_block_overworld",
      "layer1": "kanohicraft:block/lightstone_block_overworld_gems"
    },
    "west": {
      "layer0": "kanohicraft:block/lightstone_block_overworld",
      "layer1": "kanohicraft:block/lightstone_block_overworld_gems"
    }
  }
}

If anyone has done something similar they could point me towards?

Full repo is here - https://github.com/Mattah12/Kanohi_Craft2022/tree/master/src

Link to comment
Share on other sites

you are using the minecraft:block/block as parent model 
you need to make your own cuboid model block whit the layers you need 
in this case sounds like a block inside another block 

{
    "parent": "block/block",
    "elements": [
        {   "from": [ 0, 0, 0 ],
            "to": [ 16, 16, 16 ],
            "faces": {
                "down":  { "texture": "#down", "cullface": "down" },
                "up":    { "texture": "#up", "cullface": "up" },
                "north": { "texture": "#north", "cullface": "north" },
                "south": { "texture": "#south", "cullface": "south" },
                "west":  { "texture": "#west", "cullface": "west" },
                "east":  { "texture": "#east", "cullface": "east" }
            }
        },
        {   "from": [ 1, 1, 1 ],
            "to": [ 15, 15, 15 ],
            "faces": {
                "down":  { "texture": "#indown", "cullface": "down" },
                "up":    { "texture": "#inup", "cullface": "up" },
                "north": { "texture": "#innorth", "cullface": "north" },
                "south": { "texture": "#insouth", "cullface": "south" },
                "west":  { "texture": "#inwest", "cullface": "west" },
                "east":  { "texture": "#ineast", "cullface": "east" }
            }
        }
    ]
}

Edited by perromercenary00
Link to comment
Share on other sites

layer0, layer1 are what you use when defining layers for item models

block models work differently (they are sided) you need to define an elements array,

look at the vanilla grass block model that uses 2 elements

{   "parent": "block/block",
    "textures": {
        "particle": "block/dirt",
        "bottom": "block/dirt",
        "top": "block/grass_block_top",
        "side": "block/grass_block_side",
        "overlay": "block/grass_block_side_overlay"
    },
    "elements": [
        {   "from": [ 0, 0, 0 ],
            "to": [ 16, 16, 16 ],
            "faces": {
                "down":  { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom", "cullface": "down" },
                "up":    { "uv": [ 0, 0, 16, 16 ], "texture": "#top",    "cullface": "up", "tintindex": 0 },
                "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#side",   "cullface": "north" },
                "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#side",   "cullface": "south" },
                "west":  { "uv": [ 0, 0, 16, 16 ], "texture": "#side",   "cullface": "west" },
                "east":  { "uv": [ 0, 0, 16, 16 ], "texture": "#side",   "cullface": "east" }
            }
        },
        {   "from": [ 0, 0, 0 ],
            "to": [ 16, 16, 16 ],
            "faces": {
                "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay", "tintindex": 0, "cullface": "north" },
                "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay", "tintindex": 0, "cullface": "south" },
                "west":  { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay", "tintindex": 0, "cullface": "west" },
                "east":  { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay", "tintindex": 0, "cullface": "east" }
            }
        }
    ]
}

They are drawn in order. You can ignore/remove the tintindex, that is used by vanilla to change the grass colour in different biomes.

It looks like you already have the rendertype defined for your blocks as cutout()

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

Thanks both for the replies.

So something like this?

{
  "parent": "minecraft:block/block",
  "elements": [
    {   "from": [ 0, 0, 0 ],
      "to": [ 16, 16, 16 ],
      "faces": {
        "down":  { "texture": "kanohicraft:block/lightstone_block_overworld_gems", "cullface": "down" },
        "up":    { "texture": "kanohicraft:block/lightstone_block_overworld_gems", "cullface": "up" },
        "north": { "texture": "kanohicraft:block/lightstone_block_overworld_gems", "cullface": "north" },
        "south": { "texture": "kanohicraft:block/lightstone_block_overworld_gems", "cullface": "south" },
        "west":  { "texture": "kanohicraft:block/lightstone_block_overworld_gems", "cullface": "west" },
        "east":  { "texture": "kanohicraft:block/lightstone_block_overworld_gems", "cullface": "east" }
      }
    },
    {   "from": [ 1, 1, 1 ],
      "to": [ 15, 15, 15 ],
      "faces": {
        "down":  { "texture": "kanohicraft:block/lightstone_block_overworld", "cullface": "down" },
        "up":    { "texture": "kanohicraft:block/lightstone_block_overworld", "cullface": "up" },
        "north": { "texture": "kanohicraft:block/lightstone_block_overworld", "cullface": "north" },
        "south": { "texture": "kanohicraft:block/lightstone_block_overworld", "cullface": "south" },
        "west":  { "texture": "kanohicraft:block/lightstone_block_overworld", "cullface": "west" },
        "east":  { "texture": "kanohicraft:block/lightstone_block_overworld", "cullface": "east" }
      }
    }
  ]
}

 

Link to comment
Share on other sites

The from/to on the second element should probably be 0,0,0 to 16,16,16. 

Edited by warjort

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

You also need to define a "particle" texture, otherwise you will get purple particles when you break your block.

 

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

Hmmm, still getting the purple and black 'no texture'.

What does cullface do?

 

{
  "parent": "minecraft:block/block",
  "particle": "kanohicraft:block/lightstone_block_overworld",
  "elements": [
    {   "from": [ 0, 0, 0 ],
      "to": [ 16, 16, 16 ],
      "faces": {
        "down":  { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "down" },
        "up":    { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "up" },
        "north": { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "north" },
        "south": { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "south" },
        "west":  { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "west" },
        "east":  { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "east" }
      }
    },
    {   "from": [ 0, 0, 0 ],
      "to": [ 16, 16, 16],
      "faces": {
        "down":  { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "down" },
        "up":    { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "up" },
        "north": { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "north" },
        "south": { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "south" },
        "west":  { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "west" },
        "east":  { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "east" }
      }
    }
  ]
}

 

Link to comment
Share on other sites

"textures": {
"particle": "kanohicraft:block/lightstone_block_overworld"
},

Texture variables need to be defined in a textures block.

 

"cullface": "xxx"

Tells minecraft it doesn't need to draw the texture if there is a full block in the xxx direction. Its an optimization.

See https://minecraft.fandom.com/wiki/Model

Edited by warjort

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

Hmm, still no luck

{
  "parent": "minecraft:block/block",
  "textures": {
    "particle": "kanohicraft:block/lightstone_block_deepslate"
  },
  "elements": [
    {   "from": [ 0, 0, 0 ],
      "to": [ 16, 16, 16 ],
      "faces": {
        "down":  { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "down" },
        "up":    { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "up" },
        "north": { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "north" },
        "south": { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "south" },
        "west":  { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "west" },
        "east":  { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "east" }
      }
    },
    {   "from": [ 0, 0, 0 ],
      "to": [ 16, 16, 16],
      "faces": {
        "down":  { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "down" },
        "up":    { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "up" },
        "north": { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "north" },
        "south": { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "south" },
        "west":  { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "west" },
        "east":  { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "east" }
      }
    }
  ]
  }

My log has the following lines, which makes me think I may have a typo or am misnaming something somewhere. Perhaps fresh eyes tomorrow will do better. But great if anyone notices something in the meantime.

[30Jun2022 20:32:35.963] [Worker-Main-14/WARN] [net.minecraft.client.resources.model.ModelBakery/]: Unable to resolve texture reference: kanohicraft:block/lightstone_block_overworld_gems in kanohicraft:block/lightstone_block_overworld
[30Jun2022 20:32:35.966] [Worker-Main-14/WARN] [net.minecraft.client.resources.model.ModelBakery/]: Unable to resolve texture reference: kanohicraft:block/lightstone_block_overworld in kanohicraft:block/lightstone_block_overworld
[30Jun2022 20:32:35.966] [Worker-Main-14/WARN] [net.minecraft.client.resources.model.ModelBakery/]: Unable to resolve texture reference: kanohicraft:block/lightstone_block_overworld_gems in kanohicraft:item/lightstone_block_overworld
[30Jun2022 20:32:35.966] [Worker-Main-14/WARN] [net.minecraft.client.resources.model.ModelBakery/]: Unable to resolve texture reference: kanohicraft:block/lightstone_block_overworld in kanohicraft:item/lightstone_block_overworld
[30Jun2022 20:32:35.966] [Worker-Main-14/WARN] [net.minecraft.client.resources.model.ModelBakery/]: Unable to resolve texture reference: kanohicraft:block/lightstone_block_deepslate_gems in kanohicraft:item/lightstone_block_deepslate
[30Jun2022 20:32:35.967] [Worker-Main-14/WARN] [net.minecraft.client.resources.model.ModelBakery/]: Unable to resolve texture reference: kanohicraft:block/lightstone_block_deepslate in kanohicraft:item/lightstone_block_deepslate
[30Jun2022 20:32:35.968] [Worker-Main-14/WARN] [net.minecraft.client.resources.model.ModelBakery/]: Unable to resolve texture reference: kanohicraft:block/lightstone_block_deepslate_gems in kanohicraft:block/lightstone_block_deepslate
[30Jun2022 20:32:35.968] [Worker-Main-14/WARN] [net.minecraft.client.resources.model.ModelBakery/]: Unable to resolve texture reference: kanohicraft:block/lightstone_block_deepslate in kanohicraft:block/lightstone_block_deepslate

 

Link to comment
Share on other sites

That wiki post from earlier says:

" texture: Specifies the texture in form of the texture variable prepended with a #."

So you can't directly reference the texture inside an element, you need to use texture variables.

Something like - you will need to change them all, I only changed the first one.

{
  "parent": "minecraft:block/block",
  "textures": {
    "particle": "kanohicraft:block/lightstone_block_deepslate",
    "texture1": "kanohicraft:block/lightstone_block_deepslate_gems",
    "texture2": "kanohicraft:block/lightstone_block_deepslate"
  },
  "elements": [
    {   "from": [ 0, 0, 0 ],
      "to": [ 16, 16, 16 ],
      "faces": {
        "down":  { "texture": "#texture1", "cullface": "down" },
        "up":    { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "up" },
        "north": { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "north" },
        "south": { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "south" },
        "west":  { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "west" },
        "east":  { "texture": "kanohicraft:block/lightstone_block_deepslate_gems", "cullface": "east" }
      }
    },
    {   "from": [ 0, 0, 0 ],
      "to": [ 16, 16, 16],
      "faces": {
        "down":  { "texture": "#texture2", "cullface": "down" },
        "up":    { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "up" },
        "north": { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "north" },
        "south": { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "south" },
        "west":  { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "west" },
        "east":  { "texture": "kanohicraft:block/lightstone_block_deepslate", "cullface": "east" }
      }
    }
  ]
  }

 

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

I think you probably also wants the gems as texture2? The overlaying texture should be drawn after the main texture.

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • They were already updated, and just to double check I even did a cleanup and fresh update from that same page. I'm quite sure drivers are not the problem here. 
    • i tried downloading the drivers but it says no AMD graphics hardware has been detected    
    • Update your AMD/ATI drivers - get the drivers from their website - do not update via system  
    • As the title says i keep on crashing on forge 1.20.1 even without any mods downloaded, i have the latest drivers (nvidia) and vanilla minecraft works perfectly fine for me logs: https://pastebin.com/5UR01yG9
    • Hello everyone, I'm making this post to seek help for my modded block, It's a special block called FrozenBlock supposed to take the place of an old block, then after a set amount of ticks, it's supposed to revert its Block State, Entity, data... to the old block like this :  The problem I have is that the system breaks when handling multi blocks (I tried some fix but none of them worked) :  The bug I have identified is that the function "setOldBlockFields" in the item's "setFrozenBlock" function gets called once for the 1st block of multiblock getting frozen (as it should), but gets called a second time BEFORE creating the first FrozenBlock with the data of the 1st block, hence giving the same data to the two FrozenBlock :   Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=head] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@73681674 BlockEntityData : id:"minecraft:bed",x:3,y:-60,z:-6} Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=3, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=2, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} here is the code inside my custom "freeze" item :    @Override     public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {         if (!pContext.getLevel().isClientSide() && pContext.getHand() == InteractionHand.MAIN_HAND) {             BlockPos blockPos = pContext.getClickedPos();             BlockPos secondBlockPos = getMultiblockPos(blockPos, pContext.getLevel().getBlockState(blockPos));             if (secondBlockPos != null) {                 createFrozenBlock(pContext, secondBlockPos);             }             createFrozenBlock(pContext, blockPos);             return InteractionResult.SUCCESS;         }         return super.useOn(pContext);     }     public static void createFrozenBlock(UseOnContext pContext, BlockPos blockPos) {         BlockState oldState = pContext.getLevel().getBlockState(blockPos);         BlockEntity oldBlockEntity = oldState.hasBlockEntity() ? pContext.getLevel().getBlockEntity(blockPos) : null;         CompoundTag oldBlockEntityData = oldState.hasBlockEntity() ? oldBlockEntity.serializeNBT() : null;         if (oldBlockEntity != null) {             pContext.getLevel().removeBlockEntity(blockPos);         }         BlockState FrozenBlock = setFrozenBlock(oldState, oldBlockEntity, oldBlockEntityData);         pContext.getLevel().setBlockAndUpdate(blockPos, FrozenBlock);     }     public static BlockState setFrozenBlock(BlockState blockState, @Nullable BlockEntity blockEntity, @Nullable CompoundTag blockEntityData) {         BlockState FrozenBlock = BlockRegister.FROZEN_BLOCK.get().defaultBlockState();         ((FrozenBlock) FrozenBlock.getBlock()).setOldBlockFields(blockState, blockEntity, blockEntityData);         return FrozenBlock;     }  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.