Как увеличить размер меча

Как можно увеличить размер готового меча в Minecraft чтобы он выглядел больше?
 
Ловить событие рендера меча и перед самим рендером:
Код:
glScalef(scaleX, scaleY, scaleZ);
Если по какой-то оси размер должен быть неизменным - ставишь 1.
 
Ну мне надо в моде увеличить меч, как написать правильно чтобы он увеличился и где?
 
Dyadenka написал(а):
public static final glScalef(scale1, scale2, scale3);   ?
Ммм? Ты хочешь переопределить нативный метод openGL?
Я тебе дал метод из LWJGL, который применяет матрицу скейла на текущую, воздействуя на обьекты, которые будут рендериться дальше. Его не надо переопределять, лел.

Тебе надо вызывать этот метод из события .Pre рендера для предмета. А вот какое событие именно надо ловить спроси у кого-нибудь другого, у меня под рукой пусто.
 
Вот готовый рендер.

Код:
public class RenderBigItem implements IItemRenderer
{
    private final float scale;

    public RenderBigItem(float scale) {
        this.scale = scale;
    }

    @Override
    public boolean handleRenderType(ItemStack item, ItemRenderType type) {
        return type == ItemRenderType.EQUIPPED || type == ItemRenderType.EQUIPPED_FIRST_PERSON;
    }

    @Override
    public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
        return false;
    }

    @Override
    public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
        switch (type){
        case EQUIPPED_FIRST_PERSON:
            renderEquippedItem(item, (EntityLivingBase) data[1], true);
            break;
        case EQUIPPED:
            renderEquippedItem(item, (EntityLivingBase) data[1], false);
            break;
        default:
        }
    }

    private void renderEquippedItem(ItemStack stack, EntityLivingBase entity, boolean firstPerson) {
        GL11.glPushMatrix();
        float f = scale;
        if (firstPerson) {
            f *= 1.75F;
            GL11.glTranslatef(-0.35F * scale, -0.125F * scale, 0.0F);
        } else {
            f *= (entity instanceof EntityPlayer ? 2.0F : 1.75F);
            GL11.glTranslatef(1.0F - f, -0.125F * scale, 0.05F * scale);
        }
        GL11.glScalef(f, f, f);
        Icon icon = stack.getItem().getIcon(stack, 0);
        Tessellator tessellator = Tessellator.instance;
        ItemRenderer.renderItemIn2D(tessellator, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 0.0625F);
        GL11.glPopMatrix();
    }
}

В конструктор передавай размер.
И регаешь в клиент прокси:

Код:
MinecraftForgeClient.registerItemRenderer(Твой_предмет, new RenderBigItem(размер));
 
Oldestkon написал(а):
Dyadenka написал(а):
public static final glScalef(scale1, scale2, scale3);   ?
Ммм? Ты хочешь переопределить нативный метод openGL?
Я тебе дал метод из LWJGL, который применяет матрицу скейла на текущую, воздействуя на обьекты, которые будут рендериться дальше. Его не надо переопределять, лел.

Тебе надо вызывать этот метод из события .Pre рендера для предмета. А вот какое событие именно надо ловить спроси у кого-нибудь другого, у меня под рукой пусто.
Не все же в этом так разбираются.
 
Назад
Сверху