Added ability to award health to players for getting kills.
This commit is contained in:
@@ -225,11 +225,14 @@ public final class CommandHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sender.sendMessage(successMessage("Configuration variables for arena " + arena.getName()) + ":");
|
sender.sendMessage(successMessage("Configuration variables for arena " + arena.getName()) + ":");
|
||||||
|
sender.sendMessage(successMessage(" - Enabled: " + arena.isEnabled()));
|
||||||
sender.sendMessage(successMessage(" - Refill: " + arena.getRefill() + " snowballs"));
|
sender.sendMessage(successMessage(" - Refill: " + arena.getRefill() + " snowballs"));
|
||||||
sender.sendMessage(successMessage(" - Player Limit: " + arena.getPlayerLimit() + " players"));
|
sender.sendMessage(successMessage(" - Player Limit: " + arena.getPlayerLimit() + " players"));
|
||||||
sender.sendMessage(successMessage(" - Grace Time: " + (arena.getGraceTime() / 20) + "s"));
|
sender.sendMessage(successMessage(" - Grace Time: " + (arena.getGraceTime() / 20) + "s"));
|
||||||
sender.sendMessage(successMessage(" - Match Time: " + (arena.getMatchTime() / 20) + "s"));
|
sender.sendMessage(successMessage(" - Match Time: " + (arena.getMatchTime() / 20) + "s"));
|
||||||
sender.sendMessage(successMessage(" - Damage: " + arena.getDamage() + " HP"));
|
sender.sendMessage(successMessage(" - Damage: " + arena.getDamage() + " HP"));
|
||||||
|
sender.sendMessage(successMessage(" - Regen: " + arena.getRegen() + " HP"));
|
||||||
|
sender.sendMessage(successMessage(" - Mob Spawning Allowed: " + arena.isMobSpawningAllowed()));
|
||||||
sender.sendMessage(successMessage(" - World: " + arena.getWorld().getName()));
|
sender.sendMessage(successMessage(" - World: " + arena.getWorld().getName()));
|
||||||
|
|
||||||
Location pos1 = arena.getPos1(), pos2 = arena.getPos2();
|
Location pos1 = arena.getPos1(), pos2 = arena.getPos2();
|
||||||
@@ -378,7 +381,7 @@ public final class CommandHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Changes the amount of damage done per snowball hit in this arena.
|
* Changes the amount of damage done per snowball hit in an arena.
|
||||||
*
|
*
|
||||||
* @param sender The user who executed the command.
|
* @param sender The user who executed the command.
|
||||||
* @param name The name of the arena.
|
* @param name The name of the arena.
|
||||||
@@ -404,6 +407,40 @@ public final class CommandHandler {
|
|||||||
this.snowbrawl.saveConfig();
|
this.snowbrawl.saveConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changes the amount of regen awarded to players per kill in an arena.
|
||||||
|
*
|
||||||
|
* @param sender The user who executed the command.
|
||||||
|
* @param name The name of the arena.
|
||||||
|
* @param regen The amount of regen for this arena.
|
||||||
|
*/
|
||||||
|
@Command(hook = "set_arena_regen")
|
||||||
|
public void commandArenasRegen(CommandSender sender, String name, int regen){
|
||||||
|
Arena arena = this.snowbrawl.getArenaManager().getArenaByName(name);
|
||||||
|
if (arena == null){
|
||||||
|
sender.sendMessage(failMessage("The specified arena does not exist."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int oldRegen = arena.getRegen();
|
||||||
|
try{
|
||||||
|
arena.setRegen(regen);
|
||||||
|
} catch (final IllegalArgumentException exception){
|
||||||
|
sender.sendMessage(failMessage(exception.getMessage()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sender.sendMessage(successMessage("The regen for arena " + arena.getName() + " has been changed from " + oldRegen + " HP to " + arena.getRegen() + " HP."));
|
||||||
|
this.snowbrawl.saveConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changes whether mobs can spawn inside an arena.
|
||||||
|
*
|
||||||
|
* @param sender The use who executed the command.
|
||||||
|
* @param name The name of the arena.
|
||||||
|
* @param mobSpawningAllowed Whether mobs are allowed to spawn or not.
|
||||||
|
*/
|
||||||
@Command(hook = "set_arena_mobspawningallowed")
|
@Command(hook = "set_arena_mobspawningallowed")
|
||||||
public void commandArenasMobSpawningAllowed(CommandSender sender, String name, boolean mobSpawningAllowed){
|
public void commandArenasMobSpawningAllowed(CommandSender sender, String name, boolean mobSpawningAllowed){
|
||||||
Arena arena = this.snowbrawl.getArenaManager().getArenaByName(name);
|
Arena arena = this.snowbrawl.getArenaManager().getArenaByName(name);
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ public final class Snowbrawl extends JavaPlugin {
|
|||||||
newConfig.set("arenas." + id + ".graceTime", arena.getGraceTime());
|
newConfig.set("arenas." + id + ".graceTime", arena.getGraceTime());
|
||||||
newConfig.set("arenas." + id + ".matchTime", arena.getMatchTime());
|
newConfig.set("arenas." + id + ".matchTime", arena.getMatchTime());
|
||||||
newConfig.set("arenas." + id + ".damage", arena.getDamage());
|
newConfig.set("arenas." + id + ".damage", arena.getDamage());
|
||||||
|
newConfig.set("arenas." + id + ".regen", arena.getRegen());
|
||||||
newConfig.set("arenas." + id + ".mobspawningallowed", arena.isMobSpawningAllowed());
|
newConfig.set("arenas." + id + ".mobspawningallowed", arena.isMobSpawningAllowed());
|
||||||
newConfig.set("arenas." + id + ".world", arena.getWorld().getName());
|
newConfig.set("arenas." + id + ".world", arena.getWorld().getName());
|
||||||
|
|
||||||
@@ -162,6 +163,7 @@ public final class Snowbrawl extends JavaPlugin {
|
|||||||
arena.setGraceTime(config.getInt("arenas." + id + ".graceTime", Arena.DEFAULT_GRACE_TIME));
|
arena.setGraceTime(config.getInt("arenas." + id + ".graceTime", Arena.DEFAULT_GRACE_TIME));
|
||||||
arena.setMatchTime(config.getInt("arenas." + id + ".matchTime", Arena.DEFAULT_MATCH_TIME));
|
arena.setMatchTime(config.getInt("arenas." + id + ".matchTime", Arena.DEFAULT_MATCH_TIME));
|
||||||
arena.setDamage(config.getInt("arenas." + id + ".damage", Arena.DEFAULT_DAMAGE));
|
arena.setDamage(config.getInt("arenas." + id + ".damage", Arena.DEFAULT_DAMAGE));
|
||||||
|
arena.setRegen(config.getInt("arenas." + id + ".regen", Arena.DEFAULT_REGEN));
|
||||||
arena.setMobSpawningAllowed(config.getBoolean("arenas." + id + ".mobspawningallowed", Arena.DEFAULT_MOB_SPAWNING_ALLOWED));
|
arena.setMobSpawningAllowed(config.getBoolean("arenas." + id + ".mobspawningallowed", Arena.DEFAULT_MOB_SPAWNING_ALLOWED));
|
||||||
|
|
||||||
// The world can be null because Arena overrides it with the actual world. Only the coordinates matter.
|
// The world can be null because Arena overrides it with the actual world. Only the coordinates matter.
|
||||||
|
|||||||
@@ -906,6 +906,7 @@ public class ArenaManager implements Listener {
|
|||||||
logger.info(" - Grace Time: " + arena.getGraceTime() + "s");
|
logger.info(" - Grace Time: " + arena.getGraceTime() + "s");
|
||||||
logger.info(" - Match Time: " + arena.getMatchTime() + "s");
|
logger.info(" - Match Time: " + arena.getMatchTime() + "s");
|
||||||
logger.info(" - Damage: " + arena.getDamage() + " HP");
|
logger.info(" - Damage: " + arena.getDamage() + " HP");
|
||||||
|
logger.info(" - Regen: " + arena.getRegen() + " HP");
|
||||||
logger.info(" - Mob Spawning Allowed: " + arena.isMobSpawningAllowed());
|
logger.info(" - Mob Spawning Allowed: " + arena.isMobSpawningAllowed());
|
||||||
logger.info(" - World: " + arena.getWorld().getName());
|
logger.info(" - World: " + arena.getWorld().getName());
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ public class Arena {
|
|||||||
public static final int DEFAULT_GRACE_TIME = 15 * 20;
|
public static final int DEFAULT_GRACE_TIME = 15 * 20;
|
||||||
public static final int DEFAULT_MATCH_TIME = 300 * 20;
|
public static final int DEFAULT_MATCH_TIME = 300 * 20;
|
||||||
public static final int DEFAULT_DAMAGE = 4;
|
public static final int DEFAULT_DAMAGE = 4;
|
||||||
|
public static final int DEFAULT_REGEN = 4;
|
||||||
public static final boolean DEFAULT_MOB_SPAWNING_ALLOWED = false;
|
public static final boolean DEFAULT_MOB_SPAWNING_ALLOWED = false;
|
||||||
public static final double DEFAULT_POS1_X = 0, DEFAULT_POS1_Y = 0, DEFAULT_POS1_Z = 0;
|
public static final double DEFAULT_POS1_X = 0, DEFAULT_POS1_Y = 0, DEFAULT_POS1_Z = 0;
|
||||||
public static final double DEFAULT_POS2_X = 0, DEFAULT_POS2_Y = 0, DEFAULT_POS2_Z = 0;
|
public static final double DEFAULT_POS2_X = 0, DEFAULT_POS2_Y = 0, DEFAULT_POS2_Z = 0;
|
||||||
@@ -40,6 +41,7 @@ public class Arena {
|
|||||||
private int playerLimit; // Maximum amount of players allowed in this arena in a match.
|
private int playerLimit; // Maximum amount of players allowed in this arena in a match.
|
||||||
private int graceTime, matchTime;
|
private int graceTime, matchTime;
|
||||||
private int damage; // Damage dealt to players per snowball hit.
|
private int damage; // Damage dealt to players per snowball hit.
|
||||||
|
private int regen; // Damage dealt to players per snowball hit.
|
||||||
private boolean allowMobSpawning;
|
private boolean allowMobSpawning;
|
||||||
private World world; // Which world the coordinates apply to.
|
private World world; // Which world the coordinates apply to.
|
||||||
private Location pos1, pos2; // Coordinates identifying the 2 corners of the arena.
|
private Location pos1, pos2; // Coordinates identifying the 2 corners of the arena.
|
||||||
@@ -225,6 +227,28 @@ public class Arena {
|
|||||||
this.damage = damage;
|
this.damage = damage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the amount of HP awarded to players per kill.
|
||||||
|
*
|
||||||
|
* @return The amount of HP awarded.
|
||||||
|
*/
|
||||||
|
public int getRegen(){
|
||||||
|
return this.regen;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the amount of HP awards to players per kill.
|
||||||
|
*
|
||||||
|
* @param regen The amount of HP awarded.
|
||||||
|
*/
|
||||||
|
public void setRegen(final int regen){
|
||||||
|
if (regen < 0 || regen > 20){
|
||||||
|
throw new IllegalArgumentException("The regen must be between 0 and 20.");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.regen = regen;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets whether mobs are allowed to naturally spawn in this arena.
|
* Gets whether mobs are allowed to naturally spawn in this arena.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ import org.bukkit.event.player.PlayerInteractEvent;
|
|||||||
import org.bukkit.event.player.PlayerMoveEvent;
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
@@ -335,6 +337,9 @@ public class Match {
|
|||||||
MatchParticipant killer = this.getParticipant(victim.getPlayer().getKiller());
|
MatchParticipant killer = this.getParticipant(victim.getPlayer().getKiller());
|
||||||
if (killer != null && killer != victim){
|
if (killer != null && killer != victim){
|
||||||
killer.awardKill();
|
killer.awardKill();
|
||||||
|
if (this.getArena().getRegen() > 0){
|
||||||
|
killer.getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, (int) (Math.round(this.getArena().getRegen() / 1.67 * 20)), 2)); // Award the killer with health regeneration over a period of time based on the arena's configured regen amount.
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Suppress global death message and only send to match participants.
|
// Suppress global death message and only send to match participants.
|
||||||
|
|||||||
@@ -96,6 +96,13 @@ command snowbrawl {
|
|||||||
help Changes the amount of damage done per snowball hit in this arena.;
|
help Changes the amount of damage done per snowball hit in this arena.;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
regen [int:regen] {
|
||||||
|
perm redstoner.snowbrawl.arena.config.regen;
|
||||||
|
run set_arena_regen name regen;
|
||||||
|
type all;
|
||||||
|
help Changes the amount of regen awarded to players per kill.;
|
||||||
|
}
|
||||||
|
|
||||||
allowmobspawning [boolean:mobspawningallowed] {
|
allowmobspawning [boolean:mobspawningallowed] {
|
||||||
perm redstoner.snowbrawl.arena.config.mobspawningallowed;
|
perm redstoner.snowbrawl.arena.config.mobspawningallowed;
|
||||||
run set_arena_mobspawningallowed name mobspawningallowed;
|
run set_arena_mobspawningallowed name mobspawningallowed;
|
||||||
|
|||||||
Reference in New Issue
Block a user