Skip to content

Commit e2107bc

Browse files
committed
[Flavor] Add header deserialisation to alpha flavor
- Add test for alpha flavor - Made some metadata values protected
1 parent aaaf65f commit e2107bc

File tree

10 files changed

+392
-57
lines changed

10 files changed

+392
-57
lines changed

src/main/java/com/minecrafttas/tasmod/playback/filecommands/PlaybackFileCommandsRegistry.java

+27-23
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
public class PlaybackFileCommandsRegistry extends AbstractRegistry<PlaybackFileCommandExtension> implements EventPlaybackClient.EventRecordTick, EventPlaybackClient.EventPlaybackTick, EventPlaybackClient.EventRecordClear {
1717

1818
private List<PlaybackFileCommandExtension> enabledExtensions = new ArrayList<>();
19-
19+
2020
private Configuration config = null;
21-
21+
2222
public PlaybackFileCommandsRegistry() {
2323
super("FILECOMMAND_REGISTRY", new LinkedHashMap<>());
2424
}
@@ -38,16 +38,16 @@ public void unregister(PlaybackFileCommandExtension extension) {
3838
public boolean setEnabled(String extensionName, boolean enabled) {
3939
return setEnabled(extensionName, enabled, true);
4040
}
41-
41+
4242
public boolean setEnabled(String extensionName, boolean enabled, boolean saveToConfig) {
4343
PlaybackFileCommandExtension extension = REGISTRY.get(extensionName);
44-
if(extension == null) {
44+
if (extension == null) {
4545
return false;
4646
}
4747
extension.setEnabled(enabled);
4848
enabledExtensions = getEnabled();
49-
50-
if(saveToConfig) {
49+
50+
if (saveToConfig) {
5151
saveConfig();
5252
}
5353
return true;
@@ -59,16 +59,20 @@ private void disableAll() {
5959
});
6060
}
6161

62+
public void setEnabled(String... extensionNames) {
63+
setEnabled(Arrays.asList(extensionNames));
64+
}
65+
6266
public void setEnabled(List<String> extensionNames) {
6367
setEnabled(extensionNames, false);
6468
}
65-
69+
6670
public void setEnabled(List<String> extensionNames, boolean saveToConfig) {
6771
disableAll();
6872
for (String name : extensionNames) {
6973
setEnabled(name, true, false);
7074
}
71-
if(saveToConfig)
75+
if (saveToConfig)
7276
saveConfig();
7377
}
7478

@@ -83,24 +87,24 @@ public List<PlaybackFileCommandExtension> getEnabled() {
8387

8488
return out;
8589
}
86-
87-
public List<PlaybackFileCommandExtension> getAll(){
90+
91+
public List<PlaybackFileCommandExtension> getAll() {
8892
return new ArrayList<>(REGISTRY.values());
8993
}
90-
94+
9195
@Override
9296
public void onRecordTick(long index, TickContainer container) {
9397
enabledExtensions.forEach(extension -> {
94-
if(extension.isEnabled()) {
98+
if (extension.isEnabled()) {
9599
extension.onRecord(index, container);
96100
}
97101
});
98102
}
99-
103+
100104
@Override
101105
public void onPlaybackTick(long index, TickContainer container) {
102106
enabledExtensions.forEach(extension -> {
103-
if(extension.isEnabled()) {
107+
if (extension.isEnabled()) {
104108
extension.onPlayback(index, container);
105109
}
106110
});
@@ -109,8 +113,8 @@ public void onPlaybackTick(long index, TickContainer container) {
109113
public PlaybackFileCommandContainer handleOnSerialiseInline(long currentTick, TickContainer container) {
110114
PlaybackFileCommandContainer out = new PlaybackFileCommandContainer();
111115
for (PlaybackFileCommandExtension extension : enabledExtensions) {
112-
PlaybackFileCommandContainer extensionContainer=extension.onSerialiseInlineComment(currentTick, container);
113-
if(extensionContainer!=null) {
116+
PlaybackFileCommandContainer extensionContainer = extension.onSerialiseInlineComment(currentTick, container);
117+
if (extensionContainer != null) {
114118
out.putAll(extensionContainer);
115119
}
116120
}
@@ -120,8 +124,8 @@ public PlaybackFileCommandContainer handleOnSerialiseInline(long currentTick, Ti
120124
public PlaybackFileCommandContainer handleOnSerialiseEndline(long currentTick, TickContainer container) {
121125
PlaybackFileCommandContainer out = new PlaybackFileCommandContainer();
122126
for (PlaybackFileCommandExtension extension : enabledExtensions) {
123-
PlaybackFileCommandContainer extensionContainer=extension.onSerialiseEndlineComment(currentTick, container);
124-
if(extensionContainer!=null) {
127+
PlaybackFileCommandContainer extensionContainer = extension.onSerialiseEndlineComment(currentTick, container);
128+
if (extensionContainer != null) {
125129
out.putAll(extensionContainer);
126130
}
127131
}
@@ -155,22 +159,22 @@ public void setConfig(Configuration config) {
155159
this.config = config;
156160
loadConfig();
157161
}
158-
162+
159163
private void loadConfig() {
160164
if (config == null) {
161165
return;
162166
}
163167
String enabled = config.get(TASmodConfig.EnabledFileCommands);
164168
setEnabled(Arrays.asList(enabled.split(", ")));
165169
}
166-
170+
167171
private void saveConfig() {
168172
if (config == null) {
169173
return;
170174
}
171-
List<String> nameList = new ArrayList<>();
172-
173-
enabledExtensions.forEach(element ->{
175+
List<String> nameList = new ArrayList<>();
176+
177+
enabledExtensions.forEach(element -> {
174178
nameList.add(element.getExtensionName());
175179
});
176180
config.set(TASmodConfig.EnabledFileCommands, String.join(", ", nameList));

src/main/java/com/minecrafttas/tasmod/playback/filecommands/builtin/DesyncMonitorFileCommandExtension.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.minecrafttas.tasmod.playback.filecommands.builtin;
22

3-
import java.io.File;
43
import java.io.IOException;
54
import java.io.Serializable;
65
import java.text.NumberFormat;
@@ -30,13 +29,12 @@
3029
*/
3130
public class DesyncMonitorFileCommandExtension extends PlaybackFileCommandExtension implements EventPlaybackClient.EventControllerStateChange {
3231

33-
private File tempDir = new File(Minecraft.getMinecraft().mcDataDir.getAbsolutePath() + File.separator + "saves" + File.separator + "tasfiles" + File.separator + "temp" + File.separator + "monitoring");
34-
35-
private BigArrayList<MonitorContainer> monitorContainer = new BigArrayList<MonitorContainer>(tempDir.toString());
32+
private BigArrayList<MonitorContainer> monitorContainer;
3633

3734
private MonitorContainer currentValues;
3835

3936
public DesyncMonitorFileCommandExtension() {
37+
this.monitorContainer = new BigArrayList<MonitorContainer>();
4038
enabled = true;
4139
}
4240

@@ -333,7 +331,7 @@ public void onClear() {
333331
} catch (IOException e) {
334332
e.printStackTrace();
335333
}
336-
monitorContainer = new BigArrayList<MonitorContainer>(tempDir.toString());
334+
monitorContainer = new BigArrayList<MonitorContainer>();
337335
lastStatus = TextFormatting.GRAY + "Empty";
338336
lastPos = "";
339337
lastMotion = "";

src/main/java/com/minecrafttas/tasmod/playback/filecommands/builtin/OptionsFileCommandExtension.java

+5
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ public void onPlayback(long tick, TickContainer tickContainer) {
5656
for (PlaybackFileCommand command : line) {
5757
String[] args = command.getArgs();
5858
if (args.length == 1) {
59+
/*
60+
* Ok this may seem dumb, but Boolean.parseBoolean returns false,
61+
* even if something other then true or false was passed...
62+
* If someone finds something less idiotic please tell me...
63+
*/
5964
switch (args[0]) {
6065
case "true":
6166
shouldRenderHud = true;

src/main/java/com/minecrafttas/tasmod/playback/metadata/PlaybackMetadata.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ public PlaybackMetadata(PlaybackMetadataExtension extension) {
2323
this(extension.getExtensionName());
2424
}
2525

26-
private PlaybackMetadata(String extensionName) {
26+
public PlaybackMetadata(String extensionName) {
2727
this.extensionName = extensionName;
2828
this.data = new LinkedHashMap<String, String>();
2929
}
3030

31-
private PlaybackMetadata(String extensionName, LinkedHashMap<String, String> data) {
31+
public PlaybackMetadata(String extensionName, LinkedHashMap<String, String> data) {
3232
this.extensionName = extensionName;
3333
this.data = data;
3434
}

src/main/java/com/minecrafttas/tasmod/playback/metadata/builtin/CreditsMetadataExtension.java

+14-10
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,24 @@ public class CreditsMetadataExtension extends PlaybackMetadataExtension implemen
2525
/**
2626
* The title/category of the TAS (e.g. KillSquid - Any% Glitched)
2727
*/
28-
private String title = "Insert TAS category here";
28+
protected String title = "Insert TAS category here";
2929
/**
3030
* The author(s) of the TAS (e.g. Scribble, Pancake)
3131
*/
32-
private String authors = "Insert author here";
32+
protected String authors = "Insert author here";
3333
/**
3434
* How long the TAS is going to take (e.g. 00:01.0 or 20ticks)
3535
*/
36-
private String playtime = "00:00.0";
36+
protected String playtime = "00:00.0";
3737
/**
3838
* How often a savestate was loaded as a measurement of effort (e.g. 200)
3939
*/
40-
private int rerecords = 0;
40+
protected int rerecords = 0;
4141

4242
/**
4343
* If the credits where already printed in this instance
4444
*/
45-
private boolean creditsPrinted = false;
45+
protected boolean creditsPrinted = false;
4646

4747
@Override
4848
public String getExtensionName() {
@@ -84,17 +84,21 @@ public PlaybackMetadata onStore() {
8484

8585
@Override
8686
public void onLoad(PlaybackMetadata metadata) {
87-
title = metadata.getValue(CreditFields.Title);
88-
authors = metadata.getValue(CreditFields.Author);
89-
playtime = metadata.getValue(CreditFields.PlayTime);
87+
title = getOrDefault(metadata.getValue(CreditFields.Title), title);
88+
authors = getOrDefault(metadata.getValue(CreditFields.Author), authors);
89+
playtime = getOrDefault(metadata.getValue(CreditFields.PlayTime), playtime);
9090
try {
91-
rerecords = Integer.parseInt(metadata.getValue(CreditFields.Rerecords));
91+
rerecords = Integer.parseInt(getOrDefault(metadata.getValue(CreditFields.Rerecords), Integer.toString(rerecords)));
9292
} catch (NumberFormatException e) {
9393
rerecords = 0;
9494
throw new PlaybackLoadException(e);
9595
}
9696
}
9797

98+
protected String getOrDefault(String value, String defaultVal) {
99+
return value != null ? value : defaultVal;
100+
}
101+
98102
@Override
99103
public void onClear() {
100104
title = "Insert TAS category here";
@@ -119,7 +123,7 @@ public void onPlaybackJoinedWorld(TASstate state) {
119123
}
120124
}
121125

122-
private void printMessage(String msg, TextFormatting format) {
126+
protected void printMessage(String msg, TextFormatting format) {
123127
String formatString = "";
124128
if (format != null)
125129
formatString = format.toString();

src/main/java/com/minecrafttas/tasmod/playback/metadata/builtin/StartpositionMetadataExtension.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@ public class StartpositionMetadataExtension extends PlaybackMetadataExtension im
3636
/**
3737
* The startposition of the playback
3838
*/
39-
StartPosition startPosition = null;
39+
protected StartPosition startPosition = null;
4040

4141
public static class StartPosition {
4242

43-
final double x;
44-
final double y;
45-
final double z;
46-
final float pitch;
47-
final float yaw;
43+
public final double x;
44+
public final double y;
45+
public final double z;
46+
public final float pitch;
47+
public final float yaw;
4848

4949
public StartPosition(double x, double y, double z, float pitch, float yaw) {
5050
this.x = x;

src/main/java/com/minecrafttas/tasmod/playback/tasfile/PlaybackSerialiser.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ public static BigArrayList<TickContainer> loadFromFile(File file, SerialiserFlav
233233
*/
234234
public static SerialiserFlavorBase searchForFlavor(List<String> lines, List<SerialiserFlavorBase> flavorList) {
235235
for (SerialiserFlavorBase flavor : flavorList) {
236-
if (flavor.deserialiseFlavorName(lines)) {
236+
if (flavor.checkFlavorName(lines)) {
237237
return flavor.clone();
238238
}
239239
}

src/main/java/com/minecrafttas/tasmod/playback/tasfile/flavor/SerialiserFlavorBase.java

+15-2
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,13 @@ protected String joinNotEmpty(String delimiter, Iterable<String> args) {
361361
return out;
362362
}
363363

364+
/**
365+
* Joins strings together but ignores empty strings
366+
*
367+
* @param delimiter The delimiter of the joined string
368+
* @param args The strings to join
369+
* @return Joined string
370+
*/
364371
protected String joinNotEmpty(String delimiter, String... args) {
365372
return joinNotEmpty(delimiter, Arrays.asList(args));
366373
}
@@ -377,7 +384,13 @@ protected String joinNotEmpty(String delimiter, String... args) {
377384
*
378385
*/
379386

380-
public boolean deserialiseFlavorName(List<String> headerLines) {
387+
/**
388+
* <p>Checks if the name of this flavor is present in the header of the TASfile.
389+
* <p>Used to determine the flavor of the file if the flavor is not given
390+
* @param headerLines The lines from the header to check
391+
* @return True, if the flavor name is present in the header
392+
*/
393+
public boolean checkFlavorName(List<String> headerLines) {
381394
for (String line : headerLines) {
382395
Matcher matcher = extract("^Flavor: " + getExtensionName(), line);
383396

@@ -425,7 +438,7 @@ protected void deserialiseFileCommandNames(List<String> headerLines) {
425438
String extensionStrings = matcher.group(1);
426439
String[] extensionNames = extensionStrings.split(", ?");
427440

428-
TASmodAPIRegistry.PLAYBACK_FILE_COMMAND.setEnabled(Arrays.asList(extensionNames));
441+
TASmodAPIRegistry.PLAYBACK_FILE_COMMAND.setEnabled(extensionNames);
429442
return;
430443
}
431444
}

0 commit comments

Comments
 (0)