コード例 #1
0
  @EventHandler(priority = EventPriority.HIGH)
  public void handleCustomBlockDrops(BlockBreakEvent event) {

    if (!EventUtil.passesFilter(event)) return;

    if (CraftBookPlugin.inst().getConfiguration().customDropPermissions
        && !CraftBookPlugin.inst()
            .wrapPlayer(event.getPlayer())
            .hasPermission("craftbook.mech.drops")) return;

    if (event.getPlayer().getGameMode() == GameMode.CREATIVE) // Don't drop in creative.
    return;

    int id = event.getBlock().getTypeId();
    byte data = event.getBlock().getData();

    CustomDropManager.CustomItemDrop drop = customDrops.getBlockDrops(id);

    if (drop != null) {
      CustomDropManager.DropDefinition[] drops = drop.getDrop(data);
      if (drops != null) {
        Location l = event.getBlock().getLocation();
        World w = event.getBlock().getWorld();
        // Add the custom drops
        for (CustomDropManager.DropDefinition dropDefinition : drops) {
          ItemStack stack = dropDefinition.getItemStack();
          if (ItemUtil.isStackValid(stack)) w.dropItemNaturally(l, stack);
        }

        if (!drops[0].append) {
          event.getBlock().setType(Material.AIR);
          event.setCancelled(true);
          ((ExperienceOrb) event.getBlock().getWorld().spawnEntity(l, EntityType.EXPERIENCE_ORB))
              .setExperience(event.getExpToDrop());
        }
      }
    }
  }