mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-22 16:39:22 +00:00
Readd Leaves protocols
This commit is contained in:
@@ -1,110 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Taiyou06 <kaandindar21@gmail.com>
|
||||
Date: Sat, 22 Mar 2025 12:51:28 +0100
|
||||
Subject: [PATCH] Remove streams on PlayerDetector
|
||||
|
||||
Dreeam TODO: Merge to single loop
|
||||
|
||||
diff --git a/net/minecraft/world/level/block/entity/trialspawner/PlayerDetector.java b/net/minecraft/world/level/block/entity/trialspawner/PlayerDetector.java
|
||||
index 774d4028f0be7c388abb47f8eb97011341f50f59..81d2dfdd8bd2a8b205e4b617911c277a366f0369 100644
|
||||
--- a/net/minecraft/world/level/block/entity/trialspawner/PlayerDetector.java
|
||||
+++ b/net/minecraft/world/level/block/entity/trialspawner/PlayerDetector.java
|
||||
@@ -21,28 +21,45 @@ import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
|
||||
public interface PlayerDetector {
|
||||
- PlayerDetector NO_CREATIVE_PLAYERS = (level, entitySelector, pos, maxDistance, requireLineOfSight) -> entitySelector.getPlayers(
|
||||
- level, player -> player.blockPosition().closerThan(pos, maxDistance) && !player.isCreative() && !player.isSpectator()
|
||||
- )
|
||||
- .stream()
|
||||
- .filter(player -> !requireLineOfSight || inLineOfSight(level, pos.getCenter(), player.getEyePosition()))
|
||||
- .map(Entity::getUUID)
|
||||
- .toList();
|
||||
- PlayerDetector INCLUDING_CREATIVE_PLAYERS = (level, entitySelector, pos, maxDistance, requireLineOfSight) -> entitySelector.getPlayers(
|
||||
- level, player -> player.blockPosition().closerThan(pos, maxDistance) && !player.isSpectator()
|
||||
- )
|
||||
- .stream()
|
||||
- .filter(player -> !requireLineOfSight || inLineOfSight(level, pos.getCenter(), player.getEyePosition()))
|
||||
- .map(Entity::getUUID)
|
||||
- .toList();
|
||||
+ // Leaf start - Remove streams on PlayerDetector
|
||||
+ PlayerDetector NO_CREATIVE_PLAYERS = (level, entitySelector, pos, maxDistance, requireLineOfSight) -> {
|
||||
+ List<? extends Player> players = entitySelector.getPlayers(
|
||||
+ level, player -> player.blockPosition().closerThan(pos, maxDistance) && !player.isCreative() && !player.isSpectator()
|
||||
+ );
|
||||
+ List<UUID> result = new java.util.ArrayList<>();
|
||||
+ for (Player player : players) {
|
||||
+ if (!requireLineOfSight || inLineOfSight(level, pos.getCenter(), player.getEyePosition())) {
|
||||
+ result.add(player.getUUID());
|
||||
+ }
|
||||
+ }
|
||||
+ return result;
|
||||
+ };
|
||||
+
|
||||
+ PlayerDetector INCLUDING_CREATIVE_PLAYERS = (level, entitySelector, pos, maxDistance, requireLineOfSight) -> {
|
||||
+ List<? extends Player> players = entitySelector.getPlayers(
|
||||
+ level, player -> player.blockPosition().closerThan(pos, maxDistance) && !player.isSpectator()
|
||||
+ );
|
||||
+ List<UUID> result = new java.util.ArrayList<>();
|
||||
+ for (Player player : players) {
|
||||
+ if (!requireLineOfSight || inLineOfSight(level, pos.getCenter(), player.getEyePosition())) {
|
||||
+ result.add(player.getUUID());
|
||||
+ }
|
||||
+ }
|
||||
+ return result;
|
||||
+ };
|
||||
+
|
||||
PlayerDetector SHEEP = (level, entitySelector, pos, maxDistance, requireLineOfSight) -> {
|
||||
AABB aabb = new AABB(pos).inflate(maxDistance);
|
||||
- return entitySelector.getEntities(level, EntityType.SHEEP, aabb, LivingEntity::isAlive)
|
||||
- .stream()
|
||||
- .filter(sheep -> !requireLineOfSight || inLineOfSight(level, pos.getCenter(), sheep.getEyePosition()))
|
||||
- .map(Entity::getUUID)
|
||||
- .toList();
|
||||
+ List<? extends Entity> sheep = entitySelector.getEntities(level, EntityType.SHEEP, aabb, LivingEntity::isAlive);
|
||||
+ List<UUID> result = new java.util.ArrayList<>();
|
||||
+ for (Entity entity : sheep) {
|
||||
+ if (!requireLineOfSight || inLineOfSight(level, pos.getCenter(), entity.getEyePosition())) {
|
||||
+ result.add(entity.getUUID());
|
||||
+ }
|
||||
+ }
|
||||
+ return result;
|
||||
};
|
||||
+ // Leaf end - Remove streams on PlayerDetector
|
||||
|
||||
List<UUID> detect(ServerLevel level, PlayerDetector.EntitySelector entitySelector, BlockPos pos, double maxDistance, boolean flag);
|
||||
|
||||
@@ -78,14 +95,31 @@ public interface PlayerDetector {
|
||||
return new PlayerDetector.EntitySelector() {
|
||||
@Override
|
||||
public List<Player> getPlayers(ServerLevel level, Predicate<? super Player> predicate) {
|
||||
- return players.stream().filter(predicate).toList();
|
||||
+ // Leaf start - Remove streams on PlayerDetector
|
||||
+ List<Player> result = new java.util.ArrayList<>();
|
||||
+ for (Player player : players) {
|
||||
+ if (predicate.test(player)) {
|
||||
+ result.add(player);
|
||||
+ }
|
||||
+ }
|
||||
+ return result;
|
||||
+ // Leaf end - Remove streams on PlayerDetector
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Entity> List<T> getEntities(
|
||||
ServerLevel level, EntityTypeTest<Entity, T> typeTest, AABB boundingBox, Predicate<? super T> predicate
|
||||
) {
|
||||
- return players.stream().map(typeTest::tryCast).filter(Objects::nonNull).filter(predicate).toList();
|
||||
+ // Leaf start - Remove streams on PlayerDetector
|
||||
+ List<T> result = new java.util.ArrayList<>();
|
||||
+ for (Player player : players) {
|
||||
+ T entity = typeTest.tryCast(player);
|
||||
+ if (entity != null && predicate.test(entity)) {
|
||||
+ result.add(entity);
|
||||
+ }
|
||||
+ }
|
||||
+ return result;
|
||||
+ // Leaf end - Remove streams on PlayerDetector
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user