▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Плагины/SimpleBounty
SimpleBounty

SimpleBounty

A bounty system plugin for Paper server

Оцените первым
24
1

SimpleBounty

SimpleBounty adds a dynamic bounty system to your Minecraft server. Every player starts with a base amount of bounty points. Players can earn bounty points by killing other players, and their bounty grows over time under certain conditions. The higher a player's bounty, the more points you'll receive for taking them down.

!LeaderBoard


Features

  • Starting Bounty: Every player starts with 50 bounty points (configurable)
  • PvP Bounty Transfer: When you kill another player, you receive 20% of their bounty (configurable), and that amount is removed from their total
  • High Bounty Growth: Players with 5,000+ bounty points (configurable) gain +3 points (configurable) every 5 minutes (configurable) while online
  • Dragon Egg Bonus: Players holding a Dragon Egg in their inventory gain +10 points (configurable) every 5 minutes (configurable)
  • Inactivity Decay: Players who don't gain any bounty for 30 minutes (configurable) lose 1 point (configurable) every 20 minutes (configurable)
  • Natural Death Penalty: Dying to anything other than a player (mobs, fall damage, lava, etc.) causes you to lose 2% (configurable) of your bounty
  • Top 5 Broadcast: Every 15 minutes (configurable), a chat message shows the top 5 players by bounty, including how many points you'd get for killing them
  • Admin Commands: Add, remove, or set bounty points for any player
  • H2 Database Storage: All data is stored in a reliable H2 database file
  • Public API: Other plugins can hook into SimpleBounty to display bounty points on scoreboards, tablists, etc.

Installation

  1. Download the SimpleBounty.jar file
  2. Place it in your server's plugins/ folder
  3. Restart your server
  4. The plugin will generate its config file and H2 database on first run

Requirements:

  • Paper 1.21.1 or higher
  • Java 21 or higher

Commands

CommandDescriptionPermission
/bountyCheck your current bounty pointssimplebounty.check (default: everyone)
/bountyadmin add <player> <amount>Add bounty points to a playersimplebounty.admin (default: OP)
/bountyadmin remove <player> <amount>Remove bounty points from a playersimplebounty.admin (default: OP)
/bountyadmin set <player> <amount>Set a player's bounty to an exact amountsimplebounty.admin (default: OP)
/baAlias for /bountyadminsimplebounty.admin

Permissions

PermissionDescriptionDefault
simplebounty.checkAllows checking your own bountyEveryone
simplebounty.topAllows viewing the top bounty listEveryone
simplebounty.adminAllows admin bounty commandsOP

Configuration

All settings are in plugins/SimpleBounty/config.yml. Here's what each option does:

Core Settings

SettingDefaultDescription
starting-bounty50How many bounty points a player starts with
kill-reward-percent20What percent of a killed player's bounty the killer receives (0-100)
natural-death-loss-percent2What percent of their bounty a player loses on natural death (0-100)

Inactivity Decay

SettingDefaultDescription
lose-points-on-inactivitytrueWhether players lose points for not gaining bounty
inactivity-decay-amount1How many points are lost per decay interval
inactivity-decay-start-minutes30How long without gaining bounty before decay starts
inactivity-decay-interval-minutes20How often an inactive player loses points

High Bounty Growth

SettingDefaultDescription
bounty-increase-threshold5000Bounty amount required to start growing (set to 0 to disable)
bounty-increase-amount3Points gained per interval once above the threshold
bounty-increase-interval-minutes5How often players above the threshold gain points

Dragon Egg Bonus

SettingDefaultDescription
dragon-egg-bounty-enabledtrueWhether holding the Dragon Egg increases bounty
dragon-egg-bounty-amount10Points gained per interval while holding the egg
dragon-egg-interval-minutes5How often Dragon Egg holders gain points

Chat Broadcast

SettingDefaultDescription
bounty-message-interval-minutes15How often the top 5 bounty list is broadcast (set to 0 to disable)

Messages

All chat messages can be customized in the messages: section of the config. Use & for color codes and the following placeholders:

  • %points% - The player's bounty points
  • %player% - A player's name
  • %amount% - An amount of points
  • %reward% - The reward for killing a player
  • %position% - Position in the top list

How It Works

Bounty Points

  • Every player starts with 50 bounty points when they first join
  • Points are stored in an H2 database file at plugins/SimpleBounty/bounties.mv.db
  • Points are saved to the database on every change, on player quit, every 5 minutes, and on server shutdown

PvP Kills

When Player A kills Player B:

  1. Player A receives 20% of Player B's bounty points
  2. That same amount is removed from Player B's bounty
  3. Both players are notified in chat

Example: If Player B has 1,000 bounty and Player A kills them:

  • Player A gains 200 points
  • Player B's bounty drops to 800

Natural Deaths

If a player dies to anything other than a player (mobs, fall damage, drowning, lava, etc.):

  • They lose 2% of their current bounty
  • This is treated as a "natural death" - no points are transferred to anyone

High Bounty Growth

Once a player reaches 5,000 bounty points:

  • They gain 3 points every 5 minutes while online
  • This encourages high-bounty players to become bigger targets

Dragon Egg Bonus

If a player has a Dragon Egg in their inventory:

  • They gain 10 points every 5 minutes while online
  • This makes holding the Dragon Egg a high-risk, high-reward activity

Inactivity Decay

If a player hasn't gained any bounty points for 30 minutes:

  • They lose 1 point every 20 minutes
  • Any bounty gain (PvP kill, passive growth, admin add) resets the inactivity timer

Public API

SimpleBounty provides a public API so other plugin developers can display bounty points on scoreboards, tablists, or anywhere else.

Getting the API

import com.johndinglesin.simplebounty.SimpleBountyPlugin;
import com.johndinglesin.simplebounty.api.BountyAPI;

// Get the SimpleBounty plugin instance
SimpleBountyPlugin bountyPlugin = (SimpleBountyPlugin) Bukkit.getPluginManager().getPlugin("SimpleBounty");

if (bountyPlugin != null) {
    BountyAPI api = bountyPlugin.getBountyAPI();
    
    // Get a player's bounty points
    double points = api.getBounty(player);
    
    // Get an offline player's bounty points
    double offlinePoints = api.getBounty(offlinePlayer);
    
    // Get bounty by UUID
    double uuidPoints = api.getBounty(uuid, "PlayerName");
    
    // Modify bounty points
    api.addBounty(player, 100.0);
    api.removeBounty(player, 50.0);
    api.setBounty(player, 1000.0);
    
    // Get configuration values
    double killPercent = api.getKillRewardPercent();
    double startingBounty = api.getStartingBounty();
    
    // Get the top 10 players by bounty
    List<BountyEntry> top = api.getTopBounties(10);
    for (BountyEntry entry : top) {
        String name = entry.getPlayerName();
        double bounty = entry.getBounty();
        UUID uuid = entry.getUuid();
    }
}

API Methods

MethodDescription
getBounty(Player)Get an online player's bounty points
getBounty(OfflinePlayer)Get an offline player's bounty points
getBounty(UUID, String)Get bounty points by UUID
addBounty(Player, double)Add points to a player
removeBounty(Player, double)Remove points from a player
setBounty(Player, double)Set a player's bounty to an exact amount
getKillRewardPercent()Get the configured kill reward percentage
getStartingBounty()Get the configured starting bounty
getTopBounties(int)Get the top N players by bounty, sorted descending
getSimpleBountyPlugin()Static helper to get the plugin instance

BountyEntry Class

The BountyEntry class (from com.johndinglesin.simplebounty.data.BountyEntry) represents a single player's bounty record:

public class BountyEntry {
    public UUID getUuid();          // The player's UUID
    public String getPlayerName();  // The player's name
    public double getBounty();      // The player's bounty points
}

Example: Scoreboard Integration

// In your scoreboard update task
SimpleBountyPlugin bountyPlugin = (SimpleBountyPlugin) Bukkit.getPluginManager().getPlugin("SimpleBounty");
if (bountyPlugin != null) {
    double points = bountyPlugin.getBountyAPI().getBounty(player);
    scoreboard.getObjective("bounty").getScore(player.getName()).setScore((int) points);
}

Example: Tablist Integration

// In your tablist update task
SimpleBountyPlugin bountyPlugin = (SimpleBountyPlugin) Bukkit.getPluginManager().getPlugin("SimpleBounty");
if (bountyPlugin != null) {
    double points = bountyPlugin.getBountyAPI().getBounty(player);
    player.setPlayerListName(ChatColor.GOLD + player.getName() + ChatColor.GRAY + " [" + (int) points + "]");
}

Example: Custom Leaderboard

// Get the top 5 players for a custom leaderboard
SimpleBountyPlugin bountyPlugin = (SimpleBountyPlugin) Bukkit.getPluginManager().getPlugin("SimpleBounty");
if (bountyPlugin != null) {
    List<BountyEntry> top = bountyPlugin.getBountyAPI().getTopBounties(5);
    for (int i = 0; i < top.size(); i++) {
        BountyEntry entry = top.get(i);
        // Display on a sign, hologram, or GUI
        System.out.println((i + 1) + ". " + entry.getPlayerName() + " - " + (int) entry.getBounty());
    }
}

Adding SimpleBounty as a Dependency

To compile against the SimpleBounty API, add the jar to your plugin's build path:

Maven:

<dependency>
    <groupId>com.johndinglesin</groupId>
    <artifactId>SimpleBounty</artifactId>
    <version>1.0.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/libs/SimpleBounty.jar</systemPath>
</dependency>

Gradle:

dependencies {
    compileOnly files('libs/SimpleBounty.jar')
}

Storage

SimpleBounty uses H2 Database for reliable data storage, This provides:

  • Atomic writes - No corrupted data from crashes
  • Concurrent access - Safe for multiple players modifying data simultaneously
  • Efficient queries - Fast top-5 lookups even with thousands of players
  • File-based - Data is stored in plugins/SimpleBounty/bounties.mv.db

The H2 database is bundled inside the plugin jar, so no additional installation is needed.


Troubleshooting

The plugin doesn't load

  • Make sure you're running Paper 1.21.1 or higher
  • Make sure you have Java 21 or higher installed
  • Check the server console for error messages

Bounty points reset

  • Check that the plugins/SimpleBounty/ folder has write permissions
  • Make sure the bounties.mv.db file exists and isn't corrupted

Players aren't losing points for inactivity

  • Check that lose-points-on-inactivity is set to true in the config
  • Remember: the inactivity timer resets whenever a player gains bounty points

The top 5 message isn't showing

  • Check that bounty-message-interval-minutes is set to a value greater than 0

Support

If you encounter any issues, please report them to the Google Form

Партнёрский материал

Сервер для плагина SimpleBounty - как у профи

Плагин SimpleBounty создан для серверов: на своём сервере вы настраиваете его под себя и решаете, кому играть. Создать сервер с плагином SimpleBounty для друзей можно за пару минут - BungeeHost всё уже подготовил.

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

26.2.x26.1.x1.21.x

Платформы

Поддерживаемые окружения

Сервер

Ссылки

Детали

Лицензия:
Опубликован:1 месяц назад
Обновлён:1 месяц назад
Главная