类org.bukkit.event.inventory.CraftItemEvent源码实例Demo

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

源代码1 项目: BedWars   文件: PlayerListener.java
@EventHandler
public void onCraft(CraftItemEvent event) {
    if (event.isCancelled() || !(event.getWhoClicked() instanceof Player)) {
        return;
    }

    Player player = (Player) event.getWhoClicked();
    if (Main.isPlayerInGame(player)) {
        GamePlayer gPlayer = Main.getPlayerGameProfile(player);
        if (gPlayer.getGame().getStatus() != GameStatus.RUNNING) {
            event.setCancelled(true);
        } else if (!gPlayer.getGame().getOriginalOrInheritedCrafting()) {
            event.setCancelled(true);
        }
    }
}
 
源代码2 项目: BedWars   文件: PlayerListener.java
@EventHandler
public void onCraft(CraftItemEvent event) {
    if (event.isCancelled() || !(event.getWhoClicked() instanceof Player)) {
        return;
    }

    Player player = (Player) event.getWhoClicked();
    if (Main.isPlayerInGame(player)) {
        GamePlayer gPlayer = Main.getPlayerGameProfile(player);
        if (gPlayer.getGame().getStatus() != GameStatus.RUNNING) {
            event.setCancelled(true);
        } else if (!gPlayer.getGame().getOriginalOrInheritedCrafting()) {
            event.setCancelled(true);
        }
    }
}
 
源代码3 项目: BedwarsRel   文件: PlayerListener.java
@EventHandler
public void onCraft(CraftItemEvent cie) {
  Player player = (Player) cie.getWhoClicked();
  Game game = BedwarsRel.getInstance().getGameManager().getGameOfPlayer(player);

  if (game == null) {
    return;
  }

  if (game.getState() == GameState.STOPPED) {
    return;
  }

  if (BedwarsRel.getInstance().getBooleanConfig("allow-crafting", false)) {
    return;
  }

  cie.setCancelled(true);
}
 
源代码4 项目: NovaGuilds   文件: RegionInteractListener.java
@EventHandler
public void onCraftItem(CraftItemEvent event) {
	NovaPlayer nPlayer = PlayerManager.getPlayer(event.getWhoClicked());

	if(event.getRecipe().getResult().getType() != Material.SHIELD
			|| !nPlayer.hasGuild()
			|| nPlayer.getGuild().getBannerMeta().numberOfPatterns() == 0) {
		return;
	}

	for(ItemStack ingredient : event.getInventory().getContents()) {
		if(ingredient != null
				&& ingredient.getType() == Material.SHIELD
				&& ingredient.hasItemMeta()) {
			return;
		}
	}

	event.getInventory().setResult(BannerUtils.applyMeta(event.getRecipe().getResult(), nPlayer.getGuild().getBannerMeta()));
}
 
源代码5 项目: BetonQuest   文件: CraftingObjective.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onCrafting(CraftItemEvent event) {
    if (event.getWhoClicked() instanceof Player) {
        Player player = (Player) event.getWhoClicked();
        String playerID = PlayerConverter.getID(player);
        CraftData playerData = (CraftData) dataMap.get(playerID);
        if (containsPlayer(playerID) && item.compare(event.getRecipe().getResult()) && checkConditions(playerID)) {
            int absoluteCreations = countPossibleCrafts(event);
            int remainingSpace = countRemainingSpace(player);
            playerData.subtract(Math.min(remainingSpace, absoluteCreations));
            if (playerData.isZero()) {
                completeObjective(playerID);
            }

        }
    }
}
 
源代码6 项目: civcraft   文件: BonusGoodieManager.java
@EventHandler(priority = EventPriority.HIGHEST)
public void OnCraftItemEvent(CraftItemEvent event) {
	Player player;
	try {
		player = CivGlobal.getPlayer(event.getWhoClicked().getName());
	} catch (CivException e) {
		e.printStackTrace();
		return;
	}
	
	for (ItemStack stack : event.getInventory().getMatrix()) {
		BonusGoodie goodie = CivGlobal.getBonusGoodie(stack);
		if (goodie != null) {
			CivMessage.sendError(player, "Cannot use bonus goodies in a crafting recipe.");
			event.setCancelled(true);
		}
	}
}
 
源代码7 项目: askyblock   文件: IslandGuard.java
/**
 * Prevents crafting of EnderChest unless the player has permission
 *
 * @param event
 */
@EventHandler(priority = EventPriority.LOW)
public void onCraft(CraftItemEvent event) {
    if (DEBUG) {
        plugin.getLogger().info(event.getEventName());
    }
    Player player = (Player) event.getWhoClicked();
    if (inWorld(player) || player.getWorld().equals(ASkyBlock.getNetherWorld())) {
        if (event.getRecipe().getResult().getType() == Material.ENDER_CHEST) {
            if (!(player.hasPermission(Settings.PERMPREFIX + "craft.enderchest"))) {
                Util.sendMessage(player, ChatColor.RED + plugin.myLocale(player.getUniqueId()).errorNoPermission);
                event.setCancelled(true);
            }
        }
    }
}
 
源代码8 项目: PGM   文件: ItemModifyMatchModule.java
@EventHandler
public void onItemCraft(CraftItemEvent event) {
  ItemStack stack = event.getCurrentItem();
  if (applyRules(stack)) {
    event.setCurrentItem(stack);
    event.getInventory().setResult(stack);
  }
}
 
源代码9 项目: MineTinker   文件: CraftItemListener.java
@EventHandler(ignoreCancelled = true)
public void onCraft(CraftItemEvent event) {
	if (!(event.getWhoClicked() instanceof Player)) {
		return;
	}

	Player player = (Player) event.getWhoClicked();
	FileConfiguration config = MineTinker.getPlugin().getConfig();

	if (config.getBoolean("Sound.OnEveryCrafting")) {
		player.playSound(player.getLocation(), Sound.BLOCK_ANVIL_USE, 1.0F, 0.5F);

		return;
	}

	ItemStack tool = event.getInventory().getResult();

	if (!(modManager.isToolViable(tool) || modManager.isArmorViable(tool) || modManager.isWandViable(tool))) {
		return;
	}

	if (config.getBoolean("Sound.OnCrafting")) {
		player.playSound(player.getLocation(), Sound.BLOCK_ANVIL_USE, 1.0F, 0.5F);
	}

	if (tool != null) {
		ChatWriter.log(false, player.getName() + " crafted " + ChatWriter.getDisplayName(tool)
				+ "! It is now a MineTinker-Item!");
	}
}
 
源代码10 项目: ProjectAres   文件: RaindropListener.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void handleCraft(final CraftItemEvent event) {
    ParticipantState player = PGM.getMatchManager().getParticipantState(event.getWhoClicked());
    if (player == null) return;

    for (ItemStack ingredient : event.getInventory().getMatrix()) {
        if(this.isDestroyableWool(ingredient, player.getParty())) {
            giveWoolDestroyRaindrops(player, ((Wool) ingredient.getData()).getColor());
        }
    }
}
 
源代码11 项目: ProjectAres   文件: ItemModifyMatchModule.java
@EventHandler
public void onItemCraft(CraftItemEvent event) {
    ItemStack stack = event.getCurrentItem();
    if(applyRules(stack)) {
        event.setCurrentItem(stack);
        event.getInventory().setResult(stack);
    }
}
 
源代码12 项目: UhcCore   文件: RodlessListener.java
@EventHandler
public void onCraftItem(CraftItemEvent e) {
    ItemStack item = e.getCurrentItem();

    if (item.getType().equals(Material.FISHING_ROD)) {
        e.getWhoClicked().sendMessage(Lang.SCENARIO_RODLESS_ERROR);
        e.setCancelled(true);
    }
}
 
源代码13 项目: UhcCore   文件: BowlessListener.java
@EventHandler
public void onCraftItem(CraftItemEvent e) {
    ItemStack item = e.getCurrentItem();

    if (item.getType().equals(Material.BOW) || item.getType().equals(Material.ARROW)) {
        e.getWhoClicked().sendMessage(Lang.SCENARIO_BOWLESS_ERROR);
        e.setCancelled(true);
    }
}
 
源代码14 项目: UhcCore   文件: HasteyBoysListener.java
@EventHandler
public void onPlayerCraft(CraftItemEvent e){
    ItemStack item = e.getCurrentItem();

    try {
        item.addEnchantment(Enchantment.DIG_SPEED,3);
        item.addEnchantment(Enchantment.DURABILITY,1);
    }catch (IllegalArgumentException ex){
        // Nothing
    }

}
 
源代码15 项目: UhcCore   文件: ShieldlessListener.java
@EventHandler
public void onCraftItem(CraftItemEvent e) {
    ItemStack item = e.getCurrentItem();

    if (item.getType() != Material.AIR && item.getType() == UniversalMaterial.SHIELD.getType()){
        e.getWhoClicked().sendMessage(Lang.SCENARIO_SHIELDLESS_ERROR);
        e.setCancelled(true);
    }
}
 
源代码16 项目: AnnihilationPro   文件: Archer.java
@EventHandler(priority = EventPriority.HIGHEST)
public void arrowCraftingStopper(CraftItemEvent event)
{
	if(event.getRecipe().getResult().getType() == Material.ARROW && event.getRecipe().getResult().getAmount() == 3)
	{
		AnniPlayer player = AnniPlayer.getPlayer(event.getWhoClicked().getUniqueId());
		if(player != null && (player.getKit() == null || !player.getKit().equals(this)))
			event.setCancelled(true);
	}
}
 
源代码17 项目: ArmorStandTools   文件: MainListener.java
@EventHandler
public void onCraftItem(CraftItemEvent event) {
    if (event.isCancelled()) return;
    final Player p = (Player) event.getWhoClicked();
    CraftingInventory inventory = event.getInventory();
    for(ItemStack is : inventory.getContents()) {
        if(ArmorStandTool.isTool(is)) {
            event.setCancelled(true);
            //noinspection deprecation
            p.updateInventory();
            return;
        }
    }
}
 
源代码18 项目: BetonQuest   文件: CraftingObjective.java
private int countPossibleCrafts(CraftItemEvent event) {
    int possibleCreations = 1;
    if (event.isShiftClick()) {
        possibleCreations = Integer.MAX_VALUE;
        for (ItemStack item : event.getInventory().getMatrix()) {
            if (item != null && !item.getType().equals(Material.AIR)) {
                possibleCreations = Math.min(possibleCreations, item.getAmount());
            }
        }
    }
    return possibleCreations * event.getRecipe().getResult().getAmount();
}
 
源代码19 项目: civcraft   文件: CustomItemManager.java
@EventHandler(priority = EventPriority.HIGHEST)
public void OnCraftItemEvent(CraftItemEvent event) {	
	for (ItemStack stack : event.getInventory().getMatrix()) {
		if (stack != null) {

			if (LoreMaterial.isCustom(stack)) {
				LoreMaterial.getMaterial(stack).onItemCraft(event);
			}
		}
	}
}
 
源代码20 项目: civcraft   文件: UnitItemMaterial.java
@Override
public void onItemCraft(CraftItemEvent event) {
	try {
		CivMessage.sendError(CivGlobal.getPlayer(event.getWhoClicked().getName()), "Cannot craft with a unit item.");
	} catch (CivException e) {
		//player offline?
	}
	event.setCancelled(true);		
}
 
源代码21 项目: civcraft   文件: UnitMaterial.java
@Override
public void onItemCraft(CraftItemEvent event) {
	try {
		CivMessage.sendError(CivGlobal.getPlayer(event.getWhoClicked().getName()), "Cannot craft with a unit item.");
	} catch (CivException e) {
		//player offline?
	}
	event.setCancelled(true);
}
 
源代码22 项目: Slimefun4   文件: VanillaMachinesListener.java
@EventHandler
public void onCraft(CraftItemEvent e) {
    for (ItemStack item : e.getInventory().getContents()) {
        SlimefunItem sfItem = SlimefunItem.getByItem(item);

        if (sfItem != null && !sfItem.isUseableInWorkbench()) {
            e.setResult(Result.DENY);
            SlimefunPlugin.getLocalization().sendMessage((Player) e.getWhoClicked(), "workbench.not-enhanced", true);
            break;
        }
    }
}
 
源代码23 项目: Slimefun4   文件: TestVanillaMachinesListener.java
private CraftItemEvent mockCraftingEvent(ItemStack item) {
    Recipe recipe = new ShapedRecipe(new NamespacedKey(plugin, "test_recipe"), new ItemStack(Material.EMERALD));
    Player player = server.addPlayer();

    CraftingInventory inv = Mockito.mock(CraftingInventory.class);
    Mockito.when(inv.getContents()).thenReturn(new ItemStack[] { item, null, null, null, null, null, null, null, null });

    InventoryView view = player.openInventory(inv);
    CraftItemEvent event = new CraftItemEvent(recipe, view, SlotType.RESULT, 9, ClickType.LEFT, InventoryAction.PICKUP_ALL);

    listener.onCraft(event);
    return event;
}
 
源代码24 项目: Slimefun4   文件: TestVanillaMachinesListener.java
@Test
public void testCraftEventWithSlimefunItem() {
    SlimefunItem item = TestUtilities.mockSlimefunItem(plugin, "MOCK_DIAMOND", new CustomItem(Material.DIAMOND, "&cMock Diamond"));
    item.register(plugin);

    CraftItemEvent event = mockCraftingEvent(item.getItem());
    Assertions.assertEquals(Result.DENY, event.getResult());
}
 
源代码25 项目: Slimefun4   文件: TestVanillaMachinesListener.java
@Test
public void testCraftEventWithChangingSlimefunItem() {
    SlimefunItem item = TestUtilities.mockSlimefunItem(plugin, "CHANGING_ITEM", new CustomItem(Material.DIAMOND, "&dChanging Diamond"));
    item.register(plugin);

    item.setUseableInWorkbench(true);
    CraftItemEvent event = mockCraftingEvent(item.getItem());
    Assertions.assertEquals(Result.DEFAULT, event.getResult());

    item.setUseableInWorkbench(false);
    CraftItemEvent event2 = mockCraftingEvent(item.getItem());
    Assertions.assertEquals(Result.DENY, event2.getResult());
}
 
源代码26 项目: Slimefun4   文件: TestVanillaMachinesListener.java
@Test
public void testCraftEventWithVanillaItem() {
    VanillaItem item = TestUtilities.mockVanillaItem(plugin, Material.DIAMOND, true);
    item.register(plugin);

    CraftItemEvent event = mockCraftingEvent(item.getItem());
    Assertions.assertEquals(Result.DEFAULT, event.getResult());
}
 
源代码27 项目: CardinalPGM   文件: WoolObjective.java
@EventHandler
public void onCraftWool(CraftItemEvent event) {
    if (!this.craftable && event.getRecipe().getResult().getType().equals(Material.WOOL)
            && ((Wool) event.getRecipe().getResult().getData()).getColor().equals(color)) {
        event.setCancelled(true);
    }
}
 
源代码28 项目: CardinalPGM   文件: Snowflakes.java
@EventHandler
public void onPlayerCraft(CraftItemEvent event) {
    Player player = (Player) event.getWhoClicked();
    for (DyeColor color : getColors(event.getRecipe())) {
        if (testDestroy(player, color)) {
            addDestroyed(player, color);
        }
    }
}
 
源代码29 项目: HeavySpleef   文件: FlagSnowballs.java
@EventHandler
public void onCraftItem(CraftItemEvent event) {
    SpleefPlayer player = getHeavySpleef().getSpleefPlayer(event.getWhoClicked());
    if (!game.isIngame(player)) {
        return;
    }

    Recipe recipe = event.getRecipe();
    Material result = recipe.getResult().getType();

    if (result == Material.SNOW_BLOCK) {
        event.setCancelled(true);
    }
}
 
源代码30 项目: UhcCore   文件: CraftListener.java
@EventHandler(priority = EventPriority.HIGHEST)
public void onCrafting(CraftItemEvent event){
	ItemStack item = event.getRecipe().getResult();
	if (!item.hasItemMeta() || !item.getItemMeta().hasDisplayName()){
		return;
	}

	if (!(event.getWhoClicked() instanceof Player)){
		return;
	}

	Craft craft = CraftsManager.getCraft(item);
	if (craft == null){
		return;
	}

	Player player = (Player) event.getWhoClicked();
	GameManager gm = GameManager.getGameManager();
	UhcPlayer uhcPlayer = gm.getPlayersManager().getUhcPlayer(player);

	if(gm.getConfiguration().getEnableCraftsPermissions() && !player.hasPermission("uhc-core.craft."+craft.getName())){
		uhcPlayer.sendMessage(Lang.ITEMS_CRAFT_NO_PERMISSION.replace("%craft%", ChatColor.translateAlternateColorCodes('&', craft.getName())));
		event.setCancelled(true);
		return;
	}

	if(craft.getLimit() != -1 && (event.isShiftClick() || event.isRightClick())){
		uhcPlayer.sendMessage(Lang.ITEMS_CRAFT_LEFT_CLICK.replace("%craft%", ChatColor.translateAlternateColorCodes('&', craft.getName())));
		event.setCancelled(true);
		return;
	}

	if (craft.isReviveItem()){
		List<UhcPlayer> deadMembers = uhcPlayer.getTeam().getDeadMembers();

		if (deadMembers.isEmpty()){
			event.setCancelled(true);
			uhcPlayer.sendMessage(Lang.ITEMS_REVIVE_ERROR);
			return;
		}

		UhcPlayer revivePlayer = deadMembers.get(0);
		gm.getPlayersManager().revivePlayer(revivePlayer, craft.reviveWithInventory());

		uhcPlayer.sendMessage(Lang.ITEMS_REVIVE_SUCCESS.replace("%player%", revivePlayer.getName()));

		Bukkit.getScheduler().runTask(UhcCore.getPlugin(), () -> {
			player.setItemOnCursor(null);
			player.closeInventory();
		});
		return;
	}

	if(!uhcPlayer.addCraftedItem(craft.getName())){
		uhcPlayer.sendMessage(Lang.ITEMS_CRAFT_LIMIT.replace("%craft%", craft.getName()).replace("%limit%",""+craft.getLimit()));
		event.setCancelled(true);
	}else{
		uhcPlayer.sendMessage(Lang.ITEMS_CRAFT_CRAFTED.replace("%craft%", craft.getName()));
	}
}
 
 类所在包
 类方法
 同包方法