ArtificialLight class

Пакет: com.hypixel.hytale.builtin.adventure.farming.config.modifiers

Файл: com/hypixel/hytale/builtin/adventure/farming/config/modifiers/LightLevelGrowthModifierAsset.java

Поля (4)

МодификаторыТипИмя
public static final BuilderCodec<LightLevelGrowthModifierAsset.ArtificialLight> CODEC
protected Range blue
protected Range green
protected Range red

Методы (4)

МодификаторыВозвратСигнатура
public Range getBluepublic Range getBlue()
public Range getGreenpublic Range getGreen()
public Range getRedpublic Range getRed()
public String toStringpublic String toString()

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.farming.config.modifiers;

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.protocol.Range;
class="kw">import com.hypixel.hytale.protocol.Rangef;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.farming.GrowthModifierAsset;
class="kw">import com.hypixel.hytale.server.core.codec.ProtocolCodecs;
class="kw">import com.hypixel.hytale.server.core.modules.time.WorldTimeResource;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.ChunkLightData;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import javax.annotation.Nonnull;

class="kw">public class LightLevelGrowthModifierAsset class="kw">extends GrowthModifierAsset {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<LightLevelGrowthModifierAsset> CODEC = BuilderCodec.builder(
         LightLevelGrowthModifierAsset.class, LightLevelGrowthModifierAsset::new, ABSTRACT_CODEC
      )
      .addField(
         new KeyedCodec<>("ArtificialLight", LightLevelGrowthModifierAsset.ArtificialLight.CODEC),
         (var0, var1) -> var0.artificialLight = var1,
         var0 -> var0.artificialLight
      )
      .addField(new KeyedCodec<>("Sunlight", ProtocolCodecs.RANGEF), (var0, var1) -> var0.sunlight = var1, var0 -> var0.sunlight)
      .addField(new KeyedCodec<>("RequireBoth", Codec.BOOLEAN), (var0, var1) -> var0.requireBoth = var1, var0 -> var0.requireBoth)
      .build();
   class="kw">protected LightLevelGrowthModifierAsset.ArtificialLight artificialLight;
   class="kw">protected Rangef sunlight;
   class="kw">protected boolean requireBoth;

   class="kw">public LightLevelGrowthModifierAsset() {
   }

   class="kw">public LightLevelGrowthModifierAsset.ArtificialLight getArtificialLight() {
      class="kw">return this.artificialLight;
   }

   class="kw">public Rangef getSunlight() {
      class="kw">return this.sunlight;
   }

   class="kw">public boolean isRequireBoth() {
      class="kw">return this.requireBoth;
   }

   class="kw">protected boolean checkArtificialLight(byte var1, byte var2, byte var3) {
      LightLevelGrowthModifierAsset.ArtificialLight var4 = this.artificialLight;
      Range var5 = var4.getRed();
      Range var6 = var4.getGreen();
      Range var7 = var4.getBlue();
      class="kw">return isInRange(var5, var1) && isInRange(var6, var2) && isInRange(var7, var3);
   }

   class="kw">protected boolean checkSunLight(@Nonnull WorldTimeResource var1, byte var2) {
      Rangef var3 = this.sunlight;
      double var4 = var1.getSunlightFactor();
      double var6 = var4 * var2;
      class="kw">return var3.min <= var6 && var6 <= var3.max;
   }

   class="kw">protected class="kw">static boolean isInRange(@Nonnull Range var0, int var1) {
      class="kw">return var0.min <= var1 && var1 <= var0.max;
   }

   @Override
   class="kw">public double getCurrentGrowthMultiplier(
      @Nonnull CommandBuffer<ChunkStore> var1, @Nonnull Ref<ChunkStore> var2, @Nonnull Ref<ChunkStore> var3, int var4, int var5, int var6, boolean var7
   ) {
      BlockSection var8 = var1.getComponent(var2, BlockSection.getComponentType());
      assert var8 != null;
      short var9 = var8.getGlobalLight().getLightRaw(var4, var5, var6);
      byte var10 = ChunkLightData.getLightValue(var9, 0);
      byte var11 = ChunkLightData.getLightValue(var9, 1);
      byte var12 = ChunkLightData.getLightValue(var9, 2);
      byte var13 = ChunkLightData.getLightValue(var9, 3);
      World var14 = var1.getExternalData().getWorld();
      EntityStore var15 = var14.getEntityStore();
      WorldTimeResource var16 = var15.getStore().getResource(WorldTimeResource.getResourceType());
      boolean var17 = false;
      boolean var18 = false;
      if (this.requireBoth) {
         var17 = this.checkArtificialLight(var10, var11, var12) && this.checkSunLight(var16, var13);
      } else if (this.checkSunLight(var16, var13)) {
         var17 = true;
         var18 = true;
      } else if (this.checkArtificialLight(var10, var11, var12)) {
         var17 = true;
      }

      if (var17) {
         class="kw">return var18 && var7
            ? super.getCurrentGrowthMultiplier(var1, var2, var3, var4, var5, var6, var7) * 0.6F
            : super.getCurrentGrowthMultiplier(var1, var2, var3, var4, var5, var6, var7);
      } else {
         class="kw">return 1.0;
      }
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "LightLevelGrowthModifierAsset{artificialLight="
         + this.artificialLight
         + ", sunLight="
         + this.sunlight
         + ", requireBoth="
         + this.requireBoth
         + "} "
         + super.toString();
   }

   class="kw">public class="kw">static class ArtificialLight {
      @Nonnull
      class="kw">public class="kw">static class="kw">final BuilderCodec<LightLevelGrowthModifierAsset.ArtificialLight> CODEC = BuilderCodec.builder(
            LightLevelGrowthModifierAsset.ArtificialLight.class, LightLevelGrowthModifierAsset.ArtificialLight::new
         )
         .append(new KeyedCodec<>("Red", ProtocolCodecs.RANGE), (var0, var1) -> var0.red = var1, var0 -> var0.red)
         .add()
         .append(new KeyedCodec<>("Green", ProtocolCodecs.RANGE), (var0, var1) -> var0.green = var1, var0 -> var0.green)
         .add()
         .append(new KeyedCodec<>("Blue", ProtocolCodecs.RANGE), (var0, var1) -> var0.blue = var1, var0 -> var0.blue)
         .add()
         .build();
      class="kw">protected Range red;
      class="kw">protected Range green;
      class="kw">protected Range blue;

      class="kw">public ArtificialLight() {
      }

      class="kw">public Range getRed() {
         class="kw">return this.red;
      }

      class="kw">public Range getGreen() {
         class="kw">return this.green;
      }

      class="kw">public Range getBlue() {
         class="kw">return this.blue;
      }

      @Nonnull
      @Override
      class="kw">public String toString() {
         class="kw">return "ArtificialLight{red=" + this.red + ", green=" + this.green + ", blue=" + this.blue + "}";
      }
   }
}