mirror of
https://github.com/Minestom/Minestom.git
synced 2025-02-13 19:01:55 +01:00
make pathfinding classes internals
This commit is contained in:
parent
40a2168d52
commit
eee5778cfe
@ -8,6 +8,5 @@ import org.jetbrains.annotations.NotNull;
|
||||
* All pathfinder methods are available with {@link #getNavigator()}.
|
||||
*/
|
||||
public interface NavigableEntity {
|
||||
@NotNull
|
||||
Navigator getNavigator();
|
||||
@NotNull Navigator getNavigator();
|
||||
}
|
||||
|
@ -3,14 +3,14 @@ package net.minestom.server.entity.pathfinding;
|
||||
import com.extollit.gaming.ai.path.model.IBlockDescription;
|
||||
import com.extollit.gaming.ai.path.model.IBlockObject;
|
||||
import com.extollit.linalg.immutable.AxisAlignedBBox;
|
||||
import it.unimi.dsi.fastutil.shorts.Short2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.shorts.Short2ObjectOpenHashMap;
|
||||
import net.minestom.server.instance.block.Block;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import space.vectrix.flare.fastutil.Short2ObjectSyncMap;
|
||||
|
||||
public class PFBlock implements IBlockDescription, IBlockObject {
|
||||
|
||||
private static final Short2ObjectMap<PFBlock> BLOCK_DESCRIPTION_MAP = new Short2ObjectOpenHashMap<>();
|
||||
@ApiStatus.Internal
|
||||
public final class PFBlock implements IBlockDescription, IBlockObject {
|
||||
private static final Short2ObjectSyncMap<PFBlock> BLOCK_DESCRIPTION_MAP = Short2ObjectSyncMap.hashmap();
|
||||
|
||||
/**
|
||||
* Gets the {@link PFBlock} linked to the block state id.
|
||||
@ -21,22 +21,12 @@ public class PFBlock implements IBlockDescription, IBlockObject {
|
||||
* @return the {@link PFBlock} linked to {@code blockStateId}
|
||||
*/
|
||||
public static @NotNull PFBlock get(@NotNull Block block) {
|
||||
final short blockStateId = block.stateId();
|
||||
if (!BLOCK_DESCRIPTION_MAP.containsKey(blockStateId)) {
|
||||
synchronized (BLOCK_DESCRIPTION_MAP) {
|
||||
if (!BLOCK_DESCRIPTION_MAP.containsKey(blockStateId)) {
|
||||
final var pfBlock = new PFBlock(block);
|
||||
BLOCK_DESCRIPTION_MAP.put(blockStateId, pfBlock);
|
||||
return pfBlock;
|
||||
}
|
||||
}
|
||||
}
|
||||
return BLOCK_DESCRIPTION_MAP.get(blockStateId);
|
||||
return BLOCK_DESCRIPTION_MAP.computeIfAbsent(block.stateId(), state -> new PFBlock(block));
|
||||
}
|
||||
|
||||
private final Block block;
|
||||
|
||||
public PFBlock(Block block) {
|
||||
PFBlock(Block block) {
|
||||
this.block = block;
|
||||
}
|
||||
|
||||
|
@ -6,15 +6,15 @@ import com.extollit.gaming.ai.path.model.IColumnarSpace;
|
||||
import com.extollit.gaming.ai.path.model.IInstanceSpace;
|
||||
import net.minestom.server.instance.Chunk;
|
||||
import net.minestom.server.instance.block.Block;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
|
||||
public class PFColumnarSpace implements IColumnarSpace {
|
||||
|
||||
@ApiStatus.Internal
|
||||
public final class PFColumnarSpace implements IColumnarSpace {
|
||||
private final ColumnarOcclusionFieldList occlusionFieldList = new ColumnarOcclusionFieldList(this);
|
||||
private final PFInstanceSpace instanceSpace;
|
||||
private final Chunk chunk;
|
||||
|
||||
|
||||
public PFColumnarSpace(PFInstanceSpace instanceSpace, Chunk chunk) {
|
||||
PFColumnarSpace(PFInstanceSpace instanceSpace, Chunk chunk) {
|
||||
this.instanceSpace = instanceSpace;
|
||||
this.chunk = chunk;
|
||||
}
|
||||
|
@ -10,8 +10,7 @@ import net.minestom.server.instance.block.Block;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class PFInstanceSpace implements IInstanceSpace {
|
||||
|
||||
public final class PFInstanceSpace implements IInstanceSpace {
|
||||
private final Instance instance;
|
||||
private final Map<Chunk, PFColumnarSpace> chunkSpaceMap = new ConcurrentHashMap<>();
|
||||
|
||||
@ -28,9 +27,7 @@ public class PFInstanceSpace implements IInstanceSpace {
|
||||
@Override
|
||||
public IColumnarSpace columnarSpaceAt(int cx, int cz) {
|
||||
final Chunk chunk = instance.getChunk(cx, cz);
|
||||
if (chunk == null) {
|
||||
return null;
|
||||
}
|
||||
if (chunk == null) return null;
|
||||
return chunkSpaceMap.computeIfAbsent(chunk, c -> {
|
||||
final PFColumnarSpace cs = new PFColumnarSpace(this, c);
|
||||
c.setColumnarSpace(cs);
|
||||
|
Loading…
Reference in New Issue
Block a user