Files
Purpur/patches/server/0191-Add-toggle-for-end-portal-safe-teleporting.patch
Encode42 492436a23b Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@f6a69de Undeprecate getOfflinePlayer (#7773)
PaperMC/Paper@a117da6 Add PlayerStopUsingItemEvent (#7787)
PaperMC/Paper@f3a8a0b FallingBlock auto expire setting (#7037)
PaperMC/Paper@4219389 Don't tick markers (#7299)
PaperMC/Paper@2515bc4 Improve configurable door difficulty (#6985)
PaperMC/Paper@8c9d98e Clean unused field for Configurable door breaking difficulty (#7793)
PaperMC/Paper@b831784 Only log for passenger / vehicle world mismatch
PaperMC/Paper@7a6163b Add Alternate Current's redstone implementation as an alternative to Vanilla and Eigencraft's. (#7701)
PaperMC/Paper@1a17a83 Move redstone config changes to Eigencraft patch
2022-05-07 14:07:40 -04:00

63 lines
3.3 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Wed, 9 Jun 2021 11:03:40 -0500
Subject: [PATCH] Add toggle for end portal safe teleporting
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index c3b6be428c2536ac6423dd5024a46ed0324e0216..219f9255d0a20bd66a7d33d84f6224621a56c030 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2832,7 +2832,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
this.processPortalCooldown();
- this.tickEndPortal(); // Paper - make end portalling safe
+ if (this.level.purpurConfig.endPortalSafeTeleporting) this.tickEndPortal(); // Paper - make end portalling safe // Purpur
}
}
diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java
index bd4f980f68330fc46a02a6f4bb4403fac3a91919..8601ea0575323ea7cf07c4909a495bf5b1d10162 100644
--- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java
@@ -61,6 +61,22 @@ public class EndPortalBlock extends BaseEntityBlock {
// return; // CraftBukkit - always fire event in case plugins wish to change it
}
+ // Purpur start
+ if (!world.purpurConfig.endPortalSafeTeleporting) {
+ // CraftBukkit start - Entity in portal
+ EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ()));
+ world.getCraftServer().getPluginManager().callEvent(event);
+
+ if (entity instanceof ServerPlayer) {
+ ((ServerPlayer) entity).changeDimension(worldserver, PlayerTeleportEvent.TeleportCause.END_PORTAL);
+ return;
+ }
+ // CraftBukkit end
+ entity.changeDimension(worldserver);
+ return;
+ }
+ // Purpur end
+
// Paper start - move all of this logic into portal tick
entity.portalWorld = ((ServerLevel)world);
entity.portalBlock = pos.immutable();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 1f864bdc1e6d8cc389c0c9bccafb9ef596ce366a..90fb53ea2de11f24024240fa35bd4dd4da333d0e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -621,6 +621,11 @@ public class PurpurWorldConfig {
furnaceUseLavaFromUnderneath = getBoolean("blocks.furnace.use-lava-from-underneath", furnaceUseLavaFromUnderneath);
}
+ public boolean endPortalSafeTeleporting = true;
+ private void endPortalSettings() {
+ endPortalSafeTeleporting = getBoolean("blocks.end_portal.safe-teleporting", endPortalSafeTeleporting);
+ }
+
public boolean snowOnBlueIce = true;
public boolean mobsSpawnOnPackedIce = true;
public boolean mobsSpawnOnBlueIce = true;