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…
	
	Add table
		Add a link
		
	
		Reference in a new issue