aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0195-Add-EntityTeleportEndGatewayEvent.patch
blob: 56df3551eaa2b7cc84fa588c7864c66cc5d1f076 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Shane Freeder <theboyetronic@gmail.com>
Date: Sat, 9 Jun 2018 14:08:39 +0200
Subject: [PATCH] Add EntityTeleportEndGatewayEvent


diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 946f289e0e681524c6fde696921965dbdedda372..d6017d9d71fb4b3a3df6eaa44da0ebda54c83da4 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -3301,8 +3301,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
             if (!this.isRemoved()) {
                 // CraftBukkit start
                 Location to = new Location(teleportTarget.newLevel().getWorld(), teleportTarget.pos().x, teleportTarget.pos().y, teleportTarget.pos().z, teleportTarget.yRot(), teleportTarget.xRot());
-                EntityTeleportEvent teleEvent = CraftEventFactory.callEntityTeleportEvent(this, to);
-                if (teleEvent.isCancelled()) {
+                // Paper start - gateway-specific teleport event
+                final EntityTeleportEvent teleEvent;
+                if (this.portalProcess != null && this.portalProcess.isSamePortal(((net.minecraft.world.level.block.EndGatewayBlock) net.minecraft.world.level.block.Blocks.END_GATEWAY)) && this.level.getBlockEntity(this.portalProcess.getEntryPosition()) instanceof net.minecraft.world.level.block.entity.TheEndGatewayBlockEntity theEndGatewayBlockEntity) {
+                    teleEvent = new com.destroystokyo.paper.event.entity.EntityTeleportEndGatewayEvent(this.getBukkitEntity(), this.getBukkitEntity().getLocation(), to, new org.bukkit.craftbukkit.block.CraftEndGateway(to.getWorld(), theEndGatewayBlockEntity));
+                    teleEvent.callEvent();
+                } else {
+                    teleEvent = CraftEventFactory.callEntityTeleportEvent(this, to);
+                }
+                // Paper end - gateway-specific teleport event
+                if (teleEvent.isCancelled() || teleEvent.getTo() == null) {
                     return null;
                 }
                 to = teleEvent.getTo();