Class ForgeChunkManager

java.lang.Object
net.minecraftforge.common.world.ForgeChunkManager

@ParametersAreNonnullByDefault public class ForgeChunkManager extends Object
  • Field Details

  • Constructor Details

    • ForgeChunkManager

      public ForgeChunkManager()
  • Method Details

    • setForcedChunkLoadingCallback

      public static void setForcedChunkLoadingCallback​(String modId, ForgeChunkManager.LoadingValidationCallback callback)
      Sets the forced chunk loading validation callback for the given mod. This allows for validating and removing no longer valid tickets on world load.
    • hasForcedChunks

      public static boolean hasForcedChunks​(ServerLevel world)
      Checks if a world has any forced chunks. Mainly used for seeing if a world should continue ticking with no players in it.
    • forceChunk

      public static boolean forceChunk​(ServerLevel world, String modId, BlockPos owner, int chunkX, int chunkZ, boolean add, boolean ticking)
      Forces a chunk to be loaded for the given mod with the "owner" of the ticket being a given block position.
      Parameters:
      add - true to force the chunk, false to unforce the chunk.
      ticking - true to make the chunk receive full chunk ticks even if there is no player nearby.
    • forceChunk

      public static boolean forceChunk​(ServerLevel world, String modId, Entity owner, int chunkX, int chunkZ, boolean add, boolean ticking)
      Forces a chunk to be loaded for the given mod with the "owner" of the ticket being the UUID of the given entity.
      Parameters:
      add - true to force the chunk, false to unforce the chunk.
      ticking - true to make the chunk receive full chunk ticks even if there is no player nearby.
    • forceChunk

      public static boolean forceChunk​(ServerLevel world, String modId, UUID owner, int chunkX, int chunkZ, boolean add, boolean ticking)
      Forces a chunk to be loaded for the given mod with the "owner" of the ticket being a given UUID.
      Parameters:
      add - true to force the chunk, false to unforce the chunk.
      ticking - true to make the chunk receive full chunk ticks even if there is no player nearby.
    • forceChunk

      private static <T extends Comparable<? super T>> boolean forceChunk​(ServerLevel world, String modId, T owner, int chunkX, int chunkZ, boolean add, boolean ticking, TicketType<ForgeChunkManager.TicketOwner<T>> type, Function<ForcedChunksSavedData,​ForgeChunkManager.TicketTracker<T>> ticketGetter)
      Forces a chunk to be loaded for the given mod with the given "owner".
      Parameters:
      add - true to force the chunk, false to unforce the chunk.
    • forceChunk

      private static <T extends Comparable<? super T>> void forceChunk​(ServerLevel world, ChunkPos pos, TicketType<ForgeChunkManager.TicketOwner<T>> type, ForgeChunkManager.TicketOwner<T> owner, boolean add, boolean ticking)
      Adds/Removes a ticket from the world's chunk provider with the proper levels to match the forced chunks.
      Parameters:
      add - true to force the chunk, false to unforce the chunk.
      ticking - true to make the chunk receive full chunk ticks even if there is no player nearby.
    • reinstatePersistentChunks

      public static void reinstatePersistentChunks​(ServerLevel world, ForcedChunksSavedData saveData)
      Reinstates forge's forced chunks when vanilla initially loads a world and reinstates their forced chunks. This method also will validate all of forge's forced chunks using and registered ForgeChunkManager.LoadingValidationCallback.
    • gatherTicketsByModId

      private static <T extends Comparable<? super T>> Map<String,​Map<T,​com.mojang.datafixers.util.Pair<it.unimi.dsi.fastutil.longs.LongSet,​it.unimi.dsi.fastutil.longs.LongSet>>> gatherTicketsByModId​(ForgeChunkManager.TicketTracker<T> tickets)
      Gathers tickets into a mod filtered map for use in providing all tickets a mod has registered to its ForgeChunkManager.LoadingValidationCallback.
    • gatherTicketsByModId

      private static <T extends Comparable<? super T>> void gatherTicketsByModId​(Map<ForgeChunkManager.TicketOwner<T>,​it.unimi.dsi.fastutil.longs.LongSet> tickets, Function<com.mojang.datafixers.util.Pair<it.unimi.dsi.fastutil.longs.LongSet,​it.unimi.dsi.fastutil.longs.LongSet>,​it.unimi.dsi.fastutil.longs.LongSet> typeGetter, Map<String,​Map<T,​com.mojang.datafixers.util.Pair<it.unimi.dsi.fastutil.longs.LongSet,​it.unimi.dsi.fastutil.longs.LongSet>>> modSortedOwnedChunks)
      Gathers tickets into a mod filtered map for use in providing all tickets a mod has registered to its ForgeChunkManager.LoadingValidationCallback.
    • reinstatePersistentChunks

      private static <T extends Comparable<? super T>> void reinstatePersistentChunks​(ServerLevel world, TicketType<ForgeChunkManager.TicketOwner<T>> type, Map<ForgeChunkManager.TicketOwner<T>,​it.unimi.dsi.fastutil.longs.LongSet> tickets, boolean ticking)
      Adds back any persistent forced chunks to the world's chunk provider.
    • writeForgeForcedChunks

      public static void writeForgeForcedChunks​(CompoundTag nbt, ForgeChunkManager.TicketTracker<BlockPos> blockForcedChunks, ForgeChunkManager.TicketTracker<UUID> entityForcedChunks)
      Writes the forge forced chunks into the NBT compound. Format is List{modid, List{ChunkPos, List{BlockPos}, List{UUID}}}
    • writeForcedChunkOwners

      private static <T extends Comparable<? super T>> void writeForcedChunkOwners​(Map<String,​it.unimi.dsi.fastutil.longs.Long2ObjectMap<CompoundTag>> forcedEntries, ForgeChunkManager.TicketTracker<T> tracker, String listKey, int listType, BiConsumer<T,​ListTag> ownerWriter)
    • writeForcedChunkOwners

      private static <T extends Comparable<? super T>> void writeForcedChunkOwners​(Map<String,​it.unimi.dsi.fastutil.longs.Long2ObjectMap<CompoundTag>> forcedEntries, Map<ForgeChunkManager.TicketOwner<T>,​it.unimi.dsi.fastutil.longs.LongSet> forcedChunks, String listKey, int listType, BiConsumer<T,​ListTag> ownerWriter)
    • readForgeForcedChunks

      public static void readForgeForcedChunks​(CompoundTag nbt, ForgeChunkManager.TicketTracker<BlockPos> blockForcedChunks, ForgeChunkManager.TicketTracker<UUID> entityForcedChunks)
      Reads the forge forced chunks from the NBT compound. Format is List{modid, List{ChunkPos, List{BlockPos}, List{UUID}}}
    • readBlockForcedChunks

      private static void readBlockForcedChunks​(String modId, long chunkPos, CompoundTag modEntry, String key, Map<ForgeChunkManager.TicketOwner<BlockPos>,​it.unimi.dsi.fastutil.longs.LongSet> blockForcedChunks)
      Reads the forge block forced chunks.
    • readEntityForcedChunks

      private static void readEntityForcedChunks​(String modId, long chunkPos, CompoundTag modEntry, String key, Map<ForgeChunkManager.TicketOwner<UUID>,​it.unimi.dsi.fastutil.longs.LongSet> entityForcedChunks)
      Reads the forge entity forced chunks.