# How to Install

This is a tutorial on how to install a build schematic on your server using a plugin called FAWE.

**FAWE plugin:** <https://intellectualsites.github.io/download/fawe.html>

1. Download and install the FastAsyncWorldEdit plugin
2. Move the `.schematic`or `.schem`file into your /plugins/FastAsyncWorldEdit/schematics folder
3. Load your schematic - /schematic load (schematic\_name).schem or .schematic
4. Go to a place where you want your build to be, the place where you stand, is where the build we pasted in
5. Do //paste or //paste -a&#x20;
   1. `//paste -a`pastes in your build without any air blocks to help mitigate some lag if needed,
6. Wait for your schematic to load, then fly around it for it to all load in.
7. Finished


# Common Issues & Solutions

Coming Soon


# Vexal Quicksand - Free

A lightweight Spigot/Paper plugin that turns selected blocks (e.g., sand, soul sand) into smooth, configurable quicksand. Players gradually sink, struggle to escape by jumping, and may take suffocation damage if submerged.

### Requirements

* Server: Spigot or Paper 1.17+ (api-version 1.17)
* Java: 16+
* Optional: WorldGuard 7.x for region flag control
  * A custom WorldGuard StateFlag named `quicksand` is registered when WorldGuard is present.

Paper is recommended for best jump escape behavior (uses PlayerJumpEvent if available). On Spigot, upward movement still grants escape windows.

### Installation

1. Download the plugin JAR and place it in your `plugins` folder.
2. (Optional) Install WorldGuard if you want region control via a flag.
3. Start or restart your server. The plugin will generate `config.yml` and `messages.yml` in `plugins/VexalQuickSand/`.
4. (Optional) Configure settings and then run `/vqs reload` or restart.

### Features

* Choose which blocks act as quicksand (default: SAND, RED\_SAND, SOUL\_SAND)
* Enable per-world via an allow-list (`enabled-worlds`)
* Smooth sinking with configurable speed and tick interval
* Jump-to-escape with tweakable jump power (Paper) and skip-intervals
* Optional sink depth limit (stop sinking after X blocks)
* Optional suffocation damage and blindness while submerged
* Optional particles around sinking players
* Optional slowness and slow falling while sinking
* Configurable action bar and chat messages (color tags & hex supported)
* Per-player trace logging for troubleshooting (`/vqs debug`)
* Optional WorldGuard flag to allow/deny quicksand per region, with per-world defaults

### Commands

* `/vqs` — Shows help
* `/vqs reload` — Reloads configuration and messages (admin)
* `/vqs debug` — Toggle trace for yourself (shows internal logic in console)
* `/vqs debug <player> [on|off|toggle]` — Admin: manage trace for a target player

Examples:

* `/vqs debug` — Toggle your own trace
* `/vqs debug on` — Turn on your trace
* `/vqs debug Notch off` — Turn off trace for Notch (admin)

### Permissions

* `vexalquicksand.admin` — Access to admin commands (reload, debug others). Default: OP
* `vexalquicksand.bypass` — Player is immune to quicksand. Default: OP

### Configuration Overview (config.yml)

Key sections and options:

* `debug` (boolean): Enable extra console logging from the plugin.
* `quicksand-blocks` (list): Material names that trigger quicksand logic.
* `enabled-worlds` (list): Worlds where the effect is active. Empty list = all worlds.

Messages

* `messages.sinking.send_to_chat` / `send_to_action_bar`: Where to show sinking notice
* `messages.sinking.action_bar_interval`: Seconds between action bar messages
* `messages.escaped.send_to_chat` / `send_to_action_bar`: Where to show escape notice

Mechanics

* `mechanics.sink-task-interval` (ticks): How often the sink task runs. Lower = smoother, higher CPU. 20 ticks = 1 second.
* `mechanics.sink-speed`: Downward speed (blocks per second). Effective motion per tick is derived from this and the interval.
* `mechanics.jump-escape-power`: Vertical velocity applied on jump (Paper only) to help escape.
* `mechanics.jump-escape-skip-intervals`: How many sink intervals to pause teleports after a jump/upward movement (escape window).
* `mechanics.escape-grace-millis`: After escape, prevent immediate retrigger for this duration.
* `mechanics.apply-slow-falling` / `apply-slowness` and `slowness-level`: Status effects while sinking.

Activation conditions

* `mechanics.minimum_cluster.enabled`: Require a minimum number of quicksand blocks nearby.
* `mechanics.minimum_cluster.required_amount`: Count of qualifying blocks in the search area.
* `mechanics.minimum_cluster.search_radius`: 1 = 3x3x3, 2 = 5x5x5. Keep small to avoid lag.
* `mechanics.disable_in_liquid`: If true, quicksand won’t trigger when player is in water/lava.
* `mechanics.sink_limit.enabled` / `depth`: Cap how deep a player can sink before movement stops.

Suffocation

* `mechanics.suffocation.enabled`: Deal damage while player’s head is inside quicksand.
* `mechanics.suffocation.damage-amount`: Each damage application (1.0 = half heart).
* `mechanics.suffocation.damage-interval` (ticks): Time between damage instances.
* `mechanics.suffocation.apply-blindness` / `blindness-level`: Add blindness while submerged.

Particles

* `mechanics.particles.enabled`: Toggle particles.
* `mechanics.particles.particle-type`: e.g. FALLING\_DUST. If the type needs block data, the plugin uses the ground block under the player.
* `mechanics.particles.count` / `radius`: Visual density and spread.

WorldGuard Integration

* `worldguard.enable-flag` (boolean): If true and WorldGuard is installed, the custom flag `quicksand` controls behavior in regions.
* `worldguard.worlds.<world>` (boolean): Per-world default when a region doesn’t set the flag (used only if enable-flag is true and the region returns null for the flag).

### WorldGuard: How To Use

* The plugin registers a `quicksand` StateFlag.
* To allow quicksand in a region: `/rg flag <region> quicksand allow`
* To deny quicksand in a region: `/rg flag <region> quicksand deny`
* If the flag isn’t set for a region, the plugin uses `config.yml` under `worldguard.worlds.<world>` to decide the default (true/false) for that world.
* Set `worldguard.enable-flag: true` to enforce the flag; otherwise the plugin ignores the WG flag and just uses its own world/block rules.

### Messages (messages.yml)

* Supports `<red>`, `<gold>`, etc., hex colors like `<#FFAA00>`, and legacy `&` codes.
* Configure `prefix`, `sinking` and `escaped` messages for chat and action bar, plus command messages.

### Performance & Tuning Tips

* Start with `sink-task-interval: 4` and `sink-speed: 0.7` (defaults in this repo) for smooth movement. Lower intervals are smoother but cost more CPU.
* Keep `minimum_cluster.search_radius` small (1–2). Larger values scan more blocks and may cause lag.
* Reduce `particles.count` or disable particles on busy servers.
* Limit `enabled-worlds` to only where needed.
* Avoid granting `vexalquicksand.bypass` widely if you want gameplay impact.
* Use `/vqs debug` sparingly; tracing is verbose and intended for diagnostics.

### Troubleshooting

* “Nothing happens when standing on sand”
  * Check `enabled-worlds` (empty list means all worlds; otherwise your world must be listed)
  * Ensure the block type is in `quicksand-blocks`
  * If using WorldGuard with `worldguard.enable-flag: true`, verify the region flag: `/rg info` and set `quicksand allow` as needed, or configure per-world defaults.
  * Make sure the player doesn’t have `vexalquicksand.bypass`
  * If standing in water/lava and `disable_in_liquid` is true, quicksand won’t trigger
  * Cluster requirement: adjust `minimum_cluster` if a single block isn’t sufficient
* “Players can’t escape”
  * Increase `jump-escape-power` (Paper only) and/or `jump-escape-skip-intervals`
  * Consider lowering `slowness-level` or increasing `sink-task-interval`
* “Too much damage”
  * Tweak `suffocation.damage-amount` and `damage-interval`; or disable suffocation

### Compatibility Notes

* Spigot and Paper 1.17+. Built against Java 16 and Paper API 1.17.1.
* Paper servers get improved jump handling via `PlayerJumpEvent`.
* WorldGuard 7.x is supported for region flags.

### Admin Reference

* Reload: `/vqs reload` (requires `vexalquicksand.admin`)
* Trace: `/vqs debug [on|off]` (self) or `/vqs debug <player> [on|off|toggle]` (admin)
* Bypass: grant `vexalquicksand.bypass` to exempt a player from quicksand

Enjoy smoother, more controllable quicksand gameplay! If you encounter issues, enable `debug: true` in `config.yml` and/or use `/vqs debug` on the affected player to capture trace logs in console.


# Vexal Ping Compass - Free

A lightweight Spigot/Paper plugin that gives players special compasses which point to the online player with the highest or the lowest ping. Useful for staff, events, or debugging network issues on your server.

### Features

* Highest Ping Compass: points to the online player with the highest latency.
* Lowest Ping Compass: points to the online player with the lowest latency.
* Simple admin command to give items to players.
* Per‑item cooldowns (configurable; set to 0 to disable).
* Customizable item names, lore, glow, and material.
* Works across modern Spigot/Paper versions. Uses Player#getPing when available and falls back to reflection for older versions.

### Requirements

* Java 17+ (use the same Java version as your server runtime)
* Spigot or Paper server (Minecraft 1.16+ recommended)

### Installation

1. Download the plugin JAR (vexalpingcompass-1.0-STABLE\*.jar).
2. Place it into your server's `plugins/` directory.
3. Start or restart your server.
4. A default `plugins/VexalPingCompass/config.yml` will be created.

### Commands

* `/vpc` — Shows a brief help message.
* `/vpc reload` — Reloads the plugin configuration from disk.
* `/vpc give <player> <type>` — Gives one of the special compasses to the specified player.
  * `<type>`: `highest` or `lowest`

### Permissions

* `vexalpingcompass.admin`
  * Required to run `/vpc reload` and `/vpc give`.

### Usage

* Right‑click the compass to set your compass target to the selected player:
  * Highest Ping Compass: tracks the player with the highest ping.
  * Lowest Ping Compass: tracks the player with the lowest ping.
* If a cooldown is configured, you must wait until the cooldown expires before using the compass again. The plugin will inform you how many seconds remain.

### Configuration

Default configuration (plugins/VexalPingCompass/config.yml):

```
plugin:
  prefix: "&7[VexalPingCompass]"

compass:
  highest:
    item: "COMPASS"
    displayname: "&aHighest Ping Compass"
    lore:
      - "&7Points to the player with the highest ping."
    glowing: true
    cooldown: 2 # in seconds
  lowest:
    item: "COMPASS"
    displayname: "&bLowest Ping Compass"
    lore:
      - "&7Points to the player with the lowest ping."
    glowing: true
    cooldown: 2 # in seconds

messages:
  reload: "&aConfiguration reloaded!"
  no_permission: "&cYou do not have permission to use this command!"
  invalid_command: "&cInvalid command usage!"
```

Notes:

* Colors use `&` codes and are translated automatically.
* `item`: any valid Bukkit `Material` name (e.g., `COMPASS`, `RECOVERY_COMPASS`, etc.). If invalid, it falls back to `COMPASS`.
* `glowing`: adds a hidden enchant to make the item glow.
* `cooldown`: set to `0` to disable cooldown for that compass.

### Compatibility notes

* Ping retrieval tries `Player#getPing()` first (available on modern API builds). If unavailable, it falls back to CraftBukkit internals via reflection for broad compatibility.
* Should work on Spigot or Paper. Other forks are untested but likely fine.

### Troubleshooting / FAQ

* The compass doesn’t point anywhere
  * Ensure at least one other player is online to track.
  * Make sure you’re using the correct compass (highest vs lowest) for your use‑case.
* "Please wait X seconds" message
  * You’re on cooldown. Adjust `compass.<type>.cooldown` or set it to `0` to disable.
* "You do not have permission" when running commands
  * Grant `vexalpingcompass.admin` to the appropriate staff group.
* Unsupported Material name in config
  * The plugin will fall back to `COMPASS`. Use a valid `Material` name for your server version.


# Vexal Infinite Bucket - Free

An advanced Minecraft plugin that enhances the vanilla bucket experience by introducing **infinite** and **multi-capacity** fluid storage. Players can toggle between infinite mode or store multiple buckets of the same fluid type — making it perfect for builders, redstone engineers, and survival players alike.

***

### 🪣 Features

* 🧊 **Infinite Mode:** Use water or lava endlessly without refilling.
* 🧺 **Storage Mode:** Store multiple buckets of the same fluid type in one item.
* 🔥 **Supports All Fluids:** Works with both water and lava.
* 🧩 **Highly Configurable:** Customize bucket limits, permissions, and behaviors.
* ⚙️ **Seamless Integration:** Works with any Bukkit/Spigot/Paper server.

***

### 🧱 Requirements

* **Minecraft:** 1.20+ (compatible with most modern Paper/Spigot builds)
* **Server Software:** PaperMC or compatible
* **Java:** 17 or higher

***

### ⚙️ Installation

1. Download the latest `VexalInfiniteBucket.jar` from the Releases page.
2. Place the `.jar` file into your server’s `/plugins/` directory.
3. Restart your server.
4. Modify the configuration file (`/plugins/VexalInfiniteBucket/config.yml`) as desired.

***

### 💬 Commands

| Command                        | Description                                  |
| ------------------------------ | -------------------------------------------- |
| `/bucket give <player> <type>` | Gives a Vexal Infinite Bucket to the player. |
| `/bucket reload`               | Reloads the plugin configuration.            |

***

### 🔒 Permissions

| Permission Node              | Description                                 |
| ---------------------------- | ------------------------------------------- |
| `vexalinfinitebucket.use`    | Allows usage of the Infinite Bucket.        |
| `vexalinfinitebucket.give`   | Allows giving Infinite Buckets via command. |
| `vexalinfinitebucket.reload` | Allows reloading the plugin.                |

***

### 🧾 Configuration Example

```
# Vexal Infinite Bucket Configuration
settings:
  default-mode: storage
  max-storage: 16  # Number of fluid units stored in storage mode
  allow-infinite: true
  messages:
    switched-mode: "&aYou switched your bucket to &e%mode% &amode!"
    not-allowed: "&cYou don't have permission to use this bucket."
```

***

### 🪄 Usage

1. Obtain a Vexal Infinite Bucket using `/infinitebucket give`.
2. Right-click while sneaking to toggle between **Infinite** and **Storage** modes.
3. In storage mode, collect or place fluids — the bucket tracks how much it holds.
4. In infinite mode, the bucket never runs out.


# Vexal Arrows - Free

## Custom Arrow System for Minecraft

VexalArrows brings a fully-customizable arrow system to Minecraft servers. Create unique arrow types with custom behaviors, effects, GUI selection menus, quivers, crafting recipes, and player arrow storage — all configurable through YAML or SQLite!

This plugin is designed for SMPs, RPG servers, and PvP servers that want **next-level archery mechanics** without needing mods.

***

### ✨ Features

* ✅ Fully custom arrow types
* ✅ Arrow effects & behaviors (explosive, potion-based, utility, etc.)
* ✅ Customizable crafting recipes
* ✅ Quiver system with GUI selector
* ✅ SQLite or YAML player data storage
* ✅ User-friendly GUI menu
* ✅ Permissions-based arrow access
* ✅ `/givearrow`, `/quiver`, `/quiverstandalone` commands
* ✅ Efficient and optimized Bukkit API design

***

### 🛠 Commands

| Command                                | Description                          | Permission                      |
| -------------------------------------- | ------------------------------------ | ------------------------------- |
| `/givearrow <player> <arrow> [amount]` | Gives a custom arrow                 | `vexalarrows.give`              |
| `/quiver`                              | Opens the quiver GUI                 | `vexalarrows.quiver`            |
| `/quiverstandalone`                    | Opens the standalone quiver selector | `vexalarrows.quiver.standalone` |

***

### 🔐 Permissions

| Permission                      | Description                    |
| ------------------------------- | ------------------------------ |
| `vexalarrows.give`              | Allow giving custom arrows     |
| `vexalarrows.quiver`            | Use the quiver system          |
| `vexalarrows.quiver.standalone` | Use standalone quiver menu     |
| `vexalarrows.arrow.*`           | Access all custom arrows       |
| `vexalarrows.arrow.<arrowname>` | Access a specific custom arrow |

***

### ⚙️ Configuration

All configs are found in `/plugins/VexalArrows/`

| File           | Purpose                        |
| -------------- | ------------------------------ |
| `arrows.yml`   | Define custom arrows & effects |
| `quiver.yml`   | Quiver settings                |
| `messages.yml` | Plugin messages                |
| `config.yml`   | Storage & main settings        |

Supports:

* SQLite storage
* YAML storage

***

### 📦 Installation

1. Download latest release
2. Drop into `/plugins/` folder
3. Start server
4. Edit config files as desired
5. Restart server

✅ Works on: **Paper / Spigot 1.20+**\
📌 Recommended: **Paper 1.20+**

***


# Vexal Rotating Shop

## Features:

* Rotating shops: daily, weekly, monthly
* Buy or Sell
* Ability to have multiple trades per category
* You cannot buy more than 2304 items at once
* You can make several deposits of items to meet the required quote if the sell quota is higher than 2304
* Option to limit the number of trades a player can make of a specific trade
* When a trade is completed, a command is ran for the player
* Tabs for categories within the GUI

## Fully customizable

* GUI
* Messages
* Trades
* Use HEX & Gradients everywhere

## Commands | Permissions

Main Command: `/rshop`

* `/rshop daily` | `vexalrotatingshop.daily`
* `/rshop weekly` | `vexalrotatingshop.weekly`
* `/rshop monthly`| `vexalrotatingshop.monthly`
* `/rshop reload` | `vexalrotatingshop.admin`
* `/rshop force-reset <daily/weekly/monthly>` | `vexalrotatingshop.admin`

## Versions Supported

* 1.17.1-1.21.x

## Dependencies

* Java 17+
* Vault: <https://www.spigotmc.org/resources/vault.34315/>

## Optional Dependencies

* PlaceholderAPI
* MiniPlaceholders


# Vexal Super Sponges

A Paper/Spigot plugin that adds powerful, configurable “super sponges” to clear water and/or lava in a chosen radius. Includes crafting recipes, per‑sponge properties (radius, uses, duration, cooldown), cooldown bypass permission, protection plugin support, and simple admin commands.

### Requirements

* Minecraft server: Paper or Spigot 1.17+ (api-version 1.17)
* Java 17+
* Optional (soft dependencies):
  * FastAsyncWorldEdit (FAWE) / WorldEdit
  * WorldGuard
  * Towny
  * GriefPrevention
  * GriefDefender

The plugin works without the soft dependencies, but will integrate with them when present to respect region/claim protections and to improve performance where possible.

### Installation

1. Download the plugin JAR (VexalSuperSponges.jar) from your build or release page.
2. Place it in your server’s plugins folder.
3. Start the server to generate the default configuration files:
   * plugins/VexalSuperSponges/config.yml
   * plugins/VexalSuperSponges/messages.yml
4. Adjust settings as needed, then use the reload command or restart the server.

### Features at a Glance

* Multiple sponge types with custom:
  * Item appearance (name, lore, glow, flags)
  * Radius and uses
  * Activation duration and reuse cooldown
  * Target liquid: WATER, LAVA, or BOTH
  * Crafting recipe (enable/disable per sponge)
* Cooldown system with a bypass permission
* Integration with popular protection plugins (WorldGuard, Towny, GP, GD)
* Clear player feedback via customizable messages

### Commands

* /vexalsupersponge reload
  * Permission: vexalsupersponge.reload
  * Reloads config.yml, messages.yml, and re-registers all sponge recipes.
* /vexalsupersponge give \[player]
  * Aliases: /vss, /supersponge, /sponge
  * Permission: vexalsupersponge.give
  * Gives the specified sponge to yourself or another player.

Examples:

* /sponge give basic
* /vss give ultimate Steve
* /sponge reload

### Permissions

* vexalsupersponge.reload — Use the reload subcommand.
* vexalsupersponge.give — Give yourself or others a sponge item.
* sponges.bypass.cooldown — Bypass sponge cooldowns (configurable key in config.yml; default shown below).

### Configuration

After first run, config.yml and messages.yml are generated using Okaeri Configs. Key options:

config.yml (conceptual overview):

* spongeConfig.bypassCooldownPermission: Permission that bypasses cooldowns (default: "sponges.bypass.cooldown").
* spongeConfig.sponges: A list of sponge definitions. Each sponge has:
  * id: Unique string id (e.g., "basic", "advanced", "ultimate").
  * item: ItemStack definition (name, lore, glow, flags) used to represent the sponge.
  * radius: Clearing radius in blocks.
  * uses: How many times the sponge can be used.
  * duration: How long the clearing task runs.
  * cooldown: How long the player must wait before reusing the sponge.
  * affect: WATER | LAVA | BOTH.
  * recipe: Crafting recipe settings:
    * shape: 3 strings like \["AAA","ABA","AAA"]
    * ingredients: Map of single character to Bukkit Material (e.g., 'A': SAND)
    * enabled: true/false to register the recipe.

messages.yml (highlights):

* noPermission, cantFindPlayer, onlyForPlayer, invalidUsage(+ header/entry)
* givenSponge (placeholders: {sponge}, {player})
* reloadedConfig
* cannotPlaceSponge, cannotPlaceSpongeProtected
* spongePlaced (placeholder: {uses})
* spongeStarted, spongeCompleted (placeholder: {blocks})
* spongeAlreadyActive, spongeFailed
* spongeOnCooldown (placeholder: {time})

Tip: You can use color codes supported by your chat component system (MiniMessage/legacy as configured by the plugin).

### Crafting Recipes

Each sponge can have its own shaped recipe. Whether the recipe is registered is controlled by the recipe.enabled flag. When enabled, recipes are registered at startup and after /sponge reload. If you disable a recipe and run /sponge reload, it will be unregistered.

Example concept (fits the defaults):

* basic sponge: Surround a SPONGE with SAND (shape AAA, ABA, AAA; A=SAND, B=SPONGE; enabled=true)
* advanced sponge: Surround a SPONGE with COAL (enabled=false by default)
* ultimate sponge: Surround a SPONGE with DIAMOND (enabled=false by default)

Adjust to your server’s economy and balance.

### Protections and Safety

When a supported protection plugin is installed, VexalSuperSponges will attempt to respect region/claim flags and deny sponge placement or operation where the player lacks permission. Players will see a message like cannotPlaceSpongeProtected if they try to use a sponge in a protected area.

### Cooldowns

* Players are prevented from reusing a sponge during its cooldown.
* The config value spongeConfig.bypassCooldownPermission defines a permission that bypasses cooldowns; default is sponges.bypass.cooldown.
* The plugin also periodically cleans up expired cooldown data in the background.

### Performance Notes

* Clearing tasks execute with care to avoid server lag. If FAWE/WorldEdit is present, behavior may be optimized for bulk edits.
* Keep radius within reasonable values for your player base and hardware.
* Consider disabling certain recipes or raising costs on higher-tier sponges.

### Troubleshooting

* Command says "You do not have permission":
  * Make sure you granted the required permission node(s) via your permissions plugin.
* "Cannot place this sponge here" or protected area message:
  * You may be inside a claim/region that disallows building or sponge usage; adjust flags/claims or move elsewhere.
* Recipes not appearing:
  * Ensure recipe.enabled is true for that sponge and that you reloaded the plugin or restarted the server.
* Placeholders not resolving in item lore:
  * Placeholders like {radius}, {uses}, {cooldown} are filled when items are generated; ensure you are using the freshly created item (e.g., via /sponge give) after changing config.

### FAQ

* Q: What Minecraft versions are supported?
  * A: api-version is 1.17; it should work on 1.17+ Paper/Spigot servers running Java 17. For older versions, compatibility is not guaranteed.
* Q: Does it clear source blocks only or all flowing liquid?
  * A: It targets water and/or lava within the configured radius during the task duration as implemented by the plugin’s SpongeTask/SpongeAffect logic.
* Q: Can I add my own sponge types?
  * A: Yes. Add a new entry to spongeConfig.sponges in config.yml with its properties and (optionally) a recipe.


# Vexal Stocks

**VexalStocks** is a powerful and innovative Paper/Spigot plugin that brings **real-world stock trading** directly into your Minecraft server!\
Players can buy and sell *real stocks* using in-game money through an intuitive **GUI-based system**.\
Admins have full control over which stocks are available, and everything is automatically synced with real stock market data.

***

### ✨ Features

* 💰 **Real-world stock integration** – trade real stocks like Apple, Tesla, and more with in-game currency.
* 🧾 **Dynamic pricing** – live stock prices automatically update at intervals.
* 🪙 **Economy integration via Vault** – works with any Vault-supported economy plugin (EssentialsX, CMI, etc.).
* 🎨 **GUI-driven system** – all trading, viewing, and managing is done through clean graphical menus.
* ⚙️ **Configurable stock list** – admins can decide which stocks are available to trade.
* 📊 **Player portfolios** – track owned stocks, trade history, and value directly in-game.
* 🧠 **Easy configuration** – customize everything from update rates to GUI layout.
* 🗃 **Database support** – stores player data securely with file or MySQL backends.
* 🛠 **Developer-friendly API** – hook into VexalStocks for custom integrations.

***

### 📥 Installation

1. Download the latest version of **VexalStocks.jar** from the Releases page.
2. Drop it into your server’s `/plugins` folder.
3. Restart your server to generate configuration files.
4. Open `/plugins/VexalStocks/config.yml` and set up:
   * Stock symbols to display and trade
   * Database type (File / MySQL)
   * Update intervals
   * GUI options
   * API key for stock data (if required)
5. Reload the plugin using `/vexalstocks reload`.

***

### ⚙️ Configuration

The main configuration file is located at:

```

/plugins/VexalStocks/config.yml

```

#### Example Options:

```
update-interval: 600  # seconds between stock price refresh
stocks:
  - AAPL
  - TSLA
  - MSFT
  - NVDA
database:
  type: "mysql"
  host: "localhost"
  port: 3306
  name: "stocks"
  user: "root"
  pass: "password"
```

***

### 🔑 Commands

| Command                          | Description                           | Permission          |
| -------------------------------- | ------------------------------------- | ------------------- |
| `/stocks`                        | Opens the main stock trading GUI      | `vexalstocks.use`   |
| `/stocks view <symbol>`          | View specific stock info              | `vexalstocks.use`   |
| `/stocks buy <symbol> <amount>`  | Buy a stock                           | `vexalstocks.trade` |
| `/stocks sell <symbol> <amount>` | Sell owned stock                      | `vexalstocks.trade` |
| `/stocks reload`                 | Reload configuration                  | `vexalstocks.admin` |
| `/stocks add <symbol>`           | Add a stock to the tradable list      | `vexalstocks.admin` |
| `/stocks remove <symbol>`        | Remove a stock from the tradable list | `vexalstocks.admin` |
| `/stocks portfolio`              | View your portfolio                   | `vexalstocks.use`   |

***

### 🛡 Permissions

| Permission          | Description                                          | Default |
| ------------------- | ---------------------------------------------------- | ------- |
| `vexalstocks.use`   | Access the stock trading menu                        | true    |
| `vexalstocks.trade` | Allows buying and selling stocks                     | true    |
| `vexalstocks.admin` | Access to admin commands (reload, add/remove stocks) | op      |

***

### 🧩 Dependencies

* **Vault** (required)
* Any Vault-supported economy plugin (e.g., EssentialsX, CMI, EconomyShopGUI, etc.)
* Optional: **MySQL** for persistent player data across servers

***

### 🧠 Developer API

Developers can hook into the plugin for integrations or extensions. Basic access is provided through the `VexalStocks` API class.

Example usage:

```
VexalStocksAPI api = VexalStocks.getAPI();
double price = api.getStockPrice("AAPL");
api.buyStock(player, "AAPL", 10);
```

***

### 💬 Support & Community

Need help or want to show off your setup? Join our official Discord community:

👉 [**discord.vexalstudios.com**](https://discord.vexalstudios.com/)

***

### 🌍 Compatibility

* ✅ Paper 1.19 – 1.21.8+
* ✅ Spigot 1.19 – 1.21.8+
* ⚙️ Works with most economy and GUI plugins.

***

### 📦 Database

VexalStocks supports multiple storage backends:

* **File** (default)
* **MySQL** for multi-server setups

You can configure your preferred storage method in `config.yml`.


# Vexal Leaderboards

A powerful and flexible Minecraft leaderboard plugin that allows you to create leaderboards from **any PlaceholderAPI placeholder**. Display rankings for kills, balance, blocks mined, playtime, or any other stat — all fully automated and easily configurable.

***

### 📦 Features

* 🧩 **PlaceholderAPI integration** — Generate leaderboards from any placeholder.
* 🪄 **Dynamic holograms** — Display leaderboards in the world using holograms.
* ⚡ **Efficient caching** — Keeps data updated while minimizing lag.
* 🔁 **Automatic refreshing** — Leaderboards update on a configurable schedule.
* 🧠 **Customizable formats** — Configure how leaderboards are displayed (titles, colors, lines, etc.).
* ⚙️ **Multi-source data** — Supports data from other plugins via PlaceholderAPI.
* 🛡️ **Optimized performance** — Lightweight and designed for high-performance servers.

***

### 🧱 Requirements

* Minecraft server running **Paper**, **Purpur**, or another Spigot-compatible fork.
* **PlaceholderAPI** plugin installed.
* (Optional) **HolographicDisplays** or **DecentHolograms** for hologram output.

***

### 🚀 Installation

1. Download the latest `VexalLeaderboards.jar` from the releases page.
2. Place it into your server's `/plugins/` folder.
3. Restart or reload your server.
4. Ensure **PlaceholderAPI** is installed and the placeholders you plan to use are functional.

***

### ⚙️ Configuration

After the first run, the plugin will generate a configuration file in:

```
/plugins/VexalLeaderboards/config.yml
```

#### Example Configuration

```yaml
leaderboards:
  top_money:
    placeholder: '%vault_eco_balance_top%'
    hologram-location: 'world,100,65,100'
    title: '&6Top Money'
    lines:
      - '&e#%position% &7%player% &f- &a$%value%'
    update-interval: 300 # in seconds
```

#### Available Options

| Option              | Description                                                      |
| ------------------- | ---------------------------------------------------------------- |
| `placeholder`       | The PlaceholderAPI placeholder used to generate the leaderboard. |
| `hologram-location` | Location to spawn the hologram leaderboard.                      |
| `title`             | Title text for the leaderboard.                                  |
| `lines`             | Format for each entry in the leaderboard.                        |
| `update-interval`   | Time (in seconds) between automatic updates.                     |

***

### 💬 Commands

| Command                      | Description                        | Permission                 |
| ---------------------------- | ---------------------------------- | -------------------------- |
| `/leaderboard reload`        | Reloads the plugin configuration.  | `vexalleaderboards.reload` |
| `/leaderboard update <name>` | Manually refreshes a leaderboard.  | `vexalleaderboards.update` |
| `/leaderboard list`          | Lists all configured leaderboards. | `vexalleaderboards.list`   |

***

### 🧾 Permissions

| Permission                 | Description                            |
| -------------------------- | -------------------------------------- |
| `vexalleaderboards.reload` | Allows reloading the config.           |
| `vexalleaderboards.update` | Allows manually updating leaderboards. |
| `vexalleaderboards.list`   | Allows viewing available leaderboards. |

***

### 🌈 Example Placeholders

Here are a few ideas of what you can track:

* `%statistic_mine_block_diamond_ore%` → Blocks mined
* `%vault_eco_balance%` → Player balance
* `%player_kills%` → Kills
* `%statistic_time_played%` → Playtime
* `%jobsreborn_jobs_level_<job>%` → Job level

Any valid PlaceholderAPI placeholder can be used — the plugin will handle sorting and ranking automatically.

***

### 🪧 Holograms

If you have **DecentHolograms** leaderboards can be displayed directly in-game as floating holograms.

* Supports dynamic updates without flicker.
* Automatically rebuilds holograms when refreshed.
* Customize colors, order, and size.

***


# Vexal Koths

## Coming Soon


# Coming Soon


# Coming Soon


