org.bukkit.inventory.EquipmentSlot#HAND源码实例Demo

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

源代码1 项目: BetonQuest   文件: QuestItemHandler.java
@EventHandler(ignoreCancelled = true)
public void onItemFrameClick(final PlayerInteractEntityEvent event) {
    if (event.getPlayer().getGameMode() == GameMode.CREATIVE) {
        return;
    }
    // this prevents the journal from being placed inside of item frame
    if (event.getRightClicked() instanceof ItemFrame) {
        ItemStack item = null;
        item = (event.getHand() == EquipmentSlot.HAND) ? event.getPlayer().getInventory().getItemInMainHand()
                : event.getPlayer().getInventory().getItemInOffHand();

        final String playerID = PlayerConverter.getID(event.getPlayer());
        if (Journal.isJournal(playerID, item) || Utils.isQuestItem(item)) {
            event.setCancelled(true);
        }
    }
}
 
源代码2 项目: Kettle   文件: CraftEventFactory.java
public static BlockPlaceEvent callBlockPlaceEvent(World world, EntityPlayer who, EnumHand hand, BlockState replacedBlockState, int clickedX, int clickedY, int clickedZ) {
    CraftWorld craftWorld = world.getWorld();
    CraftServer craftServer = world.getServer();

    Player player = (Player) who.getBukkitEntity();

    Block blockClicked = craftWorld.getBlockAt(clickedX, clickedY, clickedZ);
    Block placedBlock = replacedBlockState.getBlock();

    boolean canBuild = canBuild(craftWorld, player, placedBlock.getX(), placedBlock.getZ());

    org.bukkit.inventory.ItemStack item;
    EquipmentSlot equipmentSlot;
    if (hand == EnumHand.MAIN_HAND) {
        item = player.getInventory().getItemInMainHand();
        equipmentSlot = EquipmentSlot.HAND;
    } else {
        item = player.getInventory().getItemInOffHand();
        equipmentSlot = EquipmentSlot.OFF_HAND;
    }

    BlockPlaceEvent event = new BlockPlaceEvent(placedBlock, replacedBlockState, blockClicked, item, player, canBuild, equipmentSlot);
    craftServer.getPluginManager().callEvent(event);

    return event;
}
 
源代码3 项目: Kettle   文件: CraftEventFactory.java
public static PlayerInteractEvent callPlayerInteractEvent(EntityPlayer who, Action action, BlockPos position, EnumFacing direction, ItemStack itemstack, boolean cancelledBlock, EnumHand hand) {
    Player player = (who == null) ? null : (Player) who.getBukkitEntity();
    CraftItemStack itemInHand = CraftItemStack.asCraftMirror(itemstack);

    CraftWorld craftWorld = (CraftWorld) player.getWorld();
    CraftServer craftServer = (CraftServer) player.getServer();

    Block blockClicked = null;
    if (position != null) {
        blockClicked = craftWorld.getBlockAt(position.getX(), position.getY(), position.getZ());
    } else {
        switch (action) {
            case LEFT_CLICK_BLOCK:
                action = Action.LEFT_CLICK_AIR;
                break;
            case RIGHT_CLICK_BLOCK:
                action = Action.RIGHT_CLICK_AIR;
                break;
        }
    }
    BlockFace blockFace = CraftBlock.notchToBlockFace(direction);

    if (itemInHand.getType() == Material.AIR || itemInHand.getAmount() == 0) {
        itemInHand = null;
    }

    PlayerInteractEvent event = new PlayerInteractEvent(player, action, itemInHand, blockClicked, blockFace, (hand == null) ? null : ((hand == EnumHand.OFF_HAND) ? EquipmentSlot.OFF_HAND : EquipmentSlot.HAND));
    if (cancelledBlock) {
        event.setUseInteractedBlock(Event.Result.DENY);
    }
    craftServer.getPluginManager().callEvent(event);

    return event;
}
 
源代码4 项目: Slimefun4   文件: DebugFishListener.java
@EventHandler
public void onDebug(PlayerInteractEvent e) {
    if (e.getAction() == Action.PHYSICAL || e.getHand() != EquipmentSlot.HAND) {
        return;
    }

    Player p = e.getPlayer();

    if (p.isOp() && SlimefunUtils.isItemSimilar(e.getItem(), SlimefunItems.DEBUG_FISH, true)) {
        e.setCancelled(true);

        if (e.getAction() == Action.LEFT_CLICK_BLOCK) {
            if (p.isSneaking()) {
                if (BlockStorage.hasBlockInfo(e.getClickedBlock())) {
                    BlockStorage.clearBlockInfo(e.getClickedBlock());
                }
            }
            else {
                e.setCancelled(false);
            }
        }
        else if (e.getAction() == Action.RIGHT_CLICK_BLOCK) {
            if (p.isSneaking()) {
                Block b = e.getClickedBlock().getRelative(e.getBlockFace());
                b.setType(Material.PLAYER_HEAD);
                SkullBlock.setFromHash(b, HeadTexture.MISSING_TEXTURE.getTexture());
            }
            else if (BlockStorage.hasBlockInfo(e.getClickedBlock())) {
                sendInfo(p, e.getClickedBlock());
            }
        }
    }
}
 
源代码5 项目: Slimefun4   文件: TestCargoNodeListener.java
@ParameterizedTest
@SlimefunItemsSource(items = { "CARGO_INPUT_NODE", "CARGO_OUTPUT_NODE", "CARGO_OUTPUT_NODE_2" })
public void testSidePlacement(ItemStack item) {
    Player player = server.addPlayer();
    Location l = new Location(player.getWorld(), 190, 50, 400);
    Block b = l.getBlock();
    Block against = b.getRelative(BlockFace.NORTH);

    BlockPlaceEvent event = new BlockPlaceEvent(b, new BlockStateMock(), against, item, player, true, EquipmentSlot.HAND);
    listener.onCargoNodePlace(event);
    Assertions.assertFalse(event.isCancelled());
}
 
源代码6 项目: Slimefun4   文件: IronGolemListener.java
@EventHandler
public void onIronGolemHeal(PlayerInteractEntityEvent e) {
    if (e.getRightClicked().getType() == EntityType.IRON_GOLEM) {
        PlayerInventory inv = e.getPlayer().getInventory();
        ItemStack item = null;

        if (e.getHand() == EquipmentSlot.HAND) {
            item = inv.getItemInMainHand();
        }
        else if (e.getHand() == EquipmentSlot.OFF_HAND) {
            item = inv.getItemInOffHand();
        }

        if (item != null && item.getType() == Material.IRON_INGOT) {
            SlimefunItem sfItem = SlimefunItem.getByItem(item);

            if (sfItem != null && !(sfItem instanceof VanillaItem)) {
                e.setCancelled(true);
                SlimefunPlugin.getLocalization().sendMessage(e.getPlayer(), "messages.no-iron-golem-heal");

                // This is just there to update the Inventory...
                // Somehow cancelling it isn't enough.
                if (e.getHand() == EquipmentSlot.HAND) {
                    inv.setItemInMainHand(item);
                }
                else if (e.getHand() == EquipmentSlot.OFF_HAND) {
                    inv.setItemInOffHand(item);
                }
            }
        }
    }
}
 
源代码7 项目: ExoticGarden   文件: PlantsListener.java
@EventHandler
public void onInteract(PlayerInteractEvent e) {
    if (e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
    if (e.getHand() != EquipmentSlot.HAND) return;
    if (e.getPlayer().isSneaking()) return;

    if (SlimefunPlugin.getProtectionManager().hasPermission(e.getPlayer(), e.getClickedBlock().getLocation(), ProtectableAction.BREAK_BLOCK)) {
        ItemStack item = ExoticGarden.harvestPlant(e.getClickedBlock());

        if (item != null) {
            e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, Material.OAK_LEAVES);
            e.getClickedBlock().getWorld().dropItemNaturally(e.getClickedBlock().getLocation(), item);
        }
    }
}
 
源代码8 项目: HubBasics   文件: ItemListener.java
@EventHandler(ignoreCancelled = true)
public void onLeftClick(PlayerInteractEvent event) {
    if (!(event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK)) {
        return;
    }
    ItemStack itemStack;
    if (event.getHand() == EquipmentSlot.HAND) {
        itemStack = event.getPlayer().getInventory().getItemInMainHand();
    } else if (event.getHand() == EquipmentSlot.OFF_HAND) {
        itemStack = event.getPlayer().getInventory().getItemInOffHand();
    } else {
        return;
    }
    if (itemStack.getType() != Material.AIR) {
        NBTItem nbtItem = new NBTItem(itemStack);
        if (!nbtItem.hasKey("HubBasics")) return;
        event.setCancelled(true);
        CustomItem item = HubBasics.getInstance().getItemManager().get(nbtItem.getString("HubBasics"));
        if (item == null) {
            itemStack.setType(Material.AIR); // Destroy old item
            return;
        }
        if (!item.getRunOnLeftClick()) return;
        if (event.getHand() == EquipmentSlot.OFF_HAND) {
            if (item.getRunOnOffhand()) {
                item.onCommand(event.getPlayer());
            }
        } else {
            item.onCommand(event.getPlayer());
        }
    }
}
 
源代码9 项目: MineTinker   文件: EasyHarvestListener.java
@EventHandler
public void onHarvestTry(PlayerInteractEvent event) {
	if (event.getAction() != Action.RIGHT_CLICK_BLOCK) {
		return;
	}

	Player player = event.getPlayer();

	if (Lists.WORLDS_EASYHARVEST.contains(player.getWorld().getName())) {
		return;
	}

	if (!(player.getGameMode() == GameMode.SURVIVAL || player.getGameMode() == GameMode.ADVENTURE
			|| player.getGameMode() == GameMode.CREATIVE)) {
		return;
	}

	ItemStack tool = player.getInventory().getItemInMainHand();

	if (!ToolType.HOE.contains(tool.getType())) {
		return;
	}

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

	if (event.getClickedBlock() == null) {
		return;
	}

	if (event.getItem() == null) {
		return;
	}

	Block block = event.getClickedBlock();

	if (!(block.getBlockData() instanceof Ageable)) {
		return;
	}

	//triggers a pseudoevent to find out if the Player can build
	BlockPlaceEvent placeEvent = new BlockPlaceEvent(block, block.getState(), block, event.getItem(), player,
			true, EquipmentSlot.HAND);
	Bukkit.getPluginManager().callEvent(placeEvent);

	//check the pseudoevent
	if (!placeEvent.canBuild() || placeEvent.isCancelled()) {
		return;
	}

	harvestCrops(player, tool, block);
}
 
源代码10 项目: MineTinker   文件: BuildersWandListener.java
private boolean placeBlock(Block b, Player player, Location l, Location loc, ItemStack item, Vector vector) {
	if (!b.getWorld().getBlockAt(l).getType().equals(b.getType())) {
		return false;
	}

	Material type = b.getWorld().getBlockAt(loc).getType();

	if (!(type == Material.AIR || type == Material.CAVE_AIR ||
			type == Material.WATER || type == Material.BUBBLE_COLUMN ||
			type == Material.LAVA || type == Material.GRASS)) {

		return false;
	}

	//triggers a pseudoevent to find out if the Player can build
	Block block = b.getWorld().getBlockAt(loc);

	BlockPlaceEvent placeEvent = new BlockPlaceEvent(block, block.getState(), b, item, player, true, EquipmentSlot.HAND);
	Bukkit.getPluginManager().callEvent(placeEvent);

	//check the pseudoevent
	if (!placeEvent.canBuild() || placeEvent.isCancelled()) {
		return false;
	}

	Block nb = b.getWorld().getBlockAt(loc);
	Block behind = nb.getWorld().getBlockAt(loc.clone().subtract(vector));
	if (behind.getBlockData() instanceof Slab) {
		if (((Slab) behind.getBlockData()).getType().equals(Slab.Type.DOUBLE)) {
			if (item.getAmount() - 2 < 0) {
				return false;
			}
		}
	}

	nb.setType(item.getType());
	BlockData bd = nb.getBlockData();

	if (bd instanceof Directional) {
		((Directional) bd).setFacing(((Directional) behind.getBlockData()).getFacing());
	}

	if (bd instanceof Slab) {
		((Slab) bd).setType(((Slab) behind.getBlockData()).getType());
	}

	nb.setBlockData(bd);

	return true;
}
 
源代码11 项目: Shopkeepers   文件: NMSHandler.java
@Override
public boolean isMainHandInteraction(PlayerInteractEntityEvent event) {
	return event.getHand() == EquipmentSlot.HAND;
}
 
源代码12 项目: Kettle   文件: BlockPlaceEvent.java
@Deprecated
public BlockPlaceEvent(final Block placedBlock, final BlockState replacedBlockState, final Block placedAgainst, final ItemStack itemInHand, final Player thePlayer, final boolean canBuild) {
    this(placedBlock, replacedBlockState, placedAgainst, itemInHand, thePlayer, canBuild, EquipmentSlot.HAND);
}
 
源代码13 项目: Kettle   文件: PlayerInteractAtEntityEvent.java
public PlayerInteractAtEntityEvent(Player who, Entity clickedEntity, Vector position) {
    this(who, clickedEntity, position, EquipmentSlot.HAND);
}
 
源代码14 项目: Kettle   文件: PlayerInteractEvent.java
public PlayerInteractEvent(final Player who, final Action action, final ItemStack item, final Block clickedBlock, final BlockFace clickedFace) {
    this(who, action, item, clickedBlock, clickedFace, EquipmentSlot.HAND);
}
 
源代码15 项目: ProjectAres   文件: Slot.java
@Override
public EquipmentSlot toEquipmentSlot() {
    return EquipmentSlot.HAND;
}
 
源代码16 项目: Shopkeepers   文件: NMSHandler.java
@Override
public boolean isMainHandInteraction(PlayerInteractEvent event) {
	return event.getHand() == EquipmentSlot.HAND;
}
 
源代码17 项目: Shopkeepers   文件: NMSHandler.java
@Override
public boolean isMainHandInteraction(PlayerInteractEvent event) {
	return event.getHand() == EquipmentSlot.HAND;
}
 
源代码18 项目: Shopkeepers   文件: NMSHandler.java
@Override
public boolean isMainHandInteraction(PlayerInteractEvent event) {
	return event.getHand() == EquipmentSlot.HAND;
}
 
源代码19 项目: SaneEconomy   文件: InteractListener.java
@EventHandler
public void onPlayerInteract(PlayerInteractEvent evt) {
    if (!evt.getPlayer().hasPermission("saneeconomy.signshop.use")) {
        return;
    }

    if (evt.getHand() != EquipmentSlot.HAND) {
        return;
    }

    if ((evt.getPlayer().getInventory().getItemInMainHand() != null) && (evt.getPlayer().getInventory().getItemInMainHand().getType() == Material.DIAMOND_AXE)) {
        return;
    }

    if ((evt.getAction() != Action.RIGHT_CLICK_BLOCK) && (evt.getAction() != Action.LEFT_CLICK_BLOCK)) {
        return;
    }

    Optional<SignShop> shopOptional = this.plugin.getSignShopManager().getSignShop(evt.getClickedBlock().getLocation());

    if (!shopOptional.isPresent()) {
        return;
    }

    SignShop shop = shopOptional.get();

    // Buy
    if (evt.getAction() == Action.RIGHT_CLICK_BLOCK) {
        evt.setCancelled(true);
        if (!shop.canBuy()) {
            this.plugin.getMessenger().sendMessage(evt.getPlayer(), "This shop does not permit buying.");
            return;
        }

        this.doBuy(shop, evt.getPlayer());
    }

    // Sell
    if (evt.getAction() == Action.LEFT_CLICK_BLOCK) {
        evt.setCancelled(true);
        if (!shop.canSell()) {
            this.plugin.getMessenger().sendMessage(evt.getPlayer(), "This shop does not permit selling.");
            return;
        }

        this.doSell(shop, evt.getPlayer());
    }
}
 
源代码20 项目: Shopkeepers   文件: NMSHandler.java
@Override
public boolean isMainHandInteraction(PlayerInteractEntityEvent event) {
	return event.getHand() == EquipmentSlot.HAND;
}
 
 同类方法