Package net.minecraft.world
Class PortalUtil
java.lang.Object
net.minecraft.world.PortalUtil
- Mappings:
Namespace Name official n
intermediary net/minecraft/class_5459
named net/minecraft/world/PortalUtil
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
static class
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescription(package private) static com.mojang.datafixers.util.Pair<PortalUtil.IntBounds,Integer>
findLargestRectangle(int[] heights)
Finds the largest rectangle within a histogram, where the vertical bars each have width 1 and height specified inheights
.static PortalUtil.Rectangle
getLargestRectangle(BlockPos center, Direction.Axis primaryAxis, int primaryMaxBlocks, Direction.Axis secondaryAxis, int secondaryMaxBlocks, Predicate<BlockPos> predicate)
Gets the largest rectangle of blocks along two axes for which all blocks meet a predicate.method_34851(BlockView blockView, BlockPos blockPos, Block block, Direction direction, Block block2)
private static int
moveWhile(Predicate<BlockPos> predicate, BlockPos.Mutable mutable, Direction direction, int max)
-
Constructor Details
-
PortalUtil
public PortalUtil()
-
-
Method Details
-
getLargestRectangle
public static PortalUtil.Rectangle getLargestRectangle(BlockPos center, Direction.Axis primaryAxis, int primaryMaxBlocks, Direction.Axis secondaryAxis, int secondaryMaxBlocks, Predicate<BlockPos> predicate)Gets the largest rectangle of blocks along two axes for which all blocks meet a predicate. Used for getting rectangles of Nether portal blocks.- Mappings:
Namespace Name Mixin selector official a
Ln;a(Lgg;Lgl$a;ILgl$a;ILjava/util/function/Predicate;)Ln$a;
intermediary method_30574
Lnet/minecraft/class_5459;method_30574(Lnet/minecraft/class_2338;Lnet/minecraft/class_2350$class_2351;ILnet/minecraft/class_2350$class_2351;ILjava/util/function/Predicate;)Lnet/minecraft/class_5459$class_5460;
named getLargestRectangle
Lnet/minecraft/world/PortalUtil;getLargestRectangle(Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/Direction$Axis;ILnet/minecraft/util/math/Direction$Axis;ILjava/util/function/Predicate;)Lnet/minecraft/world/PortalUtil$Rectangle;
-
moveWhile
private static int moveWhile(Predicate<BlockPos> predicate, BlockPos.Mutable mutable, Direction direction, int max)- Mappings:
Namespace Name Mixin selector official a
Ln;a(Ljava/util/function/Predicate;Lgg$a;Lgl;I)I
intermediary method_30575
Lnet/minecraft/class_5459;method_30575(Ljava/util/function/Predicate;Lnet/minecraft/class_2338$class_2339;Lnet/minecraft/class_2350;I)I
named moveWhile
Lnet/minecraft/world/PortalUtil;moveWhile(Ljava/util/function/Predicate;Lnet/minecraft/util/math/BlockPos$Mutable;Lnet/minecraft/util/math/Direction;I)I
-
findLargestRectangle
static com.mojang.datafixers.util.Pair<PortalUtil.IntBounds,Integer> findLargestRectangle(int[] heights)Finds the largest rectangle within a histogram, where the vertical bars each have width 1 and height specified inheights
.- Parameters:
heights
- the heights of bars in the histogram- Returns:
- the base of the rectangle as an inclusive range and the height of the rectangle packed in a pair
- See Also:
- Largest Rectangle in Histogram - LeetCode
- Implementation Note:
- This implementation solves the problem using a stack. The
stack maintains a collection of height limits of rectangles that may grow as the
array iteration continues. When a new height is encountered, each position
p
in the stack would be popped if the rectangle with height limit at positionp
can no longer extend right. The popped rectangle becomes the return value if it has a larger area than the current candidate.When the rectangle area is calculated, the range is between
p0 + 1
, wherep0
is the current top of stack after popping rectangles that can no longer extend, and the current iterated positioni
. - Mappings:
Namespace Name Mixin selector official a
Ln;a([I)Lcom/mojang/datafixers/util/Pair;
intermediary method_30576
Lnet/minecraft/class_5459;method_30576([I)Lcom/mojang/datafixers/util/Pair;
named findLargestRectangle
Lnet/minecraft/world/PortalUtil;findLargestRectangle([I)Lcom/mojang/datafixers/util/Pair;
-
method_34851
public static Optional<BlockPos> method_34851(BlockView blockView, BlockPos blockPos, Block block, Direction direction, Block block2)- Mappings:
Namespace Name Mixin selector official a
Ln;a(Lbvt;Lgg;Lbzo;Lgl;Lbzo;)Ljava/util/Optional;
intermediary method_34851
Lnet/minecraft/class_5459;method_34851(Lnet/minecraft/class_1922;Lnet/minecraft/class_2338;Lnet/minecraft/class_2248;Lnet/minecraft/class_2350;Lnet/minecraft/class_2248;)Ljava/util/Optional;
named method_34851
Lnet/minecraft/world/PortalUtil;method_34851(Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/Block;Lnet/minecraft/util/math/Direction;Lnet/minecraft/block/Block;)Ljava/util/Optional;
-