VolumeStateEffect class

Пакет: com.hypixel.hytale.builtin.triggervolumes.effect.builtin

Файл: com/hypixel/hytale/builtin/triggervolumes/effect/builtin/VolumeStateEffect.java

extends: TriggerEffect

Поля (3)

МодификаторыТипИмя
TriggerVolumeManager var2
boolean var3
String var4

Методы (6)

МодификаторыВозвратСигнатура
abstract abstract boolean applyToboolean applyTo(@Nonnull VolumeEntry var1)
protected boolean applyToGroupboolean applyToGroup(@Nonnull GroupEntry var1, @Nonnull TriggerVolumeManager var2)
if if(var2 != null)
if if(var3)
protected boolean shouldNotifyViewersboolean shouldNotifyViewers()
protected boolean targetsGroupsboolean targetsGroups()

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.triggervolumes.effect.builtin;

class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerContext;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerEffect;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.manager.GroupEntry;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.manager.TriggerVolumeManager;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.manager.VolumeEntry;
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.codecs.EnumCodec;
class="kw">import java.util.function.Supplier;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class="kw">abstract class VolumeStateEffect class="kw">extends TriggerEffect {
   @Nonnull
   class="kw">protected String matchKey = "";
   @Nullable
   class="kw">protected String matchValue;
   class="kw">protected double radius = 50.0;
   @Nonnull
   class="kw">protected TaggedVolumeEffectUtil.Center center = TaggedVolumeEffectUtil.Center.VOLUME;

   class="kw">public VolumeStateEffect() {
   }

   @Nonnull
   class="kw">protected class="kw">static <T class="kw">extends VolumeStateEffect> BuilderCodec.Builder<T> createCodecBuilder(@Nonnull Class<T> var0, @Nonnull Supplier<T> var1) {
      class="kw">return BuilderCodec.builder(var0, var1, BASE_CODEC)
         .append(new KeyedCodec<>("MatchKey", Codec.STRING, false), (var0x, var1x) -> var0x.matchKey = var1x, var0x -> var0x.matchKey)
         .add()
         .append(new KeyedCodec<>("MatchValue", Codec.STRING, false), (var0x, var1x) -> var0x.matchValue = var1x, var0x -> var0x.matchValue)
         .add()
         .append(new KeyedCodec<>("Radius", Codec.DOUBLE, false), (var0x, var1x) -> var0x.radius = var1x, var0x -> var0x.radius)
         .add()
         .append(
            new KeyedCodec<>("Center", new EnumCodec<>(TaggedVolumeEffectUtil.Center.class), false),
            (var0x, var1x) -> var0x.center = var1x,
            var0x -> var0x.center
         )
         .add();
   }

   @Nonnull
   class="kw">protected class="kw">static <T class="kw">extends VolumeStateEffect> BuilderCodec<T> createCodec(@Nonnull Class<T> var0, @Nonnull Supplier<T> var1) {
      class="kw">return createCodecBuilder(var0, var1).build();
   }

   @Override
   class="kw">public class="kw">final void execute(@Nonnull TriggerContext var1) {
      TriggerVolumeManager var2 = TaggedVolumeEffectUtil.manager(var1);
      if (var2 != null) {
         boolean var3 = false;
         String var4 = TaggedVolumeEffectUtil.composeTagFilter(this.matchKey, this.matchValue);

         for (VolumeEntry var6 : TaggedVolumeEffectUtil.collectTargets(var1, var4, this.radius, this.center)) {
            var3 |= this.applyTo(var6);
         }

         if (this.targetsGroups()) {
            for (GroupEntry var8 : TaggedVolumeEffectUtil.collectGroupTargets(var1, var4, this.radius, this.center)) {
               var3 |= this.applyToGroup(var8, var2);
            }
         }

         if (var3) {
            var2.markSpatialDirty();
            if (this.shouldNotifyViewers()) {
               var2.notifyViewers();
            }
         }
      }
   }

   class="kw">protected class="kw">abstract boolean applyTo(@Nonnull VolumeEntry var1);

   class="kw">protected boolean targetsGroups() {
      class="kw">return false;
   }

   class="kw">protected boolean applyToGroup(@Nonnull GroupEntry var1, @Nonnull TriggerVolumeManager var2) {
      class="kw">return false;
   }

   class="kw">protected boolean shouldNotifyViewers() {
      class="kw">return true;
   }
}