mirror of
https://github.com/YatopiaMC/Yatopia.git
synced 2024-11-14 22:56:29 +01:00
c09ee99f7e
Closes #257 Ports 2 patches from Purpur: Infinity-bow-settings & Allow-infinite-and-mending-enchantments-together Added an option for infinity with no arrows too. Option for custom locale has come! You can put a locale.json file in your server folder to change it. We've got the finest patches from Hydrinity ( Mykyta approved & allowed ) too. We have some amazing new options in yatopia.yml, we're gonna have documentation for them soon so stay tuned! Last but not least, chunk generation patches. We've tested them extensively so no weirdness happens. Thanks for using Yatopia as your production server software. Co-authored-by: Ivan Pekov <ivan@mrivanplays.com>
60 lines
3.4 KiB
Diff
60 lines
3.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Patrick Hemmer <patrick.hemmer@gmail.com>
|
|
Date: Tue, 11 Aug 2020 22:11:53 +0300
|
|
Subject: [PATCH] PaperPR: Use block distance in portal search radius
|
|
|
|
Original author: Patrick Hemmer <patrick.hemmer@gmail.com>
|
|
|
|
Previously when searching for a portal, the server would use the search radius to determine which chunks it needs to search, and then would
|
|
consider any portal within those chunks as a match, even if it is outside the search radius.
|
|
This changes it so that the portal list is filtered to only include portals within the configured search radius (ignoring the Y coordinate).
|
|
|
|
Ported to Yatopia and added per world config option by MrIvanPlays <ivan@mrivanplays.com>
|
|
|
|
diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java
|
|
index 4230872de3551393a35c567d07a570dd07976fb8..febd0a7413382e059b681a43cc9ac42ab5c14128 100644
|
|
--- a/src/main/java/de/minebench/origami/OrigamiConfig.java
|
|
+++ b/src/main/java/de/minebench/origami/OrigamiConfig.java
|
|
@@ -172,6 +172,11 @@ public final class OrigamiConfig {
|
|
&& pillagerCollisions && ironGolemCollisions && miscCollisions && itemCollisions
|
|
&& waterCreatureCollisions && waterAmbientCollisions;
|
|
}
|
|
+
|
|
+ public boolean useBlockDistanceInPortalSearchRadius = false;
|
|
+ private void useBlockDistanceInPortalSearchRadius() {
|
|
+ useBlockDistanceInPortalSearchRadius = getBoolean("use-block-distance-in-portal-search-radius", false);
|
|
+ }
|
|
// Yatopia end
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/PortalTravelAgent.java b/src/main/java/net/minecraft/server/PortalTravelAgent.java
|
|
index f6ffefd7e356c9c68cb6591cab55de9363442faf..eddf3dff9a00bf3c7318745e52befd4c04fa2af7 100644
|
|
--- a/src/main/java/net/minecraft/server/PortalTravelAgent.java
|
|
+++ b/src/main/java/net/minecraft/server/PortalTravelAgent.java
|
|
@@ -30,6 +30,13 @@ public class PortalTravelAgent {
|
|
}); // Yatopia
|
|
// Yatopia start
|
|
java.util.List<VillagePlaceRecord> list = villageplace.b(type -> type == VillagePlaceType.v, blockposition, i, VillagePlace.Occupancy.ANY).collect(java.util.stream.Collectors.toList());
|
|
+ if (world.origamiConfig.useBlockDistanceInPortalSearchRadius) {
|
|
+ list.removeIf(villagePlaceRecord -> {
|
|
+ BlockPosition portalPosition = villagePlaceRecord.getPosition();
|
|
+ return Math.abs(portalPosition.getX() - blockposition.getX()) > i
|
|
+ || Math.abs(portalPosition.getZ() - blockposition.getZ()) > i;
|
|
+ });
|
|
+ }
|
|
Optional<VillagePlaceRecord> optional = Optional.empty();
|
|
if (!list.isEmpty()) {
|
|
list.sort(comparator);
|
|
diff --git a/src/main/java/net/minecraft/server/VillagePlaceRecord.java b/src/main/java/net/minecraft/server/VillagePlaceRecord.java
|
|
index 0b40c2f4dada7d8432e3f91e9cf206c2bda3b24b..c8c231f3d5e8e495ebb9a27ae18f7665cb263330 100644
|
|
--- a/src/main/java/net/minecraft/server/VillagePlaceRecord.java
|
|
+++ b/src/main/java/net/minecraft/server/VillagePlaceRecord.java
|
|
@@ -62,6 +62,7 @@ public class VillagePlaceRecord {
|
|
return this.c != this.b.b();
|
|
}
|
|
|
|
+ public final BlockPosition getPosition() { return f(); } // Yatopia - OBFHELPER
|
|
public BlockPosition f() {
|
|
return this.a;
|
|
}
|