PaintOperation class

Пакет: com.hypixel.hytale.builtin.buildertools.tooloperations

Файл: com/hypixel/hytale/builtin/buildertools/tooloperations/PaintOperation.java

extends: ToolOperation

Поля (7)

МодификаторыТипИмя
final Transform brushRotation
var1
var2
var3
Vector3i var4
UUIDComponent var6
PrototypePlayerBuilderToolSettings var7

Методы (3)

МодификаторыВозвратСигнатура
if if(this.interactionType == InteractionType.Primary)
if if(var2 >= 0 && var2 < 320)
abstract super super(var1, var4, var5)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.buildertools.PrototypePlayerBuilderToolSettings;
class="kw">import com.hypixel.hytale.builtin.buildertools.tooloperations.transform.Transform;
class="kw">import com.hypixel.hytale.builtin.buildertools.utils.Material;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.math.block.BlockUtil;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolOnUseInteraction;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.mask.BlockPattern;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;

class="kw">public class PaintOperation class="kw">extends ToolOperation {
   class="kw">private class="kw">final Transform brushRotation;
   class="kw">private class="kw">final BlockPattern effectivePattern;
   class="kw">private LongOpenHashSet packedPlacedBlockPositions;

   class="kw">public PaintOperation(
      @Nonnull Ref<EntityStore> var1,
      @Nonnull Player var2,
      @Nonnull PlayerRef var3,
      @Nonnull BuilderToolOnUseInteraction var4,
      @Nonnull ComponentAccessor<EntityStore> var5
   ) {
      super(var1, var4, var5);
      if (this.interactionType == InteractionType.Primary) {
         this.effectivePattern = BlockPattern.EMPTY;
      } else if (this.pattern.equals(BlockPattern.EMPTY)) {
         this.effectivePattern = BlockPattern.parse("Rock_Stone");
      } else {
         this.effectivePattern = this.pattern;
      }

      UUIDComponent var6 = var5.getComponent(var1, UUIDComponent.getComponentType());
      assert var6 != null;
      PrototypePlayerBuilderToolSettings var7 = ToolOperation.PROTOTYPE_TOOL_SETTINGS.get(var6.getUuid());
      this.packedPlacedBlockPositions = var7.addIgnoredPaintOperation();
      this.brushRotation = this.getBrushRotation(var5);
   }

   @Override
   class="kw">protected boolean executeBlock(int var1, int var2, int var3) {
      Vector3i var4 = new Vector3i(var1 - this.currentCenterX, var2 - this.currentCenterY, var3 - this.currentCenterZ);
      this.brushRotation.apply(var4);
      var1 = this.currentCenterX + var4.x;
      var2 = this.currentCenterY + var4.y;
      var3 = this.currentCenterZ + var4.z;
      if (var2 >= 0 && var2 < 320) {
         if (this.edit.getBlock(var1, var2, var3) == 0) {
            this.packedPlacedBlockPositions.add(BlockUtil.pack(var1, var2, var3));
         }

         if (this.random.nextInt(100) <= this.density) {
            this.edit.setMaterialWithFiller(var1, var2, var3, Material.fromPattern(this.effectivePattern, this.random));
         }

         class="kw">return true;
      } else {
         class="kw">return true;
      }
   }
}