Files
MRCC/launcher/PCL-CE/PCL.Core/Minecraft/MavenArtifact.cs
T
xyou f70b061d1a
CI / Go Backend (push) Canceled after 0s
feat: 项目初始化 + 3D方块世界原型 + AI助搭系统
初始化 monorepo: Go后端(7微服务) + Unity客户端(9模块) + 启动器

HTML5原型: Three.js 3D体素世界, Perlin噪声地形, 原版材质, 22种方块

Minecraft创造模式背包: 双栏布局, 拖拽移动物品, 方向性元件引脚

AI助搭策划文档 + 客户端/服务端骨架 + Docker Compose + CI
2026-08-08 14:07:56 +08:00

53 lines
1.9 KiB
C#

using System;
namespace PCL.Core.Minecraft;
/// <summary>
/// 用于解析 Maven 包 ID 为 Uri 或 Path
/// </summary>
/// <param name="mavenId"></param>
public class MavenArtifact(string mavenId)
{
/// <summary>
/// 将 Maven 包 ID 转换为 Uri 或 Path
/// </summary>
/// <param name="uriOrPath"></param>
/// <returns></returns>
public string Resolve(string uriOrPath)
{
return $"{uriOrPath.TrimEnd('/')}{_GetMavenPath(mavenId)}";
}
/// <summary>
/// 解析 Maven 包 ID
/// </summary>
/// <param name="packageId">包 ID</param>
/// <returns>Maven 包相对路径 (以 / 开头)</returns>
/// <exception cref="FormatException">给定的 Maven 包 ID 长度过长或过短</exception>
private static string _GetMavenPath(string packageId)
{
var packageIds = packageId.Split(":");
switch (packageIds.Length)
{
case 3:
return $"/{packageIds[0].Replace(".","/")}/{packageIds[1]}/{packageIds[1]}-{packageIds[2]}.jar";
case 4:
if (_IsCommonPackaging(packageIds[2]))
{
return $"/{packageIds[0].Replace(".","/")}/{packageIds[1]}/{packageIds[1]}-{packageIds[3]}.{packageIds[2]}";
}
return $"/{packageIds[0].Replace(".","/")}/{packageId[1]}/{packageIds[1]}-{packageIds[2]}-{packageIds[3]}.jar";
case 5:
return $"{packageIds[0].Replace(".","/")}/{packageIds[1]}/{packageIds[1]}-{packageIds[3]}-{packageId[4]}.{packageId[2]}";
default:
throw new FormatException($"Invalid maven package id: Length is {packageIds.Length}");
}
}
/// <summary>
/// 用于检查是否是 Packaging
/// </summary>
private static bool _IsCommonPackaging(string name)
{
return name == "jar" || name == "zip" || name == "pom";
}
}