我尝试为我的Minecraft-Server开发类似TeleportSigns的东西。但是当我试图改变符号的一行时,没有任何反应。
这是更改行的代码:
// loadTpSign
public static void loadTpSign(Sign sign) {
sign.setLine(0, "\2474[\2476Minepedia\2474]");
sign.update();
sign.setLine(1, "\247f\247l" + sign.getLine(1));
sign.update();
sign.setLine(2, "\2478\247l" + Server.getPlayer(sign.getLine(1)) + "/" + Server.getMaxPlayers(sign.getLine(1)));
sign.update();
sign.setLine(3, Server.getStatus(sign.getLine(1).toLowerCase()));
sign.update();
}
我在此方法中运行方法loadTpSign
:
// createTpSign
public static void createTpSign(Sign sign, String server) {
try {
PreparedStatement ps = MySQL.getConnection()
.prepareStatement("INSERT INTO TpSigns (world, x, y, z) VALUES (?,?,?,?)");
ps.setString(1, sign.getWorld().getName());
ps.setInt(2, sign.getX());
ps.setInt(3, sign.getY());
ps.setInt(4, sign.getZ());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
main.TpSignsList.add(new Location(sign.getWorld(), sign.getX(), sign.getY(), sign.getZ()));
TpSigns.loadTpSign(sign);
}
这个方法我在SignChangeEvent中运行:
@EventHandler
public void onSignChange(SignChangeEvent ev) {
if (ev.getPlayer() != null) {
Player p = ev.getPlayer();
if (p.hasPermission("tpsign")) {
if (ev.getLine(0).equalsIgnoreCase("[TPSIGN]")) {
TpSigns.createTpSign((Sign) ev.getBlock().getState(), ev.getLine(1).toLowerCase());
}
}
}
}
答案 0 :(得分:0)
我建议您在设置所有行后只更新一次符号, +我们很难提供帮助,而我们不知道你在哪里/在哪个环境中