Class PortalUtil

java.lang.Object
net.minecraft.world.PortalUtil

public class PortalUtil extends Object
Mappings:
Namespace Name
official n
intermediary net/minecraft/class_5459
named net/minecraft/world/PortalUtil
  • 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 in heights.
      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:
      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 position p 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, where p0 is the current top of stack after popping rectangles that can no longer extend, and the current iterated position i.

      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;