Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9e9eac06fc | ||
|
|
4e24988fa3 | ||
|
|
e0f1ef8b5e | ||
|
|
c6e72489cc | ||
|
|
a2611a3302 | ||
|
|
3b0aec9ab5 | ||
|
|
f9c9cd5745 |
@@ -123,3 +123,5 @@ run/
|
||||
/run/
|
||||
/server-run/
|
||||
/out.map
|
||||
/omega-config-base/out.map
|
||||
/omega-config-gui/out.map
|
||||
|
||||
+4
-1
@@ -155,7 +155,8 @@ allprojects {
|
||||
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
|
||||
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
|
||||
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
|
||||
modImplementation "com.terraformersmc:modmenu:1.16.8"
|
||||
modRuntime "com.terraformersmc:modmenu:1.16.8"
|
||||
modCompileOnly "com.terraformersmc:modmenu:1.16.8"
|
||||
}
|
||||
|
||||
processResources {
|
||||
@@ -208,6 +209,8 @@ repositories {
|
||||
dependencies {
|
||||
compile project(":omega-config-base")
|
||||
compile project(":omega-config-gui")
|
||||
modRuntime "com.terraformersmc:modmenu:1.16.8"
|
||||
modCompileOnly "com.terraformersmc:modmenu:1.16.8"
|
||||
|
||||
afterEvaluate {
|
||||
testmodImplementation sourceSets.main.output
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ yarn_mappings=1.16.5+build.5
|
||||
loader_version=0.11.2
|
||||
|
||||
# Mod Properties
|
||||
mod_version=1.0.0
|
||||
mod_version=1.0.4
|
||||
maven_group=draylar
|
||||
archives_base_name=omega-config
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ public class OmegaConfig {
|
||||
|
||||
// Cursed time.
|
||||
List<String> lines = new ArrayList<>(Arrays.asList(json.split("\n")));
|
||||
Map<Integer, String> insertions = new HashMap<>();
|
||||
Map<Integer, String> insertions = new TreeMap<>();
|
||||
Map<String, String> keyToComments = new HashMap<>();
|
||||
|
||||
// populate key -> comments map
|
||||
@@ -136,14 +136,20 @@ public class OmegaConfig {
|
||||
}
|
||||
|
||||
// insertions -> list
|
||||
insertions.forEach(lines::add);
|
||||
for (Map.Entry<Integer, String> entry : insertions.entrySet()) {
|
||||
Integer key = entry.getKey();
|
||||
String value = entry.getValue();
|
||||
lines.add(key, value);
|
||||
}
|
||||
|
||||
// list -> string
|
||||
StringBuilder res = new StringBuilder();
|
||||
lines.forEach(str -> res.append(String.format("%s%n", str)));
|
||||
|
||||
try {
|
||||
Files.write(getConfigPath(instance), res.toString().getBytes());
|
||||
Path configPath = getConfigPath(instance);
|
||||
configPath.toFile().getParentFile().mkdirs();
|
||||
Files.write(configPath, res.toString().getBytes());
|
||||
} catch (IOException ioException) {
|
||||
LOGGER.error(ioException);
|
||||
LOGGER.info(String.format("Write error, using default values for config %s.", configClass.toString()));
|
||||
@@ -195,7 +201,7 @@ public class OmegaConfig {
|
||||
}
|
||||
|
||||
public static Path getConfigPath(Config config) {
|
||||
return Paths.get(FabricLoader.getInstance().getConfigDir().toString(), String.format("%s.json", config.getName()));
|
||||
return Paths.get(FabricLoader.getInstance().getConfigDir().toString(), config.getDirectory(), String.format("%s.%s", config.getName(), config.getExtension()));
|
||||
}
|
||||
|
||||
public static boolean configExists(Config config) {
|
||||
|
||||
@@ -78,7 +78,33 @@ public interface Config {
|
||||
return null;
|
||||
}
|
||||
|
||||
default boolean hasMenu() {
|
||||
return true;
|
||||
/**
|
||||
* Returns the file extension of this config.
|
||||
*
|
||||
* <p>
|
||||
* The file extension is used while serializing this config to a local file.
|
||||
* The primary use-case of switching this would be supporting existing config files
|
||||
* when porting from other json5 config libraries.
|
||||
*
|
||||
* @return the file extension of this config
|
||||
*/
|
||||
default String getExtension() {
|
||||
return "json";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the directory of this config, assuming the base directory is the instance config directory.
|
||||
*
|
||||
* <p>
|
||||
* By default, a config such as 'my_config' will appear at /config/my_config.json.
|
||||
* If this method specifies a directory, such as 'configurations',
|
||||
* the config file will appear at /config/configurations/my_config.json.
|
||||
*
|
||||
* Nested directories can be specified by using a string such as 'configurations/client'.
|
||||
*
|
||||
* @return the directory of this config
|
||||
*/
|
||||
default String getDirectory() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
"omega-config.mixins.json"
|
||||
],
|
||||
"depends": {
|
||||
"fabricloader": ">=0.11.2",
|
||||
"fabricloader": "*",
|
||||
"fabric": "*",
|
||||
"minecraft": "1.16.5"
|
||||
"minecraft": "*"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
"omega-config-gui.mixins.json"
|
||||
],
|
||||
"depends": {
|
||||
"fabricloader": ">=0.11.2",
|
||||
"fabricloader": "*",
|
||||
"fabric": "*",
|
||||
"minecraft": "1.16.5"
|
||||
"minecraft": "*"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package draylar.omegatest;
|
||||
|
||||
import draylar.omegaconfig.api.Config;
|
||||
|
||||
public class NestedConfig implements Config {
|
||||
|
||||
public boolean test = false;
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "nested";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDirectory() {
|
||||
return "test";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
package draylar.omegatest;
|
||||
|
||||
import draylar.omegaconfig.api.Comment;
|
||||
import draylar.omegaconfig.api.Config;
|
||||
|
||||
public class NewTestConfig implements Config {
|
||||
@Comment("Mo' Structures feature toggles.")
|
||||
public Features features = new Features();
|
||||
|
||||
@Comment("Chances are once per the number of chunks. A Chance 500 makes a feature spawn every 500 chunks. Affected by biomes it spawns in and the chunk, so not all are proportional.")
|
||||
public FeatureChances feature_chances = new FeatureChances();
|
||||
|
||||
@Comment("Structure toggles. These do not have chances, but in the future they may. ")
|
||||
public Structures structures = new Structures();
|
||||
|
||||
@Comment("Structure chances. Seperation is the least amount of chunks that a structure will spawn from itself. Spacing is the maximum amount of chunks, and both are used to randomly spawn structures and can be tweaked.")
|
||||
public StructureChances structureChances = new StructureChances();
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "mostructures-config-v2";
|
||||
}
|
||||
|
||||
public static class Features {
|
||||
@Comment("Airplanes & Air Balloons")
|
||||
public boolean air_features = true;
|
||||
@Comment("Fallen Trees")
|
||||
public boolean fallen_trees = true;
|
||||
@Comment("Desert Features")
|
||||
public boolean desert_features = true;
|
||||
@Comment("Ruins")
|
||||
public boolean ruins = true;
|
||||
@Comment("Lamppost")
|
||||
public boolean lamppost = true;
|
||||
@Comment("Boulder")
|
||||
public boolean boulder = true;
|
||||
@Comment("Volcanic Vent")
|
||||
public boolean volcanic_vent = true;
|
||||
@Comment("Beach Features")
|
||||
public boolean beach_features = true;
|
||||
@Comment("Boats")
|
||||
public boolean boats = true;
|
||||
}
|
||||
|
||||
public static class FeatureChances {
|
||||
@Comment("Airplanes & Air Balloons")
|
||||
public int air_feature_chance = 4600;
|
||||
@Comment("Fallen Trees")
|
||||
public int fallen_trees_chance = 17;
|
||||
@Comment("Desert Features")
|
||||
public int desert_features_chance = 555;
|
||||
@Comment("Ruins")
|
||||
public int ruins_chance = 3500;
|
||||
@Comment("Lamppost")
|
||||
public int lamppost_chance = 100;
|
||||
@Comment("Boulder")
|
||||
public int boulder_chance = 4000;
|
||||
@Comment("Volcanic Vent")
|
||||
public int volcanic_vent_chance = 85;
|
||||
@Comment("Beach Features")
|
||||
public int beach_features_chance = 75;
|
||||
@Comment("Boats")
|
||||
public int boats_chance = 4000;
|
||||
}
|
||||
|
||||
public static class Structures {
|
||||
@Comment("Barnhouse")
|
||||
public boolean barn_house = true;
|
||||
@Comment("Jungle Pyramid")
|
||||
public boolean jungle_pyramid = true;
|
||||
@Comment("Big Pyramid")
|
||||
public boolean big_pyramid = true;
|
||||
@Comment("The Castle In The Sky")
|
||||
public boolean the_castle_in_the_sky = true;
|
||||
@Comment("Villager Tower")
|
||||
public boolean villager_tower = true;
|
||||
@Comment("Abandoned Churches")
|
||||
public boolean abandoned_churches = true;
|
||||
@Comment("Villager Market")
|
||||
public boolean villager_market = true;
|
||||
@Comment("Pillager Factory")
|
||||
public boolean pillager_factory = true;
|
||||
@Comment("Ice Tower")
|
||||
public boolean ice_tower = true;
|
||||
@Comment("Boar Hat Tavern")
|
||||
public boolean tavern = true;
|
||||
@Comment("Killer Bunny Castle")
|
||||
public boolean killer_bunny_castle = true;
|
||||
}
|
||||
|
||||
public static class StructureChances {
|
||||
@Comment("Barn House")
|
||||
public int barn_house_seperation = 16;
|
||||
public int barn_house_spacing = 40;
|
||||
@Comment("Big Pyramid")
|
||||
public int big_pyramid_seperation = 5;
|
||||
public int big_pyramid_spacing = 25;
|
||||
@Comment("Jungle Pyramid")
|
||||
public int jungle_pyramid_seperation = 5;
|
||||
public int jungle_pyramid_spacing = 25;
|
||||
@Comment("The Castle In The Sky")
|
||||
public int the_castle_in_the_sky_seperation = 8;
|
||||
public int the_castle_in_the_sky_spacing = 32;
|
||||
@Comment("Villager Tower")
|
||||
public int villager_tower_seperation = 16;
|
||||
public int villager_tower_spacing = 40;
|
||||
@Comment("Abandoned Church")
|
||||
public int abandoned_church_seperation = 16;
|
||||
public int abandoned_church_spacing = 40;
|
||||
@Comment("Villager Market")
|
||||
public int villager_market_seperation = 27;
|
||||
public int villager_market_spacing = 50;
|
||||
@Comment("Pillager Factory")
|
||||
public int pillager_factory_seperation = 27;
|
||||
public int pillager_factory_spacing = 50;
|
||||
@Comment("Ice Tower")
|
||||
public int ice_tower_seperation = 8;
|
||||
public int ice_tower_spacing = 32;
|
||||
@Comment("Boar Hat Tavern")
|
||||
public int tavern_seperation = 16;
|
||||
public int tavern_spacing = 46;
|
||||
@Comment("Killer Bunny Castle")
|
||||
public int killer_bunny_castle_seperation = 25;
|
||||
public int killer_bunny_castle_spacing = 50;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getExtension() {
|
||||
return "json5";
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,8 @@ import net.fabricmc.api.ModInitializer;
|
||||
public class OmegaTestMain implements ModInitializer {
|
||||
|
||||
public static final TestConfig CONFIG = OmegaConfig.register(TestConfig.class);
|
||||
public static final NewTestConfig MO_CONFIG = OmegaConfig.register(NewTestConfig.class);
|
||||
public static final NestedConfig NESTED = OmegaConfig.register(NestedConfig.class);
|
||||
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
]
|
||||
},
|
||||
"depends": {
|
||||
"fabricloader": ">=0.11.2",
|
||||
"fabricloader": "*",
|
||||
"fabric": "*",
|
||||
"minecraft": "1.16.5"
|
||||
"minecraft": "*"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user