mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-02 13:07:06 +01:00
bffb08c2f9
The Paper method was chosen for deprecation because it was more restrictive in that it has an isGliding check.
42 lines
2.9 KiB
Diff
42 lines
2.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Sun, 12 Jun 2022 11:47:24 -0700
|
|
Subject: [PATCH] Add option for strict advancement dimension checks
|
|
|
|
Craftbukkit attempts to translate worlds that use the
|
|
same generation as the Overworld, The Nether, or The End
|
|
to use those dimensions when checking the `changed_dimension`
|
|
criteria trigger, or whether to trigger the `NETHER_TRAVEL`
|
|
distance trigger. This adds a config option to ignore that
|
|
and use the exact dimension key of the worlds involved.
|
|
|
|
diff --git a/src/main/java/net/minecraft/advancements/critereon/LocationPredicate.java b/src/main/java/net/minecraft/advancements/critereon/LocationPredicate.java
|
|
index d4a673a9fb604876c554f955ed13ad31a2adb217..e75b3df4db9cb618aef4837acb8cde92ed5a4b01 100644
|
|
--- a/src/main/java/net/minecraft/advancements/critereon/LocationPredicate.java
|
|
+++ b/src/main/java/net/minecraft/advancements/critereon/LocationPredicate.java
|
|
@@ -30,7 +30,7 @@ public record LocationPredicate(Optional<LocationPredicate.PositionPredicate> po
|
|
public boolean matches(ServerLevel world, double x, double y, double z) {
|
|
if (this.position.isPresent() && !this.position.get().matches(x, y, z)) {
|
|
return false;
|
|
- } else if (this.dimension.isPresent() && this.dimension.get() != world.dimension()) {
|
|
+ } else if (this.dimension.isPresent() && this.dimension.get() != (io.papermc.paper.configuration.GlobalConfiguration.get().misc.strictAdvancementDimensionCheck ? world.dimension() : org.bukkit.craftbukkit.util.CraftDimensionUtil.getMainDimensionKey(world))) { // Paper
|
|
return false;
|
|
} else {
|
|
BlockPos blockPos = BlockPos.containing(x, y, z);
|
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
index edd8eb7e9b4c676bd823a5081f3f23f8eda13eba..fdd8ae699ebffcce391321d0c0d48a2bf171de12 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
@@ -1316,6 +1316,12 @@ public class ServerPlayer extends Player {
|
|
ResourceKey<Level> maindimensionkey = CraftDimensionUtil.getMainDimensionKey(origin);
|
|
ResourceKey<Level> maindimensionkey1 = CraftDimensionUtil.getMainDimensionKey(this.level());
|
|
|
|
+ // Paper start - config for strict advancement checks for dimensions
|
|
+ if (io.papermc.paper.configuration.GlobalConfiguration.get().misc.strictAdvancementDimensionCheck) {
|
|
+ maindimensionkey = resourcekey;
|
|
+ maindimensionkey1 = resourcekey1;
|
|
+ }
|
|
+ // Paper end
|
|
CriteriaTriggers.CHANGED_DIMENSION.trigger(this, maindimensionkey, maindimensionkey1);
|
|
if (maindimensionkey != resourcekey || maindimensionkey1 != resourcekey1) {
|
|
CriteriaTriggers.CHANGED_DIMENSION.trigger(this, resourcekey, resourcekey1);
|