private void doDispense(GlowBlock block, ItemStack items, int power, BlockFace facing, Vector target) { double x = target.getX(); double y = target.getY(); double z = target.getZ(); if (facing.getModY() != 0) { y -= 0.125; } else { y -= 0.15625; } double velocity = ThreadLocalRandom.current().nextDouble() * 0.1 + 0.2; double velocityX = facing.getModX() * velocity; double velocityY = 0.2; double velocityZ = facing.getModZ() * velocity; velocityX += ThreadLocalRandom.current().nextGaussian() * 0.0075 * power; velocityY += ThreadLocalRandom.current().nextGaussian() * 0.0075 * power; velocityZ += ThreadLocalRandom.current().nextGaussian() * 0.0075 * power; BlockDispenseEvent dispenseEvent = new BlockDispenseEvent(block, items, new Vector(velocityX, velocityY, velocityZ)); EventFactory.getInstance().callEvent(dispenseEvent); if (!dispenseEvent.isCancelled()) { GlowItem item = block.getWorld().dropItem(new Location(block.getWorld(), x, y, z), dispenseEvent.getItem()); item.setVelocity(dispenseEvent.getVelocity()); } }
@Override public MCItemStack getItem() { return new BukkitMCItemStack(bde.getItem()); }
if (machine.getID().equalsIgnoreCase("BLOCK_PLACER")) { e.setCancelled(true); if ((block.getType() == null || block.getType() == Material.AIR) && e.getItem().getType().isBlock()) { for(String blockType : blockPlacerBlacklist) { if (e.getItem().getType().toString().equals(blockType)) { return false; SlimefunItem sfItem = SlimefunItem.getByItem(e.getItem()); if (sfItem != null) { if (!SlimefunItem.blockhandler.containsKey(sfItem.getName())) { block.setType(e.getItem().getType()); block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, e.getItem().getType()); if (d.getInventory().containsAtLeast(e.getItem(), 2)) d.getInventory().removeItem(new CustomItem(e.getItem(), 1)); else { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new BukkitRunnable() { block.setType(e.getItem().getType()); block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, e.getItem().getType()); if (d.getInventory().containsAtLeast(e.getItem(), 2)) d.getInventory().removeItem(new CustomItem(e.getItem(), 1)); else { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new BukkitRunnable() {
@EventHandler(ignoreCancelled = true) public void onBlockDispense(BlockDispenseEvent event) { ConfigurationManager cfg = WorldGuard.getInstance().getPlatform().getGlobalStateManager(); WorldConfiguration wcfg = cfg.get(BukkitAdapter.adapt(event.getBlock().getWorld())); if (wcfg.getBlacklist() != null) { if (!wcfg.getBlacklist().check(new BlockDispenseBlacklistEvent(null, BukkitAdapter.asBlockVector(event.getBlock().getLocation()), createTarget(event.getItem())), false, false)) { event.setCancelled(true); } } }
@EventHandler(ignoreCancelled = true) public void onBlockDispense(BlockDispenseEvent event) { Cause cause = create(event.getBlock()); Block dispenserBlock = event.getBlock(); ItemStack item = event.getItem(); MaterialData materialData = dispenserBlock.getState().getData(); Events.fireToCancel(event, new UseItemEvent(event, cause, dispenserBlock.getWorld(), item)); // Simulate right click event as players have it if (materialData instanceof Dispenser) { Dispenser dispenser = (Dispenser) materialData; Block placed = dispenserBlock.getRelative(dispenser.getFacing()); Block clicked = placed.getRelative(dispenser.getFacing()); handleBlockRightClick(event, cause, item, clicked, dispenser.getFacing().getOppositeFace(), placed); } }
if(block.getType().equals(Material.DISPENSER)){ ArmourType type = ArmourType.matchType(e.getItem()); if(ArmourType.matchType(e.getItem()) != null){ && p.getLocation().getZ() <= loc.getZ()){ ArmourEquipEvent armourEquipEvent = new ArmourEquipEvent(p, EquipMethod.DISPENSER, ArmourType.matchType(e.getItem()), null, e.getItem()); Bukkit.getServer().getPluginManager().callEvent(armourEquipEvent);
Material materialDispensed = dispenseEvent.getItem().getType(); if((materialDispensed == Material.WATER_BUCKET || materialDispensed == Material.LAVA_BUCKET) && GriefPrevention.instance.creativeRulesApply(dispenseEvent.getBlock().getLocation()) && toClaim == null)