mirror of
https://github.com/barkeser2002/CatServer.git
synced 2026-09-25 04:20:02 +03:00
63 lines
2.8 KiB
Diff
63 lines
2.8 KiB
Diff
--- ../src-base/minecraft/net/minecraft/pathfinding/WalkNodeProcessor.java
|
|
+++ ../src-work/minecraft/net/minecraft/pathfinding/WalkNodeProcessor.java
|
|
@@ -23,6 +23,7 @@
|
|
public class WalkNodeProcessor extends NodeProcessor
|
|
{
|
|
protected float avoidsWater;
|
|
+ protected EntityLiving currentEntity;
|
|
|
|
public void init(IBlockAccess sourceIn, EntityLiving mob)
|
|
{
|
|
@@ -295,7 +296,9 @@
|
|
PathNodeType pathnodetype = PathNodeType.BLOCKED;
|
|
double d0 = (double)entitylivingIn.width / 2.0D;
|
|
BlockPos blockpos = new BlockPos(entitylivingIn);
|
|
+ this.currentEntity = entitylivingIn;
|
|
pathnodetype = this.getPathNodeType(blockaccessIn, x, y, z, xSize, ySize, zSize, canBreakDoorsIn, canEnterDoorsIn, enumset, pathnodetype, blockpos);
|
|
+ this.currentEntity = null;
|
|
|
|
if (enumset.contains(PathNodeType.FENCE))
|
|
{
|
|
@@ -399,6 +402,8 @@
|
|
{
|
|
pathnodetype = PathNodeType.DAMAGE_CACTUS;
|
|
}
|
|
+
|
|
+ if (pathnodetype1 == PathNodeType.DAMAGE_OTHER) pathnodetype = PathNodeType.DAMAGE_OTHER;
|
|
}
|
|
|
|
pathnodetype = this.checkNeighborBlocks(blockaccessIn, x, y, z, pathnodetype);
|
|
@@ -417,16 +422,19 @@
|
|
{
|
|
if (i != 0 || j != 0)
|
|
{
|
|
- Block block = p_193578_1_.getBlockState(blockpos$pooledmutableblockpos.setPos(i + p_193578_2_, p_193578_3_, j + p_193578_4_)).getBlock();
|
|
+ IBlockState state = p_193578_1_.getBlockState(blockpos$pooledmutableblockpos.setPos(i + p_193578_2_, p_193578_3_, j + p_193578_4_));
|
|
+ Block block = state.getBlock();
|
|
+ PathNodeType type = block.getAiPathNodeType(state, p_193578_1_, blockpos$pooledmutableblockpos, this.currentEntity);
|
|
|
|
- if (block == Blocks.CACTUS)
|
|
+ if (block == Blocks.CACTUS || type == PathNodeType.DAMAGE_CACTUS)
|
|
{
|
|
p_193578_5_ = PathNodeType.DANGER_CACTUS;
|
|
}
|
|
- else if (block == Blocks.FIRE)
|
|
+ else if (block == Blocks.FIRE || type == PathNodeType.DAMAGE_FIRE)
|
|
{
|
|
p_193578_5_ = PathNodeType.DANGER_FIRE;
|
|
}
|
|
+ else if (type == PathNodeType.DAMAGE_OTHER) p_193578_5_ = PathNodeType.DANGER_OTHER;
|
|
}
|
|
}
|
|
}
|
|
@@ -443,6 +451,9 @@
|
|
Block block = iblockstate.getBlock();
|
|
Material material = iblockstate.getMaterial();
|
|
|
|
+ PathNodeType type = block.getAiPathNodeType(iblockstate, p_189553_1_, blockpos, this.currentEntity);
|
|
+ if (type != null) return type;
|
|
+
|
|
if (material == Material.AIR)
|
|
{
|
|
return PathNodeType.OPEN;
|