Merge pull request #3 from frqnny/modularize
Some more important changes
This commit is contained in:
@@ -5,7 +5,6 @@ import java.nio.charset.StandardCharsets
|
|||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
mavenLocal()
|
mavenLocal()
|
||||||
jcenter()
|
|
||||||
google()
|
google()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-6
@@ -2,13 +2,13 @@
|
|||||||
org.gradle.jvmargs=-Xmx1G
|
org.gradle.jvmargs=-Xmx1G
|
||||||
# Fabric Properties
|
# Fabric Properties
|
||||||
# check these on https://modmuss50.me/fabric.html
|
# check these on https://modmuss50.me/fabric.html
|
||||||
minecraft_version=21w20a
|
minecraft_version=1.17
|
||||||
yarn_mappings=21w20a+build.19
|
yarn_mappings=1.17+build.7
|
||||||
loader_version=0.11.3
|
loader_version=0.11.3
|
||||||
|
|
||||||
|
#Fabric api
|
||||||
|
fabric_version=0.34.10+1.17
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version=1.0.5
|
mod_version=1.0.8
|
||||||
maven_group=draylar
|
maven_group=draylar
|
||||||
archives_base_name=omega-config
|
archives_base_name=omega-config
|
||||||
# Dependencies
|
|
||||||
# check this on https://modmuss50.me/fabric.html
|
|
||||||
fabric_version=0.34.6+1.17
|
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import com.google.gson.Gson;
|
|||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import draylar.omegaconfig.api.Comment;
|
import draylar.omegaconfig.api.Comment;
|
||||||
import draylar.omegaconfig.api.Config;
|
import draylar.omegaconfig.api.Config;
|
||||||
import draylar.omegaconfig.exception.NoValidConstructorException;
|
|
||||||
import draylar.omegaconfig.gson.SyncableExclusionStrategy;
|
import draylar.omegaconfig.gson.SyncableExclusionStrategy;
|
||||||
import io.netty.buffer.Unpooled;
|
import io.netty.buffer.Unpooled;
|
||||||
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
|
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
|
||||||
@@ -67,7 +66,7 @@ public class OmegaConfig {
|
|||||||
// 1. serialize to disk if the config does not already exist
|
// 1. serialize to disk if the config does not already exist
|
||||||
// 2. read from disk if it does exist
|
// 2. read from disk if it does exist
|
||||||
if (!configExists(config)) {
|
if (!configExists(config)) {
|
||||||
writeConfig(configClass, config);
|
config.save();
|
||||||
REGISTERED_CONFIGURATIONS.add(config);
|
REGISTERED_CONFIGURATIONS.add(config);
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
@@ -79,7 +78,7 @@ public class OmegaConfig {
|
|||||||
T object = GSON.fromJson(res.toString(), configClass);
|
T object = GSON.fromJson(res.toString(), configClass);
|
||||||
|
|
||||||
// re-write the config to add new values
|
// re-write the config to add new values
|
||||||
writeConfig(configClass, object);
|
object.save();
|
||||||
REGISTERED_CONFIGURATIONS.add(object);
|
REGISTERED_CONFIGURATIONS.add(object);
|
||||||
return object;
|
return object;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -92,7 +91,7 @@ public class OmegaConfig {
|
|||||||
return config;
|
return config;
|
||||||
} catch (NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException exception) {
|
} catch (NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException exception) {
|
||||||
exception.printStackTrace();
|
exception.printStackTrace();
|
||||||
throw new NoValidConstructorException();
|
throw new RuntimeException("No valid constructor found for: " + configClass.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-5
@@ -1,5 +0,0 @@
|
|||||||
package draylar.omegaconfig.exception;
|
|
||||||
|
|
||||||
public class NoValidConstructorException extends RuntimeException {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
{
|
{
|
||||||
"schemaVersion": 1,
|
"schemaVersion": 1,
|
||||||
"id": "omega-config",
|
"id": "omega-config",
|
||||||
"version": "${version}",
|
"version": "1.0.8",
|
||||||
"name": "OmegaConfig",
|
"name": "OmegaConfig",
|
||||||
"description": "The last config solution you will ever use.",
|
"description": "The last config solution you will ever use.",
|
||||||
"authors": [
|
"authors": [
|
||||||
"Draylar"
|
"Draylar",
|
||||||
|
"Frqnny"
|
||||||
],
|
],
|
||||||
"contact": {},
|
"contact": {},
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"required": true,
|
"required": true,
|
||||||
"minVersion": "0.8",
|
"minVersion": "0.8",
|
||||||
"package": "draylar.omegaconfig.mixin",
|
"package": "draylar.omegaconfig.mixin",
|
||||||
"compatibilityLevel": "JAVA_8",
|
"compatibilityLevel": "JAVA_16",
|
||||||
"mixins": [
|
"mixins": [
|
||||||
],
|
],
|
||||||
"client": [
|
"client": [
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"required": true,
|
"required": true,
|
||||||
"minVersion": "0.8",
|
"minVersion": "0.8",
|
||||||
"package": "draylar.omegaconfiggui.mixin",
|
"package": "draylar.omegaconfiggui.mixin",
|
||||||
"compatibilityLevel": "JAVA_8",
|
"compatibilityLevel": "JAVA_16",
|
||||||
"mixins": [
|
"mixins": [
|
||||||
"ClickableWidgetInvoker",
|
"ClickableWidgetInvoker",
|
||||||
"ModMenuAccessor"
|
"ModMenuAccessor"
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package draylar.omegatest.config;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class StructureConfigEntry {
|
||||||
|
|
||||||
|
public final boolean activated;
|
||||||
|
public final int separation;
|
||||||
|
public final int spacing;
|
||||||
|
public final int salt;
|
||||||
|
|
||||||
|
private StructureConfigEntry(int separation, int spacing, int salt) {
|
||||||
|
this.activated = true;
|
||||||
|
this.spacing = spacing;
|
||||||
|
this.separation = separation;
|
||||||
|
this.salt = salt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static StructureConfigEntry of(int separation, int spacing, int salt) {
|
||||||
|
return new StructureConfigEntry(separation, spacing, salt);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void computeConfigMap(Map<String, StructureConfigEntry> map) {
|
||||||
|
map.computeIfAbsent("abandoned_church", (id) -> of(14, 38, 66996840));
|
||||||
|
map.computeIfAbsent("barn_house", (id) -> of(8, 38, 165757306));
|
||||||
|
map.computeIfAbsent("big_pyramid", (id) -> of(5, 25, 239284294));
|
||||||
|
map.computeIfAbsent("jungle_pyramid", (id) -> of(5, 25, 312178642));
|
||||||
|
map.computeIfAbsent("the_castle_in_the_sky", (id) -> of(8, 30, 423494938));
|
||||||
|
map.computeIfAbsent("killer_bunny_castle", (id) -> of(25, 45, 48123900));
|
||||||
|
map.computeIfAbsent("villager_tower", (id) -> of(16, 34, 550292492));
|
||||||
|
map.computeIfAbsent("villager_market", (id) -> of(16, 36, 784939542));
|
||||||
|
map.computeIfAbsent("pillager_factory", (id) -> of(16, 36, 839204924));
|
||||||
|
map.computeIfAbsent("ice_tower", (id) -> of(8, 28, 964058305));
|
||||||
|
map.computeIfAbsent("tavern", (id) -> of(12, 32, 19296726));
|
||||||
|
map.computeIfAbsent("pirate_ship", (id) -> of(16, 40, 583957395));
|
||||||
|
map.computeIfAbsent("lighthouse", (id) -> of(16, 32, 29502322));
|
||||||
|
map.computeIfAbsent("volcanic_vent", (id) -> of(4, 8, 84981094));
|
||||||
|
map.computeIfAbsent("moai", (id) -> of(4, 8, 12994829));
|
||||||
|
map.computeIfAbsent("air_balloon", (id) -> of(1, 6, 29483148));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,19 +2,30 @@ package draylar.omegatest.config;
|
|||||||
|
|
||||||
import draylar.omegaconfig.api.Comment;
|
import draylar.omegaconfig.api.Comment;
|
||||||
import draylar.omegaconfig.api.Config;
|
import draylar.omegaconfig.api.Config;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
|
//taken straight out of Mo' Structures
|
||||||
public class StructuresConfigTest implements Config {
|
public class StructuresConfigTest 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.")
|
@Comment("""
|
||||||
public FeatureChances feature_chances = new FeatureChances();
|
Welcome to Mo'Structures Config!
|
||||||
|
//
|
||||||
|
// Here, you can turn off structures, change their chance, and also change their salt.
|
||||||
|
//
|
||||||
|
// To turn off a structure, simply go to the corresponding entry and set `activated` to false.
|
||||||
|
//
|
||||||
|
// Mo' Structures uses the vanilla structure spawning system. That is-
|
||||||
|
// - Seperation is the minimum chunks between structures
|
||||||
|
// - Spacing is the average chunks between structures
|
||||||
|
//
|
||||||
|
// Salt is a special field that gives structures unique spawning positions. DO NOT TOUCH IT, ONLY ADVANCED TROUBLESHOOTING!
|
||||||
|
|
||||||
@Comment("Structure toggles. These do not have chances, but in the future they may. ")
|
""")
|
||||||
public Structures structures = new Structures();
|
public final Map<String, StructureConfigEntry> structureConfigEntries = new HashMap<>(17);
|
||||||
|
|
||||||
@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
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
@@ -26,106 +37,22 @@ public class StructuresConfigTest implements Config {
|
|||||||
return "json5";
|
return "json5";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Features {
|
public StructureConfigEntry get(Identifier id) {
|
||||||
@Comment("Airplanes & Air Balloons")
|
|
||||||
public boolean air_features = true;
|
|
||||||
@Comment("Fallen Trees")
|
for (Map.Entry<String, StructureConfigEntry> entry : structureConfigEntries.entrySet()) {
|
||||||
public boolean fallen_trees = true;
|
if (entry.getKey().equals(id.getPath())) {
|
||||||
@Comment("Desert Features")
|
return entry.getValue();
|
||||||
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 {
|
throw new NullPointerException("Tried StructureConfigEntry with id: " + id + ", but it was null!");
|
||||||
@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 {
|
@Override
|
||||||
@Comment("Barn House")
|
public void save() {
|
||||||
public int barn_house_seperation = 16;
|
StructureConfigEntry.computeConfigMap(structureConfigEntries);
|
||||||
public int barn_house_spacing = 40;
|
Config.super.save();
|
||||||
@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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user