9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2026-01-04 15:41:40 +00:00
Files
Leaf/leaf-archived-patches/unapplied/server/minecraft-patches/features/0059-Remove-stream-in-trial-spawner-ticking.patch
Dreeam 236010caba Cooking Tutorial
1. Wet the drys
2. Dry the wets
3. Wet the drys
4. Dry the wets
5. Wet the drys
6. Now dust the wets
2025-03-28 03:11:27 -04:00

82 lines
3.8 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
Date: Sat, 5 Oct 2024 15:39:15 -0400
Subject: [PATCH] Remove stream in trial spawner ticking
diff --git a/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerState.java b/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerState.java
index 3e8d0c8d8409b6ba2e2846d7d64cdcc8fc6094a4..2f8324ce552f982f6b3388d9fa5a63fb9bee625b 100644
--- a/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerState.java
+++ b/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerState.java
@@ -173,17 +173,21 @@ public enum TrialSpawnerState implements StringRepresentable {
}
private static Optional<Vec3> calculatePositionToSpawnSpawner(ServerLevel level, BlockPos pos, TrialSpawner spawner, TrialSpawnerData spawnerData) {
- List<Player> list = spawnerData.detectedPlayers
- .stream()
- .map(level::getPlayerByUUID)
- .filter(Objects::nonNull)
- .filter(
- player -> !player.isCreative()
- && !player.isSpectator()
- && player.isAlive()
- && player.distanceToSqr(pos.getCenter()) <= Mth.square(spawner.getRequiredPlayerRange())
- )
- .toList();
+ // Leaf start - Remove stream in trial spawner ticking
+ List<Player> list = new java.util.ArrayList<>();
+
+ for (UUID uuid : spawnerData.detectedPlayers) {
+ Player player = level.getPlayerByUUID(uuid);
+
+ if (player != null
+ && !player.isCreative()
+ && !player.isSpectator()
+ && player.isAlive()
+ && player.distanceToSqr(pos.getCenter()) <= Mth.square(spawner.getRequiredPlayerRange())) {
+ list.add(player);
+ }
+ }
+ // Leaf end - Remove stream in trial spawner ticking
if (list.isEmpty()) {
return Optional.empty();
} else {
@@ -203,16 +207,29 @@ public enum TrialSpawnerState implements StringRepresentable {
@Nullable
private static Entity selectEntityToSpawnItemAbove(List<Player> player, Set<UUID> currentMobs, TrialSpawner spawner, BlockPos pos, ServerLevel level) {
- Stream<Entity> stream = currentMobs.stream()
- .map(level::getEntity)
- .filter(Objects::nonNull)
- .filter(entity -> entity.isAlive() && entity.distanceToSqr(pos.getCenter()) <= Mth.square(spawner.getRequiredPlayerRange()));
- List<? extends Entity> list = level.random.nextBoolean() ? stream.toList() : player;
- if (list.isEmpty()) {
- return null;
+ // Leaf start - Remove stream in trial spawner ticking
+ if (level.random.nextBoolean()) {
+ List<Entity> list = new java.util.ArrayList<>();
+ for (UUID uuid : currentMobs) {
+ Entity entity = level.getEntity(uuid);
+ if (entity != null && entity.isAlive() && entity.distanceToSqr(pos.getCenter()) <= Mth.square(spawner.getRequiredPlayerRange())) {
+ list.add(entity);
+ }
+ }
+
+ if (list.isEmpty()) {
+ return null;
+ } else {
+ return list.size() == 1 ? list.getFirst() : Util.getRandom(list, level.random);
+ }
} else {
- return list.size() == 1 ? list.getFirst() : Util.getRandom(list, level.random);
+ if (player.isEmpty()) {
+ return null;
+ } else {
+ return player.size() == 1 ? player.getFirst() : Util.getRandom(player, level.random);
+ }
}
+ // Leaf end - Remove stream in trial spawner ticking
}
private boolean timeToSpawnItemSpawner(ServerLevel level, TrialSpawnerData spawnerData) {