Allow easier Prisoner creations.

All a whole variety of prisoner class creation, making API usage very
nice and easy.
This commit is contained in:
graywolf336 2015-05-22 11:07:08 -05:00
parent 2dfa34c05c
commit 1f9035646d
5 changed files with 177 additions and 40 deletions

View File

@ -70,4 +70,15 @@ public class JailsAPI {
public static JailVoteManager getJailVoteManager() { public static JailVoteManager getJailVoteManager() {
return pl.getJailVoteManager(); return pl.getJailVoteManager();
} }
/**
* Gets the amount of time from the provided time which the Jail plugin uses.
*
* @param time A string in the format "30minutes"
* @return the amount of time
* @throws Exception if the provided time string is in an invalid format
*/
public static long getTimeFromString(String time) throws Exception {
return Util.getTime(time);
}
} }

View File

@ -6,23 +6,26 @@ import java.util.concurrent.TimeUnit;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player;
import com.graywolf336.jail.enums.Lang;
/** /**
* Represents a Prisoner, player who is jailed, and contains all the information about him/her. * Represents a Prisoner, player who is jailed, and contains all the information about him/her.
* *
* @author graywolf336 * @author graywolf336
* @since 2.x.x * @since 2.x.x
* @version 3.0.2 * @version 3.1.0
*/ */
public class Prisoner { public class Prisoner {
private String uuid, name, jailer, reason, inventory, armor; private String uuid, name, jailer, reason, inventory, armor;
private boolean muted, offlinePending, teleporting, toBeTransferred, changed; private boolean muted = true, offlinePending = false, teleporting = false, toBeTransferred = false, changed = false;
private long time, afk; private long time = -1L, afk = 0L;
private Location previousPosition; private Location previousPosition;
private GameMode previousGameMode; private GameMode previousGameMode;
/** /**
* Creates a new prisoner with a name and whether they are muted or not. * Creates the prisoner instance with the lot of data provided.
* *
* @param uuid The uuid of the prisoner * @param uuid The uuid of the prisoner
* @param name The name of the prisoner * @param name The name of the prisoner
@ -38,15 +41,134 @@ public class Prisoner {
this.time = time; this.time = time;
this.jailer = jailer; this.jailer = jailer;
this.reason = reason; this.reason = reason;
this.offlinePending = false; finishSetup();
this.teleporting = false; }
this.toBeTransferred = false;
this.previousPosition = null; /**
this.previousGameMode = GameMode.SURVIVAL; * Creates the prisoner instance with the lot of data provided.
this.inventory = ""; *
this.armor = ""; * @param uuid The uuid of the prisoner
this.afk = 0; * @param name The name of the prisoner
this.changed = false; * @param time The amount of remaining time the prisoner has
* @param jailer The name of the person who jailed this prisoner
* @param reason The reason why this prisoner is in jail
*/
public Prisoner(String uuid, String name, long time, String jailer, String reason) {
this.uuid = uuid;
this.name = name;
this.time = time;
this.jailer = jailer;
this.reason = reason;
finishSetup();
}
/**
* Creates the prisoner instance with the lot of data provided.
*
* @param uuid The uuid of the prisoner
* @param name The name of the prisoner
* @param time The amount of remaining time the prisoner has
* @param reason The reason why this prisoner is in jail
*/
public Prisoner(String uuid, String name, long time, String reason) {
this.uuid = uuid;
this.name = name;
this.time = time;
this.reason = reason;
finishSetup();
}
/**
* Creates the prisoner instance with the lot of data provided.
*
* @param uuid The uuid of the prisoner
* @param name The name of the prisoner
* @param time The amount of remaining time the prisoner has
*/
public Prisoner(String uuid, String name, long time) {
this.uuid = uuid;
this.name = name;
this.time = time;
finishSetup();
}
/**
* Creates the prisoner instance with the data provided.
*
* @param player The instance of the player who is to be jailed
* @param muted Whether the prisoner is muted or not
* @param time The amount of remaining time the prisoner has
* @param jailer The jailer who jailed the prisoner
* @param reason The reason why this prisoner is in jail
*/
public Prisoner(Player player, boolean muted, long time, String jailer, String reason) {
this.uuid = player.getUniqueId().toString();
this.name = player.getName();
this.muted = muted;
this.time = time;
this.jailer = jailer;
this.reason = reason;
finishSetup();
}
/**
* Creates the prisoner instance with the data provided.
*
* @param player The instance of the player who is to be jailed
* @param time The amount of remaining time the prisoner has
* @param jailer The jailer who jailed the prisoner
* @param reason The reason why this prisoner is in jail
*/
public Prisoner(Player player, long time, String jailer, String reason) {
this.uuid = player.getUniqueId().toString();
this.name = player.getName();
this.time = time;
this.jailer = jailer;
this.reason = reason;
finishSetup();
}
/**
* The most basic prisoner instance creation via providing the player, time, and reason.
*
* @param player The instance of the player who is to be jailed
* @param time The amount of remaining time the prisoner has
* @param reason The reason why this prisoner is in jail
*/
public Prisoner(Player player, long time, String reason) {
this.uuid = player.getUniqueId().toString();
this.name = player.getName();
this.time = time;
this.reason = reason;
finishSetup();
}
/**
* The most basic prisoner instance creation via providing the player and time.
*
* @param player The instance of the player who is to be jailed
* @param time The amount of remaining time the prisoner has
*/
public Prisoner(Player player, long time) {
this.uuid = player.getUniqueId().toString();
this.name = player.getName();
this.time = time;
finishSetup();
}
/** Finishes the setup of the prisoner data, set to defaults. */
private void finishSetup() {
if(jailer == null)
jailer = Lang.DEFAULTJAILER.get();
if(reason == null)
Lang.DEFAULTJAILEDREASON.get();
if(inventory == null)
inventory = "";
if(armor == null)
armor = "";
if(previousGameMode == null)
previousGameMode = GameMode.SURVIVAL;
previousPosition = null;
} }
/** Returns the UUID of the prisoner. */ /** Returns the UUID of the prisoner. */
@ -137,10 +259,10 @@ public class Prisoner {
* @return the new remaining time the prisoner has * @return the new remaining time the prisoner has
*/ */
public long addTime(long time) { public long addTime(long time) {
if(this.time != -1L) { if(this.time != -1L) {
this.time += time; this.time += time;
this.changed = true; this.changed = true;
} }
return this.time; return this.time;
} }
@ -152,10 +274,10 @@ public class Prisoner {
* @return the new remaining time the prisoner has * @return the new remaining time the prisoner has
*/ */
public long subtractTime(long time) { public long subtractTime(long time) {
if(this.time != -1L) { if(this.time != -1L) {
this.time -= time; this.time -= time;
this.changed = true; this.changed = true;
} }
return this.time; return this.time;
} }

View File

@ -37,6 +37,8 @@ public enum Lang {
CANTBEJAILED("jailing"), CANTBEJAILED("jailing"),
/** The message sent to the sender when they are trying to jail into a cell which is not empty. */ /** The message sent to the sender when they are trying to jail into a cell which is not empty. */
CELLNOTEMPTY("jailing"), CELLNOTEMPTY("jailing"),
/** The jailer set whenever a jailer is not provided. */
DEFAULTJAILER("jailing"),
/** The message sent when someone is jailed without a reason. */ /** The message sent when someone is jailed without a reason. */
DEFAULTJAILEDREASON("jailing"), DEFAULTJAILEDREASON("jailing"),
/** The message sent when someone is unjailed yet they never came online and so they were forcefully unjailed. */ /** The message sent when someone is unjailed yet they never came online and so they were forcefully unjailed. */

View File

@ -49,6 +49,7 @@ language:
cancelledbyanotherplugin: '&cJailing %0% was cancelled by another plugin and they did not leave you a message.' cancelledbyanotherplugin: '&cJailing %0% was cancelled by another plugin and they did not leave you a message.'
cantbejailed: '&cThat player can not be jailed.' cantbejailed: '&cThat player can not be jailed.'
cellnotempty: '&cThe destination cell, %0%, already has a prisoner in it.' cellnotempty: '&cThe destination cell, %0%, already has a prisoner in it.'
defaultjailer: 'Al Capone'
defaultjailedreason: 'Breaking the rules.' defaultjailedreason: 'Breaking the rules.'
forceunjailed: '&c%0% was forcefully unjailed.' forceunjailed: '&c%0% was forcefully unjailed.'
jailed: '&cYou have been jailed!' jailed: '&cYou have been jailed!'

View File

@ -98,6 +98,7 @@ public class TestJailLanguage {
assertEquals(colorize("&cJailing graywolf336 was cancelled by another plugin and they did not leave you a message."), Lang.CANCELLEDBYANOTHERPLUGIN.get("graywolf336")); assertEquals(colorize("&cJailing graywolf336 was cancelled by another plugin and they did not leave you a message."), Lang.CANCELLEDBYANOTHERPLUGIN.get("graywolf336"));
assertEquals(colorize("&cThat player can not be jailed."), Lang.CANTBEJAILED.get()); assertEquals(colorize("&cThat player can not be jailed."), Lang.CANTBEJAILED.get());
assertEquals(colorize("&cThe destination cell, cell_n01, already has a prisoner in it."), Lang.CELLNOTEMPTY.get("cell_n01")); assertEquals(colorize("&cThe destination cell, cell_n01, already has a prisoner in it."), Lang.CELLNOTEMPTY.get("cell_n01"));
assertEquals("Al Capone", Lang.DEFAULTJAILER.get());
assertEquals("Breaking the rules.", Lang.DEFAULTJAILEDREASON.get()); assertEquals("Breaking the rules.", Lang.DEFAULTJAILEDREASON.get());
assertEquals(colorize("&cgraywolf336 was forcefully unjailed."), Lang.FORCEUNJAILED.get("graywolf336")); assertEquals(colorize("&cgraywolf336 was forcefully unjailed."), Lang.FORCEUNJAILED.get("graywolf336"));
assertEquals(colorize("&cYou have been jailed!"), Lang.JAILED.get()); assertEquals(colorize("&cYou have been jailed!"), Lang.JAILED.get());