Commit 86035a2477f8fd783049886c585abc37e364cbdf
1 parent
cc2a64ee
Quality of life tweaks to CloudConfig
Showing
2 changed files
with
24 additions
and
7 deletions
src/client/java/com/mumfrey/liteloader/modconfig/CloudConfig.java
| @@ -67,7 +67,7 @@ public abstract class CloudConfig | @@ -67,7 +67,7 @@ public abstract class CloudConfig | ||
| 67 | /** | 67 | /** |
| 68 | * Same as normal key pattern except that $ gets translated to . for key | 68 | * Same as normal key pattern except that $ gets translated to . for key |
| 69 | */ | 69 | */ |
| 70 | - private static final Pattern keyPattern = Pattern.compile("^[a-z0-9_\\-\\$]{1,32}$"); | 70 | + private static final Pattern keyPattern = Pattern.compile("(?i)^[a-z0-9_\\-\\$]{1,32}$"); |
| 71 | 71 | ||
| 72 | /** | 72 | /** |
| 73 | * A field value tracker | 73 | * A field value tracker |
| @@ -85,7 +85,7 @@ public abstract class CloudConfig | @@ -85,7 +85,7 @@ public abstract class CloudConfig | ||
| 85 | TrackedField(Field handle) | 85 | TrackedField(Field handle) |
| 86 | { | 86 | { |
| 87 | this.handle = handle; | 87 | this.handle = handle; |
| 88 | - this.name = handle.getName().replace("$", "."); | 88 | + this.name = handle.getName().replace("$", ".").toLowerCase(); |
| 89 | } | 89 | } |
| 90 | 90 | ||
| 91 | @SuppressWarnings("unchecked") | 91 | @SuppressWarnings("unchecked") |
| @@ -139,6 +139,14 @@ public abstract class CloudConfig | @@ -139,6 +139,14 @@ public abstract class CloudConfig | ||
| 139 | } | 139 | } |
| 140 | else if (value != this.localValue && value != null) | 140 | else if (value != this.localValue && value != null) |
| 141 | { | 141 | { |
| 142 | + if (value.length() > 255) | ||
| 143 | + { | ||
| 144 | + LiteLoaderLogger.warning("Unable to synchronise setting [%s], length > 255 chars. The value will be truncated!", this.name); | ||
| 145 | + value = value.substring(0, 255); | ||
| 146 | + this.<String>setValue(value); | ||
| 147 | + this.isDirty(); | ||
| 148 | + } | ||
| 149 | + | ||
| 142 | CloudConfig.this.preferences.set(this.name, value); | 150 | CloudConfig.this.preferences.set(this.name, value); |
| 143 | } | 151 | } |
| 144 | else if (CloudConfig.this.preferences.has(this.name)) | 152 | else if (CloudConfig.this.preferences.has(this.name)) |
| @@ -147,7 +155,7 @@ public abstract class CloudConfig | @@ -147,7 +155,7 @@ public abstract class CloudConfig | ||
| 147 | if (value != remoteValue) | 155 | if (value != remoteValue) |
| 148 | { | 156 | { |
| 149 | value = remoteValue; | 157 | value = remoteValue; |
| 150 | - this.setValue(value); | 158 | + this.<String>setValue(value); |
| 151 | } | 159 | } |
| 152 | } | 160 | } |
| 153 | 161 | ||
| @@ -185,7 +193,7 @@ public abstract class CloudConfig | @@ -185,7 +193,7 @@ public abstract class CloudConfig | ||
| 185 | if (value != remoteValue) | 193 | if (value != remoteValue) |
| 186 | { | 194 | { |
| 187 | value = remoteValue; | 195 | value = remoteValue; |
| 188 | - this.setValue(value); | 196 | + this.<Integer>setValue(value); |
| 189 | } | 197 | } |
| 190 | } | 198 | } |
| 191 | 199 | ||
| @@ -235,7 +243,7 @@ public abstract class CloudConfig | @@ -235,7 +243,7 @@ public abstract class CloudConfig | ||
| 235 | if (value != remoteValue) | 243 | if (value != remoteValue) |
| 236 | { | 244 | { |
| 237 | value = remoteValue; | 245 | value = remoteValue; |
| 238 | - this.setValue(value); | 246 | + this.<Float>setValue(value); |
| 239 | } | 247 | } |
| 240 | } | 248 | } |
| 241 | 249 | ||
| @@ -282,16 +290,22 @@ public abstract class CloudConfig | @@ -282,16 +290,22 @@ public abstract class CloudConfig | ||
| 282 | } | 290 | } |
| 283 | else if (CloudConfig.this.preferences.has(this.name)) | 291 | else if (CloudConfig.this.preferences.has(this.name)) |
| 284 | { | 292 | { |
| 285 | - boolean remoteValue = "true".equals(CloudConfig.this.preferences.get(this.name)); | 293 | + boolean remoteValue = this.tryParse(CloudConfig.this.preferences.get(this.name), value); |
| 286 | if (value != remoteValue) | 294 | if (value != remoteValue) |
| 287 | { | 295 | { |
| 288 | value = remoteValue; | 296 | value = remoteValue; |
| 289 | - this.setValue(value); | 297 | + this.<Boolean>setValue(value); |
| 290 | } | 298 | } |
| 291 | } | 299 | } |
| 292 | 300 | ||
| 293 | this.localValue = value; | 301 | this.localValue = value; |
| 294 | } | 302 | } |
| 303 | + | ||
| 304 | + private boolean tryParse(String string, boolean value) | ||
| 305 | + { | ||
| 306 | + boolean isTrue = "true".equals(string); | ||
| 307 | + return (isTrue || "false".equals(string)) ? isTrue : value; | ||
| 308 | + } | ||
| 295 | } | 309 | } |
| 296 | 310 | ||
| 297 | static final class UpdateTicker implements InitCompleteListener | 311 | static final class UpdateTicker implements InitCompleteListener |
| @@ -474,11 +488,13 @@ public abstract class CloudConfig | @@ -474,11 +488,13 @@ public abstract class CloudConfig | ||
| 474 | if (Modifier.isTransient(modifiers) || Modifier.isStatic(modifiers)) | 488 | if (Modifier.isTransient(modifiers) || Modifier.isStatic(modifiers)) |
| 475 | { | 489 | { |
| 476 | LiteLoaderLogger.debug("Skipping transient field %s in %s", field.getName(), this.getClass().getName()); | 490 | LiteLoaderLogger.debug("Skipping transient field %s in %s", field.getName(), this.getClass().getName()); |
| 491 | + continue; | ||
| 477 | } | 492 | } |
| 478 | 493 | ||
| 479 | if (!CloudConfig.keyPattern.matcher(field.getName()).matches()) | 494 | if (!CloudConfig.keyPattern.matcher(field.getName()).matches()) |
| 480 | { | 495 | { |
| 481 | LiteLoaderLogger.warning("Skipping field with invalid name %s in %s", field.getName(), this.getClass().getName()); | 496 | LiteLoaderLogger.warning("Skipping field with invalid name %s in %s", field.getName(), this.getClass().getName()); |
| 497 | + continue; | ||
| 482 | } | 498 | } |
| 483 | 499 | ||
| 484 | Class<?> type = field.getType(); | 500 | Class<?> type = field.getType(); |
src/main/java/com/mumfrey/liteloader/core/LiteLoaderMods.java
| @@ -465,6 +465,7 @@ public class LiteLoaderMods | @@ -465,6 +465,7 @@ public class LiteLoaderMods | ||
| 465 | } | 465 | } |
| 466 | catch (Throwable th) | 466 | catch (Throwable th) |
| 467 | { | 467 | { |
| 468 | + th.printStackTrace(); | ||
| 468 | this.onModLoadFailed(container, mod.getModClassName(), "an error occurred", th); | 469 | this.onModLoadFailed(container, mod.getModClassName(), "an error occurred", th); |
| 469 | this.registerModStartupError(mod, th); | 470 | this.registerModStartupError(mod, th); |
| 470 | } | 471 | } |