Java 类org.bukkit.entity.Monster 实例源码

项目:PA    文件:GameEvents.java   
@EventHandler
public void onEntityDeath(EntityDeathEvent e) {
    if (e.getEntity() instanceof Monster && e.getEntity().getKiller() instanceof Player) {
        TOAUser u = TOA.getPlayer(e.getEntity().getKiller());
        String name = e.getEntity().getCustomName().split(" ")[1];
        int level = Utils.isInt(name) ? Integer.parseInt(name) : 0;

        new Experience(u).addExp(Mob.getXP(level));

        e.getDrops().clear();
        e.setDroppedExp(0);

        Drop.drop(MobType.parseMobType(e.getEntityType()), u.getUserData().getKit()).forEach(d -> {
            BagEvents.addItem(u, d);
            u.sendSound(Sounds.ITEM_PICKUP);
        });

        if (plugin.getSpawnTask().getCount() == 0) return;
        plugin.getSpawnTask().setCount(plugin.getSpawnTask().getCount() - 1);
    }
}
项目:PA    文件:Dagas.java   
public void play(TOAUser u){
    if (!canUse(u)) return;
    if (isInCooldown(u, getName())) return;
    int lvl = u.getUserData().getLvl();

    for (int x = 0; x < r.nextInt(4) + 2; x++) {
        final Item d1 = u.getLoc().getWorld().dropItemNaturally(u.getLoc(), new ItemStack(Material.IRON_SWORD));

        d1.setVelocity(u.getPlayer().getVelocity().multiply(2));

        plugin.getServer().getScheduler().runTaskTimer(plugin, () -> {
            World w = d1.getLocation().getWorld();

            w.getNearbyEntities(d1.getLocation(), 1, 1, 1).stream()
                    .filter(en -> !en.getType().equals(EntityType.PLAYER)).forEach(en -> {
                if (en instanceof Monster) ((Monster) en).damage(40 + (lvl * 0.7));
                d1.remove();
            });
        }, 0, 20);
    }
    cool.setOnCooldown(getName());
}
项目:world-of-icerealm    文件:BreakBlockSession.java   
public BreakBlockSession(Location l, Material m, double r, int qty, String monsters) {
    _locations = l;
    _material = m;
    _radius = r;
    _qty = qty;
    _monsters = monsters;
    _zone = new WorldZone(l, r);
    _world = l.getWorld();
    _spawnedMonsters = new ArrayList<Monster>();
    _blockBroken = true;
    _isCooldownActive = false;
    _coolDownTime = 0;
    _header = ChatColor.LIGHT_PURPLE + "[" + ChatColor.DARK_PURPLE + "Obsidian" + ChatColor.LIGHT_PURPLE + "] ";
    _resetWhenPlayerLeaving = false;
    _players = new ArrayList<Player>();
}
项目:world-of-icerealm    文件:BreakBlockSession.java   
public void activateBreakingZone() {
    if (!_isCooldownActive && _blockBroken) {
        _logger.info("activting");
        for (int i = 0; i < _qty; i++) {
            Location loc = _locations.clone();
            loc.setY(loc.getY() + 2);
            EntityType t = EntityHelper.getRandomEntity(_monsters);
            Entity l = _world.spawnCreature(loc, t);
            if (l instanceof Monster) {
                _spawnedMonsters.add((Monster)l);
                _logger.info(l.getEntityId() + " spawned at " + l.getLocation());
            }
        }

        org.bukkit.block.Block b = _world.getBlockAt(_locations);
        b.setType(_material);       
        _blockBroken = false;
    }
    else {
        _logger.info("not activting");  
    }




}
项目:world-of-icerealm    文件:FixedSpawner.java   
@Override
public void timeHasCome(long time) {
    if (_monsterSpawned.size() < _maxMonster) {
        Location random = _spawningZone.getRandomLocation(_spawningLocation.getWorld());
        EntityType creature = EntityUtilities.getEntityType(_monsters[RandomUtil.getRandomInt(_monsters.length)]);
        Monster m = (Monster)ScenarioService.getInstance().spawnCreature(_spawningLocation.getWorld(), random, creature, _healthModifier, _burn);
        m.setTarget(_players.get(RandomUtil.getRandomInt(_players.size())));

        ScenarioPlugin.logger.fine("Spawner at: " + _spawningLocation.getX() + "," + _spawningLocation.getZ() + " high: " + _spawningLocation.getY() + " - " + creature.toString() + " -> " + m.getTarget().getEntityId());

        _monsterSpawned.add(m);
        TimeServer.getInstance().addListener(this, _delayBetweenMonster);
    }


}
项目:world-of-icerealm    文件:RegularSpawnWave.java   
@Override
public void spawnWave() {
    if (_scenario.isActive() && _locations != null && _locations.size() > 0 && 
        _arrayPossibleMonster.length > 0 && getNbOfEntities() < _maxMonster) {

        for (Location l : _locations) {

            if (getNbOfEntities() < _maxMonster) {
                EntityType c = EntityUtilities.getEntityType(_arrayPossibleMonster[RandomUtil.getRandomInt(_arrayPossibleMonster.length)]);
                Entity e = ScenarioService.getInstance().spawnCreature(l.getWorld(), l, c, _healthModifier, false);
                _monsters.add(e);
                if (e instanceof Monster) {
                    Monster m = (Monster)e;
                    m.setTarget(_scenario.pickRandomPlayer());
                }
            }
        }

        if (_timeBetweenSpawn > 50) {
            TimeServer.getInstance().addListener(this, _timeBetweenSpawn);
        }

    }

}
项目:world-of-icerealm    文件:RegularSpawnWave.java   
@Override
public void processEntityDeath(Entity e) {
    if (_scenario.isActive()) {
        if (e instanceof Monster) {
            _monsters.remove((LivingEntity)e);

            if (_scenario.getEventListener() != null) {
                _scenario.getEventListener().monsterDied(e, _monsters.size());
            }
        }

        if (_monsters.size() == 0) {
            TimeServer.getInstance().removeListener(this);
            _scenario.waveIsDone();
        }
    }


}
项目:world-of-icerealm    文件:BasicMonsterWave.java   
public void spawnWave() {
    if (_scenario.isActive()) {
        for (int i = 0; i < _nbMonsters; i++) {
            // creation de la location et du monstre
            Location loc = _scenario.getWorldZone().getRandomLocationOutsideThisZone(_scenario.getWorld(), _exclude);
            EntityType type = EntityUtilities.getEntityType(possibleMonsters[RandomUtil.getRandomInt(possibleMonsters.length)]);            
            Entity living = _scenario.getWorld().spawnEntity(loc, type);

            if (living instanceof Monster) {
                Monster m = (Monster)living;
                m.setTarget(_scenario.pickRandomPlayer());
            }

            // adding to the table
            _monstersTable.add(living);
        }
    }


}
项目:world-of-icerealm    文件:Mayhem.java   
@EventHandler(priority = EventPriority.NORMAL)
public void monsterDies(EntityDeathEvent event) {

    if (_apocalypseOn && event.getEntity().getLastDamageCause().getCause() != DamageCause.FIRE_TICK) {

        if (event.getEntity() instanceof Monster) {
            _monsterDead++;
        }

        if (_monsterDead >= _maxMonsters) {
            _completed = true;
            distributeLoot();
            resetEvent();
        }       

        try {
            _spawner.spawnMonsterCloseToPlayer(event.getEntity().getLocation());
        }
        catch (Exception ex) {
            _logger.info("exception raised in Mayhem.monsterDies(EntityDeathEvent event) while using the ApocalypseSpawner");
        }

    }
}
项目:world-of-icerealm    文件:BarbarianRaid.java   
@EventHandler (priority = EventPriority.NORMAL)
public void playerDies(PlayerDeathEvent event) {
    Player p = event.getEntity();
    boolean playerRemoved = _players.remove(p);

    if (playerRemoved && _players.size() == 0 && _started) {
        EventActivator activator = new EventActivator(this);
        activator.run();

        if (_blockRestore != null) {
            _blockRestore.run();
        }
        for (Monster m : _monstersEntity) { 
            m.remove();
        }
        _monstersContainer.clear();
        _started = false;
    }
}
项目:world-of-icerealm    文件:MonsterLeach.java   
@Override
public void run() {

    Player p = Bukkit.getServer().getPlayer("punisher_malade");


    for (Monster e : _entities) {

        if (!e.isDead() && !_zone.isInside(e.getLocation())) {
            Location l = _zone.getRandomLocation(_zone.getWorld());
            _movement.moveEntityToLocation(e, l);
            if (p != null) {
                p.sendMessage(ChatColor.GRAY + "DEBUG: " + ChatColor.WHITE + e.getType() + " moving to " + l.getX() + ", " + l.getY() + ", " + l.getZ());
            }
        }
    }

}
项目:world-of-icerealm    文件:CustomMonsterListener.java   
@EventHandler(priority = EventPriority.NORMAL)
public void onMonsterDamage(EntityDamageEvent event) {      

    if (event instanceof EntityDamageByEntityEvent) {

        EntityDamageByEntityEvent damageEvent = (EntityDamageByEntityEvent)event;
        CustomMonster damager = _damageMonsters.get(damageEvent.getDamager().getEntityId());

        if (damager != null && damageEvent.getDamager() instanceof Monster && event.getEntity() instanceof Player) {
            int damageDone = (int)(event.getDamage() + (2 * (int)damager.DamageModifier));
            //logger.info("damage done is: " + damageDone + " modifier is: " + (int)damager.DamageModifier + " base damage is: " + event.getDamage());
            event.setDamage(damageDone);
        }
    }

    CustomMonster noBurn = _noBurnMonsters.get(event.getEntity().getEntityId());
    if (noBurn != null && event.getEntity() instanceof Monster && event.getCause() == DamageCause.FIRE_TICK) {
        event.setCancelled(true);
        event.getEntity().setFireTicks(0);
    }
}
项目:RedProtect    文件:RPEntityListener.java   
@EventHandler
public void WitherBlockBreak(EntityChangeBlockEvent event) {
    RedProtect.get().logger.debug("RPEntityListener - Is EntityChangeBlockEvent");
    if (event.isCancelled()) {
        return;
    }
    Entity e = event.getEntity();       
    if (e instanceof Monster) {
        Region r = RedProtect.get().rm.getTopRegion(event.getBlock().getLocation());
        if (!cont.canWorldBreak(event.getBlock())){                             
            event.setCancelled(true);
            return;
        } 
        if (r != null && !r.canMobLoot()){
           event.setCancelled(true);
        }
    }
}
项目:RedProtect    文件:RPGlobalListener.java   
@EventHandler(priority = EventPriority.HIGHEST)
   public void onEntityDamage(EntityDamageEvent e) {
    Region r = RedProtect.get().rm.getTopRegion(e.getEntity().getLocation());
    if (r != null){
        return;
    }
    Entity ent = e.getEntity();
    if (ent instanceof LivingEntity && !(ent instanceof Monster)){
        if (RPConfig.getGlobalFlagBool(ent.getWorld().getName()+".invincible")){
            if (ent instanceof Animals){
                ((Animals)ent).setTarget(null);
            }
            e.setCancelled(true); 
        }
    }               
}
项目:RedProtect    文件:RPGlobalListener.java   
@EventHandler
 public void MonsterBlockBreak(EntityChangeBlockEvent event) {
    Entity e = event.getEntity();       
    Block b = event.getBlock();
    Region r = RedProtect.get().rm.getTopRegion(event.getBlock().getLocation());
    if (r != null){
       return;
     }

    if (b != null){
        RedProtect.get().logger.debug("RPGlobalListener - Is EntityChangeBlockEvent event. Block: "+b.getType().name());
    }

    if (e instanceof Monster) {
         if (!RPConfig.getGlobalFlagBool(e.getWorld().getName()+".entity-block-damage")){
            event.setCancelled(true);
         }
    }
    if (e instanceof Player){
        Player p = (Player) e;
        if (!bypassBuild(p, b, 2)){
            event.setCancelled(true);
}
    }
 }
项目:RedProtect    文件:RPBlockListener.java   
@EventHandler
 public void onFrameBrake(HangingBreakByEntityEvent e) {
    RedProtect.get().logger.debug("Is BlockListener - HangingBreakByEntityEvent event");
    if (e.isCancelled()){
        return;
    }

    Entity remover = e.getRemover();
    Entity ent = e.getEntity();
    Location l = e.getEntity().getLocation();

    if ((ent instanceof ItemFrame || ent instanceof Painting) && remover instanceof Monster) {
        Region r = RedProtect.get().rm.getTopRegion(l);
        if (r != null && !r.canMobLoot()){
            e.setCancelled(true);
}
     }    
 }
项目:RedProtect    文件:RPPlayerListener.java   
@EventHandler
public void onHangingDamaged(HangingBreakByEntityEvent e) {
    if (e.isCancelled()) {
        return;
    }
    RedProtect.get().logger.debug("Is RPPlayerListener - HangingBreakByEntityEvent event");
    Entity ent = e.getRemover();
    Location loc = e.getEntity().getLocation();
    Region r = RedProtect.get().rm.getTopRegion(loc);

    if (ent instanceof Player) {
        Player player = (Player)ent; 
        if (r != null && !r.canBuild(player) && !r.canBreak(e.getEntity().getType())) {
            RPLang.sendMessage(player, "blocklistener.region.cantbuild");
            e.setCancelled(true);
        }
    } 
    if (ent instanceof Monster){
        if (r != null && !r.canMobLoot()) {
            e.setCancelled(true);
        }
    }
}
项目:askygrid    文件:GridManager.java   
/**
    * Removes monsters around location l
    * 
    * @param l
    */
   public void removeMobs(final Location l) {
final int px = l.getBlockX();
final int py = l.getBlockY();
final int pz = l.getBlockZ();
for (int x = -1; x <= 1; x++) {
    for (int z = -1; z <= 1; z++) {
    final Chunk c = l.getWorld().getChunkAt(new Location(l.getWorld(), px + x * 16, py, pz + z * 16));
    if (c.isLoaded()) {
        for (final Entity e : c.getEntities()) {
        if (e instanceof Monster && !Settings.mobWhiteList.contains(e.getType())) {
            e.remove();
        }
        }
    }
    }
}
   }
项目:uSkyBlock    文件:LimitLogic.java   
public CreatureType getCreatureType(EntityType entityType) {
    if (Monster.class.isAssignableFrom(entityType.getEntityClass())
            || WaterMob.class.isAssignableFrom(entityType.getEntityClass())
            || Slime.class.isAssignableFrom(entityType.getEntityClass())
            || Ghast.class.isAssignableFrom(entityType.getEntityClass())
            ) {
        return CreatureType.MONSTER;
    } else if (Animals.class.isAssignableFrom(entityType.getEntityClass())) {
        return CreatureType.ANIMAL;
    } else if (Villager.class.isAssignableFrom(entityType.getEntityClass())) {
        return CreatureType.VILLAGER;
    } else if (Golem.class.isAssignableFrom(entityType.getEntityClass())) {
        return CreatureType.GOLEM;
    }
    return CreatureType.UNKNOWN;
}
项目:uSkyBlock    文件:uSkyBlock.java   
public void removeCreatures(final Location l) {
    if (!Settings.island_removeCreaturesByTeleport || l == null) {
        return;
    }
    final int px = l.getBlockX();
    final int py = l.getBlockY();
    final int pz = l.getBlockZ();
    for (int x = -1; x <= 1; ++x) {
        for (int z = -1; z <= 1; ++z) {
            final Chunk c = l.getWorld().getChunkAt(new Location(l.getWorld(), (double) (px + x * 16), (double) py, (double) (pz + z * 16)));
            Entity[] entities;
            for (int length = (entities = c.getEntities()).length, i = 0; i < length; ++i) {
                final Entity e = entities[i];
                if (e instanceof Monster && e.getCustomName() == null) { // Remove all monsters that are not named
                    e.remove();
                }
            }
        }
    }
}
项目:civcraft    文件:MobListener.java   
@EventHandler(priority = EventPriority.NORMAL)
public void onChunkLoad(ChunkLoadEvent event) {

    for (Entity e : event.getChunk().getEntities()) {
        if (e instanceof Monster) {
            e.remove();
            return;
        }

        if (e instanceof IronGolem) {
            e.remove();
            return;
        }
    }

}
项目:Zephyrus-II    文件:ConfuseSpell.java   
@Override
public CastResult onCast(User user, int power, String[] args) {
    int radius = this.radius * power;
    List<Entity> entityList = user.getPlayer().getNearbyEntities(radius, radius, radius);
    List<Monster> monsterList = new ArrayList<Monster>();
    for (Entity entity : entityList) {
        if (entity instanceof Monster) {
            monsterList.add((Monster) entity);
        }
    }
    for (int i = 0; i < monsterList.size(); i++) {
        int targetIndex = i + 1;
        if (targetIndex >= monsterList.size()) {
            targetIndex = 0;
        }
        Monster monster = monsterList.get(i);
        Monster target = monsterList.get(targetIndex);
        monster.setTarget(target);
        Object monsterHandle = NMSUtils.getHandle(monster);
        Object targetHandle = NMSUtils.getHandle(target);
        ReflectionUtils.invokeMethod(monsterHandle, "setGoalTarget", targetHandle);
        ParticleEffects.sendParticle(Particle.ANGRY_VILLAGER, monster.getTarget().getLocation().add(0, 1, 0),
                0.25F, 0.25F, 0.25F, 5, 5);
    }
    return CastResult.SUCCESS;
}
项目:DDCustomPlugin    文件:PeacefulGriefFree.java   
public void clearEvil() {
        for (Player player : Bukkit.getOnlinePlayers()) {
//          if (peacefulPlayer.contains(player) && player.getWorld().getName().equals("GriefFree")) {
            if (player.getWorld().getName().equals("GriefFree")) {
                PlayerInventory pinv = player.getInventory();
                if (pinv.getHelmet() == null && pinv.getChestplate() == null && pinv.getLeggings() == null && pinv.getBoots() != null && pinv.getBoots().getType() == Material.GOLD_BOOTS) {
                    for (Entity e : player.getNearbyEntities(30, 30, 30)) {
                        if (e instanceof LivingEntity) {
                            if (e instanceof Monster) {
                                e.remove();
                            }
                        }
                    }
                }
            }
        }
    }
项目:ReUtil    文件:FileComponentPersistence.java   
protected static String getKey(Object object) {
    if(object instanceof Entity) {
        Entity entity = (Entity)object;
        String category = "entity";
        if(object instanceof Player) {
            category = "players";
        } else if(object instanceof Monster) {
            category = "monster";
        } else if(object instanceof LivingEntity) {
            category = "mob";
        }
        return category + "/" + entity.getUniqueId();
    } else if(object instanceof Block) {
        Block block = (Block)object;
        return "block" + "/" + block.getX() + "," + block.getY() + "," + block.getZ();
    }
    throw new NotImplementedException("Only entities and blocks are supported");
}
项目:Controllable-Mobs-API    文件:ControllableMobHelper.java   
@SuppressWarnings("deprecation")
public static Class<? extends net.minecraft.server.v1_7_R1.Entity> getNmsEntityClass(final Class<? extends LivingEntity> entityClass) throws IllegalArgumentException {
    if(entityClass==null) throw new IllegalArgumentException("entityClass must not be null");
    if(entityClass==HumanEntity.class || entityClass==Player.class) return net.minecraft.server.v1_7_R1.EntityHuman.class;
    if(entityClass==Monster.class) return net.minecraft.server.v1_7_R1.EntityMonster.class;
    if(entityClass==Creature.class) return net.minecraft.server.v1_7_R1.EntityCreature.class;
    if(entityClass==Animals.class) return net.minecraft.server.v1_7_R1.EntityAnimal.class;
    if(entityClass==LivingEntity.class) return net.minecraft.server.v1_7_R1.EntityLiving.class;

    for(EntityType entityType: EntityType.values()) {
        if(entityType.getEntityClass()==null || entityType.getTypeId()==-1) continue;
        if(entityClass.equals(entityType.getEntityClass())) {
            return getNmsEntityClass(entityType);
        }
    }

    throw new IllegalArgumentException("Class "+entityClass.getSimpleName()+" is not resolvable to an EntityType");
}
项目:MythicDrops    文件:ItemSpawningListener.java   
@EventHandler(priority = EventPriority.LOWEST)
public void onCreatureSpawnEventLowest(CreatureSpawnEvent event) {
  if (!(event.getEntity() instanceof Monster) || event.isCancelled()) {
    return;
  }
  if (!mythicDrops.getConfigSettings().getEnabledWorlds().contains(event.getEntity().getWorld()
      .getName())) {
    return;
  }
  if (mythicDrops.getConfigSettings().isGiveAllMobsNames()) {
    nameMobs(event.getEntity());
  }
  if (mythicDrops.getConfigSettings().isBlankMobSpawnEnabled()) {
    event.getEntity().getEquipment().clear();
    if (event.getEntity() instanceof Skeleton && !mythicDrops.getConfigSettings()
        .isSkeletonsSpawnWithoutBows()) {
      event.getEntity().getEquipment().setItemInMainHand(new ItemStack(Material.BOW, 1));
    }
  }
  event.getEntity()
      .setCanPickupItems(mythicDrops.getConfigSettings().isMobsPickupEquipment());
}
项目:Shopkeepers    文件:LivingEntityShopListener.java   
@EventHandler(ignoreCancelled = true)
void onEntityDamage(EntityDamageEvent event) {
    Entity entity = event.getEntity();
    // block damaging of shopkeepers
    if (plugin.isShopkeeper(entity)) {
        event.setCancelled(true);
        if (event instanceof EntityDamageByEntityEvent) {
            EntityDamageByEntityEvent evt = (EntityDamageByEntityEvent) event;
            if (evt.getDamager() instanceof Monster) {
                Monster monster = (Monster) evt.getDamager();
                // reset target, future targeting should get prevented somewhere else:
                if (entity.equals(monster.getTarget())) {
                    monster.setTarget(null);
                }
            }
        }
    }
}
项目:Zephyrus    文件:Frenzy.java   
@Override
public boolean run(Player player, String[] args, int power) {
    int r = getConfig().getInt(getName() + ".radius");
    r = r*power;
    Monster[] e = getNearbyEntities(player.getLocation(), r);
    for (int i = 0; i < e.length; i++) {
        int index = i + 1;
        if (index >= e.length) {
            index = 0;
        }
        e[i].setTarget(e[index]);
        Object m = NMSHandler.getHandle(e[i]);
        Object tar = NMSHandler.getHandle(e[index]);
        Method method = ReflectionUtils.getMethod(m.getClass(), "setGoalTarget");
        try {
            method.invoke(m, tar);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        Location loc = e[i].getLocation();
        loc.setY(loc.getY() + 1);
        Effects.playEffect(ParticleEffects.ANGRY_VILLAGER, loc, 0.25F, 0.25F, 0.25F, 5, 10);
    }
    return true;
}
项目:Zephyrus    文件:Frenzy.java   
private static Monster[] getNearbyEntities(Location l, int radius) {
    int chunkRadius = radius < 16 ? 1 : (radius - (radius % 16)) / 16;
    HashSet<Monster> radiusEntities = new HashSet<Monster>();
    for (int chX = 0 - chunkRadius; chX <= chunkRadius; chX++) {
        for (int chZ = 0 - chunkRadius; chZ <= chunkRadius; chZ++) {
            int x = (int) l.getX(), y = (int) l.getY(), z = (int) l.getZ();
            for (Entity e : new Location(l.getWorld(), x + (chX * 16), y, z + (chZ * 16)).getChunk().getEntities()) {
                if (e.getLocation().distance(l) <= radius && e.getLocation().getBlock() != l.getBlock()) {
                    if (e instanceof Monster) {
                        radiusEntities.add((Monster) e);
                    }
                }
            }
        }
    }
    return radiusEntities.toArray(new Monster[radiusEntities.size()]);
}
项目:Zephyrus    文件:Confuse.java   
@Override
public boolean run(Player player, String[] args, int power) {
    int r = getConfig().getInt(getName() + ".radius");
    r = r*power;
    Monster[] e = getNearbyEntities(player.getLocation(), r);
    for (int i = 0; i < e.length; i++) {
        int index = i + 1;
        if (index >= e.length) {
            index = 0;
        }
        e[i].setTarget(e[index]);
        Object m = NMSHandler.getHandle(e[i]);
        Object tar = NMSHandler.getHandle(e[index]);
        Method method = ReflectionUtils.getMethod(m.getClass(), "setGoalTarget");
        try {
            method.invoke(m, tar);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        Location loc = e[i].getLocation();
        loc.setY(loc.getY() + 1);
        Effects.playEffect(ParticleEffects.ANGRY_VILLAGER, loc, 0.25F, 0.25F, 0.25F, 5, 5);
    }
    return true;
}
项目:Zephyrus    文件:Confuse.java   
public static Monster[] getNearbyEntities(Location l, int radius) {
    int chunkRadius = radius < 16 ? 1 : (radius - (radius % 16)) / 16;
    HashSet<Monster> radiusEntities = new HashSet<Monster>();
    for (int chX = 0 - chunkRadius; chX <= chunkRadius; chX++) {
        for (int chZ = 0 - chunkRadius; chZ <= chunkRadius; chZ++) {
            int x = (int) l.getX(), y = (int) l.getY(), z = (int) l.getZ();
            for (Entity e : new Location(l.getWorld(), x + (chX * 16), y, z + (chZ * 16)).getChunk().getEntities()) {
                if (e.getLocation().distance(l) <= radius && e.getLocation().getBlock() != l.getBlock()) {
                    if (e instanceof Monster) {
                        radiusEntities.add((Monster) e);
                    }
                }
            }
        }
    }
    return radiusEntities.toArray(new Monster[radiusEntities.size()]);
}
项目:bskyblock    文件:IslandGuard.java   
/**
 * Prevents mobs spawning at spawn or in an island
 *
 * @param e
 */
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onMobSpawn(final CreatureSpawnEvent e) {
    if (DEBUG2) {
        plugin.getLogger().info("on Mob spawn" + e.getEventName());
    }
    // if grid is not loaded yet, return.
    if (plugin.getIslands() == null) {
        return;
    }
    // If not in the right world, return
    if (!Util.inWorld(e.getEntity())) {
        return;
    }
    // Deal with natural spawning
    if (e.getEntity() instanceof Monster || e.getEntity() instanceof Slime) {
        if (!actionAllowed(e.getLocation(), SettingsFlag.MONSTER_SPAWN)) {
            if (DEBUG2)
                plugin.getLogger().info("Natural monster spawn cancelled.");
            // Mobs not allowed to spawn
            e.setCancelled(true);
            return;
        }
    }
    if (e.getEntity() instanceof Animals) {
        if (!actionAllowed(e.getLocation(), SettingsFlag.ANIMAL_SPAWN)) {
            // Animals are not allowed to spawn
            if (DEBUG2)
                plugin.getLogger().info("Natural animal spawn cancelled.");
            e.setCancelled(true);
        }
    }
}
项目:WC    文件:WorldManager.java   
private void exterminate(){
    world.getEntities().forEach(e -> {
        if (e instanceof Monster || e instanceof Animals){
            LivingEntity le = (LivingEntity)e;
            le.damage(le.getMaxHealth());
        }
        if (e instanceof Item){
            e.remove();
        }
    });
}
项目:mczone    文件:Arena.java   
public void loadWorld() {
    new WorldCreator(worldName).createWorld();
    new WorldCreator(getCurrent().worldName).createWorld();
    getWorld().setAutoSave(false);
    setState(ArenaState.WAITING);

    for (Entity e : getWorld().getEntities())
        if (e instanceof Monster)
            e.remove();
}
项目:mczone    文件:Arena.java   
public void loadWorld() {
    new WorldCreator(worldName).createWorld();
    new WorldCreator(getCurrent().worldName).createWorld();
    getWorld().setAutoSave(false);
    setState(ArenaState.WAITING);

    for (Entity e : getWorld().getEntities())
        if (e instanceof Monster)
            e.remove();
}
项目:NeverLag    文件:WorldInfo.java   
public WorldInfo(World world) {
    this.worldName = world.getName();
    this.totalOnline = world.getPlayers().size();
    for (Entity entity : world.getEntities()) {
        this.totalEntity++;
        if (entity instanceof Animals) {
            this.totalAnimals++;
        } else if (entity instanceof Monster) {
            this.totalMonsters++;
        } else if (entity instanceof Item) {
            this.totalDropItem++;
        }
    }
    for (Chunk loadedChunk : world.getLoadedChunks()) {
        this.totalChunk++;
        for (BlockState tiles : loadedChunk.getTileEntities()) {
            this.totalTiles++;
            if (tiles instanceof Hopper) {
                this.totalHopper++;
            } else if (tiles instanceof Chest) {
                this.totalChest++;
            } else if (tiles instanceof Dispenser) {
                this.totalDispenser++;
            } else if (tiles instanceof Dropper) {
                this.totalDropper++;
            } else if (tiles instanceof BrewingStand) {
                this.totalBrewingStand++;
            }
        }

    }
}
项目:PA    文件:Crucio.java   
public void spell(TOAUser u) {
    u.getWorld().getNearbyEntities(u.getLoc(), 2, 2, 2).stream().filter(e -> e.getType() != EntityType.PLAYER).filter(e -> e instanceof Monster).forEach(e -> {
        Monster m = (Monster) e;
        m.damage(20 + (u.getUserData().getLvl() * 0.3));
        m.setVelocity(new Vector(0, 4, 0));
    });
}
项目:PA    文件:Cadenas.java   
public void play(TOAUser u) {
    if (!canUse(u)) return;
    if (isInCooldown(u, getName())) return;

    if (u.getUserData().getKit() == 2 && r.nextInt(10) + 1 <= 3) {
        u.sendMessage(PAData.TOA.getPrefix() + "&cTu habilidad ha fallado");
        return;
    }

    u.getWorld().getNearbyEntities(u.getLoc(), 5, 3, 5).stream().filter(e -> !e.getType().equals(EntityType.PLAYER)).forEach(e -> {
        if (e instanceof Monster) ((Monster) e).addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 40, 2, true, false));
    });
    cool.setOnCooldown(getName());
}
项目:BiteSkywars    文件:ArenaManager.java   
public void RemoveMonster(World world){
    for(Entity e : world.getEntities()){
        if(e instanceof Monster)
        {
            e.remove();
        }
    }
}
项目:GriefPreventionFlags    文件:FlagDef_NoMonsterSpawns.java   
private boolean isMonster(Entity entity)
{
    if(entity instanceof Monster) return true;

    EntityType type = entity.getType();
    if(type == EntityType.GHAST || type == EntityType.MAGMA_CUBE || type == EntityType.SHULKER) return true;

    if(type == EntityType.RABBIT)
    {
        Rabbit rabbit = (Rabbit)entity;
        if(rabbit.getRabbitType() == Rabbit.Type.THE_KILLER_BUNNY) return true;
    }

    return false;
}