java - 状态不更新应该是 Minecraft 记分牌
问题描述
我有一个功能接口,在执行时返回一个字符串。在这个功能接口中,我通过一个类的实例,在调用时应该引用该实例并获取该类中的当前值(该值在别处更新)。所以这个值会改变,每次我执行我的功能接口时它也应该更新,因为它引用了这个类和变量。
有相当多的代码,所以为了简单起见......
我的 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
这是我的“游戏板”课程:
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
,无论我是否更改值。
解决方案
推荐阅读
- node.js - Passport Facebook 身份验证返回未定义?
- vba - 字符串案例的不选择案例的案例
- c - Knight tours算法C实现性能
- python - TypeError:尝试运行机器人命令时,“str”对象不可调用
- html - 悬停在父级上以触发变换属性
- python - ValueError:无法为有效的 JSON 文件解码任何 JSON 对象
- mysql - 无法对 JDBC 目标执行架构管理
- javascript - 尝试通过 AJAX 提交 rails 表单时出现 400 错误
- c++ - 如何使用 cpp 在 unordered_map 中分配 lambda 函数?
- linq - 当我从 Azure 函数而不是控制台应用程序运行 LINQ 查询时失败