Skip to content

Commit 3f74fc2

Browse files
authored
Port to 1.21.11 & Update pack.mcmeta (#57)
* ✨ feat: Port to 1.21.1 * 🌐 i18n(resource-pack): 引入 * ✨ feat: 自 1.21.9 起只需维护一套版本号规则 * fix: 移除不必要的 packFormat 字段 * fix: 更新 packFormat 字段为可选 * ✨ feat: 重构资源包转换逻辑 * fix: 简化资源包元数据转换逻辑,优化格式判断
1 parent 2eddc62 commit 3f74fc2

7 files changed

Lines changed: 26 additions & 14 deletions

File tree

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
version=3.7.0
2-
minecraft=1.6.1,1.6.2,1.6.4,1.7.2,1.7.10,1.8,1.8.8,1.8.9,1.9,1.9.4,1.10,1.10.2,1.11,1.11.2,1.12,1.12.1,1.12.2,1.13.2,1.14,1.14.1,1.14.2,1.14.3,1.14.4,1.15,1.15.1,1.15.2,1.16,1.16.1,1.16.2,1.16.3,1.16.4,1.16.5,1.17,1.17.1,1.18,1.18.1,1.18.2,1.19,1.19.1,1.19.2,1.19.3,1.19.4,1.20,1.20.1,1.20.2,1.20.3,1.20.4,1.20.5,1.20.6,1.21,1.21.1,1.21.2,1.21.3,1.21.4,1.21.5,1.21.6,1.21.7,1.21.8,1.21.9,1.21.10
1+
version=3.7.1
2+
minecraft=1.6.1,1.6.2,1.6.4,1.7.2,1.7.10,1.8,1.8.8,1.8.9,1.9,1.9.4,1.10,1.10.2,1.11,1.11.2,1.12,1.12.1,1.12.2,1.13.2,1.14,1.14.1,1.14.2,1.14.3,1.14.4,1.15,1.15.1,1.15.2,1.16,1.16.1,1.16.2,1.16.3,1.16.4,1.16.5,1.17,1.17.1,1.18,1.18.1,1.18.2,1.19,1.19.1,1.19.2,1.19.3,1.19.4,1.20,1.20.1,1.20.2,1.20.3,1.20.4,1.20.5,1.20.6,1.21,1.21.1,1.21.2,1.21.3,1.21.4,1.21.5,1.21.6,1.21.7,1.21.8,1.21.9,1.21.10,1.21.11
33
curseforge=NeoForge,Forge,Fabric,Quilt,Client,Java 8,Java 9,Java 10,Java 11,Java 12,Java 13,Java 14,Java 15,Java 16,Java 17,Java 18

src/main/java/i18nupdatemod/I18nUpdateMod.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import i18nupdatemod.core.ResourcePack;
88
import i18nupdatemod.core.ResourcePackConverter;
99
import i18nupdatemod.entity.GameAssetDetail;
10+
import i18nupdatemod.entity.GameMetaData;
1011
import i18nupdatemod.util.FileUtil;
1112
import i18nupdatemod.util.Log;
1213

@@ -74,8 +75,9 @@ public static void init(Path minecraftPath, String minecraftVersion, String load
7475
if (!convertNotNeed) {
7576
FileUtil.setTemporaryDirPath(Paths.get(localStorage, "." + MOD_ID, minecraftVersion));
7677
applyFileName = assets.covertFileName;
78+
GameMetaData metaData = I18nConfig.getPackFormat(minecraftVersion);
7779
ResourcePackConverter converter = new ResourcePackConverter(languagePacks, applyFileName);
78-
converter.convert(assets.covertPackFormat, getResourcePackDescription(assets.downloads));
80+
converter.convert(metaData, getResourcePackDescription(assets.downloads));
7981
}
8082

8183
//Apply resource pack

src/main/java/i18nupdatemod/core/I18nConfig.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,15 @@ public static GameAssetDetail getAssetDetail(String minecraftVersion, String loa
7171
ret.downloads = createDownloadDetails(convert, loader, assetRoot);
7272
}
7373

74-
ret.covertPackFormat = convert.packFormat;
7574
ret.covertFileName =
7675
String.format("Minecraft-Mod-Language-Modpack-Converted-%s.zip", minecraftVersion);
7776
return ret;
7877
}
7978

79+
public static GameMetaData getPackFormat(String minecraftVersion) {
80+
return getGameMetaData(minecraftVersion);
81+
}
82+
8083
private static List<GameAssetDetail.AssetDownloadDetail> createDownloadDetails(GameMetaData convert, String loader, String assetRoot) {
8184
return convert.convertFrom.stream().map(it -> getAssetMetaData(it, loader)).map(it -> {
8285
GameAssetDetail.AssetDownloadDetail adi = new GameAssetDetail.AssetDownloadDetail();

src/main/java/i18nupdatemod/core/ResourcePackConverter.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.google.gson.Gson;
44
import com.google.gson.GsonBuilder;
5+
import i18nupdatemod.entity.GameMetaData;
56
import i18nupdatemod.util.FileUtil;
67
import i18nupdatemod.util.Log;
78
import org.apache.commons.io.IOUtils;
@@ -32,7 +33,7 @@ public ResourcePackConverter(List<ResourcePack> resourcePack, String filename) {
3233
this.tmpFilePath = FileUtil.getTemporaryPath(filename);
3334
}
3435

35-
public void convert(int packFormat, String description) throws Exception {
36+
public void convert(GameMetaData metaData, String description) throws Exception {
3637
Set<String> fileList = new HashSet<>();
3738
try (ZipOutputStream zos = new ZipOutputStream(
3839
Files.newOutputStream(tmpFilePath),
@@ -57,7 +58,7 @@ public void convert(int packFormat, String description) throws Exception {
5758
InputStream is = zf.getInputStream(ze);
5859
if (name.equalsIgnoreCase("pack.mcmeta")) {
5960
//Convert pack.mcmeta
60-
zos.write(convertPackMeta(is, packFormat, description));
61+
zos.write(convertPackMeta(is, metaData, description));
6162
} else {
6263
//Copy other file
6364
IOUtils.copy(is, zos);
@@ -74,9 +75,11 @@ public void convert(int packFormat, String description) throws Exception {
7475
}
7576
}
7677

77-
private byte[] convertPackMeta(InputStream is, int packFormat, String description) {
78+
private byte[] convertPackMeta(InputStream is, GameMetaData metaData, String description) {
7879
PackMeta meta = GSON.fromJson(new InputStreamReader(is, StandardCharsets.UTF_8), PackMeta.class);
79-
meta.pack.pack_format = packFormat;
80+
meta.pack.pack_format = metaData.useNewFormat() ? null : metaData.packFormat;
81+
meta.pack.min_format = metaData.useNewFormat() ? metaData.minFormat : null;
82+
meta.pack.max_format = metaData.useNewFormat() ? metaData.maxFormat : null;
8083
meta.pack.description = description;
8184
return GSON.toJson(meta).getBytes(StandardCharsets.UTF_8);
8285
}
@@ -85,7 +88,9 @@ private static class PackMeta {
8588
Pack pack;
8689

8790
private static class Pack {
88-
int pack_format;
91+
Integer pack_format; // 改为 Integer,支持 null
92+
Integer min_format;
93+
Integer max_format;
8994
String description;
9095
}
9196
}

src/main/java/i18nupdatemod/entity/GameAssetDetail.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
public class GameAssetDetail {
66
public List<AssetDownloadDetail> downloads;
7-
public Integer covertPackFormat;
87
public String covertFileName;
98

109
public static class AssetDownloadDetail {

src/main/java/i18nupdatemod/entity/GameMetaData.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
public class GameMetaData {
66
public String gameVersions;
7-
public int packFormat;
7+
public Integer packFormat, minFormat, maxFormat;
88
public List<String> convertFrom;
9+
10+
public boolean useNewFormat() { return minFormat != null && maxFormat != null; }
911
}

src/main/resources/i18nMetaData.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,10 @@
175175
]
176176
},
177177
{
178-
"gameVersions": "[1.21.9,1.21.10]",
179-
"packFormat": 69,
180-
"convertFrom": [
178+
"gameVersions": "[1.21.9,1.21.11]",
179+
"minFormat": 69,
180+
"maxFormat": 75,
181+
"convertFrom":[
181182
"1.21",
182183
"1.20",
183184
"1.19"

0 commit comments

Comments
 (0)