massive changes

This commit is contained in:
YouHaveTrouble
2021-07-28 20:10:15 +02:00
parent 4e598dea2c
commit da454823f4
59 changed files with 934 additions and 654 deletions
+4 -4
View File
@@ -4,14 +4,14 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>eu.endermite</groupId> <groupId>me.youhavetrouble</groupId>
<artifactId>TogglePvP</artifactId> <artifactId>PreventStabby</artifactId>
<version>1.2</version> <version>1.2</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>TogglePvP</name> <name>PreventStabby</name>
<description>PvP toggle plugin</description> <description>Stop people from getting stabbed!</description>
<properties> <properties>
<java.version>1.8</java.version> <java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+4 -4
View File
@@ -1,21 +1,21 @@
<h2>TogglePvP ⚔</h2> <h2>PreventStabby ⚔</h2>
Use Issues section to report bugs or submit suggestions. Use Issues section to report bugs or submit suggestions.
<h3>Commands</h3> <h3>Commands</h3>
Permission: <code>togglepvp.command</code> (given by default to everyone) : Permission: <code>preventstabby.command</code> (given by default to everyone) :
<ul> <ul>
<li>/pvp help- displays help message</li> <li>/pvp help- displays help message</li>
</ul> </ul>
Permission: <code>togglepvp.command.toggle</code> (given by default to everyone) : Permission: <code>preventstabby.command.toggle</code> (given by default to everyone) :
<ul> <ul>
<li>/pvp toggle - toggles PvP</li> <li>/pvp toggle - toggles PvP</li>
<li>/pvp on - enables PvP (aliases: enable)</li> <li>/pvp on - enables PvP (aliases: enable)</li>
<li>/pvp off - disables PvP (aliases: disable)</li> <li>/pvp off - disables PvP (aliases: disable)</li>
</ul> </ul>
Permission: <code>togglepvp.command.toggle.others</code> (given by default to ops) : Permission: <code>preventstabby.command.toggle.others</code> (given by default to ops) :
<ul> <ul>
<li>/pvp toggle [player] - toggles other player's PvP</li> <li>/pvp toggle [player] - toggles other player's PvP</li>
<li>/pvp on [player] - enables other player's PvP (aliases: enable)</li> <li>/pvp on [player] - enables other player's PvP (aliases: enable)</li>
@@ -1,23 +0,0 @@
package eu.endermite.togglepvp.commands;
import eu.endermite.togglepvp.TogglePvp;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
public class ReloadCommand {
public static void reload(CommandSender sender) {
Bukkit.getScheduler().runTaskAsynchronously(TogglePvp.getPlugin(), () -> {
if (!sender.hasPermission("togglepvp.command.reload")) {
String message = ChatColor.translateAlternateColorCodes('&', TogglePvp.getPlugin().getConfigCache().getNo_permission());
sender.sendMessage(message);
return;
}
TogglePvp.getPlugin().reloadPluginConfig(sender);
});
}
}
@@ -1,68 +0,0 @@
package eu.endermite.togglepvp.listeners.player;
import eu.endermite.togglepvp.TogglePvp;
import eu.endermite.togglepvp.util.CombatTimer;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
public class PlayerHitBySplashPotionListener implements Listener {
private final List<PotionEffectType> harmfulPotions = new ArrayList<>();
public PlayerHitBySplashPotionListener() {
harmfulPotions.add(PotionEffectType.BLINDNESS);
harmfulPotions.add(PotionEffectType.CONFUSION);
harmfulPotions.add(PotionEffectType.HARM);
harmfulPotions.add(PotionEffectType.HUNGER);
harmfulPotions.add(PotionEffectType.POISON);
harmfulPotions.add(PotionEffectType.SLOW_DIGGING);
harmfulPotions.add(PotionEffectType.WEAKNESS);
harmfulPotions.add(PotionEffectType.SLOW);
harmfulPotions.add(PotionEffectType.WITHER);
}
/**
* If thrown potion is applies negative effects and it's thrown by a player it will ahve no effect on player with pvp off
*/
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerHitBySplashPotion(org.bukkit.event.entity.PotionSplashEvent event) {
if (!(event.getEntity().getShooter() instanceof Player))
return;
boolean harmful = false;
for (PotionEffect effect : event.getPotion().getEffects()) {
if (harmfulPotions.contains(effect.getType())) {
harmful = true;
break;
}
}
if (!harmful)
return;
for (Entity entity : event.getAffectedEntities()) {
if (entity instanceof Player) {
UUID damager = ((Player) event.getEntity().getShooter()).getUniqueId();
UUID victim = entity.getUniqueId();
if (damager == victim)
continue;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) {
CombatTimer.refreshPlayersCombatTime(damager, victim);
} else {
event.setIntensity((LivingEntity) entity, 0);
}
}
}
}
}
@@ -1,64 +0,0 @@
package eu.endermite.togglepvp.listeners.player;
import eu.endermite.togglepvp.TogglePvp;
import eu.endermite.togglepvp.players.PlayerData;
import eu.endermite.togglepvp.players.SmartCache;
import eu.endermite.togglepvp.util.PluginMessages;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import java.time.Instant;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
public class PlayerJoinAndLeaveListener implements Listener {
/**
* This event is here to get players saved options on join
*/
@EventHandler(ignoreCancelled = true)
public void onPlayerJoin(org.bukkit.event.player.PlayerJoinEvent event) {
Player player = event.getPlayer();
UUID uuid = player.getUniqueId();
PlayerData playerData = TogglePvp.getPlugin().getPlayerManager().getPlayer(player.getUniqueId());
long time = Instant.now().getEpochSecond();
if (playerData == null) {
TogglePvp.getPlugin().getPlayerManager().addPlayer(uuid, new PlayerData(false));
Bukkit.getScheduler().runTaskAsynchronously(TogglePvp.getPlugin(), () -> {
PlayerData data = TogglePvp.getPlugin().getSqLite().getPlayerInfo(uuid);
TogglePvp.getPlugin().getPlayerManager().addPlayer(uuid, data);
data.setLoginTimestamp(time);
});
return;
}
playerData.refreshCachetime();
playerData.setLoginTimestamp(time);
}
/**
* This event is here to save player's data to database
* Also punishes players who log out during combat
*/
@EventHandler
public void onPlayerLeave(org.bukkit.event.player.PlayerQuitEvent event) {
Player player = event.getPlayer();
Bukkit.getScheduler().runTaskAsynchronously(TogglePvp.getPlugin(), () -> TogglePvp.getPlugin().getSqLite().updatePlayerInfo(player.getUniqueId(), TogglePvp.getPlugin().getPlayerManager().getPlayer(player.getUniqueId())));
if (!TogglePvp.getPlugin().getConfigCache().isPunish_for_combat_logout())
return;
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
PlayerData playerData = smartCache.getPlayerData(player.getUniqueId());
if (!playerData.isInCombat())
return;
player.setHealth(0);
if (TogglePvp.getPlugin().getConfigCache().isPunish_for_combat_logout_announce())
PluginMessages.broadcastMessage(player, TogglePvp.getPlugin().getConfigCache().getPunish_for_combat_logout_message());
}
}
@@ -1,37 +0,0 @@
package eu.endermite.togglepvp.listeners.toggles;
import eu.endermite.togglepvp.TogglePvp;
import eu.endermite.togglepvp.players.PlayerManager;
import eu.endermite.togglepvp.util.PluginMessages;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@eu.endermite.togglepvp.util.Listener
public class CombatCommandListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerCommandInCombat(org.bukkit.event.player.PlayerCommandPreprocessEvent event) {
if (!TogglePvp.getPlugin().getConfigCache().isBlock_commands_in_combat())
return;
PlayerManager playerManager = TogglePvp.getPlugin().getPlayerManager();
if (!playerManager.getPlayer(event.getPlayer().getUniqueId()).isInCombat())
return;
String command = event.getMessage().replaceFirst("/", "");
if (!TogglePvp.getPlugin().getConfigCache().getCombatBlockedCommands().contains(command))
return;
if (event.getPlayer().hasPermission("toglepvp.combatcommandblock.bypass"))
return;
event.setCancelled(true);
PluginMessages.sendMessage(event.getPlayer(), TogglePvp.getPlugin().getConfigCache().getCant_do_that_during_combat());
}
}
@@ -1,46 +0,0 @@
package eu.endermite.togglepvp.util;
import eu.endermite.togglepvp.TogglePvp;
import eu.endermite.togglepvp.api.event.PlayerEnterCombatEvent;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.time.Instant;
import java.util.UUID;
public class CombatTimer {
public static void refreshPlayersCombatTime(UUID uuid) {
try {
long now = Instant.now().getEpochSecond();
long combattime = TogglePvp.getPlugin().getSmartCache().getPlayerData(uuid).getCombattime();
Player player = Bukkit.getPlayer(uuid);
PlayerEnterCombatEvent playerEnterCombatEvent = new PlayerEnterCombatEvent(player);
Bukkit.getScheduler().runTask(TogglePvp.getPlugin(), () -> {
Bukkit.getPluginManager().callEvent(playerEnterCombatEvent);
if (playerEnterCombatEvent.isCancelled())
return;
TogglePvp.getPlugin().getPlayerManager().refreshPlayersCombatTime(uuid);
if (combattime <= now) {
PluginMessages.sendActionBar(uuid, TogglePvp.getPlugin().getConfigCache().getEntering_combat());
}
});
} catch (Exception ignored) {
}
}
public static void refreshPlayersCombatTime(UUID attacker_uuid, UUID victim_uuid) {
refreshPlayersCombatTime(attacker_uuid);
refreshPlayersCombatTime(victim_uuid);
}
public static boolean isInCombat(UUID uuid) {
try {
return TogglePvp.getPlugin().getPlayerManager().getPlayer(uuid).getCombattime() >= Instant.now().getEpochSecond();
} catch (Exception e) {
return false;
}
}
}
@@ -1,12 +1,13 @@
package eu.endermite.togglepvp; package me.youhavetrouble.preventstabby;
import eu.endermite.togglepvp.commands.MainCommand; import me.youhavetrouble.preventstabby.commands.MainCommand;
import eu.endermite.togglepvp.config.ConfigCache; import me.youhavetrouble.preventstabby.config.ConfigCache;
import eu.endermite.togglepvp.players.PlayerManager; import me.youhavetrouble.preventstabby.players.PlayerManager;
import eu.endermite.togglepvp.players.SmartCache; import me.youhavetrouble.preventstabby.players.SmartCache;
import eu.endermite.togglepvp.util.Listener; import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import eu.endermite.togglepvp.util.DatabaseSQLite; import me.youhavetrouble.preventstabby.util.DatabaseSQLite;
import lombok.Getter; import lombok.Getter;
import me.youhavetrouble.preventstabby.util.Util;
import org.bstats.bukkit.Metrics; import org.bstats.bukkit.Metrics;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.PluginCommand; import org.bukkit.command.PluginCommand;
@@ -16,9 +17,9 @@ import java.io.File;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.util.Set; import java.util.Set;
public final class TogglePvp extends JavaPlugin { public final class PreventStabby extends JavaPlugin {
@Getter private static TogglePvp plugin; @Getter private static PreventStabby plugin;
private ConfigCache configCache; private ConfigCache configCache;
protected PlayerManager playerManager; protected PlayerManager playerManager;
protected DatabaseSQLite sqLite; protected DatabaseSQLite sqLite;
@@ -27,9 +28,10 @@ public final class TogglePvp extends JavaPlugin {
@Override @Override
public void onEnable() { public void onEnable() {
plugin = this; plugin = this;
Util.initData();
reloadPluginConfig(); reloadPluginConfig();
File dbFile = new File("plugins/TogglePvP"); File dbFile = new File("plugins/PreventStabby");
sqLite = new DatabaseSQLite("jdbc:sqlite:plugins/TogglePvP/TogglePvP.db", dbFile); sqLite = new DatabaseSQLite("jdbc:sqlite:plugins/PreventStabby/TogglePvP.db", dbFile);
sqLite.createDatabaseFile(); sqLite.createDatabaseFile();
if (!sqLite.testConnection()) { if (!sqLite.testConnection()) {
getLogger().severe("Error with accessing database. Check if server has write rights."); getLogger().severe("Error with accessing database. Check if server has write rights.");
@@ -42,8 +44,8 @@ public final class TogglePvp extends JavaPlugin {
smartCache.runSmartCache(); smartCache.runSmartCache();
// Register listeners // Register listeners
Reflections reflections = new Reflections(new String[]{"eu.endermite.togglepvp"}); Reflections reflections = new Reflections(new String[]{"eu.endermite.preventstabby"});
Set<Class<?>> listenerClasses = reflections.getTypesAnnotatedWith(Listener.class); Set<Class<?>> listenerClasses = reflections.getTypesAnnotatedWith(PreventStabbyListener.class);
listenerClasses.forEach((listener)-> { listenerClasses.forEach((listener)-> {
try { try {
getServer().getPluginManager().registerEvents((org.bukkit.event.Listener) listener.getConstructor().newInstance(), this); getServer().getPluginManager().registerEvents((org.bukkit.event.Listener) listener.getConstructor().newInstance(), this);
@@ -1,7 +1,7 @@
package eu.endermite.togglepvp.api; package me.youhavetrouble.preventstabby.api;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.UUID; import java.util.UUID;
@@ -13,7 +13,7 @@ public class TogglePvpAPI {
* @param newState State to set * @param newState State to set
*/ */
public static void setPvpEnabled(Player player, boolean newState) { public static void setPvpEnabled(Player player, boolean newState) {
TogglePvp.getPlugin().getSmartCache().setPlayerPvpState(player.getUniqueId(), newState); PreventStabby.getPlugin().getSmartCache().setPlayerPvpState(player.getUniqueId(), newState);
} }
/** /**
@@ -22,7 +22,7 @@ public class TogglePvpAPI {
* @param newState State to set * @param newState State to set
*/ */
public static void setPvpEnabled(UUID uuid, boolean newState) { public static void setPvpEnabled(UUID uuid, boolean newState) {
TogglePvp.getPlugin().getSmartCache().setPlayerPvpState(uuid, newState); PreventStabby.getPlugin().getSmartCache().setPlayerPvpState(uuid, newState);
} }
/** /**
@@ -31,7 +31,7 @@ public class TogglePvpAPI {
* @return True if enabled, false if disabled * @return True if enabled, false if disabled
*/ */
public static boolean getPvpEnabled(UUID uuid) { public static boolean getPvpEnabled(UUID uuid) {
return TogglePvp.getPlugin().getSmartCache().getPlayerData(uuid).isPvpEnabled(); return PreventStabby.getPlugin().getSmartCache().getPlayerData(uuid).isPvpEnabled();
} }
/** /**
@@ -40,7 +40,7 @@ public class TogglePvpAPI {
* @return True if enabled, false if disabled * @return True if enabled, false if disabled
*/ */
public static boolean getPvpEnabled(Player player) { public static boolean getPvpEnabled(Player player) {
return TogglePvp.getPlugin().getSmartCache().getPlayerData(player.getUniqueId()).isPvpEnabled(); return PreventStabby.getPlugin().getSmartCache().getPlayerData(player.getUniqueId()).isPvpEnabled();
} }
/** /**
@@ -51,7 +51,7 @@ public class TogglePvpAPI {
* @return True if victim can be attacked by attacker, false if not * @return True if victim can be attacked by attacker, false if not
*/ */
public static boolean canDamage(UUID attackerUuid, UUID victimUuid, boolean sendDenyMessage) { public static boolean canDamage(UUID attackerUuid, UUID victimUuid, boolean sendDenyMessage) {
return TogglePvp.getPlugin().getPlayerManager().canDamage(attackerUuid, victimUuid, sendDenyMessage); return PreventStabby.getPlugin().getPlayerManager().canDamage(attackerUuid, victimUuid, sendDenyMessage);
} }
/** /**
@@ -62,7 +62,7 @@ public class TogglePvpAPI {
* @return True if victim can be attacked by attacker, false if not * @return True if victim can be attacked by attacker, false if not
*/ */
public static boolean canDamage(Player attacker, Player victim, boolean sendDenyMessage) { public static boolean canDamage(Player attacker, Player victim, boolean sendDenyMessage) {
return TogglePvp.getPlugin().getPlayerManager().canDamage(attacker.getUniqueId(), victim.getUniqueId(), sendDenyMessage); return PreventStabby.getPlugin().getPlayerManager().canDamage(attacker.getUniqueId(), victim.getUniqueId(), sendDenyMessage);
} }
/** /**
@@ -71,7 +71,7 @@ public class TogglePvpAPI {
* @return True if player has login protection, false if not * @return True if player has login protection, false if not
*/ */
public static boolean hasLoginProtection(UUID uuid) { public static boolean hasLoginProtection(UUID uuid) {
return TogglePvp.getPlugin().getPlayerManager().hasLoginProtection(uuid); return PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(uuid);
} }
/** /**
@@ -80,7 +80,7 @@ public class TogglePvpAPI {
* @return True if player has teleport protection, false if not * @return True if player has teleport protection, false if not
*/ */
public static boolean hasTeleportProtection(Player player) { public static boolean hasTeleportProtection(Player player) {
return TogglePvp.getPlugin().getPlayerManager().hasLoginProtection(player.getUniqueId()); return PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(player.getUniqueId());
} }
/** /**
@@ -89,7 +89,7 @@ public class TogglePvpAPI {
* @return True if player has teleport protection, false if not * @return True if player has teleport protection, false if not
*/ */
public static boolean hasTeleportProtection(UUID uuid) { public static boolean hasTeleportProtection(UUID uuid) {
return TogglePvp.getPlugin().getPlayerManager().hasLoginProtection(uuid); return PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(uuid);
} }
/** /**
@@ -98,7 +98,7 @@ public class TogglePvpAPI {
* @return True if player has login protection, false if not * @return True if player has login protection, false if not
*/ */
public static boolean hasLoginProtection(Player player) { public static boolean hasLoginProtection(Player player) {
return TogglePvp.getPlugin().getPlayerManager().hasLoginProtection(player.getUniqueId()); return PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(player.getUniqueId());
} }
/** /**
@@ -1,7 +1,7 @@
package eu.endermite.togglepvp.api.event; package me.youhavetrouble.preventstabby.api.event;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.players.PlayerData; import me.youhavetrouble.preventstabby.players.PlayerData;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable; import org.bukkit.event.Cancellable;
import org.bukkit.event.Event; import org.bukkit.event.Event;
@@ -27,7 +27,7 @@ public class PlayerEnterCombatEvent extends Event implements Cancellable {
} }
public PlayerData getPlayerData() { public PlayerData getPlayerData() {
return TogglePvp.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()); return PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId());
} }
@Override @Override
@@ -1,7 +1,7 @@
package eu.endermite.togglepvp.api.event; package me.youhavetrouble.preventstabby.api.event;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.players.PlayerData; import me.youhavetrouble.preventstabby.players.PlayerData;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable; import org.bukkit.event.Cancellable;
import org.bukkit.event.Event; import org.bukkit.event.Event;
@@ -27,7 +27,7 @@ public class PlayerLeaveCombatEvent extends Event implements Cancellable {
} }
public PlayerData getPlayerData() { public PlayerData getPlayerData() {
return TogglePvp.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()); return PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId());
} }
@Override @Override
@@ -0,0 +1,49 @@
package me.youhavetrouble.preventstabby.api.event;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
/**
* NOT IMPLEMENTED YET
*/
@Deprecated
public class PlayerTogglePvpEvent extends Event {
private static final HandlerList HANDLERS = new HandlerList();
private final Player player;
private boolean newState, sendMessage;
public PlayerTogglePvpEvent(Player player, boolean newState, boolean sendMessage) {
this.player = player;
this.newState = newState;
this.sendMessage = sendMessage;
}
public Player getPlayer() {
return player;
}
public boolean newState() {
return newState;
}
public void setNewState(boolean newState) {
this.newState = newState;
}
public boolean isSendMessage() {
return sendMessage;
}
public void setSendMessage(boolean sendMessage) {
this.sendMessage = sendMessage;
}
@NotNull
@Override
public HandlerList getHandlers() {
return HANDLERS;
}
}
@@ -1,7 +1,7 @@
package eu.endermite.togglepvp.commands; package me.youhavetrouble.preventstabby.commands;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.util.PluginMessages; import me.youhavetrouble.preventstabby.util.PluginMessages;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import java.util.ArrayList; import java.util.ArrayList;
@@ -10,13 +10,13 @@ import java.util.List;
public class HelpCommand { public class HelpCommand {
public static void help(CommandSender sender, String[] args) { public static void help(CommandSender sender, String[] args) {
Bukkit.getScheduler().runTaskAsynchronously(TogglePvp.getPlugin(), () -> { Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> {
List<String> helpPage = new ArrayList<>(); List<String> helpPage = new ArrayList<>();
helpPage.add(PluginMessages.parseMessage("&b&m &bTogglePvP Help&b&m ")); helpPage.add(PluginMessages.parseMessage("&b&m &bTogglePvP Help&b&m "));
helpPage.add(PluginMessages.parseMessage("&9/pvp &b&lhelp &f- shows this message")); helpPage.add(PluginMessages.parseMessage("&9/pvp &b&lhelp &f- shows this message"));
if (sender.hasPermission("togglepvp.command.toggle")) { if (sender.hasPermission("preventstabby.command.toggle")) {
helpPage.add(PluginMessages.parseMessage("&9/pvp &b&l[on/off] &f- enables or disables PvP")); helpPage.add(PluginMessages.parseMessage("&9/pvp &b&l[on/off] &f- enables or disables PvP"));
helpPage.add(PluginMessages.parseMessage("&9/pvp &b&ltoggle &f- toggles PvP status")); helpPage.add(PluginMessages.parseMessage("&9/pvp &b&ltoggle &f- toggles PvP status"));
} }
@@ -1,7 +1,7 @@
package eu.endermite.togglepvp.commands; package me.youhavetrouble.preventstabby.commands;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.util.PluginMessages; import me.youhavetrouble.preventstabby.util.PluginMessages;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -17,18 +17,18 @@ public class MainCommand implements TabExecutor {
private final HashMap<String, String> subCommands = new HashMap<>(); private final HashMap<String, String> subCommands = new HashMap<>();
public MainCommand() { public MainCommand() {
subCommands.put("help", "togglepvp.command"); subCommands.put("help", "preventstabby.command");
subCommands.put("toggle", "togglepvp.command.toggle"); subCommands.put("toggle", "preventstabby.command.toggle");
subCommands.put("on", "togglepvp.command.toggle"); subCommands.put("on", "preventstabby.command.toggle");
subCommands.put("enable", "togglepvp.command.toggle"); subCommands.put("enable", "preventstabby.command.toggle");
subCommands.put("off", "togglepvp.command.toggle"); subCommands.put("off", "preventstabby.command.toggle");
subCommands.put("disable", "togglepvp.command.toggle"); subCommands.put("disable", "preventstabby.command.toggle");
subCommands.put("reload", "togglepvp.command.reload"); subCommands.put("reload", "preventstabby.command.reload");
} }
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (sender.hasPermission("togglepvp.command")) { if (sender.hasPermission("preventstabby.command")) {
if (args.length >= 1) { if (args.length >= 1) {
switch (args[0].toLowerCase()) { switch (args[0].toLowerCase()) {
case "help": case "help":
@@ -49,14 +49,14 @@ public class MainCommand implements TabExecutor {
ReloadCommand.reload(sender); ReloadCommand.reload(sender);
break; break;
default: default:
sender.sendMessage(PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getNo_such_command())); sender.sendMessage(PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getNo_such_command()));
break; break;
} }
} else { } else {
HelpCommand.help(sender, args); HelpCommand.help(sender, args);
} }
} else { } else {
sender.sendMessage(PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getNo_permission())); sender.sendMessage(PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getNo_permission()));
} }
return true; return true;
} }
@@ -71,7 +71,7 @@ public class MainCommand implements TabExecutor {
commands.add(entry.getKey()); commands.add(entry.getKey());
} }
return commands; return commands;
} else if (args.length == 2 && sender.hasPermission("togglepvp.command.toggle")) { } else if (args.length == 2 && sender.hasPermission("preventstabby.command.toggle")) {
switch (args[0].toLowerCase()) { switch (args[0].toLowerCase()) {
default: default:
break; break;
@@ -1,8 +1,8 @@
package eu.endermite.togglepvp.commands; package me.youhavetrouble.preventstabby.commands;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import eu.endermite.togglepvp.util.PluginMessages; import me.youhavetrouble.preventstabby.util.PluginMessages;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -12,10 +12,10 @@ public class PvpToggleCommand {
public static void toggle(CommandSender sender, String[] args) { public static void toggle(CommandSender sender, String[] args) {
Bukkit.getScheduler().runTaskAsynchronously(TogglePvp.getPlugin(), () -> { Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> {
if (!sender.hasPermission("togglepvp.command.toggle")) { if (!sender.hasPermission("preventstabby.command.toggle")) {
String message = ChatColor.translateAlternateColorCodes('&', TogglePvp.getPlugin().getConfigCache().getNo_permission()); String message = ChatColor.translateAlternateColorCodes('&', PreventStabby.getPlugin().getConfigCache().getNo_permission());
sender.sendMessage(message); sender.sendMessage(message);
return; return;
} }
@@ -25,25 +25,25 @@ public class PvpToggleCommand {
Player player = (Player) sender; Player player = (Player) sender;
if (CombatTimer.isInCombat(player.getUniqueId())) { if (CombatTimer.isInCombat(player.getUniqueId())) {
sender.sendMessage(PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getCant_do_that_during_combat())); sender.sendMessage(PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()));
return; return;
} }
boolean currentState = TogglePvp.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId()); boolean currentState = PreventStabby.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId());
String message = ""; String message = "";
if (currentState) { if (currentState) {
message = PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getPvp_enabled()); message = PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getPvp_enabled());
} else { } else {
message = PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getPvp_disabled()); message = PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getPvp_disabled());
} }
player.sendMessage(message); player.sendMessage(message);
} else { } else {
sender.sendMessage("Try /pvp toggle <player>"); sender.sendMessage("Try /pvp toggle <player>");
} }
} else if (args.length == 2) { } else if (args.length == 2) {
if (!sender.hasPermission("togglepvp.command.toggle.others")) { if (!sender.hasPermission("preventstabby.command.toggle.others")) {
String message = ChatColor.translateAlternateColorCodes('&', TogglePvp.getPlugin().getConfigCache().getNo_permission()); String message = ChatColor.translateAlternateColorCodes('&', PreventStabby.getPlugin().getConfigCache().getNo_permission());
sender.sendMessage(message); sender.sendMessage(message);
return; return;
} }
@@ -51,18 +51,18 @@ public class PvpToggleCommand {
if (sender instanceof Player) { if (sender instanceof Player) {
Player player = (Player) sender; Player player = (Player) sender;
if (CombatTimer.isInCombat(player.getUniqueId())) { if (CombatTimer.isInCombat(player.getUniqueId())) {
sender.sendMessage(PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getCant_do_that_during_combat())); sender.sendMessage(PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()));
return; return;
} }
} }
try { try {
Player player = Bukkit.getPlayer(args[1]); Player player = Bukkit.getPlayer(args[1]);
boolean currentState = TogglePvp.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId()); boolean currentState = PreventStabby.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId());
String message; String message;
if (currentState) { if (currentState) {
message = TogglePvp.getPlugin().getConfigCache().getPvp_enabled_other(); message = PreventStabby.getPlugin().getConfigCache().getPvp_enabled_other();
} else { } else {
message = TogglePvp.getPlugin().getConfigCache().getPvp_disabled_other(); message = PreventStabby.getPlugin().getConfigCache().getPvp_disabled_other();
} }
sender.sendMessage(PluginMessages.parsePlayerName(player, message)); sender.sendMessage(PluginMessages.parsePlayerName(player, message));
@@ -70,7 +70,7 @@ public class PvpToggleCommand {
sender.sendMessage(PluginMessages.parseMessage("&cPlayer offline.")); sender.sendMessage(PluginMessages.parseMessage("&cPlayer offline."));
} }
} else { } else {
if (sender.hasPermission("togglepvp.command.toggle.others")) { if (sender.hasPermission("preventstabby.command.toggle.others")) {
sender.sendMessage("Try /pvp toggle <player>"); sender.sendMessage("Try /pvp toggle <player>");
} else { } else {
sender.sendMessage("Try /pvp toggle"); sender.sendMessage("Try /pvp toggle");
@@ -80,8 +80,8 @@ public class PvpToggleCommand {
} }
public static void enable(CommandSender sender, String[] args) { public static void enable(CommandSender sender, String[] args) {
if (!sender.hasPermission("togglepvp.command.toggle")) { if (!sender.hasPermission("preventstabby.command.toggle")) {
String message = ChatColor.translateAlternateColorCodes('&', TogglePvp.getPlugin().getConfigCache().getNo_permission()); String message = ChatColor.translateAlternateColorCodes('&', PreventStabby.getPlugin().getConfigCache().getNo_permission());
sender.sendMessage(message); sender.sendMessage(message);
return; return;
} }
@@ -89,38 +89,38 @@ public class PvpToggleCommand {
if (sender instanceof Player) { if (sender instanceof Player) {
Player player = (Player) sender; Player player = (Player) sender;
if (CombatTimer.isInCombat(player.getUniqueId())) { if (CombatTimer.isInCombat(player.getUniqueId())) {
sender.sendMessage(PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getCant_do_that_during_combat())); sender.sendMessage(PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()));
return; return;
} }
TogglePvp.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true); PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true);
String message = PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getPvp_enabled()); String message = PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getPvp_enabled());
player.sendMessage(message); player.sendMessage(message);
} else { } else {
sender.sendMessage("Try /pvp enable <player>"); sender.sendMessage("Try /pvp enable <player>");
} }
} else if (args.length == 2) { } else if (args.length == 2) {
if (!sender.hasPermission("togglepvp.command.toggle.others")) { if (!sender.hasPermission("preventstabby.command.toggle.others")) {
String message = ChatColor.translateAlternateColorCodes('&', TogglePvp.getPlugin().getConfigCache().getNo_permission()); String message = ChatColor.translateAlternateColorCodes('&', PreventStabby.getPlugin().getConfigCache().getNo_permission());
sender.sendMessage(message); sender.sendMessage(message);
return; return;
} }
if (sender instanceof Player) { if (sender instanceof Player) {
Player player = (Player) sender; Player player = (Player) sender;
if (CombatTimer.isInCombat(player.getUniqueId())) { if (CombatTimer.isInCombat(player.getUniqueId())) {
sender.sendMessage(PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getCant_do_that_during_combat())); sender.sendMessage(PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()));
return; return;
} }
} }
try { try {
Player player = Bukkit.getPlayer(args[1]); Player player = Bukkit.getPlayer(args[1]);
String message = TogglePvp.getPlugin().getConfigCache().getPvp_enabled_other(); String message = PreventStabby.getPlugin().getConfigCache().getPvp_enabled_other();
sender.sendMessage(PluginMessages.parsePlayerName(player, message)); sender.sendMessage(PluginMessages.parsePlayerName(player, message));
TogglePvp.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true); PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true);
} catch (NullPointerException e) { } catch (NullPointerException e) {
sender.sendMessage(PluginMessages.parseMessage("&cPlayer offline.")); sender.sendMessage(PluginMessages.parseMessage("&cPlayer offline."));
} }
} else { } else {
if (sender.hasPermission("togglepvp.command.toggle.others")) { if (sender.hasPermission("preventstabby.command.toggle.others")) {
sender.sendMessage("Try /pvp enable <player>"); sender.sendMessage("Try /pvp enable <player>");
} else { } else {
sender.sendMessage("Try /pvp enable"); sender.sendMessage("Try /pvp enable");
@@ -129,8 +129,8 @@ public class PvpToggleCommand {
} }
public static void disable(CommandSender sender, String[] args) { public static void disable(CommandSender sender, String[] args) {
if (!sender.hasPermission("togglepvp.command.toggle")) { if (!sender.hasPermission("preventstabby.command.toggle")) {
String message = ChatColor.translateAlternateColorCodes('&', TogglePvp.getPlugin().getConfigCache().getNo_permission()); String message = ChatColor.translateAlternateColorCodes('&', PreventStabby.getPlugin().getConfigCache().getNo_permission());
sender.sendMessage(message); sender.sendMessage(message);
return; return;
} }
@@ -138,38 +138,38 @@ public class PvpToggleCommand {
if (sender instanceof Player) { if (sender instanceof Player) {
Player player = (Player) sender; Player player = (Player) sender;
if (CombatTimer.isInCombat(player.getUniqueId())) { if (CombatTimer.isInCombat(player.getUniqueId())) {
sender.sendMessage(PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getCant_do_that_during_combat())); sender.sendMessage(PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()));
return; return;
} }
TogglePvp.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), false); PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), false);
String message = PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getPvp_disabled()); String message = PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getPvp_disabled());
player.sendMessage(message); player.sendMessage(message);
} else { } else {
sender.sendMessage("Try /pvp disable <player>"); sender.sendMessage("Try /pvp disable <player>");
} }
} else if (args.length == 2) { } else if (args.length == 2) {
if (!sender.hasPermission("togglepvp.command.toggle.others")) { if (!sender.hasPermission("preventstabby.command.toggle.others")) {
String message = TogglePvp.getPlugin().getConfigCache().getNo_permission(); String message = PreventStabby.getPlugin().getConfigCache().getNo_permission();
sender.sendMessage(message); sender.sendMessage(message);
return; return;
} }
if (sender instanceof Player) { if (sender instanceof Player) {
Player player = (Player) sender; Player player = (Player) sender;
if (CombatTimer.isInCombat(player.getUniqueId())) { if (CombatTimer.isInCombat(player.getUniqueId())) {
sender.sendMessage(PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getCant_do_that_during_combat())); sender.sendMessage(PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat()));
return; return;
} }
} }
try { try {
Player player = Bukkit.getPlayer(args[1]); Player player = Bukkit.getPlayer(args[1]);
String message = TogglePvp.getPlugin().getConfigCache().getPvp_disabled_other(); String message = PreventStabby.getPlugin().getConfigCache().getPvp_disabled_other();
sender.sendMessage(PluginMessages.parsePlayerName(player, message)); sender.sendMessage(PluginMessages.parsePlayerName(player, message));
TogglePvp.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true); PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true);
} catch (NullPointerException e) { } catch (NullPointerException e) {
sender.sendMessage(PluginMessages.parseMessage("&cPlayer offline.")); sender.sendMessage(PluginMessages.parseMessage("&cPlayer offline."));
} }
} else { } else {
if (sender.hasPermission("togglepvp.command.toggle.others")) { if (sender.hasPermission("preventstabby.command.toggle.others")) {
sender.sendMessage("Try /pvp disable <player>"); sender.sendMessage("Try /pvp disable <player>");
} else { } else {
sender.sendMessage("Try /pvp disable"); sender.sendMessage("Try /pvp disable");
@@ -0,0 +1,23 @@
package me.youhavetrouble.preventstabby.commands;
import me.youhavetrouble.preventstabby.PreventStabby;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
public class ReloadCommand {
public static void reload(CommandSender sender) {
Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> {
if (!sender.hasPermission("preventstabby.command.reload")) {
String message = ChatColor.translateAlternateColorCodes('&', PreventStabby.getPlugin().getConfigCache().getNo_permission());
sender.sendMessage(message);
return;
}
PreventStabby.getPlugin().reloadPluginConfig(sender);
});
}
}
@@ -1,6 +1,6 @@
package eu.endermite.togglepvp.config; package me.youhavetrouble.preventstabby.config;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import io.github.thatsmusic99.configurationmaster.CMFile; import io.github.thatsmusic99.configurationmaster.CMFile;
import lombok.Getter; import lombok.Getter;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
@@ -12,7 +12,7 @@ import java.util.Set;
public class ConfigCache { public class ConfigCache {
private final TogglePvp plugin = TogglePvp.getPlugin(); private final PreventStabby plugin = PreventStabby.getPlugin();
@Getter private final boolean pvp_enabled_by_default, lava_and_fire_stopper_enabled, channeling_enchant_disabled, @Getter private final boolean pvp_enabled_by_default, lava_and_fire_stopper_enabled, channeling_enchant_disabled,
punish_for_combat_logout, punish_for_combat_logout_announce, only_owner_can_interact_with_pet, punish_for_combat_logout, punish_for_combat_logout_announce, only_owner_can_interact_with_pet,
@@ -20,7 +20,7 @@ public class ConfigCache {
@Getter private final String pvp_enabled, pvp_disabled, cannot_attack_victim, cannot_attack_attacker, @Getter private final String pvp_enabled, pvp_disabled, cannot_attack_victim, cannot_attack_attacker,
cannot_attack_pets_victim, cannot_attack_pets_attacker, no_permission, no_such_command, pvp_enabled_other, cannot_attack_pets_victim, cannot_attack_pets_attacker, no_permission, no_such_command, pvp_enabled_other,
pvp_disabled_other, punish_for_combat_logout_message, entering_combat, leaving_combat, pvp_disabled_other, punish_for_combat_logout_message, entering_combat, leaving_combat,
cant_do_that_during_combat; cant_do_that_during_combat, cannot_attack_mounts_attacker, cannot_attack_mounts_victim;
@Getter private final double lava_and_fire_stopper_radius; @Getter private final double lava_and_fire_stopper_radius;
@Getter private final long cache_time, combat_time, login_protection_time, teleport_protection_time; @Getter private final long cache_time, combat_time, login_protection_time, teleport_protection_time;
@Getter private final Set<String> combatBlockedCommands = new HashSet<>(); @Getter private final Set<String> combatBlockedCommands = new HashSet<>();
@@ -73,6 +73,8 @@ public class ConfigCache {
addDefault("messages.cannot_attack_attacker", "&cYou can't attack players while you have PvP turned off!"); addDefault("messages.cannot_attack_attacker", "&cYou can't attack players while you have PvP turned off!");
addDefault("messages.cannot_attack_pets_victim", "&cYou can't attack pets of players that have PvP turned off"); addDefault("messages.cannot_attack_pets_victim", "&cYou can't attack pets of players that have PvP turned off");
addDefault("messages.cannot_attack_pets_attacker", "&cYou can't attack pets while you have PvP turned off"); addDefault("messages.cannot_attack_pets_attacker", "&cYou can't attack pets while you have PvP turned off");
addDefault("messages.cannot_attack_mounts_victim", "&cYou can't attack mounts of players that have PvP turned off");
addDefault("messages.cannot_attack_mounts_attacker", "&cYou can't attack mounts while you have PvP turned off");
addDefault("messages.no_permission", "&cYou don't have permission to use that."); addDefault("messages.no_permission", "&cYou don't have permission to use that.");
addDefault("messages.no_such_command", "&cNo such command."); addDefault("messages.no_such_command", "&cNo such command.");
addDefault("messages.pvp_enabled_others", "&cYou've enabled %player%'s PvP."); addDefault("messages.pvp_enabled_others", "&cYou've enabled %player%'s PvP.");
@@ -124,6 +126,8 @@ public class ConfigCache {
this.cannot_attack_attacker = config.getString("messages.cannot_attack_attacker", "&cYou can't attack players while you have PvP turned off!"); this.cannot_attack_attacker = config.getString("messages.cannot_attack_attacker", "&cYou can't attack players while you have PvP turned off!");
this.cannot_attack_pets_victim = config.getString("messages.cannot_attack_pets_victim", "&cYou can't attack pets while you have PvP turned off"); this.cannot_attack_pets_victim = config.getString("messages.cannot_attack_pets_victim", "&cYou can't attack pets while you have PvP turned off");
this.cannot_attack_pets_attacker = config.getString("messages.cannot_attack_pets_attacker", "&cYou can't attack pets of players that have PvP turned off"); this.cannot_attack_pets_attacker = config.getString("messages.cannot_attack_pets_attacker", "&cYou can't attack pets of players that have PvP turned off");
this.cannot_attack_mounts_victim = config.getString("messages.cannot_attack_mounts_victim", "&cYou can't attack mounts of players that have PvP turned off");
this.cannot_attack_mounts_attacker = config.getString("messages.cannot_attack_mounts_attacker", "&cYou can't attack mounts while you have PvP turned off");
this.no_permission = config.getString("messages.no_permission", "&cYou don't have permission to use that."); this.no_permission = config.getString("messages.no_permission", "&cYou don't have permission to use that.");
this.no_such_command = config.getString("messages.no_such_command", "&cNo such command."); this.no_such_command = config.getString("messages.no_such_command", "&cNo such command.");
this.pvp_enabled_other = config.getString("messages.pvp_enabled_others", "&cYou've enabled %player%'s PvP."); this.pvp_enabled_other = config.getString("messages.pvp_enabled_others", "&cYou've enabled %player%'s PvP.");
@@ -0,0 +1,27 @@
package me.youhavetrouble.preventstabby.listeners.mount;
import me.youhavetrouble.preventstabby.util.Util;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;
import java.util.UUID;
@PreventStabbyListener
public class MountHitByExplosionListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerAttackMount(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player) || event.getEntity().getPassengers().isEmpty()) return;
if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) return;
UUID damager = event.getDamager().getUniqueId();
Entity mount = event.getEntity();
if (Util.processMountAttack(damager, mount))
event.setCancelled(true);
}
}
@@ -0,0 +1,30 @@
package me.youhavetrouble.preventstabby.listeners.mount;
import me.youhavetrouble.preventstabby.util.Util;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Firework;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;
import java.util.UUID;
@PreventStabbyListener
public class MountHitByFireworkListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerAttackMount(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Firework) || event.getEntity().getPassengers().isEmpty()) return;
if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) return;
Firework firework = (Firework) event.getDamager();
if (!(firework.getShooter() instanceof Player)) return;
UUID damager = ((Player) firework.getShooter()).getUniqueId();
Entity mount = event.getEntity();
if (Util.processMountAttack(damager, mount))
event.setCancelled(true);
}
}
@@ -0,0 +1,40 @@
package me.youhavetrouble.preventstabby.listeners.mount;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import me.youhavetrouble.preventstabby.util.Util;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.potion.PotionEffect;
import java.util.UUID;
@PreventStabbyListener
public class MountHitBySplashPotionListener implements Listener {
/**
* If thrown potion applies negative effects and it's thrown by a player
* it will have no effect on a pet of a player with pvp off
*/
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onMountHitBySplashPotion(org.bukkit.event.entity.PotionSplashEvent event) {
if (!(event.getEntity().getShooter() instanceof Player)) return;
boolean harmful = false;
for (PotionEffect effect : event.getPotion().getEffects()) {
if (Util.isPotionEffectHarmful(effect.getType())) {
harmful = true;
break;
}
}
if (!harmful) return;
UUID damager = ((Player) event.getEntity().getShooter()).getUniqueId();
for (LivingEntity entity : event.getAffectedEntities()) {
if (entity.getPassengers().isEmpty()) continue;
if (Util.processMountAttack(damager, entity))
event.setIntensity(entity, 0);
}
}
}
@@ -0,0 +1,25 @@
package me.youhavetrouble.preventstabby.listeners.mount;
import me.youhavetrouble.preventstabby.util.Util;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import java.util.UUID;
@PreventStabbyListener
public class PlayerAttackMountListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerAttackMount(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player) || event.getEntity().getPassengers().isEmpty()) return;
Entity entity = event.getEntity();
UUID damager = event.getDamager().getUniqueId();
if (Util.processMountAttack(damager, entity))
event.setCancelled(true);
}
}
@@ -0,0 +1,28 @@
package me.youhavetrouble.preventstabby.listeners.mount;
import me.youhavetrouble.preventstabby.util.Util;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import java.util.UUID;
@PreventStabbyListener
public class PlayerHitMountWithProjectileListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerAttackMount(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player) || event.getEntity().getPassengers().isEmpty()) return;
Projectile projectile = (Projectile) event.getDamager();
if (!(projectile.getShooter() instanceof Player)) return;
Entity entity = event.getEntity();
UUID damager = event.getDamager().getUniqueId();
if (Util.processMountAttack(damager, entity))
event.setCancelled(true);
}
}
@@ -1,7 +1,8 @@
package eu.endermite.togglepvp.listeners.pets; package me.youhavetrouble.preventstabby.listeners.pets;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Tameable; import org.bukkit.entity.Tameable;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
@@ -9,7 +10,7 @@ import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent;
import java.util.UUID; import java.util.UUID;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PetHitByExplosionListener implements Listener { public class PetHitByExplosionListener implements Listener {
/** /**
@@ -17,24 +18,19 @@ public class PetHitByExplosionListener implements Listener {
*/ */
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPetHitByExplosion(org.bukkit.event.entity.EntityDamageByEntityEvent event) { public void onPetHitByExplosion(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
if (!(event.getEntity() instanceof Tameable)) if (!(event.getEntity() instanceof Tameable)) return;
return; if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) return;
if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION))
return;
Tameable tameable = (Tameable) event.getEntity(); Tameable tameable = (Tameable) event.getEntity();
if (tameable.getOwner() == null) if (tameable.getOwner() == null) return;
return;
UUID victim = tameable.getOwner().getUniqueId(); UUID victim = tameable.getOwner().getUniqueId();
try { try {
UUID damager = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString()); UUID damager = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
if (victim == damager) if (victim.equals(damager))
return; return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false)) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -1,7 +1,8 @@
package eu.endermite.togglepvp.listeners.pets; package me.youhavetrouble.preventstabby.listeners.pets;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Firework; import org.bukkit.entity.Firework;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable; import org.bukkit.entity.Tameable;
@@ -10,24 +11,21 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import java.util.UUID; import java.util.UUID;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PetHitByFireworkListener implements Listener { public class PetHitByFireworkListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPetFireworkDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) { public void onPetFireworkDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
if (event.getDamager() instanceof Firework && event.getEntity() instanceof Tameable) { if (event.getDamager() instanceof Firework && event.getEntity() instanceof Tameable) {
Tameable tameable = (Tameable) event.getEntity(); Tameable tameable = (Tameable) event.getEntity();
if (tameable.getOwner() == null) if (tameable.getOwner() == null) return;
return;
Firework firework = (Firework) event.getDamager(); Firework firework = (Firework) event.getDamager();
if (!(firework.getShooter() instanceof Player)) if (!(firework.getShooter() instanceof Player)) return;
return;
UUID damager = ((Player) firework.getShooter()).getUniqueId(); UUID damager = ((Player) firework.getShooter()).getUniqueId();
UUID victim = tameable.getOwner().getUniqueId(); UUID victim = tameable.getOwner().getUniqueId();
if (victim == damager) if (victim.equals(damager)) return;
return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false)) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -1,7 +1,9 @@
package eu.endermite.togglepvp.listeners.pets; package me.youhavetrouble.preventstabby.listeners.pets;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import me.youhavetrouble.preventstabby.util.Util;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable; import org.bukkit.entity.Tameable;
@@ -12,7 +14,7 @@ import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionEffectType;
import java.util.UUID; import java.util.UUID;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PetHitBySplashPotionListener implements Listener { public class PetHitBySplashPotionListener implements Listener {
/** /**
@@ -22,40 +24,25 @@ public class PetHitBySplashPotionListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPetHitBySplashPotion(org.bukkit.event.entity.PotionSplashEvent event) { public void onPetHitBySplashPotion(org.bukkit.event.entity.PotionSplashEvent event) {
if (!(event.getEntity().getShooter() instanceof Player)) if (!(event.getEntity().getShooter() instanceof Player)) return;
return;
boolean harmful = false; boolean harmful = false;
for (PotionEffect effect : event.getPotion().getEffects()) { for (PotionEffect effect : event.getPotion().getEffects()) {
if (effect.getType().equals(PotionEffectType.BLINDNESS) || if (Util.isPotionEffectHarmful(effect.getType())) {
effect.getType().equals(PotionEffectType.CONFUSION) ||
effect.getType().equals(PotionEffectType.HARM) ||
effect.getType().equals(PotionEffectType.HUNGER) ||
effect.getType().equals(PotionEffectType.POISON) ||
effect.getType().equals(PotionEffectType.SLOW_DIGGING) ||
effect.getType().equals(PotionEffectType.WEAKNESS) ||
effect.getType().equals(PotionEffectType.SLOW) ||
effect.getType().equals(PotionEffectType.WITHER)) {
harmful = true; harmful = true;
break;
} }
} }
if (!harmful) if (!harmful) return;
return; UUID damager = ((Player) event.getEntity().getShooter()).getUniqueId();
for (Entity entity : event.getAffectedEntities()) { for (Entity entity : event.getAffectedEntities()) {
if (entity instanceof Tameable) { if (entity instanceof Tameable) {
UUID damager = ((Player) event.getEntity().getShooter()).getUniqueId();
Tameable tameable = (Tameable) entity; Tameable tameable = (Tameable) entity;
if (tameable.getOwner() == null) continue;
if (tameable.getOwner() == null)
continue;
UUID victim = tameable.getOwner().getUniqueId(); UUID victim = tameable.getOwner().getUniqueId();
if (victim == damager) return;
if (victim == damager) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -1,29 +1,28 @@
package eu.endermite.togglepvp.listeners.pets; package me.youhavetrouble.preventstabby.listeners.pets;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Tameable; import org.bukkit.entity.Tameable;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import java.util.UUID; import java.util.UUID;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PetLeashListener implements Listener { public class PetLeashListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPetLeash(org.bukkit.event.entity.PlayerLeashEntityEvent event) { public void onPetLeash(org.bukkit.event.entity.PlayerLeashEntityEvent event) {
if (event.getEntity() instanceof Tameable) { if (event.getEntity() instanceof Tameable) {
Tameable tameable = (Tameable) event.getEntity(); Tameable tameable = (Tameable) event.getEntity();
if (tameable.getOwner() == null) if (tameable.getOwner() == null) return;
return;
UUID damager = event.getPlayer().getUniqueId(); UUID damager = event.getPlayer().getUniqueId();
UUID victim = tameable.getOwner().getUniqueId(); UUID victim = tameable.getOwner().getUniqueId();
if (victim == damager) if (victim == damager) return;
return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false)) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -0,0 +1,38 @@
package me.youhavetrouble.preventstabby.listeners.pets;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.players.SmartCache;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import me.youhavetrouble.preventstabby.util.Util;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Tameable;
import org.bukkit.entity.Wolf;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@PreventStabbyListener
public class PetTargettingMountListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onWolfAttackMount(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Tameable) || event.getEntity().getPassengers().isEmpty()) return;
Tameable damager = (Tameable) event.getDamager();
Entity victim = event.getEntity();
if (damager.getOwner() == null) return;
SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
boolean damagerPvpEnabled = smartCache.getPlayerData(damager.getOwner().getUniqueId()).isPvpEnabled();
boolean victimPvpEnabled = !Util.processMountAttack(damager.getOwner().getUniqueId(), victim);
if (!victimPvpEnabled || !damagerPvpEnabled) {
if (damager instanceof Wolf) {
Wolf wolf = (Wolf) damager;
wolf.setAngry(false);
}
event.setCancelled(true);
}
}
}
@@ -1,14 +1,15 @@
package eu.endermite.togglepvp.listeners.pets; package me.youhavetrouble.preventstabby.listeners.pets;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.players.SmartCache; import me.youhavetrouble.preventstabby.players.SmartCache;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Tameable; import org.bukkit.entity.Tameable;
import org.bukkit.entity.Wolf; import org.bukkit.entity.Wolf;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PetTargettingPetListener implements Listener { public class PetTargettingPetListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
@@ -16,10 +17,9 @@ public class PetTargettingPetListener implements Listener {
if (event.getDamager() instanceof Tameable && event.getEntity() instanceof Tameable) { if (event.getDamager() instanceof Tameable && event.getEntity() instanceof Tameable) {
Tameable damager = (Tameable) event.getDamager(); Tameable damager = (Tameable) event.getDamager();
Tameable victim = (Tameable) event.getEntity(); Tameable victim = (Tameable) event.getEntity();
if (damager.getOwner() == null || victim.getOwner() == null) if (damager.getOwner() == null || victim.getOwner() == null) return;
return;
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache(); SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
boolean damagerPvpEnabled = smartCache.getPlayerData(damager.getOwner().getUniqueId()).isPvpEnabled(); boolean damagerPvpEnabled = smartCache.getPlayerData(damager.getOwner().getUniqueId()).isPvpEnabled();
boolean victimPvpEnabled = smartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled(); boolean victimPvpEnabled = smartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled();
@@ -1,7 +1,8 @@
package eu.endermite.togglepvp.listeners.pets; package me.youhavetrouble.preventstabby.listeners.pets;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable; import org.bukkit.entity.Tameable;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@@ -10,25 +11,22 @@ import org.bukkit.event.Listener;
import java.util.UUID; import java.util.UUID;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PetTargettingPlayerListener implements Listener { public class PetTargettingPlayerListener implements Listener {
/** /**
* Stops pets with owners targetting players with pvp off * Stops pets with owners targetting players with pvp off
*/ */
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPetTargetPlayer(org.bukkit.event.entity.EntityTargetEvent event) { public void onPetTargetPlayer(org.bukkit.event.entity.EntityTargetEvent event) {
if (!(event.getEntity() instanceof Tameable)) if (!(event.getEntity() instanceof Tameable)) return;
return;
Tameable entity = (Tameable) event.getEntity(); Tameable entity = (Tameable) event.getEntity();
if (entity.getOwner() == null) if (entity.getOwner() == null) return;
return;
if (event.getTarget() instanceof Player) { if (event.getTarget() instanceof Player) {
UUID damager = entity.getOwner().getUniqueId(); UUID damager = entity.getOwner().getUniqueId();
UUID victim = event.getTarget().getUniqueId(); UUID victim = event.getTarget().getUniqueId();
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false)) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -1,10 +1,11 @@
package eu.endermite.togglepvp.listeners.pets; package me.youhavetrouble.preventstabby.listeners.pets;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.config.ConfigCache; import me.youhavetrouble.preventstabby.config.ConfigCache;
import eu.endermite.togglepvp.players.SmartCache; import me.youhavetrouble.preventstabby.players.SmartCache;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import eu.endermite.togglepvp.util.PluginMessages; import me.youhavetrouble.preventstabby.util.PluginMessages;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable; import org.bukkit.entity.Tameable;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@@ -13,26 +14,24 @@ import org.bukkit.event.Listener;
import java.util.UUID; import java.util.UUID;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PlayerAttackPetListener implements Listener { public class PlayerAttackPetListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerAttackPet(org.bukkit.event.entity.EntityDamageByEntityEvent event) { public void onPlayerAttackPet(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
if (event.getDamager() instanceof Player && event.getEntity() instanceof Tameable) { if (event.getDamager() instanceof Player && event.getEntity() instanceof Tameable) {
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache(); SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
Tameable tameable = (Tameable) event.getEntity(); Tameable tameable = (Tameable) event.getEntity();
if (tameable.getOwner() == null) if (tameable.getOwner() == null) return;
return;
UUID damager = event.getDamager().getUniqueId(); UUID damager = event.getDamager().getUniqueId();
UUID victim = tameable.getOwner().getUniqueId(); UUID victim = tameable.getOwner().getUniqueId();
if (damager == victim) if (damager.equals(victim)) return;
return;
ConfigCache config = TogglePvp.getPlugin().getConfigCache(); ConfigCache config = PreventStabby.getPlugin().getConfigCache();
boolean damagerPvpState = TogglePvp.getPlugin().getPlayerManager().getPlayerPvPState(damager); boolean damagerPvpState = PreventStabby.getPlugin().getPlayerManager().getPlayerPvPState(damager);
if (!damagerPvpState) { if (!damagerPvpState) {
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker()); PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
event.setCancelled(true); event.setCancelled(true);
@@ -1,10 +1,11 @@
package eu.endermite.togglepvp.listeners.pets; package me.youhavetrouble.preventstabby.listeners.pets;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.config.ConfigCache; import me.youhavetrouble.preventstabby.config.ConfigCache;
import eu.endermite.togglepvp.players.SmartCache; import me.youhavetrouble.preventstabby.players.SmartCache;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import eu.endermite.togglepvp.util.PluginMessages; import me.youhavetrouble.preventstabby.util.PluginMessages;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile; import org.bukkit.entity.Projectile;
import org.bukkit.entity.Tameable; import org.bukkit.entity.Tameable;
@@ -14,8 +15,8 @@ import org.bukkit.event.Listener;
import java.util.UUID; import java.util.UUID;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PlayerHitPetWithProjectile implements Listener { public class PlayerHitPetWithProjectileListener implements Listener {
/** /**
* Cancels damage done by projectiles to pets of players with pvp off * Cancels damage done by projectiles to pets of players with pvp off
@@ -24,22 +25,17 @@ public class PlayerHitPetWithProjectile implements Listener {
public void onPlayerHitPetWithProjectile(org.bukkit.event.entity.EntityDamageByEntityEvent event) { public void onPlayerHitPetWithProjectile(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
if (event.getEntity() instanceof Tameable && event.getDamager() instanceof Projectile) { if (event.getEntity() instanceof Tameable && event.getDamager() instanceof Projectile) {
Projectile projectile = (Projectile) event.getDamager(); Projectile projectile = (Projectile) event.getDamager();
if (!(projectile.getShooter() instanceof Player)) if (!(projectile.getShooter() instanceof Player)) return;
return;
Tameable tameable = (Tameable) event.getEntity(); Tameable tameable = (Tameable) event.getEntity();
if (tameable.getOwner() == null) return;
if (tameable.getOwner() == null)
return;
UUID damager = ((Player) projectile.getShooter()).getUniqueId(); UUID damager = ((Player) projectile.getShooter()).getUniqueId();
UUID victim = tameable.getOwner().getUniqueId(); UUID victim = tameable.getOwner().getUniqueId();
if (damager == victim) if (damager.equals(victim)) return;
return;
ConfigCache config = TogglePvp.getPlugin().getConfigCache(); ConfigCache config = PreventStabby.getPlugin().getConfigCache();
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache(); SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
if (!smartCache.getPlayerData(damager).isPvpEnabled()) { if (!smartCache.getPlayerData(damager).isPvpEnabled()) {
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker()); PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
@@ -1,29 +1,24 @@
package eu.endermite.togglepvp.listeners.pets; package me.youhavetrouble.preventstabby.listeners.pets;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Tameable; import org.bukkit.entity.Tameable;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PlayerInteractWithPetListener implements Listener { public class PlayerInteractWithPetListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerInteractWithPet(org.bukkit.event.player.PlayerInteractEntityEvent event) { public void onPlayerInteractWithPet(org.bukkit.event.player.PlayerInteractEntityEvent event) {
if (!TogglePvp.getPlugin().getConfigCache().isOnly_owner_can_interact_with_pet()) if (!PreventStabby.getPlugin().getConfigCache().isOnly_owner_can_interact_with_pet()) return;
return; if (!(event.getRightClicked() instanceof Tameable)) return;
if (!(event.getRightClicked() instanceof Tameable))
return;
Tameable tameable = (Tameable) event.getRightClicked(); Tameable tameable = (Tameable) event.getRightClicked();
if (tameable.getOwner() == null) if (tameable.getOwner() == null) return;
return; if (tameable.getOwner().getUniqueId().equals(event.getPlayer().getUniqueId())) return;
if (tameable.getOwner().getUniqueId().equals(event.getPlayer().getUniqueId()))
return;
event.setCancelled(true); event.setCancelled(true);
@@ -1,8 +1,9 @@
package eu.endermite.togglepvp.listeners.player; package me.youhavetrouble.preventstabby.listeners.player;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.players.PlayerManager; import me.youhavetrouble.preventstabby.players.PlayerManager;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable; import org.bukkit.entity.Tameable;
import org.bukkit.entity.Wolf; import org.bukkit.entity.Wolf;
@@ -11,7 +12,7 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import java.util.UUID; import java.util.UUID;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PetAttackPlayerListener implements Listener { public class PetAttackPlayerListener implements Listener {
/** /**
@@ -21,16 +22,14 @@ public class PetAttackPlayerListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPetAttack(org.bukkit.event.entity.EntityDamageByEntityEvent event) { public void onPetAttack(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Tameable)) if (!(event.getDamager() instanceof Tameable)) return;
return;
Tameable entity = (Tameable) event.getDamager(); Tameable entity = (Tameable) event.getDamager();
if (entity.getOwner() != null && event.getEntity() instanceof Player) { if (entity.getOwner() != null && event.getEntity() instanceof Player) {
UUID victim = event.getEntity().getUniqueId(); UUID victim = event.getEntity().getUniqueId();
UUID damager = entity.getOwner().getUniqueId(); UUID damager = entity.getOwner().getUniqueId();
PlayerManager playerManager = PreventStabby.getPlugin().getPlayerManager();
PlayerManager playerManager = TogglePvp.getPlugin().getPlayerManager();
if (!playerManager.canDamage(damager, victim, false)) { if (!playerManager.canDamage(damager, victim, false)) {
if (entity instanceof Wolf) { if (entity instanceof Wolf) {
@@ -1,7 +1,8 @@
package eu.endermite.togglepvp.listeners.player; package me.youhavetrouble.preventstabby.listeners.player;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@@ -9,7 +10,7 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import java.util.UUID; import java.util.UUID;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PlayerAttackListener implements Listener { public class PlayerAttackListener implements Listener {
/** /**
@@ -24,7 +25,7 @@ public class PlayerAttackListener implements Listener {
UUID damager = damagerEntity.getUniqueId(); UUID damager = damagerEntity.getUniqueId();
UUID victim = victimEntity.getUniqueId(); UUID victim = victimEntity.getUniqueId();
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -1,24 +1,24 @@
package eu.endermite.togglepvp.listeners.player; package me.youhavetrouble.preventstabby.listeners.player;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.players.PlayerData; import me.youhavetrouble.preventstabby.players.PlayerData;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PlayerDeathListener implements Listener { public class PlayerDeathListener implements Listener {
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onPlayerDeath(org.bukkit.event.entity.EntityDeathEvent event) { public void onPlayerDeath(org.bukkit.event.entity.EntityDeathEvent event) {
if (!(event.getEntity() instanceof Player)) if (!(event.getEntity() instanceof Player)) return;
return;
Player player = (Player) event.getEntity(); Player player = (Player) event.getEntity();
PlayerData playerData = TogglePvp.getPlugin().getSmartCache().getPlayerData(player.getUniqueId()); PlayerData playerData = PreventStabby.getPlugin().getSmartCache().getPlayerData(player.getUniqueId());
playerData.setCombattime(0); playerData.setCombattime(0);
playerData.setLastCombatCheck(false); playerData.setLastCombatCheck(false);
playerData.setInCombat(false); playerData.setInCombat(false);
@@ -1,7 +1,8 @@
package eu.endermite.togglepvp.listeners.player; package me.youhavetrouble.preventstabby.listeners.player;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.EnderCrystal; import org.bukkit.entity.EnderCrystal;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile; import org.bukkit.entity.Projectile;
@@ -15,7 +16,7 @@ import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.FixedMetadataValue;
import java.util.UUID; import java.util.UUID;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PlayerHitByExplosionListener implements Listener { public class PlayerHitByExplosionListener implements Listener {
/** /**
@@ -24,16 +25,14 @@ public class PlayerHitByExplosionListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerHitByExplosion(org.bukkit.event.entity.EntityDamageByEntityEvent event) { public void onPlayerHitByExplosion(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
if (event.getEntity() instanceof Player) { if (event.getEntity() instanceof Player) {
if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) { if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) return;
return;
}
UUID victim = event.getEntity().getUniqueId(); UUID victim = event.getEntity().getUniqueId();
try { try {
UUID damager = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString()); UUID damager = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
if (victim.equals(damager)) if (victim.equals(damager)) return;
return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -51,12 +50,12 @@ public class PlayerHitByExplosionListener implements Listener {
if (event.getEntity() instanceof EnderCrystal) { if (event.getEntity() instanceof EnderCrystal) {
EnderCrystal enderCrystal = (EnderCrystal) event.getEntity(); EnderCrystal enderCrystal = (EnderCrystal) event.getEntity();
if (event.getDamager() instanceof Player) { if (event.getDamager() instanceof Player) {
enderCrystal.setMetadata("PLAYEREXPLODED", new FixedMetadataValue(TogglePvp.getPlugin(), event.getDamager().getUniqueId().toString())); enderCrystal.setMetadata("PLAYEREXPLODED", new FixedMetadataValue(PreventStabby.getPlugin(), event.getDamager().getUniqueId().toString()));
} else if (event.getDamager() instanceof Projectile) { } else if (event.getDamager() instanceof Projectile) {
Projectile projectile = (Projectile) event.getDamager(); Projectile projectile = (Projectile) event.getDamager();
if (projectile.getShooter() instanceof Player) { if (projectile.getShooter() instanceof Player) {
Player damager = (Player) projectile.getShooter(); Player damager = (Player) projectile.getShooter();
enderCrystal.setMetadata("PLAYEREXPLODED", new FixedMetadataValue(TogglePvp.getPlugin(), damager.getUniqueId().toString())); enderCrystal.setMetadata("PLAYEREXPLODED", new FixedMetadataValue(PreventStabby.getPlugin(), damager.getUniqueId().toString()));
} }
} }
} }
@@ -71,12 +70,12 @@ public class PlayerHitByExplosionListener implements Listener {
TNTPrimed tntPrimed = (TNTPrimed) event.getEntity(); TNTPrimed tntPrimed = (TNTPrimed) event.getEntity();
if (tntPrimed.getSource() instanceof Player) { if (tntPrimed.getSource() instanceof Player) {
Player damager = (Player) tntPrimed.getSource(); Player damager = (Player) tntPrimed.getSource();
tntPrimed.setMetadata("PLAYEREXPLODED", new FixedMetadataValue(TogglePvp.getPlugin(), damager.getUniqueId().toString())); tntPrimed.setMetadata("PLAYEREXPLODED", new FixedMetadataValue(PreventStabby.getPlugin(), damager.getUniqueId().toString()));
} else if (tntPrimed.getSource() instanceof TNTPrimed) { } else if (tntPrimed.getSource() instanceof TNTPrimed) {
try { try {
TNTPrimed sourceTnt = (TNTPrimed) tntPrimed.getSource(); TNTPrimed sourceTnt = (TNTPrimed) tntPrimed.getSource();
String damagerUuid = sourceTnt.getMetadata("PLAYEREXPLODED").get(0).asString(); String damagerUuid = sourceTnt.getMetadata("PLAYEREXPLODED").get(0).asString();
tntPrimed.setMetadata("PLAYEREXPLODED", new FixedMetadataValue(TogglePvp.getPlugin(), damagerUuid)); tntPrimed.setMetadata("PLAYEREXPLODED", new FixedMetadataValue(PreventStabby.getPlugin(), damagerUuid));
} catch (NullPointerException ignored) { } catch (NullPointerException ignored) {
} }
} }
@@ -91,7 +90,7 @@ public class PlayerHitByExplosionListener implements Listener {
public void onPlayerPlacedTntMinecart(org.bukkit.event.entity.EntityPlaceEvent event) { public void onPlayerPlacedTntMinecart(org.bukkit.event.entity.EntityPlaceEvent event) {
if (event.getEntityType().equals(EntityType.MINECART_TNT)) { if (event.getEntityType().equals(EntityType.MINECART_TNT)) {
if (event.getPlayer() != null) { if (event.getPlayer() != null) {
event.getEntity().setMetadata("PLAYEREXPLODED", new FixedMetadataValue(TogglePvp.getPlugin(), event.getPlayer().getUniqueId().toString())); event.getEntity().setMetadata("PLAYEREXPLODED", new FixedMetadataValue(PreventStabby.getPlugin(), event.getPlayer().getUniqueId().toString()));
} }
} }
} }
@@ -103,7 +102,7 @@ public class PlayerHitByExplosionListener implements Listener {
public void onPlayerNudgedTntMinecart(org.bukkit.event.vehicle.VehicleEntityCollisionEvent event) { public void onPlayerNudgedTntMinecart(org.bukkit.event.vehicle.VehicleEntityCollisionEvent event) {
if (event.getVehicle() instanceof ExplosiveMinecart && event.getEntity() instanceof Player) { if (event.getVehicle() instanceof ExplosiveMinecart && event.getEntity() instanceof Player) {
Player damager = (Player) event.getEntity(); Player damager = (Player) event.getEntity();
event.getVehicle().setMetadata("PLAYEREXPLODED", new FixedMetadataValue(TogglePvp.getPlugin(), damager.getUniqueId().toString())); event.getVehicle().setMetadata("PLAYEREXPLODED", new FixedMetadataValue(PreventStabby.getPlugin(), damager.getUniqueId().toString()));
} }
} }
@@ -1,7 +1,8 @@
package eu.endermite.togglepvp.listeners.player; package me.youhavetrouble.preventstabby.listeners.player;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Firework; import org.bukkit.entity.Firework;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@@ -9,7 +10,7 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import java.util.UUID; import java.util.UUID;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PlayerHitByFireworkListener implements Listener { public class PlayerHitByFireworkListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
@@ -19,11 +20,9 @@ public class PlayerHitByFireworkListener implements Listener {
Firework firework = (Firework) event.getDamager(); Firework firework = (Firework) event.getDamager();
if (firework.getShooter() instanceof Player) { if (firework.getShooter() instanceof Player) {
UUID damager = ((Player) firework.getShooter()).getUniqueId(); UUID damager = ((Player) firework.getShooter()).getUniqueId();
if (damager == victim) { if (damager == victim) return;
return;
}
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -1,14 +1,15 @@
package eu.endermite.togglepvp.listeners.player; package me.youhavetrouble.preventstabby.listeners.player;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.*; import org.bukkit.entity.*;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import java.util.UUID; import java.util.UUID;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PlayerHitByProjectileListener implements Listener { public class PlayerHitByProjectileListener implements Listener {
/** /**
@@ -23,8 +24,8 @@ public class PlayerHitByProjectileListener implements Listener {
UUID damager = ((Player) projectile.getShooter()).getUniqueId(); UUID damager = ((Player) projectile.getShooter()).getUniqueId();
UUID victim = event.getEntity().getUniqueId(); UUID victim = event.getEntity().getUniqueId();
if (TogglePvp.getPlugin().getConfigCache().isSnowballs_knockback() && event.getDamager() instanceof Snowball) { if (PreventStabby.getPlugin().getConfigCache().isSnowballs_knockback() && event.getDamager() instanceof Snowball) {
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) { if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) {
((Player) event.getEntity()).damage(0.01, (Entity) projectile.getShooter()); ((Player) event.getEntity()).damage(0.01, (Entity) projectile.getShooter());
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
} else { } else {
@@ -32,8 +33,8 @@ public class PlayerHitByProjectileListener implements Listener {
return; return;
} }
} else if (TogglePvp.getPlugin().getConfigCache().isEgg_knockback() && event.getDamager() instanceof Egg) { } else if (PreventStabby.getPlugin().getConfigCache().isEgg_knockback() && event.getDamager() instanceof Egg) {
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) { if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) {
((Player) event.getEntity()).damage(0.01, (Entity) projectile.getShooter()); ((Player) event.getEntity()).damage(0.01, (Entity) projectile.getShooter());
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
} else { } else {
@@ -43,13 +44,11 @@ public class PlayerHitByProjectileListener implements Listener {
} }
// Ender pearls and other self-damage // Ender pearls and other self-damage
if (damager == victim) if (damager.equals(victim)) return;
return;
if (event.getDamage() == 0) if (event.getDamage() == 0) return;
return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -0,0 +1,48 @@
package me.youhavetrouble.preventstabby.listeners.player;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import me.youhavetrouble.preventstabby.util.Util;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.potion.PotionEffect;
import java.util.UUID;
@PreventStabbyListener
public class PlayerHitBySplashPotionListener implements Listener {
/**
* If thrown potion is applies negative effects and it's thrown by a player it will have no effect on player with pvp off
*/
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerHitBySplashPotion(org.bukkit.event.entity.PotionSplashEvent event) {
if (!(event.getEntity().getShooter() instanceof Player)) return;
boolean harmful = false;
for (PotionEffect effect : event.getPotion().getEffects()) {
if (Util.isPotionEffectHarmful(effect.getType())) {
harmful = true;
break;
}
}
if (!harmful) return;
UUID damager = ((Player) event.getEntity().getShooter()).getUniqueId();
for (LivingEntity entity : event.getAffectedEntities()) {
if (!(entity instanceof Player)) continue;
UUID victim = entity.getUniqueId();
if (damager == victim) continue;
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) {
CombatTimer.refreshPlayersCombatTime(damager, victim);
} else {
event.setIntensity(entity, 0);
}
}
}
}
@@ -0,0 +1,63 @@
package me.youhavetrouble.preventstabby.listeners.player;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.players.PlayerData;
import me.youhavetrouble.preventstabby.players.SmartCache;
import me.youhavetrouble.preventstabby.util.PluginMessages;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import java.time.Instant;
import java.util.UUID;
@PreventStabbyListener
public class PlayerJoinAndLeaveListener implements Listener {
/**
* This event is here to get players saved options on join
*/
@EventHandler(ignoreCancelled = true)
public void onPlayerJoin(org.bukkit.event.player.PlayerJoinEvent event) {
Player player = event.getPlayer();
UUID uuid = player.getUniqueId();
PlayerData playerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId());
long time = Instant.now().getEpochSecond();
if (playerData == null) {
PreventStabby.getPlugin().getPlayerManager().addPlayer(uuid, new PlayerData(false));
Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> {
PlayerData data = PreventStabby.getPlugin().getSqLite().getPlayerInfo(uuid);
PreventStabby.getPlugin().getPlayerManager().addPlayer(uuid, data);
data.setLoginTimestamp(time);
});
return;
}
playerData.refreshCachetime();
playerData.setLoginTimestamp(time);
}
/**
* This event is here to save player's data to database
* Also punishes players who log out during combat
*/
@EventHandler
public void onPlayerLeave(org.bukkit.event.player.PlayerQuitEvent event) {
Player player = event.getPlayer();
Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> PreventStabby.getPlugin().getSqLite().updatePlayerInfo(player.getUniqueId(), PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId())));
if (!PreventStabby.getPlugin().getConfigCache().isPunish_for_combat_logout()) return;
SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
PlayerData playerData = smartCache.getPlayerData(player.getUniqueId());
if (!playerData.isInCombat()) return;
player.setHealth(0);
if (PreventStabby.getPlugin().getConfigCache().isPunish_for_combat_logout_announce())
PluginMessages.broadcastMessage(player, PreventStabby.getPlugin().getConfigCache().getPunish_for_combat_logout_message());
}
}
@@ -1,21 +1,22 @@
package eu.endermite.togglepvp.listeners.player; package me.youhavetrouble.preventstabby.listeners.player;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.players.PlayerData; import me.youhavetrouble.preventstabby.players.PlayerData;
import eu.endermite.togglepvp.players.SmartCache; import me.youhavetrouble.preventstabby.players.SmartCache;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import java.time.Instant; import java.time.Instant;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PlayerTeleportListener implements Listener { public class PlayerTeleportListener implements Listener {
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onPlayerTeleport(org.bukkit.event.player.PlayerTeleportEvent event) { public void onPlayerTeleport(org.bukkit.event.player.PlayerTeleportEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache(); SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
PlayerData playerData = smartCache.getPlayerData(player.getUniqueId()); PlayerData playerData = smartCache.getPlayerData(player.getUniqueId());
playerData.setTeleportTimestamp(Instant.now().getEpochSecond()); playerData.setTeleportTimestamp(Instant.now().getEpochSecond());
} }
@@ -0,0 +1,38 @@
package me.youhavetrouble.preventstabby.listeners.toggles;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.players.PlayerManager;
import me.youhavetrouble.preventstabby.util.PluginMessages;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@PreventStabbyListener
public class CombatCommandListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerCommandInCombat(org.bukkit.event.player.PlayerCommandPreprocessEvent event) {
if (!PreventStabby.getPlugin().getConfigCache().isBlock_commands_in_combat())
return;
PlayerManager playerManager = PreventStabby.getPlugin().getPlayerManager();
if (!playerManager.getPlayer(event.getPlayer().getUniqueId()).isInCombat())
return;
String command = event.getMessage().replaceFirst("/", "");
if (!PreventStabby.getPlugin().getConfigCache().getCombatBlockedCommands().contains(command))
return;
if (event.getPlayer().hasPermission("toglepvp.combatcommandblock.bypass"))
return;
event.setCancelled(true);
PluginMessages.sendMessage(event.getPlayer(), PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat());
}
}
@@ -1,22 +1,23 @@
package eu.endermite.togglepvp.listeners.toggles; package me.youhavetrouble.preventstabby.listeners.toggles;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.players.PlayerManager; import me.youhavetrouble.preventstabby.players.PlayerManager;
import eu.endermite.togglepvp.util.PluginMessages; import me.youhavetrouble.preventstabby.util.PluginMessages;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PlayerTeleportInCombatListener implements Listener { public class PlayerTeleportInCombatListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerTeleportInCombat(org.bukkit.event.player.PlayerTeleportEvent event) { public void onPlayerTeleportInCombat(org.bukkit.event.player.PlayerTeleportEvent event) {
if (!TogglePvp.getPlugin().getConfigCache().isBlock_teleports_in_combat()) if (!PreventStabby.getPlugin().getConfigCache().isBlock_teleports_in_combat())
return; return;
PlayerManager playerManager = TogglePvp.getPlugin().getPlayerManager(); PlayerManager playerManager = PreventStabby.getPlugin().getPlayerManager();
if (!playerManager.getPlayer(event.getPlayer().getUniqueId()).isInCombat()) if (!playerManager.getPlayer(event.getPlayer().getUniqueId()).isInCombat())
return; return;
@@ -25,7 +26,7 @@ public class PlayerTeleportInCombatListener implements Listener {
return; return;
event.setCancelled(true); event.setCancelled(true);
PluginMessages.sendMessage(event.getPlayer(), TogglePvp.getPlugin().getConfigCache().getCant_do_that_during_combat()); PluginMessages.sendMessage(event.getPlayer(), PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat());
} }
@@ -1,8 +1,9 @@
package eu.endermite.togglepvp.listeners.unspecific; package me.youhavetrouble.preventstabby.listeners.unspecific;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.players.PlayerManager; import me.youhavetrouble.preventstabby.players.PlayerManager;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable; import org.bukkit.entity.Tameable;
@@ -13,7 +14,7 @@ import org.bukkit.potion.PotionEffectType;
import java.util.Iterator; import java.util.Iterator;
import java.util.UUID; import java.util.UUID;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class AreaEffectCloudApplyListener implements Listener { public class AreaEffectCloudApplyListener implements Listener {
@EventHandler(ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
@@ -35,7 +36,7 @@ public class AreaEffectCloudApplyListener implements Listener {
potionEffectType.equals(PotionEffectType.SLOW) || potionEffectType.equals(PotionEffectType.SLOW) ||
potionEffectType.equals(PotionEffectType.WITHER)) { potionEffectType.equals(PotionEffectType.WITHER)) {
PlayerManager playerManager = TogglePvp.getPlugin().getPlayerManager(); PlayerManager playerManager = PreventStabby.getPlugin().getPlayerManager();
Iterator<LivingEntity> it = event.getAffectedEntities().iterator(); Iterator<LivingEntity> it = event.getAffectedEntities().iterator();
UUID damager = ((Player) event.getEntity().getSource()).getUniqueId(); UUID damager = ((Player) event.getEntity().getSource()).getUniqueId();
@@ -1,6 +1,7 @@
package eu.endermite.togglepvp.listeners.unspecific; package me.youhavetrouble.preventstabby.listeners.unspecific;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.LightningStrike; import org.bukkit.entity.LightningStrike;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable; import org.bukkit.entity.Tameable;
@@ -15,7 +16,7 @@ import java.util.UUID;
* Listen for lightning strikes and tag the trident spawned ones. * Listen for lightning strikes and tag the trident spawned ones.
* Idea from aasmus' PvPToggle plugin * Idea from aasmus' PvPToggle plugin
*/ */
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class EntityHitByLightningListener implements Listener { public class EntityHitByLightningListener implements Listener {
/** /**
@@ -27,17 +28,17 @@ public class EntityHitByLightningListener implements Listener {
if (event.getEntity() instanceof Player) { if (event.getEntity() instanceof Player) {
UUID victim = event.getEntity().getUniqueId(); UUID victim = event.getEntity().getUniqueId();
if (TogglePvp.getPlugin().getPlayerManager().hasLoginProtection(victim)) { if (PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(victim)) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (!TogglePvp.getPlugin().getSmartCache().getPlayerData(victim).isPvpEnabled()) { if (!PreventStabby.getPlugin().getSmartCache().getPlayerData(victim).isPvpEnabled()) {
event.setCancelled(true); event.setCancelled(true);
} }
} else if (event.getEntity() instanceof Tameable) { } else if (event.getEntity() instanceof Tameable) {
Tameable victim = (Tameable) event.getEntity(); Tameable victim = (Tameable) event.getEntity();
if (victim.getOwner() != null && !TogglePvp.getPlugin().getSmartCache().getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) { if (victim.getOwner() != null && !PreventStabby.getPlugin().getSmartCache().getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) {
event.setCancelled(true); event.setCancelled(true);
} }
} }
@@ -50,11 +51,11 @@ public class EntityHitByLightningListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onLightningStrike(LightningStrikeEvent event){ public void onLightningStrike(LightningStrikeEvent event){
if(event.getCause() == LightningStrikeEvent.Cause.TRIDENT){ if(event.getCause() == LightningStrikeEvent.Cause.TRIDENT){
if (TogglePvp.getPlugin().getConfigCache().isChanneling_enchant_disabled()) { if (PreventStabby.getPlugin().getConfigCache().isChanneling_enchant_disabled()) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
event.getLightning().setMetadata("TRIDENT", new FixedMetadataValue(TogglePvp.getPlugin(), event.getLightning().getLocation())); event.getLightning().setMetadata("TRIDENT", new FixedMetadataValue(PreventStabby.getPlugin(), event.getLightning().getLocation()));
} }
} }
} }
@@ -1,7 +1,8 @@
package eu.endermite.togglepvp.listeners.unspecific; package me.youhavetrouble.preventstabby.listeners.unspecific;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable; import org.bukkit.entity.Tameable;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@@ -9,7 +10,7 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import java.util.UUID; import java.util.UUID;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class FishingListener implements Listener { public class FishingListener implements Listener {
/** /**
@@ -23,7 +24,7 @@ public class FishingListener implements Listener {
if (damager == victim) if (damager == victim)
return; return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -38,7 +39,7 @@ public class FishingListener implements Listener {
if (damager == victim) if (damager == victim)
return; return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false)) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -1,9 +1,10 @@
package eu.endermite.togglepvp.listeners.unspecific; package me.youhavetrouble.preventstabby.listeners.unspecific;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.config.ConfigCache; import me.youhavetrouble.preventstabby.config.ConfigCache;
import eu.endermite.togglepvp.util.BoundingBoxUtil; import me.youhavetrouble.preventstabby.util.BoundingBoxUtil;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
@@ -17,7 +18,7 @@ import org.bukkit.util.BoundingBox;
import java.util.UUID; import java.util.UUID;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class LavaDumpAndIgniteListener implements Listener { public class LavaDumpAndIgniteListener implements Listener {
/** /**
@@ -26,7 +27,7 @@ public class LavaDumpAndIgniteListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onLavaDump(org.bukkit.event.player.PlayerBucketEmptyEvent event) { public void onLavaDump(org.bukkit.event.player.PlayerBucketEmptyEvent event) {
ConfigCache config = TogglePvp.getPlugin().getConfigCache(); ConfigCache config = PreventStabby.getPlugin().getConfigCache();
if (!config.isLava_and_fire_stopper_enabled()) if (!config.isLava_and_fire_stopper_enabled())
return; return;
@@ -41,12 +42,12 @@ public class LavaDumpAndIgniteListener implements Listener {
if (entity instanceof Player) { if (entity instanceof Player) {
UUID victim = entity.getUniqueId(); UUID victim = entity.getUniqueId();
if (victim != damager) { if (victim != damager) {
if (TogglePvp.getPlugin().getPlayerManager().hasLoginProtection(victim, damager)) { if (PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(victim, damager)) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -59,12 +60,12 @@ public class LavaDumpAndIgniteListener implements Listener {
} }
UUID victim = tameable.getOwner().getUniqueId(); UUID victim = tameable.getOwner().getUniqueId();
if (TogglePvp.getPlugin().getPlayerManager().hasLoginProtection(victim, damager)) { if (PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(victim, damager)) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -80,7 +81,7 @@ public class LavaDumpAndIgniteListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onIgnite(org.bukkit.event.block.BlockIgniteEvent event) { public void onIgnite(org.bukkit.event.block.BlockIgniteEvent event) {
ConfigCache config = TogglePvp.getPlugin().getConfigCache(); ConfigCache config = PreventStabby.getPlugin().getConfigCache();
if (!config.isLava_and_fire_stopper_enabled()) if (!config.isLava_and_fire_stopper_enabled())
return; return;
@@ -98,7 +99,7 @@ public class LavaDumpAndIgniteListener implements Listener {
if (victim == damager) if (victim == damager)
continue; continue;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -113,7 +114,7 @@ public class LavaDumpAndIgniteListener implements Listener {
if (victim == damager) if (victim == damager)
continue; continue;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false)) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -1,12 +1,13 @@
package eu.endermite.togglepvp.listeners.unspecific; package me.youhavetrouble.preventstabby.listeners.unspecific;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.*; import org.bukkit.entity.*;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class LightningBlockIgniteListener implements Listener { public class LightningBlockIgniteListener implements Listener {
/** /**
@@ -22,12 +23,12 @@ public class LightningBlockIgniteListener implements Listener {
if (entity instanceof Player) { if (entity instanceof Player) {
Player victim = (Player) entity; Player victim = (Player) entity;
if (TogglePvp.getPlugin().getPlayerManager().hasLoginProtection(victim.getUniqueId())) { if (PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(victim.getUniqueId())) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (!TogglePvp.getPlugin().getSmartCache().getPlayerData(victim.getUniqueId()).isPvpEnabled()) { if (!PreventStabby.getPlugin().getSmartCache().getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
@@ -36,7 +37,7 @@ public class LightningBlockIgniteListener implements Listener {
if (victim.getOwner() == null) { if (victim.getOwner() == null) {
return; return;
} }
if (!TogglePvp.getPlugin().getSmartCache().getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) { if (!PreventStabby.getPlugin().getSmartCache().getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
@@ -1,9 +1,10 @@
package eu.endermite.togglepvp.listeners.unspecific; package me.youhavetrouble.preventstabby.listeners.unspecific;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.config.ConfigCache; import me.youhavetrouble.preventstabby.config.ConfigCache;
import eu.endermite.togglepvp.util.BoundingBoxUtil; import me.youhavetrouble.preventstabby.util.BoundingBoxUtil;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
@@ -16,13 +17,13 @@ import org.bukkit.util.BoundingBox;
import java.util.UUID; import java.util.UUID;
@eu.endermite.togglepvp.util.Listener @PreventStabbyListener
public class PlaceWitherRoseListener implements Listener { public class PlaceWitherRoseListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerWitherRosePlace(org.bukkit.event.block.BlockPlaceEvent event) { public void onPlayerWitherRosePlace(org.bukkit.event.block.BlockPlaceEvent event) {
ConfigCache config = TogglePvp.getPlugin().getConfigCache(); ConfigCache config = PreventStabby.getPlugin().getConfigCache();
if (!config.isLava_and_fire_stopper_enabled()) if (!config.isLava_and_fire_stopper_enabled())
return; return;
@@ -38,7 +39,7 @@ public class PlaceWitherRoseListener implements Listener {
if (victim == damager) if (victim == damager)
return; return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -52,7 +53,7 @@ public class PlaceWitherRoseListener implements Listener {
if (victim == damager) if (victim == damager)
return; return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false)) if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
CombatTimer.refreshPlayersCombatTime(damager, victim); CombatTimer.refreshPlayersCombatTime(damager, victim);
else else
event.setCancelled(true); event.setCancelled(true);
@@ -1,11 +1,13 @@
package eu.endermite.togglepvp.players; package me.youhavetrouble.preventstabby.players;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import java.time.Instant; import java.time.Instant;
import java.util.UUID;
public class PlayerData { public class PlayerData {
private UUID playerUuid;
private long cachetime, combattime, loginTimestamp, teleportTimestamp; private long cachetime, combattime, loginTimestamp, teleportTimestamp;
private boolean pvpEnabled, lastCombatCheck, inCombat; private boolean pvpEnabled, lastCombatCheck, inCombat;
@@ -18,6 +20,10 @@ public class PlayerData {
refreshCachetime(); refreshCachetime();
} }
public UUID getPlayerUuid() {
return playerUuid;
}
public boolean isPvpEnabled() { public boolean isPvpEnabled() {
return pvpEnabled; return pvpEnabled;
} }
@@ -31,7 +37,7 @@ public class PlayerData {
} }
public void refreshCachetime() { public void refreshCachetime() {
this.cachetime = Instant.now().getEpochSecond()+ TogglePvp.getPlugin().getConfigCache().getCache_time(); this.cachetime = Instant.now().getEpochSecond()+ PreventStabby.getPlugin().getConfigCache().getCache_time();
} }
public long getCombattime() { public long getCombattime() {
@@ -43,7 +49,7 @@ public class PlayerData {
} }
public void refreshCombatTime() { public void refreshCombatTime() {
this.combattime = Instant.now().getEpochSecond()+ TogglePvp.getPlugin().getConfigCache().getCombat_time(); this.combattime = Instant.now().getEpochSecond()+ PreventStabby.getPlugin().getConfigCache().getCombat_time();
} }
public boolean getLastCombatCheck() { public boolean getLastCombatCheck() {
@@ -55,7 +61,7 @@ public class PlayerData {
} }
public void setLoginTimestamp(long loginTimestamp) { public void setLoginTimestamp(long loginTimestamp) {
this.loginTimestamp = loginTimestamp + TogglePvp.getPlugin().getConfigCache().getLogin_protection_time()-1; this.loginTimestamp = loginTimestamp + PreventStabby.getPlugin().getConfigCache().getLogin_protection_time()-1;
} }
public long getLoginTimestamp() { public long getLoginTimestamp() {
@@ -63,7 +69,7 @@ public class PlayerData {
} }
public void setTeleportTimestamp(long teleportTimestamp) { public void setTeleportTimestamp(long teleportTimestamp) {
this.teleportTimestamp = teleportTimestamp + TogglePvp.getPlugin().getConfigCache().getTeleport_protection_time()-1; this.teleportTimestamp = teleportTimestamp + PreventStabby.getPlugin().getConfigCache().getTeleport_protection_time()-1;
} }
public long getTeleportTimestamp() { public long getTeleportTimestamp() {
@@ -1,10 +1,10 @@
package eu.endermite.togglepvp.players; package me.youhavetrouble.preventstabby.players;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.api.event.PlayerLeaveCombatEvent; import me.youhavetrouble.preventstabby.api.event.PlayerLeaveCombatEvent;
import eu.endermite.togglepvp.config.ConfigCache; import me.youhavetrouble.preventstabby.config.ConfigCache;
import eu.endermite.togglepvp.util.CombatTimer; import me.youhavetrouble.preventstabby.util.CombatTimer;
import eu.endermite.togglepvp.util.PluginMessages; import me.youhavetrouble.preventstabby.util.PluginMessages;
import lombok.Getter; import lombok.Getter;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@@ -12,6 +12,7 @@ import org.bukkit.scheduler.BukkitTask;
import java.time.Instant; import java.time.Instant;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.UUID; import java.util.UUID;
public class PlayerManager { public class PlayerManager {
@@ -23,18 +24,22 @@ public class PlayerManager {
public PlayerManager() { public PlayerManager() {
for (Player p : Bukkit.getOnlinePlayers()) { for (Player p : Bukkit.getOnlinePlayers()) {
PlayerData playerData = TogglePvp.getPlugin().getSqLite().getPlayerInfo(p.getUniqueId()); PlayerData playerData = PreventStabby.getPlugin().getSqLite().getPlayerInfo(p.getUniqueId());
playerList.put(p.getUniqueId(), playerData); playerList.put(p.getUniqueId(), playerData);
} }
combatTrackerTask = Bukkit.getScheduler().runTaskTimerAsynchronously(TogglePvp.getPlugin(), () -> playerList.forEach(((uuid, playerData) -> { combatTrackerTask = Bukkit.getScheduler().runTaskTimerAsynchronously(PreventStabby.getPlugin(), () -> {
Iterator<PlayerData> iterator = playerList.values().iterator();
while (iterator.hasNext()) {
PlayerData playerData = iterator.next();
UUID uuid = playerData.getPlayerUuid();
if (!CombatTimer.isInCombat(uuid)) { if (!CombatTimer.isInCombat(uuid)) {
if (playerData.getLastCombatCheck()) { if (playerData.getLastCombatCheck()) {
Player player = Bukkit.getPlayer(uuid); Player player = Bukkit.getPlayer(uuid);
if (player == null) if (player == null)
return; return;
PlayerLeaveCombatEvent playerLeaveCombatEvent = new PlayerLeaveCombatEvent(player); PlayerLeaveCombatEvent playerLeaveCombatEvent = new PlayerLeaveCombatEvent(player);
Bukkit.getScheduler().runTask(TogglePvp.getPlugin(), () -> { Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> {
Bukkit.getPluginManager().callEvent(playerLeaveCombatEvent); Bukkit.getPluginManager().callEvent(playerLeaveCombatEvent);
if (playerLeaveCombatEvent.isCancelled()) { if (playerLeaveCombatEvent.isCancelled()) {
playerData.refreshCombatTime(); playerData.refreshCombatTime();
@@ -42,13 +47,15 @@ public class PlayerManager {
} }
playerData.setLastCombatCheck(false); playerData.setLastCombatCheck(false);
playerData.setInCombat(false); playerData.setInCombat(false);
PluginMessages.sendActionBar(uuid, TogglePvp.getPlugin().getConfigCache().getLeaving_combat()); PluginMessages.sendActionBar(uuid, PreventStabby.getPlugin().getConfigCache().getLeaving_combat());
}); });
} }
} else { } else {
playerData.setLastCombatCheck(true); playerData.setLastCombatCheck(true);
} }
})), 20, 20); }
}, 20, 20);
} }
@@ -80,15 +87,15 @@ public class PlayerManager {
} }
public boolean getPlayerPvPState(UUID uuid) { public boolean getPlayerPvPState(UUID uuid) {
return TogglePvp.getPlugin().getSmartCache().getPlayerData(uuid).isPvpEnabled(); return PreventStabby.getPlugin().getSmartCache().getPlayerData(uuid).isPvpEnabled();
} }
public void setPlayerPvpState(UUID uuid, boolean state) { public void setPlayerPvpState(UUID uuid, boolean state) {
TogglePvp.getPlugin().getSmartCache().getPlayerData(uuid).setPvpEnabled(state); PreventStabby.getPlugin().getSmartCache().getPlayerData(uuid).setPvpEnabled(state);
} }
public boolean togglePlayerPvpState(UUID uuid) { public boolean togglePlayerPvpState(UUID uuid) {
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache(); SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
if (smartCache.getPlayerData(uuid).isPvpEnabled()) { if (smartCache.getPlayerData(uuid).isPvpEnabled()) {
smartCache.getPlayerData(uuid).setPvpEnabled(false); smartCache.getPlayerData(uuid).setPvpEnabled(false);
return false; return false;
@@ -113,18 +120,18 @@ public class PlayerManager {
if (checkVictimSpawnProtection && hasTeleportProtection(victim)) if (checkVictimSpawnProtection && hasTeleportProtection(victim))
return false; return false;
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache(); SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
if (!smartCache.getPlayerData(attacker).isPvpEnabled()) { if (!smartCache.getPlayerData(attacker).isPvpEnabled()) {
if (sendDenyMessage) { if (sendDenyMessage) {
ConfigCache config = TogglePvp.getPlugin().getConfigCache(); ConfigCache config = PreventStabby.getPlugin().getConfigCache();
PluginMessages.sendActionBar(attacker, config.getCannot_attack_attacker()); PluginMessages.sendActionBar(attacker, config.getCannot_attack_attacker());
} }
return false; return false;
} }
if (!smartCache.getPlayerData(victim).isPvpEnabled()) { if (!smartCache.getPlayerData(victim).isPvpEnabled()) {
if (sendDenyMessage) { if (sendDenyMessage) {
ConfigCache config = TogglePvp.getPlugin().getConfigCache(); ConfigCache config = PreventStabby.getPlugin().getConfigCache();
PluginMessages.sendActionBar(attacker, config.getCannot_attack_victim()); PluginMessages.sendActionBar(attacker, config.getCannot_attack_victim());
} }
return false; return false;
@@ -137,7 +144,7 @@ public class PlayerManager {
* @return true if any of the provided UUIDs has spawn protection * @return true if any of the provided UUIDs has spawn protection
*/ */
public boolean hasLoginProtection(UUID... uuid) { public boolean hasLoginProtection(UUID... uuid) {
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache(); SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
for (UUID checkedUuid : uuid) { for (UUID checkedUuid : uuid) {
if (Instant.now().getEpochSecond() < smartCache.getPlayerData(checkedUuid).getLoginTimestamp()) if (Instant.now().getEpochSecond() < smartCache.getPlayerData(checkedUuid).getLoginTimestamp())
return true; return true;
@@ -146,7 +153,7 @@ public class PlayerManager {
} }
public boolean hasTeleportProtection(UUID uuid) { public boolean hasTeleportProtection(UUID uuid) {
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache(); SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
return Instant.now().getEpochSecond() < smartCache.getPlayerData(uuid).getTeleportTimestamp(); return Instant.now().getEpochSecond() < smartCache.getPlayerData(uuid).getTeleportTimestamp();
} }
@@ -1,6 +1,6 @@
package eu.endermite.togglepvp.players; package me.youhavetrouble.preventstabby.players;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.time.Instant; import java.time.Instant;
@@ -10,20 +10,20 @@ import java.util.UUID;
public class SmartCache { public class SmartCache {
public void runSmartCache() { public void runSmartCache() {
Bukkit.getScheduler().runTaskTimerAsynchronously(TogglePvp.getPlugin(), () -> { Bukkit.getScheduler().runTaskTimerAsynchronously(PreventStabby.getPlugin(), () -> {
// Refresh cache timer if player is online // Refresh cache timer if player is online
for (Map.Entry<UUID, PlayerData> e : TogglePvp.getPlugin().getPlayerManager().getPlayerList().entrySet()) { for (Map.Entry<UUID, PlayerData> e : PreventStabby.getPlugin().getPlayerManager().getPlayerList().entrySet()) {
try { try {
Player player = Bukkit.getPlayer(e.getKey()); Player player = Bukkit.getPlayer(e.getKey());
if (player != null && player.isOnline()) { if (player != null && player.isOnline()) {
TogglePvp.getPlugin().getPlayerManager().refreshPlayersCacheTime(e.getKey()); PreventStabby.getPlugin().getPlayerManager().refreshPlayersCacheTime(e.getKey());
} }
} catch (NullPointerException ignored) {} } catch (NullPointerException ignored) {}
} }
// Check for entries that should be invalidated // Check for entries that should be invalidated
try { try {
long now = Instant.now().getEpochSecond(); long now = Instant.now().getEpochSecond();
TogglePvp.getPlugin().getPlayerManager().getPlayerList().entrySet() PreventStabby.getPlugin().getPlayerManager().getPlayerList().entrySet()
.removeIf(cacheEntry -> cacheEntry.getValue().getCachetime() < now); .removeIf(cacheEntry -> cacheEntry.getValue().getCachetime() < now);
} catch (Exception ignored) {} } catch (Exception ignored) {}
}, 100, 100); }, 100, 100);
@@ -32,13 +32,13 @@ public class SmartCache {
public PlayerData getPlayerData(UUID uuid) { public PlayerData getPlayerData(UUID uuid) {
// Try to get data from cache and refresh it // Try to get data from cache and refresh it
try { try {
TogglePvp.getPlugin().getPlayerManager().refreshPlayersCacheTime(uuid); PreventStabby.getPlugin().getPlayerManager().refreshPlayersCacheTime(uuid);
return TogglePvp.getPlugin().getPlayerManager().getPlayer(uuid); return PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid);
} catch (NullPointerException e) { } catch (NullPointerException e) {
// If player data is not in cache get it from database and put into cache // If player data is not in cache get it from database and put into cache
try { try {
PlayerData playerData = TogglePvp.getPlugin().getSqLite().getPlayerInfo(uuid); PlayerData playerData = PreventStabby.getPlugin().getSqLite().getPlayerInfo(uuid);
TogglePvp.getPlugin().getPlayerManager().addPlayer(uuid, playerData); PreventStabby.getPlugin().getPlayerManager().addPlayer(uuid, playerData);
return playerData; return playerData;
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
// Return false if database call fails // Return false if database call fails
@@ -49,11 +49,11 @@ public class SmartCache {
public void setPlayerPvpState(UUID uuid, boolean state) { public void setPlayerPvpState(UUID uuid, boolean state) {
// If player is in cache update that // If player is in cache update that
if (TogglePvp.getPlugin().getPlayerManager().getPlayer(uuid) != null) { if (PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid) != null) {
TogglePvp.getPlugin().getPlayerManager().getPlayer(uuid).setPvpEnabled(state); PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid).setPvpEnabled(state);
} }
// Update the database aswell // Update the database aswell
TogglePvp.getPlugin().getSqLite().updatePlayerInfo(uuid, new PlayerData(state)); PreventStabby.getPlugin().getSqLite().updatePlayerInfo(uuid, new PlayerData(state));
} }
@@ -1,4 +1,4 @@
package eu.endermite.togglepvp.util; package me.youhavetrouble.preventstabby.util;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.util.BoundingBox; import org.bukkit.util.BoundingBox;
@@ -0,0 +1,47 @@
package me.youhavetrouble.preventstabby.util;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.api.event.PlayerEnterCombatEvent;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.time.Instant;
import java.util.UUID;
public class CombatTimer {
public static void refreshPlayersCombatTime(UUID uuid) {
try {
long now = Instant.now().getEpochSecond();
long combattime = PreventStabby.getPlugin().getSmartCache().getPlayerData(uuid).getCombattime();
Player player = Bukkit.getPlayer(uuid);
if (player == null || !player.isOnline()) return;
PlayerEnterCombatEvent playerEnterCombatEvent = new PlayerEnterCombatEvent(player);
Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> {
Bukkit.getPluginManager().callEvent(playerEnterCombatEvent);
if (playerEnterCombatEvent.isCancelled()) return;
PreventStabby.getPlugin().getPlayerManager().refreshPlayersCombatTime(uuid);
if (combattime <= now) {
PluginMessages.sendActionBar(uuid, PreventStabby.getPlugin().getConfigCache().getEntering_combat());
}
});
} catch (Exception ignored) {
}
}
public static void refreshPlayersCombatTime(UUID... uuid) {
for (UUID id : uuid) {
refreshPlayersCombatTime(id);
}
}
public static boolean isInCombat(UUID uuid) {
try {
return PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid).getCombattime() >= Instant.now().getEpochSecond();
} catch (Exception e) {
return false;
}
}
}
@@ -1,7 +1,7 @@
package eu.endermite.togglepvp.util; package me.youhavetrouble.preventstabby.util;
import eu.endermite.togglepvp.TogglePvp; import me.youhavetrouble.preventstabby.PreventStabby;
import eu.endermite.togglepvp.players.PlayerData; import me.youhavetrouble.preventstabby.players.PlayerData;
import java.io.File; import java.io.File;
import java.sql.*; import java.sql.*;
@@ -52,12 +52,11 @@ public class DatabaseSQLite {
} }
public PlayerData getPlayerInfo(UUID uuid) { public PlayerData getPlayerInfo(UUID uuid) {
try { try {
Connection conn = DriverManager.getConnection(url); Connection conn = DriverManager.getConnection(url);
Statement insertnewuser = conn.createStatement(); Statement insertnewuser = conn.createStatement();
try { try {
String newuserdata = "INSERT OR IGNORE INTO `players` (player_uuid, pvpenabled) VALUES ('" + uuid.toString() + "', " + TogglePvp.getPlugin().getConfigCache().isPvp_enabled_by_default() + ")"; String newuserdata = "INSERT OR IGNORE INTO `players` (player_uuid, pvpenabled) VALUES ('" + uuid.toString() + "', " + PreventStabby.getPlugin().getConfigCache().isPvp_enabled_by_default() + ")";
insertnewuser.execute(newuserdata); insertnewuser.execute(newuserdata);
} catch (SQLException e) { } catch (SQLException e) {
if (e.getErrorCode() != 19) { if (e.getErrorCode() != 19) {
@@ -85,7 +84,7 @@ public class DatabaseSQLite {
String newuserdata = "UPDATE `players` SET pvpenabled = "+data.isPvpEnabled()+" WHERE `player_uuid` = '"+uuid.toString()+"';"; String newuserdata = "UPDATE `players` SET pvpenabled = "+data.isPvpEnabled()+" WHERE `player_uuid` = '"+uuid.toString()+"';";
insertnewuser.execute(newuserdata); insertnewuser.execute(newuserdata);
} catch (SQLException e) { } catch (SQLException e) {
TogglePvp.getPlugin().getLogger().severe("Error while saving player data!"); PreventStabby.getPlugin().getLogger().severe("Error while saving player data!");
e.printStackTrace(); e.printStackTrace();
} }
} catch (SQLException throwables) { } catch (SQLException throwables) {
@@ -1,4 +1,4 @@
package eu.endermite.togglepvp.util; package me.youhavetrouble.preventstabby.util;
import net.md_5.bungee.api.ChatMessageType; import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.BaseComponent;
@@ -23,6 +23,7 @@ public class PluginMessages {
} }
public static void sendActionBar(Player player, String message) { public static void sendActionBar(Player player, String message) {
// TODO use adventure
BaseComponent[] component = TextComponent.fromLegacyText(parseMessage(message)); BaseComponent[] component = TextComponent.fromLegacyText(parseMessage(message));
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, component); player.spigot().sendMessage(ChatMessageType.ACTION_BAR, component);
} }
@@ -1,4 +1,4 @@
package eu.endermite.togglepvp.util; package me.youhavetrouble.preventstabby.util;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
@@ -8,4 +8,4 @@ import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE}) @Target({ElementType.TYPE})
public @interface Listener {} public @interface PreventStabbyListener {}
@@ -0,0 +1,69 @@
package me.youhavetrouble.preventstabby.util;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.config.ConfigCache;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffectType;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
public class Util {
private static final HashSet<PotionEffectType> harmfulPotions = new HashSet<>();
public static void initData() {
harmfulPotions.add(PotionEffectType.BLINDNESS);
harmfulPotions.add(PotionEffectType.CONFUSION);
harmfulPotions.add(PotionEffectType.HARM);
harmfulPotions.add(PotionEffectType.HUNGER);
harmfulPotions.add(PotionEffectType.POISON);
harmfulPotions.add(PotionEffectType.SLOW_DIGGING);
harmfulPotions.add(PotionEffectType.WEAKNESS);
harmfulPotions.add(PotionEffectType.SLOW);
harmfulPotions.add(PotionEffectType.WITHER);
}
/**
* @param attacker Player attacking the mount
* @param mount Entity being ridden
* @return true if event should be cancelled
*/
public static boolean processMountAttack(UUID attacker, Entity mount) {
// Don't cancel attacks on players that have passengers
if (mount instanceof Player) return false;
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
if (!PreventStabby.getPlugin().getPlayerManager().getPlayerPvPState(attacker)) {
PluginMessages.sendActionBar(attacker, config.getCannot_attack_mounts_attacker());
return true;
}
Set<UUID> playerPassengersWithPvpEnabled = new HashSet<>();
for (Entity passenger : mount.getPassengers()) {
if (!(passenger instanceof Player)) continue;
Player player = (Player) passenger;
if (PreventStabby.getPlugin().getPlayerManager().getPlayerPvPState(player.getUniqueId()))
playerPassengersWithPvpEnabled.add(player.getUniqueId());
}
if (playerPassengersWithPvpEnabled.isEmpty()) {
PluginMessages.sendActionBar(attacker, config.getCannot_attack_mounts_victim());
return true;
}
playerPassengersWithPvpEnabled.forEach(CombatTimer::refreshPlayersCombatTime);
CombatTimer.refreshPlayersCombatTime(attacker);
return false;
}
public static boolean isPotionEffectHarmful(PotionEffectType effect) {
return harmfulPotions.contains(effect);
}
}
+5 -4
View File
@@ -1,12 +1,13 @@
name: TogglePvP name: TogglePvP
version: ${project.version} version: ${project.version}
main: eu.endermite.togglepvp.TogglePvp main: eu.endermite.togglepvp.PreventStabby
authors: [YouHaveTrouble] authors: [YouHaveTrouble]
api-version: 1.13 api-version: 1.13
description: PvP toggle plugin description: Stop people from getting stabbed!
commands: commands:
pvp: preventstabby:
usage: /pvp [args] aliases:
- pvp
permissions: permissions:
toglepvp.combatcommandblock.bypass: toglepvp.combatcommandblock.bypass:
default: op default: op