Skip to content
This repository was archived by the owner on Feb 7, 2022. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 4 additions & 10 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,16 @@

<groupId>com.mstiles92.plugins</groupId>
<artifactId>HardcoreDeathBan</artifactId>
<version>1.2.1-SNAPSHOT</version>
<version>1.3.0-SNAPSHOT</version>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<bukkitVersion>1.7.10-R0.1-SNAPSHOT</bukkitVersion>
<bukkitVersion>1.7.9-R0.2</bukkitVersion>
</properties>

<build>
<defaultGoal>clean package</defaultGoal>
<finalName>HardcoreDeathBan</finalName>

<resources>
<resource>
Expand Down Expand Up @@ -91,13 +92,6 @@
<version>${bukkitVersion}</version>
</dependency>

<dependency>
<groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId>
<version>${bukkitVersion}</version>
<scope>runtime</scope>
</dependency>

<dependency>
<groupId>org.mcstats.bukkit</groupId>
<artifactId>metrics</artifactId>
Expand Down Expand Up @@ -137,4 +131,4 @@
<version>1.0.6-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -23,23 +23,23 @@

package com.mstiles92.plugins.hardcoredeathban;

import com.mstiles92.plugins.hardcoredeathban.config.Config;
import com.mstiles92.plugins.hardcoredeathban.util.Log;
import com.mstiles92.plugins.stileslib.calendar.CalendarUtils;
import com.mstiles92.plugins.stileslib.commands.CommandRegistry;
import com.mstiles92.plugins.stileslib.updates.UpdateChecker;
import com.mstiles92.plugins.hardcoredeathban.commands.Credits;
import com.mstiles92.plugins.hardcoredeathban.commands.Deathban;
import com.mstiles92.plugins.hardcoredeathban.listeners.PlayerListener;
import com.mstiles92.plugins.hardcoredeathban.util.Bans;
import com.mstiles92.plugins.hardcoredeathban.util.RevivalCredits;
import java.io.File;
import java.io.IOException;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
import org.mcstats.Metrics;

import java.io.IOException;
import com.mstiles92.plugins.hardcoredeathban.commands.Credits;
import com.mstiles92.plugins.hardcoredeathban.commands.Deathban;
import com.mstiles92.plugins.hardcoredeathban.config.Config;
import com.mstiles92.plugins.hardcoredeathban.data.PlayerData;
import com.mstiles92.plugins.hardcoredeathban.listeners.PlayerListener;
import com.mstiles92.plugins.hardcoredeathban.util.Log;
import com.mstiles92.plugins.stileslib.commands.CommandRegistry;
import com.mstiles92.plugins.stileslib.updates.UpdateChecker;

/**
* HardcoreDeathBan is the main class of this Bukkit plugin.
Expand All @@ -49,26 +49,24 @@
* @author mstiles92
*/
public class HardcoreDeathBan extends JavaPlugin {

public final File PLAYERDATA_JSON_FILE = new File(this.getDataFolder(), "PlayerData.json");

private static HardcoreDeathBan instance;
private static Config config;
private UpdateChecker updateChecker;
private CommandRegistry commandRegistry;

public RevivalCredits credits = null;
public Bans bans = null;

@Override
public void onEnable() {
instance = this;
config = new Config();

try {
credits = new RevivalCredits(this, "credits.yml");
bans = new Bans(this, "bans.yml");
} catch (Exception e) {
Log.warning(ChatColor.RED + "Error opening a config file. Plugin will now be disabled.");
getPluginLoader().disablePlugin(this);
}
PlayerData.init(PLAYERDATA_JSON_FILE);
// Start autosave task (if enabled)
if (this.getConfigObject().playerDataAutosaveEnabled()) {
PlayerData.startAutosaveTask();
}

commandRegistry = new CommandRegistry(this);
commandRegistry.registerCommands(new Deathban());
Expand All @@ -91,8 +89,7 @@ public void onEnable() {

@Override
public void onDisable() {
credits.save();
bans.save();
PlayerData.save();
config.save();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,14 @@

package com.mstiles92.plugins.hardcoredeathban.commands;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;

import com.mstiles92.plugins.hardcoredeathban.data.PlayerData;
import com.mstiles92.plugins.stileslib.commands.Arguments;
import com.mstiles92.plugins.stileslib.commands.CommandHandler;
import com.mstiles92.plugins.stileslib.commands.annotations.Command;
import org.bukkit.ChatColor;

/**
* Credits is the CommandExecutor that handles all commands dealing
Expand Down Expand Up @@ -104,7 +107,15 @@ public void give(Arguments args) {
return;
}

PlayerData otherPlayerData = PlayerData.get(args.getArgs()[0]);
PlayerData otherPlayerData = PlayerData.get(args.getArgs()[0]);

if (otherPlayerData == null) {
OfflinePlayer otherOfflinePlayer = Bukkit.getOfflinePlayer(args.getArgs()[0]);

if (otherOfflinePlayer.getPlayer() != null) {
otherPlayerData = PlayerData.get(otherOfflinePlayer.getPlayer());
}
}

if (otherPlayerData == null) {
args.getSender().sendMessage(tag + ChatColor.RED + "The specified player could not be found.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,16 @@

package com.mstiles92.plugins.hardcoredeathban.commands;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;

import com.mstiles92.plugins.hardcoredeathban.HardcoreDeathBan;
import com.mstiles92.plugins.hardcoredeathban.data.PlayerData;
import com.mstiles92.plugins.hardcoredeathban.util.Utils;
import com.mstiles92.plugins.stileslib.commands.Arguments;
import com.mstiles92.plugins.stileslib.commands.CommandHandler;
import com.mstiles92.plugins.stileslib.commands.annotations.Command;
import com.mstiles92.plugins.hardcoredeathban.HardcoreDeathBan;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;

/**
* Deathban is the CommandExecutor that handles all commands dealing
Expand Down Expand Up @@ -110,18 +112,18 @@ public void unban(Arguments args) {
return;
}

Player player = Bukkit.getPlayer(args.getArgs()[0]);
PlayerData playerData = PlayerData.get(args.getArgs()[0]);

if (player == null) {
if (playerData == null) {
args.getSender().sendMessage(tag + ChatColor.RED + "The specified player could not be found.");
return;
}

if (Utils.checkPlayerBanned(player.getUniqueId())) {
Utils.unbanPlayer(player);
args.getSender().sendMessage(tag + player.getName() + " has been unbanned.");
if (Utils.checkPlayerBanned(playerData.getPlayerUUID())) {
Utils.unbanPlayer(playerData.getPlayerUUID());
args.getSender().sendMessage(tag + playerData.getLastSeenName() + " has been unbanned.");
} else {
args.getSender().sendMessage(tag + player.getName() + " is not currently banned.");
args.getSender().sendMessage(tag + playerData.getLastSeenName() + " is not currently banned.");
}
}

Expand All @@ -132,17 +134,17 @@ public void status(Arguments args) {
return;
}

Player player = Bukkit.getPlayer(args.getArgs()[0]);
PlayerData playerData = PlayerData.get(args.getArgs()[0]);

if (player == null) {
if (playerData == null) {
args.getSender().sendMessage(tag + ChatColor.RED + "The specified player could not be found.");
return;
}

if (Utils.checkPlayerBanned(player.getUniqueId())) {
args.getSender().sendMessage(tag + Utils.replaceMessageVariables("%player% is banned until %unbantime% %unbandate%", player.getUniqueId()));
if (Utils.checkPlayerBanned(playerData.getPlayerUUID())) {
args.getSender().sendMessage(tag + Utils.replaceMessageVariables("%player% is banned until %unbantime% %unbandate%", playerData.getPlayerUUID()));
} else {
args.getSender().sendMessage(tag + player.getName() + " is not currently banned.");
args.getSender().sendMessage(tag + playerData.getLastSeenName() + " is not currently banned.");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,14 @@

package com.mstiles92.plugins.hardcoredeathban.config;

import com.mstiles92.plugins.hardcoredeathban.HardcoreDeathBan;
import com.mstiles92.plugins.hardcoredeathban.data.DeathClass;
import java.util.ArrayList;
import java.util.List;

import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;

import java.util.ArrayList;
import java.util.List;
import com.mstiles92.plugins.hardcoredeathban.HardcoreDeathBan;
import com.mstiles92.plugins.hardcoredeathban.data.DeathClass;

public class Config {
private FileConfiguration config;
Expand All @@ -41,6 +42,8 @@ public class Config {
private int startingCredits;
private boolean verboseLoggingEnabled;
private boolean updateCheckingEnabled;
private boolean playerDataAutosaveEnabled;
private int playerDataAutosaveSeconds;
private List<DeathClass> deathClasses = new ArrayList<>();

public Config() {
Expand All @@ -59,6 +62,8 @@ public void load() {
startingCredits = config.getInt("Starting-Credits", 0);
verboseLoggingEnabled = config.getBoolean("Verbose", false);
updateCheckingEnabled = config.getBoolean("Check-for-Updates", true);
playerDataAutosaveEnabled = config.getBoolean("PlayerData-Autosave-Enabled", true);
playerDataAutosaveSeconds = config.getInt("PlayerData-Autosave-Seconds", 300);

ConfigurationSection section = config.getConfigurationSection("Death-Classes");
if (section != null) {
Expand Down Expand Up @@ -111,6 +116,14 @@ public boolean shouldCheckForUpdates() {
return updateCheckingEnabled;
}

public boolean playerDataAutosaveEnabled() {
return playerDataAutosaveEnabled;
}

public int playerDataAutosaveSeconds() {
return playerDataAutosaveSeconds;
}

public List<DeathClass> getDeathClasses() {
return deathClasses;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,22 +23,36 @@

package com.mstiles92.plugins.hardcoredeathban.data;

import com.mstiles92.plugins.hardcoredeathban.HardcoreDeathBan;
import org.bukkit.entity.Player;

import javax.json.*;
import javax.json.stream.JsonGenerator;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import javax.json.JsonReader;
import javax.json.JsonValue;
import javax.json.JsonWriter;
import javax.json.stream.JsonGenerator;

import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;

import com.mstiles92.plugins.hardcoredeathban.HardcoreDeathBan;
import com.mstiles92.plugins.hardcoredeathban.util.Log;

public class PlayerData {
private static File file;
private static Map<UUID, PlayerData> instances = new HashMap<>();

private transient UUID uuid;
private String lastSeenName;
private long unbanTimeInMillis;
private int revivalCredits;
Expand Down Expand Up @@ -86,11 +100,23 @@ public static void save() {
}
}

public static void startAutosaveTask() {
final int delay = HardcoreDeathBan.getConfigObject().playerDataAutosaveSeconds() * 20;
new BukkitRunnable() {
@Override
public void run() {
save();
Log.info("Player data has been automatically saved.");
}
}.runTaskTimer(HardcoreDeathBan.getInstance(), delay, delay);
}

private static void deserialize(JsonObject json) {
instances.clear();

for (Map.Entry<String, JsonValue> entry : json.entrySet()) {
instances.put(UUID.fromString(entry.getKey()), new PlayerData((JsonObject) entry.getValue()));
UUID playerUuid = UUID.fromString(entry.getKey());
instances.put(playerUuid, new PlayerData((JsonObject) entry.getValue(), playerUuid));
}
}

Expand All @@ -102,13 +128,15 @@ private static JsonObject serialize() {
return builder.build();
}

private PlayerData(JsonObject json) {
private PlayerData(JsonObject json, UUID playerUuid) {
this.uuid = playerUuid;
lastSeenName = json.getString("lastSeenName");
unbanTimeInMillis = json.getJsonNumber("unbanTimeInMillis").longValueExact();
revivalCredits = json.getInt("revivalCredits");
}

private PlayerData(Player player) {
this.uuid = player.getUniqueId();
lastSeenName = player.getName();
unbanTimeInMillis = -1;
revivalCredits = HardcoreDeathBan.getConfigObject().getStartingCredits(); //TODO: check for death classes as well
Expand Down Expand Up @@ -158,7 +186,7 @@ public static PlayerData get(UUID playerUUID) {
@Deprecated
public static PlayerData get(String playerName) {
for (PlayerData playerData : instances.values()) {
if (playerData.getLastSeenName().equals(playerName)) {
if (playerData.getLastSeenName().equalsIgnoreCase(playerName)) {
return playerData;
}
}
Expand Down Expand Up @@ -218,4 +246,8 @@ public boolean removeRevivalCredits(int amount) {
return false;
}
}

public UUID getPlayerUUID() {
return this.uuid;
}
}
Loading