Дроп предмета из активного слота

Версия Minecraft
1.7.10
1,007
36
206
Нужно чтобы игрок/моб дропал активный предмет когда например на него наложен эффект(ванильный) или когда на нём использовали предмет(в моём случае электрошокер)
 
Решение
Код:
protected void onImpact(MovingObjectPosition par1MovingObjectPosition) {
if (!this.worldObj.isRemote) {
if (par1MovingObjectPosition.typeOfHit == MovingObjectType.ENTITY) {

if (par1MovingObjectPosition.entityHit instanceof EntityPlayer) {
if (((EntityPlayer)par1MovingObjectPosition.entityHit).capabilities.isCreativeMode)
return;
}

if (par1MovingObjectPosition.entityHit instanceof EntityLivingBase) { 
EntityLivingBase entity = (EntityLivingBase)par1MovingObjectPosition.entityHit;

entity.attackEntityFrom(DamageSource.generic, 1F);
entity.addPotionEffect(new PotionEffect(Potion.weakness.id, 500, 2));
entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 500, 2));
entity.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id...

timaxa007

Модератор
5,831
409
672
Код:
//EntityLiving entity;
ItemStack is = entity.getHeldItem();
EntityItem ei = new EntityItem(entity.worldObj, entity.posX, entity.posY, entity.posZ, is.copy());
ei.delayBeforeCanPickup = 60;
entity.worldObj.spawnEntityInWorld(ei);
entity.setCurrentItemOrArmor(0, null);
 
1,007
36
206
Код:
protected void onImpact(MovingObjectPosition par1MovingObjectPosition)
 {
 if(!this.worldObj.isRemote)
 {
 if(par1MovingObjectPosition.typeOfHit == MovingObjectType.ENTITY)
 {
 if(par1MovingObjectPosition.entityHit instanceof EntityPlayer)
 {
 if(((EntityPlayer)par1MovingObjectPosition.entityHit).capabilities.isCreativeMode)
 return;
 }

 if(par1MovingObjectPosition.entityHit instanceof EntityLivingBase)
 { 
 
 ((EntityLivingBase) par1MovingObjectPosition.entityHit).attackEntityFrom(DamageSource.generic, 1F);
 ((EntityLivingBase) par1MovingObjectPosition.entityHit).addPotionEffect(new PotionEffect(Potion.weakness.id, 500, 2));
 ((EntityLivingBase) par1MovingObjectPosition.entityHit).addPotionEffect(new PotionEffect(Potion.confusion.id, 500, 2));
 ((EntityLivingBase) par1MovingObjectPosition.entityHit).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 500, 2));
 this.setDead();
 }
 
 
 }
 }
 }
 }
А как это в данном случае использовать?
 

timaxa007

Модератор
5,831
409
672
Код:
protected void onImpact(MovingObjectPosition par1MovingObjectPosition) {
if (!this.worldObj.isRemote) {
if (par1MovingObjectPosition.typeOfHit == MovingObjectType.ENTITY) {

if (par1MovingObjectPosition.entityHit instanceof EntityPlayer) {
if (((EntityPlayer)par1MovingObjectPosition.entityHit).capabilities.isCreativeMode)
return;
}

if (par1MovingObjectPosition.entityHit instanceof EntityLivingBase) { 
EntityLivingBase entity = (EntityLivingBase)par1MovingObjectPosition.entityHit;

entity.attackEntityFrom(DamageSource.generic, 1F);
entity.addPotionEffect(new PotionEffect(Potion.weakness.id, 500, 2));
entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 500, 2));
entity.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 500, 2));
//
ItemStack is = entity.getHeldItem();
EntityItem ei = new EntityItem(entity.worldObj, entity.posX, entity.posY, entity.posZ, is.copy());
ei.delayBeforeCanPickup = 60;
entity.worldObj.spawnEntityInWorld(ei);
entity.setCurrentItemOrArmor(0, null);
//
this.setDead();
}

}
}
}
Что-то типа этого.
 
Сверху