Java - Spigot - 更改标志的行

时间:2016-01-11 17:56:12

标签: plugins minecraft bukkit

我尝试为我的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());
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我建议您在设置所有行后只更新一次符号, +我们很难提供帮助,而我们不知道你在哪里/在哪个环境中