Minecraft 1.15锻造子弹mod未渲染



我正在尝试制作一个子弹头mod,但它没有在屏幕上渲染。我遵循了与其他锻造暴徒MOD相同的模式。我没有收到任何错误,我能够使用游戏中的命令/执行验证对象是否在屏幕上创建。

下方的代码

项目符号实体:

import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.projectile.AbstractArrowEntity;
import net.minecraft.entity.projectile.ArrowEntity;
import net.minecraft.entity.projectile.DamagingProjectileEntity;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.network.IPacket;
import net.minecraft.network.play.server.SSpawnObjectPacket;
import net.minecraft.world.World;
public class BulletEntity extends Entity {
public BulletEntity(EntityType<? extends Entity> type, World worldIn) {
super(type, worldIn);
}
@Override
protected void registerData() {}
@Override
protected void readAdditional(CompoundNBT compound) {}
@Override
protected void writeAdditional(CompoundNBT compound) {}
@Override
public IPacket<?> createSpawnPacket() {
return new SSpawnObjectPacket(this);
}
}

项目符号实体模型

import com.google.common.collect.ImmutableList;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import net.minecraft.client.renderer.entity.model.EntityModel;
import net.minecraft.client.renderer.entity.model.SegmentedModel;
import net.minecraft.client.renderer.model.ModelRenderer;
public class BulletEntityModel<T extends BulletEntity> extends EntityModel<T> {
private final ModelRenderer Body;
public BulletEntityModel() {
textureWidth = 16;
textureHeight = 16;
Body = new ModelRenderer(this);
Body.setRotationPoint(0.0F, 24.0F, 0.0F);
Body.setTextureOffset(0, 0).addBox(-0.5F, -1.0F, -0.5F, 1.0F, 1.0F, 1.0F, 0.0F, false);
}
@Override
public void setRotationAngles(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch){
//previously the render function, render code was moved to a method below
}
@Override
public void render(MatrixStack matrixStack, IVertexBuilder buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha){
Body.render(matrixStack, buffer, packedLight, packedOverlay);
}
public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) {
modelRenderer.rotateAngleX = x;
modelRenderer.rotateAngleY = y;
modelRenderer.rotateAngleZ = z;
}
public ModelRenderer getBody() {
return Body;
}
}

渲染器:

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import net.minecraft.client.renderer.*;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.client.renderer.model.Model;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.entity.projectile.ArrowEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
public class BulletEntityRender<T extends BulletEntity> extends EntityRenderer<T> {
protected static final ResourceLocation TEXTURE = new ResourceLocation(FortuneAndGlory.MODID, "textures/entity/bullet.png");
private final BulletEntityModel<BulletEntity> model = new BulletEntityModel<>();
public BulletEntityRender(EntityRendererManager rendererManagerIn) {
super(rendererManagerIn);
}
public void render(T entityIn, float entityYaw, float partialTicks, MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, int packedLightIn) {
IVertexBuilder ivertexbuilder = net.minecraft.client.renderer.ItemRenderer.getBuffer(bufferIn, this.model.getRenderType(this.getEntityTexture(entityIn)), false, false);
model.render(matrixStackIn, ivertexbuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F,1.0F, 1.0F);
super.render(entityIn, entityYaw, partialTicks, matrixStackIn, bufferIn, packedLightIn);
}
@Override
public ResourceLocation getEntityTexture(BulletEntity entity) {
return TEXTURE;
}}

我错过了什么?

谢谢!

在主Entity类中,它应该是EntityType<? extends Entity>,而不是EntityType<? extends BulletEntity>

在您的渲染器类中,尝试使用

public class BulletEntityRender extends MobRenderer<BulletEntity, BulletEntityModel<BulletEntity>>{
protected static final ResourceLocation TEXTURE = new ResourceLocation(FortuneAndGlory.MODID, "textures/entity/bullet.png");
public BulletEntityRender(EntityRendererManager rendererManagerIn) {
super(rendererManagerIn, new BulletEntityModel<>(), //shadowsize );
}
public void render(T entityIn, float entityYaw, float partialTicks, MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, int packedLightIn) {
IVertexBuilder ivertexbuilder = net.minecraft.client.renderer.ItemRenderer.getBuffer(bufferIn, this.model.getRenderType(this.getEntityTexture(entityIn)), false, false);
model.render(matrixStackIn, ivertexbuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F,1.0F, 1.0F);
super.render(entityIn, entityYaw, partialTicks, matrixStackIn, bufferIn, packedLightIn);
}
@Override
public ResourceLocation getEntityTexture(BulletEntity entity) {
return TEXTURE;

}


}

如果有任何错误,请改正。如果这不能解决问题,那可能是其他问题。

最新更新