Skip to content

Commit 1b592cb

Browse files
committed
add auto respawn
1 parent 10182a2 commit 1b592cb

File tree

4 files changed

+34
-5
lines changed

4 files changed

+34
-5
lines changed

src/main/java/cat/nyaa/clipectator/CommandHandler.java

+6
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,10 @@ public void commandDisallow(CommandSender sender, Arguments args) {
4848
plugin.config.allowedBlock.remove(m.name());
4949
plugin.config.save();
5050
}
51+
52+
@SubCommand(value = "autorespawn", permission = "clipectator.admin")
53+
public void commandAutoRespawn(CommandSender sender, Arguments args) {
54+
plugin.config.autoRespawnToSpectator = args.nextBoolean();
55+
plugin.config.save();
56+
}
5157
}

src/main/java/cat/nyaa/clipectator/Configuration.java

+4
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,13 @@ public class Configuration extends PluginConfigure {
1818

1919
@Serializable
2020
public String language = "en_US";
21+
2122
@Serializable
2223
public boolean enable = true;
2324

25+
@Serializable
26+
public boolean autoRespawnToSpectator = false;
27+
2428
@Serializable
2529
public boolean allowBeyondBorder = true;
2630

src/main/java/cat/nyaa/clipectator/SpectatorListener.java

+19-4
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,13 @@
22

33
import com.google.common.cache.Cache;
44
import com.google.common.cache.CacheBuilder;
5-
import org.bukkit.GameMode;
6-
import org.bukkit.Location;
7-
import org.bukkit.Material;
8-
import org.bukkit.WorldBorder;
5+
import org.bukkit.*;
96
import org.bukkit.block.Block;
107
import org.bukkit.entity.Player;
118
import org.bukkit.event.EventHandler;
129
import org.bukkit.event.EventPriority;
1310
import org.bukkit.event.Listener;
11+
import org.bukkit.event.entity.PlayerDeathEvent;
1412
import org.bukkit.event.player.PlayerMoveEvent;
1513
import org.bukkit.event.player.PlayerTeleportEvent;
1614
import org.librazy.nyaautils_lang_checker.LangKey;
@@ -75,6 +73,23 @@ public void OnPlayerTeleport(PlayerTeleportEvent e) {
7573
}
7674
}
7775

76+
77+
@EventHandler(priority = EventPriority.MONITOR)
78+
public void OnPlayerDeath(PlayerDeathEvent e) {
79+
if(!plugin.config.autoRespawnToSpectator || !plugin.config.enable) return;
80+
Location l = e.getEntity().getLocation();
81+
Player p = e.getEntity();
82+
if ((!p.isOp() || plugin.config.includeOp)
83+
&& !plugin.config.ignoredPlayer.contains(p.getUniqueId())
84+
&& !p.hasPermission("clipectator.ignore")) {
85+
Bukkit.getScheduler().runTaskLater(plugin, () -> {
86+
p.spigot().respawn();
87+
p.teleport(l);
88+
p.setGameMode(GameMode.SPECTATOR);
89+
}, 1);
90+
}
91+
}
92+
7893
private boolean checkPlayer(Player p) {
7994
return plugin.config.enable
8095
&& p.getGameMode() == GameMode.SPECTATOR

src/main/resources/lang/en_US.yml

+5-1
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,8 @@ manual:
2828

2929
disable:
3030
description: "Disable"
31-
usage: "/clipectator disable"
31+
usage: "/clipectator disable"
32+
33+
autorespawn:
34+
description: "Set auto respawn"
35+
usage: "/clipectator autorespawn true|false"

0 commit comments

Comments
 (0)