BuilderSensorAge class
Пакет: com.hypixel.hytale.server.npc.corecomponents.lifecycle.builders
Файл: com/hypixel/hytale/server/npc/corecomponents/lifecycle/builders/BuilderSensorAge.java
extends: BuilderSensorBase
Поля (6)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
TemporalAmount |
MIN_TIME |
|
NPCEntity |
var2 |
|
Instant |
var3 |
|
LocalDateTime |
var4 |
|
TemporalAmount[] |
var5 |
|
Instant[] |
var6 |
Методы (1)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
return new |
SensorAgereturn new SensorAge(this, var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.lifecycle.builders;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.hypixel.hytale.server.core.modules.time.WorldTimeResource;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.Builder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderDescriptorState;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.InstructionType;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.holder.TemporalArrayHolder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.TemporalSequenceValidator;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.builders.BuilderSensorBase;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.lifecycle.SensorAge;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.instructions.Sensor;
class="kw">import java.time.Duration;
class="kw">import java.time.Instant;
class="kw">import java.time.LocalDateTime;
class="kw">import java.time.Period;
class="kw">import java.time.temporal.TemporalAmount;
class="kw">import javax.annotation.Nonnull;
class="kw">public class BuilderSensorAge class="kw">extends BuilderSensorBase {
class="kw">public class="kw">static class="kw">final TemporalAmount MIN_TIME = Duration.ZERO;
class="kw">public class="kw">static class="kw">final TemporalAmount MAX_TIME = Period.ofDays(Integer.MAX_VALUE);
class="kw">protected class="kw">final TemporalArrayHolder ageRange = new TemporalArrayHolder();
class="kw">public BuilderSensorAge() {
}
@Nonnull
@Override
class="kw">public String getShortDescription() {
class="kw">return "Triggers when the age of the NPC falls between a certain range";
}
@Nonnull
@Override
class="kw">public String getLongDescription() {
class="kw">return "Triggers when the age of the NPC falls between a certain range. Range is defined in terms of period (e.g. 1Y2M3W4D - 1 year, 2 months, 3 weeks, 4 days) or duration (e.g. 2DT3H4M - 2 days, 3 hours, 4 minutes)";
}
@Nonnull
class="kw">public Sensor build(@Nonnull BuilderSupport var1) {
class="kw">return new SensorAge(this, var1);
}
@Nonnull
@Override
class="kw">public BuilderDescriptorState getBuilderDescriptorState() {
class="kw">return BuilderDescriptorState.Stable;
}
@Nonnull
@Override
class="kw">public Builder<Sensor> readConfig(@Nonnull JsonElement var1) {
this.requireTemporalRange(
var1,
"AgeRange",
this.ageRange,
TemporalSequenceValidator.betweenMonotonic(MIN_TIME, MAX_TIME),
BuilderDescriptorState.Stable,
"The age range within which to trigger",
null
);
this.requireInstructionType(InstructionType.NPCOnlyInstructions);
class="kw">return this;
}
@Nonnull
class="kw">public Instant[] getAgeRange(@Nonnull BuilderSupport var1) {
NPCEntity var2 = var1.getHolder().getComponent(NPCEntity.getComponentType());
assert var2 != null : "NPC component null in age sensor construction!";
Instant var3 = var2.getSpawnInstant();
LocalDateTime var4 = LocalDateTime.ofInstant(var3, WorldTimeResource.ZONE_OFFSET);
TemporalAmount[] var5 = this.ageRange.getTemporalArray(var1.getExecutionContext());
Instant[] var6 = new Instant[var5.length];
var6[0] = var4.plus(var5[0]).toInstant(WorldTimeResource.ZONE_OFFSET);
var6[1] = var4.plus(var5[1]).toInstant(WorldTimeResource.ZONE_OFFSET);
class="kw">return var6;
}
}