TriggerVolumeInspectorPage class

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

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

extends: InteractiveCustomUIPage<TriggerVolumeInspectorPage.PageData>

Поля (748)

МодификаторыТипИмя
public static final BuilderCodec<TriggerVolumeInspectorPage.PageData> CODEC
final HytaleLogger LOGGER
Select, ChangeWorld, FilterChanged, ChangeTab, UpdateVolumeField, CommitName, UpdateTag, RemoveTag, DeleteSelection, Save, Discard, Teleport, ToggleRenameSelected, ConfirmRenameSelected, CancelRenameSelected, SelectEffect, AddEffect, RemoveEffect, DuplicateEffect, MoveEffectUp, MoveEffectDown, UpdateAddTarget, UpdateAddEffectType, UpdateAddEventType, UpdateAddEntry, ToggleEventCategory, ToggleRulesCategory, ToggleRejectionSignal, UpdateParameter, CommitEntry, TogglePrefabPreview, OpenPresetSave, PresetNameChanged, ConfirmSavePreset, CancelPresetSave, OpenPresetLoad, LoadPreset, CancelPresetLoad, OpenAssetPicker, AssetPickerSearch, AssetPickerSelect, ConfirmAssetPicker, PreviewSound, CancelAssetPicker, OpenPackBrowser, ConfirmPackBrowser, CancelPackBrowser, OpenCreatePack, CreatePack, CancelCreatePack, PackSearch, PackSelect
CONDITION, EFFECT, REJECTION_EFFECT, RULE
GROUP, VOLUME
public TriggerVolumeInspectorPage.Action action
public String addEntry
public String addEventType
public String addTargetKind
public String assetPickerQuery
public String assetPickerSelection
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
break
public String effectIndex
public String effectListKind
public String effectType
public String eventCategoryScope
public String eventEntry
public String eventType
public String filterText
public String id
public Boolean includeVolumeSettings
public String isGroup
private final String labelKey
public final AssetPackSaveBrowserEventData packBrowserData
public Boolean paramBool
public String paramKey
public Double paramNumericValue
public String paramValue
public String presetId
public String presetName
public String removeTagKey
return
return
return
return
return
return
return
return
return
return
return
return
return
return
return
public String tab
public String tagKey
public String tagValues
private final String tooltipKey
ArrayList var0
ArrayList var0
ArrayList var0
TriggerVolumeInspectorDrafts.VolumeDraft var1
TriggerVolumeInspectorDrafts.GroupDraft var1
TriggerVolumeManager var1
I18nModule var1
String var1
var1
StringBuilder var1
TriggerEventType var1
var1
var1
List var1
Object var1
TriggerVolumeInspectorDrafts.VolumeDraft var1
TriggerVolumesPlugin.PastePrefabPreviewState var1
TriggerVolumesPlugin.PastePrefabPreviewState var1
TriggerVolumesPlugin.PastePrefabPreviewState var1
UICommandBuilder var1
UICommandBuilder var1
UICommandBuilder var1
UICommandBuilder var1
UICommandBuilder var1
Object var1
UICommandBuilder var1
TriggerVolumeManager var1
TriggerVolumeManager var1
TriggerVolumeToolSelection var1
UICommandBuilder var1
UICommandBuilder var1
TriggerVolumeManager var1
TriggerVolumeManager var1
TriggerVolumeManager var1
TriggerVolumeInspectorDrafts.GroupDraft var1
int var1
int var1
int var1
int var1
StringBuilder var1
String var1
String var1
String var1
BsonArray var1
BsonDocument var1
List var10
int var10
int var10
var10
GroupEntry var10
String var10
int[] var10
Message var10
var10
String var10
IntList var10
int var10
RemoveEntitiesEffect.Mode var10
TriggerRule var10
boolean var10
String var10
Enum var10
String var10
TriggerCondition var10
TriggerEventType var10
VolumeEntry var10
BsonDocument var10
String var10
Anchor var11
int var11
String var11
ObjectArrayList var11
TriggerEventType var11
String var11
String var11
ObjectArrayList var11
WorldChunk var11
int var11
Object var11
var11
var11
var11
var11
var11
String var11
Entry var11
Entry var12
String var12
int var12
int[] var12
BuilderCodec var12
String var12
BlockChunk var12
TriggerVolumeInspectorDrafts.VolumeDraft var12
BsonDocument var12
List var12
var12
var12
String var12
TriggerVolumeInspectorDrafts.VolumeDraft var13
String var13
int var13
Message var13
String var13
String var13
String var13
List var13
double var13
var13
String var13
int var13
TriggerEffect var13
ArrayList var13
int var13
ArrayList var14
String var14
boolean var14
String var14
BuilderField var14
List var14
BuilderField var14
String var14
TriggerEventType var14
Environment var14
double var14
boolean var14
int var15
Message var15
String var15
BuilderField var15
int var15
Color var15
BsonDocument var15
int var16
var16
var16
var16
boolean var16
BuilderField var16
BsonDocument var16
BuilderCodec var16
BsonDocument var16
Codec var17
String var17
BsonDocument var17
List var18
String var18
String var19
String var19
ObjectArrayList var2
String var2
Map var2
var2
var2
TriggerVolumeInspectorDrafts.GroupDraft var2
TriggerVolumeInspectorDrafts.VolumeDraft var2
TriggerVolumeManager var2
boolean var2
TriggerVolumeInspectorDrafts.GroupDraft var2
TriggerVolumeManager var2
TriggerVolumeManager var2
String var2
boolean var2
ObjectArrayList var2
IntOpenHashSet var2
ObjectArrayList var2
String var2
String var2
TriggerVolumeInspectorPage.EventCategoryScope var2
String[] var2
char var2
var2
TriggerVolumeInspectorPage.EffectListKind var2
int var2
var2
var2
TriggerVolumeInspectorPage.EffectListKind var2
int var2
var2
List var2
int var2
TriggerVolumeInspectorPage.EffectListKind var2
TriggerEventType var2
Object var2
int var2
Ref var2
String var2
Vector3d var2
TriggerVolumeInspectorDrafts.GroupDraft var2
String var2
String var2
PastePrefabEffect var2
UICommandBuilder var2
String var2
UIEventBuilder var2
AssetStore var2
Object var2
UICommandBuilder var2
Object var2
Object var2
TriggerVolumeManager var2
TriggerVolumesPlugin.PastePrefabPreviewState var2
TriggerVolumesPlugin.PastePrefabPreviewState var2
TriggerVolumeManager var2
BsonArray var2
UIEventBuilder var2
UIEventBuilder var2
VolumeEntry var2
GroupEntry var2
TriggerVolumeInspectorDrafts.VolumeDraft var2
TriggerVolumeInspectorDrafts.VolumeDraft var2
TriggerVolumeInspectorDrafts.GroupDraft var2
TriggerVolumeInspectorDrafts.VolumeDraft var2
ArrayList var2
int var2
int var2
String var2
var2
var2
String var2
String var2
BsonDocument var2
BsonDocument var2
BsonDocument var2
double var20
var20
TriggerVolumeInspectorDrafts.GroupDraft var21
TriggerRule var21
String var21
String var22
TriggerVolumeInspectorDrafts.VolumeDraft var23
String var23
String var24
BsonDocument var24
String var24
String var25
boolean var25
String var26
BuilderCodec var27
String var27
BuilderCodec var28
BsonDocument var29
TriggerVolumeManager var3
int var3
TriggerVolumeManager var3
Message var3
TriggerVolumeInspectorDrafts.GroupDraft var3
int var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
var3
Map var3
TriggerVolumeInspectorDrafts.GroupDraft var3
TriggerVolumeInspectorDrafts.VolumeDraft var3
VolumeEntry var3
GroupEntry var3
boolean var3
var3
boolean var3
var3
UICommandBuilder var3
TriggerVolumeManager var3
List var3
Object var3
String var3
String var3
String var3
var3
Message var3
var3
Object var3
var3
String var3
StringBuilder var3
int var3
TriggerCondition var3
TriggerEventType var3
List var3
TriggerVolumeInspectorPage.EventCategoryScope var3
String var3
TriggerRule var3
Vector3d var3
Vector3d var3
EditorBlocksChange var3
Store var3
String var3
Vector3d var3
TriggerVolumeManager var3
TriggerVolumeInspectorPage.EffectListKind var3
var3
Vector3d var3
AssetPack var3
AssetStore var3
TriggerEffectAsset var3
Object var3
UIEventBuilder var3
Object var3
BuilderCodec var3
int var3
TriggerVolumeManager var3
TriggerVolumeInspectorDrafts.GroupDraft var3
GroupEntry var3
BuilderCodec var3
BuilderCodec var3
Collection var3
GroupEntry var3
TriggerVolumeInspectorDrafts.GroupDraft var3
TriggerVolumeInspectorDrafts.VolumeDraft var3
String var3
boolean var3
int var3
int var3
String var3
String var3
char var3
ExtraInfo var3
ExtraInfo var3
ExtraInfo var3
BsonValue var3
String var3
BsonDocument var30
boolean var31
Map var32
double var33
var33
boolean var36
TriggerVolumeInspectorDrafts.VolumeDraft var38
TagCondition.Source var38
String var39
AssetPackSaveBrowser.ActionResult var4
LinkedHashMap var4
int var4
TriggerVolumeInspectorDrafts.GroupDraft var4
String var4
int var4
TriggerVolumeInspectorDrafts.VolumeDraft var4
String var4
String var4
UIEventBuilder var4
VolumeEntry var4
VolumeEntry var4
GroupEntry var4
VolumeEntry var4
ObjectArrayList var4
int var4
var4
var4
var4
String var4
Message var4
var4
var4
var4
var4
var4
var4
var4
IntOpenHashSet var4
TriggerVolumeInspectorPage.EventCategoryKey var4
TriggerVolumeInspectorPage.EventCategoryKey var4
TriggerVolumeInspectorPage.EventCategoryKey var4
int var4
var4
var4
var4
var4
var4
var4
var4
var4
String var4
String var4
String var4
char var4
boolean var4
String var4
TriggerEffect var4
int var4
int var4
TriggerEffect var4
BuilderCodec var4
BuilderCodec var4
ShowTriggerVolumePastePrefabPreview var4
World var4
PrefabListAsset var4
Vector3d var4
VolumeEntry var4
TriggerVolumeManager var4
Vector3d var4
AssetStore var4
int var4
TriggerEffectAsset.VolumeSettings var4
String var4
BuilderCodec var4
Ref var4
GroupEntry var4
String[] var4
BuilderCodec var4
List var4
BsonDocument var4
var4
String var4
String var4
boolean var4
String var4
String var4
BuilderField var42
String var5
TriggerVolumeInspectorDrafts.VolumeDraft var5
Message var5
String var5
String var5
String var5
String var5
TransformComponent var5
GroupEntry var5
String var5
TriggerVolumeInspectorDrafts.GroupDraft var5
Message var5
int var5
TriggerEffect var5
String var5
String var5
String var5
Message var5
BuilderCodec var5
BuilderCodec var5
TriggerRule var5
TriggerRule var5
Path var5
Vector3d var5
Vector3d var5
yield var5
GroupEntry var5
List var5
var5
var5
Vector3d var5
List var5
TriggerEffectAsset.VolumeSettings var5
TriggerVolumeInspectorDrafts.VolumeDraft var5
String var5
UICommandBuilder var5
TransformComponent var5
TriggerVolumeInspectorDrafts.GroupDraft var5
List var5
List var5
BuilderField var5
LinkedHashSet var5
List var5
var5
var5
var5
List var5
I18nModule var5
ArrayList var6
String var6
String var6
String var6
Vector3d var6
Vector3d var6
String var6
IntArrayList var6
String var6
int var6
var6
var6
var6
var6
var6
var6
var6
var6
String var6
ArrayList var6
String var6
String var6
TriggerEffect var6
BuilderCodec var6
BuilderCodec var6
BlockSelection var6
var6
int var6
GroupEntry var6
BuilderField var6
TriggerEffectAsset var6
UICommandBuilder var6
UICommandBuilder var6
UICommandBuilder var6
Vector3d var6
TriggerVolumeInspectorDrafts.VolumeDraft var6
BuilderField var6
BuilderField var6
BsonValue var6
Object2IntMap var6
int var6
String var6
String var6
String var6
String var6
String var7
String var7
String var7
String var7
String var7
Vector3d var7
VolumeEntry var7
GroupEntry var7
List var7
List var7
int var7
String var7
BuilderCodec var7
ObjectArrayList var7
String var7
double var7
var7
var7
String var7
String var7
String var7
BuilderCodec var7
BuilderCodec var7
int var7
TriggerVolumeInspectorDrafts.GroupDraft var7
Codec var7
Path var7
String var7
UIEventBuilder var7
UIEventBuilder var7
BsonDocument var7
BsonDocument var7
int var7
BuilderField var7
BuilderField var7
BuilderField var7
String var8
TriggerVolumeInspectorDrafts.VolumeDraft var8
int var8
int var8
Vector3d var8
GroupEntry var8
ObjectArrayList var8
boolean var8
BuilderCodec var8
BsonDocument var8
String var8
List var8
ObjectArrayList var8
String var8
String var8
String var8
TriggerRule var8
int var8
ExtraInfo var8
UICommandBuilder var8
Codec var8
int var8
BsonValue var8
BsonValue var8
BsonValue var8
String var9
String var9
int var9
ObjectArrayList var9
String var9
String var9
int var9
TriggerEventType var9
BsonDocument var9
ModifyRulesEffect.Operation var9
String var9
BuilderField var9
String var9
String var9
var9
var9
ObjectArrayList var9
ObjectArrayList var9
BuilderCodec var9
int var9
TriggerVolumesPlugin.PastePrefabPreviewState var9
long var9
BsonValue var9
int var9
var9
BsonDocument var9
BsonDocument var9
BsonDocument var9
public Double vecX
public Double vecY
public Double vecZ
public String worldName

Методы (517)

МодификаторыВозвратСигнатура
Action Action()
abstract return new BsonArrayreturn new BsonArray()
abstract return new BsonBooleanreturn new BsonBoolean(false)
abstract return new BsonDocumentreturn new BsonDocument()
abstract return new BsonDoublereturn new BsonDouble(0.0)
abstract return new BsonInt32return new BsonInt32(0)
abstract return new BsonInt64return new BsonInt64(0L)
abstract return new BsonStringreturn new BsonString(var1)
abstract return new BsonStringreturn new BsonString("")
EffectListKind EffectListKind()
private record EventCategoryKeyrecord EventCategoryKey(@Nonnull TriggerEventType eventType, int entry)
EventCategoryScope EventCategoryScope()
InspectorTab InspectorTab(@Nonnull String nullxx, @Nonnull String nullxxx)
public PageDatapublic PageData()
private record RowEntryrecord RowEntry(@Nonnull String id, boolean isGroup, int listIndex)
abstract TAGS TAGS("server.customUI.triggerVolumeInspector.tab.tags", "server.customUI.triggerVolumeInspector.tab.tags.tooltip")
private int addAssetPickerRowint addAssetPickerRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, @Nonnull String var6)
private int addBoxDimensionsRowint addBoxDimensionsRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull Vector3d var4)
private int addCylinderDimensionsRowint addCylinderDimensionsRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull Vector3d var4)
private int addEffectCheckboxRowint addEffectCheckboxRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, boolean var6)
private int addEffectDropdownRowint addEffectDropdownRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, @Nonnull List<String> var6, @Nonnull String var7)
private int addEffectFieldByKeyint addEffectFieldByKey(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nullable BuilderCodec<TriggerEffect> var5, @Nonnull BsonDocument var6, @Nonnull String var7)
private int addEffectFieldRowint addEffectFieldRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, @Nonnull Codec<?> var6, @Nullable BsonValue var7)
private int addEffectNumberRowint addEffectNumberRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, @Nonnull String var6, int var7)
private int addEffectNumberRowint addEffectNumberRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, @Nonnull Object var6, @Nullable Message var7, @Nonnull String var8, int var9)
private int addEffectTextRowint addEffectTextRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, @Nonnull String var6)
private int addEffectVec3Rowint addEffectVec3Row(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, double var6, double var8, double var10)
private int addPastePrefabPreviewButtonRowint addPastePrefabPreviewButtonRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3)
private int addReadonlyTextRowint addReadonlyTextRow(@Nonnull UICommandBuilder var1, int var2, @Nonnull String var3, @Nonnull String var4)
private int addRotationXyzRowint addRotationXyzRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, @Nonnull String var6, @Nonnull String var7)
private int addRuleFieldDropdownRowint addRuleFieldDropdownRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nullable BuilderCodec<TriggerRule> var5, @Nullable String var6)
private int addRuleTypeDropdownRowint addRuleTypeDropdownRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, boolean var5)
private int addSphereDimensionsRowint addSphereDimensionsRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull Vector3d var4)
private int addVolumeCheckboxRowint addVolumeCheckboxRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, boolean var5)
private int addVolumeColorRowint addVolumeColorRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5)
private int addVolumeDimensionsRowint addVolumeDimensionsRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull TriggerVolumeShapeType var4, @Nonnull Vector3d var5)
private int addVolumeDropdownRowint addVolumeDropdownRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull List<DropdownEntryInfo> var5, @Nonnull String var6)
private int addVolumeNumberRowint addVolumeNumberRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, int var6)
private int addVolumeSectionLabelint addVolumeSectionLabel(@Nonnull UICommandBuilder var1, int var2, @Nonnull String var3)
private int addVolumeTextRowint addVolumeTextRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5)
private int addVolumeVec3Rowint addVolumeVec3Row(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull Vector3d var5)
private int addVolumeVec3Rowint addVolumeVec3Row(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull Vector3d var5, boolean var6)
private int appendBaseFieldHeaderint appendBaseFieldHeader(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, boolean var4, @Nonnull String var5, @Nonnull String var6, @Nonnull String var7, @Nonnull String var8)
private void appendChipvoid appendChip(@Nonnull UICommandBuilder var1, @Nonnull String var2, int var3, @Nonnull String var4, int var5)
private void appendEffectListvoid appendEffectList(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3)
private int appendEventCategoryGroupsint appendEventCategoryGroups(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, int var4, @Nonnull TriggerVolumeInspectorPage.EventCategoryScope var5, @Nullable TriggerVolumeInspectorDrafts.GroupDraft var6)
private int appendEventCategoryHeaderint appendEventCategoryHeader(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, int var4, @Nonnull TriggerVolumeInspectorPage.EventCategoryScope var5, @Nonnull TriggerEventType var6, int var7, int var8)
private int appendEventCategorySpacerint appendEventCategorySpacer(@Nonnull UICommandBuilder var1, @Nonnull String var2, int var3)
private int appendEventSectionint appendEventSection(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, int var4, @Nonnull TriggerVolumeInspectorPage.EventCategoryScope var5, @Nullable TriggerVolumeInspectorDrafts.GroupDraft var6, @Nonnull TriggerEventType var7, int var8, @Nonnull TriggerVolumeInspectorPage.EffectListKind var9)
private int appendGroupRowint appendGroupRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, int var6)
private int appendInheritedGroupSectionsint appendInheritedGroupSections(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, int var4)
private void appendListMessagevoid appendListMessage(@Nonnull UICommandBuilder var1, @Nonnull Message var2)
static void appendOptionLangKeysvoid appendOptionLangKeys(@Nonnull List<String> var0, @Nonnull String var1, @Nonnull String var2, @Nonnull String var3, @Nonnull String var4, @Nonnull String var5)
abstract appendOptionLangKeys appendOptionLangKeys(var6, "server.customUI.triggerVolumeEffectEditor.field." + var0 + "." + var1 + ".option.", var2, var4, var5, var3)
abstract appendOptionLangKeys appendOptionLangKeys(var6, "server.customUI.triggerVolumeEffectEditor.field.common." + var1 + ".option.", var2, var4, var5, var3)
private int appendRejectionSignalSectionint appendRejectionSignalSection(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull BuilderCodec<TriggerRule> var5, @Nonnull BsonDocument var6, @Nonnull AbstractDenyRule var7)
private void appendRotationAxisvoid appendRotationAxis(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, @Nonnull String var4, @Nonnull String var5, @Nonnull String var6, @Nonnull String var7)
private int appendRowTagChipsint appendRowTagChips(@Nonnull UICommandBuilder var1, @Nonnull String var2, @Nonnull Map<String, String> var3, boolean var4)
private int appendRulesCategoryint appendRulesCategory(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, int var4, @Nonnull TriggerVolumeInspectorPage.EventCategoryScope var5, @Nullable TriggerVolumeInspectorDrafts.GroupDraft var6)
private int appendVolumeEffectsSectionint appendVolumeEffectsSection(@Nonnull UICommandBuilder var1, @Nonnull String var2, int var3, boolean var4)
private int appendVolumeRowint appendVolumeRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, boolean var6, int var7, @Nonnull Map<String, String> var8)
private <T> void applyCodecField<T> void applyCodecField(@Nonnull BuilderCodec<T> var1, @Nonnull T var2, @Nonnull String var3, @Nonnull TriggerVolumeInspectorPage.PageData var4)
private void applyDeletesvoid applyDeletes(@Nonnull TriggerVolumeManager var1)
private void applyGroupDraftsvoid applyGroupDrafts(@Nonnull TriggerVolumeManager var1)
private void applyGroupNameImmediatelyvoid applyGroupNameImmediately(@Nonnull TriggerVolumeInspectorDrafts.GroupDraft var1)
private void applyModifyRulesParametervoid applyModifyRulesParameter(@Nonnull ModifyRulesEffect var1, @Nonnull String var2, @Nonnull TriggerVolumeInspectorPage.PageData var3)
private void applyPickerValuevoid applyPickerValue(@Nonnull BuilderCodec<?> var1, @Nonnull Object var2, @Nonnull String var3, @Nullable String var4)
private void applyPickerValuesvoid applyPickerValues(@Nonnull BuilderCodec<?> var1, @Nonnull Object var2, @Nonnull String var3, @Nonnull Collection<String> var4)
private void applyPreSelectionvoid applyPreSelection(@Nonnull UICommandBuilder var1)
private void applyRuleTypeChangevoid applyRuleTypeChange(@Nonnull ModifyRulesEffect var1, @Nullable String var2)
private void applyTintFromPlayerPositionvoid applyTintFromPlayerPosition(@Nonnull ShowTriggerVolumePastePrefabPreview var1)
private void applyVolumeDraftsvoid applyVolumeDrafts(@Nonnull TriggerVolumeManager var1)
private void applyVolumeNameImmediatelyvoid applyVolumeNameImmediately(@Nonnull TriggerVolumeInspectorDrafts.VolumeDraft var1)
private void bindStaticEventsvoid bindStaticEvents(@Nonnull UIEventBuilder var1)
private void buildAddEffectDropdownvoid buildAddEffectDropdown(@Nonnull UICommandBuilder var1)
private void buildAddEntryDropdownvoid buildAddEntryDropdown(@Nonnull UICommandBuilder var1)
private void buildAddEventTypeDropdownvoid buildAddEventTypeDropdown(@Nonnull UICommandBuilder var1)
private void buildAddTargetDropdownvoid buildAddTargetDropdown(@Nonnull UICommandBuilder var1)
private void buildAssetPickerListvoid buildAssetPickerList(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2)
private void buildEffectDetailPanelvoid buildEffectDetailPanel(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2)
private void buildEffectListvoid buildEffectList(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2)
private void buildEffectsTabvoid buildEffectsTab(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2)
private void buildListvoid buildList(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2)
private void buildModifyRulesEffectDetailPanelvoid buildModifyRulesEffectDetailPanel(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull ModifyRulesEffect var3)
private void buildSelectedNameHeadervoid buildSelectedNameHeader(@Nonnull UICommandBuilder var1)
private void buildSelectedPanevoid buildSelectedPane(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2)
private void buildTabsvoid buildTabs(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2)
private void buildTagsTabvoid buildTagsTab(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2)
private void buildTitleTagChipsvoid buildTitleTagChips(@Nonnull UICommandBuilder var1)
private void buildVolumeTabvoid buildVolumeTab(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2)
private void buildWorldDropdownvoid buildWorldDropdown(@Nonnull UICommandBuilder var1)
static int chipWidthint chipWidth(@Nonnull String var0)
static double clampDimensiondouble clampDimension(double var0, double var2)
private void clearDraftStatevoid clearDraftState()
private void clearPastePrefabPreviewIfFromDifferentWorldvoid clearPastePrefabPreviewIfFromDifferentWorld()
private void closeAssetPickervoid closeAssetPicker()
private void enterRuleAddModevoid enterRuleAddMode()
private int entryOfint entryOf(@Nullable Object var1)
private void fillPreviewPacketvoid fillPreviewPacket(@Nonnull ShowTriggerVolumePastePrefabPreview var1, @Nonnull BlockSelection var2)
private int fillTitleChipRowsint fillTitleChipRows(@Nonnull UICommandBuilder var1, @Nonnull String var2, @Nonnull List<Entry<String, String>> var3, int var4, int var5, int var6, boolean var7)
for for(VolumeEntry var12 : var10)
for for(VolumeEntry var22 : var18)
for for(TriggerVolumeInspectorPage.RowEntry var3 : this.currentRows)
for for(TriggerVolumeInspectorPage.RowEntry var3 : this.currentRows)
for for(String var3 : this.deletedVolumes)
for for(String var9 : this.deletedGroups)
for for(String var12 : var7)
for for(String var6 : var3)
for for(int var8 : var10)
for for(int var10 = 0; var10 < var9; var10++)
for for(int var8 = 0; var8 < var7; var8++)
for for(String var12 : DENY_SIGNAL_FIELD_KEYS)
for for(String var11 : var6)
for for(String var7 : var2)
for for(String var4 : var1)
for for(String var8 : var3)
for for(String var9 : var5)
for for(String var18 : var5)
for for(VolumeEntry var5 : var3)
abstract for for(var11 = var4; var11 < var3.size()
abstract for for(int var11 = 0; var11 < var7.size()
abstract for for(int var11 = 0; var11 < var10.size()
abstract for for(int var3 = 0; var3 < var0.length()
abstract for for(int var17 = 0; var17 < var12.size()
abstract for for(int var10 = 0; var10 < var5.size()
abstract for for(int var2 = 1; var2 < var0.length()
abstract return getAssetIdsForSourcereturn getAssetIdsForSource(this.pendingPickerSource)
abstract return getConditionTypeIdreturn getConditionTypeId(var2)
private int getEventCategoryItemCountint getEventCategoryItemCount(@Nonnull TriggerVolumeInspectorPage.EventCategoryScope var1, @Nullable TriggerVolumeInspectorDrafts.GroupDraft var2, @Nonnull TriggerEventType var3, int var4)
static int getGroupItemCountint getGroupItemCount(@Nonnull TriggerVolumeInspectorPage.EffectListKind var0, @Nonnull TriggerVolumeInspectorDrafts.GroupDraft var1)
static int getGroupItemEntryint getGroupItemEntry(@Nonnull TriggerVolumeInspectorPage.EffectListKind var0, int var1, @Nonnull TriggerVolumeInspectorDrafts.GroupDraft var2)
private int getItemCountint getItemCount(@Nonnull TriggerVolumeInspectorPage.EffectListKind var1)
private int getItemEntryint getItemEntry(@Nonnull TriggerVolumeInspectorPage.EffectListKind var1, int var2)
abstract return getManagerForWorldreturn getManagerForWorld(this.selectedWorld)
public void handleDataEventvoid handleDataEvent(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull TriggerVolumeInspectorPage.PageData var3)
private void hidePastePrefabPreviewvoid hidePastePrefabPreview()
if if(this.preSelectedVolumeId != null)
if if(var3 != null)
if if(!this.skipSaveOnDismiss)
if if(var4 != null)
if if(var16 == 0)
if if(var10 > 0)
if if(var6)
if if(this.pendingScrollToSelection && this.selectedId != null)
if if(this.selectedId != null)
if if(var2 == null)
if if(var3 != null)
if if(this.selectedIsGroup)
if if(var3 != null)
if if(var5 != null)
if if(this.selectedId != null && var2 != null)
if if(var10 > 0 && var10 + var15 > var5)
if if(var9 == var6)
if if(var7)
if if(this.selectedId == null)
if if(this.selectedIsGroup)
if if(var4 == null)
if if(var38 == null)
if if(var5 == null)
if if(var6)
if if(var1.id != null)
if if(this.selectedId != null)
if if(this.renamingSelected)
if if(this.renamingSelected)
if if(this.renameOriginalId != null)
if if(this.selectedIsGroup)
if if(var1 != null)
if if(var2 != null)
if if(var2 != null)
if if(var1.tab != null)
if if(var1.paramKey != null && this.selectedId != null)
if if(this.selectedIsGroup)
if if(var3 == null)
if if(var4 == null)
if if(var2)
if if(this.selectedId != null)
if if(this.selectedIsGroup)
if if(var2 == null)
if if(var1.paramValue != null)
if if(var3 == null)
if if(var1.paramValue != null)
if if(var2 != null)
if if(var3 != null)
if if(var2 != null)
if if(var3 != null)
if if(var3)
if if(var3)
if if(this.selectedId != null && var1.tagKey != null)
if if(var1.removeTagKey != null)
if if(this.selectedId != null)
if if(this.selectedIsGroup)
if if(this.selectedId != null && !this.selectedIsGroup)
if if(var3 != null)
if if(var5 != null)
if if(var2)
if if(var4 != null)
if if(var5 != null)
if if(var10 != null)
if if(var7 != null)
if if(var4 != null)
if if(var4 != null)
if if(var7 != null)
if if(var3.groupId != null)
if if(var8 != null)
if if(this.addTargetKind != TriggerVolumeInspectorPage.EffectListKind.RULE)
if if(this.addTargetKind == TriggerVolumeInspectorPage.EffectListKind.RULE)
if if(!var3)
if if(!var4)
if if(var3 > 0 && !this.selectedIsGroup)
if if(var13 != 0)
if if(var5 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP && var6 == null)
if if(var5 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP)
if if(var8)
if if(var5 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP)
if if(var1.eventCategoryScope != null)
if if(var2 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP)
if if(var5 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP)
if if(var2 > 0)
if if(var1 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP && var2 == null)
if if(var8 != TriggerVolumeInspectorPage.EffectListKind.RULE)
if if(var9 != TriggerVolumeInspectorPage.EffectListKind.RULE)
if if(var1 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP && var2 == null)
if if(var10 == var4)
if if(var1 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP)
if if(var1 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP)
if if(var3 == null)
if if(var3 instanceof TriggerRule var23)
if if(var27 != null)
if if(var23 instanceof AbstractDenyRule var34)
if if(var28 != null)
if if(var8 != null)
if if(var5 instanceof PastePrefabEffect)
if if(var9 == ModifyRulesEffect.Operation.SET_RULES_ACTIVE)
if if(var9 == ModifyRulesEffect.Operation.SET_FIELD)
if if(!this.rejectionSignalExpanded)
if if(var5 == null)
if if(var5)
if if(var5 != null)
if if(var4)
if if(var6 == Codec.BOOLEAN)
if if(var6 == Codec.FLOAT)
if if(var6 == Codec.DOUBLE)
if if(var6 == Codec.INTEGER)
if if(var6 == Codec.LONG)
if if(var6 == Vector3dUtil.CODEC)
if if(var7 instanceof BsonDocument var15)
if if(var6 == Codec.STRING)
if if(var7 != null)
if if(var6 instanceof Message var11)
if if(var7 != null)
if if(var4 == '_')
if if(var4)
if if(this.selectedKind == TriggerVolumeInspectorPage.EffectListKind.RULE)
if if(this.selectedKind == TriggerVolumeInspectorPage.EffectListKind.CONDITION)
if if(var2 == TriggerVolumeInspectorPage.EffectListKind.RULE)
if if(var7 == null)
if if(var2 == TriggerVolumeInspectorPage.EffectListKind.CONDITION)
if if(var9 == null)
if if(var5 == null)
if if(this.selectedKind == TriggerVolumeInspectorPage.EffectListKind.CONDITION)
if if(var1.addTargetKind != null)
if if(var2 == TriggerVolumeInspectorPage.EffectListKind.RULE)
if if(var1.addEventType != null)
if if(var1.eventType != null && var1.eventCategoryScope != null)
if if(var2 != null && var1.paramKey != null)
if if(var2 instanceof TriggerRule var11)
if if(var1.paramBool != null)
if if(var16 != null)
if if(var2 instanceof TriggerCondition var20)
if if(var1.paramNumericValue != null)
if if(var2 instanceof TriggerCondition var18)
if if(var6 != null)
if if(var1.paramNumericValue != null)
if if(var1.paramNumericValue != null)
if if(var5 != null)
if if(var7 != null)
if if(var5 != null)
if if(var6 != null)
if if(var4 != null)
if if(var1 != null)
if if(var2 >= 0 && var2 != this.lastCommittedEntry)
if if(var1 instanceof TriggerCondition var3)
if if(var3 == null)
if if(var3)
if if(var5 == null)
if if(var6 == null)
if if(var9 != null)
if if(var2 == null)
if if(var4 == null)
if if(var14 != null)
if if(var15 != null)
if if(var3 != null)
if if(this.selectedIsGroup)
if if(var2 == null)
if if(var3 == null)
if if(var2 == null)
if if(var3 != TriggerVolumeInspectorPage.EffectListKind.CONDITION && var3 != TriggerVolumeInspectorPage.EffectListKind.RULE)
if if(var4 == null)
if if(var6 == null)
if if(var10 == null)
if if(var2 == null)
if if(var3 == null)
if if(var4 == null)
if if(var4.vecX != null && var4.vecY != null && var4.vecZ != null)
if if(var7 == Codec.FLOAT || var7 == Codec.DOUBLE)
if if(var9 != null)
if if(var3 == null)
if if(var4 != null)
if if(var3 != null)
if if(var2 != null)
if if(var3 == null)
if if(var4 != null && !this.selectedIsGroup)
if if(var1.paramKey != null)
if if(var2 != null)
if if(var5 != null)
if if(this.pendingPickerMultiSelect)
if if(var1.assetPickerQuery != null)
if if(var1.assetPickerSelection != null && this.pendingPickerFieldKey != null)
if if(this.pendingPickerMultiSelect)
if if(var2 != null)
if if(var4 != null)
if if(this.pendingPickerMultiSelect && this.pendingPickerFieldKey != null)
if if(var1 != null)
if if(var3 != null)
if if(var3 != Integer.MIN_VALUE && var3 != 0)
if if(var5 != null)
if if(var1 != null)
if if(var1 != null)
if if(!this.suppressSelectionObserver)
if if(var2 != null)
if if(var5 != null)
if if(var6 != null)
if if(this.selectedId != null && var2 != null)
if if(this.selectedIsGroup)
if if(var3 == null)
if if(var2 != null)
if if(var8 == Codec.STRING_ARRAY)
if if(var0 instanceof TriggerCondition var2)
if if(var3 == null)
if if(var3 == null)
if if(var6 instanceof BsonArray)
if if(var9 instanceof BsonString var10)
if if(var14)
if if(var1 != null && this.selectedId != null)
if if(var1 != null && this.selectedId != null)
if if(this.selectedIsGroup)
if if(var1 != null && var2 != null && var2.groupId != null)
if if(this.selectedIsGroup)
if if(this.selectedIsGroup)
if if(this.selectedIsGroup)
if if(var1 != null)
if if(var2 != null)
if if(var9 > 0 && var9 + var13 > var6)
if if(var8 == 2)
if if(var0 == null)
if if(var1.vecX != null && var1.vecY != null && var1.vecZ != null)
if if(var1.vecX != null && var1.vecY != null && var1.vecZ != null)
if if(var1.paramNumericValue != null)
if if(var1.vecX != null && var1.vecY != null)
if if(var1 == null)
if if(var0 instanceof TriggerCondition var2)
if if(var1 == null)
if if(var0 instanceof BsonString var5)
if if(var8 != null)
if if(var8 != null)
if if(var8 != null)
if if(var0 == Codec.BOOLEAN)
private boolean isAddingRuleboolean isAddingRule()
static boolean isAppendableFieldCodecboolean isAppendableFieldCodec(@Nonnull Codec<?> var0)
static boolean isApplyOnFieldboolean isApplyOnField(@Nonnull String var0, @Nonnull String var1)
static boolean isApplyOnPseudoboolean isApplyOnPseudo(@Nonnull String var0)
private boolean isEventCategoryCollapsedboolean isEventCategoryCollapsed(@Nonnull TriggerVolumeInspectorPage.EventCategoryScope var1, @Nonnull TriggerEventType var2, int var3)
private boolean isLoopingAnimationboolean isLoopingAnimation(@Nonnull String var1, @Nonnull String var2, @Nonnull String var3)
static boolean isNonNegativeNumericFieldboolean isNonNegativeNumericField(@Nonnull String var0, @Nonnull String var1)
static boolean isPastePrefabPreviewAssetFieldboolean isPastePrefabPreviewAssetField(@Nullable String var0)
private boolean isPickerFieldMultiSelectboolean isPickerFieldMultiSelect(@Nonnull Object var1, @Nonnull String var2)
private boolean isPreviewingSelectedEffectboolean isPreviewingSelectedEffect()
static boolean isTagConditionFieldHiddenboolean isTagConditionFieldHidden(@Nonnull String var0, @Nonnull TagCondition.Source var1)
private boolean isUnsupportedAnimationboolean isUnsupportedAnimation(@Nonnull String var1, @Nonnull String var2, @Nonnull String var3)
private boolean isUnsupportedApplyOnboolean isUnsupportedApplyOn(@Nonnull String var1, @Nonnull String var2, @Nonnull String var3)
Message labelMessage label()
private void leaveRuleAddModevoid leaveRuleAddMode()
private void logMissingOptionKeyvoid logMissingOptionKey(@Nonnull String var1)
private void markSelectedDraftDirtyvoid markSelectedDraftDirty()
private boolean matchesFilterboolean matchesFilter(@Nonnull String var1)
private boolean matchesGroupFilterboolean matchesGroupFilter(@Nonnull String var1, @Nonnull GroupEntry var2, @Nonnull List<VolumeEntry> var3)
private boolean matchesVolumeFilterboolean matchesVolumeFilter(@Nonnull VolumeEntry var1)
static void materializeConditionDefaultsvoid materializeConditionDefaults(@Nonnull BuilderCodec<TriggerCondition> var0, @Nonnull TriggerCondition var1)
abstract materializeConditionDefaults materializeConditionDefaults(var9, var10)
static void materializeDefaultsvoid materializeDefaults(@Nonnull BuilderCodec<TriggerEffect> var0, @Nonnull TriggerEffect var1)
abstract materializeDefaults materializeDefaults(var5, var6)
static void materializeRuleDefaultsvoid materializeRuleDefaults(@Nonnull BuilderCodec<TriggerRule> var0, @Nonnull TriggerRule var1)
abstract materializeRuleDefaults materializeRuleDefaults(var7, var8)
abstract materializeRuleDefaults materializeRuleDefaults(var4, var5)
private int maxEntryForEventint maxEntryForEvent(@Nonnull TriggerEventType var1)
static boolean messageExistsboolean messageExists(@Nonnull String var0)
private void onAddEffectvoid onAddEffect(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onAssetPickerSearchvoid onAssetPickerSearch(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onAssetPickerSelectvoid onAssetPickerSelect(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onCancelAssetPickervoid onCancelAssetPicker()
private void onCancelPresetLoadvoid onCancelPresetLoad()
private void onCancelPresetSavevoid onCancelPresetSave()
private void onCancelRenameSelectedvoid onCancelRenameSelected()
private void onChangeTabvoid onChangeTab(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onChangeWorldvoid onChangeWorld(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onCommitEntryvoid onCommitEntry()
private void onCommitNamevoid onCommitName(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onConfirmAssetPickervoid onConfirmAssetPicker()
private void onConfirmRenameSelectedvoid onConfirmRenameSelected()
private void onConfirmSavePresetvoid onConfirmSavePreset(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onDeleteSelectionvoid onDeleteSelection()
private void onDiscardvoid onDiscard()
private void onDuplicateEffectvoid onDuplicateEffect()
private void onExternalSelectionChangedvoid onExternalSelectionChanged(@Nullable String var1)
private void onExternalVolumeRemovedvoid onExternalVolumeRemoved(@Nonnull String var1)
private void onExternalVolumeUpdatedvoid onExternalVolumeUpdated(@Nonnull VolumeEntry var1)
private void onFilterChangedvoid onFilterChanged(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onLoadPresetvoid onLoadPreset(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onMoveEffectvoid onMoveEffect(int var1)
private void onOpenAssetPickervoid onOpenAssetPicker(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onOpenPresetLoadvoid onOpenPresetLoad()
private void onOpenPresetSavevoid onOpenPresetSave()
private void onPresetNameChangedvoid onPresetNameChanged(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onPreviewSoundvoid onPreviewSound(@Nonnull TriggerVolumeInspectorPage.PageData var1, @Nonnull Store<EntityStore> var2)
private void onRemoveEffectvoid onRemoveEffect()
private void onRemoveTagvoid onRemoveTag(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onSavevoid onSave()
private void onSelectvoid onSelect(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onSelectEffectvoid onSelectEffect(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onTeleportvoid onTeleport(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2)
private void onToggleEventCategoryvoid onToggleEventCategory(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onTogglePrefabPreviewvoid onTogglePrefabPreview()
private void onToggleRejectionSignalvoid onToggleRejectionSignal()
private void onToggleRenameSelectedvoid onToggleRenameSelected()
private void onToggleRulesCategoryvoid onToggleRulesCategory(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onUpdateAddEffectTypevoid onUpdateAddEffectType(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onUpdateAddEntryvoid onUpdateAddEntry(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onUpdateAddEventTypevoid onUpdateAddEventType(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onUpdateAddTargetvoid onUpdateAddTarget(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onUpdateParametervoid onUpdateParameter(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onUpdateTagvoid onUpdateTag(@Nonnull TriggerVolumeInspectorPage.PageData var1)
private void onUpdateVolumeFieldvoid onUpdateVolumeField(@Nonnull TriggerVolumeInspectorPage.PageData var1)
public void onVolumeRemovedpublic void onVolumeRemoved(@Nonnull String var1)
public void onVolumeUpdatedpublic void onVolumeUpdated(@Nonnull VolumeEntry var1)
static int parseEntryint parseEntry(@Nullable String var0)
static int parsePackedColorint parsePackedColor(@Nullable String var0, int var1)
private void rebuildAllvoid rebuildAll()
private void rebuildEffectListOnlyvoid rebuildEffectListOnly()
private void refreshActivePastePrefabPreviewvoid refreshActivePastePrefabPreview()
private void refreshActivePastePrefabPreviewPositionvoid refreshActivePastePrefabPreviewPosition()
private void registerSelectionObservervoid registerSelectionObserver()
private void registerVolumeUpdateObservervoid registerVolumeUpdateObserver()
private int resolveAddEntryint resolveAddEntry(@Nullable String var1, @Nonnull TriggerEventType var2)
private Collection<String> resolvePickerIdsCollection<String> resolvePickerIds()
private void restorePresetSavePagevoid restorePresetSavePage()
private void revertRejectedDraftIdsvoid revertRejectedDraftIds()
private boolean saveDraftsboolean saveDrafts(@Nonnull TriggerVolumeManager var1, boolean var2)
private void scrollSelectedRowToViewvoid scrollSelectedRowToView(@Nonnull UICommandBuilder var1)
private boolean sendPastePrefabPreviewboolean sendPastePrefabPreview(@Nonnull PastePrefabEffect var1, boolean var2)
private boolean sendPastePrefabPreviewboolean sendPastePrefabPreview(@Nonnull PastePrefabEffect var1, @Nonnull Vector3d var2, boolean var3)
private void setApplyOnLabelvoid setApplyOnLabel(@Nonnull UICommandBuilder var1, @Nonnull String var2, @Nonnull String var3)
private void setBaseNumberCellvoid setBaseNumberCell(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, @Nonnull String var4, @Nonnull String var5, @Nonnull String var6)
static void setBoxDimensionsvoid setBoxDimensions(@Nonnull Vector3d var0, @Nonnull TriggerVolumeInspectorPage.PageData var1)
abstract setBoxDimensions setBoxDimensions(var1.dimensions, var2)
private void setCurrentConditionTimingvoid setCurrentConditionTiming(@Nonnull ConditionTiming var1)
static void setCylinderDimensionsvoid setCylinderDimensions(@Nonnull Vector3d var0, @Nonnull TriggerVolumeInspectorPage.PageData var1)
abstract setCylinderDimensions setCylinderDimensions(var1.dimensions, var2)
static void setDimensionsHeadervoid setDimensionsHeader(@Nonnull UICommandBuilder var0, @Nonnull String var1)
abstract setDimensionsHeader setDimensionsHeader(var1, var5)
static void setEffectFieldPlaceholdervoid setEffectFieldPlaceholder(@Nonnull UICommandBuilder var0, @Nonnull String var1, @Nonnull String var2, @Nonnull String var3)
abstract setEffectFieldPlaceholder setEffectFieldPlaceholder(var1, var7, var4, var5)
static void setEffectFieldTooltipvoid setEffectFieldTooltip(@Nonnull UICommandBuilder var0, @Nonnull String var1, @Nonnull String var2, @Nonnull String var3)
abstract setEffectFieldTooltip setEffectFieldTooltip(var1, var6, "ModifyRules", "RuleType")
abstract setEffectFieldTooltip setEffectFieldTooltip(var1, var7, "ModifyRules", "RuleField")
abstract setEffectFieldTooltip setEffectFieldTooltip(var1, var7, var4, var5)
abstract setEffectFieldTooltip setEffectFieldTooltip(var1, var10, var4, var5)
abstract setEffectFieldTooltip setEffectFieldTooltip(var1, var8, var4, var5)
abstract setEffectFieldTooltip setEffectFieldTooltip(var1, var12, var4, var5)
abstract setEffectFieldTooltip setEffectFieldTooltip(var1, var8, var4, "Rotation")
private void setEventCategoryExpandedvoid setEventCategoryExpanded(@Nonnull TriggerVolumeInspectorPage.EventCategoryScope var1, @Nonnull TriggerEventType var2, int var3)
private void setIdValidationvoid setIdValidation(@Nonnull UICommandBuilder var1, @Nonnull String var2, @Nonnull String var3, @Nonnull String var4)
private void setSavePresetButtonStatevoid setSavePresetButtonState(@Nonnull UICommandBuilder var1)
static void setSphereDimensionsvoid setSphereDimensions(@Nonnull Vector3d var0, @Nonnull TriggerVolumeInspectorPage.PageData var1)
abstract setSphereDimensions setSphereDimensions(var1.dimensions, var2)
static void setVecvoid setVec(@Nonnull Vector3d var0, @Nonnull TriggerVolumeInspectorPage.PageData var1)
abstract setVec setVec(var1.position, var2)
abstract setVec setVec(var1.origin, var2)
abstract return stringsToBsonArrayreturn stringsToBsonArray(var1)
abstract super super(var1, CustomPageLifetime.CanDismiss, TriggerVolumeInspectorPage.PageData.CODEC)
switch switch(var3.action)
switch switch(this.selectedTab)
return switchreturn switch(var4)
switch switch(var2.paramKey)
switch switch(var2.paramKey)
switch switch(this.selectedKind)
switch switch(this.selectedKind)
return switchreturn switch(this.selectedKind)
return switchreturn switch(var1)
return switchreturn switch(var0)
return switchreturn switch(var0)
return switchreturn switch(var0)
return switchreturn switch(var1)
return switchreturn switch(var0)
return switchreturn switch(var0 != null ? var0 : "PLAYER")
private void syncAddControlsToSelectedEffectvoid syncAddControlsToSelectedEffect()
private void syncSelectionToToolvoid syncSelectionToTool()
static int tagChipColorint tagChipColor(@Nonnull String var0)
private boolean tagMatchesFilterboolean tagMatchesFilter(@Nonnull String var1, @Nullable String var2)
private boolean tagsMatchFilterboolean tagsMatchFilter(@Nonnull Map<String, String> var1)
abstract this this(var1, var2, var3, false, var4)
private void toggleEventCategoryvoid toggleEventCategory(@Nonnull TriggerVolumeInspectorPage.EventCategoryScope var1, @Nonnull TriggerEventType var2, int var3)
Message tooltipMessage tooltip()
private void updateDraftIdvoid updateDraftId(@Nonnull TriggerVolumeInspectorDrafts.VolumeDraft var1, @Nullable String var2)
private void updateDraftIdvoid updateDraftId(@Nonnull TriggerVolumeInspectorDrafts.GroupDraft var1, @Nullable String var2)
private void updateGroupFieldvoid updateGroupField(@Nonnull TriggerVolumeInspectorDrafts.GroupDraft var1, @Nonnull TriggerVolumeInspectorPage.PageData var2)
private void updateVolumeFieldvoid updateVolumeField(@Nonnull TriggerVolumeInspectorDrafts.VolumeDraft var1, @Nonnull TriggerVolumeInspectorPage.PageData var2)
private boolean validateDraftIdsboolean validateDraftIds(@Nonnull TriggerVolumeManager var1)

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.AssetPack;
class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.assetstore.AssetStore;
class="kw">import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.EntityTargetType;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.TriggerVolumesPlugin;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.asset.TriggerEffectAsset;
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.TriggerEventType;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerRule;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.builtin.ModifyRulesEffect;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.builtin.PastePrefabEffect;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.builtin.PlayAnimationEffect;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.builtin.RemoveEntitiesEffect;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.builtin.TaggedVolumeEffectUtil;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.builtin.conditions.BlockTypeCondition;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.builtin.conditions.TagCondition;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.builtin.rules.AbstractDenyRule;
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.ProjectileSource;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.manager.RejectionDelayMode;
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.codec.Codec;
class="kw">import com.hypixel.hytale.codec.EmptyExtraInfo;
class="kw">import com.hypixel.hytale.codec.ExtraInfo;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderField;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import com.hypixel.hytale.common.util.StringCompareUtil;
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.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.math.vector.Vector3dUtil;
class="kw">import com.hypixel.hytale.protocol.Color;
class="kw">import com.hypixel.hytale.protocol.SoundCategory;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.CustomPageLifetime;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.CustomUIEventBindingType;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.EditorBlocksChange;
class="kw">import com.hypixel.hytale.protocol.packets.player.HideTriggerVolumePastePrefabPreview;
class="kw">import com.hypixel.hytale.protocol.packets.player.ShowTriggerVolumePastePrefabPreview;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeShapeType;
class="kw">import com.hypixel.hytale.protocol.packets.player.TriggerVolumeToolSelection;
class="kw">import com.hypixel.hytale.server.core.HytaleServer;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.type.buildertool.config.PrefabListAsset;
class="kw">import com.hypixel.hytale.server.core.asset.type.environment.config.Environment;
class="kw">import com.hypixel.hytale.server.core.asset.type.soundevent.config.SoundEvent;
class="kw">import com.hypixel.hytale.server.core.asset.util.ColorParseUtil;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.pages.InteractiveCustomUIPage;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
class="kw">import com.hypixel.hytale.server.core.modules.i18n.I18nModule;
class="kw">import com.hypixel.hytale.server.core.modules.singleplayer.SingleplayerModule;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabStore;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.standard.BlockSelection;
class="kw">import com.hypixel.hytale.server.core.ui.Anchor;
class="kw">import com.hypixel.hytale.server.core.ui.DropdownEntryInfo;
class="kw">import com.hypixel.hytale.server.core.ui.LocalizableString;
class="kw">import com.hypixel.hytale.server.core.ui.PatchStyle;
class="kw">import com.hypixel.hytale.server.core.ui.Value;
class="kw">import com.hypixel.hytale.server.core.ui.browser.AssetPackSaveBrowser;
class="kw">import com.hypixel.hytale.server.core.ui.browser.AssetPackSaveBrowserConfig;
class="kw">import com.hypixel.hytale.server.core.ui.browser.AssetPackSaveBrowserEventData;
class="kw">import com.hypixel.hytale.server.core.ui.builder.EventData;
class="kw">import com.hypixel.hytale.server.core.ui.builder.UICommandBuilder;
class="kw">import com.hypixel.hytale.server.core.ui.builder.UIEventBuilder;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.Universe;
class="kw">import com.hypixel.hytale.server.core.universe.world.SoundUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.ints.IntArrayList;
class="kw">import it.unimi.dsi.fastutil.ints.IntList;
class="kw">import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.nio.file.Files;
class="kw">import java.nio.file.Path;
class="kw">import java.util.ArrayList;
class="kw">import java.util.Arrays;
class="kw">import java.util.Collection;
class="kw">import java.util.Collections;
class="kw">import java.util.Comparator;
class="kw">import java.util.EnumSet;
class="kw">import java.util.HashSet;
class="kw">import java.util.LinkedHashMap;
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.Objects;
class="kw">import java.util.Set;
class="kw">import java.util.Map.Entry;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.bson.BsonArray;
class="kw">import org.bson.BsonBoolean;
class="kw">import org.bson.BsonDocument;
class="kw">import org.bson.BsonDouble;
class="kw">import org.bson.BsonInt32;
class="kw">import org.bson.BsonInt64;
class="kw">import org.bson.BsonString;
class="kw">import org.bson.BsonValue;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3f;

class="kw">public class TriggerVolumeInspectorPage class="kw">extends InteractiveCustomUIPage<TriggerVolumeInspectorPage.PageData> {
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
   class="kw">private class="kw">static class="kw">final int ASSET_PICKER_MAX_RESULTS = 50;
   class="kw">private class="kw">static class="kw">final Value<String> NORMAL_ROW_STYLE = Value.ref("Pages/TriggerVolume/TriggerVolumeBrowseGroupRow.ui", "NormalRowStyle");
   class="kw">private class="kw">static class="kw">final Value<String> SELECTED_ROW_STYLE = Value.ref("Pages/TriggerVolume/TriggerVolumeBrowseGroupRow.ui", "SelectedRowStyle");
   class="kw">private class="kw">static class="kw">final Value<String> NORMAL_EFFECT_ROW_STYLE = Value.ref("Pages/TriggerVolume/TriggerVolumeInspectorEffectRow.ui", "NormalRowStyle");
   class="kw">private class="kw">static class="kw">final Value<String> SELECTED_EFFECT_ROW_STYLE = Value.ref("Pages/TriggerVolume/TriggerVolumeInspectorEffectRow.ui", "SelectedRowStyle");
   class="kw">private class="kw">static class="kw">final Value<String> INHERITED_EFFECT_ROW_STYLE = Value.ref("Pages/TriggerVolume/TriggerVolumeInspectorEffectRow.ui", "InheritedRowStyle");
   class="kw">private class="kw">static class="kw">final Value<String> NORMAL_EFFECT_LABEL_STYLE = Value.ref("Pages/TriggerVolume/TriggerVolumeInspectorEffectRow.ui", "NormalLabelStyle");
   class="kw">private class="kw">static class="kw">final Value<String> SELECTED_EFFECT_LABEL_STYLE = Value.ref("Pages/TriggerVolume/TriggerVolumeInspectorEffectRow.ui", "SelectedLabelStyle");
   class="kw">private class="kw">static class="kw">final Value<String> INHERITED_EFFECT_LABEL_STYLE = Value.ref("Pages/TriggerVolume/TriggerVolumeInspectorEffectRow.ui", "InheritedLabelStyle");
   class="kw">private class="kw">static class="kw">final String PAGE = "Pages/TriggerVolume/TriggerVolumeInspectorPage.ui";
   class="kw">private class="kw">static class="kw">final String GROUP_ROW = "Pages/TriggerVolume/TriggerVolumeBrowseGroupRow.ui";
   class="kw">private class="kw">static class="kw">final String VOLUME_ROW = "Pages/TriggerVolume/TriggerVolumeBrowseVolumeRow.ui";
   class="kw">private class="kw">static class="kw">final String TAG_ROW = "Pages/TriggerVolume/TriggerVolumeBrowseTagRow.ui";
   class="kw">private class="kw">static class="kw">final String TAG_CHIP = "Pages/TriggerVolume/TriggerVolumeTagChip.ui";
   class="kw">private class="kw">static class="kw">final int[] TAG_CHIP_COLORS = new int[]{
      5223543,
      4176047,
      5214176,
      7237344,
      10181046,
      13393320,
      14707612,
      14715452,
      14070332,
      14247259,
      6013118,
      8365648,
      11566278,
      15241563,
      13194606,
      4878288,
      4894348,
      12546880,
      7317724,
      13332382
   };
   class="kw">private class="kw">static class="kw">final int OVERFLOW_CHIP_COLOR = 5596014;
   class="kw">private class="kw">static class="kw">final int INSPECTOR_PANE_WIDTH = 895;
   class="kw">private class="kw">static class="kw">final int TAB_BUTTONS_WIDTH = 300;
   class="kw">private class="kw">static class="kw">final int TITLE_CHIP_ROW_BUDGET = 579;
   class="kw">private class="kw">static class="kw">final int[] EMPTY_ENTRIES = new int[0];
   class="kw">private class="kw">static class="kw">final String ADD_ENTRY_NEW = "NEW";
   class="kw">private class="kw">static class="kw">final String ALWAYS_ACTIVE_EVENT_VALUE = "ALWAYS_ACTIVE";
   class="kw">private class="kw">static class="kw">final String PROPERTY_ROW = "Pages/TriggerVolume/TriggerVolumeBrowsePropertyRow.ui";
   class="kw">private class="kw">static class="kw">final String TAB_BUTTON = "Pages/TriggerVolume/TriggerVolumeInspectorTabButton.ui";
   class="kw">private class="kw">static class="kw">final String EFFECT_ROW = "Pages/TriggerVolume/TriggerVolumeInspectorEffectRow.ui";
   class="kw">private class="kw">static class="kw">final String EVENT_CATEGORY_HEADER = "Pages/TriggerVolume/TriggerVolumeInspectorEventCategoryHeader.ui";
   class="kw">private class="kw">static class="kw">final List<String> DENY_SIGNAL_FIELD_KEYS = List.of("Target", "MatchKey", "MatchValue", "Radius", "SignalKeys", "SignalValues");
   class="kw">private class="kw">static class="kw">final Set<String> DENY_SIGNAL_FIELD_KEY_SET = Set.copyOf(DENY_SIGNAL_FIELD_KEYS);
   class="kw">private class="kw">static class="kw">final Set<String> DENY_SIGNAL_OTHER_ONLY_KEYS = Set.of("MatchKey", "MatchValue", "Radius");
   class="kw">private class="kw">static class="kw">final Set<String> TAG_CONDITION_RADIUS_ONLY_KEYS = Set.of("MatchKey", "MatchValue", "Radius", "Center");
   class="kw">private class="kw">static class="kw">final String EVENT_SECTION_LABEL = "Pages/TriggerVolume/TriggerVolumeInspectorEventSectionLabel.ui";
   class="kw">private class="kw">static class="kw">final String EVENT_CATEGORY_SPACER = "Pages/TriggerVolume/TriggerVolumeInspectorEventCategorySpacer.ui";
   class="kw">private class="kw">static class="kw">final String SECTION_LABEL = "Pages/TriggerVolume/TriggerVolumeInspectorSectionLabel.ui";
   class="kw">private class="kw">static class="kw">final String VOLUME_SECTION_LABEL = "Pages/TriggerVolume/TriggerVolumeInspectorVolumeSectionLabel.ui";
   class="kw">private class="kw">static class="kw">final String EFFECT_OWNER_SECTION_LABEL = "Pages/TriggerVolume/TriggerVolumeInspectorEffectOwnerSectionLabel.ui";
   class="kw">private class="kw">static class="kw">final String COMMON_TEXT_BUTTON_DOCUMENT = "Common/TextButton.ui";
   class="kw">private class="kw">static class="kw">final String BASE_HEADER_GRID = "Pages/TriggerVolume/TriggerVolumeInspectorBaseHeaderGrid.ui";
   class="kw">private class="kw">static class="kw">final String FIELD_TEXT = "Pages/TriggerVolume/TriggerVolumeInspectorTextRow.ui";
   class="kw">private class="kw">static class="kw">final String FIELD_COLOR = "Pages/TriggerVolume/TriggerVolumeInspectorColorRow.ui";
   class="kw">private class="kw">static class="kw">final String FIELD_NUMBER = "Pages/TriggerVolume/TriggerVolumeInspectorNumberRow.ui";
   class="kw">private class="kw">static class="kw">final String FIELD_INT = "Pages/TriggerVolume/TriggerVolumeInspectorIntRow.ui";
   class="kw">private class="kw">static class="kw">final String FIELD_CHECKBOX = "Pages/TriggerVolume/TriggerVolumeInspectorCheckboxRow.ui";
   class="kw">private class="kw">static class="kw">final String FIELD_DROPDOWN = "Pages/TriggerVolume/TriggerVolumeInspectorDropdownRow.ui";
   class="kw">private class="kw">static class="kw">final String FIELD_VEC3 = "Pages/TriggerVolume/TriggerVolumeInspectorVec3Row.ui";
   class="kw">private class="kw">static class="kw">final String FIELD_ROTATION3 = "Pages/TriggerVolume/TriggerVolumeInspectorRotation3Row.ui";
   class="kw">private class="kw">static class="kw">final EnumCodec<BlockTypeCondition.AxisRotation> AXIS_ROTATION_CODEC = new EnumCodec<>(BlockTypeCondition.AxisRotation.class);
   class="kw">private class="kw">static class="kw">final String FIELD_DIMENSIONS_BOX = "Pages/TriggerVolume/TriggerVolumeInspectorDimensionsBoxRow.ui";
   class="kw">private class="kw">static class="kw">final String FIELD_DIMENSIONS_SPHERE = "Pages/TriggerVolume/TriggerVolumeInspectorDimensionsSphereRow.ui";
   class="kw">private class="kw">static class="kw">final String FIELD_DIMENSIONS_CYLINDER = "Pages/TriggerVolume/TriggerVolumeInspectorDimensionsCylinderRow.ui";
   class="kw">private class="kw">static class="kw">final String FIELD_ASSET_PICKER = "Pages/TriggerVolume/TriggerVolumeInspectorAssetPickerRow.ui";
   class="kw">private class="kw">static class="kw">final String SOUND_ASSET_PICKER_ROW = "Pages/TriggerVolume/TriggerVolumeInspectorSoundAssetRow.ui";
   class="kw">private class="kw">static class="kw">final String RULE_TYPE_PARAM = "RuleType";
   class="kw">private class="kw">static class="kw">final String RULE_FIELD_PARAM = "RuleField";
   class="kw">private class="kw">static class="kw">final Set<String> NON_NEGATIVE_NUMERIC_FIELDS = Set.of(
      "CooldownCondition.Cooldown",
      "ItemCondition.Quantity",
      "PlayerCountCondition.Count",
      "GiveItem.Quantity",
      "DamageMultiplier.Multiplier",
      "TriggerNpcMarkers.Range",
      "TriggerNpcMarkers.Radius",
      "ModifyTags.Radius",
      "EnableVolume.Radius",
      "DisableVolume.Radius",
      "DeleteVolume.Radius",
      "ModifyRules.Radius",
      "TagCondition.Radius",
      "TagCondition.MinimumCount"
   );
   class="kw">private class="kw">static class="kw">final Map<String, BsonValue> DEFAULT_FIELD_VALUES = Map.of(
      "ModifyTags.TagValue",
      new BsonString("Empty"),
      "ModifyTags.Radius",
      new BsonDouble(50.0),
      "EnableVolume.Radius",
      new BsonDouble(50.0),
      "DisableVolume.Radius",
      new BsonDouble(50.0),
      "DeleteVolume.Radius",
      new BsonDouble(50.0),
      "ModifyRules.Radius",
      new BsonDouble(50.0),
      "TagCondition.Radius",
      new BsonDouble(50.0)
   );
   class="kw">private class="kw">static class="kw">final Color DEFAULT_PREFAB_BIOME_TINT = new Color((byte)91, (byte)-98, (byte)40);
   class="kw">private class="kw">static class="kw">final int DEFAULT_BIOME_TINT = ColorParseUtil.colorToARGBInt(DEFAULT_PREFAB_BIOME_TINT) & 16777215;
   class="kw">private class="kw">static class="kw">final int DEFAULT_WATER_TINT = ColorParseUtil.colorToARGBInt(Environment.getUnknownFor("").getWaterTint()) & 16777215;
   @Nonnull
   class="kw">private String selectedWorld;
   @Nullable
   class="kw">private String selectedId;
   class="kw">private boolean selectedIsGroup;
   @Nonnull
   class="kw">private TriggerVolumeInspectorPage.InspectorTab selectedTab;
   @Nonnull
   class="kw">private String filterText = "";
   class="kw">private class="kw">final Map<String, TriggerVolumeInspectorDrafts.VolumeDraft> volumeDrafts = new LinkedHashMap<>();
   class="kw">private class="kw">final Map<String, TriggerVolumeInspectorDrafts.GroupDraft> groupDrafts = new LinkedHashMap<>();
   class="kw">private class="kw">final Set<String> deletedVolumes = new LinkedHashSet<>();
   class="kw">private class="kw">final Set<String> deletedGroups = new LinkedHashSet<>();
   class="kw">private class="kw">final List<TriggerVolumeInspectorPage.RowEntry> currentRows = new ArrayList<>();
   class="kw">private class="kw">final TriggerVolumeManager.SelectionObserver selectionObserver = this::onExternalSelectionChanged;
   class="kw">private class="kw">final TriggerVolumeManager.VolumeUpdateObserver volumeUpdateObserver = new TriggerVolumeManager.VolumeUpdateObserver() {
      @Override
      class="kw">public void onVolumeUpdated(@Nonnull VolumeEntry var1) {
         TriggerVolumeInspectorPage.this.onExternalVolumeUpdated(var1);
      }

      @Override
      class="kw">public void onVolumeRemoved(@Nonnull String var1) {
         TriggerVolumeInspectorPage.this.onExternalVolumeRemoved(var1);
      }
   };
   @Nullable
   class="kw">private class="kw">final String preSelectedVolumeId;
   class="kw">private class="kw">final boolean preSelectedIsGroup;
   @Nonnull
   class="kw">private TriggerVolumeInspectorPage.EffectListKind selectedKind = TriggerVolumeInspectorPage.EffectListKind.EFFECT;
   @Nonnull
   class="kw">private TriggerVolumeInspectorPage.EffectListKind addTargetKind = TriggerVolumeInspectorPage.EffectListKind.EFFECT;
   @Nonnull
   class="kw">private TriggerVolumeInspectorPage.EffectListKind lastRegularTargetKind = TriggerVolumeInspectorPage.EffectListKind.EFFECT;
   @Nonnull
   class="kw">private TriggerEventType addEventType = TriggerEventType.ENTER;
   @Nonnull
   class="kw">private String addEffectType = "";
   class="kw">private int addEntry = 0;
   class="kw">private boolean volumeRulesCollapsed;
   class="kw">private boolean groupRulesExpanded;
   class="kw">private boolean rejectionSignalExpanded;
   class="kw">private boolean renamingSelected = false;
   @Nullable
   class="kw">private String renameOriginalId = null;
   class="kw">private int selectedEffectIndex = -1;
   class="kw">private int lastCommittedEntry = -1;
   @Nonnull
   class="kw">private class="kw">final Set<TriggerVolumeInspectorPage.EventCategoryKey> collapsedVolumeEventCategories = new HashSet<>();
   @Nonnull
   class="kw">private class="kw">final Set<TriggerVolumeInspectorPage.EventCategoryKey> expandedGroupEventCategories = new HashSet<>();
   class="kw">private boolean suppressSelectionObserver;
   class="kw">private boolean skipSaveOnDismiss;
   class="kw">private boolean pendingScrollToSelection = true;
   @Nullable
   class="kw">private String pendingPickerFieldKey;
   @Nullable
   class="kw">private String pendingPickerSource;
   class="kw">private boolean pendingPickerMultiSelect;
   @Nonnull
   class="kw">private class="kw">final Set<String> pendingPickerSelections = new LinkedHashSet<>();
   @Nonnull
   class="kw">private String assetPickerSearchQuery = "";
   @Nonnull
   class="kw">private class="kw">final Set<String> missingOptionLangKeys = new HashSet<>();
   @Nonnull
   class="kw">private class="kw">final AssetPackSaveBrowser presetPackBrowser = new AssetPackSaveBrowser(AssetPackSaveBrowserConfig.defaults());
   @Nonnull
   class="kw">private String presetSaveName = "";

   class="kw">public TriggerVolumeInspectorPage(
      @Nonnull PlayerRef var1, @Nonnull String var2, @Nullable String var3, @Nonnull TriggerVolumeInspectorPage.InspectorTab var4
   ) {
      this(var1, var2, var3, false, var4);
   }

   class="kw">public TriggerVolumeInspectorPage(
      @Nonnull PlayerRef var1, @Nonnull String var2, @Nullable String var3, boolean var4, @Nonnull TriggerVolumeInspectorPage.InspectorTab var5
   ) {
      super(var1, CustomPageLifetime.CanDismiss, TriggerVolumeInspectorPage.PageData.CODEC);
      this.selectedWorld = var2;
      this.preSelectedVolumeId = var3;
      this.preSelectedIsGroup = var4;
      this.selectedTab = var5;
   }

   @Override
   class="kw">public void build(@Nonnull Ref<EntityStore> var1, @Nonnull UICommandBuilder var2, @Nonnull UIEventBuilder var3, @Nonnull Store<EntityStore> var4) {
      var2.append("Pages/TriggerVolume/TriggerVolumeInspectorPage.ui");
      this.registerSelectionObserver();
      this.registerVolumeUpdateObserver();
      this.clearPastePrefabPreviewIfFromDifferentWorld();
      this.buildWorldDropdown(var2);
      this.buildTabs(var2, var3);
      this.buildList(var2, var3);
      if (this.preSelectedVolumeId != null) {
         this.applyPreSelection(var2);
      }

      this.buildSelectedPane(var2, var3);
      this.bindStaticEvents(var3);
      this.presetPackBrowser.buildUI(var2, var3);
   }

   @Override
   class="kw">public void onDismiss(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2) {
      TriggerVolumeManager var3 = getManagerForWorld(this.selectedWorld);
      if (var3 != null) {
         if (!this.skipSaveOnDismiss) {
            this.saveDrafts(var3, false);
         }

         var3.clearSelectionObserver(this.playerRef.getUuid(), this.selectionObserver);
         var3.clearVolumeUpdateObserver(this.playerRef.getUuid(), this.volumeUpdateObserver);
      }

      this.skipSaveOnDismiss = false;
   }

   class="kw">public void handleDataEvent(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull TriggerVolumeInspectorPage.PageData var3) {
      AssetPackSaveBrowser.ActionResult var4 = this.presetPackBrowser
         .handleAction(var3.action != null ? var3.action.name() : null, var3.packBrowserData, "#PresetSavePage #SelectedPackLabel");
      if (var4 != null) {
         if (var4.errorKey() != null) {
            this.playerRef.sendMessage(Message.translation(var4.errorKey()));
         }

         this.setSavePresetButtonState(var4.commandBuilder());
         this.sendUpdate(var4.commandBuilder(), var4.eventBuilder(), false);
      } else if (var3.action != null) {
         class="kw">switch (var3.action) {
            case Select:
               this.onSelect(var3);
               break;
            case ChangeWorld:
               this.onChangeWorld(var3);
               break;
            case FilterChanged:
               this.onFilterChanged(var3);
               break;
            case ChangeTab:
               this.onChangeTab(var3);
               break;
            case UpdateVolumeField:
               this.onUpdateVolumeField(var3);
               break;
            case CommitName:
               this.onCommitName(var3);
               break;
            case UpdateTag:
               this.onUpdateTag(var3);
               break;
            case RemoveTag:
               this.onRemoveTag(var3);
               break;
            case DeleteSelection:
               this.onDeleteSelection();
               break;
            case Save:
               this.onSave();
               break;
            case Discard:
               this.onDiscard();
               break;
            case Teleport:
               this.onTeleport(var1, var2);
               break;
            case ToggleRenameSelected:
               this.onToggleRenameSelected();
               break;
            case ConfirmRenameSelected:
               this.onConfirmRenameSelected();
               break;
            case CancelRenameSelected:
               this.onCancelRenameSelected();
               break;
            case SelectEffect:
               this.onSelectEffect(var3);
               break;
            case AddEffect:
               this.onAddEffect(var3);
               break;
            case RemoveEffect:
               this.onRemoveEffect();
               break;
            case DuplicateEffect:
               this.onDuplicateEffect();
               break;
            case MoveEffectUp:
               this.onMoveEffect(-1);
               break;
            case MoveEffectDown:
               this.onMoveEffect(1);
               break;
            case UpdateAddTarget:
               this.onUpdateAddTarget(var3);
               break;
            case UpdateAddEffectType:
               this.onUpdateAddEffectType(var3);
               break;
            case UpdateAddEventType:
               this.onUpdateAddEventType(var3);
               break;
            case UpdateAddEntry:
               this.onUpdateAddEntry(var3);
               break;
            case ToggleEventCategory:
               this.onToggleEventCategory(var3);
               break;
            case ToggleRulesCategory:
               this.onToggleRulesCategory(var3);
               break;
            case ToggleRejectionSignal:
               this.onToggleRejectionSignal();
               break;
            case UpdateParameter:
               this.onUpdateParameter(var3);
               break;
            case CommitEntry:
               this.onCommitEntry();
               break;
            case TogglePrefabPreview:
               this.onTogglePrefabPreview();
               break;
            case OpenPresetSave:
               this.onOpenPresetSave();
               break;
            case PresetNameChanged:
               this.onPresetNameChanged(var3);
               break;
            case ConfirmSavePreset:
               this.onConfirmSavePreset(var3);
               break;
            case CancelPresetSave:
               this.onCancelPresetSave();
               break;
            case OpenPresetLoad:
               this.onOpenPresetLoad();
               break;
            case LoadPreset:
               this.onLoadPreset(var3);
               break;
            case CancelPresetLoad:
               this.onCancelPresetLoad();
               break;
            case OpenAssetPicker:
               this.onOpenAssetPicker(var3);
               break;
            case AssetPickerSearch:
               this.onAssetPickerSearch(var3);
               break;
            case AssetPickerSelect:
               this.onAssetPickerSelect(var3);
               break;
            case ConfirmAssetPicker:
               this.onConfirmAssetPicker();
               break;
            case PreviewSound:
               this.onPreviewSound(var3, var2);
               break;
            case CancelAssetPicker:
               this.onCancelAssetPicker();
         }
      }
   }

   class="kw">private void buildWorldDropdown(@Nonnull UICommandBuilder var1) {
      ObjectArrayList var2 = new ObjectArrayList();

      for (World var4 : Universe.get().getWorlds().values()) {
         String var5 = var4.getName().toLowerCase(Locale.ROOT);
         var2.add(new DropdownEntryInfo(LocalizableString.fromString(var5), var5));
      }

      var1.set("#WorldDropdown.Entries", var2);
      var1.set("#WorldDropdown.Value", this.selectedWorld);
      var1.set("#FilterField.Value", this.filterText);
   }

   class="kw">private void buildTabs(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2) {
      var1.clear("#TabButtons");
      int var3 = 0;

      for (TriggerVolumeInspectorPage.InspectorTab var7 : TriggerVolumeInspectorPage.InspectorTab.values()) {
         String var8 = "#TabButtons[" + var3 + "]";
         var1.append("#TabButtons", "Pages/TriggerVolume/TriggerVolumeInspectorTabButton.ui");
         var1.set(var8 + ".Text", var7.label());
         var1.set(var8 + ".TooltipText", var7.tooltip());
         var1.set(var8 + ".Disabled", this.selectedTab == var7);
         var2.addEventBinding(
            CustomUIEventBindingType.Activating,
            var8,
            new EventData().append("Action", TriggerVolumeInspectorPage.Action.ChangeTab.name()).append("Tab", var7.name())
         );
         var3++;
      }
   }

   class="kw">private void buildList(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2) {
      var1.clear("#ListContainer");
      this.currentRows.clear();
      TriggerVolumeManager var3 = getManagerForWorld(this.selectedWorld);
      if (var3 != null && (!var3.getVolumesMap().isEmpty() || !var3.getGroupsMap().isEmpty())) {
         LinkedHashMap var4 = new LinkedHashMap<>();

         for (GroupEntry var6 : var3.getGroupsMap().values()) {
            if (!this.deletedGroups.contains(var6.getId())) {
               var4.put(var6.getId(), new ArrayList<>());
            }
         }

         ArrayList var14 = new ArrayList<>();

         for (VolumeEntry var7 : var3.getVolumesMap().values()) {
            if (!this.deletedVolumes.contains(var7.getId())) {
               TriggerVolumeInspectorDrafts.VolumeDraft var8 = this.volumeDrafts.get(var7.getId());
               String var9 = var8 != null ? var8.groupId : var7.getGroupId();
               if (var9 != null && var4.containsKey(var9)) {
                  var4.get(var9).add(var7);
               } else {
                  var14.add(var7);
               }
            }
         }

         int var16 = 0;

         for (GroupEntry var19 : var3.getGroupsMap().values()) {
            if (!this.deletedGroups.contains(var19.getId())) {
               TriggerVolumeInspectorDrafts.GroupDraft var21 = this.draftForGroup(var19);
               List var10 = var4.getOrDefault(var19.getId(), List.of());
               if (this.matchesGroupFilter(var21.id, var19, var10)) {
                  var16 = this.appendGroupRow(var1, var2, var16, var19.getId(), var21.id, var21.color);

                  for (VolumeEntry var12 : var10) {
                     if (this.matchesVolumeFilter(var12)) {
                        TriggerVolumeInspectorDrafts.VolumeDraft var13 = this.draftForVolume(var12);
                        var16 = this.appendVolumeRow(var1, var2, var16, var12.getId(), var13.id, true, var21.color, var13.tags);
                     }
                  }
               }
            }
         }

         List var18 = var14.stream().filter(this::matchesVolumeFilter).toList();
         if (!var18.isEmpty()) {
            var1.append("#ListContainer", "Pages/TriggerVolume/TriggerVolumeInspectorSectionLabel.ui");
            var1.set("#ListContainer[" + var16 + "].Text", Message.translation("server.customUI.triggerVolumeBrowse.ungrouped"));
            var16++;

            for (VolumeEntry var22 : var18) {
               TriggerVolumeInspectorDrafts.VolumeDraft var23 = this.draftForVolume(var22);
               var16 = this.appendVolumeRow(var1, var2, var16, var22.getId(), var23.id, false, 0, var23.tags);
            }
         }

         if (var16 == 0) {
            this.appendListMessage(var1, Message.translation("server.customUI.triggerVolumeBrowse.emptyState"));
         } else {
            this.scrollSelectedRowToView(var1);
         }
      } else {
         this.appendListMessage(var1, Message.translation("server.customUI.triggerVolumeBrowse.emptyState"));
      }
   }

   class="kw">private int appendGroupRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, int var6) {
      String var7 = "#ListContainer[" + var3 + "]";
      var1.append("#ListContainer", "Pages/TriggerVolume/TriggerVolumeBrowseGroupRow.ui");
      var1.set(var7 + " #Label.Text", var5);
      var1.setObject(var7 + " #ColorSwatch.Background", colorPatch(var6));
      var1.set(var7 + ".Style", this.selectedIsGroup && var4.equals(this.selectedId) ? SELECTED_ROW_STYLE : NORMAL_ROW_STYLE);
      var2.addEventBinding(
         CustomUIEventBindingType.Activating,
         var7,
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.Select.name()).append("Id", var4).append("IsGroup", "true"),
         false
      );
      this.currentRows.add(new TriggerVolumeInspectorPage.RowEntry(var4, true, var3));
      class="kw">return var3 + 1;
   }

   class="kw">private int appendVolumeRow(
      @Nonnull UICommandBuilder var1,
      @Nonnull UIEventBuilder var2,
      int var3,
      @Nonnull String var4,
      @Nonnull String var5,
      boolean var6,
      int var7,
      @Nonnull Map<String, String> var8
   ) {
      String var9 = "#ListContainer[" + var3 + "]";
      var1.append("#ListContainer", "Pages/TriggerVolume/TriggerVolumeBrowseVolumeRow.ui");
      var1.set(var9 + " #Label.Text", var5);
      int var10 = this.appendRowTagChips(var1, var9 + " #TagChips", var8, var6);
      var1.set(var9 + " #TagChips.Visible", var10 > 0);
      if (var10 > 0) {
         Anchor var11 = new Anchor();
         var11.setHeight(Value.of(var10 == 1 ? 44 : 64));
         var1.setObject(var9 + ".Anchor", var11);
      }

      var1.set(var9 + " #Indent.Visible", var6);
      var1.set(var9 + " #ColorBar.Visible", var6);
      if (var6) {
         var1.setObject(var9 + " #ColorBar.Background", colorPatch(var7));
      }

      var1.set(var9 + ".Style", !this.selectedIsGroup && var4.equals(this.selectedId) ? SELECTED_ROW_STYLE : NORMAL_ROW_STYLE);
      var2.addEventBinding(
         CustomUIEventBindingType.Activating,
         var9,
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.Select.name()).append("Id", var4).append("IsGroup", "false"),
         false
      );
      this.currentRows.add(new TriggerVolumeInspectorPage.RowEntry(var4, false, var3));
      class="kw">return var3 + 1;
   }

   class="kw">private void appendListMessage(@Nonnull UICommandBuilder var1, @Nonnull Message var2) {
      var1.append("#ListContainer", "Pages/TriggerVolume/TriggerVolumeInspectorSectionLabel.ui");
      var1.set("#ListContainer[0].Text", var2);
   }

   class="kw">private void applyPreSelection(@Nonnull UICommandBuilder var1) {
      for (TriggerVolumeInspectorPage.RowEntry var3 : this.currentRows) {
         if (var3.isGroup == this.preSelectedIsGroup && var3.id.equals(this.preSelectedVolumeId)) {
            this.selectedId = var3.id;
            this.selectedIsGroup = var3.isGroup;
            var1.set("#ListContainer[" + var3.listIndex + "].Style", SELECTED_ROW_STYLE);
            var1.set("#ListContainer.ScrollChildIndexIntoView", var3.listIndex);
            class="kw">return;
         }
      }
   }

   class="kw">private void scrollSelectedRowToView(@Nonnull UICommandBuilder var1) {
      if (this.pendingScrollToSelection && this.selectedId != null) {
         for (TriggerVolumeInspectorPage.RowEntry var3 : this.currentRows) {
            if (var3.isGroup == this.selectedIsGroup && var3.id.equals(this.selectedId)) {
               var1.set("#ListContainer.ScrollChildIndexIntoView", var3.listIndex);
               this.pendingScrollToSelection = false;
               class="kw">return;
            }
         }
      }
   }

   class="kw">private void buildSelectedPane(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2) {
      var1.clear("#VolumeTab");
      var1.clear("#TagsList");
      var1.clear("#EffectListContainer");
      var1.clear("#EffectDetailPanel");
      var1.set("#NoSelectionLabel.Visible", this.selectedId == null);
      this.buildSelectedNameHeader(var1);
      this.buildTitleTagChips(var1);
      var1.set("#VolumeTab.Visible", this.selectedId != null && this.selectedTab == TriggerVolumeInspectorPage.InspectorTab.VOLUME);
      var1.set("#TagsTab.Visible", this.selectedId != null && this.selectedTab == TriggerVolumeInspectorPage.InspectorTab.TAGS);
      var1.set("#EffectsTab.Visible", this.selectedId != null && this.selectedTab == TriggerVolumeInspectorPage.InspectorTab.EFFECTS);
      var1.set("#DeleteButton.Disabled", this.selectedId == null);
      var1.set("#SavePresetButton.Disabled", this.selectedId == null);
      var1.set("#LoadPresetButton.Disabled", this.selectedId == null);
      if (this.selectedId != null) {
         class="kw">switch (this.selectedTab) {
            case VOLUME:
               this.buildVolumeTab(var1, var2);
               break;
            case EFFECTS:
               this.buildEffectsTab(var1, var2);
               break;
            case TAGS:
               this.buildTagsTab(var1, var2);
         }
      }
   }

   class="kw">private void buildSelectedNameHeader(@Nonnull UICommandBuilder var1) {
      String var2 = this.selectedDraftId();
      var1.set("#SelectedNameHeader.Visible", var2 != null);
      if (var2 == null) {
         this.renamingSelected = false;
         var1.set("#SelectedNameValidation.Visible", false);
      } else {
         var1.set("#SelectedNameTitle.Text", var2);
         var1.set("#SelectedNameTitle.Visible", !this.renamingSelected);
         var1.set("#SelectedNameSpacer.Visible", !this.renamingSelected);
         var1.set("#SelectedNameEditButton.Visible", !this.renamingSelected);
         var1.set("#SelectedNameFieldContainer.Visible", this.renamingSelected);
         var1.set("#SelectedNameField.Value", var2);
         var1.set("#SelectedNameEditButton.TooltipText", Message.translation("server.customUI.triggerVolumeInspector.renameToggle.tooltip"));
         var1.set("#SelectedNameConfirmButton.TooltipText", Message.translation("server.customUI.triggerVolumeInspector.renameConfirm.tooltip"));
         var1.set("#SelectedNameCancelButton.TooltipText", Message.translation("server.customUI.triggerVolumeInspector.renameCancel.tooltip"));
         Message var3 = this.idValidationMessage(var2);
         var1.set("#SelectedNameValidation.Visible", this.renamingSelected && var3 != null);
         if (var3 != null) {
            var1.set("#SelectedNameValidation.Text", var3);
         }
      }
   }

   class="kw">private void buildTitleTagChips(@Nonnull UICommandBuilder var1) {
      var1.clear("#TitleTagChips");
      var1.clear("#TitleTagChipsOverflow");
      Map var2 = null;
      if (this.selectedIsGroup) {
         TriggerVolumeInspectorDrafts.GroupDraft var3 = this.selectedGroupDraft();
         if (var3 != null) {
            var2 = var3.tags;
         }
      } else {
         TriggerVolumeInspectorDrafts.VolumeDraft var5 = this.selectedVolumeDraft();
         if (var5 != null) {
            var2 = var5.tags;
         }
      }

      if (this.selectedId != null && var2 != null) {
         ArrayList var6 = new ArrayList<>(var2.entrySet());
         int var4 = this.fillTitleChipRows(var1, "#TitleTagChips", var6, 0, 579, 1, false);
         if (var4 < var6.size()) {
            this.fillTitleChipRows(var1, "#TitleTagChipsOverflow", var6, var4, 579, 2, true);
         }
      }
   }

   class="kw">private int fillTitleChipRows(
      @Nonnull UICommandBuilder var1, @Nonnull String var2, @Nonnull List<Entry<String, String>> var3, int var4, int var5, int var6, boolean var7
   ) {
      int var8 = 0;
      int var9 = 1;
      int var10 = 0;

      int var11;
      for (var11 = var4; var11 < var3.size(); var11++) {
         Entry var12 = var3.get(var11);
         String var13 = var12.getValue();
         String var14 = var13 != null && !var13.isEmpty() ? var12.getKey() + ": " + var13 : var12.getKey();
         int var15 = chipWidth(var14);
         if (var10 > 0 && var10 + var15 > var5) {
            if (var9 == var6) {
               if (var7) {
                  this.appendChip(var1, var2, var8, "+" + (var3.size() - var11), 5596014);
               }
               break;
            }

            var9++;
            var10 = 0;
         }

         this.appendChip(var1, var2, var8++, var14, tagChipColor(var12.getKey()));
         var10 += var15;
      }

      class="kw">return var11;
   }

   @Nullable
   class="kw">private String selectedDraftId() {
      if (this.selectedId == null) {
         class="kw">return null;
      } else if (this.selectedIsGroup) {
         TriggerVolumeInspectorDrafts.GroupDraft var2 = this.selectedGroupDraft();
         class="kw">return var2 != null ? var2.id : null;
      } else {
         TriggerVolumeInspectorDrafts.VolumeDraft var1 = this.selectedVolumeDraft();
         class="kw">return var1 != null ? var1.id : null;
      }
   }

   class="kw">private void buildVolumeTab(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2) {
      int var3 = 0;
      if (this.selectedIsGroup) {
         TriggerVolumeInspectorDrafts.GroupDraft var4 = this.selectedGroupDraft();
         if (var4 == null) {
            class="kw">return;
         }

         var3 = this.addVolumeSectionLabel(var1, var3, "identity");
         var3 = this.addVolumeTextRow(var1, var2, var3, "id", var4.id);
         var3 = this.addVolumeColorRow(var1, var2, var3, "color", colorToHex(var4.color));
         var3 = this.addVolumeSectionLabel(var1, var3, "transform");
         var3 = this.addVolumeVec3Row(var1, var2, var3, "position", var4.origin);
         var3 = this.addVolumeSectionLabel(var1, var3, "behavior");
         var3 = this.addVolumeDropdownRow(var1, var2, var3, "targetTypes", targetTypeEntries(), targetTypesValue(var4.targetTypes));
         var3 = this.addVolumeCheckboxRow(var1, var2, var3, "enabled", var4.enabled);
         var3 = this.addVolumeCheckboxRow(var1, var2, var3, "rotateEffectsOnPaste", var4.rotateEffectsOnPaste);
         var3 = this.addVolumeSectionLabel(var1, var3, "timing");
         var3 = this.addVolumeDropdownRow(var1, var2, var3, "conditionTiming", conditionTimingEntries(), var4.conditionTiming.name());
         var3 = this.addVolumeDropdownRow(var1, var2, var3, "rejectionDelayMode", rejectionDelayModeEntries(), var4.rejectionDelayMode.name());
         var3 = this.addReadonlyTextRow(var1, var3, "members", String.join(", ", var4.memberVolumeIds));
      } else {
         TriggerVolumeInspectorDrafts.VolumeDraft var38 = this.selectedVolumeDraft();
         if (var38 == null) {
            class="kw">return;
         }

         var3 = this.addVolumeSectionLabel(var1, var3, "identity");
         var3 = this.addVolumeTextRow(var1, var2, var3, "id", var38.id);
         var3 = this.addVolumeColorRow(var1, var2, var3, "color", var38.color != null ? colorToHex(var38.color) : "#00CCCC");
         var3 = this.addVolumeSectionLabel(var1, var3, "transform");
         var3 = this.addVolumeDropdownRow(var1, var2, var3, "shape", shapeEntries(), var38.shapeType.name());
         var3 = this.addVolumeVec3Row(var1, var2, var3, "position", var38.position, true);
         var3 = this.addVolumeDimensionsRow(var1, var2, var3, var38.shapeType, var38.dimensions);
         var3 = this.addVolumeSectionLabel(var1, var3, "behavior");
         var3 = this.addVolumeDropdownRow(var1, var2, var3, "targetTypes", targetTypeEntries(), targetTypesValue(var38.targetTypes));
         var3 = this.addVolumeDropdownRow(var1, var2, var3, "projectileSource", projectileSourceEntries(), var38.projectileSource.name());
         var3 = this.addVolumeCheckboxRow(var1, var2, var3, "enabled", var38.enabled);
         var3 = this.addVolumeCheckboxRow(var1, var2, var3, "keepLoaded", var38.keepLoaded);
         var3 = this.addVolumeCheckboxRow(var1, var2, var3, "rotateEffectsOnPaste", var38.rotateEffectsOnPaste);
         var3 = this.addVolumeCheckboxRow(var1, var2, var3, "cancelDelayedOnExit", var38.cancelDelayedOnExit);
         var3 = this.addVolumeSectionLabel(var1, var3, "timing");
         var3 = this.addVolumeNumberRow(var1, var2, var3, "activationDelay", String.valueOf(var38.activationDelay), 2);
         var3 = this.addVolumeNumberRow(var1, var2, var3, "cooldown", String.valueOf(var38.cooldown), 2);
         var3 = this.addVolumeDropdownRow(var1, var2, var3, "cooldownMode", cooldownModeEntries(), var38.cooldownMode.name());
         var3 = this.addVolumeDropdownRow(var1, var2, var3, "conditionTiming", conditionTimingEntries(), var38.conditionTiming.name());
         var3 = this.addVolumeDropdownRow(var1, var2, var3, "rejectionDelayMode", rejectionDelayModeEntries(), var38.rejectionDelayMode.name());
      }
   }

   class="kw">private int addVolumeSectionLabel(@Nonnull UICommandBuilder var1, int var2, @Nonnull String var3) {
      String var4 = "#VolumeTab[" + var2 + "]";
      var1.append("#VolumeTab", "Pages/TriggerVolume/TriggerVolumeInspectorVolumeSectionLabel.ui");
      var1.set(var4 + " #Title.Text", Message.translation("server.customUI.triggerVolumeInspector.section." + var3));
      class="kw">return var2 + 1;
   }

   class="kw">private int addVolumeTextRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5) {
      String var6 = "#VolumeTab[" + var3 + "]";
      var1.append("#VolumeTab", "Pages/TriggerVolume/TriggerVolumeInspectorTextRow.ui");
      var1.set(var6 + " #Label.Text", fieldLabel(var4));
      var1.set(var6 + " #Label.TooltipText", volumeFieldTooltip(var4));
      var1.set(var6 + " #Input.Value", var5);
      this.setIdValidation(var1, var6, var4, var5);
      var2.addEventBinding(CustomUIEventBindingType.ValueChanged, var6 + " #Input", volumeFieldEvent(var4).append("@ParamValue", var6 + " #Input.Value"), false);
      var2.addEventBinding(
         CustomUIEventBindingType.FocusLost,
         var6 + " #Input",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.CommitName.name()).append("@ParamValue", var6 + " #Input.Value"),
         false
      );
      class="kw">return var3 + 1;
   }

   class="kw">private void setIdValidation(@Nonnull UICommandBuilder var1, @Nonnull String var2, @Nonnull String var3, @Nonnull String var4) {
      Message var5 = "id".equals(var3) ? this.idValidationMessage(var4) : null;
      if (var5 == null) {
         var1.set(var2 + " #ValidationLabel.Visible", false);
      } else {
         var1.set(var2 + " #ValidationLabel.Visible", true);
         var1.set(var2 + " #ValidationLabel.Text", var5);
      }
   }

   class="kw">private int addVolumeColorRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5) {
      String var6 = "#VolumeTab[" + var3 + "]";
      var1.append("#VolumeTab", "Pages/TriggerVolume/TriggerVolumeInspectorColorRow.ui");
      var1.set(var6 + " #Label.Text", fieldLabel(var4));
      var1.set(var6 + " #Label.TooltipText", volumeFieldTooltip(var4));
      var1.set(var6 + " #Input.Color", var5);
      var2.addEventBinding(CustomUIEventBindingType.ValueChanged, var6 + " #Input", volumeFieldEvent(var4).append("@ParamValue", var6 + " #Input.Color"), false);
      class="kw">return var3 + 1;
   }

   class="kw">private int addReadonlyTextRow(@Nonnull UICommandBuilder var1, int var2, @Nonnull String var3, @Nonnull String var4) {
      String var5 = "#VolumeTab[" + var2 + "]";
      var1.append("#VolumeTab", "Pages/TriggerVolume/TriggerVolumeBrowsePropertyRow.ui");
      var1.set(var5 + " #Key.Text", fieldLabel(var3));
      var1.set(var5 + " #Key.TooltipText", volumeFieldTooltip(var3));
      var1.set(var5 + " #Value.Text", var4);
      class="kw">return var2 + 1;
   }

   class="kw">private int addVolumeNumberRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, int var6) {
      String var7 = "#VolumeTab[" + var3 + "]";
      var1.append("#VolumeTab", var6 > 0 ? "Pages/TriggerVolume/TriggerVolumeInspectorNumberRow.ui" : "Pages/TriggerVolume/TriggerVolumeInspectorIntRow.ui");
      var1.set(var7 + " #Label.Text", fieldLabel(var4));
      var1.set(var7 + " #Label.TooltipText", volumeFieldTooltip(var4));

      try {
         var1.set(var7 + " #Input.Value", Double.parseDouble(var5));
      } catch (NumberFormatException var9) {
         var1.set(var7 + " #Input.Value", 0.0);
      }

      var2.addEventBinding(
         CustomUIEventBindingType.ValueChanged, var7 + " #Input", volumeFieldEvent(var4).append("@ParamNumericValue", var7 + " #Input.Value"), false
      );
      class="kw">return var3 + 1;
   }

   class="kw">private int addVolumeCheckboxRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, boolean var5) {
      String var6 = "#VolumeTab[" + var3 + "]";
      var1.append("#VolumeTab", "Pages/TriggerVolume/TriggerVolumeInspectorCheckboxRow.ui");
      var1.set(var6 + " #Label.Text", fieldLabel(var4));
      var1.set(var6 + " #Label.TooltipText", volumeFieldTooltip(var4));
      var1.set(var6 + " #Input.Value", var5);
      var2.addEventBinding(CustomUIEventBindingType.ValueChanged, var6 + " #Input", volumeFieldEvent(var4).append("@ParamBool", var6 + " #Input.Value"), false);
      class="kw">return var3 + 1;
   }

   class="kw">private int addVolumeDropdownRow(
      @Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull List<DropdownEntryInfo> var5, @Nonnull String var6
   ) {
      String var7 = "#VolumeTab[" + var3 + "]";
      var1.append("#VolumeTab", "Pages/TriggerVolume/TriggerVolumeInspectorDropdownRow.ui");
      var1.set(var7 + " #Label.Text", fieldLabel(var4));
      var1.set(var7 + " #Label.TooltipText", volumeFieldTooltip(var4));
      var1.set(var7 + " #Input.Entries", new ObjectArrayList(var5));
      var1.set(var7 + " #Input.Value", var6);
      var2.addEventBinding(CustomUIEventBindingType.ValueChanged, var7 + " #Input", volumeFieldEvent(var4).append("@ParamValue", var7 + " #Input.Value"), false);
      class="kw">return var3 + 1;
   }

   class="kw">private int addVolumeVec3Row(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull Vector3d var5) {
      class="kw">return this.addVolumeVec3Row(var1, var2, var3, var4, var5, false);
   }

   class="kw">private int addVolumeVec3Row(
      @Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull Vector3d var5, boolean var6
   ) {
      String var7 = "#VolumeTab[" + var3 + "]";
      var1.append("#VolumeTab", "Pages/TriggerVolume/TriggerVolumeInspectorVec3Row.ui");
      var1.set(var7 + " #Label.Text", fieldLabel(var4));
      var1.set(var7 + " #Label.TooltipText", volumeFieldTooltip(var4));
      var1.set(var7 + " #X.Value", var5.x());
      var1.set(var7 + " #Y.Value", var5.y());
      var1.set(var7 + " #Z.Value", var5.z());

      for (String var9 : List.of("X", "Y", "Z")) {
         var2.addEventBinding(
            CustomUIEventBindingType.ValueChanged,
            var7 + " #" + var9,
            volumeFieldEvent(var4).append("@VecX", var7 + " #X.Value").append("@VecY", var7 + " #Y.Value").append("@VecZ", var7 + " #Z.Value"),
            false
         );
      }

      if (var6) {
         var1.set(var7 + " #TeleportButton.Visible", true);
         var2.addEventBinding(
            CustomUIEventBindingType.Activating, var7 + " #TeleportButton", new EventData().append("Action", TriggerVolumeInspectorPage.Action.Teleport.name())
         );
      }

      class="kw">return var3 + 1;
   }

   class="kw">private int addVolumeDimensionsRow(
      @Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull TriggerVolumeShapeType var4, @Nonnull Vector3d var5
   ) {
      class="kw">return class="kw">switch (var4) {
         case Box -> this.addBoxDimensionsRow(var1, var2, var3, var5);
         case Sphere -> this.addSphereDimensionsRow(var1, var2, var3, var5);
         case Cylinder -> this.addCylinderDimensionsRow(var1, var2, var3, var5);
      };
   }

   class="kw">private int addBoxDimensionsRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull Vector3d var4) {
      String var5 = "#VolumeTab[" + var3 + "]";
      var1.append("#VolumeTab", "Pages/TriggerVolume/TriggerVolumeInspectorDimensionsBoxRow.ui");
      setDimensionsHeader(var1, var5);
      var1.set(var5 + " #XLabel.Text", Message.translation("server.customUI.triggerVolumeInspector.field.dimensions.x"));
      var1.set(var5 + " #YLabel.Text", Message.translation("server.customUI.triggerVolumeInspector.field.dimensions.y"));
      var1.set(var5 + " #ZLabel.Text", Message.translation("server.customUI.triggerVolumeInspector.field.dimensions.z"));
      var1.set(var5 + " #X.Value", var4.x());
      var1.set(var5 + " #Y.Value", var4.y());
      var1.set(var5 + " #Z.Value", var4.z());

      for (String var7 : List.of("X", "Y", "Z")) {
         var2.addEventBinding(
            CustomUIEventBindingType.ValueChanged,
            var5 + " #" + var7,
            volumeFieldEvent("dimensions").append("@VecX", var5 + " #X.Value").append("@VecY", var5 + " #Y.Value").append("@VecZ", var5 + " #Z.Value"),
            false
         );
      }

      class="kw">return var3 + 1;
   }

   class="kw">private int addSphereDimensionsRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull Vector3d var4) {
      String var5 = "#VolumeTab[" + var3 + "]";
      var1.append("#VolumeTab", "Pages/TriggerVolume/TriggerVolumeInspectorDimensionsSphereRow.ui");
      setDimensionsHeader(var1, var5);
      var1.set(var5 + " #RadiusLabel.Text", Message.translation("server.customUI.triggerVolumeInspector.field.dimensions.radius"));
      var1.set(var5 + " #Radius.Value", var4.x());
      var2.addEventBinding(
         CustomUIEventBindingType.ValueChanged,
         var5 + " #Radius",
         volumeFieldEvent("dimensionsRadius").append("@ParamNumericValue", var5 + " #Radius.Value"),
         false
      );
      class="kw">return var3 + 1;
   }

   class="kw">private int addCylinderDimensionsRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull Vector3d var4) {
      String var5 = "#VolumeTab[" + var3 + "]";
      var1.append("#VolumeTab", "Pages/TriggerVolume/TriggerVolumeInspectorDimensionsCylinderRow.ui");
      setDimensionsHeader(var1, var5);
      var1.set(var5 + " #RadiusLabel.Text", Message.translation("server.customUI.triggerVolumeInspector.field.dimensions.radius"));
      var1.set(var5 + " #HeightLabel.Text", Message.translation("server.customUI.triggerVolumeInspector.field.dimensions.height"));
      var1.set(var5 + " #Radius.Value", var4.x());
      var1.set(var5 + " #Height.Value", var4.y());

      for (String var7 : List.of("Radius", "Height")) {
         var2.addEventBinding(
            CustomUIEventBindingType.ValueChanged,
            var5 + " #" + var7,
            volumeFieldEvent("dimensionsCylinder").append("@VecX", var5 + " #Radius.Value").append("@VecY", var5 + " #Height.Value"),
            false
         );
      }

      class="kw">return var3 + 1;
   }

   class="kw">private class="kw">static void setDimensionsHeader(@Nonnull UICommandBuilder var0, @Nonnull String var1) {
      var0.set(var1 + " #Label.Text", fieldLabel("dimensions"));
      var0.set(var1 + " #Label.TooltipText", volumeFieldTooltip("dimensions"));
   }

   @Nonnull
   class="kw">private class="kw">static EventData volumeFieldEvent(@Nonnull String var0) {
      class="kw">return new EventData().append("Action", TriggerVolumeInspectorPage.Action.UpdateVolumeField.name()).append("ParamKey", var0);
   }

   class="kw">private void buildTagsTab(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2) {
      Map var3 = this.selectedIsGroup ? this.selectedGroupDraft().tags : this.selectedVolumeDraft().tags;
      int var4 = 0;

      for (Entry var6 : var3.entrySet()) {
         String var7 = "#TagsList[" + var4 + "]";
         var1.append("#TagsList", "Pages/TriggerVolume/TriggerVolumeBrowseTagRow.ui");
         int var8 = tagChipColor(var6.getKey());
         var1.set(var7 + " #TagLabel.Text", var6.getKey() + ": " + var6.getValue());
         var1.setObject(var7 + " #TagLabel.Background", tagColorPatch(var8));
         var2.addEventBinding(
            CustomUIEventBindingType.Activating,
            var7 + " #RemoveButton",
            new EventData().append("Action", TriggerVolumeInspectorPage.Action.RemoveTag.name()).append("RemoveTagKey", var6.getKey())
         );
         var4++;
      }
   }

   class="kw">private void buildEffectsTab(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2) {
      this.buildAddEventTypeDropdown(var1);
      this.buildAddEntryDropdown(var1);
      this.buildAddTargetDropdown(var1);
      this.buildAddEffectDropdown(var1);
      this.buildEffectList(var1, var2);
      this.buildEffectDetailPanel(var1, var2);
   }

   class="kw">private void bindStaticEvents(@Nonnull UIEventBuilder var1) {
      this.presetPackBrowser.buildEventBindings(var1, "#BrowsePackButton");
      var1.addEventBinding(
         CustomUIEventBindingType.ValueChanged,
         "#WorldDropdown",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.ChangeWorld.name()).append("@WorldName", "#WorldDropdown.Value"),
         false
      );
      var1.addEventBinding(
         CustomUIEventBindingType.ValueChanged,
         "#FilterField",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.FilterChanged.name()).append("@FilterText", "#FilterField.Value"),
         false
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating,
         "#AddTagButton",
         new EventData()
            .append("Action", TriggerVolumeInspectorPage.Action.UpdateTag.name())
            .append("@TagKey", "#TagKeyField.Value")
            .append("@TagValues", "#TagValuesField.Value")
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating, "#DeleteButton", new EventData().append("Action", TriggerVolumeInspectorPage.Action.DeleteSelection.name())
      );
      var1.addEventBinding(CustomUIEventBindingType.Activating, "#SaveButton", new EventData().append("Action", TriggerVolumeInspectorPage.Action.Save.name()));
      var1.addEventBinding(
         CustomUIEventBindingType.Activating, "#DiscardButton", new EventData().append("Action", TriggerVolumeInspectorPage.Action.Discard.name())
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating,
         "#AddEffectButton",
         new EventData()
            .append("Action", TriggerVolumeInspectorPage.Action.AddEffect.name())
            .append("@EffectType", "#AddEffectDropdown.Value")
            .append("@AddTargetKind", "#AddTargetDropdown.Value")
            .append("@AddEventType", "#AddEventTypeDropdown.Value")
            .append("@AddEntry", "#AddEntryDropdown.Value")
      );
      var1.addEventBinding(
         CustomUIEventBindingType.ValueChanged, "#SelectedNameField", volumeFieldEvent("id").append("@ParamValue", "#SelectedNameField.Value"), false
      );
      var1.addEventBinding(
         CustomUIEventBindingType.FocusLost,
         "#SelectedNameField",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.CommitName.name()).append("@ParamValue", "#SelectedNameField.Value"),
         false
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating,
         "#SelectedNameEditButton",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.ToggleRenameSelected.name())
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating,
         "#SelectedNameConfirmButton",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.ConfirmRenameSelected.name())
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating,
         "#SelectedNameCancelButton",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.CancelRenameSelected.name())
      );
      var1.addEventBinding(
         CustomUIEventBindingType.ValueChanged,
         "#AddEffectDropdown",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.UpdateAddEffectType.name()).append("@EffectType", "#AddEffectDropdown.Value"),
         false
      );
      var1.addEventBinding(
         CustomUIEventBindingType.ValueChanged,
         "#AddTargetDropdown",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.UpdateAddTarget.name()).append("@AddTargetKind", "#AddTargetDropdown.Value"),
         false
      );
      var1.addEventBinding(
         CustomUIEventBindingType.ValueChanged,
         "#AddEventTypeDropdown",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.UpdateAddEventType.name()).append("@AddEventType", "#AddEventTypeDropdown.Value"),
         false
      );
      var1.addEventBinding(
         CustomUIEventBindingType.ValueChanged,
         "#AddEntryDropdown",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.UpdateAddEntry.name()).append("@AddEntry", "#AddEntryDropdown.Value"),
         false
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating, "#RemoveEffectButton", new EventData().append("Action", TriggerVolumeInspectorPage.Action.RemoveEffect.name())
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating,
         "#DuplicateEffectButton",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.DuplicateEffect.name())
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating, "#MoveEffectUpButton", new EventData().append("Action", TriggerVolumeInspectorPage.Action.MoveEffectUp.name())
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating,
         "#MoveEffectDownButton",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.MoveEffectDown.name())
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating, "#SavePresetButton", new EventData().append("Action", TriggerVolumeInspectorPage.Action.OpenPresetSave.name())
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating, "#LoadPresetButton", new EventData().append("Action", TriggerVolumeInspectorPage.Action.OpenPresetLoad.name())
      );
      var1.addEventBinding(
         CustomUIEventBindingType.ValueChanged,
         "#PresetName #Input",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.PresetNameChanged.name()).append("@PresetName", "#PresetName #Input.Value"),
         false
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating,
         "#ConfirmSavePresetButton",
         new EventData()
            .append("Action", TriggerVolumeInspectorPage.Action.ConfirmSavePreset.name())
            .append("@PresetName", "#PresetName #Input.Value")
            .append("@IncludeVolumeSettings", "#IncludeVolumeSettings #Input.Value")
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating,
         "#CancelSavePresetButton",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.CancelPresetSave.name())
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating,
         "#CancelLoadPresetButton",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.CancelPresetLoad.name())
      );
      var1.addEventBinding(
         CustomUIEventBindingType.ValueChanged,
         "#AssetPickerPage #SearchInput",
         new EventData()
            .append("Action", TriggerVolumeInspectorPage.Action.AssetPickerSearch.name())
            .append("@AssetPickerQuery", "#AssetPickerPage #SearchInput.Value"),
         false
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating,
         "#ConfirmAssetPickerButton",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.ConfirmAssetPicker.name())
      );
      var1.addEventBinding(
         CustomUIEventBindingType.Activating,
         "#CancelAssetPickerButton",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.CancelAssetPicker.name())
      );
   }

   class="kw">private void onSelect(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.id != null) {
         this.selectedId = var1.id;
         this.selectedIsGroup = "true".equals(var1.isGroup);
         this.selectedEffectIndex = -1;
         this.lastCommittedEntry = -1;
         this.renamingSelected = false;
         this.pendingScrollToSelection = false;
         this.syncSelectionToTool();
         this.rebuildAll();
      }
   }

   class="kw">private void onToggleRenameSelected() {
      if (this.selectedId != null) {
         this.renamingSelected = !this.renamingSelected;
         this.renameOriginalId = this.renamingSelected ? this.selectedDraftId() : null;
         this.rebuildAll();
      }
   }

   class="kw">private void onConfirmRenameSelected() {
      if (this.renamingSelected) {
         this.renamingSelected = false;
         this.renameOriginalId = null;
         this.rebuildAll();
      }
   }

   class="kw">private void onCancelRenameSelected() {
      if (this.renamingSelected) {
         if (this.renameOriginalId != null) {
            if (this.selectedIsGroup) {
               TriggerVolumeInspectorDrafts.GroupDraft var1 = this.selectedGroupDraft();
               if (var1 != null) {
                  var1.id = this.renameOriginalId;
               }
            } else {
               TriggerVolumeInspectorDrafts.VolumeDraft var2 = this.selectedVolumeDraft();
               if (var2 != null) {
                  var2.id = this.renameOriginalId;
               }
            }
         }

         this.renamingSelected = false;
         this.renameOriginalId = null;
         this.rebuildAll();
      }
   }

   class="kw">private void onChangeWorld(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.worldName != null && !var1.worldName.equals(this.selectedWorld)) {
         TriggerVolumeManager var2 = getManagerForWorld(this.selectedWorld);
         if (var2 != null && !this.saveDrafts(var2, false)) {
            this.revertRejectedDraftIds();
            this.rebuildAll();
         } else {
            this.hidePastePrefabPreview();
            if (var2 != null) {
               var2.clearSelectionObserver(this.playerRef.getUuid(), this.selectionObserver);
               var2.clearVolumeUpdateObserver(this.playerRef.getUuid(), this.volumeUpdateObserver);
            }

            this.clearDraftState();
            this.selectedWorld = var1.worldName;
            this.selectedId = null;
            this.selectedIsGroup = false;
            this.selectedEffectIndex = -1;
            this.lastCommittedEntry = -1;
            this.registerSelectionObserver();
            this.registerVolumeUpdateObserver();
            this.rebuildAll();
         }
      }
   }

   class="kw">private void onFilterChanged(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      this.filterText = var1.filterText != null ? var1.filterText.trim().toLowerCase(Locale.ROOT) : "";
      this.rebuildAll();
   }

   class="kw">private void onChangeTab(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.tab != null) {
         try {
            this.selectedTab = TriggerVolumeInspectorPage.InspectorTab.valueOf(var1.tab);
            this.rebuildAll();
         } catch (IllegalArgumentException var3) {
         }
      }
   }

   class="kw">private void onUpdateVolumeField(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.paramKey != null && this.selectedId != null) {
         boolean var2 = !this.selectedIsGroup && "shape".equals(var1.paramKey);
         if (this.selectedIsGroup) {
            TriggerVolumeInspectorDrafts.GroupDraft var3 = this.selectedGroupDraft();
            if (var3 == null) {
               class="kw">return;
            }

            this.updateGroupField(var3, var1);
            if ("id".equals(var1.paramKey)) {
               class="kw">return;
            }
         } else {
            TriggerVolumeInspectorDrafts.VolumeDraft var4 = this.selectedVolumeDraft();
            if (var4 == null) {
               class="kw">return;
            }

            this.updateVolumeField(var4, var1);
            if ("id".equals(var1.paramKey)) {
               class="kw">return;
            }
         }

         if (var2) {
            this.rebuildAll();
         }

         if ("position".equals(var1.paramKey)) {
            this.refreshActivePastePrefabPreviewPosition();
         }
      }
   }

   class="kw">private void onCommitName(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (this.selectedId != null) {
         if (this.selectedIsGroup) {
            TriggerVolumeInspectorDrafts.GroupDraft var2 = this.selectedGroupDraft();
            if (var2 == null) {
               class="kw">return;
            }

            if (var1.paramValue != null) {
               var2.id = var1.paramValue.trim();
            }

            this.applyGroupNameImmediately(var2);
         } else {
            TriggerVolumeInspectorDrafts.VolumeDraft var3 = this.selectedVolumeDraft();
            if (var3 == null) {
               class="kw">return;
            }

            if (var1.paramValue != null) {
               var3.id = var1.paramValue.trim();
            }

            this.applyVolumeNameImmediately(var3);
         }
      }
   }

   class="kw">private void applyVolumeNameImmediately(@Nonnull TriggerVolumeInspectorDrafts.VolumeDraft var1) {
      TriggerVolumeManager var2 = this.getSelectedManager();
      if (var2 != null) {
         VolumeEntry var3 = var2.getVolume(var1.originalId);
         if (var3 != null) {
            String var4 = var2.makeUniqueVolumeName(var1.id, var1.originalId);
            var1.id = var4;
            if (!var4.equals(var3.getName())) {
               var1.markDirty();
               var3.setName(var4);
               var2.notifyViewersAdd(var3);
               this.rebuildAll();
            }
         }
      }
   }

   class="kw">private void applyGroupNameImmediately(@Nonnull TriggerVolumeInspectorDrafts.GroupDraft var1) {
      TriggerVolumeManager var2 = this.getSelectedManager();
      if (var2 != null) {
         GroupEntry var3 = var2.getGroup(var1.originalId);
         if (var3 != null) {
            String var4 = var2.makeUniqueGroupName(var1.id, var1.originalId);
            var1.id = var4;
            if (!var4.equals(var3.getName())) {
               var1.markDirty();
               var3.setName(var4);
               var2.notifyViewers();
               this.rebuildAll();
            }
         }
      }
   }

   class="kw">private void updateVolumeField(@Nonnull TriggerVolumeInspectorDrafts.VolumeDraft var1, @Nonnull TriggerVolumeInspectorPage.PageData var2) {
      boolean var3 = true;
      class="kw">switch (var2.paramKey) {
         case "id":
            this.updateDraftId(var1, var2.paramValue);
            break;
         case "shape":
            var1.shapeType = parseEnum(TriggerVolumeShapeType.class, var2.paramValue, var1.shapeType);
            break;
         case "position":
            setVec(var1.position, var2);
            break;
         case "dimensions": {
            Vector3d var8 = new Vector3d(var1.dimensions);
            setBoxDimensions(var1.dimensions, var2);
            var1.rescaleAnchorOffset(var8);
            break;
         }
         case "dimensionsRadius": {
            Vector3d var7 = new Vector3d(var1.dimensions);
            setSphereDimensions(var1.dimensions, var2);
            var1.rescaleAnchorOffset(var7);
            break;
         }
         case "dimensionsCylinder": {
            Vector3d var6 = new Vector3d(var1.dimensions);
            setCylinderDimensions(var1.dimensions, var2);
            var1.rescaleAnchorOffset(var6);
            break;
         }
         case "color":
            var1.color = parseColor(var2.paramValue);
            break;
         case "targetTypes":
            var1.targetTypes = parseTargetTypes(var2.paramValue);
            break;
         case "projectileSource":
            var1.projectileSource = parseEnum(ProjectileSource.class, var2.paramValue, var1.projectileSource);
            break;
         case "enabled":
            var1.enabled = Boolean.TRUE.equals(var2.paramBool);
            break;
         case "keepLoaded":
            var1.keepLoaded = Boolean.TRUE.equals(var2.paramBool);
            break;
         case "rotateEffectsOnPaste":
            var1.rotateEffectsOnPaste = Boolean.TRUE.equals(var2.paramBool);
            break;
         case "cancelDelayedOnExit":
            var1.cancelDelayedOnExit = Boolean.TRUE.equals(var2.paramBool);
            break;
         case "activationDelay":
            var1.activationDelay = var2.paramNumericValue != null ? Math.max(0.0F, var2.paramNumericValue.floatValue()) : var1.activationDelay;
            break;
         case "cooldown":
            var1.cooldown = var2.paramNumericValue != null ? Math.max(0.0F, var2.paramNumericValue.floatValue()) : var1.cooldown;
            break;
         case "cooldownMode":
            var1.cooldownMode = parseEnum(CooldownMode.class, var2.paramValue, var1.cooldownMode);
            break;
         case "conditionTiming":
            var1.conditionTiming = parseEnum(ConditionTiming.class, var2.paramValue, var1.conditionTiming);
            break;
         case "rejectionDelayMode":
            var1.rejectionDelayMode = parseEnum(RejectionDelayMode.class, var2.paramValue, var1.rejectionDelayMode);
            break;
         class="kw">default:
            var3 = false;
      }

      if (var3) {
         var1.markDirty();
      }
   }

   class="kw">private void updateDraftId(@Nonnull TriggerVolumeInspectorDrafts.VolumeDraft var1, @Nullable String var2) {
      var1.id = var2 != null ? var2.trim() : var1.id;
   }

   class="kw">private void updateGroupField(@Nonnull TriggerVolumeInspectorDrafts.GroupDraft var1, @Nonnull TriggerVolumeInspectorPage.PageData var2) {
      boolean var3 = true;
      class="kw">switch (var2.paramKey) {
         case "id":
            this.updateDraftId(var1, var2.paramValue);
            break;
         case "position":
            setVec(var1.origin, var2);
            break;
         case "color":
            var1.color = parsePackedColor(var2.paramValue, var1.color);
            break;
         case "targetTypes":
            var1.targetTypes = parseTargetTypes(var2.paramValue);
            break;
         case "enabled":
            var1.enabled = Boolean.TRUE.equals(var2.paramBool);
            break;
         case "rotateEffectsOnPaste":
            var1.rotateEffectsOnPaste = Boolean.TRUE.equals(var2.paramBool);
            break;
         case "conditionTiming":
            var1.conditionTiming = parseEnum(ConditionTiming.class, var2.paramValue, var1.conditionTiming);
            break;
         case "rejectionDelayMode":
            var1.rejectionDelayMode = parseEnum(RejectionDelayMode.class, var2.paramValue, var1.rejectionDelayMode);
            break;
         class="kw">default:
            var3 = false;
      }

      if (var3) {
         var1.markDirty();
      }
   }

   class="kw">private void updateDraftId(@Nonnull TriggerVolumeInspectorDrafts.GroupDraft var1, @Nullable String var2) {
      var1.id = var2 != null ? var2.trim() : var1.id;
   }

   class="kw">private void onUpdateTag(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (this.selectedId != null && var1.tagKey != null) {
         String var2 = var1.tagKey.trim();
         if (!var2.isEmpty()) {
            this.currentTags().put(var2, TaggedVolumeEffectUtil.normalizeTagValue(var1.tagValues));
            this.markSelectedDraftDirty();
            UICommandBuilder var3 = new UICommandBuilder();
            UIEventBuilder var4 = new UIEventBuilder();
            var3.clear("#TagsList");
            this.buildTagsTab(var3, var4);
            var3.set("#TagKeyField.Value", "");
            var3.set("#TagValuesField.Value", "");
            this.sendUpdate(var3, var4, false);
         }
      }
   }

   class="kw">private void onRemoveTag(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.removeTagKey != null) {
         if (this.currentTags().remove(var1.removeTagKey) != null) {
            this.markSelectedDraftDirty();
            this.rebuildAll();
         }
      }
   }

   class="kw">private void onDeleteSelection() {
      if (this.selectedId != null) {
         this.hidePastePrefabPreview();
         if (this.selectedIsGroup) {
            this.deletedGroups.add(this.selectedId);
         } else {
            this.deletedVolumes.add(this.selectedId);
         }

         this.selectedId = null;
         this.rebuildAll();
      }
   }

   class="kw">private void onTeleport(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2) {
      if (this.selectedId != null && !this.selectedIsGroup) {
         TriggerVolumeManager var3 = getManagerForWorld(this.selectedWorld);
         if (var3 != null) {
            VolumeEntry var4 = var3.getVolume(this.selectedId);
            if (var4 != null && var1.isValid()) {
               TransformComponent var5 = var2.getComponent(var1, TransformComponent.getComponentType());
               if (var5 != null) {
                  Vector3d var6 = new Vector3d(var4.getPosition());
                  var2.addComponent(var1, Teleport.getComponentType(), Teleport.createForPlayer(var6, var5.getRotation()));
                  this.playerRef.sendMessage(Message.translation("server.customUI.triggerVolumeInspector.teleported").param("name", this.selectedId));
                  this.close();
               }
            }
         }
      }
   }

   class="kw">private void onSave() {
      TriggerVolumeManager var1 = getManagerForWorld(this.selectedWorld);
      if (var1 != null && this.saveDrafts(var1, true)) {
         this.skipSaveOnDismiss = true;
         this.close();
      } else {
         this.revertRejectedDraftIds();
         this.rebuildAll();
      }
   }

   class="kw">private void clearDraftState() {
      this.volumeDrafts.clear();
      this.groupDrafts.clear();
      this.deletedVolumes.clear();
      this.deletedGroups.clear();
   }

   class="kw">private void onDiscard() {
      this.skipSaveOnDismiss = true;
      this.close();
   }

   class="kw">private boolean saveDrafts(@Nonnull TriggerVolumeManager var1, boolean var2) {
      if (!this.validateDraftIds(var1)) {
         class="kw">return false;
      }

      this.applyDeletes(var1);
      this.applyGroupDrafts(var1);
      this.applyVolumeDrafts(var1);
      var1.markSpatialDirty();
      var1.notifyViewers();
      if (var2) {
         this.playerRef.sendMessage(Message.translation("server.customUI.triggerVolumeInspector.saved"));
      }

      class="kw">return true;
   }

   class="kw">private void revertRejectedDraftIds() {
   }

   class="kw">private boolean validateDraftIds(@Nonnull TriggerVolumeManager var1) {
      class="kw">return true;
   }

   @Nullable
   class="kw">private Message idValidationMessage(@Nonnull String var1) {
      class="kw">return null;
   }

   class="kw">private void applyDeletes(@Nonnull TriggerVolumeManager var1) {
      for (String var3 : this.deletedVolumes) {
         VolumeEntry var4 = var1.getVolume(var3);
         if (var4 != null) {
            if (var4.getGroupId() != null) {
               GroupEntry var5 = var1.getGroup(var4.getGroupId());
               if (var5 != null) {
                  var5.removeMember(var3);
               }
            }

            var1.unregister(var3);
            var1.notifyViewersRemove(var3);
         }
      }

      for (String var9 : this.deletedGroups) {
         GroupEntry var10 = var1.getGroup(var9);
         if (var10 != null) {
            for (String var6 : new ArrayList<>(var10.getMemberVolumeIds())) {
               VolumeEntry var7 = var1.getVolume(var6);
               if (var7 != null) {
                  var7.setGroupId(null);
                  var1.notifyViewersAdd(var7);
               }
            }

            var1.unregisterGroup(var9);
         }
      }
   }

   class="kw">private void applyGroupDrafts(@Nonnull TriggerVolumeManager var1) {
      for (TriggerVolumeInspectorDrafts.GroupDraft var3 : this.groupDrafts.values()) {
         if (!this.deletedGroups.contains(var3.originalId) && var3.dirty) {
            GroupEntry var4 = var1.getGroup(var3.originalId);
            if (var4 != null) {
               var3.applyTo(var4);
               var4.setName(var1.makeUniqueGroupName(var3.id, var3.originalId));
            }
         }
      }
   }

   class="kw">private void applyVolumeDrafts(@Nonnull TriggerVolumeManager var1) {
      for (TriggerVolumeInspectorDrafts.VolumeDraft var3 : this.volumeDrafts.values()) {
         if (!this.deletedVolumes.contains(var3.originalId) && var3.dirty) {
            VolumeEntry var4 = var1.getVolume(var3.originalId);
            if (var4 != null) {
               String var5 = var3.originalId;
               String var6 = var4.getGroupId();
               var3.applyTo(var4);
               var4.setName(var1.makeUniqueVolumeName(var3.id, var5));
               if (var6 != null && !var6.equals(var3.groupId)) {
                  GroupEntry var7 = var1.getGroup(var6);
                  if (var7 != null) {
                     var7.removeMember(var5);
                  }
               }

               if (var3.groupId != null) {
                  GroupEntry var8 = var1.getGroup(var3.groupId);
                  if (var8 != null) {
                     var8.addMember(var5);
                  }
               }

               var1.notifyViewersAdd(var4);
            }
         }
      }
   }

   class="kw">private void buildAddEffectDropdown(@Nonnull UICommandBuilder var1) {
      if (this.isAddingRule()) {
         List var7 = getSortedRuleTypeIds();
         ObjectArrayList var8 = new ObjectArrayList();

         for (String var12 : var7) {
            var8.add(new DropdownEntryInfo(this.ruleDropdownLabel(var12), var12));
         }

         var1.set("#AddEffectDropdown.Entries", var8);
         String var10 = !this.addEffectType.isEmpty() && var7.contains(this.addEffectType) ? this.addEffectType : (var7.isEmpty() ? "" : var7.get(0));
         if (!var10.isEmpty()) {
            var1.set("#AddEffectDropdown.Value", var10);
         }
      } else {
         boolean var2 = this.addTargetKind == TriggerVolumeInspectorPage.EffectListKind.CONDITION;
         List var3 = var2 ? getSortedConditionTypeIds() : getSortedTypeIds();
         ObjectArrayList var4 = new ObjectArrayList();

         for (String var6 : var3) {
            var4.add(new DropdownEntryInfo(this.typeDropdownLabel(var6, var2), var6));
         }

         var1.set("#AddEffectDropdown.Entries", var4);
         String var11 = !this.addEffectType.isEmpty() && var3.contains(this.addEffectType) ? this.addEffectType : (var3.isEmpty() ? "" : var3.get(0));
         if (!var11.isEmpty()) {
            var1.set("#AddEffectDropdown.Value", var11);
         }
      }
   }

   class="kw">private void buildAddEventTypeDropdown(@Nonnull UICommandBuilder var1) {
      ObjectArrayList var2 = new ObjectArrayList();

      for (TriggerEventType var4 : TriggerEventType.values()) {
         var2.add(new DropdownEntryInfo(LocalizableString.fromMessageId("server.customUI.triggerVolumeEffectEditor.addEventType." + var4.name()), var4.name()));
      }

      var2.add(new DropdownEntryInfo(LocalizableString.fromMessageId("server.customUI.triggerVolumeEffectEditor.addEventType.ALWAYS_ACTIVE"), "ALWAYS_ACTIVE"));
      var1.set("#AddEventTypeDropdown.Entries", var2);
      var1.set("#AddEventTypeDropdown.Value", this.isAddingRule() ? "ALWAYS_ACTIVE" : this.addEventType.name());
   }

   class="kw">private void buildAddEntryDropdown(@Nonnull UICommandBuilder var1) {
      if (this.isAddingRule()) {
         ObjectArrayList var9 = new ObjectArrayList();
         var9.add(new DropdownEntryInfo(LocalizableString.fromMessageId("server.customUI.triggerVolumeEffectEditor.addEntry.notApplicable"), "0"));
         var1.set("#AddEntryDropdown.Entries", var9);
         var1.set("#AddEntryDropdown.Value", "0");
      } else {
         IntOpenHashSet var2 = new IntOpenHashSet();
         var2.add(0);
         var2.add(this.addEntry);

         for (int var6 : this.getEventEntries(TriggerVolumeInspectorPage.EventCategoryScope.VOLUME, null, this.addEventType)) {
            var2.add(var6);
         }

         int[] var10 = var2.toIntArray();
         Arrays.sort(var10);
         ObjectArrayList var11 = new ObjectArrayList();

         for (int var8 : var10) {
            var11.add(
               new DropdownEntryInfo(
                  LocalizableString.fromMessageId("server.customUI.triggerVolumeEffectEditor.addEntry.option", Map.of("entry", String.valueOf(var8 + 1))),
                  String.valueOf(var8)
               )
            );
         }

         var11.add(new DropdownEntryInfo(LocalizableString.fromMessageId("server.customUI.triggerVolumeEffectEditor.addEntry.new"), "NEW"));
         var1.set("#AddEntryDropdown.Entries", var11);
         var1.set("#AddEntryDropdown.Value", String.valueOf(this.addEntry));
      }
   }

   class="kw">private void buildAddTargetDropdown(@Nonnull UICommandBuilder var1) {
      ObjectArrayList var2 = new ObjectArrayList();
      var2.add(
         new DropdownEntryInfo(
            LocalizableString.fromMessageId("server.customUI.triggerVolumeEffectEditor.addTarget.conditions"),
            TriggerVolumeInspectorPage.EffectListKind.CONDITION.name()
         )
      );
      var2.add(
         new DropdownEntryInfo(
            LocalizableString.fromMessageId("server.customUI.triggerVolumeEffectEditor.addTarget.successEffects"),
            TriggerVolumeInspectorPage.EffectListKind.EFFECT.name()
         )
      );
      var2.add(
         new DropdownEntryInfo(
            LocalizableString.fromMessageId("server.customUI.triggerVolumeEffectEditor.addTarget.rejectionEffects"),
            TriggerVolumeInspectorPage.EffectListKind.REJECTION_EFFECT.name()
         )
      );
      var2.add(
         new DropdownEntryInfo(
            LocalizableString.fromMessageId("server.customUI.triggerVolumeEffectEditor.addTarget.alwaysActive"),
            TriggerVolumeInspectorPage.EffectListKind.RULE.name()
         )
      );
      var1.set("#AddTargetDropdown.Entries", var2);
      var1.set("#AddTargetDropdown.Value", this.addTargetKind.name());
   }

   class="kw">private boolean isAddingRule() {
      class="kw">return this.addTargetKind == TriggerVolumeInspectorPage.EffectListKind.RULE;
   }

   class="kw">private void enterRuleAddMode() {
      if (this.addTargetKind != TriggerVolumeInspectorPage.EffectListKind.RULE) {
         this.lastRegularTargetKind = this.addTargetKind;
         this.addTargetKind = TriggerVolumeInspectorPage.EffectListKind.RULE;
      }
   }

   class="kw">private void leaveRuleAddMode() {
      if (this.addTargetKind == TriggerVolumeInspectorPage.EffectListKind.RULE) {
         this.addTargetKind = this.lastRegularTargetKind;
      }
   }

   class="kw">private void buildEffectList(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2) {
      this.appendEffectList(var1, var2, "#EffectListContainer");
      Object var3 = this.getSelectedItem();
      var1.set("#DuplicateEffectButton.Disabled", var3 == null);
      var1.set("#RemoveEffectButton.Disabled", var3 == null);
      var1.set("#MoveEffectUpButton.Disabled", var3 == null || this.selectedEffectIndex <= 0);
      var1.set("#MoveEffectDownButton.Disabled", var3 == null || this.selectedEffectIndex >= this.getItemCount(this.selectedKind) - 1);
   }

   class="kw">private void appendEffectList(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3) {
      var1.clear(var3);
      int var4 = 0;
      var4 = this.appendInheritedGroupSections(var1, var2, var3, var4);
      var4 = this.appendVolumeEffectsSection(var1, var3, var4, var4 > 0 || this.selectedIsGroup);
      var4 = this.appendRulesCategory(var1, var2, var3, var4, TriggerVolumeInspectorPage.EventCategoryScope.VOLUME, null);
      this.appendEventCategoryGroups(var1, var2, var3, var4, TriggerVolumeInspectorPage.EventCategoryScope.VOLUME, null);
   }

   @Nonnull
   class="kw">private Message effectSectionLabel(@Nonnull TriggerVolumeInspectorPage.EffectListKind var1, boolean var2) {
      String var3 = class="kw">switch (var1) {
         case CONDITION -> "conditions";
         case EFFECT -> "successEffects";
         case REJECTION_EFFECT -> "rejectionEffects";
         case RULE -> "alwaysActiveRules";
      };
      String var4 = var2 ? "group" : "volume";
      class="kw">return Message.translation("server.customUI.triggerVolumeEffectEditor." + var4 + "." + var3);
   }

   @Nonnull
   class="kw">private Message effectRowLabel(int var1, @Nonnull String var2, boolean var3) {
      class="kw">return Message.raw(var1 + ". ").insert(this.typeMessage(var2, var3));
   }

   @Nonnull
   class="kw">private Message typeMessage(@Nonnull String var1, boolean var2) {
      String var3 = typeLangKey(var1, var2);
      class="kw">return messageExists(var3) ? Message.translation(var3) : Message.raw(humanizeTypeId(var1));
   }

   @Nonnull
   class="kw">private LocalizableString typeDropdownLabel(@Nonnull String var1, boolean var2) {
      String var3 = typeLangKey(var1, var2);
      class="kw">return messageExists(var3) ? LocalizableString.fromMessageId(var3) : LocalizableString.fromString(humanizeTypeId(var1));
   }

   @Nonnull
   class="kw">private class="kw">static String typeLangKey(@Nonnull String var0, boolean var1) {
      class="kw">return "server.customUI.triggerVolumeEffectEditor." + (var1 ? "conditionType." : "effectType.") + var0;
   }

   @Nonnull
   class="kw">private Message ruleRowLabel(int var1, @Nonnull String var2, boolean var3) {
      Message var4 = Message.raw(var1 + ". ").insert(this.ruleTypeMessage(var2));
      if (!var3) {
         var4 = var4.insert(Message.raw(" ")).insert(Message.translation("server.customUI.triggerVolumeEffectEditor.ruleDisabledSuffix"));
      }

      class="kw">return var4;
   }

   @Nonnull
   class="kw">private Message ruleTypeMessage(@Nonnull String var1) {
      String var2 = ruleTypeLangKey(var1);
      class="kw">return messageExists(var2) ? Message.translation(var2) : Message.raw(humanizeTypeId(var1));
   }

   @Nonnull
   class="kw">private LocalizableString ruleDropdownLabel(@Nonnull String var1) {
      String var2 = ruleTypeLangKey(var1);
      class="kw">return messageExists(var2) ? LocalizableString.fromMessageId(var2) : LocalizableString.fromString(humanizeTypeId(var1));
   }

   @Nonnull
   class="kw">private class="kw">static String ruleTypeLangKey(@Nonnull String var0) {
      class="kw">return "server.customUI.triggerVolumeEffectEditor.ruleType." + var0;
   }

   class="kw">private int appendInheritedGroupSections(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, int var4) {
      TriggerVolumeInspectorDrafts.GroupDraft var5 = this.selectedInheritedGroupDraft();
      if (var5 != null && (!var5.conditions.isEmpty() || !var5.rejectionEffects.isEmpty() || !var5.effects.isEmpty() || !var5.rules.isEmpty())) {
         var1.append(var3, "Pages/TriggerVolume/TriggerVolumeInspectorEffectOwnerSectionLabel.ui");
         var1.set(var3 + "[" + var4 + "].Text", Message.translation("server.customUI.triggerVolumeEffectEditor.inheritedFromGroup").param("group", var5.id));
         var4 = this.appendRulesCategory(var1, var2, var3, ++var4, TriggerVolumeInspectorPage.EventCategoryScope.GROUP, var5);
         class="kw">return this.appendEventCategoryGroups(var1, var2, var3, var4, TriggerVolumeInspectorPage.EventCategoryScope.GROUP, var5);
      } else {
         class="kw">return var4;
      }
   }

   class="kw">private int appendVolumeEffectsSection(@Nonnull UICommandBuilder var1, @Nonnull String var2, int var3, boolean var4) {
      if (this.currentConditions().isEmpty()
         && this.currentEffects(TriggerVolumeInspectorPage.EffectListKind.REJECTION_EFFECT).isEmpty()
         && this.currentEffects(TriggerVolumeInspectorPage.EffectListKind.EFFECT).isEmpty()
         && this.currentRules().isEmpty()) {
         class="kw">return var3;
      }

      if (!var4) {
         class="kw">return var3;
      }

      if (var3 > 0 && !this.selectedIsGroup) {
         var3 = this.appendEventCategorySpacer(var1, var2, var3);
      }

      var1.append(var2, "Pages/TriggerVolume/TriggerVolumeInspectorEffectOwnerSectionLabel.ui");
      Message var5 = this.selectedIsGroup
         ? Message.translation("server.customUI.triggerVolumeEffectEditor.groupEffects")
         : Message.translation("server.customUI.triggerVolumeEffectEditor.volumeEffects");
      var1.set(var2 + "[" + var3 + "].Text", var5);
      class="kw">return var3 + 1;
   }

   class="kw">private int appendEventCategoryGroups(
      @Nonnull UICommandBuilder var1,
      @Nonnull UIEventBuilder var2,
      @Nonnull String var3,
      int var4,
      @Nonnull TriggerVolumeInspectorPage.EventCategoryScope var5,
      @Nullable TriggerVolumeInspectorDrafts.GroupDraft var6
   ) {
      for (TriggerEventType var8 : TriggerEventType.values()) {
         for (int var12 : this.getEventEntries(var5, var6, var8)) {
            int var13 = this.getEventCategoryItemCount(var5, var6, var8, var12);
            if (var13 != 0) {
               var4 = this.appendEventCategoryHeader(var1, var2, var3, var4, var5, var8, var12, var13);
               if (!this.isEventCategoryCollapsed(var5, var8, var12)) {
                  var4 = this.appendEventSection(var1, var2, var3, var4, var5, var6, var8, var12, TriggerVolumeInspectorPage.EffectListKind.CONDITION);
                  var4 = this.appendEventSection(var1, var2, var3, var4, var5, var6, var8, var12, TriggerVolumeInspectorPage.EffectListKind.REJECTION_EFFECT);
                  var4 = this.appendEventSection(var1, var2, var3, var4, var5, var6, var8, var12, TriggerVolumeInspectorPage.EffectListKind.EFFECT);
                  var4 = this.appendEventCategorySpacer(var1, var3, var4);
               }
            }
         }
      }

      class="kw">return var4;
   }

   class="kw">private int appendRulesCategory(
      @Nonnull UICommandBuilder var1,
      @Nonnull UIEventBuilder var2,
      @Nonnull String var3,
      int var4,
      @Nonnull TriggerVolumeInspectorPage.EventCategoryScope var5,
      @Nullable TriggerVolumeInspectorDrafts.GroupDraft var6
   ) {
      if (var5 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP && var6 == null) {
         class="kw">return var4;
      }

      List var7 = var5 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP ? var6.rules : this.currentRules();
      if (var7.isEmpty()) {
         class="kw">return var4;
      }

      boolean var8 = var5 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP ? !this.groupRulesExpanded : this.volumeRulesCollapsed;
      String var9 = var3 + "[" + var4 + "]";
      Message var10 = Message.translation("server.customUI.triggerVolumeEffectEditor.eventCategory.ALWAYS_ACTIVE");
      if (var5 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP) {
         var10 = var10.insert(Message.translation("server.customUI.triggerVolumeEffectEditor.eventCategoryInheritedSuffix"));
      }

      var1.append(var3, "Pages/TriggerVolume/TriggerVolumeInspectorEventCategoryHeader.ui");
      var1.set(var9 + ".TextSpans", var10.param("state", var8 ? ">" : "v").param("count", var7.size()));
      var2.addEventBinding(
         CustomUIEventBindingType.Activating,
         var9,
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.ToggleRulesCategory.name()).append("EventCategoryScope", var5.name())
      );
      var4++;
      if (var8) {
         class="kw">return var4;
      }

      var1.append(var3, "Pages/TriggerVolume/TriggerVolumeInspectorEventSectionLabel.ui");
      var1.set(
         var3 + "[" + var4 + "] #Label.Text",
         this.effectSectionLabel(TriggerVolumeInspectorPage.EffectListKind.RULE, var5 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP)
      );
      var4++;

      for (int var11 = 0; var11 < var7.size(); var11++) {
         String var12 = var3 + "[" + var4 + "]";
         Message var13 = this.ruleRowLabel(var11 + 1, getRuleTypeId(var7.get(var11)), var7.get(var11).isEnabled());
         var1.append(var3, "Pages/TriggerVolume/TriggerVolumeInspectorEffectRow.ui");
         var1.set(var12 + " #Label.TextSpans", var13);
         if (var5 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP) {
            var1.set(var12 + ".Style", INHERITED_EFFECT_ROW_STYLE);
            var1.set(var12 + " #Label.Style", INHERITED_EFFECT_LABEL_STYLE);
         } else {
            boolean var14 = this.selectedKind == TriggerVolumeInspectorPage.EffectListKind.RULE && var11 == this.selectedEffectIndex;
            var1.set(var12 + ".Style", var14 ? SELECTED_EFFECT_ROW_STYLE : NORMAL_EFFECT_ROW_STYLE);
            var1.set(var12 + " #Label.Style", var14 ? SELECTED_EFFECT_LABEL_STYLE : NORMAL_EFFECT_LABEL_STYLE);
            var2.addEventBinding(
               CustomUIEventBindingType.Activating,
               var12,
               new EventData()
                  .append("Action", TriggerVolumeInspectorPage.Action.SelectEffect.name())
                  .append("EffectListKind", TriggerVolumeInspectorPage.EffectListKind.RULE.name())
                  .append("EffectIndex", String.valueOf(var11))
            );
         }

         var4++;
      }

      class="kw">return this.appendEventCategorySpacer(var1, var3, var4);
   }

   class="kw">private void onToggleRulesCategory(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.eventCategoryScope != null) {
         try {
            TriggerVolumeInspectorPage.EventCategoryScope var2 = TriggerVolumeInspectorPage.EventCategoryScope.valueOf(var1.eventCategoryScope);
            if (var2 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP) {
               this.groupRulesExpanded = !this.groupRulesExpanded;
            } else {
               this.volumeRulesCollapsed = !this.volumeRulesCollapsed;
            }

            this.rebuildAll();
         } catch (IllegalArgumentException var3) {
         }
      }
   }

   class="kw">private void onToggleRejectionSignal() {
      this.rejectionSignalExpanded = !this.rejectionSignalExpanded;
      this.rebuildAll();
   }

   class="kw">private int appendEventCategoryHeader(
      @Nonnull UICommandBuilder var1,
      @Nonnull UIEventBuilder var2,
      @Nonnull String var3,
      int var4,
      @Nonnull TriggerVolumeInspectorPage.EventCategoryScope var5,
      @Nonnull TriggerEventType var6,
      int var7,
      int var8
   ) {
      String var9 = var3 + "[" + var4 + "]";
      String var10 = this.isEventCategoryCollapsed(var5, var6, var7) ? ">" : "v";
      var1.append(var3, "Pages/TriggerVolume/TriggerVolumeInspectorEventCategoryHeader.ui");
      var1.set(var9 + ".TextSpans", eventCategoryLabel(var5, var6, var7).param("state", var10).param("count", var8));
      var2.addEventBinding(
         CustomUIEventBindingType.Activating,
         var9,
         new EventData()
            .append("Action", TriggerVolumeInspectorPage.Action.ToggleEventCategory.name())
            .append("EventType", var6.name())
            .append("EventEntry", String.valueOf(var7))
            .append("EventCategoryScope", var5.name())
      );
      class="kw">return var4 + 1;
   }

   class="kw">private int appendEventSection(
      @Nonnull UICommandBuilder var1,
      @Nonnull UIEventBuilder var2,
      @Nonnull String var3,
      int var4,
      @Nonnull TriggerVolumeInspectorPage.EventCategoryScope var5,
      @Nullable TriggerVolumeInspectorDrafts.GroupDraft var6,
      @Nonnull TriggerEventType var7,
      int var8,
      @Nonnull TriggerVolumeInspectorPage.EffectListKind var9
   ) {
      IntList var10 = this.getEventItemIndices(var5, var6, var7, var8, var9);
      if (var10.isEmpty()) {
         class="kw">return var4;
      }

      var1.append(var3, "Pages/TriggerVolume/TriggerVolumeInspectorEventSectionLabel.ui");
      var1.set(var3 + "[" + var4 + "] #Label.Text", this.effectSectionLabel(var9, var5 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP));
      var4++;

      for (int var11 = 0; var11 < var10.size(); var11++) {
         int var12 = var10.getInt(var11);
         String var13 = var3 + "[" + var4 + "]";
         String var14 = var5 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP ? getGroupItemTypeId(var9, var12, var6) : this.getItemTypeId(var9, var12);
         Message var15 = this.effectRowLabel(var11 + 1, var14, var9 == TriggerVolumeInspectorPage.EffectListKind.CONDITION);
         var1.append(var3, "Pages/TriggerVolume/TriggerVolumeInspectorEffectRow.ui");
         var1.set(var13 + " #Label.TextSpans", var15);
         if (var5 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP) {
            var1.set(var13 + ".Style", INHERITED_EFFECT_ROW_STYLE);
            var1.set(var13 + " #Label.Style", INHERITED_EFFECT_LABEL_STYLE);
         } else {
            boolean var16 = var9 == this.selectedKind && var12 == this.selectedEffectIndex;
            var1.set(var13 + ".Style", var16 ? SELECTED_EFFECT_ROW_STYLE : NORMAL_EFFECT_ROW_STYLE);
            var1.set(var13 + " #Label.Style", var16 ? SELECTED_EFFECT_LABEL_STYLE : NORMAL_EFFECT_LABEL_STYLE);
            var2.addEventBinding(
               CustomUIEventBindingType.Activating,
               var13,
               new EventData()
                  .append("Action", TriggerVolumeInspectorPage.Action.SelectEffect.name())
                  .append("EffectListKind", var9.name())
                  .append("EffectIndex", String.valueOf(var12))
            );
         }

         var4++;
      }

      class="kw">return var4;
   }

   class="kw">private int appendEventCategorySpacer(@Nonnull UICommandBuilder var1, @Nonnull String var2, int var3) {
      var1.append(var2, "Pages/TriggerVolume/TriggerVolumeInspectorEventCategorySpacer.ui");
      class="kw">return var3 + 1;
   }

   @Nonnull
   class="kw">private class="kw">static Message eventCategoryLabel(@Nonnull TriggerVolumeInspectorPage.EventCategoryScope var0, @Nonnull TriggerEventType var1, int var2) {
      Message var3 = Message.translation("server.customUI.triggerVolumeEffectEditor.eventCategory." + var1.name());
      if (var2 > 0) {
         var3 = var3.insert(Message.translation("server.customUI.triggerVolumeEffectEditor.eventCategoryEntrySuffix").param("entry", String.valueOf(var2 + 1)));
      }

      class="kw">return var0 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP
         ? var3.insert(Message.translation("server.customUI.triggerVolumeEffectEditor.eventCategoryInheritedSuffix"))
         : var3;
   }

   @Nonnull
   class="kw">private int[] getEventEntries(
      @Nonnull TriggerVolumeInspectorPage.EventCategoryScope var1, @Nullable TriggerVolumeInspectorDrafts.GroupDraft var2, @Nonnull TriggerEventType var3
   ) {
      if (var1 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP && var2 == null) {
         class="kw">return EMPTY_ENTRIES;
      }

      IntOpenHashSet var4 = new IntOpenHashSet();

      for (TriggerVolumeInspectorPage.EffectListKind var8 : TriggerVolumeInspectorPage.EffectListKind.values()) {
         if (var8 != TriggerVolumeInspectorPage.EffectListKind.RULE) {
            int var9 = var1 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP ? getGroupItemCount(var8, var2) : this.getItemCount(var8);

            for (int var10 = 0; var10 < var9; var10++) {
               TriggerEventType var11 = var1 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP
                  ? getGroupItemEventType(var8, var10, var2)
                  : this.getItemEventType(var8, var10);
               if (normalizeEventType(var11) == var3) {
                  var4.add(var1 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP ? getGroupItemEntry(var8, var10, var2) : this.getItemEntry(var8, var10));
               }
            }
         }
      }

      int[] var12 = var4.toIntArray();
      Arrays.sort(var12);
      class="kw">return var12;
   }

   class="kw">private int getEventCategoryItemCount(
      @Nonnull TriggerVolumeInspectorPage.EventCategoryScope var1,
      @Nullable TriggerVolumeInspectorDrafts.GroupDraft var2,
      @Nonnull TriggerEventType var3,
      int var4
   ) {
      int var5 = 0;

      for (TriggerVolumeInspectorPage.EffectListKind var9 : TriggerVolumeInspectorPage.EffectListKind.values()) {
         if (var9 != TriggerVolumeInspectorPage.EffectListKind.RULE) {
            var5 += this.getEventItemIndices(var1, var2, var3, var4, var9).size();
         }
      }

      class="kw">return var5;
   }

   @Nonnull
   class="kw">private IntList getEventItemIndices(
      @Nonnull TriggerVolumeInspectorPage.EventCategoryScope var1,
      @Nullable TriggerVolumeInspectorDrafts.GroupDraft var2,
      @Nonnull TriggerEventType var3,
      int var4,
      @Nonnull TriggerVolumeInspectorPage.EffectListKind var5
   ) {
      IntArrayList var6 = new IntArrayList();
      if (var1 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP && var2 == null) {
         class="kw">return var6;
      }

      int var7 = var1 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP ? getGroupItemCount(var5, var2) : this.getItemCount(var5);

      for (int var8 = 0; var8 < var7; var8++) {
         TriggerEventType var9 = var1 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP
            ? getGroupItemEventType(var5, var8, var2)
            : this.getItemEventType(var5, var8);
         if (normalizeEventType(var9) == var3) {
            int var10 = var1 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP ? getGroupItemEntry(var5, var8, var2) : this.getItemEntry(var5, var8);
            if (var10 == var4) {
               var6.add(var8);
            }
         }
      }

      class="kw">return var6;
   }

   class="kw">private boolean isEventCategoryCollapsed(@Nonnull TriggerVolumeInspectorPage.EventCategoryScope var1, @Nonnull TriggerEventType var2, int var3) {
      TriggerVolumeInspectorPage.EventCategoryKey var4 = new TriggerVolumeInspectorPage.EventCategoryKey(var2, var3);
      class="kw">return var1 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP
         ? !this.expandedGroupEventCategories.contains(var4)
         : this.collapsedVolumeEventCategories.contains(var4);
   }

   class="kw">private void setEventCategoryExpanded(@Nonnull TriggerVolumeInspectorPage.EventCategoryScope var1, @Nonnull TriggerEventType var2, int var3) {
      TriggerVolumeInspectorPage.EventCategoryKey var4 = new TriggerVolumeInspectorPage.EventCategoryKey(var2, var3);
      if (var1 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP) {
         this.expandedGroupEventCategories.add(var4);
      } else {
         this.collapsedVolumeEventCategories.remove(var4);
      }
   }

   class="kw">private void toggleEventCategory(@Nonnull TriggerVolumeInspectorPage.EventCategoryScope var1, @Nonnull TriggerEventType var2, int var3) {
      TriggerVolumeInspectorPage.EventCategoryKey var4 = new TriggerVolumeInspectorPage.EventCategoryKey(var2, var3);
      if (var1 == TriggerVolumeInspectorPage.EventCategoryScope.GROUP) {
         if (!this.expandedGroupEventCategories.remove(var4)) {
            this.expandedGroupEventCategories.add(var4);
         }
      } else if (!this.collapsedVolumeEventCategories.remove(var4)) {
         this.collapsedVolumeEventCategories.add(var4);
      }
   }

   @Nonnull
   class="kw">private class="kw">static TriggerEventType normalizeEventType(@Nullable TriggerEventType var0) {
      class="kw">return var0 != null ? var0 : TriggerEventType.ENTER;
   }

   class="kw">private void buildEffectDetailPanel(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2) {
      var1.clear("#EffectDetailPanel");
      Object var3 = this.getSelectedItem();
      if (var3 == null) {
         var1.set("#NoEffectSelectionLabel.Visible", true);
         var1.set("#EffectDetailPanel.Visible", false);
      } else {
         var1.set("#NoEffectSelectionLabel.Visible", false);
         var1.set("#EffectDetailPanel.Visible", true);
         int var4 = 0;
         if (var3 class="kw">instanceof TriggerRule var23) {
            String var25 = getRuleTypeId(var23);
            var4 = this.addEffectFieldRow(var1, var2, var4, var25, "Enabled", Codec.BOOLEAN, new BsonBoolean(var23.isEnabled()));
            BuilderCodec var27 = getRuleBuilderCodecFor(var25);
            if (var27 != null) {
               BsonDocument var29 = encodeRule(var27, var23);
               boolean var31 = var23 class="kw">instanceof AbstractDenyRule;

               for (Entry var37 : var27.getEntries().entrySet()) {
                  String var39 = var37.getKey();
                  if (!"Enabled".equals(var39) && !var37.getValue().isEmpty() && (!var31 || !DENY_SIGNAL_FIELD_KEY_SET.contains(var39))) {
                     BuilderField var42 = var37.getValue().getLast();
                     var4 = this.addEffectFieldRow(var1, var2, var4, var25, var39, var42.getCodec().getChildCodec(), var29.get(var39));
                  }
               }

               if (var23 class="kw">instanceof AbstractDenyRule var34) {
                  var4 = this.appendRejectionSignalSection(var1, var2, var4, var25, var27, var29, var34);
               }
            }
         } else if (var3 class="kw">instanceof ModifyRulesEffect var22) {
            this.buildModifyRulesEffectDetailPanel(var1, var2, var22);
         } else if (var3 class="kw">instanceof TriggerCondition var21) {
            String var24 = getConditionTypeId(var21);
            String var26 = var21.getEventType() != null ? var21.getEventType().name() : TriggerEventType.ENTER.name();
            var4 = this.appendBaseFieldHeader(var1, var2, var4, true, var26, String.valueOf(var21.getEntry() + 1), "0", "0");
            BuilderCodec var28 = getConditionBuilderCodecFor(var24);
            if (var28 != null) {
               BsonDocument var30 = encodeCondition(var28, var21);
               Map var32 = var28.getEntries();
               boolean var36 = var32.containsKey("RotationX") && var32.containsKey("RotationY") && var32.containsKey("RotationZ");
               TagCondition.Source var38 = var21 class="kw">instanceof TagCondition var40 ? var40.getSource() : null;

               for (Entry var43 : var32.entrySet()) {
                  String var15 = var43.getKey();
                  if (!"Event".equals(var15)
                     && !"Entry".equals(var15)
                     && !var43.getValue().isEmpty()
                     && (var38 == null || !isTagConditionFieldHidden(var15, var38))) {
                     if (var36 && ("RotationX".equals(var15) || "RotationY".equals(var15) || "RotationZ".equals(var15))) {
                        if ("RotationX".equals(var15)) {
                           var4 = this.addRotationXyzRow(
                              var1,
                              var2,
                              var4,
                              var24,
                              enumValueOrDefault(var30, "RotationX"),
                              enumValueOrDefault(var30, "RotationY"),
                              enumValueOrDefault(var30, "RotationZ")
                           );
                        }
                     } else {
                        BuilderField var16 = var43.getValue().getLast();
                        var4 = this.addEffectFieldRow(var1, var2, var4, var24, var15, var16.getCodec().getChildCodec(), var30.get(var15));
                     }
                  }
               }
            }
         } else {
            TriggerEffect var5 = (TriggerEffect)var3;
            String var6 = getTypeId(var5);
            String var7 = var5.getEventType() != null ? var5.getEventType().name() : TriggerEventType.ENTER.name();
            var4 = this.appendBaseFieldHeader(
               var1, var2, var4, false, var7, String.valueOf(var5.getEntry() + 1), String.valueOf(var5.getDelay()), String.valueOf(var5.getInterval())
            );
            BuilderCodec var8 = getBuilderCodecFor(var6);
            if (var8 != null) {
               BsonDocument var9 = encodeEffect(var8, var5);
               RemoveEntitiesEffect.Mode var10 = var5 class="kw">instanceof RemoveEntitiesEffect var11 ? var11.getMode() : null;

               for (Entry var12 : var8.getEntries().entrySet()) {
                  String var13 = var12.getKey();
                  if (!"Event".equals(var13)
                     && !"Interval".equals(var13)
                     && !"Delay".equals(var13)
                     && !"Entry".equals(var13)
                     && !var12.getValue().isEmpty()
                     && (var10 != RemoveEntitiesEffect.Mode.REMOVE || !"IncludePlayers".equals(var13) && !"IgnoreInvulnerability".equals(var13))) {
                     BuilderField var14 = var12.getValue().getLast();
                     var4 = this.addEffectFieldRow(var1, var2, var4, var6, var13, var14.getCodec().getChildCodec(), var9.get(var13));
                  }
               }
            }

            if (var5 class="kw">instanceof PastePrefabEffect) {
               this.addPastePrefabPreviewButtonRow(var1, var2, var4);
            }
         }
      }
   }

   class="kw">private void buildModifyRulesEffectDetailPanel(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull ModifyRulesEffect var3) {
      String var4 = getTypeId(var3);
      String var5 = var3.getEventType() != null ? var3.getEventType().name() : TriggerEventType.ENTER.name();
      int var6 = this.appendBaseFieldHeader(
         var1, var2, 0, false, var5, String.valueOf(var3.getEntry() + 1), String.valueOf(var3.getDelay()), String.valueOf(var3.getInterval())
      );
      BuilderCodec var7 = getBuilderCodecFor(var4);
      BsonDocument var8 = var7 != null ? encodeEffect(var7, var3) : new BsonDocument();
      ModifyRulesEffect.Operation var9 = var3.getOperation();
      var6 = this.addEffectFieldByKey(var1, var2, var6, var4, var7, var8, "Operation");
      if (var9 == ModifyRulesEffect.Operation.SET_RULES_ACTIVE) {
         var6 = this.addEffectFieldByKey(var1, var2, var6, var4, var7, var8, "Active");
         TriggerRule var10 = var3.getRule();
         var6 = this.addRuleTypeDropdownRow(var1, var2, var6, var10 != null ? getRuleTypeId(var10) : "", true);
      } else {
         TriggerRule var21 = var3.getRule();
         String var11 = var21 != null ? getRuleTypeId(var21) : "";
         var6 = this.addRuleTypeDropdownRow(var1, var2, var6, var11, false);
         BuilderCodec var12 = var21 != null ? getRuleBuilderCodecFor(var11) : null;
         if (var9 == ModifyRulesEffect.Operation.SET_FIELD) {
            String var13 = var3.getFieldKey();
            var6 = this.addRuleFieldDropdownRow(var1, var2, var6, var11, var12, var13);
            if (var12 != null && var13 != null && !var13.isBlank()) {
               List var14 = var12.getEntries().get(var13);
               if (var14 != null && !var14.isEmpty()) {
                  BuilderField var15 = var14.getLast();
                  BsonDocument var16 = encodeRule(var12, var21);
                  var6 = this.addEffectFieldRow(var1, var2, var6, var11, var13, var15.getCodec().getChildCodec(), var16.get(var13));
               }
            }
         } else if ((var9 == ModifyRulesEffect.Operation.SET || var9 == ModifyRulesEffect.Operation.APPEND) && var12 != null) {
            BsonDocument var24 = encodeRule(var12, var21);

            for (Entry var26 : var12.getEntries().entrySet()) {
               String var27 = var26.getKey();
               if (!var26.getValue().isEmpty()) {
                  Codec var17 = var26.getValue().getLast().getCodec().getChildCodec();
                  if (var9 != ModifyRulesEffect.Operation.APPEND || isAppendableFieldCodec(var17)) {
                     var6 = this.addEffectFieldRow(var1, var2, var6, var11, var27, var17, var24.get(var27));
                  }
               }
            }
         }
      }

      for (String var23 : List.of("MatchKey", "MatchValue", "Radius", "Center")) {
         var6 = this.addEffectFieldByKey(var1, var2, var6, var4, var7, var8, var23);
      }
   }

   class="kw">private class="kw">static boolean isTagConditionFieldHidden(@Nonnull String var0, @Nonnull TagCondition.Source var1) {
      if (TAG_CONDITION_RADIUS_ONLY_KEYS.contains(var0)) {
         class="kw">return var1 != TagCondition.Source.RADIUS;
      } else {
         class="kw">return !"MinimumCount".equals(var0) ? false : var1 != TagCondition.Source.GROUP && var1 != TagCondition.Source.RADIUS;
      }
   }

   class="kw">private int appendRejectionSignalSection(
      @Nonnull UICommandBuilder var1,
      @Nonnull UIEventBuilder var2,
      int var3,
      @Nonnull String var4,
      @Nonnull BuilderCodec<TriggerRule> var5,
      @Nonnull BsonDocument var6,
      @Nonnull AbstractDenyRule var7
   ) {
      String var8 = "#EffectDetailPanel[" + var3 + "]";
      String var9 = this.rejectionSignalExpanded ? "v" : ">";
      var1.append("#EffectDetailPanel", "Pages/TriggerVolume/TriggerVolumeInspectorEventCategoryHeader.ui");
      var1.set(var8 + ".TextSpans", Message.translation("server.customUI.triggerVolumeEffectEditor.rejectionSignalSection").param("state", var9));
      var2.addEventBinding(
         CustomUIEventBindingType.Activating, var8, new EventData().append("Action", TriggerVolumeInspectorPage.Action.ToggleRejectionSignal.name())
      );
      var3++;
      if (!this.rejectionSignalExpanded) {
         class="kw">return var3;
      }

      boolean var10 = var7.getTarget() == AbstractDenyRule.DenySignalTarget.SELF;

      for (String var12 : DENY_SIGNAL_FIELD_KEYS) {
         if (!var10 || !DENY_SIGNAL_OTHER_ONLY_KEYS.contains(var12)) {
            List var13 = var5.getEntries().get(var12);
            if (var13 != null && !var13.isEmpty()) {
               BuilderField var14 = var13.getLast();
               var3 = this.addEffectFieldRow(var1, var2, var3, var4, var12, var14.getCodec().getChildCodec(), var6.get(var12));
            }
         }
      }

      class="kw">return var3;
   }

   class="kw">private int addEffectFieldByKey(
      @Nonnull UICommandBuilder var1,
      @Nonnull UIEventBuilder var2,
      int var3,
      @Nonnull String var4,
      @Nullable BuilderCodec<TriggerEffect> var5,
      @Nonnull BsonDocument var6,
      @Nonnull String var7
   ) {
      if (var5 == null) {
         class="kw">return var3;
      } else {
         List var8 = var5.getEntries().get(var7);
         if (var8 != null && !var8.isEmpty()) {
            BuilderField var9 = var8.getLast();
            class="kw">return this.addEffectFieldRow(var1, var2, var3, var4, var7, var9.getCodec().getChildCodec(), var6.get(var7));
         } else {
            class="kw">return var3;
         }
      }
   }

   class="kw">private int addRuleTypeDropdownRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, boolean var5) {
      String var6 = "#EffectDetailPanel[" + var3 + "]";
      var1.append("#EffectDetailPanel", "Pages/TriggerVolume/TriggerVolumeInspectorDropdownRow.ui");
      var1.set(var6 + " #Label.Text", fieldLabel("ModifyRules", "RuleType"));
      setEffectFieldTooltip(var1, var6, "ModifyRules", "RuleType");
      ObjectArrayList var7 = new ObjectArrayList();
      if (var5) {
         var7.add(new DropdownEntryInfo(LocalizableString.fromMessageId("server.customUI.triggerVolumeEffectEditor.field.ModifyRules.RuleType.all"), "", null));
      }

      for (String var9 : getSortedRuleTypeIds()) {
         var7.add(new DropdownEntryInfo(this.ruleDropdownLabel(var9), var9, null));
      }

      var1.set(var6 + " #Input.Entries", var7);
      var1.set(var6 + " #Input.Value", var4);
      var2.addEventBinding(CustomUIEventBindingType.ValueChanged, var6 + " #Input", paramEvent("RuleType", var6 + " #Input.Value"), false);
      class="kw">return var3 + 1;
   }

   class="kw">private int addRuleFieldDropdownRow(
      @Nonnull UICommandBuilder var1,
      @Nonnull UIEventBuilder var2,
      int var3,
      @Nonnull String var4,
      @Nullable BuilderCodec<TriggerRule> var5,
      @Nullable String var6
   ) {
      String var7 = "#EffectDetailPanel[" + var3 + "]";
      var1.append("#EffectDetailPanel", "Pages/TriggerVolume/TriggerVolumeInspectorDropdownRow.ui");
      var1.set(var7 + " #Label.Text", fieldLabel("ModifyRules", "RuleField"));
      setEffectFieldTooltip(var1, var7, "ModifyRules", "RuleField");
      ObjectArrayList var8 = new ObjectArrayList();
      if (var5 != null) {
         for (Entry var10 : var5.getEntries().entrySet()) {
            String var11 = var10.getKey();
            if (!var10.getValue().isEmpty() && !"Enabled".equals(var11)) {
               var8.add(new DropdownEntryInfo(this.fieldDropdownLabel(var4, var11), var11, null));
            }
         }
      }

      var1.set(var7 + " #Input.Entries", var8);
      var1.set(var7 + " #Input.Value", var6 != null ? var6 : "");
      var2.addEventBinding(CustomUIEventBindingType.ValueChanged, var7 + " #Input", paramEvent("RuleField", var7 + " #Input.Value"), false);
      class="kw">return var3 + 1;
   }

   @Nonnull
   class="kw">private LocalizableString fieldDropdownLabel(@Nonnull String var1, @Nonnull String var2) {
      String var3 = "server.customUI.triggerVolumeEffectEditor.field." + var1 + "." + var2;
      if (messageExists(var3)) {
         class="kw">return LocalizableString.fromMessageId(var3);
      }

      String var4 = "server.customUI.triggerVolumeEffectEditor.field.common." + var2;
      class="kw">return messageExists(var4) ? LocalizableString.fromMessageId(var4) : LocalizableString.fromString(var2);
   }

   class="kw">private int appendBaseFieldHeader(
      @Nonnull UICommandBuilder var1,
      @Nonnull UIEventBuilder var2,
      int var3,
      boolean var4,
      @Nonnull String var5,
      @Nonnull String var6,
      @Nonnull String var7,
      @Nonnull String var8
   ) {
      String var9 = "#EffectDetailPanel[" + var3 + "]";
      var1.append("#EffectDetailPanel", "Pages/TriggerVolume/TriggerVolumeInspectorBaseHeaderGrid.ui");
      String var10 = var9 + " #EventCell";
      var1.set(var10 + " #Label.Text", Message.translation("server.customUI.triggerVolumeEffectEditor.baseField.event"));
      var1.set(var10 + " #Label.TooltipText", Message.translation("server.customUI.triggerVolumeEffectEditor.baseField.event.tooltip"));
      ObjectArrayList var11 = new ObjectArrayList();

      for (TriggerEventType var13 : TriggerEventType.values()) {
         String var14 = var13.name();
         var11.add(new DropdownEntryInfo(this.optionLabel("baseField", "Event", var14), var14, this.optionTooltip("baseField", "Event", var14)));
      }

      var1.set(var10 + " #Input.Entries", var11);
      var1.set(var10 + " #Input.Value", var5);
      var2.addEventBinding(CustomUIEventBindingType.ValueChanged, var10 + " #Input", paramEvent("Event", var10 + " #Input.Value"), false);
      this.setBaseNumberCell(var1, var2, var9 + " #EntryCell", "Entry", "baseField.entry", var6);
      var2.addEventBinding(
         CustomUIEventBindingType.FocusLost,
         var9 + " #EntryCell #Input",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.CommitEntry.name()),
         false
      );
      var2.addEventBinding(
         CustomUIEventBindingType.Validating,
         var9 + " #EntryCell #Input",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.CommitEntry.name()),
         false
      );
      if (var4) {
         var1.set(var9 + " #SecondRow.Visible", false);
      } else {
         this.setBaseNumberCell(var1, var2, var9 + " #DelayCell", "Delay", "effectDelay", var7);
         this.setBaseNumberCell(var1, var2, var9 + " #IntervalCell", "Interval", "baseField.interval", var8);
      }

      class="kw">return var3 + 1;
   }

   class="kw">private void setBaseNumberCell(
      @Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, @Nonnull String var3, @Nonnull String var4, @Nonnull String var5, @Nonnull String var6
   ) {
      var1.set(var3 + " #Label.Text", Message.translation("server.customUI.triggerVolumeEffectEditor." + var5));
      var1.set(var3 + " #Label.TooltipText", Message.translation("server.customUI.triggerVolumeEffectEditor." + var5 + ".tooltip"));

      double var7;
      try {
         var7 = Double.parseDouble(var6);
      } catch (NumberFormatException var10) {
         var7 = 0.0;
      }

      var1.set(var3 + " #Input.Value", var7);
      var2.addEventBinding(CustomUIEventBindingType.ValueChanged, var3 + " #Input", numericParamEvent(var4, var3 + " #Input.Value"), false);
   }

   class="kw">private class="kw">static boolean isAppendableFieldCodec(@Nonnull Codec<?> var0) {
      class="kw">return var0 == Codec.STRING_ARRAY || var0 == Codec.FLOAT || var0 == Codec.DOUBLE || var0 == Codec.INTEGER || var0 == Codec.LONG;
   }

   class="kw">private int addEffectFieldRow(
      @Nonnull UICommandBuilder var1,
      @Nonnull UIEventBuilder var2,
      int var3,
      @Nonnull String var4,
      @Nonnull String var5,
      @Nonnull Codec<?> var6,
      @Nullable BsonValue var7
   ) {
      if (var6 == Codec.BOOLEAN) {
         boolean var25 = var7 class="kw">instanceof BsonBoolean var32 && var32.getValue();
         class="kw">return this.addEffectCheckboxRow(var1, var2, var3, var4, var5, var25);
      }

      if (var6 == Codec.FLOAT) {
         String var24 = var7 class="kw">instanceof BsonDouble var31 ? String.valueOf((float)var31.getValue()) : "0.0";
         class="kw">return this.addEffectNumberRow(var1, var2, var3, var4, var5, var24, 2);
      }

      if (var6 == Codec.DOUBLE) {
         String var23 = var7 class="kw">instanceof BsonDouble var30 ? String.valueOf(var30.getValue()) : "0.0";
         class="kw">return this.addEffectNumberRow(var1, var2, var3, var4, var5, var23, 2);
      }

      if (var6 == Codec.INTEGER) {
         String var22 = var7 class="kw">instanceof BsonInt32 var29 ? String.valueOf(var29.getValue()) : "0";
         class="kw">return this.addEffectNumberRow(var1, var2, var3, var4, var5, var22, 0);
      }

      if (var6 == Codec.LONG) {
         String var21 = var7 class="kw">instanceof BsonInt64 var28 ? String.valueOf(var28.getValue()) : "0";
         class="kw">return this.addEffectNumberRow(var1, var2, var3, var4, var5, var21, 0);
      }

      if (var6 == Vector3dUtil.CODEC) {
         double var20 = 0.0;
         double var33 = 0.0;
         double var13 = 0.0;
         if (var7 class="kw">instanceof BsonDocument var15) {
            var20 = var15.get("X", new BsonDouble(0.0)).asDouble().getValue();
            var33 = var15.get("Y", new BsonDouble(0.0)).asDouble().getValue();
            var13 = var15.get("Z", new BsonDouble(0.0)).asDouble().getValue();
         }

         class="kw">return this.addEffectVec3Row(var1, var2, var3, var4, var5, var20, var33, var13);
      } else if (!(var6 class="kw">instanceof EnumCodec var8)) {
         if (var6 == Codec.STRING) {
            String var19 = var7 class="kw">instanceof BsonString var27 ? var27.getValue() : "";
            class="kw">return getAssetSourceForField(var4, var5) != null
               ? this.addAssetPickerRow(var1, var2, var3, var4, var5, var19)
               : this.addEffectTextRow(var1, var2, var3, var4, var5, var19);
         } else if (var6 == Codec.STRING_ARRAY) {
            String var18 = var7 class="kw">instanceof BsonArray var26
               ? String.join(", ", var26.stream().filter(BsonString.class::isInstance).map(BsonString.class::cast).map(BsonString::getValue).toList())
               : "";
            class="kw">return getAssetSourceForField(var4, var5) != null
               ? this.addAssetPickerRow(var1, var2, var3, var4, var5, var18)
               : this.addEffectTextRow(var1, var2, var3, var4, var5, var18);
         } else {
            String var17 = var7 != null ? bsonValueToString(var7) : "";
            class="kw">return this.addEffectTextRow(var1, var2, var3, var4, var5, var17);
         }
      } else {
         String var9 = "";
         if (var7 != null) {
            try {
               Enum var10 = var8.decode(var7, ExtraInfo.THREAD_LOCAL.get());
               var9 = var8.getEnumKeys()[var10.ordinal()];
            } catch (Exception var16) {
               var9 = var7 class="kw">instanceof BsonString var11 ? var11.getValue() : "";
            }
         }

         class="kw">return this.addEffectDropdownRow(var1, var2, var3, var4, var5, List.of(var8.getEnumKeys()), var9);
      }
   }

   class="kw">private int addEffectTextRow(
      @Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, @Nonnull String var6
   ) {
      String var7 = "#EffectDetailPanel[" + var3 + "]";
      var1.append("#EffectDetailPanel", "Pages/TriggerVolume/TriggerVolumeInspectorTextRow.ui");
      var1.set(var7 + " #Label.Text", fieldLabel(var4, var5));
      setEffectFieldTooltip(var1, var7, var4, var5);
      setEffectFieldPlaceholder(var1, var7, var4, var5);
      var1.set(var7 + " #Input.Value", var6);
      var2.addEventBinding(CustomUIEventBindingType.ValueChanged, var7 + " #Input", paramEvent(var5, var7 + " #Input.Value"), false);
      class="kw">return var3 + 1;
   }

   class="kw">private int addEffectNumberRow(
      @Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, @Nonnull String var6, int var7
   ) {
      class="kw">return this.addEffectNumberRow(var1, var2, var3, var4, var5, fieldLabel(var4, var5), null, var6, var7);
   }

   class="kw">private int addEffectNumberRow(
      @Nonnull UICommandBuilder var1,
      @Nonnull UIEventBuilder var2,
      int var3,
      @Nonnull String var4,
      @Nonnull String var5,
      @Nonnull Object var6,
      @Nullable Message var7,
      @Nonnull String var8,
      int var9
   ) {
      String var10 = "#EffectDetailPanel[" + var3 + "]";
      var1.append(
         "#EffectDetailPanel", var9 > 0 ? "Pages/TriggerVolume/TriggerVolumeInspectorNumberRow.ui" : "Pages/TriggerVolume/TriggerVolumeInspectorIntRow.ui"
      );
      if (var6 class="kw">instanceof Message var11) {
         var1.set(var10 + " #Label.Text", var11);
      } else {
         var1.set(var10 + " #Label.Text", var6.toString());
      }

      if (var7 != null) {
         var1.set(var10 + " #Label.TooltipText", var7);
      } else {
         setEffectFieldTooltip(var1, var10, var4, var5);
      }

      if (isNonNegativeNumericField(var4, var5)) {
         var1.set(var10 + " #Input.Format.MinValue", 0.0);
      }

      try {
         var1.set(var10 + " #Input.Value", Double.parseDouble(var8));
      } catch (NumberFormatException var12) {
         var1.set(var10 + " #Input.Value", 0.0);
      }

      var2.addEventBinding(CustomUIEventBindingType.ValueChanged, var10 + " #Input", numericParamEvent(var5, var10 + " #Input.Value"), false);
      class="kw">return var3 + 1;
   }

   class="kw">private int addEffectCheckboxRow(
      @Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, boolean var6
   ) {
      String var7 = "#EffectDetailPanel[" + var3 + "]";
      var1.append("#EffectDetailPanel", "Pages/TriggerVolume/TriggerVolumeInspectorCheckboxRow.ui");
      var1.set(var7 + " #Label.Text", fieldLabel(var4, var5));
      setEffectFieldTooltip(var1, var7, var4, var5);
      var1.set(var7 + " #Input.Value", var6);
      var2.addEventBinding(CustomUIEventBindingType.ValueChanged, var7 + " #Input", boolParamEvent(var5, var7 + " #Input.Value"), false);
      class="kw">return var3 + 1;
   }

   class="kw">private int addEffectDropdownRow(
      @Nonnull UICommandBuilder var1,
      @Nonnull UIEventBuilder var2,
      int var3,
      @Nonnull String var4,
      @Nonnull String var5,
      @Nonnull List<String> var6,
      @Nonnull String var7
   ) {
      String var8 = "#EffectDetailPanel[" + var3 + "]";
      var1.append("#EffectDetailPanel", "Pages/TriggerVolume/TriggerVolumeInspectorDropdownRow.ui");
      var1.set(var8 + " #Label.Text", fieldLabel(var4, var5));
      setEffectFieldTooltip(var1, var8, var4, var5);
      ObjectArrayList var9 = new ObjectArrayList();

      for (String var11 : var6) {
         var9.add(new DropdownEntryInfo(this.optionLabel(var4, var5, var11), var11, this.optionTooltip(var4, var5, var11)));
      }

      var1.set(var8 + " #Input.Entries", var9);
      var1.set(var8 + " #Input.Value", var7);
      var2.addEventBinding(CustomUIEventBindingType.ValueChanged, var8 + " #Input", paramEvent(var5, var8 + " #Input.Value"), false);
      class="kw">return var3 + 1;
   }

   @Nonnull
   class="kw">private LocalizableString optionLabel(@Nonnull String var1, @Nonnull String var2, @Nonnull String var3) {
      for (String var5 : optionLangKeys(var1, var2, var3, "")) {
         if (messageExists(var5)) {
            class="kw">return LocalizableString.fromMessageId(var5);
         }
      }

      this.logMissingOptionKey(optionLangKeys(var1, var2, var3, "").getFirst());
      class="kw">return LocalizableString.fromString(humanizeEnumValue(var3));
   }

   @Nullable
   class="kw">private LocalizableString optionTooltip(@Nonnull String var1, @Nonnull String var2, @Nonnull String var3) {
      for (String var5 : optionLangKeys(var1, var2, var3, ".tooltip")) {
         if (messageExists(var5)) {
            class="kw">return LocalizableString.fromMessageId(var5);
         }
      }

      class="kw">return null;
   }

   @Nonnull
   class="kw">private class="kw">static List<String> optionLangKeys(@Nonnull String var0, @Nonnull String var1, @Nonnull String var2, @Nonnull String var3) {
      String var4 = toUpperSnake(var2);
      String var5 = var2.toUpperCase(Locale.ROOT);
      ArrayList var6 = new ArrayList<>();
      appendOptionLangKeys(var6, "server.customUI.triggerVolumeEffectEditor.field." + var0 + "." + var1 + ".option.", var2, var4, var5, var3);
      appendOptionLangKeys(var6, "server.customUI.triggerVolumeEffectEditor.field.common." + var1 + ".option.", var2, var4, var5, var3);
      class="kw">return var6;
   }

   class="kw">private class="kw">static void appendOptionLangKeys(
      @Nonnull List<String> var0, @Nonnull String var1, @Nonnull String var2, @Nonnull String var3, @Nonnull String var4, @Nonnull String var5
   ) {
      var0.add(var1 + var2 + var5);
      if (!var3.equals(var2)) {
         var0.add(var1 + var3 + var5);
      }

      if (!var4.equals(var2) && !var4.equals(var3)) {
         var0.add(var1 + var4 + var5);
      }
   }

   class="kw">private class="kw">static boolean messageExists(@Nonnull String var0) {
      I18nModule var1 = I18nModule.get();
      class="kw">return var1 != null && var1.getMessage("en-US", var0) != null;
   }

   class="kw">private void logMissingOptionKey(@Nonnull String var1) {
      if (this.missingOptionLangKeys.add(var1)) {
         LOGGER.at(Level.FINE).log("Missing trigger volume dropdown option label '%s'", var1);
      }
   }

   @Nonnull
   class="kw">private class="kw">static String humanizeEnumValue(@Nonnull String var0) {
      String var1 = toUpperSnake(var0);
      if (var1.startsWith("PERCENT") && var1.length() > "PERCENT".length()) {
         var1 = "PERCENT_" + var1.substring("PERCENT".length());
      }

      String[] var2 = var1.toLowerCase(Locale.ROOT).split("_+", 0);
      StringBuilder var3 = new StringBuilder();

      for (String var7 : var2) {
         if (!var7.isEmpty()) {
            if (!var3.isEmpty()) {
               var3.append(' ');
            }

            var3.append(Character.toUpperCase(var7.charAt(0))).append(var7.substring(1));
         }
      }

      class="kw">return var3.isEmpty() ? var0 : var3.toString();
   }

   @Nonnull
   class="kw">private class="kw">static String toUpperSnake(@Nonnull String var0) {
      StringBuilder var1 = new StringBuilder();
      char var2 = 0;

      for (int var3 = 0; var3 < var0.length(); var3++) {
         char var4 = var0.charAt(var3);
         if (var4 == '_') {
            if (!var1.isEmpty() && var1.charAt(var1.length() - 1) != '_') {
               var1.append('_');
            }
         } else {
            if (var3 > 0 && Character.isUpperCase(var4) && (Character.isLowerCase(var2) || Character.isDigit(var2))) {
               var1.append('_');
            }

            var1.append(Character.toUpperCase(var4));
         }

         var2 = var4;
      }

      class="kw">return var1.toString();
   }

   class="kw">private int addEffectVec3Row(
      @Nonnull UICommandBuilder var1,
      @Nonnull UIEventBuilder var2,
      int var3,
      @Nonnull String var4,
      @Nonnull String var5,
      double var6,
      double var8,
      double var10
   ) {
      String var12 = "#EffectDetailPanel[" + var3 + "]";
      var1.append("#EffectDetailPanel", "Pages/TriggerVolume/TriggerVolumeInspectorVec3Row.ui");
      var1.set(var12 + " #Label.Text", fieldLabel(var4, var5));
      setEffectFieldTooltip(var1, var12, var4, var5);
      var1.set(var12 + " #X.Value", var6);
      var1.set(var12 + " #Y.Value", var8);
      var1.set(var12 + " #Z.Value", var10);

      for (String var14 : List.of("X", "Y", "Z")) {
         var2.addEventBinding(
            CustomUIEventBindingType.ValueChanged,
            var12 + " #" + var14,
            new EventData()
               .append("Action", TriggerVolumeInspectorPage.Action.UpdateParameter.name())
               .append("ParamKey", var5)
               .append("@VecX", var12 + " #X.Value")
               .append("@VecY", var12 + " #Y.Value")
               .append("@VecZ", var12 + " #Z.Value"),
            false
         );
      }

      class="kw">return var3 + 1;
   }

   class="kw">private int addRotationXyzRow(
      @Nonnull UICommandBuilder var1,
      @Nonnull UIEventBuilder var2,
      int var3,
      @Nonnull String var4,
      @Nonnull String var5,
      @Nonnull String var6,
      @Nonnull String var7
   ) {
      String var8 = "#EffectDetailPanel[" + var3 + "]";
      var1.append("#EffectDetailPanel", "Pages/TriggerVolume/TriggerVolumeInspectorRotation3Row.ui");
      var1.set(var8 + " #Label.Text", fieldLabel(var4, "Rotation"));
      setEffectFieldTooltip(var1, var8, var4, "Rotation");
      this.appendRotationAxis(var1, var2, var8, "X", var4, "RotationX", var5);
      this.appendRotationAxis(var1, var2, var8, "Y", var4, "RotationY", var6);
      this.appendRotationAxis(var1, var2, var8, "Z", var4, "RotationZ", var7);
      class="kw">return var3 + 1;
   }

   class="kw">private void appendRotationAxis(
      @Nonnull UICommandBuilder var1,
      @Nonnull UIEventBuilder var2,
      @Nonnull String var3,
      @Nonnull String var4,
      @Nonnull String var5,
      @Nonnull String var6,
      @Nonnull String var7
   ) {
      var1.set(var3 + " #" + var4 + "Label.Text", Message.translation("server.customUI.triggerVolumeEffectEditor.field.common.rotationAxis." + var4));
      String var8 = var3 + " #" + var4;
      ObjectArrayList var9 = new ObjectArrayList();

      for (String var13 : AXIS_ROTATION_CODEC.getEnumKeys()) {
         var9.add(new DropdownEntryInfo(this.optionLabel(var5, "Rotation", var13), var13, this.optionTooltip(var5, "Rotation", var13)));
      }

      var1.set(var8 + ".Entries", var9);
      var1.set(var8 + ".Value", var7);
      var2.addEventBinding(CustomUIEventBindingType.ValueChanged, var8, paramEvent(var6, var8 + ".Value"), false);
   }

   @Nonnull
   class="kw">private class="kw">static String enumValueOrDefault(@Nonnull BsonDocument var0, @Nonnull String var1) {
      class="kw">return var0.get(var1) class="kw">instanceof BsonString var3 ? var3.getValue() : AXIS_ROTATION_CODEC.getEnumKeys()[BlockTypeCondition.AxisRotation.ANY.ordinal()];
   }

   class="kw">private int addAssetPickerRow(
      @Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3, @Nonnull String var4, @Nonnull String var5, @Nonnull String var6
   ) {
      String var7 = "#EffectDetailPanel[" + var3 + "]";
      var1.append("#EffectDetailPanel", "Pages/TriggerVolume/TriggerVolumeInspectorAssetPickerRow.ui");
      var1.set(var7 + " #Label.Text", fieldLabel(var4, var5));
      setEffectFieldTooltip(var1, var7, var4, var5);
      if (var6.isEmpty()) {
         var1.set(var7 + " #PickerLabel.Text", Message.translation("server.customUI.triggerVolumeEffectEditor.assetPicker.none"));
      } else if (this.isUnsupportedAnimation(var4, var5, var6)) {
         var1.set(
            var7 + " #PickerLabel.Text",
            Message.translation("server.customUI.triggerVolumeEffectEditor.assetPicker.animationUnsupported").param("animation", var6)
         );
      } else if (this.isLoopingAnimation(var4, var5, var6)) {
         var1.set(
            var7 + " #PickerLabel.Text", Message.translation("server.customUI.triggerVolumeEffectEditor.assetPicker.animationLooping").param("animation", var6)
         );
      } else if (isApplyOnField(var4, var5)) {
         this.setApplyOnLabel(var1, var7 + " #PickerLabel.Text", var6);
      } else {
         var1.set(var7 + " #PickerLabel.Text", var6);
      }

      var2.addEventBinding(
         CustomUIEventBindingType.Activating,
         var7 + " #PickerButton",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.OpenAssetPicker.name()).append("ParamKey", var5)
      );
      class="kw">return var3 + 1;
   }

   class="kw">private boolean isUnsupportedAnimation(@Nonnull String var1, @Nonnull String var2, @Nonnull String var3) {
      if ("PlayAnimation".equals(var1) && "Animation".equals(var2)) {
         if (this.getSelectedItem() class="kw">instanceof PlayAnimationEffect var4) {
            String var6 = var4.getNpcType();
            class="kw">return var6.isBlank() ? false : !TriggerVolumesPlugin.get().collectAnimationIdsForApplyOn(var6).contains(var3);
         } else {
            class="kw">return false;
         }
      } else {
         class="kw">return false;
      }
   }

   class="kw">private boolean isUnsupportedApplyOn(@Nonnull String var1, @Nonnull String var2, @Nonnull String var3) {
      if ("PlayAnimation".equals(var1) && "NpcType".equals(var2) && !var3.isBlank()) {
         if (this.getSelectedItem() class="kw">instanceof PlayAnimationEffect var4) {
            String var6 = var4.getAnimation();
            class="kw">return var6 != null && !var6.isBlank() ? !TriggerVolumesPlugin.get().collectApplyOnIdsForAnimation(var6).contains(var3) : false;
         } else {
            class="kw">return false;
         }
      } else {
         class="kw">return false;
      }
   }

   class="kw">private boolean isLoopingAnimation(@Nonnull String var1, @Nonnull String var2, @Nonnull String var3) {
      if ("PlayAnimation".equals(var1) && "Animation".equals(var2)) {
         class="kw">return this.getSelectedItem() class="kw">instanceof PlayAnimationEffect var4 ? TriggerVolumesPlugin.get().isLoopingAnimation(var4.getNpcType(), var3) : false;
      } else {
         class="kw">return false;
      }
   }

   class="kw">private class="kw">static boolean isApplyOnField(@Nonnull String var0, @Nonnull String var1) {
      class="kw">return "PlayAnimation".equals(var0) && "NpcType".equals(var1);
   }

   class="kw">private class="kw">static boolean isApplyOnPseudo(@Nonnull String var0) {
      class="kw">return "Player".equals(var0) || "Everyone".equals(var0);
   }

   class="kw">private void setApplyOnLabel(@Nonnull UICommandBuilder var1, @Nonnull String var2, @Nonnull String var3) {
      boolean var4 = isApplyOnPseudo(var3);
      String var5 = "server.customUI.triggerVolumeEffectEditor.applyOn." + var3;
      if (this.isUnsupportedApplyOn("PlayAnimation", "NpcType", var3)) {
         if (var4) {
            var1.set(var2, Message.translation(var5 + "Unsupported"));
         } else {
            var1.set(var2, Message.translation("server.customUI.triggerVolumeEffectEditor.assetPicker.targetUnsupported").param("target", var3));
         }
      } else if (var4) {
         var1.set(var2, Message.translation(var5));
      } else {
         var1.set(var2, var3);
      }
   }

   class="kw">private int addPastePrefabPreviewButtonRow(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2, int var3) {
      String var4 = "#EffectDetailPanel[" + var3 + "]";
      var1.append("#EffectDetailPanel", "Common/TextButton.ui");
      Message var5 = this.isPreviewingSelectedEffect()
         ? Message.translation("server.customUI.triggerVolumeEffectEditor.pastePrefab.preview.hide")
         : Message.translation("server.customUI.triggerVolumeEffectEditor.pastePrefab.preview.show");
      var1.set(var4 + " #Button.Text", var5);
      var1.set(var4 + " #Button.TooltipText", Message.translation("server.customUI.triggerVolumeEffectEditor.pastePrefab.preview.tooltip"));
      var2.addEventBinding(
         CustomUIEventBindingType.Activating, var4 + " #Button", new EventData().append("Action", TriggerVolumeInspectorPage.Action.TogglePrefabPreview.name())
      );
      class="kw">return var3 + 1;
   }

   class="kw">private void onSelectEffect(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      try {
         TriggerVolumeInspectorPage.EffectListKind var2 = var1.effectListKind != null
            ? TriggerVolumeInspectorPage.EffectListKind.valueOf(var1.effectListKind)
            : TriggerVolumeInspectorPage.EffectListKind.EFFECT;
         int var3 = Integer.parseInt(var1.effectIndex);
         this.selectedKind = var2;
         this.selectedEffectIndex = var3;
         this.lastCommittedEntry = this.entryOf(this.getSelectedItem());
         this.syncAddControlsToSelectedEffect();
         this.rebuildAll();
      } catch (IllegalArgumentException var4) {
      }
   }

   class="kw">private void syncAddControlsToSelectedEffect() {
      if (this.selectedEffectIndex >= 0 && this.selectedEffectIndex < this.getItemCount(this.selectedKind)) {
         if (this.selectedKind == TriggerVolumeInspectorPage.EffectListKind.RULE) {
            this.enterRuleAddMode();
         } else {
            TriggerEventType var1;
            int var2;
            if (this.selectedKind == TriggerVolumeInspectorPage.EffectListKind.CONDITION) {
               TriggerCondition var3 = this.currentConditions().get(this.selectedEffectIndex);
               var1 = var3.getEventType();
               var2 = var3.getEntry();
            } else {
               TriggerEffect var4 = this.currentEffects(this.selectedKind).get(this.selectedEffectIndex);
               var1 = var4.getEventType();
               var2 = var4.getEntry();
            }

            this.addTargetKind = this.selectedKind;
            this.addEventType = var1;
            this.addEntry = var2;
         }
      }
   }

   class="kw">private void onAddEffect(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.effectType != null && !var1.effectType.isBlank()) {
         TriggerVolumeInspectorPage.EffectListKind var2 = var1.addTargetKind != null
            ? parseEffectListKind(var1.addTargetKind, TriggerVolumeInspectorPage.EffectListKind.EFFECT)
            : this.addTargetKind;
         if (var2 == TriggerVolumeInspectorPage.EffectListKind.RULE) {
            this.enterRuleAddMode();
            BuilderCodec var7 = getRuleBuilderCodecFor(var1.effectType);
            if (var7 == null) {
               this.playerRef.sendMessage(Message.translation("server.customUI.triggerVolumeEffectEditor.unknownType"));
            } else {
               TriggerRule var8 = var7.getSupplier().get();
               materializeRuleDefaults(var7, var8);
               this.currentRules().add(var8);
               this.markSelectedDraftDirty();
               this.selectedKind = TriggerVolumeInspectorPage.EffectListKind.RULE;
               this.selectedEffectIndex = this.currentRules().size() - 1;
               this.volumeRulesCollapsed = false;
               this.rebuildAll();
            }
         } else {
            this.addTargetKind = var2;
            TriggerEventType var3 = var1.addEventType != null ? parseTriggerEventType(var1.addEventType, this.addEventType) : this.addEventType;
            this.addEventType = var3;
            int var4 = this.resolveAddEntry(var1.addEntry, var3);
            this.addEntry = var4;
            if (var2 == TriggerVolumeInspectorPage.EffectListKind.CONDITION) {
               BuilderCodec var9 = getConditionBuilderCodecFor(var1.effectType);
               if (var9 == null) {
                  this.playerRef.sendMessage(Message.translation("server.customUI.triggerVolumeEffectEditor.unknownType"));
               } else {
                  TriggerCondition var10 = var9.getSupplier().get();
                  var10.setEventType(var3);
                  var10.setEntry(var4);
                  materializeConditionDefaults(var9, var10);
                  this.currentConditions().add(var10);
                  this.markSelectedDraftDirty();
                  this.selectedKind = TriggerVolumeInspectorPage.EffectListKind.CONDITION;
                  this.selectedEffectIndex = this.currentConditions().size() - 1;
                  this.setEventCategoryExpanded(TriggerVolumeInspectorPage.EventCategoryScope.VOLUME, var3, var4);
                  this.rebuildAll();
               }
            } else {
               BuilderCodec var5 = getBuilderCodecFor(var1.effectType);
               if (var5 == null) {
                  this.playerRef.sendMessage(Message.translation("server.customUI.triggerVolumeEffectEditor.unknownType"));
               } else {
                  TriggerEffect var6 = var5.getSupplier().get();
                  var6.setEventType(var3);
                  var6.setEntry(var4);
                  materializeDefaults(var5, var6);
                  this.currentEffects(var2).add(var6);
                  this.markSelectedDraftDirty();
                  this.selectedKind = var2;
                  this.selectedEffectIndex = this.currentEffects(var2).size() - 1;
                  this.setEventCategoryExpanded(TriggerVolumeInspectorPage.EventCategoryScope.VOLUME, var3, var4);
                  this.rebuildAll();
               }
            }
         }
      }
   }

   class="kw">private int resolveAddEntry(@Nullable String var1, @Nonnull TriggerEventType var2) {
      if ("NEW".equals(var1)) {
         class="kw">return this.maxEntryForEvent(var2) + 1;
      } else {
         class="kw">return var1 != null && !var1.isBlank() ? parseEntry(var1) : this.addEntry;
      }
   }

   class="kw">private int maxEntryForEvent(@Nonnull TriggerEventType var1) {
      int var2 = 0;

      for (int var6 : this.getEventEntries(TriggerVolumeInspectorPage.EventCategoryScope.VOLUME, null, var1)) {
         var2 = Math.max(var2, var6);
      }

      class="kw">return var2;
   }

   class="kw">private void onRemoveEffect() {
      if (this.selectedEffectIndex >= 0 && this.selectedEffectIndex < this.getItemCount(this.selectedKind)) {
         if (this.isPreviewingSelectedEffect()) {
            this.hidePastePrefabPreview();
         }

         class="kw">switch (this.selectedKind) {
            case CONDITION:
               this.currentConditions().remove(this.selectedEffectIndex);
               break;
            case EFFECT:
            case REJECTION_EFFECT:
               this.currentEffects(this.selectedKind).remove(this.selectedEffectIndex);
               break;
            case RULE:
               this.currentRules().remove(this.selectedEffectIndex);
         }

         this.markSelectedDraftDirty();
         if (this.selectedEffectIndex >= this.getItemCount(this.selectedKind)) {
            this.selectedEffectIndex = this.getItemCount(this.selectedKind) - 1;
         }

         this.rebuildAll();
      }
   }

   class="kw">private void onDuplicateEffect() {
      if (this.selectedEffectIndex >= 0 && this.selectedEffectIndex < this.getItemCount(this.selectedKind)) {
         this.hidePastePrefabPreview();
         if (this.selectedKind == TriggerVolumeInspectorPage.EffectListKind.CONDITION) {
            List var1 = this.currentConditions();
            var1.add(this.selectedEffectIndex + 1, TriggerCondition.deepCopy(var1.get(this.selectedEffectIndex)));
         } else if (this.selectedKind == TriggerVolumeInspectorPage.EffectListKind.RULE) {
            List var2 = this.currentRules();
            var2.add(this.selectedEffectIndex + 1, TriggerRule.deepCopy(var2.get(this.selectedEffectIndex)));
         } else {
            List var3 = this.currentEffects(this.selectedKind);
            var3.add(this.selectedEffectIndex + 1, TriggerEffect.deepCopy(var3.get(this.selectedEffectIndex)));
         }

         this.markSelectedDraftDirty();
         this.selectedEffectIndex++;
         this.rebuildAll();
      }
   }

   class="kw">private void onMoveEffect(int var1) {
      if (this.selectedEffectIndex >= 0 && this.selectedEffectIndex < this.getItemCount(this.selectedKind)) {
         this.hidePastePrefabPreview();
         int var2 = this.selectedEffectIndex + var1;
         if (var2 >= 0 && var2 < this.getItemCount(this.selectedKind)) {
            class="kw">switch (this.selectedKind) {
               case CONDITION:
                  Collections.swap(this.currentConditions(), this.selectedEffectIndex, var2);
                  break;
               case EFFECT:
               case REJECTION_EFFECT:
                  Collections.swap(this.currentEffects(this.selectedKind), this.selectedEffectIndex, var2);
                  break;
               case RULE:
                  Collections.swap(this.currentRules(), this.selectedEffectIndex, var2);
            }

            this.markSelectedDraftDirty();
            this.selectedEffectIndex = var2;
            this.rebuildAll();
         }
      }
   }

   class="kw">private void onUpdateAddTarget(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.addTargetKind != null) {
         TriggerVolumeInspectorPage.EffectListKind var2 = parseEffectListKind(var1.addTargetKind, TriggerVolumeInspectorPage.EffectListKind.EFFECT);
         if (var2 == TriggerVolumeInspectorPage.EffectListKind.RULE) {
            this.enterRuleAddMode();
         } else {
            this.addTargetKind = var2;
         }

         this.rebuildAll();
      }
   }

   class="kw">private void onUpdateAddEffectType(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.effectType != null && !var1.effectType.isBlank()) {
         this.addEffectType = var1.effectType;
      }
   }

   class="kw">private void onUpdateAddEventType(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.addEventType != null) {
         if ("ALWAYS_ACTIVE".equals(var1.addEventType)) {
            this.enterRuleAddMode();
            this.rebuildAll();
         } else {
            this.leaveRuleAddMode();
            this.addEventType = parseTriggerEventType(var1.addEventType, this.addEventType);
            this.addEntry = 0;
            this.rebuildAll();
         }
      }
   }

   class="kw">private void onUpdateAddEntry(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      this.addEntry = this.resolveAddEntry(var1.addEntry, this.addEventType);
      this.rebuildAll();
   }

   class="kw">private void onToggleEventCategory(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.eventType != null && var1.eventCategoryScope != null) {
         try {
            TriggerEventType var2 = TriggerEventType.valueOf(var1.eventType);
            TriggerVolumeInspectorPage.EventCategoryScope var3 = TriggerVolumeInspectorPage.EventCategoryScope.valueOf(var1.eventCategoryScope);
            int var4 = parseEntry(var1.eventEntry);
            this.toggleEventCategory(var3, var2, var4);
            this.rebuildAll();
         } catch (IllegalArgumentException var5) {
         }
      }
   }

   class="kw">private class="kw">static int parseEntry(@Nullable String var0) {
      if (var0 != null && !var0.isBlank()) {
         try {
            class="kw">return Math.max(0, Integer.parseInt(var0.trim()));
         } catch (NumberFormatException var2) {
            class="kw">return 0;
         }
      } else {
         class="kw">return 0;
      }
   }

   class="kw">private void onUpdateParameter(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      Object var2 = this.getSelectedItem();
      if (var2 != null && var1.paramKey != null) {
         String var3 = var1.paramKey;
         if (var2 class="kw">instanceof TriggerRule var11) {
            if ("Enabled".equals(var3)) {
               if (var1.paramBool != null) {
                  var11.setEnabled(var1.paramBool);
                  this.markSelectedDraftDirty();
                  this.rebuildAll();
               }
            } else {
               BuilderCodec var16 = getRuleBuilderCodecFor(getRuleTypeId(var11));
               if (var16 != null) {
                  this.applyCodecField(var16, var11, var3, var1);
                  this.markSelectedDraftDirty();
                  if (var11 class="kw">instanceof AbstractDenyRule && "Target".equals(var3)) {
                     this.rebuildAll();
                  }
               }
            }
         } else if ("Event".equals(var3)) {
            try {
               TriggerEventType var10 = TriggerEventType.valueOf(var1.paramValue);
               int var15 = var2 class="kw">instanceof TriggerCondition var19 ? var19.getEntry() : ((TriggerEffect)var2).getEntry();
               if (var2 class="kw">instanceof TriggerCondition var20) {
                  var20.setEventType(var10);
               } else {
                  ((TriggerEffect)var2).setEventType(var10);
               }

               this.markSelectedDraftDirty();
               this.setEventCategoryExpanded(TriggerVolumeInspectorPage.EventCategoryScope.VOLUME, var10, var15);
            } catch (IllegalArgumentException var7) {
            }

            this.rebuildAll();
         } else if ("Entry".equals(var3)) {
            if (var1.paramNumericValue != null) {
               int var9 = Math.max(0, var1.paramNumericValue.intValue() - 1);
               TriggerEventType var14 = var2 class="kw">instanceof TriggerCondition var17 ? var17.getEventType() : ((TriggerEffect)var2).getEventType();
               if (var2 class="kw">instanceof TriggerCondition var18) {
                  var18.setEntry(var9);
               } else {
                  ((TriggerEffect)var2).setEntry(var9);
               }

               this.markSelectedDraftDirty();
               this.setEventCategoryExpanded(TriggerVolumeInspectorPage.EventCategoryScope.VOLUME, normalizeEventType(var14), var9);
            }
         } else if (var2 class="kw">instanceof TriggerCondition var8) {
            String var13 = getConditionTypeId(var8);
            BuilderCodec var6 = getConditionBuilderCodecFor(var13);
            if (var6 != null) {
               this.applyCodecField(var6, var8, var3, var1);
               this.markSelectedDraftDirty();
               if ("Source".equals(var3) && "TagCondition".equals(var13)) {
                  this.rebuildAll();
               }
            }
         } else {
            TriggerEffect var4 = (TriggerEffect)var2;
            if ("Interval".equals(var3)) {
               if (var1.paramNumericValue != null) {
                  var4.setInterval(var1.paramNumericValue.floatValue());
                  this.markSelectedDraftDirty();
               }
            } else if ("Delay".equals(var3)) {
               if (var1.paramNumericValue != null) {
                  var4.setDelay(var1.paramNumericValue.floatValue());
                  this.markSelectedDraftDirty();
               }
            } else if (var4 class="kw">instanceof ModifyRulesEffect var12) {
               this.applyModifyRulesParameter(var12, var3, var1);
            } else {
               BuilderCodec var5 = getBuilderCodecFor(getTypeId(var4));
               if (var5 != null) {
                  this.applyCodecField(var5, var4, var3, var1);
                  this.markSelectedDraftDirty();
                  if (var4 class="kw">instanceof RemoveEntitiesEffect && "Mode".equals(var3)) {
                     this.rebuildAll();
                     class="kw">return;
                  }
               }

               if (var4 class="kw">instanceof PastePrefabEffect && this.isPreviewingSelectedEffect()) {
                  if ("Position".equals(var3) || "Origin".equals(var3)) {
                     this.refreshActivePastePrefabPreviewPosition();
                  } else if ("Prefab".equals(var3) || "PrefabList".equals(var3)) {
                     this.refreshActivePastePrefabPreview();
                  }
               }
            }
         }
      }
   }

   class="kw">private void applyModifyRulesParameter(@Nonnull ModifyRulesEffect var1, @Nonnull String var2, @Nonnull TriggerVolumeInspectorPage.PageData var3) {
      if ("RuleType".equals(var2)) {
         this.applyRuleTypeChange(var1, var3.paramValue);
         this.markSelectedDraftDirty();
         this.rebuildAll();
      } else if ("RuleField".equals(var2)) {
         BuilderCodec var7 = getBuilderCodecFor(getTypeId(var1));
         if (var7 != null) {
            this.applyCodecField(var7, var1, "FieldKey", var3);
            this.markSelectedDraftDirty();
         }

         this.rebuildAll();
      } else {
         BuilderCodec var4 = getBuilderCodecFor(getTypeId(var1));
         if (var4 != null && var4.getEntries().containsKey(var2)) {
            this.applyCodecField(var4, var1, var2, var3);
            this.markSelectedDraftDirty();
            if ("Operation".equals(var2)) {
               this.rebuildAll();
            }
         } else {
            TriggerRule var5 = var1.getRule();
            if (var5 != null) {
               BuilderCodec var6 = getRuleBuilderCodecFor(getRuleTypeId(var5));
               if (var6 != null) {
                  this.applyCodecField(var6, var5, var2, var3);
                  this.markSelectedDraftDirty();
               }
            }
         }
      }
   }

   class="kw">private void applyRuleTypeChange(@Nonnull ModifyRulesEffect var1, @Nullable String var2) {
      if (var2 != null && !var2.isBlank()) {
         TriggerRule var3 = var1.getRule();
         if (var3 == null || !var2.equals(getRuleTypeId(var3))) {
            BuilderCodec var4 = getRuleBuilderCodecFor(var2);
            if (var4 != null) {
               TriggerRule var5 = var4.getSupplier().get();
               materializeRuleDefaults(var4, var5);
               var1.setRule(var5);
            }
         }
      } else {
         var1.setRule(null);
      }
   }

   class="kw">private void onCommitEntry() {
      Object var1 = this.getSelectedItem();
      if (var1 != null) {
         int var2 = this.entryOf(var1);
         if (var2 >= 0 && var2 != this.lastCommittedEntry) {
            this.lastCommittedEntry = var2;
            this.rebuildEffectListOnly();
         }
      }
   }

   class="kw">private int entryOf(@Nullable Object var1) {
      if (var1 class="kw">instanceof TriggerCondition var3) {
         class="kw">return var3.getEntry();
      } else {
         class="kw">return var1 class="kw">instanceof TriggerEffect var2 ? var2.getEntry() : -1;
      }
   }

   class="kw">private void onTogglePrefabPreview() {
      if (this.isPreviewingSelectedEffect()) {
         this.hidePastePrefabPreview();
         this.rebuildAll();
      } else {
         if (this.getActivePastePrefabPreviewState() != null) {
            this.hidePastePrefabPreview();
         }

         if (this.getSelectedItem() class="kw">instanceof PastePrefabEffect var2) {
            Vector3d var3 = this.getPastePrefabPreviewPosition(var2);
            if (var3 == null) {
               this.playerRef.sendMessage(Message.translation("server.customUI.triggerVolumeEffectEditor.pastePrefab.preview.noPrefab"));
            } else if (this.sendPastePrefabPreview(var2, true)) {
               TriggerVolumesPlugin.get()
                  .setPastePrefabPreviewState(
                     this.playerRef.getUuid(),
                     new TriggerVolumesPlugin.PastePrefabPreviewState(
                        this.selectedWorld, this.selectedId, this.selectedIsGroup, this.selectedKind.name(), this.selectedEffectIndex, var3
                     )
                  );
               this.rebuildAll();
            }
         }
      }
   }

   class="kw">private boolean sendPastePrefabPreview(@Nonnull PastePrefabEffect var1, boolean var2) {
      Vector3d var3 = this.getPastePrefabPreviewPosition(var1);
      class="kw">return var3 == null ? false : this.sendPastePrefabPreview(var1, var3, var2);
   }

   class="kw">private boolean sendPastePrefabPreview(@Nonnull PastePrefabEffect var1, @Nonnull Vector3d var2, boolean var3) {
      ShowTriggerVolumePastePrefabPreview var4 = new ShowTriggerVolumePastePrefabPreview();
      var4.position = new Vector3f((float)var2.x(), (float)var2.y(), (float)var2.z());
      if (var3) {
         Path var5 = this.resolvePastePrefabPath(var1);
         if (var5 == null) {
            this.playerRef.sendMessage(Message.translation("server.customUI.triggerVolumeEffectEditor.pastePrefab.preview.noPrefab"));
            class="kw">return false;
         }

         BlockSelection var6;
         try {
            var6 = PrefabStore.get().getPrefab(var5);
         } catch (Exception var8) {
            ((HytaleLogger.Api)LOGGER.at(Level.WARNING).withCause(var8)).log("Failed to load PastePrefab preview '%s'", var5);
            this.playerRef.sendMessage(Message.translation("server.customUI.triggerVolumeEffectEditor.pastePrefab.preview.loadFailed"));
            class="kw">return false;
         }

         if (var6 == null) {
            this.playerRef.sendMessage(Message.translation("server.customUI.triggerVolumeEffectEditor.pastePrefab.preview.loadFailed"));
            class="kw">return false;
         }

         this.fillPreviewPacket(var4, var6);
      }

      this.playerRef.getPacketHandler().write(var4);
      TriggerVolumesPlugin.PastePrefabPreviewState var9 = this.getActivePastePrefabPreviewState();
      if (var9 != null) {
         var9.setLastSentPosition(var2);
      }

      class="kw">return true;
   }

   class="kw">private void fillPreviewPacket(@Nonnull ShowTriggerVolumePastePrefabPreview var1, @Nonnull BlockSelection var2) {
      EditorBlocksChange var3 = var2.toPacket();
      var1.blocksChange = var3.blocksChange;
      var1.fluidsChange = var3.fluidsChange;
      var1.entityChanges = var3.entityChanges;
      this.applyTintFromPlayerPosition(var1);
   }

   class="kw">private void applyTintFromPlayerPosition(@Nonnull ShowTriggerVolumePastePrefabPreview var1) {
      Ref var2 = this.playerRef.getReference();
      if (var2 == null) {
         var1.biomeTint = DEFAULT_BIOME_TINT;
         var1.waterTint = DEFAULT_WATER_TINT;
      } else {
         Store var3 = var2.getStore();
         World var4 = var3.getExternalData().getWorld();
         if (var4 == null) {
            var1.biomeTint = DEFAULT_BIOME_TINT;
            var1.waterTint = DEFAULT_WATER_TINT;
         } else {
            Vector3d var5 = this.playerRef.getTransform().getPosition();
            int var6 = MathUtil.floor(var5.x);
            int var7 = MathUtil.floor(var5.y);
            int var8 = MathUtil.floor(var5.z);
            long var9 = ChunkUtil.indexChunkFromBlock(var6, var8);
            WorldChunk var11 = var4.getNonTickingChunk(var9);
            if (var11 != null && var11.getBlockChunk() != null) {
               BlockChunk var12 = var11.getBlockChunk();
               var1.biomeTint = var12.getTint(var6, var8);
               int var13 = var12.getEnvironment(var6, var7, var8);
               Environment var14 = Environment.getAssetMap().getAsset(var13);
               if (var14 != null) {
                  Color var15 = var14.getWaterTint();
                  if (var15 != null) {
                     var1.waterTint = (var15.red & 255) << 16 | (var15.green & 255) << 8 | var15.blue & 255;
                     class="kw">return;
                  }
               }

               var1.waterTint = DEFAULT_WATER_TINT;
            } else {
               var1.biomeTint = DEFAULT_BIOME_TINT;
               var1.waterTint = DEFAULT_WATER_TINT;
            }
         }
      }
   }

   @Nullable
   class="kw">private Path resolvePastePrefabPath(@Nonnull PastePrefabEffect var1) {
      String var2 = var1.getPrefabRelPath();
      if (var2 != null && !var2.isBlank()) {
         class="kw">return PastePrefabEffect.resolveDirectPrefabPath(var2.trim());
      } else {
         String var3 = var1.getPrefabListId();
         if (var3 != null && !var3.isBlank()) {
            PrefabListAsset var4 = PrefabListAsset.getAssetMap().getAsset(var3);
            class="kw">return var4 != null ? var4.getRandomPrefab() : null;
         } else {
            class="kw">return null;
         }
      }
   }

   @Nullable
   class="kw">private Vector3d getPastePrefabPreviewPosition(@Nonnull PastePrefabEffect var1) {
      Vector3d var2 = this.getCurrentPreviewOrigin();
      class="kw">return var2 == null ? null : this.getPastePrefabPreviewPosition(var1, var2);
   }

   @Nonnull
   class="kw">private Vector3d getPastePrefabPreviewPosition(@Nonnull PastePrefabEffect var1, @Nonnull Vector3d var2) {
      Vector3d var3 = var1.getPosition();

      Vector3d var4 = class="kw">switch (var1.getOrigin()) {
         case WORLD_ABSOLUTE -> var3 != null ? new Vector3d(var3) : new Vector3d();
         class="kw">default -> {
            Vector3d var5 = new Vector3d(var2);
            if (var3 != null) {
               var5.add(var3);
            }

            yield var5;
         }
      };
      class="kw">return new Vector3d(Math.floor(var4.x()), Math.floor(var4.y()), Math.floor(var4.z()));
   }

   @Nullable
   class="kw">private Vector3d getCurrentPreviewOrigin() {
      if (this.selectedIsGroup) {
         TriggerVolumeInspectorDrafts.GroupDraft var2 = this.selectedGroupDraft();
         class="kw">return var2 != null ? var2.origin : null;
      } else {
         TriggerVolumeInspectorDrafts.VolumeDraft var1 = this.selectedVolumeDraft();
         class="kw">return var1 != null ? var1.position : null;
      }
   }

   @Nullable
   class="kw">private Vector3d getPreviewOriginForState(@Nonnull TriggerVolumesPlugin.PastePrefabPreviewState var1) {
      String var2 = var1.selectedId();
      if (var2 == null) {
         class="kw">return null;
      } else {
         TriggerVolumeManager var3 = getManagerForWorld(var1.worldName());
         if (var3 == null) {
            class="kw">return null;
         } else if (var1.selectedIsGroup()) {
            GroupEntry var5 = var3.getGroup(var2);
            class="kw">return var5 == null ? null : this.draftForGroup(var5).origin;
         } else {
            VolumeEntry var4 = var3.getVolume(var2);
            class="kw">return var4 == null ? null : this.draftForVolume(var4).position;
         }
      }
   }

   @Nullable
   class="kw">private PastePrefabEffect getPastePrefabEffectForState(@Nonnull TriggerVolumesPlugin.PastePrefabPreviewState var1) {
      String var2 = var1.selectedId();
      if (var2 == null) {
         class="kw">return null;
      }

      TriggerVolumeInspectorPage.EffectListKind var3;
      try {
         var3 = TriggerVolumeInspectorPage.EffectListKind.valueOf(var1.effectListKind());
      } catch (IllegalArgumentException var9) {
         class="kw">return null;
      }

      if (var3 != TriggerVolumeInspectorPage.EffectListKind.CONDITION && var3 != TriggerVolumeInspectorPage.EffectListKind.RULE) {
         TriggerVolumeManager var4 = getManagerForWorld(var1.worldName());
         if (var4 == null) {
            class="kw">return null;
         }

         List var5;
         if (var1.selectedIsGroup()) {
            GroupEntry var6 = var4.getGroup(var2);
            if (var6 == null) {
               class="kw">return null;
            }

            TriggerVolumeInspectorDrafts.GroupDraft var7 = this.draftForGroup(var6);
            var5 = var3 == TriggerVolumeInspectorPage.EffectListKind.REJECTION_EFFECT ? var7.rejectionEffects : var7.effects;
         } else {
            VolumeEntry var10 = var4.getVolume(var2);
            if (var10 == null) {
               class="kw">return null;
            }

            TriggerVolumeInspectorDrafts.VolumeDraft var12 = this.draftForVolume(var10);
            var5 = var3 == TriggerVolumeInspectorPage.EffectListKind.REJECTION_EFFECT ? var12.rejectionEffects : var12.effects;
         }

         int var11 = var1.effectIndex();
         if (var11 >= 0 && var11 < var5.size()) {
            TriggerEffect var13 = var5.get(var11);
            class="kw">return var13 class="kw">instanceof PastePrefabEffect var8 ? var8 : null;
         } else {
            class="kw">return null;
         }
      } else {
         class="kw">return null;
      }
   }

   class="kw">private void refreshActivePastePrefabPreviewPosition() {
      TriggerVolumesPlugin.PastePrefabPreviewState var1 = this.getActivePastePrefabPreviewState();
      if (var1 != null && var1.worldName().equals(this.selectedWorld)) {
         PastePrefabEffect var2 = this.getPastePrefabEffectForState(var1);
         if (var2 == null) {
            this.hidePastePrefabPreview();
         } else {
            Vector3d var3 = this.getPreviewOriginForState(var1);
            if (var3 == null) {
               this.hidePastePrefabPreview();
            } else {
               Vector3d var4 = this.getPastePrefabPreviewPosition(var2, var3);
               if (var4 == null) {
                  this.hidePastePrefabPreview();
               } else {
                  Vector3d var5 = var1.lastSentPosition();
                  if (var5 == null || !var5.equals(var4)) {
                     this.sendPastePrefabPreview(var2, var4, false);
                  }
               }
            }
         }
      }
   }

   class="kw">private void refreshActivePastePrefabPreview() {
      if (this.getActivePastePrefabPreviewState() != null && this.isPreviewingSelectedEffect()) {
         if (!(this.getSelectedItem() class="kw">instanceof PastePrefabEffect var2 && this.sendPastePrefabPreview(var2, true))) {
            this.hidePastePrefabPreview();
         }
      }
   }

   class="kw">private class="kw">static boolean isPastePrefabPreviewAssetField(@Nullable String var0) {
      class="kw">return "Prefab".equals(var0) || "PrefabList".equals(var0);
   }

   class="kw">private void hidePastePrefabPreview() {
      if (this.getActivePastePrefabPreviewState() != null) {
         this.playerRef.getPacketHandler().write(new HideTriggerVolumePastePrefabPreview());
      }

      TriggerVolumesPlugin.get().clearPastePrefabPreviewState(this.playerRef.getUuid());
   }

   class="kw">private void clearPastePrefabPreviewIfFromDifferentWorld() {
      TriggerVolumesPlugin.PastePrefabPreviewState var1 = this.getActivePastePrefabPreviewState();
      if (var1 != null && !var1.worldName().equals(this.selectedWorld)) {
         this.hidePastePrefabPreview();
      }
   }

   class="kw">private boolean isPreviewingSelectedEffect() {
      TriggerVolumesPlugin.PastePrefabPreviewState var1 = this.getActivePastePrefabPreviewState();
      class="kw">return var1 != null && var1.matches(this.selectedWorld, this.selectedId, this.selectedIsGroup, this.selectedKind.name(), this.selectedEffectIndex);
   }

   @Nullable
   class="kw">private TriggerVolumesPlugin.PastePrefabPreviewState getActivePastePrefabPreviewState() {
      class="kw">return TriggerVolumesPlugin.get().getPastePrefabPreviewState(this.playerRef.getUuid());
   }

   class="kw">private <T> void applyCodecField(@Nonnull BuilderCodec<T> var1, @Nonnull T var2, @Nonnull String var3, @Nonnull TriggerVolumeInspectorPage.PageData var4) {
      List var5 = var1.getEntries().get(var3);
      if (var5 != null && !var5.isEmpty()) {
         BuilderField var6 = var5.getLast();
         Codec var7 = var6.getCodec().getChildCodec();
         ExtraInfo var8 = ExtraInfo.THREAD_LOCAL.get();
         if (var4.vecX != null && var4.vecY != null && var4.vecZ != null) {
            BsonDocument var16 = new BsonDocument();
            var16.put("X", new BsonDouble(var4.vecX));
            var16.put("Y", new BsonDouble(var4.vecY));
            var16.put("Z", new BsonDouble(var4.vecZ));
            BsonDocument var17 = new BsonDocument();
            var17.put(var3, var16);
            var6.decode(var17, var2, var8);
         } else if (var4.paramBool != null && var7 == Codec.BOOLEAN) {
            BsonDocument var15 = new BsonDocument();
            var15.put(var3, new BsonBoolean(var4.paramBool));
            var6.decode(var15, var2, var8);
         } else if (var4.paramNumericValue != null) {
            double var14 = isNonNegativeNumericField(getCodecTypeId(var2), var3) ? Math.max(0.0, var4.paramNumericValue) : var4.paramNumericValue;
            Object var11;
            if (var7 == Codec.FLOAT || var7 == Codec.DOUBLE) {
               var11 = new BsonDouble(var14);
            } else if (var7 == Codec.INTEGER) {
               var11 = new BsonInt32((int)var14);
            } else if (var7 == Codec.LONG) {
               var11 = new BsonInt64((long)var14);
            } else if (var7 == Codec.BOOLEAN) {
               var11 = new BsonBoolean(var14 != 0.0);
            } else {
               var11 = new BsonDouble(var14);
            }

            BsonDocument var12 = new BsonDocument();
            var12.put(var3, var11);
            var6.decode(var12, var2, var8);
         } else {
            try {
               BsonValue var9 = stringToBsonValue(var7, var4.paramValue);
               if (var9 != null) {
                  BsonDocument var10 = new BsonDocument();
                  var10.put(var3, var9);
                  var6.decode(var10, var2, var8);
               }
            } catch (Exception var13) {
               ((HytaleLogger.Api)LOGGER.at(Level.WARNING).withCause(var13)).log("Failed to parse value '%s' for field '%s'", var4.paramValue, var3);
            }
         }
      }
   }

   class="kw">private void onOpenPresetSave() {
      this.presetSaveName = "";
      UICommandBuilder var1 = new UICommandBuilder();
      var1.set("#MainPage.Visible", false);
      var1.set("#PresetSavePage.Visible", true);
      var1.set("#PresetName #Input.Value", "");
      var1.set("#IncludeVolumeSettings #Input.Value", false);
      var1.set("#IncludeVolumeSettings.Visible", !this.selectedIsGroup);
      if (this.presetPackBrowser.hasSelectedPack()) {
         var1.set("#PresetSavePage #SelectedPackLabel.Text", this.presetPackBrowser.getSelectedPackDisplayName());
      }

      this.setSavePresetButtonState(var1);
      this.sendUpdate(var1);
   }

   class="kw">private void onPresetNameChanged(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      this.presetSaveName = var1.presetName != null ? var1.presetName : "";
      UICommandBuilder var2 = new UICommandBuilder();
      this.setSavePresetButtonState(var2);
      this.sendUpdate(var2);
   }

   class="kw">private void setSavePresetButtonState(@Nonnull UICommandBuilder var1) {
      var1.set("#ConfirmSavePresetButton.Disabled", this.presetSaveName.isBlank() || !this.presetPackBrowser.hasSelectedPack());
   }

   class="kw">private void restorePresetSavePage() {
      UICommandBuilder var1 = new UICommandBuilder();
      var1.set("#PresetSavePage.Visible", true);
      this.setSavePresetButtonState(var1);
      this.sendUpdate(var1);
   }

   class="kw">private void onConfirmSavePreset(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.presetName != null && !var1.presetName.isBlank()) {
         String var2 = var1.presetName.trim();
         if (!var2.contains("..") && !var2.contains("/") && !var2.contains("\\")) {
            AssetPack var3 = this.presetPackBrowser.getSelectedPack();
            if (var3 == null) {
               this.playerRef.sendMessage(Message.translation("server.customUI.assetPackBrowser.packRequired"));
               this.restorePresetSavePage();
            } else {
               AssetStore var4 = AssetRegistry.getAssetStore(TriggerEffectAsset.class);
               if (var4 != null) {
                  TriggerEffectAsset.VolumeSettings var5 = Boolean.TRUE.equals(var1.includeVolumeSettings) && !this.selectedIsGroup
                     ? volumeSettingsFrom(this.selectedVolumeDraft())
                     : null;
                  TriggerEffectAsset var6 = TriggerEffectAsset.create(
                     var2,
                     this.currentConditions().toArray(TriggerCondition[]::new),
                     this.currentEffects(TriggerVolumeInspectorPage.EffectListKind.EFFECT).toArray(TriggerEffect[]::new),
                     this.currentEffects(TriggerVolumeInspectorPage.EffectListKind.REJECTION_EFFECT).toArray(TriggerEffect[]::new),
                     this.currentRules().toArray(TriggerRule[]::new),
                     this.currentConditionTiming(),
                     var5
                  );
                  Path var7 = var3.getRoot().resolve("Server").resolve("TriggerVolumes").resolve("Effects");
                  UICommandBuilder var8 = new UICommandBuilder();
                  var8.set("#PresetSavePage.Visible", false);
                  var8.set("#MainPage.Visible", true);
                  this.sendUpdate(var8);
                  HytaleServer.SCHEDULED_EXECUTOR
                     .execute(
                        () -> {
                           try {
                              Files.createDirectories(var7);
                              var4.writeAssetToDisk(var3, Map.of(Path.of(var2 + ".json"), var6), SingleplayerModule.isOwner(this.playerRef));
                              this.playerRef.sendMessage(Message.translation("server.customUI.triggerVolumeEffectEditor.presetSaved").param("name", var2));
                           } catch (Exception var7) {
                              ((HytaleLogger.Api)LOGGER.at(Level.SEVERE).withCause(var7)).log("Failed to save effect preset '%s'", var2);
                              this.playerRef
                                 .sendMessage(
                                    Message.translation("server.customUI.triggerVolumeEffectEditor.presetSaveError").param("error", var7.getMessage())
                                 );
                           }
                        }
                     );
               }
            }
         } else {
            this.playerRef.sendMessage(Message.translation("server.customUI.triggerVolumeEffectEditor.presetInvalidName"));
            this.restorePresetSavePage();
         }
      } else {
         this.restorePresetSavePage();
      }
   }

   @Nonnull
   class="kw">private class="kw">static TriggerEffectAsset.VolumeSettings volumeSettingsFrom(@Nonnull TriggerVolumeInspectorDrafts.VolumeDraft var0) {
      class="kw">return new TriggerEffectAsset.VolumeSettings(
         Set.copyOf(var0.targetTypes),
         TriggerVolumeInspectorDrafts.copyTags(var0.tags),
         var0.rejectionDelayMode,
         var0.cooldown,
         var0.cooldownMode,
         var0.activationDelay,
         var0.projectileSource,
         var0.keepLoaded,
         var0.rotateEffectsOnPaste,
         var0.cancelDelayedOnExit
      );
   }

   class="kw">private void onCancelPresetSave() {
      UICommandBuilder var1 = new UICommandBuilder();
      var1.set("#PresetSavePage.Visible", false);
      var1.set("#MainPage.Visible", true);
      this.sendUpdate(var1);
   }

   class="kw">private void onOpenPresetLoad() {
      UICommandBuilder var1 = new UICommandBuilder();
      UIEventBuilder var2 = new UIEventBuilder();
      var1.set("#MainPage.Visible", false);
      var1.set("#PresetLoadPage.Visible", true);
      var1.clear("#PresetList");
      AssetStore var3 = AssetRegistry.getAssetStore(TriggerEffectAsset.class);
      if (var3 != null) {
         int var4 = 0;

         for (String var6 : ((DefaultAssetMap)var3.getAssetMap()).getAssetMap().keySet()) {
            String var7 = "#PresetList[" + var4 + "]";
            var1.append("#PresetList", "Common/TextButton.ui");
            var1.set(var7 + " #Button.Text", var6);
            var2.addEventBinding(
               CustomUIEventBindingType.Activating,
               var7 + " #Button",
               new EventData().append("Action", TriggerVolumeInspectorPage.Action.LoadPreset.name()).append("PresetId", var6)
            );
            var4++;
         }
      }

      this.sendUpdate(var1, var2, false);
   }

   class="kw">private void onLoadPreset(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.presetId != null && !var1.presetId.isBlank()) {
         this.hidePastePrefabPreview();
         AssetStore var2 = AssetRegistry.getAssetStore(TriggerEffectAsset.class);
         if (var2 != null) {
            TriggerEffectAsset var3 = (TriggerEffectAsset)((DefaultAssetMap)var2.getAssetMap()).getAsset(var1.presetId);
            if (var3 == null) {
               this.playerRef.sendMessage(Message.translation("server.customUI.triggerVolumeEffectEditor.presetNotFound").param("name", var1.presetId));
            } else {
               this.currentConditions().clear();
               this.currentConditions().addAll(TriggerCondition.deepCopyList(Arrays.asList(var3.getConditions())));
               this.currentEffects(TriggerVolumeInspectorPage.EffectListKind.EFFECT).clear();
               this.currentEffects(TriggerVolumeInspectorPage.EffectListKind.EFFECT).addAll(TriggerEffect.deepCopyList(Arrays.asList(var3.getEffects())));
               this.currentEffects(TriggerVolumeInspectorPage.EffectListKind.REJECTION_EFFECT).clear();
               this.currentEffects(TriggerVolumeInspectorPage.EffectListKind.REJECTION_EFFECT)
                  .addAll(TriggerEffect.deepCopyList(Arrays.asList(var3.getRejectionEffects())));
               this.currentRules().clear();
               this.currentRules().addAll(TriggerRule.deepCopyList(Arrays.asList(var3.getRules())));
               this.setCurrentConditionTiming(var3.getConditionTiming());
               TriggerEffectAsset.VolumeSettings var4 = var3.getVolumeSettings();
               if (var4 != null && !this.selectedIsGroup) {
                  TriggerVolumeInspectorDrafts.VolumeDraft var5 = this.selectedVolumeDraft();
                  var5.targetTypes = var4.targetTypes().isEmpty() ? EnumSet.noneOf(EntityTargetType.class) : EnumSet.copyOf(var4.targetTypes());
                  var5.tags = TriggerVolumeInspectorDrafts.copyTags(var4.tags());
                  var5.rejectionDelayMode = var4.rejectionDelayMode();
                  var5.cooldown = var4.cooldown();
                  var5.cooldownMode = var4.cooldownMode();
                  var5.activationDelay = var4.activationDelay();
                  var5.projectileSource = var4.projectileSource();
                  var5.keepLoaded = var4.keepLoaded();
                  var5.rotateEffectsOnPaste = var4.rotateEffectsOnPaste();
                  var5.cancelDelayedOnExit = var4.cancelDelayedOnExit();
               }

               this.markSelectedDraftDirty();
               this.selectedKind = !this.currentConditions().isEmpty()
                  ? TriggerVolumeInspectorPage.EffectListKind.CONDITION
                  : (
                     !this.currentEffects(TriggerVolumeInspectorPage.EffectListKind.EFFECT).isEmpty()
                        ? TriggerVolumeInspectorPage.EffectListKind.EFFECT
                        : TriggerVolumeInspectorPage.EffectListKind.REJECTION_EFFECT
                  );
               this.selectedEffectIndex = this.getItemCount(this.selectedKind) == 0 ? -1 : 0;
               this.playerRef.sendMessage(Message.translation("server.customUI.triggerVolumeEffectEditor.presetLoaded").param("name", var1.presetId));
               UICommandBuilder var6 = new UICommandBuilder();
               var6.set("#PresetLoadPage.Visible", false);
               var6.set("#MainPage.Visible", true);
               this.sendUpdate(var6);
               this.rebuildAll();
            }
         }
      }
   }

   class="kw">private void onCancelPresetLoad() {
      UICommandBuilder var1 = new UICommandBuilder();
      var1.set("#PresetLoadPage.Visible", false);
      var1.set("#MainPage.Visible", true);
      this.sendUpdate(var1);
   }

   class="kw">private void onOpenAssetPicker(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.paramKey != null) {
         Object var2 = this.getSelectedItem();
         if (var2 != null) {
            Object var3 = this.pickerTargetFor(var2, var1.paramKey);
            String var4 = getCodecTypeId(var3);
            String var5 = getAssetSourceForField(var4, var1.paramKey);
            if (var5 != null) {
               this.pendingPickerFieldKey = var1.paramKey;
               this.pendingPickerSource = var5;
               this.pendingPickerMultiSelect = this.isPickerFieldMultiSelect(var3, var1.paramKey);
               this.pendingPickerSelections.clear();
               if (this.pendingPickerMultiSelect) {
                  this.pendingPickerSelections.addAll(this.currentPickerArrayValues(var3, var1.paramKey));
               }

               UICommandBuilder var6 = new UICommandBuilder();
               UIEventBuilder var7 = new UIEventBuilder();
               var6.set("#MainPage.Visible", false);
               var6.set("#AssetPickerPage.Visible", true);
               var6.set("#AssetPickerPage #SearchInput.Value", this.assetPickerSearchQuery);
               var6.set("#ConfirmAssetPickerButton.Visible", this.pendingPickerMultiSelect);
               var6.set("#AssetPickerFieldLabel.Text", var1.paramKey);
               this.buildAssetPickerList(var6, var7);
               this.bindStaticEvents(var7);
               this.sendUpdate(var6, var7, false);
            }
         }
      }
   }

   class="kw">private void onAssetPickerSearch(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.assetPickerQuery != null) {
         this.assetPickerSearchQuery = var1.assetPickerQuery.trim();
      }

      UICommandBuilder var2 = new UICommandBuilder();
      UIEventBuilder var3 = new UIEventBuilder();
      this.buildAssetPickerList(var2, var3);
      this.bindStaticEvents(var3);
      this.sendUpdate(var2, var3, false);
   }

   class="kw">private void onAssetPickerSelect(@Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.assetPickerSelection != null && this.pendingPickerFieldKey != null) {
         if (this.pendingPickerMultiSelect) {
            if (var1.assetPickerSelection.isEmpty()) {
               this.pendingPickerSelections.clear();
            } else if (!this.pendingPickerSelections.remove(var1.assetPickerSelection)) {
               this.pendingPickerSelections.add(var1.assetPickerSelection);
            }

            UICommandBuilder var5 = new UICommandBuilder();
            UIEventBuilder var7 = new UIEventBuilder();
            this.buildAssetPickerList(var5, var7);
            this.bindStaticEvents(var7);
            this.sendUpdate(var5, var7, false);
         } else {
            Object var2 = this.getSelectedItem();
            if (var2 != null) {
               Object var3 = this.pickerTargetFor(var2, this.pendingPickerFieldKey);
               BuilderCodec var4 = getItemBuilderCodec(var3);
               if (var4 != null) {
                  this.applyPickerValue(var4, var3, this.pendingPickerFieldKey, var1.assetPickerSelection.isEmpty() ? null : var1.assetPickerSelection);
                  this.markSelectedDraftDirty();
               }
            }

            if (isPastePrefabPreviewAssetField(this.pendingPickerFieldKey)) {
               this.refreshActivePastePrefabPreview();
            }

            this.pendingPickerFieldKey = null;
            this.pendingPickerSource = null;
            UICommandBuilder var6 = new UICommandBuilder();
            var6.set("#AssetPickerPage.Visible", false);
            var6.set("#MainPage.Visible", true);
            this.sendUpdate(var6);
            this.rebuildAll();
         }
      }
   }

   class="kw">private void onConfirmAssetPicker() {
      if (this.pendingPickerMultiSelect && this.pendingPickerFieldKey != null) {
         Object var1 = this.getSelectedItem();
         if (var1 != null) {
            Object var2 = this.pickerTargetFor(var1, this.pendingPickerFieldKey);
            BuilderCodec var3 = getItemBuilderCodec(var2);
            if (var3 != null) {
               this.applyPickerValues(var3, var2, this.pendingPickerFieldKey, this.pendingPickerSelections);
               this.markSelectedDraftDirty();
            }
         }

         if (isPastePrefabPreviewAssetField(this.pendingPickerFieldKey)) {
            this.refreshActivePastePrefabPreview();
         }

         this.closeAssetPicker();
      }
   }

   class="kw">private void onPreviewSound(@Nonnull TriggerVolumeInspectorPage.PageData var1, @Nonnull Store<EntityStore> var2) {
      if ("SoundEvent".equals(this.pendingPickerSource) && var1.assetPickerSelection != null && !var1.assetPickerSelection.isBlank()) {
         int var3 = SoundEvent.getAssetMap().getIndex(var1.assetPickerSelection);
         if (var3 != Integer.MIN_VALUE && var3 != 0) {
            Ref var4 = this.playerRef.getReference();
            if (var4 != null && var4.isValid()) {
               TransformComponent var5 = var2.getComponent(var4, TransformComponent.getComponentType());
               if (var5 != null) {
                  Vector3d var6 = var5.getPosition();
                  SoundUtil.playSoundEvent3d(var3, SoundCategory.SFX, var6.x(), var6.y(), var6.z(), 1.0F, 1.0F, var2);
               }
            }
         }
      }
   }

   class="kw">private void onCancelAssetPicker() {
      this.closeAssetPicker();
   }

   class="kw">private void closeAssetPicker() {
      this.pendingPickerFieldKey = null;
      this.pendingPickerSource = null;
      this.pendingPickerMultiSelect = false;
      this.pendingPickerSelections.clear();
      UICommandBuilder var1 = new UICommandBuilder();
      var1.set("#ConfirmAssetPickerButton.Visible", false);
      var1.set("#AssetPickerPage.Visible", false);
      var1.set("#MainPage.Visible", true);
      this.sendUpdate(var1);
      this.rebuildAll();
   }

   class="kw">private void registerSelectionObserver() {
      TriggerVolumeManager var1 = getManagerForWorld(this.selectedWorld);
      if (var1 != null) {
         var1.setSelectionObserver(this.playerRef.getUuid(), this.selectionObserver);
      }
   }

   class="kw">private void registerVolumeUpdateObserver() {
      TriggerVolumeManager var1 = getManagerForWorld(this.selectedWorld);
      if (var1 != null) {
         var1.setVolumeUpdateObserver(this.playerRef.getUuid(), this.volumeUpdateObserver);
      }
   }

   class="kw">private void onExternalSelectionChanged(@Nullable String var1) {
      if (!this.suppressSelectionObserver) {
         if (!Objects.equals(this.selectedId, var1) || this.selectedIsGroup) {
            TriggerVolumeManager var2 = getManagerForWorld(this.selectedWorld);
            if (var1 == null || var2 != null && var2.getVolume(var1) != null) {
               this.selectedId = var1;
               this.selectedIsGroup = false;
               this.selectedEffectIndex = -1;
               this.lastCommittedEntry = -1;
               this.pendingScrollToSelection = true;
               this.rebuildAll();
            }
         }
      }
   }

   class="kw">private void onExternalVolumeUpdated(@Nonnull VolumeEntry var1) {
      TriggerVolumesPlugin.PastePrefabPreviewState var2 = this.getActivePastePrefabPreviewState();
      if (var2 != null) {
         if (var2.selectedId() != null && var2.worldName().equals(this.selectedWorld)) {
            if (var2.selectedIsGroup()) {
               TriggerVolumeManager var3 = getManagerForWorld(this.selectedWorld);
               GroupEntry var4 = var3 != null ? var3.getGroup(var2.selectedId()) : null;
               if (var4 == null || !var4.getMemberVolumeIds().contains(var1.getId())) {
                  class="kw">return;
               }

               TriggerVolumeInspectorDrafts.GroupDraft var5 = this.groupDrafts.get(var2.selectedId());
               if (var5 != null) {
                  var5.origin = new Vector3d(var4.getOrigin());
               }
            } else {
               if (!var2.selectedId().equals(var1.getId())) {
                  class="kw">return;
               }

               TriggerVolumeInspectorDrafts.VolumeDraft var6 = this.volumeDrafts.get(var2.selectedId());
               if (var6 != null) {
                  var6.position = new Vector3d(var1.getPosition());
               }
            }

            this.refreshActivePastePrefabPreviewPosition();
         }
      }
   }

   class="kw">private void onExternalVolumeRemoved(@Nonnull String var1) {
      TriggerVolumesPlugin.PastePrefabPreviewState var2 = this.getActivePastePrefabPreviewState();
      if (var2 != null && var2.selectedId() != null) {
         if (!var2.selectedIsGroup() && var2.selectedId().equals(var1)) {
            this.hidePastePrefabPreview();
         } else {
            if (var2.selectedIsGroup()) {
               TriggerVolumeInspectorDrafts.GroupDraft var3 = this.groupDrafts.get(var2.selectedId());
               if (var3 != null && var3.memberVolumeIds.contains(var1)) {
                  this.hidePastePrefabPreview();
               }
            }
         }
      }
   }

   class="kw">private void syncSelectionToTool() {
      TriggerVolumeToolSelection var1 = new TriggerVolumeToolSelection();
      TriggerVolumeManager var2 = getManagerForWorld(this.selectedWorld);
      if (this.selectedId != null && var2 != null) {
         if (this.selectedIsGroup) {
            GroupEntry var3 = var2.getGroup(this.selectedId);
            if (var3 == null) {
               class="kw">return;
            }

            String[] var4 = var3.getMemberVolumeIds().stream().filter(var1x -> var2.getVolume(var1x) != null).toArray(String[]::new);
            var1.volumeIds = var4;
            var1.primaryVolumeId = var4.length > 0 ? var4[0] : null;
            this.suppressSelectionObserver = true;
            var2.setPlayerSelection(this.playerRef.getUuid(), var1.primaryVolumeId);
            this.suppressSelectionObserver = false;
         } else {
            var1.primaryVolumeId = this.selectedId;
            var1.volumeIds = new String[]{this.selectedId};
            this.suppressSelectionObserver = true;
            var2.setPlayerSelection(this.playerRef.getUuid(), this.selectedId);
            this.suppressSelectionObserver = false;
         }

         this.playerRef.getPacketHandler().write(var1);
      } else {
         if (var2 != null) {
            this.suppressSelectionObserver = true;
            var2.setPlayerSelection(this.playerRef.getUuid(), null);
            this.suppressSelectionObserver = false;
         }

         this.playerRef.getPacketHandler().write(var1);
      }
   }

   class="kw">private void applyPickerValue(@Nonnull BuilderCodec<?> var1, @Nonnull Object var2, @Nonnull String var3, @Nullable String var4) {
      List var5 = var1.getEntries().get(var3);
      if (var5 != null && !var5.isEmpty()) {
         BuilderField var6 = var5.getLast();
         BsonDocument var7 = new BsonDocument();
         Codec var8 = var6.getCodec().getChildCodec();
         if (var8 == Codec.STRING_ARRAY) {
            var7.put(var3, this.pickerArrayValue(var4));
         } else if (var4 != null) {
            var7.put(var3, new BsonString(var4));
         }

         try {
            var6.decode(var7, var2, ExtraInfo.THREAD_LOCAL.get());
         } catch (Exception var10) {
            ((HytaleLogger.Api)LOGGER.at(Level.WARNING).withCause(var10)).log("Failed to apply picker value '%s' for field '%s'", var4, var3);
         }
      }
   }

   class="kw">private void applyPickerValues(@Nonnull BuilderCodec<?> var1, @Nonnull Object var2, @Nonnull String var3, @Nonnull Collection<String> var4) {
      List var5 = var1.getEntries().get(var3);
      if (var5 != null && !var5.isEmpty()) {
         BuilderField var6 = var5.getLast();
         BsonDocument var7 = new BsonDocument();
         var7.put(var3, this.pickerArrayValue(var4));

         try {
            var6.decode(var7, var2, ExtraInfo.THREAD_LOCAL.get());
         } catch (Exception var9) {
            ((HytaleLogger.Api)LOGGER.at(Level.WARNING).withCause(var9)).log("Failed to apply picker values for field '%s'", var3);
         }
      }
   }

   @Nullable
   class="kw">private class="kw">static BuilderCodec<?> getItemBuilderCodec(@Nonnull Object var0) {
      if (var0 class="kw">instanceof TriggerCondition var2) {
         class="kw">return getConditionBuilderCodecFor(getConditionTypeId(var2));
      } else {
         class="kw">return var0 class="kw">instanceof TriggerRule var1 ? getRuleBuilderCodecFor(getRuleTypeId(var1)) : getBuilderCodecFor(getTypeId((TriggerEffect)var0));
      }
   }

   @Nonnull
   class="kw">private Object pickerTargetFor(@Nonnull Object var1, @Nullable String var2) {
      if (var2 != null && var1 class="kw">instanceof ModifyRulesEffect var3 && var3.getRule() != null) {
         BuilderCodec var4 = getBuilderCodecFor(getTypeId(var3));
         if (var4 == null || !var4.getEntries().containsKey(var2)) {
            class="kw">return var3.getRule();
         }
      }

      class="kw">return var1;
   }

   @Nonnull
   class="kw">private BsonArray pickerArrayValue(@Nullable String var1) {
      class="kw">return var1 != null && !var1.isBlank() ? this.pickerArrayValue(List.of(var1)) : new BsonArray();
   }

   @Nonnull
   class="kw">private BsonArray pickerArrayValue(@Nonnull Collection<String> var1) {
      BsonArray var2 = new BsonArray();

      for (String var4 : var1) {
         var2.add(new BsonString(var4));
      }

      class="kw">return var2;
   }

   class="kw">private boolean isPickerFieldMultiSelect(@Nonnull Object var1, @Nonnull String var2) {
      BuilderCodec var3 = getItemBuilderCodec(var1);
      if (var3 == null) {
         class="kw">return false;
      } else {
         List var4 = var3.getEntries().get(var2);
         if (var4 != null && !var4.isEmpty()) {
            BuilderField var5 = var4.getLast();
            class="kw">return var5.getCodec().getChildCodec() == Codec.STRING_ARRAY;
         } else {
            class="kw">return false;
         }
      }
   }

   @Nonnull
   class="kw">private Collection<String> currentPickerArrayValues(@Nonnull Object var1, @Nonnull String var2) {
      BuilderCodec var3 = getItemBuilderCodec(var1);
      if (var3 == null) {
         class="kw">return List.of();
      }

      BsonDocument var4;
      try {
         var4 = ((BuilderCodec<Object>)var3).encode(var1, EmptyExtraInfo.EMPTY);
      } catch (Exception var11) {
         class="kw">return List.of();
      }

      LinkedHashSet var5 = new LinkedHashSet<>();
      BsonValue var6 = var4.get(var2);
      if (var6 class="kw">instanceof BsonArray) {
         for (BsonValue var9 : (BsonArray)var6) {
            if (var9 class="kw">instanceof BsonString var10) {
               var5.add(var10.getValue());
            }
         }
      }

      class="kw">return var5;
   }

   class="kw">private void buildAssetPickerList(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2) {
      var1.clear("#AssetPickerList");
      Collection var3 = this.resolvePickerIds();
      String var4 = this.assetPickerSearchQuery.toLowerCase(Locale.ROOT);
      List var5;
      if (!var4.isEmpty()) {
         Object2IntMap var6 = new Object2IntOpenHashMap(var3.size());

         for (String var8 : var3) {
            if (var8.toLowerCase(Locale.ROOT).contains(var4)) {
               var6.put(var8, StringCompareUtil.getFuzzyDistance(var8, var4, Locale.ROOT));
            }
         }

         var5 = var6.keySet().stream().sorted().sorted(Comparator.comparingInt(var6::getInt).reversed()).toList();
      } else if ("AnimationApplyOn".equals(this.pendingPickerSource)) {
         var5 = var3.stream().sorted(Comparator.<String, Boolean>comparing(var0 -> !isApplyOnPseudo(var0)).thenComparing(Comparator.naturalOrder())).toList();
      } else {
         var5 = var3.stream().sorted().toList();
      }

      List var12;
      if (this.pendingPickerMultiSelect && !this.pendingPickerSelections.isEmpty()) {
         ArrayList var13 = new ArrayList<>(var5.size());

         for (String var9 : var5) {
            if (this.pendingPickerSelections.contains(var9)) {
               var13.add(var9);
            }
         }

         for (String var18 : var5) {
            if (!this.pendingPickerSelections.contains(var18)) {
               var13.add(var18);
            }
         }

         var12 = var13.size() > 50 ? var13.subList(0, 50) : var13;
      } else {
         var12 = var5.size() > 50 ? var5.subList(0, 50) : var5;
      }

      var1.set("#AssetPickerNoResults.Visible", var12.isEmpty());
      var1.append("#AssetPickerList", "Common/TextButton.ui");
      var1.set("#AssetPickerList[0] #Button.Text", Message.translation("server.customUI.triggerVolumeEffectEditor.assetPicker.clearEntry"));
      var2.addEventBinding(
         CustomUIEventBindingType.Activating,
         "#AssetPickerList[0] #Button",
         new EventData().append("Action", TriggerVolumeInspectorPage.Action.AssetPickerSelect.name()).append("AssetPickerSelection", "")
      );
      boolean var14 = "SoundEvent".equals(this.pendingPickerSource);

      for (int var17 = 0; var17 < var12.size(); var17++) {
         String var19 = var12.get(var17);
         String var10 = "#AssetPickerList[" + (var17 + 1) + "]";
         String var11 = this.pendingPickerMultiSelect && this.pendingPickerSelections.contains(var19) ? "[x] " + var19 : var19;
         if (var14) {
            var1.append("#AssetPickerList", "Pages/TriggerVolume/TriggerVolumeInspectorSoundAssetRow.ui");
            var1.set(var10 + " #SelectButton.Text", var11);
            var2.addEventBinding(
               CustomUIEventBindingType.Activating,
               var10 + " #SelectButton",
               new EventData().append("Action", TriggerVolumeInspectorPage.Action.AssetPickerSelect.name()).append("AssetPickerSelection", var19)
            );
            var2.addEventBinding(
               CustomUIEventBindingType.Activating,
               var10 + " #PreviewButton",
               new EventData().append("Action", TriggerVolumeInspectorPage.Action.PreviewSound.name()).append("AssetPickerSelection", var19),
               false
            );
         } else {
            var1.append("#AssetPickerList", "Common/TextButton.ui");
            if ("AnimationApplyOn".equals(this.pendingPickerSource) && isApplyOnPseudo(var19)) {
               var1.set(var10 + " #Button.Text", Message.translation("server.customUI.triggerVolumeEffectEditor.applyOn." + var19));
            } else if ("Animation".equals(this.pendingPickerSource) && this.isLoopingAnimation("PlayAnimation", "Animation", var19)) {
               var1.set(
                  var10 + " #Button.Text",
                  Message.translation("server.customUI.triggerVolumeEffectEditor.assetPicker.animationLooping").param("animation", var19)
               );
            } else {
               var1.set(var10 + " #Button.Text", var11);
            }

            var2.addEventBinding(
               CustomUIEventBindingType.Activating,
               var10 + " #Button",
               new EventData().append("Action", TriggerVolumeInspectorPage.Action.AssetPickerSelect.name()).append("AssetPickerSelection", var19)
            );
         }
      }
   }

   class="kw">private void rebuildAll() {
      this.revertRejectedDraftIds();
      UICommandBuilder var1 = new UICommandBuilder();
      UIEventBuilder var2 = new UIEventBuilder();
      this.buildWorldDropdown(var1);
      this.buildTabs(var1, var2);
      this.buildList(var1, var2);
      this.buildSelectedPane(var1, var2);
      this.bindStaticEvents(var2);
      this.refreshActivePastePrefabPreviewPosition();
      this.sendUpdate(var1, var2, false);
   }

   class="kw">private void rebuildEffectListOnly() {
      UICommandBuilder var1 = new UICommandBuilder();
      UIEventBuilder var2 = new UIEventBuilder();
      this.buildEffectList(var1, var2);
      this.sendUpdate(var1, var2, false);
   }

   @Nullable
   class="kw">private TriggerVolumeManager getSelectedManager() {
      class="kw">return getManagerForWorld(this.selectedWorld);
   }

   @Nullable
   class="kw">private TriggerVolumeInspectorDrafts.VolumeDraft selectedVolumeDraft() {
      TriggerVolumeManager var1 = this.getSelectedManager();
      if (var1 != null && this.selectedId != null) {
         VolumeEntry var2 = var1.getVolume(this.selectedId);
         class="kw">return var2 != null ? this.draftForVolume(var2) : null;
      } else {
         class="kw">return null;
      }
   }

   @Nullable
   class="kw">private TriggerVolumeInspectorDrafts.GroupDraft selectedGroupDraft() {
      TriggerVolumeManager var1 = this.getSelectedManager();
      if (var1 != null && this.selectedId != null) {
         GroupEntry var2 = var1.getGroup(this.selectedId);
         class="kw">return var2 != null ? this.draftForGroup(var2) : null;
      } else {
         class="kw">return null;
      }
   }

   @Nullable
   class="kw">private TriggerVolumeInspectorDrafts.GroupDraft selectedInheritedGroupDraft() {
      if (this.selectedIsGroup) {
         class="kw">return null;
      } else {
         TriggerVolumeManager var1 = this.getSelectedManager();
         TriggerVolumeInspectorDrafts.VolumeDraft var2 = this.selectedVolumeDraft();
         if (var1 != null && var2 != null && var2.groupId != null) {
            GroupEntry var3 = var1.getGroup(var2.groupId);
            class="kw">return var3 != null ? this.draftForGroup(var3) : null;
         } else {
            class="kw">return null;
         }
      }
   }

   @Nonnull
   class="kw">private TriggerVolumeInspectorDrafts.VolumeDraft draftForVolume(@Nonnull VolumeEntry var1) {
      class="kw">return this.volumeDrafts.computeIfAbsent(var1.getId(), var1x -> TriggerVolumeInspectorDrafts.VolumeDraft.from(var1));
   }

   @Nonnull
   class="kw">private TriggerVolumeInspectorDrafts.GroupDraft draftForGroup(@Nonnull GroupEntry var1) {
      class="kw">return this.groupDrafts.computeIfAbsent(var1.getId(), var1x -> TriggerVolumeInspectorDrafts.GroupDraft.from(var1));
   }

   @Nonnull
   class="kw">private Map<String, String> currentTags() {
      class="kw">return this.selectedIsGroup ? this.selectedGroupDraft().tags : this.selectedVolumeDraft().tags;
   }

   @Nonnull
   class="kw">private List<TriggerCondition> currentConditions() {
      class="kw">return this.selectedIsGroup ? this.selectedGroupDraft().conditions : this.selectedVolumeDraft().conditions;
   }

   @Nonnull
   class="kw">private List<TriggerRule> currentRules() {
      class="kw">return this.selectedIsGroup ? this.selectedGroupDraft().rules : this.selectedVolumeDraft().rules;
   }

   @Nonnull
   class="kw">private List<TriggerEffect> currentEffects(@Nonnull TriggerVolumeInspectorPage.EffectListKind var1) {
      if (this.selectedIsGroup) {
         TriggerVolumeInspectorDrafts.GroupDraft var3 = this.selectedGroupDraft();
         class="kw">return var1 == TriggerVolumeInspectorPage.EffectListKind.REJECTION_EFFECT ? var3.rejectionEffects : var3.effects;
      } else {
         TriggerVolumeInspectorDrafts.VolumeDraft var2 = this.selectedVolumeDraft();
         class="kw">return var1 == TriggerVolumeInspectorPage.EffectListKind.REJECTION_EFFECT ? var2.rejectionEffects : var2.effects;
      }
   }

   @Nonnull
   class="kw">private ConditionTiming currentConditionTiming() {
      class="kw">return this.selectedIsGroup ? this.selectedGroupDraft().conditionTiming : this.selectedVolumeDraft().conditionTiming;
   }

   class="kw">private void setCurrentConditionTiming(@Nonnull ConditionTiming var1) {
      if (this.selectedIsGroup) {
         TriggerVolumeInspectorDrafts.GroupDraft var2 = this.selectedGroupDraft();
         var2.conditionTiming = var1;
         var2.markDirty();
      } else {
         TriggerVolumeInspectorDrafts.VolumeDraft var3 = this.selectedVolumeDraft();
         var3.conditionTiming = var1;
         var3.markDirty();
      }
   }

   class="kw">private void markSelectedDraftDirty() {
      if (this.selectedIsGroup) {
         TriggerVolumeInspectorDrafts.GroupDraft var1 = this.selectedGroupDraft();
         if (var1 != null) {
            var1.markDirty();
         }
      } else {
         TriggerVolumeInspectorDrafts.VolumeDraft var2 = this.selectedVolumeDraft();
         if (var2 != null) {
            var2.markDirty();
         }
      }
   }

   @Nullable
   class="kw">private Object getSelectedItem() {
      if (this.selectedId != null && this.selectedEffectIndex >= 0 && this.selectedEffectIndex < this.getItemCount(this.selectedKind)) {
         class="kw">return class="kw">switch (this.selectedKind) {
            case CONDITION -> (TriggerCondition)this.currentConditions().get(this.selectedEffectIndex);
            case EFFECT, REJECTION_EFFECT -> (TriggerEffect)this.currentEffects(this.selectedKind).get(this.selectedEffectIndex);
            case RULE -> (TriggerRule)this.currentRules().get(this.selectedEffectIndex);
         };
      } else {
         class="kw">return null;
      }
   }

   class="kw">private int getItemCount(@Nonnull TriggerVolumeInspectorPage.EffectListKind var1) {
      class="kw">return class="kw">switch (var1) {
         case CONDITION -> this.currentConditions().size();
         case EFFECT, REJECTION_EFFECT -> this.currentEffects(var1).size();
         case RULE -> this.currentRules().size();
      };
   }

   class="kw">private class="kw">static int getGroupItemCount(@Nonnull TriggerVolumeInspectorPage.EffectListKind var0, @Nonnull TriggerVolumeInspectorDrafts.GroupDraft var1) {
      class="kw">return class="kw">switch (var0) {
         case CONDITION -> var1.conditions.size();
         case EFFECT -> var1.effects.size();
         case REJECTION_EFFECT -> var1.rejectionEffects.size();
         case RULE -> var1.rules.size();
      };
   }

   @Nullable
   class="kw">private TriggerEventType getItemEventType(@Nonnull TriggerVolumeInspectorPage.EffectListKind var1, int var2) {
      class="kw">return var1 == TriggerVolumeInspectorPage.EffectListKind.CONDITION
         ? this.currentConditions().get(var2).getEventType()
         : this.currentEffects(var1).get(var2).getEventType();
   }

   @Nullable
   class="kw">private class="kw">static TriggerEventType getGroupItemEventType(
      @Nonnull TriggerVolumeInspectorPage.EffectListKind var0, int var1, @Nonnull TriggerVolumeInspectorDrafts.GroupDraft var2
   ) {
      class="kw">return class="kw">switch (var0) {
         case CONDITION -> var2.conditions.get(var1).getEventType();
         case EFFECT -> var2.effects.get(var1).getEventType();
         case REJECTION_EFFECT -> var2.rejectionEffects.get(var1).getEventType();
         case RULE -> null;
      };
   }

   class="kw">private int getItemEntry(@Nonnull TriggerVolumeInspectorPage.EffectListKind var1, int var2) {
      class="kw">return var1 == TriggerVolumeInspectorPage.EffectListKind.CONDITION
         ? this.currentConditions().get(var2).getEntry()
         : this.currentEffects(var1).get(var2).getEntry();
   }

   class="kw">private class="kw">static int getGroupItemEntry(
      @Nonnull TriggerVolumeInspectorPage.EffectListKind var0, int var1, @Nonnull TriggerVolumeInspectorDrafts.GroupDraft var2
   ) {
      class="kw">return class="kw">switch (var0) {
         case CONDITION -> var2.conditions.get(var1).getEntry();
         case EFFECT -> var2.effects.get(var1).getEntry();
         case REJECTION_EFFECT -> var2.rejectionEffects.get(var1).getEntry();
         case RULE -> 0;
      };
   }

   @Nonnull
   class="kw">private String getItemTypeId(@Nonnull TriggerVolumeInspectorPage.EffectListKind var1, int var2) {
      class="kw">return class="kw">switch (var1) {
         case CONDITION -> getConditionTypeId(this.currentConditions().get(var2));
         case EFFECT, REJECTION_EFFECT -> getTypeId(this.currentEffects(var1).get(var2));
         case RULE -> getRuleTypeId(this.currentRules().get(var2));
      };
   }

   @Nonnull
   class="kw">private class="kw">static String getGroupItemTypeId(
      @Nonnull TriggerVolumeInspectorPage.EffectListKind var0, int var1, @Nonnull TriggerVolumeInspectorDrafts.GroupDraft var2
   ) {
      class="kw">return class="kw">switch (var0) {
         case CONDITION -> getConditionTypeId(var2.conditions.get(var1));
         case EFFECT -> getTypeId(var2.effects.get(var1));
         case REJECTION_EFFECT -> getTypeId(var2.rejectionEffects.get(var1));
         case RULE -> getRuleTypeId(var2.rules.get(var1));
      };
   }

   class="kw">private boolean matchesFilter(@Nonnull String var1) {
      class="kw">return this.filterText.isEmpty() || var1.toLowerCase(Locale.ROOT).contains(this.filterText);
   }

   class="kw">private boolean matchesVolumeFilter(@Nonnull VolumeEntry var1) {
      if (this.filterText.isEmpty()) {
         class="kw">return true;
      } else {
         class="kw">return this.draftForVolume(var1).id.toLowerCase(Locale.ROOT).contains(this.filterText) ? true : this.tagsMatchFilter(this.draftForVolume(var1).tags);
      }
   }

   class="kw">private boolean matchesGroupFilter(@Nonnull String var1, @Nonnull GroupEntry var2, @Nonnull List<VolumeEntry> var3) {
      if (this.filterText.isEmpty()) {
         class="kw">return true;
      }

      if (var1.toLowerCase(Locale.ROOT).contains(this.filterText)) {
         class="kw">return true;
      }

      if (this.tagsMatchFilter(this.draftForGroup(var2).tags)) {
         class="kw">return true;
      }

      for (VolumeEntry var5 : var3) {
         if (this.matchesVolumeFilter(var5)) {
            class="kw">return true;
         }
      }

      class="kw">return false;
   }

   class="kw">private boolean tagsMatchFilter(@Nonnull Map<String, String> var1) {
      for (Entry var3 : var1.entrySet()) {
         if (this.tagMatchesFilter(var3.getKey(), var3.getValue())) {
            class="kw">return true;
         }
      }

      class="kw">return false;
   }

   class="kw">private boolean tagMatchesFilter(@Nonnull String var1, @Nullable String var2) {
      if (this.filterText.isEmpty()) {
         class="kw">return false;
      }

      String var3 = var1.toLowerCase(Locale.ROOT);
      String var4 = var2 != null ? var2.toLowerCase(Locale.ROOT) : "";
      class="kw">return var3.contains(this.filterText) || var4.contains(this.filterText) || (var3 + "=" + var4).contains(this.filterText);
   }

   class="kw">private int appendRowTagChips(@Nonnull UICommandBuilder var1, @Nonnull String var2, @Nonnull Map<String, String> var3, boolean var4) {
      if (var3.isEmpty()) {
         class="kw">return 0;
      }

      List var5 = this.orderedRowTags(var3);
      int var6 = var4 ? 236 : 252;
      int var7 = 0;
      int var8 = 1;
      int var9 = 0;

      for (int var10 = 0; var10 < var5.size(); var10++) {
         Entry var11 = var5.get(var10);
         String var12 = this.chipDisplay(var11.getKey(), var11.getValue());
         int var13 = chipWidth(var12);
         if (var9 > 0 && var9 + var13 > var6) {
            if (var8 == 2) {
               this.appendChip(var1, var2, var7, "+" + (var5.size() - var10), 5596014);
               class="kw">return 2;
            }

            var8++;
            var9 = 0;
         }

         this.appendChip(var1, var2, var7++, var12, tagChipColor(var11.getKey()));
         var9 += var13;
      }

      class="kw">return var8;
   }

   @Nonnull
   class="kw">private List<Entry<String, String>> orderedRowTags(@Nonnull Map<String, String> var1) {
      ArrayList var2 = new ArrayList<>(var1.entrySet());
      if (!this.filterText.isEmpty()) {
         var2.sort(
            (var1x, var2x) -> Boolean.compare(this.tagMatchesFilter(var2x.getKey(), var2x.getValue()), this.tagMatchesFilter(var1x.getKey(), var1x.getValue()))
         );
      }

      class="kw">return var2;
   }

   @Nonnull
   class="kw">private String chipDisplay(@Nonnull String var1, @Nullable String var2) {
      boolean var3 = var2 != null && !var2.isEmpty();
      boolean var4 = var3 && !this.filterText.isEmpty() && var2.toLowerCase(Locale.ROOT).contains(this.filterText);
      class="kw">return var4 ? var1 + ": " + var2 : var1;
   }

   class="kw">private class="kw">static int chipWidth(@Nonnull String var0) {
      class="kw">return (int)Math.ceil(var0.length() * 6.2) + 14;
   }

   @Nullable
   class="kw">private class="kw">static TriggerVolumeManager getManagerForWorld(@Nonnull String var0) {
      for (World var2 : Universe.get().getWorlds().values()) {
         if (var2.getName().equalsIgnoreCase(var0)) {
            class="kw">return var2.getEntityStore().getStore().getResource(TriggerVolumesPlugin.get().getManagerResourceType());
         }
      }

      class="kw">return null;
   }

   @Nonnull
   class="kw">private class="kw">static PatchStyle colorPatch(int var0) {
      class="kw">return new PatchStyle().setColor(Value.of(colorToHex(var0)));
   }

   @Nonnull
   class="kw">private class="kw">static PatchStyle tagColorPatch(int var0) {
      class="kw">return new PatchStyle().setColor(Value.of(colorToHex(var0) + "99"));
   }

   class="kw">private class="kw">static int tagChipColor(@Nonnull String var0) {
      int var1 = var0.toLowerCase(Locale.ROOT).hashCode();
      var1 ^= var1 >>> 16;
      var1 *= 2146121005;
      var1 ^= var1 >>> 15;
      var1 *= -2073254261;
      var1 ^= var1 >>> 16;
      class="kw">return TAG_CHIP_COLORS[Math.floorMod(var1, TAG_CHIP_COLORS.length)];
   }

   class="kw">private void appendChip(@Nonnull UICommandBuilder var1, @Nonnull String var2, int var3, @Nonnull String var4, int var5) {
      String var6 = var2 + "[" + var3 + "]";
      var1.append(var2, "Pages/TriggerVolume/TriggerVolumeTagChip.ui");
      var1.setObject(var6 + ".Background", tagColorPatch(var5));
      var1.set(var6 + " #ChipLabel.Text", var4);
   }

   @Nonnull
   class="kw">private class="kw">static String colorToHex(int var0) {
      int var1 = var0 >> 16 & 0xFF;
      int var2 = var0 >> 8 & 0xFF;
      int var3 = var0 & 0xFF;
      class="kw">return String.format("#%02X%02X%02X", var1, var2, var3);
   }

   @Nonnull
   class="kw">private class="kw">static String colorToHex(@Nonnull Vector3f var0) {
      int var1 = Math.round(var0.x() * 255.0F);
      int var2 = Math.round(var0.y() * 255.0F);
      int var3 = Math.round(var0.z() * 255.0F);
      class="kw">return String.format("#%02X%02X%02X", var1, var2, var3);
   }

   @Nullable
   class="kw">private class="kw">static Vector3f parseColor(@Nullable String var0) {
      if (var0 != null && !var0.isBlank()) {
         int var1 = parsePackedColor(var0, 52428);
         class="kw">return new Vector3f((var1 >> 16 & 0xFF) / 255.0F, (var1 >> 8 & 0xFF) / 255.0F, (var1 & 0xFF) / 255.0F);
      } else {
         class="kw">return null;
      }
   }

   class="kw">private class="kw">static int parsePackedColor(@Nullable String var0, int var1) {
      if (var0 == null) {
         class="kw">return var1;
      }

      String var2 = var0.trim();
      if (var2.startsWith("#")) {
         var2 = var2.substring(1);
      }

      if (var2.length() > 6) {
         var2 = var2.substring(0, 6);
      }

      try {
         class="kw">return Integer.parseInt(var2, 16) & 16777215;
      } catch (NumberFormatException var4) {
         class="kw">return var1;
      }
   }

   class="kw">private class="kw">static void setVec(@Nonnull Vector3d var0, @Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.vecX != null && var1.vecY != null && var1.vecZ != null) {
         var0.set(var1.vecX, var1.vecY, var1.vecZ);
      }
   }

   class="kw">private class="kw">static void setBoxDimensions(@Nonnull Vector3d var0, @Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.vecX != null && var1.vecY != null && var1.vecZ != null) {
         var0.set(clampDimension(var1.vecX, 0.25), clampDimension(var1.vecY, 0.25), clampDimension(var1.vecZ, 0.25));
      }
   }

   class="kw">private class="kw">static void setSphereDimensions(@Nonnull Vector3d var0, @Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.paramNumericValue != null) {
         var0.set(clampDimension(var1.paramNumericValue, 0.25), 0.0, 0.0);
      }
   }

   class="kw">private class="kw">static void setCylinderDimensions(@Nonnull Vector3d var0, @Nonnull TriggerVolumeInspectorPage.PageData var1) {
      if (var1.vecX != null && var1.vecY != null) {
         var0.set(clampDimension(var1.vecX, 0.25), clampDimension(var1.vecY, 0.5), 0.0);
      }
   }

   class="kw">private class="kw">static double clampDimension(double var0, double var2) {
      class="kw">return Math.min(1000.0, Math.max(var2, var0));
   }

   @Nonnull
   class="kw">private class="kw">static <T class="kw">extends Enum<T>> T parseEnum(@Nonnull Class<T> var0, @Nullable String var1, @Nonnull T var2) {
      if (var1 == null) {
         class="kw">return var2;
      }

      try {
         class="kw">return Enum.valueOf(var0, var1);
      } catch (IllegalArgumentException var4) {
         class="kw">return var2;
      }
   }

   @Nonnull
   class="kw">private class="kw">static Set<EntityTargetType> parseTargetTypes(@Nullable String var0) {
      class="kw">return class="kw">switch (var0 != null ? var0 : "PLAYER") {
         case "NONE" -> EnumSet.noneOf(EntityTargetType.class);
         case "NPC" -> EnumSet.of(EntityTargetType.NPC);
         case "ITEM_DROP" -> EnumSet.of(EntityTargetType.ITEM_DROP);
         case "PROJECTILE" -> EnumSet.of(EntityTargetType.PROJECTILE);
         case "ALL" -> EnumSet.allOf(EntityTargetType.class);
         class="kw">default -> EnumSet.of(EntityTargetType.PLAYER);
      };
   }

   @Nonnull
   class="kw">private class="kw">static String targetTypesValue(@Nonnull Set<EntityTargetType> var0) {
      if (var0.containsAll(EnumSet.allOf(EntityTargetType.class))) {
         class="kw">return "ALL";
      } else if (var0.contains(EntityTargetType.PROJECTILE)) {
         class="kw">return "PROJECTILE";
      } else if (var0.contains(EntityTargetType.ITEM_DROP)) {
         class="kw">return "ITEM_DROP";
      } else if (var0.contains(EntityTargetType.NPC)) {
         class="kw">return "NPC";
      } else {
         class="kw">return var0.contains(EntityTargetType.PLAYER) ? "PLAYER" : "NONE";
      }
   }

   @Nonnull
   class="kw">private class="kw">static List<DropdownEntryInfo> targetTypeEntries() {
      class="kw">return List.of(
         option("server.customUI.triggerVolumeInspector.option.none", "NONE"),
         option("server.customUI.triggerVolumeInspector.option.player", "PLAYER"),
         option("server.customUI.triggerVolumeInspector.option.npc", "NPC"),
         option("server.customUI.triggerVolumeInspector.option.itemDrop", "ITEM_DROP"),
         option("server.customUI.triggerVolumeInspector.option.projectile", "PROJECTILE"),
         option("server.customUI.triggerVolumeInspector.option.all", "ALL")
      );
   }

   @Nonnull
   class="kw">private class="kw">static List<DropdownEntryInfo> projectileSourceEntries() {
      class="kw">return List.of(
         option(
            "server.customUI.triggerVolumeInspector.option.projectileSource.shooter",
            ProjectileSource.SHOOTER.name(),
            "server.customUI.triggerVolumeInspector.option.projectileSource.shooter.tooltip"
         ),
         option(
            "server.customUI.triggerVolumeInspector.option.projectileSource.projectile",
            ProjectileSource.PROJECTILE.name(),
            "server.customUI.triggerVolumeInspector.option.projectileSource.projectile.tooltip"
         )
      );
   }

   @Nonnull
   class="kw">private class="kw">static List<DropdownEntryInfo> shapeEntries() {
      class="kw">return List.of(
         option("server.customUI.triggerVolumeInspector.option.box", TriggerVolumeShapeType.Box.name()),
         option("server.customUI.triggerVolumeInspector.option.sphere", TriggerVolumeShapeType.Sphere.name()),
         option("server.customUI.triggerVolumeInspector.option.cylinder", TriggerVolumeShapeType.Cylinder.name())
      );
   }

   @Nonnull
   class="kw">private class="kw">static List<DropdownEntryInfo> cooldownModeEntries() {
      class="kw">return List.of(
         option(
            "server.customUI.triggerVolumeInspector.option.perEntity",
            CooldownMode.PER_ENTITY.name(),
            "server.customUI.triggerVolumeInspector.option.perEntity.tooltip"
         ),
         option("server.customUI.triggerVolumeInspector.option.total", CooldownMode.TOTAL.name(), "server.customUI.triggerVolumeInspector.option.total.tooltip")
      );
   }

   @Nonnull
   class="kw">private class="kw">static List<DropdownEntryInfo> conditionTimingEntries() {
      class="kw">return List.of(
         option(
            "server.customUI.triggerVolumeInspector.option.beforeVolumeDelay",
            ConditionTiming.BEFORE_VOLUME_DELAY.name(),
            "server.customUI.triggerVolumeInspector.option.beforeVolumeDelay.tooltip"
         ),
         option(
            "server.customUI.triggerVolumeInspector.option.afterVolumeDelay",
            ConditionTiming.AFTER_VOLUME_DELAY.name(),
            "server.customUI.triggerVolumeInspector.option.afterVolumeDelay.tooltip"
         )
      );
   }

   @Nonnull
   class="kw">private class="kw">static List<DropdownEntryInfo> rejectionDelayModeEntries() {
      class="kw">return List.of(
         option(
            "server.customUI.triggerVolumeInspector.option.rejectionImmediate",
            RejectionDelayMode.IMMEDIATE.name(),
            "server.customUI.triggerVolumeInspector.option.rejectionImmediate.tooltip"
         ),
         option(
            "server.customUI.triggerVolumeInspector.option.rejectionUseVolumeDelay",
            RejectionDelayMode.USE_VOLUME_DELAY.name(),
            "server.customUI.triggerVolumeInspector.option.rejectionUseVolumeDelay.tooltip"
         )
      );
   }

   @Nonnull
   class="kw">private class="kw">static DropdownEntryInfo option(@Nonnull String var0, @Nonnull String var1) {
      class="kw">return new DropdownEntryInfo(LocalizableString.fromMessageId(var0), var1);
   }

   @Nonnull
   class="kw">private class="kw">static DropdownEntryInfo option(@Nonnull String var0, @Nonnull String var1, @Nonnull String var2) {
      class="kw">return new DropdownEntryInfo(LocalizableString.fromMessageId(var0), var1, LocalizableString.fromMessageId(var2));
   }

   @Nonnull
   class="kw">private class="kw">static Message fieldLabel(@Nonnull String var0) {
      class="kw">return Message.translation("server.customUI.triggerVolumeInspector.field." + var0);
   }

   @Nonnull
   class="kw">private class="kw">static Message volumeFieldTooltip(@Nonnull String var0) {
      class="kw">return Message.translation("server.customUI.triggerVolumeInspector.field." + var0 + ".tooltip");
   }

   @Nonnull
   class="kw">private class="kw">static Message fieldLabel(@Nonnull String var0, @Nonnull String var1) {
      String var2 = "server.customUI.triggerVolumeEffectEditor.field." + var0 + "." + var1;
      if (messageExists(var2)) {
         class="kw">return Message.translation(var2);
      }

      String var3 = "server.customUI.triggerVolumeEffectEditor.field.common." + var1;
      class="kw">return messageExists(var3) ? Message.translation(var3) : Message.translation(var2);
   }

   @Nonnull
   class="kw">private class="kw">static Message effectFieldTooltip(@Nonnull String var0, @Nonnull String var1) {
      String var2 = "server.customUI.triggerVolumeEffectEditor.field." + var0 + "." + var1 + ".tooltip";
      if (messageExists(var2)) {
         class="kw">return Message.translation(var2);
      }

      String var3 = "server.customUI.triggerVolumeEffectEditor.field.common." + var1 + ".tooltip";
      class="kw">return messageExists(var3) ? Message.translation(var3) : Message.translation(var2);
   }

   class="kw">private class="kw">static void setEffectFieldTooltip(@Nonnull UICommandBuilder var0, @Nonnull String var1, @Nonnull String var2, @Nonnull String var3) {
      if (!var2.isEmpty()) {
         var0.set(var1 + " #Label.TooltipText", effectFieldTooltip(var2, var3));
      }
   }

   class="kw">private class="kw">static void setEffectFieldPlaceholder(@Nonnull UICommandBuilder var0, @Nonnull String var1, @Nonnull String var2, @Nonnull String var3) {
      if (!var2.isEmpty()) {
         String var4 = "server.customUI.triggerVolumeEffectEditor.field." + var2 + "." + var3 + ".placeholder";
         I18nModule var5 = I18nModule.get();
         if (var5 != null && var5.getMessage("en-US", var4) != null) {
            var0.set(var1 + " #Input.PlaceholderText", Message.translation(var4));
         }
      }
   }

   class="kw">private class="kw">static boolean isNonNegativeNumericField(@Nonnull String var0, @Nonnull String var1) {
      class="kw">return NON_NEGATIVE_NUMERIC_FIELDS.contains(var0 + "." + var1);
   }

   @Nonnull
   class="kw">private class="kw">static String getCodecTypeId(@Nonnull Object var0) {
      if (var0 class="kw">instanceof TriggerCondition var2) {
         class="kw">return getConditionTypeId(var2);
      } else {
         class="kw">return var0 class="kw">instanceof TriggerRule var1 ? getRuleTypeId(var1) : getTypeId((TriggerEffect)var0);
      }
   }

   @Nonnull
   class="kw">private class="kw">static EventData paramEvent(@Nonnull String var0, @Nonnull String var1) {
      class="kw">return new EventData().append("Action", TriggerVolumeInspectorPage.Action.UpdateParameter.name()).append("ParamKey", var0).append("@ParamValue", var1);
   }

   @Nonnull
   class="kw">private class="kw">static EventData boolParamEvent(@Nonnull String var0, @Nonnull String var1) {
      class="kw">return new EventData().append("Action", TriggerVolumeInspectorPage.Action.UpdateParameter.name()).append("ParamKey", var0).append("@ParamBool", var1);
   }

   @Nonnull
   class="kw">private class="kw">static EventData numericParamEvent(@Nonnull String var0, @Nonnull String var1) {
      class="kw">return new EventData()
         .append("Action", TriggerVolumeInspectorPage.Action.UpdateParameter.name())
         .append("ParamKey", var0)
         .append("@ParamNumericValue", var1);
   }

   @Nonnull
   class="kw">private class="kw">static TriggerVolumeInspectorPage.EffectListKind parseEffectListKind(@Nonnull String var0, @Nonnull TriggerVolumeInspectorPage.EffectListKind var1) {
      try {
         class="kw">return TriggerVolumeInspectorPage.EffectListKind.valueOf(var0);
      } catch (IllegalArgumentException var3) {
         class="kw">return var1;
      }
   }

   @Nonnull
   class="kw">private class="kw">static TriggerEventType parseTriggerEventType(@Nonnull String var0, @Nonnull TriggerEventType var1) {
      try {
         class="kw">return TriggerEventType.valueOf(var0);
      } catch (IllegalArgumentException var3) {
         class="kw">return var1;
      }
   }

   @Nonnull
   class="kw">private class="kw">static String humanizeTypeId(@Nonnull String var0) {
      if (var0.isEmpty()) {
         class="kw">return var0;
      }

      StringBuilder var1 = new StringBuilder(var0.length() + 4);
      var1.append(var0.charAt(0));

      for (int var2 = 1; var2 < var0.length(); var2++) {
         char var3 = var0.charAt(var2);
         if (Character.isUpperCase(var3) && !Character.isUpperCase(var0.charAt(var2 - 1))) {
            var1.append(' ');
         }

         var1.append(var3);
      }

      class="kw">return var1.toString();
   }

   @Nonnull
   class="kw">private class="kw">static List<String> getSortedTypeIds() {
      ArrayList var0 = new ArrayList<>(TriggerEffect.CODEC.getRegisteredIds());
      Collections.sort(var0);
      class="kw">return var0;
   }

   @Nonnull
   class="kw">private class="kw">static List<String> getSortedConditionTypeIds() {
      ArrayList var0 = new ArrayList<>(TriggerCondition.CODEC.getRegisteredIds());
      Collections.sort(var0);
      class="kw">return var0;
   }

   @Nonnull
   class="kw">private class="kw">static List<String> getSortedRuleTypeIds() {
      ArrayList var0 = new ArrayList<>(TriggerRule.CODEC.getRegisteredIds());
      Collections.sort(var0);
      class="kw">return var0;
   }

   @Nonnull
   class="kw">private class="kw">static String getTypeId(@Nonnull TriggerEffect var0) {
      String var1 = TriggerEffect.CODEC.getIdFor((Class<? class="kw">extends TriggerEffect>)var0.getClass());
      class="kw">return var1 != null ? var1 : "unknown";
   }

   @Nonnull
   class="kw">private class="kw">static String getConditionTypeId(@Nonnull TriggerCondition var0) {
      String var1 = TriggerCondition.CODEC.getIdFor((Class<? class="kw">extends TriggerCondition>)var0.getClass());
      class="kw">return var1 != null ? var1 : "unknown";
   }

   @Nonnull
   class="kw">private class="kw">static String getRuleTypeId(@Nonnull TriggerRule var0) {
      String var1 = TriggerRule.CODEC.getIdFor((Class<? class="kw">extends TriggerRule>)var0.getClass());
      class="kw">return var1 != null ? var1 : "unknown";
   }

   @Nullable
   class="kw">private class="kw">static BuilderCodec<TriggerEffect> getBuilderCodecFor(@Nonnull String var0) {
      class="kw">return (BuilderCodec<TriggerEffect>)(TriggerEffect.CODEC.getCodecFor(var0) class="kw">instanceof BuilderCodec var2 ? var2 : null);
   }

   @Nullable
   class="kw">private class="kw">static BuilderCodec<TriggerCondition> getConditionBuilderCodecFor(@Nonnull String var0) {
      class="kw">return (BuilderCodec<TriggerCondition>)(TriggerCondition.CODEC.getCodecFor(var0) class="kw">instanceof BuilderCodec var2 ? var2 : null);
   }

   @Nullable
   class="kw">private class="kw">static BuilderCodec<TriggerRule> getRuleBuilderCodecFor(@Nonnull String var0) {
      class="kw">return (BuilderCodec<TriggerRule>)(TriggerRule.CODEC.getCodecFor(var0) class="kw">instanceof BuilderCodec var2 ? var2 : null);
   }

   @Nonnull
   class="kw">private class="kw">static BsonDocument encodeEffect(@Nonnull BuilderCodec<TriggerEffect> var0, @Nonnull TriggerEffect var1) {
      try {
         class="kw">return var0.encode(var1, EmptyExtraInfo.EMPTY);
      } catch (Exception var3) {
         class="kw">return new BsonDocument();
      }
   }

   @Nonnull
   class="kw">private class="kw">static BsonDocument encodeCondition(@Nonnull BuilderCodec<TriggerCondition> var0, @Nonnull TriggerCondition var1) {
      try {
         class="kw">return var0.encode(var1, EmptyExtraInfo.EMPTY);
      } catch (Exception var3) {
         class="kw">return new BsonDocument();
      }
   }

   @Nonnull
   class="kw">private class="kw">static BsonDocument encodeRule(@Nonnull BuilderCodec<TriggerRule> var0, @Nonnull TriggerRule var1) {
      try {
         class="kw">return var0.encode(var1, EmptyExtraInfo.EMPTY);
      } catch (Exception var3) {
         class="kw">return new BsonDocument();
      }
   }

   @Nullable
   class="kw">private class="kw">static BsonValue stringToBsonValue(@Nonnull Codec<?> var0, @Nullable String var1) {
      if (var1 == null) {
         class="kw">return null;
      } else if (var0 == Codec.STRING) {
         class="kw">return new BsonString(var1);
      } else if (var0 == Codec.STRING_ARRAY) {
         class="kw">return stringsToBsonArray(var1);
      } else if (var0 == Codec.FLOAT || var0 == Codec.DOUBLE) {
         class="kw">return new BsonDouble(Double.parseDouble(var1));
      } else if (var0 == Codec.INTEGER) {
         class="kw">return new BsonInt32(Integer.parseInt(var1));
      } else if (var0 == Codec.LONG) {
         class="kw">return new BsonInt64(Long.parseLong(var1));
      } else if (var0 == Codec.BOOLEAN) {
         class="kw">return new BsonBoolean(Boolean.parseBoolean(var1));
      } else {
         class="kw">return var0 class="kw">instanceof EnumCodec ? new BsonString(var1) : new BsonString(var1);
      }
   }

   @Nonnull
   class="kw">private class="kw">static BsonArray stringsToBsonArray(@Nonnull String var0) {
      BsonArray var1 = new BsonArray();
      Arrays.stream(var0.split(",", 0)).map(String::trim).filter(var0x -> !var0x.isEmpty()).map(BsonString::new).forEach(var1::add);
      class="kw">return var1;
   }

   @Nonnull
   class="kw">private class="kw">static String bsonValueToString(@Nonnull BsonValue var0) {
      if (var0 class="kw">instanceof BsonString var5) {
         class="kw">return var5.getValue();
      } else if (var0 class="kw">instanceof BsonBoolean var4) {
         class="kw">return String.valueOf(var4.getValue());
      } else if (var0 class="kw">instanceof BsonDouble var3) {
         class="kw">return String.valueOf(var3.getValue());
      } else if (var0 class="kw">instanceof BsonInt32 var2) {
         class="kw">return String.valueOf(var2.getValue());
      } else {
         class="kw">return var0 class="kw">instanceof BsonInt64 var1 ? String.valueOf(var1.getValue()) : var0.toString();
      }
   }

   class="kw">private class="kw">static void materializeDefaults(@Nonnull BuilderCodec<TriggerEffect> var0, @Nonnull TriggerEffect var1) {
      BsonDocument var2 = encodeEffect(var0, var1);
      ExtraInfo var3 = ExtraInfo.THREAD_LOCAL.get();

      for (Entry var5 : var0.getEntries().entrySet()) {
         String var6 = var5.getKey();
         if (!"Event".equals(var6) && !"Interval".equals(var6) && !"Entry".equals(var6) && !var2.containsKey(var6) && !var5.getValue().isEmpty()) {
            BuilderField var7 = var5.getValue().getLast();
            BsonValue var8 = getDefaultBsonValue(getTypeId(var1), var6, var7.getCodec().getChildCodec());
            if (var8 != null) {
               BsonDocument var9 = new BsonDocument();
               var9.put(var6, var8);

               try {
                  var7.decode(var9, var1, var3);
               } catch (Exception var11) {
               }
            }
         }
      }
   }

   class="kw">private class="kw">static void materializeRuleDefaults(@Nonnull BuilderCodec<TriggerRule> var0, @Nonnull TriggerRule var1) {
      BsonDocument var2 = encodeRule(var0, var1);
      ExtraInfo var3 = ExtraInfo.THREAD_LOCAL.get();

      for (Entry var5 : var0.getEntries().entrySet()) {
         String var6 = var5.getKey();
         if (!var2.containsKey(var6) && !var5.getValue().isEmpty()) {
            BuilderField var7 = var5.getValue().getLast();
            BsonValue var8 = getDefaultBsonValue(getRuleTypeId(var1), var6, var7.getCodec().getChildCodec());
            if (var8 != null) {
               BsonDocument var9 = new BsonDocument();
               var9.put(var6, var8);

               try {
                  var7.decode(var9, var1, var3);
               } catch (Exception var11) {
               }
            }
         }
      }
   }

   class="kw">private class="kw">static void materializeConditionDefaults(@Nonnull BuilderCodec<TriggerCondition> var0, @Nonnull TriggerCondition var1) {
      BsonDocument var2 = encodeCondition(var0, var1);
      ExtraInfo var3 = ExtraInfo.THREAD_LOCAL.get();

      for (Entry var5 : var0.getEntries().entrySet()) {
         String var6 = var5.getKey();
         if (!"Event".equals(var6) && !"Entry".equals(var6) && !var2.containsKey(var6) && !var5.getValue().isEmpty()) {
            BuilderField var7 = var5.getValue().getLast();
            BsonValue var8 = getDefaultBsonValue(getConditionTypeId(var1), var6, var7.getCodec().getChildCodec());
            if (var8 != null) {
               BsonDocument var9 = new BsonDocument();
               var9.put(var6, var8);

               try {
                  var7.decode(var9, var1, var3);
               } catch (Exception var11) {
               }
            }
         }
      }
   }

   @Nullable
   class="kw">private class="kw">static BsonValue getDefaultBsonValue(@Nonnull String var0, @Nonnull String var1, @Nonnull Codec<?> var2) {
      BsonValue var3 = DEFAULT_FIELD_VALUES.get(var0 + "." + var1);
      class="kw">return var3 != null ? var3 : getDefaultBsonValue(var2);
   }

   @Nullable
   class="kw">private class="kw">static BsonValue getDefaultBsonValue(@Nonnull Codec<?> var0) {
      if (var0 == Codec.BOOLEAN) {
         class="kw">return new BsonBoolean(false);
      } else if (var0 == Codec.FLOAT || var0 == Codec.DOUBLE) {
         class="kw">return new BsonDouble(0.0);
      } else if (var0 == Codec.INTEGER) {
         class="kw">return new BsonInt32(0);
      } else if (var0 == Codec.LONG) {
         class="kw">return new BsonInt64(0L);
      } else if (var0 == Codec.STRING) {
         class="kw">return new BsonString("");
      } else if (var0 == Codec.STRING_ARRAY) {
         class="kw">return new BsonArray();
      } else if (var0 == Vector3dUtil.CODEC) {
         BsonDocument var1 = new BsonDocument();
         var1.put("X", new BsonDouble(0.0));
         var1.put("Y", new BsonDouble(0.0));
         var1.put("Z", new BsonDouble(0.0));
         class="kw">return var1;
      } else {
         class="kw">return null;
      }
   }

   @Nonnull
   class="kw">private class="kw">static Collection<String> getAssetIdsForSource(@Nullable String var0) {
      class="kw">return var0 == null ? List.of() : TriggerVolumesPlugin.get().getAssetIds(var0);
   }

   class="kw">private Collection<String> resolvePickerIds() {
      if (this.getSelectedItem() class="kw">instanceof PlayAnimationEffect var1) {
         if ("Animation".equals(this.pendingPickerSource)) {
            String var3 = var1.getNpcType();
            if (!var3.isBlank()) {
               class="kw">return TriggerVolumesPlugin.get().collectAnimationIdsForApplyOn(var3);
            }
         } else if ("AnimationApplyOn".equals(this.pendingPickerSource)) {
            String var4 = var1.getAnimation();
            if (var4 != null && !var4.isBlank()) {
               class="kw">return TriggerVolumesPlugin.get().collectApplyOnIdsForAnimation(var4);
            }
         }
      }

      class="kw">return getAssetIdsForSource(this.pendingPickerSource);
   }

   @Nullable
   class="kw">private class="kw">static String getAssetSourceForField(@Nonnull String var0, @Nonnull String var1) {
      class="kw">return TriggerVolumesPlugin.get().getAssetSourceForField(var0, var1);
   }

   class="kw">public enum Action {
      Select,
      ChangeWorld,
      FilterChanged,
      ChangeTab,
      UpdateVolumeField,
      CommitName,
      UpdateTag,
      RemoveTag,
      DeleteSelection,
      Save,
      Discard,
      Teleport,
      ToggleRenameSelected,
      ConfirmRenameSelected,
      CancelRenameSelected,
      SelectEffect,
      AddEffect,
      RemoveEffect,
      DuplicateEffect,
      MoveEffectUp,
      MoveEffectDown,
      UpdateAddTarget,
      UpdateAddEffectType,
      UpdateAddEventType,
      UpdateAddEntry,
      ToggleEventCategory,
      ToggleRulesCategory,
      ToggleRejectionSignal,
      UpdateParameter,
      CommitEntry,
      TogglePrefabPreview,
      OpenPresetSave,
      PresetNameChanged,
      ConfirmSavePreset,
      CancelPresetSave,
      OpenPresetLoad,
      LoadPreset,
      CancelPresetLoad,
      OpenAssetPicker,
      AssetPickerSearch,
      AssetPickerSelect,
      ConfirmAssetPicker,
      PreviewSound,
      CancelAssetPicker,
      OpenPackBrowser,
      ConfirmPackBrowser,
      CancelPackBrowser,
      OpenCreatePack,
      CreatePack,
      CancelCreatePack,
      PackSearch,
      PackSelect;

      Action() {
      }
   }

   class="kw">private enum EffectListKind {
      CONDITION,
      EFFECT,
      REJECTION_EFFECT,
      RULE;

      EffectListKind() {
      }
   }

   class="kw">private record EventCategoryKey(@Nonnull TriggerEventType eventType, int entry) {
      class="kw">private EventCategoryKey {
      }
   }

   class="kw">private enum EventCategoryScope {
      GROUP,
      VOLUME;

      EventCategoryScope() {
      }
   }

   class="kw">public enum InspectorTab {
      VOLUME("server.customUI.triggerVolumeInspector.tab.volume", "server.customUI.triggerVolumeInspector.tab.volume.tooltip"),
      EFFECTS("server.customUI.triggerVolumeInspector.tab.effects", "server.customUI.triggerVolumeInspector.tab.effects.tooltip"),
      TAGS("server.customUI.triggerVolumeInspector.tab.tags", "server.customUI.triggerVolumeInspector.tab.tags.tooltip");

      class="kw">private class="kw">final String labelKey;
      class="kw">private class="kw">final String tooltipKey;

      InspectorTab(@Nonnull String nullxx, @Nonnull String nullxxx) {
         this.labelKey = nullxx;
         this.tooltipKey = nullxxx;
      }

      @Nonnull
      Message label() {
         class="kw">return Message.translation(this.labelKey);
      }

      @Nonnull
      Message tooltip() {
         class="kw">return Message.translation(this.tooltipKey);
      }
   }

   class="kw">public class="kw">static class PageData {
      class="kw">public class="kw">static class="kw">final BuilderCodec<TriggerVolumeInspectorPage.PageData> CODEC = BuilderCodec.builder(
            TriggerVolumeInspectorPage.PageData.class, TriggerVolumeInspectorPage.PageData::new
         )
         .append(
            new KeyedCodec<>("Action", new EnumCodec<>(TriggerVolumeInspectorPage.Action.class, EnumCodec.EnumStyle.LEGACY)),
            (var0, var1) -> var0.action = var1,
            var0 -> var0.action
         )
         .add()
         .append(new KeyedCodec<>("Id", Codec.STRING, false), (var0, var1) -> var0.id = var1, var0 -> var0.id)
         .add()
         .append(new KeyedCodec<>("IsGroup", Codec.STRING, false), (var0, var1) -> var0.isGroup = var1, var0 -> var0.isGroup)
         .add()
         .append(new KeyedCodec<>("Tab", Codec.STRING, false), (var0, var1) -> var0.tab = var1, var0 -> var0.tab)
         .add()
         .append(new KeyedCodec<>("@WorldName", Codec.STRING, false), (var0, var1) -> var0.worldName = var1, var0 -> var0.worldName)
         .add()
         .append(new KeyedCodec<>("@FilterText", Codec.STRING, false), (var0, var1) -> var0.filterText = var1, var0 -> var0.filterText)
         .add()
         .append(new KeyedCodec<>("@TagKey", Codec.STRING, false), (var0, var1) -> var0.tagKey = var1, var0 -> var0.tagKey)
         .add()
         .append(new KeyedCodec<>("@TagValues", Codec.STRING, false), (var0, var1) -> var0.tagValues = var1, var0 -> var0.tagValues)
         .add()
         .append(new KeyedCodec<>("RemoveTagKey", Codec.STRING, false), (var0, var1) -> var0.removeTagKey = var1, var0 -> var0.removeTagKey)
         .add()
         .append(new KeyedCodec<>("EffectIndex", Codec.STRING, false), (var0, var1) -> var0.effectIndex = var1, var0 -> var0.effectIndex)
         .add()
         .append(new KeyedCodec<>("EffectListKind", Codec.STRING, false), (var0, var1) -> var0.effectListKind = var1, var0 -> var0.effectListKind)
         .add()
         .append(new KeyedCodec<>("@EffectType", Codec.STRING, false), (var0, var1) -> var0.effectType = var1, var0 -> var0.effectType)
         .add()
         .append(new KeyedCodec<>("@AddTargetKind", Codec.STRING, false), (var0, var1) -> var0.addTargetKind = var1, var0 -> var0.addTargetKind)
         .add()
         .append(new KeyedCodec<>("@AddEventType", Codec.STRING, false), (var0, var1) -> var0.addEventType = var1, var0 -> var0.addEventType)
         .add()
         .append(new KeyedCodec<>("@AddEntry", Codec.STRING, false), (var0, var1) -> var0.addEntry = var1, var0 -> var0.addEntry)
         .add()
         .append(new KeyedCodec<>("EventType", Codec.STRING, false), (var0, var1) -> var0.eventType = var1, var0 -> var0.eventType)
         .add()
         .append(new KeyedCodec<>("EventEntry", Codec.STRING, false), (var0, var1) -> var0.eventEntry = var1, var0 -> var0.eventEntry)
         .add()
         .append(new KeyedCodec<>("EventCategoryScope", Codec.STRING, false), (var0, var1) -> var0.eventCategoryScope = var1, var0 -> var0.eventCategoryScope)
         .add()
         .append(new KeyedCodec<>("ParamKey", Codec.STRING, false), (var0, var1) -> var0.paramKey = var1, var0 -> var0.paramKey)
         .add()
         .append(new KeyedCodec<>("@ParamValue", Codec.STRING, false), (var0, var1) -> var0.paramValue = var1, var0 -> var0.paramValue)
         .add()
         .append(new KeyedCodec<>("@ParamBool", Codec.BOOLEAN, false), (var0, var1) -> var0.paramBool = var1, var0 -> var0.paramBool)
         .add()
         .append(new KeyedCodec<>("@ParamNumericValue", Codec.DOUBLE, false), (var0, var1) -> var0.paramNumericValue = var1, var0 -> var0.paramNumericValue)
         .add()
         .append(new KeyedCodec<>("@VecX", Codec.DOUBLE, false), (var0, var1) -> var0.vecX = var1, var0 -> var0.vecX)
         .add()
         .append(new KeyedCodec<>("@VecY", Codec.DOUBLE, false), (var0, var1) -> var0.vecY = var1, var0 -> var0.vecY)
         .add()
         .append(new KeyedCodec<>("@VecZ", Codec.DOUBLE, false), (var0, var1) -> var0.vecZ = var1, var0 -> var0.vecZ)
         .add()
         .append(new KeyedCodec<>("@PresetName", Codec.STRING, false), (var0, var1) -> var0.presetName = var1, var0 -> var0.presetName)
         .add()
         .append(
            new KeyedCodec<>("@IncludeVolumeSettings", Codec.BOOLEAN, false),
            (var0, var1) -> var0.includeVolumeSettings = var1,
            var0 -> var0.includeVolumeSettings
         )
         .add()
         .append(new KeyedCodec<>("PresetId", Codec.STRING, false), (var0, var1) -> var0.presetId = var1, var0 -> var0.presetId)
         .add()
         .append(new KeyedCodec<>("@AssetPickerQuery", Codec.STRING, false), (var0, var1) -> var0.assetPickerQuery = var1, var0 -> var0.assetPickerQuery)
         .add()
         .append(
            new KeyedCodec<>("AssetPickerSelection", Codec.STRING, false), (var0, var1) -> var0.assetPickerSelection = var1, var0 -> var0.assetPickerSelection
         )
         .add()
         .append(new KeyedCodec<>("Pack", Codec.STRING, false), (var0, var1) -> var0.packBrowserData.pack = var1, var0 -> var0.packBrowserData.pack)
         .add()
         .append(new KeyedCodec<>("@PackSearch", Codec.STRING, false), (var0, var1) -> var0.packBrowserData.search = var1, var0 -> var0.packBrowserData.search)
         .add()
         .append(
            new KeyedCodec<>("@CreateName", Codec.STRING, false),
            (var0, var1) -> var0.packBrowserData.createName = var1,
            var0 -> var0.packBrowserData.createName
         )
         .add()
         .append(
            new KeyedCodec<>("@CreateGroup", Codec.STRING, false),
            (var0, var1) -> var0.packBrowserData.createGroup = var1,
            var0 -> var0.packBrowserData.createGroup
         )
         .add()
         .append(
            new KeyedCodec<>("@CreateDescription", Codec.STRING, false),
            (var0, var1) -> var0.packBrowserData.createDescription = var1,
            var0 -> var0.packBrowserData.createDescription
         )
         .add()
         .append(
            new KeyedCodec<>("@CreateVersion", Codec.STRING, false),
            (var0, var1) -> var0.packBrowserData.createVersion = var1,
            var0 -> var0.packBrowserData.createVersion
         )
         .add()
         .append(
            new KeyedCodec<>("@CreateWebsite", Codec.STRING, false),
            (var0, var1) -> var0.packBrowserData.createWebsite = var1,
            var0 -> var0.packBrowserData.createWebsite
         )
         .add()
         .append(
            new KeyedCodec<>("@CreateAuthorName", Codec.STRING, false),
            (var0, var1) -> var0.packBrowserData.createAuthorName = var1,
            var0 -> var0.packBrowserData.createAuthorName
         )
         .add()
         .append(
            new KeyedCodec<>("ValidateCreate", Codec.STRING, false),
            (var0, var1) -> var0.packBrowserData.validateCreate = var1,
            var0 -> var0.packBrowserData.validateCreate
         )
         .add()
         .append(
            new KeyedCodec<>("@CreateTargetDir", Codec.STRING, false),
            (var0, var1) -> var0.packBrowserData.createTargetDir = var1,
            var0 -> var0.packBrowserData.createTargetDir
         )
         .add()
         .append(
            new KeyedCodec<>("@DirectoryFilter", Codec.STRING, false),
            (var0, var1) -> var0.packBrowserData.directoryFilter = var1,
            var0 -> var0.packBrowserData.directoryFilter
         )
         .add()
         .build();
      class="kw">public TriggerVolumeInspectorPage.Action action;
      class="kw">public String id;
      class="kw">public String isGroup;
      class="kw">public String tab;
      class="kw">public String worldName;
      class="kw">public String filterText;
      class="kw">public String tagKey;
      class="kw">public String tagValues;
      class="kw">public String removeTagKey;
      class="kw">public String effectIndex;
      class="kw">public String effectListKind;
      class="kw">public String effectType;
      class="kw">public String addTargetKind;
      class="kw">public String addEventType;
      class="kw">public String addEntry;
      class="kw">public String eventType;
      class="kw">public String eventEntry;
      class="kw">public String eventCategoryScope;
      class="kw">public String paramKey;
      class="kw">public String paramValue;
      class="kw">public Boolean paramBool;
      class="kw">public Double paramNumericValue;
      class="kw">public Double vecX;
      class="kw">public Double vecY;
      class="kw">public Double vecZ;
      class="kw">public String presetName;
      class="kw">public Boolean includeVolumeSettings;
      class="kw">public String presetId;
      class="kw">public String assetPickerQuery;
      class="kw">public String assetPickerSelection;
      class="kw">public class="kw">final AssetPackSaveBrowserEventData packBrowserData = new AssetPackSaveBrowserEventData();

      class="kw">public PageData() {
      }
   }

   class="kw">private record RowEntry(@Nonnull String id, boolean isGroup, int listIndex) {
      class="kw">private RowEntry {
      }
   }
}