Package net.minecraft.world
Class PortalUtil
java.lang.Object
net.minecraft.world.PortalUtil
- Mappings:
Namespace Name official nintermediary net/minecraft/class_5459named net/minecraft/world/PortalUtil
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic class -
Constructor Summary
Constructors -
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.RectanglegetLargestRectangle(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 intmoveWhile(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 aLn;a(Lgg;Lgl$a;ILgl$a;ILjava/util/function/Predicate;)Ln$a;intermediary method_30574Lnet/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 getLargestRectangleLnet/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 aLn;a(Ljava/util/function/Predicate;Lgg$a;Lgl;I)Iintermediary method_30575Lnet/minecraft/class_5459;method_30575(Ljava/util/function/Predicate;Lnet/minecraft/class_2338$class_2339;Lnet/minecraft/class_2350;I)Inamed moveWhileLnet/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
pin the stack would be popped if the rectangle with height limit at positionpcan 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, wherep0is the current top of stack after popping rectangles that can no longer extend, and the current iterated positioni. - Mappings:
Namespace Name Mixin selector official aLn;a([I)Lcom/mojang/datafixers/util/Pair;intermediary method_30576Lnet/minecraft/class_5459;method_30576([I)Lcom/mojang/datafixers/util/Pair;named findLargestRectangleLnet/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 aLn;a(Lbvt;Lgg;Lbzo;Lgl;Lbzo;)Ljava/util/Optional;intermediary method_34851Lnet/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_34851Lnet/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;
-