AugmentConditionInteraction class
Пакет: com.hypixel.hytale.builtin.augmentblocks
Файл: com/hypixel/hytale/builtin/augmentblocks/AugmentConditionInteraction.java
extends: SimpleInstantInteraction
Поля (3)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
String[] |
EMPTY_STRING_ARRAY |
|
BlockPosition |
var2 |
|
Store |
var3 |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(var2 == null) |
private |
boolean |
passesboolean passes(@Nonnull InteractionContext var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.augmentblocks;
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.codec.validation.Validators;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.protocol.BlockPosition;
class="kw">import com.hypixel.hytale.protocol.InteractionState;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.protocol.WaitForDataFrom;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.CooldownHandler;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.SimpleInstantInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;
class="kw">public class AugmentConditionInteraction class="kw">extends SimpleInstantInteraction {
class="kw">private class="kw">static class="kw">final String[] EMPTY_STRING_ARRAY = new String[0];
class="kw">private class="kw">static class="kw">final double DEFAULT_RADIUS = 100.0;
class="kw">public class="kw">static class="kw">final BuilderCodec<AugmentConditionInteraction> CODEC = BuilderCodec.builder(
AugmentConditionInteraction.class, AugmentConditionInteraction::new, SimpleInstantInteraction.CODEC
)
.documentation("An interaction that is successful while every required tag is granted by augment blocks around the target block.")
.<String[]>appendInherited(
new KeyedCodec<>("RequiredAugmentTags", Codec.STRING_ARRAY),
(var0, var1) -> var0.requiredAugmentTags = var1,
var0 -> var0.requiredAugmentTags,
(var0, var1) -> var0.requiredAugmentTags = var1.requiredAugmentTags
)
.addValidator(Validators.nonNull())
.add()
.appendInherited(
new KeyedCodec<>("Radius", Codec.DOUBLE), (var0, var1) -> var0.radius = var1, var0 -> var0.radius, (var0, var1) -> var0.radius = var1.radius
)
.add()
.build();
class="kw">private String[] requiredAugmentTags = EMPTY_STRING_ARRAY;
class="kw">private double radius = 100.0;
class="kw">public AugmentConditionInteraction() {
}
@Override
class="kw">protected void firstRun(@Nonnull InteractionType var1, @Nonnull InteractionContext var2, @Nonnull CooldownHandler var3) {
var2.getState().state = this.passes(var2) ? InteractionState.Finished : InteractionState.Failed;
}
class="kw">private boolean passes(@Nonnull InteractionContext var1) {
BlockPosition var2 = var1.getTargetBlock();
if (var2 == null) {
class="kw">return false;
}
Store var3 = var1.getCommandBuffer().getExternalData().getWorld().getChunkStore().getStore();
class="kw">return AugmentBlocksUtils.requirementsMet(var3, new Vector3i(var2.x, var2.y, var2.z), this.radius, this.requiredAugmentTags);
}
@Nonnull
@Override
class="kw">public WaitForDataFrom getWaitForDataFrom() {
class="kw">return WaitForDataFrom.Server;
}
}