Refactors to ThreadedAnvilChunkStorage and ChunkHolder generation logic (#1542)

* Refactors to ThreadedAnvilChunkStorage and ChunkHolder generation logic

* revert statusListeners

* improve consistency of future-returning functions

* ChunkHolder.ticking -> accessible

* Update ChunkStatus "distance from full" mappings and name ChunkHolder#future more specific to saving

* Remove `await` prefix for consistency
This commit is contained in:
Gegy 2020-07-28 21:13:22 +02:00 committed by GitHub
parent c2f5c6e69f
commit d51da147c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 48 additions and 29 deletions

View File

@ -10,15 +10,15 @@ CLASS net/minecraft/class_3193 net/minecraft/server/world/ChunkHolder
FIELD field_16425 futuresByStatus Ljava/util/concurrent/atomic/AtomicReferenceArray;
FIELD field_16426 UNLOADED_CHUNK Lcom/mojang/datafixers/util/Either;
FIELD field_16427 UNLOADED_WORLD_CHUNK Lcom/mojang/datafixers/util/Either;
FIELD field_16428 future Ljava/util/concurrent/CompletableFuture;
FIELD field_16428 savingFuture Ljava/util/concurrent/CompletableFuture;
FIELD field_16429 UNLOADED_WORLD_CHUNK_FUTURE Ljava/util/concurrent/CompletableFuture;
FIELD field_16430 UNLOADED_CHUNK_FUTURE Ljava/util/concurrent/CompletableFuture;
FIELD field_16431 borderFuture Ljava/util/concurrent/CompletableFuture;
FIELD field_16431 accessibleFuture Ljava/util/concurrent/CompletableFuture;
FIELD field_16432 lastTickLevel I
FIELD field_17208 completedLevel I
FIELD field_17209 levelUpdateListener Lnet/minecraft/class_3193$class_3896;
FIELD field_17210 playersWatchingChunkProvider Lnet/minecraft/class_3193$class_3897;
FIELD field_19238 ticking Z
FIELD field_19238 accessible Z
FIELD field_19333 tickingFuture Ljava/util/concurrent/CompletableFuture;
METHOD <init> (Lnet/minecraft/class_1923;ILnet/minecraft/class_3568;Lnet/minecraft/class_3193$class_3896;Lnet/minecraft/class_3193$class_3897;)V
ARG 1 pos
@ -28,15 +28,16 @@ CLASS net/minecraft/class_3193 net/minecraft/server/world/ChunkHolder
ARG 5 playersWatchingChunkProvider
METHOD method_13992 sendPacketToPlayersWatching (Lnet/minecraft/class_2596;Z)V
ARG 2 onlyOnWatchDistanceEdge
METHOD method_13993 createFuture (Lnet/minecraft/class_2806;Lnet/minecraft/class_3898;)Ljava/util/concurrent/CompletableFuture;
METHOD method_13993 getChunkAt (Lnet/minecraft/class_2806;Lnet/minecraft/class_3898;)Ljava/util/concurrent/CompletableFuture;
ARG 1 targetStatus
ARG 2 chunkStorage
METHOD method_13994 getPos ()Lnet/minecraft/class_1923;
METHOD method_14000 getFuture ()Ljava/util/concurrent/CompletableFuture;
METHOD method_14000 getSavingFuture ()Ljava/util/concurrent/CompletableFuture;
METHOD method_14002 markForBlockUpdate (Lnet/minecraft/class_2338;)V
METHOD method_14003 getEntityTickingFuture ()Ljava/util/concurrent/CompletableFuture;
METHOD method_14005 getLevel ()I
METHOD method_14006 flushUpdates (Lnet/minecraft/class_2818;)V
ARG 1 chunk
METHOD method_14007 tick (Lnet/minecraft/class_3898;)V
ARG 1 chunkStorage
METHOD method_14008 getLevelType (I)Lnet/minecraft/class_3193$class_3194;
@ -44,28 +45,31 @@ CLASS net/minecraft/class_3193 net/minecraft/server/world/ChunkHolder
METHOD method_14009 sendBlockEntityUpdatePacket (Lnet/minecraft/class_1937;Lnet/minecraft/class_2338;)V
ARG 1 world
ARG 2 pos
METHOD method_14010 getCompletedChunk ()Lnet/minecraft/class_2791;
METHOD method_14011 getTargetGenerationStatus (I)Lnet/minecraft/class_2806;
METHOD method_14010 getCurrentChunk ()Lnet/minecraft/class_2791;
METHOD method_14011 getTargetStatusForLevel (I)Lnet/minecraft/class_2806;
ARG 0 level
METHOD method_14012 markForLightUpdate (Lnet/minecraft/class_1944;I)V
ARG 1 type
ARG 2 y
METHOD method_15890 setLevel (I)V
ARG 1 level
METHOD method_16143 updateFuture (Ljava/util/concurrent/CompletableFuture;)V
ARG 1 newChunkFuture
METHOD method_16143 combineSavingFuture (Ljava/util/concurrent/CompletableFuture;)V
ARG 1 then
METHOD method_16144 getWorldChunk ()Lnet/minecraft/class_2818;
METHOD method_16145 getTickingFuture ()Ljava/util/concurrent/CompletableFuture;
METHOD method_16146 getFuture (Lnet/minecraft/class_2806;)Ljava/util/concurrent/CompletableFuture;
METHOD method_16146 getFutureFor (Lnet/minecraft/class_2806;)Ljava/util/concurrent/CompletableFuture;
ARG 1 leastStatus
METHOD method_17207 setCompletedLevel (I)V
ARG 1 level
METHOD method_17208 getCompletedLevel ()I
METHOD method_20384 isTicking ()Z
METHOD method_20385 updateTickingStatus ()V
METHOD method_20725 getBorderFuture ()Ljava/util/concurrent/CompletableFuture;
METHOD method_21737 getNowFuture (Lnet/minecraft/class_2806;)Ljava/util/concurrent/CompletableFuture;
METHOD method_20384 isAccessible ()Z
METHOD method_20385 updateAccessibleStatus ()V
METHOD method_20456 finalizeChunk (Lnet/minecraft/class_2821;)V
ARG 1 chunk
METHOD method_20725 getAccessibleFuture ()Ljava/util/concurrent/CompletableFuture;
METHOD method_21737 getValidFutureFor (Lnet/minecraft/class_2806;)Ljava/util/concurrent/CompletableFuture;
ARG 1 leastStatus
METHOD method_23270 getCurrentStatus ()Lnet/minecraft/class_2806;
METHOD method_23271 getLevelType ()Lnet/minecraft/class_3193$class_3194;
CLASS class_3194 LevelType
METHOD method_14014 isAfter (Lnet/minecraft/class_3193$class_3194;)Z

View File

@ -23,7 +23,10 @@ CLASS net/minecraft/class_3898 net/minecraft/server/world/ThreadedAnvilChunkStor
FIELD field_18242 entityTrackers Lit/unimi/dsi/fastutil/ints/Int2ObjectMap;
FIELD field_18243 watchDistance I
FIELD field_18307 loadedChunks Lit/unimi/dsi/fastutil/longs/LongSet;
FIELD field_18807 chunksToUnload Lit/unimi/dsi/fastutil/longs/Long2ObjectLinkedOpenHashMap;
FIELD field_18808 pointOfInterestStorage Lnet/minecraft/class_4153;
FIELD field_19343 unloadTaskQueue Ljava/util/Queue;
FIELD field_23786 chunkToType Lit/unimi/dsi/fastutil/longs/Long2ByteMap;
METHOD <init> (Lnet/minecraft/class_3218;Lnet/minecraft/class_32$class_5143;Lcom/mojang/datafixers/DataFixer;Lnet/minecraft/class_3485;Ljava/util/concurrent/Executor;Lnet/minecraft/class_1255;Lnet/minecraft/class_2823;Lnet/minecraft/class_2794;Lnet/minecraft/class_3949;Ljava/util/function/Supplier;IZ)V
ARG 3 dataFixer
ARG 5 workerExecutor
@ -40,19 +43,23 @@ CLASS net/minecraft/class_3898 net/minecraft/server/world/ThreadedAnvilChunkStor
ARG 1 pos
ARG 3 level
ARG 4 holder
METHOD method_17220 createChunkRegionFuture (Lnet/minecraft/class_1923;ILjava/util/function/IntFunction;)Ljava/util/concurrent/CompletableFuture;
METHOD method_17220 getRegion (Lnet/minecraft/class_1923;ILjava/util/function/IntFunction;)Ljava/util/concurrent/CompletableFuture;
ARG 1 centerChunk
ARG 2 margin
ARG 3 distanceToStatus
METHOD method_17226 convertToFullChunk (Lnet/minecraft/class_3193;)Ljava/util/concurrent/CompletableFuture;
METHOD method_17228 save (Lnet/minecraft/class_2791;)Z
ARG 1 chunk
METHOD method_17229 getRequiredStatusForGeneration (Lnet/minecraft/class_2806;I)Lnet/minecraft/class_2806;
ARG 1 centerChunkTargetStatus
ARG 2 distance
METHOD method_17233 tick (Ljava/util/function/BooleanSupplier;)V
ARG 1 shouldKeepTicking
METHOD method_17235 createTickingFuture (Lnet/minecraft/class_3193;)Ljava/util/concurrent/CompletableFuture;
METHOD method_17236 createChunkFuture (Lnet/minecraft/class_3193;Lnet/minecraft/class_2806;)Ljava/util/concurrent/CompletableFuture;
METHOD method_17235 makeChunkTickable (Lnet/minecraft/class_3193;)Ljava/util/concurrent/CompletableFuture;
ARG 1 holder
METHOD method_17236 getChunk (Lnet/minecraft/class_3193;Lnet/minecraft/class_2806;)Ljava/util/concurrent/CompletableFuture;
ARG 1 holder
ARG 2 requiredStatus
METHOD method_17241 sendWatchPackets (Lnet/minecraft/class_3222;Lnet/minecraft/class_1923;[Lnet/minecraft/class_2596;ZZ)V
ARG 1 player
ARG 2 pos
@ -62,7 +69,7 @@ CLASS net/minecraft/class_3898 net/minecraft/server/world/ThreadedAnvilChunkStor
METHOD method_17242 save (Z)V
ARG 1 flush
METHOD method_17244 updateHolderMap ()Z
METHOD method_17247 createEntityTickingChunkFuture (Lnet/minecraft/class_1923;)Ljava/util/concurrent/CompletableFuture;
METHOD method_17247 makeChunkEntitiesTickable (Lnet/minecraft/class_1923;)Ljava/util/concurrent/CompletableFuture;
ARG 1 pos
METHOD method_17253 getTotalChunksLoadedCount ()I
METHOD method_17255 getCurrentChunkHolder (J)Lnet/minecraft/class_3193;
@ -111,10 +118,14 @@ CLASS net/minecraft/class_3898 net/minecraft/server/world/ThreadedAnvilChunkStor
ARG 1 pos
METHOD method_20458 tryUnloadChunk (JLnet/minecraft/class_3193;)V
ARG 1 pos
METHOD method_20580 createBorderFuture (Lnet/minecraft/class_3193;)Ljava/util/concurrent/CompletableFuture;
METHOD method_20576 enableTickSchedulers (Lnet/minecraft/class_2818;)Ljava/util/concurrent/CompletableFuture;
METHOD method_20580 makeChunkAccessible (Lnet/minecraft/class_3193;)Ljava/util/concurrent/CompletableFuture;
ARG 1 holder
METHOD method_20605 unloadChunks (Ljava/util/function/BooleanSupplier;)V
ARG 1 shouldKeepTicking
METHOD method_20617 generateChunk (Lnet/minecraft/class_3193;Lnet/minecraft/class_2806;)Ljava/util/concurrent/CompletableFuture;
METHOD method_20617 upgradeChunk (Lnet/minecraft/class_3193;Lnet/minecraft/class_2806;)Ljava/util/concurrent/CompletableFuture;
ARG 1 holder
ARG 2 requiredStatus
METHOD method_20619 loadChunk (Lnet/minecraft/class_1923;)Ljava/util/concurrent/CompletableFuture;
ARG 1 pos
METHOD method_21619 dump (Ljava/io/Writer;)V

View File

@ -1,8 +1,8 @@
CLASS net/minecraft/class_2806 net/minecraft/world/chunk/ChunkStatus
FIELD field_12787 chunkType Lnet/minecraft/class_2806$class_2808;
FIELD field_12788 STATUS_TO_TARGET_GENERATION_RADIUS Lit/unimi/dsi/fastutil/ints/IntList;
FIELD field_12788 STATUS_TO_DISTANCE Lit/unimi/dsi/fastutil/ints/IntList;
FIELD field_12789 id Ljava/lang/String;
FIELD field_12791 DISTANCE_TO_TARGET_GENERATION_STATUS Ljava/util/List;
FIELD field_12791 DISTANCE_TO_STATUS Ljava/util/List;
FIELD field_12792 generationTask Lnet/minecraft/class_2806$class_2807;
FIELD field_12793 heightMapTypes Ljava/util/EnumSet;
FIELD field_12802 taskMargin I
@ -10,7 +10,7 @@ CLASS net/minecraft/class_2806 net/minecraft/world/chunk/ChunkStatus
FIELD field_16647 previous Lnet/minecraft/class_2806;
FIELD field_19159 PRE_CARVER_HEIGHTMAPS Ljava/util/EnumSet;
FIELD field_19160 POST_CARVER_HEIGHTMAPS Ljava/util/EnumSet;
FIELD field_19345 STATUS_BUMP_NO_GEN_TASK Lnet/minecraft/class_2806$class_4305;
FIELD field_19345 STATUS_BUMP_LOAD_TASK Lnet/minecraft/class_2806$class_4305;
COMMENT A load task which only bumps the chunk status of the chunk.
FIELD field_19346 loadTask Lnet/minecraft/class_2806$class_4305;
METHOD <init> (Ljava/lang/String;Lnet/minecraft/class_2806;ILjava/util/EnumSet;Lnet/minecraft/class_2806$class_2808;Lnet/minecraft/class_2806$class_2807;Lnet/minecraft/class_2806$class_4305;)V
@ -36,17 +36,17 @@ CLASS net/minecraft/class_2806 net/minecraft/world/chunk/ChunkStatus
ARG 3 structureManager
ARG 4 lightingProvider
ARG 6 chunks
METHOD method_12155 getMaxTargetGenerationRadius ()I
METHOD method_12155 getMaxDistanceFromFull ()I
METHOD method_12160 getHeightmapTypes ()Ljava/util/EnumSet;
METHOD method_12161 getTargetGenerationStatus (I)Lnet/minecraft/class_2806;
ARG 0 distance
METHOD method_12161 byDistanceFromFull (I)Lnet/minecraft/class_2806;
ARG 0 level
METHOD method_12164 getChunkType ()Lnet/minecraft/class_2806$class_2808;
METHOD method_12165 isAtLeast (Lnet/minecraft/class_2806;)Z
ARG 1 chunk
METHOD method_12168 get (Ljava/lang/String;)Lnet/minecraft/class_2806;
METHOD method_12168 byId (Ljava/lang/String;)Lnet/minecraft/class_2806;
ARG 0 id
METHOD method_12172 getId ()Ljava/lang/String;
METHOD method_12175 getTargetGenerationRadius (Lnet/minecraft/class_2806;)I
METHOD method_12175 getDistanceFromFull (Lnet/minecraft/class_2806;)I
ARG 0 status
METHOD method_16555 register (Ljava/lang/String;Lnet/minecraft/class_2806;ILjava/util/EnumSet;Lnet/minecraft/class_2806$class_2808;Lnet/minecraft/class_2806$class_3768;)Lnet/minecraft/class_2806;
ARG 0 id

View File

@ -32,7 +32,11 @@ CLASS net/minecraft/class_5138 net/minecraft/world/gen/StructureAccessor
ARG 1 piece
METHOD method_28387 (Lnet/minecraft/class_2338;Lnet/minecraft/class_3449;)Z
ARG 1 structureStart
METHOD method_28388 getStructureAt (Lnet/minecraft/class_2338;ZLnet/minecraft/class_3195;)Lnet/minecraft/class_3449;
ARG 1 pos
ARG 2 matchChildren
ARG 3 feature
METHOD method_28389 (ZLnet/minecraft/class_2338;Lnet/minecraft/class_3449;)Z
ARG 2 structureStart
METHOD method_29951 (Lnet/minecraft/class_3233;)Lnet/minecraft/class_5138;
METHOD method_29951 forRegion (Lnet/minecraft/class_3233;)Lnet/minecraft/class_5138;
ARG 1 region