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

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

源代码1 项目: UhcCore   文件: ScenarioManager.java
public Inventory getScenarioEditInventory(){

        Inventory inv = Bukkit.createInventory(null,6*ROW, Lang.SCENARIO_GLOBAL_INVENTORY_EDIT);

        // add edit item
        ItemStack back = new ItemStack(Material.ARROW);
        ItemMeta itemMeta = back.getItemMeta();
        itemMeta.setDisplayName(Lang.SCENARIO_GLOBAL_ITEM_BACK);
        back.setItemMeta(itemMeta);
        inv.setItem(5*ROW+8,back);

        for (Scenario scenario : Scenario.values()){
            if (!scenario.isCompatibleWithVersion()){
                continue;
            }

            ItemStack scenarioItem = scenario.getScenarioItem();
            if (isActivated(scenario)){
                scenarioItem.addUnsafeEnchantment(Enchantment.DURABILITY, 1);
                scenarioItem.setAmount(2);
            }
            inv.addItem(scenarioItem);
        }

        return inv;
    }
 
源代码2 项目: Sentinel   文件: SentinelItemHelper.java
/**
 * Gets the correct ArrowItem type for the NPC based on inventory items (can be null if the NPC needs ammo but has none).
 */
public ItemStack getArrow() {
    if (!getNPC().hasTrait(Inventory.class)) {
        return sentinel.needsAmmo ? null : new ItemStack(Material.ARROW, 1);
    }
    Inventory inv = getNPC().getTrait(Inventory.class);
    ItemStack[] items = inv.getContents();
    for (ItemStack item : items) {
        if (item != null) {
            Material mat = item.getType();
            if (mat == Material.ARROW
                    || (SentinelVersionCompat.v1_9 && (mat == Material.TIPPED_ARROW || mat == Material.SPECTRAL_ARROW))
                    || (SentinelVersionCompat.v1_14 && mat == Material.FIREWORK_ROCKET)) {
                return item.clone();
            }
        }
    }
    return sentinel.needsAmmo ? null : new ItemStack(Material.ARROW, 1);
}
 
源代码3 项目: Sentinel   文件: SentinelItemHelper.java
/**
 * Takes an arrow from the NPC's inventory.
 */
public void takeArrow() {
    if (!getNPC().hasTrait(Inventory.class)) {
        return;
    }
    Inventory inv = getNPC().getTrait(Inventory.class);
    ItemStack[] items = inv.getContents();
    for (int i = 0; i < items.length; i++) {
        ItemStack item = items[i];
        if (item != null) {
            Material mat = item.getType();
            if (mat == Material.ARROW
                    || (SentinelVersionCompat.v1_9 && (mat == Material.TIPPED_ARROW || mat == Material.SPECTRAL_ARROW))
                    || (SentinelVersionCompat.v1_14 && mat == Material.FIREWORK_ROCKET)) {
                if (item.getAmount() > 1) {
                    item.setAmount(item.getAmount() - 1);
                    items[i] = item;
                    inv.setContents(items);
                    return;
                }
                else {
                    items[i] = null;
                    inv.setContents(items);
                    return;
                }
            }
        }
    }
}
 
源代码4 项目: 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);
	}
}
 
源代码5 项目: SkyWarsReloaded   文件: ArrowRainEvent.java
public ArrowRainEvent(GameMap map, boolean b) {
	this.gMap = map;
	this.enabled = b;
	File dataDirectory = SkyWarsReloaded.get().getDataFolder();
       File mapDataDirectory = new File(dataDirectory, "mapsData");

       if (!mapDataDirectory.exists() && !mapDataDirectory.mkdirs()) {
       	return;
       }
       
       File mapFile = new File(mapDataDirectory, gMap.getName() + ".yml");
    if (mapFile.exists()) {
    	eventName = "ArrowRainEvent";
    	slot = 2;
    	material = new ItemStack(Material.ARROW, 1);
        FileConfiguration fc = YamlConfiguration.loadConfiguration(mapFile);
        this.min = fc.getInt("events." + eventName + ".minStart");
        this.max = fc.getInt("events." + eventName + ".maxStart");
        this.length = fc.getInt("events." + eventName + ".length");
        this.chance = fc.getInt("events." + eventName + ".chance");
        this.title = fc.getString("events." + eventName + ".title");
        this.subtitle = fc.getString("events." + eventName + ".subtitle");
        this.startMessage = fc.getString("events." + eventName + ".startMessage");
        this.endMessage = fc.getString("events." + eventName + ".endMessage");
        this.announceEvent = fc.getBoolean("events." + eventName + ".announceTimer");
        this.repeatable = fc.getBoolean("events." + eventName + ".repeatable");
        this.per2Tick = fc.getInt("events." + eventName + ".spawnPer2Tick");
       }
}
 
源代码6 项目: HeavySpleef   文件: FlagBowspleef.java
@Subscribe
public void onGameStart(GameStartEvent event) {
	Game game = event.getGame();
	
	ItemStack arrow = new ItemStack(Material.ARROW);
	
	for (SpleefPlayer player : game.getPlayers()) {
		Inventory inventory = player.getBukkitPlayer().getInventory();
		inventory.addItem(getBowItemstack());
		inventory.addItem(arrow);
		
		player.getBukkitPlayer().updateInventory();
	}
}
 
源代码7 项目: MineTinker   文件: MultiShot.java
@EventHandler
public void onShoot(ProjectileLaunchEvent event) {
	if (!this.isAllowed()) {
		return;
	}

	Projectile arrow = event.getEntity();

	if (!(arrow instanceof Arrow)) {
		return;
	}

	if (!(arrow.getShooter() instanceof Player)) {
		return;
	}

	Player player = (Player) arrow.getShooter();

	if (!player.hasPermission("minetinker.modifiers.multishot.use")) {
		return;
	}

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

	if (ToolType.CROSSBOW.contains(tool.getType()) && getConfig().getBoolean("UseEnchantOnCrossbow")) {
		return;
	}

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

	int modLevel = modManager.getModLevel(tool, this);

	if (modLevel <= 0) {
		return;
	}

	Vector vel = arrow.getVelocity().clone();
	Location loc = arrow.getLocation().clone();

	boolean hasInfinity = modManager.hasMod(tool, Infinity.instance());

	boolean hasFiery = modManager.hasMod(tool, Fiery.instance()) && player.hasPermission("minetinker.modifiers.fiery.use");
	ChatWriter.logModifier(player, event, this, tool,
			Fiery.instance().getKey() + "(" + hasFiery + ")",
			Infinity.instance().getKey() + "(" + hasInfinity + ")");

	for (int i = 1; i <= modLevel; i++) {
		if (!player.getGameMode().equals(GameMode.CREATIVE)) {
			if (!hasInfinity && needsArrows) {
				if (!player.getInventory().contains(Material.ARROW)) {
					break;
				}

				for (ItemStack item : player.getInventory().getContents()) {
					if (item == null) {
						continue;
					}

					if (item.getType() == Material.ARROW) {
						item.setAmount(item.getAmount() - 1);
						break;
					}
				}
			}
		}

		Bukkit.getScheduler().runTaskLater(MineTinker.getPlugin(), () -> {
			Arrow arr = loc.getWorld().spawnArrow(loc, vel, (float) vel.length(), (float) spread);
			if(hasFiery) arr.setFireTicks(2000);
			arr.setShooter(player);

			if (hasInfinity || player.getGameMode().equals(GameMode.CREATIVE)) {
				arr.setPickupStatus(AbstractArrow.PickupStatus.CREATIVE_ONLY);
			}

			arr.setCritical(((Arrow) arrow).isCritical());
			arr.setDamage(((Arrow) arrow).getDamage());
		}, i);
	}
}
 
源代码8 项目: BetonQuest   文件: QuestItem.java
/**
 * @return the material
 */
public Material getMaterial() {
    Material material = selector.getMaterial();
    return material != null ? material : Material.ARROW;
}
 
 方法所在类
 同类方法