11package io .github .miniplaceholders .expansion .placeholderadapter .velocity ;
22
3- import com .google .common .collect .Maps ;
43import com .velocitypowered .api .proxy .Player ;
54import io .github .miniplaceholders .api .Expansion ;
65import io .github .miniplaceholders .api .utils .LegacyStrings ;
109
1110import java .util .OptionalInt ;
1211import java .util .UUID ;
12+ import java .util .concurrent .ConcurrentHashMap ;
1313import java .util .concurrent .ConcurrentMap ;
1414import java .util .concurrent .TimeUnit ;
1515
2020public final class VelocityPlatform {
2121 private static final UUID NULL_UUID = UUID .randomUUID ();
2222 private static final PlaceholderAPI instance = PlaceholderAPI .createInstance ();
23- private static final ConcurrentMap <Long , PlaceholderAPI > cachedInstances = Maps . newConcurrentMap ();
23+ private static final ConcurrentMap <Long , PlaceholderAPI > cachedInstances = new ConcurrentHashMap <> ();
2424
2525 private static PlaceholderAPI getAPI (ArgumentQueue queue ) {
2626 if (!queue .hasNext ()) return instance ;
27- OptionalInt optExpiry = queue .pop ().asInt ();
27+ final OptionalInt optExpiry = queue .pop ().asInt ();
2828
2929 if (optExpiry .isEmpty ()) return instance ;
30- Long expiry = ( long ) optExpiry .getAsInt ();
30+ final long expiry = optExpiry .getAsInt ();
3131
3232 return cachedInstances .computeIfAbsent (expiry , (key ) -> {
33- PlaceholderAPI api = PlaceholderAPI .createInstance ();
33+ final PlaceholderAPI api = PlaceholderAPI .createInstance ();
3434 api .setCacheExpiry (key );
3535 return api ;
3636 });
@@ -40,13 +40,14 @@ public static Expansion.Builder provideBuilder() {
4040 return Expansion .builder ("placeholder-adapter" )
4141 .globalPlaceholder ("global" , (queue , ctx ) -> {
4242 final String argument = queue .popOr ("You need to provide a placeholder" ).value ();
43- boolean isString = parseString (queue );
44- PlaceholderAPI api = getAPI (queue );
43+ final boolean isString = parseString (queue );
44+ final PlaceholderAPI api = getAPI (queue );
4545 final String papiParsed = api
4646 .formatPlaceholders (argument , NULL_UUID )
4747 .completeOnTimeout (argument , 100 , TimeUnit .MILLISECONDS )
48- .join ()
49- .replace (SECTION_CHAR , AMPERSAND_CHAR );
48+ .thenApply (st -> st .replace (SECTION_CHAR , AMPERSAND_CHAR ))
49+ .handle ((result , ex ) -> ex == null ? "" : result )
50+ .join ();
5051
5152 if (isString ) {
5253 return Tag .preProcessParsed (miniMessage ().serialize (LegacyStrings .parsePossibleLegacy (papiParsed )));
@@ -57,12 +58,13 @@ public static Expansion.Builder provideBuilder() {
5758 .audiencePlaceholder (Player .class , "player" , (player , queue , ctx ) -> {
5859 final String argument = queue .popOr ("You need to provide a placeholder" ).value ();
5960 boolean isString = parseString (queue );
60- PlaceholderAPI api = getAPI (queue );
61+ final PlaceholderAPI api = getAPI (queue );
6162 final String papiParsed = api
6263 .formatPlaceholders (argument , player .getUniqueId ())
6364 .completeOnTimeout (argument , 100 , TimeUnit .MILLISECONDS )
64- .join ()
65- .replace (SECTION_CHAR , AMPERSAND_CHAR );
65+ .thenApply (st -> st .replace (SECTION_CHAR , AMPERSAND_CHAR ))
66+ .handle ((result , ex ) -> ex == null ? "" : result )
67+ .join ();
6668
6769 if (isString ) {
6870 return Tag .preProcessParsed (miniMessage ().serialize (LegacyStrings .parsePossibleLegacy (papiParsed )));
@@ -72,13 +74,14 @@ public static Expansion.Builder provideBuilder() {
7274 })
7375 .relationalPlaceholder (Player .class , "relational" , (player , playerToShow , queue , ctx ) -> {
7476 final String argument = queue .popOr ("You need to provide a placeholder" ).value ();
75- boolean isString = parseString (queue );
76- PlaceholderAPI api = getAPI (queue );
77+ final boolean isString = parseString (queue );
78+ final PlaceholderAPI api = getAPI (queue );
7779 final String papiParsed = api
7880 .formatPlaceholders (argument , player .getUniqueId (), playerToShow .getUniqueId ())
7981 .completeOnTimeout (argument , 100 , TimeUnit .MILLISECONDS )
80- .join ()
81- .replace (SECTION_CHAR , AMPERSAND_CHAR );
82+ .thenApply (st -> st .replace (SECTION_CHAR , AMPERSAND_CHAR ))
83+ .handle ((result , ex ) -> ex == null ? "" : result )
84+ .join ();
8285
8386 if (isString ) {
8487 return Tag .preProcessParsed (miniMessage ().serialize (LegacyStrings .parsePossibleLegacy (papiParsed )));
@@ -90,7 +93,7 @@ public static Expansion.Builder provideBuilder() {
9093
9194 private static boolean parseString (ArgumentQueue queue ) {
9295 //noinspection DataFlowIssue
93- boolean isString = queue .hasNext () && queue .peek ().lowerValue ().equals ("string" );
96+ final boolean isString = queue .hasNext () && queue .peek ().lowerValue ().equals ("string" );
9497 if (isString ) queue .pop ();
9598 return isString ;
9699 }
0 commit comments