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">
<modelVersion>4.0.0</modelVersion>
<groupId>eu.endermite</groupId>
<artifactId>TogglePvP</artifactId>
<groupId>me.youhavetrouble</groupId>
<artifactId>PreventStabby</artifactId>
<version>1.2</version>
<packaging>jar</packaging>
<name>TogglePvP</name>
<name>PreventStabby</name>
<description>PvP toggle plugin</description>
<description>Stop people from getting stabbed!</description>
<properties>
<java.version>1.8</java.version>
<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.
<h3>Commands</h3>
Permission: <code>togglepvp.command</code> (given by default to everyone) :
Permission: <code>preventstabby.command</code> (given by default to everyone) :
<ul>
<li>/pvp help- displays help message</li>
</ul>
Permission: <code>togglepvp.command.toggle</code> (given by default to everyone) :
Permission: <code>preventstabby.command.toggle</code> (given by default to everyone) :
<ul>
<li>/pvp toggle - toggles PvP</li>
<li>/pvp on - enables PvP (aliases: enable)</li>
<li>/pvp off - disables PvP (aliases: disable)</li>
</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>
<li>/pvp toggle [player] - toggles other player's PvP</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 eu.endermite.togglepvp.config.ConfigCache;
import eu.endermite.togglepvp.players.PlayerManager;
import eu.endermite.togglepvp.players.SmartCache;
import eu.endermite.togglepvp.util.Listener;
import eu.endermite.togglepvp.util.DatabaseSQLite;
import me.youhavetrouble.preventstabby.commands.MainCommand;
import me.youhavetrouble.preventstabby.config.ConfigCache;
import me.youhavetrouble.preventstabby.players.PlayerManager;
import me.youhavetrouble.preventstabby.players.SmartCache;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import me.youhavetrouble.preventstabby.util.DatabaseSQLite;
import lombok.Getter;
import me.youhavetrouble.preventstabby.util.Util;
import org.bstats.bukkit.Metrics;
import org.bukkit.command.CommandSender;
import org.bukkit.command.PluginCommand;
@@ -16,9 +17,9 @@ import java.io.File;
import java.lang.reflect.InvocationTargetException;
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;
protected PlayerManager playerManager;
protected DatabaseSQLite sqLite;
@@ -27,9 +28,10 @@ public final class TogglePvp extends JavaPlugin {
@Override
public void onEnable() {
plugin = this;
Util.initData();
reloadPluginConfig();
File dbFile = new File("plugins/TogglePvP");
sqLite = new DatabaseSQLite("jdbc:sqlite:plugins/TogglePvP/TogglePvP.db", dbFile);
File dbFile = new File("plugins/PreventStabby");
sqLite = new DatabaseSQLite("jdbc:sqlite:plugins/PreventStabby/TogglePvP.db", dbFile);
sqLite.createDatabaseFile();
if (!sqLite.testConnection()) {
getLogger().severe("Error with accessing database. Check if server has write rights.");
@@ -42,8 +44,8 @@ public final class TogglePvp extends JavaPlugin {
smartCache.runSmartCache();
// Register listeners
Reflections reflections = new Reflections(new String[]{"eu.endermite.togglepvp"});
Set<Class<?>> listenerClasses = reflections.getTypesAnnotatedWith(Listener.class);
Reflections reflections = new Reflections(new String[]{"eu.endermite.preventstabby"});
Set<Class<?>> listenerClasses = reflections.getTypesAnnotatedWith(PreventStabbyListener.class);
listenerClasses.forEach((listener)-> {
try {
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 eu.endermite.togglepvp.util.CombatTimer;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import org.bukkit.entity.Player;
import java.util.UUID;
@@ -13,7 +13,7 @@ public class TogglePvpAPI {
* @param newState State to set
*/
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
*/
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
*/
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
*/
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
*/
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
*/
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
*/
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
*/
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
*/
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
*/
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 eu.endermite.togglepvp.players.PlayerData;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.players.PlayerData;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
@@ -27,7 +27,7 @@ public class PlayerEnterCombatEvent extends Event implements Cancellable {
}
public PlayerData getPlayerData() {
return TogglePvp.getPlugin().getPlayerManager().getPlayer(player.getUniqueId());
return PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId());
}
@Override
@@ -1,7 +1,7 @@
package eu.endermite.togglepvp.api.event;
package me.youhavetrouble.preventstabby.api.event;
import eu.endermite.togglepvp.TogglePvp;
import eu.endermite.togglepvp.players.PlayerData;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.players.PlayerData;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
@@ -27,7 +27,7 @@ public class PlayerLeaveCombatEvent extends Event implements Cancellable {
}
public PlayerData getPlayerData() {
return TogglePvp.getPlugin().getPlayerManager().getPlayer(player.getUniqueId());
return PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId());
}
@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 eu.endermite.togglepvp.util.PluginMessages;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.PluginMessages;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import java.util.ArrayList;
@@ -10,13 +10,13 @@ import java.util.List;
public class HelpCommand {
public static void help(CommandSender sender, String[] args) {
Bukkit.getScheduler().runTaskAsynchronously(TogglePvp.getPlugin(), () -> {
Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> {
List<String> helpPage = new ArrayList<>();
helpPage.add(PluginMessages.parseMessage("&b&m &bTogglePvP Help&b&m "));
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&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 eu.endermite.togglepvp.util.PluginMessages;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.PluginMessages;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@@ -17,18 +17,18 @@ public class MainCommand implements TabExecutor {
private final HashMap<String, String> subCommands = new HashMap<>();
public MainCommand() {
subCommands.put("help", "togglepvp.command");
subCommands.put("toggle", "togglepvp.command.toggle");
subCommands.put("on", "togglepvp.command.toggle");
subCommands.put("enable", "togglepvp.command.toggle");
subCommands.put("off", "togglepvp.command.toggle");
subCommands.put("disable", "togglepvp.command.toggle");
subCommands.put("reload", "togglepvp.command.reload");
subCommands.put("help", "preventstabby.command");
subCommands.put("toggle", "preventstabby.command.toggle");
subCommands.put("on", "preventstabby.command.toggle");
subCommands.put("enable", "preventstabby.command.toggle");
subCommands.put("off", "preventstabby.command.toggle");
subCommands.put("disable", "preventstabby.command.toggle");
subCommands.put("reload", "preventstabby.command.reload");
}
@Override
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) {
switch (args[0].toLowerCase()) {
case "help":
@@ -49,14 +49,14 @@ public class MainCommand implements TabExecutor {
ReloadCommand.reload(sender);
break;
default:
sender.sendMessage(PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getNo_such_command()));
sender.sendMessage(PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getNo_such_command()));
break;
}
} else {
HelpCommand.help(sender, args);
}
} else {
sender.sendMessage(PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getNo_permission()));
sender.sendMessage(PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getNo_permission()));
}
return true;
}
@@ -71,7 +71,7 @@ public class MainCommand implements TabExecutor {
commands.add(entry.getKey());
}
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()) {
default:
break;
@@ -1,8 +1,8 @@
package eu.endermite.togglepvp.commands;
package me.youhavetrouble.preventstabby.commands;
import eu.endermite.togglepvp.TogglePvp;
import eu.endermite.togglepvp.util.CombatTimer;
import eu.endermite.togglepvp.util.PluginMessages;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PluginMessages;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
@@ -12,10 +12,10 @@ public class PvpToggleCommand {
public static void toggle(CommandSender sender, String[] args) {
Bukkit.getScheduler().runTaskAsynchronously(TogglePvp.getPlugin(), () -> {
Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> {
if (!sender.hasPermission("togglepvp.command.toggle")) {
String message = ChatColor.translateAlternateColorCodes('&', TogglePvp.getPlugin().getConfigCache().getNo_permission());
if (!sender.hasPermission("preventstabby.command.toggle")) {
String message = ChatColor.translateAlternateColorCodes('&', PreventStabby.getPlugin().getConfigCache().getNo_permission());
sender.sendMessage(message);
return;
}
@@ -25,25 +25,25 @@ public class PvpToggleCommand {
Player player = (Player) sender;
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;
}
boolean currentState = TogglePvp.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId());
boolean currentState = PreventStabby.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId());
String message = "";
if (currentState) {
message = PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getPvp_enabled());
message = PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getPvp_enabled());
} else {
message = PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getPvp_disabled());
message = PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getPvp_disabled());
}
player.sendMessage(message);
} else {
sender.sendMessage("Try /pvp toggle <player>");
}
} else if (args.length == 2) {
if (!sender.hasPermission("togglepvp.command.toggle.others")) {
String message = ChatColor.translateAlternateColorCodes('&', TogglePvp.getPlugin().getConfigCache().getNo_permission());
if (!sender.hasPermission("preventstabby.command.toggle.others")) {
String message = ChatColor.translateAlternateColorCodes('&', PreventStabby.getPlugin().getConfigCache().getNo_permission());
sender.sendMessage(message);
return;
}
@@ -51,18 +51,18 @@ public class PvpToggleCommand {
if (sender instanceof Player) {
Player player = (Player) sender;
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;
}
}
try {
Player player = Bukkit.getPlayer(args[1]);
boolean currentState = TogglePvp.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId());
boolean currentState = PreventStabby.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId());
String message;
if (currentState) {
message = TogglePvp.getPlugin().getConfigCache().getPvp_enabled_other();
message = PreventStabby.getPlugin().getConfigCache().getPvp_enabled_other();
} else {
message = TogglePvp.getPlugin().getConfigCache().getPvp_disabled_other();
message = PreventStabby.getPlugin().getConfigCache().getPvp_disabled_other();
}
sender.sendMessage(PluginMessages.parsePlayerName(player, message));
@@ -70,7 +70,7 @@ public class PvpToggleCommand {
sender.sendMessage(PluginMessages.parseMessage("&cPlayer offline."));
}
} else {
if (sender.hasPermission("togglepvp.command.toggle.others")) {
if (sender.hasPermission("preventstabby.command.toggle.others")) {
sender.sendMessage("Try /pvp toggle <player>");
} else {
sender.sendMessage("Try /pvp toggle");
@@ -80,8 +80,8 @@ public class PvpToggleCommand {
}
public static void enable(CommandSender sender, String[] args) {
if (!sender.hasPermission("togglepvp.command.toggle")) {
String message = ChatColor.translateAlternateColorCodes('&', TogglePvp.getPlugin().getConfigCache().getNo_permission());
if (!sender.hasPermission("preventstabby.command.toggle")) {
String message = ChatColor.translateAlternateColorCodes('&', PreventStabby.getPlugin().getConfigCache().getNo_permission());
sender.sendMessage(message);
return;
}
@@ -89,38 +89,38 @@ public class PvpToggleCommand {
if (sender instanceof Player) {
Player player = (Player) sender;
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;
}
TogglePvp.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true);
String message = PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getPvp_enabled());
PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true);
String message = PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getPvp_enabled());
player.sendMessage(message);
} else {
sender.sendMessage("Try /pvp enable <player>");
}
} else if (args.length == 2) {
if (!sender.hasPermission("togglepvp.command.toggle.others")) {
String message = ChatColor.translateAlternateColorCodes('&', TogglePvp.getPlugin().getConfigCache().getNo_permission());
if (!sender.hasPermission("preventstabby.command.toggle.others")) {
String message = ChatColor.translateAlternateColorCodes('&', PreventStabby.getPlugin().getConfigCache().getNo_permission());
sender.sendMessage(message);
return;
}
if (sender instanceof Player) {
Player player = (Player) sender;
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;
}
}
try {
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));
TogglePvp.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true);
PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true);
} catch (NullPointerException e) {
sender.sendMessage(PluginMessages.parseMessage("&cPlayer offline."));
}
} else {
if (sender.hasPermission("togglepvp.command.toggle.others")) {
if (sender.hasPermission("preventstabby.command.toggle.others")) {
sender.sendMessage("Try /pvp enable <player>");
} else {
sender.sendMessage("Try /pvp enable");
@@ -129,8 +129,8 @@ public class PvpToggleCommand {
}
public static void disable(CommandSender sender, String[] args) {
if (!sender.hasPermission("togglepvp.command.toggle")) {
String message = ChatColor.translateAlternateColorCodes('&', TogglePvp.getPlugin().getConfigCache().getNo_permission());
if (!sender.hasPermission("preventstabby.command.toggle")) {
String message = ChatColor.translateAlternateColorCodes('&', PreventStabby.getPlugin().getConfigCache().getNo_permission());
sender.sendMessage(message);
return;
}
@@ -138,38 +138,38 @@ public class PvpToggleCommand {
if (sender instanceof Player) {
Player player = (Player) sender;
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;
}
TogglePvp.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), false);
String message = PluginMessages.parseMessage(TogglePvp.getPlugin().getConfigCache().getPvp_disabled());
PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), false);
String message = PluginMessages.parseMessage(PreventStabby.getPlugin().getConfigCache().getPvp_disabled());
player.sendMessage(message);
} else {
sender.sendMessage("Try /pvp disable <player>");
}
} else if (args.length == 2) {
if (!sender.hasPermission("togglepvp.command.toggle.others")) {
String message = TogglePvp.getPlugin().getConfigCache().getNo_permission();
if (!sender.hasPermission("preventstabby.command.toggle.others")) {
String message = PreventStabby.getPlugin().getConfigCache().getNo_permission();
sender.sendMessage(message);
return;
}
if (sender instanceof Player) {
Player player = (Player) sender;
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;
}
}
try {
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));
TogglePvp.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true);
PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true);
} catch (NullPointerException e) {
sender.sendMessage(PluginMessages.parseMessage("&cPlayer offline."));
}
} else {
if (sender.hasPermission("togglepvp.command.toggle.others")) {
if (sender.hasPermission("preventstabby.command.toggle.others")) {
sender.sendMessage("Try /pvp disable <player>");
} else {
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 lombok.Getter;
import org.bukkit.configuration.file.FileConfiguration;
@@ -12,7 +12,7 @@ import java.util.Set;
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,
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,
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,
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 long cache_time, combat_time, login_protection_time, teleport_protection_time;
@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_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_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_such_command", "&cNo such command.");
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_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_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_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.");
@@ -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 eu.endermite.togglepvp.util.CombatTimer;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Tameable;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@@ -9,7 +10,7 @@ import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PetHitByExplosionListener implements Listener {
/**
@@ -17,24 +18,19 @@ public class PetHitByExplosionListener implements Listener {
*/
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPetHitByExplosion(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
if (!(event.getEntity() instanceof Tameable))
return;
if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION))
return;
if (!(event.getEntity() instanceof Tameable)) return;
if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) return;
Tameable tameable = (Tameable) event.getEntity();
if (tameable.getOwner() == null)
return;
if (tameable.getOwner() == null) return;
UUID victim = tameable.getOwner().getUniqueId();
try {
UUID damager = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
if (victim == damager)
if (victim.equals(damager))
return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
CombatTimer.refreshPlayersCombatTime(damager, victim);
else
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 eu.endermite.togglepvp.util.CombatTimer;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Firework;
import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable;
@@ -10,24 +11,21 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PetHitByFireworkListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPetFireworkDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
if (event.getDamager() instanceof Firework && event.getEntity() instanceof Tameable) {
Tameable tameable = (Tameable) event.getEntity();
if (tameable.getOwner() == null)
return;
if (tameable.getOwner() == null) return;
Firework firework = (Firework) event.getDamager();
if (!(firework.getShooter() instanceof Player))
return;
if (!(firework.getShooter() instanceof Player)) return;
UUID damager = ((Player) firework.getShooter()).getUniqueId();
UUID victim = tameable.getOwner().getUniqueId();
if (victim == damager)
return;
if (victim.equals(damager)) return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
CombatTimer.refreshPlayersCombatTime(damager, victim);
else
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 eu.endermite.togglepvp.util.CombatTimer;
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.Entity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable;
@@ -12,7 +14,7 @@ import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PetHitBySplashPotionListener implements Listener {
/**
@@ -22,40 +24,25 @@ public class PetHitBySplashPotionListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPetHitBySplashPotion(org.bukkit.event.entity.PotionSplashEvent event) {
if (!(event.getEntity().getShooter() instanceof Player))
return;
if (!(event.getEntity().getShooter() instanceof Player)) return;
boolean harmful = false;
for (PotionEffect effect : event.getPotion().getEffects()) {
if (effect.getType().equals(PotionEffectType.BLINDNESS) ||
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)) {
if (Util.isPotionEffectHarmful(effect.getType())) {
harmful = true;
break;
}
}
if (!harmful)
return;
if (!harmful) return;
UUID damager = ((Player) event.getEntity().getShooter()).getUniqueId();
for (Entity entity : event.getAffectedEntities()) {
if (entity instanceof Tameable) {
UUID damager = ((Player) event.getEntity().getShooter()).getUniqueId();
Tameable tameable = (Tameable) entity;
if (tameable.getOwner() == null)
continue;
if (tameable.getOwner() == null) continue;
UUID victim = tameable.getOwner().getUniqueId();
if (victim == damager) return;
if (victim == damager)
return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
CombatTimer.refreshPlayersCombatTime(damager, victim);
else
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 eu.endermite.togglepvp.util.CombatTimer;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Tameable;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PetLeashListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPetLeash(org.bukkit.event.entity.PlayerLeashEntityEvent event) {
if (event.getEntity() instanceof Tameable) {
Tameable tameable = (Tameable) event.getEntity();
if (tameable.getOwner() == null)
return;
if (tameable.getOwner() == null) return;
UUID damager = event.getPlayer().getUniqueId();
UUID victim = tameable.getOwner().getUniqueId();
if (victim == damager)
return;
if (victim == damager) return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
CombatTimer.refreshPlayersCombatTime(damager, victim);
else
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 eu.endermite.togglepvp.players.SmartCache;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.players.SmartCache;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
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;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PetTargettingPetListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
@@ -16,10 +17,9 @@ public class PetTargettingPetListener implements Listener {
if (event.getDamager() instanceof Tameable && event.getEntity() instanceof Tameable) {
Tameable damager = (Tameable) event.getDamager();
Tameable victim = (Tameable) event.getEntity();
if (damager.getOwner() == null || victim.getOwner() == null)
return;
if (damager.getOwner() == null || victim.getOwner() == null) return;
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
boolean damagerPvpEnabled = smartCache.getPlayerData(damager.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 eu.endermite.togglepvp.util.CombatTimer;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable;
import org.bukkit.event.EventHandler;
@@ -10,25 +11,22 @@ import org.bukkit.event.Listener;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PetTargettingPlayerListener implements Listener {
/**
* Stops pets with owners targetting players with pvp off
*/
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPetTargetPlayer(org.bukkit.event.entity.EntityTargetEvent event) {
if (!(event.getEntity() instanceof Tameable))
return;
if (!(event.getEntity() instanceof Tameable)) return;
Tameable entity = (Tameable) event.getEntity();
if (entity.getOwner() == null)
return;
if (entity.getOwner() == null) return;
if (event.getTarget() instanceof Player) {
UUID damager = entity.getOwner().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);
else
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 eu.endermite.togglepvp.config.ConfigCache;
import eu.endermite.togglepvp.players.SmartCache;
import eu.endermite.togglepvp.util.CombatTimer;
import eu.endermite.togglepvp.util.PluginMessages;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.config.ConfigCache;
import me.youhavetrouble.preventstabby.players.SmartCache;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PluginMessages;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable;
import org.bukkit.event.EventHandler;
@@ -13,26 +14,24 @@ import org.bukkit.event.Listener;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PlayerAttackPetListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerAttackPet(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
if (event.getDamager() instanceof Player && event.getEntity() instanceof Tameable) {
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
Tameable tameable = (Tameable) event.getEntity();
if (tameable.getOwner() == null)
return;
if (tameable.getOwner() == null) return;
UUID damager = event.getDamager().getUniqueId();
UUID victim = tameable.getOwner().getUniqueId();
if (damager == victim)
return;
if (damager.equals(victim)) return;
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
boolean damagerPvpState = TogglePvp.getPlugin().getPlayerManager().getPlayerPvPState(damager);
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
boolean damagerPvpState = PreventStabby.getPlugin().getPlayerManager().getPlayerPvPState(damager);
if (!damagerPvpState) {
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
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 eu.endermite.togglepvp.config.ConfigCache;
import eu.endermite.togglepvp.players.SmartCache;
import eu.endermite.togglepvp.util.CombatTimer;
import eu.endermite.togglepvp.util.PluginMessages;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.config.ConfigCache;
import me.youhavetrouble.preventstabby.players.SmartCache;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PluginMessages;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.entity.Tameable;
@@ -14,8 +15,8 @@ import org.bukkit.event.Listener;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
public class PlayerHitPetWithProjectile implements Listener {
@PreventStabbyListener
public class PlayerHitPetWithProjectileListener implements Listener {
/**
* 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) {
if (event.getEntity() instanceof Tameable && event.getDamager() instanceof Projectile) {
Projectile projectile = (Projectile) event.getDamager();
if (!(projectile.getShooter() instanceof Player))
return;
if (!(projectile.getShooter() instanceof Player)) return;
Tameable tameable = (Tameable) event.getEntity();
if (tameable.getOwner() == null)
return;
if (tameable.getOwner() == null) return;
UUID damager = ((Player) projectile.getShooter()).getUniqueId();
UUID victim = tameable.getOwner().getUniqueId();
if (damager == victim)
return;
if (damager.equals(victim)) return;
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
if (!smartCache.getPlayerData(damager).isPvpEnabled()) {
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.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PlayerInteractWithPetListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerInteractWithPet(org.bukkit.event.player.PlayerInteractEntityEvent event) {
if (!TogglePvp.getPlugin().getConfigCache().isOnly_owner_can_interact_with_pet())
return;
if (!(event.getRightClicked() instanceof Tameable))
return;
if (!PreventStabby.getPlugin().getConfigCache().isOnly_owner_can_interact_with_pet()) return;
if (!(event.getRightClicked() instanceof Tameable)) return;
Tameable tameable = (Tameable) event.getRightClicked();
if (tameable.getOwner() == null)
return;
if (tameable.getOwner().getUniqueId().equals(event.getPlayer().getUniqueId()))
return;
if (tameable.getOwner() == null) return;
if (tameable.getOwner().getUniqueId().equals(event.getPlayer().getUniqueId())) return;
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 eu.endermite.togglepvp.players.PlayerManager;
import eu.endermite.togglepvp.util.CombatTimer;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.players.PlayerManager;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable;
import org.bukkit.entity.Wolf;
@@ -11,7 +12,7 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PetAttackPlayerListener implements Listener {
/**
@@ -21,16 +22,14 @@ public class PetAttackPlayerListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPetAttack(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Tameable))
return;
if (!(event.getDamager() instanceof Tameable)) return;
Tameable entity = (Tameable) event.getDamager();
if (entity.getOwner() != null && event.getEntity() instanceof Player) {
UUID victim = event.getEntity().getUniqueId();
UUID damager = entity.getOwner().getUniqueId();
PlayerManager playerManager = TogglePvp.getPlugin().getPlayerManager();
PlayerManager playerManager = PreventStabby.getPlugin().getPlayerManager();
if (!playerManager.canDamage(damager, victim, false)) {
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 eu.endermite.togglepvp.util.CombatTimer;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -9,7 +10,7 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PlayerAttackListener implements Listener {
/**
@@ -24,7 +25,7 @@ public class PlayerAttackListener implements Listener {
UUID damager = damagerEntity.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);
else
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 eu.endermite.togglepvp.players.PlayerData;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.players.PlayerData;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PlayerDeathListener implements Listener {
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onPlayerDeath(org.bukkit.event.entity.EntityDeathEvent event) {
if (!(event.getEntity() instanceof Player))
return;
if (!(event.getEntity() instanceof Player)) return;
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.setLastCombatCheck(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 eu.endermite.togglepvp.util.CombatTimer;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.EnderCrystal;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
@@ -15,7 +16,7 @@ import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.metadata.FixedMetadataValue;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PlayerHitByExplosionListener implements Listener {
/**
@@ -24,16 +25,14 @@ public class PlayerHitByExplosionListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerHitByExplosion(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
if (event.getEntity() instanceof Player) {
if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) {
return;
}
if (!event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_EXPLOSION)) return;
UUID victim = event.getEntity().getUniqueId();
try {
UUID damager = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
if (victim.equals(damager))
return;
if (victim.equals(damager)) return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim);
else
event.setCancelled(true);
@@ -51,12 +50,12 @@ public class PlayerHitByExplosionListener implements Listener {
if (event.getEntity() instanceof EnderCrystal) {
EnderCrystal enderCrystal = (EnderCrystal) event.getEntity();
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) {
Projectile projectile = (Projectile) event.getDamager();
if (projectile.getShooter() instanceof Player) {
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();
if (tntPrimed.getSource() instanceof Player) {
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) {
try {
TNTPrimed sourceTnt = (TNTPrimed) tntPrimed.getSource();
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) {
}
}
@@ -91,7 +90,7 @@ public class PlayerHitByExplosionListener implements Listener {
public void onPlayerPlacedTntMinecart(org.bukkit.event.entity.EntityPlaceEvent event) {
if (event.getEntityType().equals(EntityType.MINECART_TNT)) {
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) {
if (event.getVehicle() instanceof ExplosiveMinecart && event.getEntity() instanceof Player) {
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 eu.endermite.togglepvp.util.CombatTimer;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Firework;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -9,7 +10,7 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PlayerHitByFireworkListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
@@ -19,11 +20,9 @@ public class PlayerHitByFireworkListener implements Listener {
Firework firework = (Firework) event.getDamager();
if (firework.getShooter() instanceof Player) {
UUID damager = ((Player) firework.getShooter()).getUniqueId();
if (damager == victim) {
return;
}
if (damager == victim) return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim);
else
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 eu.endermite.togglepvp.util.CombatTimer;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PlayerHitByProjectileListener implements Listener {
/**
@@ -23,8 +24,8 @@ public class PlayerHitByProjectileListener implements Listener {
UUID damager = ((Player) projectile.getShooter()).getUniqueId();
UUID victim = event.getEntity().getUniqueId();
if (TogglePvp.getPlugin().getConfigCache().isSnowballs_knockback() && event.getDamager() instanceof Snowball) {
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) {
if (PreventStabby.getPlugin().getConfigCache().isSnowballs_knockback() && event.getDamager() instanceof Snowball) {
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) {
((Player) event.getEntity()).damage(0.01, (Entity) projectile.getShooter());
CombatTimer.refreshPlayersCombatTime(damager, victim);
} else {
@@ -32,8 +33,8 @@ public class PlayerHitByProjectileListener implements Listener {
return;
}
} else if (TogglePvp.getPlugin().getConfigCache().isEgg_knockback() && event.getDamager() instanceof Egg) {
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true)) {
} else if (PreventStabby.getPlugin().getConfigCache().isEgg_knockback() && event.getDamager() instanceof Egg) {
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true)) {
((Player) event.getEntity()).damage(0.01, (Entity) projectile.getShooter());
CombatTimer.refreshPlayersCombatTime(damager, victim);
} else {
@@ -43,13 +44,11 @@ public class PlayerHitByProjectileListener implements Listener {
}
// Ender pearls and other self-damage
if (damager == victim)
return;
if (damager.equals(victim)) return;
if (event.getDamage() == 0)
return;
if (event.getDamage() == 0) return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim);
else
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 eu.endermite.togglepvp.players.PlayerData;
import eu.endermite.togglepvp.players.SmartCache;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.players.PlayerData;
import me.youhavetrouble.preventstabby.players.SmartCache;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import java.time.Instant;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PlayerTeleportListener implements Listener {
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onPlayerTeleport(org.bukkit.event.player.PlayerTeleportEvent event) {
Player player = event.getPlayer();
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
PlayerData playerData = smartCache.getPlayerData(player.getUniqueId());
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 eu.endermite.togglepvp.players.PlayerManager;
import eu.endermite.togglepvp.util.PluginMessages;
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;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PlayerTeleportInCombatListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
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;
PlayerManager playerManager = TogglePvp.getPlugin().getPlayerManager();
PlayerManager playerManager = PreventStabby.getPlugin().getPlayerManager();
if (!playerManager.getPlayer(event.getPlayer().getUniqueId()).isInCombat())
return;
@@ -25,7 +26,7 @@ public class PlayerTeleportInCombatListener implements Listener {
return;
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 eu.endermite.togglepvp.players.PlayerManager;
import eu.endermite.togglepvp.util.CombatTimer;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.players.PlayerManager;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable;
@@ -13,7 +14,7 @@ import org.bukkit.potion.PotionEffectType;
import java.util.Iterator;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class AreaEffectCloudApplyListener implements Listener {
@EventHandler(ignoreCancelled = true)
@@ -35,7 +36,7 @@ public class AreaEffectCloudApplyListener implements Listener {
potionEffectType.equals(PotionEffectType.SLOW) ||
potionEffectType.equals(PotionEffectType.WITHER)) {
PlayerManager playerManager = TogglePvp.getPlugin().getPlayerManager();
PlayerManager playerManager = PreventStabby.getPlugin().getPlayerManager();
Iterator<LivingEntity> it = event.getAffectedEntities().iterator();
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.Player;
import org.bukkit.entity.Tameable;
@@ -15,7 +16,7 @@ import java.util.UUID;
* Listen for lightning strikes and tag the trident spawned ones.
* Idea from aasmus' PvPToggle plugin
*/
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class EntityHitByLightningListener implements Listener {
/**
@@ -27,17 +28,17 @@ public class EntityHitByLightningListener implements Listener {
if (event.getEntity() instanceof Player) {
UUID victim = event.getEntity().getUniqueId();
if (TogglePvp.getPlugin().getPlayerManager().hasLoginProtection(victim)) {
if (PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(victim)) {
event.setCancelled(true);
return;
}
if (!TogglePvp.getPlugin().getSmartCache().getPlayerData(victim).isPvpEnabled()) {
if (!PreventStabby.getPlugin().getSmartCache().getPlayerData(victim).isPvpEnabled()) {
event.setCancelled(true);
}
} else if (event.getEntity() instanceof Tameable) {
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);
}
}
@@ -50,11 +51,11 @@ public class EntityHitByLightningListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onLightningStrike(LightningStrikeEvent event){
if(event.getCause() == LightningStrikeEvent.Cause.TRIDENT){
if (TogglePvp.getPlugin().getConfigCache().isChanneling_enchant_disabled()) {
if (PreventStabby.getPlugin().getConfigCache().isChanneling_enchant_disabled()) {
event.setCancelled(true);
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 eu.endermite.togglepvp.util.CombatTimer;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable;
import org.bukkit.event.EventHandler;
@@ -9,7 +10,7 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class FishingListener implements Listener {
/**
@@ -23,7 +24,7 @@ public class FishingListener implements Listener {
if (damager == victim)
return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim);
else
event.setCancelled(true);
@@ -38,7 +39,7 @@ public class FishingListener implements Listener {
if (damager == victim)
return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
CombatTimer.refreshPlayersCombatTime(damager, victim);
else
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 eu.endermite.togglepvp.config.ConfigCache;
import eu.endermite.togglepvp.util.BoundingBoxUtil;
import eu.endermite.togglepvp.util.CombatTimer;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.config.ConfigCache;
import me.youhavetrouble.preventstabby.util.BoundingBoxUtil;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
@@ -17,7 +18,7 @@ import org.bukkit.util.BoundingBox;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class LavaDumpAndIgniteListener implements Listener {
/**
@@ -26,7 +27,7 @@ public class LavaDumpAndIgniteListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
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())
return;
@@ -41,12 +42,12 @@ public class LavaDumpAndIgniteListener implements Listener {
if (entity instanceof Player) {
UUID victim = entity.getUniqueId();
if (victim != damager) {
if (TogglePvp.getPlugin().getPlayerManager().hasLoginProtection(victim, damager)) {
if (PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(victim, damager)) {
event.setCancelled(true);
return;
}
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim);
else
event.setCancelled(true);
@@ -59,12 +60,12 @@ public class LavaDumpAndIgniteListener implements Listener {
}
UUID victim = tameable.getOwner().getUniqueId();
if (TogglePvp.getPlugin().getPlayerManager().hasLoginProtection(victim, damager)) {
if (PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(victim, damager)) {
event.setCancelled(true);
return;
}
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim);
else
event.setCancelled(true);
@@ -80,7 +81,7 @@ public class LavaDumpAndIgniteListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
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())
return;
@@ -98,7 +99,7 @@ public class LavaDumpAndIgniteListener implements Listener {
if (victim == damager)
continue;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim);
else
event.setCancelled(true);
@@ -113,7 +114,7 @@ public class LavaDumpAndIgniteListener implements Listener {
if (victim == damager)
continue;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
CombatTimer.refreshPlayersCombatTime(damager, victim);
else
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.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class LightningBlockIgniteListener implements Listener {
/**
@@ -22,12 +23,12 @@ public class LightningBlockIgniteListener implements Listener {
if (entity instanceof Player) {
Player victim = (Player) entity;
if (TogglePvp.getPlugin().getPlayerManager().hasLoginProtection(victim.getUniqueId())) {
if (PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(victim.getUniqueId())) {
event.setCancelled(true);
return;
}
if (!TogglePvp.getPlugin().getSmartCache().getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
if (!PreventStabby.getPlugin().getSmartCache().getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
event.setCancelled(true);
return;
}
@@ -36,7 +37,7 @@ public class LightningBlockIgniteListener implements Listener {
if (victim.getOwner() == null) {
return;
}
if (!TogglePvp.getPlugin().getSmartCache().getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) {
if (!PreventStabby.getPlugin().getSmartCache().getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) {
event.setCancelled(true);
return;
}
@@ -1,9 +1,10 @@
package eu.endermite.togglepvp.listeners.unspecific;
package me.youhavetrouble.preventstabby.listeners.unspecific;
import eu.endermite.togglepvp.TogglePvp;
import eu.endermite.togglepvp.config.ConfigCache;
import eu.endermite.togglepvp.util.BoundingBoxUtil;
import eu.endermite.togglepvp.util.CombatTimer;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.config.ConfigCache;
import me.youhavetrouble.preventstabby.util.BoundingBoxUtil;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
@@ -16,13 +17,13 @@ import org.bukkit.util.BoundingBox;
import java.util.UUID;
@eu.endermite.togglepvp.util.Listener
@PreventStabbyListener
public class PlaceWitherRoseListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
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())
return;
@@ -38,7 +39,7 @@ public class PlaceWitherRoseListener implements Listener {
if (victim == damager)
return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true))
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
CombatTimer.refreshPlayersCombatTime(damager, victim);
else
event.setCancelled(true);
@@ -52,7 +53,7 @@ public class PlaceWitherRoseListener implements Listener {
if (victim == damager)
return;
if (TogglePvp.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
CombatTimer.refreshPlayersCombatTime(damager, victim);
else
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.util.UUID;
public class PlayerData {
private UUID playerUuid;
private long cachetime, combattime, loginTimestamp, teleportTimestamp;
private boolean pvpEnabled, lastCombatCheck, inCombat;
@@ -18,6 +20,10 @@ public class PlayerData {
refreshCachetime();
}
public UUID getPlayerUuid() {
return playerUuid;
}
public boolean isPvpEnabled() {
return pvpEnabled;
}
@@ -31,7 +37,7 @@ public class PlayerData {
}
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() {
@@ -43,7 +49,7 @@ public class PlayerData {
}
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() {
@@ -55,7 +61,7 @@ public class PlayerData {
}
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() {
@@ -63,7 +69,7 @@ public class PlayerData {
}
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() {
@@ -1,10 +1,10 @@
package eu.endermite.togglepvp.players;
package me.youhavetrouble.preventstabby.players;
import eu.endermite.togglepvp.TogglePvp;
import eu.endermite.togglepvp.api.event.PlayerLeaveCombatEvent;
import eu.endermite.togglepvp.config.ConfigCache;
import eu.endermite.togglepvp.util.CombatTimer;
import eu.endermite.togglepvp.util.PluginMessages;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.api.event.PlayerLeaveCombatEvent;
import me.youhavetrouble.preventstabby.config.ConfigCache;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PluginMessages;
import lombok.Getter;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@@ -12,6 +12,7 @@ import org.bukkit.scheduler.BukkitTask;
import java.time.Instant;
import java.util.HashMap;
import java.util.Iterator;
import java.util.UUID;
public class PlayerManager {
@@ -23,18 +24,22 @@ public class PlayerManager {
public PlayerManager() {
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);
}
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 (playerData.getLastCombatCheck()) {
Player player = Bukkit.getPlayer(uuid);
if (player == null)
return;
PlayerLeaveCombatEvent playerLeaveCombatEvent = new PlayerLeaveCombatEvent(player);
Bukkit.getScheduler().runTask(TogglePvp.getPlugin(), () -> {
Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> {
Bukkit.getPluginManager().callEvent(playerLeaveCombatEvent);
if (playerLeaveCombatEvent.isCancelled()) {
playerData.refreshCombatTime();
@@ -42,13 +47,15 @@ public class PlayerManager {
}
playerData.setLastCombatCheck(false);
playerData.setInCombat(false);
PluginMessages.sendActionBar(uuid, TogglePvp.getPlugin().getConfigCache().getLeaving_combat());
PluginMessages.sendActionBar(uuid, PreventStabby.getPlugin().getConfigCache().getLeaving_combat());
});
}
} else {
playerData.setLastCombatCheck(true);
}
})), 20, 20);
}
}, 20, 20);
}
@@ -80,15 +87,15 @@ public class PlayerManager {
}
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) {
TogglePvp.getPlugin().getSmartCache().getPlayerData(uuid).setPvpEnabled(state);
PreventStabby.getPlugin().getSmartCache().getPlayerData(uuid).setPvpEnabled(state);
}
public boolean togglePlayerPvpState(UUID uuid) {
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
if (smartCache.getPlayerData(uuid).isPvpEnabled()) {
smartCache.getPlayerData(uuid).setPvpEnabled(false);
return false;
@@ -113,18 +120,18 @@ public class PlayerManager {
if (checkVictimSpawnProtection && hasTeleportProtection(victim))
return false;
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
if (!smartCache.getPlayerData(attacker).isPvpEnabled()) {
if (sendDenyMessage) {
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
PluginMessages.sendActionBar(attacker, config.getCannot_attack_attacker());
}
return false;
}
if (!smartCache.getPlayerData(victim).isPvpEnabled()) {
if (sendDenyMessage) {
ConfigCache config = TogglePvp.getPlugin().getConfigCache();
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
PluginMessages.sendActionBar(attacker, config.getCannot_attack_victim());
}
return false;
@@ -137,7 +144,7 @@ public class PlayerManager {
* @return true if any of the provided UUIDs has spawn protection
*/
public boolean hasLoginProtection(UUID... uuid) {
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
for (UUID checkedUuid : uuid) {
if (Instant.now().getEpochSecond() < smartCache.getPlayerData(checkedUuid).getLoginTimestamp())
return true;
@@ -146,7 +153,7 @@ public class PlayerManager {
}
public boolean hasTeleportProtection(UUID uuid) {
SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
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.entity.Player;
import java.time.Instant;
@@ -10,20 +10,20 @@ import java.util.UUID;
public class SmartCache {
public void runSmartCache() {
Bukkit.getScheduler().runTaskTimerAsynchronously(TogglePvp.getPlugin(), () -> {
Bukkit.getScheduler().runTaskTimerAsynchronously(PreventStabby.getPlugin(), () -> {
// 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 {
Player player = Bukkit.getPlayer(e.getKey());
if (player != null && player.isOnline()) {
TogglePvp.getPlugin().getPlayerManager().refreshPlayersCacheTime(e.getKey());
PreventStabby.getPlugin().getPlayerManager().refreshPlayersCacheTime(e.getKey());
}
} catch (NullPointerException ignored) {}
}
// Check for entries that should be invalidated
try {
long now = Instant.now().getEpochSecond();
TogglePvp.getPlugin().getPlayerManager().getPlayerList().entrySet()
PreventStabby.getPlugin().getPlayerManager().getPlayerList().entrySet()
.removeIf(cacheEntry -> cacheEntry.getValue().getCachetime() < now);
} catch (Exception ignored) {}
}, 100, 100);
@@ -32,13 +32,13 @@ public class SmartCache {
public PlayerData getPlayerData(UUID uuid) {
// Try to get data from cache and refresh it
try {
TogglePvp.getPlugin().getPlayerManager().refreshPlayersCacheTime(uuid);
return TogglePvp.getPlugin().getPlayerManager().getPlayer(uuid);
PreventStabby.getPlugin().getPlayerManager().refreshPlayersCacheTime(uuid);
return PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid);
} catch (NullPointerException e) {
// If player data is not in cache get it from database and put into cache
try {
PlayerData playerData = TogglePvp.getPlugin().getSqLite().getPlayerInfo(uuid);
TogglePvp.getPlugin().getPlayerManager().addPlayer(uuid, playerData);
PlayerData playerData = PreventStabby.getPlugin().getSqLite().getPlayerInfo(uuid);
PreventStabby.getPlugin().getPlayerManager().addPlayer(uuid, playerData);
return playerData;
} catch (NullPointerException ex) {
// Return false if database call fails
@@ -49,11 +49,11 @@ public class SmartCache {
public void setPlayerPvpState(UUID uuid, boolean state) {
// If player is in cache update that
if (TogglePvp.getPlugin().getPlayerManager().getPlayer(uuid) != null) {
TogglePvp.getPlugin().getPlayerManager().getPlayer(uuid).setPvpEnabled(state);
if (PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid) != null) {
PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid).setPvpEnabled(state);
}
// 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.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 eu.endermite.togglepvp.players.PlayerData;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.players.PlayerData;
import java.io.File;
import java.sql.*;
@@ -52,12 +52,11 @@ public class DatabaseSQLite {
}
public PlayerData getPlayerInfo(UUID uuid) {
try {
Connection conn = DriverManager.getConnection(url);
Statement insertnewuser = conn.createStatement();
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);
} catch (SQLException e) {
if (e.getErrorCode() != 19) {
@@ -85,7 +84,7 @@ public class DatabaseSQLite {
String newuserdata = "UPDATE `players` SET pvpenabled = "+data.isPvpEnabled()+" WHERE `player_uuid` = '"+uuid.toString()+"';";
insertnewuser.execute(newuserdata);
} catch (SQLException e) {
TogglePvp.getPlugin().getLogger().severe("Error while saving player data!");
PreventStabby.getPlugin().getLogger().severe("Error while saving player data!");
e.printStackTrace();
}
} 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.chat.BaseComponent;
@@ -23,6 +23,7 @@ public class PluginMessages {
}
public static void sendActionBar(Player player, String message) {
// TODO use adventure
BaseComponent[] component = TextComponent.fromLegacyText(parseMessage(message));
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.Retention;
@@ -8,4 +8,4 @@ import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@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
version: ${project.version}
main: eu.endermite.togglepvp.TogglePvp
main: eu.endermite.togglepvp.PreventStabby
authors: [YouHaveTrouble]
api-version: 1.13
description: PvP toggle plugin
description: Stop people from getting stabbed!
commands:
pvp:
usage: /pvp [args]
preventstabby:
aliases:
- pvp
permissions:
toglepvp.combatcommandblock.bypass:
default: op