org.bukkit.Material#DISPENSER源码实例Demo

下面列出了org.bukkit.Material#DISPENSER 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: 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);
            });
        }
    }
}
 
源代码2 项目: Slimefun4   文件: ProgrammableAndroid.java
protected void depositItems(BlockMenu menu, Block facedBlock) {
    if (facedBlock.getType() == Material.DISPENSER && BlockStorage.check(facedBlock, "ANDROID_INTERFACE_ITEMS")) {
        Dispenser d = (Dispenser) facedBlock.getState();

        for (int slot : getOutputSlots()) {
            ItemStack stack = menu.getItemInSlot(slot);

            if (stack != null) {
                Optional<ItemStack> optional = d.getInventory().addItem(stack).values().stream().findFirst();

                if (optional.isPresent()) {
                    menu.replaceExistingItem(slot, optional.get());
                }
                else {
                    menu.replaceExistingItem(slot, null);
                }
            }
        }
    }
}
 
源代码3 项目: Slimefun4   文件: MagicSugar.java
@Override
public ItemUseHandler getItemHandler() {
    return e -> {
        // Check if it is being placed into an ancient altar.
        if (e.getClickedBlock().isPresent()) {
            Material block = e.getClickedBlock().get().getType();

            if (block == Material.DISPENSER || block == Material.ENCHANTING_TABLE) {
                return;
            }
        }

        Player p = e.getPlayer();
        if (p.getGameMode() != GameMode.CREATIVE) {
            ItemUtils.consumeItem(e.getItem(), false);
        }

        p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1);
        p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 600, 3));
    };
}
 
源代码4 项目: Kettle   文件: CraftDispenser.java
@Override
public BlockProjectileSource getBlockProjectileSource() {
    Block block = getBlock();

    if (block.getType() != Material.DISPENSER) {
        return null;
    }

    return new CraftBlockProjectileSource((TileEntityDispenser) this.getTileEntityFromWorld());
}
 
源代码5 项目: CardinalPGM   文件: TntTracker.java
@EventHandler
public void onEntityDispense(BlockDispenseEntityEvent event){
    if (event.getBlock().getType() == Material.DISPENSER){
        if (event.getEntity().getType() == EntityType.PRIMED_TNT) {
            Location location = event.getBlock().getLocation();
            if (dispenserPlaced.containsKey(location.getBlockX() + "," + location.getBlockY() + "," + location.getBlockZ())) {
                UUID player = dispenserPlaced.get(location.getBlockX() + "," + location.getBlockY() + "," + location.getBlockZ());
                event.getEntity().setMetadata("source", new FixedMetadataValue(GameHandler.getGameHandler().getPlugin(), player));
            }
        }
    }
}
 
源代码6 项目: Slimefun4   文件: ArmorForge.java
public ArmorForge(Category category, SlimefunItemStack item) {
    super(category, item, new ItemStack[] { 
          null, null, null, 
          null, new ItemStack(Material.ANVIL), null, 
          null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null 
    }, new ItemStack[0], BlockFace.SELF);
}
 
源代码7 项目: Slimefun4   文件: MagicWorkbench.java
private Block locateDispenser(Block b) {
    Block block = null;

    if (b.getRelative(1, 0, 0).getType() == Material.DISPENSER) block = b.getRelative(1, 0, 0);
    else if (b.getRelative(0, 0, 1).getType() == Material.DISPENSER) block = b.getRelative(0, 0, 1);
    else if (b.getRelative(-1, 0, 0).getType() == Material.DISPENSER) block = b.getRelative(-1, 0, 0);
    else if (b.getRelative(0, 0, -1).getType() == Material.DISPENSER) block = b.getRelative(0, 0, -1);

    return block;
}
 
源代码8 项目: Thermos   文件: CraftDispenser.java
public BlockProjectileSource getBlockProjectileSource() {
    Block block = getBlock();

    if (block.getType() != Material.DISPENSER) {
        return null;
    }

    return new CraftBlockProjectileSource(dispenser);
}
 
源代码9 项目: Slimefun4   文件: BlockDispenseHandler.java
@Override
default Optional<IncompatibleItemHandlerException> validate(SlimefunItem item) {
    if (item instanceof NotPlaceable || item.getItem().getType() != Material.DISPENSER) {
        return Optional.of(new IncompatibleItemHandlerException("Only dispensers that are not marked as 'NotPlaceable' can have a BlockDispenseHandler.", item, this));
    }

    return Optional.empty();
}
 
源代码10 项目: Slimefun4   文件: ProgrammableAndroid.java
protected void refuel(BlockMenu menu, Block facedBlock) {
    if (facedBlock.getType() == Material.DISPENSER && BlockStorage.check(facedBlock, "ANDROID_INTERFACE_FUEL")) {
        Dispenser d = (Dispenser) facedBlock.getState();

        for (int slot = 0; slot < 9; slot++) {
            ItemStack item = d.getInventory().getItem(slot);

            if (item != null) {
                insertFuel(menu, d.getInventory(), slot, menu.getItemInSlot(43), item);
            }
        }
    }
}
 
源代码11 项目: Slimefun4   文件: TestMultiBlocks.java
@Test
public void testSymmetry() {
    SlimefunItem item = TestUtilities.mockSlimefunItem(plugin, "MULTIBLOCK_TEST", new CustomItem(Material.BRICK, "&5Multiblock Test"));

    MultiBlock multiblock = new MultiBlock(item, new Material[] { null, null, null, Material.DIAMOND_BLOCK, null, Material.DIAMOND_BLOCK, null, Material.DISPENSER, null }, BlockFace.DOWN);
    Assertions.assertTrue(multiblock.isSymmetric());

    MultiBlock multiblock2 = new MultiBlock(item, new Material[] { Material.EMERALD_BLOCK, null, null, Material.EMERALD_BLOCK, null, Material.DIAMOND_BLOCK, Material.EMERALD_BLOCK, Material.DISPENSER, null }, BlockFace.DOWN);
    Assertions.assertFalse(multiblock2.isSymmetric());
}
 
源代码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 项目: Slimefun4   文件: Juicer.java
public Juicer(Category category, SlimefunItemStack item) {
       super(category, item, 
			new ItemStack[] {null, new ItemStack(Material.GLASS), null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null},
			new ItemStack[0],
			BlockFace.SELF
	);
}
 
源代码14 项目: PGM   文件: DispenserTracker.java
@EventHandler(priority = EventPriority.MONITOR)
public void onPlace(ParticipantBlockTransformEvent event) {
  if (event.getNewState().getMaterial() == Material.DISPENSER) {
    blocks().trackBlockState(event.getNewState(), new DispenserInfo(event.getPlayerState()));
  }
}
 
源代码15 项目: MineTinker   文件: BlockListener.java
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onClick(PlayerInteractEvent event) {
	Player player = event.getPlayer();

	ItemStack norm = null;
	if (event.getHand() == EquipmentSlot.HAND) {
		norm = player.getInventory().getItemInMainHand();
	} else if (event.getHand() == EquipmentSlot.OFF_HAND) {
		norm = player.getInventory().getItemInOffHand();
	}

	if (norm == null) return;

	if (event.getAction() == Action.RIGHT_CLICK_AIR) {
		if (modManager.isModifierItem(norm)) {
			event.setCancelled(true);
		}
	} else if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
		Block block = event.getClickedBlock();

		if (block == null) {
			return;
		}
		if (!player.isSneaking()) {
			Material type = block.getType();

			if (type == Material.ANVIL || type == Material.CRAFTING_TABLE
					|| type == Material.CHEST || type == Material.ENDER_CHEST
					|| type == Material.DROPPER || type == Material.HOPPER
					|| type == Material.DISPENSER || type == Material.TRAPPED_CHEST
					|| type == Material.FURNACE || type == Material.ENCHANTING_TABLE) {

				return;
			}
		}

		if (modManager.isModifierItem(norm)) {
			event.setCancelled(true);
			return;
		}

		if (block.getType() == Material.getMaterial(MineTinker.getPlugin().getConfig().getString("BlockToEnchantModifiers", Material.BOOKSHELF.name()))) {
			ItemStack item = player.getInventory().getItemInMainHand();

			for (Modifier m : modManager.getAllMods()) {
				if (m.getModItem().getType().equals(item.getType())) {
					if (!m.isEnchantable()) continue;
					m.enchantItem(player);
					event.setCancelled(true);
					break;
				}
			}
		}
	}
}
 
源代码16 项目: Kettle   文件: Dispenser.java
public Dispenser() {
    super(Material.DISPENSER);
}
 
源代码17 项目: Slimefun4   文件: Smeltery.java
public Smeltery(Category category, SlimefunItemStack item) {
    super(category, item, new ItemStack[] { null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.NETHER_BRICKS), new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), new ItemStack(Material.NETHER_BRICKS), null, new ItemStack(Material.FLINT_AND_STEEL), null }, new ItemStack[] { SlimefunItems.IRON_DUST, new ItemStack(Material.IRON_INGOT) }, BlockFace.DOWN);

    addItemSetting(fireBreakingChance);
}
 
源代码18 项目: Slimefun4   文件: OreWasher.java
public OreWasher(Category category, SlimefunItemStack item) {
    super(category, item, new ItemStack[] { null, new ItemStack(Material.DISPENSER), null, null, new ItemStack(Material.OAK_FENCE), null, null, new ItemStack(Material.CAULDRON), null }, new ItemStack[0], BlockFace.SELF);

    legacyMode = SlimefunPlugin.getCfg().getBoolean("options.legacy-ore-washer");
    dusts = new ItemStack[] { SlimefunItems.IRON_DUST, SlimefunItems.GOLD_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.TIN_DUST, SlimefunItems.ZINC_DUST, SlimefunItems.ALUMINUM_DUST, SlimefunItems.MAGNESIUM_DUST, SlimefunItems.LEAD_DUST, SlimefunItems.SILVER_DUST };
}
 
源代码19 项目: Slimefun4   文件: EnhancedCraftingTable.java
public EnhancedCraftingTable(Category category, SlimefunItemStack item) {
    super(category, item, new ItemStack[] { null, null, null, null, new ItemStack(Material.CRAFTING_TABLE), null, null, new ItemStack(Material.DISPENSER), null }, new ItemStack[0], BlockFace.SELF);
}
 
源代码20 项目: Slimefun4   文件: OreCrusher.java
public OreCrusher(Category category, SlimefunItemStack item) {
    super(category, item, new ItemStack[] { null, null, null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.IRON_BARS), new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), new ItemStack(Material.IRON_BARS) }, new ItemStack[] { new ItemStack(Material.COBBLESTONE, 8), new ItemStack(Material.SAND, 1), SlimefunItems.GOLD_4K, SlimefunItems.GOLD_DUST, new ItemStack(Material.GRAVEL), new ItemStack(Material.SAND), new ItemStack(Material.MAGMA_BLOCK, 4), SlimefunItems.SULFATE }, BlockFace.SELF);

    addItemSetting(doubleOres);
}
 
 方法所在类
 同类方法