org.bukkit.craftbukkit.v1_8_R3.CraftWorld#org.bukkit.entity.LivingEntity源码实例Demo

下面列出了org.bukkit.craftbukkit.v1_8_R3.CraftWorld#org.bukkit.entity.LivingEntity 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: EntityAPI   文件: SimpleChunkManager.java
@EventHandler
public void onUnload(ChunkUnloadEvent event) {
    Chunk unloadedChunk = event.getChunk();
    for (Entity entity : unloadedChunk.getEntities()) {
        if (entity instanceof LivingEntity) {
            Object handle = BukkitUnwrapper.getInstance().unwrap(entity);
            if (handle instanceof ControllableEntityHandle) {
                ControllableEntity controllableEntity = ((ControllableEntityHandle) handle).getControllableEntity();
                if (controllableEntity != null && controllableEntity.isSpawned()) {
                    this.SPAWN_QUEUE.add(new EntityChunkData(controllableEntity, entity.getLocation()));
                    controllableEntity.despawn(DespawnReason.CHUNK_UNLOAD);
                }
            }
        }
    }
}
 
源代码2 项目: EliteMobs   文件: PreventEndermanHeightExploit.java
@EventHandler (priority = EventPriority.HIGHEST)
public void onDamage(EntityDamageByEntityEvent event){

    if (event.isCancelled()) return;
    if (!event.getEntity().getType().equals(EntityType.ENDERMAN)) return;
    EntityType entityType = EntityFinder.getRealDamager(event).getType();
    if (entityType == null) return;
    if (!entityType.equals(EntityType.PLAYER)) return;

    EliteMobEntity eliteMobEntity = EntityTracker.getEliteMobEntity(event.getEntity());
    if (eliteMobEntity == null) return;

    Block block = EntityFinder.getRealDamager(event).getLocation().getBlock().getLocation().add(new Vector(0, 2, 0)).getBlock();
    if (block.getType().equals(Material.AIR) || block.getType().equals(Material.WATER)) return;

    eliteMobEntity.setHasSpecialLoot(false);
    AntiExploitMessage.sendWarning((LivingEntity) event.getEntity());

}
 
源代码3 项目: Kettle   文件: CraftBeacon.java
@Override
public Collection<LivingEntity> getEntitiesInRange() {
    TileEntity tileEntity = this.getTileEntityFromWorld();
    if (tileEntity instanceof TileEntityBeacon) {
        TileEntityBeacon beacon = (TileEntityBeacon) tileEntity;

        Collection<EntityPlayer> nms = beacon.getHumansInRange();
        Collection<LivingEntity> bukkit = new ArrayList<LivingEntity>(nms.size());

        for (EntityPlayer human : nms) {
            bukkit.add(human.getBukkitEntity());
        }

        return bukkit;
    }

    // block is no longer a beacon
    return new ArrayList<LivingEntity>();
}
 
源代码4 项目: Civs   文件: ParticleEffect.java
public void apply() {
    Object target = getTarget();

    if (!(target instanceof LivingEntity)) {
        return;
    }
    LivingEntity livingEntity = (LivingEntity) target;
    final BukkitRunnable runnable = new BukkitRunnable() {
        @Override
        public void run() {
            onUpdate();
        }
    };
    runnable.runTaskAsynchronously(Civs.getInstance());
    if (duration > 0) {
        BukkitRunnable runnable1 = new BukkitRunnable() {
            @Override
            public void run() {
                runnable.cancel();
            }
        };
    }
}
 
源代码5 项目: Skript   文件: EffExplodeCreeper.java
@Override
protected void execute(final Event e) {
	for (final LivingEntity le : entities.getArray(e)) {
		if (le instanceof Creeper) {
			if (instant) {
				((Creeper) le).explode();
			} else if (stop) {
				((Creeper) le).setIgnited(false);
			} else {
				if (paper) {
					((Creeper) le).setIgnited(true);
				} else {
					((Creeper) le).ignite();
				}
			}
		}
	}
}
 
源代码6 项目: uSkyBlock   文件: LimitLogic.java
public Map<CreatureType, Integer> getCreatureCount(us.talabrek.ultimateskyblock.api.IslandInfo islandInfo) {
    Map<CreatureType, Integer> mapCount = new HashMap<>();
    for (CreatureType type : CreatureType.values()) {
        mapCount.put(type, 0);
    }
    Location islandLocation = islandInfo.getIslandLocation();
    ProtectedRegion islandRegionAt = WorldGuardHandler.getIslandRegionAt(islandLocation);
    if (islandRegionAt != null) {
        // Nether and Overworld regions are more or less equal (same x,z coords)
        List<LivingEntity> creatures = WorldGuardHandler.getCreaturesInRegion(plugin.getWorldManager().getWorld(),
                islandRegionAt);
        World nether = plugin.getWorldManager().getNetherWorld();
        if (nether != null) {
            creatures.addAll(WorldGuardHandler.getCreaturesInRegion(nether, islandRegionAt));
        }
        for (LivingEntity creature : creatures) {
            CreatureType key = getCreatureType(creature);
            if (!mapCount.containsKey(key)) {
                mapCount.put(key, 0);
            }
            mapCount.put(key, mapCount.get(key) + 1);
        }
    }
    return mapCount;
}
 
源代码7 项目: BedWars   文件: EntityUtils.java
public static EntityLivingNMS makeMobAttackTarget(LivingEntity mob, double speed, double follow,
	double attackDamage) {
	try {
		Object handler = getHandle(mob);
		if (!EntityInsentient.isInstance(handler)) {
			throw new IllegalArgumentException("Entity must be instance of EntityInsentient!!");
		}
		
		EntityLivingNMS entityLiving = new EntityLivingNMS(handler);
		
		GoalSelector selector = entityLiving.getGoalSelector();
		selector.clearSelector();
		selector.registerPathfinder(0, PathfinderGoalMeleeAttack
			.getConstructor(EntityCreature, double.class, boolean.class).newInstance(handler, 1.0D, false));
		
		entityLiving.setAttribute(Attribute.MOVEMENT_SPEED, speed);
		entityLiving.setAttribute(Attribute.FOLLOW_RANGE, follow);
		entityLiving.setAttribute(Attribute.ATTACK_DAMAGE, attackDamage);
		
		entityLiving.getTargetSelector().clearSelector();
		
		return entityLiving;
	} catch (Throwable ignored) {
	}
	return null;
}
 
源代码8 项目: CombatLogX   文件: NoEntryListener.java
@EventHandler(priority=EventPriority.HIGHEST)
public void onCancelPVP(EntityDamageByEntityEvent e) {
    if(!e.isCancelled()) return;
    if(this.expansion.getNoEntryHandler().getNoEntryMode() != NoEntryMode.VULNERABLE) return;

    Entity entity = e.getEntity();
    if(!(entity instanceof Player)) return;

    ICombatLogX plugin = this.expansion.getPlugin();
    ICombatManager manager = plugin.getCombatManager();

    Player player = (Player) entity;
    if(!manager.isInCombat(player)) return;

    LivingEntity enemy = manager.getEnemy(player);
    if(enemy == null) return;

    e.setCancelled(false);
    this.expansion.sendNoEntryMessage(player, enemy);
}
 
源代码9 项目: CombatLogX   文件: Listener_V7_0.java
@EventHandler(priority=EventPriority.HIGHEST)
public void onPreventPVP(DisallowedPVPEvent e) {
    NoEntryHandler handler = this.expansion.getNoEntryHandler();
    NoEntryMode mode = handler.getNoEntryMode();
    if(mode != NoEntryMode.VULNERABLE) return;

    ICombatLogX plugin = this.expansion.getPlugin();
    ICombatManager manager = plugin.getCombatManager();

    Player player = e.getDefender();
    if(!manager.isInCombat(player)) return;

    LivingEntity enemy = manager.getEnemy(player);
    if(enemy == null) return;

    e.setCancelled(true);
    this.expansion.sendNoEntryMessage(player, enemy);
}
 
源代码10 项目: Sentinel   文件: SentinelWar.java
@Override
public boolean isTarget(LivingEntity ent, String prefix, String value) {
    try {
        if (prefix.equals("war_team") && ent instanceof Player) {
            Team team = Team.getTeamByPlayerName(ent.getName());
            if (team.getName().equalsIgnoreCase(value)) {
                return true;
            }
            else {
                return false;
            }
        }
    }
    catch (Exception ex) {
        ex.printStackTrace();
    }
    return false;
}
 
源代码11 项目: Thermos   文件: CraftEventFactory.java
public static EntityBreakDoorEvent callEntityBreakDoorEvent(net.minecraft.entity.Entity entity, int x, int y, int z) {
    org.bukkit.entity.Entity entity1 = entity.getBukkitEntity();
    Block block = entity1.getWorld().getBlockAt(x, y, z);

    EntityBreakDoorEvent event = new EntityBreakDoorEvent((LivingEntity) entity1, block);
    entity1.getServer().getPluginManager().callEvent(event);

    return event;
}
 
源代码12 项目: EntityAPI   文件: BehaviourGoalHelpTamerTarget.java
@Override
public void start() {
    this.getControllableEntity().setTarget((LivingEntity) this.target.getBukkitEntity());

    if (this.getTamer() != null) {
        this.lastAttackTick = this.getTamer().aM();
    }

    super.start();
}
 
源代码13 项目: NyaaUtils   文件: DamageStatListener.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onEntityDamaged(EntityDamageByEntityEvent ev) {
    if (!plugin.cfg.damageStatEnabled) return;
    if (!(ev.getEntity() instanceof LivingEntity)) return;

    UUID playerId = null;
    if (ev.getDamager() instanceof Player) {
        playerId = ev.getDamager().getUniqueId();
    } else if (ev.getDamager() instanceof Projectile) {
        if (((Projectile) ev.getDamager()).getShooter() instanceof Player) {
            playerId = ((Player) ((Projectile) ev.getDamager()).getShooter()).getUniqueId();
        } else {
            return;
        }
    } else {
        return;
    }

    UUID mobUid = ev.getEntity().getUniqueId();
    double damage = ev.getFinalDamage();
    double health = ((LivingEntity) ev.getEntity()).getHealth();
    if (damage > health) damage = health;
    Map<UUID, Double> damageMap = entityList.getUnchecked(mobUid);
    if (damageMap.containsKey(playerId)) {
        damageMap.put(playerId, damageMap.get(playerId) + damage);
    } else {
        damageMap.put(playerId, damage);
    }
}
 
源代码14 项目: Skript   文件: ExprShooter.java
@Override
protected LivingEntity[] get(final Event e, final Projectile[] source) {
	return get(source, new Converter<Projectile, LivingEntity>() {
		@Override
		@Nullable
		public LivingEntity convert(final Projectile p) {
			final Object o = ProjectileUtils.getShooter(p);
			if (o instanceof LivingEntity)
				return (LivingEntity) o;
			return null;
		}
	});
}
 
源代码15 项目: civcraft   文件: HorseModifier.java
public static void setHorseSpeed(LivingEntity entity, double amount) {
	if (!isHorse(entity)) {
		return;
	}
	
	EntityInsentient nmsEntity = (EntityInsentient) ((CraftLivingEntity) entity).getHandle();
	AttributeInstance attributes = nmsEntity.getAttributeInstance(GenericAttributes.d);
	AttributeModifier modifier = new AttributeModifier(movementSpeedUID, "civcraft horse movement speed", amount, 0);
	attributes.b(modifier); //remove the modifier, adding a duplicate causes errors
	attributes.a(modifier); //add the modifier
  
	//done??
}
 
源代码16 项目: Civs   文件: IgniteEffect.java
@Override
public HashMap<String, Double> getVariables() {
    Object target = getTarget();
    HashMap<String, Double> returnMap = new HashMap<String, Double>();
    if (!(target instanceof LivingEntity)) {
        return returnMap;
    }
    LivingEntity le = (LivingEntity) target;
    returnMap.put("fireTicks", (double) le.getFireTicks());
    return returnMap;
}
 
源代码17 项目: EntityAPI   文件: NMSAccessorImpl.java
@Override
public LivingEntity getTarget() {
    if (handle() == null) {
        return null;
    }

    if (handle() instanceof EntityInsentient) {
        EntityLiving targetHandle = ((EntityInsentient) handle()).getGoalTarget();
        if (targetHandle != null && targetHandle.getBukkitEntity() instanceof LivingEntity) {
            return (LivingEntity) targetHandle.getBukkitEntity();
        }
    }

    return null;
}
 
源代码18 项目: Shopkeepers   文件: NMSHandler.java
@Override
public void overwriteLivingEntityAI(LivingEntity entity) {
	try {
		EntityLiving ev = ((CraftLivingEntity) entity).getHandle();
		if (!(ev instanceof EntityInsentient)) return;

		// overwrite goal selector:
		Field goalsField = EntityInsentient.class.getDeclaredField("goalSelector");
		goalsField.setAccessible(true);
		PathfinderGoalSelector goals = (PathfinderGoalSelector) goalsField.get(ev);

		Field listField = PathfinderGoalSelector.class.getDeclaredField("b");
		listField.setAccessible(true);
		List<?> list = (List<?>) listField.get(goals);
		list.clear();
		listField = PathfinderGoalSelector.class.getDeclaredField("c");
		listField.setAccessible(true);
		list = (List<?>) listField.get(goals);
		list.clear();

		goals.a(0, new PathfinderGoalFloat((EntityInsentient) ev));
		goals.a(1, new PathfinderGoalLookAtPlayer((EntityInsentient) ev, EntityHuman.class, 12.0F, 1.0F));

		// overwrite target selector:
		Field targetsField = EntityInsentient.class.getDeclaredField("targetSelector");
		targetsField.setAccessible(true);
		PathfinderGoalSelector targets = (PathfinderGoalSelector) targetsField.get(ev);

		Field listField2 = PathfinderGoalSelector.class.getDeclaredField("b");
		listField2.setAccessible(true);
		List<?> list2 = (List<?>) listField.get(targets);
		list2.clear();
		listField2 = PathfinderGoalSelector.class.getDeclaredField("c");
		listField2.setAccessible(true);
		list2 = (List<?>) listField.get(targets);
		list2.clear();
	} catch (Exception e) {
		e.printStackTrace();
	}
}
 
源代码19 项目: Sentinel   文件: SentinelTargetingHelper.java
/**
 * Returns a direction to run in, avoiding threatening entities as best as possible.
 * Returns a location of the spot to run to.
 * Returns null if nowhere to run.
 */
public Location runDirection(Location center) {
    for (int i = 0; i < 36; i++) {
        threatDists[i] = 1000 * 1000;
    }
    double range = sentinel.avoidRange;
    Vector centerVec = center.toVector();
    for (LivingEntity entity : avoidanceList) {
        Vector relative = entity.getLocation().toVector().subtract(centerVec);
        for (int i = 0; i < 36; i++) {
            double dist = relative.distanceSquared(directionReferenceVectors[i].clone().multiply(range));
            if (dist < threatDists[i]) {
                threatDists[i] = dist;
            }
        }
    }
    double longestDistance = 0;
    Location runTo = null;
    for (int i = 0; i < 36; i++) {
        if (threatDists[i] > longestDistance) {
            Location newRunTo = findSpotForRunDirection(center, range, directionReferenceVectors[i].clone());
            if (newRunTo != null) {
                runTo = newRunTo;
                longestDistance = threatDists[i];
            }
        }
    }
    if (SentinelPlugin.debugMe) {
        SentinelPlugin.instance.getLogger().info("(TEMP) Run to get threat distance: " + longestDistance + " to " + runTo + " from " + center.toVector());
    }
    return runTo;
}
 
源代码20 项目: Thermos   文件: CraftLivingEntity.java
public void damage(double amount, org.bukkit.entity.Entity source) {
    net.minecraft.util.DamageSource reason = net.minecraft.util.DamageSource.generic;

    if (source instanceof HumanEntity) {
        reason = net.minecraft.util.DamageSource.causePlayerDamage(((CraftHumanEntity) source).getHandle());
    } else if (source instanceof LivingEntity) {
        reason = net.minecraft.util.DamageSource.causeMobDamage(((CraftLivingEntity) source).getHandle());
    }

    if (entity instanceof net.minecraft.entity.boss.EntityDragon) {
        ((net.minecraft.entity.boss.EntityDragon) entity).func_82195_e(reason, (float) amount);
    } else {
        entity.attackEntityFrom(reason, (float) amount);
    }
}
 
源代码21 项目: PGM   文件: OwnedMobTracker.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onMobSpawn(PlayerSpawnEntityEvent event) {
  ParticipantState owner = match.getParticipantState(event.getPlayer());
  if (event.getEntity() instanceof LivingEntity && owner != null) {
    LivingEntity mob = (LivingEntity) event.getEntity();
    entities().trackEntity(event.getEntity(), new MobInfo(mob, owner));
  }
}
 
源代码22 项目: CombatLogX   文件: ListenerUntagger.java
@EventHandler(priority=EventPriority.MONITOR, ignoreCancelled=true)
public void onUntag(PlayerUntagEvent e) {
    Player player = e.getPlayer();
    LivingEntity previousEnemy = e.getPreviousEnemy();
    PlayerUntagEvent.UntagReason untagReason = e.getUntagReason();

    ICombatManager combatManager = this.plugin.getCombatManager();
    combatManager.punish(player, untagReason, previousEnemy);
    sendUntagMessage(player, untagReason);
    runUntagCommands(player);
}
 
源代码23 项目: EntityAPI   文件: BehaviourGoalTakeFlower.java
@Override
public void tick() {
    NMSEntityUtil.getControllerLook(this.getHandle()).a(this.flowerHolder, 30.0F, 30.0F);
    if (this.flowerHolder.bZ() == this.acceptTicks) {
        this.getControllableEntity().navigateTo((LivingEntity) this.flowerHolder.getBukkitEntity(), this.navigationSpeed > 0 ? this.navigationSpeed : this.getControllableEntity().getSpeed());
        this.canAccept = true;
    }

    if (this.canAccept && this.getHandle().e(this.flowerHolder) < 4.0D) {
        this.flowerHolder.a(false);
        NMSEntityUtil.getNavigation(this.getHandle()).h();
    }
}
 
源代码24 项目: ce   文件: Paralyze.java
@Override
public void effect(Event e, ItemStack item, int level) {
	if(e instanceof EntityDamageByEntityEvent) {
	EntityDamageByEntityEvent event = (EntityDamageByEntityEvent) e;
	LivingEntity target = (LivingEntity) event.getEntity();
	target.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, duration + (level-1)*20, strength + level-1), true);
	target.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, duration + (level-1)*20, 1), true);
	target.addPotionEffect(new PotionEffect(PotionEffectType.WEAKNESS, duration + (level-1)*20, strength + level-1), true);
	}
}
 
源代码25 项目: ActionHealth   文件: ActionListener.java
@EventHandler(ignoreCancelled = true)
public void onDamage(EntityDamageEvent event) {
    if (!main.configStore.actionStore.enabled)
        return;

    Entity entity = event.getEntity();
    ActionStore.ActionType actionType = ActionStore.ActionType.DAMAGE;

    if (entity instanceof LivingEntity) {
        LivingEntity livingEntity = (LivingEntity) entity;
        actionHelper.executeTriggers(actionType, livingEntity, "ANY", livingEntity.getHealth() - event.getFinalDamage());
    }
}
 
源代码26 项目: CombatLogX   文件: CombatManager.java
@Override
public OfflinePlayer getByEnemy(LivingEntity enemy) {
    if(enemy == null) return null;

    UUID enemyId = enemy.getUniqueId();
    for(Map.Entry<UUID, UUID> entry : uuidToEnemy.entrySet()) {
        UUID linkedEnemyId = entry.getValue();
        if(!enemyId.equals(linkedEnemyId)) continue;

        UUID playerId = entry.getKey();
        return Bukkit.getOfflinePlayer(playerId);
    }

    return null;
}
 
源代码27 项目: CombatLogX   文件: CombatManager.java
private String getEntityName(LivingEntity enemy) {
    if(enemy == null) return this.plugin.getLanguageMessage("errors.unknown-entity-name");

    MultiVersionHandler<?> multiVersionHandler = this.plugin.getMultiVersionHandler();
    AbstractNMS nmsHandler = multiVersionHandler.getInterface();
    
    EntityHandler entityHandler = nmsHandler.getEntityHandler();
    return entityHandler.getName(enemy);
}
 
源代码28 项目: TabooLib   文件: InternalPathfinderExecutor.java
@Override
public void setTargetAi(LivingEntity entity, Iterable ai) {
    try {
        Ref.putField(((EntityInsentient) getEntityInsentient(entity)).targetSelector, this.pathfinderGoalSelectorSet, ai);
    } catch (Throwable t) {
        t.printStackTrace();
    }
}
 
源代码29 项目: Skript   文件: EffShear.java
@Override
protected void execute(final Event e) {
	for (final LivingEntity en : sheep.getArray(e)) {
		if (en instanceof Sheep) {
			((Sheep) en).setSheared(shear);
		}
	}
}
 
源代码30 项目: Slimefun4   文件: SeismicAxe.java
@Override
public ItemUseHandler getItemHandler() {
    return e -> {
        Player p = e.getPlayer();
        List<Block> blocks = p.getLineOfSight(null, RANGE);

        for (int i = 2; i < blocks.size(); i++) {
            Block ground = findGround(blocks.get(i));
            Location groundLocation = ground.getLocation();

            ground.getWorld().playEffect(groundLocation, Effect.STEP_SOUND, ground.getType());

            if (ground.getRelative(BlockFace.UP).getType() == Material.AIR) {
                Location loc = ground.getRelative(BlockFace.UP).getLocation().add(0.5, 0.0, 0.5);
                FallingBlock block = ground.getWorld().spawnFallingBlock(loc, ground.getBlockData());
                block.setDropItem(false);
                block.setVelocity(new Vector(0, 0.4 + i * 0.01, 0));
                block.setMetadata("seismic_axe", new FixedMetadataValue(SlimefunPlugin.instance, "fake_block"));
            }

            for (Entity n : ground.getChunk().getEntities()) {
                if (n instanceof LivingEntity && n.getType() != EntityType.ARMOR_STAND && n.getLocation().distance(groundLocation) <= 2.0D && !n.getUniqueId().equals(p.getUniqueId())) {
                    pushEntity(p, n);
                }
            }
        }

        for (int i = 0; i < 4; i++) {
            damageItem(p, e.getItem());
        }
    };
}