Posted June 9, 20205 yr Hey, Im currently porting my sword mod from 1.7.10 to 1.15.2 and before I could simply use the ItemSword class to render it as an sword not as an item but now if I use extends SwordItem it doesn't render the sword as an sword, it renders it as an item, how can I render the item in the hand as an normal sword?
June 9, 20205 yr 25 minutes ago, Joshi234 said: how can I render the item in the hand as an normal sword? I would look at the vanilla code/models for one of those swords, and follow suit. What have you tried? What happened that wasn't expected? More details please
June 9, 20205 yr Author Just now, Ugdhar said: I would look at the vanilla code/models for one of those swords, and follow suit. What have you tried? What happened that wasn't expected? More details please I wrote a scode that renders the sword at to times, made it as ISTER but it never gets called and its just rendering how you see it in the screenshot package com.joshi234.lotrswordaddon; import com.mojang.blaze3d.matrix.MatrixStack; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; import java.util.List; public class RenderLargerItems extends ItemStackTileEntityRenderer { @Override public void render(ItemStack itemstack, MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, int combinedLightIn, int combinedOverlayIn) { PlayerEntity player=Minecraft.getInstance().player; GL11.glPushMatrix(); GL11.glTranslatef(-0.5F, -0.5F, 0F); GL11.glScalef(2F, 2F, 1F); TextureManager textureManager = Minecraft.getInstance().getTextureManager(); ResourceLocation texture = null; texture = new ResourceLocation(main.MODID, "textures/items/" + itemstack.getTranslationKey().replace(" ","_").replace("item.","").replace(".name","") + ".png"); textureManager.bindTexture(texture); if(itemstack.isEnchanted()){ textureManager.bindTexture(RenderLargerItemsFire.enchantmentTexture); } if (itemstack != null ) { GL11.glDepthFunc(GL11.GL_EQUAL); GL11.glDisable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE); float f = 0.76F; GL11.glColor4f(0.5F * f, 0.25F * f, 0.8F * f, 1.0F); GL11.glMatrixMode(GL11.GL_TEXTURE); GL11.glPushMatrix(); float f1 = 0.125F; GL11.glScalef(f1, f1, f1); float f2 = (float)(System.currentTimeMillis() % 3000L) / 3000.0F * 8.0F; GL11.glTranslatef(f2, 0.0F, 0.0F); GL11.glRotatef(-50.0F, 0.0F, 0.0F, 1.0F); GL11.glPopMatrix(); GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glDisable(GL11.GL_BLEND); GL11.glEnable(GL11.GL_LIGHTING); GL11.glDepthFunc(GL11.GL_LEQUAL); } GL11.glPopMatrix(); } }
June 9, 20205 yr A lot has changed with rendering: https://gist.github.com/williewillus/30d7e3f775fe93c503bddf054ef3f93e Quote In the vast majority of cases, you should no longer use direct OpenGL calls via GlStateManager/GL11. I have not done a ton with rendering, but I would go over those 1.15 rendering change notes, and see how it applies to your situation.
June 9, 20205 yr Author 1 minute ago, Joshi234 said: I wrote a scode that renders the sword at to times, made it as ISTER but it never gets called and its just rendering how you see it in the screenshot package com.joshi234.lotrswordaddon; import com.mojang.blaze3d.matrix.MatrixStack; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; import java.util.List; public class RenderLargerItems extends ItemStackTileEntityRenderer { @Override public void render(ItemStack itemstack, MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, int combinedLightIn, int combinedOverlayIn) { PlayerEntity player=Minecraft.getInstance().player; GL11.glPushMatrix(); GL11.glTranslatef(-0.5F, -0.5F, 0F); GL11.glScalef(2F, 2F, 1F); TextureManager textureManager = Minecraft.getInstance().getTextureManager(); ResourceLocation texture = null; texture = new ResourceLocation(main.MODID, "textures/items/" + itemstack.getTranslationKey().replace(" ","_").replace("item.","").replace(".name","") + ".png"); textureManager.bindTexture(texture); if(itemstack.isEnchanted()){ textureManager.bindTexture(RenderLargerItemsFire.enchantmentTexture); } if (itemstack != null ) { GL11.glDepthFunc(GL11.GL_EQUAL); GL11.glDisable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE); float f = 0.76F; GL11.glColor4f(0.5F * f, 0.25F * f, 0.8F * f, 1.0F); GL11.glMatrixMode(GL11.GL_TEXTURE); GL11.glPushMatrix(); float f1 = 0.125F; GL11.glScalef(f1, f1, f1); float f2 = (float)(System.currentTimeMillis() % 3000L) / 3000.0F * 8.0F; GL11.glTranslatef(f2, 0.0F, 0.0F); GL11.glRotatef(-50.0F, 0.0F, 0.0F, 1.0F); GL11.glPopMatrix(); GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glDisable(GL11.GL_BLEND); GL11.glEnable(GL11.GL_LIGHTING); GL11.glDepthFunc(GL11.GL_LEQUAL); } GL11.glPopMatrix(); } } Wrong: ^ Right |
June 9, 20205 yr Author 4 minutes ago, Ugdhar said: A lot has changed with rendering: https://gist.github.com/williewillus/30d7e3f775fe93c503bddf054ef3f93e I have not done a ton with rendering, but I would go over those 1.15 rendering change notes, and see how it applies to your situation. Yeah render gets never called
June 9, 20205 yr 2 minutes ago, Joshi234 said: Yeah render gets never called Then it's likely a problem with the way your ISTER is being registered/created. I believe the vanilla shield and trident use ISTER for rendering, they might be helpful examples.
June 9, 20205 yr Author 3 minutes ago, Ugdhar said: Then it's likely a problem with the way your ISTER is being registered/created. I believe the vanilla shield and trident use ISTER for rendering, they might be helpful examples. public static Item.Properties properties=new Item.Properties().setISTER(() -> RenderLargerItems::new).group(ItemGroup.COMBAT); this is how I do it but I looked into the items and trident class there no item is using this way Edited June 9, 20205 yr by Joshi234
June 9, 20205 yr Weird, that render method looks wrong. It should be more like this: Quote public void render(MatrixStack matrixStackIn, IVertexBuilder bufferIn, int packedLightIn, int packedOverlayIn, float red, float green, float blue, float alpha) { *edit: at least, that's the one i had for a custom shield that worked for 1.15.2. Looking at the one in my latest project with newer mappings it looks like the one you have. I guess at this point, I have no idea, sorry! Edited June 9, 20205 yr by Ugdhar
June 9, 20205 yr Author in the model json under parent item/handheld lets it render in the hand but not bigger and still not calling render,gonna check your method
June 9, 20205 yr Author 5 minutes ago, Ugdhar said: Weird, that render method looks wrong. It should be more like this: It still doesnt get called ? Edited June 9, 20205 yr by Joshi234
June 10, 20205 yr Howdy Probably your item model doesn't have "builtin/entity" as the parent type. (see the "Item" section of https://minecraft.gamepedia.com/Model)? If that doesn't work, I'd suggest trying some breakpoints in strategic locations, eg: - inside your lambda for supplying the ItemStackTileEntityRenderer - inside the render method of vanilla ItemStackTileEntityRenderer - inside ItemRenderer::renderItem(ItemStack itemStackIn ....) However - based on your screenshots it doesn't look like you need an ISTER to render the sword. You can just use a vanilla icon (item/generated) and set the "display" parameters correctly in your item -i.e. the rotation, scaling, translation. If your icon looks similar to the sword icon, then try copying the vanilla sword item display parameters into yours. -TGG
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.