LoadIntFromToolArgOperation class

Пакет: com.hypixel.hytale.builtin.buildertools.scriptedbrushes.operations.sequential

Файл: com/hypixel/hytale/builtin/buildertools/scriptedbrushes/operations/sequential/LoadIntFromToolArgOperation.java

extends: SequenceBrushOperation

Поля (10)

МодификаторыТипИмя
final BuilderCodec<LoadIntFromToolArgOperation> CODEC
private final Function<BrushConfig, Integer> getter
private final BiConsumer<BrushConfig, Integer> setter
var10
int var11
BuilderTool var5
ItemStack var6
BuilderTool.ArgData var7
Map var8
Object var9

Методы (9)

МодификаторыВозвратСигнатура
TargetField TargetField(Function<BrushConfig, Integer> nullxx, BiConsumer<BrushConfig, Integer> nullxxx)
public int getValuepublic int getValue(BrushConfig var1)
if if(var5 == null)
if if(var6 == null)
if if(var9 instanceof Integer var10)
if if(this.negateArg)
if if(this.relativeArg)
public void setValuepublic void setValue(BrushConfig var1, int var2)
abstract super super("Load Int", "Load an integer from an Int tool arg and apply it to a brush config field", false)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.buildertools.scriptedbrushes.BrushConfig;
class="kw">import com.hypixel.hytale.builtin.buildertools.scriptedbrushes.BrushConfigCommandExecutor;
class="kw">import com.hypixel.hytale.builtin.buildertools.scriptedbrushes.operations.system.SequenceBrushOperation;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.server.core.asset.type.buildertool.config.BuilderTool;
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.universe.world.storage.EntityStore;
class="kw">import java.util.Map;
class="kw">import java.util.function.BiConsumer;
class="kw">import java.util.function.Function;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;

class="kw">public class LoadIntFromToolArgOperation class="kw">extends SequenceBrushOperation {
   class="kw">public class="kw">static class="kw">final BuilderCodec<LoadIntFromToolArgOperation> CODEC = BuilderCodec.builder(
         LoadIntFromToolArgOperation.class, LoadIntFromToolArgOperation::new
      )
      .append(new KeyedCodec<>("ArgName", Codec.STRING, true), (var0, var1) -> var0.argNameArg = var1, var0 -> var0.argNameArg)
      .documentation("The name of the Int tool arg to load the value from")
      .add()
      .<LoadIntFromToolArgOperation.TargetField>append(
         new KeyedCodec<>("TargetField", new EnumCodec<>(LoadIntFromToolArgOperation.TargetField.class)),
         (var0, var1) -> var0.targetFieldArg = var1,
         var0 -> var0.targetFieldArg
      )
      .documentation("The brush config field to set (Width, Height, Density, Thickness, OffsetX, OffsetY, OffsetZ)")
      .add()
      .<Boolean>append(new KeyedCodec<>("Relative", Codec.BOOLEAN), (var0, var1) -> var0.relativeArg = var1, var0 -> var0.relativeArg)
      .documentation("When true, adds the loaded value to the current field value instead of replacing it")
      .add()
      .<Boolean>append(new KeyedCodec<>("Negate", Codec.BOOLEAN), (var0, var1) -> var0.negateArg = var1, var0 -> var0.negateArg)
      .documentation("When true, turns the sign of the value to negative")
      .add()
      .documentation("Load an integer from an Int tool arg and apply it to a brush config field")
      .build();
   @Nonnull
   class="kw">public String argNameArg = "";
   @Nonnull
   class="kw">public LoadIntFromToolArgOperation.TargetField targetFieldArg = LoadIntFromToolArgOperation.TargetField.Width;
   class="kw">public boolean relativeArg;
   class="kw">public boolean negateArg;

   class="kw">public LoadIntFromToolArgOperation() {
      super("Load Int", "Load an integer from an Int tool arg and apply it to a brush config field", false);
   }

   @Override
   class="kw">public void modifyBrushConfig(
      @Nonnull Ref<EntityStore> var1, @Nonnull BrushConfig var2, @Nonnull BrushConfigCommandExecutor var3, @Nonnull ComponentAccessor<EntityStore> var4
   ) {
      BuilderTool var5 = BuilderTool.getActiveBuilderTool(var1, var4);
      if (var5 == null) {
         var2.setErrorFlag("LoadInt: No active builder tool");
      } else {
         ItemStack var6 = InventoryComponent.getItemInHand(var4, var1);
         if (var6 == null) {
            var2.setErrorFlag("LoadInt: No item in hand");
         } else {
            BuilderTool.ArgData var7 = var5.getItemArgData(var6);
            Map var8 = var7.tool();
            if (var8 != null && var8.containsKey(this.argNameArg)) {
               Object var9 = var8.get(this.argNameArg);
               if (var9 class="kw">instanceof Integer var10) {
                  if (this.negateArg) {
                     var10 = var10 * -1;
                  }

                  if (this.relativeArg) {
                     int var11 = this.targetFieldArg.getValue(var2);
                     this.targetFieldArg.setValue(var2, var11 + var10);
                  } else {
                     this.targetFieldArg.setValue(var2, var10);
                  }
               } else {
                  var2.setErrorFlag("LoadInt: Tool arg '" + this.argNameArg + "' is not an Int type (found " + var9.getClass().getSimpleName() + ")");
               }
            } else {
               var2.setErrorFlag("LoadInt: Tool arg '" + this.argNameArg + "' not found");
            }
         }
      }
   }

   class="kw">public enum TargetField {
      None(null, null),
      Width(BrushConfig::getShapeWidth, BrushConfig::setShapeWidth),
      Height(BrushConfig::getShapeHeight, BrushConfig::setShapeHeight),
      Density(BrushConfig::getDensity, BrushConfig::setDensity),
      Thickness(BrushConfig::getShapeThickness, BrushConfig::setShapeThickness),
      OffsetX(var0 -> var0.getOriginOffset().x, (var0, var1) -> var0.setOriginOffset(new Vector3i(var1, var0.getOriginOffset().y, var0.getOriginOffset().z))),
      OffsetY(var0 -> var0.getOriginOffset().y, (var0, var1) -> var0.setOriginOffset(new Vector3i(var0.getOriginOffset().x, var1, var0.getOriginOffset().z))),
      OffsetZ(var0 -> var0.getOriginOffset().z, (var0, var1) -> var0.setOriginOffset(new Vector3i(var0.getOriginOffset().x, var0.getOriginOffset().y, var1)));

      class="kw">private class="kw">final Function<BrushConfig, Integer> getter;
      class="kw">private class="kw">final BiConsumer<BrushConfig, Integer> setter;

      TargetField(Function<BrushConfig, Integer> nullxx, BiConsumer<BrushConfig, Integer> nullxxx) {
         this.getter = nullxx;
         this.setter = nullxxx;
      }

      class="kw">public int getValue(BrushConfig var1) {
         class="kw">return this.getter.apply(var1);
      }

      class="kw">public void setValue(BrushConfig var1, int var2) {
         this.setter.accept(var1, var2);
      }
   }
}