🎮 AjdnikovGamemodes Documentation

Welcome to the AjdnikovGamemodes documentation! Here you will find all the details regarding the 6 unique gamemodes, party system, preloaded world pool, and map setup instructions for your server.

Overview

AjdnikovGamemodes is a comprehensive, all-in-one minigame plugin featuring 6 unique gamemodes, a built-in party system, dynamic world generation with a preloaded world pool for lag-free starts, and a global points/leaderboard system.

Dependencies

To ensure all features function properly, the following plugins are required:

  • FastAsyncWorldEdit (FAWE): Required. Used to asynchronously paste schematic and litematic maps for the PvP Arena and Hide & Seek gamemodes.
  • Multiverse-Core: Required. Used for dynamic world generation, managing the preloaded world pool, and teleporting players across different gamemodes.

Gamemodes

1. Death Swap (/game start deathswap)

Players are randomly swapped every 2-5 minutes. The goal is to place yourself in a deadly situation right before the swap to eliminate the other player.

  • World Type: Survival (Dynamic)
  • Features: Alternating action bar timer, PvP disabled (kills happen via environmental traps).

2. PvP Arena (/game start pvparena)

Kit-based PvP on schematic maps. Supports Free-For-All (FFA), 2 Teams, and 4 Teams.

  • World Type: Void (Map pasted via FAWE)
  • Features: Custom map support, team modes configurable via the Party GUI, dyed leather armor for teams.

3. Manhunt (/game start manhunt)

One Runner tries to beat the Ender Dragon while Hunters try to kill them.

  • World Type: Survival (Dynamic)
  • Features: Configurable Runner head start, Hunter tracking compasses with cooldowns, role assignment preferences via Party settings.

4. Man-Save (/game start mansave)

One "Target" must survive for a set duration (default 10 mins). "Protectors" must keep the target alive against environmental threats.

  • World Type: Survival (Dynamic)
  • Features: Night time, Hard difficulty, custom protector kit (configurable via Party settings), target damage alerts.

5. Speedrun VS (/game start speedrunvs)

All players race to obtain a specific randomly chosen block/item.

  • World Type: Survival (Dynamic)
  • Features: Configurable difficulty (Easy, Medium, Hard, All) via Party GUI, PvP enabled.

6. Hide & Seek (/game start hideandseek)

Hiders get a head start to hide with temporary invisibility, then Seekers are released to find them.

  • World Type: Void (Map pasted via FAWE)
  • Features: Custom map support, Hiders glow periodically, Seekers get a bow & arrow upon tagging, spectator mode via teleport GUI.

Commands & Permissions

Player Commands

Command Description
/game start <type> Start a game with your party.
/game stop Stop the current game.
/game list List available gamemodes.
/party create <name> [open] Create a party (default: invite-only).
/party invite <player> Invite a player to your party.
/party join <name> Join an open party or accept an invite.
/party leave, /party kick, /party disband, /party list, /party info Party management commands.
/party settings Open the Party GUI to configure game options (e.g., PvP Arena mode, Speedrun difficulty, preferred roles).

Permissions: ajdnikovgamemodes.play (Default: true) / ajdnikovgamemodes.game (Default: op)

Admin Commands

Command Description
/vh setlobby Set the main lobby spawn location to your current location.
/vh setleaderboard Look at an Armor Stand to convert it into a top-10 leaderboard hologram.
/vh removeleaderboard Remove the nearest leaderboard hologram (stand within 5 blocks).
/vh purgeleaderboards Remove all leaderboard holograms across the server.
/vh points <player> <add|set|remove> <amount> Manage player points.
/vh stats [player], /vh top View points and the top 10 leaderboard.
/vh partyadd <player> <party> Force-add a player to a party.
/vh reload Reload the configuration and leaderboards.
/setup setspawns <gamemode> <map> Setup custom spawns for Void-based maps (PvP Arena, Hide & Seek).
/setup confirm / /setup cancel Save or abort the map setup session.
/game start <type> all Start a game with all online players, bypassing parties.

Permission: ajdnikovgamemodes.admin (Default: op)

Map Setup Guide (PvP Arena & Hide & Seek)

The plugin uses FastAsyncWorldEdit (FAWE) to paste schematic maps. Supported formats: .schem, .litematic.

  1. Place your map files in their respective folders in your server directory:
    • plugins/AjdnikovGamemodes/PvPArenaMaps/
    • plugins/AjdnikovGamemodes/HNSmaps/
  2. In-game, use /setup setspawns <gamemode> <mapname> (e.g., /setup setspawns hideandseek city.schem).
  3. You will be teleported to a temporary void world where the map is pasted.
  4. For Hide & Seek: Use the provided Blaze Rod wand to click a block and set the global spawn point.
  5. For PvP Arena:
    • Use the Blaze Rod to define the two corners of the Free-For-All bounding box.
    • Use the colored wool items to click blocks and set the specific spawn points for Red, Blue, Green, and Yellow teams.
  6. Type /setup confirm to save the coordinates. A .yml config file will be generated next to your schematic file containing the spawn data.

Preloaded World Pool

To prevent server lag during dynamic chunk generation for Survival gamemodes (Death Swap, Manhunt, Man-Save, Speedrun VS), the plugin features a Preloaded World Pool.

  • Automatically pre-generates survival worlds in the background.
  • Claims worlds instantly when a game starts.
  • Features configurable chunk generation speeds, radius, and auto-replenishment logic.
  • Optionally features a scheduled daily regeneration to wipe and rebuild the pool.

Configure this in config.yml under the world-pool section.

Configuration (config.yml)

Here is the default config.yml generated by the plugin:

# ========================================
#      AjdnikovGamemodes Configuration
# ========================================
license:
  key: "YOUR_LICENSE_KEY_HERE"
# Proxy settings for BungeeCord/Velocity
proxy:
  enabled: false
  lobby-server: "lobby"
# Lobby configuration
lobby:
  world: "world"
  spawn:
    x: 0.0
    y: 64.0
    z: 0.0
    yaw: 0.0
    pitch: 0.0
# World settings (for dynamic game world slots — PvP Arena, HnS, etc.)
worlds:
  game-slots: 3
  prefix: "vh_game_"
# ========================================
#     Preloaded World Pool Settings
# ========================================
# The world pool pre-generates survival worlds so gamemodes like
# Death Swap, Manhunt, Man-Save, and Speedrun VS can start instantly
# without waiting for world generation. After each game, the used
# world is restored to its pristine state from a backup.
world-pool:
  # Whether to use the preloaded world pool system.
  # If false, worlds are generated dynamically on game start (old behavior).
  enabled: true
  # Prefix for preloaded world folder names (e.g. vh_preloaded_1, vh_preloaded_2)
  prefix: "vh_preloaded_"
  # Total number of survival worlds to keep preloaded and ready.
  # More worlds = more disk space, but supports more concurrent games.
  max-preloaded-worlds: 3
  # Radius (in blocks) around world spawn to pre-generate chunks.
  # Higher values = longer initial generation but smoother gameplay.
  # Set to 0 to disable chunk preloading.
  # 500 blocks = ~31 chunk radius = ~3000 chunks per world.
  preload-radius: 500
  # Fine-tune how the chunk preloading behaves.
  preload-performance:
    # How many chunks to generate per server tick.
    # Higher = faster preloading, but more lag during generation.
    # Lower = slower preloading, but smoother server performance.
    # Recommended: 20 for weak servers, 50 for average, 100+ for powerful hardware.
    chunks-per-tick: 50
    # How many ticks to wait between each batch of chunks.
    # 1 = process every tick (fastest), 2 = every other tick, etc.
    # Increase this if you notice TPS drops during world generation.
    ticks-between-batches: 1
    # How often (in chunks) to log progress to the console.
    # Set to 0 to disable progress logging entirely.
    # Example: 500 means a log message every 500 chunks processed.
    log-interval: 500
    # Whether to unload chunks from memory immediately after generating them.
    # true = saves RAM during generation (recommended for large radii).
    # false = keeps chunks loaded (faster if players join the world soon after).
    unload-after-generation: true
  # Auto-replenishment: generates new worlds when available count drops low.
  auto-replenish:
    enabled: true
    # Only generate new worlds when the server has fewer than this many players online.
    # This prevents lag spikes during busy periods.
    player-threshold: 10
    # If the number of available (unclaimed) worlds drops below this number,
    # trigger background generation of a new world.
    min-available: 1
    # How often (in seconds) the plugin checks if replenishment is needed.
    check-interval-seconds: 30
  # Daily regeneration: wipes ALL preloaded worlds and regenerates them
  # with fresh random seeds at a specific time each day.
  daily-regeneration:
    enabled: false
    # Time of day to perform the regeneration (24-hour format, HH:mm).
    time: "03:00"
    # If true, any active games on preloaded worlds will be force-stopped
    # before regeneration. If false, regeneration is skipped if games are active.
    kick-players-if-active: false
# Points awarded for actions
points:
  win: 10
  kill: 2
  survive: 5
  participation: 1
# Leaderboard settings
leaderboard:
  update-interval: 60
# Game-specific settings
games:
  global:
    time-limit: 1800  # 30 minutes default fallback for all games
  deathswap:
    time-limit: 1800  # 30 minutes