Refactoring and clean ups
This commit is contained in:
parent
916f44da47
commit
d922221589
20 changed files with 199 additions and 133 deletions
51
src/main/java/eu/m724/tweaks/DebugLogger.java
Normal file
51
src/main/java/eu/m724/tweaks/DebugLogger.java
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2024 Minecon724
|
||||||
|
* Tweaks724 is licensed under the GNU General Public License. See the LICENSE.md file
|
||||||
|
* in the project root for the full license text.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package eu.m724.tweaks;
|
||||||
|
|
||||||
|
import org.fusesource.jansi.Ansi;
|
||||||
|
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
public class DebugLogger {
|
||||||
|
static Logger logger;
|
||||||
|
|
||||||
|
public static void info(String message) {
|
||||||
|
log(Level.INFO, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warning(String message) {
|
||||||
|
log(Level.WARNING, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void severe(String message) {
|
||||||
|
log(Level.SEVERE, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void fine(String message) {
|
||||||
|
log(Level.FINE, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void log(Level level, String message) {
|
||||||
|
if (logger.getLevel().intValue() > level.intValue()) return;
|
||||||
|
|
||||||
|
var caller = Thread.currentThread().getStackTrace()[3].getClassName();
|
||||||
|
|
||||||
|
if (caller.startsWith("eu.m724.tweaks."))
|
||||||
|
caller = caller.substring(15);
|
||||||
|
|
||||||
|
message = "[" + caller + "] " + message;
|
||||||
|
|
||||||
|
if (level.intValue() < Level.INFO.intValue()) { // levels below info are never logged even if set for some reason
|
||||||
|
level = Level.INFO;
|
||||||
|
// colors text gray (cyan is close to gray)
|
||||||
|
message = Ansi.ansi().fg(Ansi.Color.CYAN).a(message).reset().toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.log(level, message);
|
||||||
|
}
|
||||||
|
}
|
|
@ -28,11 +28,15 @@ public class Language {
|
||||||
return INSTANCE.resourceBundle.getString(key);
|
return INSTANCE.resourceBundle.getString(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getString(String key, Object... format) {
|
||||||
|
return INSTANCE.resourceBundle.getString(key).formatted(format);
|
||||||
|
}
|
||||||
|
|
||||||
public static BaseComponent getComponent(String key, ChatColor color) {
|
public static BaseComponent getComponent(String key, ChatColor color) {
|
||||||
return new ComponentBuilder(getString(key)).color(color).build();
|
return new ComponentBuilder(getString(key)).color(color).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BaseComponent getComponent(String key, ChatColor color, Object... format) {
|
public static BaseComponent getComponent(String key, ChatColor color, Object... format) {
|
||||||
return new ComponentBuilder(getString(key).formatted(format)).color(color).build();
|
return new ComponentBuilder(getString(key, format)).color(color).build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,8 @@ import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
public record TweaksConfig(
|
public record TweaksConfig(
|
||||||
boolean metrics,
|
boolean metrics,
|
||||||
|
boolean debug,
|
||||||
|
String locale,
|
||||||
|
|
||||||
boolean worldborderExpand,
|
boolean worldborderExpand,
|
||||||
boolean worldborderHide,
|
boolean worldborderHide,
|
||||||
|
@ -20,7 +22,6 @@ public record TweaksConfig(
|
||||||
boolean brandShowPing,
|
boolean brandShowPing,
|
||||||
boolean brandShowMspt,
|
boolean brandShowMspt,
|
||||||
|
|
||||||
boolean doorEnabled,
|
|
||||||
boolean doorDoubleOpen,
|
boolean doorDoubleOpen,
|
||||||
boolean doorKnocking,
|
boolean doorKnocking,
|
||||||
|
|
||||||
|
@ -76,6 +77,8 @@ public record TweaksConfig(
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean metrics = config.getBoolean("metrics");
|
boolean metrics = config.getBoolean("metrics");
|
||||||
|
boolean debug = config.getBoolean("debug", false);
|
||||||
|
String locale = config.getString("locale", "US");
|
||||||
|
|
||||||
boolean worldborderExpand = config.getBoolean("worldborder.expand");
|
boolean worldborderExpand = config.getBoolean("worldborder.expand");
|
||||||
boolean worldborderHide = config.getBoolean("worldborder.hide");
|
boolean worldborderHide = config.getBoolean("worldborder.hide");
|
||||||
|
@ -87,7 +90,6 @@ public record TweaksConfig(
|
||||||
|
|
||||||
boolean doorDoubleOpen = config.getBoolean("doors.doubleOpen");
|
boolean doorDoubleOpen = config.getBoolean("doors.doubleOpen");
|
||||||
boolean doorKnocking = config.getBoolean("doors.knocking");
|
boolean doorKnocking = config.getBoolean("doors.knocking");
|
||||||
boolean doorEnabled = doorDoubleOpen || doorKnocking;
|
|
||||||
|
|
||||||
String motdSet = config.getString("motd.set");
|
String motdSet = config.getString("motd.set");
|
||||||
boolean motdEnabled = !(motdSet.equals("false") || motdSet.isBlank());
|
boolean motdEnabled = !(motdSet.equals("false") || motdSet.isBlank());
|
||||||
|
@ -120,10 +122,10 @@ public record TweaksConfig(
|
||||||
String redstoneListen = config.getString("retstone.listen");
|
String redstoneListen = config.getString("retstone.listen");
|
||||||
|
|
||||||
TweaksConfig.config = new TweaksConfig(
|
TweaksConfig.config = new TweaksConfig(
|
||||||
metrics,
|
debug, metrics, locale,
|
||||||
worldborderExpand, worldborderHide,
|
worldborderExpand, worldborderHide,
|
||||||
brandEnabled, brandText, brandShowPing, brandShowMspt,
|
brandEnabled, brandText, brandShowPing, brandShowMspt,
|
||||||
doorEnabled, doorDoubleOpen, doorKnocking,
|
doorDoubleOpen, doorKnocking,
|
||||||
motdEnabled, motdSet,
|
motdEnabled, motdSet,
|
||||||
chatEnabled, chatLocalEvents, chatDefaultName, chatRadius,
|
chatEnabled, chatLocalEvents, chatDefaultName, chatRadius,
|
||||||
compassEnabled, compassWidth, compassPrecision,
|
compassEnabled, compassWidth, compassPrecision,
|
||||||
|
|
|
@ -9,26 +9,23 @@ package eu.m724.tweaks;
|
||||||
import eu.m724.mstats.MStatsPlugin;
|
import eu.m724.mstats.MStatsPlugin;
|
||||||
import eu.m724.tweaks.alert.AlertManager;
|
import eu.m724.tweaks.alert.AlertManager;
|
||||||
import eu.m724.tweaks.auth.AuthManager;
|
import eu.m724.tweaks.auth.AuthManager;
|
||||||
import eu.m724.tweaks.chat.ChatCommands;
|
|
||||||
import eu.m724.tweaks.chat.ChatManager;
|
import eu.m724.tweaks.chat.ChatManager;
|
||||||
import eu.m724.tweaks.door.DoorManager;
|
import eu.m724.tweaks.door.DoorKnockListener;
|
||||||
|
import eu.m724.tweaks.door.DoorOpenListener;
|
||||||
import eu.m724.tweaks.full.FullListener;
|
import eu.m724.tweaks.full.FullListener;
|
||||||
import eu.m724.tweaks.hardcore.HardcoreManager;
|
import eu.m724.tweaks.hardcore.HardcoreManager;
|
||||||
import eu.m724.tweaks.motd.MotdManager;
|
import eu.m724.tweaks.motd.MotdManager;
|
||||||
import eu.m724.tweaks.ping.F3NameListener;
|
import eu.m724.tweaks.ping.F3NameListener;
|
||||||
import eu.m724.tweaks.ping.PingChecker;
|
import eu.m724.tweaks.ping.PingChecker;
|
||||||
import eu.m724.tweaks.ping.PingCommands;
|
|
||||||
import eu.m724.tweaks.pomodoro.PomodoroCommands;
|
|
||||||
import eu.m724.tweaks.pomodoro.PomodoroManager;
|
import eu.m724.tweaks.pomodoro.PomodoroManager;
|
||||||
import eu.m724.tweaks.redstone.RedstoneManager;
|
import eu.m724.tweaks.redstone.RedstoneManager;
|
||||||
import eu.m724.tweaks.sleep.SleepManager;
|
import eu.m724.tweaks.sleep.SleepManager;
|
||||||
import eu.m724.tweaks.updater.UpdaterCommands;
|
|
||||||
import eu.m724.tweaks.updater.UpdaterManager;
|
import eu.m724.tweaks.updater.UpdaterManager;
|
||||||
import eu.m724.tweaks.worldborder.WorldBorderManager;
|
import eu.m724.tweaks.worldborder.WorldBorderExpander;
|
||||||
|
import eu.m724.tweaks.worldborder.WorldBorderHider;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Objects;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
public class TweaksPlugin extends MStatsPlugin {
|
public class TweaksPlugin extends MStatsPlugin {
|
||||||
@Override
|
@Override
|
||||||
|
@ -43,84 +40,99 @@ public class TweaksPlugin extends MStatsPlugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
TweaksConfig config = TweaksConfig.load(this);
|
TweaksConfig config = TweaksConfig.load(this);
|
||||||
new Language(Locale.US); // TODO
|
|
||||||
|
|
||||||
// whether enabled is handled inside
|
getLogger().setLevel(config.debug() ? Level.FINEST : Level.INFO);
|
||||||
new WorldBorderManager().init(this);
|
DebugLogger.logger = getLogger();
|
||||||
|
DebugLogger.fine("Debug enabled. There may be performance issues.");
|
||||||
|
|
||||||
if (config.chatEnabled()) {
|
DebugLogger.fine("Enabling Language");
|
||||||
ChatManager chatManager = new ChatManager(this);
|
new Language(Locale.of(config.locale())); // TODO
|
||||||
chatManager.init();
|
DebugLogger.fine(Language.getString("languageNotice", Language.getString("language"), Language.getString("languageEnglish")));
|
||||||
|
|
||||||
ChatCommands chatCommands = new ChatCommands(chatManager);
|
/* start modules */
|
||||||
Objects.requireNonNull(getCommand("chat")).setExecutor(chatCommands);
|
|
||||||
Objects.requireNonNull(getCommand("chatmanage")).setExecutor(chatCommands);
|
if (config.worldborderHide()) {
|
||||||
|
DebugLogger.fine("Enabling Worldborder hide");
|
||||||
|
new WorldBorderHider().init(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.doorEnabled()) {
|
if (config.worldborderExpand()) {
|
||||||
new DoorManager().init(this);
|
DebugLogger.fine("Enabling Worldborder expand");
|
||||||
|
new WorldBorderExpander().init(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.chatEnabled()) {
|
||||||
|
DebugLogger.fine("Enabling Chat");
|
||||||
|
new ChatManager(this).init(getCommand("chat"), getCommand("chatmanage"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.doorKnocking()) {
|
||||||
|
DebugLogger.fine("Enabling Door knock");
|
||||||
|
getServer().getPluginManager().registerEvents(new DoorKnockListener(), this);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.doorDoubleOpen()) {
|
||||||
|
DebugLogger.fine("Enabling Door double open");
|
||||||
|
getServer().getPluginManager().registerEvents(new DoorOpenListener(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.brandEnabled()) {
|
if (config.brandEnabled()) {
|
||||||
|
DebugLogger.fine("Enabling Brand");
|
||||||
new F3NameListener(this).init();
|
new F3NameListener(this).init();
|
||||||
}
|
}
|
||||||
|
|
||||||
new PingChecker(this).init();
|
DebugLogger.fine("Enabling Ping");
|
||||||
Objects.requireNonNull(getCommand("ping")).setExecutor(new PingCommands());
|
new PingChecker(this).init(getCommand("ping"));
|
||||||
|
|
||||||
/*if (getServer().getPluginManager().getPlugin("voicechat") != null) {
|
|
||||||
new MusicPlayer(this).init();
|
|
||||||
} else {
|
|
||||||
getLogger().warning("To use voice extensions, install \"Simple Voice Chat\"");
|
|
||||||
}*/
|
|
||||||
|
|
||||||
if (config.motdEnabled()) {
|
if (config.motdEnabled()) {
|
||||||
try {
|
DebugLogger.fine("Enabling MOTD");
|
||||||
new MotdManager(this).init();
|
new MotdManager(this).init();
|
||||||
} catch (IOException e) {
|
|
||||||
getLogger().severe("Failed to initialize MOTD extension");
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.pomodoroEnabled()) {
|
if (config.pomodoroEnabled()) {
|
||||||
new PomodoroManager(this).init();
|
DebugLogger.fine("Enabling Pomodoro");
|
||||||
getCommand("pomodoro").setExecutor(new PomodoroCommands());
|
new PomodoroManager(this).init(getCommand("pomodoro"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.updaterEnabled()) {
|
if (config.updaterEnabled()) {
|
||||||
try {
|
DebugLogger.fine("Enabling Updater");
|
||||||
new UpdaterManager(this).init();
|
new UpdaterManager(this).init(getCommand("updates"));
|
||||||
getCommand("updates").setExecutor(new UpdaterCommands());
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.hardcoreEnabled()) {
|
if (config.hardcoreEnabled()) {
|
||||||
|
DebugLogger.fine("Enabling Hardcore");
|
||||||
new HardcoreManager().init(this);
|
new HardcoreManager().init(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.sleepEnabled()) {
|
if (config.sleepEnabled()) {
|
||||||
|
DebugLogger.fine("Enabling Sleep");
|
||||||
new SleepManager().init(this);
|
new SleepManager().init(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.authEnabled()) {
|
if (config.authEnabled()) {
|
||||||
|
DebugLogger.fine("Enabling Auth");
|
||||||
new AuthManager(this).init(getCommand("tauth"));
|
new AuthManager(this).init(getCommand("tauth"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DebugLogger.fine("Enabling Alert");
|
||||||
new AlertManager(this).init(getCommand("emergencyalert"));
|
new AlertManager(this).init(getCommand("emergencyalert"));
|
||||||
|
|
||||||
this.getServer().getPluginManager().registerEvents(new FullListener(), this);
|
DebugLogger.fine("Enabling Full");
|
||||||
|
getServer().getPluginManager().registerEvents(new FullListener(), this);
|
||||||
|
|
||||||
if (config.redstoneEnabled()) {
|
if (config.redstoneEnabled()) {
|
||||||
|
DebugLogger.fine("Enabling Redstone");
|
||||||
new RedstoneManager(this).init(getCommand("retstone"));
|
new RedstoneManager(this).init(getCommand("retstone"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.metrics())
|
/* end modules */
|
||||||
mStats(1);
|
|
||||||
|
|
||||||
getLogger().info("Took %.3f milliseconds".formatted((System.nanoTime() - start) / 1000000.0));
|
if (config.metrics()) {
|
||||||
|
DebugLogger.fine("Enabling Metrics");
|
||||||
|
mStats(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
DebugLogger.fine("Took %.3f milliseconds".formatted((System.nanoTime() - start) / 1000000.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasResource(String resource) {
|
public boolean hasResource(String resource) {
|
||||||
|
|
|
@ -11,6 +11,7 @@ import net.md_5.bungee.api.ChatColor;
|
||||||
import net.md_5.bungee.api.chat.ComponentBuilder;
|
import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||||
import org.bukkit.NamespacedKey;
|
import org.bukkit.NamespacedKey;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.command.PluginCommand;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.persistence.PersistentDataType;
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
@ -18,6 +19,7 @@ import org.bukkit.plugin.Plugin;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
public class ChatManager {
|
public class ChatManager {
|
||||||
private final Plugin plugin;
|
private final Plugin plugin;
|
||||||
|
@ -33,13 +35,17 @@ public class ChatManager {
|
||||||
this.defaultRoom = TweaksConfig.getConfig().chatDefaultName();
|
this.defaultRoom = TweaksConfig.getConfig().chatDefaultName();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void init() {
|
public void init(PluginCommand chatCommand, PluginCommand chatManageCommand) {
|
||||||
if (plugin.getServer().isEnforcingSecureProfiles()) {
|
if (plugin.getServer().isEnforcingSecureProfiles()) {
|
||||||
throw new RuntimeException("Please disable enforce-secure-profile in server.properties to use chatrooms");
|
throw new RuntimeException("Please disable enforce-secure-profile in server.properties to use chatrooms");
|
||||||
}
|
}
|
||||||
|
|
||||||
getById(defaultRoom);
|
getById(defaultRoom);
|
||||||
plugin.getServer().getPluginManager().registerEvents(new ChatListener(this), plugin);
|
plugin.getServer().getPluginManager().registerEvents(new ChatListener(this), plugin);
|
||||||
|
|
||||||
|
var chatCommands = new ChatCommands(this);
|
||||||
|
chatCommand.setExecutor(chatCommands);
|
||||||
|
chatManageCommand.setExecutor(chatCommands);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2024 Minecon724
|
|
||||||
* Tweaks724 is licensed under the GNU General Public License. See the LICENSE.md file
|
|
||||||
* in the project root for the full license text.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package eu.m724.tweaks.door;
|
|
||||||
|
|
||||||
import eu.m724.tweaks.TweaksConfig;
|
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
|
|
||||||
public class DoorManager {
|
|
||||||
|
|
||||||
public void init(Plugin plugin) {
|
|
||||||
if (TweaksConfig.getConfig().doorKnocking()) {
|
|
||||||
plugin.getServer().getPluginManager().registerEvents(new DoorKnockListener(), plugin);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (TweaksConfig.getConfig().doorDoubleOpen()) {
|
|
||||||
plugin.getServer().getPluginManager().registerEvents(new DoorOpenListener(), plugin);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -37,7 +37,7 @@ public class MotdManager {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void init() throws IOException {
|
public void init() {
|
||||||
// TODO adding more MOTD features would require checking whether to enable set
|
// TODO adding more MOTD features would require checking whether to enable set
|
||||||
|
|
||||||
String motdSetName = TweaksConfig.getConfig().motdSet();
|
String motdSetName = TweaksConfig.getConfig().motdSet();
|
||||||
|
@ -55,7 +55,13 @@ public class MotdManager {
|
||||||
throw new RuntimeException("MOTD set \"%s\" doesn't exist".formatted(motdSetName));
|
throw new RuntimeException("MOTD set \"%s\" doesn't exist".formatted(motdSetName));
|
||||||
}
|
}
|
||||||
|
|
||||||
String fileContent = Files.readString(motdSetsFile.toPath());
|
String fileContent = null;
|
||||||
|
try {
|
||||||
|
fileContent = Files.readString(motdSetsFile.toPath());
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException("Reading motd set", e);
|
||||||
|
}
|
||||||
|
|
||||||
// MOTDs are split with an empty line
|
// MOTDs are split with an empty line
|
||||||
motds = Arrays.stream(fileContent.split("\n\n"))
|
motds = Arrays.stream(fileContent.split("\n\n"))
|
||||||
.map(s -> {
|
.map(s -> {
|
||||||
|
|
|
@ -6,8 +6,11 @@
|
||||||
|
|
||||||
package eu.m724.tweaks.ping;
|
package eu.m724.tweaks.ping;
|
||||||
|
|
||||||
|
import org.bukkit.command.PluginCommand;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
public class PingChecker {
|
public class PingChecker {
|
||||||
private final Plugin plugin;
|
private final Plugin plugin;
|
||||||
|
|
||||||
|
@ -15,8 +18,10 @@ public class PingChecker {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void init() {
|
public void init(PluginCommand pingCommand) {
|
||||||
new KeepAlivePingChecker(plugin).start();
|
new KeepAlivePingChecker(plugin).start();
|
||||||
new MsptChecker().init(plugin); // TODO should this be here
|
new MsptChecker().init(plugin); // TODO should this be here
|
||||||
|
|
||||||
|
pingCommand.setExecutor(new PingCommands());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
package eu.m724.tweaks.pomodoro;
|
package eu.m724.tweaks.pomodoro;
|
||||||
|
|
||||||
|
import org.bukkit.command.PluginCommand;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
public class PomodoroManager {
|
public class PomodoroManager {
|
||||||
|
@ -15,8 +16,10 @@ public class PomodoroManager {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void init() {
|
public void init(PluginCommand pomodoroCommand) {
|
||||||
plugin.getServer().getPluginManager().registerEvents(new PomodoroListener(), plugin);
|
plugin.getServer().getPluginManager().registerEvents(new PomodoroListener(), plugin);
|
||||||
new PomodoroRunnable(plugin).runTaskTimerAsynchronously(plugin, 0, 20L);
|
new PomodoroRunnable(plugin).runTaskTimerAsynchronously(plugin, 0, 20L);
|
||||||
|
|
||||||
|
pomodoroCommand.setExecutor(new PomodoroCommands());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,8 @@ public class PomodoroRunnable extends BukkitRunnable {
|
||||||
player.playSound(player.getLocation(), Sound.BLOCK_ANVIL_FALL, 1.0f, 0.5f);
|
player.playSound(player.getLocation(), Sound.BLOCK_ANVIL_FALL, 1.0f, 0.5f);
|
||||||
if (remaining < -60 && force) {
|
if (remaining < -60 && force) {
|
||||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> {
|
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> {
|
||||||
player.kickPlayer(Language.getString("pomodoroEndKick"));
|
pomodoro.next();
|
||||||
|
player.kickPlayer(Language.getString("pomodoroEndKick") + "\n" + Pomodoros.formatTimer(pomodoro, pomodoro.getRemainingSeconds(now)));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ public class Pomodoros {
|
||||||
return timers.remove(player.getUniqueId()) != null;
|
return timers.remove(player.getUniqueId()) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BaseComponent[] formatTimer(PlayerPomodoro pomodoro, long remaining) {
|
static BaseComponent formatTimer(PlayerPomodoro pomodoro, long remaining) {
|
||||||
ComponentBuilder builder = new ComponentBuilder();
|
ComponentBuilder builder = new ComponentBuilder();
|
||||||
|
|
||||||
if (pomodoro.isBreak()) {
|
if (pomodoro.isBreak()) {
|
||||||
|
@ -66,6 +66,6 @@ public class Pomodoros {
|
||||||
builder.append(" o").color(color);
|
builder.append(" o").color(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
return builder.create();
|
return builder.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
package eu.m724.tweaks.redstone;
|
package eu.m724.tweaks.redstone;
|
||||||
|
|
||||||
|
import eu.m724.tweaks.DebugLogger;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.Action;
|
import org.bukkit.event.block.Action;
|
||||||
|
@ -22,46 +23,46 @@ public class RedstoneListener implements Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlace(BlockPlaceEvent event) {
|
public void onBlockPlace(BlockPlaceEvent event) {
|
||||||
if (!redstoneRepeaters.isRepeater(event.getItemInHand())) return;
|
if (!redstoneRepeaters.isRepeater(event.getItemInHand())) return;
|
||||||
|
|
||||||
var block = event.getBlockPlaced();
|
var block = event.getBlockPlaced();
|
||||||
var id = redstoneRepeaters.onPlace(block);
|
var id = redstoneRepeaters.onPlace(block);
|
||||||
|
|
||||||
System.out.println("repeate place " + id);
|
DebugLogger.fine("Repeater placed: " + id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onBreak(BlockBreakEvent event) {
|
public void onBlockBreak(BlockBreakEvent event) {
|
||||||
var id = redstoneRepeaters.getId(event.getBlock());
|
var id = redstoneRepeaters.getId(event.getBlock());
|
||||||
if (id == Integer.MIN_VALUE) return;
|
if (id == Integer.MIN_VALUE) return;
|
||||||
|
|
||||||
redstoneRepeaters.onBreak(id);
|
redstoneRepeaters.onBreak(id);
|
||||||
|
|
||||||
System.out.println("repeate brek " + id);
|
DebugLogger.fine("Repeater broken: " + id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void a(PlayerInteractEvent event) {
|
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||||
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
||||||
if (event.getClickedBlock() == null) return;
|
if (event.getClickedBlock() == null) return;
|
||||||
|
|
||||||
var id = redstoneRepeaters.getId(event.getClickedBlock());
|
var id = redstoneRepeaters.getId(event.getClickedBlock());
|
||||||
if (id == Integer.MIN_VALUE) return;
|
if (id == Integer.MIN_VALUE) return;
|
||||||
|
|
||||||
|
// TODO find a less lame way of showing ID
|
||||||
event.getPlayer().sendMessage("Repeater ID: " + id);
|
event.getPlayer().sendMessage("Repeater ID: " + id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void b(BlockRedstoneEvent event) {
|
public void onBlockRedstone(BlockRedstoneEvent event) {
|
||||||
var block = event.getBlock();
|
var block = event.getBlock();
|
||||||
System.out.println(block);
|
|
||||||
|
|
||||||
var id = redstoneRepeaters.getId(block);
|
var id = redstoneRepeaters.getId(block);
|
||||||
if (id == Integer.MIN_VALUE) return;
|
if (id == Integer.MIN_VALUE) return;
|
||||||
|
|
||||||
System.out.println("yes it isi");
|
|
||||||
|
|
||||||
event.setNewCurrent(redstoneRepeaters.getOutboundPower(id));
|
event.setNewCurrent(redstoneRepeaters.getOutboundPower(id));
|
||||||
|
|
||||||
|
DebugLogger.fine("Repeater redstone event: " + id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
package eu.m724.tweaks.redstone;
|
package eu.m724.tweaks.redstone;
|
||||||
|
|
||||||
|
import eu.m724.tweaks.DebugLogger;
|
||||||
import eu.m724.tweaks.TweaksConfig;
|
import eu.m724.tweaks.TweaksConfig;
|
||||||
import org.bukkit.command.PluginCommand;
|
import org.bukkit.command.PluginCommand;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
@ -63,7 +64,7 @@ public class RedstoneManager {
|
||||||
try {
|
try {
|
||||||
socket.receive(packet);
|
socket.receive(packet);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
System.err.println("Error reading packet: " + e.getMessage());
|
DebugLogger.severe("Error reading packet: " + e.getMessage());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +78,7 @@ public class RedstoneManager {
|
||||||
var newPacket = new DatagramPacket(new byte[1], 1, packet.getSocketAddress());
|
var newPacket = new DatagramPacket(new byte[1], 1, packet.getSocketAddress());
|
||||||
|
|
||||||
enqueueRetrieve(repeaterId, value -> {
|
enqueueRetrieve(repeaterId, value -> {
|
||||||
System.out.println("retieved state " + value);
|
DebugLogger.fine("Retrieved for " + repeaterId + " power " + value);
|
||||||
newPacket.setData(new byte[] { (byte) Math.max(value, 0) });
|
newPacket.setData(new byte[] { (byte) Math.max(value, 0) });
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -92,12 +93,12 @@ public class RedstoneManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void enqueueUpdate(int repeaterId, byte power) {
|
private void enqueueUpdate(int repeaterId, byte power) {
|
||||||
System.out.println("Update enqueud " + repeaterId + " " + power);
|
DebugLogger.fine("Update enqueued " + repeaterId + " " + power);
|
||||||
runnable.enqueueUpdate(repeaterId, power);
|
runnable.enqueueUpdate(repeaterId, power);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void enqueueRetrieve(int repeaterId, Consumer<Byte> consumer) {
|
private void enqueueRetrieve(int repeaterId, Consumer<Byte> consumer) {
|
||||||
System.out.println("retieve enqueud " + repeaterId);
|
DebugLogger.fine("Retrieve enqueued " + repeaterId);
|
||||||
runnable.enqueueRetrieve(repeaterId, consumer);
|
runnable.enqueueRetrieve(repeaterId, consumer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,6 @@ public class PluginScanner {
|
||||||
Set<SpigotResource> spigotResources = new HashSet<>();
|
Set<SpigotResource> spigotResources = new HashSet<>();
|
||||||
|
|
||||||
for (Plugin plugin : plugins) {
|
for (Plugin plugin : plugins) {
|
||||||
// System.out.println("Found " + plugin.getName());
|
|
||||||
String pluginName = plugin.getName();
|
String pluginName = plugin.getName();
|
||||||
|
|
||||||
if (!configuration.isSet(pluginName)) {
|
if (!configuration.isSet(pluginName)) {
|
||||||
|
|
|
@ -70,7 +70,7 @@ public class UpdateChecker extends BukkitRunnable {
|
||||||
private void alert() {
|
private void alert() {
|
||||||
int n = availableUpdates.size();
|
int n = availableUpdates.size();
|
||||||
if (n == 0) return;
|
if (n == 0) return;
|
||||||
logger.info(Language.getString("updateAvailableNotice").formatted(n));
|
logger.info(Language.getString("updateAvailableNotice", n));
|
||||||
|
|
||||||
availableUpdates.stream()
|
availableUpdates.stream()
|
||||||
.map(u -> "- %s (%s -> %s)".formatted(u.resource().name(), u.running().label(), u.latest().label()))
|
.map(u -> "- %s (%s -> %s)".formatted(u.resource().name(), u.running().label(), u.latest().label()))
|
||||||
|
|
|
@ -35,7 +35,7 @@ public class UpdaterCommands implements CommandExecutor {
|
||||||
|
|
||||||
if (n > 0) {
|
if (n > 0) {
|
||||||
sender.spigot().sendMessage(
|
sender.spigot().sendMessage(
|
||||||
new ComponentBuilder(Language.getString("updateAvailableNotice").formatted(n)).color(ChatColor.GRAY).build()
|
Language.getComponent("updateAvailableNotice", ChatColor.GRAY, n)
|
||||||
);
|
);
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
@ -45,7 +45,7 @@ public class UpdaterCommands implements CommandExecutor {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
sender.sendMessage(Language.getString("updatesNoUpdates").formatted(lastChecked));
|
sender.spigot().sendMessage(Language.getComponent("updatesNoUpdates", ChatColor.GREEN, lastChecked));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -71,7 +71,7 @@ public class UpdaterCommands implements CommandExecutor {
|
||||||
.event(
|
.event(
|
||||||
new HoverEvent(
|
new HoverEvent(
|
||||||
HoverEvent.Action.SHOW_TEXT,
|
HoverEvent.Action.SHOW_TEXT,
|
||||||
new Text(Language.getString("updatesClickToOpen").formatted(v.latest().description().title()))
|
new Text(Language.getString("updatesClickToOpen", v.latest().description().title()))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.build();
|
.build();
|
||||||
|
|
|
@ -6,9 +6,11 @@
|
||||||
|
|
||||||
package eu.m724.tweaks.updater;
|
package eu.m724.tweaks.updater;
|
||||||
|
|
||||||
|
import eu.m724.tweaks.DebugLogger;
|
||||||
import eu.m724.tweaks.updater.cache.ResourceVersion;
|
import eu.m724.tweaks.updater.cache.ResourceVersion;
|
||||||
import eu.m724.tweaks.updater.cache.SpigotResource;
|
import eu.m724.tweaks.updater.cache.SpigotResource;
|
||||||
import eu.m724.tweaks.updater.cache.VersionedResource;
|
import eu.m724.tweaks.updater.cache.VersionedResource;
|
||||||
|
import org.bukkit.command.PluginCommand;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
@ -29,9 +31,14 @@ public class UpdaterManager {
|
||||||
cacheFile = new File(plugin.getDataFolder(), "cache/updater");
|
cacheFile = new File(plugin.getDataFolder(), "cache/updater");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void init() throws IOException {
|
public void init(PluginCommand updatesCommand){
|
||||||
// scan installed plugins
|
// scan installed plugins
|
||||||
Set<SpigotResource> resources = new PluginScanner(plugin).load();
|
Set<SpigotResource> resources = null;
|
||||||
|
try {
|
||||||
|
resources = new PluginScanner(plugin).load();
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException("Loading plugins", e);
|
||||||
|
}
|
||||||
|
|
||||||
cacheFile.getParentFile().mkdirs(); // TODO move this somewhere else
|
cacheFile.getParentFile().mkdirs(); // TODO move this somewhere else
|
||||||
|
|
||||||
|
@ -41,6 +48,9 @@ public class UpdaterManager {
|
||||||
installedVersions = VersionCheckCache.loadAll(inputStream);
|
installedVersions = VersionCheckCache.loadAll(inputStream);
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
installedVersions = new HashSet<>();
|
installedVersions = new HashSet<>();
|
||||||
|
} catch (IOException e) {
|
||||||
|
DebugLogger.warning("Error loading installed version cache, starting fresh. " + e.getMessage());
|
||||||
|
installedVersions = new HashSet<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
final Set<ResourceVersion> ivf = installedVersions;
|
final Set<ResourceVersion> ivf = installedVersions;
|
||||||
|
@ -52,5 +62,7 @@ public class UpdaterManager {
|
||||||
|
|
||||||
new UpdateChecker(plugin, versionedResources)
|
new UpdateChecker(plugin, versionedResources)
|
||||||
.runTaskTimerAsynchronously(plugin, 600, 12 * 3600 * 20);
|
.runTaskTimerAsynchronously(plugin, 600, 12 * 3600 * 20);
|
||||||
|
|
||||||
|
updatesCommand.setExecutor(new UpdaterCommands());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,8 +11,18 @@ import org.bukkit.craftbukkit.v1_21_R1.CraftWorld;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.world.WorldLoadEvent;
|
import org.bukkit.event.world.WorldLoadEvent;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
|
public class WorldBorderExpander implements Listener {
|
||||||
|
public void init(Plugin plugin) {
|
||||||
|
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||||
|
|
||||||
|
// because the plugin loads "post world"
|
||||||
|
plugin.getServer().getWorlds().forEach(w -> {
|
||||||
|
onWorldLoad(new WorldLoadEvent(w));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public class WorldBorderExpanderListener implements Listener {
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onWorldLoad(WorldLoadEvent event) {
|
public void onWorldLoad(WorldLoadEvent event) {
|
||||||
ServerLevel level = ((CraftWorld) event.getWorld()).getHandle();
|
ServerLevel level = ((CraftWorld) event.getWorld()).getHandle();
|
|
@ -1,29 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2024 Minecon724
|
|
||||||
* Tweaks724 is licensed under the GNU General Public License. See the LICENSE.md file
|
|
||||||
* in the project root for the full license text.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package eu.m724.tweaks.worldborder;
|
|
||||||
|
|
||||||
import eu.m724.tweaks.TweaksConfig;
|
|
||||||
import org.bukkit.event.world.WorldLoadEvent;
|
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
|
|
||||||
public class WorldBorderManager {
|
|
||||||
public void init(Plugin plugin) {
|
|
||||||
if (TweaksConfig.getConfig().worldborderExpand()) {
|
|
||||||
WorldBorderExpanderListener wbrl = new WorldBorderExpanderListener();
|
|
||||||
plugin.getServer().getPluginManager().registerEvents(wbrl, plugin);
|
|
||||||
|
|
||||||
// because the plugin loads "post world"
|
|
||||||
plugin.getServer().getWorlds().forEach(w -> {
|
|
||||||
wbrl.onWorldLoad(new WorldLoadEvent(w));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (TweaksConfig.getConfig().worldborderHide()) {
|
|
||||||
new WorldBorderHider().init(plugin);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -4,8 +4,14 @@
|
||||||
# in the project root for the full license text.
|
# in the project root for the full license text.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
languageNotice = Language: %s (%s)
|
||||||
|
# Language name in your language
|
||||||
|
language = English
|
||||||
|
# Language name in English
|
||||||
|
languageEnglish = English
|
||||||
|
|
||||||
updateAvailableNotice = Available updates (%d):
|
updateAvailableNotice = Available updates (%d):
|
||||||
pomodoroEndKick = Break time! Come back in 5 minutes.
|
pomodoroEndKick = Take a break!
|
||||||
|
|
||||||
# Used in /updates
|
# Used in /updates
|
||||||
updatesNotChecked = Not checked yet
|
updatesNotChecked = Not checked yet
|
||||||
|
|
Loading…
Reference in a new issue