Minecraft 1.15 Forge Bullet mod无法渲染

时间:2020-08-10 21:17:19

标签: java minecraft minecraft-forge

我正在尝试制作一个子弹mod,它不在屏幕上呈现。我遵循了与其他伪造MOD模型相同的模式。我没有收到任何错误,并且可以验证是否在游戏命令/ 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);
    }

    }

子弹实体模型

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

我想念什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

在您的主要Entity类中,而不是EntityType<? extends Entity>

在渲染器类中尝试使用,

EntityType<? extends BulletEntity>

如果有任何错误,请修复。 如果这不能解决问题,则可能是其他原因。

相关问题