@EventHandler public void onCustomEvent(ToPlayerInRegionEvent event) { Location l = event.getLocation(); RegionManager rm = getPlugin().getRegionManager(); Region r = rm.getRegion(l); if (r == null) return; RegionType rt = rm.getRegionType(r.getType()); int jumpMult = effect.regionHasEffect(rt.getEffects(), "man_cannon"); // Check if the region is a teleporter if (jumpMult == 0) return; // Check to see if the Townships has enough reagents if (!effect.hasReagents(l)) { return; } // Run upkeep but don't need to know if upkeep occured effect.forceUpkeep(event); // Launch the player into the air Player player = event.getPlayer(); float pitch = player.getEyeLocation().getPitch(); int jumpForwards = 1; if (pitch > 45) { jumpForwards = 1; } if (pitch > 0) { pitch = -pitch; } float multiplier = ((90f + pitch) / 50f); Vector v = player .getVelocity() .setY(1) .add( player .getLocation() .getDirection() .setY(0) .normalize() .multiply(multiplier * jumpForwards)); NCPExemptionManager.exemptPermanently(player, CheckType.MOVING); player.setVelocity(v.multiply(jumpMult)); player.setFallDistance(-8f * jumpMult); NCPExemptionManager.unexempt(player, CheckType.MOVING); }
public static void openListInventory( ArrayList<RegionType> regions, ArrayList<SuperRegionType> superRegions, Player player, String category) { int size = 9; int actualSize = regions.size() + superRegions.size() + 1; if (actualSize > size) { size = actualSize + 9 - (actualSize % 9); if (actualSize % 9 == 0) { size -= 9; } } category = category.toLowerCase(); // Inventory inv = Bukkit.createInventory(null, size, ChatColor.RED + category + " Regions"); // Inventory inv = Bukkit.createInventory(new MenuHolder(Bukkit.createInventory(null, size)), // size, ChatColor.RED + WordUtils.capitalize(category) + " Regions"); Inventory inv = Bukkit.createInventory( null, size, ChatColor.RED + WordUtils.capitalize(category) + " Regions"); NumberFormat formatter = NumberFormat.getCurrencyInstance(); int i = 0; for (RegionType r : regions) { ItemStack is = new ItemStack(r.getIcon()); ItemMeta isMeta = is.getItemMeta(); String displayName = ChatColor.RESET + r.getName(); ArrayList<String> lore = new ArrayList<String>(); lore.add(ChatColor.RESET + "" + ChatColor.GRAY + "Region"); if (r.getDescription() != null && !r.getDescription().equals("")) { lore.addAll(Util.textWrap(ChatColor.RESET + "" + ChatColor.GOLD, r.getDescription())); } if (r.getMoneyRequirement() > 0) { lore.add( ChatColor.RESET + "" + ChatColor.BLUE + "Cost: " + formatter.format(r.getMoneyRequirement())); } /*if (r.getRequirements().size() > 0) { lore.add("Requirements"); for (ArrayList<TOItem> items : r.getRequirements()) { String reagents = ""; for (TOItem item : items) { if (!reagents.equals("")) { reagents += " or "; } String itemName = ""; if (item.isWildDamage()) { itemName = item.getMat().name().replace("_", " ").toLowerCase(); } else { ItemStack ist = new ItemStack(item.getMat(), 1, (short) item.getDamage()); itemName = Items.itemByStack(ist).getName(); } reagents += item.getQty() + " " + itemName; } lore.addAll(Util.textWrap("", reagents)); } }*/ isMeta.setDisplayName(displayName); // Trim lore trimLore: { boolean addEllipses = lore.size() > 20; if (addEllipses) { for (int k = lore.size(); k > 19; k--) { lore.remove(k - 1); } lore.add("To be continued..."); } } isMeta.setLore(lore); is.setItemMeta(isMeta); inv.setItem(i, is); i++; } for (SuperRegionType sr : superRegions) { ItemStack is = new ItemStack(sr.getIcon()); ItemMeta isMeta = is.getItemMeta(); String displayName = ChatColor.RESET + sr.getName(); ArrayList<String> lore = new ArrayList<String>(); lore.add(ChatColor.RESET + "" + ChatColor.GRAY + "Super Region"); if (sr.getDescription() != null && !sr.getDescription().equals("")) { lore.addAll(Util.textWrap(ChatColor.GOLD + "", sr.getDescription())); } if (sr.getChildren().size() > 0) { lore.add(ChatColor.GREEN + "Upgrade from:"); int lineCount = 0; String childString = ""; for (String srt : sr.getChildren()) { if (!childString.equals("")) { childString += ", "; } else { childString += ChatColor.GREEN + ""; } lineCount += srt.length(); if (lineCount > 50) { lore.add(childString); childString = new String(); lineCount = srt.length(); } childString += srt; } lore.add(childString); } if (sr.getMoneyRequirement() > 0) { lore.add("Cost: " + formatter.format(sr.getMoneyRequirement())); } if (sr.getRequirements().size() > 0) { lore.add(ChatColor.BLUE + "Requirements:"); for (String s : sr.getRequirements().keySet()) { lore.add(ChatColor.BLUE + " " + sr.getRequirement(s) + " " + s); } } isMeta.setDisplayName(displayName); // Trim lore trimLore: { boolean addEllipses = lore.size() > 20; if (addEllipses) { for (int k = lore.size(); k > 19; k--) { lore.remove(k - 1); } lore.add("To be continued..."); } } isMeta.setLore(lore); is.setItemMeta(isMeta); inv.setItem(i, is); i++; } ItemStack is = new ItemStack(Material.REDSTONE_BLOCK); ItemMeta isMeta = is.getItemMeta(); isMeta.setDisplayName(ChatColor.RESET + "Back to Categories"); ArrayList<String> lore = new ArrayList<String>(); lore.add("list " + category); isMeta.setLore(lore); is.setItemMeta(isMeta); inv.setItem(size - 1, is); player.openInventory(inv); }