Commit 4acf2cc6b8328f64873992657179297efb01ae17
1 parent
e9bc0b2b
Example of replacing local mod config with cloud-based config
Showing
2 changed files
with
48 additions
and
18 deletions
src/main/java/com/examplemod/ClockCloudConfig.java
0 → 100644
1 | +package com.examplemod; | ||
2 | + | ||
3 | +import com.mumfrey.liteloader.modconfig.CloudConfig; | ||
4 | +import com.mumfrey.webprefs.WebPreferencesManager; | ||
5 | + | ||
6 | +public class ClockCloudConfig extends CloudConfig | ||
7 | +{ | ||
8 | + /** | ||
9 | + * Replicated variable, this will be synchronised with the cloud service | ||
10 | + */ | ||
11 | + public int size = 64; | ||
12 | + | ||
13 | + /** | ||
14 | + * Replicated variable, this will also be synchronised with the cloud | ||
15 | + * service | ||
16 | + */ | ||
17 | + public boolean visible = true; | ||
18 | + | ||
19 | + /** | ||
20 | + * Cached so we can apply values to the clock when received, we could also | ||
21 | + * have this object call back against the mod for example but this is | ||
22 | + * simpler | ||
23 | + */ | ||
24 | + private transient Clock clock; | ||
25 | + | ||
26 | + public ClockCloudConfig(Clock clock) | ||
27 | + { | ||
28 | + super(WebPreferencesManager.getDefault(), true); | ||
29 | + this.clock = clock; | ||
30 | + } | ||
31 | + | ||
32 | + /* (non-Javadoc) | ||
33 | + * @see com.mumfrey.liteloader.modconfig.CloudConfig#onUpdated() | ||
34 | + */ | ||
35 | + @Override | ||
36 | + protected void onUpdated() | ||
37 | + { | ||
38 | + this.clock.setVisible(this.visible); | ||
39 | + this.clock.setSize(this.size); | ||
40 | + } | ||
41 | +} |
src/main/java/com/examplemod/LiteModExample.java
1 | package com.examplemod; | 1 | package com.examplemod; |
2 | 2 | ||
3 | -import com.google.gson.annotations.Expose; | ||
4 | -import com.google.gson.annotations.SerializedName; | ||
5 | import com.mumfrey.liteloader.PreRenderListener; | 3 | import com.mumfrey.liteloader.PreRenderListener; |
6 | import com.mumfrey.liteloader.Tickable; | 4 | import com.mumfrey.liteloader.Tickable; |
7 | import com.mumfrey.liteloader.core.LiteLoader; | 5 | import com.mumfrey.liteloader.core.LiteLoader; |
8 | -import com.mumfrey.liteloader.modconfig.ConfigStrategy; | ||
9 | -import com.mumfrey.liteloader.modconfig.ExposableOptions; | ||
10 | import net.minecraft.client.Minecraft; | 6 | import net.minecraft.client.Minecraft; |
11 | import net.minecraft.client.renderer.RenderGlobal; | 7 | import net.minecraft.client.renderer.RenderGlobal; |
12 | import net.minecraft.client.settings.KeyBinding; | 8 | import net.minecraft.client.settings.KeyBinding; |
@@ -20,7 +16,6 @@ import java.io.File; | @@ -20,7 +16,6 @@ import java.io.File; | ||
20 | * | 16 | * |
21 | * @author Adam Mummery-Smith | 17 | * @author Adam Mummery-Smith |
22 | */ | 18 | */ |
23 | -@ExposableOptions(strategy = ConfigStrategy.Versioned, filename="examplemod.json") | ||
24 | public class LiteModExample implements Tickable, PreRenderListener | 19 | public class LiteModExample implements Tickable, PreRenderListener |
25 | { | 20 | { |
26 | /** | 21 | /** |
@@ -35,13 +30,7 @@ public class LiteModExample implements Tickable, PreRenderListener | @@ -35,13 +30,7 @@ public class LiteModExample implements Tickable, PreRenderListener | ||
35 | */ | 30 | */ |
36 | private static KeyBinding clockKeyBinding = new KeyBinding("key.clock.toggle", Keyboard.KEY_F12, "key.categories.litemods"); | 31 | private static KeyBinding clockKeyBinding = new KeyBinding("key.clock.toggle", Keyboard.KEY_F12, "key.categories.litemods"); |
37 | 32 | ||
38 | - @Expose | ||
39 | - @SerializedName("clock_size") | ||
40 | - private int clockSize = 64; | ||
41 | - | ||
42 | - @Expose | ||
43 | - @SerializedName("clock_visible") | ||
44 | - private boolean clockVisible = true; | 33 | + private ClockCloudConfig preferences = new ClockCloudConfig(this.clock); |
45 | 34 | ||
46 | /** | 35 | /** |
47 | * Default constructor. All LiteMods must have a default constructor. In general you should do very little | 36 | * Default constructor. All LiteMods must have a default constructor. In general you should do very little |
@@ -88,8 +77,8 @@ public class LiteModExample implements Tickable, PreRenderListener | @@ -88,8 +77,8 @@ public class LiteModExample implements Tickable, PreRenderListener | ||
88 | // a convenience method for this | 77 | // a convenience method for this |
89 | LiteLoader.getInput().registerKeyBinding(LiteModExample.clockKeyBinding); | 78 | LiteLoader.getInput().registerKeyBinding(LiteModExample.clockKeyBinding); |
90 | 79 | ||
91 | - this.clock.setSize(this.clockSize); | ||
92 | - this.clock.setVisible(this.clockVisible); | 80 | + this.clock.setSize(this.preferences.size); |
81 | + this.clock.setVisible(this.preferences.visible); | ||
93 | } | 82 | } |
94 | 83 | ||
95 | /** | 84 | /** |
@@ -113,14 +102,14 @@ public class LiteModExample implements Tickable, PreRenderListener | @@ -113,14 +102,14 @@ public class LiteModExample implements Tickable, PreRenderListener | ||
113 | { | 102 | { |
114 | if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) | 103 | if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) |
115 | { | 104 | { |
116 | - this.clockSize = (this.clockSize << 1) & 0x1FF; | ||
117 | - this.clock.setSize(this.clockSize); | ||
118 | - this.clockSize = this.clock.getSize(); | 105 | + this.preferences.size = (this.preferences.size << 1) & 0x1FF; |
106 | + this.clock.setSize(this.preferences.size); | ||
107 | + this.preferences.size = this.clock.getSize(); | ||
119 | } | 108 | } |
120 | else | 109 | else |
121 | { | 110 | { |
122 | this.clock.setVisible(!this.clock.isVisible()); | 111 | this.clock.setVisible(!this.clock.isVisible()); |
123 | - this.clockVisible = this.clock.isVisible(); | 112 | + this.preferences.visible = this.clock.isVisible(); |
124 | } | 113 | } |
125 | 114 | ||
126 | // Our @Expose annotations control what properties get saved, this tells liteloader to | 115 | // Our @Expose annotations control what properties get saved, this tells liteloader to |