ModifyIntervalConditionInteraction class
Пакет: com.hypixel.hytale.builtin.adventure.worldevents.interaction
Файл: com/hypixel/hytale/builtin/adventure/worldevents/interaction/ModifyIntervalConditionInteraction.java
extends: SimpleInstantInteraction
Поля (15)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
String |
ID |
|
ComponentType |
var2 |
|
UUID |
var3 |
|
|
var3 |
|
|
var3 |
|
TrackedEntityComponent |
var3 |
|
CommandBuffer |
var4 |
|
BlockPosition |
var4 |
|
UUID |
var5 |
|
World |
var5 |
|
WorldEventManager |
var6 |
|
Ref |
var6 |
|
WorldEvent |
var7 |
|
TrackedBlockComponent |
var7 |
|
IntervalContext |
var8 |
Методы (11)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(this.intervalKey != null && this.modifier != null) |
|
|
if if(var4 != null) |
|
|
if if(var5 != null) |
|
|
if if(var7 != null) |
|
|
if if(var3 != null) |
|
|
if if(var3 != null) |
|
|
if if(var3 != null) |
|
|
if if(var4 != null) |
|
|
if if(var6 != null) |
|
|
if if(var7 != null) |
|
|
if if(var0 == null) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.worldevents.interaction;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.WorldEventManager;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.component.TrackedBlockComponent;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.component.TrackedEntityComponent;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.ContextKey;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.IntervalContext;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.WorldEvent;
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.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.protocol.BlockPosition;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.modules.block.BlockModule;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.modifier.Modifier;
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.World;
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 java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class ModifyIntervalConditionInteraction class="kw">extends SimpleInstantInteraction {
class="kw">public class="kw">static class="kw">final String ID = "ModifyIntervalConditionInteraction";
class="kw">public class="kw">static class="kw">final BuilderCodec<ModifyIntervalConditionInteraction> CODEC = BuilderCodec.builder(
ModifyIntervalConditionInteraction.class, ModifyIntervalConditionInteraction::new, SimpleInstantInteraction.ABSTRACT_CODEC
)
.documentation("An interaction that can be used to modify the interval timer on a world-event. Does nothing if the interval time has already elapsed.")
.<UUID>append(new KeyedCodec<>("Event", Codec.UUID_STRING), (var0, var1) -> var0.worldEventId = var1, var0 -> var0.worldEventId)
.documentation(
"The UUID of the world-event to modify the interval on. May be omitted if the world-event can be derived from any of the entities involved in the interaction context."
)
.add()
.<ContextKey>append(new KeyedCodec<>("IntervalKey", ContextKey.CODEC), (var0, var1) -> var0.intervalKey = var1, var0 -> var0.intervalKey)
.documentation("The variable name of the interval that this interaction should modify.")
.addValidator(Validators.nonNull())
.add()
.<Modifier>append(new KeyedCodec<>("Modifier", Modifier.CODEC), (var0, var1) -> var0.modifier = var1, var0 -> var0.modifier)
.documentation("The modifier to apply to the target interval's timer, in seconds. Does nothing if the interval time has already elapsed.")
.addValidator(Validators.nonNull())
.add()
.build();
@Nullable
class="kw">protected UUID worldEventId = null;
@Nullable
class="kw">protected ContextKey intervalKey = null;
@Nullable
class="kw">protected Modifier modifier = null;
class="kw">public ModifyIntervalConditionInteraction() {
}
@Override
class="kw">protected void firstRun(@Nonnull InteractionType var1, @Nonnull InteractionContext var2, @Nonnull CooldownHandler var3) {
if (this.intervalKey != null && this.modifier != null) {
CommandBuffer var4 = var2.getCommandBuffer();
if (var4 != null) {
UUID var5 = this.worldEventId != null ? this.worldEventId : getWorldEventId(var4, var2);
if (var5 != null) {
WorldEventManager var6 = var4.getResource(WorldEventManager.getResourceType());
WorldEvent var7 = var6.get(var5);
if (var7 != null) {
IntervalContext var8 = var7.context.get(this.intervalKey, IntervalContext.class);
if (var8 != null && !var8.uninitialized() && !var8.elapsed()) {
var8.set(this.modifier.apply(var8.get()));
}
}
}
}
}
}
@Nullable
class="kw">protected class="kw">static UUID getWorldEventId(@Nonnull CommandBuffer<EntityStore> var0, @Nonnull InteractionContext var1) {
ComponentType var2 = TrackedEntityComponent.getComponentType();
UUID var3 = tryGetEntityWorldEventId(var1.getEntity(), var0, var2);
if (var3 != null) {
class="kw">return var3;
}
var3 = tryGetEntityWorldEventId(var1.getOwningEntity(), var0, var2);
if (var3 != null) {
class="kw">return var3;
}
var3 = tryGetEntityWorldEventId(var1.getTargetEntity(), var0, var2);
if (var3 != null) {
class="kw">return var3;
}
BlockPosition var4 = var1.getTargetBlock();
if (var4 != null) {
World var5 = var0.getExternalData().getWorld();
Ref var6 = BlockModule.getBlockEntity(var5, var4.x, var4.y, var4.z);
if (var6 != null) {
TrackedBlockComponent var7 = var5.getChunkStore().getStore().getComponent(var6, TrackedBlockComponent.getComponentType());
if (var7 != null) {
class="kw">return var7.getUUID();
}
}
}
class="kw">return null;
}
@Nullable
class="kw">protected class="kw">static UUID tryGetEntityWorldEventId(
@Nullable Ref<EntityStore> var0, @Nonnull CommandBuffer<EntityStore> var1, @Nonnull ComponentType<EntityStore, TrackedEntityComponent> var2
) {
if (var0 == null) {
class="kw">return null;
}
TrackedEntityComponent var3 = var1.getComponent(var0, var2);
class="kw">return var3 == null ? null : var3.getUUID();
}
}