Newer
Older
void-pack-super-server / work / decompile-ee3ecae0 / net / minecraft / server / LightEngine.java
package net.minecraft.server;

import javax.annotation.Nullable;

public class LightEngine implements ILightEngine {

    @Nullable
    private final LightEngineLayer<?, ?> a;
    @Nullable
    private final LightEngineLayer<?, ?> b;

    public LightEngine(ILightAccess ilightaccess, boolean flag, boolean flag1) {
        this.a = flag ? new LightEngineBlock(ilightaccess) : null;
        this.b = flag1 ? new LightEngineSky(ilightaccess) : null;
    }

    public void a(BlockPosition blockposition) {
        if (this.a != null) {
            this.a.a(blockposition);
        }

        if (this.b != null) {
            this.b.a(blockposition);
        }

    }

    public void a(BlockPosition blockposition, int i) {
        if (this.a != null) {
            this.a.a(blockposition, i);
        }

    }

    public boolean a() {
        return this.b != null && this.b.a() ? true : this.a != null && this.a.a();
    }

    public int a(int i, boolean flag, boolean flag1) {
        if (this.a != null && this.b != null) {
            int j = i / 2;
            int k = this.a.a(j, flag, flag1);
            int l = i - j + k;
            int i1 = this.b.a(l, flag, flag1);

            return k == 0 && i1 > 0 ? this.a.a(i1, flag, flag1) : i1;
        } else {
            return this.a != null ? this.a.a(i, flag, flag1) : (this.b != null ? this.b.a(i, flag, flag1) : i);
        }
    }

    @Override
    public void a(SectionPosition sectionposition, boolean flag) {
        if (this.a != null) {
            this.a.a(sectionposition, flag);
        }

        if (this.b != null) {
            this.b.a(sectionposition, flag);
        }

    }

    public void a(ChunkCoordIntPair chunkcoordintpair, boolean flag) {
        if (this.a != null) {
            this.a.a(chunkcoordintpair, flag);
        }

        if (this.b != null) {
            this.b.a(chunkcoordintpair, flag);
        }

    }

    public LightEngineLayerEventListener a(EnumSkyBlock enumskyblock) {
        return (LightEngineLayerEventListener) (enumskyblock == EnumSkyBlock.BLOCK ? (this.a == null ? LightEngineLayerEventListener.Void.INSTANCE : this.a) : (this.b == null ? LightEngineLayerEventListener.Void.INSTANCE : this.b));
    }

    public void a(EnumSkyBlock enumskyblock, SectionPosition sectionposition, @Nullable NibbleArray nibblearray) {
        if (enumskyblock == EnumSkyBlock.BLOCK) {
            if (this.a != null) {
                this.a.a(sectionposition.v(), nibblearray);
            }
        } else if (this.b != null) {
            this.b.a(sectionposition.v(), nibblearray);
        }

    }

    public void b(ChunkCoordIntPair chunkcoordintpair, boolean flag) {
        if (this.a != null) {
            this.a.b(chunkcoordintpair, flag);
        }

        if (this.b != null) {
            this.b.b(chunkcoordintpair, flag);
        }

    }

    public int b(BlockPosition blockposition, int i) {
        int j = this.b == null ? 0 : this.b.b(blockposition) - i;
        int k = this.a == null ? 0 : this.a.b(blockposition);

        return Math.max(k, j);
    }
}