BuilderMotionControllerMap class
Пакет: com.hypixel.hytale.server.npc.movement.controllers.builders
Файл: com/hypixel/hytale/server/npc/movement/controllers/builders/BuilderMotionControllerMap.java
extends: BuilderBase<Map<String, MotionController>>
implements: ISpawnable
Поля (10)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
BuilderObjectMapHelper<String, MotionController> |
motionControllers |
|
BuilderInfo |
var1 |
|
MovementMode |
var2 |
|
MovementMode |
var2 |
|
EnumMap |
var2 |
|
|
var2 |
|
BuilderMotionControllerBase |
var3 |
|
SpawnTestResult |
var3 |
|
BuilderMotionControllerBase |
var3 |
|
SpawnTestResult |
var4 |
Методы (10)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("MotionController builder must extend BuilderMotionControllerBase") |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("MotionController must implement ISpawnable") |
|
|
if if(var2 != null) |
|
|
if if(var3 == null) |
|
|
if if(var4 == SpawnTestResult.TEST_OK) |
|
|
if if(var0 instanceof BuilderMotionControllerBase var2) |
|
|
if if(var3 == SpawnTestResult.TEST_OK) |
|
|
if if(var2 == null) |
|
|
if if(var0 instanceof BuilderMotionControllerBase var2) |
|
|
if if(var2 != null) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.movement.controllers.builders;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.Builder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderBase;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderDescriptorState;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderInfo;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderObjectMapHelper;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderValidationHelper;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.ArrayNotEmptyValidator;
class="kw">import com.hypixel.hytale.server.npc.movement.MovementMode;
class="kw">import com.hypixel.hytale.server.npc.movement.controllers.BuilderMotionControllerMapUtil;
class="kw">import com.hypixel.hytale.server.npc.movement.controllers.MotionController;
class="kw">import com.hypixel.hytale.server.npc.util.expression.ExecutionContext;
class="kw">import com.hypixel.hytale.server.npc.util.expression.Scope;
class="kw">import com.hypixel.hytale.server.npc.validators.NPCLoadTimeValidationHelper;
class="kw">import com.hypixel.hytale.server.spawning.ISpawnable;
class="kw">import com.hypixel.hytale.server.spawning.SpawnTestResult;
class="kw">import com.hypixel.hytale.server.spawning.SpawningContext;
class="kw">import java.util.EnumMap;
class="kw">import java.util.HashMap;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.Objects;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class BuilderMotionControllerMap class="kw">extends BuilderBase<Map<String, MotionController>> class="kw">implements ISpawnable {
class="kw">private class="kw">final BuilderObjectMapHelper<String, MotionController> motionControllers = new BuilderObjectMapHelper<>(
MotionController.class, MotionController::getType, this
);
@Nullable
class="kw">private class="kw">volatile EnumMap<MovementMode, BuilderMotionControllerBase> modeToController;
class="kw">public BuilderMotionControllerMap() {
}
@Nonnull
class="kw">public Map<String, MotionController> build(@Nonnull BuilderSupport var1) {
class="kw">return new HashMap<>(this.motionControllers.build(var1));
}
@Nonnull
@Override
class="kw">public String getShortDescription() {
class="kw">return "List of motion controllers";
}
@Nonnull
@Override
class="kw">public String getLongDescription() {
class="kw">return "Non-empty list of motion controllers.";
}
@Nonnull
@Override
class="kw">public BuilderDescriptorState getBuilderDescriptorState() {
class="kw">return BuilderDescriptorState.Stable;
}
@Nonnull
@Override
class="kw">public Builder<Map<String, MotionController>> readConfig(@Nonnull JsonElement var1) {
this.requireArray(
var1,
this.motionControllers,
ArrayNotEmptyValidator.get(),
BuilderDescriptorState.Stable,
"List of motion controllers",
null,
new BuilderValidationHelper(this.fileName, null, this.internalReferenceResolver, null, null, this.extraInfo, null, this.readErrors)
);
class="kw">return this;
}
@Override
class="kw">public Class<Map<String, MotionController>> category() {
class="kw">return BuilderMotionControllerMapUtil.CLASS_REFERENCE;
}
@Override
class="kw">public class="kw">final boolean isEnabled(ExecutionContext var1) {
class="kw">return true;
}
@Nonnull
@Override
class="kw">public String getIdentifier() {
BuilderInfo var1 = NPCPlugin.get().getBuilderInfo(this);
Objects.requireNonNull(var1, "Have builder but can't get builderInfo for it");
class="kw">return var1.getKeyName();
}
@Nonnull
@Override
class="kw">public SpawnTestResult canSpawn(@Nonnull SpawningContext var1) {
if (this.motionControllers.hasNoElements()) {
class="kw">return SpawnTestResult.FAIL_NO_MOTION_CONTROLLERS;
}
MovementMode var2 = var1.movementMode;
if (var2 != null) {
BuilderMotionControllerBase var3 = this.getModeToController(var1.getExecutionContext()).get(var2);
if (var3 == null) {
class="kw">return SpawnTestResult.FAIL_NO_MOTION_CONTROLLER_MATCH;
}
SpawnTestResult var4 = var3.canSpawn(var1);
if (var4 == SpawnTestResult.TEST_OK) {
var1.activeMotionControllerType = var3.getType();
}
class="kw">return var4;
} else {
class="kw">return Objects.requireNonNullElse(this.motionControllers.findFirst((var0, var1x) -> {
if (var0 class="kw">instanceof BuilderMotionControllerBase var2) {
SpawnTestResult var3 = var2.canSpawn(var1x);
if (var3 == SpawnTestResult.TEST_OK) {
var1x.activeMotionControllerType = var2.getType();
class="kw">return var3;
} else {
class="kw">return null;
}
} else {
throw new IllegalStateException("MotionController builder must extend BuilderMotionControllerBase");
}
}, this.builderManager, var1.getExecutionContext(), var1, null, this.getParent()), SpawnTestResult.FAIL_NO_MOTION_CONTROLLER_MATCH);
}
}
@Override
class="kw">public boolean requiresSpawnDropHeightCheck(@Nonnull SpawningContext var1) {
if (this.motionControllers.hasNoElements()) {
class="kw">return true;
}
MovementMode var2 = var1.movementMode;
if (var2 == null) {
class="kw">return Boolean.TRUE.equals(this.motionControllers.findFirst((var0, var1x) -> {
if (var0 class="kw">instanceof BuilderMotionControllerBase var2) {
class="kw">return var2.requiresSpawnDropHeightCheck(var1x) ? Boolean.TRUE : null;
} else {
throw new IllegalStateException("MotionController builder must extend BuilderMotionControllerBase");
}
}, this.builderManager, var1.getExecutionContext(), var1, null, this.getParent()));
}
BuilderMotionControllerBase var3 = this.getModeToController(var1.getExecutionContext()).get(var2);
class="kw">return var3 == null || var3.requiresSpawnDropHeightCheck(var1);
}
@Nonnull
class="kw">private EnumMap<MovementMode, BuilderMotionControllerBase> getModeToController(@Nonnull ExecutionContext var1) {
EnumMap var2 = this.modeToController;
if (var2 != null) {
class="kw">return var2;
}
var2 = new EnumMap<>(MovementMode.class);
this.motionControllers.forEach((var0, var1x) -> {
if (!(var0 class="kw">instanceof BuilderMotionControllerBase var2)) {
throw new IllegalStateException("MotionController builder must extend BuilderMotionControllerBase");
} else {
for (MovementMode var4 : var2.getSupportedMovementModes()) {
var1x.put(var4, var2);
}
}
}, var2, this.builderManager, var1, this.getParent());
this.modeToController = var2;
class="kw">return var2;
}
@Override
class="kw">public void getMovementModes(
@Nonnull SpawningContext var1, @Nonnull Set<MovementMode> var2, @Nonnull Set<MovementMode> var3, @Nonnull Set<MovementMode> var4
) {
this.motionControllers.forEach((var3x, var4x) -> {
if (!(var3x class="kw">instanceof ISpawnable)) {
throw new IllegalStateException("MotionController must implement ISpawnable");
}
((ISpawnable)var3x).getMovementModes(var1, var4x, var3, var4);
}, var2, this.builderManager, var1.getExecutionContext(), this.getParent());
}
@Override
class="kw">public boolean validate(String var1, @Nonnull NPCLoadTimeValidationHelper var2, @Nonnull ExecutionContext var3, Scope var4, @Nonnull List<String> var5) {
class="kw">return super.validate(var1, var2, var3, var4, var5) & this.motionControllers.validate(var1, var2, this.builderManager, var3, var4, var5);
}
}