Jump to content

Recommended Posts

Posted

Hey there, I wanted to know how I can summon an entity when I right click an item and bind it to the item after summon so that the user can't use it again until the entity is dead.

Can someone help me with this?

Posted

overwrite use in your Item class and create a new instance of the Entity you want, add it via Level#addFreshEntity
and store the UUID of the Entity in the Tag of the given ItemStack. use as Tag key your mod id + the key you want
last but not least put the whole code in a if condition where check if the ItemStack has your key and then check if the Entity is present in the Level

Posted
Just now, Luis_ST said:

overwrite use in your Item class and create a new instance of the Entity you want, add it via Level#addFreshEntity
and store the UUID of the Entity in the Tag of the given ItemStack. use as Tag key your mod id + the key you want
last but not least put the whole code in a if condition where check if the ItemStack has your key and then check if the Entity is present in the Level

How do I exactly check if the entity is present in the level? All options only work for loaded chunks, what if my chunk isn't loaded?

Posted
On 3/27/2022 at 1:49 PM, diesieben07 said:

Then you cannot know.

So how can I exactly keep track of an entity even though he is in an unloaded chunk? I want to summon an entity and then not let the player summon another one until the entity dies.

Posted
43 minutes ago, diesieben07 said:

The only way would be to either make the entity a chunkloader (inefficient) or keep track globally (e.g. WorldSavedData or a World Capability).

Can you save entities in NBT? If you save them, You need to resummon them because of chunks, no?

Posted
14 minutes ago, diesieben07 said:

You'd store the link between the two (UUID of both player and entity) in the global storage. Then when the entity dies (which it can only do if it is loaded), you remove it from global storage.

How do I listen to the death event of a vanilla entity?

Posted
23 minutes ago, diesieben07 said:

LivingDeathEvent

How will I access the data in the event, I need a serverlevel and I can't get it in event.

Posted
On 3/28/2022 at 11:18 PM, Cappy said:

How will I access the data in the event, I need a serverlevel and I can't get it in event.

assuming you want to use world saved data and that you want to attach it to overworld only (single save for all dimensions), it would be something like this:

entity death event:
    if client then return;
    if not enty type we are trying to handle then return
    verify saved data initialized(parameter: world from event);
    savedData.summonId = empty;
    savedData.dirty = true;

verify saved data initialized function
    if savedData not null then return; // not local
    savedData = ((ServerWorld)currentWorld).getServer().overworld().getDataStorage().computeIfAbsent(OurWorldSavedData::new, OurMod.MODID);
 

do read the manual:
https://forge.gemwire.uk/wiki/Saved_Data
https://mcforge.readthedocs.io/en/1.18.x/datastorage/saveddata/

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.