/** * Teleport at random, for automated systems * * @param entity the entity hit by the arrow */ protected void tryTeleport(EntityLivingBase entity) { double x = entity.posX; double y = entity.posY; double z = entity.posZ; EnderTeleportEvent event = new EnderTeleportEvent(entity, x+ (this.rand.nextDouble() - 0.5D) * tpRange * 2, y+ (double)(this.rand.nextInt(4) - 2), z+ (this.rand.nextDouble() - 0.5D) * tpRange * 2, 0); if (MinecraftForge.EVENT_BUS.post(event)){ return; } if(entity.attemptTeleport(event.getTargetX(), event.getTargetY(), event.getTargetZ())){ this.world.playSound(null, x, y, z, SoundEvents.ENTITY_ENDERMEN_TELEPORT, entity.getSoundCategory(), 1.0F, 1.0F); entity.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); } }
/** * * @return true if teleport was a success */ public static boolean enderTeleportEvent(EntityLivingBase player, World world, double x, double y, double z) { EnderTeleportEvent event = new EnderTeleportEvent(player, x, y, z, 0); boolean wasCancelled = MinecraftForge.EVENT_BUS.post(event); if (wasCancelled == false) { //new target? maybe, maybe not. https://github.com/PrinceOfAmber/Cyclic/issues/438 UtilEntity.teleportWallSafe(player, world, event.getTargetX(), event.getTargetY(), event.getTargetZ()); } return !wasCancelled; }
public static boolean teleportEntityTo(EntityLivingBase entity, double x, double y, double z) { EnderTeleportEvent event = new EnderTeleportEvent(entity, x, y, z, 0); if (MinecraftForge.EVENT_BUS.post(event)) { return false; } entity.setPositionAndUpdate(event.getTargetX(), event.getTargetY(), event.getTargetZ()); entity.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); return true; }
@Override public boolean onHitEntity(Entity entityHit, DamageSource source, float ammount) { this.setDead(); if(entityHit instanceof EntityLivingBase){ if (!this.world.isRemote){ if(shootingEntity == null){ tryTeleport((EntityLivingBase)entityHit); } else if(shootingEntity instanceof EntityLivingBase){ if (shootingEntity instanceof EntityPlayerMP){ if(!((EntityPlayerMP) this.shootingEntity).connection.getNetworkManager().isChannelOpen() || shootingEntity.world != this.world || ((EntityPlayerMP) this.shootingEntity).isPlayerSleeping()) return false; } double x = shootingEntity.posX; double y = shootingEntity.posY; double z = shootingEntity.posZ; EnderTeleportEvent event = new EnderTeleportEvent((EntityLivingBase)shootingEntity, entityHit.posX+0.5F, entityHit.posY, entityHit.posZ+0.5F, getDamageAgainst((EntityLivingBase)shootingEntity)); if(handleTeleportEvent(event)) { event = new EnderTeleportEvent((EntityLivingBase) entityHit, x + 0.5F, y, z + 0.5F, getDamageAgainst((EntityLivingBase) entityHit)); handleTeleportEvent(event); } } } return true; } return false; }
public void moveEntityViaTeleport(EntityLivingBase entityLiving, double x, double y, double z) { if (entityLiving instanceof EntityPlayerMP) { EntityPlayerMP player = (EntityPlayerMP) entityLiving; EnderTeleportEvent event = new EnderTeleportEvent(player, x, y, z, 5.0F); if (!MinecraftForge.EVENT_BUS.post(event)) { if (entityLiving.isRiding()) player.mountEntityAndWakeUp(); entityLiving.setPositionAndUpdate(event.getTargetX(), event.getTargetY(), event.getTargetZ()); } } else if (entityLiving != null) { entityLiving.setPosition(x, y, z); } }
/** * Teleport the enderman */ private boolean teleportTo(double x, double y, double z) { net.minecraftforge.event.entity.living.EnderTeleportEvent event = new net.minecraftforge.event.entity.living.EnderTeleportEvent(this, x, y, z, 0); if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) { return false; } boolean flag = attemptTeleport(event.getTargetX(), event.getTargetY(), event.getTargetZ()); if (flag) { world.playSound(null, prevPosX, prevPosY, prevPosZ, SoundEvents.ENTITY_ENDERMEN_TELEPORT, getSoundCategory(), 1.0F, 1.0F); playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); } return flag; }
/** * Teleport the enderman */ private boolean teleportTo(double x, double y, double z) { net.minecraftforge.event.entity.living.EnderTeleportEvent event = new net.minecraftforge.event.entity.living.EnderTeleportEvent(this, x, y, z, 0); if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) { return false; } boolean flag = attemptTeleport(event.getTargetX(), event.getTargetY(), event.getTargetZ()); if (flag) { world.playSound(null, prevPosX, prevPosY, prevPosZ, SoundEvents.ENTITY_ENDERMEN_TELEPORT, getSoundCategory(), 1.0F, 1.0F); playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); } return flag; }
protected boolean teleportTo(double x, double y, double z) { EnderTeleportEvent event = new EnderTeleportEvent(this, x, y, z, 0); if (MinecraftForge.EVENT_BUS.post(event)) { return false;
@Override public boolean doExtraFunction(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, EnumHand hand) { if (ItemHelper.getOrCreateCompound(stack).getByte("teleportCooldown") > 0 ) { return false; } BlockPos c = PlayerHelper.getBlockLookingAt(player, 64); if (c == null) { c = new BlockPos(PlayerHelper.getLookVec(player, 32).getRight()); } EnderTeleportEvent event = new EnderTeleportEvent(player, c.getX(), c.getY(), c.getZ(), 0); if (!MinecraftForge.EVENT_BUS.post(event)) { if (player.isRiding()) { player.dismountRidingEntity(); } player.setPositionAndUpdate(event.getTargetX(), event.getTargetY(), event.getTargetZ()); player.getEntityWorld().playSound(null, player.posX, player.posY, player.posZ, SoundEvents.ENTITY_ENDERMEN_TELEPORT, SoundCategory.PLAYERS, 1, 1); player.fallDistance = 0.0F; stack.getTagCompound().setByte("teleportCooldown", ((byte) 10)); return true; } return false; }
damage = 1f; EnderTeleportEvent event = new EnderTeleportEvent(entity, targetX, targetY, targetZ, damage); if (!MinecraftForge.EVENT_BUS.post(event)) { if (rand.nextFloat() < 0.15F && world.getGameRules().getBoolean("doMobSpawning") && !(entity instanceof EntityEndermite)) {
public boolean teleportTo(EntityLivingBase entityLiving, double par1, double par3, double par5, double lastX, double lastY, double lastZ) { EnderTeleportEvent event = new EnderTeleportEvent(entityLiving, par1, par3, par5, 0);
final EnderTeleportEvent event = new EnderTeleportEvent(entity, x, y, z, damage);
@Override protected void onImpact(RayTraceResult position) { if (position.entityHit != null) { position.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), 0.0F); } for (int i = 0; i < 32; ++i) { this.world.spawnParticle(EnumParticleTypes.PORTAL, this.posX, this.posY + this.rand.nextDouble() * 2.0D, this.posZ, this.rand.nextGaussian(), 0.0D, this.rand.nextGaussian()); } if (!this.world.isRemote) { if (this.getThrower() != null && this.getThrower() instanceof EntityPlayerMP) { EntityPlayerMP entityplayermp = (EntityPlayerMP)this.getThrower(); if (entityplayermp.connection.netManager.isChannelOpen() && entityplayermp.world == this.world) { EnderTeleportEvent event = new EnderTeleportEvent(entityplayermp, this.posX, this.posY, this.posZ, 0.0F); if (!MinecraftForge.EVENT_BUS.post(event)) { if (this.getThrower().isRiding()) { this.getThrower().dismountRidingEntity(); } this.getThrower().setPositionAndUpdate(event.getTargetX(), event.getTargetY(), event.getTargetZ()); this.getThrower().fallDistance = 0.0F; this.getThrower().attackEntityFrom(DamageSource.FALL, event.getAttackDamage()); this.getThrower().addPotionEffect(new PotionEffect(MobEffects.SLOWNESS, BloodPearlOfTeleportationConfig.slownessDuration * 20, 2)); } } } this.setDead(); } }
EnderTeleportEvent event = new EnderTeleportEvent(entityplayermp, posX, posY, posZ, 5.0F); if(!MinecraftForge.EVENT_BUS.post(event) && rand.nextFloat() < 0.025F && getEntityWorld().getGameRules().getBoolean("doMobSpawning")) { EntityEndermite entityendermite = new EntityEndermite(getEntityWorld());
return; handleTeleportEvent(new EnderTeleportEvent((EntityLivingBase) shootingEntity, pos.getX() + 0.5F, pos.getY(), pos.getZ() + 0.5F, getDamageAgainst((EntityLivingBase) shootingEntity)));