You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Minecraft Beta1.7.3模组开发:UUID文件转字符串并匹配判定

解决Minecraft Beta1.7.3模组中读取文件内容并判断UUID的问题

听起来你已经搞定了披风显示的核心逻辑和文件下载,就差把整个文件读成字符串来匹配UUID这一步了——别担心,这个问题其实有很简洁的解决办法,完全不用逐行循环踩坑。

核心思路

既然不想逐行读取,那咱们直接把整个文件内容一次性读成字符串,然后用String.contains()方法直接判断UUID是否存在就行,这样既避免了循环中布尔值被重置的问题,代码也更简洁。

具体实现步骤

首先,在你现有的文件下载代码之后,添加读取文件内容并判断UUID的逻辑。这里推荐用Java NIO的Files类来读取,代码非常简洁:

1. 定义玩家UUID变量

假设你已经通过Mojang API获取到了玩家的UUID,存放在playerUuid变量中:

String playerUuid = "这里替换为你通过API获取到的玩家UUID";
boolean isStaff = false;
boolean isContestWinner = false;

2. 读取文件内容并判断

在你的try-catch块内部(下载完成后),添加以下代码:

try {
    // 读取staff.txt的全部内容为字符串(指定UTF-8编码避免乱码)
    String staffContent = Files.readString(Paths.get(capeInfo + "staff.txt"), StandardCharsets.UTF_8);
    // 判断UUID是否存在,直接赋值布尔值
    isStaff = staffContent.contains(playerUuid);

    // 同理处理contest.txt
    String contestContent = Files.readString(Paths.get(capeInfo + "contest.txt"), StandardCharsets.UTF_8);
    isContestWinner = contestContent.contains(playerUuid);
} catch (IOException e) {
    e.printStackTrace();
    // 读取失败时保持布尔值为false,避免影响披风逻辑
}

兼容低版本Java(如果需要)

如果你的开发环境使用Java 8及以下,Files.readString()方法还未被引入,可以用下面的代码替代,效果完全一致:

// Java 8兼容版本
String staffContent = new String(Files.readAllBytes(Paths.get(capeInfo + "staff.txt")), StandardCharsets.UTF_8);

优化你的下载代码(可选)

你原来的下载代码里有重复逻辑,可以抽成一个工具方法,让代码更整洁易维护:

private void downloadFile(String urlStr, String savePath) throws IOException {
    File file = new File(savePath);
    // 先创建父目录,避免文件路径不存在的问题
    file.getParentFile().mkdirs();
    // 使用try-with-resources自动关闭输入流,更安全
    try (InputStream in = new URL(urlStr).openStream()) {
        Files.copy(in, file.toPath(), StandardCopyOption.REPLACE_EXISTING);
    }
}

然后在主逻辑里调用:

try {
    downloadFile("https://www.dropbox.com/s/q6f4729i2zu02nz/staff.txt?dl=1", capeInfo + "staff.txt");
    downloadFile("https://www.dropbox.com/s/kvvkfk6emms3qg5/contest.txt?dl=1", capeInfo + "contest.txt");
    
    // 这里添加读取和判断UUID的代码
} catch (MalformedURLException e) {
    e.printStackTrace();
    return;
} catch (IOException e) {
    e.printStackTrace();
    return;
}

最后,你就可以用isStaff和isContestWinner这两个布尔值来控制对应披风的显示啦!

内容的提问来源于stack exchange,提问作者Roadhog360 Gaming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:51:39