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 | 1 | package com.examplemod; |
2 | 2 | |
3 | -import com.google.gson.annotations.Expose; | |
4 | -import com.google.gson.annotations.SerializedName; | |
5 | 3 | import com.mumfrey.liteloader.PreRenderListener; |
6 | 4 | import com.mumfrey.liteloader.Tickable; |
7 | 5 | import com.mumfrey.liteloader.core.LiteLoader; |
8 | -import com.mumfrey.liteloader.modconfig.ConfigStrategy; | |
9 | -import com.mumfrey.liteloader.modconfig.ExposableOptions; | |
10 | 6 | import net.minecraft.client.Minecraft; |
11 | 7 | import net.minecraft.client.renderer.RenderGlobal; |
12 | 8 | import net.minecraft.client.settings.KeyBinding; |
... | ... | @@ -20,7 +16,6 @@ import java.io.File; |
20 | 16 | * |
21 | 17 | * @author Adam Mummery-Smith |
22 | 18 | */ |
23 | -@ExposableOptions(strategy = ConfigStrategy.Versioned, filename="examplemod.json") | |
24 | 19 | public class LiteModExample implements Tickable, PreRenderListener |
25 | 20 | { |
26 | 21 | /** |
... | ... | @@ -35,13 +30,7 @@ public class LiteModExample implements Tickable, PreRenderListener |
35 | 30 | */ |
36 | 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 | 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 | 77 | // a convenience method for this |
89 | 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 | 102 | { |
114 | 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 | 109 | else |
121 | 110 | { |
122 | 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 | 115 | // Our @Expose annotations control what properties get saved, this tells liteloader to | ... | ... |