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