Проблема с модификаторами

Версия Minecraft
1.7.10
Ребзя, помогите тупому)

Создал гуи
1546763091278.png

кнопки там вся херня...

Создал модификатор

Java:
public class AttributesHealth {

    private static UUID ID = UUID.fromString("9494dfce-bf74-11e8-a355-529269fb1450");
    public static void setExtraHealth(EntityPlayer player, float value) {
        IAttributeInstance attr = player.getEntityAttribute(SharedMonsterAttributes.maxHealth);
        AttributeModifier mod = attr.getModifier(ID);
        if (mod == null) {
            attr.applyModifier(new AttributeModifier(ID, "My extra health", value, 0).setSaved(true));
        }
        if (mod != null) {
            double amount = mod.getAmount();
            if (amount != value) {
                attr.removeModifier(mod);
                attr.applyModifier(new AttributeModifier(ID, "My extra health", value, 0).setSaved(true));
            }
        }
    }

    public static void removeExtraHealth(EntityPlayer player) {
        IAttributeInstance attr = player.getEntityAttribute(SharedMonsterAttributes.maxHealth);
        AttributeModifier mod = attr.getModifier(ID);
        if (mod != null) {
            attr.removeModifier(mod);
        }
    }
    
}


закинул модификатор в кнопку
Java:
protected void actionPerformed(GuiButton button) {
        switch (button.id) {
        case 0:
            AttributesHealth.setExtraHealth(player, 240);
            break;
        case 1:   
            AttributesHealth.removeExtraHealth(player);
            break;
        }

И все бы хорошо, только вот
1546763273995.png

Эти хп не рабочие.... Че делать то?
 
Решение
Нужно из Gui посылать пакеты на серверную сторону. Иначе жизни будут работать плохо, а на сервере и вовсе не будет работать, а на клиенте просто видимость прибавления, но не эффект его.

timaxa007

Модератор
5,831
409
672
Нужно из Gui посылать пакеты на серверную сторону. Иначе жизни будут работать плохо, а на сервере и вовсе не будет работать, а на клиенте просто видимость прибавления, но не эффект его.
 
Нужно из Gui посылать пакеты на серверную сторону. Иначе жизни будут работать плохо, а на сервере и вовсе не будет работать, а на клиенте просто видимость прибавления, но не эффект его.

Пакеты заместо модификатора? или так же оставить созданый модификатор и дальше пакеты то что хп изменились?
 

timaxa007

Модератор
5,831
409
672
У тебя в методе actionPerformed есть два действия (две кнопки). Заместо них отсылаешь на сервер пакет. В обработке пакета проверяешь что за пакет пришёл. Если пришел от первого действия, то выполняешь AttributesHealth.setExtraHealth(player, 240);, если от второго, то AttributesHealth.removeExtraHealth(player);.
 
7,099
324
1,510
Да не нужно это ничего. Просто сделай гуи с контейнером, контейнер - это сервер-сайд и у него есть метод enchantItem, который аналогичен actionPerformed, но для серверной стороны. Просто перемести код в него(чекать кнопку придется по id)
 

tox1cozZ

aka Agravaine
8,456
598
2,893
Да не нужно это ничего. Просто сделай гуи с контейнером, контейнер - это сервер-сайд и у него есть метод enchantItem, который аналогичен actionPerformed, но для серверной стороны. Просто перемести код в него(чекать кнопку придется по id)
В принципе в данном случае это прокатит, но туда ведь свои данные из гуи не запихнешь)
 
7,099
324
1,510
Они ведь изменяются от нажатий кнопок? Тогда можно их вычислять на сервере
 
Сверху