FertilizeSoilInteraction class

Пакет: com.hypixel.hytale.builtin.adventure.farming.interactions

Файл: com/hypixel/hytale/builtin/adventure/farming/interactions/FertilizeSoilInteraction.java

extends: SimpleBlockInteraction

Поля (31)

МодификаторыТипИмя
return
return
return
return
return
int var10
Store var11
Ref var12
var12
BlockSection var13
var13
BlockComponentSection var14
var14
int var15
var15
int var16
var16
BlockType var17
var17
Ref var18
var18
var18
var18
TilledSoilBlock var19
var19
int var20
BlockSection var21
Ref var26
int var8
int var9
var9

Методы (8)

МодификаторыВозвратСигнатура
if if(var13 != null && var14 != null)
if if(var17 == null)
if if(var19 == null)
if if(var13 == null || var14 == null)
if if(var17 == null)
if if(var19 == null)
if if(var26 != null)
if if(var21 != null)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.adventure.farming.states.FarmingBlock;
class="kw">import com.hypixel.hytale.builtin.adventure.farming.states.TilledSoilBlock;
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.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.protocol.InteractionState;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.protocol.WaitForDataFrom;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.modules.block.BlockEntity;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.CooldownHandler;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.client.SimpleBlockInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockComponentSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
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 javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;

class="kw">public class FertilizeSoilInteraction class="kw">extends SimpleBlockInteraction {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<FertilizeSoilInteraction> CODEC = BuilderCodec.builder(
         FertilizeSoilInteraction.class, FertilizeSoilInteraction::new, SimpleBlockInteraction.CODEC
      )
      .documentation("If the target block is farmable then set it to fertilized.")
      .append(new KeyedCodec<>("RefreshModifiers", Codec.STRING_ARRAY), (var0, var1) -> var0.refreshModifiers = var1, var0 -> var0.refreshModifiers)
      .add()
      .build();
   class="kw">protected String[] refreshModifiers;

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

   @Nonnull
   @Override
   class="kw">public WaitForDataFrom getWaitForDataFrom() {
      class="kw">return WaitForDataFrom.Server;
   }

   @Override
   class="kw">protected void interactWithBlock(
      @Nonnull World var1,
      @Nonnull CommandBuffer<EntityStore> var2,
      @Nonnull InteractionType var3,
      @Nonnull InteractionContext var4,
      @Nullable ItemStack var5,
      @Nonnull Vector3i var6,
      @Nonnull CooldownHandler var7
   ) {
      int var8 = var6.x();
      int var9 = var6.y();
      int var10 = var6.z();
      Store var11 = var1.getChunkStore().getStore();
      Ref var12 = var1.getChunkStore().getChunkSectionReferenceAtBlock(var8, var9, var10);
      if (var12 != null && var12.isValid()) {
         BlockSection var13 = var11.getComponent(var12, BlockSection.getComponentType());
         BlockComponentSection var14 = var11.getComponent(var12, BlockComponentSection.getComponentType());
         if (var13 != null && var14 != null) {
            int var15 = ChunkUtil.indexBlock(var8, var9, var10);
            int var16 = var13.get(var15);
            BlockType var17 = BlockType.getAssetMap().getAsset(var16);
            if (var17 == null) {
               var4.getState().state = InteractionState.Failed;
            } else {
               Ref var18 = var14.getBlockReference(var15);
               if ((var18 == null || !var18.isValid()) && BlockEntity.declaresComponent(var17, TilledSoilBlock.getComponentType())) {
                  var18 = BlockEntity.ensureBlockEntity(var11, var12, var14, var8, var9, var10, var17, var13.getFiller(var15));
               }

               TilledSoilBlock var19 = var18 != null ? var11.getComponent(var18, TilledSoilBlock.getComponentType()) : null;
               if (var19 == null) {
                  if (!BlockEntity.declaresComponent(var17, FarmingBlock.getComponentType())) {
                     var4.getState().state = InteractionState.Failed;
                     class="kw">return;
                  }

                  int var20 = var9 - 1;
                  var15 = ChunkUtil.indexBlock(var8, var20, var10);
                  if (ChunkUtil.chunkCoordinate(var20) != ChunkUtil.chunkCoordinate(var9)) {
                     var12 = var1.getChunkStore().getChunkSectionReferenceAtBlock(var8, var20, var10);
                     if (var12 == null || !var12.isValid()) {
                        var4.getState().state = InteractionState.Failed;
                        class="kw">return;
                     }

                     var13 = var11.getComponent(var12, BlockSection.getComponentType());
                     var14 = var11.getComponent(var12, BlockComponentSection.getComponentType());
                     if (var13 == null || var14 == null) {
                        var4.getState().state = InteractionState.Failed;
                        class="kw">return;
                     }
                  }

                  var9 = var20;
                  var16 = var13.get(var15);
                  var17 = BlockType.getAssetMap().getAsset(var16);
                  if (var17 == null) {
                     var4.getState().state = InteractionState.Failed;
                     class="kw">return;
                  }

                  var18 = var14.getBlockReference(var15);
                  if ((var18 == null || !var18.isValid()) && BlockEntity.declaresComponent(var17, TilledSoilBlock.getComponentType())) {
                     var18 = BlockEntity.ensureBlockEntity(var11, var12, var14, var8, var9, var10, var17, var13.getFiller(var15));
                  }

                  var19 = var18 != null ? var11.getComponent(var18, TilledSoilBlock.getComponentType()) : null;
                  if (var19 == null) {
                     var4.getState().state = InteractionState.Failed;
                     class="kw">return;
                  }
               }

               var19.setFertilized(true);
               var13.setTicking(var8, var9, var10, true);
               if (ChunkUtil.chunkCoordinate(var9) == ChunkUtil.chunkCoordinate(var9 + 1)) {
                  var13.setTicking(var8, var9 + 1, var10, true);
               } else {
                  Ref var26 = var1.getChunkStore().getChunkSectionReferenceAtBlock(var8, var9 + 1, var10);
                  if (var26 != null) {
                     BlockSection var21 = var11.getComponent(var26, BlockSection.getComponentType());
                     if (var21 != null) {
                        var21.setTicking(var8, var9 + 1, var10, true);
                     }
                  }
               }
            }
         } else {
            var4.getState().state = InteractionState.Failed;
         }
      } else {
         var4.getState().state = InteractionState.Failed;
      }
   }

   @Override
   class="kw">protected void simulateInteractWithBlock(
      @Nonnull InteractionType var1, @Nonnull InteractionContext var2, @Nullable ItemStack var3, @Nonnull World var4, @Nonnull Vector3i var5
   ) {
   }
}