TriggerVolumePasteHandler class
Пакет: com.hypixel.hytale.builtin.triggervolumes.prefab
Файл: com/hypixel/hytale/builtin/triggervolumes/prefab/TriggerVolumePasteHandler.java
extends: WorldEventSystem<EntityStore, PrefabPlaceEntityEvent>
Поля (19)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
String |
var10 |
|
Vector3d |
var11 |
|
String |
var12 |
|
VolumeEntry |
var13 |
|
String |
var14 |
|
String |
var15 |
|
GroupEntry |
var16 |
|
String |
var18 |
|
Holder |
var4 |
|
TriggerVolume |
var5 |
|
TriggerVolumeGroup |
var6 |
|
TriggerVolumeManager |
var7 |
|
|
var7 |
|
TransformComponent |
var8 |
|
World |
var9 |
Методы (8)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
void |
handlevoid handle(@Nonnull Store<EntityStore> var1, @Nonnull CommandBuffer<EntityStore> var2, @Nonnull PrefabPlaceEntityEvent var3) |
|
|
if if(var5 != null || var6 != null) |
|
|
if if(var7 == null) |
|
|
if if(var9 == null) |
|
|
if if(var6 != null) |
|
|
if if(var16 != null) |
|
|
if if(var7 != null) |
abstract |
|
super super(PrefabPlaceEntityEvent.class) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.triggervolumes.prefab;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.component.TriggerVolume;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.component.TriggerVolumeGroup;
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.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.ResourceType;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.system.WorldEventSystem;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.prefab.event.PrefabPlaceEntityEvent;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.Locale;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class TriggerVolumePasteHandler class="kw">extends WorldEventSystem<EntityStore, PrefabPlaceEntityEvent> {
@Nonnull
class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
class="kw">private class="kw">final ResourceType<EntityStore, TriggerVolumeManager> managerResourceType;
class="kw">private class="kw">final ComponentType<EntityStore, TriggerVolume> triggerVolumeComponentType;
class="kw">private class="kw">final ComponentType<EntityStore, TriggerVolumeGroup> triggerVolumeGroupComponentType;
class="kw">public TriggerVolumePasteHandler(
@Nonnull ResourceType<EntityStore, TriggerVolumeManager> var1,
@Nonnull ComponentType<EntityStore, TriggerVolume> var2,
@Nonnull ComponentType<EntityStore, TriggerVolumeGroup> var3
) {
super(PrefabPlaceEntityEvent.class);
this.managerResourceType = var1;
this.triggerVolumeComponentType = var2;
this.triggerVolumeGroupComponentType = var3;
}
class="kw">public void handle(@Nonnull Store<EntityStore> var1, @Nonnull CommandBuffer<EntityStore> var2, @Nonnull PrefabPlaceEntityEvent var3) {
Holder var4 = var3.getHolder();
TriggerVolume var5 = var4.getComponent(this.triggerVolumeComponentType);
TriggerVolumeGroup var6 = var4.getComponent(this.triggerVolumeGroupComponentType);
if (var5 != null || var6 != null) {
var3.setCancelled(true);
TriggerVolumeManager var7 = null;
try {
TransformComponent var8 = var4.getComponent(TransformComponent.getComponentType());
if (var8 == null || var8.getPosition() == null) {
class="kw">return;
}
var7 = var1.getResource(this.managerResourceType);
if (var7 == null) {
class="kw">return;
}
World var9 = var7.getWorld();
if (var9 == null) {
class="kw">return;
}
String var10 = var9.getName().toLowerCase(Locale.ROOT);
Vector3d var11 = new Vector3d(var8.getPosition());
if (var6 != null) {
String var18 = var6.getGroupLinkId();
if (var18 != null && !var18.isBlank()) {
var7.upsertGroupForPrefabLink(var18, var6, var10, var11, var8.getRotation().yaw());
}
class="kw">return;
}
String var12 = var7.generateUniqueVolumeId();
VolumeEntry var13 = var5.toVolumeEntry(var12, var10, var11, var8.getRotation().yaw());
var13.setName(var7.makeUniqueVolumeName(var13.getName(), null));
String var14 = var5.getGroupLinkId();
if (var14 != null && !var14.isBlank()) {
String var15 = var7.ensureGroupForPrefabLink(var14, var13, var10);
var13.setGroupId(var15);
GroupEntry var16 = var7.getGroup(var15);
if (var16 != null) {
var16.addMember(var13.getId());
}
}
var7.register(var12, var13);
var7.notifyViewersAdd(var13);
var7.enqueueVolumeCreateEvent(var13, null, TriggerVolumeManager.ENVIRONMENT_ACTOR_UUID);
var7.markSpatialDirty();
} catch (Exception var17) {
((HytaleLogger.Api)LOGGER.at(Level.WARNING).withCause(var17)).log("Skipping malformed trigger volume prefab entity");
if (var7 != null) {
var7.notifyViewersLegacyVolumeSkipped();
}
}
}
}
}