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

Hello again!

I'm wondering what the best way to add a custom EntityAI thing to all EntityAnimals would be? I'm currently doing it on LivingSpawnEvent, but that feels a bit hacky, and I don't know how to check if the EntityAnimals already have the task. Would the best way to do this be at registration?

 

Here's where I'm doing it:

Spoiler

@SubscribeEvent
public static void AddPettingAITask(LivingSpawnEvent event)
{
  EntityLivingBase livingBase = event.getEntityLiving();

  if(livingBase instanceof EntityAnimal)
  {
    EntityAnimal animalEntity = (EntityAnimal)livingBase;
    animalEntity.tasks.addTask(10, new EntityAIPet(animalEntity));
  }
}

 

 

The EntityAIPet class is basically an AI task that allows the player to pet the animal for a small amount of XP every now and then. I can post the code if need be.

Edited by mirk

As far as I am aware, that's correct.

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

Yeah, I just refined it a bit and I'm coming back to report that it's a success!

 

Here's the refined code for anyone looking to do a similar thing:

Spoiler

@SubscribeEvent
public static void AddPettingAITask(LivingSpawnEvent event)
{
    EntityLivingBase livingBase = event.getEntityLiving();

    if(livingBase instanceof EntityAnimal)
    {
      	EntityAnimal animalEntity = (EntityAnimal)livingBase;

      	boolean addPettingTask = true;
      	for(EntityAITasks.EntityAITaskEntry task : animalEntity.tasks.taskEntries)
      	{
      		if(task.action instanceof EntityAIPet)
      		{
      			addPettingTask = false;
      			break;
      		}
		}

        if(addPettingTask)
        {
        	animalEntity.tasks.addTask(10, new EntityAIPet(animalEntity));
        }
	}
}

 

Sorry if the formatting is a bit off, it's not cooperating with me.

Now you can check to see if there is any possible way that addPettingTask = false; ever gets called. Its possible that it never does.

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

It is indeed called, at game load, as it looks like the task list is saved at game exit, then loaded on game load, so the EntityAIPet task persists in the task list, and it tries to add another copy of the task as the EntityAnimal spawns in, so addPettingTask = false (sorry, I'm not familiar with the forum formatting options yet) does get set.

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.