# Table of Contents - [Main Configuration (config.yml) | EdSeries Plugins](#main-configuration-config-yml-edseries-plugins) - [OmniTools | EdSeries Plugins](#omnitools-edseries-plugins) - [Backpacks | EdSeries Plugins](#backpacks-edseries-plugins) - [Regen Zones | EdSeries Plugins](#regen-zones-edseries-plugins) - [Enchantments | EdSeries Plugins](#enchantments-edseries-plugins) - [GUIs | EdSeries Plugins](#guis-edseries-plugins) - [RivalPets | EdSeries Plugins](#rivalpets-edseries-plugins) - [Currencies & Leveling | EdSeries Plugins](#currencies-leveling-edseries-plugins) - [Events | EdSeries Plugins](#events-edseries-plugins) - [Other Features | EdSeries Plugins](#other-features-edseries-plugins) - [Zones API | EdSeries Plugins](#zones-api-edseries-plugins) - [OmniTool API | EdSeries Plugins](#omnitool-api-edseries-plugins) - [EdTools API | EdSeries Plugins](#edtools-api-edseries-plugins) - [APIEnchant Class | EdSeries Plugins](#apienchant-class-edseries-plugins) - [Placeholders | EdSeries Plugins](#placeholders-edseries-plugins) - [Commands | EdSeries Plugins](#commands-edseries-plugins) - [Currency API | EdSeries Plugins](#currency-api-edseries-plugins) - [Enchants API | EdSeries Plugins](#enchants-api-edseries-plugins) - [Sell API | EdSeries Plugins](#sell-api-edseries-plugins) - [Leveling API | EdSeries Plugins](#leveling-api-edseries-plugins) - [GUIs API | EdSeries Plugins](#guis-api-edseries-plugins) - [Backpacks API | EdSeries Plugins](#backpacks-api-edseries-plugins) - [Boosters API | EdSeries Plugins](#boosters-api-edseries-plugins) - [Lucky Blocks API | EdSeries Plugins](#lucky-blocks-api-edseries-plugins) --- # Main Configuration (config.yml) | EdSeries Plugins This file, located at `plugins/EdTools/config.yml`, contains the core settings for the plugin. Copy # EdTools Main Configuration ########################################## # Data Settings # ########################################## data: # Database method. Currently, only H2 is supported. # H2 is a file-based database stored within the plugin's folder. method: h2 ########################################## # Console Log Settings # ########################################## logging: # Allow color formatting in console messages? (true/false) format: true # Send detailed debug messages to the console? Useful for troubleshooting. (true/false) debug: false ########################################## # Number Format Settings # ########################################## format: # What will be the default notation type for placeholders like %..._formatted%? # Available: abbreviated, singlenum default-type: singlenum # Configuration for abbreviated numbers (e.g., 1.5k, 2.3M) abbreviated: thousands: "k" millions: "M" billions: "B" trillions: "T" quadrillions: "Qa" quintillions: "Qi" sextillions: "S" septillions: "Sp" octillions: "O" nonillions: "N" decillions: "D" # Configuration for single number format (e.g., 1,500,000) singlenum: separator: "," ########################################## # OmniTool Settings # ########################################## omnitool: # if true, the omnitool data (enchants, owner, etc.) will be stored directly on the item's NBT tags. # This means the tool's data travels with the item, even if traded. # If false, data is stored in the database, linked to the player. store-data-in-nbt: true # If true, players will not lose their OmniTool upon death. # This is automatically forced to 'true' if store-data-in-nbt is false. keep-on-death: true # If true, new players will receive a default OmniTool when they first join the server. give-on-first-login: true # The ID of the default tool to give, corresponding to a file in the /tools/ folder. default-tool: "crop-tool" [PreviousIntroduction](https://edseries-plugins.gitbook.io/p/edtools) [NextOmniTools](https://edseries-plugins.gitbook.io/p/edtools/features/omnitools) Was this helpful? --- # OmniTools | EdSeries Plugins OmniTools are the heart of the plugin. They are highly customizable items that can hold custom enchants, have unique appearances, and interact with other plugin features. They are not vanilla tools, but entirely new items controlled by the plugin. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/omnitools#creating-an-omnitool) Creating an OmniTool To create a new OmniTool, you create a new `.yml` file in the `plugins/EdTools/tools/` folder. The name of the file becomes the Tool ID (e.g., `crop-tool.yml` has the ID `crop-tool`). **Example:** `**tools/crop-tool.yml**` Copy # The ID of the GUI to open when the player interacts with this tool. # This corresponds to a file in the /guis/ folder. gui: 'crop' # Defines the item's appearance and properties. item: material: DIAMOND_HOE unbreakable: true name: '&b&lBasic Hoe' lore: - "&8ꜰᴀʀᴍɪɴɢ ᴛᴏᴏʟ" - "&3" - "&7Owner: &f{player}" - "&3" - "&b&lEnchants: &7({total-enchants})" # Conditional Lore: This line only appears if the enchant level is greater than 0. - "if({crop-fortune-level} > 0) then &r &b| &9Fortune &d%edtools_notation_{crop-fortune-level}%" - "if({crop-coingreed-level} > 0) then &r &b| &6Coin Greed &a%edtools_notation_{crop-coingreed-level}%" * `**gui**`: The ID of a GUI file from the `/guis/` folder that this tool will open. * `**item**`: An [Item Container](https://edseries-plugins.gitbook.io/p/edtools/features/omnitools#item-container) section that defines what the tool looks like. The lore supports placeholders to display dynamic information and conditional lines with `if(condition) then text`. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/omnitools#nbt-data-tags) NBT Data Tags When `omnitool.store-data-in-nbt` is enabled in `config.yml`, all of an OmniTool's data is stored directly on the item itself. This is useful for developers or advanced server owners who need to inspect or modify item data. * `edtools_omnitool_uuid`: A unique UUID for this specific item instance. * `edtools_omnitool_owner`: The Minecraft UUID of the player who first received the tool. * `edtools_omnitool_owner_display`: The display name of the owner. * `edtools_omnitool_tool`: The ID of the tool configuration (e.g., `crop-tool`). * `edtools_omnitool_version`: Internal plugin version for this tool's data structure. * `edtools_enchant_level_`: Stores the level of a specific enchant (e.g., `edtools_enchant_level_crop-fortune`). * `edtools_enchant_disabled_`: Stores whether an enchant is toggled off by the player. [PreviousMain Configuration (config.yml)](https://edseries-plugins.gitbook.io/p/edtools/features/main-configuration-config.yml) [NextBackpacks](https://edseries-plugins.gitbook.io/p/edtools/features/backpacks) Was this helpful? --- # Backpacks | EdSeries Plugins Backpacks are a core convenience feature of EdTools, providing players with a way to automatically collect items without cluttering their inventory. These backpacks can be upgraded for larger capacity and better multipliers, and they feature a fully integrated auto-selling system. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/backpacks#configuration-backpacks.yml) Configuration (backpacks.yml) The entire backpack system is configured in the backpacks.yml file. This file is split into two main sections: config and backpacks. #### [](https://edseries-plugins.gitbook.io/p/edtools/features/backpacks#main-config-section) Main config Section This section controls the global behavior and appearance of the backpack feature. **Example: config** Copy config: gui: 'backpack' autosell: permission: 'edtools.autosell' enabled-by-default: false item: enabled: true hotbar-slot: 8 item: material: 'texture-eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2ZkMTcwNDAwOGJjNjgzZGM4ZTZlOGZmN2MxMGUwY2YyNGQ3MmI4ZjMwNmRlMjYzMWUzZmViZmRlNjQ5MWM0ZCJ9fX0=' name: '&d&lYour Backpack' lore: - '&7Automatically collect all blocks' - '&7broken into this backpack.' - '&r' - ' &a* &bStorage: &a%edtools_backpack_size_formatted% &8/ &c%edtools_backpack_maxsize_formatted%' - '&3' - '&d[ᴄʟɪᴄᴋ ᴛᴏ ᴏᴘᴇɴ ʏᴏᴜʀ ʙᴀᴄᴋᴘᴀᴄᴋ]' * gui: The ID of the GUI file from the /guis/ folder that opens when a player interacts with their backpack. * autosell: * permission: The permission node a player must have to use the auto-sell feature. * enabled-by-default: If true, auto-sell is on for everyone by default. If false, players must have the specified permission to use it. * item: An [Item Container](https://www.google.com/url?sa=E&q=LINK_TO_ITEM_CONTAINER_DOCS) that defines the backpack item. * enabled: Set to true to give players the backpack item. * hotbar-slot: The hotbar slot (0-8) where the backpack item will be placed. * The item subsection defines the material, name, and lore. It supports placeholders like %edtools\_backpack\_size\_formatted% to display dynamic information. #### [](https://edseries-plugins.gitbook.io/p/edtools/features/backpacks#backpack-tiers-section) Backpack Tiers Section This section defines the different upgrade levels for the backpacks. The first entry in the list is the default backpack that all players start with. **Example: backpacks** Copy backpacks: "1": size: 10000 "2": size: 50000 multiplier: 0.2 # 20% blocks multiplier cost: currency: 'farm-coins' amount: 1000000 "3": size: 200000 multiplier: 0.5 cost: currency: 'farm-coins' amount: 5000000 Each entry is a new tier for the backpack, identified by a unique ID (e.g., "1", "2", "vip-pack"). * size: (Required) The total storage capacity of the backpack at this tier. * multiplier: (Optional) An item collection multiplier. For example, a value of 0.2 grants a 20% bonus, so collecting 100 items would add 120 to the backpack. The formula is items \* (1 + multiplier). * cost: (Optional) The cost to upgrade to this tier. If omitted, the tier cannot be purchased. * currency: The ID of the currency required for the upgrade (e.g., farm-coins, vault). * amount: The amount of the specified currency needed. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/backpacks#nbt-data-tags) NBT Data Tags To distinguish backpack items from other items, the plugin adds a specific NBT tag to the item stack. This allows the system to identify the backpack regardless of its material, name, or lore. * edtools\_backpack: A simple tag that marks the item as a managed backpack. Its value is not critical. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/backpacks#player-data) Player Data A player's current backpack tier and its contents are stored in their player data file, not on the item itself. This ensures that the data persists even if the player loses or temporarily stores the backpack item. [PreviousOmniTools](https://edseries-plugins.gitbook.io/p/edtools/features/omnitools) [NextEnchantments](https://edseries-plugins.gitbook.io/p/edtools/features/enchantments) Last updated 1 month ago Was this helpful? --- # Regen Zones | EdSeries Plugins Regen Zones are areas, such as mines or farms, where blocks regenerate automatically a set time after being broken by a player. This allows for continuous resource gathering without manual resets. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/regen-zones#creating-a-regen-zone) Creating a Regen Zone To create a zone, add a new `.yml` file in the `plugins/EdTools/zones/` directory. The name of this file will be the Zone ID. **Example:** `**zones/main-crops.yml**` Copy # The name of the world where the zone is located. world: world # The two opposite corners defining a cuboid region for the zone. # This will be used to check if a player is between the bounding box and # automatically load the zone min-corner: 4,5,6 max-corner: 3,6,3 # Will automatically load the zone if the player is in the bounding box. Will set automatically the first blocks section (WHEAT) in this case load-if-player-in-bounding-box: true # A list of OmniTool IDs that are allowed to break blocks in this zone. allowed-tools: - "crop-tool" # The block that appears as a placeholder while a block is waiting to regenerate. replacement-block: AIR # The time in seconds it takes for a broken block to regenerate. replacement-time: 4 # This section defines the types of blocks that can spawn in this zone. blocks: # Block set '1'. Players can choose which set they want to mine if multiple are available. '1': WHEAT: # The Minecraft material of the block. chance: 1 # The chance (0.0 to 1.0) for this block to be chosen when regenerating. drops: '1': # A unique ID for this drop rule. item: wheat-tier1 # The item ID from item-prices.yml to give to the player. chance: 1 # The chance for this drop to occur. # Block set '2' could contain different blocks, like POTATOES. '2': POTATOES: chance: 1 drops: '1': item: wheat-tier1 chance: 1 # A list of specific vector locations for the zone. # This is ideal for non-cuboid shapes or scattered blocks. # Use the Zone Wand to easily add to this list. locations: - 1,75,34 - 2,75,34 ### [](https://edseries-plugins.gitbook.io/p/edtools/features/regen-zones#zone-wand) Zone Wand The wand is an administrator tool designed to make it easy to select block locations for a zone without manually typing coordinates. * **Get the wand**: `/edtools wand [radius]` * **How to Use**: Right-click any block in the world to add its position to the specified zone's `locations` list in its configuration file. * **Saving**: The new positions are automatically saved to the zone's `.yml` file. [PreviousGUIs](https://edseries-plugins.gitbook.io/p/edtools/features/guis) [NextCurrencies & Leveling](https://edseries-plugins.gitbook.io/p/edtools/features/currencies-and-leveling) Last updated 1 month ago Was this helpful? --- # Enchantments | EdSeries Plugins Enchantments in EdTools are powerful, custom abilities you can add to your OmniTools. They are not vanilla enchantments and are defined entirely by your configurations, allowing for nearly limitless possibilities. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/enchantments#creating-an-enchantment) Creating an Enchantment Create a new `.yml` file in `plugins/EdTools/enchants/`. The filename becomes the unique Enchant ID. **Example:** `**enchants/crop-barn.yml**` Copy # The maximum chance (out of 100) this enchant can have to activate. max-chance: 100 # The level this enchant starts with when a player first gets the tool. starting-level: 0 # The maximum level this enchant can be upgraded to. max-level: 1000 # The material to display in GUIs. Can be a standard material, a player head texture, or a placeholder. material: "texture-eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGE5OTUzY2U5NDVkYTZlMmZiODAwMzBlNzU0ZmE4ZTA5MmM0ZTllY2QwNTQ4ZjkzOGMzNDk3YTgwOGU0MWE0OCJ9fX0=" # Type of enchant. 'CUSTOM' for complex actions, 'EFFECT' for simple potion effects. type: 'custom' # The ID of the tool this enchant belongs to. tool: 'crop-tool' # The friendly name for display purposes. display-name: 'Barn' # The cost to upgrade the enchant. cost: currency: farm-coins starting-cost: 100 increase-cost-by: 500 # The sequence of actions to perform when the enchant procs. actions: spawn-cow: type: 'spawn-entity' entity: 'COW' entity-id: 'my_cow' # A temporary ID to reference this cow in later actions pos: '{enchant_pos}' add-goal: type: 'add-goal' entity: 'my_cow' goal: 'move-to-pos' pos: '%edtools_randompos_{enchant_pos}|15,0,15%' speed: 0.3 break-blocks-loop: type: 'loop' ticks-between: 5 loop-count: 40 parallel: false actions: break_blocks: type: 'break-blocks' radius-pos: '{my_cow:pos}' # Use the spawned cow's position x-radius: 3 z-radius: 3 affect-sell: true remove-entity: type: 'remove-entity' entity: 'my_cow' ### [](https://edseries-plugins.gitbook.io/p/edtools/features/enchantments#enchant-actions) Enchant Actions Actions are the building blocks of custom enchants, defined under the `actions` key. They are executed in order when an enchant activates. Action Type Description Key Parameters `break-blocks` Breaks blocks in a defined area within a Regen Zone. `from`, `to` (vectors) or `radius-pos`, `x-radius` `loop` Repeats a sequence of nested actions multiple times. `loop-count`, `ticks-between`, `actions` `spawn-entity` Spawns a custom entity. `entity`, `pos`, `entity-id` (for referencing) `add-goal` Adds an AI goal to a spawned entity (e.g., move, follow). `entity`, `goal`, `pos`, `speed` `remove-entity` Removes a previously spawned entity by its ID. `entity` (the `entity-id` from spawning) `give-eco` Gives a player a specified amount of a custom currency. `currency`, `amount` `sell-item` Sells an item for the player based on `item-prices.yml`. `item`, `amount` `add-backpack-item` Adds a backpack sellable item to the player's backpack. `item`, `amount` `command` Executes a command from the console. `command` `delay` Pauses the action sequence for a specified number of ticks. `ticks` `give-effect` Gives the player a potion effect. `effect`, `level`, `ticks` `remove-effect` Removes a potion effect from the player. `effect` `particle` Spawns a particle at a location. `particle`, `pos` `message` Sends a message to the player. `message` [PreviousBackpacks](https://edseries-plugins.gitbook.io/p/edtools/features/backpacks) [NextGUIs](https://edseries-plugins.gitbook.io/p/edtools/features/guis) Last updated 1 month ago Was this helpful? --- # GUIs | EdSeries Plugins The plugin features a powerful and intuitive GUI creator to build interactive menus for your players, which can be used for enchanting, shops, navigation, and more. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/guis#creating-a-gui) Creating a GUI Create a new `.yml` file in `plugins/EdTools/guis/`. The filename becomes the GUI's unique ID. **Example:** `**guis/hoe-enchants.yml**` Copy # The title displayed at the top of the GUI. Supports color codes. title: '&8Hoe Enchantments' # The number of rows for the inventory. Must be between 1 and 6. rows: 6 # The sound to play when the GUI is opened. open-sound: 'BLOCK_CHEST_OPEN' # Optional: A permission required to open this GUI. # permission: 'edtools.gui.crop' # This section defines every item inside the GUI. contents: # The key 'black-glass' is a unique identifier for this item within the GUI. 'black-glass': material: 'BLACK_STAINED_GLASS_PANE' name: '&f' slots: '0-53' # You can define single slots (e.g., '4') or ranges ('0-8'). 'mining-pickaxe': material: 'WOODEN_PICKAXE' name: '&e&lMining Pickaxe' lore: - '&aClick here to switch to the Mining Pickaxe Tool' slots: '5' # Actions to run on any click type (left, right, middle, etc.). any-click-actions: - '[swaptool] pickaxe-tool' # Switches the player's held OmniTool - '[menu] pickaxe' # Opens the 'pickaxe' GUI 'fortune-enchant': slots: '10' material: '%edtools_enchant_material_crop-fortune%' # Material can be dynamic name: '&9&lꜰᴏʀᴛᴜɴᴇ &d&lᴇɴᴄʜᴀɴᴛ' lore: # Lore can use placeholders and supports conditional logic. - 'if(%edtools_leveling_level_crop-level% >= 5) then &9[CLICK TO UPGRADE]' - 'if(%edtools_leveling_level_crop-level% < 5) then &c[REQUIRES HOE LEVEL 5]' # A requirement that must be met for the click actions to fire. # Uses PlaceholderAPI placeholders. click-requirement: '%edtools_leveling_level_crop-level% >= 5' any-click-actions: # Opens another menu, passing context for what is being upgraded. - '[menu] upgrade-enchant enchant crop-fortune' ### [](https://edseries-plugins.gitbook.io/p/edtools/features/guis#gui-actions) GUI Actions Actions are commands executed when a player clicks an item. They are defined in a list under keys like `any-click-actions`, `left-click-actions`, `right-click-actions`, etc. The format is `[action] `. Here is a list of all registered actions: * `[command] `: Makes the player execute a command. * `[console] `: Executes a command from the server console. Placeholders `{player}`, `{uuid}`, and `{world}` will be replaced. * `[swapzoneblocks] `: Changes the block type for a player within a specific regeneration zone. * `[close]`: Closes the current GUI for the player. * `[message] `: Sends a formatted message to the player. Supports color codes and PlaceholderAPI. * `[menu] [placeholder1] [value1]...`: Opens another GUI. You can pass key-value pairs to be used as placeholders in the target menu. * `[enable-enchant] `: Enables a specific enchantment for the player. * `[disable-enchant] `: Disables a specific enchantment for the player. * `[upgrade-enchant] `: Upgrades a specified enchantment for the player by a given amount. * `[swaptool] `: Swaps the player's active OmniTool to the one specified. * `[sound] [volume] [pitch]`: Plays a sound for the player. Volume and pitch are optional (default to 1.0). * `[broadcast] `: Broadcasts a message to all players on the server. * `[title] <subtitle> [fadeIn] [stay] [fadeOut]`: Sends a title and subtitle to the player. The time values are optional. * `[permission] <permission> <successAction> [failAction]`: Checks if the player has a permission. Executes `successAction` if they do, and `failAction` if they don't. The actions must be a single string (e.g., `'[message] You have permission!'`). [PreviousEnchantments](https://edseries-plugins.gitbook.io/p/edtools/features/enchantments) [NextRegen Zones](https://edseries-plugins.gitbook.io/p/edtools/features/regen-zones) Was this helpful? --- # RivalPets | EdSeries Plugins To add pet experience when mining blocks add this buff: `edtools-break-block` To add pet experience when breaking blocks in a certain zone add this buff: `edtools-break-<tool-id>` Example: `edtools-break-crop-tool` To boost currencies add this buff: `edtools-<currency>` Example: `edtools-farm-coins` To boost a certain enchant add this buff: `edtools-enchant-<enchant>` Example: `edtools-enchant-crop-barn` To boost all existent enchants add this buff: `edtools-all-enchants` [PreviousPlaceholders](https://edseries-plugins.gitbook.io/p/edtools/features/placeholders) [NextEdTools API](https://edseries-plugins.gitbook.io/p/edtools/api/edtools-api) Last updated 17 days ago Was this helpful? --- # Currencies & Leveling | EdSeries Plugins EdTools allows you to create an unlimited number of custom currencies and leveling systems, each with their own commands, storage, and behavior. [](https://edseries-plugins.gitbook.io/p/edtools/features/currencies-and-leveling#currencies) Currencies ------------------------------------------------------------------------------------------------------------- A currency is any custom point system you want to track, like Gems, Coins, or Tokens. #### [](https://edseries-plugins.gitbook.io/p/edtools/features/currencies-and-leveling#creating-a-currency) Creating a Currency Create a new file in `plugins/EdTools/currencies/`. The filename serves as the currency's unique ID. **Example:** `**currencies/farm-coins.yml**` Copy # The maximum value a player can hold. 0 means unlimited. max-value: 0 # The amount players start with. starting-value: 0 # The name used in messages and GUIs. display-name: 'Farm Coins' # Configure the associated command for this currency. commands: main: permission: '' # Permission required for the base command. command: farmcoins aliases: [fc, fcoins] balance: permission: '' balance-other-permission: 'edtools.balance.others' # Perm to see others' balance. give: permission: 'edtools.balance.give' set: permission: 'edtools.balance.set' remove: permission: 'edtools.balance.remove' [](https://edseries-plugins.gitbook.io/p/edtools/features/currencies-and-leveling#leveling-systems) Leveling Systems ------------------------------------------------------------------------------------------------------------------------- A leveling system is a progression track that players can advance through, usually by spending a currency. It's perfect for things like prestiges, skill trees, or tool levels. #### [](https://edseries-plugins.gitbook.io/p/edtools/features/currencies-and-leveling#creating-a-leveling-system) Creating a Leveling System Create a new file in `plugins/EdTools/leveling/`. The filename is the system's unique ID. **Example:** `**leveling/crop-level.yml**` Copy display-name: 'Crop Level' starting-level: 1 # If true, the plugin will automatically attempt to purchase levels for the player # as soon as they have enough of the required currency. automatic-leveling: true # Define rewards for leveling up. rewards: for-each: # A list of actions executed on every single level up. - "[message] &aYou have reached &fLevel {level}&a." specific: # Actions executed only when reaching a specific level (e.g., level 4). 4: - "[message] You unlocked a new feature at level 4!" interval: # Actions executed at intervals (e.g., 5, 10, 15, 20...). 5: - "[message] You received a reward for reaching a multiple of 5 levels!" # Define the cost to advance in this leveling system. cost: currency: crop-blocks # The currency ID required. starting-cost: 100 increase-cost-by: 50 # The cost increases by this amount each level. remove-currency: true # Whether to take the currency from the player on purchase. # Configuration for the %..._bar_% placeholder. bar: amount: 32 # Total number of characters in the progress bar. completed: "&e:" uncompleted: "&c:" # Command configuration, similar to currencies. commands: main: command: hoelevel aliases: [hlevel] # ... other command settings [PreviousRegen Zones](https://edseries-plugins.gitbook.io/p/edtools/features/regen-zones) [NextOther Features](https://edseries-plugins.gitbook.io/p/edtools/features/other-features) Was this helpful? --- # Events | EdSeries Plugins `EdToolsBreakBlockEvent` : Asynchronously triggered when a regen zone block is mined by a player. `EdToolsCurrencyAddEvent` : Asynchronously triggered when trying to add a currency to a player. `EdToolsEnchantTryProcEvent` When an enchant tries to proc, you can edit the chance inside the event to boost it [PreviousEdTools API](https://edseries-plugins.gitbook.io/p/edtools/api/edtools-api) [NextZones API](https://edseries-plugins.gitbook.io/p/edtools/api/zones-api) Last updated 1 month ago Was this helpful? --- # Other Features | EdSeries Plugins Beyond the core systems, EdTools includes several other powerful, configurable features to enhance gameplay. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/other-features#lucky-blocks) Lucky Blocks Lucky Blocks are special items that players can find while performing actions (like farming in a Regen Zone). To open them, players must first meet a requirement, such as breaking a certain number of blocks. Create new lucky block types by adding `.yml` files to the `plugins/EdTools/luckyblocks/` folder. **Example:** `**luckyblocks/common.yml**` Copy # The tool that can contribute progress to unlocking this block. tool: crop-tool # The number of blocks that must be broken to unlock it. blocks: 100 # Actions to execute when the block is opened. default-actions: - "[message] &aYou opened a Common Lucky Block!" - "[sound] ENTITY_EXPERIENCE_ORB_PICKUP" # A weighted list of potential rewards. rewards: rewards-to-give: 1 # How many rewards from the list to grant. rewards: 1: chance: 0.5 # 50% chance actions: - "[console] crate givekey {player} common 1" 2: chance: 0.4 # 40% chance actions: - "[console] eco give {player} 1000" # Define the appearance of the item when it's locked and unlocked. locked-item: material: "texture-..." name: "&dLucky Block: &a&lCommon &c(Locked)" # ... lore unlocked-item: material: "texture-..." name: "&dLucky Block: &a&lCommon &a(Ready!)" # ... lore ### [](https://edseries-plugins.gitbook.io/p/edtools/features/other-features#boosters) Boosters Boosters are consumable items that grant players temporary multipliers on currency gains or enchant proc chances. Configure them in `plugins/EdTools/boosters.yml`. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/other-features#sell-system) Sell System Define the value of items by creating `item-prices.yml`. This allows the `sell-item` enchant action to function and is required for Regen Zone drops to work. **Example:** `**item-prices.yml**` Copy # Configuration for the periodic sell summary message. summary: enabled: true interval: 60 # in seconds message: - '&e&lReward Summary: &6(60s)' - ' &e&l+ %edtools_summary_farm-coins_formatted_single% &6Farm Coins' # Define item prices. The key 'wheat-tier1' is the item ID. wheat-tier1: prices: farm-coins: 5 # This item is worth 5 farm-coins. crop-blocks: 1 # and 1 crop-block. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/other-features#action-bar-and-xp-bar) Action Bar & XP Bar Configure `actionbar.yml` and `xpbar.yml` to display dynamic, zone-specific information to players directly on their screen. This is perfect for showing level progress, currency balances, or other important data without cluttering chat. **Example:** `**xpbar.yml**` Copy enabled: true zones: # When a player is in the 'main-crops' zone, their XP bar will show # the progress for the 'crop-level' leveling system. main-crops: 'crop-level' [PreviousCurrencies & Leveling](https://edseries-plugins.gitbook.io/p/edtools/features/currencies-and-leveling) [NextCommands](https://edseries-plugins.gitbook.io/p/edtools/features/commands) Was this helpful? --- # Zones API | EdSeries Plugins The `EdToolsZonesAPI` manages player sessions in instanced zones, such as private mines or farms. ### [](https://edseries-plugins.gitbook.io/p/edtools/api/zones-api#get-api-instance) Get API Instance Copy EdToolsZonesAPI zonesAPI = EdToolsAPI.getInstance().getZonesAPI(); * * * ### [](https://edseries-plugins.gitbook.io/p/edtools/api/zones-api#methods) Methods #### [](https://edseries-plugins.gitbook.io/p/edtools/api/zones-api#joinglobalsession-player-player-string-zoneid) `joinGlobalSession(Player player, String zoneId)` Adds a player to a shared, global session for a specific zone. All players in a global session for the same zone see each other. * `**player**`: The player to add. * `**zoneId**`: The ID of the zone to join. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/zones-api#joinalonesession-player-player-string-zoneid) `joinAloneSession(Player player, String zoneId)` Adds a player to a private, instanced session for a zone. The player will be alone in their version of the zone. * `**player**`: The player to add. * `**zoneId**`: The ID of the zone to join. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/zones-api#leavesession-player-player) `leaveSession(Player player)` Removes a player from their current zone session, teleporting them back to their original location. * `**player**`: The player to remove from a session. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/zones-api#isplayerinsession-player-player) `isPlayerInSession(Player player)` Checks if a player is currently in any zone session. * `**player**`: The player to check. * **Returns**: `true` if the player is in a session, `false` otherwise. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/zones-api#getplayerzoneid-player-player) `getPlayerZoneId(Player player)` Gets the player zone ID. Returns null if player is in no zone. * `**player**`: The player to check. * **Returns**: The zone id where the player is. `null` if player is in no zone #### [](https://edseries-plugins.gitbook.io/p/edtools/api/zones-api#getplayerzonesessiontype-player-player) `getPlayerZoneSessionType(Player player)` Gets the player zone session type. It can be 'alone' or 'global'. Null if player is in no zone * `**player**`: The player to check. * **Returns**: The zone session type where the player is. `null` if player is in no zone #### [](https://edseries-plugins.gitbook.io/p/edtools/api/zones-api#setplayerblockstypezone-player-player-string-zoneid-string-blockstype) `setPlayerBlocksTypeZone(Player player, String zoneId, String blocksType)` Sets the type of blocks that should regenerate in a zone for a specific player. This is useful for zones with multiple block options (e.g., different ores). * `**player**`: The player. * `**zoneId**`: The ID of the zone. * `**blocksType**`: The key/ID of the block type (from zone config). #### [](https://edseries-plugins.gitbook.io/p/edtools/api/zones-api#getplayerblockstypezone-player-player-string-zoneid) `getPlayerBlocksTypeZone(Player player, String zoneId)` Retrieves the currently selected block type for a player in a specific zone. * `**player**`: The player. * `**zoneId**`: The ID of the zone. * **Returns**: A `String` identifying the selected block type. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/zones-api#getplayerloadedblocks-player-player) `getPlayerLoadedBlocks(Player player)` Retrieves the currently loaded blocks in the current player session. Returns `null` if player is in no session. * `**player**`: The player. * **Returns**: A `Map<Vector, Material>` representing each position with its material. Returns `null` if player isn't in any session. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/zones-api#mineblockasplayer-player-player-vector-position-string-toolid-boolean-affectenchants-boolean-affects) `mineBlockAsPlayer(Player player, Vector position, String toolId, boolean affectEnchants, boolean affectSell, boolean affectBlockCurrencies, boolean affectLuckyBlocks)` Retrieves the currently loaded blocks in the current player session. Returns `null` if player is in no session. * `**player**`: The player. * `**position**` **:** The zone session position. Must be a valid position. * `**tooldId**`: The tool of the player that will be used to mine the block. * `**affectEnchants**`: If it will affect the tool enchants. * `**affectSell**`: If it will affect the sell implementation. (if true it will add the item to the backpack or autosell it depending on the player's permissions) * `**affectBlockCurrencies**`: If it will add block currencies. * `**affectLuckyBlocks**`: If it will increment lucky blocks progress. * **Returns**: A `APIPair<Material, String>` . The first value represents the material broken and the second value represents the item id of `item-prices.yml` to be sold [PreviousEvents](https://edseries-plugins.gitbook.io/p/edtools/api/events) [NextOmniTool API](https://edseries-plugins.gitbook.io/p/edtools/api/omnitool-api) Last updated 1 month ago Was this helpful? --- # OmniTool API | EdSeries Plugins The `EdToolsOmniToolAPI` allows you to manage OmniTools, which are special items that can have multiple functions or appearances. ### [](https://edseries-plugins.gitbook.io/p/edtools/api/omnitool-api#get-api-instance) Get API Instance Copy EdToolsOmniToolAPI omniToolAPI = EdToolsAPI.getInstance().getOmniToolAPI(); * * * ### [](https://edseries-plugins.gitbook.io/p/edtools/api/omnitool-api#methods) Methods #### [](https://edseries-plugins.gitbook.io/p/edtools/api/omnitool-api#getomnitoolitem-player-owner-string-toolid) `getOmniToolItem(Player owner, String toolId)` Creates an `ItemStack` for a specific OmniTool. * `**owner**`: The player who will be the owner of the tool. * `**toolId**`: The ID of the OmniTool as defined in the configuration. * **Returns**: An `ItemStack` of the requested OmniTool. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/omnitool-api#getomnitoolfromplayer-player-owner) `getOmniToolFromPlayer(Player owner)` Returns an `ItemStack`. It will return `null` if player has no omnitool on their inventory. * `**player**`: The player to get the omnitool from. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/omnitool-api#isitemomnitool-itemstack-item) `isItemOmniTool(ItemStack item)` Checks if a given `ItemStack` is a valid OmniTool. * `**item**`: The item to check. * **Returns**: `true` if the item is an OmniTool, `false` otherwise. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/omnitool-api#getomnitoolid-itemstack-item) `getOmniToolId(ItemStack item)` Retrieves the unique ID of an OmniTool from its `ItemStack`. * `**item**`: The OmniTool `ItemStack`. * **Returns**: A `String` containing the tool's ID, or `null` if it's not an OmniTool. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/omnitool-api#loadtool-string-toolid-configurationsection-toolsec) `loadTool(String toolId, ConfigurationSection toolSec)` Loads a new OmniTool into the plugin at runtime from a configuration section. * `**toolId**`: The unique ID for this new tool. * `**toolSec**`: The `ConfigurationSection` containing the tool's definition. [PreviousZones API](https://edseries-plugins.gitbook.io/p/edtools/api/zones-api) [NextBackpacks API](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api) Last updated 1 month ago Was this helpful? --- # EdTools API | EdSeries Plugins Welcome to the developer API documentation for EdTools. This guide will help you understand how to interact with the various systems within the plugin. ### [](https://edseries-plugins.gitbook.io/p/edtools/api/edtools-api#download) Download Download the API and import it as a system dependency. [![Logo](https://edseries-plugins.gitbook.io/p/~gitbook/image?url=https%3A%2F%2Fssl.gstatic.com%2Fimages%2Fbranding%2Fproduct%2F1x%2Fdrive_2020q4_32dp.png&width=20&dpr=4&quality=100&sign=9256dc9f&sv=2)EdTools-API.jarGoogle Docs](https://drive.google.com/file/d/1dk64GDGiGPdF60kK9r2HnaB7TVTFYBam/view?usp=sharing) ### [](https://edseries-plugins.gitbook.io/p/edtools/api/edtools-api#getting-the-api-instance) Getting the API Instance To access any of the plugin's functionalities, you must first get the main API instance. All sub-APIs (like Currency, Boosters, etc.) are accessible through this main class. The API is only available after the EdTools plugin has been fully loaded. Make sure your plugin loads after EdTools by adding `EdTools` to the `depend` or `softdepend` list in your `plugin.yml`. **Example** `**plugin.yml**`**:** Copy name: YourPlugin version: 1.0 main: com.yourdomain.yourplugin.Main depend: [EdTools] **How to get the instance:** Copy import es.edwardbelt.edgens.iapi.EdToolsAPI; public class YourPluginClass { public void onEnable() { if (getServer().getPluginManager().getPlugin("EdTools") != null) { EdToolsAPI api = EdToolsAPI.getInstance(); // You can now access all other APIs // For example: api.getCurrencyAPI().getCurrency(player.getUniqueId(), "gems"); } } } The main `EdToolsAPI` interface provides access to all specialized APIs: * `getEnchantAPI()` * `getLuckyBlocksAPI()` * `getGuisAPI()` * `getZonesAPI()` * `getOmniToolAPI()` * `getCurrencyAPI()` * `getBoostersAPI()` * `getBackpackAPI()` [PreviousRivalPets](https://edseries-plugins.gitbook.io/p/edtools/features/rivalpets) [NextEvents](https://edseries-plugins.gitbook.io/p/edtools/api/events) Last updated 1 month ago Was this helpful? --- # APIEnchant Class | EdSeries Plugins Copy package es.edwardbelt.edgens.iapi.enchant; import org.bukkit.entity.Player; public interface APIEnchant { void onProc(Player player, EnchantData data); } You don't need to check for chances, levels, etc. - just implement the enchant method. At the moment, enchants only proc when a block is broken, so the implementation of the `EnchantData` object will always be a `CustomEnchantData` object. Therefore, in the `onProc` method, cast the `EnchantData` object to a `CustomEnchantData` object. ### [](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api/apienchant-class#customenchantdata-class) `CustomEnchantData Class` Copy @Getter public class CustomEnchantData extends EnchantData { private Material material; private Vector position; private String sellItem; } #### [](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api/apienchant-class#usage) Usage As you can see, you will be able to get: * The material that was broken * The position where it was broken * The sold item (if the player doesn't have autosell enabled, the item will go to the backpack) ### [](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api/apienchant-class#example-implementation) Example Implementation Copy public class MyCustomEnchant implements APIEnchant { @Override public void onProc(Player player, EnchantData data) { // Cast to CustomEnchantData to access specific properties CustomEnchantData customData = (CustomEnchantData) data; Material brokenMaterial = customData.getMaterial(); Vector blockPosition = customData.getPosition(); String soldItem = customData.getSellItem(); // Your enchant logic here } } #### [](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api/apienchant-class#important-warning) Important Warning **The** `**onProc**` **method is called asynchronously!** This means that any Bukkit methods that modify the game state (such as spawning entities, setting blocks, etc.) must be called synchronously using the Bukkit scheduler. [PreviousEnchants API](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api) [NextCurrency API](https://edseries-plugins.gitbook.io/p/edtools/api/currency-api) Last updated 1 month ago Was this helpful? --- # Placeholders | EdSeries Plugins EdTools integrates deeply with [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) to provide a vast array of dynamic placeholders that you can use in any other plugin that supports PAPI, as well as within EdTools' own configuration files (like GUIs and lore). > **Number Formatting:** > > * Append `_formatted` to a number-based placeholder to format it using the `default-type` from `config.yml`. > > * Append `_formatted_single` to always format it with separators (e.g., `1,000,000`). > ### [](https://edseries-plugins.gitbook.io/p/edtools/features/placeholders#enchant-placeholders) Enchant Placeholders * `%edtools_enchant_level_<enchant>%`: The player's current level of the specified enchant. * `%edtools_enchant_chance_<enchant>%`: The calculated activation chance of the enchant for the player. * `%edtools_enchant_maxlevel_<enchant>%`: The maximum level configured for the enchant. * `%edtools_enchant_cost_<enchant>_<levels>%`: The cost to upgrade an enchant by a specific number of levels. * `%edtools_enchant_maxcost_<enchant>%`: The total cost to upgrade by the maximum number of levels the player can currently afford. * `%edtools_enchant_maxlevels_<enchant>%`: The maximum number of levels of an enchant the player can afford to buy at once. * `%edtools_enchant_material_<enchant>%`: The material name defined in the enchant's configuration file. * `%edtools_enchant_status_<enchant>%`: The enchant's toggle state for the player. Returns `enabled` or `disabled`. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/placeholders#leveling-placeholders) Leveling Placeholders * `%edtools_leveling_level_<level>%`: The player's current level in the specified leveling system. * `%edtools_leveling_bar_<level>%`: The text-based progress bar, as configured in the leveling file. * `%edtools_leveling_progress_<level>%`: The numerical percentage progress to the next level (e.g., `85.42`). * `%edtools_leveling_currencyrequired_<level>%` The total required currency to level up. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/placeholders#currency-placeholders) Currency Placeholders * `%edtools_currency_balance_<currency>%`: The player's balance of the specified currency. * `%edtools_currency_name_<currency>%`: The `display-name` of the currency. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/placeholders#booster-placeholders) Booster Placeholders * `%edtools_boosters_global_enchants%`: The total multiplier from all of a player's active global enchant boosters. * `%edtools_boosters_global_<currency>%`: The total multiplier from all of a player's active boosters for a specific currency. * `%edtools_boosters_names_enchants%`: A list of names of active global enchant boosters. * `%edtools_boosters_names_<currency>%`: A list of names of active boosters for a specific currency. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/placeholders#utility-placeholders) Utility Placeholders * `%edtools_calc_<expression>%`: Calculates a mathematical expression. You can embed other placeholders inside it. Example: `%edtools_calc_10*{edtools_enchant_level_crop-coingreed}%`. * `%edtools_random_<min>|<max>%`: Returns a random whole number between the min and max values. * `%edtools_notation_<number>%`: Formats a raw number using the default notation from `config.yml`. * `%edtools_summary_<currency>%`: The total amount of a currency a player has earned in the current sell summary period (from `item-prices.yml`). * `%edtools_zone_crop_selected_<zoneId>%`: The ID of the block type a player has selected for a given Regen Zone. * `%edtools_zone_in%`: The ID of the zone where the player is. Will return the raw placeholder if the player isn't in any zone. [PreviousCommands](https://edseries-plugins.gitbook.io/p/edtools/features/commands) [NextRivalPets](https://edseries-plugins.gitbook.io/p/edtools/features/rivalpets) Last updated 1 month ago Was this helpful? --- # Commands | EdSeries Plugins This page lists the commands available in EdTools. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/commands#main-admin-command) Main Admin Command Command Permission Description `/edtools reload` `edtools.admin` Reloads all plugin configurations from disk. `/edtools omnitool <player> <tool_id>` `edtools.admin` Gives a specified player an OmniTool. `/edtools swaptool <player> <tool_id>` `edtools.admin` Swaps the OmniTool a player is holding to a new type. `/edtools enchant <player> <enchant> <level>` `edtools.admin` Sets the level of a custom enchant for a player. `/edtools luckyblock <player> <id>` `edtools.admin` Gives a player a specified lucky block. `/edtools zone <player> <zone> [global|alone]` `edtools.admin` Forces a player into a Regen Zone session. `/edtools zoneblocks <player> <zone> <type>` `edtools.admin` Sets the active block type a player sees in a zone. `/edtools wand <zone_id> [radius]` `edtools.admin` Gives the command sender a Zone Wand for easy setup. `/edtools gui <player> <gui_id>` `edtools.admin` Remotely opens a custom GUI for a player. `/edtools help` `edtools.admin` Displays a list of available admin commands. `/edtools backpack Player` `edtools.admin` Gives a backpack to a player. ### [](https://edseries-plugins.gitbook.io/p/edtools/features/commands#player-commands) Player Commands Command Permission Description `/boosters` or `/boosts` `edtools.boosters.open` Opens the personal boosters menu. `/boosters give <player> <id>` `edtools.boosters.admin` (Admin) Gives a player a booster item. `/<currency_command>` (Configurable) Manages a specific currency (e.g., `/farmcoins balance`). `/<level_command>` (Configurable) Manages a specific leveling system (e.g., `/hoelevel`). [PreviousOther Features](https://edseries-plugins.gitbook.io/p/edtools/features/other-features) [NextPlaceholders](https://edseries-plugins.gitbook.io/p/edtools/features/placeholders) Last updated 1 month ago Was this helpful? --- # Currency API | EdSeries Plugins The `EdToolsCurrencyAPI` is used for managing player balances for custom currencies defined in the plugin's configuration. ### [](https://edseries-plugins.gitbook.io/p/edtools/api/currency-api#get-api-instance) Get API Instance Copy EdToolsCurrencyAPI currencyAPI = EdToolsAPI.getInstance().getCurrencyAPI(); * * * ### [](https://edseries-plugins.gitbook.io/p/edtools/api/currency-api#methods) Methods #### [](https://edseries-plugins.gitbook.io/p/edtools/api/currency-api#getcurrency-uuid-uuid-string-currency) `getCurrency(UUID uuid, String currency)` Retrieves the balance of a specific currency for a player. * `**uuid**`: The player's unique ID. * `**currency**`: The ID of the currency (e.g., "gems"). * **Returns**: A `double` representing the player's balance. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/currency-api#setcurrency-uuid-uuid-string-currency-double-amount) `setCurrency(UUID uuid, String currency, double amount)` Sets a player's currency balance to a specific amount. * `**uuid**`: The player's unique ID. * `**currency**`: The currency ID. * `**amount**`: The new balance to set. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/currency-api#addcurrency-uuid-uuid-string-currency-double-amount) `addCurrency(UUID uuid, String currency, double amount)` Adds a specified amount to a player's currency balance. * `**uuid**`: The player's unique ID. * `**currency**`: The currency ID. * `**amount**`: The amount to add. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/currency-api#removecurrency-uuid-uuid-string-currency-double-amount) `removeCurrency(UUID uuid, String currency, double amount)` Removes a specified amount from a player's currency balance. * `**uuid**`: The player's unique ID. * `**currency**`: The currency ID. * `**amount**`: The amount to remove. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/currency-api#iscurrency-string-currency) `isCurrency(String currency)` Checks if a currency with the given ID is registered in the plugin. * `**currency**`: The currency ID. * **Returns**: A `boolean` indicating if the currency exists. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/currency-api#getmaxcurrencyvalue-string-currency) `getMaxCurrencyValue(String currency)` Gets the maximum possible value for a given currency. * `**currency**`: The currency ID. * **Returns**: A `double` for the maximum value. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/currency-api#getstartingcurrencyvalue-string-currency) `getStartingCurrencyValue(String currency)` Gets the default starting value for a given currency. * `**currency**`: The currency ID. * **Returns**: A `double` for the starting value. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/currency-api#getcurrencyname-string-currency) `getCurrencyName(String currency)` Gets the display name of a currency. * `**currency**`: The currency ID. * **Returns**: A `String` containing the formatted name. [PreviousAPIEnchant Class](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api/apienchant-class) [NextLeveling API](https://edseries-plugins.gitbook.io/p/edtools/api/leveling-api) Was this helpful? --- # Enchants API | EdSeries Plugins The `EdToolsEnchantAPI` allows you to interact with the custom enchantment system of the plugin. You can get, modify, and trigger enchantments for players. ### [](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api#get-api-instance) Get API Instance Copy EdToolsEnchantAPI enchantAPI = EdToolsAPI.getInstance().getEnchantAPI(); * * * ### [](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api#methods) Methods #### [](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api#registerenchant-string-enchantid-apienchant-enchant) `registerEnchant(String enchantId, APIEnchant enchant)` Registers an API enchant. * `**uuid**`: The enchant id. This should be the same to the enchant file name inside EdTools/enchants folder. * `**enchant**`: [The enchant object](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api/apienchant-class) . #### [](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api#getenchantlevel-uuid-uuid-string-enchant) `getEnchantLevel(UUID uuid, String enchant)` Gets the current level of a specific enchant for a player. * `**uuid**`: The player's unique ID. * `**enchant**`: The ID of the enchantment. * **Returns**: A `double` representing the player's enchant level. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api#addenchantlevel-uuid-uuid-string-enchant-double-level) `addEnchantLevel(UUID uuid, String enchant, double level)` Adds a specified number of levels to a player's enchant. * `**uuid**`: The player's unique ID. * `**enchant**`: The ID of the enchantment. * `**level**`: The number of levels to add. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api#removeenchantlevel-uuid-uuid-string-enchant-double-level) `removeEnchantLevel(UUID uuid, String enchant, double level)` Removes a specified number of levels from a player's enchant. * `**uuid**`: The player's unique ID. * `**enchant**`: The ID of the enchantment. * `**level**`: The number of levels to remove. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api#triggercustomenchant-player-player-string-enchant-material-material-vector-position) `triggerCustomEnchant(Player player, String enchant, Material material, Vector position)` Forces the activation of a custom enchant's effect. This does not perform a chance check. * `**player**`: The player triggering the enchant. * `**enchant**`: The ID of the enchant to trigger. * `**material**`: The `Material` of the block involved (if applicable). * `**position**`: The `Vector` position of the event (e.g., block broken). #### [](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api#trytriggercustomenchant-player-player-string-enchant-material-material-vector-position) `tryTriggerCustomEnchant(Player player, String enchant, Material material, Vector position)` Attempts to trigger a custom enchant, respecting its activation chance. * **Returns**: `true` if the enchant successfully triggered, `false` otherwise. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api#getenchantchance-uuid-uuid-string-enchant) `getEnchantChance(UUID uuid, String enchant)` Gets the activation chance for a given enchant for a specific player. * `**uuid**`: The player's unique ID. * `**enchant**`: The ID of the enchantment. * **Returns**: A `double` between 0 and 100 representing the chance. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api#getenchantmaxlevel-string-enchant) `getEnchantMaxLevel(String enchant)` Gets the configured maximum level for an enchantment. * `**enchant**`: The ID of the enchantment. * **Returns**: A `double` for the max level. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api#getenchantstartinglevel-string-enchant) `getEnchantStartingLevel(String enchant)` Gets the configured starting level for an enchantment. * `**enchant**`: The ID of the enchantment. * **Returns**: A `double` for the starting level. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api#getenchantmaxchance-string-enchant) `getEnchantMaxChance(String enchant)` Gets the configured maximum activation chance for an enchantment. * `**enchant**`: The ID of the enchantment. * **Returns**: A `double` for the max chance. [PreviousSell API](https://edseries-plugins.gitbook.io/p/edtools/api/sell-api) [NextAPIEnchant Class](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api/apienchant-class) Last updated 1 month ago Was this helpful? --- # Sell API | EdSeries Plugins The `EdToolsSellAPI` provides a comprehensive set of tools for developers to interact with the player sell system. ### [](https://edseries-plugins.gitbook.io/p/edtools/api/sell-api#get-api-instance) Get API Instance To begin using the Sell API, you first need to get an instance of it from the main EdToolsAPI class. Copy EdToolsSellAPI backpackAPI = EdToolsAPI.getInstance().getSellAPI(); * * * ### [](https://edseries-plugins.gitbook.io/p/edtools/api/sell-api#methods) Methods #### [](https://edseries-plugins.gitbook.io/p/edtools/api/sell-api#sellitem-uuid-playeruuid-string-itemid-double-amount) `sellItem(UUID playerUUID, String itemId, double amount)` Sells an item as a player. You need to specify the itemId from item-prices.yml and the amount to sell. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/sell-api#addsellsummary-uuid-playeruuid-string-currencyid-double-amount) `addSellSummary(UUID playerUUID, String currencyId, double amount)` Adds a currency to the sell summary. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/sell-api#getsellsummary-uuid-playeruuid-string-currencyid) `getSellSummary(UUID playerUUID, String currencyId)` Returns a `double` with that currency sell summary. [PreviousBackpacks API](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api) [NextEnchants API](https://edseries-plugins.gitbook.io/p/edtools/api/enchants-api) Last updated 1 month ago Was this helpful? --- # Leveling API | EdSeries Plugins The `EdToolsLevelingAPI` provides control over the plugin's leveling system. You can manage player levels, check rewards, and get configuration data. ### [](https://edseries-plugins.gitbook.io/p/edtools/api/leveling-api#get-api-instance) Get API Instance Copy EdToolsLevelingAPI levelingAPI = EdToolsAPI.getInstance().getLevelingAPI(); * * * ### [](https://edseries-plugins.gitbook.io/p/edtools/api/leveling-api#methods) Methods #### [](https://edseries-plugins.gitbook.io/p/edtools/api/leveling-api#getlevel-uuid-uuid-string-levelid) `getLevel(UUID uuid, String levelId)` Retrieves the current level of a player for a specific leveling category. * `**uuid**`: The player's unique ID. * `**levelId**`: The ID of the leveling category (e.g., "crop-level"). * **Returns**: A `double` with the player's current level. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/leveling-api#setlevel-uuid-uuid-string-levelid-double-level) `setLevel(UUID uuid, String levelId, double level)` Sets a player's level to a specific value. * `**uuid**`: The player's unique ID. * `**levelId**`: The leveling category ID. * `**level**`: The new level. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/leveling-api#addlevel-uuid-uuid-string-levelid-double-level) `addLevel(UUID uuid, String levelId, double level)` Adds a specified amount of levels to a player's total. * `**uuid**`: The player's unique ID. * `**levelId**`: The leveling category ID. * `**level**`: The amount to add. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/leveling-api#removelevel-uuid-uuid-string-levelid-double-level) `removeLevel(UUID uuid, String levelId, double level)` Removes a specified amount of levels from a player. * `**uuid**`: The player's unique ID. * `**levelId**`: The leveling category ID. * `**level**`: The amount to remove. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/leveling-api#islevel-string-level) `isLevel(String level)` Checks if a leveling category exists. * `**level**`: The leveling category ID. * **Returns**: `true` if it exists, `false` otherwise. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/leveling-api#getstartinglevel-string-level) `getStartingLevel(String level)` Gets the configured starting level for a category. * `**level**`: The leveling category ID. * **Returns**: A `double` with the starting level. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/leveling-api#isautomaticleveling-string-level) `isAutomaticLeveling(String level)` Checks if a category is configured for automatic leveling. * `**level**`: The leveling category ID. * **Returns**: `true` if leveling is automatic, `false` otherwise. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/leveling-api#getlevelname-string-level) `getLevelName(String level)` Gets the display name of a leveling category. * `**level**`: The leveling category ID. * **Returns**: A `String` with the display name. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/leveling-api#reward-information) Reward Information * `**getForEachRewards(String level)**`: Returns a list of commands executed for each level up. * `**getIntervalRewards(String level)**`: Returns a map of rewards for level intervals (e.g., every 10 levels). * `**getSpecificRewards(String level)**`: Returns a map of rewards for reaching specific levels. [PreviousCurrency API](https://edseries-plugins.gitbook.io/p/edtools/api/currency-api) [NextBoosters API](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api) Was this helpful? --- # GUIs API | EdSeries Plugins The `EdToolsGuisAPI` allows you to manage and display custom graphical user interfaces (GUIs) to players. ### [](https://edseries-plugins.gitbook.io/p/edtools/api/guis-api#get-api-instance) Get API Instance Copy EdToolsGuisAPI guisAPI = EdToolsAPI.getInstance().getGuisAPI(); * * * ### [](https://edseries-plugins.gitbook.io/p/edtools/api/guis-api#methods) Methods #### [](https://edseries-plugins.gitbook.io/p/edtools/api/guis-api#opengui-player-player-string-gui) `openGui(Player player, String gui)` Opens a specified GUI for a player. * `**player**`: The player to whom the GUI will be shown. * `**gui**`: The ID of the GUI (the name of its `.yml` file). #### [](https://edseries-plugins.gitbook.io/p/edtools/api/guis-api#opengui-player-player-string-gui-map-less-than-string-string-greater-than-placeholders) `openGui(Player player, String gui, Map<String, String> placeholders)` Opens a GUI for a player and applies a map of placeholders to its contents. * `**player**`: The player. * `**gui**`: The GUI ID. * `**placeholders**`: A `Map` where keys are placeholder names (without `{}`) and values are what they should be replaced with. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/guis-api#closegui-player-player) `closeGui(Player player)` Closes the currently opened custom GUI for a player. * `**player**`: The player whose inventory will be closed. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/guis-api#loadgui-string-guiid-file-guifile) `loadGui(String guiId, File guiFile)` Loads a new GUI into the system at runtime from a file. * `**guiId**`: The unique ID for this new GUI. * `**guiFile**`: The `.yml` file containing the GUI's configuration. [PreviousLucky Blocks API](https://edseries-plugins.gitbook.io/p/edtools/api/lucky-blocks-api) Was this helpful? --- # Backpacks API | EdSeries Plugins The `EdToolsBackpackAPI` provides a comprehensive set of tools for developers to interact with the player backpack system. You can retrieve backpack data, manage its contents, and handle upgrades externally. ### [](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api#get-api-instance) Get API Instance To begin using the Backpack API, you first need to get an instance of it from the main EdToolsAPI class. Copy EdToolsBackpackAPI backpackAPI = EdToolsAPI.getInstance().getBackpackAPI(); * * * ### [](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api#methods) Methods #### [](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api#getplayerbackpackininventory-player-player) `getPlayerBackpackInInventory(Player player)` Retrieves the actual `ItemStack` representing the player's backpack from their inventory. * **player**: The player whose backpack item you want to find. * **Returns**: The `ItemStack` of the backpack, or null if the player does not have it in their inventory. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api#getbackpackitems-uuid-uuid) `getBackpackItems(UUID uuid)` Gets a map of all items and their quantities stored in a player's backpack. * **uuid**: The unique ID of the player. * **Returns**: A `Map<String, Double>` where the key is the item ID and the value is the amount stored. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api#getbackpackweight-uuid-uuid) `getBackpackWeight(UUID uuid)` Calculates the total number of items currently inside a player's backpack. * **uuid**: The unique ID of the player. * **Returns**: A `double` representing the sum of all item amounts in the backpack. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api#sellbackpackitems-player-player) `sellBackpackItems(Player player)` Triggers a sale of all items currently in the player's backpack, clearing its contents. * **player**: The player whose backpack items will be sold. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api#upgradebackpackasplayer-player-player) `upgradeBackpackAsPlayer(Player player)` Attempts to upgrade the player's backpack to the next available tier. This method internally handles checking for the next upgrade and deducting the cost from the player's balance. * **player**: The player who is attempting to upgrade their backpack. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api#setbackpackupgrade-uuid-uuid-string-upgrade) `setBackpackUpgrade(UUID uuid, String upgrade)` Directly sets a player's backpack to a specific upgrade tier, bypassing any cost checks. * **uuid**: The unique ID of the player. * **upgrade**: The ID of the target backpack tier (e.g., "2", "3", "vip-pack"). #### [](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api#getbackpackupgrade-uuid-uuid) `getBackpackUpgrade(UUID uuid)` Retrieves the ID of the player's current backpack upgrade tier. * **uuid**: The unique ID of the player. * **Returns**: A `String` containing the ID of the current backpack tier. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api#getbackpacknextupgrade-uuid-uuid) `getBackpackNextUpgrade(UUID uuid)` Determines the next available upgrade tier for a player based on their current one. * **uuid**: The unique ID of the player. * **Returns**: A `String` with the ID of the next upgrade tier, or null if the player is at the maximum level. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api#getbackpackupgrades) `getBackpackUpgrades()` Gets a collection of all configured backpack upgrade tier IDs. * **Returns**: A `Set<String>` containing all available backpack tier IDs from backpacks.yml. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api#getbackpackupgrademultiplier-string-upgrade) `getBackpackUpgradeMultiplier(String upgrade)` Retrieves the item collection multiplier for a specific backpack tier. * **upgrade**: The ID of the backpack tier. * **Returns**: A `double` representing the multiplier (e.g., 0.2 for 20%). #### [](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api#getbackpackupgradecost-string-upgrade) `getBackpackUpgradeCost(String upgrade)` Gets the upgrade cost for a specific backpack tier. * **upgrade**: The ID of the backpack tier. * **Returns**: A `double` representing the cost amount. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api#getbackpackupgradecurrency-string-upgrade) `getBackpackUpgradeCurrency(String upgrade)` Gets the currency type required to upgrade to a specific backpack tier. * **upgrade**: The ID of the backpack tier. * **Returns**: A `String` with the ID of the currency (e.g., "farm-coins"). #### [](https://edseries-plugins.gitbook.io/p/edtools/api/backpacks-api#getbackpackupgradesize-string-upgrade) `getBackpackUpgradeSize(String upgrade)` Retrieves the total storage capacity for a specific backpack tier. * **upgrade**: The ID of the backpack tier. * **Returns**: A `double` representing the maximum capacity. [PreviousOmniTool API](https://edseries-plugins.gitbook.io/p/edtools/api/omnitool-api) [NextSell API](https://edseries-plugins.gitbook.io/p/edtools/api/sell-api) Last updated 1 month ago Was this helpful? --- # Boosters API | EdSeries Plugins The `EdToolsBoostersAPI` provides methods for managing player and global boosters, which can multiply currency earnings or provide other benefits. ### [](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api#get-api-instance) Get API Instance Copy EdToolsBoostersAPI boostersAPI = EdToolsAPI.getInstance().getBoostersAPI(); * * * ### [](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api#methods) Methods #### [](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api#getboostervaluebyeconomy-uuid-uuid-string-economy) `getBoosterValueByEconomy(UUID uuid, String economy)` Calculates the total booster multiplier for a specific player and currency type. * `**uuid**`: The player's unique ID. * `**economy**`: The name of the currency (e.g., "gems"). * **Returns**: A `double` representing the combined multiplier. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api#getboostervalueglobalenchants-uuid-uuid) `getBoosterValueGlobalEnchants(UUID uuid)` Gets the total booster value for global enchantments for a specific player. * `**uuid**`: The player's unique ID. * **Returns**: A `double` representing the enchant booster multiplier. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api#getactiveboosters-uuid-uuid) `getActiveBoosters(UUID uuid)` Retrieves a list of all active booster IDs for a player. * `**uuid**`: The player's unique ID. * **Returns**: A `List<String>` of booster IDs. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api#removebooster-uuid-uuid-string-boosterid) `removeBooster(UUID uuid, String boosterId)` Removes a specific booster from a player. * `**uuid**`: The player's unique ID. * `**boosterId**`: The unique ID of the booster to remove. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api#existsbooster-uuid-uuid-string-boosterid) `existsBooster(UUID uuid, String boosterId)` Checks if a player has a specific active booster. * `**uuid**`: The player's unique ID. * `**boosterId**`: The unique ID of the booster. * **Returns**: `true` if the booster exists and is active, otherwise `false`. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api#getboostercurrency-uuid-uuid-string-boosterid) `getBoosterCurrency(UUID uuid, String boosterId)` Gets the currency a specific booster applies to. * `**uuid**`: The player's unique ID. * `**boosterId**`: The unique ID of the booster. * **Returns**: A `String` with the name of the economy, or null if it's an enchant booster. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api#isboosterenchanttype-uuid-uuid-string-boosterid) `isBoosterEnchantType(UUID uuid, String boosterId)` Checks if a booster is for enchants instead of a currency. * `**uuid**`: The player's unique ID. * `**boosterId**`: The unique ID of the booster. * **Returns**: `true` if it's an enchant booster, `false` otherwise. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api#getboostername-uuid-uuid-string-boosterid) `getBoosterName(UUID uuid, String boosterId)` Gets the display name of a booster. * `**uuid**`: The player's unique ID. * `**boosterId**`: The unique ID of the booster. * **Returns**: The `String` display name. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api#getboostermultiplier-uuid-uuid-string-boosterid) `getBoosterMultiplier(UUID uuid, String boosterId)` Gets the multiplier value of a specific booster. * `**uuid**`: The player's unique ID. * `**boosterId**`: The unique ID of the booster. * **Returns**: A `double` representing the multiplier. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api#getboosterduration-uuid-uuid-string-boosterid) `getBoosterDuration(UUID uuid, String boosterId)` Gets the total initial duration of the booster in seconds. * `**uuid**`: The player's unique ID. * `**boosterId**`: The unique ID of the booster. * **Returns**: A `long` representing the total duration. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api#getboosterremainingtime-uuid-uuid-string-boosterid) `getBoosterRemainingTime(UUID uuid, String boosterId)` Gets the remaining time on a booster in seconds. * `**uuid**`: The player's unique ID. * `**boosterId**`: The unique ID of the booster. * **Returns**: A `long` with the remaining time. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api#addbooster) `addBooster(...)` Adds a new booster to a player. * `**uuid**`: The player's unique ID. * `**boosterId**`: A unique identifier for this new booster. * `**boosterName**`: The display name of the booster. * `**economy**`: The currency this booster affects (can be an enchant or a currency, it can also be empty to make it enchant global booster). * `**multiplier**`: The booster multiplier (e.g., 1.0 for a 2x boost). * `**duration**`: The duration of the booster in seconds. * `**enchantBooster**`: Set to `true` if this is an enchant booster. * `**saveDB**` **:** If the booster will be saved in the database. If so, it will keep between server restarts. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api#setbooster...-methods) `setBooster...` methods The API also provides setters (`setBoosterMultiplier`, `setBoosterDuration`, etc.) to modify existing boosters. Their parameters match the corresponding getters. [PreviousLeveling API](https://edseries-plugins.gitbook.io/p/edtools/api/leveling-api) [NextLucky Blocks API](https://edseries-plugins.gitbook.io/p/edtools/api/lucky-blocks-api) Last updated 1 month ago Was this helpful? --- # Lucky Blocks API | EdSeries Plugins The `EdToolsLuckyBlocksAPI` provides methods to interact with Lucky Blocks, allowing you to create, identify, and manage them. ### [](https://edseries-plugins.gitbook.io/p/edtools/api/lucky-blocks-api#get-api-instance) Get API Instance Copy EdToolsLuckyBlocksAPI luckyBlocksAPI = EdToolsAPI.getInstance().getLuckyBlocksAPI(); * * * ### [](https://edseries-plugins.gitbook.io/p/edtools/api/lucky-blocks-api#methods) Methods #### [](https://edseries-plugins.gitbook.io/p/edtools/api/lucky-blocks-api#getluckyblockitem-string-id-player-owner) `getLuckyBlockItem(String id, Player owner)` Creates a new Lucky Block item. * `**id**`: The ID of the Lucky Block type as defined in the configuration. * `**owner**`: The player who will own this Lucky Block. * **Returns**: An `ItemStack` representing the Lucky Block. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/lucky-blocks-api#isluckyblock-itemstack-item) `isLuckyBlock(ItemStack item)` Checks if a given item is a valid Lucky Block from this plugin. * `**item**`: The `ItemStack` to check. * **Returns**: `true` if the item is a Lucky Block, `false` otherwise. #### [](https://edseries-plugins.gitbook.io/p/edtools/api/lucky-blocks-api#isluckyblockunlocked-itemstack-item) `isLuckyBlockUnlocked(ItemStack item)` Checks if a Lucky Block has been "unlocked" (i.e., its rewards can be given). * `**item**`: The Lucky Block `ItemStack`. * **Returns**: `true` if it's unlocked, `false` if it's still "sealed". #### [](https://edseries-plugins.gitbook.io/p/edtools/api/lucky-blocks-api#updateluckyblock-player-player-itemstack-item) `updateLuckyBlock(Player player, ItemStack item)` Updates the state or lore of a Lucky Block. This is often used after a player has met certain conditions to unlock it. * `**player**`: The player who owns the block. * `**item**`: The Lucky Block `ItemStack` to update. [PreviousBoosters API](https://edseries-plugins.gitbook.io/p/edtools/api/boosters-api) [NextGUIs API](https://edseries-plugins.gitbook.io/p/edtools/api/guis-api) Was this helpful? ---