BuilderToolsPacketHandler class
Пакет: com.hypixel.hytale.builtin.buildertools
Файл: com/hypixel/hytale/builtin/buildertools/BuilderToolsPacketHandler.java
implements: SubPacketHandler
Поля (279)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
Integer[] |
var1 |
|
Vector3i |
var10 |
|
int |
var10 |
|
BuilderTool.ArgData |
var10 |
|
Map |
var10 |
|
int |
var10 |
|
int |
var10 |
|
ItemStack |
var10 |
|
BuilderTool.ArgData |
var10 |
|
BuilderTool.ArgData |
var10 |
|
Map |
var10 |
|
boolean |
var10 |
|
String |
var10 |
|
InventoryComponent.Tool |
var11 |
|
int |
var11 |
|
Vector3i |
var11 |
|
int |
var11 |
|
BuilderTool.ArgData |
var11 |
|
RotateBlockMode |
var11 |
|
boolean |
var11 |
|
int |
var11 |
|
boolean |
var11 |
|
BiConsumer |
var12 |
|
PrototypePlayerBuilderToolSettings.FluidChange[] |
var12 |
|
Vector3i |
var12 |
|
int |
var12 |
|
RotateBlockMode |
var12 |
|
int |
var12 |
|
boolean |
var12 |
|
boolean |
var12 |
|
long |
var13 |
|
ArrayList |
var13 |
|
Vector3i |
var13 |
|
int |
var13 |
|
BrushShape |
var13 |
|
Rotation3f |
var13 |
|
|
var13 |
|
|
var13 |
|
long |
var14 |
|
FluidChange[] |
var14 |
|
Rotation3f |
var14 |
|
String |
var14 |
|
BrushOrigin |
var14 |
|
boolean |
var14 |
|
InventoryComponent.Tool |
var15 |
|
PrototypePlayerBuilderToolSettings |
var15 |
|
boolean |
var15 |
|
String |
var15 |
|
int |
var15 |
|
BoundingBox |
var15 |
|
PrototypePlayerBuilderToolSettings.FluidChange |
var16 |
|
long |
var16 |
|
long |
var16 |
|
long |
var16 |
|
int |
var16 |
|
boolean |
var16 |
|
PrototypePlayerBuilderToolSettings.EntityChange |
var17 |
|
int |
var17 |
|
BuilderToolSelectionToolReplyWithClipboard |
var18 |
|
boolean |
var18 |
|
boolean |
var18 |
|
long |
var18 |
|
boolean |
var18 |
|
BlockPattern |
var18 |
|
ClipboardEntityChange[] |
var19 |
|
Quaterniond |
var19 |
|
List |
var19 |
|
String |
var19 |
|
long |
var19 |
|
UUID |
var2 |
|
ModelComponent |
var2 |
|
TransformComponent |
var2 |
|
TransformComponent |
var2 |
|
int |
var2 |
|
BlockSelection |
var2 |
|
BuilderToolEntityTransformSessionEnd |
var2 |
|
List |
var20 |
|
WorldChunk |
var20 |
|
boolean |
var20 |
|
BuilderToolSelectionToolReplyWithClipboard |
var21 |
|
HashSet |
var21 |
|
int |
var21 |
|
|
var21 |
|
boolean |
var21 |
|
long |
var21 |
|
BlockSelection |
var22 |
|
int |
var22 |
|
|
var22 |
|
int |
var23 |
|
int |
var23 |
|
|
var23 |
|
int |
var24 |
|
int |
var24 |
|
int |
var25 |
|
int |
var25 |
|
int |
var25 |
|
ObjectArrayList |
var26 |
|
int |
var26 |
|
ObjectArrayList |
var27 |
|
BlockPattern |
var27 |
|
BrushShape |
var27 |
|
ArrayList |
var28 |
|
int |
var28 |
|
int |
var28 |
|
ArrayList |
var29 |
|
BlockPattern |
var29 |
|
List |
var29 |
|
PermissionsModule |
var3 |
|
Vector3d |
var3 |
|
Vector3d |
var3 |
|
BlockPattern |
var30 |
|
boolean |
var31 |
|
float |
var31 |
|
String |
var32 |
|
BlockPattern |
var33 |
|
int |
var34 |
|
int |
var35 |
|
BlockChange[] |
var36 |
|
String |
var36 |
|
PrototypePlayerBuilderToolSettings.FluidChange[] |
var37 |
|
float |
var37 |
|
PrototypePlayerBuilderToolSettings.EntityChange[] |
var38 |
|
Holder[] |
var39 |
|
float |
var39 |
|
boolean |
var4 |
|
BuilderTool |
var4 |
|
EntityFreezeSnapshot |
var4 |
|
Vector3i |
var40 |
|
|
var40 |
|
boolean |
var40 |
|
String |
var41 |
|
boolean |
var43 |
|
BuilderToolsPlugin.ShadingLight |
var46 |
|
String |
var48 |
|
int[] |
var49 |
|
boolean |
var5 |
|
PermissionsModule |
var5 |
|
Store |
var5 |
|
BlockSelection |
var5 |
|
EntityScaleComponent |
var5 |
|
|
var5 |
|
EntitySettingsSnapshot |
var5 |
|
EntitySettingsSnapshot |
var5 |
|
EntitySettingsSnapshot |
var5 |
|
ItemComponent |
var5 |
|
BlockMask |
var5 |
|
int |
var50 |
|
boolean |
var53 |
|
BuilderToolsPlugin.ShadingLight |
var54 |
|
boolean |
var56 |
|
UUID |
var6 |
|
Player |
var6 |
|
Player |
var6 |
|
int |
var6 |
|
Holder |
var6 |
|
Player |
var6 |
|
Player |
var6 |
|
Player |
var6 |
|
EditorBlocksChange |
var6 |
|
Player |
var6 |
|
Player |
var6 |
|
Player |
var6 |
|
Player |
var6 |
|
Player |
var6 |
|
Player |
var6 |
|
Player |
var6 |
|
Player |
var6 |
|
Player |
var6 |
|
Player |
var6 |
|
Player |
var6 |
|
TransformComponent |
var6 |
|
PrefabEditSessionManager |
var6 |
|
PrefabEditSessionManager |
var6 |
|
Player |
var6 |
|
Player |
var6 |
|
Player |
var6 |
|
ColorLight |
var6 |
|
Ref |
var6 |
|
Player |
var6 |
|
HitboxCollisionConfig |
var6 |
|
Player |
var6 |
|
ItemStack |
var6 |
|
Player |
var6 |
|
boolean |
var7 |
|
Ref |
var7 |
|
Ref |
var7 |
|
TransformComponent |
var7 |
|
BiConsumer |
var7 |
|
PrototypePlayerBuilderToolSettings |
var7 |
|
BlockChange[] |
var7 |
|
boolean |
var7 |
|
|
var7 |
|
BuilderTool |
var7 |
|
BuilderTool |
var7 |
|
long |
var7 |
|
Axis |
var7 |
|
RotateBlockMode |
var7 |
|
|
var7 |
|
boolean |
var7 |
|
|
var7 |
|
BuilderTool |
var7 |
|
BuilderTool |
var7 |
|
Ref |
var7 |
|
Dirty |
var7 |
|
PrefabEditSession |
var7 |
|
PrefabEditSession |
var7 |
|
Ref |
var7 |
|
Ref |
var7 |
|
Ref |
var7 |
|
DynamicLight |
var7 |
|
NPCMarkerComponent |
var7 |
|
Ref |
var7 |
|
HitboxCollision |
var7 |
|
Ref |
var7 |
|
int |
var7 |
|
Player |
var8 |
|
Player |
var8 |
|
BuilderToolsPlugin.BuilderState |
var8 |
|
BiConsumer |
var8 |
|
ArrayList |
var8 |
|
BuilderTool |
var8 |
|
ItemStack |
var8 |
|
ItemStack |
var8 |
|
RotateBlockMode |
var8 |
|
|
var8 |
|
BuilderTool |
var8 |
|
BuilderTool |
var8 |
|
ItemStack |
var8 |
|
ModelTransform |
var8 |
|
PrefabEditingMetadata |
var8 |
|
|
var8 |
|
PropComponent |
var8 |
|
PersistentDynamicLight |
var8 |
|
UUIDComponent |
var8 |
|
PropComponent |
var8 |
|
ItemStack |
var8 |
|
Player |
var9 |
|
Vector3d |
var9 |
|
int |
var9 |
|
ItemStack |
var9 |
|
BuilderTool.ArgData |
var9 |
|
BuilderTool.ArgData |
var9 |
|
int[] |
var9 |
|
BuilderTool |
var9 |
|
ItemStack |
var9 |
|
ItemStack |
var9 |
|
BuilderTool.ArgData |
var9 |
|
HeadRotation |
var9 |
|
Vector3i |
var9 |
|
UUID |
var9 |
|
NPCMarkerComponent |
var9 |
|
BlockEntity |
var9 |
Методы (130)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
return new |
Vector3ireturn new Vector3i(var1.x, var1.y, var1.z) |
static |
long |
estimateClipboardBlockslong estimateClipboardBlocks(@Nonnull Player var0, @Nonnull PlayerRef var1) |
|
|
for for(int var15 = 0; var15 < var12.length; var15++) |
|
|
for for(Integer var6 : var1) |
|
|
for for(Integer var8 : var1) |
abstract |
|
for for(int var20 = 0; var20 < var13.size() |
public |
void |
handleBuilderToolArgUpdatevoid handleBuilderToolArgUpdate(@Nonnull BuilderToolArgUpdate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolColorActionvoid handleBuilderToolColorAction(@Nonnull BuilderToolColorAction var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolEntityActionvoid handleBuilderToolEntityAction(@Nonnull BuilderToolEntityAction var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolExtrudeActionvoid handleBuilderToolExtrudeAction(@Nonnull BuilderToolExtrudeAction var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolGeneralActionvoid handleBuilderToolGeneralAction(@Nonnull BuilderToolGeneralAction var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolLineActionvoid handleBuilderToolLineAction(@Nonnull BuilderToolLineAction var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolOnUseInteractionvoid handleBuilderToolOnUseInteraction(@Nonnull BuilderToolOnUseInteraction var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolPasteClipboardvoid handleBuilderToolPasteClipboard(@Nonnull BuilderToolPasteClipboard var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolRandomizeClipboardvoid handleBuilderToolRandomizeClipboard(@Nonnull BuilderToolRandomizeClipboard var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolResetClipboardRotationvoid handleBuilderToolResetClipboardRotation(@Nonnull BuilderToolResetClipboardRotation var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolRotateClipboardvoid handleBuilderToolRotateClipboard(@Nonnull BuilderToolRotateClipboard var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolSelectionToolAskForClipboardvoid handleBuilderToolSelectionToolAskForClipboard(@Nonnull BuilderToolSelectionToolAskForClipboard var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5) |
private |
void |
handleBuilderToolSelectionTransformvoid handleBuilderToolSelectionTransform(@Nonnull BuilderToolSelectionTransform var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolSelectionUpdatevoid handleBuilderToolSelectionUpdate(@Nonnull BuilderToolSelectionUpdate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolSetEntityCollisionvoid handleBuilderToolSetEntityCollision(@Nonnull BuilderToolSetEntityCollision var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolSetEntityLightvoid handleBuilderToolSetEntityLight(@Nonnull BuilderToolSetEntityLight var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolSetEntityPickupEnabledvoid handleBuilderToolSetEntityPickupEnabled(@Nonnull BuilderToolSetEntityPickupEnabled var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolSetEntityScalevoid handleBuilderToolSetEntityScale(@Nonnull BuilderToolSetEntityScale var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolSetEntityTransformvoid handleBuilderToolSetEntityTransform(@Nonnull BuilderToolSetEntityTransform var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolSetEntityTypevoid handleBuilderToolSetEntityType(@Nonnull BuilderToolSetEntityType var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolSetNPCDebugvoid handleBuilderToolSetNPCDebug(@Nonnull BuilderToolSetNPCDebug var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolSetTransformationModeStatevoid handleBuilderToolSetTransformationModeState(@Nonnull BuilderToolSetTransformationModeState var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5) |
public |
void |
handleBuilderToolStackAreavoid handleBuilderToolStackArea(@Nonnull BuilderToolStackArea var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handleGMaskPresetLoadResponsevoid handleGMaskPresetLoadResponse(@Nonnull BuilderToolGMaskPresetLoadResponse var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5) |
public |
void |
handleLoadHotbarvoid handleLoadHotbar(@Nonnull LoadHotbar var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handlePrefabSetAnchorvoid handlePrefabSetAnchor(@Nonnull PrefabSetAnchor var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handlePrefabUnselectPrefabvoid handlePrefabUnselectPrefab(@Nonnull PrefabUnselectPrefab var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
public |
void |
handleSaveHotbarvoid handleSaveHotbar(@Nonnull SaveHotbar var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5) |
static |
boolean |
hasPermissionboolean hasPermission(@Nonnull PlayerRef var0) |
static |
boolean |
hasPermissionboolean hasPermission(@Nonnull PlayerRef var0, @Nullable PermissionQuery var1) |
abstract |
return |
hasPermissionreturn hasPermission(var0, null) |
|
|
if if(!var4 && !var5) |
|
|
if if(!var7) |
|
|
if if(var6 != null) |
|
|
if if(var6 != null) |
|
|
if if(var9 != null) |
|
|
if if(var7 != null) |
|
|
if if(var6 != null) |
|
|
if if(var7 == null) |
|
|
if if(var1.action == BuilderToolAction.SelectionPosition1) |
|
|
if if(var15 != null) |
|
|
if if(var11 != null) |
|
|
if if(var12 != null) |
|
|
if if(var6 != null) |
|
|
if if(var1.xMin == Integer.MIN_VALUE
&& var1.xMax == Integer.MIN_VALUE
&& var1.yMin == Integer.MIN_VALUE
&& var1.yMax == Integer.MIN_VALUE
&& var1.zMin == Integer.MIN_VALUE
&& var1.zMax == Integer.MIN_VALUE) |
|
|
if if(var8 != null) |
|
|
if if(var7 != null) |
|
|
if if(var6 != null) |
|
|
if if(var5 != null) |
|
|
if if(var7 != null && var7.length > 16000000) |
|
|
if if(var6 != null) |
|
|
if if(!var15 && var16 > 4000000L) |
|
|
if if(var18) |
|
|
if if(var1.cutOriginal) |
|
|
if if(var1.initialPastePointForClipboardPaste != null) |
|
|
if if(var40 != null) |
|
|
if if(!var1.isExitingTransformMode) |
|
|
if if(var18) |
|
|
if if(var1.isExitingTransformMode) |
|
|
if if(var6 != null) |
|
|
if if(var9 != null) |
|
|
if if(var10 != null) |
|
|
if if(var20 != null) |
|
|
if if(var24 != 0) |
|
|
if if(var6 != null) |
|
|
if if(var0 == null) |
|
|
if if(var6 != null && var6 > 0) |
|
|
if if(var2 == 0) |
|
|
if if(var8 != null && var8 > 0) |
|
|
if if(var6 != null) |
|
|
if if(var6 != null) |
|
|
if if(var6 != null) |
|
|
if if(var6 != null) |
|
|
if if(var6 != null) |
|
|
if if(var6 != null) |
|
|
if if(var9 != null) |
|
|
if if(var10 != null) |
|
|
if if(var6 != null) |
|
|
if if(var1.isSessionEnd) |
|
|
if if(var6 == null) |
|
|
if if(var1.isSessionEnd) |
|
|
if if(var1.isSessionEnd) |
|
|
if if(var6 == null) |
|
|
if if(var1.isSessionEnd) |
|
|
if if(var8 != null) |
|
|
if if(var8 != null) |
|
|
if if(var10) |
|
|
if if(var11 && var9 != null) |
|
|
if if(var12) |
|
|
if if(var1.isSessionEnd) |
|
|
if if(var14) |
|
|
if if(var15 != null) |
|
|
if if(var16 && var9 != null) |
|
|
if if(var7 == null) |
|
|
if if(var7 == null) |
|
|
if if(var12) |
|
|
if if(var8 == null) |
|
|
if if(var6 != null) |
|
|
if if(var5 == null) |
|
|
if if(var6 != null) |
|
|
if if(var8 != null) |
|
|
if if(var6 != null) |
|
|
if if(var1.light == null) |
|
|
if if(var7 != null) |
|
|
if if(var8 != null) |
|
|
if if(var7 != null) |
|
|
if if(var8 != null) |
|
|
if if(var6 != null) |
|
|
if if(var8 != null || var9 != null) |
|
|
if if(var6 != null) |
|
|
if if(var7 != null) |
|
|
if if(var6 != null) |
|
|
if if(var5 == null) |
|
|
if if(var9 != null) |
|
|
if if(var6 != null) |
static |
boolean |
isAuthorizedForToolboolean isAuthorizedForTool(@Nonnull PlayerRef var0, @Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull String var3) |
static |
void |
resetToIdleAnimationvoid resetToIdleAnimation(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1) |
abstract |
|
resetToIdleAnimation resetToIdleAnimation(var7, var3x) |
static |
void |
sendSessionEndvoid sendSessionEnd(@Nonnull PlayerRef var0, @Nonnull BuilderToolSetEntityTransform var1) |
abstract |
|
sendSessionEnd sendSessionEnd(var2, var1) |
|
|
switch switch(var1.action) |
|
|
switch switch(var1.action) |
|
|
switch switch(var1.mode) |
|
|
switch switch(var1.mode) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.buildertools;
class="kw">import com.hypixel.hytale.builtin.buildertools.commands.CopyCommand;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.PrefabEditSession;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.PrefabEditSessionManager;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.PrefabEditingMetadata;
class="kw">import com.hypixel.hytale.builtin.buildertools.snapshot.BlockSelectionSnapshot;
class="kw">import com.hypixel.hytale.builtin.buildertools.snapshot.EntityFreezeSnapshot;
class="kw">import com.hypixel.hytale.builtin.buildertools.snapshot.EntitySettingsSnapshot;
class="kw">import com.hypixel.hytale.builtin.buildertools.snapshot.SelectionSnapshot;
class="kw">import com.hypixel.hytale.builtin.buildertools.tooloperations.ToolOperation;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Holder;
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.Axis;
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.Rotation3f;
class="kw">import com.hypixel.hytale.math.vector.Vector3iUtil;
class="kw">import com.hypixel.hytale.protocol.AnimationSlot;
class="kw">import com.hypixel.hytale.protocol.BlockPosition;
class="kw">import com.hypixel.hytale.protocol.ColorLight;
class="kw">import com.hypixel.hytale.protocol.GameMode;
class="kw">import com.hypixel.hytale.protocol.ModelTransform;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BrushOrigin;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BrushShape;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolAction;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolArgUpdate;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolColorAction;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolEntityAction;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolEntityTransformSessionEnd;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolExtrudeAction;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolGMaskPresetLoadResponse;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolGeneralAction;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolLineAction;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolOnUseInteraction;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolPasteClipboard;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolRandomizeClipboard;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolResetClipboardRotation;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolRotateClipboard;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSelectionToolAskForClipboard;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSelectionToolReplyWithClipboard;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSelectionTransform;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSelectionUpdate;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSetEntityCollision;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSetEntityLight;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSetEntityPickupEnabled;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSetEntityScale;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSetEntityTransform;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSetEntityType;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSetNPCDebug;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolSetTransformationModeState;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolStackArea;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.ClipboardEntityChange;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.PrefabSetAnchor;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.PrefabUnselectPrefab;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.BlockChange;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.EditorBlocksChange;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.FluidChange;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.NotificationStyle;
class="kw">import com.hypixel.hytale.protocol.packets.player.LoadHotbar;
class="kw">import com.hypixel.hytale.protocol.packets.player.SaveHotbar;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.asset.type.buildertool.config.BuilderTool;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.Item;
class="kw">import com.hypixel.hytale.server.core.command.commands.world.entity.EntityRemoveCommand;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandManager;
class="kw">import com.hypixel.hytale.server.core.entity.AnimationUtils;
class="kw">import com.hypixel.hytale.server.core.entity.Dirty;
class="kw">import com.hypixel.hytale.server.core.entity.Frozen;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.entity.entities.BlockEntity;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.inventory.InventoryComponent;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.io.handlers.IPacketHandler;
class="kw">import com.hypixel.hytale.server.core.io.handlers.IWorldPacketHandler;
class="kw">import com.hypixel.hytale.server.core.io.handlers.SubPacketHandler;
class="kw">import com.hypixel.hytale.server.core.modules.entity.DespawnComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.BoundingBox;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.DynamicLight;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.EntityScaleComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.HeadRotation;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.NPCMarkerComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PersistentDynamicLight;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PropComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.hitboxcollision.HitboxCollision;
class="kw">import com.hypixel.hytale.server.core.modules.entity.hitboxcollision.HitboxCollisionConfig;
class="kw">import com.hypixel.hytale.server.core.modules.entity.item.ItemComponent;
class="kw">import com.hypixel.hytale.server.core.permissions.HytalePermissions;
class="kw">import com.hypixel.hytale.server.core.permissions.PermissionQuery;
class="kw">import com.hypixel.hytale.server.core.permissions.PermissionsModule;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.mask.BlockMask;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.mask.BlockPattern;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.standard.BlockSelection;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.standard.RotateBlockMode;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.core.util.FillerBlockUtil;
class="kw">import com.hypixel.hytale.server.core.util.NotificationUtil;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.ArrayList;
class="kw">import java.util.HashSet;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.UUID;
class="kw">import java.util.function.BiConsumer;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Quaterniond;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3i;
class="kw">public class BuilderToolsPacketHandler class="kw">implements SubPacketHandler {
@Nonnull
class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
@Nonnull
class="kw">private class="kw">static class="kw">final String BUILDER_TOOL_ID_EXTRUDE = "Extrude";
@Nonnull
class="kw">private class="kw">static class="kw">final String BUILDER_TOOL_ID_COLOR = "Color";
@Nonnull
class="kw">private class="kw">static class="kw">final String BUILDER_TOOL_ID_SELECTION = "Selection";
@Nonnull
class="kw">private class="kw">static class="kw">final String BUILDER_TOOL_ID_LINE = "Line";
@Nonnull
class="kw">private class="kw">static class="kw">final String BUILDER_TOOL_ID_ENTITY = "Entity";
@Nonnull
class="kw">private class="kw">static class="kw">final String BUILDER_TOOL_ID_LASER_POINTER = "LaserPointer";
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_BUILDER_TOOLS_USAGE_DENIED = Message.translation("server.builderTools.usageDenied");
@Nonnull
class="kw">private class="kw">final IPacketHandler packetHandler;
class="kw">public BuilderToolsPacketHandler(@Nonnull IPacketHandler var1) {
this.packetHandler = var1;
}
class="kw">private class="kw">static boolean hasPermission(@Nonnull PlayerRef var0) {
class="kw">return hasPermission(var0, null);
}
class="kw">private class="kw">static boolean hasPermission(@Nonnull PlayerRef var0, @Nullable PermissionQuery var1) {
UUID var2 = var0.getUuid();
PermissionsModule var3 = PermissionsModule.get();
boolean var4 = var3.hasPermission(var2, HytalePermissions.BUILDER_TOOLS_EDITOR);
boolean var5 = var1 != null && var3.hasPermission(var2, var1);
if (!var4 && !var5) {
var0.sendMessage(MESSAGE_BUILDER_TOOLS_USAGE_DENIED);
class="kw">return false;
} else {
class="kw">return true;
}
}
class="kw">private class="kw">static boolean isAuthorizedForTool(@Nonnull PlayerRef var0, @Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull String var3) {
BuilderTool var4 = BuilderTool.getActiveBuilderTool(var1, var2);
if (var4 != null && var3.equals(var4.getId())) {
PermissionsModule var5 = PermissionsModule.get();
UUID var6 = var0.getUuid();
boolean var7 = var5.hasPermission(var6, HytalePermissions.BUILDER_TOOLS_EDITOR)
|| var5.hasPermission(var6, HytalePermissions.toolPermission(var4.getId()));
if (!var7) {
var0.sendMessage(MESSAGE_BUILDER_TOOLS_USAGE_DENIED);
class="kw">return false;
}
if (!var4.isSurvivalAllowed()) {
Player var8 = var2.getComponent(var1, Player.getComponentType());
if (var8 == null || var8.getGameMode() != GameMode.Creative) {
class="kw">return false;
}
}
class="kw">return true;
} else {
class="kw">return false;
}
}
@Override
class="kw">public void registerHandlers() {
if (BuilderToolsPlugin.get().isDisabled()) {
this.packetHandler.registerNoOpHandlers(400, 401, 412, 409, 403, 406, 427, 428, 407, 413, 414, 433, 417, 426);
} else {
IWorldPacketHandler.registerHandler(this.packetHandler, 106, this::handleLoadHotbar, BuilderToolsPacketHandler::hasPermission);
IWorldPacketHandler.registerHandler(this.packetHandler, 107, this::handleSaveHotbar, BuilderToolsPacketHandler::hasPermission);
IWorldPacketHandler.registerHandler(this.packetHandler, 401, this::handleBuilderToolEntityAction);
IWorldPacketHandler.registerHandler(this.packetHandler, 402, this::handleBuilderToolSetEntityTransform);
IWorldPacketHandler.registerHandler(this.packetHandler, 420, this::handleBuilderToolSetEntityScale);
IWorldPacketHandler.registerHandler(
this.packetHandler, 408, this::handleBuilderToolSetTransformationModeState, BuilderToolsPacketHandler::hasPermission
);
IWorldPacketHandler.registerHandler(this.packetHandler, 417, this::handlePrefabUnselectPrefab, BuilderToolsPacketHandler::hasPermission);
IWorldPacketHandler.registerHandler(this.packetHandler, 426, this::handlePrefabSetAnchor, BuilderToolsPacketHandler::hasPermission);
IWorldPacketHandler.registerHandler(this.packetHandler, 421, this::handleBuilderToolSetEntityPickupEnabled);
IWorldPacketHandler.registerHandler(this.packetHandler, 422, this::handleBuilderToolSetEntityLight);
IWorldPacketHandler.registerHandler(this.packetHandler, 423, this::handleBuilderToolSetNPCDebug);
IWorldPacketHandler.registerHandler(this.packetHandler, 425, this::handleBuilderToolSetEntityCollision);
IWorldPacketHandler.registerHandler(this.packetHandler, 424, this::handleBuilderToolSetEntityType);
IWorldPacketHandler.registerHandler(
this.packetHandler, 400, this::handleBuilderToolArgUpdate, var0 -> hasPermission(var0, HytalePermissions.EDITOR_BRUSH_CONFIG)
);
IWorldPacketHandler.registerHandler(
this.packetHandler, 409, this::handleBuilderToolSelectionUpdate, var0 -> hasPermission(var0, HytalePermissions.EDITOR_SELECTION_USE)
);
IWorldPacketHandler.registerHandler(
this.packetHandler, 403, this::handleBuilderToolExtrudeAction, var0 -> hasPermission(var0, HytalePermissions.EDITOR_SELECTION_MODIFY)
);
IWorldPacketHandler.registerHandler(
this.packetHandler, 406, this::handleBuilderToolRotateClipboard, var0 -> hasPermission(var0, HytalePermissions.EDITOR_SELECTION_CLIPBOARD)
);
IWorldPacketHandler.registerHandler(
this.packetHandler, 427, this::handleBuilderToolResetClipboardRotation, var0 -> hasPermission(var0, HytalePermissions.EDITOR_SELECTION_CLIPBOARD)
);
IWorldPacketHandler.registerHandler(
this.packetHandler, 428, this::handleBuilderToolRandomizeClipboard, var0 -> hasPermission(var0, HytalePermissions.EDITOR_SELECTION_CLIPBOARD)
);
IWorldPacketHandler.registerHandler(
this.packetHandler, 407, this::handleBuilderToolPasteClipboard, var0 -> hasPermission(var0, HytalePermissions.EDITOR_SELECTION_CLIPBOARD)
);
IWorldPacketHandler.registerHandler(this.packetHandler, 413, this::handleBuilderToolOnUseInteraction);
IWorldPacketHandler.registerHandler(
this.packetHandler,
410,
this::handleBuilderToolSelectionToolAskForClipboard,
var0 -> hasPermission(var0, HytalePermissions.EDITOR_SELECTION_CLIPBOARD)
);
IWorldPacketHandler.registerHandler(
this.packetHandler, 414, this::handleBuilderToolLineAction, var0 -> hasPermission(var0, HytalePermissions.EDITOR_BRUSH_USE)
);
IWorldPacketHandler.registerHandler(
this.packetHandler, 405, this::handleBuilderToolSelectionTransform, var0 -> hasPermission(var0, HytalePermissions.EDITOR_SELECTION_CLIPBOARD)
);
IWorldPacketHandler.registerHandler(
this.packetHandler, 404, this::handleBuilderToolStackArea, var0 -> hasPermission(var0, HytalePermissions.EDITOR_SELECTION_CLIPBOARD)
);
IWorldPacketHandler.registerHandler(
this.packetHandler, 433, this::handleBuilderToolColorAction, var0 -> hasPermission(var0, HytalePermissions.EDITOR_BRUSH_USE)
);
IWorldPacketHandler.registerHandler(this.packetHandler, 412, this::handleBuilderToolGeneralAction);
IWorldPacketHandler.registerHandler(this.packetHandler, 431, this::handleGMaskPresetLoadResponse, BuilderToolsPacketHandler::hasPermission);
}
}
class="kw">public void handleBuilderToolSetTransformationModeState(
@Nonnull BuilderToolSetTransformationModeState var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5
) {
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
ToolOperation.getOrCreatePrototypeSettings(var2.getUuid()).setInSelectionTransformationMode(var1.enabled);
}
class="kw">public void handleBuilderToolArgUpdate(
@Nonnull BuilderToolArgUpdate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
BuilderToolsPlugin.get().onToolArgUpdate(var3, var2, var1, var5);
}
class="kw">public void handleLoadHotbar(
@Nonnull LoadHotbar var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
var6.getHotbarManager().loadHotbar(var3, var1.inventoryRow, var5);
}
}
class="kw">public void handleSaveHotbar(
@Nonnull SaveHotbar var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
var6.getHotbarManager().saveHotbar(var3, var1.inventoryRow, var5);
}
}
class="kw">public void handleBuilderToolEntityAction(
@Nonnull BuilderToolEntityAction var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
if (isAuthorizedForTool(var2, var3, var5, "Entity")) {
int var6 = var1.entityId;
Ref var7 = var4.getEntityStore().getRefFromNetworkId(var6);
Player var8 = var5.getComponent(var3, Player.getComponentType());
if (var7 == null || !var7.isValid()) {
var2.sendMessage(Message.translation("server.general.entityNotFound").param("id", var6));
} else if (var8 != null) {
Player var9 = var5.getComponent(var7, Player.getComponentType());
if (var9 != null) {
var2.sendMessage(Message.translation("server.builderTools.entityTool.cannotTargetPlayer"));
} else {
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
class="kw">switch (var1.action) {
case Freeze:
BuilderToolsPlugin.addToQueue(var8, var2, (var1x, var2x, var3x) -> {
EntityFreezeSnapshot var4 = new EntityFreezeSnapshot(var7, var3x);
if (var3x.getArchetype(var7).contains(Frozen.getComponentType())) {
var3x.tryRemoveComponent(var7, Frozen.getComponentType());
AnimationUtils.stopAnimation(var7, AnimationSlot.Movement, var3x);
} else {
var3x.addComponent(var7, Frozen.getComponentType(), Frozen.get());
var3x.tryRemoveComponent(var7, DespawnComponent.getComponentType());
resetToIdleAnimation(var7, var3x);
}
var2x.pushEntityFreezeHistory(var4);
});
break;
case Clone:
BuilderToolsPlugin.addToQueue(var8, var2, (var2x, var3x, var4x) -> {
Store var5 = var4.getEntityStore().getStore();
Holder var6 = var5.copyEntity(var7);
if (var6.getComponent(UUIDComponent.getComponentType()) != null) {
var6.replaceComponent(UUIDComponent.getComponentType(), new UUIDComponent(UUID.randomUUID()));
}
var6.tryRemoveComponent(DespawnComponent.getComponentType());
Ref var7 = var5.addEntity(var6, AddReason.SPAWN);
if (var7 != null) {
var3x.pushEntityCloneHistory(var7);
}
});
break;
case Remove:
BuilderToolsPlugin.addToQueue(var8, var2, (var2x, var3x, var4x) -> {
if (var7.isValid()) {
var3x.pushEntityRemoveHistory(var7, var4x);
EntityRemoveCommand.removeEntity(var3, var7, var4x);
}
});
}
}
}
}
}
class="kw">private class="kw">static void resetToIdleAnimation(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1) {
ModelComponent var2 = var1.getComponent(var0, ModelComponent.getComponentType());
if (var2 != null && var2.getModel() != null) {
if (var2.getModel().getAnimationSetMap().containsKey("Idle")) {
AnimationUtils.playAnimation(var0, AnimationSlot.Movement, "Idle", var1);
AnimationUtils.stopAnimation(var0, AnimationSlot.Status, var1);
AnimationUtils.stopAnimation(var0, AnimationSlot.Action, var1);
}
}
}
class="kw">public void handleBuilderToolGeneralAction(
@Nonnull BuilderToolGeneralAction var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
class="kw">switch (var1.action) {
case HistoryUndo:
if (!hasPermission(var2, HytalePermissions.EDITOR_HISTORY)) {
class="kw">return;
}
long var14 = BuilderToolsPlugin.getState(var6, var2).peekUndoWeight();
BuilderToolsPlugin.addToQueue(var6, var2, var14, (var0, var1x, var2x) -> var1x.undo(var0, 1, var2x));
break;
case HistoryRedo:
if (!hasPermission(var2, HytalePermissions.EDITOR_HISTORY)) {
class="kw">return;
}
long var13 = BuilderToolsPlugin.getState(var6, var2).peekRedoWeight();
BuilderToolsPlugin.addToQueue(var6, var2, var13, (var0, var1x, var2x) -> var1x.redo(var0, 1, var2x));
break;
case SelectionCopy:
if (!hasPermission(var2, HytalePermissions.EDITOR_SELECTION_CLIPBOARD)) {
class="kw">return;
}
CopyCommand.copySelection(var3, var5);
break;
case SelectionPosition1:
case SelectionPosition2:
if (!hasPermission(var2, HytalePermissions.EDITOR_SELECTION_USE)) {
class="kw">return;
}
TransformComponent var7 = var5.getComponent(var3, TransformComponent.getComponentType());
if (var7 == null) {
class="kw">return;
}
BuilderToolsPlugin.BuilderState var8 = BuilderToolsPlugin.getState(var6, var2);
Vector3d var9 = var7.getPosition();
Vector3i var10 = new Vector3i(MathUtil.floor(var9.x()), MathUtil.floor(var9.y()), MathUtil.floor(var9.z()));
BuilderToolsPlugin.addToQueue(var6, var2, (var3x, var4x, var5x) -> {
if (var1.action == BuilderToolAction.SelectionPosition1) {
var8.pos1(var10, var5x);
} else {
var8.pos2(var10, var5x);
}
});
break;
case ActivateToolMode:
if (!hasPermission(var2, HytalePermissions.BUILDER_TOOLS_EDITOR)) {
class="kw">return;
}
InventoryComponent.Tool var15 = var5.getComponent(var3, InventoryComponent.Tool.getComponentType());
if (var15 != null) {
var15.setUsingToolsItem(true);
}
break;
case DeactivateToolMode:
if (!hasPermission(var2, HytalePermissions.BUILDER_TOOLS_EDITOR)) {
class="kw">return;
}
InventoryComponent.Tool var11 = var5.getComponent(var3, InventoryComponent.Tool.getComponentType());
if (var11 != null) {
var11.setUsingToolsItem(false);
}
BiConsumer var12 = BuilderToolsPlugin.get().getBuilderToolModeDeactivatedCallback();
if (var12 != null) {
var12.accept(var2, var5);
}
}
}
}
class="kw">public void handleBuilderToolSelectionUpdate(
@Nonnull BuilderToolSelectionUpdate var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
if (var1.xMin == Integer.MIN_VALUE
&& var1.xMax == Integer.MIN_VALUE
&& var1.yMin == Integer.MIN_VALUE
&& var1.yMax == Integer.MIN_VALUE
&& var1.zMin == Integer.MIN_VALUE
&& var1.zMax == Integer.MIN_VALUE) {
BiConsumer var8 = BuilderToolsPlugin.get().getSelectionClearedCallback();
if (var8 != null) {
var8.accept(var2, var5);
}
} else {
BiConsumer var7 = BuilderToolsPlugin.get().getSelectionBoundsUpdatedCallback();
if (var7 != null) {
var7.accept(var2, var5);
}
BuilderToolsPlugin.addToQueue(var6, var2, (var1x, var2x, var3x) -> var2x.update(var1.xMin, var1.yMin, var1.zMin, var1.xMax, var1.yMax, var1.zMax));
}
}
}
class="kw">public void handleBuilderToolSelectionToolAskForClipboard(
@Nonnull BuilderToolSelectionToolAskForClipboard var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5
) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
PrototypePlayerBuilderToolSettings var7 = ToolOperation.getOrCreatePrototypeSettings(var2.getUuid());
BuilderToolsPlugin.addToQueue(
var6,
var2,
(var2x, var3x, var4x) -> {
BlockSelection var5 = var3x.getSelection();
if (var5 != null) {
if (var5.getBlockCount() > 4000000) {
var7.setBlockChangesForPlaySelectionToolPasteMode(null);
var7.setFluidChangesForPlaySelectionToolPasteMode(null);
var7.setEntityChangesForPlaySelectionToolPasteMode(null);
BuilderToolSelectionToolReplyWithClipboard var18 = new BuilderToolSelectionToolReplyWithClipboard();
var18.blocksOmitted = true;
var18.bounds = var5.toEditorSelectionBounds();
var2.getPacketHandler().write(var18);
class="kw">return;
}
EditorBlocksChange var6 = var5.toPacket();
BlockChange[] var7 = var6.blocksChange;
var7.setBlockChangesForPlaySelectionToolPasteMode(var7);
ArrayList var8 = new ArrayList<>();
int var9 = var5.getAnchorX();
int var10 = var5.getAnchorY();
int var11 = var5.getAnchorZ();
var5.forEachFluid(
(var4xx, var5x, var6x, var7x, var8x) -> var8.add(
new PrototypePlayerBuilderToolSettings.FluidChange(var4xx - var9, var5x - var10, var6x - var11, var7x, var8x)
)
);
PrototypePlayerBuilderToolSettings.FluidChange[] var12 = var8.toArray(PrototypePlayerBuilderToolSettings.FluidChange[]::new);
var7.setFluidChangesForPlaySelectionToolPasteMode(var12);
ArrayList var13 = new ArrayList<>();
var5.forEachEntity(var1x -> {
TransformComponent var2 = var1x.getComponent(TransformComponent.getComponentType());
if (var2 != null && var2.getPosition() != null) {
Vector3d var3 = var2.getPosition();
var13.add(new PrototypePlayerBuilderToolSettings.EntityChange(var3.x(), var3.y(), var3.z(), var1x.clone()));
}
});
var7.setEntityChangesForPlaySelectionToolPasteMode(var13.toArray(PrototypePlayerBuilderToolSettings.EntityChange[]::new));
FluidChange[] var14 = new FluidChange[var12.length];
for (int var15 = 0; var15 < var12.length; var15++) {
PrototypePlayerBuilderToolSettings.FluidChange var16 = var12[var15];
var14[var15] = new FluidChange(var16.x(), var16.y(), var16.z(), var16.fluidId(), var16.fluidLevel());
}
ClipboardEntityChange[] var19 = new ClipboardEntityChange[var13.size()];
for (int var20 = 0; var20 < var13.size(); var20++) {
PrototypePlayerBuilderToolSettings.EntityChange var17 = var13.get(var20);
var19[var20] = BlockSelection.toClipboardEntityChange(var17.entityHolder(), var9, var10, var11);
}
if (var7 != null && var7.length > 16000000) {
NotificationUtil.sendNotification(
var2.getPacketHandler(),
Message.translation("server.builderTools.copycut.tooLarge"),
Message.translation("server.builderTools.copycut.tooLarge.detail").param("overCount", var7.length - 16000000),
NotificationStyle.Warning
);
class="kw">return;
}
BuilderToolSelectionToolReplyWithClipboard var21 = new BuilderToolSelectionToolReplyWithClipboard();
var21.blocksChange = var7;
var21.fluidsChange = var14;
var21.entityChanges = var19;
var2.getPacketHandler().write(var21);
}
}
);
}
}
class="kw">private void handleBuilderToolSelectionTransform(
@Nonnull BuilderToolSelectionTransform var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5
) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
boolean var7 = true;
BuilderTool var8 = BuilderTool.getActiveBuilderTool(var3, var5);
if (var8 != null && var8.getId().equals("Selection")) {
ItemStack var9 = InventoryComponent.getItemInHand(var5, var3);
BuilderTool.ArgData var10 = var8.getItemArgData(var9);
if (var10 != null && var10.tool() != null) {
var7 = (Boolean)var10.tool().getOrDefault("KeepEmptyBlocks", true);
}
}
boolean var18 = var7;
Quaterniond var19 = new Quaterniond(var1.rotation);
Vector3i var11 = new Vector3i(var1.translationOffset.x, var1.translationOffset.y, var1.translationOffset.z);
Vector3i var12 = new Vector3i(var1.initialSelectionMin.x, var1.initialSelectionMin.y, var1.initialSelectionMin.z);
Vector3i var13 = new Vector3i(var1.initialSelectionMax.x, var1.initialSelectionMax.y, var1.initialSelectionMax.z);
Rotation3f var14 = new Rotation3f(var1.initialRotationOrigin.x(), var1.initialRotationOrigin.y(), var1.initialRotationOrigin.z());
PrototypePlayerBuilderToolSettings var15 = ToolOperation.getOrCreatePrototypeSettings(var2.getUuid());
long var16 = Vector3iUtil.inclusiveBoxVolume(
var1.initialSelectionMin.x,
var1.initialSelectionMin.y,
var1.initialSelectionMin.z,
var1.initialSelectionMax.x,
var1.initialSelectionMax.y,
var1.initialSelectionMax.z
);
BuilderToolsPlugin.addToQueue(
var6,
var2,
var16,
(var12x, var13x, var14x) -> {
if (var13x.getSelection() != null) {
boolean var15 = var15.getBlockChangesForPlaySelectionToolPasteMode() != null;
if (!var15 && var16 > 4000000L) {
NotificationUtil.sendNotification(
var2.getPacketHandler(),
Message.translation("server.builderTools.selection.transformTooLarge"),
Message.translation("server.builderTools.selection.transformTooLarge.detail"),
NotificationStyle.Warning
);
} else {
long var16 = var13x.getSelection().getSelectionVolume();
boolean var18 = var16 > 20000L;
if (var18) {
var2.sendMessage(Message.translation("server.builderTools.selection.large.warning"));
}
List var19 = new ObjectArrayList();
try {
if (var15.getBlockChangesForPlaySelectionToolPasteMode() == null) {
var13x.syncSelection(var12, var13, var14x);
List var20 = var15.getLastTransformEntityRefs();
HashSet var21 = var20 != null ? new HashSet<>(var20) : null;
if (var1.cutOriginal) {
var13x.copyOrCut(var12x, var12.x, var12.y, var12.z, var13.x, var13.y, var13.z, 154, null, var21, var19, var5);
} else {
var13x.copyOrCut(var12x, var12.x, var12.y, var12.z, var13.x, var13.y, var13.z, 152, null, null, var19, var5);
}
BlockSelection var22 = var13x.getSelection();
int var23 = var22.getAnchorX();
int var24 = var22.getAnchorY();
int var25 = var22.getAnchorZ();
ObjectArrayList var26 = new ObjectArrayList();
ObjectArrayList var27 = new ObjectArrayList();
var22.forEachBlock((var5x, var6x, var7x, var8x) -> {
if (var8x.filler() == 0) {
var26.add(new BlockChange(var5x - var23, var6x - var24, var7x - var25, var8x.blockId(), (byte)var8x.rotation()));
var27.add(var8x.holder() != null ? var8x.holder().clone() : null);
}
});
var15.setBlockChangesForPlaySelectionToolPasteMode((BlockChange[])var26.toArray(BlockChange[]::new));
var15.setBlockHoldersForPasteMode((Holder<ChunkStore>[])var27.toArray(new Holder[0]));
ArrayList var28 = new ArrayList<>();
var22.forEachFluid(
(var4x, var5x, var6x, var7x, var8x) -> var28.add(
new PrototypePlayerBuilderToolSettings.FluidChange(var4x - var23, var5x - var24, var6x - var25, var7x, var8x)
)
);
var15.setFluidChangesForPlaySelectionToolPasteMode(var28.toArray(PrototypePlayerBuilderToolSettings.FluidChange[]::new));
ArrayList var29 = new ArrayList<>();
var22.forEachEntity(var1x -> {
TransformComponent var2 = var1x.getComponent(TransformComponent.getComponentType());
if (var2 != null && var2.getPosition() != null) {
Vector3d var3 = var2.getPosition();
var29.add(new PrototypePlayerBuilderToolSettings.EntityChange(var3.x(), var3.y(), var3.z(), var1x.clone()));
}
});
var15.setEntityChangesForPlaySelectionToolPasteMode(var29.toArray(PrototypePlayerBuilderToolSettings.EntityChange[]::new));
var15.setBlockChangeOffsetOrigin(new Vector3i(var22.getX(), var22.getY(), var22.getZ()));
}
BlockChange[] var36 = var15.getBlockChangesForPlaySelectionToolPasteMode();
PrototypePlayerBuilderToolSettings.FluidChange[] var37 = var15.getFluidChangesForPlaySelectionToolPasteMode();
PrototypePlayerBuilderToolSettings.EntityChange[] var38 = var15.getEntityChangesForPlaySelectionToolPasteMode();
Holder[] var39 = var15.getBlockHoldersForPasteMode();
Vector3i var40 = var15.getBlockChangeOffsetOrigin();
if (var1.initialPastePointForClipboardPaste != null) {
var40 = new Vector3i(
var1.initialPastePointForClipboardPaste.x, var1.initialPastePointForClipboardPaste.y, var1.initialPastePointForClipboardPaste.z
);
}
if (var40 != null) {
var15.setLastTransformEntityRefs(null);
var13x.transformThenPasteClipboard(var36, var37, var38, var39, var19, var11, var14, var40, var18, var15, var19, var14x);
var13x.syncSelection(var12, var13, var14x);
var13x.transformSelectionPoints(var19, var11, var14);
if (!var1.isExitingTransformMode) {
var15.setBlockChangeOffsetOrigin(new Vector3i(var40.x + var11.x, var40.y + var11.y, var40.z + var11.z));
}
if (var18) {
var2.sendMessage(Message.translation("server.builderTools.selection.large.complete"));
}
class="kw">return;
}
var2.sendMessage(Message.translation("server.builderTools.selection.noBlockChangeOffsetOrigin"));
} catch (Exception var34) {
((HytaleLogger.Api)LOGGER.at(Level.WARNING).withCause(var34)).log("Error during selection transform");
class="kw">return;
} class="kw">finally {
if (!var19.isEmpty()) {
boolean var31 = var19.stream().anyMatch(BlockSelectionSnapshot.class::isInstance);
var13x.pushHistory(var31 ? BuilderToolsPlugin.Action.CUT_REMOVE : BuilderToolsPlugin.Action.COPY, var19);
}
if (var1.isExitingTransformMode) {
var15.setInSelectionTransformationMode(false);
var15.setLastTransformEntityRefs(null);
}
}
}
}
}
);
}
}
class="kw">public void handleBuilderToolExtrudeAction(
@Nonnull BuilderToolExtrudeAction var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
BuilderTool var7 = BuilderTool.getActiveBuilderTool(var3, var5);
if (var7 != null && var7.getId().equals("Extrude")) {
ItemStack var8 = InventoryComponent.getItemInHand(var5, var3);
BuilderTool.ArgData var9 = var7.getItemArgData(var8);
if (var9 != null) {
Map var10 = var9.tool();
if (var10 != null) {
int var11 = (Integer)var9.tool().get("ExtrudeDepth");
int var12 = (Integer)var9.tool().get("ExtrudeWidth");
int var13 = (Integer)var9.tool().get("ExtrudeLength");
String var14 = (String)var9.tool().get("ExtrudeFilter");
String var15 = (String)var9.tool().get("ExtrudeStrategy");
long var16 = (long)Math.max(1, var11) * Math.max(1, var12) * Math.max(1, var13);
long var18 = ChunkUtil.indexChunkFromBlock(var1.x, var1.z);
WorldChunk var20 = var4.getChunk(var18);
int var21 = 0;
int var22 = 0;
int var23 = 0;
if (var20 != null) {
int var24 = var20.getFiller(var1.x, var1.y, var1.z);
if (var24 != 0) {
var21 = FillerBlockUtil.unpackX(var24);
var22 = FillerBlockUtil.unpackY(var24);
var23 = FillerBlockUtil.unpackZ(var24);
}
}
int var28 = var21 != 0 ? (var1.x -= var21) : var1.x;
int var25 = var22 != 0 ? (var1.y -= var22) : var1.y;
int var26 = var23 != 0 ? (var1.z -= var23) : var1.z;
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
class="kw">switch (var1.mode) {
case Extrude:
BlockPattern var29 = (BlockPattern)var9.tool().get("ExtrudeMaterial");
BuilderToolsPlugin.addToQueue(
var6,
var2,
var16,
(var10x, var11x, var12x) -> var11x.extendOrShrinkFace(
var28,
var25,
var26,
var1.xNormal,
var1.yNormal,
var1.zNormal,
var11,
var12,
var13,
false,
var29,
var14,
var15,
var1.undoGroupSize,
var1.isHoldDownInteraction,
var12x
)
);
break;
case Shrink:
BuilderToolsPlugin.addToQueue(
var6,
var2,
var16,
(var9x, var10x, var11x) -> var10x.extendOrShrinkFace(
var28,
var25,
var26,
var1.xNormal,
var1.yNormal,
var1.zNormal,
var11,
var12,
var13,
true,
BlockPattern.EMPTY,
var14,
var15,
var1.undoGroupSize,
var1.isHoldDownInteraction,
var11x
)
);
break;
case Fill:
BlockPattern var27 = (BlockPattern)var9.tool().get("FillMaterial");
BuilderToolsPlugin.addToQueue(
var6,
var2,
var16,
(var8x, var9x, var10x) -> var9x.fillVolume(
var28,
var25,
var26,
var1.xNormal,
var1.yNormal,
var1.zNormal,
var11,
var12,
var13,
var27,
var1.undoGroupSize,
var1.isHoldDownInteraction,
var10x
)
);
}
}
}
}
}
}
class="kw">public void handleBuilderToolColorAction(
@Nonnull BuilderToolColorAction var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
BuilderTool var7 = BuilderTool.getActiveBuilderTool(var3, var5);
if (var7 != null && var7.getId().equals("Color")) {
ItemStack var8 = InventoryComponent.getItemInHand(var5, var3);
BuilderTool.ArgData var9 = var7.getItemArgData(var8);
if (var9 != null && var9.tool() != null) {
int var10 = var9.tool().get("ColorWidth") class="kw">instanceof Integer var11 ? var11 : 5;
int var25;
int var50 = var25 = var9.tool().get("ColorHeight") class="kw">instanceof Integer var26 ? var26 : 5;
BrushShape var27 = parseBrushShape((String)var9.tool().getOrDefault("BrushShape", "Sphere"));
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
class="kw">switch (var1.mode) {
case Coloring:
BlockPattern var30 = (BlockPattern)var9.tool().get("ColorMaterial");
BlockPattern var33 = var30 != null ? var30 : BlockPattern.parse("Rock_Stone");
String var36 = (String)var9.tool().getOrDefault("ColoringSubMode", "SmartMatch");
boolean var40 = "SmartMatch".equals(var36);
BuilderToolsPlugin.addToQueue(
var6,
var2,
(var6x, var7x, var8x) -> var7x.applyRecoloring(
var1.x,
var1.y,
var1.z,
var10,
var25,
var33,
var40,
var27,
var1.undoGroupSize,
var1.isHoldDownInteraction,
BuilderToolsPlugin.get().getBlockColorIndex(),
var8x
)
);
break;
case Gradient:
List var29 = BuilderToolsPlugin.parseGradientMaterials(var1.gradientMaterials);
String var32 = var1.gradientShape != null ? var1.gradientShape : "Linear";
int var35 = var9.tool().get("GradientBlend") class="kw">instanceof Integer var38 ? var38 : 12;
float var39 = var35 / 100.0F;
boolean var43;
boolean var56 = var43 = var9.tool().get("GradientInvert") class="kw">instanceof Boolean var44 && var44;
BuilderToolsPlugin.addToQueue(
var6,
var2,
(var8x, var9x, var10x) -> var9x.applyGradient(
var1.x,
var1.y,
var1.z,
var10,
var25,
var1.gradientStartX,
var1.gradientStartY,
var1.gradientStartZ,
var1.gradientEndX,
var1.gradientEndY,
var1.gradientEndZ,
var29,
var32,
var39,
var27,
var43,
var1.undoGroupSize,
var1.isHoldDownInteraction,
var10x
)
);
break;
case Shading:
int var28 = var9.tool().get("ShadingIntensity") class="kw">instanceof Integer var14 ? var14 : 100;
float var31 = var28 / 100.0F;
int var34 = var9.tool().get("ShadingEdgeBlend") class="kw">instanceof Integer var16 ? var16 : 0;
float var37 = var34 / 100.0F;
String var41 = (String)var9.tool().getOrDefault("ShadingSubMode", "Auto");
boolean var18 = "Auto".equals(var41);
String var19 = (String)var9.tool().getOrDefault("ShadingLightSource", "None");
boolean var20 = "BrushCenter".equals(var19);
boolean var21;
boolean var53 = var21 = var9.tool().get("CustomShadeInvert") class="kw">instanceof Boolean var22 && var22;
BuilderToolsPlugin.ShadingLight var54 = class="kw">switch (var19) {
case "Sun" -> BuilderToolsPlugin.ShadingLight.SUN;
case "None" -> BuilderToolsPlugin.ShadingLight.ANGLE;
class="kw">default -> BuilderToolsPlugin.ShadingLight.PLAYER;
};
BuilderToolsPlugin.ShadingLight var46 = var54;
String var48 = (String)var9.tool().get("ShadingCustomMaterials");
int[] var49 = "Custom".equals(var41) && var48 != null && !var48.isEmpty() ? resolveShadingRamp(BlockPattern.parse(var48)) : null;
BuilderToolsPlugin.addToQueue(
var6,
var2,
(var11x, var12, var13) -> var12.applyShading(
var1.x,
var1.y,
var1.z,
var1.playerX,
var1.playerY,
var1.playerZ,
var10,
var25,
var1.shadingLighten,
var18,
var20,
var46,
var49,
var31,
var27,
var21,
var37,
var1.undoGroupSize,
var1.isHoldDownInteraction,
BuilderToolsPlugin.get().getBlockColorIndex(),
var13
)
);
}
}
}
}
}
@Nonnull
class="kw">private class="kw">static BrushShape parseBrushShape(@Nullable String var0) {
if (var0 == null) {
class="kw">return BrushShape.Cube;
}
try {
class="kw">return BrushShape.valueOf(var0);
} catch (IllegalArgumentException var2) {
class="kw">return BrushShape.Cube;
}
}
@Nullable
class="kw">private class="kw">static int[] resolveShadingRamp(@Nullable BlockPattern var0) {
if (var0 != null && !var0.isEmpty()) {
Integer[] var1 = var0.getResolvedKeys();
int var2 = 0;
for (Integer var6 : var1) {
if (var6 != null && var6 > 0) {
var2++;
}
}
if (var2 == 0) {
class="kw">return null;
}
int[] var9 = new int[var2];
int var10 = 0;
for (Integer var8 : var1) {
if (var8 != null && var8 > 0) {
var9[var10++] = var8;
}
}
class="kw">return var9;
} else {
class="kw">return null;
}
}
class="kw">public void handleBuilderToolStackArea(
@Nonnull BuilderToolStackArea var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
long var7 = MathUtil.saturatedMultiply(
Vector3iUtil.inclusiveBoxVolume(
var1.selectionMin.x, var1.selectionMin.y, var1.selectionMin.z, var1.selectionMax.x, var1.selectionMax.y, var1.selectionMax.z
),
Math.max(1, var1.numStacks)
);
BuilderToolsPlugin.addToQueue(
var6,
var2,
var7,
(var2x, var3x, var4x) -> {
var3x.select(
this.fromBlockPosition(var1.selectionMin), this.fromBlockPosition(var1.selectionMax), "server.builderTools.selectReasons.extrude", var4x
);
var3x.extrudeSelectionFace(var2x, new Vector3i(var1.xNormal, var1.yNormal, var1.zNormal), var1.numStacks, 0, false, var4x);
}
);
}
}
@Nonnull
class="kw">public Vector3i fromBlockPosition(@Nonnull BlockPosition var1) {
class="kw">return new Vector3i(var1.x, var1.y, var1.z);
}
class="kw">private class="kw">static long estimateClipboardBlocks(@Nonnull Player var0, @Nonnull PlayerRef var1) {
BlockSelection var2 = BuilderToolsPlugin.getState(var0, var1).getSelection();
class="kw">return var2 != null ? var2.getBlockCount() : 0L;
}
class="kw">public void handleBuilderToolRotateClipboard(
@Nonnull BuilderToolRotateClipboard var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
Axis var7 = var1.axis == com.hypixel.hytale.protocol.packets.buildertools.Axis.X
? Axis.X
: (var1.axis == com.hypixel.hytale.protocol.packets.buildertools.Axis.Y ? Axis.Y : Axis.Z);
RotateBlockMode var8 = RotateBlockMode.ALL;
BuilderTool var9 = BuilderTool.getActiveBuilderTool(var3, var5);
if (var9 != null && var9.getId().equals("Paste")) {
ItemStack var10 = InventoryComponent.getItemInHand(var5, var3);
BuilderTool.ArgData var11 = var9.getItemArgData(var10);
if (var11 != null && var11.tool() != null) {
var8 = RotateBlockMode.fromString((String)var11.tool().getOrDefault("RotateBlock", "All"));
}
}
RotateBlockMode var12 = var8;
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
BuilderToolsPlugin.addToQueue(var6, var2, estimateClipboardBlocks(var6, var2), (var3x, var4x, var5x) -> {
var4x.setSkipNextPreviewRebuild(var12 == RotateBlockMode.ALL);
var4x.rotate(var3x, var7, var1.angle, var12, var5x);
});
}
}
class="kw">public void handleBuilderToolRandomizeClipboard(
@Nonnull BuilderToolRandomizeClipboard var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5
) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
RotateBlockMode var7 = RotateBlockMode.ALL;
BuilderTool var8 = BuilderTool.getActiveBuilderTool(var3, var5);
if (var8 != null && var8.getId().equals("Paste")) {
ItemStack var9 = InventoryComponent.getItemInHand(var5, var3);
BuilderTool.ArgData var10 = var8.getItemArgData(var9);
if (var10 != null && var10.tool() != null) {
var7 = RotateBlockMode.fromString((String)var10.tool().getOrDefault("RotateBlock", "All"));
}
}
RotateBlockMode var11 = var7;
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
BuilderToolsPlugin.addToQueue(
var6,
var2,
estimateClipboardBlocks(var6, var2),
(var2x, var3x, var4x) -> var3x.applyRandomizeTransforms(
var2x, var1.deltaX, var1.deltaY, var1.deltaZ, var1.flipX, var1.flipY, var1.flipZ, var11, var4x
)
);
}
}
class="kw">public void handleBuilderToolResetClipboardRotation(
@Nonnull BuilderToolResetClipboardRotation var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5
) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
BuilderToolsPlugin.addToQueue(var6, var2, (var0, var1x, var2x) -> var1x.resetClipboardRotation(var0, var2x));
}
}
class="kw">public void handleBuilderToolPasteClipboard(
@Nonnull BuilderToolPasteClipboard var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
boolean var7 = true;
BuilderTool var8 = BuilderTool.getActiveBuilderTool(var3, var5);
if (var8 != null && var8.getId().equals("Paste")) {
ItemStack var9 = InventoryComponent.getItemInHand(var5, var3);
BuilderTool.ArgData var10 = var8.getItemArgData(var9);
if (var10 != null && var10.tool() != null) {
var7 = (Boolean)var10.tool().getOrDefault("PasteAir", true);
}
}
boolean var11 = var7;
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
BuilderToolsPlugin.addToQueue(
var6, var2, estimateClipboardBlocks(var6, var2), (var2x, var3x, var4x) -> var3x.paste(var2x, var1.x, var1.y, var1.z, false, !var11, var4x)
);
}
}
class="kw">public void handleBuilderToolLineAction(
@Nonnull BuilderToolLineAction var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
BuilderTool var7 = BuilderTool.getActiveBuilderTool(var3, var5);
if (var7 != null && var7.getId().equals("Line")) {
ItemStack var8 = InventoryComponent.getItemInHand(var5, var3);
BuilderTool.ArgData var9 = var7.getItemArgData(var8);
if (var9 != null) {
Map var10 = var9.tool();
if (var10 != null) {
int var11 = (Integer)var10.get("bLineWidth");
int var12 = (Integer)var10.get("cLineHeight");
BrushShape var13 = BrushShape.valueOf((String)var10.get("dLineShape"));
BrushOrigin var14 = BrushOrigin.valueOf((String)var10.get("eLineOrigin"));
int var15 = (Integer)var10.get("fLineWallThickness");
int var16 = (Integer)var10.get("gLineSpacing");
int var17 = (Integer)var10.get("hLineDensity");
BlockPattern var18 = (BlockPattern)var10.get("aLineMaterial");
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
long var19 = Math.max(Math.max(Math.abs(var1.xEnd - var1.xStart), Math.abs(var1.yEnd - var1.yStart)), Math.abs(var1.zEnd - var1.zStart)) + 1L;
long var21 = var19 * Math.max(1, var11) * Math.max(1, var12);
BuilderToolsPlugin.addToQueue(
var6,
var2,
var21,
(var10x, var11x, var12x) -> var11x.editLine(
var1.xStart,
var1.yStart,
var1.zStart,
var1.xEnd,
var1.yEnd,
var1.zEnd,
var18,
var11,
var12,
var15,
var13,
var14,
var16,
var17,
ToolOperation.combineMasks(var9, var11x.getGlobalMask()),
var12x
)
);
}
}
}
}
}
class="kw">public void handleBuilderToolOnUseInteraction(
@Nonnull BuilderToolOnUseInteraction var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
BuilderTool var7 = BuilderTool.getActiveBuilderTool(var3, var5);
if (var7 != null && "LaserPointer".equals(var7.getId())) {
if (!isAuthorizedForTool(var2, var3, var5, "LaserPointer")) {
class="kw">return;
}
} else {
if (!hasPermission(var2, HytalePermissions.EDITOR_BRUSH_USE)) {
class="kw">return;
}
if (var7 != null && !var7.isSurvivalAllowed() && var6.getGameMode() != GameMode.Creative) {
class="kw">return;
}
}
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
BuilderToolsPlugin.addToQueue(var6, var2, (var2x, var3x, var4x) -> var3x.edit(var3, var1, var4x));
}
}
class="kw">public void handleBuilderToolSetEntityTransform(
@Nonnull BuilderToolSetEntityTransform var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5
) {
if (!isAuthorizedForTool(var2, var3, var5, "Entity")) {
if (var1.isSessionEnd) {
sendSessionEnd(var2, var1);
}
} else {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 == null) {
if (var1.isSessionEnd) {
sendSessionEnd(var2, var1);
}
} else {
Ref var7 = var4.getEntityStore().getRefFromNetworkId(var1.entityId);
if (var7 != null && var7.isValid()) {
if (var5.getComponent(var7, Player.getComponentType()) != null) {
if (var1.isSessionEnd) {
sendSessionEnd(var2, var1);
}
} else {
BuilderToolsPlugin.addToQueue(
var6,
var2,
(var3x, var4x, var5x) -> {
if (var7.isValid()) {
TransformComponent var6 = var5x.getComponent(var7, TransformComponent.getComponentType());
if (var6 == null) {
if (var1.isSessionEnd) {
sendSessionEnd(var2, var1);
}
} else {
Dirty var7 = var5x.getComponent(var7, Dirty.getComponentType());
ModelTransform var8 = var1.modelTransform;
var4x.handleEntityTransform(var7, var8 != null, var1.isSessionEnd, var5x);
if (var8 != null) {
var5x.tryRemoveComponent(var7, DespawnComponent.getComponentType());
}
HeadRotation var9 = var5x.getComponent(var7, HeadRotation.getComponentType());
if (var8 != null) {
boolean var10 = var8.position != null;
boolean var11 = var8.lookOrientation != null;
boolean var12 = var8.bodyOrientation != null;
if (var10) {
var6.getPosition().set(var8.position.x, var8.position.y, var8.position.z);
}
if (var11 && var9 != null) {
var9.getRotation().set(var8.lookOrientation.pitch, var8.lookOrientation.yaw, var8.lookOrientation.roll);
}
if (var12) {
var6.getRotation().set(var8.bodyOrientation.pitch, var8.bodyOrientation.yaw, var8.bodyOrientation.roll);
}
if ((var10 || var11 || var12) && var7 != null) {
var7.markDirty();
}
}
if (var1.isSessionEnd) {
boolean var14 = var5x.getArchetype(var7).contains(ItemComponent.getComponentType())
|| var5x.getArchetype(var7).contains(BlockEntity.getComponentType());
if (var14) {
BoundingBox var15 = var5x.getComponent(var7, BoundingBox.getComponentType());
if (var15 != null) {
boolean var16 = var5x.getArchetype(var7).contains(BlockEntity.getComponentType());
Rotation3f var13;
if (var16 && var9 != null) {
var13 = var9.getRotation();
} else {
var13 = var6.getRotation();
}
var15.applyRotation(var13.pitch(), var13.yaw(), var13.roll());
}
}
sendSessionEnd(var2, var1);
}
}
}
}
);
}
}
}
}
}
class="kw">private class="kw">static void sendSessionEnd(@Nonnull PlayerRef var0, @Nonnull BuilderToolSetEntityTransform var1) {
BuilderToolEntityTransformSessionEnd var2 = new BuilderToolEntityTransformSessionEnd();
var2.entityId = var1.entityId;
var0.getPacketHandler().writeNoCache(var2);
}
class="kw">public void handlePrefabUnselectPrefab(
@Nonnull PrefabUnselectPrefab var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
PrefabEditSessionManager var6 = BuilderToolsPlugin.get().getPrefabEditSessionManager();
PrefabEditSession var7 = var6.getPrefabEditSession(var2.getUuid());
if (var7 == null) {
var2.sendMessage(Message.translation("server.commands.editprefab.notInEditSession"));
} else {
if (var7.clearSelectedPrefab(var3, var5)) {
var2.sendMessage(Message.translation("server.commands.editprefab.unselected"));
} else {
var2.sendMessage(Message.translation("server.commands.editprefab.noPrefabSelected"));
}
}
}
class="kw">public void handlePrefabSetAnchor(
@Nonnull PrefabSetAnchor var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
LOGGER.at(Level.INFO).log("%s: %s", this.packetHandler.getIdentifier(), var1);
PrefabEditSessionManager var6 = BuilderToolsPlugin.get().getPrefabEditSessionManager();
PrefabEditSession var7 = var6.getPrefabEditSession(var2.getUuid());
if (var7 == null) {
var2.sendMessage(Message.translation("server.commands.editprefab.notInEditSession"));
} else {
PrefabEditingMetadata var8 = null;
Vector3i var9 = new Vector3i(var1.x, var1.y, var1.z);
for (PrefabEditingMetadata var11 : var7.getLoadedPrefabMetadata().values()) {
boolean var12 = var11.isLocationWithinPrefabBoundingBox(new Vector3i(var1.x, var1.y, var1.z));
if (var12) {
var8 = var11;
break;
}
}
if (var8 == null) {
var2.sendMessage(Message.translation("server.commands.editprefab.select.error.noPrefabFound"));
} else {
var8.setAnchorPoint(var9, var4);
var8.sendAnchorHighlightingPacket(var2.getPacketHandler());
}
}
}
class="kw">public void handleBuilderToolSetEntityScale(
@Nonnull BuilderToolSetEntityScale var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
if (isAuthorizedForTool(var2, var3, var5, "Entity")) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
Ref var7 = var4.getEntityStore().getRefFromNetworkId(var1.entityId);
if (var7 != null && var7.isValid()) {
if (var5.getComponent(var7, Player.getComponentType()) == null) {
BuilderToolsPlugin.addToQueue(var6, var2, (var2x, var3x, var4x) -> {
if (var7.isValid()) {
var3x.handleEntityScale(var7, var4x);
EntityScaleComponent var5 = var4x.getComponent(var7, EntityScaleComponent.getComponentType());
if (var5 == null) {
var5 = new EntityScaleComponent(var1.scale);
var4x.addComponent(var7, EntityScaleComponent.getComponentType(), var5);
} else {
var5.setScale(var1.scale);
}
}
});
}
}
}
}
}
class="kw">public void handleBuilderToolSetEntityPickupEnabled(
@Nonnull BuilderToolSetEntityPickupEnabled var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5
) {
if (isAuthorizedForTool(var2, var3, var5, "Entity")) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
Ref var7 = var4.getEntityStore().getRefFromNetworkId(var1.entityId);
if (var7 != null && var7.isValid()) {
PropComponent var8 = var5.getComponent(var7, PropComponent.getComponentType());
if (var8 != null) {
BuilderToolsPlugin.addToQueue(var6, var2, (var2x, var3x, var4x) -> {
if (var7.isValid()) {
EntitySettingsSnapshot var5 = new EntitySettingsSnapshot(var7, var4x);
EntitySettingsSnapshot.applyPickupState(var7, var1.enabled, var4x);
var3x.pushEntitySettingsHistory(var5);
}
});
}
}
}
}
}
class="kw">public void handleBuilderToolSetEntityLight(
@Nonnull BuilderToolSetEntityLight var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
if (isAuthorizedForTool(var2, var3, var5, "Entity")) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
Ref var7 = var4.getEntityStore().getRefFromNetworkId(var1.entityId);
if (var7 != null && var7.isValid()) {
BuilderToolsPlugin.addToQueue(var6, var2, (var2x, var3x, var4x) -> {
if (var7.isValid()) {
EntitySettingsSnapshot var5 = new EntitySettingsSnapshot(var7, var4x);
if (var1.light == null) {
var4x.tryRemoveComponent(var7, DynamicLight.getComponentType());
var4x.tryRemoveComponent(var7, PersistentDynamicLight.getComponentType());
} else {
ColorLight var6 = new ColorLight(var1.light.radius, var1.light.red, var1.light.green, var1.light.blue);
DynamicLight var7 = var4x.getComponent(var7, DynamicLight.getComponentType());
if (var7 != null) {
var7.setColorLight(var6);
} else {
var4x.addComponent(var7, DynamicLight.getComponentType(), new DynamicLight(var6));
}
PersistentDynamicLight var8 = var4x.getComponent(var7, PersistentDynamicLight.getComponentType());
if (var8 != null) {
var8.setColorLight(var6);
} else {
var4x.addComponent(var7, PersistentDynamicLight.getComponentType(), new PersistentDynamicLight(var6));
}
}
var3x.pushEntitySettingsHistory(var5);
}
});
}
}
}
}
class="kw">public void handleBuilderToolSetNPCDebug(
@Nonnull BuilderToolSetNPCDebug var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
if (isAuthorizedForTool(var2, var3, var5, "Entity")) {
Ref var6 = var4.getEntityStore().getRefFromNetworkId(var1.entityId);
if (var6 != null && var6.isValid()) {
NPCMarkerComponent var7 = var5.getComponent(var6, NPCMarkerComponent.getComponentType());
if (var7 != null) {
UUIDComponent var8 = var5.getComponent(var6, UUIDComponent.getComponentType());
if (var8 != null) {
UUID var9 = var8.getUuid();
String var10 = var1.enabled ? "npc debug set display --entity " + var9 : "npc debug clear --entity " + var9;
CommandManager.get().handleCommand(var2, var10);
}
}
}
}
}
class="kw">public void handleBuilderToolSetEntityCollision(
@Nonnull BuilderToolSetEntityCollision var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5
) {
if (isAuthorizedForTool(var2, var3, var5, "Entity")) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
Ref var7 = var4.getEntityStore().getRefFromNetworkId(var1.entityId);
if (var7 != null && var7.isValid()) {
PropComponent var8 = var5.getComponent(var7, PropComponent.getComponentType());
NPCMarkerComponent var9 = var5.getComponent(var7, NPCMarkerComponent.getComponentType());
if (var8 != null || var9 != null) {
BuilderToolsPlugin.addToQueue(var6, var2, (var2x, var3x, var4x) -> {
if (var7.isValid()) {
EntitySettingsSnapshot var5 = new EntitySettingsSnapshot(var7, var4x);
if (var1.collisionType != null && !var1.collisionType.isEmpty()) {
HitboxCollisionConfig var6 = HitboxCollisionConfig.getAssetMap().getAsset(var1.collisionType);
if (var6 != null) {
HitboxCollision var7 = var4x.getComponent(var7, HitboxCollision.getComponentType());
if (var7 != null) {
var7.setHitboxCollisionConfig(var6);
} else {
var4x.addComponent(var7, HitboxCollision.getComponentType(), new HitboxCollision(var6));
}
}
} else {
var4x.tryRemoveComponent(var7, HitboxCollision.getComponentType());
}
var3x.pushEntitySettingsHistory(var5);
}
});
}
}
}
}
}
class="kw">public void handleBuilderToolSetEntityType(
@Nonnull BuilderToolSetEntityType var1, @Nonnull PlayerRef var2, @Nonnull Ref<EntityStore> var3, @Nonnull World var4, @Nonnull Store<EntityStore> var5
) {
if (isAuthorizedForTool(var2, var3, var5, "Entity")) {
if (var1.typeKey != null && !var1.typeKey.isEmpty()) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
Ref var7 = var4.getEntityStore().getRefFromNetworkId(var1.entityId);
if (var7 != null && var7.isValid()) {
if (var5.getComponent(var7, Player.getComponentType()) == null) {
BuilderToolsPlugin.addToQueue(var6, var2, (var2x, var3x, var4x) -> {
if (var7.isValid()) {
ItemComponent var5 = var4x.getComponent(var7, ItemComponent.getComponentType());
if (var5 == null) {
BlockEntity var9 = var4x.getComponent(var7, BlockEntity.getComponentType());
if (var9 != null) {
if (BlockType.getAssetMap().getAsset(var1.typeKey) == null) {
class="kw">return;
}
var9.setBlockTypeKey(var1.typeKey, var7, var4x);
}
} else if (Item.getAssetMap().getAsset(var1.typeKey) != null) {
ItemStack var6 = var5.getItemStack();
int var7 = var6 != null ? var6.getQuantity() : 1;
ItemStack var8 = new ItemStack(var1.typeKey, var7);
var8.setOverrideDroppedItemAnimation(var6 == null || var6.getOverrideDroppedItemAnimation());
var5.setItemStack(var8);
}
}
});
}
}
}
}
}
}
class="kw">public void handleGMaskPresetLoadResponse(
@Nonnull BuilderToolGMaskPresetLoadResponse var1,
@Nonnull PlayerRef var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull World var4,
@Nonnull Store<EntityStore> var5
) {
Player var6 = var5.getComponent(var3, Player.getComponentType());
if (var6 != null) {
BuilderToolsPlugin.addToQueue(var6, var2, (var2x, var3x, var4x) -> {
if (var1.maskData != null && !var1.maskData.isEmpty()) {
try {
BlockMask var5 = BlockMask.parse(var1.maskData);
var3x.setGlobalMask(var5, var4x);
} catch (Exception var6) {
var2.sendMessage(Message.translation("server.builderTools.globalmask.load.failed").param("reason", var6.getMessage()));
}
} else {
var2.sendMessage(Message.translation("server.builderTools.globalmask.load.empty"));
}
});
}
}
}