mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-18 14:24:17 +08:00
0318e62b45
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 0969eedc Clarify furnace burn time behaviour as per SPIGOT-844 16453bfd SPIGOT-4503: Add API to insert complete ItemStack into Jukebox CraftBukkit Changes:dff66dfc
Reduce copying of positions from block states91cae6ef
SPIGOT-4387: Durability looping from cancelled BlockPlaceEvent24c5e68c
SPIGOT-4493: Allow burnt out furnaces to remain lit like Vanilla whilst retaining SPIGOT-844 APIbc943daf
Fix Jukebox API not synchronizing playing data with statefe89a8c1
SPIGOT-4503: Add API to insert complete ItemStack into Jukeboxfc102494
Make CraftBlockState use BlockPosition89ab4887
SPIGOT-4543: Jukebox playing calls should not use legacy data6ff5a64c
SPIGOT-4541: Cancelled bucket events require inventory update
69 lines
4.5 KiB
Diff
69 lines
4.5 KiB
Diff
From 8964e2d4d208ad60e4f8373c32c062401d9f1c5f Mon Sep 17 00:00:00 2001
|
|
From: Gabriele C <sgdc3.mail@gmail.com>
|
|
Date: Mon, 22 Oct 2018 17:34:10 +0200
|
|
Subject: [PATCH] Add option to prevent players from moving into unloaded
|
|
chunks #1551
|
|
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
index 48920b045..77368b17a 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -567,4 +567,9 @@ public class PaperWorldConfig {
|
|
replacementBlocks = getList("anti-xray.replacement-blocks", Arrays.asList("stone", "planks"));
|
|
log("Anti-Xray: " + (antiXray ? "enabled" : "disabled") + " / Engine Mode: " + engineMode.getDescription() + " / Chunk Edge Mode: " + chunkEdgeMode.getDescription() + " / Up to " + ((maxChunkSectionIndex + 1) * 16) + " blocks / Update Radius: " + updateRadius);
|
|
}
|
|
+
|
|
+ public boolean preventMovingIntoUnloadedChunks = false;
|
|
+ private void preventMovingIntoUnloadedChunks() {
|
|
+ preventMovingIntoUnloadedChunks = getBoolean("prevent-moving-into-unloaded-chunks", false);
|
|
+ }
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
index f2f977fff..96db9121b 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
@@ -342,6 +342,13 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable {
|
|
}
|
|
speed *= 2f; // TODO: Get the speed of the vehicle instead of the player
|
|
|
|
+ // Paper start - Prevent moving into unloaded chunks
|
|
+ if (player.world.paperConfig.preventMovingIntoUnloadedChunks && !worldserver.isChunkLoaded((int) Math.floor(packetplayinvehiclemove.getX()) >> 4, (int) Math.floor(packetplayinvehiclemove.getZ()) >> 4, false)) {
|
|
+ this.networkManager.sendPacket(new PacketPlayOutVehicleMove(entity));
|
|
+ return;
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
if (d10 - d9 > Math.max(100.0D, Math.pow((double) (org.spigotmc.SpigotConfig.movedTooQuicklyMultiplier * (float) i * speed), 2)) && (!this.minecraftServer.H() || !this.minecraftServer.G().equals(entity.getDisplayName().getString()))) {
|
|
// CraftBukkit end
|
|
PlayerConnection.LOGGER.warn("{} (vehicle of {}) moved too quickly! {},{},{}", entity.getDisplayName().getString(), this.player.getDisplayName().getString(), d6, d7, d8);
|
|
@@ -849,9 +856,9 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable {
|
|
double d1 = this.player.locY;
|
|
double d2 = this.player.locZ;
|
|
double d3 = this.player.locY;
|
|
- double d4 = packetplayinflying.a(this.player.locX);
|
|
+ double d4 = packetplayinflying.a(this.player.locX);double toX = d4; // Paper - OBFHELPER
|
|
double d5 = packetplayinflying.b(this.player.locY);
|
|
- double d6 = packetplayinflying.c(this.player.locZ);
|
|
+ double d6 = packetplayinflying.c(this.player.locZ);double toZ = d6; // Paper - OBFHELPER
|
|
float f = packetplayinflying.a(this.player.yaw);
|
|
float f1 = packetplayinflying.b(this.player.pitch);
|
|
double d7 = d4 - this.l;
|
|
@@ -891,6 +898,13 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable {
|
|
speed = player.abilities.walkSpeed * 10f;
|
|
}
|
|
|
|
+ // Paper start - Prevent moving into unloaded chunks
|
|
+ if (player.world.paperConfig.preventMovingIntoUnloadedChunks && (this.player.locX != toX || this.player.locZ != toZ) && !worldserver.isChunkLoaded((int) Math.floor(toX) >> 4, (int) Math.floor(toZ) >> 4, false)) {
|
|
+ this.internalTeleport(this.player.locX, this.player.locY, this.player.locZ, this.player.yaw, this.player.pitch, Collections.emptySet());
|
|
+ return;
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
if (!this.player.H() && (!this.player.getWorldServer().getGameRules().getBoolean("disableElytraMovementCheck") || !this.player.dc())) {
|
|
float f2 = this.player.dc() ? 300.0F : 100.0F;
|
|
|
|
--
|
|
2.20.1
|
|
|