Files
Purpur/patches/server/0178-Add-toggle-for-end-portal-safe-teleporting.patch
granny 4f12f5d3d0 Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@4d111a3 Un-experimentalize Entity TP APIs (#9964)
PaperMC/Paper@2182d47 Update mapping-io (#9975)
PaperMC/Paper@9993eb9 Updates documentation in EntityEquipment.java (#9992)
PaperMC/Paper@2184fbc Log correct recipes and advancement count on server start (#9978)
PaperMC/Paper@8bda1f7 Remove unnecessary durability check in ItemStack#isSimilar (#9979)
PaperMC/Paper@977a729 [ci skip] Correct Windows requiring path to gradlew (#9976)
PaperMC/Paper@3766afa [ci skip] Add mention of FQ imports (#9994)
PaperMC/Paper@40872ec Fix CraftMetaItem#addAttributeModifier duplication check (#9995)
PaperMC/Paper@ffa4115 Configurable Dry and Wet Farmland Tick Rates (#9968)
PaperMC/Paper@37bee09 Restore vanilla entity drops behavior (#7650)
PaperMC/Paper@5cbd535 Fix Mushroom cow stew api (#9934)
PaperMC/Paper@8e061ce Add Structure check API (#9062)
PaperMC/Paper@9271ee7 Dont resend blocks on interactions (#9413)
PaperMC/Paper@931781c [ci skip] rebuild patches
2023-12-06 16:18:27 -08: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 3cbed62b617cf3147030b185f6ae6d829aee9476..a275702357c21187225710858c10a7b184e73879 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -3196,7 +3196,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 f80f6da484f4144e743079e5104bf503419074b2..2deddc746e43896584bd65ba8e7971a80acb4a4d 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 36010960bd8511c17cb00bf4eda4cb0cfb89cf58..36fe53481de6b72841ac7b7a771bba355726941b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -631,6 +631,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 mobsSpawnOnPackedIce = true;
public boolean mobsSpawnOnBlueIce = true;
private void iceSettings() {