介绍
介绍由机器翻译自 CurseForge 原页面,仅供参考。
难道你不想为 GregTech CEu Modern 添加酷炫的渲染效果吗?但那需要用到 Java?别担心!这个模组解决了这个问题。
我们仅支持 1.20.1 Forge,因为 GTCEu 就在这个版本上。
示例:
在 startup_scripts 中:
GTRenderJSEvents.registerModelsForRender(event => {
event.register("kubejs:obj/space");
event.register("kubejs:obj/star");
event.register("kubejs:obj/foo");
event.register("kubejs:obj/bar");
event.register("kubejs:obj/baz");
});
这些 obj 文件应放置在 /assets/kubejs/models 中。
在 startup_scripts 中(gregtech 多方块机器注册)
// before
.workableCasingModel(
"gtceu:block/casings/solid/machine_casing_stable_titanium",
"gtceu:block/multiblock/implosion_compressor"
);
// You will use this instead of that.
// after
.model(
GTMachineModels.createWorkableCasingMachineModel(
"gtceu:block/casings/solid/machine_casing_stable_titanium",
"gtceu:block/multiblock/implosion_compressor"
)["andThen(java.util.function.Consumer)"](b =>
b.addDynamicRenderer(() => KubeJSDynamicRender.of("kubejs:example"))
)
);
在 client_scripts 中
请发送要翻译的英文内容。
const OverlayTexture = Java.loadClass("net.minecraft.client.renderer.texture.OverlayTexture");
const RenderType = Java.loadClass("net.minecraft.client.renderer.RenderType");
const LightTexture = Java.loadClass("net.minecraft.client.renderer.LightTexture");
GTRenderJSEvents.registerDynamicRender(event => {
event.create(
"kubejs:example",
/**
*@param {Internal.RenderBuilder<Internal.WorkableElectricMultiblockMachine,{ someValue:string }>} builder
*/
builder => {
// default: raw => raw
// By using this API, you can utilize arguments with type safety and default values.
// The result of this function is cached.
builder.prepareBindings(raw => {
return {
someValue: raw.someValue || "default value",
};
});
builder.render(ctx => {
// you can use bindings here
console.log(ctx.binding.someValue);
// const light = ctx.packedLight;
// const overlay = ctx.packedOverlay;
const machine = ctx.machine;
const poseStack = ctx.poseStack;
const buffer = ctx.buffer;
var tick = machine.getOffsetTimer() + ctx.partialTick;
// offsets
var x = 0.5,
y = 0.5,
z = 0.5;
switch (machine.getFrontFacing()) {
case Direction.NORTH:
z = 16.5;
break;
case Direction.SOUTH:
z = -15.5;
break;
case Direction.WEST:
x = 16.5;
break;
case Direction.EAST:
x = -15.5;
break;
}
poseStack.pushPose();
poseStack.translate(x, y, z);
renderOuterSpaceShell(poseStack, buffer.getBuffer(RenderType.solid()));
poseStack.popPose();
});
const shouldRender = machine => machine.isFormed();
builder
.viewDistance(256)
.shouldRender(shouldRender)
.shouldRenderOffScreen(shouldRender)
.renderBoundingBox(() => {
// todo ちゃんとやる
const rad = 32;
return AABB.of(-rad, -rad, -rad, rad, rad, rad);
});
}
);
});
/**
* @param {Internal.PoseStack} poseStack
* @param {Internal.MultiBufferSource} buffer
* @param {number} scale
*/
function renderOuterSpaceShell(poseStack, buffer) {
const scale = 0.01 * 17.5;
poseStack.pushPose();
poseStack.scale(scale, scale, scale);
const rt = RenderType.solid();
BakedModelRenderer.renderModel(poseStack.last(), buffer.getBuffer(rt), getBakedModel("kubejs:obj/space"), rt);
poseStack.popPose();
}
/**
* @param {ResourceLocation_} id
*/
function getBakedModel(id) {
// In the context of KubeJS, Client = Minecraft.getInstance()
return Client.getModelManager().getModel(id);
}
常见问题
KubeJS GT Dynamic Render 支持哪些 Minecraft 版本?
KubeJS GT Dynamic Render 支持 Minecraft Java 版 1.20.1,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。
KubeJS GT Dynamic Render 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
评论
登录后评论和评分