Java 类net.minecraft.block.BlockMobSpawner 实例源码

项目:SpawnerCraft2    文件:DropsListener.java   
@SubscribeEvent
public void onBlockDrops(BlockEvent.HarvestDropsEvent event)
{
    if (event.state.getBlock() instanceof BlockMobSpawner)
    {
        if (ConfigHandler.spawnerDropRequireSilk)
        {
            if (event.harvester != null && EnchantmentHelper.getSilkTouchModifier(event.harvester))
            {
                event.drops.add(new ItemStack(ModBlocks.mobCage, 1));
            }
        }
        else
        {
            event.drops.add(new ItemStack(ModBlocks.mobCage, 1));
        }

        // Drop some Essence of Mob?
        // No can do, can't get spawner to tell me what mob it is spawning.
    }
}
项目:Generatormods    文件:TemplateRule.java   
public boolean hasUndeadSpawner(){
    if(extraData!=null)
        for (int i = 0; i<blockIDs.length; i++){
            //Zombie, Skeleton, Creeper, EASY, UPRIGHT spawners
            if(blockIDs[i] instanceof BlockMobSpawner) {
                String txt = extraData[i];
                if (txt != null && (txt.equals("Zombie") || txt.equals("Skeleton") || txt.equals("Creeper") || txt.equals("EASY") || txt.equals("UPRIGHT")))
                    return true;
            }
        }
    return false;
}
项目:EnderIO    文件:BrokenSpawnerHandler.java   
@SubscribeEvent
public static void onBreakEvent(BlockEvent.BreakEvent evt) {
  if (evt.getState().getBlock() instanceof BlockMobSpawner) {
    if (evt.getPlayer() != null && !evt.getPlayer().capabilities.isCreativeMode && !evt.getPlayer().world.isRemote && !evt.isCanceled()) {
      TileEntity tile = evt.getPlayer().world.getTileEntity(NullHelper.notnullF(evt.getPos(), "BlockEvent.BreakEvent.getPos()"));
      if (tile instanceof TileEntityMobSpawner) {

        if (Math.random() > SpawnerConfig.brokenSpawnerDropChance.get()) {
          return;
        }

        ItemStack equipped = evt.getPlayer().getHeldItemMainhand();
        if (Prep.isValid(equipped) && SpawnerConfig.brokenSpawnerToolBlacklist.get().contains(equipped)) {
          return;
        }

        TileEntityMobSpawner spawner = (TileEntityMobSpawner) tile;
        MobSpawnerBaseLogic logic = spawner.getSpawnerBaseLogic();
        ResourceLocation entityName = getEntityName(logic);
        if (entityName != null && !isBlackListed(entityName)) {
          final CapturedMob capturedMob = CapturedMob.create(entityName);
          if (capturedMob != null) {
            ItemStack drop = capturedMob.toStack(ModObject.itemBrokenSpawner.getItemNN(), 0, 1);
            dropCache.put(evt.getPos().toImmutable(), drop);

            for (int i = (int) (Math.random() * 7); i > 0; i--) {
              setSpawnDelay(logic);
              logic.updateSpawner();
            }
          } else {
            dropCache.put(evt.getPos().toImmutable(), Prep.getEmpty());
          }
        }
      }
    } else {
      dropCache.put(evt.getPos().toImmutable(), Prep.getEmpty());
    }
  }
}
项目:EnderIO    文件:BrokenSpawnerHandler.java   
@SubscribeEvent
public static void onHarvestDropsEvent(BlockEvent.HarvestDropsEvent evt) {
  if (!evt.isCanceled() && evt.getState().getBlock() instanceof BlockMobSpawner) {
    if (dropCache.containsKey(evt.getPos())) {
      ItemStack stack = dropCache.get(evt.getPos());
      if (Prep.isValid(stack)) {
        evt.getDrops().add(stack);
        dropCache.put(evt.getPos().toImmutable(), Prep.getEmpty());
      }
    } else {
      // A spawner was broken---but not by a player. The TE has been
      // invalidated already, but we might be able to recover it.
      try {
        for (Object object : evt.getWorld().loadedTileEntityList) {
          if (object instanceof TileEntityMobSpawner) {
            TileEntityMobSpawner spawner = (TileEntityMobSpawner) object;
            BlockPos p = spawner.getPos();
            if (spawner.getWorld() == evt.getWorld() && p.equals(evt.getPos())) {
              // Bingo!
              MobSpawnerBaseLogic logic = spawner.getSpawnerBaseLogic();
              ResourceLocation entityName = getEntityName(logic);
              if (entityName != null && !isBlackListed(entityName)) {
                final CapturedMob capturedMob = CapturedMob.create(entityName);
                if (capturedMob != null) {
                  evt.getDrops().add(capturedMob.toStack(ModObject.itemBrokenSpawner.getItemNN(), 0, 1));
                }
              }
            }
          }
        }
      } catch (Exception e) {
        // Risky recovery failed. Happens.
      }
    }
  }
}
项目:Generatormods    文件:TemplateRule.java   
public boolean isSpecial(Block block){
    return block instanceof BlockAir || block instanceof BlockMobSpawner || block instanceof BlockChest;
}