Fix markers not being removed
Markers were saved in a (Hash)Set even though they are mutable. Reducing the exposed interface to Collection allows changing the interal implementation to ArrayList which solves the problem.
This commit is contained in:
@@ -59,7 +59,7 @@ public class ReplayHandler {
|
||||
*/
|
||||
private boolean suppressCameraMovements;
|
||||
|
||||
private final Set<Marker> markers;
|
||||
private final List<Marker> markers;
|
||||
|
||||
private final GuiReplayOverlay overlay;
|
||||
|
||||
@@ -78,7 +78,7 @@ public class ReplayHandler {
|
||||
|
||||
FMLCommonHandler.instance().bus().post(new ReplayOpenEvent.Pre(this));
|
||||
|
||||
markers = new HashSet<>(replayFile.getMarkers().or(Collections.<Marker>emptySet()));
|
||||
markers = new ArrayList<>(replayFile.getMarkers().or(Collections.emptySet()));
|
||||
|
||||
replaySender = new ReplaySender(this, replayFile, asyncMode);
|
||||
|
||||
@@ -185,9 +185,9 @@ public class ReplayHandler {
|
||||
/**
|
||||
* Returns all markers.
|
||||
* When changed, {@link #saveMarkers()} should be called to save the changes.
|
||||
* @return Set of markers
|
||||
* @return Collection of markers in no particular order
|
||||
*/
|
||||
public Set<Marker> getMarkers() {
|
||||
public Collection<Marker> getMarkers() {
|
||||
return markers;
|
||||
}
|
||||
|
||||
@@ -196,7 +196,7 @@ public class ReplayHandler {
|
||||
*/
|
||||
public void saveMarkers() {
|
||||
try {
|
||||
replayFile.writeMarkers(markers);
|
||||
replayFile.writeMarkers(new HashSet<>(markers));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user