BlockTypeFarmingStageData class

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

Файл: com/hypixel/hytale/builtin/adventure/farming/config/stages/BlockTypeFarmingStageData.java

extends: FarmingStageData

Поля (15)

МодификаторыТипИмя
int var10
int var10
BlockType var11
int var12
int var13
int var14
ChunkStore var15
BlockType var7
Store var7
ChunkSection var8
ChunkSection var8
BlockSection var8
BlockSection var9
BlockSection var9
int var9

Методы (8)

МодификаторыВозвратСигнатура
public String getBlockString getBlock()
if if(var7 == null)
if if(var8 == null)
if if(var9 == null)
if if(var8 == null)
if if(var9 == null)
if if(var11 == null)
if if(var8 != null)

Исходный код

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

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.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.farming.FarmingStageData;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.BlockOperations;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.ChunkSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class BlockTypeFarmingStageData class="kw">extends FarmingStageData {
   @Nonnull
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<BlockTypeFarmingStageData> CODEC = BuilderCodec.builder(
         BlockTypeFarmingStageData.class, BlockTypeFarmingStageData::new, FarmingStageData.BASE_CODEC
      )
      .append(new KeyedCodec<>("Block", Codec.STRING), (var0, var1) -> var0.block = var1, var0 -> var0.block)
      .addValidatorLate(() -> BlockType.VALIDATOR_CACHE.getValidator().late())
      .add()
      .build();
   class="kw">protected String block;

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

   class="kw">public String getBlock() {
      class="kw">return this.block;
   }

   @Override
   class="kw">public boolean canApply(
      @Nonnull ComponentAccessor<ChunkStore> var1, @Nonnull Ref<ChunkStore> var2, @Nonnull Ref<ChunkStore> var3, int var4, int var5, int var6
   ) {
      BlockType var7 = BlockType.getAssetMap().getAsset(this.block);
      if (var7 == null) {
         class="kw">return true;
      }

      ChunkSection var8 = var1.getComponent(var2, ChunkSection.getComponentType());
      if (var8 == null) {
         class="kw">return true;
      }

      BlockSection var9 = var1.getComponent(var2, BlockSection.getComponentType());
      if (var9 == null) {
         class="kw">return true;
      }

      int var10 = BlockType.getAssetMap().getIndex(this.block);
      class="kw">return var10 == var9.get(var4, var5, var6)
         ? true
         : testFillerPositions(
            var1,
            var9,
            var7,
            ChunkUtil.worldCoordFromLocalCoord(var8.getX(), var4),
            ChunkUtil.worldCoordFromLocalCoord(var8.getY(), var5),
            ChunkUtil.worldCoordFromLocalCoord(var8.getZ(), var6)
         );
   }

   @Override
   class="kw">public void apply(
      @Nonnull ComponentAccessor<ChunkStore> var1,
      @Nonnull Ref<ChunkStore> var2,
      @Nonnull Ref<ChunkStore> var3,
      int var4,
      int var5,
      int var6,
      @Nullable FarmingStageData var7
   ) {
      super.apply(var1, var2, var3, var4, var5, var6, var7);
      ChunkSection var8 = var1.getComponent(var2, ChunkSection.getComponentType());
      if (var8 == null) {
         ((HytaleLogger.Api)LOGGER.at(Level.WARNING).atMostEvery(1, TimeUnit.MINUTES))
            .log("Missing chunk section component when applying state farming stage at (%d, %d, %d)", var4, var5, var6);
      } else {
         BlockSection var9 = var1.getComponent(var2, BlockSection.getComponentType());
         if (var9 == null) {
            ((HytaleLogger.Api)LOGGER.at(Level.WARNING).atMostEvery(1, TimeUnit.MINUTES))
               .log("Missing block section component when applying state farming stage at (%d, %d, %d)", var4, var5, var6);
         } else {
            int var10 = BlockType.getAssetMap().getIndex(this.block);
            if (var10 != var9.get(var4, var5, var6)) {
               BlockType var11 = BlockType.getAssetMap().getAsset(var10);
               if (var11 == null) {
                  ((HytaleLogger.Api)LOGGER.at(Level.WARNING).atMostEvery(1, TimeUnit.MINUTES))
                     .log("Invalid block type '%s' when applying block type farming stage at (%d, %d, %d)", this.block, var4, var5, var6);
               } else {
                  int var12 = ChunkUtil.worldCoordFromLocalCoord(var8.getX(), var4);
                  int var13 = ChunkUtil.worldCoordFromLocalCoord(var8.getY(), var5);
                  int var14 = ChunkUtil.worldCoordFromLocalCoord(var8.getZ(), var6);
                  ChunkStore var15 = var1.getExternalData();
                  var15.getWorld().execute(() -> {
                     if (var2.isValid()) {
                        Store var7 = var15.getStore();
                        BlockSection var8 = var7.getComponent(var2, BlockSection.getComponentType());
                        if (var8 != null) {
                           int var9 = var8.getRotationIndex(var12, var13, var14);
                           if (testFillerPositions(var7, var8, var11, var12, var13, var14)) {
                              BlockOperations.setBlock(var15, var2, var12, var13, var14, var10, var11, var9, 0, 2);
                           }
                        }
                     }
                  });
               }
            }
         }
      }
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "BlockTypeFarmingStageData{block=" + this.block + "} " + super.toString();
   }
}