Skip to content

Commit fc10ac6

Browse files
authored
[Flavor] Add Alpha flavor (#221)
- Add Alpha Flavor - Further broke down SerialiserFlavorBase into overridable components - Renamed packages with the name "integrated" to "builtin" - Add more documentation to SerialiserFlavorBase - Fixed endline comments not saving - Fixed inline comments not being written to file
2 parents 5f39737 + 97d5a13 commit fc10ac6

21 files changed

+1708
-190
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
package com.minecrafttas.mctcommon.registry;
22

3+
/**
4+
* Interface for declaring that a class can be registered by a class of type {@link AbstractRegistry}
5+
*
6+
* @author Scribble
7+
*/
38
public interface Registerable {
9+
10+
/**
11+
* @return The name of the extension that is registered
12+
*/
413
public String getExtensionName();
514
}

src/main/java/com/minecrafttas/tasmod/TASmod.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import com.minecrafttas.tasmod.commands.CommandTickrate;
2727
import com.minecrafttas.tasmod.commands.TabCompletionUtils;
2828
import com.minecrafttas.tasmod.playback.PlaybackControllerServer;
29-
import com.minecrafttas.tasmod.playback.metadata.integrated.StartpositionMetadataExtension;
29+
import com.minecrafttas.tasmod.playback.metadata.builtin.StartpositionMetadataExtension;
3030
import com.minecrafttas.tasmod.registries.TASmodPackets;
3131
import com.minecrafttas.tasmod.savestates.SavestateHandlerServer;
3232
import com.minecrafttas.tasmod.savestates.storage.SavestateMotionStorage;

src/main/java/com/minecrafttas/tasmod/TASmodClient.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,13 @@
2525
import com.minecrafttas.tasmod.handlers.LoadingScreenHandler;
2626
import com.minecrafttas.tasmod.playback.PlaybackControllerClient;
2727
import com.minecrafttas.tasmod.playback.PlaybackControllerClient.TASstate;
28-
import com.minecrafttas.tasmod.playback.filecommands.integrated.DesyncMonitorFileCommandExtension;
29-
import com.minecrafttas.tasmod.playback.filecommands.integrated.LabelFileCommandExtension;
30-
import com.minecrafttas.tasmod.playback.filecommands.integrated.OptionsFileCommandExtension;
31-
import com.minecrafttas.tasmod.playback.metadata.integrated.CreditsMetadataExtension;
32-
import com.minecrafttas.tasmod.playback.metadata.integrated.StartpositionMetadataExtension;
33-
import com.minecrafttas.tasmod.playback.tasfile.flavor.integrated.Beta1Flavor;
28+
import com.minecrafttas.tasmod.playback.filecommands.builtin.DesyncMonitorFileCommandExtension;
29+
import com.minecrafttas.tasmod.playback.filecommands.builtin.LabelFileCommandExtension;
30+
import com.minecrafttas.tasmod.playback.filecommands.builtin.OptionsFileCommandExtension;
31+
import com.minecrafttas.tasmod.playback.metadata.builtin.CreditsMetadataExtension;
32+
import com.minecrafttas.tasmod.playback.metadata.builtin.StartpositionMetadataExtension;
33+
import com.minecrafttas.tasmod.playback.tasfile.flavor.builtin.AlphaFlavor;
34+
import com.minecrafttas.tasmod.playback.tasfile.flavor.builtin.Beta1Flavor;
3435
import com.minecrafttas.tasmod.registries.TASmodAPIRegistry;
3536
import com.minecrafttas.tasmod.registries.TASmodConfig;
3637
import com.minecrafttas.tasmod.registries.TASmodKeybinds;
@@ -312,9 +313,11 @@ private void registerPlaybackMetadata(Minecraft mc) {
312313
}
313314

314315
public static Beta1Flavor betaFlavor = new Beta1Flavor();
316+
public static AlphaFlavor alphaFlavor = new AlphaFlavor();
315317

316318
private void registerSerialiserFlavors(Minecraft mc) {
317319
TASmodAPIRegistry.SERIALISER_FLAVOR.register(betaFlavor);
320+
TASmodAPIRegistry.SERIALISER_FLAVOR.register(alphaFlavor);
318321
}
319322

320323
public static DesyncMonitorFileCommandExtension desyncMonitorFileCommandExtension;

src/main/java/com/minecrafttas/tasmod/gui/InfoHud.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import com.minecrafttas.tasmod.TASmodClient;
2020
import com.minecrafttas.tasmod.events.EventClient.EventDrawHotbar;
2121
import com.minecrafttas.tasmod.playback.PlaybackControllerClient.TASstate;
22-
import com.minecrafttas.tasmod.playback.filecommands.integrated.DesyncMonitorFileCommandExtension;
22+
import com.minecrafttas.tasmod.playback.filecommands.builtin.DesyncMonitorFileCommandExtension;
2323
import com.mojang.realmsclient.gui.ChatFormatting;
2424

2525
import net.minecraft.client.Minecraft;

src/main/java/com/minecrafttas/tasmod/playback/PlaybackControllerClient.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,7 @@ public void setPlayUntil(int until) {
580580
// ==============================================================
581581

582582
/**
583-
* Storage class which stores the keyboard, mouse and subticks of a given tick.
583+
* Storage class which stores the keyboard, mouse, subticks and comments of a given tick.
584584
*
585585
* @author Scribble
586586
*
@@ -628,7 +628,13 @@ public VirtualCameraAngle getCameraAngle() {
628628
return cameraAngle;
629629
}
630630

631+
/**
632+
* @return The comment container of this controller. If {@link #comments} is null, returns an empty container.
633+
*/
631634
public CommentContainer getComments() {
635+
if (comments == null) {
636+
return new CommentContainer();
637+
}
632638
return comments;
633639
}
634640

@@ -647,6 +653,11 @@ public boolean equals(Object other) {
647653
}
648654
}
649655

656+
/**
657+
* Storage class for storing {@link CommentContainer#inlineComments inline} and {@link CommentContainer#endlineComments endline} comments
658+
*
659+
* @author Scribble
660+
*/
650661
public static class CommentContainer implements Serializable {
651662

652663
/**
@@ -835,6 +846,7 @@ public void onClientPacket(PacketID id, ByteBuffer buf, String username) throws
835846
if (mc.world != null)
836847
mc.ingameGUI.getChatGUI().printChatMessage(new TextComponentString(TextFormatting.RED + "Loading failed, something went very wrong"));
837848
LOGGER.catching(e);
849+
return;
838850
}
839851

840852
if (mc.world != null)

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public static abstract class PlaybackFileCommandExtension implements Registerabl
5959
protected final Path tempDir;
6060

6161
public PlaybackFileCommandExtension() {
62-
this(null);
62+
this((Path) null);
6363
}
6464

6565
/**
@@ -69,13 +69,18 @@ public PlaybackFileCommandExtension() {
6969
* @param tempFolderName The name of the temp folder
7070
*/
7171
public PlaybackFileCommandExtension(String tempFolderName) {
72-
if (tempFolderName == null) {
72+
this(TASmodClient.tasfiledirectory.resolve("temp").resolve(tempFolderName));
73+
}
74+
75+
public PlaybackFileCommandExtension(Path tempDirectory) {
76+
if (tempDirectory == null) {
7377
tempDir = null;
7478
return;
7579
}
76-
this.tempDir = TASmodClient.tasfiledirectory.resolve("temp").resolve(tempFolderName);
80+
81+
tempDir = tempDirectory;
7782
try {
78-
AbstractDataFile.createDirectory(tempDir);
83+
AbstractDataFile.createDirectory(tempDirectory);
7984
} catch (IOException e) {
8085
e.printStackTrace();
8186
}

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

Lines changed: 27 additions & 23 deletions
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));
Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
package com.minecrafttas.tasmod.playback.filecommands.integrated;
1+
package com.minecrafttas.tasmod.playback.filecommands.builtin;
22

33
import java.io.IOException;
44
import java.io.Serializable;
5+
import java.nio.file.Path;
56
import java.text.NumberFormat;
67
import java.text.ParseException;
78
import java.util.List;
@@ -40,12 +41,22 @@ public class DesyncMonitorFileCommandExtension extends PlaybackFileCommandExtens
4041
private MonitorContainer currentValues;
4142

4243
public DesyncMonitorFileCommandExtension() {
43-
super("monitoring");
44+
this("monitoring");
45+
}
46+
47+
public DesyncMonitorFileCommandExtension(String tempDirName) {
48+
super(tempDirName);
4449
this.monitorContainer = new BigArrayList<MonitorContainer>(tempDir.toString());
4550
// Is enabled by default
4651
enabled = true;
4752
}
4853

54+
public DesyncMonitorFileCommandExtension(Path tempDir) {
55+
super(tempDir);
56+
this.monitorContainer = new BigArrayList<>(tempDir.toString());
57+
enabled = true;
58+
}
59+
4960
@Override
5061
public String getExtensionName() {
5162
return "tasmod_desyncMonitor@v1";
@@ -124,7 +135,7 @@ public void onPlayback(long tick, TickContainer tickContainer) {
124135
private MonitorContainer loadFromFile(long tick, String[] args) throws PlaybackLoadException {
125136

126137
if (args.length != 6)
127-
throw new PlaybackLoadException("Tick %s: desyncMonitorArgsLength ");
138+
throw new PlaybackLoadException("Could not load desyncMonitor file command in tick %s. The amount of arguments doesn't match: %s", tick, args.length);
128139

129140
double x = 0;
130141
double y = 0;
@@ -349,9 +360,9 @@ public void onClear() {
349360
} catch (IOException e) {
350361
e.printStackTrace();
351362
}
352-
monitorContainer = new BigArrayList<MonitorContainer>(tempDir.toString());
363+
monitorContainer = new BigArrayList<MonitorContainer>();
353364
lastStatus = TextFormatting.GRAY + "Empty";
354365
lastPos = "";
355366
lastMotion = "";
356367
}
357-
}
368+
}
Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
package com.minecrafttas.tasmod.playback.filecommands.integrated;
1+
package com.minecrafttas.tasmod.playback.filecommands.builtin;
22

33
import java.io.IOException;
4+
import java.nio.file.Path;
45

56
import com.dselent.bigarraylist.BigArrayList;
67
import com.minecrafttas.tasmod.playback.PlaybackControllerClient.TickContainer;
@@ -16,7 +17,17 @@ public class LabelFileCommandExtension extends PlaybackFileCommandExtension {
1617
BigArrayList<PlaybackFileCommandContainer> label = new BigArrayList<>();
1718

1819
public LabelFileCommandExtension() {
19-
super("label");
20+
this("label");
21+
}
22+
23+
public LabelFileCommandExtension(String tempDirName) {
24+
super(tempDirName);
25+
this.label = new BigArrayList<>(tempDir.toString());
26+
enabled = true;
27+
}
28+
29+
public LabelFileCommandExtension(Path tempDir) {
30+
super(tempDir);
2031
this.label = new BigArrayList<>(tempDir.toString());
2132
enabled = true;
2233
}
@@ -31,6 +42,15 @@ public String[] getFileCommandNames() {
3142
return new String[] { "label" };
3243
}
3344

45+
@Override
46+
public PlaybackFileCommandContainer onSerialiseInlineComment(long tick, TickContainer tickContainer) {
47+
PlaybackFileCommandContainer fileCommandContainer = new PlaybackFileCommandContainer();
48+
if (label.size() != 0 && label.get(tick).get("label") != null) {
49+
fileCommandContainer = label.get(tick);
50+
}
51+
return fileCommandContainer;
52+
}
53+
3454
@Override
3555
public void onDeserialiseInlineComment(long tick, TickContainer container, PlaybackFileCommandContainer fileCommandContainer) {
3656
if (fileCommandContainer.containsKey("label")) {

0 commit comments

Comments
 (0)