onPlayerStoppedUsing

Объясните мне, дураку, как пользоваться вышеуказанным методом (public void onPlayerStoppedUsing(ItemStack is, World w,EntityPlayer ep, int i)). Мне нужно чтобы когда узер перестаёт пользоваться предметом энтити ремувился.

Код:
public class ItemLazerGun 
        extends Item {
    
    public float scale = 0.0F;
    
    private boolean flag = false;
    
    
    
    public ItemLazerGun() {
        this.setCreativeTab(CreativeTabs.tabBlock);
    }
    
    
    
    @Override
    public boolean onItemUse(ItemStack is, EntityPlayer ep,
                                World w, int x, int y, int z,
                                int meta, float hitX, float hitY,
                                float hitZ) {
        
    if(!flag){
            
            Ray r = new Ray(w,ep);
            w.spawnEntityInWorld(r);
        }
        
        flag = true;
        
        return true;
    }
    
    @Override
    public void onPlayerStoppedUsing(ItemStack is, World w,
            EntityPlayer ep, int i) {
        super.onPlayerStoppedUsing(is, w, ep, i);
        flag = false;
        Ray r = new Ray(w,ep);
        w.removeEntity(r);
        
        
    }
    
    

    
    
    
    public float getScale(){
        return scale;
    }
    

}
 
Флаг надо писать в нбт и читать оттуда, а не в предмете создавать.
 
Исправленный кривокод:
Код:
public class ItemLazerGun 
        extends Item {
    
    
    
    
    
    public NBTTagCompound ilgun = new NBTTagCompound();
    
    
    
    public ItemLazerGun() {
        this.setCreativeTab(CreativeTabs.tabBlock);
        
        ilgun.setBoolean("flagIGun", false);
    }
    
    
    
    @Override
    public boolean onItemUse(ItemStack is, EntityPlayer ep,
                                World w, int x, int y, int z,
                                int meta, float hitX, float hitY,
                                float hitZ) {
        
    if(!ilgun.getBoolean("flagIGun")){
            
            Ray r = new Ray(w,ep);
            w.spawnEntityInWorld(r);
        }
        
        ilgun.setBoolean("flagIGun", true);;
        
        return true;
    }
    
    
    
    @Override
    public void onPlayerStoppedUsing(ItemStack is, World w,
            EntityPlayer ep, int i) {
        super.onPlayerStoppedUsing(is, w, ep, i);
        ilgun.setBoolean("flagIGun", false);
        Ray r = new Ray(w,ep);
        w.removeEntity(r);
        
        
    }

}
Всё равно не то.. энтитя спавнится, а вот исчезать после отпускания ПКМ не хочет!
 
public void onPlayerStoppedUsing(ItemStack itemstack, World world, EntityPlayer entityplayer, int i)
    {
        boolean flag = entityplayer.capabilities.isCreativeMode;

        if (itemstack.getItemDamage() < 7)
        {
            int j = getMaxItemUseDuration(itemstack) - i;
            float f = 1.0F;
            EnityBul entitybullet = new EnityBul(world, entityplayer, 8);
            world.playSoundAtEntity(entityplayer, "rifleshoot", 1.0F, 1.0F);
            itemstack.damageItem(1, entityplayer);
            f = (f * f + f * 2.0F) / 7F;
            if (!world.isRemote)
            {
                world.spawnEntityInWorld(entitybullet);
            }
        }
На тебе супер-кривокод.
 
И как же это должно мне помочь? В том то и дело, что куб спавнится, но исчезать после категорически отказывается!
 
Потому-что ты лол. Ты создаёшь новое ентити, и потом его ремовишь. FacePalm.
Код:
Ray r = new Ray(w,ep);
        w.removeEntity(r);

Исправить - хз как, ведь надо записать ентити в переменную, и будет это для всех итемов (Записано будет самое последнее созданное ентити)
[merge_posts_bbcode]Добавлено: 22.02.2015 12:35:44[/merge_posts_bbcode]

Если ты делаешь огнестрельное оружие - могу помоч, оно тяжело делается.
Пиши скайп*
 
Да сказали уже решение - записывай сущность в НБТ предмета. НБТ уникален для каждого инстанса.
А лучше записывай ID сущности. И памяти сожрет меньше, и эффект тот же, и синхронизировать можно.
 
Oldestkon написал(а):
Да сказали уже решение - записывай сущность в НБТ предмета. НБТ уникален для каждого инстанса.
А лучше записывай ID сущности. И памяти сожрет меньше, и эффект тот же, и синхронизировать можно.
В НБТ можно и сущность записать? Ничё себе.
А как получить ID сущности, а потом получить её по ID?
 
Назад
Сверху