@SubscribeEvent public void onEnderTeleport(EnderTeleportEvent event) { if (isTeleportPrevented(event.getEntity().world, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ)) { event.setCanceled(true); } if (isTeleportPrevented(event.getEntity().world, event.getTargetX(), event.getTargetY(), event.getTargetZ())) { event.setCanceled(true); } }
int cost = 50; if(event.getEntityLiving() instanceof EntityEnderman) { List<SubTileVinculotus> possibleFlowers = new ArrayList<>(); for(SubTileVinculotus flower : existingFlowers) { if(flower.redstoneSignal > 0 || flower.mana <= cost || flower.supertile.getWorld() != event.getEntityLiving().world || flower.supertile.getWorld().getTileEntity(flower.supertile.getPos()) != flower.supertile) continue; double z = flower.supertile.getPos().getZ() + 0.5; if(MathHelper.pointDistanceSpace(x, y, z, event.getTargetX(), event.getTargetY(), event.getTargetZ()) < RANGE) possibleFlowers.add(flower); SubTileVinculotus flower = possibleFlowers.get(event.getEntityLiving().world.rand.nextInt(possibleFlowers.size())); double z = flower.supertile.getPos().getZ() + 0.5; event.setTargetX(x + Math.random() * 3 - 1); event.setTargetY(y); event.setTargetZ(z + Math.random() * 3 - 1); flower.mana -= cost; flower.sync();
@SubscribeEvent public void onEnderTeleport(EnderTeleportEvent event) { if(Enderference.getLevel(event.getEntityLiving()) > 0) { event.setCanceled(true); } } }
/** * * @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; }
@SubscribeEvent public static void onEndermanTeleportEvent(EnderTeleportEvent event) { if (event.getEntity() instanceof EntityEnderman && event.getEntityLiving() .getActivePotionEffect(MobEffects.WEAKNESS) != null) { event.setCanceled(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; }
@SubscribeEvent public static void onEndermanTeleportEvent(EnderTeleportEvent event) { if (event.getEntityLiving().isPotionActive(RegistrarBloodMagic.PLANAR_BINDING) && event.isCancelable()) { event.setCanceled(true); } } }
@SubscribeEvent public void onEnderTeleportEvent(EnderTeleportEvent event) { Entity ent = event.getEntity(); if (ent instanceof EntityLivingBase == false) { return; } EntityLivingBase living = (EntityLivingBase) event.getEntity(); if (living.isPotionActive(this)) { event.setAttackDamage(0); } }
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; }
@SubscribeEvent public void onEndermanTeleport(EnderTeleportEvent event) { if (event.getEntityLiving() instanceof EntityEnderman && event.getEntityLiving().getEntityData().getBoolean("EIO:tracked")) { event.setCanceled(true); } } }
return; handleTeleportEvent(new EnderTeleportEvent((EntityLivingBase) shootingEntity, pos.getX() + 0.5F, pos.getY(), pos.getZ() + 0.5F, getDamageAgainst((EntityLivingBase) shootingEntity)));
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); } }
/** * Most generic handling of EnderTeleportEvent * * @param event to handle * @return true only if the event is not cancelled */ private boolean handleTeleportEvent(EnderTeleportEvent event){ if (!MinecraftForge.EVENT_BUS.post(event)) { for (int i = 0; i < 32; ++i){ this.world.spawnParticle(EnumParticleTypes.PORTAL, event.getTargetX(), event.getTargetY() + this.rand.nextDouble() * 2.0D, event.getTargetZ(), this.rand.nextGaussian(), 0.0D, this.rand.nextGaussian()); } event.getEntity().dismountRidingEntity(); event.getEntity().setPositionAndUpdate(event.getTargetX(), event.getTargetY(), event.getTargetZ()); event.getEntity().fallDistance = 0.0F; event.getEntity().attackEntityFrom(getEnderDamage(), event.getAttackDamage()); return true; } return false; } }
@SubscribeEvent public static void onEnderTeleport(EnderTeleportEvent evt) { if (evt.getEntityLiving().getEntityData().getBoolean(HIT_BY_DARK_STEEL_SWORD)) { evt.setCanceled(true); } }
/** * 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; }
@SubscribeEvent public void onEnderTeleportEvent(EnderTeleportEvent event) { if (mountedPearl) { Entity rider = event.getEntity(); if (rider != null && rider instanceof EntityPlayer && rider.getRidingEntity() != null) { EntityPlayer playerRider = (EntityPlayer) rider; Entity maybeHorse = playerRider.getRidingEntity(); //take the players horse and set its position to the target event.getEntity().getRidingEntity().setPositionAndUpdate(event.getTargetX(), event.getTargetY(), event.getTargetZ()); playerRider.getEntityData().setInteger(KEY_MOUNTENTITY, maybeHorse.getEntityId()); } } } }
/** * 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; }
final EnderTeleportEvent event = new EnderTeleportEvent(entity, x, y, z, damage); if (!event.isCanceled()) { entity.setPositionAndUpdate(event.getTargetX(), event.getTargetY(), event.getTargetZ()); entity.fallDistance = 0f; entity.attackEntityFrom(DamageSource.FALL, event.getAttackDamage());
/** * 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); } }
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)) { ((EntityPlayerMP) entity).connection.setPlayerLocation(event.getTargetX(), event.getTargetY(), event.getTargetZ(), entity.rotationYaw, entity.rotationPitch); } else { entity.setPositionAndUpdate(event.getTargetX(), event.getTargetY(), event.getTargetZ()); entity.attackEntityFrom(DamageSource.FALL, event.getAttackDamage()); return true;