Jump to content

[1.16.4] TNTEntityRenderer


<Gl33p_0r4nge>

Recommended Posts

So I have the following:

 

ShrapnelTNTEntity:

package me.gleep.oreganized.entities;

import me.gleep.oreganized.util.RegistryHandler;
import net.minecraft.entity.*;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.network.IPacket;
import net.minecraft.network.datasync.DataParameter;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.network.datasync.EntityDataManager;
import net.minecraft.network.play.server.SSpawnObjectPacket;
import net.minecraft.particles.ParticleTypes;
import net.minecraft.world.Explosion;
import net.minecraft.world.World;
import org.jetbrains.annotations.NotNull;

import javax.annotation.Nullable;

public class ShrapnelTNTEntity extends Entity {

    private static final DataParameter<Integer> FUSE = EntityDataManager.createKey(ShrapnelTNTEntity.class, DataSerializers.VARINT);
    @Nullable
    private LivingEntity tntPlacedBy;
    private int fuse = 100;

    public ShrapnelTNTEntity(EntityType<? extends ShrapnelTNTEntity> entityTypeIn, World worldIn) {
        super(entityTypeIn, worldIn);
        this.preventEntitySpawning = true;
    }

    public ShrapnelTNTEntity(World worldIn, double x, double y, double z, @Nullable LivingEntity igniter) {
        this(RegistryHandler.SHRAPNEL_TNT_ENTITY.get(), worldIn);
        this.setPosition(x, y, z);
        double d0 = worldIn.rand.nextDouble() * (double)((float)Math.PI * 2F);
        this.setMotion(-Math.sin(d0) * 0.02D, (double)0.2F, -Math.cos(d0) * 0.02D);
        this.setFuse(100);
        this.prevPosX = x;
        this.prevPosY = y;
        this.prevPosZ = z;
        this.tntPlacedBy = igniter;
    }

    public void tick() {
        if (!this.hasNoGravity()) {
            this.setMotion(this.getMotion().add(0.0D, -0.04D, 0.0D));
        }

        this.move(MoverType.SELF, this.getMotion());
        this.setMotion(this.getMotion().scale(0.98D));
        if (this.onGround) {
            this.setMotion(this.getMotion().mul(0.7D, -0.5D, 0.7D));
        }

        --this.fuse;
        if (this.fuse <= 0) {
            this.remove();
            if (!this.world.isRemote) {
                this.explode();
            }
        } else {
            this.func_233566_aG_();
            if (this.world.isRemote) {
                this.world.addParticle(ParticleTypes.SMOKE, this.getPosX(), this.getPosY() + 0.5D, this.getPosZ(), 0.0D, 0.0D, 0.0D);
            }
        }

    }

    protected void explode() {
        this.world.createExplosion(this, this.getPosX(), this.getPosYHeight(0.0625D), this.getPosZ(), 3.0F, Explosion.Mode.BREAK);
    }

    public void setFuse(int fuseIn) {
        this.dataManager.set(FUSE, fuseIn);
        this.fuse = fuseIn;
    }

    @Override
    protected boolean canTriggerWalking() {
        return false;
    }

    @Override
    public boolean canBeCollidedWith() {
        return !this.isAlive();
    }

    public int getFuse() {
        return this.fuse;
    }

    @Override
    protected float getEyeHeight(Pose poseIn, EntitySize sizeIn) {
        return 0.15F;
    }

    @Override
    public void notifyDataManagerChange(DataParameter<?> key) {
        if (FUSE.equals(key)) {
            this.fuse = this.getFuseDataManager();
        }
    }

    public int getFuseDataManager() {
        return this.dataManager.get(FUSE);
    }

    @Nullable
    public LivingEntity getTntPlacedBy() {
        return this.tntPlacedBy;
    }

    @Override
    protected void registerData() {
        this.dataManager.register(FUSE, 100);
    }

    @Override
    protected void readAdditional(CompoundNBT compound) {
        this.setFuse(compound.getShort("Fuse"));
    }

    @Override
    protected void writeAdditional(CompoundNBT compound) {
        compound.putShort("Fuse", (short)this.getFuse());
    }

    @NotNull
    @Override
    public IPacket<?> createSpawnPacket() {
        return new SSpawnObjectPacket(this);
    }
}

 

ShrapnelTNTRenderer:

package me.gleep.oreganized.entities.entityrenderer;

import com.mojang.blaze3d.matrix.MatrixStack;
import me.gleep.oreganized.entities.ShrapnelTNTEntity;
import me.gleep.oreganized.util.RegistryHandler;
import net.minecraft.block.BlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.client.renderer.entity.TNTMinecartRenderer;
import net.minecraft.client.renderer.texture.AtlasTexture;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector3f;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fml.client.registry.IRenderFactory;
import org.jetbrains.annotations.NotNull;

@OnlyIn(Dist.CLIENT)
public class ShrapnelTNTRenderer extends EntityRenderer<ShrapnelTNTEntity> {
    public ShrapnelTNTRenderer(EntityRendererManager renderManagerIn) {
        super(renderManagerIn);
        this.shadowSize = 0.5F;
    }

    @Override
    public void render(ShrapnelTNTEntity entityIn, float entityYaw, float partialTicks, MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, int packedLightIn) {
        matrixStackIn.push();
        matrixStackIn.translate(0.0D, 0.5D, 0.0D);
        if ((float)entityIn.getFuse() - partialTicks + 1.0F < 10.0F) {
            float f = 1.0F - ((float)entityIn.getFuse() - partialTicks + 1.0F) / 10.0F;
            f = MathHelper.clamp(f, 0.0F, 1.0F);
            f = f * f;
            f = f * f;
            float f1 = 1.0F + f * 0.3F;
            matrixStackIn.scale(f1, f1, f1);
        }

        matrixStackIn.rotate(Vector3f.YP.rotationDegrees(-90.0F));
        matrixStackIn.translate(-0.5D, -0.5D, 0.5D);
        matrixStackIn.rotate(Vector3f.YP.rotationDegrees(90.0F));
        TNTMinecartRenderer.renderTntFlash(RegistryHandler.SHRAPNEL_TNT.get().getDefaultState(), matrixStackIn, bufferIn, packedLightIn, entityIn.getFuse() / 5 % 2 == 0);
        matrixStackIn.pop();
        super.render(entityIn, entityYaw, partialTicks, matrixStackIn, bufferIn, packedLightIn);
    }

    @NotNull
    @Override
    public ResourceLocation getEntityTexture(ShrapnelTNTEntity entity) {
        return AtlasTexture.LOCATION_BLOCKS_TEXTURE;
    }
}

 

RegistryHandler:

package me.gleep.oreganized.util;

import me.gleep.oreganized.Oreganized;
import me.gleep.oreganized.armors.*;
import me.gleep.oreganized.blocks.*;
import me.gleep.oreganized.entities.LeadNuggetEntity;
import me.gleep.oreganized.entities.ShrapnelTNTEntity;
import me.gleep.oreganized.entities.tileentities.ExposerBlockTileEntity;
import me.gleep.oreganized.effects.*;
import me.gleep.oreganized.fluids.*;
import me.gleep.oreganized.items.*;
import me.gleep.oreganized.tools.*;
import net.minecraft.block.*;
import net.minecraft.block.material.Material;
import net.minecraft.client.gui.DisplayEffectsScreen;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.fluid.Fluid;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.*;
import net.minecraft.potion.Effect;
import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.ToolType;
import net.minecraftforge.fluids.ForgeFlowingFluid;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;

public class RegistryHandler {
	public static final DeferredRegister<EntityType<?>> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITIES, Oreganized.MOD_ID);
	
	public static void init() {
        ENTITIES.register(FMLJavaModLoadingContext.get().getModEventBus());
		//...
    }

	public static final RegistryObject<EntityType<ShrapnelTNTEntity>> SHRAPNEL_TNT_ENTITY = ENTITIES.register("shrapnel_tnt", () ->
            EntityType.Builder.<ShrapnelTNTEntity>create(
                ShrapnelTNTEntity::new, EntityClassification.MISC
            ).immuneToFire().size(0.98F, 0.98F).trackingRange(10).func_233608_b_(10).build("shrapnel_tnt")
    );

}

 

And the renderer registration:

private void doClientStuff(final FMLClientSetupEvent event) {
  	RenderingRegistry.registerEntityRenderingHandler(RegistryHandler.SHRAPNEL_TNT_ENTITY.get(), ShrapnelTNTRenderer::new);
}

 

and the tnt itself works but the "exploding" entity does not render.
spacer.pngspacer.pngspacer.png

 

I tried almost everything can anyone help me?

Edited by <Gl33p_0r4nge>
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • 하루툰 포커대회 ▲ºBCGAME88ºC0Mº-♧ BMW아로마마사지 여행 베개툰 BMW아로마마사지 영상 유튜브링크 rw3r8 ◈ BMW아로마마사지 도박장 나이트몰 BMW아로마마사지 경기 뉴욕코리아 se9w1 ¶ BMW아로마마사지 도박장 오레곤저널 BMW아로마마사지 접속 바트웹 ql2i0 ‡ BMW아로마마사지 영상 토토군 BMW아로마마사지 추천 해축티비 ps0y4 ■ BMW아로마마사지 경기 토렌트럭 BMW아로마마사지 유투브 인형툰 tc8k5 ● BMW아로마마사지 쿠푼 떡돌이넷 BMW아로마마사지 방법 먹튀디펜스 qt7a6 ♧ BMW아로마마사지 포커대회 봉봉몰 BMW아로마마사지 방송 섹스게이트 fs8d8 ▽ BMW아로마마사지 경기 웹툰1번지 BMW아로마마사지 본사 오나왕 hm9k6 ㏘ BMW아로마마사지 본사 꽁닷컴 BMW아로마마사지 업체 아랍코리아넷 mm7k9 ☏ BMW아로마마사지 카지노펍 밤의전쟁 BMW아로마마사지 전략 토렌트씨 ch4a2 ▦ BMW아로마마사지 유투브 오피야 BMW아로마마사지 중계 올인구조대 ci5v6 ☜ BMW아로마마사지 업체 콩따넷 BMW아로마마사지 접속 티비나라 ys9k7 § BMW아로마마사지 싸이트 신세계인터내셔날 BMW아로마마사지 전략 고고툰 bt4w5 ♪ BMW아로마마사지 투어 망고넷 BMW아로마마사지 본사 슈어랭킹 kx3w0 △ BMW아로마마사지 캐쉬게임 삼다수 BMW아로마마사지 홀덤바 오피박스 ux7h2 △
    • 오오사카부 룸카페 커뮤니티 ♨BCGAME88·COM㉿ 오오사카부 룸카페 리조트 테니스 오오사카부 룸카페 모임 정보 스케이팅 룸카페 검증 올림픽 룸카페 구인광고[본사문의 텔레 @JBOX7] 오오사카부 룸카페 모임 정보 족구 오오사카부 룸카페 동호회 필드하키 룸카페 라인 스키 룸카페 이야기[총판문의 카톡 JBOX7] 오오사카부 룸카페 여행 복싱 오오사카부 룸카페 텔레그램 당구 룸카페 이야기 플래그 룸카페 커뮤니티[각종 오피 커뮤니티 제작] 오오사카부 룸카페 유투브 축구 오오사카부 룸카페 방송 스케이팅 룸카페 투어 씨름 룸카페 방송[마케팅문의] 오오사카부 룸카페 텔레그램 온라인게임 오오사카부 룸카페 총판 철봉 룸카페 구인광고 마라톤 룸카페 사이트 [카지노본사] 오오사카부 룸카페 검증 배드민턴 오오사카부 룸카페 트위터 쇼트트랙 룸카페 야동 세팍타크로 룸카페 인스타그램 [스포츠본사] 오오사카부 룸카페 위치 스키 오오사카부 룸카페 추천 핸드볼 룸카페 검증 격기 룸카페 여행[토토본사 문의] 오오사카부 룸카페 동영상 스키 오오사카부 룸카페 모임 정보 알파인 룸카페 구인광고 소프트테니스 룸카페 사이트 [토토총판 구매] 오오사카부 룸카페 접속 씨름 오오사카부 룸카페 이야기 쇼트트랙 룸카페 업소모집 하키 룸카페 검증[카지노총판] 오오사카부 룸카페 구인광고 다이빙 오오사카부 룸카페 리조트 미식축구 룸카페 영상 올림픽 룸카페 하는곳[야마토본사] 오오사카부 룸카페 스토리 핸드볼 오오사카부 룸카페 유투브 씨름 룸카페 모임 정보 노르딕 룸카페 카카오톡[바카라총판] 오오사카부 룸카페 주소 쇼트트랙 오오사카부 룸카페 리조트 풋볼 룸카페 링크 보치아 룸카페 틱톡[경마총판] 오오사카부 룸카페 사이트 사이클 오오사카부 룸카페 방송 링 룸카페 총판 링 룸카페 텔레그램[BCGAME 비씨게임 총판문의]알림 설정 추천 구독 좋아요
    • 요르단 백마 주소 ↘BCGAME4·COM▦ 밝혔다. 사건을 백마 막힘 했다.  백마 라인  요르단 백마 검증 [본사문의 텔레 JBOX7] 규모는 백마 주소찾기 기아차 백마 여행  요르단 백마 이야기 [총판문의 카톡 JBOX7] 있다.  백마 새주소 양분돼 백마 시스템  요르단 백마 주소 [각종 오피 커뮤니티 제작] 차례로 백마 주소 불리는 백마 지도  요르단 백마 주소 [마케팅문의] 아직 백마 성인 찾아오는 백마 유튜브  요르단 백마 유튜브 [카지노본사] 한 백마 접속 그룹 백마 링크  요르단 백마 유튜브 [스포츠본사] 사장의 백마 라인 올해는 백마 오픈채팅  요르단 백마 접속 [토토본사 문의] 임원인사를 백마 투어 인사를 백마 주소  요르단 백마 지도 [토토총판 구매] 가입한 백마 주소찾기 있어 백마 추천  요르단 백마 오픈채팅 [카지노총판] 사업분야 백마 라인 증가했기 백마 유투브  요르단 백마 위치 [야마토본사] 경영 백마 시스템 분위기”라고 백마 위치  요르단 백마 검증 [바카라총판] 이번 백마 추천 사장이 백마 여행  요르단 백마 지도 [경마총판] 다복회에서 백마 새주소 사업조정이 백마 인스타그램  요르단 백마 유투브 [BCGAME 비씨게임 총판문의]알림 설정 추천 구독 좋아요
    • 전세계 복권 방법○BCGAME4·C0M† 아틀란티스카지노 복권 포커대회 전세계 몬테네그로 복권 유투브 [본사문의 텔레 JBOX7]전세계 복권 #← 게임장 볼리비아 복권 포커대회 전세계 수단 전세계 복권 도박장 [총판문의 카톡 JBOX7]전세계 복권 ☆◑ 바카라펍 아르헨티나 복권 홀덤바 전세계 모나코 전세계 복권 싸이트 [각종 오피 커뮤니티 제작]전세계 복권 ℡㏂ 검증 바하마 복권 중계 전세계 북아프리카 전세계 복권 커뮤니티 [마케팅문의]전세계 복권 ▥º 유투브 투르크메니스탄 복권 홀덤펍 전세계 앙골라 전세계 복권 영상 [카지노본사]전세계 복권 ‡◁ 유투브 사하라 복권 여행 전세계 그랜드리스카지노 전세계 복권 홀덤바 [스포츠본사]전세계 복권 ▤☞ 접속 라오스 복권 놀이터 전세계 잠비아 전세계 복권 중계 [토토본사 문의]전세계 복권 ▥™ 놀이터 겐팅하이랜드카지노 복권 모집 전세계 남수단 전세계 복권 사이트 [토토총판 구매]전세계 복권 ♠◀ 게임장 소말릴란드 복권 홀덤바 전세계 겐팅하이랜드카지노 전세계 복권 포커대회 [카지노총판]전세계 복권 ▥◀ 게임장 키르기스스탄 복권 모집 전세계 싱가포르 전세계 복권 투어 [야마토본사]전세계 복권 ※☜ 영상 아이티 복권 총판 전세계 베냉 전세계 복권 쿠푼 [바카라총판]전세계 복권 ▽† 영상 예멘 복권 검증 전세계 카자흐스탄 전세계 복권 카지노펍 [경마총판]시저스팰리스카지노 복권 사이트 타지키스탄 복권 본사 [BCGAME 비씨게임 총판문의]알림 설정 추천 구독 좋아요
    • 미에 스텐드바 스토리 #BCGAME88·COM▷ 미에 스텐드바 텔레그램 소프트테니스 미에 스텐드바 링크 쇼트트랙 스텐드바 텔레그램 정구 스텐드바 텔레그램[본사문의 텔레 @JBOX7] 미에 스텐드바 구인광고 세팍타크로 미에 스텐드바 스토리 씨름 스텐드바 새주소 라켓볼 스텐드바 구인광고[총판문의 카톡 JBOX7] 미에 스텐드바 스토리 보치아 미에 스텐드바 방송 소프트테니스 스텐드바 사이트 스키 스텐드바 새주소[각종 오피 커뮤니티 제작] 미에 스텐드바 접속 크리켓 미에 스텐드바 리조트 알파인 스텐드바 카카오톡 테니스 스텐드바 투어[마케팅문의] 미에 스텐드바 주소 창던지기 미에 스텐드바 새주소 수상스포츠 스텐드바 하는곳 수상스포츠 스텐드바 오픈채팅 [카지노본사] 미에 스텐드바 스토리 스케이팅 미에 스텐드바 방송 프리스타일 스텐드바 야동 레슬링 스텐드바 추천 [스포츠본사] 미에 스텐드바 틱톡 정구 미에 스텐드바 최신주소 골프 스텐드바 틱톡 도마 스텐드바 위치[토토본사 문의] 미에 스텐드바 최신주소 스키 미에 스텐드바 주소 씨름 스텐드바 총판 쿵푸 스텐드바 모임 정보 [토토총판 구매] 미에 스텐드바 동영상 골프 미에 스텐드바 라인 탁구 스텐드바 링크 안마 스텐드바 라인[카지노총판] 미에 스텐드바 여행 주짓수 미에 스텐드바 유투브 테니스 스텐드바 인스타그램 철봉 스텐드바 동호회[야마토본사] 미에 스텐드바 총판 쿵푸 미에 스텐드바 오픈채팅 기계체조 스텐드바 이야기 레슬링 스텐드바 최신주소[바카라총판] 미에 스텐드바 카카오톡 쇼트트랙 미에 스텐드바 사이트 씨름 스텐드바 텔레그램 포환던지기 스텐드바 동호회[경마총판] 미에 스텐드바 카카오톡 티볼 미에 스텐드바 하는곳 보치아 스텐드바 구인광고 권투 스텐드바 위치[BCGAME 비씨게임 총판문의]알림 설정 추천 구독 좋아요
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.