@SubscribeEvent public void entityHurtEvent(LivingHurtEvent event) { if (!EtFuturum.enableDmgIndicator) return; int amount = MathHelper.floor_float(Math.min(event.entityLiving.getHealth(), event.ammount) / 2F); if (amount <= 0) return; // If the attacker is a player spawn the hearts aligned and facing it if (event.source instanceof EntityDamageSource) { EntityDamageSource src = (EntityDamageSource) event.source; Entity attacker = src.getSourceOfDamage(); if (attacker instanceof EntityPlayer && !(attacker instanceof FakePlayer)) { EntityPlayer player = (EntityPlayer) attacker; Vec3 look = player.getLookVec(); look.rotateAroundY((float) Math.PI / 2); for (int i = 0; i < amount; i++) { double x = event.entityLiving.posX - amount * 0.35 * look.xCoord / 2 + i * 0.35 * look.xCoord; double y = event.entityLiving.posY + 1.5 + event.entityLiving.worldObj.rand.nextGaussian() * 0.05; double z = event.entityLiving.posZ - amount * 0.35 * look.zCoord / 2 + i * 0.35 * look.zCoord; EtFuturum.networkWrapper.sendToAllAround( new BlackHeartParticlesMessage(x, y, z), new TargetPoint(player.worldObj.provider.dimensionId, x, y, z, 64)); } } } }
/* ダメージソースのタイプ */ public DamageSource thisDamageSource(Entity entity) { // 発射元のEntityがnullだった場合の対策を含む。 if (entity instanceof EntityPlayer) { return EntityDamageSource.causePlayerDamage((EntityPlayer) entity); } return entity != null ? EntityDamageSource.causeIndirectMagicDamage(this, entity) : DamageSource.magic; }
@SubscribeEvent public void onDeath(LivingDeathEvent ev) { if (!(ev.source instanceof EntityDamageSource)) { return; } EntityDamageSource eds = (EntityDamageSource) ev.source; Entity ent = eds.getEntity(); if (!(ent instanceof EntityPlayer)) { return; } EntityPlayer epl = (EntityPlayer) ent; ItemStack wpn = epl.getHeldItem(); if (EnchantmentHelper.getEnchantmentLevel(KingdomKeys.HarvestHearts.effectId, wpn) == 0) { return; } if (EnchantmentHelper.getEnchantmentLevel(KingdomKeys.HarvestHearts.effectId, wpn) == 1) { if (ev.entityLiving instanceof EntityDragon) { ev.entityLiving.entityDropItem(new ItemStack(AddedItems.KingdomHearts, 1, 0), 0.5F); } } if (EnchantmentHelper.getEnchantmentLevel(KingdomKeys.HarvestHearts.effectId, wpn) == 2) { if (ev.entityLiving instanceof EntityDragon) { ev.entityLiving.entityDropItem(new ItemStack(AddedItems.KingdomHearts, 1, 0), 0.8F); } } if (EnchantmentHelper.getEnchantmentLevel(KingdomKeys.HarvestHearts.effectId, wpn) == 3) { if (ev.entityLiving instanceof EntityDragon) { ev.entityLiving.entityDropItem(new ItemStack(AddedItems.KingdomHearts, 1, 0), 1.0F); } } if (EnchantmentHelper.getEnchantmentLevel(KingdomKeys.HarvestHearts.effectId, wpn) == 4) { if (ev.entityLiving instanceof EntityDragon) { ev.entityLiving.entityDropItem(new ItemStack(AddedItems.KingdomHearts, 2, 0), 0.5F); } } if (EnchantmentHelper.getEnchantmentLevel(KingdomKeys.HarvestHearts.effectId, wpn) == 5) { if (ev.entityLiving instanceof EntityDragon) { ev.entityLiving.entityDropItem(new ItemStack(AddedItems.KingdomHearts, 2, 0), 0.8F); } } if (EnchantmentHelper.getEnchantmentLevel(KingdomKeys.HarvestHearts.effectId, wpn) == 6) { if (ev.entityLiving instanceof EntityDragon) { ev.entityLiving.entityDropItem(new ItemStack(AddedItems.KingdomHearts, 2, 0), 1.0F); } } if (EnchantmentHelper.getEnchantmentLevel(KingdomKeys.HarvestHearts.effectId, wpn) == 7) { if (ev.entityLiving instanceof EntityDragon) { ev.entityLiving.entityDropItem(new ItemStack(AddedItems.KingdomHearts, 3, 0), 0.5F); } } if (EnchantmentHelper.getEnchantmentLevel(KingdomKeys.HarvestHearts.effectId, wpn) == 8) { if (ev.entityLiving instanceof EntityDragon) { ev.entityLiving.entityDropItem(new ItemStack(AddedItems.KingdomHearts, 3, 0), 0.8F); } } if (EnchantmentHelper.getEnchantmentLevel(KingdomKeys.HarvestHearts.effectId, wpn) == 9) { if (ev.entityLiving instanceof EntityDragon) { ev.entityLiving.entityDropItem(new ItemStack(AddedItems.KingdomHearts, 3, 0), 1.0F); } } if (EnchantmentHelper.getEnchantmentLevel(KingdomKeys.HarvestHearts.effectId, wpn) == 10) { if (ev.entityLiving instanceof EntityDragon) { ev.entityLiving.entityDropItem(new ItemStack(AddedItems.KingdomHearts, 4, 0), 0.8F); } } }