下面列出了org.bukkit.entity.ComplexEntityPart#net.minecraft.entity.MultiPartEntityPart 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void onPlayerStoppedUsing(ItemStack stack, World worldIn, EntityLivingBase entityLiving, int timeLeft) {
EnumHand hand = entityLiving.getActiveHand();
//big sweep!!!
entityLiving.swingArm(hand);
float f = (float) entityLiving.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).getAttributeValue();
f += EnchantmentHelper.getModifierForCreature(stack, entityLiving.getCreatureAttribute()) / 1.2F;
float f3 = 4.0F + EnchantmentHelper.getSweepingDamageRatio(entityLiving) * f;
float sweepingRatio = 1f+EnchantmentHelper.getSweepingDamageRatio(entityLiving);
for (Entity entitylivingbase : worldIn.getEntitiesWithinAABB(Entity.class, entityLiving.getEntityBoundingBox().grow(1.4D + sweepingRatio * 1.2D, 0.3D + sweepingRatio * 0.15D, 1.4D + sweepingRatio * 1.2D))) {
if (entitylivingbase != entityLiving && !entityLiving.isOnSameTeam(entitylivingbase)) {
if (entitylivingbase instanceof EntityLivingBase) {
if (entitylivingbase instanceof EntityPlayer && ((EntityPlayer) entitylivingbase).isActiveItemStackBlocking()) {
//disable shield
((EntityPlayer) entitylivingbase).disableShield(false);
}
((EntityLivingBase) entitylivingbase).knockBack(entityLiving, 0.4F + 0.4F * EnchantmentHelper.getSweepingDamageRatio(entityLiving), MathHelper.sin(entityLiving.rotationYaw * 0.017453292F), (-MathHelper.cos(entityLiving.rotationYaw * 0.017453292F)));
entitylivingbase.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer) entityLiving), f3);
}
if (entitylivingbase instanceof MultiPartEntityPart) {
entitylivingbase.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer) entityLiving), f3);
}
}
}
worldIn.playSound(null, entityLiving.posX, entityLiving.posY, entityLiving.posZ, SoundEvents.ENTITY_PLAYER_ATTACK_SWEEP, entityLiving.getSoundCategory(), 1.0F, 1.0F);
if (worldIn instanceof WorldServer) {
double d0 = (-MathHelper.sin(entityLiving.rotationYaw * 0.017453292F));
double d1 = MathHelper.cos(entityLiving.rotationYaw * 0.017453292F);
((WorldServer) worldIn).spawnParticle(EnumParticleTypes.SWEEP_ATTACK, entityLiving.posX + d0, entityLiving.posY + entityLiving.height * 0.5D, entityLiving.posZ + d1, 0, d0, 0.0D, d1, 0.0D);
}
dropHand(entityLiving, hand, setKatana(stack));
((EntityPlayer) entityLiving).getCooldownTracker().setCooldown(katana, 15);
}
@Override
public void onPlayerStoppedUsing(ItemStack stack, World worldIn, EntityLivingBase entityLiving, int timeLeft) {
int i = this.getMaxItemUseDuration(stack) - timeLeft;
if (i < 0) return;
entityLiving.swingArm(entityLiving.getActiveHand());
float f = (float) entityLiving.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).getAttributeValue();
f += EnchantmentHelper.getModifierForCreature(stack, entityLiving.getCreatureAttribute()) / 1.2F;
float f1 = i / 15F;
f1 = (f1 * f1 + f1 * 2.0F) / 2F;
if(f1>8F) f1=8f;
float f3 = f1 + EnchantmentHelper.getSweepingDamageRatio(entityLiving) * f ;
float sweepingRatio = EnchantmentHelper.getSweepingDamageRatio(entityLiving);
for (Entity entitylivingbase : worldIn.getEntitiesWithinAABB(Entity.class, entityLiving.getEntityBoundingBox().grow(1.6D + sweepingRatio * 1.2D, 0.5D + sweepingRatio * 0.15D, 1.6D + sweepingRatio * 1.2D))) {
if (entitylivingbase != entityLiving && !entityLiving.isOnSameTeam(entitylivingbase)) {
if (entitylivingbase instanceof EntityLivingBase) {
f1 = f1/10;
((EntityLivingBase) entitylivingbase).knockBack(entityLiving, 0.4F + 0.6F * f1 * EnchantmentHelper.getSweepingDamageRatio(entityLiving), MathHelper.sin(entityLiving.rotationYaw * 0.017453292F), (-MathHelper.cos(entityLiving.rotationYaw * 0.017453292F)));
entitylivingbase.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer) entityLiving), f3);
}
if (entitylivingbase instanceof MultiPartEntityPart) {
entitylivingbase.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer) entityLiving), f3);
}
}
}
worldIn.playSound(null, entityLiving.posX, entityLiving.posY, entityLiving.posZ, SoundEvents.ENTITY_PLAYER_ATTACK_SWEEP, entityLiving.getSoundCategory(), 1.0F, 1.0F);
if (worldIn instanceof WorldServer) {
double d0 = (-MathHelper.sin(entityLiving.rotationYaw * 0.017453292F));
double d1 = MathHelper.cos(entityLiving.rotationYaw * 0.017453292F);
((WorldServer) worldIn).spawnParticle(EnumParticleTypes.SWEEP_ATTACK, entityLiving.posX + d0, entityLiving.posY + entityLiving.height * 0.5D, entityLiving.posZ + d1, 0, d0, 0.0D, d1, 0.0D);
}
stack.damageItem(2, entityLiving);
((EntityPlayer) entityLiving).getCooldownTracker().setCooldown(this, 25);
}
public Set<ComplexEntityPart> getParts() {
Builder<ComplexEntityPart> builder = ImmutableSet.builder();
for (MultiPartEntityPart part : getHandle().dragonPartArray) {
builder.add((ComplexEntityPart) part.getBukkitEntity());
}
return builder.build();
}
@Override
public void onPlayerStoppedUsing(ItemStack stack, World worldIn, EntityLivingBase entityLiving, int timeLeft) {
int k = EnchantmentHelper.getEnchantmentLevel(Enchantments.SWEEPING, stack);
if (k > 0) {
//big sweep!!!
entityLiving.swingArm(entityLiving.getActiveHand());
float f = (float) entityLiving.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).getAttributeValue();
f += EnchantmentHelper.getModifierForCreature(stack, entityLiving.getCreatureAttribute()) / 1.5F;
float f3 = EnchantmentHelper.getSweepingDamageRatio(entityLiving) * f;
float sweepingRatio = EnchantmentHelper.getSweepingDamageRatio(entityLiving);
for (Entity entitylivingbase : worldIn.getEntitiesWithinAABB(Entity.class, entityLiving.getEntityBoundingBox().grow(1.4D + sweepingRatio * 1.2D, 0.3D + sweepingRatio * 0.15D, 1.4D + sweepingRatio * 1.2D))) {
if (entitylivingbase != entityLiving && !entityLiving.isOnSameTeam(entitylivingbase)) {
if (entitylivingbase instanceof EntityLivingBase) {
if (entitylivingbase instanceof EntityPlayer && ((EntityPlayer) entitylivingbase).isActiveItemStackBlocking()) {
//disable shield
((EntityPlayer) entitylivingbase).disableShield(false);
}
((EntityLivingBase) entitylivingbase).knockBack(entityLiving, 0.4F + 0.1F * EnchantmentHelper.getSweepingDamageRatio(entityLiving), MathHelper.sin(entityLiving.rotationYaw * 0.017453292F), (-MathHelper.cos(entityLiving.rotationYaw * 0.017453292F)));
entitylivingbase.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer) entityLiving), f3);
}
if (entitylivingbase instanceof MultiPartEntityPart) {
entitylivingbase.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer) entityLiving), f3);
}
}
}
worldIn.playSound(null, entityLiving.posX, entityLiving.posY, entityLiving.posZ, SoundEvents.ENTITY_PLAYER_ATTACK_SWEEP, entityLiving.getSoundCategory(), 1.0F, 1.0F);
if (worldIn instanceof WorldServer) {
double d0 = (-MathHelper.sin(entityLiving.rotationYaw * 0.017453292F));
double d1 = MathHelper.cos(entityLiving.rotationYaw * 0.017453292F);
((WorldServer) worldIn).spawnParticle(EnumParticleTypes.SWEEP_ATTACK, entityLiving.posX + d0, entityLiving.posY + entityLiving.height * 0.5D, entityLiving.posZ + d1, 0, d0, 0.0D, d1, 0.0D);
}
stack.damageItem(2, entityLiving);
((EntityPlayer) entityLiving).getCooldownTracker().setCooldown(this, 16);
}
}
@Override
public void onPlayerStoppedUsing(ItemStack stack, World worldIn, EntityLivingBase entityLiving, int timeLeft) {
int k = EnchantmentHelper.getEnchantmentLevel(Enchantments.SWEEPING, stack);
if (k > 0) {
//big sweep!!!
entityLiving.swingArm(entityLiving.getActiveHand());
float f = (float) entityLiving.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).getAttributeValue();
f += EnchantmentHelper.getModifierForCreature(stack, entityLiving.getCreatureAttribute()) / 1.2F;
float f3 = 2.0F + EnchantmentHelper.getSweepingDamageRatio(entityLiving) * f;
float sweepingRatio = EnchantmentHelper.getSweepingDamageRatio(entityLiving);
for (Entity entitylivingbase : worldIn.getEntitiesWithinAABB(Entity.class, entityLiving.getEntityBoundingBox().grow(1.4D + sweepingRatio * 1.2D, 0.3D + sweepingRatio * 0.15D, 1.4D + sweepingRatio * 1.2D))) {
if (entitylivingbase != entityLiving && !entityLiving.isOnSameTeam(entitylivingbase)) {
if (entitylivingbase instanceof EntityLivingBase) {
if (entitylivingbase instanceof EntityPlayer && ((EntityPlayer) entitylivingbase).isActiveItemStackBlocking()) {
//disable shield
((EntityPlayer) entitylivingbase).disableShield(false);
}
((EntityLivingBase) entitylivingbase).knockBack(entityLiving, 0.4F + 0.4F * EnchantmentHelper.getSweepingDamageRatio(entityLiving), MathHelper.sin(entityLiving.rotationYaw * 0.017453292F), (-MathHelper.cos(entityLiving.rotationYaw * 0.017453292F)));
entitylivingbase.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer) entityLiving), f3);
}
if (entitylivingbase instanceof MultiPartEntityPart) {
entitylivingbase.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer) entityLiving), f3);
}
}
}
worldIn.playSound(null, entityLiving.posX, entityLiving.posY, entityLiving.posZ, SoundEvents.ENTITY_PLAYER_ATTACK_SWEEP, entityLiving.getSoundCategory(), 1.0F, 1.0F);
if (worldIn instanceof WorldServer) {
double d0 = (-MathHelper.sin(entityLiving.rotationYaw * 0.017453292F));
double d1 = MathHelper.cos(entityLiving.rotationYaw * 0.017453292F);
((WorldServer) worldIn).spawnParticle(EnumParticleTypes.SWEEP_ATTACK, entityLiving.posX + d0, entityLiving.posY + entityLiving.height * 0.5D, entityLiving.posZ + d1, 0, d0, 0.0D, d1, 0.0D);
}
stack.damageItem(2, entityLiving);
((EntityPlayer) entityLiving).getCooldownTracker().setCooldown(this, 25);
}
}
public CraftEnderDragonPart(CraftServer server, MultiPartEntityPart entity) {
super(server, entity);
}
@Override
public MultiPartEntityPart getHandle() {
return (MultiPartEntityPart) entity;
}
public CraftComplexPart(CraftServer server, MultiPartEntityPart entity) {
super(server, entity);
}
@Override
public MultiPartEntityPart getHandle() {
return (MultiPartEntityPart) entity;
}
public static boolean isEntityBlacklistedForTeleport(Entity entity)
{
return (entity instanceof MultiPartEntityPart && TELEPORT_BLACKLIST_CLASSES.contains(EntityDragon.class)) ||
TELEPORT_BLACKLIST_CLASSES.contains(entity.getClass());
}