added howlong command

This commit is contained in:
Bryson Steck 2021-07-04 00:15:56 -06:00
parent 2352b42b13
commit 2bc8c99f5a
6 changed files with 139 additions and 14 deletions

View file

@ -1,8 +1,8 @@
package net.brysonsteck.Resurrection; package net.brysonsteck.Resurrection;
import net.brysonsteck.Resurrection.commands.CommandAbout; import net.brysonsteck.Resurrection.commands.CommandAbout;
import net.brysonsteck.Resurrection.commands.CommandHowLong;
import net.brysonsteck.Resurrection.commands.CommandResurrect; import net.brysonsteck.Resurrection.commands.CommandResurrect;
import net.brysonsteck.Resurrection.player.PlayerData;
import net.brysonsteck.Resurrection.player.PlayerListener; import net.brysonsteck.Resurrection.player.PlayerListener;
import net.brysonsteck.Resurrection.startup.CheckForUpdate; import net.brysonsteck.Resurrection.startup.CheckForUpdate;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
@ -11,7 +11,6 @@ import org.bukkit.plugin.java.JavaPlugin;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.Hashtable;
public class Resurrection extends JavaPlugin implements Listener { public class Resurrection extends JavaPlugin implements Listener {
@ -69,14 +68,16 @@ public class Resurrection extends JavaPlugin implements Listener {
// check for updates // check for updates
System.out.println("[Resurrection] Checking for updates..."); System.out.println("[Resurrection] Checking for updates...");
CheckForUpdate check = new CheckForUpdate(); CheckForUpdate check = new CheckForUpdate();
String newestVersion = check.getVersion(); if (check.isSuccess()) {
String newestVersionURL = check.getVersionURL(); String newestVersion = check.getVersion();
if (pluginInfo.getVersion().equals(newestVersion)) { String newestVersionURL = check.getVersionURL();
System.out.println("[Resurrection] " + newestVersion + " is the latest version of Resurrection."); if (pluginInfo.getVersion().equals(newestVersion)) {
} else { System.out.println("[Resurrection] " + newestVersion + " is the latest version of Resurrection.");
System.out.println("[Resurrection] A new version of Resurrection is available! (current: " + pluginInfo.getVersion() + ", newest: " + newestVersion); } else {
System.out.println("[Resurrection] You can download the latest release on GitHub here \\/"); System.out.println("[Resurrection] A new version of Resurrection is available! (current: " + pluginInfo.getVersion() + ", newest: " + newestVersion);
System.out.println("[Resurrection] " + newestVersionURL); System.out.println("[Resurrection] You can download the latest release on GitHub here \\/");
System.out.println("[Resurrection] " + newestVersionURL);
}
} }
System.out.println("[Resurrection] ---------------------------------------------------------"); System.out.println("[Resurrection] ---------------------------------------------------------");
@ -86,8 +87,9 @@ public class Resurrection extends JavaPlugin implements Listener {
this.getServer().getPluginManager().registerEvents(new PlayerListener(), this); this.getServer().getPluginManager().registerEvents(new PlayerListener(), this);
// register commands // register commands
this.getCommand("about").setExecutor(new CommandAbout()); this.getCommand("about").setExecutor(new CommandAbout(pluginInfo.getVersion()));
this.getCommand("resurrect").setExecutor(new CommandResurrect()); this.getCommand("resurrect").setExecutor(new CommandResurrect());
this.getCommand("howlong").setExecutor(new CommandHowLong());
System.out.println("[Resurrection] ---------------------------------------------------------"); System.out.println("[Resurrection] ---------------------------------------------------------");
System.out.println("[Resurrection] Successfully Started!"); System.out.println("[Resurrection] Successfully Started!");

View file

@ -1,14 +1,28 @@
package net.brysonsteck.Resurrection.commands; package net.brysonsteck.Resurrection.commands;
import org.bukkit.ChatColor;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class CommandAbout implements CommandExecutor { public class CommandAbout implements CommandExecutor {
String currentVersion;
boolean checked = false;
public CommandAbout(String currentVersion) {
this.currentVersion = currentVersion;
}
@Override @Override
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) { public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
String aboutMessage = "This is the about message for Resurrection."; String aboutMessage = ChatColor.GREEN + "" + ChatColor.BOLD + "Resurrection\n\n" + ChatColor.RESET +
"Resurrection is a Spigot Minecraft plugin that forces players to wait 24 hours before respawning.\n" +
"The current version of this plugin is " + currentVersion + ".\n\n" +
"This plugin is licensed under the GNU Affero General Public License v3.0. Read more here: " +
"For more information on this plugin or to download it for yourself, visit the GitHub repository at https://github.com/brysonsteck/resurrection" +
"\u00a9 2021 Bryson Steck.";
if (commandSender instanceof Player) { if (commandSender instanceof Player) {
Player p = (Player) commandSender; Player p = (Player) commandSender;
p.sendMessage(aboutMessage); p.sendMessage(aboutMessage);

View file

@ -0,0 +1,105 @@
package net.brysonsteck.Resurrection.commands;
import net.brysonsteck.Resurrection.player.PlayerData;
import net.brysonsteck.Resurrection.player.TimeCheck;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class CommandHowLong implements CommandExecutor {
@Override
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
if (commandSender instanceof Player) {
boolean self = false;
boolean valid = false;
if (strings.length == 0) {
self = true;
valid = true;
} else if (strings.length == 1) {
valid = true;
}
if (valid) {
Player p;
if (self) {
p = (Player) commandSender;
} else {
p = Bukkit.getPlayer(strings[0]);
if (p == null) {
commandSender.sendMessage(ChatColor.RED + "ERROR: Player does not exist or is offline!");
return false;
}
}
PlayerData playerData = new PlayerData();
playerData.readData();
String rawData = playerData.getRawData();
String[] rawPlayers = rawData.split(";");
for (String players : rawPlayers) {
if (players.startsWith(p.getDisplayName())) {
String[] playerSplit = players.split(",");
if (Boolean.parseBoolean(playerSplit[1])) {
long currentTime = System.currentTimeMillis();
long resurrectionTime = Long.parseLong(playerSplit[2]);
TimeCheck timeCheck = new TimeCheck(resurrectionTime - currentTime);
if (self) {
commandSender.sendMessage("You will respawn in " + timeCheck.formatTime());
} else {
commandSender.sendMessage(p.getDisplayName() + " will respawn in " + timeCheck.formatTime());
}
return true;
}
}
}
commandSender.sendMessage("ERROR: An error has occurred while trying to get time information. This is a bug in the program and not your fault.");
return false;
}
} else {
boolean valid = false;
if (strings.length == 0) {
System.out.println("[Resurrection] ERROR: The /howlong command requires the name of a player when ran through the console.");
return false;
} else if (strings.length == 1) {
valid = true;
}
if (valid) {
Player p = Bukkit.getPlayer(strings[0]);
if (p == null) {
commandSender.sendMessage(ChatColor.RED + "ERROR: Player does not exist or is offline!");
return false;
}
PlayerData playerData = new PlayerData();
playerData.readData();
String rawData = playerData.getRawData();
String[] rawPlayers = rawData.split(";");
for (String players : rawPlayers) {
if (players.startsWith(p.getDisplayName())) {
String[] playerSplit = players.split(",");
if (Boolean.parseBoolean(playerSplit[1])) {
long currentTime = System.currentTimeMillis();
long resurrectionTime = Long.parseLong(playerSplit[2]);
TimeCheck timeCheck = new TimeCheck(resurrectionTime - currentTime);
commandSender.sendMessage(p.getDisplayName() + " will respawn in " + timeCheck.formatTime());
return true;
}
}
}
commandSender.sendMessage("ERROR: An error has occurred while trying to get time information. This is a bug in the program and not your fault.");
return false;
}
}
return false;
}
}

View file

@ -8,9 +8,9 @@ commands:
permission: op permission: op
usage: /about usage: /about
timecheck: howlong:
description: Displays the remaining time before the player (or specified player) is resurrected. description: Displays the remaining time before the player (or specified player) is resurrected.
usage: /timecheck [PLAYER NAME] usage: /howlong [PLAYER_NAME]
resurrect: resurrect:
description: Manually resurrects a player. description: Manually resurrects a player.

View file

@ -10,6 +10,7 @@ import java.net.URLConnection;
public class CheckForUpdate { public class CheckForUpdate {
boolean success;
String version; String version;
String versionURL; String versionURL;
@ -23,6 +24,7 @@ public class CheckForUpdate {
version = softwareObj.get("current-release").toString(); version = softwareObj.get("current-release").toString();
version = version.replace("\"", ""); version = version.replace("\"", "");
versionURL = softwareObj.get("github-release").toString(); versionURL = softwareObj.get("github-release").toString();
success = true;
} catch (IOException e) { } catch (IOException e) {
System.out.println("[Resurrection] An error has occurred while attempting to check for updates."); System.out.println("[Resurrection] An error has occurred while attempting to check for updates.");
e.printStackTrace(); e.printStackTrace();
@ -47,6 +49,8 @@ public class CheckForUpdate {
return response.toString(); return response.toString();
} }
public boolean isSuccess() { return success; }
public String getVersionURL() { public String getVersionURL() {
return versionURL; return versionURL;
} }