mirror of
https://github.com/YouHaveTrouble/PreventStabby.git
synced 2026-05-11 21:06:55 +00:00
Remove several game listeners and utility files
The commit includes the deletion of several listeners and utility files. These were mainly related to handling specific game events such as interactions with lava and fireworks, combat commands, and actions related to player pets and mounts. The removal is due to refactoring damage source check system
This commit is contained in:
@@ -23,7 +23,6 @@ public final class PreventStabby extends JavaPlugin {
|
||||
@Override
|
||||
public void onEnable() {
|
||||
plugin = this;
|
||||
Util.initData();
|
||||
reloadPluginConfig();
|
||||
playerManager = new PlayerManager(this);
|
||||
damageCheck = new DamageCheck(this);
|
||||
|
||||
@@ -1,13 +1,7 @@
|
||||
package me.youhavetrouble.preventstabby.api;
|
||||
|
||||
import me.youhavetrouble.preventstabby.PreventStabby;
|
||||
import me.youhavetrouble.preventstabby.players.PlayerData;
|
||||
import me.youhavetrouble.preventstabby.util.CombatTimer;
|
||||
import me.youhavetrouble.preventstabby.util.PvpState;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.UUID;
|
||||
|
||||
public class PreventStabbyAPI {
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ public class GlobalToggleCommand {
|
||||
public static void globalToggle(CommandSender sender, String[] args) {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> {
|
||||
if (!PreventStabbyPermission.COMMAND_GLOBAL_TOGGLE.doesCommandSenderHave(sender)) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission());
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -27,15 +27,15 @@ public class GlobalToggleCommand {
|
||||
switch (pvpState) {
|
||||
case ENABLED:
|
||||
PreventStabby.getPlugin().getPlayerManager().setForcedPvpState(PvpState.ENABLED);
|
||||
PluginMessages.broadcastMessage(PreventStabby.getPlugin().getConfigCache().getForce_pvp_on());
|
||||
PluginMessages.broadcastMessage(PreventStabby.getPlugin().getConfigCache().force_pvp_on);
|
||||
break;
|
||||
case DISABLED:
|
||||
PreventStabby.getPlugin().getPlayerManager().setForcedPvpState(PvpState.DISABLED);
|
||||
PluginMessages.broadcastMessage(PreventStabby.getPlugin().getConfigCache().getForce_pvp_off());
|
||||
PluginMessages.broadcastMessage(PreventStabby.getPlugin().getConfigCache().force_pvp_off);
|
||||
break;
|
||||
case NONE:
|
||||
PreventStabby.getPlugin().getPlayerManager().setForcedPvpState(PvpState.NONE);
|
||||
PluginMessages.broadcastMessage(PreventStabby.getPlugin().getConfigCache().getForce_pvp_none());
|
||||
PluginMessages.broadcastMessage(PreventStabby.getPlugin().getConfigCache().force_pvp_none);
|
||||
break;
|
||||
default:
|
||||
PluginMessages.sendMessage(sender, "Try /pvp override <enabled/disabled/none>");
|
||||
|
||||
@@ -12,7 +12,7 @@ public class HelpCommand {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> {
|
||||
|
||||
if (!PreventStabbyPermission.COMMAND_HELP.doesCommandSenderHave(sender)) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission());
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ public class HelpCommand {
|
||||
.append(Component.newline())
|
||||
.append(PluginMessages.MINIMESSAGE.deserialize("<blue>/pvp <aqua><bold>toggle</bold> <white>- toggles PvP status"));
|
||||
}
|
||||
PreventStabby.getAudiences().sender(sender).sendMessage(helpComponent);
|
||||
sender.sendMessage(helpComponent);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ public class MainCommand implements TabExecutor {
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
if (!sender.hasPermission("preventstabby.command")) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission());
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission);
|
||||
return true;
|
||||
}
|
||||
if (args.length == 0) {
|
||||
@@ -63,7 +63,7 @@ public class MainCommand implements TabExecutor {
|
||||
GlobalToggleCommand.globalToggle(sender, args);
|
||||
break;
|
||||
default:
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_such_command());
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_such_command);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -3,7 +3,7 @@ package me.youhavetrouble.preventstabby.commands;
|
||||
import me.youhavetrouble.preventstabby.PreventStabby;
|
||||
import me.youhavetrouble.preventstabby.api.event.PlayerTogglePvpEvent;
|
||||
import me.youhavetrouble.preventstabby.config.PreventStabbyPermission;
|
||||
import me.youhavetrouble.preventstabby.util.CombatTimer;
|
||||
import me.youhavetrouble.preventstabby.players.PlayerManager;
|
||||
import me.youhavetrouble.preventstabby.util.PluginMessages;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@@ -11,46 +11,47 @@ import org.bukkit.entity.Player;
|
||||
|
||||
public class PvpToggleCommand {
|
||||
|
||||
private static final PlayerManager playerManager = PreventStabby.getPlugin().getPlayerManager();
|
||||
|
||||
public static void toggle(CommandSender sender, String[] args) {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> {
|
||||
if (!PreventStabbyPermission.COMMAND_TOGGLE.doesCommandSenderHave(sender)) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission());
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission);
|
||||
return;
|
||||
}
|
||||
|
||||
if (args.length <= 1) {
|
||||
if (!(sender instanceof Player)) {
|
||||
if (!(sender instanceof Player player)) {
|
||||
PluginMessages.sendMessage(sender, "Try /pvp toggle <player>");
|
||||
return;
|
||||
}
|
||||
Player player = (Player) sender;
|
||||
if (CombatTimer.isInCombat(player.getUniqueId())) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat());
|
||||
if (playerManager.getPlayer(player.getUniqueId()).isInCombat()) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().cant_do_that_during_combat);
|
||||
return;
|
||||
}
|
||||
boolean currentState = PreventStabby.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId());
|
||||
PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, currentState, true);
|
||||
playerManager.togglePlayerPvpState(player.getUniqueId()).thenAccept(newState -> {
|
||||
PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, newState, true);
|
||||
Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> {
|
||||
if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) {
|
||||
Bukkit.getPluginManager().callEvent(toggleEvent);
|
||||
}
|
||||
if (!toggleEvent.isSendMessage()) return;
|
||||
if (currentState) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_enabled());
|
||||
if (newState) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().pvp_enabled);
|
||||
} else {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_disabled());
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().pvp_disabled);
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
} else if (args.length == 2) {
|
||||
if (!PreventStabbyPermission.COMMAND_TOGGLE_OTHERS.doesCommandSenderHave(sender)) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission());
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission);
|
||||
return;
|
||||
}
|
||||
if (sender instanceof Player) {
|
||||
Player player = (Player) sender;
|
||||
if (CombatTimer.isInCombat(player.getUniqueId())) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat());
|
||||
if (sender instanceof Player player) {
|
||||
if (playerManager.getPlayer(player.getUniqueId()).isInCombat()) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().cant_do_that_during_combat);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -60,67 +61,65 @@ public class PvpToggleCommand {
|
||||
PluginMessages.sendMessage(sender, "<red>Player offline.");
|
||||
return;
|
||||
}
|
||||
boolean currentState = PreventStabby.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId());
|
||||
PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, currentState, false);
|
||||
playerManager.togglePlayerPvpState(player.getUniqueId()).thenAccept(newState -> {
|
||||
PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, newState, false);
|
||||
Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> {
|
||||
if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) {
|
||||
Bukkit.getPluginManager().callEvent(toggleEvent);
|
||||
}
|
||||
if (toggleEvent.isSendMessage()) {
|
||||
if (currentState) {
|
||||
PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_enabled());
|
||||
if (newState) {
|
||||
PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().pvp_enabled);
|
||||
} else {
|
||||
PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_disabled());
|
||||
PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().pvp_disabled);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
String message;
|
||||
if (currentState) {
|
||||
message = PreventStabby.getPlugin().getConfigCache().getPvp_enabled_other();
|
||||
if (newState) {
|
||||
message = PreventStabby.getPlugin().getConfigCache().pvp_enabled_other;
|
||||
} else {
|
||||
message = PreventStabby.getPlugin().getConfigCache().getPvp_disabled_other();
|
||||
message = PreventStabby.getPlugin().getConfigCache().pvp_disabled_other;
|
||||
}
|
||||
PluginMessages.sendMessage(sender, PluginMessages.parsePlayerName(player, message));
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static void enable(CommandSender sender, String[] args) {
|
||||
if (!PreventStabbyPermission.COMMAND_TOGGLE.doesCommandSenderHave(sender)) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission());
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission);
|
||||
return;
|
||||
}
|
||||
if (args.length == 1) {
|
||||
if (!(sender instanceof Player)) {
|
||||
if (!(sender instanceof Player player)) {
|
||||
PluginMessages.sendMessage(sender, "Try /pvp enable <player>");
|
||||
return;
|
||||
}
|
||||
Player player = (Player) sender;
|
||||
if (CombatTimer.isInCombat(player.getUniqueId())) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat());
|
||||
if (playerManager.getPlayer(player.getUniqueId()).isInCombat()) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().cant_do_that_during_combat);
|
||||
return;
|
||||
}
|
||||
PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true);
|
||||
playerManager.setPlayerPvpState(player.getUniqueId(), true);
|
||||
PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, true, true);
|
||||
Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> {
|
||||
if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) {
|
||||
Bukkit.getPluginManager().callEvent(toggleEvent);
|
||||
}
|
||||
if (toggleEvent.isSendMessage()) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_enabled());
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().pvp_enabled);
|
||||
}
|
||||
});
|
||||
|
||||
} else if (args.length == 2) {
|
||||
if (!PreventStabbyPermission.COMMAND_TOGGLE_OTHERS.doesCommandSenderHave(sender)) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission());
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission);
|
||||
return;
|
||||
}
|
||||
if (sender instanceof Player) {
|
||||
Player player = (Player) sender;
|
||||
if (CombatTimer.isInCombat(player.getUniqueId())) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat());
|
||||
if (sender instanceof Player player) {
|
||||
if (playerManager.getPlayer(player.getUniqueId()).isInCombat()) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().cant_do_that_during_combat);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -129,16 +128,16 @@ public class PvpToggleCommand {
|
||||
PluginMessages.sendMessage(sender, "<red>Player offline.");
|
||||
return;
|
||||
}
|
||||
String message = PreventStabby.getPlugin().getConfigCache().getPvp_enabled_other();
|
||||
String message = PreventStabby.getPlugin().getConfigCache().pvp_enabled_other;
|
||||
PluginMessages.sendMessage(sender, PluginMessages.parsePlayerName(player, message));
|
||||
PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true);
|
||||
playerManager.setPlayerPvpState(player.getUniqueId(), true);
|
||||
PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, true, false);
|
||||
Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> {
|
||||
if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) {
|
||||
Bukkit.getPluginManager().callEvent(toggleEvent);
|
||||
}
|
||||
if (toggleEvent.isSendMessage()) {
|
||||
PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_enabled());
|
||||
PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().pvp_enabled);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
@@ -152,24 +151,23 @@ public class PvpToggleCommand {
|
||||
|
||||
public static void disable(CommandSender sender, String[] args) {
|
||||
if (!PreventStabbyPermission.COMMAND_TOGGLE.doesCommandSenderHave(sender)) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission());
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission);
|
||||
return;
|
||||
}
|
||||
if (args.length == 1) {
|
||||
if (sender instanceof Player) {
|
||||
Player player = (Player) sender;
|
||||
if (CombatTimer.isInCombat(player.getUniqueId())) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat());
|
||||
if (sender instanceof Player player) {
|
||||
if (playerManager.getPlayer(player.getUniqueId()).isInCombat()) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().cant_do_that_during_combat);
|
||||
return;
|
||||
}
|
||||
PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), false);
|
||||
playerManager.setPlayerPvpState(player.getUniqueId(), false);
|
||||
PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, false, true);
|
||||
Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> {
|
||||
if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) {
|
||||
Bukkit.getPluginManager().callEvent(toggleEvent);
|
||||
}
|
||||
if (toggleEvent.isSendMessage()) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_disabled());
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().pvp_disabled);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
@@ -177,13 +175,12 @@ public class PvpToggleCommand {
|
||||
}
|
||||
} else if (args.length == 2) {
|
||||
if (!PreventStabbyPermission.COMMAND_TOGGLE_OTHERS.doesCommandSenderHave(sender)) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission());
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission);
|
||||
return;
|
||||
}
|
||||
if (sender instanceof Player) {
|
||||
Player player = (Player) sender;
|
||||
if (CombatTimer.isInCombat(player.getUniqueId())) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat());
|
||||
if (sender instanceof Player player) {
|
||||
if (playerManager.getPlayer(player.getUniqueId()).isInCombat()) {
|
||||
PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().cant_do_that_during_combat);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -192,16 +189,16 @@ public class PvpToggleCommand {
|
||||
PluginMessages.sendMessage(sender, "<red>Player offline.");
|
||||
return;
|
||||
}
|
||||
String message = PreventStabby.getPlugin().getConfigCache().getPvp_disabled_other();
|
||||
String message = PreventStabby.getPlugin().getConfigCache().pvp_disabled_other;
|
||||
PluginMessages.sendMessage(sender, PluginMessages.parsePlayerName(player, message));
|
||||
PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), false);
|
||||
playerManager.setPlayerPvpState(player.getUniqueId(), false);
|
||||
PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, false, false);
|
||||
Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> {
|
||||
if (PlayerTogglePvpEvent.getHandlerList().getRegisteredListeners().length > 0) {
|
||||
Bukkit.getPluginManager().callEvent(toggleEvent);
|
||||
}
|
||||
if (toggleEvent.isSendMessage()) {
|
||||
PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_disabled());
|
||||
PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().pvp_disabled);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ public class ReloadCommand {
|
||||
public static void reload(CommandSender sender) {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(PreventStabby.getPlugin(), () -> {
|
||||
if (!PreventStabbyPermission.COMMAND_RELOAD.doesCommandSenderHave(sender)) {
|
||||
PluginMessages.parseMessage(sender, PreventStabby.getPlugin().getConfigCache().getNo_permission());
|
||||
PluginMessages.parseMessage(sender, PreventStabby.getPlugin().getConfigCache().no_permission);
|
||||
return;
|
||||
}
|
||||
PreventStabby.getPlugin().reloadPluginConfig(sender);
|
||||
|
||||
@@ -36,40 +36,39 @@ public class PlaceholderApiHook extends PlaceholderExpansion {
|
||||
|
||||
@Override
|
||||
public String onRequest(OfflinePlayer player, String params) {
|
||||
switch (params) {
|
||||
case "pvp":
|
||||
if (!player.isOnline()) return String.valueOf(false);
|
||||
return String.valueOf(plugin.getPlayerManager().getPlayer(player.getUniqueId()).isPvpEnabled());
|
||||
case "combat_time":
|
||||
return getCombatTimePlaceholder(player.getUniqueId(), player);
|
||||
case "in_combat":
|
||||
if (!player.isOnline()) return String.valueOf(false);
|
||||
return String.valueOf(plugin.getPlayerManager().getPlayer(player.getUniqueId()).isInCombat());
|
||||
case "pvp_forced":
|
||||
switch (PreventStabby.getPlugin().getPlayerManager().getForcedPvpState()) {
|
||||
case NONE:
|
||||
return legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().getPlaceholder_pvp_forced_none()));
|
||||
case ENABLED:
|
||||
return legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().getPlaceholder_pvp_forced_true()));
|
||||
case DISABLED:
|
||||
return legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().getPlaceholder_pvp_forced_false()));
|
||||
return switch (params) {
|
||||
case "pvp" -> {
|
||||
if (!player.isOnline()) yield String.valueOf(false);
|
||||
yield String.valueOf(plugin.getPlayerManager().getPlayer(player.getUniqueId()).isPvpEnabled());
|
||||
}
|
||||
default:
|
||||
return null;
|
||||
case "combat_time" -> getCombatTimePlaceholder(player.getUniqueId(), player);
|
||||
case "in_combat" -> {
|
||||
if (!player.isOnline()) yield String.valueOf(false);
|
||||
yield String.valueOf(plugin.getPlayerManager().getPlayer(player.getUniqueId()).isInCombat());
|
||||
}
|
||||
case "pvp_forced" -> switch (PreventStabby.getPlugin().getPlayerManager().getForcedPvpState()) {
|
||||
case NONE ->
|
||||
legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().placeholder_pvp_forced_none));
|
||||
case ENABLED ->
|
||||
legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().placeholder_pvp_forced_true));
|
||||
case DISABLED ->
|
||||
legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().placeholder_pvp_forced_false));
|
||||
};
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
|
||||
private String getCombatTimePlaceholder(UUID uuid, OfflinePlayer player) {
|
||||
if (!player.isOnline()) {
|
||||
return legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().getPlaceholder_not_in_combat()));
|
||||
return legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().placeholder_not_in_combat));
|
||||
}
|
||||
long seconds = plugin.getPlayerManager().getPlayer(uuid).getCombatTime();
|
||||
long seconds = plugin.getPlayerManager().getPlayer(uuid).getSecondsLeftUntilCombatEnd();
|
||||
if (seconds > 0) {
|
||||
String msg = plugin.getConfigCache().getPlaceholder_combat_time();
|
||||
String msg = plugin.getConfigCache().placeholder_combat_time;
|
||||
msg = msg.replaceAll("%time%", String.valueOf(seconds));
|
||||
return legacyComponentSerializer.serialize(PluginMessages.parseMessage(msg));
|
||||
}
|
||||
return legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().getPlaceholder_not_in_combat()));
|
||||
return legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().placeholder_not_in_combat));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
-27
@@ -1,27 +0,0 @@
|
||||
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 onMountHitByExplosion(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);
|
||||
}
|
||||
|
||||
}
|
||||
-30
@@ -1,30 +0,0 @@
|
||||
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 onMountHitByFireWork(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);
|
||||
}
|
||||
|
||||
}
|
||||
-40
@@ -1,40 +0,0 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
-25
@@ -1,25 +0,0 @@
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
-28
@@ -1,28 +0,0 @@
|
||||
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 onPlayerHitMountWithProjectile(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||
if (!(event.getDamager() instanceof Projectile)) return;
|
||||
Projectile projectile = (Projectile) event.getDamager();
|
||||
if (!(projectile.getShooter() instanceof Player) || event.getEntity().getPassengers().isEmpty()) return;
|
||||
Entity entity = event.getEntity();
|
||||
UUID damager = event.getDamager().getUniqueId();
|
||||
if (Util.processMountAttack(damager, entity))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
}
|
||||
-40
@@ -1,40 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.pets;
|
||||
|
||||
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 org.bukkit.event.entity.EntityDamageEvent;
|
||||
import java.util.UUID;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class PetHitByExplosionListener implements Listener {
|
||||
|
||||
/**
|
||||
* Cancels explosion damage for pets with pvp off that is caused by players
|
||||
*/
|
||||
@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;
|
||||
Tameable tameable = (Tameable) event.getEntity();
|
||||
if (tameable.getOwner() == null) return;
|
||||
|
||||
UUID victim = tameable.getOwner().getUniqueId();
|
||||
|
||||
try {
|
||||
UUID damager = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
|
||||
if (victim.equals(damager))
|
||||
return;
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
} catch (NullPointerException | IndexOutOfBoundsException ignored) {}
|
||||
|
||||
}
|
||||
}
|
||||
-35
@@ -1,35 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.pets;
|
||||
|
||||
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;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import java.util.UUID;
|
||||
|
||||
@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;
|
||||
Firework firework = (Firework) event.getDamager();
|
||||
if (!(firework.getShooter() instanceof Player)) return;
|
||||
UUID damager = ((Player) firework.getShooter()).getUniqueId();
|
||||
UUID victim = tameable.getOwner().getUniqueId();
|
||||
if (victim.equals(damager)) return;
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
-53
@@ -1,53 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.pets;
|
||||
|
||||
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;
|
||||
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.UUID;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class PetHitBySplashPotionListener 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 onPetHitBySplashPotion(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 (Entity entity : event.getAffectedEntities()) {
|
||||
if (entity instanceof Tameable) {
|
||||
Tameable tameable = (Tameable) entity;
|
||||
if (tameable.getOwner() == null) continue;
|
||||
UUID victim = tameable.getOwner().getUniqueId();
|
||||
if (victim == damager) return;
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.pets;
|
||||
|
||||
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;
|
||||
|
||||
@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;
|
||||
|
||||
UUID damager = event.getPlayer().getUniqueId();
|
||||
UUID victim = tameable.getOwner().getUniqueId();
|
||||
if (victim == damager) return;
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
-38
@@ -1,38 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.pets;
|
||||
|
||||
import me.youhavetrouble.preventstabby.PreventStabby;
|
||||
import me.youhavetrouble.preventstabby.util.DamageCheck;
|
||||
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
|
||||
import me.youhavetrouble.preventstabby.util.PvpState;
|
||||
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 {
|
||||
|
||||
/**
|
||||
* TODO - this needs to pass canDamage() in the future, for now it just checks forced pvp state directly
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onWolfAttackMount(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||
if (PreventStabby.getPlugin().getPlayerManager().getForcedPvpState() == PvpState.ENABLED) return;
|
||||
if (!(event.getDamager() instanceof Tameable damager) || event.getEntity().getPassengers().isEmpty()) return;
|
||||
Entity victim = event.getEntity();
|
||||
if (damager.getOwner() == null) return;
|
||||
|
||||
DamageCheck.DamageCheckResult result = PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim);
|
||||
|
||||
if (!result.ableToDamage) {
|
||||
if (damager instanceof Wolf wolf) {
|
||||
wolf.setAngry(false);
|
||||
}
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
-32
@@ -1,32 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.pets;
|
||||
|
||||
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;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class PetTargettingPetListener implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onWolfAttackWolf(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||
if (!(event.getDamager() instanceof Tameable) || !(event.getEntity() instanceof Tameable)) return;
|
||||
Tameable damager = (Tameable) event.getDamager();
|
||||
Tameable victim = (Tameable) event.getEntity();
|
||||
if (damager.getOwner() == null || victim.getOwner() == null) return;
|
||||
|
||||
if (!PreventStabby.getPlugin().getPlayerManager()
|
||||
.canDamage(
|
||||
damager.getUniqueId(),
|
||||
victim.getUniqueId(),
|
||||
false,
|
||||
false
|
||||
))
|
||||
event.setCancelled(true);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
-43
@@ -1,43 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.pets;
|
||||
|
||||
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;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityTargetEvent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class PetTargettingPlayerListener implements Listener {
|
||||
/**
|
||||
* Stops pets with owners targetting players with pvp off
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPetTargetPlayer(EntityTargetEvent event) {
|
||||
if (!(event.getEntity() instanceof Tameable)) return;
|
||||
Tameable entity = (Tameable) event.getEntity();
|
||||
if (!(entity.getOwner() instanceof Player)) return;
|
||||
if (!(event.getTarget() instanceof Player)) return;
|
||||
|
||||
UUID damager = entity.getOwner().getUniqueId();
|
||||
UUID victim = event.getTarget().getUniqueId();
|
||||
|
||||
boolean tempting = event.getReason().equals(EntityTargetEvent.TargetReason.TEMPT);
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, !tempting, false)) {
|
||||
if (tempting) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
}
|
||||
else
|
||||
event.setCancelled(true);
|
||||
|
||||
}
|
||||
}
|
||||
-47
@@ -1,47 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.pets;
|
||||
|
||||
import me.youhavetrouble.preventstabby.PreventStabby;
|
||||
import me.youhavetrouble.preventstabby.config.ConfigCache;
|
||||
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;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class PlayerAttackPetListener implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerAttackPet(EntityDamageByEntityEvent event) {
|
||||
|
||||
if (!(event.getDamager() instanceof Player) || !(event.getEntity() instanceof Tameable)) return;
|
||||
|
||||
Tameable tameable = (Tameable) event.getEntity();
|
||||
if (tameable.getOwner() == null) return;
|
||||
|
||||
UUID damager = event.getDamager().getUniqueId();
|
||||
UUID victim = tameable.getOwner().getUniqueId();
|
||||
|
||||
if (damager.equals(victim)) return;
|
||||
|
||||
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager()
|
||||
.canDamage(
|
||||
damager,
|
||||
victim,
|
||||
config.getCannot_attack_pets_attacker(),
|
||||
config.getCannot_attack_pets_victim(),
|
||||
false
|
||||
))
|
||||
CombatTimer.refreshPlayersCombatTime(damager);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
|
||||
}
|
||||
}
|
||||
-51
@@ -1,51 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.pets;
|
||||
|
||||
import me.youhavetrouble.preventstabby.PreventStabby;
|
||||
import me.youhavetrouble.preventstabby.config.ConfigCache;
|
||||
import me.youhavetrouble.preventstabby.util.CombatTimer;
|
||||
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
import org.bukkit.entity.Tameable;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class PlayerHitPetWithProjectileListener implements Listener {
|
||||
|
||||
/**
|
||||
* Cancels damage done by projectiles to pets of players with pvp off
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerHitPetWithProjectile(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||
if (!(event.getEntity() instanceof Tameable) || !(event.getDamager() instanceof Projectile)) return;
|
||||
Projectile projectile = (Projectile) event.getDamager();
|
||||
if (!(projectile.getShooter() instanceof Player)) return;
|
||||
Tameable tameable = (Tameable) event.getEntity();
|
||||
if (tameable.getOwner() == null) return;
|
||||
|
||||
UUID damager = ((Player) projectile.getShooter()).getUniqueId();
|
||||
UUID victim = tameable.getOwner().getUniqueId();
|
||||
|
||||
if (damager.equals(victim)) return;
|
||||
|
||||
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager()
|
||||
.canDamage(
|
||||
damager,
|
||||
victim,
|
||||
config.getCannot_attack_pets_attacker(),
|
||||
config.getCannot_attack_pets_victim(),
|
||||
false
|
||||
))
|
||||
CombatTimer.refreshPlayersCombatTime(damager);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
-26
@@ -1,26 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.pets;
|
||||
|
||||
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;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class PlayerInteractWithPetListener implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerInteractWithPet(org.bukkit.event.player.PlayerInteractEntityEvent event) {
|
||||
|
||||
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;
|
||||
|
||||
event.setCancelled(true);
|
||||
|
||||
}
|
||||
}
|
||||
-47
@@ -1,47 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.player;
|
||||
|
||||
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;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import java.util.UUID;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class PetAttackPlayerListener implements Listener {
|
||||
|
||||
/**
|
||||
* Pets stop following player with pvp off after trying to hit them
|
||||
* This is to fix any inconsistancy with pet behavior
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPetAttack(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||
|
||||
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 = PreventStabby.getPlugin().getPlayerManager();
|
||||
|
||||
if (!playerManager.canDamage(damager, victim, false)) {
|
||||
if (entity instanceof Wolf) {
|
||||
Wolf wolf = (Wolf) entity;
|
||||
wolf.setAngry(false);
|
||||
}
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
-35
@@ -1,35 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.player;
|
||||
|
||||
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;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import java.util.UUID;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class PlayerAttackListener implements Listener {
|
||||
|
||||
/**
|
||||
* Cancels basic attacks done to player with pvp off
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerAttack(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||
Entity damagerEntity = event.getDamager();
|
||||
Entity victimEntity = event.getEntity();
|
||||
|
||||
if (damagerEntity instanceof Player && victimEntity instanceof Player) {
|
||||
UUID damager = damagerEntity.getUniqueId();
|
||||
UUID victim = victimEntity.getUniqueId();
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
-109
@@ -1,109 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.player;
|
||||
|
||||
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;
|
||||
import org.bukkit.entity.TNTPrimed;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.minecart.ExplosiveMinecart;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import java.util.UUID;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class PlayerHitByExplosionListener implements Listener {
|
||||
|
||||
/**
|
||||
* Cancels explosion damage for players with pvp off that is caused by players
|
||||
*/
|
||||
@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;
|
||||
|
||||
UUID victim = event.getEntity().getUniqueId();
|
||||
try {
|
||||
UUID damager = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
|
||||
if (victim.equals(damager)) return;
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
|
||||
} catch (NullPointerException | IndexOutOfBoundsException ignored) { }
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tags ender crystal with exploder uuid
|
||||
*/
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerHitEnderCrystal(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||
if (event.getEntity() instanceof EnderCrystal) {
|
||||
EnderCrystal enderCrystal = (EnderCrystal) event.getEntity();
|
||||
if (event.getDamager() instanceof Player) {
|
||||
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(PreventStabby.getPlugin(), damager.getUniqueId().toString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tag ender crystal with destroying players uuid
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerPrimedTnt(org.bukkit.event.entity.ExplosionPrimeEvent event) {
|
||||
if (event.getEntity() instanceof TNTPrimed) {
|
||||
TNTPrimed tntPrimed = (TNTPrimed) event.getEntity();
|
||||
if (tntPrimed.getSource() instanceof Player) {
|
||||
Player damager = (Player) tntPrimed.getSource();
|
||||
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(PreventStabby.getPlugin(), damagerUuid));
|
||||
} catch (NullPointerException ignored) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tag TNT minecart with placing player uuid
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
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(PreventStabby.getPlugin(), event.getPlayer().getUniqueId().toString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tag TNT minecart with uuid of player who last nudged it
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
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(PreventStabby.getPlugin(), damager.getUniqueId().toString()));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
-34
@@ -1,34 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.player;
|
||||
|
||||
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;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import java.util.UUID;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class PlayerHitByFireworkListener implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onFireworkDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||
if (event.getDamager() instanceof Firework && event.getEntity() instanceof Player) {
|
||||
UUID victim = event.getEntity().getUniqueId();
|
||||
Firework firework = (Firework) event.getDamager();
|
||||
if (firework.getShooter() instanceof Player) {
|
||||
UUID damager = ((Player) firework.getShooter()).getUniqueId();
|
||||
if (damager == victim) return;
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
-59
@@ -1,59 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.player;
|
||||
|
||||
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;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class PlayerHitByProjectileListener implements Listener {
|
||||
|
||||
/**
|
||||
* Cancels damage done by projectiles to player with pvp off
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerHitProjectile(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||
|
||||
if (event.getEntity() instanceof Player && event.getDamager() instanceof Projectile) {
|
||||
Projectile projectile = (Projectile) event.getDamager();
|
||||
if (projectile.getShooter() instanceof Player) {
|
||||
UUID damager = ((Player) projectile.getShooter()).getUniqueId();
|
||||
UUID victim = event.getEntity().getUniqueId();
|
||||
|
||||
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 {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
} 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 {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Ender pearls and other self-damage
|
||||
if (damager.equals(victim)) return;
|
||||
|
||||
if (event.getDamage() == 0) return;
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
-48
@@ -1,48 +0,0 @@
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
-38
@@ -1,38 +0,0 @@
|
||||
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;
|
||||
|
||||
if (event.getPlayer().hasPermission("toglepvp.combatcommandblock.bypass"))
|
||||
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;
|
||||
|
||||
event.setCancelled(true);
|
||||
PluginMessages.sendMessage(event.getPlayer(), PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
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 PlayerTeleportInCombatListener implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerTeleportInCombat(org.bukkit.event.player.PlayerTeleportEvent event) {
|
||||
|
||||
if (!PreventStabby.getPlugin().getConfigCache().isBlock_teleports_in_combat())
|
||||
return;
|
||||
|
||||
PlayerManager playerManager = PreventStabby.getPlugin().getPlayerManager();
|
||||
|
||||
if (!playerManager.getPlayer(event.getPlayer().getUniqueId()).isInCombat())
|
||||
return;
|
||||
|
||||
if (event.getPlayer().hasPermission("toglepvp.combatteleportblock.bypass"))
|
||||
return;
|
||||
|
||||
event.setCancelled(true);
|
||||
PluginMessages.sendMessage(event.getPlayer(), PreventStabby.getPlugin().getConfigCache().getCant_do_that_during_combat());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
-61
@@ -1,61 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.unspecific;
|
||||
|
||||
import me.youhavetrouble.preventstabby.PreventStabby;
|
||||
import me.youhavetrouble.preventstabby.players.PlayerManager;
|
||||
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.entity.Tameable;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.AreaEffectCloudApplyEvent;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.UUID;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class AreaEffectCloudApplyListener implements Listener {
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onCloudEffects(AreaEffectCloudApplyEvent event) {
|
||||
|
||||
if (!(event.getEntity().getSource() instanceof Player)) return;
|
||||
PotionEffectType potionEffectType = event.getEntity().getBasePotionData().getType().getEffectType();
|
||||
if (potionEffectType == null) return;
|
||||
|
||||
if (!Util.isPotionEffectHarmful(potionEffectType)) return;
|
||||
|
||||
PlayerManager playerManager = PreventStabby.getPlugin().getPlayerManager();
|
||||
|
||||
Iterator<LivingEntity> it = event.getAffectedEntities().iterator();
|
||||
UUID damager = ((Player) event.getEntity().getSource()).getUniqueId();
|
||||
while (it.hasNext()) {
|
||||
LivingEntity entity = it.next();
|
||||
if (entity instanceof Player) {
|
||||
UUID victim = entity.getUniqueId();
|
||||
if (damager == victim) continue;
|
||||
|
||||
if (playerManager.canDamage(damager, victim, true))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
it.remove();
|
||||
|
||||
} else if (entity instanceof Tameable) {
|
||||
Tameable tameable = (Tameable) entity;
|
||||
|
||||
if (tameable.getOwner() == null) continue;
|
||||
|
||||
UUID victim = tameable.getOwner().getUniqueId();
|
||||
if (victim == damager) continue;
|
||||
|
||||
if (playerManager.canDamage(damager, victim, true, false))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-61
@@ -1,61 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.unspecific;
|
||||
|
||||
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;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.weather.LightningStrikeEvent;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Listen for lightning strikes and tag the trident spawned ones.
|
||||
* Idea from aasmus' PvPToggle plugin
|
||||
*/
|
||||
@PreventStabbyListener
|
||||
public class EntityHitByLightningListener implements Listener {
|
||||
|
||||
/**
|
||||
* Cancels damage from lightning strike caused by channeling for players with pvp off
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerLightningDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||
if (event.getDamager() instanceof LightningStrike && event.getDamager().getMetadata("TRIDENT").size() >= 1) {
|
||||
if (event.getEntity() instanceof Player) {
|
||||
UUID victim = event.getEntity().getUniqueId();
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(victim)) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
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 && !PreventStabby.getPlugin().getSmartCache().getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tags the lightning strike
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onLightningStrike(LightningStrikeEvent event){
|
||||
if(event.getCause() == LightningStrikeEvent.Cause.TRIDENT){
|
||||
if (PreventStabby.getPlugin().getConfigCache().isChanneling_enchant_disabled()) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
event.getLightning().setMetadata("TRIDENT", new FixedMetadataValue(PreventStabby.getPlugin(), event.getLightning().getLocation()));
|
||||
}
|
||||
}
|
||||
}
|
||||
-49
@@ -1,49 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.unspecific;
|
||||
|
||||
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;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import java.util.UUID;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class FishingListener implements Listener {
|
||||
|
||||
/**
|
||||
* Prevents hooking players with disabled pvp with fishing rod
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onFish(org.bukkit.event.player.PlayerFishEvent event) {
|
||||
if (event.getCaught() instanceof Player) {
|
||||
if (PreventStabby.getPlugin().getConfigCache().isAllow_fishing_rod_pull()) return;
|
||||
UUID damager = event.getPlayer().getUniqueId();
|
||||
UUID victim = event.getCaught().getUniqueId();
|
||||
if (damager == victim)
|
||||
return;
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
} else if (event.getCaught() instanceof Tameable) {
|
||||
Tameable tameable = (Tameable) event.getCaught();
|
||||
UUID damager = event.getPlayer().getUniqueId();
|
||||
if (tameable.getOwner() == null)
|
||||
return;
|
||||
|
||||
UUID victim = tameable.getOwner().getUniqueId();
|
||||
|
||||
if (damager == victim)
|
||||
return;
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
-125
@@ -1,125 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.unspecific;
|
||||
|
||||
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;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Tameable;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.util.BoundingBox;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
@PreventStabbyListener
|
||||
public class LavaDumpAndIgniteListener implements Listener {
|
||||
|
||||
/**
|
||||
* Prevents dumping lava and pufferfish bucket near players with pvp off
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onLavaDump(org.bukkit.event.player.PlayerBucketEmptyEvent event) {
|
||||
|
||||
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
|
||||
|
||||
if (!config.isLava_and_fire_stopper_enabled())
|
||||
return;
|
||||
|
||||
if (event.getBucket().equals(Material.LAVA_BUCKET) || event.getBucket().equals(Material.PUFFERFISH_BUCKET)) {
|
||||
Location location = event.getBlockClicked().getLocation();
|
||||
UUID damager = event.getPlayer().getUniqueId();
|
||||
double radius = config.getLava_and_fire_stopper_radius();
|
||||
|
||||
BoundingBox boundingBox = BoundingBoxUtil.getBoundingBox(location, radius);
|
||||
for (Entity entity : location.getWorld().getNearbyEntities(boundingBox)) {
|
||||
if (entity instanceof Player) {
|
||||
UUID victim = entity.getUniqueId();
|
||||
if (victim != damager) {
|
||||
if (PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(victim, damager)) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
|
||||
}
|
||||
} else if (entity instanceof Tameable) {
|
||||
Tameable tameable = (Tameable) entity;
|
||||
if (tameable.getOwner() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
UUID victim = tameable.getOwner().getUniqueId();
|
||||
if (PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(victim, damager)) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevents setting blocks on fire near players with pvp off
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onIgnite(org.bukkit.event.block.BlockIgniteEvent event) {
|
||||
|
||||
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
|
||||
|
||||
if (!config.isLava_and_fire_stopper_enabled())
|
||||
return;
|
||||
|
||||
if (event.getPlayer() == null)
|
||||
return;
|
||||
|
||||
Location location = event.getBlock().getLocation();
|
||||
UUID damager = event.getPlayer().getUniqueId();
|
||||
double radius = config.getLava_and_fire_stopper_radius();
|
||||
BoundingBox boundingBox = BoundingBoxUtil.getBoundingBox(location, radius);
|
||||
for (Entity entity : location.getWorld().getNearbyEntities(boundingBox)) {
|
||||
if (entity instanceof Player) {
|
||||
UUID victim = entity.getUniqueId();
|
||||
if (victim == damager)
|
||||
continue;
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
|
||||
} else if (entity instanceof Tameable) {
|
||||
Tameable tameable = (Tameable) entity;
|
||||
if (tameable.getOwner() == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
UUID victim = tameable.getOwner().getUniqueId();
|
||||
if (victim == damager)
|
||||
continue;
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
-50
@@ -1,50 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.unspecific;
|
||||
|
||||
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;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class LightningBlockIgniteListener implements Listener {
|
||||
|
||||
/**
|
||||
* Lightning strikes from channeling enchant won't ignite blocks if player with pvp off is in radius
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onBlockIgnite(org.bukkit.event.block.BlockIgniteEvent event) {
|
||||
|
||||
if (event.getIgnitingEntity() instanceof LightningStrike && event.getIgnitingEntity().getMetadata("TRIDENT").size() >= 1) {
|
||||
LightningStrike lightningStrike = (LightningStrike) event.getIgnitingEntity();
|
||||
|
||||
for (Entity entity : lightningStrike.getNearbyEntities(2,2,2)) {
|
||||
if (entity instanceof Player) {
|
||||
Player victim = (Player) entity;
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().hasLoginProtection(victim.getUniqueId())) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!PreventStabby.getPlugin().getSmartCache().getPlayerData(victim.getUniqueId()).isPvpEnabled()) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
} else if (entity instanceof Tameable) {
|
||||
Tameable victim = (Tameable) entity;
|
||||
if (victim.getOwner() == null) {
|
||||
return;
|
||||
}
|
||||
if (!PreventStabby.getPlugin().getSmartCache().getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
-64
@@ -1,64 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.listeners.unspecific;
|
||||
|
||||
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;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Tameable;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.util.BoundingBox;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class PlaceWitherRoseListener implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerWitherRosePlace(org.bukkit.event.block.BlockPlaceEvent event) {
|
||||
|
||||
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
|
||||
|
||||
if (!config.isLava_and_fire_stopper_enabled())
|
||||
return;
|
||||
|
||||
if (event.getBlock().getType().equals(Material.WITHER_ROSE)) {
|
||||
Location location = event.getBlockPlaced().getLocation();
|
||||
double radius = config.getLava_and_fire_stopper_radius();
|
||||
BoundingBox boundingBox = BoundingBoxUtil.getBoundingBox(location, radius);
|
||||
for (Entity entity : location.getWorld().getNearbyEntities(boundingBox)) {
|
||||
if (entity instanceof Player) {
|
||||
UUID damager = event.getPlayer().getUniqueId();
|
||||
UUID victim = entity.getUniqueId();
|
||||
if (victim == damager)
|
||||
return;
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
} else if (entity instanceof Tameable) {
|
||||
Tameable tameable = (Tameable) entity;
|
||||
UUID damager = event.getPlayer().getUniqueId();
|
||||
if (tameable.getOwner() == null)
|
||||
return;
|
||||
|
||||
UUID victim = tameable.getOwner().getUniqueId();
|
||||
if (victim == damager)
|
||||
return;
|
||||
|
||||
if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
|
||||
CombatTimer.refreshPlayersCombatTime(damager, victim);
|
||||
else
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,11 +11,12 @@ public class PlayerData {
|
||||
|
||||
private final UUID playerUuid;
|
||||
private long lastAccessTimestamp, combatStartTimestamp, loginTimestamp, teleportTimestamp;
|
||||
private boolean pvpEnabled;
|
||||
private boolean pvpEnabled, lastCombatCheck;
|
||||
|
||||
public PlayerData(UUID playerUuid, boolean pvpEnabled) {
|
||||
this.playerUuid = playerUuid;
|
||||
this.pvpEnabled = pvpEnabled;
|
||||
this.lastCombatCheck = false;
|
||||
this.combatStartTimestamp = Long.MIN_VALUE;
|
||||
this.loginTimestamp = Long.MIN_VALUE;
|
||||
this.teleportTimestamp = Long.MIN_VALUE;
|
||||
@@ -29,7 +30,6 @@ public class PlayerData {
|
||||
/**
|
||||
* Returns true if player has personal pvp enabled, false otherwise.
|
||||
* @return True if player has personal pvp enabled, false otherwise.
|
||||
* @see PlayerManager#getPlayerPvPState(UUID)
|
||||
*/
|
||||
public boolean isPvpEnabled() {
|
||||
return pvpEnabled;
|
||||
@@ -71,6 +71,14 @@ public class PlayerData {
|
||||
return combatStartTimestamp;
|
||||
}
|
||||
|
||||
protected boolean getLastCombatCheckState() {
|
||||
return lastCombatCheck;
|
||||
}
|
||||
|
||||
protected void setLastCombatCheckState(boolean state) {
|
||||
this.lastCombatCheck = state;
|
||||
}
|
||||
|
||||
/**
|
||||
* Marks the player as in combat.
|
||||
*/
|
||||
@@ -79,6 +87,11 @@ public class PlayerData {
|
||||
this.combatStartTimestamp = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
protected void markNotInCombat() {
|
||||
refreshCacheTime();
|
||||
this.combatStartTimestamp = Long.MIN_VALUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the login timestamp for the player.
|
||||
* @param loginTimestamp The login timestamp to set.
|
||||
@@ -109,10 +122,19 @@ public class PlayerData {
|
||||
* @return true if the player is in combat, false otherwise.
|
||||
*/
|
||||
public boolean isInCombat() {
|
||||
refreshCacheTime();
|
||||
return System.currentTimeMillis() - (combatStartTimestamp + (PreventStabby.getPlugin().getConfigCache().combat_time * 1000)) < 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the number of seconds left until combat ends for the player.
|
||||
* @return The number of seconds left until combat ends. -1 if not in combat
|
||||
*/
|
||||
public long getSecondsLeftUntilCombatEnd() {
|
||||
long timeSinceCombatStart = System.currentTimeMillis() - combatStartTimestamp;
|
||||
long combatTimeConfigured = PreventStabby.getPlugin().getConfigCache().combat_time * 1000;
|
||||
return (timeSinceCombatStart < combatTimeConfigured) ? (combatTimeConfigured - timeSinceCombatStart) / 1000 : -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the player has login protection.
|
||||
*
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.players;
|
||||
|
||||
import me.youhavetrouble.preventstabby.PreventStabby;
|
||||
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 org.bukkit.event.entity.EntityDeathEvent;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class PlayerDeathListener implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void onPlayerDeath(EntityDeathEvent event) {
|
||||
|
||||
if (!(event.getEntity() instanceof Player)) return;
|
||||
|
||||
Player player = (Player) event.getEntity();
|
||||
|
||||
PlayerData playerData = PreventStabby.getPlugin().getSmartCache().getPlayerData(player.getUniqueId());
|
||||
if (playerData == null) return;
|
||||
playerData.setCombattime(0);
|
||||
playerData.setLastCombatCheck(false);
|
||||
playerData.setInCombat(false);
|
||||
}
|
||||
|
||||
}
|
||||
+21
-12
@@ -2,19 +2,19 @@ package me.youhavetrouble.preventstabby.players;
|
||||
|
||||
import me.youhavetrouble.preventstabby.PreventStabby;
|
||||
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.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityDeathEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.UUID;
|
||||
|
||||
@PreventStabbyListener
|
||||
public class PlayerJoinAndLeaveListener implements Listener {
|
||||
public class PlayerListener implements Listener {
|
||||
/**
|
||||
* This event is here to get players saved options on join
|
||||
*/
|
||||
@@ -29,21 +29,30 @@ public class PlayerJoinAndLeaveListener implements Listener {
|
||||
* This event is here to save player's data to database
|
||||
* Also punishes players who log out during combat
|
||||
*/
|
||||
@EventHandler
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onPlayerLeave(PlayerQuitEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
|
||||
|
||||
if (!PreventStabby.getPlugin().getConfigCache().punish_for_combat_logout) return;
|
||||
|
||||
PlayerData playerData = PreventStabby.getPlugin().getSmartCache().getPlayerData(player.getUniqueId());
|
||||
|
||||
PlayerData playerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId());
|
||||
if (!playerData.isInCombat()) return;
|
||||
|
||||
player.setHealth(0);
|
||||
if (!PreventStabby.getPlugin().getConfigCache().punish_for_combat_logout_announce) return;
|
||||
PluginMessages.broadcastMessage(player, PreventStabby.getPlugin().getConfigCache().punish_for_combat_logout_message);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void onPlayerTeleport(PlayerTeleportEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
PlayerData playerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId());
|
||||
playerData.setTeleportTimestamp(Instant.now().getEpochSecond());
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void onPlayerDeath(EntityDeathEvent event) {
|
||||
if (!(event.getEntity() instanceof Player player)) return;
|
||||
PlayerData playerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId());
|
||||
if (playerData == null) return;
|
||||
playerData.markNotInCombat();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
package me.youhavetrouble.preventstabby.players;
|
||||
|
||||
import me.youhavetrouble.preventstabby.PreventStabby;
|
||||
import me.youhavetrouble.preventstabby.api.event.PlayerEnterCombatEvent;
|
||||
import me.youhavetrouble.preventstabby.api.event.PlayerLeaveCombatEvent;
|
||||
import me.youhavetrouble.preventstabby.util.DamageCheck;
|
||||
import me.youhavetrouble.preventstabby.util.PluginMessages;
|
||||
import me.youhavetrouble.preventstabby.util.PvpState;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import java.util.UUID;
|
||||
@@ -21,17 +23,50 @@ public class PlayerManager {
|
||||
public PlayerManager(PreventStabby plugin) {
|
||||
this.plugin = plugin;
|
||||
Bukkit.getAsyncScheduler().runAtFixedRate(plugin, (task) -> {
|
||||
// Refresh cache timer if player is online
|
||||
for (PlayerData playerData : playerList.values()) {
|
||||
if (playerData == null) continue;
|
||||
Player player = Bukkit.getPlayer(playerData.getPlayerUuid());
|
||||
if (player != null && player.isOnline()) {
|
||||
playerData.refreshCacheTime();
|
||||
}
|
||||
}
|
||||
// Check for entries that should be invalidated
|
||||
playerList.values().removeIf(PlayerData::isCacheExpired);
|
||||
}, 250, 250, TimeUnit.MILLISECONDS);
|
||||
|
||||
Bukkit.getGlobalRegionScheduler().runAtFixedRate(plugin, (task) -> {
|
||||
for (PlayerData playerData : playerList.values()) {
|
||||
if (playerData == null) continue;
|
||||
Player player = Bukkit.getPlayer(playerData.getPlayerUuid());
|
||||
if (player == null || !player.isOnline()) continue;
|
||||
playerData.refreshCacheTime(); // Refresh cache timer if player is online
|
||||
// leaving combat logic
|
||||
if (playerData.getLastCombatCheckState() && !playerData.isInCombat()) {
|
||||
PlayerLeaveCombatEvent leaveCombatEvent = null;
|
||||
if (PlayerLeaveCombatEvent.getHandlerList().getRegisteredListeners().length > 0) {
|
||||
leaveCombatEvent = new PlayerLeaveCombatEvent(player);
|
||||
Bukkit.getPluginManager().callEvent(leaveCombatEvent);
|
||||
}
|
||||
if (leaveCombatEvent != null && leaveCombatEvent.isCancelled()) {
|
||||
playerData.markInCombat();
|
||||
playerData.setLastCombatCheckState(playerData.isInCombat());
|
||||
continue;
|
||||
}
|
||||
PluginMessages.sendActionBar(player, plugin.getConfigCache().leaving_combat);
|
||||
playerData.setLastCombatCheckState(playerData.isInCombat());
|
||||
continue;
|
||||
}
|
||||
// entering combat logic
|
||||
if (!playerData.getLastCombatCheckState() && playerData.isInCombat()) {
|
||||
PlayerEnterCombatEvent enterCombatEvent = null;
|
||||
if (PlayerEnterCombatEvent.getHandlerList().getRegisteredListeners().length > 0) {
|
||||
enterCombatEvent = new PlayerEnterCombatEvent(player);
|
||||
Bukkit.getPluginManager().callEvent(enterCombatEvent);
|
||||
}
|
||||
if (enterCombatEvent != null && enterCombatEvent.isCancelled()) {
|
||||
playerData.markNotInCombat();
|
||||
playerData.setLastCombatCheckState(playerData.isInCombat());
|
||||
continue;
|
||||
}
|
||||
PluginMessages.sendActionBar(player, plugin.getConfigCache().entering_combat);
|
||||
playerData.setLastCombatCheckState(playerData.isInCombat());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}, 1, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -57,30 +92,12 @@ public class PlayerManager {
|
||||
* @return A {@link DamageCheck.DamageCheckResult} object containing the result of the damage check.
|
||||
*/
|
||||
public DamageCheck.DamageCheckResult canDamage(Entity attacker, Entity victim) {
|
||||
DamageCheck damageCheck = PreventStabby.getPlugin().getDamageUtil();
|
||||
DamageCheck damageCheck = plugin.getDamageUtil();
|
||||
return damageCheck.canDamage(attacker, victim);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines whether the given players have any form of protection enabled, including login and teleport protection.
|
||||
*
|
||||
* @param players The players to check for protection.
|
||||
* @return true if any of the players have protection enabled, false otherwise.
|
||||
* @see PlayerData#isProtected()
|
||||
*/
|
||||
public boolean hasProtection(OfflinePlayer... players) {
|
||||
for (OfflinePlayer offlinePlayer : players) {
|
||||
UUID uuid = offlinePlayer.getUniqueId();
|
||||
PlayerData playerData = playerList.get(uuid);
|
||||
if (playerData == null) continue;
|
||||
if (playerData.isProtected()) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns current forced pvp state.
|
||||
*
|
||||
* @return Current forced pvp state.
|
||||
*/
|
||||
public PvpState getForcedPvpState() {
|
||||
@@ -89,13 +106,18 @@ public class PlayerManager {
|
||||
|
||||
/**
|
||||
* Sets current forced pvp state.
|
||||
*
|
||||
* @param forcedPvpState New forced pvp state.
|
||||
*/
|
||||
public void setForcedPvpState(PvpState forcedPvpState) {
|
||||
this.pvpForcedState = forcedPvpState;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the PlayerData object for the player with the provided UUID. Returns new default if there isn't data.
|
||||
*
|
||||
* @param uuid The UUID of the player.
|
||||
* @return The PlayerData object associated with the player.
|
||||
*/
|
||||
public CompletableFuture<PlayerData> getPlayerData(UUID uuid) {
|
||||
// Try to get data from cache and refresh it
|
||||
PlayerData data = getPlayer(uuid);
|
||||
@@ -105,15 +127,13 @@ public class PlayerManager {
|
||||
}
|
||||
// Get data from database or provide default
|
||||
return CompletableFuture.supplyAsync(() -> {
|
||||
PlayerData playerData = PreventStabby.getPlugin().getSqLite().getPlayerInfo(uuid);
|
||||
PlayerData playerData = plugin.getSqLite().getPlayerInfo(uuid);
|
||||
if (playerData == null) {
|
||||
playerData = new PlayerData(uuid, false);
|
||||
}
|
||||
PreventStabby.getPlugin().getPlayerManager().addPlayer(uuid, playerData);
|
||||
plugin.getPlayerManager().addPlayer(uuid, playerData);
|
||||
return playerData;
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void setPlayerPvpState(UUID uuid, boolean state) {
|
||||
@@ -122,6 +142,13 @@ public class PlayerManager {
|
||||
getPlayer(uuid).setPvpEnabled(state);
|
||||
}
|
||||
// Update the database aswell
|
||||
PreventStabby.getPlugin().getSqLite().updatePlayerInfo(uuid, new PlayerData(uuid, state));
|
||||
plugin.getSqLite().updatePlayerInfo(uuid, new PlayerData(uuid, state));
|
||||
}
|
||||
|
||||
public CompletableFuture<Boolean> togglePlayerPvpState(UUID uuid) {
|
||||
return getPlayerData(uuid).thenApply(playerData -> {
|
||||
playerData.setPvpEnabled(!playerData.isPvpEnabled());
|
||||
return playerData.isPvpEnabled();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.players;
|
||||
|
||||
import me.youhavetrouble.preventstabby.PreventStabby;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
|
||||
import java.time.Instant;
|
||||
|
||||
public class PlayerTeleportListener implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void onPlayerTeleport(PlayerTeleportEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
PlayerData playerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId());
|
||||
playerData.setTeleportTimestamp(Instant.now().getEpochSecond());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.util;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.util.BoundingBox;
|
||||
|
||||
public class BoundingBoxUtil {
|
||||
|
||||
public static BoundingBox getBoundingBox(Location location, double radius) {
|
||||
|
||||
double x1 = location.getX()+radius;
|
||||
double y1 = location.getY()+radius;
|
||||
double z1 = location.getZ()+radius;
|
||||
|
||||
double x2 = location.getX()-radius;
|
||||
double y2 = location.getY()-radius;
|
||||
double z2 = location.getZ()-radius;
|
||||
|
||||
return new BoundingBox(x1, y1, z1, x2, y2, z2);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
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 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(), () -> {
|
||||
if (PlayerEnterCombatEvent.getHandlerList().getRegisteredListeners().length > 0) {
|
||||
Bukkit.getPluginManager().callEvent(playerEnterCombatEvent);
|
||||
if (playerEnterCombatEvent.isCancelled()) return;
|
||||
}
|
||||
|
||||
PreventStabby.getPlugin().getPlayerManager().refreshPlayersCombatTime(uuid);
|
||||
|
||||
if (combattime <= 0) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -24,12 +24,18 @@ public class DamageCheck {
|
||||
Target attackerData = getUuidOfActualPlayer(attacker);
|
||||
Target victimData = getUuidOfActualPlayer(victim);
|
||||
if (attackerData == null || victimData == null) return new DamageCheckResult(true, null, null);
|
||||
return canDamage(attackerData.playerUuid, victimData.playerUuid, victimData.classifier);
|
||||
}
|
||||
|
||||
PlayerData attackerPlayerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(attackerData.playerUuid);
|
||||
PlayerData victimPlayerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(victimData.playerUuid);
|
||||
public DamageCheckResult canDamage(UUID attackerId, UUID victimId, EntityClassifier victimClassifier) {
|
||||
|
||||
if (attackerId == null || victimId == null) return new DamageCheckResult(true, null, null);
|
||||
|
||||
PlayerData attackerPlayerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(attackerId);
|
||||
PlayerData victimPlayerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(victimId);
|
||||
|
||||
if (attackerPlayerData.isProtected()) {
|
||||
String message = switch (victimData.classifier) {
|
||||
String message = switch (victimClassifier) {
|
||||
case PLAYER -> config.cannotAttackTeleportOrSpawnProtectionAttacker;
|
||||
case PET -> config.cannotAttackPetsTeleportOrSpawnProtectionAttacker;
|
||||
case MOUNT -> config.cannotAttackMountsTeleportOrSpawnProtectionAttacker;
|
||||
@@ -39,7 +45,7 @@ public class DamageCheck {
|
||||
}
|
||||
if (victimPlayerData.isProtected()) {
|
||||
String message = null;
|
||||
if (victimData.classifier == EntityClassifier.PLAYER) {
|
||||
if (victimClassifier == EntityClassifier.PLAYER) {
|
||||
message = config.cannotAttackTeleportOrSpawnProtectionVictim;
|
||||
}
|
||||
return new DamageCheckResult(false, message, null);
|
||||
@@ -50,7 +56,6 @@ public class DamageCheck {
|
||||
case ENABLED -> new DamageCheckResult(true, null, null);
|
||||
default -> new DamageCheckResult(true, null, null);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -60,7 +65,7 @@ public class DamageCheck {
|
||||
* @return UUID of the actual player, null if not found
|
||||
*/
|
||||
@Nullable
|
||||
private Target getUuidOfActualPlayer(@NotNull Entity entity) {
|
||||
public Target getUuidOfActualPlayer(@NotNull Entity entity) {
|
||||
if (entity instanceof Player) return new Target(entity.getUniqueId(), EntityClassifier.PLAYER);
|
||||
|
||||
// Get shooter of projectile
|
||||
|
||||
@@ -18,9 +18,10 @@ public class DatabaseSQLite {
|
||||
this.url = url;
|
||||
this.folder = folder;
|
||||
this.logger = logger;
|
||||
createDatabaseFile();
|
||||
}
|
||||
|
||||
public void createDatabaseFile() {
|
||||
private void createDatabaseFile() {
|
||||
this.folder.mkdir();
|
||||
try (Connection conn = DriverManager.getConnection(url)) {
|
||||
if (conn == null) return;
|
||||
@@ -34,30 +35,14 @@ public class DatabaseSQLite {
|
||||
}
|
||||
}
|
||||
|
||||
public boolean testConnection() {
|
||||
try (Connection conn = DriverManager.getConnection(url)) {
|
||||
logger.info("Connection to SQLite has been established.");
|
||||
if (conn != null) return true;
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public PlayerData getPlayerInfo(UUID uuid) {
|
||||
try (Connection conn = DriverManager.getConnection(url)) {
|
||||
try {
|
||||
PreparedStatement insertnewuser = conn.prepareStatement("INSERT OR IGNORE INTO `players` (player_uuid, pvpenabled) VALUES (?, ?)");
|
||||
insertnewuser.setString(1, uuid.toString());
|
||||
insertnewuser.setBoolean(2, PreventStabby.getPlugin().getConfigCache().isPvp_enabled_by_default());
|
||||
insertnewuser.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
if (e.getErrorCode() != 19) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
PreparedStatement statement = conn.prepareStatement("SELECT * FROM `players` WHERE `player_uuid` = ?");
|
||||
PreparedStatement statement = conn.prepareStatement(
|
||||
"INSERT OR IGNORE INTO `players` (player_uuid, pvpenabled) VALUES (?, ?); SELECT * FROM `players` WHERE `player_uuid` = ?;"
|
||||
);
|
||||
statement.setString(1, uuid.toString());
|
||||
statement.setBoolean(2, PreventStabby.getPlugin().getConfigCache().pvp_enabled_by_default);
|
||||
statement.setString(3, uuid.toString());
|
||||
statement.executeQuery();
|
||||
ResultSet result = statement.getResultSet();
|
||||
boolean state = result.getBoolean("pvpenabled");
|
||||
|
||||
@@ -2,7 +2,6 @@ package me.youhavetrouble.preventstabby.util;
|
||||
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import me.youhavetrouble.preventstabby.PreventStabby;
|
||||
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||
@@ -15,7 +14,6 @@ import java.util.UUID;
|
||||
public class PluginMessages {
|
||||
|
||||
public static final MiniMessage MINIMESSAGE = MiniMessage.miniMessage();
|
||||
private static final BukkitAudiences audiences = PreventStabby.getAudiences();
|
||||
|
||||
public static Component parseMessage(String message) {
|
||||
message = makeColorsWork('&', message);
|
||||
@@ -24,8 +22,7 @@ public class PluginMessages {
|
||||
}
|
||||
|
||||
public static Component parseMessage(CommandSender sender,String message) {
|
||||
if (sender instanceof Player && isPlaceholderApiEnabled()) {
|
||||
Player player = (Player) sender;
|
||||
if (sender instanceof Player player && isPlaceholderApiEnabled()) {
|
||||
message = PlaceholderAPI.setPlaceholders(player, message);
|
||||
}
|
||||
return parseMessage(message);
|
||||
@@ -37,13 +34,13 @@ public class PluginMessages {
|
||||
|
||||
public static void sendMessage(CommandSender sender, String message) {
|
||||
if ("".equals(message)) return;
|
||||
audiences.sender(sender).sendMessage(parseMessage(sender, message));
|
||||
sender.sendMessage(parseMessage(sender, message));
|
||||
}
|
||||
|
||||
public static void sendActionBar(Player player, String message) {
|
||||
if ("".equals(message)) return;
|
||||
Component parsedMessage = parseMessage(player, message);
|
||||
audiences.player(player).sendActionBar(parsedMessage);
|
||||
player.sendActionBar(parsedMessage);
|
||||
}
|
||||
|
||||
public static void sendActionBar(UUID uuid, String message) {
|
||||
@@ -64,12 +61,12 @@ public class PluginMessages {
|
||||
if (PreventStabby.getPlugin().getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
|
||||
message = PlaceholderAPI.setPlaceholders(player, message);
|
||||
}
|
||||
audiences.all().sendMessage(parseMessage(message));
|
||||
Bukkit.broadcast(parseMessage(message));
|
||||
}
|
||||
|
||||
public static void broadcastMessage(String message) {
|
||||
if ("".equals(message)) return;
|
||||
audiences.all().sendMessage(parseMessage(message));
|
||||
Bukkit.broadcast(parseMessage(message));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
package me.youhavetrouble.preventstabby.util;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target({ElementType.TYPE})
|
||||
|
||||
public @interface PreventStabbyListener {}
|
||||
@@ -1,73 +0,0 @@
|
||||
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();
|
||||
|
||||
Set<UUID> playerPassengersWithPvpEnabled = new HashSet<>();
|
||||
|
||||
boolean hasPlayerPassengers = false;
|
||||
for (Entity passenger : mount.getPassengers()) {
|
||||
if (!(passenger instanceof Player)) continue;
|
||||
Player player = (Player) passenger;
|
||||
hasPlayerPassengers = true;
|
||||
if (PreventStabby.getPlugin().getPlayerManager().getPlayerPvPState(player.getUniqueId()))
|
||||
playerPassengersWithPvpEnabled.add(player.getUniqueId());
|
||||
}
|
||||
|
||||
if (!hasPlayerPassengers) return false;
|
||||
|
||||
if (!PreventStabby.getPlugin().getPlayerManager().getPlayerPvPState(attacker)) {
|
||||
PluginMessages.sendActionBar(attacker, config.getCannot_attack_mounts_attacker());
|
||||
return true;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user