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

Hey all,

 

This code of mine is causing cascading worldgen. I'm lead to believe that the getTileEntityMap() call is what's causing the cascading worldgen.

 

Can anyone suggest optimisations to reduce the amount of calls to getTileEntityMap()? OR even if there is any other way of finding tile entities in a large area

 

Here is the function:

private static void findTileEntity(LivingSpawnEvent.CheckSpawn event, int radius)
{
  BlockPos pos = event.getEntity().getPosition();

  int chunkPosX = pos.getX() >> 4;
  int chunkPosZ = pos.getZ() >> 4;

  if (!event.getWorld().isRemote)
  {
    for (int x = chunkPosX - radius; x < chunkPosX + radius; x++)
    {
      for (int z = chunkPosZ - radius; z < chunkPosZ + radius; z++)
      {
        Map<BlockPos, TileEntity> currentChunkTE = event.getWorld().getChunkFromChunkCoords(x, z).getTileEntityMap();
        for (TileEntity te : currentChunkTE.values())
        {
          if (te != null)
          {
            if (te instanceof TileEntityBlockBase && radius == 8)
            {
              doSomething();
            }
          }
        }
      }
    }
  }
}

 

Thanks in advance.

Edited by MSpace-Dev
title and post changes to compliment solution

  • Author

I've come up with a way to optimise this heavily. I will completely remove the search for tile entities, and instead store the TE's location (when it's placed) that can simply be referenced/compared to later.

 

Hope this very specific solution comes in handy for others.

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.