Серверные траблы

Версия Minecraft
1.12.1
API
Forge

sk9zist :l

Исправился
981
18
157
Привет и с Рождеством))
У меня к тебе несколько вопросов:
1. [РЕШЕНО] Известно что есть два эвента: LivingAttackEvent и LivingHurtEvent, но как выяснилось когда мод находиться на удаленном сервере - эти эвенты одинаковые. Если запускать в одиночке, конечно, то:
LivingAttackEvent - если его отменить то со стороны игрока ни будет вообще никакого отклика при его ударе. Он будет просто стоять
LivingHurtEvent - если его отменить то игрок только станет красным, может ещё подёргаеться но с места по прежнему не сдвинеться.
Так вот на сервере эти два эвента полностью сочетаются в один LivingHurtEvent (пробовал оба, всё равно игрок не краснеет при ударе если отменить эвент)
UPD: пробовал performHurtAnimation() (вроде должно проигрывать эту самую анимацию) но не работает также. Как использовать эвент, чтобы при отмене эвента - при ударе по игроку он покраснел и отбросился? Как при обычном ударе но без урона

2. [РЕШЕНО] В эвенте PlayerInteractEvent.LeftClickBlock c проверкой if(!e.getWorld().isRemote) создаю взрыв - итог: взрыва нету, блок сломался.
Как починить взрыв?

Эвент PlayerInteractEvent.LeftClickBlock походу был каким-то там клиентским, поэтому на сервере он не вызывался как-то. Заменил на BlockEvent.BreakEvent и отменил эвент - всё заработало.

3. [РЕШЕНО] Как на сервере отнимать здоровье у энтити? Пробовал attackEntityFrom но на сервере оно не работает

4. [РЕШЕНО] как устанавливать итему описание в зависимости от локализации? есть такой код:
Java:
if(FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT ? Minecraft.getMinecraft().getLanguageManager().getCurrentLanguage().getLanguageCode().toString() == "en_us" : true)
        {
            list.add("1");
        }
        if(FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT ? Minecraft.getMinecraft().getLanguageManager().getCurrentLanguage().getLanguageCode().toString() == "ru_ru" : false)
        {
            list.add("2");
        }
как видно из кода, даже если getEffectiveSide не равно клиенту - то всё равно должно добавляться английское описание. Но оно не добавляеться, под предметом ничего не написано. И, где вообще есть метод addInformation? Его нет ни на сервере, ни на клиенте
 
Последнее редактирование:

sk9zist :l

Исправился
981
18
157
2. выкини тогда проверку мира
Уже выкинул. Игра с ним не запускаеться.
1. у инстанса фмл используй getSide#isClient.
Спасибо, всё хорошо. Теперь английское описание есть. Но русского нет:
Java:
if(FMLCommonHandler.instance().getSide().isClient())
{
    if(Minecraft.getMinecraft().getLanguageManager().getCurrentLanguage().getLanguageCode().toString() == "ru_ru")
    {
        list.add("руссиан дескриптион");
    } else {
        list.add("english description");
    }
} else { // someone else
   
}
 

will0376

Токсичная личность
2,070
55
582
if(Minecraft.getMinecraft().getLanguageManager().getCurrentLanguage().getLanguageCode().toString() == "ru_ru")
отдебажь брекпоинтом.
СТОП. ты там что, в notepad'е говнокодишь? в жабе строки через equals сравниваются.
 

sk9zist :l

Исправился
981
18
157

sk9zist :l

Исправился
981
18
157

will0376

Токсичная личность
2,070
55
582

sk9zist :l

Исправился
981
18
157
Я читал, что Ctrl+F8 нужно. А оказываеться всё проще. А на какую строку надо поставить?
 

will0376

Токсичная личность
2,070
55
582

sk9zist :l

Исправился
981
18
157
А, тоесть мой вариант вообще не работал никак?) Ну тоесть там всегда было не равно. Я просто выводил Minecraft.getMinecraft().getLanguageManager().getCurrentLanguage().getLanguageCode().toString() и там было en_ru или ru_ru так что я сделал == "ru_ru".

А ты что за среду юзаешь?
screenshot.150.jpg

Спасибо всем. Вот готовый код:
Java:
@Override
    public void addInformation(ItemStack itemstack, World world, List<String> list, ITooltipFlag flag)
    {
        if(FMLCommonHandler.instance().getSide().isClient())
        {
            if(Minecraft.getMinecraft().getLanguageManager().getCurrentLanguage().getLanguageCode().equals("ru_ru"))
            {
                list.add("русский");
            } else {
                list.add("english");
            }
        } else { // someone else
            list.add("english");
        }
    }
 
Последнее редактирование:
Сверху