diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..dd8cdcc --- /dev/null +++ b/.classpath @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/.project b/.project new file mode 100644 index 0000000..133f5c7 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + tenkumaLib + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..2784463 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/src/gd/rf/adrianvictor/lib/Color.java b/src/gd/rf/adrianvictor/lib/Color.java index 0ec68d2..9c351b1 100644 --- a/src/gd/rf/adrianvictor/lib/Color.java +++ b/src/gd/rf/adrianvictor/lib/Color.java @@ -1,13 +1,31 @@ package gd.rf.adrianvictor.lib; +import org.bukkit.ChatColor; + public class Color { - public String formatColors(String message) { - return message.replaceAll("&([0-9a-fk-or])", "§$1"); + public static String formatColors(String message) { + return message.replaceAll("&", "§"); } - public Object[] ignoreColors(String message) { + public static Object[] ignoreColors(String message) { String parsed = message.replaceAll("&([0-9a-fk-or])", ""); - Boolean changed = parsed == message; + Boolean changed = parsed.equals(message); return new Object[] {parsed, changed}; } -} \ No newline at end of file + + public static String rainbow(String message) { + ChatColor[] rainbowColors = { ChatColor.RED, ChatColor.GOLD, ChatColor.YELLOW, ChatColor.GREEN, ChatColor.AQUA, ChatColor.BLUE, ChatColor.LIGHT_PURPLE }; + int colorIndex = 0; + String coloredMessage = ""; + + for (char c : message.toCharArray()) { + ChatColor currentColor = rainbowColors[colorIndex]; + coloredMessage += currentColor + String.valueOf(c); + colorIndex++; + if (colorIndex >= rainbowColors.length) { + colorIndex = 0; + } + } + return coloredMessage; + } +} diff --git a/src/gd/rf/adrianvictor/lib/Configuration.java b/src/gd/rf/adrianvictor/lib/ConfigurationEx.java similarity index 64% rename from src/gd/rf/adrianvictor/lib/Configuration.java rename to src/gd/rf/adrianvictor/lib/ConfigurationEx.java index 7943e93..61b85d2 100644 --- a/src/gd/rf/adrianvictor/lib/Configuration.java +++ b/src/gd/rf/adrianvictor/lib/ConfigurationEx.java @@ -11,16 +11,17 @@ import java.nio.file.Files; /** * Utility class for managing plugin configuration files. *

- * This class extends {@link Configuration} to provide custom methods for loading, saving, and managing + * This class extends {@link ConfigurationEx} to provide custom methods for loading, saving, and managing * configuration files. It automatically handles the creation of parent directories and copies default configuration * files from the plugin's resources if they do not exist. *

* Note: This class allows for flexible management of multiple configuration files, specified by their file name. */ -public class Configuration extends Configuration { +public class ConfigurationEx extends Configuration { private final File configFile; - private final String pluginName; + private Log logger; + JavaPlugin plugin; /** * Constructs a new instance of {@code ConfigUtil}. @@ -28,10 +29,11 @@ public class Configuration extends Configuration { * @param plugin the plugin instance using this configuration utility * @param fileName the name of the configuration file to manage (e.g., "config.yml", "settings.yml") */ - public Configuration(JavaPlugin plugin, String fileName) { - super(new File(plugin.getDataFolder(), fileName)); + public ConfigurationEx(JavaPlugin _plugin, String fileName, Log _logger) { + super(new File(_plugin.getDataFolder(), fileName)); + plugin = _plugin; + logger = _logger; this.configFile = new File(plugin.getDataFolder(), fileName); - this.pluginName = plugin.getDescription().getName(); } /** @@ -54,7 +56,7 @@ public class Configuration extends Configuration { try { super.load(); } catch (Exception e) { - Logger.severe(String.format("[%s] Failed to load config '%s': %s", pluginName, configFile.getName(), e.getMessage())); + logger.severe(String.format("Failed to load config '%s': %s", configFile.getName(), e.getMessage())); } } @@ -67,7 +69,7 @@ public class Configuration extends Configuration { try { Files.createDirectories(configFile.getParentFile().toPath()); } catch (IOException e) { - Logger.severe(String.format("[%s] Failed to generate default config directory: %s", pluginName, e.getMessage())); + logger.severe(String.format("Failed to generate default config directory: %s", e.getMessage())); } } @@ -80,19 +82,23 @@ public class Configuration extends Configuration { * Logs an error if the default configuration file cannot be found or copied. */ private void copyDefaultConfig() { - // Adjust the path to ensure it's correct for your JAR structure - String resourcePath = "/" + configFile.getName(); + // Load the config from the JAR directly (it is located at the root level) + String resourcePath = "/" + configFile.getName(); // Root path of JAR - try (InputStream input = getClass().getResourceAsStream(resourcePath)) { + try (InputStream input = plugin.getClass().getResourceAsStream(resourcePath)) { if (input == null) { - Logger.severe(String.format("[%s] Default config '%s' wasn't found.", pluginName, configFile.getName())); + logger.severe(String.format("Default config '%s' wasn't found in the JAR.", configFile.getName())); return; } Files.copy(input, configFile.toPath()); - Logger.info(String.format("[%s] Default config '%s' generated successfully.", pluginName, configFile.getName())); + if (Files.exists(configFile.toPath())) { + logger.info(String.format("Default config '%s' generated successfully.", configFile.getName())); + } else { + logger.warning("We tried to generate the default config file, but it was not found even after the creation. Maybe your permissions are broken?"); + } } catch (IOException e) { - Logger.severe(String.format("[%s] Failed to generate default config '%s': %s", pluginName, configFile.getName(), e.getMessage())); + logger.severe(String.format("Failed to generate default config '%s': %s", configFile.getName(), e.getMessage())); } } @@ -104,9 +110,9 @@ public class Configuration extends Configuration { public void loadConfig() { try { this.load(); - Logger.info(String.format("[%s] Config '%s' loaded successfully.", pluginName, configFile.getName())); + logger.info(String.format("Config '%s' loaded successfully.", configFile.getName())); } catch (Exception e) { - Logger.severe(String.format("[%s] Failed to load config '%s': %s", pluginName, configFile.getName(), e.getMessage())); + logger.severe(String.format("Failed to load config '%s': %s", configFile.getName(), e.getMessage())); } } @@ -118,9 +124,9 @@ public class Configuration extends Configuration { public void saveConfig() { try { this.save(); - Logger.info(String.format("[%s] Config '%s' saved successfully.", pluginName, configFile.getName())); + logger.info(String.format("Config '%s' saved successfully.", configFile.getName())); } catch (Exception e) { - Logger.severe(String.format("[%s] Failed to save config '%s': %s", pluginName, configFile.getName(), e.getMessage())); + logger.severe(String.format("Failed to save config '%s': %s", configFile.getName(), e.getMessage())); } } diff --git a/src/gd/rf/adrianvictor/lib/Log.java b/src/gd/rf/adrianvictor/lib/Log.java index f04ea93..e276349 100644 --- a/src/gd/rf/adrianvictor/lib/Log.java +++ b/src/gd/rf/adrianvictor/lib/Log.java @@ -1,28 +1,39 @@ package gd.rf.adrianvictor.lib; import static org.bukkit.Bukkit.getServer; +import org.bukkit.plugin.PluginDescriptionFile; +import org.bukkit.plugin.java.JavaPlugin; + public class Log { - public static void info(String message) { - getServer().getLogger().info(message); + JavaPlugin plugin; + PluginDescriptionFile pdf; + + public Log(JavaPlugin _plugin) { + plugin = _plugin; + pdf = plugin.getDescription(); } - public static void infoc(String message) { - getServer().getLogger().info(message); + public void info(String message) { + getServer().getLogger().info("[" + pdf.getName() + "] " + message); } - public static void warning(String message) { - getServer().getLogger().warning(message); + public void infoc(String message) { + getServer().getLogger().info("[" + pdf.getName() + "] " + Color.formatColors(message)); } - public static void warningc(String message) { - getServer().getLogger().warning(message); + public void warning(String message) { + getServer().getLogger().warning("[" + pdf.getName() + "] " + message); } - public static void severe(String message) { - getServer().getLogger().severe(message); + public void warningc(String message) { + getServer().getLogger().warning("[" + pdf.getName() + "] " + Color.formatColors(message)); } - public static void severec(String message) { - getServer().getLogger().severe(message); + public void severe(String message) { + getServer().getLogger().severe("[" + pdf.getName() + "] " + message); + } + + public void severec(String message) { + getServer().getLogger().severe("[" + pdf.getName() + "] " + Color.formatColors(message)); } } \ No newline at end of file diff --git a/src/gd/rf/adrianvictor/lib/Main.java b/src/gd/rf/adrianvictor/lib/Main.java index c31100e..b5d59f0 100644 --- a/src/gd/rf/adrianvictor/lib/Main.java +++ b/src/gd/rf/adrianvictor/lib/Main.java @@ -2,7 +2,17 @@ package gd.rf.adrianvictor.lib; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin { - public void onLoad() { - Log.info(this + " is loading."); - } + + Log logger; + + @Override + public void onDisable() { + logger.info("is being disabled."); + } + + @Override + public void onEnable() { + logger = new Log(this); + logger.info("is loading."); + } } \ No newline at end of file diff --git a/src/gd/rf/adrianvictor/lib/PlayerEx.java b/src/gd/rf/adrianvictor/lib/PlayerEx.java new file mode 100644 index 0000000..d5388df --- /dev/null +++ b/src/gd/rf/adrianvictor/lib/PlayerEx.java @@ -0,0 +1,8 @@ +package gd.rf.adrianvictor.lib; +import org.bukkit.entity.Player; + +public class PlayerEx { + public static void strikeLightning(Player player) { + player.getWorld().strikeLightning(player.getLocation()); + } +} diff --git a/src/gd/rf/adrianvictor/lib/Text.java b/src/gd/rf/adrianvictor/lib/Text.java new file mode 100644 index 0000000..82c2f0b --- /dev/null +++ b/src/gd/rf/adrianvictor/lib/Text.java @@ -0,0 +1,20 @@ +package gd.rf.adrianvictor.lib; + +import java.util.Random; + +import org.bukkit.ChatColor; + +public class Text { + public static String generateRandomString(int length) { + String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + Random random = new Random(); + StringBuilder randomString = new StringBuilder(length); + + for (int i = 0; i < length; i++) { + int randomIndex = random.nextInt(characters.length()); + randomString.append(characters.charAt(randomIndex)); + } + + return randomString.toString(); + } +}