Improvements to lighting engine mappings (#1501)

* Improvements to lighting engine mappings

* Consistency in ChunkLightProvider

* apply some suggestions

* remove skyLight prefixes in SkyLightStorage

* mark paragraphs

* `blockPos` -> `pos`

Co-authored-by: liach <7806504+liach@users.noreply.github.com>

* `blockPos` -> `pos`

Co-authored-by: liach <7806504+liach@users.noreply.github.com>
This commit is contained in:
Gegy 2020-07-12 13:07:22 +02:00 committed by GitHub
parent a9e6995935
commit 467bf82f0c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 95 additions and 53 deletions

View File

@ -37,14 +37,14 @@ CLASS net/minecraft/class_4076 net/minecraft/util/math/ChunkSectionPos
METHOD method_18686 getX (J)I
ARG 0 packed
METHOD method_18687 getSectionZ ()I
METHOD method_18688 getWorldCoord (I)I
ARG 0 chunkCoord
METHOD method_18688 getBlockCoord (I)I
ARG 0 sectionCoord
METHOD method_18689 getY (J)I
ARG 0 packed
METHOD method_18690 getZ (J)I
ARG 0 packed
METHOD method_18691 fromGlobalPos (J)J
ARG 0 globalLong
METHOD method_18691 fromBlockPos (J)J
ARG 0 blockPos
METHOD method_18692 toChunkPos ()Lnet/minecraft/class_1923;
METHOD method_18693 withZeroZ (J)J
ARG 0 pos

View File

@ -10,23 +10,23 @@ CLASS net/minecraft/class_3558 net/minecraft/world/chunk/light/ChunkLightProvide
ARG 1 chunkProvider
ARG 2 type
ARG 3 lightStorage
METHOD method_15512 setLightEnabled (Lnet/minecraft/class_1923;Z)V
METHOD method_15512 setColumnEnabled (Lnet/minecraft/class_1923;Z)V
ARG 1 pos
ARG 2 lightEnabled
ARG 2 enabled
METHOD method_15513 checkBlock (Lnet/minecraft/class_2338;)V
ARG 1 pos
METHOD method_15514 addLightSource (Lnet/minecraft/class_2338;I)V
ARG 1 pos
ARG 2 level
METHOD method_15515 setLightArray (JLnet/minecraft/class_2804;Z)V
ARG 1 pos
METHOD method_15515 enqueueSectionData (JLnet/minecraft/class_2804;Z)V
ARG 1 sectionPos
ARG 3 lightArray
METHOD method_15516 doLightUpdates (IZZ)I
ARG 1 maxSteps
ARG 2 doSkylight
ARG 3 skipEdgeLightPropagation
METHOD method_15517 getCurrentLevelFromArray (Lnet/minecraft/class_2804;J)I
ARG 1 array
METHOD method_15517 getCurrentLevelFromSection (Lnet/minecraft/class_2804;J)I
ARG 1 section
ARG 2 blockPos
METHOD method_15518 hasUpdates ()Z
METHOD method_17529 getChunk (II)Lnet/minecraft/class_1922;
@ -43,10 +43,12 @@ CLASS net/minecraft/class_3558 net/minecraft/world/chunk/light/ChunkLightProvide
ARG 6 opacity2
METHOD method_20479 getStateForLighting (JLorg/apache/commons/lang3/mutable/MutableInt;)Lnet/minecraft/class_2680;
ARG 1 pos
METHOD method_20599 setRetainData (Lnet/minecraft/class_1923;Z)V
METHOD method_20599 setRetainColumn (Lnet/minecraft/class_1923;Z)V
ARG 1 pos
ARG 2 retainData
METHOD method_20710 getOpaqueShape (Lnet/minecraft/class_2680;JLnet/minecraft/class_2350;)Lnet/minecraft/class_265;
ARG 1 world
ARG 2 pos
ARG 4 facing
METHOD method_22875 displaySectionLevel (J)Ljava/lang/String;
ARG 1 sectionPos

View File

@ -1,5 +1,5 @@
CLASS net/minecraft/class_3562 net/minecraft/world/chunk/light/ChunkLightingView
METHOD method_15543 getLightLevel (Lnet/minecraft/class_2338;)I
METHOD method_15544 getLightArray (Lnet/minecraft/class_4076;)Lnet/minecraft/class_2804;
METHOD method_15544 getLightSection (Lnet/minecraft/class_4076;)Lnet/minecraft/class_2804;
ARG 1 pos
CLASS class_3563 Empty

View File

@ -65,6 +65,9 @@ CLASS net/minecraft/class_3554 net/minecraft/world/chunk/light/LevelPropagator
ARG 5 removeFully
METHOD method_15494 isMarker (J)Z
ARG 1 id
METHOD method_24206 removePendingUpdateIf (Ljava/util/function/LongPredicate;)V
ARG 1 predicate
METHOD method_24208 getPendingUpdateCount ()I
CLASS 1
METHOD rehash (I)V
ARG 1 newN

View File

@ -1,55 +1,80 @@
CLASS net/minecraft/class_3560 net/minecraft/world/chunk/light/LightStorage
FIELD field_15796 lightArrays Lnet/minecraft/class_3556;
FIELD field_15798 lightArraysToRemove Lit/unimi/dsi/fastutil/longs/LongSet;
COMMENT LightStorage handles the access, storage and propagation of a specific kind of light within the world.
COMMENT For example, separate instances will be used to store block light as opposed to sky light.
COMMENT
COMMENT <p>The smallest unit within LightStorage is the section. Sections represent a cube of 16x16x16 blocks and their lighting data.
COMMENT In turn, 16 sections stacked on top of each other form a column, which are analogous to the standard 16x256x16 world chunks.
COMMENT
COMMENT <p>To avoid allocations, LightStorage packs all the coordinate arguments into single long values. Extra care should be taken
COMMENT to ensure that the relevant types are being used where appropriate.
COMMENT
COMMENT @see SkyLightStorage
COMMENT @see BlockLightStorage
FIELD field_15796 storage Lnet/minecraft/class_3556;
FIELD field_15797 markedNotReadySections Lit/unimi/dsi/fastutil/longs/LongSet;
FIELD field_15798 sectionsToRemove Lit/unimi/dsi/fastutil/longs/LongSet;
FIELD field_15799 DIRECTIONS [Lnet/minecraft/class_2350;
FIELD field_15800 hasLightUpdates Z
FIELD field_15801 EMPTY Lnet/minecraft/class_2804;
FIELD field_15802 dirtySections Lit/unimi/dsi/fastutil/longs/LongSet;
FIELD field_15803 chunkProvider Lnet/minecraft/class_2823;
FIELD field_15804 markedReadySections Lit/unimi/dsi/fastutil/longs/LongSet;
FIELD field_15805 lightType Lnet/minecraft/class_1944;
FIELD field_15806 uncachedLightArrays Lnet/minecraft/class_3556;
FIELD field_15807 lightArraysToAdd Lit/unimi/dsi/fastutil/longs/Long2ObjectMap;
FIELD field_15808 nonEmptySections Lit/unimi/dsi/fastutil/longs/LongSet;
FIELD field_16448 dirtySections Lit/unimi/dsi/fastutil/longs/LongSet;
FIELD field_15806 uncachedStorage Lnet/minecraft/class_3556;
FIELD field_15807 queuedSections Lit/unimi/dsi/fastutil/longs/Long2ObjectMap;
FIELD field_15808 readySections Lit/unimi/dsi/fastutil/longs/LongSet;
FIELD field_16448 notifySections Lit/unimi/dsi/fastutil/longs/LongSet;
FIELD field_19342 columnsToRetain Lit/unimi/dsi/fastutil/longs/LongSet;
FIELD field_25621 queuedEdgeSections Lit/unimi/dsi/fastutil/longs/LongSet;
METHOD <init> (Lnet/minecraft/class_1944;Lnet/minecraft/class_2823;Lnet/minecraft/class_3556;)V
ARG 1 lightType
ARG 2 chunkProvider
ARG 3 lightData
METHOD method_15522 getLightArray (JZ)Lnet/minecraft/class_2804;
METHOD method_15522 getLightSection (JZ)Lnet/minecraft/class_2804;
ARG 1 sectionPos
ARG 3 cached
METHOD method_15523 onLightArrayCreated (J)V
ARG 1 blockPos
METHOD method_15524 hasLight (J)Z
METHOD method_15523 onLoadSection (J)V
ARG 1 sectionPos
METHOD method_15524 hasSection (J)Z
ARG 1 sectionPos
METHOD method_15525 set (JI)V
ARG 1 blockPos
ARG 3 value
METHOD method_15526 updateSectionStatus (JZ)V
ARG 1 pos
ARG 3 empty
METHOD method_15527 updateLightArrays (Lnet/minecraft/class_3558;ZZ)V
METHOD method_15526 setSectionStatus (JZ)V
ARG 1 sectionPos
ARG 3 notReady
METHOD method_15527 updateLight (Lnet/minecraft/class_3558;ZZ)V
ARG 1 lightProvider
ARG 2 doSkylight
ARG 3 skipEdgeLightPropagation
METHOD method_15528 hasLightUpdates ()Z
METHOD method_15529 createLightArray (J)Lnet/minecraft/class_2804;
ARG 1 pos
METHOD method_15530 notifyChunkProvider ()V
METHOD method_15532 setLightArray (JLnet/minecraft/class_2804;Z)V
ARG 1 pos
METHOD method_15529 createSection (J)Lnet/minecraft/class_2804;
ARG 1 sectionPos
METHOD method_15530 notifyChanges ()V
METHOD method_15532 enqueueSectionData (JLnet/minecraft/class_2804;Z)V
ARG 1 sectionPos
ARG 3 array
METHOD method_15533 getLightArray (Lnet/minecraft/class_3556;J)Lnet/minecraft/class_2804;
METHOD method_15533 getLightSection (Lnet/minecraft/class_3556;J)Lnet/minecraft/class_2804;
ARG 1 storage
ARG 2 sectionPos
METHOD method_15534 onChunkRemoved (J)V
METHOD method_15535 setLightEnabled (JZ)V
METHOD method_15536 removeChunkData (Lnet/minecraft/class_3558;J)V
METHOD method_15534 onUnloadSection (J)V
ARG 1 sectionPos
METHOD method_15535 setColumnEnabled (JZ)V
ARG 1 columnPos
ARG 3 enabled
METHOD method_15536 removeSection (Lnet/minecraft/class_3558;J)V
ARG 1 storage
ARG 2 blockChunkPos
ARG 2 sectionPos
METHOD method_15537 get (J)I
ARG 1 blockPos
METHOD method_15538 getLight (J)I
ARG 1 blockPos
METHOD method_15539 updateAll ()V
METHOD method_20533 getLightArray (J)Lnet/minecraft/class_2804;
METHOD method_20533 getLightSection (J)Lnet/minecraft/class_2804;
ARG 1 sectionPos
METHOD method_20600 setRetainData (JZ)V
METHOD method_20600 setRetainColumn (JZ)V
ARG 1 sectionPos
ARG 3 retain
METHOD method_29967 updateSection (Lnet/minecraft/class_3558;J)V
ARG 1 lightProvider
ARG 2 sectionPos

View File

@ -5,10 +5,10 @@ CLASS net/minecraft/class_3568 net/minecraft/world/chunk/light/LightingProvider
ARG 1 chunkProvider
ARG 2 hasBlockLight
ARG 3 hasSkyLight
METHOD method_15557 setLightEnabled (Lnet/minecraft/class_1923;Z)V
METHOD method_15557 setColumnEnabled (Lnet/minecraft/class_1923;Z)V
ARG 1 pos
ARG 2 lightEnabled
METHOD method_15558 queueData (Lnet/minecraft/class_1944;Lnet/minecraft/class_4076;Lnet/minecraft/class_2804;Z)V
METHOD method_15558 enqueueSectionData (Lnet/minecraft/class_1944;Lnet/minecraft/class_4076;Lnet/minecraft/class_2804;Z)V
ARG 1 lightType
ARG 2 pos
ARG 3 nibbles
@ -30,3 +30,4 @@ CLASS net/minecraft/class_3568 net/minecraft/world/chunk/light/LightingProvider
METHOD method_22363 getLight (Lnet/minecraft/class_2338;I)I
ARG 1 pos
ARG 2 ambientDarkness
METHOD method_22876 displaySectionLevel (Lnet/minecraft/class_1944;Lnet/minecraft/class_4076;)Ljava/lang/String;

View File

@ -1,7 +1,7 @@
CLASS net/minecraft/class_3565 net/minecraft/world/chunk/light/LightingView
METHOD method_15551 updateSectionStatus (Lnet/minecraft/class_4076;Z)V
METHOD method_15551 setSectionStatus (Lnet/minecraft/class_4076;Z)V
ARG 1 pos
ARG 2 status
METHOD method_15552 updateSectionStatus (Lnet/minecraft/class_2338;Z)V
ARG 2 notReady
METHOD method_15552 setSectionStatus (Lnet/minecraft/class_2338;Z)V
ARG 1 pos
ARG 2 status
ARG 2 notReady

View File

@ -1,17 +1,28 @@
CLASS net/minecraft/class_3569 net/minecraft/world/chunk/light/SkyLightStorage
FIELD field_15815 pendingSkylightUpdates Lit/unimi/dsi/fastutil/longs/LongSet;
FIELD field_15817 lightEnabled Lit/unimi/dsi/fastutil/longs/LongSet;
FIELD field_15815 sectionsToUpdate Lit/unimi/dsi/fastutil/longs/LongSet;
FIELD field_15816 sectionsToRemove Lit/unimi/dsi/fastutil/longs/LongSet;
FIELD field_15817 enabledColumns Lit/unimi/dsi/fastutil/longs/LongSet;
FIELD field_15818 LIGHT_REDUCTION_DIRECTIONS [Lnet/minecraft/class_2350;
FIELD field_15819 hasSkyLightUpdates Z
FIELD field_15819 hasUpdates Z
METHOD <init> (Lnet/minecraft/class_2823;)V
ARG 1 chunkProvider
METHOD method_15566 isLightEnabled (J)Z
METHOD method_15565 isTopmostBlock (J)Z
ARG 1 blockPos
METHOD method_15566 isSectionEnabled (J)Z
ARG 1 sectionPos
METHOD method_15567 isAboveMinHeight (I)Z
ARG 1 blockY
METHOD method_15568 isAboveTopmostLightArray (J)Z
ARG 1 pos
ARG 1 sectionY
METHOD method_15568 isAtOrAboveTopmostSection (J)Z
ARG 1 sectionPos
METHOD method_15569 checkForUpdates ()V
METHOD method_20809 enqueueRemoveSection (J)V
ARG 1 sectionPos
METHOD method_20810 enqueueAddSection (J)V
ARG 1 sectionPos
CLASS class_3570 Data
FIELD field_15821 topArraySectionY Lit/unimi/dsi/fastutil/longs/Long2IntOpenHashMap;
FIELD field_15822 defaultTopArraySectionY I
FIELD field_15821 columnToTopSection Lit/unimi/dsi/fastutil/longs/Long2IntOpenHashMap;
FIELD field_15822 minSectionY I
METHOD <init> (Lit/unimi/dsi/fastutil/longs/Long2ObjectOpenHashMap;Lit/unimi/dsi/fastutil/longs/Long2IntOpenHashMap;I)V
ARG 1 arrays
ARG 2 columnToTopSection
ARG 3 minSectionY