簡體   English   中英

Minecraft 1.15 Forge Bullet mod 未渲染

[英]Minecraft 1.15 Forge Bullet mod not rendering

我正在嘗試制作子彈模型,但它沒有在屏幕上呈現。 我遵循與其他 Forge mob mods 相同的模式。 我沒有收到任何錯誤,我能夠驗證 object 是使用游戲命令 /execute 在屏幕上創建的。

下面的代碼

子彈實體:

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

    }

子彈實體 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;
    }
    }

渲染器:

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

我錯過了什么?

謝謝!

在您的主要實體 class 而不是EntityType<? extends Entity> EntityType<? extends Entity>它應該是EntityType<? extends BulletEntity> EntityType<? extends BulletEntity>

在您的渲染器 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;
    

}




}

如果有任何錯誤,請修復它們。 如果這不能解決問題,則可能是其他問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM