Jump to content

[SOLVED][1.14.4] Entities and SpawnEggs


TheMikeste1

Recommended Posts

I've been playing around with Entities and decided to make a spawn egg. However, when I used the spawn egg, I got a NullPointerException when I built my EntityType inside of my event subscriber, like so (note the EntityType is built on line 16):

1     //Entities
2     @ObjectHolder("entity_test")
3     public static final EntityType<CreeperEntity> entity_test = null;
4
5     //SpawnEggs
6     @ObjectHolder("spawn_entity_test")
7     public static final Item spawn_entity_test = null;
8
9     @SubscribeEvent
10    public static void registerEntities(final RegistryEvent.Register<EntityType<?>> event) {
11        LOGGER.debug("Wabbits: Registering Entities...");
12        event.getRegistry().registerAll(
13                EntityType.Builder
14                        .create(CreeperEntity::new, EntityClassification.AMBIENT)
15                        .size(0.4F, 0.7F)
16                        .build("entity_test").setRegistryName(Constants.MOD_ID, "entity_test")
17        );
18    } //registerEntities()
19
20    @SubscribeEvent
21    public static void registerSpawnEggs(final RegistryEvent.Register<Item> event) {
22        LOGGER.debug("Wabbits: Registering Spawn Eggs...");
23        event.getRegistry().registerAll(
24                new SpawnEggItem(entity_test, 0, 0, new Item.Properties().group(ItemGroups.MAIN_GROUP_WABBITS)).setRegistryName(Constants.MOD_ID, "spawn_entity_test")
25        );
26    } //registerSpawnEggs()


After exploring with the debugger, I discovered that Items are registered before Entities, which means the spawn egg is being registered before the ObjectHolder for my EntityType is set (resulting in the egg trying to spawn null). I messed around with SubscribeEvent priorities for a while, but Items always registered first. I then tried building the EntityType and assigning it before the register event (lines 3-6):
 

1     //Entities
2     @ObjectHolder("entity_test")
3     public static final EntityType<CreeperEntity> entity_test = EntityType.Builder
4             .create(CreeperEntity::new, EntityClassification.AMBIENT)
5             .size(0.4F, 0.7F)
6             .build("entity_test");
7 
8     //SpawnEggs
9     @ObjectHolder("spawn_entity_test")
10    public static final Item spawn_entity_test = null;
11
12
13    @SubscribeEvent
14    public static void registerEntities(final RegistryEvent.Register<EntityType<?>> event) {
15        LOGGER.debug("Wabbits: Registering Entities...");
16        event.getRegistry().registerAll(
17                entity_test.setRegistryName(Constants.MOD_ID, "entity_test")
18        );
19    } //registerEntities()
20
21    @SubscribeEvent
22    public static void registerSpawnEggs(final RegistryEvent.Register<Item> event) {
23        LOGGER.debug("Wabbits: Registering Spawn Eggs...");
24        event.getRegistry().registerAll(
25                new SpawnEggItem(entity_test, 0, 0, new Item.Properties().group(ItemGroups.MAIN_GROUP_WABBITS)).setRegistryName(Constants.MOD_ID, "spawn_entity_test")
26        );
27    } //registerSpawnEggs()

This works, but seems odd since every other object (Blocks, Items, ect.) is built or constructed inside of #registerAll. Is there a better way to set up the Entity and SpawnEgg?

Thanks in advance!

Link to comment
Share on other sites

11 hours ago, diesieben07 said:

You have to create (not register) the EntityTypes beforehand, then register them in the EntityType registry event, like you already do.

However you must not create registry entries in static initializers, in this case you can create the entity types in the item registry event.

Awesome, thank you!

Link to comment
Share on other sites

  • TheMikeste1 changed the title to [SOLVED][1.14.4] Entities and SpawnEggs

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

    • There are a few Forge specific mods that I would dearly love to use on my new server, but my friend whom I'm setting up the new server with has expressed concerns that Forge may break or change some core mechanics that might make some farms/contraptions/Redstone devices that work in Vanilla or Fabric not work in Forge. They have sent me a few links to some Twitch minecrafters that have commented that "Forge changes Redstone behavior" or "Certain farms are broken on Forge but not Vanilla", however, I've never experienced this myself, and haven't found or seen any actual examples of this being the case.  I've scoured Youtube and can't find anyone saying "This contraption doesn't work on Forge Ole777".  I spoke to a mod developer who mentioned that there may have been small bugs where this might have been the case in extremely complicated builds, but he is not of aware of this still being an issue or concern. And he mentioned that any instance where something might break would definitely be considered a bug and should be reported and it would/could be fixed, as Forge explicitly doesn't intend to change any vanilla behavior. It just seems much more rumor than fact that Forge might break things, and just wanted to see if anyone had any input. Thank you!
    • This is a costume block whit the shape of a zombie is not a full block its flamable when ignited  the flames just burn on top or by a aside  that dint seems right  // ########## ########## ########## ########## @Override public int getFlammability(BlockState state, BlockGetter level, BlockPos pos, Direction direction) {     return 300;//((FireBlock)Blocks.FIRE).getBurnOdds(state); //300 } it just seems like check to know if a fire block could despawn mi block    ########### i want mi block to look more like this      what could i use  i was thinking on something like onNeigbourgChange() check for nearby fire or lava blocks   then using the falling block entity spawn a fire block in the same position than mi dead body block  thanks for your readings             
    • LINK DAFTAR AKUN GACOR VVIP BAMBUHOKI88 LINK LOGIN RESMI BAMBUHOKI88 LINK KLAIM BONUS 100% BAMBUHOKI88 Bambuhoki88 Merupakan kumpulan pilihan link situs rekomendasi slot bank bri di tahun 2024 di rekomendasi oleh para slotter deposit bank bri di indonesia dengan tingkat peluang kemenangan tinggi untuk setiap bet mudah menang maxwin.
    • LINK DAFTAR AKUN GACOR VVIP BAMBUHOKI88 LINK LOGIN RESMI BAMBUHOKI88   LINK KLAIM BONUS 100% BAMBUHOKI88 BAMBUHOKI88 Merupakan Pilihan Terbaik Situs Slot Bank Bca Yang Gampang Menang Maxwin Dan Jackpot Besar Dengan Deposit Bank Bca Yang Online 24Jam Auto Dapat Wd Gede.  
    • So I've been trying to make an mob that can have multiple textures, and the mob has the Witch model, and I can put a texture on it but I don't know how to make it spawn with a random texture. I tried searching through mobs that have multiple textures like the fox, rabbit, and stuff but I wasn't able to find out how to do it and I kept getting errors when i tried compiling: error: method createKey in class net.minecraft.network.datasync.EntityDataManager cannot be applied to given types; private static final DataParameter<Integer> ALCHEMIST_TYPE = EntityDataManager.createKey(AlchemistEntity.class, DataSerializers.VARINT); ^ required: java.lang.Class<? extends net.minecraft.entity.Entity>,net.minecraft.network.datasync.IDataSerializer<T> found: java.lang.Class<net.newblocks.entity.AlchemistEntity>,net.minecraft.network.datasync.IDataSerializer<java.lang.Integer> reason: cannot infer type-variable(s) T (argument mismatch; java.lang.Class<net.newblocks.entity.AlchemistEntity> cannot be converted to java.lang.Class<? extends net.minecraft.entity.Entity>) 1 error   And sorry there isn't much info, this was the only error that appears when I tried to copy the same thing from one of those mobs with multiple textures (plus imports). I already tried searching on the site and didn't find much. I can provide more info if needed
  • Topics

×
×
  • Create New...

Important Information

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