Jump to content

(1.16.5 MCP) remove entity after certain time when spawned


ElTotisPro50

Recommended Posts

for example i have my entity (it extends LivingEntity NOT MobEntity or something) and i want to make that when the entity is spawned(via code or spawn egg or /summon) it removes itself when 5 seconds pass

i guess i need to use tick() method for make that when entity is spawned it starts counting to 5 but i dont know how to make a counter

Link to comment
Share on other sites

14 hours ago, Luis_ST said:

you can take a look at the Arrow it will be removed if it's a few seconds on Ground 

 

14 hours ago, Luis_ST said:

you can take a look at the Arrow it will be removed if it's a few seconds on Ground 

luis it worked but speaking of entities:

i want my entity invulnerable, hide its name(my class is extending LivingEntity so it shows the name) and make that it cant be pushed but i added those 3 and none of them is working

public class MyEntity extends LivingEntity {

    private float dirX;
    private float dirZ;
    private int liveTime;
    public NonNullList<ItemStack> inventory = NonNullList.<ItemStack>withSize(4, ItemStack.EMPTY);

    public MyEntity(EntityType<? extends LivingEntity> type, World worldIn) {
        super(type, worldIn);
        this.setCustomNameVisible(false);
        this.setNoGravity(true);
    }

    @Override
    public boolean isImmuneToExplosions() {
        return true;
    }

    @Override
    public boolean isImmuneToFire() {
        return true;
    }

    @Override
    public boolean isInvulnerable() {
        return true;
    }

    @Override
    public boolean canBeRiddenInWater() {
        return false;
    }

    @Override
    protected boolean canBeRidden(Entity entityIn) {
        return false;
    }

    @Override
    public boolean canBePushed() {
        return false;
    }

    @Override
    public void tick() {
        ++this.liveTime;
        if(liveTime == 100) {
            this.removed = true;
            this.remove();
        }
        super.tick();
    }

    @Override
    public void setNoGravity(boolean noGravity) {
        super.setNoGravity(noGravity);
    }

    @Override
    public Iterable<ItemStack> getArmorInventoryList() {
        return this.inventory;
    }

    @Override
    public ItemStack getItemStackFromSlot(EquipmentSlotType slotIn) {
        return slotIn.getSlotType() == EquipmentSlotType.Group.ARMOR ? this.inventory.get(slotIn.getIndex()) : ItemStack.EMPTY;
    }

    @Override
    public void setItemStackToSlot(EquipmentSlotType slotIn, ItemStack stack) {

    }

    @Override
    public HandSide getPrimaryHand() {
        return HandSide.RIGHT;
    }
}

 

Link to comment
Share on other sites

3 hours ago, Luis_ST said:

what does not work?

my entity can be pushed(I DONT WANT MY ENTITY CAN BE PUSHED), i can kill my entity with a sword(I WANT MY ENTITY INMORTAL/OR THAT I CANT HIT IT LIKE IS A GHOST BUT THE BOX COLLIDER STILL EXIST)

and it shows the name above the entity(I WANT TO HIDE THE NAME LIKE A NORMAL ANIMAL WITHOUT CHANGING "extends LivingEntity")

Edited by ElTotisPro50
Link to comment
Share on other sites

6 hours ago, ElTotisPro50 said:

my entity can be pushed(I DONT WANT MY ENTITY CAN BE PUSHED)

canBePushed is only called from the Minecart and the Boat but I hava unfortunately no idea which controls the pushed from Entities

6 hours ago, ElTotisPro50 said:

i can kill my entity with a sword(I WANT MY ENTITY INMORTAL/OR THAT I CANT HIT IT LIKE IS A GHOST BUT THE BOX COLLIDER STILL EXIST)

overwrite hurt method in your Entity class and return false

6 hours ago, ElTotisPro50 said:

and it shows the name above the entity

this is handled in the EntityRenderer

Link to comment
Share on other sites

14 hours ago, Luis_ST said:

canBePushed is only called from the Minecart and the Boat but I hava unfortunately no idea which controls the pushed from Entities

overwrite hurt method in your Entity class and return false

this is handled in the EntityRenderer

but the armor stand can't be pushed(in the armor stand class it overrides canbepushed() and returns false)

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

    • I recently updated my mods and now my game is crashing on startup i tried adding them one at a time and couldn't find anything wrong and no crash log is being made the only thing I have is the debug log. If it helps I'm also using the curseforge launcher to launch the game. Minecraft version- 1.20.1 Forge Version-47.2.0 https://gist.github.com/keepinitreal247/d3105af6bb70e30f183505715113c61a
    • i managed to use another launcher but it still says logging in
    • i tried to open the modpack with multimc by importing it from Ftb and it gave me an error https://paste.ee/p/YDqWN
    • Hi, I'm trying to render a single quad in the world. I'm mixing into the ChestRenderer class. If I understand correctly, BufferSource#getBuffer opens a buffer according to the supplied RenderType (Quads with POSITION_COLOR in my case). Then, I can supply my vertices (a simple 1-block plane along the Z Axis) and close the buffer using BufferSource#endBatch for rendering. This is the code I'm using: @Inject(at = @At("TAIL"), method = "render(...)V") public void render(T blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource multiBufferSource, int packedLight, int packedOverlay, CallbackInfo ci) { BlockPos pos = blockEntity.getBlockPos(); AABB box = new AABB(pos, pos.offset(1, 1, 1)); BufferSource buffer = Minecraft.getInstance().renderBuffers().bufferSource(); VertexConsumer consumer = buffer.getBuffer(RenderType.guiOverlay()); poseStack.pushPose(); poseStack.translate(-pos.getX(), -pos.getY(), -pos.getZ()); consumer.vertex(box.minX, box.maxY, box.minZ).color(1, 1, 1, 1).endVertex(); consumer.vertex(box.minX, box.maxY, box.maxZ).color(1, 1, 1, 1).endVertex(); consumer.vertex(box.minX, box.minY, box.maxZ).color(1, 1, 1, 1).endVertex(); consumer.vertex(box.minX, box.minY, box.minZ).color(1, 1, 1, 1).endVertex(); buffer.endBatch(RenderType.guiOverlay()); poseStack.popPose(); } However, the plane does not get rendered. However, if I replace those 4 vertices with a call to LevelRenderer#renderLineBox and set the RenderType to LINES, it works. Do I need something else to render planes other than the 4 edges of the quad? I used QUADS back in 1.8 where it was still the raw OpenGL type and it worked then. Or am I missing something else entirely? Thanks!
  • Topics

×
×
  • Create New...

Important Information

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