1313import org .jetbrains .annotations .Nullable ;
1414import org .jvnet .hk2 .annotations .Service ;
1515
16+ import org .mvplugins .multiverse .core .config .CoreConfig ;
1617import org .mvplugins .multiverse .core .economy .MVEconomist ;
1718import org .mvplugins .multiverse .core .utils .MinecraftTimeFormatter ;
1819import org .mvplugins .multiverse .core .utils .REPatterns ;
2829final class PlaceholderExpansionHook extends PlaceholderExpansion {
2930
3031 private final MultiverseCore plugin ;
32+ private final CoreConfig coreConfig ;
3133 private final WorldManager worldManager ;
3234 private final MVEconomist economist ;
3335
3436 @ Inject
35- public PlaceholderExpansionHook (MultiverseCore plugin , WorldManager worldManager , MVEconomist economist ) {
37+ public PlaceholderExpansionHook (@ NotNull MultiverseCore plugin ,
38+ @ NotNull CoreConfig coreConfig ,
39+ @ NotNull WorldManager worldManager ,
40+ @ NotNull MVEconomist economist ) {
3641 this .plugin = plugin ;
42+ this .coreConfig = coreConfig ;
3743 this .worldManager = worldManager ;
3844 this .economist = economist ;
3945 }
@@ -44,6 +50,13 @@ public boolean register() {
4450 return super .register ();
4551 }
4652
53+ @ Override
54+ public void warning (String msg ) {
55+ if (coreConfig .getWarnInvalidPapiFormat ()) {
56+ super .warning (msg );
57+ }
58+ }
59+
4760 @ Override
4861 public @ NotNull String getIdentifier () {
4962 return "multiverse-core" ;
@@ -84,22 +97,20 @@ public boolean persist() {
8497
8598 final var placeholder = paramsArray .remove (0 ).toLowerCase (Locale .ENGLISH );
8699
87- String worldName = parseWorldName (offlinePlayer , paramsArray );
88- if (worldName == null ) return null ;
89-
90- return worldManager .getWorld (worldName )
91- .onEmpty (() -> warning ("Multiverse World not found: " + worldName ))
100+ return parseWorldName (offlinePlayer , paramsArray )
101+ .flatMap (worldName -> worldManager .getWorld (worldName )
102+ .onEmpty (() -> warning ("Multiverse World not found: " + worldName )))
92103 .flatMap (world -> world .asLoadedWorld ()
93104 .flatMap (loadedWorld -> getLoadedWorldPlaceHolderValue (placeholder , paramsArray , loadedWorld ))
94105 .orElse (() -> getWorldPlaceHolderValue (placeholder , paramsArray , world )))
95- .getOrNull ( );
106+ .getOrElse (() -> coreConfig . getInvalidPapiFormatReturnsBlank () ? "" : null );
96107 }
97108
98- private @ Nullable String parseWorldName (OfflinePlayer offlinePlayer , List <String > paramsArray ) {
109+ private @ NotNull Option < String > parseWorldName (OfflinePlayer offlinePlayer , List <String > paramsArray ) {
99110 // No world defined, get from player
100111 if (paramsArray .isEmpty ()) {
101112 if (offlinePlayer instanceof Player player ) {
102- return player .getWorld ().getName ();
113+ return Option . of ( player .getWorld ().getName () );
103114 } else {
104115 warning ("You must specify a world name for non-player placeholders" );
105116 return null ;
@@ -110,15 +121,15 @@ public boolean persist() {
110121 String paramWorldName = paramsArray .get (paramsArray .size () - 1 );
111122 if (worldManager .isWorld (paramWorldName )) {
112123 paramsArray .remove (paramsArray .size () - 1 );
113- return paramWorldName ;
124+ return Option . of ( paramWorldName ) ;
114125 }
115126
116127 // Param not a world, fallback to player
117128 if (offlinePlayer instanceof Player player ) {
118- return player .getWorld ().getName ();
129+ return Option . of ( player .getWorld ().getName () );
119130 }
120131 warning ("Multiverse World not found: " + paramWorldName );
121- return null ;
132+ return Option . none () ;
122133 }
123134
124135 private @ NotNull Option <String > getWorldPlaceHolderValue (@ NotNull String placeholder ,
0 commit comments