EffectConditionInteraction class
Пакет: com.hypixel.hytale.server.core.modules.interaction.interaction.config.none
Файл: com/hypixel/hytale/server/core/modules/interaction/interaction/config/none/EffectConditionInteraction.java
extends: SimpleInstantInteraction
Поля (11)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
break |
|
|
return |
|
|
return |
|
IndexedLookupTableAssetMap |
var1 |
|
int[] |
var2 |
|
com.hypixel.hytale.protocol.EffectConditionInteraction |
var2 |
|
CommandBuffer |
var4 |
|
Ref |
var5 |
|
Ref |
var6 |
|
EffectControllerComponent |
var7 |
|
Int2ObjectMap |
var8 |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(int var9 = 0; var9 < this.entityEffectIndexes.length; var9++) |
|
|
for for(int var3 = 0; var3 < var0.length; var3++) |
|
|
if if(var7 != null) |
|
|
if if(var0 == null) |
static |
int[] |
resolveEntityEffectsint[] resolveEntityEffects(@Nullable String[] var0) |
|
|
switch switch(this.match) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.interaction.interaction.config.none;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedLookupTableAssetMap;
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.validation.Validators;
class="kw">import com.hypixel.hytale.common.util.ArrayUtil;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.protocol.Interaction;
class="kw">import com.hypixel.hytale.protocol.InteractionState;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.protocol.Match;
class="kw">import com.hypixel.hytale.server.core.asset.type.entityeffect.config.EntityEffect;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.entity.effect.ActiveEntityEffect;
class="kw">import com.hypixel.hytale.server.core.entity.effect.EffectControllerComponent;
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.modules.interaction.interaction.util.InteractionTarget;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class EffectConditionInteraction class="kw">extends SimpleInstantInteraction {
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<EffectConditionInteraction> CODEC = BuilderCodec.builder(
EffectConditionInteraction.class, EffectConditionInteraction::new, SimpleInstantInteraction.CODEC
)
.documentation("An interaction that is successful if the given effects exist (or don't) on the target entity.")
.<String[]>append(new KeyedCodec<>("EntityEffectIds", Codec.STRING_ARRAY), (var0, var1) -> var0.entityEffectIds = var1, var0 -> var0.entityEffectIds)
.addValidator(Validators.nonNull())
.addValidator(Validators.nonEmptyArray())
.addValidatorLate(() -> EntityEffect.VALIDATOR_CACHE.getArrayValidator().late())
.add()
.<Match>append(new KeyedCodec<>("Match", new EnumCodec<>(Match.class)), (var0, var1) -> var0.match = var1, var0 -> var0.match)
.documentation(
"Field to specify whether the entity must have the specified effects (All), or must not have the specified effects (None). Default value is: All."
)
.add()
.<InteractionTarget>appendInherited(
new KeyedCodec<>("Entity", InteractionTarget.CODEC),
(var0, var1) -> var0.entityTarget = var1,
var0 -> var0.entityTarget,
(var0, var1) -> var0.entityTarget = var1.entityTarget
)
.documentation("The entity to target for this interaction.")
.addValidator(Validators.nonNull())
.add()
.afterDecode(var0 -> var0.entityEffectIndexes = resolveEntityEffects(var0.entityEffectIds))
.build();
class="kw">protected String[] entityEffectIds;
class="kw">protected int[] entityEffectIndexes;
@Nonnull
class="kw">protected Match match = Match.All;
@Nonnull
class="kw">private InteractionTarget entityTarget = InteractionTarget.USER;
class="kw">public EffectConditionInteraction() {
}
@Override
class="kw">protected void firstRun(@Nonnull InteractionType var1, @Nonnull InteractionContext var2, @Nonnull CooldownHandler var3) {
CommandBuffer var4 = var2.getCommandBuffer();
assert var4 != null;
Ref var5 = var2.getEntity();
Ref var6 = this.entityTarget.getEntity(var2, var5);
if (var6 != null && var6.isValid()) {
EffectControllerComponent var7 = var4.getComponent(var6, EffectControllerComponent.getComponentType());
if (var7 != null) {
Int2ObjectMap var8 = var7.getActiveEffects();
for (int var9 = 0; var9 < this.entityEffectIndexes.length; var9++) {
class="kw">switch (this.match) {
case All:
if (!var8.containsKey(this.entityEffectIndexes[var9])) {
var2.getState().state = InteractionState.Failed;
class="kw">return;
}
break;
case None:
if (var8.containsKey(this.entityEffectIndexes[var9])) {
var2.getState().state = InteractionState.Failed;
class="kw">return;
}
}
}
}
}
}
class="kw">private class="kw">static int[] resolveEntityEffects(@Nullable String[] var0) {
if (var0 == null) {
class="kw">return ArrayUtil.EMPTY_INT_ARRAY;
}
IndexedLookupTableAssetMap var1 = EntityEffect.getAssetMap();
int[] var2 = new int[var0.length];
for (int var3 = 0; var3 < var0.length; var3++) {
var2[var3] = var1.getIndex(var0[var3]);
}
class="kw">return var2;
}
@Nonnull
@Override
class="kw">protected Interaction generatePacket() {
class="kw">return new com.hypixel.hytale.protocol.EffectConditionInteraction();
}
@Override
class="kw">protected void configurePacket(Interaction var1) {
super.configurePacket(var1);
com.hypixel.hytale.protocol.EffectConditionInteraction var2 = (com.hypixel.hytale.protocol.EffectConditionInteraction)var1;
var2.entityEffects = this.entityEffectIndexes;
var2.match = this.match;
var2.entityTarget = this.entityTarget.toProtocol();
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "EffectConditionInteraction{entityEffectIds="
+ Arrays.toString(this.entityEffectIds)
+ ", entityEffectIndexes="
+ Arrays.toString(this.entityEffectIndexes)
+ ", match="
+ this.match
+ ", entityTarget="
+ this.entityTarget
+ "} "
+ super.toString();
}
}