TriggerVolumeToolPacketHandler class

Пакет: com.hypixel.hytale.builtin.triggervolumes

Файл: com/hypixel/hytale/builtin/triggervolumes/TriggerVolumeToolPacketHandler.java

implements: SubPacketHandler

Поля (125)

МодификаторыТипИмя
break
String var1
var1
LinkedHashSet var1
String var1
var1
HashMap var1
TriggerVolumeShape var10
ArrayList var10
Vector3d var10
int var10
Vector3d var10
int var10
CooldownMode var10
String var11
var11
var11
String var11
BoxShape var11
int var11
int var11
VolumeEntry var12
Vector3d var12
ArrayList var12
VolumeEntry var12
VolumeEntry var12
int var12
TriggerVolumeToolCreateResponse var13
Vector3d var13
VolumeEntry var13
VolumeEntry var13
VolumeEntry var14
Vector3d var14
Vector3d var14
String var15
VolumeEntry var15
VolumeEntry var15
VolumeEntry var16
String var17
GroupEntry var17
GroupEntry var18
TriggerVolumeToolCreateResponse var19
List var20
TriggerVolumeToolGroupCreateResponse var21
EnumSet var23
String var26
int var27
TriggerVolumeToolGroupCreateResponse var28
Player var3
VolumeEntry var3
BuilderToolsPlugin.BuilderState var4
BuilderToolsPlugin.BuilderState var4
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumesPlugin var6
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
TriggerVolumeManager var7
UUID var8
String var8
List var8
VolumeEntry var8
VolumeEntry var8
VolumeEntry var8
VolumeEntry var8
List var8
GroupEntry var8
GroupEntry var8
List var8
VolumeEntry var8
VolumeEntry var8
VolumeEntry var8
VolumeEntry var8
VolumeEntry var8
UUID var8
VolumeEntry var8
VolumeEntry var8
VolumeEntry var8
Vector3d var9
ArrayList var9
Vector3d var9
TriggerVolumeShape var9
Vector3d var9
List var9
List var9
List var9
GroupEntry var9
Set var9
int var9

Методы (93)

МодификаторыВозвратСигнатура
static void ensureViewingvoid ensureViewing(@Nonnull PlayerRef var0, @Nonnull TriggerVolumeManager var1)
abstract ensureViewing ensureViewing(var2, var7)
for for(String var5 : var0)
for for(String var13 : var8)
for for(String var14 : var8)
for for(VolumeEntry var24 : var12)
for for(VolumeEntry var16 : var12)
for for(VolumeEntry var19 : var12)
for for(String var12 : var8)
private void handleCreatevoid handleCreate(@Nonnull TriggerVolumeToolCreate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleDeletevoid handleDelete(@Nonnull TriggerVolumeToolDelete var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleDuplicatevoid handleDuplicate(@Nonnull TriggerVolumeToolDuplicate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleEquipvoid handleEquip(@Nonnull TriggerVolumeToolEquip var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleGroupCreatevoid handleGroupCreate(@Nonnull TriggerVolumeToolGroupCreate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleGroupMovevoid handleGroupMove(@Nonnull TriggerVolumeToolGroupMove var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleMovevoid handleMove(@Nonnull TriggerVolumeToolMove var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleMultiMovevoid handleMultiMove(@Nonnull TriggerVolumeToolMultiMove var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleResizevoid handleResize(@Nonnull TriggerVolumeToolResize var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleRotatevoid handleRotate(@Nonnull TriggerVolumeToolRotate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleSelectvoid handleSelect(@Nonnull TriggerVolumeToolSelect var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleSelectionToolShowTriggerVolumesvoid handleSelectionToolShowTriggerVolumes(@Nonnull SelectionToolShowTriggerVolumes var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleSetActivationDelayvoid handleSetActivationDelay(@Nonnull TriggerVolumeToolSetActivationDelay var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleSetCancelDelayedOnExitvoid handleSetCancelDelayedOnExit(@Nonnull TriggerVolumeToolSetCancelDelayedOnExit var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleSetColorvoid handleSetColor(@Nonnull TriggerVolumeToolSetColor var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleSetConditionTimingvoid handleSetConditionTiming(@Nonnull TriggerVolumeToolSetConditionTiming var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleSetCooldownvoid handleSetCooldown(@Nonnull TriggerVolumeToolSetCooldown var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleSetKeepLoadedvoid handleSetKeepLoaded(@Nonnull TriggerVolumeToolSetKeepLoaded var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleSetNamevoid handleSetName(@Nonnull TriggerVolumeToolSetName var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleSetTargetTypesvoid handleSetTargetTypes(@Nonnull TriggerVolumeToolSetTargetTypes var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
private void handleUngroupvoid handleUngroup(@Nonnull TriggerVolumeToolUngroup var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5)
static boolean hasPermissionboolean hasPermission(@Nonnull PlayerRef var0)
if if(var0 != null && var0.length != 0)
if if(var5 != null)
if if(var4 != null)
if if(var4 != null)
if if(var7 != null)
if if(var1.active)
if if(var7 != null)
if if(var10 == null)
if if(var7 != null)
if if(var14 != null)
if if(var17 != null)
if if(var18 != null)
if if(var7 != null)
if if(var8 != null)
if if(var7 != null)
if if(var8 != null)
if if(var9 == null)
if if(var1.newPosition != null)
if if(var7 != null)
if if(var7 != null)
if if(var8 != null)
if if(var7 != null)
if if(var15 != null)
if if(var10 < 2)
if if(var7 != null)
if if(var8 != null)
if if(var12 != null)
if if(var7 != null)
if if(var8 != null)
if if(var12 != null)
if if(var13 != null)
if if(var7 != null)
if if(var7 != null)
if if(var13 != null)
if if(var7 != null)
if if(var8 != null)
if if(var9 != null)
if if(var15 != null)
if if(var7 != null)
if if(var8 != null)
if if(var7 != null)
if if(var8 != null)
if if(var7 != null)
if if(var8 != null)
if if(var7 != null)
if if(var8 != null)
if if(var7 != null)
if if(var1.active)
if if(var7 != null)
if if(var8 != null)
if if(var7 != null)
if if(var8 != null)
if if(var7 != null)
if if(var8 != null)
if if(var0 instanceof BoxShape var1)
static boolean isValidExtentboolean isValidExtent(double var0)
static void recordHistoryvoid recordHistory(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull PlayerRef var2, @Nonnull SelectionSnapshot<?> var3)
static void recordHistoryvoid recordHistory(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull PlayerRef var2, @Nonnull List<SelectionSnapshot<?>> var3)
abstract recordHistory recordHistory(var5, var3, var2, var10)
abstract recordHistory recordHistory(var5, var3, var2, var20)
abstract recordHistory recordHistory(var5, var3, var2, var9)
return switchreturn switch(var0)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.triggervolumes;

class="kw">import com.hypixel.hytale.builtin.buildertools.BuilderToolsPlugin;
class="kw">import com.hypixel.hytale.builtin.buildertools.snapshot.SelectionSnapshot;
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.manager.ConditionTiming;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.manager.CooldownMode;
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.builtin.triggervolumes.shape.BoxShape;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.shape.CylinderShape;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.shape.SphereShape;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.shape.TriggerVolumeShape;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.snapshot.TriggerVolumeGroupSnapshot;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.snapshot.TriggerVolumeSnapshot;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.protocol.packets.player.SelectionToolShowTriggerVolumes;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeConditionTiming;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeShapeType;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolCreate;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolCreateResponse;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolDelete;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolDuplicate;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolEquip;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolGroupCreate;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolGroupCreateResponse;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolGroupMove;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolMove;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolMultiMove;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolResize;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolRotate;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolSelect;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolSetActivationDelay;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolSetCancelDelayedOnExit;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolSetColor;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolSetConditionTiming;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolSetCooldown;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolSetKeepLoaded;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolSetName;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolSetTargetTypes;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolUngroup;
class="kw">import com.hypixel.hytale.protocol.packets.player.UpdateTriggerVolumeDisplay;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.io.handlers.IPacketHandler;
class="kw">import com.hypixel.hytale.server.core.io.handlers.IWorldPacketHandler;
class="kw">import com.hypixel.hytale.server.core.io.handlers.SubPacketHandler;
class="kw">import com.hypixel.hytale.server.core.permissions.HytalePermissions;
class="kw">import com.hypixel.hytale.server.core.permissions.PermissionsModule;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
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.ArrayList;
class="kw">import java.util.EnumSet;
class="kw">import java.util.HashMap;
class="kw">import java.util.LinkedHashSet;
class="kw">import java.util.List;
class="kw">import java.util.Locale;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import java.util.UUID;
class="kw">import java.util.Map.Entry;
class="kw">import java.util.concurrent.ThreadLocalRandom;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3f;

class="kw">public class TriggerVolumeToolPacketHandler class="kw">implements SubPacketHandler {
   @Nonnull
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
   class="kw">private class="kw">static class="kw">final int MaxBatchSize = 4096;
   class="kw">private class="kw">static class="kw">final double MAX_SHAPE_EXTENT = 1000000.0;
   class="kw">private class="kw">static class="kw">final int[] GROUP_COLORS = new int[]{10506448, 4239424, 13656208, 14708784, 12599424};
   @Nonnull
   class="kw">private class="kw">final IPacketHandler packetHandler;

   class="kw">public TriggerVolumeToolPacketHandler(@Nonnull IPacketHandler var1) {
      this.packetHandler = var1;
   }

   class="kw">private class="kw">static boolean hasPermission(@Nonnull PlayerRef var0) {
      class="kw">return PermissionsModule.get().hasPermission(var0.getUuid(), HytalePermissions.BUILDER_TOOLS_EDITOR);
   }

   @Nonnull
   class="kw">private class="kw">static String generateId(@Nonnull TriggerVolumeManager var0) {
      String var1;
      do {
         var1 = UUID.randomUUID().toString();
      } while (var0.hasVolume(var1));

      class="kw">return var1;
   }

   class="kw">private class="kw">static void ensureViewing(@Nonnull PlayerRef var0, @Nonnull TriggerVolumeManager var1) {
      var1.addViewer(var0.getUuid(), TriggerVolumeManager.ViewSource.TOOL);
   }

   @Nonnull
   class="kw">static List<String> sanitizeBatch(@Nullable String[] var0) {
      if (var0 != null && var0.length != 0) {
         LinkedHashSet var1 = new LinkedHashSet<>();

         for (String var5 : var0) {
            if (var5 != null) {
               var1.add(var5);
               if (var1.size() >= 4096) {
                  break;
               }
            }
         }

         class="kw">return List.copyOf(var1);
      } else {
         class="kw">return List.of();
      }
   }

   @Nullable
   class="kw">private class="kw">static BuilderToolsPlugin.BuilderState getBuilderState(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull PlayerRef var2) {
      Player var3 = var0.getComponent(var1, Player.getComponentType());
      class="kw">return var3 == null ? null : BuilderToolsPlugin.getState(var3, var2);
   }

   class="kw">private class="kw">static void recordHistory(
      @Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull PlayerRef var2, @Nonnull SelectionSnapshot<?> var3
   ) {
      BuilderToolsPlugin.BuilderState var4 = getBuilderState(var0, var1, var2);
      if (var4 != null) {
         var4.pushTriggerVolumeHistory(var3);
      }
   }

   class="kw">private class="kw">static void recordHistory(
      @Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull PlayerRef var2, @Nonnull List<SelectionSnapshot<?>> var3
   ) {
      if (!var3.isEmpty()) {
         BuilderToolsPlugin.BuilderState var4 = getBuilderState(var0, var1, var2);
         if (var4 != null) {
            var4.pushTriggerVolumeHistory(var3);
         }
      }
   }

   @Override
   class="kw">public void registerHandlers() {
      IWorldPacketHandler.registerHandler(this.packetHandler, 484, this::handleEquip, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 480, this::handleCreate, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 505, this::handleDuplicate, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 481, this::handleMove, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 482, this::handleResize, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 524, this::handleRotate, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 483, this::handleDelete, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 486, this::handleGroupCreate, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 488, this::handleUngroup, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 489, this::handleGroupMove, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 490, this::handleSelect, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 491, this::handleMultiMove, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 492, this::handleSetColor, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 526, this::handleSetName, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 493, this::handleSetTargetTypes, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 500, this::handleSetKeepLoaded, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 501, this::handleSetCooldown, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 502, this::handleSetActivationDelay, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 504, this::handleSetCancelDelayedOnExit, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 506, this::handleSetConditionTiming, TriggerVolumeToolPacketHandler::hasPermission);
      IWorldPacketHandler.registerHandler(this.packetHandler, 503, this::handleSelectionToolShowTriggerVolumes, TriggerVolumeToolPacketHandler::hasPermission);
   }

   class="kw">private void handleEquip(
      @Nonnull TriggerVolumeToolEquip var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         UUID var8 = var2.getUuid();
         if (var1.active) {
            var7.addViewer(var8, TriggerVolumeManager.ViewSource.TOOL);
            var7.sendVolumeDisplay(var2);
         } else {
            var7.removeViewer(var8, TriggerVolumeManager.ViewSource.TOOL);
            if (!var7.isViewing(var8)) {
               var2.getPacketHandler().write(new UpdateTriggerVolumeDisplay());
            }
         }
      }
   }

   class="kw">private void handleCreate(
      @Nonnull TriggerVolumeToolCreate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         String var8 = var4.getName().toLowerCase(Locale.ROOT);
         Vector3d var9 = new Vector3d(var1.position.x(), var1.position.y(), var1.position.z());
         TriggerVolumeShape var10 = buildShape(
            var1.shapeType,
            var1.param1.x(),
            var1.param1.y(),
            var1.param1.z(),
            var1.param2 != null ? var1.param2.x() : 0.0F,
            var1.param2 != null ? var1.param2.y() : 0.0F,
            var1.param2 != null ? var1.param2.z() : 0.0F,
            var1.param2 != null
         );
         if (var10 == null) {
            LOGGER.at(Level.WARNING).log("Invalid shape type from %s", var2.getUuid());
         } else {
            String var11 = var1.name;
            if (var11 == null || var11.isBlank()) {
               var11 = generateId(var7);
            }

            if (var7.hasVolume(var11)) {
               var11 = generateId(var7);
            }

            VolumeEntry var12 = new VolumeEntry(var11, var8, var9, var10, new ArrayList<>(), EnumSet.of(EntityTargetType.PLAYER), true);
            var7.register(var11, var12);
            var7.notifyViewersAdd(var12);
            var7.enqueueVolumeCreateEvent(var12, var3, var2.getUuid());
            recordHistory(var5, var3, var2, TriggerVolumeSnapshot.ofCreate(var12));
            TriggerVolumeToolCreateResponse var13 = new TriggerVolumeToolCreateResponse();
            var13.volumeId = var11;
            var13.volumeIds = new String[]{var11};
            var2.getPacketHandler().write(var13);
         }
      }
   }

   class="kw">private void handleDuplicate(
      @Nonnull TriggerVolumeToolDuplicate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         List var8 = sanitizeBatch(var1.volumeIds);
         if (!var8.isEmpty()) {
            ArrayList var9 = new ArrayList<>();
            ArrayList var10 = new ArrayList<>();
            String var11 = var4.getName().toLowerCase(Locale.ROOT);

            for (String var13 : var8) {
               VolumeEntry var14 = var7.getVolume(var13);
               if (var14 != null) {
                  String var15 = generateId(var7);
                  VolumeEntry var16 = duplicateEntry(var14, var15, var11);
                  var16.setName(var7.makeUniqueVolumeName(var14.getName(), null));
                  String var17 = var14.getGroupId();
                  if (var17 != null) {
                     GroupEntry var18 = var7.getGroup(var17);
                     if (var18 != null) {
                        var16.setGroupId(var17);
                        var18.addMember(var15);
                     }
                  }

                  var7.register(var15, var16);
                  var7.notifyViewersAdd(var16);
                  var7.enqueueVolumeCreateEvent(var16, var3, var2.getUuid());
                  var10.add(TriggerVolumeSnapshot.ofCreate(var16));
                  var9.add(var15);
               }
            }

            if (!var9.isEmpty()) {
               var7.markSpatialDirty();
               recordHistory(var5, var3, var2, var10);
               TriggerVolumeToolCreateResponse var19 = new TriggerVolumeToolCreateResponse();
               var19.volumeId = var9.getFirst();
               var19.volumeIds = var9.toArray(String[]::new);
               var2.getPacketHandler().write(var19);
            }
         }
      }
   }

   @Nonnull
   class="kw">private class="kw">static VolumeEntry duplicateEntry(@Nonnull VolumeEntry var0, @Nonnull String var1, @Nonnull String var2) {
      VolumeEntry var3 = new VolumeEntry(
         var1,
         var2,
         new Vector3d(var0.getPosition()),
         var0.getShape().copy(),
         TriggerEffect.deepCopyList(var0.getEffects()),
         EnumSet.copyOf(var0.getTargetTypes()),
         var0.isEnabled()
      );
      var3.getConditions().addAll(TriggerCondition.deepCopyList(var0.getConditions()));
      var3.getRejectionEffects().addAll(TriggerEffect.deepCopyList(var0.getRejectionEffects()));
      var3.getRules().addAll(TriggerRule.deepCopyList(var0.getRules()));
      var3.setRulesActive(var0.isRulesActive());
      var3.setConditionTiming(var0.getConditionTiming());
      var3.setRejectionDelayMode(var0.getRejectionDelayMode());
      var3.setProjectileSource(var0.getProjectileSource());
      var3.setEffectAssetRef(var0.getEffectAssetRef());
      var3.setKeepLoaded(var0.isKeepLoaded());
      var3.setActivationDelay(var0.getActivationDelay());
      var3.setCancelDelayedEffectsOnExit(var0.isCancelDelayedEffectsOnExit());
      var3.setCooldown(var0.getCooldown());
      var3.setCooldownMode(var0.getCooldownMode());
      var3.setColor(var0.getColor() != null ? new Vector3f(var0.getColor()) : null);
      if (!var0.getRawTags().isEmpty()) {
         var3.setTags(var0.getRawTags());
      }

      class="kw">return var3;
   }

   class="kw">private void handleMove(
      @Nonnull TriggerVolumeToolMove var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         VolumeEntry var8 = var7.getVolume(var1.volumeId);
         if (var8 != null) {
            recordHistory(var5, var3, var2, TriggerVolumeSnapshot.ofMutate(var8));
            Vector3d var9 = new Vector3d(var1.newPosition.x(), var1.newPosition.y(), var1.newPosition.z());
            Vector3d var10 = computeDisplayOffset(var8.getShape());
            var8.setPosition(new Vector3d(var9).sub(var10));
            var7.markSpatialDirty();
            var7.notifyViewersAdd(var8);
         }
      }
   }

   class="kw">private void handleResize(
      @Nonnull TriggerVolumeToolResize var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         VolumeEntry var8 = var7.getVolume(var1.volumeId);
         if (var8 != null) {
            TriggerVolumeShape var9 = buildShape(
               var1.shapeType,
               var1.param1.x(),
               var1.param1.y(),
               var1.param1.z(),
               var1.param2 != null ? var1.param2.x() : 0.0F,
               var1.param2 != null ? var1.param2.y() : 0.0F,
               var1.param2 != null ? var1.param2.z() : 0.0F,
               var1.param2 != null
            );
            if (var9 == null) {
               LOGGER.at(Level.WARNING).log("Invalid shape type from %s", var2.getUuid());
            } else {
               recordHistory(var5, var3, var2, TriggerVolumeSnapshot.ofMutate(var8));
               if (var9 class="kw">instanceof BoxShape var10 && var8.getShape() class="kw">instanceof BoxShape var11 && var11.getRotation() != null) {
                  var10.setRotation(new Vector3d(var11.getRotation()));
               }

               var8.setShape(var9);
               if (var1.newPosition != null) {
                  Vector3d var13 = new Vector3d(var1.newPosition.x(), var1.newPosition.y(), var1.newPosition.z());
                  Vector3d var14 = computeDisplayOffset(var9);
                  var8.setPosition(new Vector3d(var13).sub(var14));
               }

               var7.markSpatialDirty();
               var7.notifyViewersAdd(var8);
            }
         }
      }
   }

   class="kw">private void handleRotate(
      @Nonnull TriggerVolumeToolRotate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         VolumeEntry var8 = var7.getVolume(var1.volumeId);
         if (var8 != null && var8.getShape() class="kw">instanceof BoxShape var9) {
            recordHistory(var5, var3, var2, TriggerVolumeSnapshot.ofMutate(var8));
            Vector3d var12 = new Vector3d(var1.rotation.x(), var1.rotation.y(), var1.rotation.z());
            BoxShape var11 = var9.copy();
            var11.setRotation(var12.lengthSquared() > 0.0 ? var12 : null);
            var8.setShape(var11);
            var7.notifyViewersAdd(var8);
         }
      }
   }

   class="kw">private void handleDelete(
      @Nonnull TriggerVolumeToolDelete var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         VolumeEntry var8 = var7.getVolume(var1.volumeId);
         if (var8 != null) {
            recordHistory(var5, var3, var2, TriggerVolumeSnapshot.ofDelete(var8));
            var7.unregister(var1.volumeId);
            var7.notifyViewersRemove(var1.volumeId);
         }
      }
   }

   class="kw">private void handleGroupCreate(
      @Nonnull TriggerVolumeToolGroupCreate var1,
      @Nonnull PlayerRef var2,
      @Nonnull Ref<EntityStore> var3,
      @Nonnull World var4,
      @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         List var8 = sanitizeBatch(var1.volumeIds);
         if (var8.size() >= 2) {
            Vector3d var9 = new Vector3d();
            int var10 = 0;
            int var11 = 0;
            ArrayList var12 = new ArrayList<>();

            for (String var14 : var8) {
               VolumeEntry var15 = var7.getVolume(var14);
               if (var15 != null) {
                  if (var15.getGroupId() != null) {
                     var11++;
                  } else {
                     var12.add(var15);
                     var9.add(var15.getPosition());
                     var10++;
                  }
               }
            }

            if (var10 < 2) {
               TriggerVolumeToolGroupCreateResponse var21 = new TriggerVolumeToolGroupCreateResponse();
               var21.groupId = "";
               var21.success = false;
               var21.skippedCount = var11;
               var2.getPacketHandler().write(var21);
            } else {
               List var20 = new ArrayList<>();

               for (VolumeEntry var24 : var12) {
                  var20.add(TriggerVolumeSnapshot.ofMutate(var24));
               }

               var9.div(var10);
               EnumSet var23 = EnumSet.noneOf(EntityTargetType.class);

               for (VolumeEntry var16 : var12) {
                  var23.addAll(var16.getTargetTypes());
               }

               if (var23.isEmpty()) {
                  var23.add(EntityTargetType.PLAYER);
               }

               String var26 = generateGroupId(var7);
               int var27 = GROUP_COLORS[ThreadLocalRandom.current().nextInt(GROUP_COLORS.length)];
               GroupEntry var17 = new GroupEntry(var26, var4.getName().toLowerCase(Locale.ROOT), var9, new ArrayList<>(), var23, true, var27);
               var7.registerGroup(var26, var17);

               for (VolumeEntry var19 : var12) {
                  var19.setGroupId(var26);
                  var17.addMember(var19.getId());
                  var7.notifyViewersAdd(var19);
               }

               recordHistory(var5, var3, var2, var20);
               TriggerVolumeToolGroupCreateResponse var28 = new TriggerVolumeToolGroupCreateResponse();
               var28.groupId = var26;
               var28.color = var27;
               var28.success = true;
               var28.skippedCount = var11;
               var2.getPacketHandler().write(var28);
            }
         }
      }
   }

   class="kw">private void handleUngroup(
      @Nonnull TriggerVolumeToolUngroup var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         GroupEntry var8 = var7.getGroup(var1.groupId);
         if (var8 != null) {
            List var9 = new ArrayList<>();
            var9.add(TriggerVolumeGroupSnapshot.ofDelete(var8));

            for (String var11 : new ArrayList<>(var8.getMemberVolumeIds())) {
               VolumeEntry var12 = var7.getVolume(var11);
               if (var12 != null) {
                  var9.add(TriggerVolumeSnapshot.ofMutate(var12));
                  var12.clearGroupActivationState(var1.groupId);
                  var12.setGroupId(null);
                  var7.notifyViewersAdd(var12);
               }
            }

            recordHistory(var5, var3, var2, var9);
            var7.unregisterGroup(var1.groupId);
         }
      }
   }

   class="kw">private void handleGroupMove(
      @Nonnull TriggerVolumeToolGroupMove var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         GroupEntry var8 = var7.getGroup(var1.groupId);
         if (var8 != null) {
            List var9 = new ArrayList<>();

            for (String var11 : var8.getMemberVolumeIds()) {
               VolumeEntry var12 = var7.getVolume(var11);
               if (var12 != null) {
                  var9.add(TriggerVolumeSnapshot.ofMutate(var12));
               }
            }

            Vector3d var14 = new Vector3d(var1.moveDelta.x(), var1.moveDelta.y(), var1.moveDelta.z());
            var8.setOrigin(new Vector3d(var8.getOrigin()).add(var14));

            for (String var16 : var8.getMemberVolumeIds()) {
               VolumeEntry var13 = var7.getVolume(var16);
               if (var13 != null) {
                  var13.setPosition(new Vector3d(var13.getPosition()).add(var14));
                  var7.notifyViewersAdd(var13);
               }
            }

            var7.markSpatialDirty();
            recordHistory(var5, var3, var2, var9);
         }
      }
   }

   class="kw">private void handleSelect(
      @Nonnull TriggerVolumeToolSelect var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         var7.setPlayerSelection(var2.getUuid(), var1.volumeId);
      }
   }

   class="kw">private void handleMultiMove(
      @Nonnull TriggerVolumeToolMultiMove var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         List var8 = sanitizeBatch(var1.volumeIds);
         if (!var8.isEmpty()) {
            List var9 = new ArrayList<>();
            Vector3d var10 = new Vector3d(var1.moveDelta.x(), var1.moveDelta.y(), var1.moveDelta.z());

            for (String var12 : var8) {
               VolumeEntry var13 = var7.getVolume(var12);
               if (var13 != null) {
                  var9.add(TriggerVolumeSnapshot.ofMutate(var13));
                  var13.setPosition(new Vector3d(var13.getPosition()).add(var10));
                  var7.notifyViewersAdd(var13);
               }
            }

            var7.markSpatialDirty();
            recordHistory(var5, var3, var2, var9);
         }
      }
   }

   class="kw">private void handleSetColor(
      @Nonnull TriggerVolumeToolSetColor var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         VolumeEntry var8 = var7.getVolume(var1.volumeId);
         if (var8 != null) {
            recordHistory(var5, var3, var2, TriggerVolumeSnapshot.ofMutate(var8));
            var8.setColor(new Vector3f(var1.color.x(), var1.color.y(), var1.color.z()));
            if (var8.getGroupId() != null) {
               GroupEntry var9 = var7.getGroup(var8.getGroupId());
               if (var9 != null) {
                  int var10 = (int)(var1.color.x() * 255.0F) & 0xFF;
                  int var11 = (int)(var1.color.y() * 255.0F) & 0xFF;
                  int var12 = (int)(var1.color.z() * 255.0F) & 0xFF;
                  var9.setColor(var10 << 16 | var11 << 8 | var12);

                  for (String var14 : var9.getMemberVolumeIds()) {
                     VolumeEntry var15 = var7.getVolume(var14);
                     if (var15 != null) {
                        var7.notifyViewersAdd(var15);
                     }
                  }
               }
            } else {
               var7.notifyViewersAdd(var8);
            }
         }
      }
   }

   class="kw">private void handleSetName(
      @Nonnull TriggerVolumeToolSetName var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         VolumeEntry var8 = var7.getVolume(var1.volumeId);
         if (var8 != null) {
            recordHistory(var5, var3, var2, TriggerVolumeSnapshot.ofMutate(var8));
            var8.setName(var7.makeUniqueVolumeName(var1.name, var1.volumeId));
            var7.notifyViewersAdd(var8);
         }
      }
   }

   class="kw">private void handleSetTargetTypes(
      @Nonnull TriggerVolumeToolSetTargetTypes var1,
      @Nonnull PlayerRef var2,
      @Nonnull Ref<EntityStore> var3,
      @Nonnull World var4,
      @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         VolumeEntry var8 = var7.getVolume(var1.volumeId);
         if (var8 != null) {
            recordHistory(var5, var3, var2, TriggerVolumeSnapshot.ofMutate(var8));
            Set var9 = var8.getTargetTypes();
            var9.clear();
            if ((var1.targetTypes & 1) != 0) {
               var9.add(EntityTargetType.PLAYER);
            }

            if ((var1.targetTypes & 2) != 0) {
               var9.add(EntityTargetType.NPC);
            }

            if ((var1.targetTypes & 4) != 0) {
               var9.add(EntityTargetType.ITEM_DROP);
            }

            if ((var1.targetTypes & 8) != 0) {
               var9.add(EntityTargetType.PROJECTILE);
            }

            if (var9.isEmpty()) {
               var9.add(EntityTargetType.PLAYER);
            }

            var7.notifyViewersAdd(var8);
         }
      }
   }

   class="kw">private void handleSetKeepLoaded(
      @Nonnull TriggerVolumeToolSetKeepLoaded var1,
      @Nonnull PlayerRef var2,
      @Nonnull Ref<EntityStore> var3,
      @Nonnull World var4,
      @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         VolumeEntry var8 = var7.getVolume(var1.volumeId);
         if (var8 != null) {
            recordHistory(var5, var3, var2, TriggerVolumeSnapshot.ofMutate(var8));
            var8.setKeepLoaded(var1.keepLoaded);
            var7.notifyViewersAdd(var8);
         }
      }
   }

   class="kw">private void handleSetCooldown(
      @Nonnull TriggerVolumeToolSetCooldown var1,
      @Nonnull PlayerRef var2,
      @Nonnull Ref<EntityStore> var3,
      @Nonnull World var4,
      @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         VolumeEntry var8 = var7.getVolume(var1.volumeId);
         if (var8 != null) {
            recordHistory(var5, var3, var2, TriggerVolumeSnapshot.ofMutate(var8));
            var8.setCooldown(Math.max(0.0F, var1.cooldown));
            int var9 = Byte.toUnsignedInt(var1.cooldownMode);
            CooldownMode var10 = var9 < CooldownMode.values().length ? CooldownMode.values()[var9] : CooldownMode.PER_ENTITY;
            var8.setCooldownMode(var10);
            var7.notifyViewersAdd(var8);
         }
      }
   }

   class="kw">private void handleSelectionToolShowTriggerVolumes(
      @Nonnull SelectionToolShowTriggerVolumes var1,
      @Nonnull PlayerRef var2,
      @Nonnull Ref<EntityStore> var3,
      @Nonnull World var4,
      @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         UUID var8 = var2.getUuid();
         if (var1.active) {
            var7.addViewer(var8, TriggerVolumeManager.ViewSource.SELECTION_TOOL);
            var7.sendVolumeDisplay(var2);
         } else {
            var7.removeViewer(var8, TriggerVolumeManager.ViewSource.SELECTION_TOOL);
            if (!var7.isViewing(var8)) {
               var2.getPacketHandler().write(new UpdateTriggerVolumeDisplay());
            }
         }
      }
   }

   class="kw">private void handleSetCancelDelayedOnExit(
      @Nonnull TriggerVolumeToolSetCancelDelayedOnExit var1,
      @Nonnull PlayerRef var2,
      @Nonnull Ref<EntityStore> var3,
      @Nonnull World var4,
      @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         VolumeEntry var8 = var7.getVolume(var1.volumeId);
         if (var8 != null) {
            recordHistory(var5, var3, var2, TriggerVolumeSnapshot.ofMutate(var8));
            var8.setCancelDelayedEffectsOnExit(var1.cancelDelayedOnExit);
            var7.notifyViewersAdd(var8);
         }
      }
   }

   class="kw">private void handleSetActivationDelay(
      @Nonnull TriggerVolumeToolSetActivationDelay var1,
      @Nonnull PlayerRef var2,
      @Nonnull Ref<EntityStore> var3,
      @Nonnull World var4,
      @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         VolumeEntry var8 = var7.getVolume(var1.volumeId);
         if (var8 != null) {
            recordHistory(var5, var3, var2, TriggerVolumeSnapshot.ofMutate(var8));
            var8.setActivationDelay(Math.max(0.0F, var1.activationDelay));
            var7.notifyViewersAdd(var8);
         }
      }
   }

   class="kw">private void handleSetConditionTiming(
      @Nonnull TriggerVolumeToolSetConditionTiming var1,
      @Nonnull PlayerRef var2,
      @Nonnull Ref<EntityStore> var3,
      @Nonnull World var4,
      @Nonnull Store<EntityStore> var5
   ) {
      TriggerVolumesPlugin var6 = TriggerVolumesPlugin.get();
      TriggerVolumeManager var7 = var5.getResource(var6.getManagerResourceType());
      if (var7 != null) {
         ensureViewing(var2, var7);
         VolumeEntry var8 = var7.getVolume(var1.volumeId);
         if (var8 != null) {
            recordHistory(var5, var3, var2, TriggerVolumeSnapshot.ofMutate(var8));
            var8.setConditionTiming(
               var1.conditionTiming == TriggerVolumeConditionTiming.BeforeVolumeDelay
                  ? ConditionTiming.BEFORE_VOLUME_DELAY
                  : ConditionTiming.AFTER_VOLUME_DELAY
            );
            var7.notifyViewersAdd(var8);
         }
      }
   }

   @Nonnull
   class="kw">private class="kw">static String generateGroupId(@Nonnull TriggerVolumeManager var0) {
      String var1;
      do {
         var1 = UUID.randomUUID().toString();
      } while (var0.hasGroup(var1));

      class="kw">return var1;
   }

   @Nonnull
   class="kw">private class="kw">static Vector3d computeDisplayOffset(@Nonnull TriggerVolumeShape var0) {
      if (var0 class="kw">instanceof BoxShape var1) {
         class="kw">return new Vector3d(var1.getMin()).add(var1.getMax()).mul(0.5);
      } else if (var0 class="kw">instanceof SphereShape var2) {
         class="kw">return new Vector3d(var2.getCenter());
      } else {
         class="kw">return var0 class="kw">instanceof CylinderShape var3
            ? new Vector3d(var3.getCenter().x(), var3.getCenter().y() + var3.getHeight() * 0.5, var3.getCenter().z())
            : new Vector3d();
      }
   }

   @Nonnull
   class="kw">private class="kw">static Map<String, String> copyTags(@Nonnull Map<String, String> var0) {
      if (var0.isEmpty()) {
         class="kw">return Map.of();
      }

      HashMap var1 = new HashMap<>();

      for (Entry var3 : var0.entrySet()) {
         var1.put(var3.getKey(), var3.getValue());
      }

      class="kw">return var1;
   }

   class="kw">private class="kw">static boolean isValidExtent(double var0) {
      class="kw">return var0 > 0.0 && var0 <= 1000000.0;
   }

   @Nullable
   class="kw">static TriggerVolumeShape buildShape(
      @Nonnull TriggerVolumeShapeType var0, float var1, float var2, float var3, float var4, float var5, float var6, boolean var7
   ) {
      class="kw">return class="kw">switch (var0) {
         case Box -> !var7
            ? null
            : (
               isValidExtent(var4 - var1) && isValidExtent(var5 - var2) && isValidExtent(var6 - var3)
                  ? new BoxShape(new Vector3d(var1, var2, var3), new Vector3d(var4, var5, var6))
                  : null
            );
         case Sphere -> isValidExtent(var1) ? new SphereShape(new Vector3d(0.0, 0.0, 0.0), var1) : null;
         case Cylinder -> isValidExtent(var1) && isValidExtent(var2) ? new CylinderShape(new Vector3d(0.0, 0.0, 0.0), var1, var2) : null;
      };
   }
}