minecraft-source/src/net/minecraft/world/level/chunk/ChunkAccess.java

145 lines
4.5 KiB
Java

package net.minecraft.world.level.chunk;
import it.unimi.dsi.fastutil.shorts.ShortArrayList;
import net.minecraft.Util;
import java.util.BitSet;
import net.minecraft.world.level.levelgen.GenerationStep;
import net.minecraft.world.level.material.Fluid;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.TickList;
import java.util.stream.Stream;
import net.minecraft.nbt.CompoundTag;
import it.unimi.dsi.fastutil.shorts.ShortList;
import org.apache.logging.log4j.LogManager;
import net.minecraft.world.level.levelgen.structure.StructureStart;
import net.minecraft.world.level.ChunkPos;
import net.minecraft.world.level.levelgen.Heightmap;
import java.util.Map;
import java.util.Collection;
import java.util.Set;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.level.block.entity.BlockEntity;
import javax.annotation.Nullable;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.BlockGetter;
public interface ChunkAccess extends BlockGetter, FeatureAccess {
@Nullable
BlockState setBlockState(final BlockPos fk, final BlockState byg, final boolean boolean3);
void setBlockEntity(final BlockPos fk, final BlockEntity bwi);
void addEntity(final Entity akn);
@Nullable
default LevelChunkSection getHighestSection() {
final LevelChunkSection[] arr2 = this.getSections();
for (int integer3 = arr2.length - 1; integer3 >= 0; --integer3) {
final LevelChunkSection caj4 = arr2[integer3];
if (!LevelChunkSection.isEmpty(caj4)) {
return caj4;
}
}
return null;
}
default int getHighestSectionPosition() {
final LevelChunkSection caj2 = this.getHighestSection();
return (caj2 == null) ? 0 : caj2.bottomBlockY();
}
Set<BlockPos> getBlockEntitiesPos();
LevelChunkSection[] getSections();
Collection<Map.Entry<Heightmap.Types, Heightmap>> getHeightmaps();
void setHeightmap(final Heightmap.Types a, final long[] arr);
Heightmap getOrCreateHeightmapUnprimed(final Heightmap.Types a);
int getHeight(final Heightmap.Types a, final int integer2, final int integer3);
ChunkPos getPos();
void setLastSaveTime(final long long1);
Map<String, StructureStart> getAllStarts();
void setAllStarts(final Map<String, StructureStart> map);
default boolean isYSpaceEmpty(int integer1, int integer2) {
if (integer1 < 0) {
integer1 = 0;
}
if (integer2 >= 256) {
integer2 = 255;
}
for (int integer3 = integer1; integer3 <= integer2; integer3 += 16) {
if (!LevelChunkSection.isEmpty(this.getSections()[integer3 >> 4])) {
return false;
}
}
return true;
}
@Nullable
ChunkBiomeContainer getBiomes();
void setUnsaved(final boolean boolean1);
boolean isUnsaved();
ChunkStatus getStatus();
void removeBlockEntity(final BlockPos fk);
default void markPosForPostprocessing(final BlockPos fk) {
LogManager.getLogger().warn("Trying to mark a block for PostProcessing @ {}, but this operation is not supported.", fk);
}
ShortList[] getPostProcessing();
default void addPackedPostProcess(final short short1, final int integer) {
getOrCreateOffsetList(this.getPostProcessing(), integer).add(short1);
}
default void setBlockEntityNbt(final CompoundTag jt) {
LogManager.getLogger().warn("Trying to set a BlockEntity, but this operation is not supported.");
}
@Nullable
CompoundTag getBlockEntityNbt(final BlockPos fk);
@Nullable
CompoundTag getBlockEntityNbtForSaving(final BlockPos fk);
Stream<BlockPos> getLights();
TickList<Block> getBlockTicks();
TickList<Fluid> getLiquidTicks();
default BitSet getCarvingMask(final GenerationStep.Carving a) {
throw Util.<RuntimeException>pauseInIde(new RuntimeException("Meaningless in this context"));
}
UpgradeData getUpgradeData();
void setInhabitedTime(final long long1);
long getInhabitedTime();
default ShortList getOrCreateOffsetList(final ShortList[] arr, final int integer) {
if (arr[integer] == null) {
arr[integer] = (ShortList)new ShortArrayList();
}
return arr[integer];
}
boolean isLightCorrect();
void setLightCorrect(final boolean boolean1);
}