geforkt von Mirrors/Paper
4104545b11
"It was from a different time before books were as jank as they are now. As time has gone on they've only proven to be worse and worse."
41 Zeilen
2.3 KiB
Diff
41 Zeilen
2.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Mon, 30 Apr 2018 17:15:26 -0400
|
|
Subject: [PATCH] Block Enderpearl Travel Exploit
|
|
|
|
Players are able to use alt accounts and enderpearls to travel
|
|
long distances utilizing the pearls in unloaded chunks and loading
|
|
the chunk later when convenient.
|
|
|
|
This disables that by not saving the thrower when the chunk is unloaded.
|
|
|
|
This is mainly useful for survival servers that do not allow freeform teleporting.
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
index 9225372cb9ef51a8cfbd4cee543c250aa2ac9c49..a0a846a2e60bdc17537bd697137f65321c1a61d8 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -357,4 +357,10 @@ public class PaperWorldConfig {
|
|
private void disableSprintInterruptionOnAttack() {
|
|
disableSprintInterruptionOnAttack = getBoolean("game-mechanics.disable-sprint-interruption-on-attack", false);
|
|
}
|
|
+
|
|
+ public boolean disableEnderpearlExploit = true;
|
|
+ private void disableEnderpearlExploit() {
|
|
+ disableEnderpearlExploit = getBoolean("game-mechanics.disable-unloaded-chunk-enderpearl-exploit", disableEnderpearlExploit);
|
|
+ log("Disable Unloaded Chunk Enderpearl Exploit: " + (disableEnderpearlExploit ? "enabled" : "disabled"));
|
|
+ }
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
|
index c72ec22beff6aa1f7932fa44dc7d591ceeec1158..c25cb17ef1a7c56e10ce3ccb5665c9dce3e6efa6 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
|
@@ -88,6 +88,7 @@ public abstract class Projectile extends Entity {
|
|
protected void readAdditionalSaveData(CompoundTag nbt) {
|
|
if (nbt.hasUUID("Owner")) {
|
|
this.ownerUUID = nbt.getUUID("Owner");
|
|
+ if (this instanceof ThrownEnderpearl && this.level != null && this.level.paperConfig.disableEnderpearlExploit) { this.ownerUUID = null; } // Paper - Don't store shooter name for pearls to block enderpearl travel exploit
|
|
}
|
|
|
|
this.leftOwner = nbt.getBoolean("LeftOwner");
|