При дамаге рендер

Версия Minecraft
1.7.10
929
30
66
Всем привет.
Как можно рендрить картинку если наносишь урон?
 
Решение
Если я правильно понял, то (у меня место картинки текст):
В главном классе добавить или типа добавить в Client Proxy:
Java:
   @SideOnly(Side.CLIENT)
   @Mod.EventHandler
    public void preInitClient(FMLPreInitializationEvent event) {
        EventsClient e = new EventsClient();
        MinecraftForge.EVENT_BUS.register(e);
        FMLCommonHandler.instance().bus().register(e);
    }
Эвенты:
Java:
@SideOnly(Side.CLIENT)
public class EventsClient {

    static final Minecraft mc = Minecraft.getMinecraft();
    static int renderTick = -1;
    static float damage = 0F;

    @SubscribeEvent
    public void tickClient(TickEvent.ClientTickEvent event) {
        if (renderTick > 0) --renderTick;
    }

    @SubscribeEvent
    public void...
5,018
47
783
хм. ну да. Поищи в игроке что то типо isDamage
Если не найдешь ... то тут я вижу только костыль - проверять каждый тик здоровье, если оно уменьшается, рендерить картинку
 

timaxa007

Модератор
5,831
409
672
Если я правильно понял, то (у меня место картинки текст):
В главном классе добавить или типа добавить в Client Proxy:
Java:
   @SideOnly(Side.CLIENT)
   @Mod.EventHandler
    public void preInitClient(FMLPreInitializationEvent event) {
        EventsClient e = new EventsClient();
        MinecraftForge.EVENT_BUS.register(e);
        FMLCommonHandler.instance().bus().register(e);
    }
Эвенты:
Java:
@SideOnly(Side.CLIENT)
public class EventsClient {

    static final Minecraft mc = Minecraft.getMinecraft();
    static int renderTick = -1;
    static float damage = 0F;

    @SubscribeEvent
    public void tickClient(TickEvent.ClientTickEvent event) {
        if (renderTick > 0) --renderTick;
    }

    @SubscribeEvent
    public void damage(LivingHurtEvent event) {
        Entity from = event.source.getSourceOfDamage();//Кто наносит урон.
        EntityLivingBase to = event.entityLiving;//Кому наносят урон.
        if (from instanceof EntityPlayer) {
            damage = event.ammount;
            renderTick = 20 * 3;
        }
    }

    @SubscribeEvent
    public void drawText(RenderGameOverlayEvent.Post event) {
        if (renderTick <= 0) return;
        String dmg = Float.toString(damage);
        switch(event.type) {
        case TEXT:
            mc.fontRenderer.drawStringWithShadow(dmg,
                    (event.resolution.getScaledWidth() - mc.fontRenderer.getStringWidth(dmg)) / 2,
                    (event.resolution.getScaledHeight() - 10) / 2,
                    0xFFFFFF);
            break;
        default:break;
        }
    }

}
 
Сверху