BlockPositionProvider class

Пакет: com.hypixel.hytale.server.core.universe.world.chunk.section.blockpositions

Файл: com/hypixel/hytale/server/core/universe/world/chunk/section/blockpositions/BlockPositionProvider.java

implements: Component<ChunkStore>

Поля (7)

МодификаторыТипИмя
final BitSet searchedBlockSets
List var11
TransformComponent var12
Vector3d var13
double var14
IBlockPositionData var17
double var18

Методы (10)

МодификаторыВозвратСигнатура
public <T> void findBlocks<T> void findBlocks(@Nonnull List<IBlockPositionData> var1, int var2, double var3, double var5, @Nonnull Ref<EntityStore> var7, @Nullable BiPredicate<IBlockPositionData, T> var8, T var9, @Nonnull ComponentAccessor<EntityStore> var10)
abstract for for(int var16 = 0; var16 < var11.size()
public void forEachBlockSetvoid forEachBlockSet(@Nonnull IntObjectConsumer<List<IBlockPositionData>> var1)
static ComponentType<ChunkStore, BlockPositionProvider> getComponentTypeComponentType<ChunkStore, BlockPositionProvider> getComponentType()
public BitSet getSearchedBlockSetsBitSet getSearchedBlockSets()
if if(var2 != null)
if if(this.blockData != null)
if if(var11 != null)
if if(this.blockData != null)
public boolean isStaleboolean isStale(int var1, @Nonnull BlockSection var2)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.chunk.section.blockpositions;

class="kw">import com.hypixel.hytale.component.Component;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.function.consumer.IntObjectConsumer;
class="kw">import com.hypixel.hytale.server.core.modules.LegacyModule;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
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 it.unimi.dsi.fastutil.ints.Int2ObjectMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectMaps;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
class="kw">import java.util.BitSet;
class="kw">import java.util.List;
class="kw">import java.util.function.BiPredicate;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class BlockPositionProvider class="kw">implements Component<ChunkStore> {
   class="kw">private class="kw">final BitSet searchedBlockSets;
   @Nullable
   class="kw">private class="kw">final Int2ObjectMap<List<IBlockPositionData>> blockData;
   class="kw">private class="kw">final short lightChangeCounter;

   class="kw">public class="kw">static ComponentType<ChunkStore, BlockPositionProvider> getComponentType() {
      class="kw">return LegacyModule.get().getBlockPositionProviderComponentType();
   }

   class="kw">public BlockPositionProvider(@Nonnull BitSet var1, @Nullable Int2ObjectOpenHashMap<List<IBlockPositionData>> var2, short var3) {
      this.searchedBlockSets = (BitSet)var1.clone();
      this.lightChangeCounter = var3;
      if (var2 != null) {
         this.blockData = Int2ObjectMaps.unmodifiable(var2);
      } else {
         this.blockData = null;
      }
   }

   class="kw">public boolean isStale(int var1, @Nonnull BlockSection var2) {
      class="kw">return this.lightChangeCounter != var2.getLocalChangeCounter() || !this.searchedBlockSets.get(var1);
   }

   class="kw">public <T> void findBlocks(
      @Nonnull List<IBlockPositionData> var1,
      int var2,
      double var3,
      double var5,
      @Nonnull Ref<EntityStore> var7,
      @Nullable BiPredicate<IBlockPositionData, T> var8,
      T var9,
      @Nonnull ComponentAccessor<EntityStore> var10
   ) {
      if (this.blockData != null) {
         List var11 = (List<IBlockPositionData>)this.blockData.getOrDefault(var2, null);
         if (var11 != null) {
            TransformComponent var12 = var10.getComponent(var7, TransformComponent.getComponentType());
            assert var12 != null;
            Vector3d var13 = var12.getPosition();
            double var14 = var3 * var3;

            for (int var16 = 0; var16 < var11.size(); var16++) {
               IBlockPositionData var17 = var11.get(var16);
               double var18 = var17.getYCentre();
               if (Math.abs(var13.y - var18) <= var5
                  && var13.distanceSquared(var17.getXCentre(), var18, var17.getZCentre()) <= var14
                  && (var8 == null || !var8.test(var17, var9))) {
                  var1.add(var17);
               }
            }
         }
      }
   }

   class="kw">public BitSet getSearchedBlockSets() {
      class="kw">return (BitSet)this.searchedBlockSets.clone();
   }

   class="kw">public void forEachBlockSet(@Nonnull IntObjectConsumer<List<IBlockPositionData>> var1) {
      if (this.blockData != null) {
         this.blockData.forEach(var1::accept);
      }
   }

   @Nonnull
   @Override
   class="kw">public Component<ChunkStore> clone() {
      class="kw">return this;
   }
}