Изменить дизайн кнопки по клику

Версия Minecraft
1.6.4
Здравствуйте! Хочу изменить дизайн кнопки по такому принципу: игрок кликнул- кнопка стала зеленой, игрок кликнул еще раз- кнопка стала обычной и так циклично.
Исходя из этого создал свой класс кнопки наследник GuiButton, и создал там переменную green, при клике делаю ее значение = !green. В классе кнопки во время ее прорисовки смотрю на значение этой переменной и если она true делаю bindTexture с зеленой кнопкой.
Однако почему-то кнопка не меняет свой цвет. Пытался делать прорисовку чисто зеленой кнопки без if'а- все отлично работает. Видимо, какая-то проблема со сменой дизайна кнопки во время процесса прорисовки.
Вот код:
Код ниже bindTexture я взял с метода drawButton класса GuiButton
Код:
public class PlayerButton extends GuiButton {
    private boolean isGreen = false;

    public PlayerButton(int par1, int par2, int par3, int par4, int par5, String par6Str) {
        super(par1, par2, par3, par4, par5, par6Str);
    }

    public boolean isGreen() {
        return isGreen;
    }

    public void setGreen(boolean green) {
        isGreen = green;
    }

    @Override
    public void drawButton(Minecraft par1Minecraft, int par2, int par3)
    {
        if (this.drawButton)
        {

            FontRenderer fontrenderer = par1Minecraft.fontRenderer;

            if (isGreen) {
                par1Minecraft.getTextureManager().bindTexture(new ResourceLocation("raids:textures/gui/mybutton.png"));
            } else {
                par1Minecraft.getTextureManager().bindTexture(buttonTextures);
            }

            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
            this.field_82253_i = par2 >= this.xPosition && par3 >= this.yPosition && par2 < this.xPosition + this.width && par3 < this.yPosition + this.height;
            int k = this.getHoverState(this.field_82253_i);
            this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, 46 + k * 20, this.width / 2, this.height);
            this.drawTexturedModalRect(this.xPosition + this.width / 2, this.yPosition, 200 - this.width / 2, 46 + k * 20, this.width / 2, this.height);
            this.mouseDragged(par1Minecraft, par2, par3);
            int l = 14737632;

            if (!this.enabled)
            {
                l = -6250336;
            }
            else if (this.field_82253_i)
            {
                l = 16777120;
            }

            this.drawCenteredString(fontrenderer, this.displayString, this.xPosition + this.width / 2, this.yPosition + (this.height - 8) / 2, l);
        }
    }
}
 
250
12
24
Попробуй объявить(и загрузить соответсвенно) свою текстуру заранее.
Т.е. в начале класса объяви ResourceLocation и присвой ей путь до текстуры, а потом просто вызывай переменную.
 
2,505
81
397
RinKirin написал(а):
Попробуй объявить(и загрузить соответсвенно) свою текстуру заранее.
Т.е. в начале класса объяви ResourceLocation и присвой ей путь до текстуры, а потом просто вызывай переменную.
Это ничего не изменит?

Дебажить пробовал? Ты уверен, что нажимаешь на кнопку? В методе drawButton выведи в консоль isGreen, если не умеешь нормально дебажить.
 
Dahaka написал(а):
RinKirin написал(а):
Попробуй объявить(и загрузить соответсвенно) свою текстуру заранее.
Т.е. в начале класса объяви ResourceLocation и присвой ей путь до текстуры, а потом просто вызывай переменную.
Это ничего не изменит?

Дебажить пробовал? Ты уверен, что нажимаешь на кнопку? В методе drawButton выведи в консоль isGreen, если не умеешь нормально дебажить.
Пробовал. 
Кнопка нажимается, как надо.
 
RinKirin написал(а):
Dahaka написал(а):
Это ничего не изменит?

Мне кажется что оно не загружает просто текстуру. Но не вылетает, а просто игнорирует.

А, нет, ошибка не в текстуре. Только что вставил дебаг, который вы предложили(раньше был просто вывод рандомного текста в консоль), то есть вывод в консоль isGreen. После нажатия на одну и ту же кнопку НЕСКОЛЬКО РАЗ постоянно выводит false, если изначальное значение true. Хотя после нажатия я меняю значение этой переменной. Может с кодом смены что-то не так?
Код:
@Override
    protected void actionPerformed(GuiButton guibutton) {
          PlayerButton pb = (PlayerButton)guibutton;
          pb.setGreen(!pb.isGreen());
          System.out.println(pb.isGreen());
    }


Все, окончательно понял, где ошибка. Всем спасибо за помощь!
 
Сверху