9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-26 02:19:23 +00:00

修复全局变量解析papi

This commit is contained in:
XiaoMoMi
2025-09-06 01:55:43 +08:00
parent 8931433bb1
commit fcdf65dccb
5 changed files with 15 additions and 4 deletions

View File

@@ -55,7 +55,7 @@ public class GlobalVariableManager implements Manageable {
@Override
public void parseObject(Pack pack, Path path, net.momirealms.craftengine.core.util.Key id, Object object) throws LocalizedException {
if (object != null) {
globalVariables.put(id.value(), object.toString());
GlobalVariableManager.this.globalVariables.put(id.value(), object.toString());
}
}
}

View File

@@ -7,7 +7,7 @@ import net.momirealms.craftengine.core.plugin.text.minimessage.*;
import java.util.Map;
public final class NetworkTextReplaceContext extends AbstractChainParameterContext {
public final class NetworkTextReplaceContext extends AbstractChainParameterContext implements PlayerContext {
private final Player player;
public NetworkTextReplaceContext(Player player) {
@@ -19,6 +19,7 @@ public final class NetworkTextReplaceContext extends AbstractChainParameterConte
return new NetworkTextReplaceContext(player);
}
@Override
public Player player() {
return player;
}

View File

@@ -0,0 +1,8 @@
package net.momirealms.craftengine.core.plugin.context;
import net.momirealms.craftengine.core.entity.player.Player;
public interface PlayerContext {
Player player();
}

View File

@@ -10,7 +10,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.Map;
public class PlayerOptionalContext extends AbstractChainParameterContext implements Context {
public class PlayerOptionalContext extends AbstractChainParameterContext implements PlayerContext {
public static final PlayerOptionalContext EMPTY = new PlayerOptionalContext(null, ContextHolder.EMPTY);
protected final Player player;
@@ -44,6 +44,7 @@ public class PlayerOptionalContext extends AbstractChainParameterContext impleme
return new PlayerOptionalContext(player, new ContextHolder(Map.of(DirectContextParameters.PLAYER, () -> player)));
}
@Override
@Nullable
public Player player() {
return this.player;

View File

@@ -6,6 +6,7 @@ import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.context.PlayerContext;
import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext;
import net.momirealms.craftengine.core.util.AdventureHelper;
import org.jetbrains.annotations.NotNull;
@@ -26,7 +27,7 @@ public class PlaceholderTag implements TagResolver {
String rawArgument = arguments.popOr("No argument relational placeholder provided").toString();
if (rawArgument.contains("<")) rawArgument = AdventureHelper.resolvePlainStringTags(rawArgument, this.context.tagResolvers());
String placeholder = "%" + rawArgument + "%";
String parsed = this.context instanceof PlayerOptionalContext playerOptionalContext ? CraftEngine.instance().compatibilityManager().parse(playerOptionalContext.player(), placeholder) : CraftEngine.instance().compatibilityManager().parse(null, placeholder);
String parsed = this.context instanceof PlayerContext playerContext ? CraftEngine.instance().compatibilityManager().parse(playerContext.player(), placeholder) : CraftEngine.instance().compatibilityManager().parse(null, placeholder);
if (parsed.equals(placeholder)) {
parsed = arguments.popOr("No default papi value provided").toString();
}