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 + "}";
}
}
}