diff --git a/pom.xml b/pom.xml
index 07e11cf..a0663aa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
de.fanta.challenges
Challenges
- 1.16.1.2-DEV
+ 1.16.2-DEV
UTF-8
UTF-8
@@ -24,7 +24,7 @@
com.destroystokyo.paper
paper-api
- 1.16.1-R0.1-SNAPSHOT
+ 1.16.2-R0.1-SNAPSHOT
provided
@@ -39,6 +39,12 @@
3.20.1
provided
+
+ org.jetbrains
+ annotations
+ RELEASE
+ compile
+
diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java
index 2370c34..4e40433 100644
--- a/src/main/java/de/fanta/challenges/Challenges.java
+++ b/src/main/java/de/fanta/challenges/Challenges.java
@@ -1,8 +1,3 @@
-/*TODO
-Backpack Reset
-Gamerule Buttons
-*/
-
package de.fanta.challenges;
import de.fanta.challenges.challenges.RandomDrops;
@@ -31,6 +26,7 @@
import de.fanta.challenges.listeners.QuitJoinListener;
import de.fanta.challenges.scoreboard.ScoreManager;
import de.fanta.challenges.utils.ChatUtil;
+import de.fanta.challenges.utils.VanishUtils;
import de.fanta.challenges.utils.guiutils.GUIUtils;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.BanList;
@@ -71,6 +67,8 @@
private RIPBoden ripboden;
+ private VanishUtils vanish;
+
private BackpackGui backpack;
private ScoreBoardManager sbManager;
@@ -98,6 +96,7 @@
this.bingo = new Bingo();
this.scoreManager = new ScoreManager(this);
+ this.vanish = new VanishUtils(this);
this.backpack = new BackpackGui(getConfig().getInt("backpack_size") * 9);
@@ -158,7 +157,7 @@
Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> {
pM.callEvent(new ServerStatusChangedEvent(true));
pM.callEvent(new TimerChangedEvent(timer.isRunning()));
- pM.callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size()));
+ pM.callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers()));
}, 200L);
}
@@ -283,6 +282,10 @@
return ripboden;
}
+ public VanishUtils getVanish() {
+ return vanish;
+ }
+
public boolean isWaitingForShutdown() {
return waitingForShutdown;
}
diff --git a/src/main/java/de/fanta/challenges/Timer.java b/src/main/java/de/fanta/challenges/Timer.java
index f21de90..e4f64d7 100644
--- a/src/main/java/de/fanta/challenges/Timer.java
+++ b/src/main/java/de/fanta/challenges/Timer.java
@@ -98,9 +98,11 @@
private void sendIdleActionBar() {
idleActionBarTaskId = Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> {
for (Player p : Bukkit.getOnlinePlayers()) {
- p.sendActionBar(ChatColor.RED + "" + ChatColor.BOLD + "Der Timer ist pausiert.");
- if (p.getGameMode() != GameMode.SPECTATOR) {
- p.getWorld().playEffect(p.getLocation(), Effect.ENDER_SIGNAL, 2);
+ if (!plugin.getVanish().isVanish(p)) {
+ p.sendActionBar(ChatColor.RED + "" + ChatColor.BOLD + "Der Timer ist pausiert.");
+ if (p.getGameMode() != GameMode.SPECTATOR) {
+ p.getWorld().playEffect(p.getLocation(), Effect.ENDER_SIGNAL, 2);
+ }
}
}
}, 20L, 20L);
@@ -123,7 +125,9 @@
private void sendTimerActionBar(ChatColor color) {
for (Player p : Bukkit.getOnlinePlayers()) {
- p.sendActionBar(formatTime(color));
+ if (!plugin.getVanish().isVanish(p)) {
+ p.sendActionBar(formatTime(color));
+ }
}
}
diff --git a/src/main/java/de/fanta/challenges/events/PlayerCountChangedEvent.java b/src/main/java/de/fanta/challenges/events/PlayerCountChangedEvent.java
index d94336f..d008a3d 100644
--- a/src/main/java/de/fanta/challenges/events/PlayerCountChangedEvent.java
+++ b/src/main/java/de/fanta/challenges/events/PlayerCountChangedEvent.java
@@ -7,7 +7,7 @@
private static final HandlerList handlers = new HandlerList();
- private int count;
+ private final int count;
public PlayerCountChangedEvent(int count) {
this.count = count;
diff --git a/src/main/java/de/fanta/challenges/events/ServerStatusChangedEvent.java b/src/main/java/de/fanta/challenges/events/ServerStatusChangedEvent.java
index 52c306f..a44cdaf 100644
--- a/src/main/java/de/fanta/challenges/events/ServerStatusChangedEvent.java
+++ b/src/main/java/de/fanta/challenges/events/ServerStatusChangedEvent.java
@@ -7,7 +7,7 @@
private static final HandlerList handlers = new HandlerList();
- private boolean online;
+ private final boolean online;
public ServerStatusChangedEvent(boolean online) {
this.online = online;
diff --git a/src/main/java/de/fanta/challenges/events/TimerChangedEvent.java b/src/main/java/de/fanta/challenges/events/TimerChangedEvent.java
index 22a0aa0..446ee53 100644
--- a/src/main/java/de/fanta/challenges/events/TimerChangedEvent.java
+++ b/src/main/java/de/fanta/challenges/events/TimerChangedEvent.java
@@ -7,7 +7,7 @@
private static final HandlerList handlers = new HandlerList();
- private boolean running;
+ private final boolean running;
public TimerChangedEvent(boolean running) {
this.running = running;
diff --git a/src/main/java/de/fanta/challenges/listeners/DamageListener.java b/src/main/java/de/fanta/challenges/listeners/DamageListener.java
index 0cf86c7..e9a229e 100644
--- a/src/main/java/de/fanta/challenges/listeners/DamageListener.java
+++ b/src/main/java/de/fanta/challenges/listeners/DamageListener.java
@@ -3,8 +3,6 @@
import com.destroystokyo.paper.event.player.PlayerJumpEvent;
import de.fanta.challenges.Challenges;
import de.fanta.challenges.utils.ChatUtil;
-import java.text.DecimalFormat;
-
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location;
@@ -21,6 +19,8 @@
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.event.player.PlayerToggleSprintEvent;
+import java.text.DecimalFormat;
+
public class DamageListener implements Listener {
private Challenges plugin = Challenges.getPlugin();
@@ -29,6 +29,12 @@
public void onDamage(EntityDamageEvent e) {
if (e.getEntity() instanceof Player) {
Player p = (Player) e.getEntity();
+ if (plugin.getVanish().isVanish(p)) {
+ return;
+ }
+ }
+ if (e.getEntity() instanceof Player) {
+ Player p = (Player) e.getEntity();
String dmg = new DecimalFormat("#.##").format(e.getFinalDamage());
if (e.getFinalDamage() > 0) {
if (e.getCause() == DamageCause.FALL) {
@@ -52,17 +58,19 @@
if (plugin.getConfig().getBoolean("sharedmg") && plugin.getTimer().isRunning()) {
for (Player pp : Bukkit.getOnlinePlayers()) {
if (pp != p) {
- double health = pp.getHealth() - e.getFinalDamage();
- if (health < 0) {
- pp.setHealth(0);
- } else {
- if (pp.getGameMode() == GameMode.SURVIVAL) {
- pp.setHealth(health);
- pp.getWorld().playSound(pp.getLocation(), Sound.ENTITY_PLAYER_HURT, 1, 1);
+ if (!plugin.getVanish().isVanish(pp)) {
+ double health = pp.getHealth() - e.getFinalDamage();
+ if (health < 0) {
+ pp.setHealth(0);
+ } else {
+ if (pp.getGameMode() == GameMode.SURVIVAL) {
+ pp.setHealth(health);
+ pp.getWorld().playSound(pp.getLocation(), Sound.ENTITY_PLAYER_HURT, 1, 1);
+ }
+
}
}
-
}
}
}
@@ -75,6 +83,12 @@
@EventHandler
public void onEntityDamage(EntityDamageByEntityEvent e) {
+ if (e.getEntity() instanceof Player) {
+ Player p = (Player) e.getEntity();
+ if (plugin.getVanish().isVanish(p)) {
+ return;
+ }
+ }
if ((e.getEntity() instanceof Player) && (e.getFinalDamage() > 0) && (plugin.getTimer().isRunning())) {
Player p = (Player) e.getEntity();
String dmg = new DecimalFormat("#.##").format(e.getFinalDamage());
@@ -90,12 +104,12 @@
@EventHandler
public void onPlayerSneak(PlayerToggleSneakEvent e) {
Player p = e.getPlayer();
- if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) {
+ if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(p)) {
if (!p.isSneaking()) {
if (plugin.getConfig().getBoolean("damageonsneak")) {
if (plugin.getConfig().getBoolean("tntdeath")) {
for (Player pp : Bukkit.getOnlinePlayers()) {
- pp.sendTitle("§c" + p.getName() + " §ahat gesneakt!", "§b:>", 5, 50, 5);
+ pp.sendTitle("§c" + p.getName() + " §ahat gesneakt!", "§b:>", 5, 50, 5);
EntityType tnt = EntityType.PRIMED_TNT;
Location loc = pp.getLocation();
TNTPrimed PRIME_TNT = (TNTPrimed) pp.getWorld().spawnEntity(loc, tnt);
@@ -115,7 +129,7 @@
@EventHandler
public void onPlayerSprint(PlayerToggleSprintEvent e) {
Player p = e.getPlayer();
- if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) {
+ if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(p)) {
if (!p.isSprinting()) {
if (plugin.getConfig().getBoolean("deathonsprint")) {
if (plugin.getConfig().getBoolean("tntdeath")) {
@@ -140,7 +154,7 @@
@EventHandler
public void onPlayerJump(PlayerJumpEvent e) {
Player p = e.getPlayer();
- if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) {
+ if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(p)) {
if (plugin.getConfig().getBoolean("deathonjump")) {
if (plugin.getConfig().getBoolean("tntdeath")) {
for (Player pp : Bukkit.getOnlinePlayers()) {
@@ -166,7 +180,7 @@
Player p = (Player) e.getEntity();
if (e.getEntity() instanceof Player) {
if (plugin.getConfig().getBoolean("clinvdmg")) {
- if (plugin.getTimer().isRunning() && p.getGameMode() == GameMode.SURVIVAL) {
+ if (plugin.getTimer().isRunning() && p.getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(p)) {
for (Player pp : Bukkit.getOnlinePlayers()) {
pp.getInventory().clear();
ChatUtil.sendNormalMessage(pp, ChatUtil.PLAYER + p.getName() + ChatUtil.WARNING + " hat Schaden bekommen! Alle Inventare wurden gelöscht!");
@@ -181,7 +195,7 @@
@EventHandler
public void onPlayerGetXP(PlayerExpChangeEvent e) {
Player p = e.getPlayer();
- if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) {
+ if (plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL && !plugin.getVanish().isVanish(p)) {
if (plugin.getConfig().getBoolean("xpdeath")) {
if (plugin.getConfig().getBoolean("tntdeath")) {
for (Player pp : Bukkit.getOnlinePlayers()) {
diff --git a/src/main/java/de/fanta/challenges/listeners/DeathListener.java b/src/main/java/de/fanta/challenges/listeners/DeathListener.java
index fe78e18..8a19262 100644
--- a/src/main/java/de/fanta/challenges/listeners/DeathListener.java
+++ b/src/main/java/de/fanta/challenges/listeners/DeathListener.java
@@ -16,7 +16,7 @@
public class DeathListener implements Listener {
- private Challenges plugin = Challenges.getPlugin();
+ private final Challenges plugin = Challenges.getPlugin();
@EventHandler
public void onPlayerDeath(PlayerDeathEvent e) {
diff --git a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java
index f148da1..90ac88d 100644
--- a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java
+++ b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java
@@ -23,6 +23,7 @@
import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
+import org.kitteh.vanish.event.VanishStatusChangeEvent;
import java.util.Objects;
@@ -131,4 +132,16 @@
}
}
}
+
+ @EventHandler
+ public void vanishToggle(VanishStatusChangeEvent e) {
+ Player p = e.getPlayer();
+ if (!e.isVanishing()) {
+ plugin.getSBManager().setScoreboard(p);
+ if (plugin.getCurrentEditor() == null) {
+ plugin.setCurrentEditor(p);
+ }
+ }
+
+ }
}
diff --git a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java
index d69e230..f6e0913 100644
--- a/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java
+++ b/src/main/java/de/fanta/challenges/listeners/QuitJoinListener.java
@@ -1,12 +1,6 @@
package de.fanta.challenges.listeners;
import de.fanta.challenges.Challenges;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-import java.util.stream.Collectors;
-
import de.fanta.challenges.events.PlayerCountChangedEvent;
import de.fanta.challenges.events.ServerStatusChangedEvent;
import de.fanta.challenges.utils.ChatUtil;
@@ -18,6 +12,12 @@
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent;
+import org.kitteh.vanish.event.VanishStatusChangeEvent;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+import java.util.stream.Collectors;
public class QuitJoinListener implements Listener {
@@ -26,14 +26,18 @@
@EventHandler
public void onPlayerJoin(PlayerJoinEvent e) {
- Player p = e.getPlayer();;
+ Player p = e.getPlayer();
if (resetTaskId > 0) {
Bukkit.getScheduler().cancelTask(resetTaskId);
resetTaskId = -1;
}
-
- Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatUtil.PLAYER + p.getName() + ChatUtil.NORMAL + " hat die Lobby betreten! " + ChatColor.of("#E4E737") + "[" + Bukkit.getServer().getOnlinePlayers().size() + "/" + Bukkit.getServer().getMaxPlayers() + "]");
+ if (plugin.getVanish().isVanish(p)) {
+ ChatUtil.sendNormalMessage(p, "Du bist im Vanish, niemand weiß das du in der Lobby bist");
+ return;
+ }
+ Bukkit.broadcastMessage(
+ Challenges.PREFIX + " " + ChatUtil.PLAYER + p.getName() + ChatUtil.NORMAL + " hat die Lobby betreten! " + ChatColor.of("#E4E737") + "[" + (Bukkit.getServer().getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers()) + "/" + Bukkit.getServer().getMaxPlayers() + "]");
e.setJoinMessage(null);
if (plugin.getConfig().getBoolean("sharedmg")) {
int rnd = new Random().nextInt(Bukkit.getOnlinePlayers().size());
@@ -69,7 +73,7 @@
ChatUtil.sendNormalMessage(p, plugin.getCurrentEditor().getName() + " ist der Editor dieser Lobby!");
}
- Bukkit.getPluginManager().callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size()));
+ Bukkit.getPluginManager().callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers()));
}
@EventHandler
@@ -83,10 +87,18 @@
@EventHandler
public void onPlayerQuit(PlayerQuitEvent e) {
Player player = e.getPlayer();
- Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatColor.of("#3D98DC") + player.getName() + ChatColor.of("#C45B3D") + " hat die Lobby verlassen! " + ChatColor.of("#E4E737") + "[" + (Bukkit.getServer().getOnlinePlayers().size() - 1) + "/" + Bukkit.getServer().getMaxPlayers() + "]");
+
+ if (plugin.getVanish().isVanish(player)) {
+ if (Bukkit.getOnlinePlayers().size() == 1) {
+ plugin.getTimer().stopTimer();
+ return;
+ }
+ }
+
+ Bukkit.broadcastMessage(Challenges.PREFIX + " " + ChatColor.of("#3D98DC") + player.getName() + ChatColor.of("#C45B3D") + " hat die Lobby verlassen! " + ChatColor.of("#E4E737") + "[" + (Bukkit.getServer().getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers() - 1) + "/" + Bukkit.getServer().getMaxPlayers() + "]");
e.setQuitMessage(null);
- if (Bukkit.getOnlinePlayers().size() == 1) {
+ if (Bukkit.getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers() == 1) {
plugin.getTimer().stopTimer();
}
@@ -105,6 +117,7 @@
} else {
List onlinePlayers = new ArrayList<>(Bukkit.getOnlinePlayers());
onlinePlayers.remove(player);
+ onlinePlayers.remove(plugin.getVanish().VanishPlayerList());
int rnd = random.nextInt(onlinePlayers.size());
randomPlayer = onlinePlayers.get(rnd);
}
@@ -115,12 +128,12 @@
plugin.setCurrentEditor(null);
resetTaskId = Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
- Bukkit.dispatchCommand(Bukkit.getConsoleSender() ,"reset confirm");
+ Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "reset confirm");
}, 10 * 60 * 20);
}
}
- Bukkit.getPluginManager().callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size() - 1));
+ Bukkit.getPluginManager().callEvent(new PlayerCountChangedEvent(Bukkit.getOnlinePlayers().size() - plugin.getVanish().countVanishPlayers() - 1));
if (plugin.isWaitingForShutdown() && Bukkit.getOnlinePlayers().size() == 1) {
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
diff --git a/src/main/java/de/fanta/challenges/utils/VanishUtils.java b/src/main/java/de/fanta/challenges/utils/VanishUtils.java
index 4d2e12f..2fa465b 100644
--- a/src/main/java/de/fanta/challenges/utils/VanishUtils.java
+++ b/src/main/java/de/fanta/challenges/utils/VanishUtils.java
@@ -1,4 +1,30 @@
package de.fanta.challenges.utils;
+import de.fanta.challenges.Challenges;
+import org.bukkit.entity.Player;
+import org.kitteh.vanish.VanishPlugin;
+
+import java.util.ArrayList;
+import java.util.List;
+
public class VanishUtils {
+
+ private final VanishPlugin vanish;
+
+ public VanishUtils(Challenges plugin) {
+ vanish = (VanishPlugin) plugin.getServer().getPluginManager().getPlugin("VanishNoPacket");
+ }
+
+ public boolean isVanish(Player player) {
+ return vanish.getManager().isVanished(player);
+ }
+
+ public int countVanishPlayers() {
+ return vanish.getManager().getVanishedPlayers().size();
+ }
+
+ public List VanishPlayerList() {
+ return new ArrayList<>(vanish.getManager().getVanishedPlayers());
+ }
+
}