Положение рук

Мне нужно чтобы руки при держании оружия были в другом положении.
Но не только от третьего лица, а еще и от первого.
[merge_posts_bbcode]Добавлено: 23.11.2014 15:52:48[/merge_posts_bbcode]

Версия 1.6.4
 
Я тут по форуму полазил, нашел статью по ивентам.
Но вот я не допер, как сделать именно чтобы руки поднимались.
Я видел код где то там использовался aiming ну или как то так.
Может кто подсказать как именно это делается.
Или просто как через ивент изменять модель игрока.
 
Я вот это видел 
Код:
    if (i != 0 && itemstack != null)
    {
    if (i == mod_mod.ItemLOOOOL.shiftedIndex)
    {
    modelArmorChestplate.aimedBow = modelArmor.aimedBow = ModelBiped.aimedBow = true;
    }
Но это старый код.
Не подскажете как его в ивент впихнуть?
Я попробовал вот так
Код:
@Subscribe
public void ghh(RenderPlayerEvent ev) {
    if (i != 0 && itemstack != null)
    {
    if (i == mod_mod.ItemLOOOOL.shiftedIndex)
    {
    modelArmorChestplate.aimedBow = modelArmor.aimedBow = ModelBiped.aimedBow = true;
    }
    }
}
но куча ошибок
и еще
йа не панимаю как эта работаит, памагитя мне гатовым кодам пажалуста
йа видь прашу вас
:lol:
 
Код:
if (i != 0 && itemstack != null)
    {
    if (i == mod_mod.ItemLOOOOL.shiftedIndex)
    {
    modelArmorChestplate.aimedBow = modelArmor.aimedBow = ModelBiped.aimedBow = true;
    }
    }

to
Код:
if (i != 0 && itemstack != null&&i == mod_mod.ItemLOOOOL.shiftedIndex)
    {
    modelArmorChestplate.aimedBow = modelArmor.aimedBow = ModelBiped.aimedBow = true;
    
    }
 
сиравно ни панимаю
все панимаю чито ви пишите а эта ни панимаю вабсче
куча ошибок я дурак...
 
Ах да, еще.
Куда писать этот ивент?
В рендер, или в сам предмет.
[merge_posts_bbcode]Добавлено: 23.11.2014 23:03:04[/merge_posts_bbcode]

Я на форуме нашел вот такой код
Код:
@SubscribeEvent
public void onRenderPlayer(RenderPlayerEvent.Pre event) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException
{
    if (!(event.entityPlayer.inventory.getCurrentItem() == null) && event.entityPlayer.inventory.getCurrentItem().getItem() == Items.apple)
    {
        java.lang.reflect.Field f = event.renderer.getClass().getDeclaredField("modelBipedMain");
        f.setAccessible(true);
        Object val = f.get(event.renderer);
        ModelBiped modelBipedMain = (ModelBiped)val;
        modelBipedMain.aimedBow = true;
    }
}

Но он на 1.7.2
Подредактил как говорил еклипс
получилось вот это
Код:
    @Subscribe
    public void onRenderPlayer(RenderPlayerEvent.Pre event) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException
    {
        if (!(event.entityPlayer.inventory.getCurrentItem() == null) && event.entityPlayer.inventory.getCurrentItem().getItem() == CcMod.testSniper)
        {
            java.lang.reflect.Field f = event.renderer.getClass().getDeclaredField("modelBipedMain");
            f.setAccessible(true);
            Object val = f.get(event.renderer);
            ModelBiped modelBipedMain = (ModelBiped)val;
            modelBipedMain.aimedBow = true;
        }
    }
Я его куда только не пихал.
И в глав класс пихал. 
И в сам предмет пихал.
И в рендер предмета пихал.
Не робит.
-----------------
Не могу сделать это вот и все.
Но это мне очень нужно.
Заранее благодарю.
 
Создай новый класс, в нем паблик метод с аннотацией forgesubcribe. В одном из инитов базового класса зарегистрируй ивент(MinecraftForge.Event_Bus.register(new MyCustomEventClass());)

Если бы ты просто внимательно прочитал статью о ивентах(как я понял, это статья анти), то ты бы сразу все понял.
 
OBJ model:
package megamod133737373712311;

import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.IItemRenderer;
import net.minecraftforge.client.IItemRenderer.ItemRenderType;
import net.minecraftforge.client.IItemRenderer.ItemRendererHelper;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;

import org.lwjgl.opengl.GL11;

public class RenderGun1 implements IItemRenderer {

private IModelCustom model;
private static Hand model1;

public RenderGun1(){
model=AdvancedModelLoader.loadModel("/assets/sscp/obj/gun2.obj");
model1 = new Hand();
}

@Override
public boolean handleRenderType(ItemStack is,ItemRenderType type){return true;}

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

@Override
public void renderItem(ItemRenderType type,ItemStack is,Object... data){
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
if(type == type.EQUIPPED_FIRST_PERSON){
GL11.glTranslatef(0.4F, 1.40F, -0.19F);
GL11.glRotatef(-180F, 0.0F, -10.0F, 1.0F);
GL11.glRotatef(46F, -4.0F, -20.0F, 1.0F);
GL11.glScaled(0.4D, 0.4D, 0.4D);

} else if (type == type.INVENTORY){
GL11.glScaled(0.3D, 0.3D, 0.3D);
} else {
GL11.glTranslatef(0.1F, 1.40F, 0.3F);
GL11.glRotatef(-180F, 0.0F, -10.0F, 1.0F);
GL11.glRotatef(45F, -5.0F, -20.0F, 1.0F);
GL11.glScaled(0.5D, 0.5D, 0.5D);
}

Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("sscp","textures/obj1/ak74.png"));
model.renderAll();
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();

if(type == type.EQUIPPED_FIRST_PERSON) {

GL11.glPushMatrix();
GL11.glTranslatef(0.7F, 1.29F, -0.6F);
GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(-135F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(90F, 1.0F, 0.0F, 0.0F);
GL11.glTranslatef(-0.35F, -2.15F, -0.2F);
GL11.glScaled(1.3D, 1.0D, 1.0D);
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("textures/entity/steve.png"));
model1.render_left();
GL11.glPopMatrix();

GL11.glPushMatrix();
GL11.glTranslatef(0.5F, 1.4F, 0.6F);
GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(-100F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(90F, 1.0F, 0.0F, 0.0F);
GL11.glTranslatef(-0.35F, -2.3F, -0.2F);
GL11.glScaled(1.3D, 3.2D, 1.3D);
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("textures/entity/steve.png"));
model1.render_right();
GL11.glPopMatrix();

}
}
}
 
Evgeniy написал(а):
Создай новый класс, в нем паблик метод с аннотацией forgesubcribe. В одном из инитов базового класса зарегистрируй ивент(MinecraftForge.Event_Bus.register(new MyCustomEventClass());)

Если бы ты просто внимательно прочитал статью о ивентах(как я понял, это статья анти), то ты бы сразу все понял.
Да я читал его статью, и очень невнимательно я знаю что надо регистрировать ивент.
Но постоянно забывал это сделать.
[merge_posts_bbcode]Добавлено: 24.11.2014 19:32:10[/merge_posts_bbcode]

Спасибо всем, тема закрыта.
Пошел дальше читать про ивенты..
 
Назад
Сверху