Jump to content
  • Home
  • Files
  • Docs
  • Merch
Topics
  • All Content

  • This Topic
  • This Forum

  • Advanced Search
  • Existing user? Sign In  

    Sign In



    • Not recommended on shared computers


    • Forgot your password?

  • Sign Up
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • Chest Render
1.13 Update Notes for Mod Creators
Sign in to follow this  
Followers 0
Guff1118

Chest Render

By Guff1118, October 27, 2017 in Modder Support

  • Reply to this topic
  • Start new topic

Recommended Posts

Guff1118    0

Guff1118

Guff1118    0

  • Tree Puncher
  • Guff1118
  • Members
  • 0
  • 4 posts
Posted October 27, 2017

Hello all, thank you for viewing my thread.

I recently decided to update an old mod of mine, but I've been out of the loop with updating beyond 1.7. For the most part, I have the mod working again, and almost done, with a small exception. This mod includes a block that is just a modified chest. It is just a subclass of BlockChest, and that worked previously but sadly, it doesn't work now. The block won't render properly as an entity or in-hand; all I can see is an oversize black/purple cube. However, it worked correctly when placed in the world as a block state. Naturally, I figured following the way trapped chests work would get me to where I wanted, but that didn't work either.

 

So basically, I copied the trapped_chest.json from models/item to my models/item folder in my mod's asset folder, and just renamed the file to reflect the registry name of the block. Trapped chests only have this one file, so I'm not sure why it's not working. I don't understand why I'm having this issue since I'm using the same method that trapped chests use as far as the json files go.

Am I missing something? Is there something hidden within the source that I'm not seeing? I've been trying to get this fixed for a few days and I just can't seem to figure out what the problem is. If anyone could kindly point me in the right directly, that would be appreciated. I'll post whatever files/errors you need to see to help.

  • Quote

Share this post


Link to post
Share on other sites

Draco18s    2096

Draco18s

Draco18s    2096

  • Reality Controller
  • Draco18s
  • Members
  • 2096
  • 14029 posts
Posted October 27, 2017

"It's not working" because chests don't use the JSON model system. They have an animated TESR model.

  • Quote

Share this post


Link to post
Share on other sites

Guff1118    0

Guff1118

Guff1118    0

  • Tree Puncher
  • Guff1118
  • Members
  • 0
  • 4 posts
Posted October 27, 2017
2 minutes ago, Draco18s said:

"It's not working" because chests don't use the JSON model system. They have an animated TESR model.

Okay, that's good to know.

So what reason would the engine have for not seeing my tile entity as having the same TESR as the vanilla chest?


In TileEntityRenderDispatcher.class

public <T extends TileEntity> TileEntitySpecialRenderer<T> getRenderer(Class <? extends TileEntity > teClass)
    {
        TileEntitySpecialRenderer<T> tileentityspecialrenderer = (TileEntitySpecialRenderer)this.renderers.get(teClass);

        if (tileentityspecialrenderer == null && teClass != TileEntity.class)
        {
            tileentityspecialrenderer = this.getRenderer((Class <? extends TileEntity >)teClass.getSuperclass());
            this.renderers.put(teClass, tileentityspecialrenderer);
        }

        return tileentityspecialrenderer;
    }

 

My tile entity is a direct subclass of TileEntityChest, so it should automatically be using the same render, or did I miss something?

 

If chests don't use the model system, what reason would both chest and trapped_chest.json have for existing in models/item?
 

  • Quote

Share this post


Link to post
Share on other sites

Draco18s    2096

Draco18s

Draco18s    2096

  • Reality Controller
  • Draco18s
  • Members
  • 2096
  • 14029 posts
Posted October 27, 2017

models/item is the inventory model, not the model used in the world.

Anyway, you should be able to register the existing chest renderer for your own block.

  • Quote

Share this post


Link to post
Share on other sites

Guff1118    0

Guff1118

Guff1118    0

  • Tree Puncher
  • Guff1118
  • Members
  • 0
  • 4 posts
Posted October 27, 2017
1 minute ago, Draco18s said:

models/item is the inventory model, not the model used in the world.

Anyway, you should be able to register the existing chest renderer for your own block.

Right, and there is no issue with the model in the world; it renders perfectly fine as a chest, as the TileEntityRenderDispatcher method would suggest. So I therefore have no need to register the same TESR manually; it is registering itself via that method. The models/item being the inventory model I agree with, and that is where I am stumbling, because it is not rendering the chest ItemBlock as an entity or in-hand, which is the original problem that was pointed out.

 

Looking at trapped_chest.json in models/item (which should, as has been determined, decide how the in-hand model for the ItemBlock is handle), I see the below:

trapped_chest.json (assets/models/item)

{
    "parent": "item/chest"
}

 

Using that logic, I would figure that this would work for my ItemBlock:
 

blocktreasurechest.json (plunderrummage/assets/models/item)

{
  "parent": "item/chest"
}

 

I'm sure I've done something wrong.

  • Quote

Share this post


Link to post
Share on other sites

Draco18s    2096

Draco18s

Draco18s    2096

  • Reality Controller
  • Draco18s
  • Members
  • 2096
  • 14029 posts
Posted October 27, 2017

I'm not sure, its not something I've tried to do.

  • Quote

Share this post


Link to post
Share on other sites

Guff1118    0

Guff1118

Guff1118    0

  • Tree Puncher
  • Guff1118
  • Members
  • 0
  • 4 posts
Posted October 27, 2017
19 hours ago, Draco18s said:

I'm not sure, its not something I've tried to do.

I appreciate your attempting to help me resolve this issue.

If anyone else has some insight, it would be appreciated. Thanks in advance.

  • Quote

Share this post


Link to post
Share on other sites

Choonster    1624

Choonster

Choonster    1624

  • Reality Controller
  • Choonster
  • Forge Modder
  • 1624
  • 5050 posts
Posted October 28, 2017

Vanilla special-cases the rendering of Items for Blocks that are rendered by TESRs in TileEntityItemStackRenderer. You can register your own item TESR with ForgeHooksClient.registerTESRItemStack, but this is deprecated and marked for removal as soon as possible.

 

Instead, you should just create a regular baked model and use that for the item form. I created a JSON version of the chest model here.

 

Ideally you should also use a baked model for the block and use Forge's animation system to animate the lid, but unfortunately there's not much documentation on it.

  • Quote

Share this post


Link to post
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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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.

  • Insert image from URL
×
  • Desktop
  • Tablet
  • Phone
Sign in to follow this  
Followers 0
Go To Topic Listing



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • diesieben07
      Memory Heap Thingy!

      By diesieben07 · Posted 2 hours ago

      That's not what this thread is about... Make your own thread and post logs.
    • gudie73
      Memory Heap Thingy!

      By gudie73 · Posted 2 hours ago

      It gets stuck on that part and doesn’t change
    • gudie73
      Memory Heap Thingy!

      By gudie73 · Posted 2 hours ago

      Wym  
    • RaphGamingz
      ScreenGui does nothing

      By RaphGamingz · Posted 3 hours ago

      any errors?
    • RaphGamingz
      Game crashing when the block is activated

      By RaphGamingz · Posted 3 hours ago

      then you    your not assigning a value to the tileEntity try in the constructor tileEntity = world.getTileEntity(pos);
  • Topics

    • Mizinov
      7
      Memory Heap Thingy!

      By Mizinov
      Started August 24

    • Jaffaaaaa
      2
      ScreenGui does nothing

      By Jaffaaaaa
      Started Wednesday at 07:03 PM

    • jun2040
      5
      Game crashing when the block is activated

      By jun2040
      Started 19 hours ago

    • Merthew
      5
      [1.12.2] Multiple Structure Generation

      By Merthew
      Started November 7, 2018

    • Professional Derp
      16
      Server frequently crashes

      By Professional Derp
      Started 12 hours ago

  • Who's Online (See full list)

    • Neverless013
    • Yanny7
    • saxon564
    • Tomasukun
    • Ugdhar
    • dima.100
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • Chest Render
  • Theme
  • Contact Us
  • Discord

Copyright © 2019 ForgeDevelopment LLC · Ads by Curse Powered by Invision Community