Skip to content

Commit d768ac3

Browse files
committed
1.4.2 Allow all deathspectating-related teleports
Turns out the teleport listener was canceling the teleports, so yea....
1 parent 54aaaf8 commit d768ac3

File tree

3 files changed

+17
-10
lines changed

3 files changed

+17
-10
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>to.us.tf</groupId>
88
<artifactId>DeathSpectating</artifactId>
9-
<version>1.4.1</version>
9+
<version>1.4.2</version>
1010
<properties>
1111
<maven.compiler.source>1.8</maven.compiler.source>
1212
<maven.compiler.target>1.8</maven.compiler.target>

src/main/java/to/us/tf/DeathSpectating/listeners/MiscListeners.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,14 @@ void onPlayerTryToTeleportWhenDead(PlayerTeleportEvent event)
3838
{
3939
if (!instance.isSpectating(event.getPlayer()))
4040
return;
41-
try
41+
42+
//Only allow "death spectating" teleports to occur
43+
if (event.getCause() == PlayerTeleportEvent.TeleportCause.PLUGIN && event.getPlayer().hasMetadata("DS_TP"))
4244
{
43-
//Only allow "death spectating" teleports to occur
44-
if (event.getCause() == PlayerTeleportEvent.TeleportCause.PLUGIN && event.getFrom().distanceSquared(event.getTo()) == 0)
45-
return;
45+
event.getPlayer().removeMetadata("DS_TP", instance);
46+
return;
4647
}
47-
catch (IllegalArgumentException e) //If trying to teleport to another world, yes of course stop that
48-
{}
48+
4949
event.setCancelled(true);
5050
}
5151

src/main/java/to/us/tf/DeathSpectating/tasks/SpectateTask.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.bukkit.Location;
44
import org.bukkit.entity.Entity;
55
import org.bukkit.entity.Player;
6+
import org.bukkit.metadata.FixedMetadataValue;
67
import org.bukkit.scheduler.BukkitRunnable;
78
import org.bukkit.util.Vector;
89
import to.us.tf.DeathSpectating.DeathSpectating;
@@ -40,7 +41,7 @@ public SpectateTask(Player player, long ticks, @Nullable Entity killer, DeathSpe
4041
this.unformattedTitle = deathSpectating.getConfigManager().getDeathTitle("titles");
4142
this.unformattedSubTitle = deathSpectating.getConfigManager().getDeathTitle("subtitles");
4243
this.score = player.getTotalExperience();
43-
this.deathLocation = player.getLocation().clone();
44+
this.deathLocation = player.getLocation();
4445
}
4546

4647
public Player getPlayer()
@@ -134,18 +135,24 @@ public void run()
134135
if (preventMovement && killer != null && killer.isValid() && !killer.isDead() && killer.getWorld() == player.getWorld())
135136
{
136137
vector = killer.getLocation().toVector().subtract(deathLocation.toVector());
137-
player.teleport(deathLocation.setDirection(vector));
138+
teleportPlayer(deathLocation.setDirection(vector));
138139
player.setFlySpeed(0f);
139140
player.setSpectatorTarget(null);
140141
}
141142
else if (preventMovement)
142143
{
143144
if (deathLocation.distanceSquared(player.getLocation()) > 1)
144-
player.teleport(deathLocation.setDirection(player.getLocation().getDirection()));
145+
teleportPlayer(deathLocation.setDirection(player.getLocation().getDirection()));
145146
player.setFlySpeed(0f);
146147
player.setSpectatorTarget(null);
147148
}
148149

149150
ticks--;
150151
}
152+
153+
public void teleportPlayer(Location location)
154+
{
155+
player.setMetadata("DS_TP", new FixedMetadataValue(instance, true));
156+
player.teleport(location);
157+
}
151158
}

0 commit comments

Comments
 (0)