Appearance
Developer API
CrestPvPToggle provides a comprehensive API for developers who want to integrate with the plugin. This allows you to check and modify players' PvP states, work with combat timers, and listen for PvP-related events.
Adding as a Dependency
To use the CrestPvPToggle API in your plugin, you need to add the plugin JAR to your development environment:
Manual JAR Dependency
- Download the CrestPvPToggle.jar
- Add it to your project's libraries
For Maven:
xml
<dependencies>
<dependency>
<groupId>me.levitate</groupId>
<artifactId>CrestPvPToggle</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/CrestPvPToggle.jar</systemPath>
</dependency>
</dependencies>For Gradle:
kotlin
dependencies {
compileOnly(files("libs/CrestPvPToggle.jar"))
}Server Setup
Make sure CrestPvPToggle is installed on your server and loaded before your plugin. Add it to your plugin.yml dependencies:
yaml
depend: [CrestPvPToggle]
# or for soft dependency
softdepend: [CrestPvPToggle]API Usage
The main API class is CrestPvPToggleAPI. All methods are static, so you can access them directly without needing to get an instance.
Basic Examples
Check if PvP is Enabled for a Player
java
import me.levitate.crestPvPToggle.api.CrestPvPToggleAPI;
import org.bukkit.entity.Player;
public boolean checkPvP(Player player) {
// Check if PvP is enabled for the player
return CrestPvPToggleAPI.isPvPEnabled(player);
}Toggle a Player's PvP State
java
import me.levitate.crestPvPToggle.api.CrestPvPToggleAPI;
import org.bukkit.entity.Player;
public void togglePlayerPvP(Player player) {
// Toggle the player's PvP state
boolean newState = CrestPvPToggleAPI.togglePvP(player);
// Inform the player of their new state
player.sendMessage("Your PvP state is now: " + (newState ? "Enabled" : "Disabled"));
}Put a Player in Combat Mode
java
import me.levitate.crestPvPToggle.api.CrestPvPToggleAPI;
import org.bukkit.entity.Player;
public void enterCombat(Player player) {
// Put the player in combat mode (prevents toggling PvP for 60 seconds)
CrestPvPToggleAPI.setInCombat(player, true);
// You could also check if a player is in combat
if (CrestPvPToggleAPI.isInCombat(player)) {
player.sendMessage("You are currently in combat!");
}
}Available API Methods
PvP State Methods
boolean isPvPEnabled(Player player)- Check if PvP is enabled for a playerboolean isPvPEnabled(UUID uuid)- Check if PvP is enabled for a UUIDvoid setPvPEnabled(Player player, boolean enabled)- Set a player's PvP statevoid setPvPEnabled(UUID uuid, boolean enabled)- Set a player's PvP state by UUIDboolean togglePvP(Player player)- Toggle a player's PvP stateboolean togglePvP(UUID uuid)- Toggle a player's PvP state by UUID
Combat Methods
boolean isInCombat(Player player)- Check if a player is in combatboolean isInCombat(UUID uuid)- Check if a player is in combat by UUIDvoid setInCombat(Player player, boolean inCombat)- Set a player's combat statevoid setInCombat(UUID uuid, boolean inCombat)- Set a player's combat state by UUID
Advanced Methods
PvPManager getPvPManager()- Get the PvP manager instance (for advanced usage)
API Events
CrestPvPToggle provides several events that you can listen for in your plugin:
PvPTogglePreEvent
- Called before a player's PvP state is changed
- Cancellable event - can prevent the PvP state from changing
java
import me.levitate.crestPvPToggle.api.PvPTogglePreEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@EventHandler
public void onPvPTogglePre(PvPTogglePreEvent event) {
// Check which player is changing their PvP state
Player player = event.getPlayer();
// Check what the new state would be
boolean newState = event.getNewPvPState();
// Prevent players in a specific region from disabling PvP
if (!newState && isInPvPRegion(player)) {
event.setCancelled(true);
player.sendMessage("You cannot disable PvP in this region!");
}
}PvPTogglePostEvent
- Called after a player's PvP state has been changed
java
import me.levitate.crestPvPToggle.api.PvPTogglePostEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@EventHandler
public void onPvPTogglePost(PvPTogglePostEvent event) {
// Get the player who changed their PvP state
Player player = event.getPlayer();
// Get the new PvP state
boolean newState = event.getNewPvPState();
// Broadcast to staff that a player changed their PvP status
broadcastToStaff(player.getName() + " has " + (newState ? "enabled" : "disabled") + " PvP");
}CombatStateChangeEvent
- Called when a player enters or leaves combat
java
import me.levitate.crestPvPToggle.api.CombatStateChangeEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@EventHandler
public void onCombatStateChange(CombatStateChangeEvent event) {
// Get the player whose combat state changed
Player player = event.getPlayer();
// Check if they're entering or leaving combat
boolean inCombat = event.isInCombat();
if (inCombat) {
player.sendMessage("§cYou are now in combat! Don't log out!");
} else {
player.sendMessage("§aYou are no longer in combat.");
}
}