コード例 #1
0
 @EventHandler(priority = EventPriority.LOWEST)
 public void onBlockBreak(BlockBreakEvent event) {
   if (event.getBlock().getType() == Material.MOB_SPAWNER && SpawnerAdjuster.useBlockListener) {
     if (event.getPlayer() != null) {
       if (!SpawnerAdjuster.permCheck(event.getPlayer(), "SpawnerAdjuster.BreakSpawners")) {
         event.setCancelled(true);
         return;
       }
     }
     if (SpawnerAdjuster.permCheck(event.getPlayer(), "SpawnerAdjuster.DropSpawners")
         && SpawnerAdjuster.allowDroppedSpawners) {
       if (!event.isCancelled()) {
         short asdf = 1;
         ItemStack spawnerstack =
             new ItemStack(event.getBlock().getType(), 1, asdf, event.getBlock().getData());
         event
             .getBlock()
             .getLocation()
             .getWorld()
             .dropItemNaturally(event.getBlock().getLocation(), spawnerstack);
       }
     }
   }
 }
コード例 #2
0
  private void forceSpawn(CreatureSpawner spawner) {

    int range = 1;
    boolean reset = false;
    // if(spawner.getCreatureType() == CreatureType.SKELETON)
    for (int dx = -(range); dx <= range && !reset; dx++) {
      for (int dy = -(range); dy <= range && !reset; dy++) {
        for (int dz = -(range); dz <= range && !reset; dz++) {
          if (spawner.getBlock().getRelative(dx, dy, dz).getType() == Material.AIR) {
            LivingEntity spawnedEnt =
                spawner
                    .getWorld()
                    .spawnCreature(
                        spawner.getBlock().getRelative(dx, dy, dz).getLocation(),
                        spawner.getSpawnedType());
            List<Entity> entList =
                spawnedEnt.getNearbyEntities(
                    SpawnerAdjuster.spawnerEntCheckRadius - 1,
                    SpawnerAdjuster.spawnerEntCheckRadius - 1,
                    SpawnerAdjuster.spawnerEntCheckRadius - 1);
            /// int i = 0; //index
            int numEntsofType = 0; // number of matching ents
            /**
             * this check needs work. Next version! while(i <= entList.size()) { if(entList.get(i)
             * instanceof LivingEntity) { numEntsofType++; } i++; }
             */
            numEntsofType = entList.size();
            if (numEntsofType >= SpawnerAdjuster.maxNumberOfEntsNearSpawner
                && SpawnerAdjuster.useRadiusCheck) {
              spawnedEnt.remove();
            }
            reset = true;
            /* anti-munson implement here */
            if (!SpawnerAdjuster.canSpawn(spawner, spawnedEnt)) {
              spawnedEnt.remove();
            }
            /* end anti munson implement */
            /* prevent pig spawns if defined as such */
            if (spawnedEnt.getType() == EntityType.PIG && SpawnerAdjuster.advanced_stopPigSpawns) {
              spawnedEnt.remove();
            }
          }
        }
      }
    }
    spawner.setDelay(600);
  }