Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

Hi

 

Is there a place where I can read about the new rendering system now that there is no more IItemRenderer?

 

  • Replies 54
  • Views 19.6k
  • Created
  • Last Reply

Top Posters In This Topic

I'm pretty sure you need to use the new JSON model system or IBakedModels. I have found no tutorials on either of these.

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.

  • Author

Ok. But how do I override the vanilla way of rendering an item?

You could read diesiebens 2nd response and that may answer your question.

http://www.minecraftforge.net/forum/index.php/topic,39203.0/wap2.html

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.

  • Author

How would I change the way an item is rendered when it's held by a player (1st and 3rd person perspective)?

  • Author

How do I set the model of an item?

 

Sorry for asking questions that might seem obvious...

  • Author

Do you know an example project where IPerspectiveAwareModel is used?

 

 

  • Author

Is it possible to cancel the rendering of only the item in one Hand during 'RenderHandEvent'/are there also events that get fired for each Hand independently?

 

If not, is there a reliable way to render the item in a hand?

  • Author

Isn't there a different way to just precent the rendering of my items so that I can render them myself? I would have to change the entire rendering and model system of the mod...

  • Author

Why was IItemRenderer removed?

The mod that I'm working on is FlansMod. I want to update it to 1.10 but it has it's own way of rendering things and the models and animations of all weapons and vehicles are made with this system. It's probably not possible to implement IModel / IBakedModel to this...

  • Author

Ok. This means I will use the new system.

 

I still don't exactly understand how IModel and IBakedModel are implemented. I can try to explain how the current Model system works, maybe you know how I could implement it.

 

This is a (very simplified) schematic where I try to explain how it works:

tJk2Qmj.png

 

This is for example what the Model class of a gun looks like:

[spoiler=ModelM9.java]


public class ModelM9 extends ModelGun 
{
public ModelM9()
{
	int textureX = 32;
	int textureY = 16;

	gunModel = new ModelRendererTurbo[3];

	gunModel[0] = new ModelRendererTurbo(this, 0, 0, textureX, textureY);
	gunModel[0].addBox(-1F, -2F, -1F, 3, 4, 2);

	gunModel[1] = new ModelRendererTurbo(this, 0, 6, textureX, textureY);
	gunModel[1].addBox(-1F, 2F, -1F, 8, 1, 2);

	gunModel[2] = new ModelRendererTurbo(this, 0, 9, textureX, textureY);
	gunModel[2].addBox(-0.5F, 3.5F, -0.5F, 8, 1, 1);

	slideModel = new ModelRendererTurbo[3];

	slideModel[0] = new ModelRendererTurbo(this, 0, 12, textureX, textureY);
	slideModel[0].addBox(-1F, 3F, -1F, 8, 2, 2);

	slideModel[1] = new ModelRendererTurbo(this, 10, 2, textureX, textureY);
	slideModel[1].addBox(5.95F, 4.5F, -0.5F, 1, 1, 1);

	slideModel[2] = new ModelRendererTurbo(this, 8, 0, textureX, textureY);
	slideModel[2].addBox(-0.8F, 4.5F, -0.5F, 1, 1, 1);

	ammoModel = new ModelRendererTurbo[1];

	ammoModel[0] = new ModelRendererTurbo(this, 14, 0, textureX, textureY);
	ammoModel[0].addBox(-0.5F, -1.8F, -0.5F, 2, 4, 1);

	barrelAttachPoint = new Vector3f(7.5F / 16F, 4F / 16F, 0F);

	scopeAttachPoint = new Vector3f(3F / 16F, 5F / 16F, 0F);
	scopeIsOnSlide = true;

	gunSlideDistance = 0.25F;
	animationType = EnumAnimationType.PISTOL_CLIP;
}
}

 

 

Here's the source of the mod: https://github.com/gitgud-software/FlansMod

(changes to the mod made by me are not yet committed, but I can commit them if you need the code; I fixed the compiler errors and started fixing bugs)

 

 

  • Author

My ModelGun would have to implement IModel and then I would have to make a BakedGunModel (implements IPerspectiveAwareModel) class? How do I then "connect" that BakedModel with the item?

 

  • Author

And how do i register the baked model to the item?

  • Author

The mod adds many different items for which I need different ICustomModelLoaders. How should I determine whether or not the ICustomLoader accepts it when I just have a ResourceLocation?

 

Edit: nvm. that was a stupid question. I can just add a folder called guns in assets/flansmod/models/item right?

  • Author

I'm not sure if it's possible to use the same format for each kind of item... Guns should consist of multiple parts that will have to be moved independently during reloading-animations and so on, but Plane-Models, for example, have other properties...

  • Author

The movable parts of the Model (like scope, silencer in case of a gun) would be IModelPart, right?

  • Author

Hm ok.

What file-format would you suggest? I can't use a simple .obj-file because the file has to store multiple "sub-objects" (IModelPart) and also other information (for example points where gun attachments/upgrades should be placed).

Should I use a .zip-file that contains .obj files? That would make it possible to edit the model with 3d-programs.

  • Author

Do you think it's ok to just have one ICustomModelLoader, store what kind of IModel it describes in the model file and then make the ICustomModelLoader load/instantiate the IModel accordingly?

 

Also what textures do I have to return in getTextures() of IModel and where should I get them from? I mean, aren't textures stored separately?

  • Author

What about my second question: what textures do I have to return in getTextures() of IModel and where should I get them from? I mean, aren't textures stored separately?

  • Author

How do I make the BakedQuads for the getQuads method in IBakedModel? And can I change the IBakedModel during runtime for things like animations?

  • Author

Currently the mods stores things like attachments and paintjobs in the ItemStack (as NBT data). Is there a way to get the NBT data during baking? If not: How would I implement attachments and paintjobs?

  • Author

The second approach seems to be exactly what I need. Thank you so much  :D

  • Author

I have two more questions:

  • Why is ICustomModelLoader::loadModel called twice for every item?
  • How can I make the Item render in the vanilla way when it's in the inventory/GUIs?

This is what I tried to do in my IPerspectiveAwareModel:

     @Override
    public Pair<? extends IBakedModel, Matrix4f> handlePerspective(ItemCameraTransforms.TransformType cameraTransformType) {
        switch (cameraTransformType) {
            case GUI:
                return Pair.of(Minecraft.getMinecraft().getRenderItem().getItemModelMesher().getModelManager().getModel(new ModelResourceLocation(resourceLocation, null)), null);
        }

        return Pair.of(this, null);
    }

 

The result is just a purple-black square. How can I specify the texture correctly?

  • Author

With normal, I mean a "2D-Item". The way almost all Items in the game are rendered. I also tried ModelResourceLocation(resourceLocation, "inventory") and ModelResourceLocation(resourceLocation, "normal") (which is the same as ModelResourceLocation(resourceLocation, null)) with the same outcome.

The normal "2D-Item" model is defined in "item/handheld.json". If you want a textured variant of this model, load it using

ModelLoaderRegistry.getModel(new ResourceLocation("item/handheld"))

, cast to

IRetexturableModel

and retexture it to use whichever texture you want (make sure the texture is loaded, if need be via

TextureStitchEvent

). The base texture for this item model is called "layer0", so you'd do

IRetexturableModel::retexture(ImmutableMap.of("layer0", <myTexture>))

.

You can then bake the resulting

IModel

.

 

I think you mean

builtin/generated

or

item/generated

.

builtin/generated

is the base 2D-style model,

item/generated

extends this and defines the standard display transformations. Most basic item models extend

item/generated

.

 

item/handheld

extends

item/generated

and redefines the first/third-person display transformations to change how the item renders when held by an entity. Vanilla tool models extend this.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

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

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.