Skip to content

Commit

Permalink
Merge pull request #65 from tpwalke2/1.20.1
Browse files Browse the repository at this point in the history
#60 Backport to 1.20.1
  • Loading branch information
tpwalke2 authored Jul 27, 2024
2 parents d260166 + 3d9b8cb commit a3e339b
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 14 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ loader_version=0.14.22
# Mod Properties
mod_id=bluemapsignmarkers
mod_name=BlueMap Sign Markers
mod_version=1.20.1-0.2.3
mod_version=1.20.1-0.2.4
mod_description=A plugin for BlueMap that creates markers from signs
maven_group=com.tpwalke2.bluemapsignmarkers
archives_base_name=bluemapsignmarkers
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,15 @@
import com.tpwalke2.bluemapsignmarkers.core.markers.MarkerGroupType;
import com.tpwalke2.bluemapsignmarkers.core.markers.MarkerSetIdentifier;
import com.tpwalke2.bluemapsignmarkers.core.reactive.ReactiveQueue;
import com.tpwalke2.bluemapsignmarkers.core.signs.SignManager;
import de.bluecolored.bluemap.api.BlueMapAPI;
import de.bluecolored.bluemap.api.BlueMapMap;
import de.bluecolored.bluemap.api.markers.MarkerSet;
import de.bluecolored.bluemap.api.markers.POIMarker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
Expand All @@ -28,6 +29,7 @@ public class BlueMapAPIConnector {
private ReactiveQueue<MarkerAction> markerActionQueue;
private Map<MarkerSetIdentifier, MarkerSet> markerSets;
private BlueMapAPI blueMapAPI;
private List<IResetHandler> resetHandlers = new ArrayList<>();

public BlueMapAPIConnector() {
resetQueue();
Expand All @@ -45,6 +47,14 @@ public void dispatch(MarkerAction action) {
markerActionQueue.enqueue(action);
}

public void addResetHandler(IResetHandler handler) {
resetHandlers.add(handler);
}

private void fireReset() {
resetHandlers.forEach(IResetHandler::reset);
}

private void resetQueue() {
markerActionQueue = new ReactiveQueue<>(
() -> BlueMapAPI.getInstance().isPresent(),
Expand Down Expand Up @@ -108,7 +118,7 @@ private void onEnable(BlueMapAPI api) {
if (markerActionQueue.isShutdown()) {
resetQueue();

SignManager.reload();
fireReset();
}

this.blueMapAPI = api;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.tpwalke2.bluemapsignmarkers.core.bluemap;

public interface IResetHandler {
void reset();
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.tpwalke2.bluemapsignmarkers.Constants;
import com.tpwalke2.bluemapsignmarkers.config.ConfigManager;
import com.tpwalke2.bluemapsignmarkers.core.bluemap.BlueMapAPIConnector;
import com.tpwalke2.bluemapsignmarkers.core.bluemap.IResetHandler;
import com.tpwalke2.bluemapsignmarkers.core.bluemap.actions.ActionFactory;
import com.tpwalke2.bluemapsignmarkers.core.markers.MarkerGroup;
import com.tpwalke2.bluemapsignmarkers.core.markers.MarkerGroupType;
Expand All @@ -17,25 +18,36 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

public class SignManager {
private static final SignManager INSTANCE = new SignManager();
public class SignManager implements IResetHandler {
private static SignManager instance;
private static final Object mutex = new Object();

private static SignManager getInstance() {
SignManager result = instance;
if (result == null) {
synchronized (mutex) {
result = instance;
if (result == null) {
instance = result = new SignManager();
}
}
}
return result;
}

private static final Logger LOGGER = LoggerFactory.getLogger(Constants.MOD_ID);

public static void addOrUpdate(SignEntry signEntry) {
INSTANCE.addOrUpdateSign(signEntry);
getInstance().addOrUpdateSign(signEntry);
}
public static void remove(SignEntryKey key) {
INSTANCE.removeByKey(key);
getInstance().removeByKey(key);
}
public static List<SignEntry> getAll() {
return INSTANCE.getAllSigns();
return getInstance().getAllSigns();
}
public static void stop() {
INSTANCE.shutdown();
}

public static void reload() {
INSTANCE.reloadSigns();
getInstance().shutdown();
}

private final BlueMapAPIConnector blueMapAPIConnector;
Expand All @@ -56,8 +68,9 @@ private SignManager() {
}

MarkerSetIdentifierCollection markerSetIdentifierCollection = new MarkerSetIdentifierCollection();
blueMapAPIConnector = new BlueMapAPIConnector();
actionFactory = new ActionFactory(markerSetIdentifierCollection);
blueMapAPIConnector = new BlueMapAPIConnector();
blueMapAPIConnector.addResetHandler(this);
}

private List<SignEntry> getAllSigns() {
Expand Down Expand Up @@ -161,4 +174,9 @@ private void removeByKey(SignEntryKey key) {
private void removeEntry(SignEntry signEntry) {
removeByKey(signEntry.key());
}

@Override
public void reset() {
reloadSigns();
}
}

0 comments on commit a3e339b

Please sign in to comment.