下面列出了怎么用org.bukkit.event.inventory.CraftItemEvent的API类实例代码及写法,或者点击链接到github查看源代码。
@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);
}
}
}
@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);
}
}
}
@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);
}
@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()));
}
@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);
}
}
}
}
@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);
}
}
}
/**
* 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);
}
}
}
}
@EventHandler
public void onItemCraft(CraftItemEvent event) {
ItemStack stack = event.getCurrentItem();
if (applyRules(stack)) {
event.setCurrentItem(stack);
event.getInventory().setResult(stack);
}
}
@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!");
}
}
@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());
}
}
}
@EventHandler
public void onItemCraft(CraftItemEvent event) {
ItemStack stack = event.getCurrentItem();
if(applyRules(stack)) {
event.setCurrentItem(stack);
event.getInventory().setResult(stack);
}
}
@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);
}
}
@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);
}
}
@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
}
}
@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);
}
}
@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);
}
}
@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;
}
}
}
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();
}
@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);
}
}
}
}
@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);
}
@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);
}
@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;
}
}
}
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;
}
@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());
}
@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());
}
@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());
}
@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);
}
}
@EventHandler
public void onPlayerCraft(CraftItemEvent event) {
Player player = (Player) event.getWhoClicked();
for (DyeColor color : getColors(event.getRecipe())) {
if (testDestroy(player, color)) {
addDestroyed(player, color);
}
}
}
@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);
}
}
@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()));
}
}