KubeJS GT Dynamic Render
Modby P_nutsK
Addon for adding GregTech CEu Modern renderers with KubeJS
Type
Mod
CurseForge Downloads
6,941
CurseForge ID
1427855
Last Updated
Jul 26, 2026
Description
in startup_scripts (gregtech multiblockmachine registry)
// 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")) ) );in 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); }Similar Mods
Experienced Anvils
Removes the anvil xp cost limit
Waffles Custom One Block
All new custom one block - (type /oneblock to enter the gamemode)
Withered Foxy Jumpscare
1/10000 Chance for Withered Foxy Jumpscare Every Second
Barrier Block Mod
Barrier Block for 1.7.10
Gauges and Switches Ported
An unofficial NeoForge/Fabric port of the classic RsGauges mod. Adds stylish analog/digital gauges, switches, and sensor...
Companions - Dogfolk
Adds cute little helpers into the game to assist you in combat or by simply carrying your items.