AbstractCaveNodeShape class

Пакет: com.hypixel.hytale.server.worldgen.cave.shape

Файл: com/hypixel/hytale/server/worldgen/cave/shape/AbstractCaveNodeShape.java

implements: CaveNodeShape

Поля (43)

МодификаторыТипИмя
IWorldBounds var10
boolean var11
int var12
int var13
int var14
int var15
int var16
int var17
int var18
int var19
int var20
int var21
int var22
int var24
int var26
int var27
var27
boolean var28
var28
int var29
int var30
var30
int var31
var31
var31
int var32
var32
int var34
int var35
boolean var36
BlockFluidEntry var37
CaveNodeType.CaveNodeCoverEntry.Entry var38
int var39
int var40
var40
var40
CaveNodeType.CaveNodeCoverEntry[] var41
BlockFluidEntry var43
BlockFluidEntry var44
GeneratedBlockChunk var6
BlockTypeAssetMap var7
CaveType var8
CaveNodeType var9

Методы (13)

МодификаторыВозвратСигнатура
for for(int var23 = var17; var23 <= var20; var23++)
for for(int var25 = var19; var25 <= var22; var25++)
for for(int var33 = var18; var33 <= var27; var33++)
for for(CaveNodeType.CaveNodeCoverEntry var47 : var41)
if if(var11)
if if(var27 >= var29)
if if(var33 < var30)
if if(var33 > var32)
if if(var36)
if if(var33 < var40)
if if(var33 > var31)
if if(var33 < var40)
if if(var33 > var31)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.cave.shape;

class="kw">import com.hypixel.hytale.assetstore.map.BlockTypeAssetMap;
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.universe.world.worldgen.GeneratedBlockChunk;
class="kw">import com.hypixel.hytale.server.worldgen.cave.Cave;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveNodeType;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveType;
class="kw">import com.hypixel.hytale.server.worldgen.cave.element.CaveNode;
class="kw">import com.hypixel.hytale.server.worldgen.chunk.ChunkGeneratorExecution;
class="kw">import com.hypixel.hytale.server.worldgen.util.BlockFluidEntry;
class="kw">import com.hypixel.hytale.server.worldgen.util.bounds.IWorldBounds;
class="kw">import java.util.Random;
class="kw">import javax.annotation.Nonnull;

class="kw">public class="kw">abstract class AbstractCaveNodeShape class="kw">implements CaveNodeShape {
   class="kw">public AbstractCaveNodeShape() {
   }

   @Override
   class="kw">public void populateChunk(int var1, @Nonnull ChunkGeneratorExecution var2, @Nonnull Cave var3, @Nonnull CaveNode var4, @Nonnull Random var5) {
      GeneratedBlockChunk var6 = var2.getChunk();
      BlockTypeAssetMap var7 = BlockType.getAssetMap();
      CaveType var8 = var3.getCaveType();
      CaveNodeType var9 = var4.getCaveNodeType();
      IWorldBounds var10 = this.getBounds();
      boolean var11 = var3.getCaveType().isSurfaceLimited();
      int var12 = var4.getCaveNodeType().hasEnvironment() ? var4.getCaveNodeType().getEnvironment() : var8.getEnvironment();
      int var13 = ChunkUtil.minBlock(var2.getX());
      int var14 = ChunkUtil.minBlock(var2.getZ());
      int var15 = ChunkUtil.maxBlock(var2.getX());
      int var16 = ChunkUtil.maxBlock(var2.getZ());
      int var17 = Math.max(var13, var10.getLowBoundX());
      int var18 = var10.getLowBoundY();
      int var19 = Math.max(var14, var10.getLowBoundZ());
      int var20 = Math.min(var15, var10.getHighBoundX());
      int var21 = var10.getHighBoundY();
      int var22 = Math.min(var16, var10.getHighBoundZ());

      for (int var23 = var17; var23 <= var20; var23++) {
         int var24 = var23 - var13;

         for (int var25 = var19; var25 <= var22; var25++) {
            int var26 = var25 - var14;
            int var27 = var21;
            boolean var28 = false;
            if (var11) {
               int var29 = var6.getHeight(var24, var26);
               if (var27 >= var29) {
                  var27 = var29;
                  var28 = true;
               }
            }

            int var40 = Integer.MAX_VALUE;
            int var30 = Integer.MAX_VALUE;
            int var31 = Integer.MIN_VALUE;
            int var32 = Integer.MIN_VALUE;

            for (int var33 = var18; var33 <= var27; var33++) {
               if (this.shouldReplace(var1, var23, var25, var33)) {
                  if (var33 < var30) {
                     var30 = var33;
                  }

                  if (var33 > var32) {
                     var32 = var33;
                  }

                  int var34 = var2.getBlock(var24, var33, var26);
                  int var35 = var2.getFluid(var24, var33, var26);
                  boolean var36 = !var11 || var34 != 0;
                  if (var36) {
                     BlockFluidEntry var37 = CaveNodeShapeUtils.getFillingBlock(var8, var9, var33, var5);
                     if (var8.getBlockMask().eval(var34, var35, var37.blockId(), var37.fluidId())) {
                        if (var2.setBlock(var24, var33, var26, (byte)6, var37, var12)) {
                           if (var33 < var40) {
                              var40 = var33;
                           }

                           if (var33 > var31) {
                              var31 = var33;
                           }
                        }

                        if (var2.setFluid(var24, var33, var26, (byte)6, var37.fluidId(), var12)) {
                           if (var33 < var40) {
                              var40 = var33;
                           }

                           if (var33 > var31) {
                              var31 = var33;
                           }
                        }
                     }
                  }
               }
            }

            CaveNodeType.CaveNodeCoverEntry[] var41 = var9.getCovers();

            for (CaveNodeType.CaveNodeCoverEntry var47 : var41) {
               CaveNodeType.CaveNodeCoverEntry.Entry var38 = var47.get(var5);
               int var39 = CaveNodeShapeUtils.getCoverHeight(var40, var30, var31, var32, var28, var47, var38);
               if (var39 >= 0
                  && var47.getDensityCondition().eval(var1 + var4.getSeedOffset(), var23, var25)
                  && var47.getHeightCondition().eval(var1, var23, var25, var39, var5)
                  && var47.getMapCondition().eval(var1, var23, var25)
                  && CaveNodeShapeUtils.isCoverMatchingParent(var24, var26, var39, var2, var47)) {
                  var2.setBlock(var24, var39, var26, (byte)5, var38.getEntry(), var12);
                  var2.setFluid(var24, var39, var26, (byte)5, var38.getEntry().fluidId(), var12);
               }
            }

            if (CaveNodeShapeUtils.invalidateCover(var24, var40 - 1, var26, CaveNodeType.CaveNodeCoverType.CEILING, var2, var7)) {
               BlockFluidEntry var43 = CaveNodeShapeUtils.getFillingBlock(var8, var9, var40 - 1, var5);
               var2.overrideBlock(var24, var40 - 1, var26, (byte)6, var43);
               var2.overrideFluid(var24, var40 - 1, var26, (byte)6, var43.fluidId());
            }

            if (CaveNodeShapeUtils.invalidateCover(var24, var31 + 1, var26, CaveNodeType.CaveNodeCoverType.FLOOR, var2, var7)) {
               BlockFluidEntry var44 = CaveNodeShapeUtils.getFillingBlock(var8, var9, var31 + 1, var5);
               var2.overrideBlock(var24, var31 + 1, var26, (byte)6, var44);
               var2.overrideFluid(var24, var31 + 1, var26, (byte)6, var44.fluidId());
            }
         }
      }
   }
}