Class ForgeChunkManager


  • @ParametersAreNonnullByDefault
    public class ForgeChunkManager
    extends java.lang.Object
    • Constructor Detail

      • ForgeChunkManager

        public ForgeChunkManager()
    • Method Detail

      • setForcedChunkLoadingCallback

        public static void setForcedChunkLoadingCallback​(java.lang.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​(ServerWorld 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​(ServerWorld world,
                                         java.lang.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​(ServerWorld world,
                                         java.lang.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​(ServerWorld world,
                                         java.lang.String modId,
                                         java.util.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 java.lang.Comparable<? super T>> boolean forceChunk​(ServerWorld world,
                                                                                      java.lang.String modId,
                                                                                      T owner,
                                                                                      int chunkX,
                                                                                      int chunkZ,
                                                                                      boolean add,
                                                                                      boolean ticking,
                                                                                      TicketType<ForgeChunkManager.TicketOwner<T>> type,
                                                                                      java.util.function.Function<ForcedChunksSaveData,​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 java.lang.Comparable<? super T>> void forceChunk​(ServerWorld 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.
      • gatherTicketsByModId

        private static <T extends java.lang.Comparable<? super T>> java.util.Map<java.lang.String,​java.util.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 java.lang.Comparable<? super T>> void gatherTicketsByModId​(java.util.Map<ForgeChunkManager.TicketOwner<T>,​it.unimi.dsi.fastutil.longs.LongSet> tickets,
                                                                                             java.util.function.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,
                                                                                             java.util.Map<java.lang.String,​java.util.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.
      • writeForcedChunkOwners

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

        private static <T extends java.lang.Comparable<? super T>> void writeForcedChunkOwners​(java.util.Map<java.lang.String,​it.unimi.dsi.fastutil.longs.Long2ObjectMap<CompoundNBT>> forcedEntries,
                                                                                               java.util.Map<ForgeChunkManager.TicketOwner<T>,​it.unimi.dsi.fastutil.longs.LongSet> forcedChunks,
                                                                                               java.lang.String listKey,
                                                                                               int listType,
                                                                                               java.util.function.BiConsumer<T,​ListNBT> ownerWriter)
      • readBlockForcedChunks

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

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