BlockStateFarmingStageData class

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

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

extends: FarmingStageData

Поля (19)

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

Методы (11)

МодификаторыВозвратСигнатура
public String getStateString getState()
if if(var7 == null)
if if(var8 == null)
if if(var10 == null)
if if(var11 == null)
if if(var8 == null)
if if(var9 == null)
if if(var11 == null)
if if(var12 == null)
if if(var10 != var13)
if if(var9 != 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 BlockStateFarmingStageData 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<BlockStateFarmingStageData> CODEC = BuilderCodec.builder(
         BlockStateFarmingStageData.class, BlockStateFarmingStageData::new, FarmingStageData.BASE_CODEC
      )
      .append(new KeyedCodec<>("State", Codec.STRING), (var0, var1) -> var0.state = var1, var0 -> var0.state)
      .add()
      .build();
   class="kw">protected String state;

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

   class="kw">public String getState() {
      class="kw">return this.state;
   }

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

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

      int var9 = var8.get(var4, var5, var6);
      BlockType var10 = BlockType.getAssetMap().getAsset(var9);
      if (var10 == null) {
         class="kw">return true;
      }

      BlockType var11 = var10.getBlockForState(this.state);
      if (var11 == null) {
         class="kw">return true;
      }

      int var12 = BlockType.getAssetMap().getIndex(var11.getId());
      class="kw">return var9 == var12
         ? true
         : testFillerPositions(
            var1,
            var8,
            var11,
            ChunkUtil.worldCoordFromLocalCoord(var7.getX(), var4),
            ChunkUtil.worldCoordFromLocalCoord(var7.getY(), var5),
            ChunkUtil.worldCoordFromLocalCoord(var7.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 = 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("Missing origin block type for block ID '%s' when applying state farming stage at (%d, %d, %d)", String.valueOf(var10), var4, var5, var6);
            } else {
               BlockType var12 = var11.getBlockForState(this.state);
               if (var12 == null) {
                  ((HytaleLogger.Api)LOGGER.at(Level.WARNING).atMostEvery(1, TimeUnit.MINUTES))
                     .log("Missing new block type '%s' when applying state farming stage at (%d, %d, %d)", this.state, var4, var5, var6);
               } else {
                  int var13 = BlockType.getAssetMap().getIndex(var12.getId());
                  if (var10 != var13) {
                     int var14 = var9.getRotationIndex(var4, var5, var6);
                     int var15 = ChunkUtil.worldCoordFromLocalCoord(var8.getX(), var4);
                     int var16 = ChunkUtil.worldCoordFromLocalCoord(var8.getY(), var5);
                     int var17 = ChunkUtil.worldCoordFromLocalCoord(var8.getZ(), var6);
                     ChunkStore var18 = var1.getExternalData();
                     var18.getWorld().execute(() -> {
                        if (var2.isValid()) {
                           Store var8 = var18.getStore();
                           BlockSection var9 = var8.getComponent(var2, BlockSection.getComponentType());
                           if (var9 != null) {
                              if (testFillerPositions(var8, var9, var12, var15, var16, var17)) {
                                 BlockOperations.setBlock(var18, var2, var15, var16, var17, var13, var12, var14, 0, 2);
                              }
                           }
                        }
                     });
                  }
               }
            }
         }
      }
   }

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