Skip to content

Commit 283e291

Browse files
authored
Refactor PlaybackSerialiser (#203)
- Added new PlaybackSerialiser - Added support for subticks in the TASfile - Removed ControlBytes and added FileCommands - Moved desyncMonitoring to FileCommands - Added PlaybackMetadata - Added SerialiserFlavor - Updated registry system - Fixed keybinds not working in chat guis - Grouped events
2 parents f929f81 + c7a4493 commit 283e291

File tree

107 files changed

+6813
-2494
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

107 files changed

+6813
-2494
lines changed

.gitattributes

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
*.java diff=java
2+
*.md diff=markdown

src/main/java/com/minecrafttas/mctcommon/Configuration.java

+76-51
Original file line numberDiff line numberDiff line change
@@ -5,40 +5,76 @@
55
import java.io.FileNotFoundException;
66
import java.io.FileOutputStream;
77
import java.io.IOException;
8-
import java.util.HashMap;
8+
import java.util.ArrayList;
99
import java.util.InvalidPropertiesFormatException;
10-
import java.util.Map;
10+
import java.util.LinkedHashMap;
11+
import java.util.List;
1112
import java.util.Properties;
1213

14+
import com.minecrafttas.mctcommon.Configuration.ConfigOptions;
15+
import com.minecrafttas.mctcommon.registry.AbstractRegistry;
16+
import com.minecrafttas.mctcommon.registry.Registerable;
1317

1418
/**
1519
* A <i>very</i> simple configuration class
20+
*
1621
* @author Scribble
17-
*
1822
*/
1923

20-
public class Configuration {
21-
24+
public class Configuration extends AbstractRegistry<ConfigOptions> {
25+
2226
private File file;
23-
27+
2428
private Properties properties;
2529

2630
private String comment;
27-
31+
2832
public Configuration(String comment, File configFile) {
33+
super("Configuration", new LinkedHashMap<>());
34+
2935
file = configFile;
3036
this.comment = comment;
37+
}
38+
39+
protected final List<ConfigOptions> configRegistry = new ArrayList<>();
40+
41+
@Override
42+
public void register(ConfigOptions registryObject) {
43+
if(registryObject == null) {
44+
return;
45+
}
46+
47+
if(configRegistry.contains(registryObject)) {
48+
return;
49+
}
50+
51+
configRegistry.add(registryObject);
52+
}
53+
54+
@Override
55+
public void unregister(ConfigOptions registryObject) {
56+
if (registryObject == null) {
57+
return;
58+
}
59+
60+
if (!configRegistry.contains(registryObject)) {
61+
return;
62+
}
3163

32-
if(file.exists()) {
33-
properties = load();
64+
configRegistry.remove(registryObject);
65+
}
66+
67+
public void load() {
68+
if (file.exists()) {
69+
properties = loadInner();
3470
}
35-
if(properties == null || !file.exists()) {
71+
if (properties == null || !file.exists()) {
3672
properties = generateDefault();
3773
save();
38-
}
74+
}
3975
}
4076

41-
public Properties load() {
77+
private Properties loadInner() {
4278
FileInputStream fis;
4379
Properties newProp = new Properties();
4480
try {
@@ -57,11 +93,11 @@ public Properties load() {
5793
}
5894
return newProp;
5995
}
60-
96+
6197
public void save() {
6298
save(file);
6399
}
64-
100+
65101
public void save(File file) {
66102
try {
67103
FileOutputStream fos = new FileOutputStream(file);
@@ -71,73 +107,62 @@ public void save(File file) {
71107
e.printStackTrace();
72108
}
73109
}
74-
110+
75111
public Properties generateDefault() {
76112
Properties newProperties = new Properties();
77-
newProperties.putAll(ConfigOptions.getDefaultValues());
113+
configRegistry.forEach((configOption)->{
114+
newProperties.put(configOption.getConfigKey(), configOption.getDefaultValue());
115+
});
78116
return newProperties;
79117
}
80-
118+
81119
public String get(ConfigOptions configOption) {
82-
return properties.getProperty(configOption.configKey);
120+
return properties.getProperty(configOption.getConfigKey(), configOption.getDefaultValue());
83121
}
84-
122+
85123
public int getInt(ConfigOptions configOption) {
86124
return Integer.parseInt(get(configOption));
87125
}
88-
126+
89127
public boolean getBoolean(ConfigOptions configOption) {
90128
return Boolean.parseBoolean(get(configOption));
91129
}
92-
130+
93131
public boolean has(ConfigOptions configOption) {
94-
return properties.contains(configOption.configKey);
132+
return properties.contains(configOption.getConfigKey());
95133
}
96-
134+
97135
public void set(ConfigOptions configOption, String value) {
98-
properties.setProperty(configOption.configKey, value);
136+
if(properties == null) {
137+
throw new NullPointerException("Config needs to be loaded first, before trying to set a value");
138+
}
139+
properties.setProperty(configOption.getConfigKey(), value);
99140
save();
100141
}
101-
142+
102143
public void set(ConfigOptions configOption, int value) {
103144
String val = Integer.toString(value);
104145
set(configOption, val);
105146
}
106-
147+
107148
public void set(ConfigOptions configOption, boolean value) {
108149
String val = Boolean.toString(value);
109150
set(configOption, val);
110151
}
111-
152+
112153
public void reset(ConfigOptions configOption) {
113-
set(configOption, configOption.defaultValue);
154+
set(configOption, configOption.getDefaultValue());
114155
}
115-
156+
116157
public void delete(ConfigOptions configOption) {
117158
properties.remove(configOption);
118159
save();
119160
}
120-
121-
public static enum ConfigOptions{
122-
FileToOpen("fileToOpen", ""),
123-
ServerConnection("serverConnection", "");
124-
125-
private String configKey;
126-
private String defaultValue;
127-
128-
private ConfigOptions(String configKey, String defaultValue) {
129-
this.configKey = configKey;
130-
this.defaultValue = defaultValue;
131-
}
132-
133-
public static Map<String, String> getDefaultValues() {
134-
Map<String, String> out = new HashMap<>();
135-
for (ConfigOptions configthing : values()) {
136-
if(configthing.defaultValue!=null) {
137-
out.put(configthing.configKey, configthing.defaultValue);
138-
}
139-
}
140-
return out;
141-
}
161+
162+
public interface ConfigOptions extends Registerable {
163+
164+
public String getDefaultValue();
165+
166+
public String getConfigKey();
142167
}
143168
}

src/main/java/com/minecrafttas/mctcommon/KeybindManager.java

+13-10
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ public class KeybindManager implements EventClientGameLoop {
2323

2424
public static class Keybind {
2525

26-
private KeyBinding keyBinding;
27-
private String category;
28-
private Runnable onKeyDown;
29-
private IsKeyDownFunc isKeyDownFunc;
26+
public final KeyBinding vanillaKeyBinding;
27+
private final String category;
28+
private final Runnable onKeyDown;
29+
private final IsKeyDownFunc isKeyDownFunc;
3030

3131
/**
3232
* Initialize keybind
@@ -49,12 +49,16 @@ public Keybind(String name, String category, int defaultKey, Runnable onKeyDown)
4949
* @param onKeyDown Will be run when the keybind is pressed
5050
*/
5151
public Keybind(String name, String category, int defaultKey, Runnable onKeyDown, IsKeyDownFunc func) {
52-
this.keyBinding = new KeyBinding(name, defaultKey, category);
52+
this.vanillaKeyBinding = new KeyBinding(name, defaultKey, category);
5353
this.category = category;
5454
this.onKeyDown = onKeyDown;
5555
this.isKeyDownFunc = func;
5656
}
5757

58+
@Override
59+
public String toString() {
60+
return this.vanillaKeyBinding.getKeyDescription();
61+
}
5862
}
5963

6064
private List<Keybind> keybindings;
@@ -77,7 +81,7 @@ public KeybindManager(IsKeyDownFunc defaultFunction) {
7781
public void onRunClientGameLoop(Minecraft mc) {
7882
for (Keybind keybind : this.keybindings){
7983
IsKeyDownFunc keyDown = keybind.isKeyDownFunc != null ? keybind.isKeyDownFunc : defaultFunction;
80-
if(keyDown.isKeyDown(keybind.keyBinding)){
84+
if(keyDown.isKeyDown(keybind.vanillaKeyBinding)){
8185
keybind.onKeyDown.run();
8286
}
8387
}
@@ -89,9 +93,9 @@ public void onRunClientGameLoop(Minecraft mc) {
8993
*
9094
* @param keybind Keybind to register
9195
*/
92-
public KeyBinding registerKeybind(Keybind keybind) {
96+
public void registerKeybind(Keybind keybind) {
9397
this.keybindings.add(keybind);
94-
KeyBinding keyBinding = keybind.keyBinding;
98+
KeyBinding keyBinding = keybind.vanillaKeyBinding;
9599

96100
// add category
97101
GameSettings options = Minecraft.getMinecraft().gameSettings;
@@ -100,9 +104,8 @@ public KeyBinding registerKeybind(Keybind keybind) {
100104

101105
// add keybinding
102106
options.keyBindings = ArrayUtils.add(options.keyBindings, keyBinding);
103-
return keyBinding;
104107
}
105-
108+
106109
@FunctionalInterface
107110
public static interface IsKeyDownFunc {
108111

src/main/java/com/minecrafttas/mctcommon/LanguageManager.java

+15-8
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
11
package com.minecrafttas.mctcommon;
22

3+
import java.io.IOException;
4+
import java.io.InputStream;
5+
import java.io.InputStreamReader;
6+
import java.nio.charset.StandardCharsets;
7+
import java.util.Collection;
8+
import java.util.HashMap;
9+
import java.util.HashSet;
10+
import java.util.List;
11+
import java.util.Map;
12+
import java.util.Set;
13+
import java.util.regex.Pattern;
14+
15+
import org.apache.commons.io.IOUtils;
16+
317
import com.google.common.base.Splitter;
418
import com.google.common.collect.Iterables;
519
import com.google.gson.Gson;
20+
621
import net.minecraft.client.resources.IResource;
722
import net.minecraft.client.resources.IResourceManager;
823
import net.minecraft.util.ResourceLocation;
9-
import org.apache.commons.io.IOUtils;
10-
11-
import java.io.IOException;
12-
import java.io.InputStream;
13-
import java.io.InputStreamReader;
14-
import java.nio.charset.StandardCharsets;
15-
import java.util.*;
16-
import java.util.regex.Pattern;
1724

1825
public class LanguageManager {
1926

src/main/java/com/minecrafttas/mctcommon/events/EventClient.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.minecrafttas.mctcommon.events;
22

33
import com.minecrafttas.mctcommon.events.EventListenerRegistry.EventBase;
4-
import com.minecrafttas.mctcommon.server.Client;
4+
import com.minecrafttas.mctcommon.networking.Client;
55
import com.mojang.authlib.GameProfile;
66

77
import net.minecraft.client.Minecraft;

src/main/java/com/minecrafttas/mctcommon/events/EventServer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.minecrafttas.mctcommon.events;
22

33
import com.minecrafttas.mctcommon.events.EventListenerRegistry.EventBase;
4-
import com.minecrafttas.mctcommon.server.Client;
4+
import com.minecrafttas.mctcommon.networking.Client;
55

66
import net.minecraft.entity.player.EntityPlayerMP;
77
import net.minecraft.server.MinecraftServer;

src/main/java/com/minecrafttas/mctcommon/server/ByteBufferBuilder.java src/main/java/com/minecrafttas/mctcommon/networking/ByteBufferBuilder.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package com.minecrafttas.mctcommon.server;
1+
package com.minecrafttas.mctcommon.networking;
22

33
import java.nio.ByteBuffer;
44
import java.util.ArrayList;
55
import java.util.UUID;
66

7-
import com.minecrafttas.mctcommon.server.interfaces.PacketID;
7+
import com.minecrafttas.mctcommon.networking.interfaces.PacketID;
88

99
/**
1010
* Helper method for creating byte buffers which get pooled from a

src/main/java/com/minecrafttas/mctcommon/server/Client.java src/main/java/com/minecrafttas/mctcommon/networking/Client.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package com.minecrafttas.mctcommon.server;
1+
package com.minecrafttas.mctcommon.networking;
22

33
import static com.minecrafttas.mctcommon.MCTCommon.Client;
44
import static com.minecrafttas.mctcommon.MCTCommon.LOGGER;
55
import static com.minecrafttas.mctcommon.MCTCommon.Server;
6-
import static com.minecrafttas.mctcommon.server.SecureList.BUFFER_SIZE;
6+
import static com.minecrafttas.mctcommon.networking.SecureList.BUFFER_SIZE;
77

88
import java.io.IOException;
99
import java.net.InetSocketAddress;
@@ -22,10 +22,10 @@
2222
import com.minecrafttas.mctcommon.events.EventClient.EventDisconnectClient;
2323
import com.minecrafttas.mctcommon.events.EventListenerRegistry;
2424
import com.minecrafttas.mctcommon.events.EventServer.EventClientCompleteAuthentication;
25-
import com.minecrafttas.mctcommon.server.exception.InvalidPacketException;
26-
import com.minecrafttas.mctcommon.server.exception.PacketNotImplementedException;
27-
import com.minecrafttas.mctcommon.server.exception.WrongSideException;
28-
import com.minecrafttas.mctcommon.server.interfaces.PacketID;
25+
import com.minecrafttas.mctcommon.networking.exception.InvalidPacketException;
26+
import com.minecrafttas.mctcommon.networking.exception.PacketNotImplementedException;
27+
import com.minecrafttas.mctcommon.networking.exception.WrongSideException;
28+
import com.minecrafttas.mctcommon.networking.interfaces.PacketID;
2929

3030
/**
3131
* A custom asynchronous client

src/main/java/com/minecrafttas/mctcommon/server/CompactPacketHandler.java src/main/java/com/minecrafttas/mctcommon/networking/CompactPacketHandler.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
package com.minecrafttas.mctcommon.server;
1+
package com.minecrafttas.mctcommon.networking;
22

33
import java.nio.ByteBuffer;
44

5-
import com.minecrafttas.mctcommon.server.exception.PacketNotImplementedException;
5+
import com.minecrafttas.mctcommon.networking.exception.PacketNotImplementedException;
66

77
@FunctionalInterface
88
public interface CompactPacketHandler {

0 commit comments

Comments
 (0)