下面列出了org.bukkit.Material#ARROW 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
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;
}
/**
* 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);
}
/**
* 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;
}
}
}
}
}
@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);
}
}
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");
}
}
@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();
}
}
@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);
}
}
/**
* @return the material
*/
public Material getMaterial() {
Material material = selector.getMaterial();
return material != null ? material : Material.ARROW;
}