简体   繁体   English

Minecraft 1.15 Forge Bullet mod 未渲染

[英]Minecraft 1.15 Forge Bullet mod not rendering

I'm trying to make a bullet mod and it's not rendering on the screen.我正在尝试制作子弹模型,但它没有在屏幕上呈现。 I followed the same pattern as other forge mob mods.我遵循与其他 Forge mob mods 相同的模式。 I'm not getting any errors and I'm able to verify that the object gets created onscreen using in game command /execute.我没有收到任何错误,我能够验证 object 是使用游戏命令 /execute 在屏幕上创建的。

Code below下面的代码

Bullet Entity:子弹实体:

    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);
    }

    }

Bullet Entity Model子弹实体 Model

    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;
    }
    }

Renderer:渲染器:

    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;
    }}

What am I missing?我错过了什么?

Thanks!谢谢!

In your main Entity class instead of EntityType<? extends Entity>在您的主要实体 class 而不是EntityType<? extends Entity> EntityType<? extends Entity> it should be EntityType<? extends BulletEntity> EntityType<? extends Entity>它应该是EntityType<? extends BulletEntity> EntityType<? extends BulletEntity> . EntityType<? extends BulletEntity>

In your renderer class try using,在您的渲染器 class 尝试使用,

   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;
    

}




}

if there are any errors please fix them.如果有任何错误,请修复它们。 If this doesn't fix the problem it might be something else.如果这不能解决问题,则可能是其他问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM