Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

Does MC reused Entity Ids when the original holder is kill? For example: There are 600 entities in a world and I kill entity number 32, will entity 601 have an id of 600 or 31?

  • Author
3 minutes ago, diesieben07 said:

They will not be re-used until all integers have been used.

At which point does this happen? (A.K.A., can I rely on it not ever being not reused)

An integer represents a lot of values.  As for whether it is good to use or not depends on what you want to use it for.  What is it you are trying to do?

  • Author
12 minutes ago, OreCruncher said:

As for whether it is good to use or not depends on what you want to use it for.  What is it you are trying to do?

At either world gen or birth, I want the baby of my custom mob to store its parents' entity ids. As well, I want the game to check if the id is dead to check if the parents are dead. If MC reuses the ids too often, then the above way will eventually break. 

For this I would think you need to use the unqiue ID of the mob.  This ID is persistent across world reloads and what not.  The ID is a UUID, not a simple integer.

  • Author

Alright, but when I use the UUIDs, the console is spammed with this:

 

[19:48:20] [Server thread/WARN]: Keeping entity iv:villager that already exists with UUID 8bcface4-efef-410c-94db-637c8434c733

 

  • Author
5 minutes ago, diesieben07 said:

Yeah, I am not looking through your whole code. Where do you interact with the entity's UUID?

IvVillager.class and GuiIvVillagerInfo.

1 hour ago, OrangeVillager61 said:

GuiIvVillagerInfo.

GuiIvVillagerInfo does not interact with the UUID. There is a distinct lack of the string "UUID" in that file.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

  • Author
13 minutes ago, Draco18s said:

GuiIvVillagerInfo does not interact with the UUID. There is a distinct lack of the string "UUID" in that file.

Oops, I meant VillageStructures in the below method:

 

protected void spawnIvVillagers(World worldIn, StructureBoundingBox structurebb, int x, int y, int z, int count, boolean allow_children, int prof)
			{
			    if (this.villagersSpawned < count)
			    {
			        for (int i = this.villagersSpawned; i < count; ++i)
			        {
			            int j = this.getXWithOffset(x + i, z);
			            int k = this.getYWithOffset(y);
			            int l = this.getZWithOffset(x + i, z);
			
			            if (!structurebb.isVecInside(new BlockPos(j, k, l)))
			            {
			                break;
			            }
			
			            ++this.villagersSpawned;
			
			            if (this.isZombieInfested)
			            {
			                EntityZombieVillager entityzombievillager = new EntityZombieVillager(worldIn);
			                entityzombievillager.setLocationAndAngles((double)j + 0.5D, (double)k, (double)l + 0.5D, 0.0F, 0.0F);
			                entityzombievillager.onInitialSpawn(worldIn.getDifficultyForLocation(new BlockPos(entityzombievillager)), (IEntityLivingData)null);
			                entityzombievillager.enablePersistence();
			                worldIn.spawnEntity(entityzombievillager);
			            }
			            else
			            {
			            	if (allow_children)
			            	{
			            		int Gender;
				    		    Gender = r.nextInt(2) + 1;
				    	        String Name = IvVillager.random_name(Gender);
				                IvVillager entityvillager = new IvVillager(worldIn, prof, Gender, Name);
				                entityvillager.setLocationAndAngles((double)j + 0.5D, (double)k, (double)l + 0.5D, 0.0F, 0.0F);
				                entityvillager.setProfession(this.chooseForgeProfession(i, entityvillager.getProfessionForge()));
				                entityvillager.finalizeMobSpawn(worldIn.getDifficultyForLocation(new BlockPos(entityvillager)), (IEntityLivingData)null, false);
				                worldIn.spawnEntity(entityvillager);
				                if (r.nextInt(3) == 0)
				                {
				                	UUID father_id = entityvillager.getUniqueID();
				                	Gender = r.nextInt(2) + 1;
					    	        Name = IvVillager.random_name(Gender);
					                IvVillager entityvillager2 = new IvVillager(worldIn, prof, Gender, Name);
					                entityvillager2.setLocationAndAngles((double)j + 0.5D, (double)k, (double)l + 0.5D, 0.0F, 0.0F);
					                entityvillager2.setProfession(this.chooseForgeProfession(i, entityvillager2.getProfessionForge()));
					                entityvillager2.finalizeMobSpawn(worldIn.getDifficultyForLocation(new BlockPos(entityvillager2)), (IEntityLivingData)null, false);
					                worldIn.spawnEntity(entityvillager2);
					                UUID mother_id = entityvillager2.getUniqueID();
					    		    Gender = r.nextInt(2) + 1;
					    	        Name = IvVillager.random_name(Gender);
					                IvVillager entityvillager3 = new IvVillager(worldIn, prof, Gender, Name, father_id, mother_id);
					                entityvillager3.setGrowingAge(-23000);
					                entityvillager3.setLocationAndAngles((double)j + 0.5D, (double)k, (double)l + 0.5D, 0.0F, 0.0F);
					                entityvillager3.setProfession(this.chooseForgeProfession(i, entityvillager.getProfessionForge()));
					                entityvillager3.finalizeMobSpawn(worldIn.getDifficultyForLocation(new BlockPos(entityvillager3)), (IEntityLivingData)null, false);
					                worldIn.spawnEntity(entityvillager3);
				                }
			            	}
			            	int Gender;
			    		    Gender = r.nextInt(2) + 1;
			    	        String Name = IvVillager.random_name(Gender);
			                IvVillager entityvillager = new IvVillager(worldIn, prof, Gender, Name);
			                entityvillager.setLocationAndAngles((double)j + 0.5D, (double)k, (double)l + 0.5D, 0.0F, 0.0F);
			                entityvillager.setProfession(this.chooseForgeProfession(i, entityvillager.getProfessionForge()));
			                entityvillager.finalizeMobSpawn(worldIn.getDifficultyForLocation(new BlockPos(entityvillager)), (IEntityLivingData)null, false);
			                worldIn.spawnEntity(entityvillager);
			            }
			        }
			    }
			}

 

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...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.