Jump to content

Recommended Posts

Posted (edited)

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
Posted
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.

Posted
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.

Posted (edited)

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

Edited by holst666
Posted
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.

Posted
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.

Posted

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.

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

    • Hello, I have this same problem. Did you manage to find a solution? Any help would be appreciated. Thanks.
    • log: https://mclo.gs/QJg3wYX as stated in the title, my game freezes upon loading into the server after i used a far-away waystone in it. The modpack i'm using is better minecraft V18. Issue only comes up in this specific server, singleplayer and other servers are A-okay. i've already experimented with removing possible culprits like modernfix and various others to no effect. i've also attempted a full reinstall of the modpack profile. Issue occurs shortly after the 'cancel' button dissapears on the 'loading world' section of the loading screen.   thanks in advance.
    • You would have better results asking a more specific question. What have you done? What exactly do you need help with? Please also read the FAQ regarding posting logs.
    • Hi, this is my second post with the same content as no one answered this and it's been a long time since I made the last post, I want to make a client-only mod, everything is ok, but when I use shaders, none of the textures rendered in RenderLevelStageEvent nor the crow entity model are rendered, I want them to be visible, because it's a horror themed mod I've already tried it with different shaders, but it didn't work with any of them and I really want to add support for shaders Here is how i render the crow model in the CrowEntityRenderer<CrowEntity>, by the time i use this method, i know is not the right method but i don't think this is the cause of the problem, the renderType i'm using is entityCutout @Override public void render(CrowEntity p_entity, float entityYaw, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight) { super.render(p_entity, entityYaw, partialTick, poseStack, bufferSource, packedLight); ClientEventHandler.getClient().crow.renderToBuffer(poseStack, bufferSource.getBuffer(ClientEventHandler.getClient().crow .renderType(TEXTURE)), packedLight, OverlayTexture.NO_OVERLAY, Utils.rgb(255, 255, 255)); } Here renderLevelStage @Override public void renderWorld(RenderLevelStageEvent e) { horrorEvents.draw(e); } Here is how i render every event public void draw(RenderLevelStageEvent e) { for (HorrorEvent event : currentHorrorEvents) { event.tick(e.getPartialTick()); event.draw(e); } } Here is how i render the crow model on the event @Override public void draw(RenderLevelStageEvent e) { if(e.getStage() == RenderLevelStageEvent.Stage.AFTER_ENTITIES) { float arcProgress = getArcProgress(0.25f); int alpha = (int) Mth.lerp(arcProgress, 0, 255); int packedLight = LevelRenderer.getLightColor(Minecraft.getInstance().level, blockPos); VertexConsumer builder = ClientEventHandler.bufferSource.getBuffer(crow); Crow<CreepyBirdHorrorEvent> model = ClientEventHandler .getClient().crow; model.setupAnim(this); RenderHelper.renderModelInWorld(model, position, offset, e.getCamera(), e.getPoseStack(), builder, packedLight, OverlayTexture.NO_OVERLAY, alpha); builder = ClientEventHandler.bufferSource.getBuffer(eyes); RenderHelper.renderModelInWorld(model, position, offset, e.getCamera(), e.getPoseStack(), builder, 15728880, OverlayTexture.NO_OVERLAY, alpha); } } How i render the model public static void renderModelInWorld(Model model, Vector3f pos, Vector3f offset, Camera camera, PoseStack matrix, VertexConsumer builder, int light, int overlay, int alpha) { matrix.pushPose(); Vec3 cameraPos = camera.getPosition(); double finalX = pos.x - cameraPos.x + offset.x; double finalY = pos.y - cameraPos.y + offset.y; double finalZ = pos.z - cameraPos.z + offset.z; matrix.pushPose(); matrix.translate(finalX, finalY, finalZ); matrix.mulPose(Axis.XP.rotationDegrees(180f)); model.renderToBuffer(matrix, builder, light, overlay, Utils .rgba(255, 255, 255, alpha)); matrix.popPose(); matrix.popPose(); } Thanks in advance
  • Topics

×
×
  • Create New...

Important Information

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