- 查看: 143
- 回复: 3
编程技术板块藏得太深了,还是发到这里好了。
长话短说,当你将编译目标设置成 Java 8 时,引用一个使用 Java 21 目标编译的依赖(CraftEngine)是很费劲的。
在 Gradle,你可以使用以下配置来添加一个同为 Gradle 编译的 Java 21 依赖。Maven 则不需要额外配置。
代码:
java {
// 关键配置
disableAutoTargetJvm()
}
repositories {
// 添加仓库
maven("https://repo.momirealms.net/releases/")
}
dependencies {
// 添加依赖
compileOnly("net.momirealms:craft-engine-core:0.0.67")
compileOnly("net.momirealms:craft-engine-bukkit:0.0.67")
}
用得比较多的,没法在 Java 8 用常规方法创建的,是 Key 的实例,照抄下面的代码即可。
代码:
import net.momirealms.craftengine.core.util.Key;
public class KeyWrapper {
public static Key of(String namespace, String value) {
return new Key(namespace, value);
}
public static Key withDefaultNamespace(String namespacedId, String defaultNamespace) {
return of(decompose(namespacedId, defaultNamespace));
}
public static Key of(String[] id) {
return new Key(id[0], id[1]);
}
public static Key of(String namespacedId) {
return of(decompose(namespacedId, "minecraft"));
}
private static String[] decompose(String id, String namespace) {
String[] strings = new String[]{namespace, id};
int i = id.indexOf(':');
if (i >= 0) {
strings[1] = id.substring(i + 1);
if (i >= 1) {
strings[0] = id.substring(0, i);
}
}
return strings;
}
}
有这几个就够了,要更多的再抄 CraftEngine 源码去。
注意事项是,在 Java 8 下
- 你不能调用 Key 的任何方法,否则无法通过编译
- 你可以通过构造方法来创建 Key 的实例
剩下的正常使用就可以了,没什么太大问题
代码:
CraftEngineItems.byId(KeyWrapper.of(id));
CraftEngineItems.byItemStack(item);
- 内容版权许可
- CC BY 署名
