Jump to content

Let sword in forge 1.15.2 render as sword not as item


Joshi234

Recommended Posts

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?

Link to comment
Share on other sites

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 :)

Link to comment
Share on other sites

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();
    }
}

 

Screenshot_9.png

Link to comment
Share on other sites

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:

Screenshot_9.png

Screenshot_10.png.e172e1db2ebe095350f31a3075f6678d.png

        ^

Right |

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by Joshi234
Link to comment
Share on other sites

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 by Ugdhar
Link to comment
Share on other sites

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

 

  • Like 1
Link to comment
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.
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



×
×
  • Create New...

Important Information

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