Jump to content

[1.14.4] Custom ItemEntity Prevents World Loading


Zorochase

Recommended Posts

Hello,

I've made a simple custom ItemEntity that can't catch on fire. Here's the code for it:

package zorochase.yanm.item;

import net.minecraft.entity.EntityType;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;

public class FireproofItemEntity extends ItemEntity {


    public FireproofItemEntity(World worldIn, double x, double y, double z, ItemStack stack) {
        super(worldIn, x, y, z, stack);
    }


    public FireproofItemEntity(EntityType<?> entityType, World world) {
        super((EntityType<? extends ItemEntity>)entityType, world);
    }

    @Override
    public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) {
        if (!p_70097_1_.isFireDamage()) {
            return super.attackEntityFrom(p_70097_1_, p_70097_2_);
        }
        return false;
    }
}

 

Here's how it was registered (taken from my main mod class):

@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
public static class RegistryEvents {
    @SubscribeEvent
    public static void onEntityRegistry(final RegistryEvent.Register<EntityType<?>> entityRegistryEvent) {
        entityRegistryEvent.getRegistry().register(
                EntityType.Builder
                        .create(FireproofItemEntity::new, EntityClassification.MISC)
                        .build(YetAnotherNetheriteMod.MODID + ":fireproof_item_entity")
                        .setRegistryName(YetAnotherNetheriteMod.MODID, "fireproof_item_entity")
        );
    }
}

 

I also have a FireproofItem class that I use for all items I want to be fireproof when dropped, here's its code:

package zorochase.yanm.item;

import net.minecraft.entity.Entity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import zorochase.yanm.YetAnotherNetheriteMod;

import javax.annotation.Nullable;

public class FireproofItem extends Item {

    public FireproofItem(String registryName) {
        super(new Item.Properties().group(YetAnotherNetheriteMod.MOD_TAB));
        setRegistryName(YetAnotherNetheriteMod.MODID, registryName);
    }

    @Nullable
    @Override
    public Entity createEntity(World world, Entity location, ItemStack itemstack) {
        FireproofItemEntity custom = new FireproofItemEntity(world, location.posX, location.posY, location.posZ, itemstack);
        custom.setMotion(location.getMotion());
        custom.setDefaultPickupDelay();
        return custom;
    }

    @Override
    public boolean hasCustomEntity(ItemStack stack) {
        return true;
    }
}

 

All of this works just fine, so long as I don't leave a FireproofItem on the ground before quitting the game/to the main menu. If I do, and I try to load the world again, it freezes on 100%.

I have no idea what could be causing this. Somebody else on these forums had the same issue a few months ago, but it seems they were also unable to figure it out. That or if they did

they never replied with their fix. Any help would really be appreciated, as this is a feature I'd really rather not leave out.

 

Edited by Zorochase
  • Like 1
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



×
×
  • Create New...

Important Information

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