Skip to content

Commit

Permalink
Lots of fixes. Configurations actually work now!
Browse files Browse the repository at this point in the history
  • Loading branch information
hedgehog1029 committed May 9, 2016
1 parent 92149ca commit 06d8ddd
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 3 deletions.
7 changes: 7 additions & 0 deletions src/io/github/hedgehog1029/frame/Frame.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ public static void main() {
ConfigurationBuilder.buildAwaiting();
} catch (Exception e) {
Logger.err("Error building configurations!");
Logger.err(e.getMessage());

e.printStackTrace();
}

new FrameInjector()
Expand Down Expand Up @@ -53,4 +56,8 @@ public static void addConfiguration(Class clazz) {
public static void addHook(Class<? extends IPluginHook> clazz) {
HookLoader.addHook(clazz);
}

public static Object getConfig(Class clazz) {
return ConfigurationBuilder.get(clazz);
}
}
19 changes: 16 additions & 3 deletions src/io/github/hedgehog1029/frame/config/ConfigurationBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import io.github.hedgehog1029.frame.annotations.Configuration;
import io.github.hedgehog1029.frame.annotations.Setting;
import io.github.hedgehog1029.frame.logger.Logger;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.java.JavaPlugin;
Expand Down Expand Up @@ -31,6 +32,8 @@ public static void add(Class clazz) {
public static void buildAwaiting() {
for (Class c : awaiting) {
configurations.put(c, build(c));

sync(c);
}
}

Expand Down Expand Up @@ -90,8 +93,6 @@ private static Object build(Class clazz) {

buildFromConfig(configFile, clazz, object);

//sync(clazz);

return object;
}

Expand All @@ -116,7 +117,7 @@ private static Object buildFromConfig(FileConfiguration config, Class clazz, Obj
Field field = clazz.getField(key);

field.setAccessible(true);
field.set(instance, field.getType().cast(config.get(key)));
fieldSet(field, config, instance, key);
} catch (NoSuchFieldException ignored) {
Logger.log(Level.FINER, "A key in YAML was not found in the class it is being rebuilt to.");
} catch (IllegalAccessException e) {
Expand All @@ -126,4 +127,16 @@ private static Object buildFromConfig(FileConfiguration config, Class clazz, Obj

return instance;
}

private static void fieldSet(Field f, FileConfiguration config, Object instance, String key) throws IllegalAccessException {
if (config.get(key) instanceof Boolean) {
f.set(instance, config.getBoolean(key));
} else if (config.get(key) instanceof Integer) {
f.set(instance, config.getInt(key));
} else if (config.get(key) instanceof ConfigurationSection) {
f.set(instance, f.getType().cast(((ConfigurationSection) config.get(key)).getValues(false)));
} else {
f.set(instance, f.getType().cast(config.get(key)));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ public final boolean dispatch(CommandSender sender, CommandMapping command, Stri
params.add(builder.toString());

break; // this is a bad move but yeah
} else {
params.add(args.pop());
}
} else if (subclassOf(int.class, current)) {
int arg;
Expand Down

0 comments on commit 06d8ddd

Please sign in to comment.