简体   繁体   中英

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. I'm not getting any errors and I'm able to verify that the object gets created onscreen using in game command /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

    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> EntityType<? extends Entity> it should be EntityType<? extends BulletEntity> EntityType<? extends BulletEntity> .

In your renderer class try using,

   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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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