aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2024-06-29 23:45:42 -0400
committersowgro <tpoke.ferrari@gmail.com>2024-06-29 23:45:42 -0400
commit4a48e1a3a32f9a3b0b72be897377443c65ea55e8 (patch)
treeed7dbeade650f29c0061669971dac49b30385135 /src/main/java
parentef13a2cc5d579c96bd1461c678502cf44a8989ae (diff)
downloadTumble-4a48e1a3a32f9a3b0b72be897377443c65ea55e8.tar.gz
Tumble-4a48e1a3a32f9a3b0b72be897377443c65ea55e8.tar.bz2
Tumble-4a48e1a3a32f9a3b0b72be897377443c65ea55e8.zip
Make file writing actually work, reorganize managers
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/Main.java9
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/Remove.java2
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java93
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java10
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/config/CustomConfig.java56
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java30
6 files changed, 110 insertions, 90 deletions
diff --git a/src/main/java/com/MylesAndMore/Tumble/Main.java b/src/main/java/com/MylesAndMore/Tumble/Main.java
index 6e2123c..eff7a10 100644
--- a/src/main/java/com/MylesAndMore/Tumble/Main.java
+++ b/src/main/java/com/MylesAndMore/Tumble/Main.java
@@ -18,15 +18,14 @@ public class Main extends JavaPlugin{
@Override
public void onEnable() {
plugin = this;
- ArenaManager.loadConfig();
- ConfigManager.loadConfig();
- LanguageManager.loadConfig();
+
+ LanguageManager.init();
+ ArenaManager.init();
+ ConfigManager.init();
Objects.requireNonNull(this.getCommand("tumble")).setExecutor(new Tumble());
new Metrics(this, 16940);
- this.saveDefaultConfig(); // Saves the default config file (packaged in the JAR) if we haven't already
-
Bukkit.getServer().getLogger().info("[Tumble] Tumble successfully enabled!");
}
} \ No newline at end of file
diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/Remove.java b/src/main/java/com/MylesAndMore/Tumble/commands/Remove.java
index 1d28993..32ee232 100644
--- a/src/main/java/com/MylesAndMore/Tumble/commands/Remove.java
+++ b/src/main/java/com/MylesAndMore/Tumble/commands/Remove.java
@@ -39,7 +39,7 @@ public class Remove implements SubCommand, CommandExecutor, TabCompleter {
ArenaManager.arenas.remove(arenaName);
ArenaManager.WriteConfig();
- sender.sendMessage(LanguageManager.fromKey("set-success"));
+ sender.sendMessage(LanguageManager.fromKey("remove-success"));
return true;
}
diff --git a/src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java b/src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java
index 4d5b782..911b02e 100644
--- a/src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java
+++ b/src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java
@@ -7,42 +7,24 @@ import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.configuration.ConfigurationSection;
-import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.Nullable;
-import java.io.File;
-import java.io.IOException;
import java.util.HashMap;
import java.util.Objects;
import static com.MylesAndMore.Tumble.Main.plugin;
public class ArenaManager {
- private static FileConfiguration config;
+
public static HashMap<String, Arena> arenas;
- public static void loadConfig() {
- String fileName = "arenas.yml";
- // create config
- File customConfigFile = new File(plugin.getDataFolder(), fileName);
- if (!customConfigFile.exists()) {
- customConfigFile.getParentFile().mkdirs();
- plugin.saveResource(fileName, false);
- }
+ private static final CustomConfig customConfig = new CustomConfig("arenas.yml");
+ private static final FileConfiguration config = customConfig.getConfig();
- config = new YamlConfiguration();
- try {
- config.load(customConfigFile);
- } catch (IOException | InvalidConfigurationException e) {
- e.printStackTrace();
- }
- /* User Edit:
- Instead of the above Try/Catch, you can also use
- YamlConfiguration.loadConfiguration(customConfigFile)
- */
+ public static void init() {
+ customConfig.saveDefaultConfig();
readConfig();
}
@@ -50,6 +32,7 @@ public class ArenaManager {
* Reads config file and populates values above
*/
public static void readConfig() {
+
// arenas
ConfigurationSection arenasSection = config.getConfigurationSection("arenas");
if (arenasSection == null) {
@@ -96,15 +79,43 @@ public class ArenaManager {
}
}
+ public static void WriteConfig() {
+ config.set("arenas", null); // clear everything
+
+ for (Arena arena: arenas.values()) {
+ WriteWorld("arenas." + arena.name + ".game-spawn", arena.gameSpawn);
+ WriteWorld("arenas." + arena.name + ".lobby", arena.lobby);
+ WriteWorld("arenas." + arena.name + ".winner-lobby", arena.winnerLobby);
+ WriteWorld("arenas." + arena.name + ".wait-area", arena.waitArea);
+ }
+
+ customConfig.saveConfig();
+
+ }
+
+ /**
+ * Searches all arenas for a game that player p is in
+ * @param p Player to search for
+ * @return the game the player is in, or null if not found
+ */
+ public static Game findGamePlayerIsIn(Player p) {
+ for (Arena a : arenas.values()) {
+ if (a.game != null && a.game.gamePlayers.contains(p)) {
+ return a.game;
+ }
+ }
+ return null;
+ }
+
/**
* tries to convert a config section in the following format to a world
* section:
- * x:
- * y:
+ * x:
+ * y:
* z:
* world:
* @param section the section in the yaml with x, y, z, and world as its children
- * @return result of either:
+ * @return result of either:
* success = true and a world
* success = false and an error string
*/
@@ -134,43 +145,21 @@ public class ArenaManager {
return new Result<>(new Location(world,x,y,z));
}
- public static void WriteConfig() {
-
- for (Arena arena: arenas.values()) {
- WriteWorld("arenas."+arena.name+".game-spawn", arena.gameSpawn);
- WriteWorld("arenas."+arena.name+".lobby", arena.lobby);
- WriteWorld("arenas."+arena.name+".winner-lobby", arena.winnerLobby);
- WriteWorld("arenas."+arena.name+".wait-area", arena.waitArea);
+ private static void WriteWorld(String path, @Nullable Location location) {
+ if (location == null) {
+ return;
}
- plugin.saveConfig();
-
- }
-
- private static void WriteWorld(String path, Location location) {
ConfigurationSection section = config.getConfigurationSection(path);
if (section == null) {
- section = plugin.getConfig().createSection(path);
+ section = config.createSection(path);
}
section.set("x", location.getX());
section.set("y", location.getY());
section.set("z", location.getZ());
section.set("world", Objects.requireNonNull(location.getWorld()).getName());
- }
- /**
- * Searches all arenas for a game that player p is in
- * @param p Player to search for
- * @return the game the player is in, or null if not found
- */
- public static Game findGamePlayerIsIn(Player p) {
- for (Arena a : arenas.values()) {
- if (a.game != null && a.game.gamePlayers.contains(p)) {
- return a.game;
- }
- }
- return null;
}
}
diff --git a/src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java b/src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java
index 9dfce99..322f949 100644
--- a/src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java
+++ b/src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java
@@ -2,16 +2,15 @@ package com.MylesAndMore.Tumble.config;
import org.bukkit.configuration.file.FileConfiguration;
-import static com.MylesAndMore.Tumble.Main.plugin;
-
public class ConfigManager {
- private static FileConfiguration config;
+ private static final CustomConfig customConfig = new CustomConfig("config.yml");
+ private static final FileConfiguration config = customConfig.getConfig();
public static boolean HideLeaveJoin;
public static int waitDuration;
- public static void loadConfig() {
- config = plugin.getConfig();
+ public static void init() {
+ customConfig.saveDefaultConfig();
readConfig();
}
@@ -20,5 +19,4 @@ public class ConfigManager {
waitDuration = config.getInt("wait-duration", 15);
}
-
}
diff --git a/src/main/java/com/MylesAndMore/Tumble/config/CustomConfig.java b/src/main/java/com/MylesAndMore/Tumble/config/CustomConfig.java
new file mode 100644
index 0000000..20a0aa5
--- /dev/null
+++ b/src/main/java/com/MylesAndMore/Tumble/config/CustomConfig.java
@@ -0,0 +1,56 @@
+package com.MylesAndMore.Tumble.config;
+
+import com.google.common.base.Charsets;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.configuration.file.YamlConfiguration;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.logging.Level;
+
+import static com.MylesAndMore.Tumble.Main.plugin;
+
+public class CustomConfig {
+ private FileConfiguration newConfig = null;
+ private final File configFile;
+ private final String fileName;
+
+ public CustomConfig(String fileName) {
+ this.fileName = fileName;
+ this.configFile = new File(plugin.getDataFolder(), fileName);
+ }
+
+ public FileConfiguration getConfig() {
+ if (newConfig == null) {
+ reloadConfig();
+ }
+ return newConfig;
+ }
+
+ public void reloadConfig() {
+ newConfig = YamlConfiguration.loadConfiguration(configFile);
+
+ final InputStream defConfigStream = plugin.getResource(fileName);
+ if (defConfigStream == null) {
+ return;
+ }
+
+ newConfig.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(defConfigStream, Charsets.UTF_8)));
+ }
+
+ public void saveConfig() {
+ try {
+ getConfig().save(configFile);
+ } catch (IOException ex) {
+ plugin.getLogger().log(Level.SEVERE, "Could not save config to " + configFile, ex);
+ }
+ }
+
+ public void saveDefaultConfig() {
+ if (!configFile.exists()) {
+ plugin.saveResource(fileName, false);
+ }
+ }
+}
diff --git a/src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java b/src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java
index dc49aa5..f214902 100644
--- a/src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java
+++ b/src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java
@@ -1,40 +1,18 @@
package com.MylesAndMore.Tumble.config;
import org.bukkit.ChatColor;
-import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.configuration.file.YamlConfiguration;
-
-import java.io.File;
-import java.io.IOException;
import static com.MylesAndMore.Tumble.Main.plugin;
public class LanguageManager {
- private static FileConfiguration config;
-
- public static void loadConfig() {
- String fileName = "language.yml";
- // create config
- File customConfigFile = new File(plugin.getDataFolder(), fileName);
- if (!customConfigFile.exists()) {
- customConfigFile.getParentFile().mkdirs();
- plugin.saveResource(fileName, false);
- }
+ private static final CustomConfig customConfig = new CustomConfig("language.yml");
+ private static final FileConfiguration config = customConfig.getConfig();
- config = new YamlConfiguration();
- try {
- config.load(customConfigFile);
- } catch (IOException | InvalidConfigurationException e) {
- e.printStackTrace();
- }
- /* User Edit:
- Instead of the above Try/Catch, you can also use
- YamlConfiguration.loadConfiguration(customConfigFile)
- */
+ public static void init() {
+ customConfig.saveDefaultConfig();
}
-
public static String fromKey(String key) {
return fromKeyNoPrefix("prefix") + fromKeyNoPrefix(key);
}