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();
   }
}