类org.bukkit.event.block.BlockDispenseEvent源码实例Demo

下面列出了怎么用org.bukkit.event.block.BlockDispenseEvent的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: GriefDefender   文件: BlockEventHandler.java
@EventHandler(priority = EventPriority.LOWEST)
public void onBlockDispense(BlockDispenseEvent event) {
    final Block block = event.getBlock();
    final World world = event.getBlock().getWorld();
    if (!GriefDefenderPlugin.getInstance().claimsEnabledForWorld(world.getUID())) {
        return;
    }

    final Location location = block.getLocation();
    final GDClaimManager claimWorldManager = GriefDefenderPlugin.getInstance().dataStore.getClaimWorldManager(world.getUID());
    final GDChunk gpChunk = claimWorldManager.getChunk(block.getChunk());
    final GDPermissionUser user = gpChunk.getBlockOwner(location);
    if (user != null) {
        final BlockFace face = NMSUtil.getInstance().getFacing(block);
        final Location faceLocation = BlockUtil.getInstance().getBlockRelative(location, face);
        final GDClaim targetClaim = this.storage.getClaimAt(faceLocation);
        final ItemStack activeItem = user != null && user.getOnlinePlayer() != null ? NMSUtil.getInstance().getActiveItem(user.getOnlinePlayer()) : null;
        final Tristate result = GDPermissionManager.getInstance().getFinalPermission(event, location, targetClaim, Flags.INTERACT_BLOCK_SECONDARY, activeItem, event.getBlock(), user, TrustTypes.BUILDER, true);
        if (result == Tristate.FALSE) {
            event.setCancelled(true);
        } else {
            GDCauseStackManager.getInstance().pushCause(user);
        }
    }
}
 
源代码2 项目: PGM   文件: BlockTransformListener.java
@EventWrapper
public void onDispenserDispense(final BlockDispenseEvent event) {
  if (Materials.isBucket(event.getItem())) {
    // Yes, the location the dispenser is facing is stored in "velocity" for some ungodly reason
    Block targetBlock = event.getVelocity().toLocation(event.getBlock().getWorld()).getBlock();
    Material contents = Materials.materialInBucket(event.getItem());

    if (Materials.isLiquid(contents) || (contents == Material.AIR && targetBlock.isLiquid())) {
      callEvent(
          event,
          targetBlock.getState(),
          BlockStates.cloneWithMaterial(targetBlock, contents),
          Trackers.getOwner(event.getBlock()));
    }
  }
}
 
源代码3 项目: civcraft   文件: BlockListener.java
@EventHandler(priority = EventPriority.NORMAL) 
public void onBlockDispenseEvent(BlockDispenseEvent event) {
	ItemStack stack = event.getItem();
	if (stack != null) {
		if (event.getItem().getType().equals(Material.POTION)) {
			int effect = event.getItem().getDurability() & 0x000F;			
			if (effect == 0xE) { 
				event.setCancelled(true);
				return;
			}
		}

		if (event.getItem().getType().equals(Material.INK_SACK)) {
			//if (event.getItem().getDurability() == 15) { 
				event.setCancelled(true);
				return;
			//}
		}
	}
}
 
源代码4 项目: Slimefun4   文件: DispenserListener.java
@EventHandler
public void onBlockDispensing(BlockDispenseEvent e) {
    Block b = e.getBlock();

    if (b.getType() == Material.DISPENSER && b.getRelative(BlockFace.DOWN).getType() != Material.HOPPER) {
        SlimefunItem machine = BlockStorage.check(b);

        if (machine != null) {
            machine.callItemHandler(BlockDispenseHandler.class, handler -> {
                Dispenser dispenser = (Dispenser) b.getState();
                BlockFace face = ((Directional) b.getBlockData()).getFacing();
                Block block = b.getRelative(face);
                handler.onBlockDispense(e, dispenser, block, machine);
            });
        }
    }
}
 
源代码5 项目: askyblock   文件: IslandGuard.java
/**
 * Prevents water from being dispensed in hell biomes
 *
 * @param e - event
 */
@EventHandler(priority = EventPriority.LOW)
public void onNetherDispenser(final BlockDispenseEvent e) {
    if (DEBUG) {
        plugin.getLogger().info(e.getEventName());
    }
    if (e.getBlock().getWorld().getEnvironment().equals(Environment.NETHER) || !inWorld(e.getBlock().getLocation()) || !e.getBlock().getBiome().equals(Biome.HELL)) {
        return;
    }
    // plugin.getLogger().info("DEBUG: Item being dispensed is " +
    // e.getItem().getType().toString());
    if (e.getItem().getType().equals(Material.WATER_BUCKET)) {
        e.setCancelled(true);
        if (plugin.getServer().getVersion().contains("(MC: 1.8") || plugin.getServer().getVersion().contains("(MC: 1.7")) {
            e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.valueOf("FIZZ"), 1F, 2F);
        } else {
            e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_CREEPER_PRIMED, 1F, 2F);
        }
    }
}
 
源代码6 项目: PGM   文件: ItemModifyMatchModule.java
@EventHandler
public void onArmorDispense(BlockDispenseEvent event) {
  // This covers armor being equipped by a dispenser, which does not call any of the other events
  ItemStack stack = event.getItem();
  if (applyRules(stack)) {
    event.setItem(stack);
  }
}
 
源代码7 项目: InventoryGui   文件: InventoryGui.java
public void unregister() {
    InventoryClickEvent.getHandlerList().unregister(this);
    InventoryDragEvent.getHandlerList().unregister(this);
    InventoryCloseEvent.getHandlerList().unregister(this);
    InventoryMoveItemEvent.getHandlerList().unregister(this);
    BlockDispenseEvent.getHandlerList().unregister(this);
    BlockBreakEvent.getHandlerList().unregister(this);
    EntityDeathEvent.getHandlerList().unregister(this);
}
 
源代码8 项目: ProjectAres   文件: BlockTransformListener.java
@EventWrapper
public void onDispenserDispense(final BlockDispenseEvent event) {
    if(Materials.isBucket(event.getItem())) {
        // Yes, the location the dispenser is facing is stored in "velocity" for some ungodly reason
        Block targetBlock = event.getVelocity().toLocation(event.getBlock().getWorld()).getBlock();
        Material contents = Materials.materialInBucket(event.getItem());

        if(Materials.isLiquid(contents) || (contents == Material.AIR && targetBlock.isLiquid())) {
            callEvent(event, targetBlock.getState(), BlockStateUtils.cloneWithMaterial(targetBlock, contents), blockResolver.getOwner(event.getBlock()));
        }
    }
}
 
源代码9 项目: ProjectAres   文件: ItemModifyMatchModule.java
@EventHandler
public void onArmorDispense(BlockDispenseEvent event) {
    // This covers armor being equipped by a dispenser, which does not call any of the other events
    ItemStack stack = event.getItem();
    if(applyRules(stack)) {
        event.setItem(stack);
    }
}
 
源代码10 项目: Civs   文件: CivilianListener.java
@EventHandler(ignoreCancelled = true)
public void onCivilianDispense(BlockDispenseEvent event) {
    ItemStack is = event.getItem();
    if (!CVItem.isCivsItem(is)) {
        return;
    }
    CivItem civItem = CivItem.getFromItemStack(is);
    if (!civItem.isPlaceable()) {
        event.setCancelled(true);
        return;
    }
}
 
源代码11 项目: NBTEditor   文件: BookOfSoulsCI.java
@Override
  public void onDispense(BlockDispenseEvent event, DispenserDetails details) {
BookOfSouls bos = BookOfSouls.getFromBook(event.getItem());
if (bos != null) {
	bos.getEntityNBT().spawn(details.getLocation());
}
event.setCancelled(true);
  }
 
源代码12 项目: NBTEditor   文件: CustomItemListener.java
@EventHandler
private void blockDispense(BlockDispenseEvent event) {
	if (event.getBlock().getType() != Material.DISPENSER) {
		return;
	}
	CustomItem customItem = CustomItemManager.getCustomItem(event.getItem());
	if (customItem != null) {
		if (verifyCustomItem(customItem, event.getBlock().getWorld())) {
			customItem.onDispense(event, new DispenserDetails(event, customItem._owner));
		} else {
			event.setCancelled(true);
		}
	}
}
 
源代码13 项目: PGM   文件: CoreMatchModule.java
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void breakCheck(final BlockTransformEvent event) {
  if (event.getWorld() != this.match.getWorld()) return;
  ParticipantState player = ParticipantBlockTransformEvent.getPlayerState(event);

  Vector blockVector = BlockVectors.center(event.getNewState()).toVector();

  for (Core core : this.cores) {
    if (!core.hasLeaked() && core.getCasingRegion().contains(blockVector)) {
      if (event.getNewState().getType() == Material.AIR) {
        if (player != null) {
          Competitor team = player.getParty();

          if (team == core.getOwner()) {
            event.setCancelled(true, TranslatableComponent.of("core.damageOwn"));
          } else if (event.getOldState().getData().equals(core.getMaterial())) {
            this.match.callEvent(new CoreBlockBreakEvent(core, player, event.getOldState()));
            core.touch(player);

            // Note: team may not have touched a broken core if a different team broke it
            if (!core.isCompleted(team) && !core.hasTouched(team)) {
              this.match.callEvent(new GoalStatusChangeEvent(this.match, core));
            }
          }
        } else if (event.getCause() instanceof EntityExplodeEvent) {
          // this is a temp fix until there is a tracker for placed minecarts (only dispensed are
          // tracked right now)
          if (((EntityExplodeEvent) event.getCause()).getEntity() instanceof ExplosiveMinecart) {
            event.setCancelled(true);
          }
        } else if (event.getCause() instanceof BlockPistonRetractEvent) {
          event.setCancelled(true);
        }
      } else if (event.getCause() instanceof BlockPistonExtendEvent) {
        event.setCancelled(true);
      } else if (event.getCause() instanceof BlockDispenseEvent) {
        event.setCancelled(true);
      }
      break;
    }
  }
}
 
源代码14 项目: InventoryGui   文件: InventoryGui.java
@EventHandler(priority = EventPriority.MONITOR)
public void onDispense(BlockDispenseEvent event) {
    if (hasRealOwner() && owner.equals(event.getBlock().getState())) {
        plugin.getServer().getScheduler().runTask(plugin, (Runnable) gui::draw);
    }
}
 
源代码15 项目: ProjectAres   文件: CoreMatchModule.java
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void breakCheck(final BlockTransformEvent event) {
    if(event.getWorld() != this.match.getWorld()) return;
    ParticipantState player = ParticipantBlockTransformEvent.getPlayerState(event);

    Vector blockVector = BlockUtils.center(event.getNewState()).toVector();

    for(Core core : this.cores) {
        if(!core.hasLeaked() && core.getCasingRegion().contains(blockVector)) {
            if(event.getNewState().getType() == Material.AIR) {
                if(player != null) {
                    Competitor team = player.getParty();

                    if(team == core.getOwner()) {
                        event.setCancelled(true, new TranslatableComponent("match.core.damageOwn"));
                    } else if (event.getOldState().getData().equals(core.getMaterial())) {
                        this.match.getPluginManager().callEvent(new CoreBlockBreakEvent(core, player, event.getOldState()));
                        core.touch(player);

                        // Note: team may not have touched a broken core if a different team broke it
                        if(!core.isCompleted(team) && !core.hasTouched(team)) {
                            this.match.getPluginManager().callEvent(new GoalStatusChangeEvent(core));
                        }
                    }
                } else if(event.getCause() instanceof EntityExplodeEvent) {
                    // this is a temp fix until there is a tracker for placed minecarts (only dispensed are tracked right now)
                    if(((EntityExplodeEvent) event.getCause()).getEntity() instanceof ExplosiveMinecart) {
                        event.setCancelled(true);
                    }
                } else if(event.getCause() instanceof BlockPistonRetractEvent) {
                    event.setCancelled(true);
                }
            } else if(event.getCause() instanceof BlockPistonExtendEvent) {
                event.setCancelled(true);
            } else if(event.getCause() instanceof BlockDispenseEvent) {
                event.setCancelled(true);
            }
            break;
        }
    }
}
 
源代码16 项目: CardinalPGM   文件: WorldFreeze.java
@EventHandler
public void onBlockDispense(BlockDispenseEvent event) {
    if (!match.isRunning()) {
        event.setCancelled(true);
    }
}
 
源代码17 项目: NBTEditor   文件: CustomFirework.java
@Override
public void onDispense(BlockDispenseEvent event, DispenserDetails details) {
	event.setCancelled(true);
}
 
源代码18 项目: NBTEditor   文件: DispenserDetails.java
DispenserDetails(BlockDispenseEvent event, Plugin plugin) {
	super(event.getItem());
	_block = event.getBlock();
	_plugin = plugin;
}
 
源代码19 项目: NBTEditor   文件: GenericBomb.java
@Override
public void onDispense(BlockDispenseEvent event, DispenserDetails details) {
	event.setCancelled(true);
	details.consumeItem();
	trigger(createItem(details.getLocation(), event.getVelocity()));
}
 
源代码20 项目: NBTEditor   文件: TimeFirework.java
@Override
public void onDispense(BlockDispenseEvent event, DispenserDetails details) {
	event.setCancelled(true);
	details.consumeItem();
	fire(details.getLocation(), details, null);
}
 
源代码21 项目: Slimefun4   文件: BlockDispenseHandler.java
void onBlockDispense(BlockDispenseEvent e, Dispenser dispenser, Block facedBlock, SlimefunItem machine); 
源代码22 项目: NBTEditor   文件: CustomItem.java
public void onDispense(BlockDispenseEvent event, DispenserDetails details) { } 
 类所在包
 类方法
 同包方法