Jump to content

Solved: Block Rendering


holst666

Recommended Posts

I am currently facing some issues with this small block that i'm trying to make.
When i'm placing it won't render when facing down.

all sides render correctly.

The block is just a copy of minecraft:hopper

my states:
 

{
  "variants": {
    "facing=down": { "model": "examplemod:block/newblock" },
    "facing=north": { "model": "examplemod:block/newblock_side" },
    "facing=south": { "model": "examplemod:block/newblock_side", "y": 180 },
    "facing=west": { "model": "examplemod:block/newblock_side", "y": 270 },
    "facing=east": { "model": "examplemod:block/newblock_side", "y": 90 }
  }
}


inside textures/block i got the exact same png's just renamed to reflect this examplemod.
inside, outside and top.

inside models/block
i got two model files,
newblock and newblock_side, just as minecraft hopper.

this is models/block/newblock.json:

{
  "ambientocclusion": false,
  "textures": {
    "particle": "examplemod:block/newblock_outside",
    "top": "examplemod:block/newblock_top",
    "side": "examplemod:block/newblock_outside",
    "inside": "examplemod:block/newblock_inside"
  },
  "elements": [
    {   "from": [ 0, 10, 0 ],
      "to": [ 16, 11, 16 ],
      "faces": {
        "down":  { "texture": "#side" },
        "up":    { "texture": "#inside", "cullface": "up" },
        "north": { "texture": "#side", "cullface": "north" },
        "south": { "texture": "#side", "cullface": "south" },
        "west":  { "texture": "#side", "cullface": "west" },
        "east":  { "texture": "#side", "cullface": "east" }
      }
    },
    {   "from": [ 0, 11, 0 ],
      "to": [ 2, 16, 16 ],
      "faces": {
        "up":    { "texture": "#top", "cullface": "up" },
        "north": { "texture": "#side", "cullface": "north" },
        "south": { "texture": "#side", "cullface": "south" },
        "west":  { "texture": "#side", "cullface": "west" },
        "east":  { "texture": "#side", "cullface": "up" }
      }
    },
    {   "from": [ 14, 11, 0 ],
      "to": [ 16, 16, 16 ],
      "faces": {
        "up":    { "texture": "#top", "cullface": "up" },
        "north": { "texture": "#side", "cullface": "north" },
        "south": { "texture": "#side", "cullface": "south" },
        "west":  { "texture": "#side", "cullface": "up" },
        "east":  { "texture": "#side", "cullface": "east" }
      }
    },
    {   "from": [ 2, 11, 0 ],
      "to": [ 14, 16, 2 ],
      "faces": {
        "up":    { "texture": "#top", "cullface": "up" },
        "north": { "texture": "#side", "cullface": "north" },
        "south": { "texture": "#side", "cullface": "up" }
      }
    },
    {   "from": [ 2, 11, 14 ],
      "to": [ 14, 16, 16 ],
      "faces": {
        "up":    { "texture": "#top", "cullface": "up" },
        "north": { "texture": "#side", "cullface": "up" },
        "south": { "texture": "#side", "cullface": "south" }
      }
    },
    {   "from": [ 4, 4, 4 ],
      "to": [ 12, 10, 12 ],
      "faces": {
        "down":  { "texture": "#side" },
        "north": { "texture": "#side" },
        "south": { "texture": "#side" },
        "west":  { "texture": "#side" },
        "east":  { "texture": "#side" }
      }
    },
    {   "from": [ 6, 0, 6 ],
      "to": [ 10, 4, 10 ],
      "faces": {
        "down":  { "texture": "#side", "cullface": "down" },
        "north": { "texture": "#side" },
        "south": { "texture": "#side" },
        "west":  { "texture": "#side" },
        "east":  { "texture": "#side" }
      }
    }
  ]
}


and models/block/newblock_side.json

{
    "ambientocclusion": false,
    "textures": {
        "particle": "examplemod:block/newblock_outside",
        "top": "examplemod:block/newblock_top",
        "side": "examplemod:block/newblock_outside",
        "inside": "examplemod:block/newblock_inside"
    },
    "elements": [
        {   "from": [ 0, 10, 0 ],
            "to": [ 16, 11, 16 ],
            "faces": {
                "down":  { "texture": "#side" },
                "up":    { "texture": "#inside", "cullface": "up" },
                "north": { "texture": "#side", "cullface": "north" },
                "south": { "texture": "#side", "cullface": "south" },
                "west":  { "texture": "#side", "cullface": "west" },
                "east":  { "texture": "#side", "cullface": "east" }
            }
        },
        {   "from": [ 0, 11, 0 ],
            "to": [ 2, 16, 16 ],
            "faces": {
                "up":    { "texture": "#top", "cullface": "up" },
                "north": { "texture": "#side", "cullface": "north" },
                "south": { "texture": "#side", "cullface": "south" },
                "west":  { "texture": "#side", "cullface": "west" },
                "east":  { "texture": "#side", "cullface": "up" }
            }
        },
        {   "from": [ 14, 11, 0 ],
            "to": [ 16, 16, 16 ],
            "faces": {
                "up":    { "texture": "#top", "cullface": "up" },
                "north": { "texture": "#side", "cullface": "north" },
                "south": { "texture": "#side", "cullface": "south" },
                "west":  { "texture": "#side", "cullface": "up" },
                "east":  { "texture": "#side", "cullface": "east" }
            }
        },
        {   "from": [ 2, 11, 0 ],
            "to": [ 14, 16, 2 ],
            "faces": {
                "up":    { "texture": "#top", "cullface": "up" },
                "north": { "texture": "#side", "cullface": "north" },
                "south": { "texture": "#side", "cullface": "up" }
            }
        },
        {   "from": [ 2, 11, 14 ],
            "to": [ 14, 16, 16 ],
            "faces": {
                "up":    { "texture": "#top", "cullface": "up" },
                "north": { "texture": "#side", "cullface": "up" },
                "south": { "texture": "#side", "cullface": "south" }
            }
        },
        {   "from": [ 4, 4, 4 ],
            "to": [ 12, 10, 12 ],
            "faces": {
                "down":  { "texture": "#side" },
                "north": { "texture": "#side" },
                "south": { "texture": "#side" },
                "west":  { "texture": "#side" },
                "east":  { "texture": "#side" }
            }
        },
        {   "from": [ 6, 4, 0 ],
            "to": [ 10, 8, 4 ],
            "faces": {
                "down":  { "texture": "#side" },
                "up":    { "texture": "#side" },
                "north": { "texture": "#side", "cullface": "north" },
                "west":  { "texture": "#side" },
                "east":  { "texture": "#side" }
            }
        }
    ]
}



I am not sure if it is problem related to any of these files or if it is related to some block registration code
hope someone can help point me in the right direction.

please tell if i should post more code.
If it helps i have tried following this tutorial on youtube.




Best Regards.
 

newblock.png

 

 

Solved: 
 

    @Nullable
    @Override
    public BlockState getStateForPlacement(BlockItemUseContext context)
    {
        BlockState blockstate = super.getStateForPlacement(context);
        if (blockstate != null)
        {
            if(context.getNearestLookingDirection() == Direction.UP)
            {
                blockstate = blockstate.with(BlockStateProperties.FACING, Direction.DOWN);
            }
            else
            {
                blockstate = blockstate.with(BlockStateProperties.FACING, context.getNearestLookingDirection());
            }
        }
        return blockstate;
    }


I am now avoiding an up direction by checking context.getNearestLookingDirection() , setting it to direction.down i case that happens and otherwise use the returned direction.

 

 

Edited by holst666
Link to comment
Share on other sites

9 minutes ago, holst666 said:

When i'm placing it won't render when facing down.

Only when it is facing down? Have you looked at the block in F3 to make sure the facing property is down? Also could you post a screenshot or elaborate on what you mean by "won't render"?

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

3 minutes ago, Animefan8888 said:

Only when it is facing down? Have you looked at the block in F3 to make sure the facing property is down? Also could you post a screenshot or elaborate on what you mean by "won't render"?

Looks like it's facing up then.
it's when looking downwards and placing it.
Look up and placing works to.

Link to comment
Share on other sites

1 hour ago, holst666 said:

but how do they handle it otherwise, vanilla does not look like they have set an up variant.?

They must not ever let it have an UP variant when its placed.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

5 minutes ago, holst666 said:

How can i manual check for facing direction and set the propper blockstate then ?

I don't know what your code looks like so the best I can tell you is look at HopperBlock#getStateForPlacement

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

Solved: 
 

    @Nullable
    @Override
    public BlockState getStateForPlacement(BlockItemUseContext context)
    {
        BlockState blockstate = super.getStateForPlacement(context);
        if (blockstate != null)
        {
            if(context.getNearestLookingDirection() == Direction.UP)
            {
                blockstate = blockstate.with(BlockStateProperties.FACING, Direction.DOWN);
            }
            else
            {
                blockstate = blockstate.with(BlockStateProperties.FACING, context.getNearestLookingDirection());
            }
        }
        return blockstate;
    }


I am now avoiding an up direction by checking context.getNearestLookingDirection() , setting it to direction.down i case that happens and otherwise use the returned direction.

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



×
×
  • Create New...

Important Information

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