Jump to content

[1.10.2][UNSOLVED] Registering EntityItems with Forge


yooksi

Recommended Posts

I've been trying to find an efficient way of registering my custom EntityItems with Forge for a while. The problem arises when I see how the items behave when tossed and dropped in the world. The motion is way off and there is a few second delay before the items is teleported to a new location a few blocks away from where it once was. If seems like quite a high price to pay just to have them conveniently saved and loaded in your world. Did someone else encounter these issues, and is there a known way to fix this? My main question though would be, what is the proper way of registering and handling an EntityItem?

 

When I do not register the entities and manually spawn them in the world by overriding some methods. everything works fine but as I said, they are not loaded or saved from the world.

 

My current registration method is this:

EntityRegistry.registerModEntity(MyEntityItem.class, "my_entity_item, 0, MyMod.instance, 40, 40, false);

The way I am handling entity creation when using the registration method:

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

@Override
public Entity createEntity(World world, Entity location, ItemStack itemstack)
{
    return new MyEntityItem(world, location.posX, location.posY, location.posZ, itemstack);		
}

I've been trying to solve this problem on many ways for some time now and I am slowly loosing patience.

Any help would really be appreciated. Thank you in advance guys.

 

EDIT: changed 'hasCustomEntity' return value from false to true, thanks to larsgerrits for spotting the mistake.

I still haven't published a mod because I can never get that in-dev version just right to warrant a public release. And yes, after two years of mod development I am still learning to speak Java.

 

Follow me on GitHub: https://github.com/yooksi

Contact me on Twitter: https://twitter.com/yooksi

Read my Minecraft blog: https://yooksidoesminecraft.blogspot.de/

Link to comment
Share on other sites

If

Item#hasCustomEntity

returns

false

,

Item#createEntity

is not called. Also, show your

MyEntityItem

class.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Link to comment
Share on other sites

I beleive you want to copy the motion of the entity aswell as the positions.

I've tried this right now:

public Entity createEntity(World world, Entity location, ItemStack itemstack)
{
    return new MyEntityItem(world, location.posX, location.posY, location.posZ, itemstack, location.motionX, location.motionY, location.motionZ);		
}

public MyEntityItem(World worldObj, double posX, double d0, double posZ, ItemStack stack, double motionX, double motionY, double motionZ) 
{
    super(worldObj, posX, d0, posZ, stack);
}

It didn't seem to work at all. It also might be important to note that the when I register the EntityItem it requires a standard EntityItem constructor - MyEntityItem(World). Don't know if that is relevant or not but it looks like it's getting constructed twice, once with that constructor and once with my custom one. If I don't construct it with the custom one passing the location the entity just doesn't appear in the world.

I still haven't published a mod because I can never get that in-dev version just right to warrant a public release. And yes, after two years of mod development I am still learning to speak Java.

 

Follow me on GitHub: https://github.com/yooksi

Contact me on Twitter: https://twitter.com/yooksi

Read my Minecraft blog: https://yooksidoesminecraft.blogspot.de/

Link to comment
Share on other sites

If

Item#hasCustomEntity

returns

false

,

Item#createEntity

is not called. Also, show your

MyEntityItem

class.

Thank you for spotting that, it was a mistake on my part when I was copy pasting. I didn't read it through enough. I've been experimenting a lot with it and I must have copied it in the stage when it said false. I am aware that it does not appear under this circumstances, the real problem appears when it does spawn. As I've said, the motion is way off and not to mention the weird teleportation effect (like some kind of lag).

I still haven't published a mod because I can never get that in-dev version just right to warrant a public release. And yes, after two years of mod development I am still learning to speak Java.

 

Follow me on GitHub: https://github.com/yooksi

Contact me on Twitter: https://twitter.com/yooksi

Read my Minecraft blog: https://yooksidoesminecraft.blogspot.de/

Link to comment
Share on other sites

Yes, you need a standard constructor accepting a

World

as it's only argument, and pass it to it's super. This is for when the

Entity

is created from NBT e.g. loaded from a save file. If you want to spawn an

Entity

from code, use your own constructor.

 

For the motion, you never actually set the motion of the your

Entity

in your constructor.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Link to comment
Share on other sites

Yes, you need a standard constructor accepting a

World

as it's only argument, and pass it to it's super. This is for when the

Entity

is created from NBT e.g. loaded from a save file. If you want to spawn an

Entity

from code, use your own constructor.

 

For the motion, you never actually set the motion of the your

Entity

in your constructor.

Since I've tried setting the motion and all that in the constructor and it didn't work (or at least I don't know how to make it work), could you please explain to me how I would manually save and load the entity from NBT to and from the world (to achieve basically the same thing as the registration does, just without the whole 'setting up the motion and fixing the weird teleportation glitch' shenanigans). Also where and how would you set the basic motion to correct this? Because I've tried overriding the dropBlockAsItemWithChance and implementing my own version of spawnAsEntity where I only changed the entity construction invocation, and I also tried copying the motion formation code from several sources and placing it in createNewEntity in my custom item class and nothing worked.

I still haven't published a mod because I can never get that in-dev version just right to warrant a public release. And yes, after two years of mod development I am still learning to speak Java.

 

Follow me on GitHub: https://github.com/yooksi

Contact me on Twitter: https://twitter.com/yooksi

Read my Minecraft blog: https://yooksidoesminecraft.blogspot.de/

Link to comment
Share on other sites

Yes, you need a standard constructor accepting a

World

as it's only argument, and pass it to it's super. This is for when the

Entity

is created from NBT e.g. loaded from a save file. If you want to spawn an

Entity

from code, use your own constructor.

 

For the motion, you never actually set the motion of the your

Entity

in your constructor.

Since I've tried setting the motion and all that in the constructor and it didn't work (or at least I don't know how to make it work), could you please explain to me how I would manually save and load the entity from NBT to and from the world (to achieve basically the same thing as the registration does, just without the whole 'setting up the motion and fixing the weird teleportation glitch' shenanigans). Also where and how would you set the basic motion to correct this? Because I've tried overriding the dropBlockAsItemWithChance and implementing my own version of spawnAsEntity where I only changed the entity construction invocation, and I also tried copying the motion formation code from several sources and placing it in createNewEntity in my custom item class and nothing worked.

Does your EntityItem extend EntityItem?

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

Yes, you need a standard constructor accepting a

World

as it's only argument, and pass it to it's super. This is for when the

Entity

is created from NBT e.g. loaded from a save file. If you want to spawn an

Entity

from code, use your own constructor.

 

For the motion, you never actually set the motion of the your

Entity

in your constructor.

Since I've tried setting the motion and all that in the constructor and it didn't work (or at least I don't know how to make it work), could you please explain to me how I would manually save and load the entity from NBT to and from the world (to achieve basically the same thing as the registration does, just without the whole 'setting up the motion and fixing the weird teleportation glitch' shenanigans). Also where and how would you set the basic motion to correct this? Because I've tried overriding the dropBlockAsItemWithChance and implementing my own version of spawnAsEntity where I only changed the entity construction invocation, and I also tried copying the motion formation code from several sources and placing it in createNewEntity in my custom item class and nothing worked.

Does your EntityItem extend EntityItem?

Yes, it does.

I still haven't published a mod because I can never get that in-dev version just right to warrant a public release. And yes, after two years of mod development I am still learning to speak Java.

 

Follow me on GitHub: https://github.com/yooksi

Contact me on Twitter: https://twitter.com/yooksi

Read my Minecraft blog: https://yooksidoesminecraft.blogspot.de/

Link to comment
Share on other sites

  • 3 weeks later...

Bumpy ol' bump!

 

Can anyone help me with this issue?

I still haven't published a mod because I can never get that in-dev version just right to warrant a public release. And yes, after two years of mod development I am still learning to speak Java.

 

Follow me on GitHub: https://github.com/yooksi

Contact me on Twitter: https://twitter.com/yooksi

Read my Minecraft blog: https://yooksidoesminecraft.blogspot.de/

Link to comment
Share on other sites

Bumpy ol' bump!

 

Can anyone help me with this issue?

Can we see the updated whole class?

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

Bumpy ol' bump!

 

Can anyone help me with this issue?

Can we see the updated whole class?

Let me know if you need me to provide more information.

I still haven't published a mod because I can never get that in-dev version just right to warrant a public release. And yes, after two years of mod development I am still learning to speak Java.

 

Follow me on GitHub: https://github.com/yooksi

Contact me on Twitter: https://twitter.com/yooksi

Read my Minecraft blog: https://yooksidoesminecraft.blogspot.de/

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.