Skip to content

Developers

Developer API

Hook into DeluxeCombat from your own plugin — API methods, events and setup.

Adding the dependency

The DeluxeCombat API is published via JitPack. Check the JitPack page for the latest version.

Maven:

<repositories>
  <repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
  </repository>
</repositories>

<dependency>
  <groupId>com.github.timderspieler</groupId>
  <artifactId>DeluxeCombat-API</artifactId>
  <version>VERSION</version>
  <scope>provided</scope>
</dependency>

Gradle:

repositories {
    maven { url 'https://jitpack.io' }
}

dependencies {
    compileOnly 'com.github.timderspieler:DeluxeCombat-API:VERSION'
}

Add DeluxeCombat as a soft dependency in your plugin.yml so your plugin loads after it:

softdepend: [DeluxeCombat]

Getting the API

Check that DeluxeCombat is installed, then grab the API instance:

if (Bukkit.getPluginManager().getPlugin("DeluxeCombat") != null) {
    DeluxeCombatAPI api = DeluxeCombat.getAPI();
    // your code here
}

new DeluxeCombatAPI() works as well — the API is stateless.

Methods

Combat state

boolean isInCombat(Player p);                 // Is the player in combat?
int     getRemainingCombatTime(Player p);     // Remaining combat time in seconds
long    getRemainingCombatTimeMillis(Player p); // Remaining combat time in milliseconds
Player  getCurrentOpponent(Player p);         // The player's current combat opponent
void    tag(Player target, Object attacker, int seconds); // Tag a player
void    untag(Player p);                      // Untag a player

PvP toggle & protection

boolean hasPvPEnabled(Player p);              // Does the player have PvP enabled?
void    togglePvP(Player p, boolean status);  // Set a player's PvP status
boolean hasProtection(Player p);              // Does the player have an active protection?

Statistics & points

int    getKills(Player p);                    // Kills
int    getDeaths(Player p);                   // Deaths
double getKD(Player p);                       // K/D ratio
int    getCombatlogs(Player p);               // Combat logs
int    getPoints(Player p);                   // PvP points
int    getStreak(Player p);                   // Current kill streak
int    getHighestStreak(Player p);            // Highest kill streak ever
void   addPoints(Player p, int points);       // Add points
void   removePoints(Player p, int points);    // Remove points

Bounties

boolean hasBounty(Player p);                  // Does the player have a bounty?
boolean createBounty(Player target, Player initiator, boolean anonymous,
                     double bounty, boolean removeTax); // Create a bounty
void    removeBounty(Player p);               // Remove a player's bounty

Events

DeluxeCombat fires the following Bukkit events (package nl.marido.deluxecombat.events):

Event Fired when Cancellable
CombatStateChangeEvent A player's combat state changes (tagged / untagged) No
CombatlogEvent A player quits a PvP fight early Yes
EntityCombatlogEvent A player quits a fight against an entity early Yes
PlayerTogglePVPEvent A player toggles their PvP status Yes
BountyInitiateEvent A bounty is about to be created Yes
DCEntityDamageByEntityEvent DeluxeCombat processes an entity-damage interaction (exposes 1.8-crit, sprint and damage-modifier details) Yes
ArmorEquipEvent A player equips or unequips armor Yes
RiptideEvent A player riptides with a trident Yes

Examples

@EventHandler
public void onCombatStateChange(CombatStateChangeEvent event) {
    if (event.getState() == CombatState.TAGGED) {
        event.getPlayer().sendMessage("You are now in combat!");
    }
}

@EventHandler
public void onCombatLog(CombatlogEvent event) {
    // event.getCombatlogger(), event.getLastAttacker(), event.getLocation()
}

@EventHandler
public void onBountyCreate(BountyInitiateEvent event) {
    // event.getInitiator(), event.getTarget(), event.getBounty()
    // Adjust the bounty or cancel the event entirely:
    event.setBounty(event.getBounty() * 2);
}

Questions?

If you need an API method that doesn't exist yet, ask on Discord — API extension requests are welcome.