mirror of
https://github.com/nkomarn/harbor.git
synced 2024-12-24 09:17:34 +01:00
🎺 Added back in some of the command functions
This commit is contained in:
parent
021ea69d73
commit
9f06cecd2c
2
pom.xml
2
pom.xml
@ -25,7 +25,7 @@
|
|||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.spigotmc</groupId>
|
<groupId>org.spigotmc</groupId>
|
||||||
<artifactId>spigot-api</artifactId>
|
<artifactId>spigot</artifactId>
|
||||||
<version>1.14.4-R0.1-SNAPSHOT</version>
|
<version>1.14.4-R0.1-SNAPSHOT</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
@ -30,6 +30,7 @@ public class Harbor extends JavaPlugin {
|
|||||||
new Metrics(this);
|
new Metrics(this);
|
||||||
|
|
||||||
// Essentials hook
|
// Essentials hook
|
||||||
essentials = (Essentials) Bukkit.getServer().getPluginManager().getPlugin("Essentials");
|
essentials = (Essentials) Bukkit.getServer().getPluginManager()
|
||||||
|
.getPlugin("Essentials");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,52 @@
|
|||||||
package xyz.nkomarn.Harbor.command;
|
package xyz.nkomarn.Harbor.command;
|
||||||
|
|
||||||
|
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 xyz.nkomarn.Harbor.Harbor;
|
import xyz.nkomarn.Harbor.Harbor;
|
||||||
|
import xyz.nkomarn.Harbor.util.Config;
|
||||||
import xyz.nkomarn.Harbor.util.Updater;
|
import xyz.nkomarn.Harbor.util.Updater;
|
||||||
|
|
||||||
public class HarborCommand implements CommandExecutor {
|
public class HarborCommand implements CommandExecutor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
|
public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
|
||||||
if (args.length == 1 && "reload".equalsIgnoreCase(args[0]) && sender.hasPermission("harbor.reload")) {
|
|
||||||
|
final String prefix = Config.getString("messages.miscellaneous.prefix");
|
||||||
|
|
||||||
|
if (args.length < 1) {
|
||||||
|
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix + "&7Harbor version "
|
||||||
|
+ Harbor.version + " by TechToolbox (@nkomarn)."));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!sender.hasPermission("harbor.admin")) {
|
||||||
|
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix
|
||||||
|
+ Config.getString("messages.miscellaneous.permission")));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (args[0].equalsIgnoreCase("reload")) {
|
||||||
|
Harbor.instance.reloadConfig();
|
||||||
|
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix
|
||||||
|
+ "&7Reloaded configuration."));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (args[0].equalsIgnoreCase("update")) {
|
||||||
|
if (Updater.check()) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise, send unrecognized argument messages
|
||||||
|
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', prefix
|
||||||
|
+ Config.getString("messages.miscellaneous.unrecognized")));
|
||||||
|
return true;
|
||||||
|
|
||||||
|
/*if (args.length == 1 && "reload".equalsIgnoreCase(args[0]) && sender.hasPermission("harbor.reload")) {
|
||||||
Harbor.instance.reloadConfig();
|
Harbor.instance.reloadConfig();
|
||||||
sender.sendMessage("§1[Harbor]: §2 Reloaded");
|
sender.sendMessage("§1[Harbor]: §2 Reloaded");
|
||||||
}
|
}*/
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkForUpdate() {
|
private void checkForUpdate() {
|
||||||
|
@ -11,7 +11,7 @@ import xyz.nkomarn.Harbor.util.Messages;
|
|||||||
|
|
||||||
public class PlayerListener implements Listener {
|
public class PlayerListener implements Listener {
|
||||||
|
|
||||||
// Not sure if I will include this in final release
|
// TODO Not sure if I will include this in final release
|
||||||
|
|
||||||
/*@EventHandler(priority = EventPriority.HIGH)
|
/*@EventHandler(priority = EventPriority.HIGH)
|
||||||
public void onBedEnter(final PlayerBedEnterEvent event) {
|
public void onBedEnter(final PlayerBedEnterEvent event) {
|
||||||
|
@ -19,8 +19,6 @@ public class AccelerateNightTask extends BukkitRunnable {
|
|||||||
final long time = world.getTime();
|
final long time = world.getTime();
|
||||||
if (!(time >= 450 && time <= 1000)) {
|
if (!(time >= 450 && time <= 1000)) {
|
||||||
world.setTime(time + Config.getInteger("values.interval"));
|
world.setTime(time + Config.getInteger("values.interval"));
|
||||||
world.getPlayers().forEach(player -> Messages.sendActionBarMessage(player,
|
|
||||||
ChatColor.GREEN + "Current world time: " + time));
|
|
||||||
} else {
|
} else {
|
||||||
// Announce night skip and clear queue
|
// Announce night skip and clear queue
|
||||||
Messages.sendRandomChatMessage(world, "messages.chat.skipped");
|
Messages.sendRandomChatMessage(world, "messages.chat.skipped");
|
||||||
@ -28,7 +26,8 @@ public class AccelerateNightTask extends BukkitRunnable {
|
|||||||
|
|
||||||
// Reset sleep statistic if phantoms are disabled
|
// Reset sleep statistic if phantoms are disabled
|
||||||
if (!Config.getBoolean("features.phantoms")) {
|
if (!Config.getBoolean("features.phantoms")) {
|
||||||
world.getPlayers().forEach(player -> player.setStatistic(Statistic.TIME_SINCE_REST, 0));
|
world.getPlayers().forEach(player ->
|
||||||
|
player.setStatistic(Statistic.TIME_SINCE_REST, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clear weather
|
// Clear weather
|
||||||
|
@ -31,10 +31,16 @@ public class Checker implements Runnable {
|
|||||||
final int sleeping = getSleeping(world).size();
|
final int sleeping = getSleeping(world).size();
|
||||||
final int needed = getNeeded(world);
|
final int needed = getNeeded(world);
|
||||||
|
|
||||||
// Send actionbar sleeping notification
|
// Send actionbar/bossbar sleeping notification
|
||||||
if (sleeping > 0 && needed > 0 && Config.getBoolean("messages.actionbar.actionbar")) {
|
if (sleeping > 0 && needed > 0) {
|
||||||
|
if (Config.getBoolean("messages.actionbar.actionbar")) {
|
||||||
world.getPlayers().forEach(player -> Messages.sendActionBarMessage(player,
|
world.getPlayers().forEach(player -> Messages.sendActionBarMessage(player,
|
||||||
Config.getString("messages.actionbar.sleeping")));
|
Config.getString("messages.actionbar.sleeping")));
|
||||||
|
}
|
||||||
|
if (Config.getBoolean("messages.bossbar.bossbar")) {
|
||||||
|
world.getPlayers().forEach(player -> Messages.sendBossbar(player,
|
||||||
|
Config.getString("messages.bossbar.sleeping")));
|
||||||
|
}
|
||||||
} else if (needed == 0 && sleeping > 0) {
|
} else if (needed == 0 && sleeping > 0) {
|
||||||
world.getPlayers().forEach(player -> Messages.sendActionBarMessage(player,
|
world.getPlayers().forEach(player -> Messages.sendActionBarMessage(player,
|
||||||
Config.getString("messages.actionbar.everyone")));
|
Config.getString("messages.actionbar.everyone")));
|
||||||
@ -79,7 +85,7 @@ public class Checker implements Runnable {
|
|||||||
return world.getPlayers().stream().filter(Checker::isExcluded).collect(toList());
|
return world.getPlayers().stream().filter(Checker::isExcluded).collect(toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isExcluded(final Player p) {
|
private static boolean isExcluded(final Player p) {
|
||||||
final boolean excludedByGameMode = Config.getBoolean("features.ignore") && p.getGameMode() != GameMode.SURVIVAL;
|
final boolean excludedByGameMode = Config.getBoolean("features.ignore") && p.getGameMode() != GameMode.SURVIVAL;
|
||||||
final boolean excludedByPermission = Config.getBoolean("features.bypass") && p.hasPermission("harbor.bypass");
|
final boolean excludedByPermission = Config.getBoolean("features.bypass") && p.hasPermission("harbor.bypass");
|
||||||
final boolean excludedByAfk = Harbor.essentials != null && Harbor.essentials.getUser(p).isAfk(); // Essentials AFK detection
|
final boolean excludedByAfk = Harbor.essentials != null && Harbor.essentials.getUser(p).isAfk(); // Essentials AFK detection
|
||||||
|
@ -2,8 +2,12 @@ package xyz.nkomarn.Harbor.util;
|
|||||||
|
|
||||||
import net.md_5.bungee.api.ChatMessageType;
|
import net.md_5.bungee.api.ChatMessageType;
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.boss.BarColor;
|
||||||
|
import org.bukkit.boss.BarStyle;
|
||||||
|
import org.bukkit.boss.BossBar;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import xyz.nkomarn.Harbor.task.Checker;
|
import xyz.nkomarn.Harbor.task.Checker;
|
||||||
|
|
||||||
@ -14,7 +18,7 @@ public class Messages {
|
|||||||
|
|
||||||
public static void sendRandomChatMessage(final World world, final String messageList) {
|
public static void sendRandomChatMessage(final World world, final String messageList) {
|
||||||
final List<String> messages = Config.getList(messageList);
|
final List<String> messages = Config.getList(messageList);
|
||||||
final int index = new Random().nextInt(messages.size());
|
final int index = new Random().nextInt(Math.max(0, messages.size()));
|
||||||
sendWorldChatMessage(world, messages.get(index));
|
sendWorldChatMessage(world, messages.get(index));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -36,4 +40,19 @@ public class Messages {
|
|||||||
.replace("[more]", String.valueOf(Checker.getNeeded(world))))));
|
.replace("[more]", String.valueOf(Checker.getNeeded(world))))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO redo it the correct way
|
||||||
|
public static void sendBossbar(final Player player, final String message) {
|
||||||
|
final World world = player.getWorld();
|
||||||
|
BossBar bossBar = Bukkit.createBossBar(prepareMessage(world, message), BarColor.BLUE, BarStyle.SOLID);
|
||||||
|
bossBar.addPlayer(player);
|
||||||
|
bossBar.setProgress((Checker.getSleeping(world).size() / Checker.getSkipAmount(world)) * 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String prepareMessage(final World world, final String message) {
|
||||||
|
return ChatColor.translateAlternateColorCodes('&', message
|
||||||
|
.replace("[sleeping]", String.valueOf(Checker.getSleeping(world).size()))
|
||||||
|
.replace("[players]", String.valueOf(Checker.getPlayers(world)))
|
||||||
|
.replace("[needed]", String.valueOf(Checker.getSkipAmount(world)))
|
||||||
|
.replace("[more]", String.valueOf(Checker.getNeeded(world))));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,11 +29,7 @@ public class Updater {
|
|||||||
latest = reader.lines().collect(Collectors.joining(System.lineSeparator()));
|
latest = reader.lines().collect(Collectors.joining(System.lineSeparator()));
|
||||||
|
|
||||||
System.out.println(latest);
|
System.out.println(latest);
|
||||||
|
return !Harbor.version.equals(latest);
|
||||||
if (Harbor.version.equals(latest)) return false;
|
|
||||||
|
|
||||||
|
|
||||||
return true;
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return false;
|
return false;
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
# GitHub URL: https://github.com/nkomarn/Harbor/issues
|
# GitHub URL: https://github.com/nkomarn/Harbor/issues
|
||||||
|
|
||||||
values:
|
values:
|
||||||
timer: 2 # How often to run the clock task (used to detect sleep, AFK players, time actionbar, etc.)
|
timer: 2 # How often (in seconds) to run the clock task (used to detect sleep, AFK players, time actionbar, etc.)
|
||||||
percent: 100 # Percent of players that need to sleep to skip night (must be between 0 to 100)
|
percent: 100 # Percent of players that need to sleep to skip night (must be between 0 to 100)
|
||||||
interval: 60 # Time skip interval that is added when the night get accelerated.
|
interval: 60 # Time skip interval that is added when the night get accelerated.
|
||||||
|
|
||||||
@ -36,6 +36,10 @@ messages:
|
|||||||
actionbar: true # Enable/disable actionbar messages
|
actionbar: true # Enable/disable actionbar messages
|
||||||
sleeping: "&e[sleeping] out of [needed] players are sleeping ([more] more needed to skip)." # Shown when some players are in bed
|
sleeping: "&e[sleeping] out of [needed] players are sleeping ([more] more needed to skip)." # Shown when some players are in bed
|
||||||
everyone: "&eEveryone is sleeping. Sweet dreams!" # Shown when all players are in bed
|
everyone: "&eEveryone is sleeping. Sweet dreams!" # Shown when all players are in bed
|
||||||
|
bossbar:
|
||||||
|
bossbar: true
|
||||||
|
sleeping: "&f&l[sleeping] out of [needed] players are sleeping." # Shown when some players are in bed
|
||||||
|
left: "&f&lEveryone is sleeping. Sweet dreams!" # Shown when all players are in bed
|
||||||
miscellaneous:
|
miscellaneous:
|
||||||
prefix: "&8&l(&6&lHarbor&8&l)&r " # Prefix for Harbor command/miscellaneous messages
|
prefix: "&8&l(&6&lHarbor&8&l)&r " # Prefix for Harbor command/miscellaneous messages
|
||||||
permission: "&7Insufficient permissions." # Sent when player doesn't have permissions to run command
|
permission: "&7Insufficient permissions." # Sent when player doesn't have permissions to run command
|
||||||
|
@ -14,3 +14,9 @@ commands:
|
|||||||
sleeping:
|
sleeping:
|
||||||
description: "Display a list of the currently sleeping players."
|
description: "Display a list of the currently sleeping players."
|
||||||
usage: "/sleeping"
|
usage: "/sleeping"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
harbor.bypass:
|
||||||
|
default: false
|
||||||
|
harbor.admin:
|
||||||
|
default: op
|
Loading…
Reference in New Issue
Block a user