Ошибка, клиентский метод...

svk

1,185
3
Код:
package com.svk.kitpvp.Event;

import com.svk.kitpvp.CommonProxy;
import com.svk.kitpvp.Skills.TemporarilyInvulnerable;
import com.svk.kitpvp.item.Shields;

import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityTNTPrimed;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EntityDamageSource;
import net.minecraft.world.World;
import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.event.entity.living.LivingHurtEvent;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;

public class Shield 
{
    @SubscribeEvent
    public void onShields(LivingHurtEvent e) 
    {
        Entity to = e.entityLiving;
        World world = e.entityLiving.worldObj;
        if(!world.isRemote)
        {
            if (to instanceof EntityPlayer && e.source instanceof EntityDamageSource) 
            {
                    EntityPlayer player = (EntityPlayer)to;
                    EntityDamageSource dmgSource = (EntityDamageSource)e.source;
                    ItemStack current_to = player.getCurrentEquippedItem();

                    if (current_to != null) 
                    {
                        if (current_to.getItem() instanceof Shields && player.getItemInUseDuration() > 0 && dmgSource instanceof EntityDamageSource) 
                        {
                            if(current_to.getItem() == CommonProxy.ParadiseShield)
                            {
                                player.heal(1);
                            }
                            if(current_to.getItem() == CommonProxy.ThornsShield)
                            {
                                e.source.getEntity().attackEntityFrom(dmgSource, 1);
                            }
                            e.ammount = 0;
                            current_to.damageItem(((Shields)current_to.getItem()).getDamage(), player);
                            e.setCanceled(true);
                        }
                    }
            }
        }
    }
}
Ошибка на строке 36 if (current_to.getItem() instanceof Shields && player.getItemInUseDuration() > 0 && dmgSource instanceof EntityDamageSource) 

Либо первый, либо 2 аргумент...
Я так полагаю что это? "ItemStack current_to = player.getCurrentEquippedItem();" Есть серверная альтернатива?
 
Ошибка, клиентский метод...
Не понятно... [Не краш-лога и в каком смысле он клиентский.]

Код:
dmgSource instanceof EntityDamageSource
У тебя уже есть на это проверка
Код:
e.source instanceof EntityDamageSource
И это надо ставить в (самом) начале этого метода, если потом, то да краш будет (не помню из-за чего точно).

Код:
CommonProxy.ParadiseShield
Код:
CommonProxy.ThornsShield
Ты уверен в этом? Ну ладно, твоё дело.
 
timaxa007 написал(а):
Ошибка, клиентский метод...
Не понятно... [Не краш-лога и в каком смысле он клиентский.]

Код:
dmgSource instanceof EntityDamageSource
У тебя уже есть на это проверка
Код:
e.source instanceof EntityDamageSource
И это надо ставить в (самом) начале этого метода, если потом, то да краш будет (не помню из-за чего точно).

Код:
CommonProxy.ParadiseShield
Код:
CommonProxy.ThornsShield
Ты уверен в этом? Ну ладно, твоё дело.
Говорю что краш, на сервере, из-за того что ищет клиентский метод, 36 строка, я её привел.
[merge_posts_bbcode]Добавлено: 30.01.2015 21:59:31[/merge_posts_bbcode]

А, да, 2 раз случайно "пофиксил" ^_^
Спасибо.
 
Да, типа забыл посмотреть на его сторону...
Код:
player.getItemInUseDuration() > 0
Вроде можно заменить на:
Код:
player.isUsingItem()
[merge_posts_bbcode]Добавлено: 31.01.2015 00:24:38[/merge_posts_bbcode]

У меня по-крайней мере работает (на сервере не проверял).
 
Назад
Сверху