@Override public void run() { for (CustomPlayer customPlayer : Core.getCustomPlayers()) { Player p = customPlayer.getPlayer(); try { if (!((List<String>) SettingsManager.getConfig().get("Enabled-Worlds")) .contains(p.getWorld().getName())) { customPlayer.clear(); customPlayer.removeMenuItem(); } } catch (Exception exc) { } } }
@EventHandler protected void onItemDrop(PlayerDropItemEvent event) { if (event.getItemDrop().getItemStack().getType() == type.getMaterial()) { if (event.getItemDrop().getItemStack().getData().getData() == type.getData()) { if (event.getItemDrop().getItemStack().getItemMeta().hasDisplayName()) { if (event .getItemDrop() .getItemStack() .getItemMeta() .getDisplayName() .endsWith(getName())) { if (SettingsManager.getConfig().getBoolean("Remove-Gadget-With-Drop")) { Core.getCustomPlayer(getPlayer()).removeGadget(); event.getItemDrop().remove(); return; } event.setCancelled(true); } } } } }
GadgetType( Material material, byte data, double defaultCountdown, String permission, String configName, String defaultDesc, Class<? extends Gadget> clazz) { this.permission = permission; this.configName = configName; this.clazz = clazz; this.material = material; this.data = data; this.affectPlayers = SettingsManager.getConfig().getBoolean("Gadgets." + configName + ".Affect-Players"); if (SettingsManager.getConfig().get("Gadgets." + configName + ".Cooldown") == null) { this.countdown = defaultCountdown; SettingsManager.getConfig().set("Gadgets." + configName + ".Cooldown", defaultCountdown); } else this.countdown = Double.valueOf( String.valueOf( SettingsManager.getConfig().get("Gadgets." + configName + ".Cooldown"))); if (SettingsManager.getConfig().get("Gadgets." + configName + ".Description") == null) { this.description = defaultDesc; Core.config.addDefault( "Gadgets." + configName + ".Description", getDescriptionWithColor(), "Description of this gadget."); } else this.description = fromList( ((List<String>) SettingsManager.getConfig().get("Gadgets." + configName + ".Description"))); }
public Gadget(final UUID owner, final GadgetType type) { this.permission = type.permission; this.type = type; this.affectPlayers = type.affectPlayers(); if (!type.isEnabled()) return; this.useTwoInteractMethods = false; if (owner != null) { this.owner = owner; if (Core.getCustomPlayer(getPlayer()).currentGadget != null) Core.getCustomPlayer(getPlayer()).removeGadget(); if (!getPlayer().hasPermission(permission)) { getPlayer().sendMessage(MessageManager.getMessage("No-Permission")); return; } DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Locale.US); otherSymbols.setDecimalSeparator('.'); otherSymbols.setGroupingSeparator('.'); otherSymbols.setPatternSeparator('.'); final DecimalFormat decimalFormat = new DecimalFormat("0.0", otherSymbols); BukkitRunnable runnable = new BukkitRunnable() { @Override public void run() { try { if (Bukkit.getPlayer(owner) != null && Core.getCustomPlayer(Bukkit.getPlayer(owner)).currentGadget != null && Core.getCustomPlayer(Bukkit.getPlayer(owner)).currentGadget.getType() == type) { onUpdate(); if (Core.cooldownInBar) { if (getPlayer().getItemInHand() != null && itemStack != null && getPlayer().getItemInHand().hasItemMeta() && getPlayer().getItemInHand().getItemMeta().hasDisplayName() && getPlayer() .getItemInHand() .getItemMeta() .getDisplayName() .contains(getType().getName()) && Core.getCustomPlayer(getPlayer()).canUse(type) != -1) sendCooldownBar(); double left = Core.getCustomPlayer(getPlayer()).canUse(type); if (left > -0.1) { String leftRounded = decimalFormat.format(left); double decimalRoundedValue = Double.parseDouble(leftRounded); if (decimalRoundedValue == 0) { PlayerUtils.sendInActionBar( getPlayer(), MessageManager.getMessage("Gadgets.Gadget-Ready-ActionBar") .replace( "%gadgetname%", (Core.placeHolderColor) ? getName() : Core.filterColor(getName()))); getPlayer().playSound(getPlayer().getLocation(), Sound.NOTE_STICKS, 1f, 1f); } } } } else { cancel(); unregisterListeners(); } } catch (NullPointerException exc) { removeItem(); onClear(); removeListener(); getPlayer() .sendMessage( MessageManager.getMessage("Gadgets.Unequip") .replace( "%gadgetname%", (Core.placeHolderColor) ? getName() : Core.filterColor(getName()))); cancel(); } } }; runnable.runTaskTimerAsynchronously(Core.getPlugin(), 0, 1); listener = new GadgetListener(this); Core.registerListener(listener); Core.registerListener(this); if (getPlayer().getInventory().getItem((int) SettingsManager.getConfig().get("Gadget-Slot")) != null) { getPlayer() .getWorld() .dropItem( getPlayer().getLocation(), getPlayer() .getInventory() .getItem((int) SettingsManager.getConfig().get("Gadget-Slot"))); getPlayer().getInventory().remove((int) SettingsManager.getConfig().get("Gadget-Slot")); } String d = Core.isAmmoEnabled() && getType().requiresAmmo() ? "§f§l" + Core.getCustomPlayer(getPlayer()).getAmmo(type.toString().toLowerCase()) + " " : ""; itemStack = ItemFactory.create( type.getMaterial(), type.getData(), d + getName(), MessageManager.getMessage("Gadgets.Lore")); getPlayer() .getInventory() .setItem((int) SettingsManager.getConfig().get("Gadget-Slot"), itemStack); getPlayer() .sendMessage( MessageManager.getMessage("Gadgets.Equip") .replace( "%gadgetname%", (Core.placeHolderColor) ? getName() : Core.filterColor(getName()))); Core.getCustomPlayer(getPlayer()).currentGadget = this; } }
@EventHandler protected void onPlayerInteract(final PlayerInteractEvent EVENT) { Player player = EVENT.getPlayer(); UUID uuid = player.getUniqueId(); CustomPlayer cp = Core.getCustomPlayer(getPlayer()); if (!uuid.equals(gadget.owner)) return; ItemStack itemStack = player.getItemInHand(); if (itemStack.getType() != gadget.getMaterial()) return; if (itemStack.getData().getData() != gadget.getData()) return; if (player.getInventory().getHeldItemSlot() != (int) SettingsManager.getConfig().get("Gadget-Slot")) return; if (Core.getCustomPlayer(getPlayer()).currentGadget != gadget) return; if (EVENT.getAction() == Action.PHYSICAL) return; EVENT.setCancelled(true); player.updateInventory(); if (!Core.getCustomPlayer(getPlayer()).hasGadgetsEnabled()) { getPlayer().sendMessage(MessageManager.getMessage("Gadgets-Enabled-Needed")); return; } if (Core.getCustomPlayer(getPlayer()).currentTreasureChest != null) return; if (Core.isAmmoEnabled() && getType().requiresAmmo()) { if (Core.getCustomPlayer(getPlayer()).getAmmo(getType().toString().toLowerCase()) < 1) { openAmmoPurchaseMenu(); return; } } if (type == GadgetType.PORTALGUN) { if (getPlayer().getTargetBlock((Set<Material>) null, 20).getType() == Material.AIR) { getPlayer().sendMessage(MessageManager.getMessage("Gadgets.PortalGun.No-Block-Range")); return; } } if (type == GadgetType.ROCKET) { boolean pathClear = true; Cuboid c = new Cuboid( getPlayer().getLocation().add(-1, 0, -1), getPlayer().getLocation().add(1, 75, 1)); if (!c.isEmpty()) { getPlayer().sendMessage(MessageManager.getMessage("Gadgets.Rocket.Not-Enough-Space")); return; } if (!getPlayer().isOnGround()) { getPlayer().sendMessage(MessageManager.getMessage("Gadgets.Rocket.Not-On-Ground")); return; } } if (type == GadgetType.DISCOBALL) { if (Core.discoBalls.size() > 0) { getPlayer().sendMessage(MessageManager.getMessage("Gadgets.DiscoBall.Already-Active")); return; } if (getPlayer().getLocation().add(0, 4, 0).getBlock() != null && getPlayer().getLocation().add(0, 4, 0).getBlock().getType() != Material.AIR) { getPlayer().sendMessage(MessageManager.getMessage("Gadgets.DiscoBall.Not-Space-Above")); return; } } if (type == GadgetType.CHRISTMASTREE) { if (EVENT.getClickedBlock() == null || EVENT.getClickedBlock().getType() == Material.AIR) { getPlayer() .sendMessage(MessageManager.getMessage("Gadgets.ChristmasTree.Click-On-Block")); return; } } if (type == GadgetType.TRAMPOLINE) { // Check blocks above. Location loc1 = getPlayer().getLocation().add(2, 15, 2); Location loc2 = getPlayer().getLocation().clone().add(-2, 0, -2); Block block = loc1.getBlock().getRelative(3, 0, 0); Block block2 = loc1.getBlock().getRelative(3, 1, 0); Cuboid checkCuboid = new Cuboid(loc1, loc2); if (!checkCuboid.isEmpty() || block.getType() != Material.AIR || block2.getType() != Material.AIR) { getPlayer().sendMessage(MessageManager.getMessage("Gadgets.Rocket.Not-Enough-Space")); return; } } // Check for the parachute if there is space 30-40 blocks above the player to avoid problems. if (type == GadgetType.PARACHUTE) { // Check blocks above. Location loc1 = getPlayer().getLocation().add(2, 28, 2); Location loc2 = getPlayer().getLocation().clone().add(-2, 40, -2); Cuboid checkCuboid = new Cuboid(loc1, loc2); if (!checkCuboid.isEmpty()) { getPlayer().sendMessage(MessageManager.getMessage("Gadgets.Rocket.Not-Enough-Space")); return; } } if (type == GadgetType.EXPLOSIVESHEEP) { if (Core.explosiveSheep.size() > 0) { getPlayer() .sendMessage(MessageManager.getMessage("Gadgets.ExplosiveSheep.Already-Active")); return; } } double coolDown = cp.canUse(getType()); if (coolDown != -1) { String timeLeft = new DecimalFormat("#.#").format(coolDown); if (type.getCountdown() > 1) getPlayer() .sendMessage( MessageManager.getMessage("Gadgets.Countdown-Message") .replace( "%gadgetname%", (Core.placeHolderColor) ? getName() : Core.filterColor(getName())) .replace("%time%", timeLeft)); return; } else cp.setCoolDown(getType(), type.getCountdown()); if (Core.isAmmoEnabled() && getType().requiresAmmo()) { Core.getCustomPlayer(getPlayer()).removeAmmo(getType().toString().toLowerCase()); itemStack = ItemFactory.create( type.getMaterial(), type.getData(), "§f§l" + Core.getCustomPlayer(getPlayer()).getAmmo(type.toString().toLowerCase()) + " " + getName(), MessageManager.getMessage("Gadgets.Lore")); getPlayer() .getInventory() .setItem((int) SettingsManager.getConfig().get("Gadget-Slot"), itemStack); } if (EVENT.getClickedBlock() != null && EVENT.getClickedBlock().getType() != Material.AIR) lastClickedBlock = EVENT.getClickedBlock(); if (asyncAction) { Bukkit.getScheduler() .runTaskAsynchronously( Core.getPlugin(), new BukkitRunnable() { @Override public void run() { if (useTwoInteractMethods) { if (EVENT.getAction() == Action.RIGHT_CLICK_AIR || EVENT.getAction() == Action.RIGHT_CLICK_BLOCK) onRightClick(); else if (EVENT.getAction() == Action.LEFT_CLICK_BLOCK || EVENT.getAction() == Action.LEFT_CLICK_AIR) onLeftClick(); } else { onRightClick(); } } }); } else { if (useTwoInteractMethods) { if (EVENT.getAction() == Action.RIGHT_CLICK_AIR || EVENT.getAction() == Action.RIGHT_CLICK_BLOCK) onRightClick(); else if (EVENT.getAction() == Action.LEFT_CLICK_BLOCK || EVENT.getAction() == Action.LEFT_CLICK_AIR) onLeftClick(); } else { onRightClick(); } } }
/** * Gets the ammo it should give after a purchase. * * @return the ammo it should give after a purchase. */ public int getResultAmmoAmount() { return (int) SettingsManager.getConfig().get("Gadgets." + type.getConfigName() + ".Ammo.Result-Amount"); }
/** * Gets the price for each ammo purchase. * * @return the price for each ammo purchase. */ public int getPrice() { return (int) SettingsManager.getConfig().get("Gadgets." + type.getConfigName() + ".Ammo.Price"); }
/** Removes the item. */ public void removeItem() { itemStack = null; getPlayer().getInventory().setItem((int) SettingsManager.getConfig().get("Gadget-Slot"), null); }
public boolean isEnabled() { return SettingsManager.getConfig().getBoolean("Gadgets." + configName + ".Enabled"); }
public boolean canBeFound() { return SettingsManager.getConfig() .getBoolean("Gadgets." + configName + ".Can-Be-Found-In-Treasure-Chests"); }
public boolean showsDescription() { return SettingsManager.getConfig().getBoolean("Gadgets." + configName + ".Show-Description"); }
public boolean requiresAmmo() { return SettingsManager.getConfig().getBoolean("Gadgets." + configName + ".Ammo.Enabled"); }