Posted August 6, 20169 yr Hi Is there a place where I can read about the new rendering system now that there is no more IItemRenderer?
August 6, 20169 yr 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.
August 6, 20169 yr 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.
August 6, 20169 yr Author How would I change the way an item is rendered when it's held by a player (1st and 3rd person perspective)?
August 6, 20169 yr Author How do I set the model of an item? Sorry for asking questions that might seem obvious...
August 6, 20169 yr 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?
August 7, 20169 yr 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...
August 7, 20169 yr 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...
August 7, 20169 yr 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: 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)
August 7, 20169 yr 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?
August 8, 20169 yr 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?
August 8, 20169 yr 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...
August 8, 20169 yr Author The movable parts of the Model (like scope, silencer in case of a gun) would be IModelPart, right?
August 8, 20169 yr 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.
August 8, 20169 yr 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?
August 8, 20169 yr 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?
August 8, 20169 yr 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?
August 8, 20169 yr 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?
August 9, 20169 yr 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?
August 9, 20169 yr 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.
August 9, 20169 yr 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.