状态未更新应针对Minecraft计分板

时间:2019-04-28 05:47:51

标签: java minecraft bukkit

我有一个功能接口,执行时会返回String。在此功能接口中,我通过一个类的实例,该类在调用时应引用该实例并获取该类内的当前值(此值在其他位置更新)。因此,此值会更改,并且每次执行功能接口时也会更新,因为它引用了此类和变量。

有很多代码,为简单起见...

我的LineExecution界面:

@FunctionalInterface
public interface LineExecution {

    String execute(Player p);

}

我的记分板课程: https://pastebin.com/0aHa81eA

我在此处更新state#getReferencedTime值:

@Override
public void run() {
    Logger.debug("setting referenced time");
    Logger.debug("EXECUTIONA: " + execution.execute(a.getPlayers().stream().findFirst().orElse(null).getPlayer()));
    state.setReferencedTime(i);
    Logger.debug("getting referenced time: " + state.getReferencedTime());
    a.getPlayers().forEach(p -> {
        Logger.debug("updating... state: " + state.getReferencedTime());
        GameBoard g = state.getGameBoard(p.getPlayer());
        g.update(p.getPlayer());
    });
    i--;
}

这是控制台中打印的内容: https://pastebin.com/bUC5sBQj

这是我的“ GameBoard”类:

public class GameBoard extends Scoreboard {

    public GameBoard(GameBoardType type, GameStateManager state) {
        super(type.getTitle());

        addLine(p -> {
            return "stateRef: " + state.getReferencedTime();
        }, Bukkit.getOfflinePlayer("Realmm").getPlayer());
    }

}

因此,我只想能够更新state.getReferencedTime,就像我在run()中所做的那样,然后,当我再次通过调用GameBoard#update(Player)执行该功能接口时,它应该显示9,倒数直到0。但这始终显示10,无论是否更改值。

0 个答案:

没有答案