我在注册纹理时遇到以下错误: 'Identifier(java.lang.String, java.lang.String)' 在 'net.minecraft.util.Identifier' 中具有私有访问权限
第18行发生错误
private static final Identifier GLOW_TEXTURE = new Identifier(Mod.MOD_ID,"textures/misc/item_overlay.png");
在注册“ItemRenderer”类的 mixin 中使用的纹理标识符时,代码无法编译。 (部分部分因个人原因会进行修改)
请注意,代码必须在本文发布的最新版本 1.21.4 上运行
package com.example.mod.mixin;
import com.example.mod.Mod;
import com.example.mod.item.ModItems;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.render.*;
import net.minecraft.client.render.item.ItemRenderer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Identifier;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@Mixin(ItemRenderer.class)
public abstract class ItemRendererMixin {
private static final Identifier GLOW_TEXTURE = new Identifier(Mod.MOD_ID,"textures/misc/item_overlay.png");
@Inject(method = "renderItem", at = @At("TAIL"))
public void renderGlowingOutline(ItemStack stack, MatrixStack matrices, VertexConsumerProvider vertexConsumers) {
if (stack.getItem() == ModItems.Item_Example) {
RenderSystem.disableDepthTest();
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
VertexConsumer vertexConsumer = vertexConsumers.getBuffer(RenderLayer.getEntityTranslucent(GLOW_TEXTURE));
matrices.push();
matrices.pop();
RenderSystem.disableBlend();
RenderSystem.enableDepthTest();
}
}
}
Minecraft 处理标识符的方式发生了新的变化,您现在需要将
new Identifier(...)
替换为 Identifier.of(...)
。