From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Telesphoreo Date: Mon, 25 Sep 2023 18:58:34 -0500 Subject: [PATCH] Patch large selector distance crash diff --git a/src/main/java/net/minecraft/advancements/critereon/MinMaxBounds.java b/src/main/java/net/minecraft/advancements/critereon/MinMaxBounds.java index 8897496323378080135127f53db004d576476c21..a4de9cfcbe7d7d6b05feb3a6be683437e9b00c2b 100644 --- a/src/main/java/net/minecraft/advancements/critereon/MinMaxBounds.java +++ b/src/main/java/net/minecraft/advancements/critereon/MinMaxBounds.java @@ -131,7 +131,7 @@ public interface MinMaxBounds { public static final MinMaxBounds.Doubles ANY = new MinMaxBounds.Doubles(Optional.empty(), Optional.empty()); public static final Codec CODEC = MinMaxBounds.createCodec(Codec.DOUBLE, MinMaxBounds.Doubles::new); - private Doubles(Optional optional, Optional optional2) { + public Doubles(Optional optional, Optional optional2) { // Scissors - private -> public this(optional, optional2, squareOpt(optional), squareOpt(optional2)); } diff --git a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java index 73c15a0c56a103ba4e62f0a51af8d42566b07245..0ea61a4c58bd6d126aff9872ba9c4dc27fb7c099 100644 --- a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java +++ b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java @@ -5,11 +5,13 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException; import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Optional; import java.util.UUID; import java.util.function.BiConsumer; import java.util.function.Function; import java.util.function.Predicate; import javax.annotation.Nullable; +import me.totalfreedom.scissors.MathUtility; import net.minecraft.advancements.critereon.MinMaxBounds; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.arguments.EntityArgument; @@ -60,9 +62,26 @@ public class EntitySelector { this.includesEntities = includesNonPlayers; this.worldLimited = localWorldOnly; this.predicate = basePredicate; - this.range = distance; + // Scissors start - Patch large selector distance crash + this.range = new MinMaxBounds.Doubles( + Optional.of(distance.min().get() != null ? Math.min(distance.min().get(), 1024) : null), + Optional.of(distance.max().get() != null ? Math.min(distance.max().get(), 1024) : null) + ); this.position = positionOffset; - this.aabb = box; + if (box != null) { + this.aabb = new AABB( + MathUtility.clampDouble(box.minX, -1024, 1025), + MathUtility.clampDouble(box.minY, -1024, 1025), + MathUtility.clampDouble(box.minZ, -1024, 1025), + MathUtility.clampDouble(box.maxX, -1024, 1025), + MathUtility.clampDouble(box.maxY, -1024, 1025), + MathUtility.clampDouble(box.maxZ, -1024, 1025), + false + ); + } else { + this.aabb = null; + } + // Scissors end this.order = sorter; this.currentEntity = senderOnly; this.playerName = playerName;