From 7f479c20860edadab9ad40dedfb35c58952010a1 Mon Sep 17 00:00:00 2001 From: Aleksey Date: Tue, 22 Dec 2020 09:41:27 +0300 Subject: [PATCH] Fix portal StackOverflow --- .../java/ru/betterend/blocks/EndPortalBlock.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/betterend/blocks/EndPortalBlock.java b/src/main/java/ru/betterend/blocks/EndPortalBlock.java index 27672179..d4899cc2 100644 --- a/src/main/java/ru/betterend/blocks/EndPortalBlock.java +++ b/src/main/java/ru/betterend/blocks/EndPortalBlock.java @@ -135,6 +135,12 @@ public class EndPortalBlock extends NetherPortalBlock implements IRenderTypeable } private BlockPos.Mutable findCenter(World world, BlockPos.Mutable pos, Direction.Axis axis) { + return this.findCenter(world, pos, axis, 1); + } + + private BlockPos.Mutable findCenter(World world, BlockPos.Mutable pos, Direction.Axis axis, int step) { + if (step > 21) return pos; + BlockState right, left; Direction rightDir, leftDir; if (axis == Direction.Axis.X) { @@ -150,13 +156,13 @@ public class EndPortalBlock extends NetherPortalBlock implements IRenderTypeable } BlockState down = world.getBlockState(pos.down()); if (down.isOf(this)) { - return findCenter(world, pos.move(Direction.DOWN), axis); + return findCenter(world, pos.move(Direction.DOWN), axis, ++step); } else if (right.isOf(this) && left.isOf(this)) { return pos; } else if (right.isOf(this)) { - return findCenter(world, pos.move(rightDir), axis); + return findCenter(world, pos.move(rightDir), axis, ++step); } else if (left.isOf(this)) { - return findCenter(world, pos.move(leftDir), axis); + return findCenter(world, pos.move(leftDir), axis, ++step); } return pos; }