Improve YMLWrapper

This commit is contained in:
2025-10-26 09:22:48 +01:00
parent aec03e41a1
commit d216aac2c4
11 changed files with 20 additions and 34 deletions
@@ -23,8 +23,7 @@ import com.sk89q.worldedit.extent.clipboard.Clipboard;
import de.steamwar.bausystem.region.*;
import de.steamwar.bausystem.utils.PasteBuilder;
import de.steamwar.data.GameModeConfig;
import de.steamwar.data.YMLWrapper;
import de.steamwar.data.YMLWrapperUtils;
import de.steamwar.data.GameModeConfigUtils;
import de.steamwar.sql.SchematicType;
import lombok.NonNull;
import lombok.Setter;
@@ -95,7 +94,7 @@ public final class FixedGlobalRegion implements Region {
}
};
private static final GameModeConfig<Material, SchematicType, String> GLOBAL_CONFIG = new GameModeConfig<>(null, YMLWrapperUtils.ToMaterial, YMLWrapper.ToSchematicType, YMLWrapper.ToString, YMLWrapper.ToStaticWarGear);
private static final GameModeConfig<Material, SchematicType, String> GLOBAL_CONFIG = new GameModeConfig<>(null, GameModeConfigUtils.ToMaterial, GameModeConfig.ToSchematicType, GameModeConfig.ToString, GameModeConfig.ToStaticWarGear);
private FixedGlobalRegion() {
}
@@ -29,8 +29,7 @@ import de.steamwar.bausystem.utils.PasteBuilder;
import de.steamwar.bausystem.worlddata.WorldData;
import de.steamwar.core.Core;
import de.steamwar.data.GameModeConfig;
import de.steamwar.data.YMLWrapper;
import de.steamwar.data.YMLWrapperUtils;
import de.steamwar.data.GameModeConfigUtils;
import de.steamwar.sql.SchematicType;
import lombok.NonNull;
import org.bukkit.Bukkit;
@@ -340,7 +339,7 @@ public class FixedRegion implements Region {
break;
}
}
this.gameModeConfig = new GameModeConfig<>(found, YMLWrapperUtils.ToMaterial, YMLWrapper.ToSchematicType, YMLWrapper.ToString, YMLWrapper.ToStaticWarGear);
this.gameModeConfig = new GameModeConfig<>(found, GameModeConfigUtils.ToMaterial, GameModeConfig.ToSchematicType, GameModeConfig.ToString, GameModeConfig.ToStaticWarGear);
this.regionData = new RegionData.RegionDataImpl(regionData, WorldData::write);
}
@@ -34,8 +34,12 @@ import java.util.stream.Collectors;
@ToString
public final class GameModeConfig<M, ST, W> {
private static final Random random = new Random();
public static final Function<String, String> ToString = Function.identity();
public static final Function<String, SchematicType> ToSchematicType = SchematicType::fromDB;
public static final Function<File, String> ToStaticWarGear = __ -> "WarGear";
public static final Function<File, String> ToInternalName = file -> file.getName().replace(".yml", "");
public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yyyy HH:mm");
private static final Random random = new Random();
public final boolean loaded;
public final File configFile;
@@ -19,7 +19,6 @@
package de.steamwar.data;
import de.steamwar.sql.SchematicType;
import org.yaml.snakeyaml.Yaml;
import java.io.File;
@@ -32,15 +31,8 @@ import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
public final class YMLWrapper<M, ST, W> {
final class YMLWrapper<M, ST, W> {
public static final Function<String, String> ToString = Function.identity();
public static final Function<String, SchematicType> ToSchematicType = SchematicType::fromDB;
public static final Function<File, String> ToStaticWarGear = __ -> "WarGear";
public static final Function<File, String> ToInternalName = file -> file.getName().replace(".yml", "");
private final File file;
final Function<String, M> materialMapper;
final Function<String, ST> schematicTypeMapper;
final Function<String, W> winconditionMapper;
@@ -48,8 +40,7 @@ public final class YMLWrapper<M, ST, W> {
private final boolean canLoad;
private final Map<String, Object> document;
public YMLWrapper(File file, Function<String, M> materialMapper, Function<String, ST> schematicTypeMapper, Function<String, W> winconditionMapper) {
this.file = file;
YMLWrapper(File file, Function<String, M> materialMapper, Function<String, ST> schematicTypeMapper, Function<String, W> winconditionMapper) {
this.materialMapper = materialMapper;
this.schematicTypeMapper = schematicTypeMapper;
this.winconditionMapper = winconditionMapper;
@@ -70,7 +61,6 @@ public final class YMLWrapper<M, ST, W> {
}
private YMLWrapper(boolean canLoad, Map<String, Object> document, Function<String, M> materialMapper, Function<String, ST> schematicTypeMapper, Function<String, W> winconditionMapper) {
this.file = null;
this.materialMapper = materialMapper;
this.schematicTypeMapper = schematicTypeMapper;
this.winconditionMapper = winconditionMapper;
@@ -20,8 +20,7 @@
package de.steamwar.fightsystem;
import de.steamwar.data.GameModeConfig;
import de.steamwar.data.YMLWrapper;
import de.steamwar.data.YMLWrapperUtils;
import de.steamwar.data.GameModeConfigUtils;
import de.steamwar.fightsystem.utils.Region;
import de.steamwar.fightsystem.winconditions.Winconditions;
import de.steamwar.sql.*;
@@ -110,7 +109,7 @@ public class Config {
Bukkit.getLogger().log(Level.SEVERE, "Arenaconfig fehlt!");
Bukkit.shutdown();
}
GameModeConfig = new GameModeConfig<>(new File(FightSystem.getPlugin().getDataFolder(), configFile), YMLWrapperUtils.ToMaterial, YMLWrapper.ToSchematicType, Winconditions::valueOf, YMLWrapper.ToStaticWarGear);
GameModeConfig = new GameModeConfig<>(new File(FightSystem.getPlugin().getDataFolder(), configFile), GameModeConfigUtils.ToMaterial, de.steamwar.data.GameModeConfig.ToSchematicType, Winconditions::valueOf, de.steamwar.data.GameModeConfig.ToStaticWarGear);
File worldConfigFile = new File(world.getWorldFolder(), "config.yml");
if(!worldConfigFile.exists()) {
@@ -20,8 +20,7 @@
package de.steamwar.schematicsystem;
import de.steamwar.data.GameModeConfig;
import de.steamwar.data.YMLWrapper;
import de.steamwar.data.YMLWrapperUtils;
import de.steamwar.data.GameModeConfigUtils;
import de.steamwar.sql.SchematicType;
import lombok.experimental.UtilityClass;
import org.bukkit.Material;
@@ -39,7 +38,7 @@ public class CheckSchemTypeManager {
File folder = new File(SchematicSystem.getInstance().getDataFolder().getParentFile(), "FightSystem");
if(folder.exists()) {
for(File configFile : folder.listFiles((file, name) -> name.endsWith(".yml") && !name.endsWith(".kits.yml"))) {
GameModeConfig<Material, SchematicType, String> gameModeConfig = new GameModeConfig<>(configFile, YMLWrapperUtils.ToMaterial, YMLWrapper.ToSchematicType, YMLWrapper.ToString, YMLWrapper.ToStaticWarGear);
GameModeConfig<Material, SchematicType, String> gameModeConfig = new GameModeConfig<>(configFile, GameModeConfigUtils.ToMaterial, GameModeConfig.ToSchematicType, GameModeConfig.ToString, GameModeConfig.ToStaticWarGear);
if (gameModeConfig.CheckQuestions.isEmpty() && gameModeConfig.Schematic.ManualCheck)
continue;
types.put(gameModeConfig.Schematic.Type, gameModeConfig);
@@ -25,7 +25,7 @@ import org.bukkit.Material;
import java.util.function.Function;
@UtilityClass
public class YMLWrapperUtils {
public class GameModeConfigUtils {
public static final Function<String, Material> ToMaterial = material -> {
Material mat = Material.getMaterial(material);
@@ -21,7 +21,6 @@ package de.steamwar.sql;
import de.steamwar.core.Core;
import de.steamwar.data.GameModeConfig;
import de.steamwar.data.YMLWrapper;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
@@ -39,7 +38,7 @@ public class SQLWrapperImpl implements SQLWrapper {
File folder = new File(Core.getInstance().getDataFolder().getParentFile(), "FightSystem");
if (!folder.exists()) return;
for (File configFile : Arrays.stream(folder.listFiles((file, name) -> name.endsWith(".yml") && !name.endsWith(".kits.yml"))).sorted().collect(Collectors.toList())) {
GameModeConfig<String, String, String> gameModeConfig = new GameModeConfig<>(configFile, YMLWrapper.ToString, YMLWrapper.ToString, YMLWrapper.ToString, YMLWrapper.ToStaticWarGear);
GameModeConfig<String, String, String> gameModeConfig = new GameModeConfig<>(configFile, GameModeConfig.ToString, GameModeConfig.ToString, GameModeConfig.ToString, GameModeConfig.ToStaticWarGear);
if (!gameModeConfig.Schematic.loaded) continue;
String type = gameModeConfig.Schematic.Type;
assert type != null;
@@ -22,7 +22,6 @@ package de.steamwar.sql;
import com.velocitypowered.api.proxy.Player;
import com.velocitypowered.api.proxy.server.RegisteredServer;
import de.steamwar.data.GameModeConfig;
import de.steamwar.data.YMLWrapper;
import de.steamwar.velocitycore.VelocityCore;
import de.steamwar.velocitycore.commands.CheckCommand;
@@ -40,7 +39,7 @@ public class SQLWrapperImpl implements SQLWrapper {
return;
for(File file : Arrays.stream(folder.listFiles((file, name) -> name.endsWith(".yml") && !name.endsWith(".kits.yml"))).sorted().toList()) {
GameModeConfig<String, String, String> gameModeConfig = new GameModeConfig<>(file, YMLWrapper.ToString, YMLWrapper.ToString, YMLWrapper.ToString, YMLWrapper.ToInternalName);
GameModeConfig<String, String, String> gameModeConfig = new GameModeConfig<>(file, GameModeConfig.ToString, GameModeConfig.ToString, GameModeConfig.ToString, GameModeConfig.ToInternalName);
if (!gameModeConfig.Schematic.loaded) continue;
if (tmpFromDB.containsKey(gameModeConfig.Schematic.Type.toLowerCase())) continue;
@@ -20,7 +20,6 @@
package de.steamwar.velocitycore;
import de.steamwar.data.GameModeConfig;
import de.steamwar.data.YMLWrapper;
import de.steamwar.sql.SchematicType;
import lombok.Getter;
import lombok.experimental.UtilityClass;
@@ -52,7 +51,7 @@ public class ArenaMode {
return;
for(File file : Arrays.stream(folder.listFiles((file, name) -> name.endsWith(".yml") && !name.endsWith(".kits.yml"))).sorted().toList()) {
GameModeConfig<String, SchematicType, String> gameModeConfig = new GameModeConfig<>(file, YMLWrapper.ToString, YMLWrapper.ToSchematicType, YMLWrapper.ToString, YMLWrapper.ToInternalName);
GameModeConfig<String, SchematicType, String> gameModeConfig = new GameModeConfig<>(file, GameModeConfig.ToString, GameModeConfig.ToSchematicType, GameModeConfig.ToString, GameModeConfig.ToInternalName);
if (!gameModeConfig.Server.loaded) continue;
allModes.add(gameModeConfig);
@@ -20,7 +20,6 @@
package de.steamwar.sql
import de.steamwar.data.GameModeConfig
import de.steamwar.data.YMLWrapper
import java.io.File
import java.util.*
import java.util.stream.Collectors
@@ -30,7 +29,7 @@ fun loadSchematicTypes(tmpTypes: MutableList<SchematicType>?, tmpFromDB: Mutable
if (folder.exists()) {
for (configFile in Arrays.stream(folder.listFiles { _, name -> name.endsWith(".yml") && !name.endsWith(".kits.yml") })
.sorted().collect(Collectors.toList())) {
val gameModeConfig = GameModeConfig(configFile, YMLWrapper.ToString, YMLWrapper.ToString, YMLWrapper.ToString, YMLWrapper.ToStaticWarGear)
val gameModeConfig = GameModeConfig(configFile, GameModeConfig.ToString, GameModeConfig.ToString, GameModeConfig.ToString, GameModeConfig.ToStaticWarGear)
if (!gameModeConfig.Schematic.loaded) continue
val type = gameModeConfig.Schematic.Type