ActionModelAttachment class
Пакет: com.hypixel.hytale.server.npc.corecomponents.audiovisual
Файл: com/hypixel/hytale/server/npc/corecomponents/audiovisual/ActionModelAttachment.java
extends: ActionBase
Поля (8)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Role |
var10 |
|
ModelComponent |
var4 |
|
NPCEntity |
var5 |
|
Model |
var6 |
|
|
var6 |
|
float |
var7 |
|
ModelAsset |
var8 |
|
Map |
var9 |
Методы (5)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("Slot must be specified!") |
|
|
if if(var10 != null) |
static |
void |
setModelAttachmentvoid setModelAttachment(@Nonnull Ref<EntityStore> var0, @Nonnull String var1, @Nullable String var2, @Nonnull ComponentAccessor<EntityStore> var3) |
abstract |
|
setModelAttachment setModelAttachment(var1, this.slot, this.attachment, var6) |
abstract |
|
super super(var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.audiovisual;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.Model;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.ModelAsset;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.ActionBase;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.audiovisual.builders.BuilderActionModelAttachment;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.role.Role;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.InfoProvider;
class="kw">import java.util.HashMap;
class="kw">import java.util.Map;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class ActionModelAttachment class="kw">extends ActionBase {
@Nonnull
class="kw">protected class="kw">final String slot;
@Nonnull
class="kw">protected class="kw">final String attachment;
class="kw">public ActionModelAttachment(@Nonnull BuilderActionModelAttachment var1, @Nonnull BuilderSupport var2) {
super(var1);
this.slot = var1.getSlot(var2);
this.attachment = var1.getAttachment(var2);
}
@Override
class="kw">public boolean execute(
@Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, @Nullable InfoProvider var3, double var4, @Nonnull Store<EntityStore> var6
) {
super.execute(var1, var2, var3, var4, var6);
setModelAttachment(var1, this.slot, this.attachment, var6);
class="kw">return true;
}
class="kw">private class="kw">static void setModelAttachment(
@Nonnull Ref<EntityStore> var0, @Nonnull String var1, @Nullable String var2, @Nonnull ComponentAccessor<EntityStore> var3
) {
if (var1.isEmpty()) {
throw new IllegalArgumentException("Slot must be specified!");
}
ModelComponent var4 = var3.getComponent(var0, ModelComponent.getComponentType());
assert var4 != null;
NPCEntity var5 = var3.getComponent(var0, NPCEntity.getComponentType());
assert var5 != null;
Model var6 = var4.getModel();
float var7 = var6.getScale();
ModelAsset var8 = ModelAsset.getAssetMap().getAsset(var6.getModelAssetId());
Map var9 = var6.getRandomAttachmentIds() != null ? new HashMap<>(var6.getRandomAttachmentIds()) : new HashMap<>();
if (var2 != null && !var2.isEmpty()) {
var9.put(var1, var2);
} else {
var9.remove(var1);
}
var6 = Model.createScaledModel(var8, var7, var9);
var3.putComponent(var0, ModelComponent.getComponentType(), new ModelComponent(var6));
Role var10 = var5.getRole();
if (var10 != null) {
var10.updateMotionControllers(var0, var6, var6.getBoundingBox(), var3);
}
}
}