Иконка вместо еды 1.6.2

Статус
В этой теме нельзя размещать новые ответы.
Всем привет, тут возник вопрос, как сделать вместо полоски еды, иконку которая будет отражаться на экране и менять цвет от зелёного до красного, думал, пытался что-то сделать, но ничего не получилось. Друг мне сказал что в клиенте проекта сталкера в minecraft есть что-то подобно, я конечно понимаю что воровать нехорошо, но всё таки декомпилировал их мод, нашёл иконки, нашёл некоторые файлы которые могут относиться к этому. Но до конца всё равно не допёр. Код который я нашёл был таким: 
Код:
 public void renderFood(int width, int height) {
      if(!this.pre(ElementType.FOOD)) {
         this.d.J.a("food");
         int left = width / 2 + 200;
         if(FormatKey.format == 0) {
            left = width / 2 + 200;
         } else if(FormatKey.format == 1) {
            left = width / 2 + 100;
         } else if(FormatKey.format == 2) {
            left = width / 2 + 0;
         } else {
            left = width / 2 + 200;
         }

         int top = height - 120;
         boolean unused = false;
         ti stats = this.d.g.cl();
         int level = stats.a();
         int levelLast = stats.b();
         GL11.glEnable(3042);
         GL11.glBlendFunc(770, 771);
         if(level <= 15) {
            this.d.p.b("/mods/gui/food.png");
            this.b(left, top, 0, 0, 64, 64);
         }

         if(level <= 10) {
            this.d.p.b("/mods/gui/food.png");
            this.b(left, top, 64, 0, 64, 64);
         }

         if(level <= 6) {
            this.d.p.b("/mods/gui/food.png");
            this.b(left, top, 128, 0, 64, 64);
         }

         GL11.glDisable(3042);
         this.d.J.b();
         this.post(ElementType.FOOD);
      }
   }

Понял только то что тут есть подключение к текстуре, он говорит о расположение значка на текстуре и данный код вносит ещё какое-то изменение (точно не знаю) В общем, как примерно осуществить иконку вместо полоски еды, расскажите пожалуйста как это сделать (в основном)? Спасибо большое
[merge_posts_bbcode]Добавлено: 06.08.2014 15:40:10[/merge_posts_bbcode]

Подниму тему заново
 
HanteR12372 написал(а):
Код:
         if(level <= 15) {
            this.d.p.b("/mods/gui/food.png");
            this.b(left, top, 0, 0, 64, 64);
         }

         if(level <= 10) {
            this.d.p.b("/mods/gui/food.png");
            this.b(left, top, 64, 0, 64, 64);
         }

         if(level <= 6) {
            this.d.p.b("/mods/gui/food.png");
            this.b(left, top, 128, 0, 64, 64);
         }
Да ну нах, это максимум очевидные строки.
Ели еды меньше\равно 15, рисуем зеленую иконку (смещение по Х ноль), если меньше\равно 10 - желтую (смещение 64), 5 - красную (смещение 128). Цвет инонки меняют через смещение начальной точки текстуры в атласе по оси Х на 64 (длина иконки).
А вообще это кривой способ, почему не использовать glColor на белую иконку?
 
Там просто биндится текстура отновительно голода.
Голода достается Minecraft#thePlayer.getFoodStats().
Далее drawTextureModalRect.
 
[font=Verdana, Helvetica, Arial, sans-serif]Oldestkon, О, спасибо большое, почему-то сразу не заметил[/font]
[merge_posts_bbcode]Добавлено: 06.08.2014 16:15:51[/merge_posts_bbcode]

Majestic написал(а):
Там просто биндится текстура отновительно голода.
Голода достается Minecraft#thePlayer.getFoodStats().
Далее drawTextureModalRect.
Спасибо большое, теперь понял, скажу о результатах и тему закроем
 
Сииииимс :D
 
RaVeN_II написал(а):
index.php
 
Ох, ничего не работает, фигово... Эх, пофиг на мою затею, она подождёт лучших времён) Тему можно закрыть
 
Ивентами знаешь как пользоваться?
Пишешь такой метод:

Код:
@SubscribeEvent
    @SideOnly(Side.CLIENT)
    public void postRenderPlayerHealth(RenderGameOverlayEvent.Post event){
        if(event.type != ElementType.EXPERIENCE){
            return;
        }
        
        Minecraft mc = Minecraft.getMinecraft();
        EntityClientPlayerMP player = mc.thePlayer;

        int height = event.resolution.getScaledHeight();
        int width = event.resolution.getScaledWidth();

        mc.getTextureManager().bindTexture(new ResourceLocation(Esoteric.MOD_ID.toLowerCase(), "textures/gui/bar_icons.png")); //здесь ты биндишь свою текстуру

                mc.ingameGUI.drawTexturedModalRect(x, y, u, v, sizeX, sizeY); //здесь ты ее рисуешь
    }
 
Ещё вопрос, то кусочек кода который ты дал, он способен отображать различные вариации иконок, например при определённом значении иконка зелёная, ниже - иконка желтая, вообще маленькая - иконка красная?


Код:
         if(level <= 15) {
            this.d.p.b("/mods/gui/food.png");
            this.b(left, top, 0, 0, 64, 64);
         }

         if(level <= 10) {
            this.d.p.b("/mods/gui/food.png");
            this.b(left, top, 64, 0, 64, 64);
         }

         if(level <= 6) {
            this.d.p.b("/mods/gui/food.png");
            this.b(left, top, 128, 0, 64, 64);
         }
[merge_posts_bbcode]Добавлено: 08.08.2014 20:12:24[/merge_posts_bbcode]

Прости что дико туплю, просто всё что связанно с HUD я вообще не изучал, приходится спрашивать
 
Без проблема.
Но лучше юзать просто белую иконку и уже средствами LWJGL с ней химичить.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху