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.