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