TriggerVolumeGroup class

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

Файл: com/hypixel/hytale/builtin/triggervolumes/component/TriggerVolumeGroup.java

implements: Component<EntityStore>

Поля (5)

МодификаторыТипИмя
ArrayList var1
TriggerVolumeGroup var1
TriggerVolumeGroup var2
Vector3d var3
GroupEntry var5

Методы (12)

МодификаторыВозвратСигнатура
public void applyTovoid applyTo(@Nonnull GroupEntry var1, @Nonnull Vector3d var2, float var3)
for for(Object var5 : var0)
if if(this.conditions != null)
if if(this.rejectionEffects != null)
if if(this.rules != null)
if if(this.effects != null)
if if(this.conditions != null)
if if(this.rejectionEffects != null)
if if(this.rules != null)
if if(var0 == null)
if if(var5 != null)
private void rotateEntryListsvoid rotateEntryLists(@Nonnull GroupEntry var1, float var2)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.triggervolumes.EntityTargetType;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerCondition;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerEffect;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerRule;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerVolumeCodecs;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.manager.ConditionTiming;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.manager.GroupEntry;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.manager.RejectionDelayMode;
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 com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.component.Component;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.ArrayList;
class="kw">import java.util.Collections;
class="kw">import java.util.EnumSet;
class="kw">import java.util.HashMap;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class TriggerVolumeGroup class="kw">implements Component<EntityStore> {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<TriggerVolumeGroup> CODEC = BuilderCodec.builder(TriggerVolumeGroup.class, TriggerVolumeGroup::new)
      .append(new KeyedCodec<>("GroupLinkId", Codec.STRING), (var0, var1) -> var0.groupLinkId = var1, var0 -> var0.groupLinkId)
      .add()
      .append(
         new KeyedCodec<>("Effects", TriggerVolumeCodecs.TOLERANT_EFFECTS, false),
         (var0, var1) -> var0.effects = copyNonNull(var1),
         var0 -> var0.effects != null ? var0.effects.toArray(TriggerEffect[]::new) : null
      )
      .add()
      .append(
         new KeyedCodec<>("Conditions", TriggerVolumeCodecs.TOLERANT_CONDITIONS, false),
         (var0, var1) -> var0.conditions = copyNonNull(var1),
         var0 -> var0.conditions != null ? var0.conditions.toArray(TriggerCondition[]::new) : null
      )
      .add()
      .append(
         new KeyedCodec<>("RejectionEffects", TriggerVolumeCodecs.TOLERANT_EFFECTS, false),
         (var0, var1) -> var0.rejectionEffects = copyNonNull(var1),
         var0 -> var0.rejectionEffects != null ? var0.rejectionEffects.toArray(TriggerEffect[]::new) : null
      )
      .add()
      .append(
         new KeyedCodec<>("Rules", TriggerVolumeCodecs.TOLERANT_RULES, false),
         (var0, var1) -> var0.rules = copyNonNull(var1),
         var0 -> var0.rules != null ? var0.rules.toArray(TriggerRule[]::new) : null
      )
      .add()
      .append(
         new KeyedCodec<>("ConditionTiming", new EnumCodec<>(ConditionTiming.class), false),
         (var0, var1) -> var0.conditionTiming = var1,
         var0 -> var0.conditionTiming != ConditionTiming.AFTER_VOLUME_DELAY ? var0.conditionTiming : null
      )
      .add()
      .append(
         new KeyedCodec<>("RejectionDelayMode", new EnumCodec<>(RejectionDelayMode.class, EnumCodec.EnumStyle.LEGACY), false),
         (var0, var1) -> var0.rejectionDelayMode = var1,
         var0 -> var0.rejectionDelayMode != RejectionDelayMode.USE_VOLUME_DELAY ? var0.rejectionDelayMode : null
      )
      .add()
      .append(new KeyedCodec<>("TargetTypes", new ArrayCodec<>(new EnumCodec<>(EntityTargetType.class), EntityTargetType[]::new), false), (var0, var1) -> {
         var0.targetTypes.clear();
         Collections.addAll(var0.targetTypes, var1);
      }, var0 -> var0.targetTypes.isEmpty() ? null : var0.targetTypes.toArray(EntityTargetType[]::new))
      .add()
      .append(new KeyedCodec<>("Enabled", Codec.BOOLEAN, false), (var0, var1) -> var0.enabled = var1, var0 -> var0.enabled)
      .add()
      .append(new KeyedCodec<>("Color", Codec.INTEGER, false), (var0, var1) -> var0.color = var1, var0 -> var0.color)
      .add()
      .append(
         new KeyedCodec<>("Tags", TriggerVolumeCodecs.TAGS, false), (var0, var1) -> var0.rawTags = var1, var0 -> var0.rawTags.isEmpty() ? null : var0.rawTags
      )
      .add()
      .append(
         new KeyedCodec<>("RotateEffectsOnPaste", Codec.BOOLEAN, false),
         (var0, var1) -> var0.rotateEffectsOnPaste = var1,
         var0 -> var0.rotateEffectsOnPaste ? null : Boolean.FALSE
      )
      .add()
      .append(new KeyedCodec<>("Name", Codec.STRING, false), (var0, var1) -> var0.name = var1, var0 -> var0.name)
      .add()
      .build();
   @Nullable
   class="kw">private String groupLinkId;
   @Nullable
   class="kw">private List<TriggerEffect> effects;
   @Nullable
   class="kw">private List<TriggerCondition> conditions;
   @Nullable
   class="kw">private List<TriggerEffect> rejectionEffects;
   @Nullable
   class="kw">private List<TriggerRule> rules;
   @Nonnull
   class="kw">private ConditionTiming conditionTiming = ConditionTiming.AFTER_VOLUME_DELAY;
   @Nonnull
   class="kw">private RejectionDelayMode rejectionDelayMode = RejectionDelayMode.USE_VOLUME_DELAY;
   @Nonnull
   class="kw">private Set<EntityTargetType> targetTypes = EnumSet.of(EntityTargetType.PLAYER);
   class="kw">private boolean enabled = true;
   class="kw">private int color;
   @Nonnull
   class="kw">private Map<String, String> rawTags = Collections.emptyMap();
   class="kw">private boolean rotateEffectsOnPaste = true;
   @Nullable
   class="kw">private String name;

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

   @Nonnull
   class="kw">public class="kw">static TriggerVolumeGroup fromGroupEntry(@Nonnull String var0, @Nonnull GroupEntry var1) {
      TriggerVolumeGroup var2 = new TriggerVolumeGroup();
      var2.groupLinkId = var0;
      var2.effects = var1.getEffects().isEmpty() ? null : TriggerEffect.deepCopyList(var1.getEffects());
      var2.conditions = var1.getConditions().isEmpty() ? null : TriggerCondition.deepCopyList(var1.getConditions());
      var2.rejectionEffects = var1.getRejectionEffects().isEmpty() ? null : TriggerEffect.deepCopyList(var1.getRejectionEffects());
      var2.rules = var1.getRules().isEmpty() ? null : TriggerRule.deepCopyList(var1.getRules());
      var2.conditionTiming = var1.getConditionTiming();
      var2.rejectionDelayMode = var1.getRejectionDelayMode();
      var2.targetTypes = EnumSet.copyOf(var1.getTargetTypes());
      var2.enabled = var1.isEnabled();
      var2.color = var1.getColor();
      var2.rawTags = var1.getRawTags();
      var2.rotateEffectsOnPaste = var1.isRotateEffectsOnPaste();
      var2.name = var1.getName();
      class="kw">return var2;
   }

   @Nullable
   class="kw">public String getGroupLinkId() {
      class="kw">return this.groupLinkId;
   }

   @Nonnull
   class="kw">public GroupEntry toGroupEntry(@Nonnull String var1, @Nonnull String var2, @Nonnull Vector3d var3, float var4) {
      GroupEntry var5 = new GroupEntry(
         var1,
         var2,
         var3,
         this.effects != null ? TriggerEffect.deepCopyList(this.effects) : new ArrayList<>(),
         EnumSet.copyOf(this.targetTypes),
         this.enabled,
         this.color
      );
      if (this.conditions != null) {
         var5.getConditions().addAll(TriggerCondition.deepCopyList(this.conditions));
      }

      if (this.rejectionEffects != null) {
         var5.getRejectionEffects().addAll(TriggerEffect.deepCopyList(this.rejectionEffects));
      }

      if (this.rules != null) {
         var5.getRules().addAll(TriggerRule.deepCopyList(this.rules));
      }

      var5.setConditionTiming(this.conditionTiming);
      var5.setRejectionDelayMode(this.rejectionDelayMode);
      if (!this.rawTags.isEmpty()) {
         var5.setTags(this.rawTags);
      }

      var5.setRotateEffectsOnPaste(this.rotateEffectsOnPaste);
      var5.setName(this.name);
      this.rotateEntryLists(var5, var4);
      class="kw">return var5;
   }

   class="kw">public void applyTo(@Nonnull GroupEntry var1, @Nonnull Vector3d var2, float var3) {
      var1.setOrigin(var2);
      var1.getEffects().clear();
      if (this.effects != null) {
         var1.getEffects().addAll(TriggerEffect.deepCopyList(this.effects));
      }

      var1.getConditions().clear();
      if (this.conditions != null) {
         var1.getConditions().addAll(TriggerCondition.deepCopyList(this.conditions));
      }

      var1.getRejectionEffects().clear();
      if (this.rejectionEffects != null) {
         var1.getRejectionEffects().addAll(TriggerEffect.deepCopyList(this.rejectionEffects));
      }

      var1.getRules().clear();
      if (this.rules != null) {
         var1.getRules().addAll(TriggerRule.deepCopyList(this.rules));
      }

      var1.setConditionTiming(this.conditionTiming);
      var1.setRejectionDelayMode(this.rejectionDelayMode);
      var1.getTargetTypes().clear();
      var1.getTargetTypes().addAll(this.targetTypes);
      var1.setEnabled(this.enabled);
      var1.setColor(this.color);
      var1.setTags(this.rawTags);
      var1.setRotateEffectsOnPaste(this.rotateEffectsOnPaste);
      var1.setName(this.name);
      this.rotateEntryLists(var1, var3);
   }

   class="kw">private void rotateEntryLists(@Nonnull GroupEntry var1, float var2) {
      if (this.rotateEffectsOnPaste && !(Math.abs(var2) <= 1.0E-6)) {
         Vector3d var3 = var1.getOrigin();
         var1.getEffects().forEach(var2x -> var2x.rotateInPlace(var2, var3));
         var1.getRejectionEffects().forEach(var2x -> var2x.rotateInPlace(var2, var3));
         var1.getConditions().forEach(var2x -> var2x.rotateInPlace(var2, var3));
         var1.getRules().forEach(var2x -> var2x.rotateInPlace(var2, var3));
      }
   }

   @Nullable
   class="kw">private class="kw">static <T> List<T> copyNonNull(@Nullable T[] var0) {
      if (var0 == null) {
         class="kw">return null;
      }

      ArrayList var1 = new ArrayList<>(var0.length);

      for (Object var5 : var0) {
         if (var5 != null) {
            var1.add(var5);
         }
      }

      class="kw">return var1;
   }

   @Nonnull
   @Override
   class="kw">public Component<EntityStore> clone() {
      TriggerVolumeGroup var1 = new TriggerVolumeGroup();
      var1.groupLinkId = this.groupLinkId;
      var1.effects = this.effects != null ? TriggerEffect.deepCopyList(this.effects) : null;
      var1.conditions = this.conditions != null ? TriggerCondition.deepCopyList(this.conditions) : null;
      var1.rejectionEffects = this.rejectionEffects != null ? TriggerEffect.deepCopyList(this.rejectionEffects) : null;
      var1.rules = this.rules != null ? TriggerRule.deepCopyList(this.rules) : null;
      var1.conditionTiming = this.conditionTiming;
      var1.rejectionDelayMode = this.rejectionDelayMode;
      var1.targetTypes = EnumSet.copyOf(this.targetTypes);
      var1.enabled = this.enabled;
      var1.color = this.color;
      var1.rawTags = this.rawTags.isEmpty() ? Collections.emptyMap() : new HashMap<>(this.rawTags);
      var1.rotateEffectsOnPaste = this.rotateEffectsOnPaste;
      var1.name = this.name;
      class="kw">return var1;
   }
}