mirror of
https://github.com/YouHaveTrouble/PreventStabby.git
synced 2026-05-12 13:26:56 +00:00
can't change pvp state in combat and misc wolf fixes
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package eu.endermite.togglepvp.commands;
|
||||
|
||||
import eu.endermite.togglepvp.TogglePvP;
|
||||
import eu.endermite.togglepvp.util.CombatTimer;
|
||||
import eu.endermite.togglepvp.util.PluginMessages;
|
||||
import net.md_5.bungee.api.ChatMessageType;
|
||||
import net.md_5.bungee.api.chat.BaseComponent;
|
||||
@@ -25,6 +26,12 @@ public class PvpToggleCommand {
|
||||
if (args.length == 1) {
|
||||
if (sender instanceof Player) {
|
||||
Player player = (Player) sender;
|
||||
|
||||
if (CombatTimer.isInCombat(player.getUniqueId())) {
|
||||
sender.sendMessage(PluginMessages.parseMessage(TogglePvP.getPlugin().getConfigCache().getCant_do_that_during_combat()));
|
||||
return;
|
||||
}
|
||||
|
||||
boolean currentState = TogglePvP.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId());
|
||||
|
||||
String message = "";
|
||||
@@ -45,6 +52,14 @@ public class PvpToggleCommand {
|
||||
sender.spigot().sendMessage(component);
|
||||
return;
|
||||
}
|
||||
|
||||
if (sender instanceof Player) {
|
||||
Player player = (Player) sender;
|
||||
if (CombatTimer.isInCombat(player.getUniqueId())) {
|
||||
sender.sendMessage(PluginMessages.parseMessage(TogglePvP.getPlugin().getConfigCache().getCant_do_that_during_combat()));
|
||||
return;
|
||||
}
|
||||
}
|
||||
try {
|
||||
Player player = Bukkit.getPlayer(args[1]);
|
||||
boolean currentState = TogglePvP.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId());
|
||||
@@ -79,6 +94,10 @@ public class PvpToggleCommand {
|
||||
if (args.length == 1) {
|
||||
if (sender instanceof Player) {
|
||||
Player player = (Player) sender;
|
||||
if (CombatTimer.isInCombat(player.getUniqueId())) {
|
||||
sender.sendMessage(PluginMessages.parseMessage(TogglePvP.getPlugin().getConfigCache().getCant_do_that_during_combat()));
|
||||
return;
|
||||
}
|
||||
TogglePvP.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true);
|
||||
String message = PluginMessages.parseMessage(TogglePvP.getPlugin().getConfigCache().getPvp_enabled());
|
||||
BaseComponent[] component = TextComponent.fromLegacyText(message);
|
||||
@@ -93,6 +112,13 @@ public class PvpToggleCommand {
|
||||
sender.spigot().sendMessage(component);
|
||||
return;
|
||||
}
|
||||
if (sender instanceof Player) {
|
||||
Player player = (Player) sender;
|
||||
if (CombatTimer.isInCombat(player.getUniqueId())) {
|
||||
sender.sendMessage(PluginMessages.parseMessage(TogglePvP.getPlugin().getConfigCache().getCant_do_that_during_combat()));
|
||||
return;
|
||||
}
|
||||
}
|
||||
try {
|
||||
Player player = Bukkit.getPlayer(args[1]);
|
||||
String message = TogglePvP.getPlugin().getConfigCache().getPvp_enabled_other();
|
||||
@@ -120,6 +146,10 @@ public class PvpToggleCommand {
|
||||
if (args.length == 1) {
|
||||
if (sender instanceof Player) {
|
||||
Player player = (Player) sender;
|
||||
if (CombatTimer.isInCombat(player.getUniqueId())) {
|
||||
sender.sendMessage(PluginMessages.parseMessage(TogglePvP.getPlugin().getConfigCache().getCant_do_that_during_combat()));
|
||||
return;
|
||||
}
|
||||
TogglePvP.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), false);
|
||||
String message = PluginMessages.parseMessage(TogglePvP.getPlugin().getConfigCache().getPvp_disabled());
|
||||
BaseComponent[] component = TextComponent.fromLegacyText(message);
|
||||
@@ -134,6 +164,13 @@ public class PvpToggleCommand {
|
||||
sender.spigot().sendMessage(component);
|
||||
return;
|
||||
}
|
||||
if (sender instanceof Player) {
|
||||
Player player = (Player) sender;
|
||||
if (CombatTimer.isInCombat(player.getUniqueId())) {
|
||||
sender.sendMessage(PluginMessages.parseMessage(TogglePvP.getPlugin().getConfigCache().getCant_do_that_during_combat()));
|
||||
return;
|
||||
}
|
||||
}
|
||||
try {
|
||||
Player player = Bukkit.getPlayer(args[1]);
|
||||
String message = TogglePvP.getPlugin().getConfigCache().getPvp_disabled_other();
|
||||
|
||||
@@ -27,6 +27,7 @@ public class ConfigCache {
|
||||
@Getter private final String punish_for_combat_logout_message;
|
||||
@Getter private final String entering_combat;
|
||||
@Getter private final String leaving_combat;
|
||||
@Getter final String cant_do_that_during_combat;
|
||||
|
||||
public ConfigCache() {
|
||||
|
||||
@@ -60,6 +61,7 @@ public class ConfigCache {
|
||||
this.pvp_disabled_other = config.getString("messages.pvp_disabled_others", "&cYou've disabled %player%'s PvP.");
|
||||
this.entering_combat = config.getString("messages.entering_combat", "&cEntering combat");
|
||||
this.leaving_combat = config.getString("messages.leaving_combat", "&cLeaving combat");
|
||||
this.cant_do_that_during_combat = config.getString("messages.cant_do_that_during_combat", "&cYou can't do that while in combat!");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -62,7 +62,7 @@ public class AreaEffectCloudApplyListener implements Listener {
|
||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
||||
} else if (entity instanceof Wolf) {
|
||||
Wolf victim = (Wolf) entity;
|
||||
if (victim.getOwner() == null) {
|
||||
if (victim.getOwner() == null || victim.getOwner() == damager) {
|
||||
return;
|
||||
}
|
||||
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||
|
||||
@@ -42,10 +42,10 @@ public class FishingListener implements Listener {
|
||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
||||
} else if (event.getCaught() instanceof Wolf) {
|
||||
Wolf victim = (Wolf) event.getCaught();
|
||||
if (victim.getOwner() == null) {
|
||||
Player damager = event.getPlayer();
|
||||
if (victim.getOwner() == null || victim.getOwner() == damager) {
|
||||
return;
|
||||
}
|
||||
Player damager = event.getPlayer();
|
||||
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||
if (!damagerPvpEnabled) {
|
||||
event.setCancelled(true);
|
||||
|
||||
+1
-1
@@ -113,7 +113,7 @@ public class LavaDumpAndIgniteListener implements Listener {
|
||||
}
|
||||
} else if (entity instanceof Wolf) {
|
||||
Wolf victim = (Wolf) entity;
|
||||
if (victim.getOwner() == null) {
|
||||
if (victim.getOwner() == null || victim.getOwner() == damager) {
|
||||
return;
|
||||
}
|
||||
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||
|
||||
+2
-2
@@ -51,10 +51,10 @@ public class PlaceWitherRoseListener implements Listener {
|
||||
}
|
||||
} else if (entity instanceof Wolf) {
|
||||
Wolf victim = (Wolf) entity;
|
||||
if (victim.getOwner() == null) {
|
||||
Player damager = event.getPlayer();
|
||||
if (victim.getOwner() == null || victim.getOwner() == damager) {
|
||||
return;
|
||||
}
|
||||
Player damager = event.getPlayer();
|
||||
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||
if (!damagerPvpEnabled) {
|
||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
||||
|
||||
+2
-2
@@ -24,10 +24,10 @@ public class PlayerHitWolfWithProjectile implements Listener {
|
||||
Projectile projectile = (Projectile) event.getDamager();
|
||||
if (projectile.getShooter() instanceof Player) {
|
||||
Wolf victim = (Wolf) event.getEntity();
|
||||
if (victim.getOwner() == null) {
|
||||
Player damager = (Player) projectile.getShooter();
|
||||
if (victim.getOwner() == null || victim.getOwner() == damager) {
|
||||
return;
|
||||
}
|
||||
Player damager = (Player) projectile.getShooter();
|
||||
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
||||
|
||||
@@ -30,6 +30,9 @@ public class WolfHitByExplosionListener implements Listener {
|
||||
}
|
||||
try {
|
||||
UUID damageruuid = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
|
||||
if (victim.getOwner().getUniqueId() == damageruuid) {
|
||||
return;
|
||||
}
|
||||
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||
boolean damagerPvpEnabled = (boolean) SmartCache.getPlayerData(damageruuid).get("pvpenabled");
|
||||
if (!damagerPvpEnabled) {
|
||||
|
||||
@@ -17,12 +17,13 @@ public class WolfHitByFireworkListener implements Listener {
|
||||
public void onFireworkDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||
if (event.getDamager() instanceof Firework && event.getEntity() instanceof Wolf) {
|
||||
Wolf victim = (Wolf) event.getEntity();
|
||||
if (victim.getOwner() == null) {
|
||||
if (victim.getOwner() == null)
|
||||
return;
|
||||
}
|
||||
Firework firework = (Firework) event.getDamager();
|
||||
if (firework.getShooter() instanceof Player) {
|
||||
Player damager = (Player) firework.getShooter();
|
||||
if (victim.getOwner() == damager)
|
||||
return;
|
||||
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getOwner().getUniqueId());
|
||||
if (!damagerPvpEnabled) {
|
||||
event.setCancelled(true);
|
||||
|
||||
+2
-4
@@ -48,10 +48,8 @@ public class WolfHitBySplashPotionListener implements Listener {
|
||||
if (entity instanceof Wolf) {
|
||||
Player damager = (Player) event.getEntity().getShooter();
|
||||
Wolf victim = (Wolf) entity;
|
||||
|
||||
if (victim.getOwner() == null) {
|
||||
return;
|
||||
}
|
||||
if (victim.getOwner() == null || victim.getOwner() == damager)
|
||||
continue;
|
||||
|
||||
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||
|
||||
@@ -24,4 +24,16 @@ public class CombatTimer {
|
||||
refreshPlayersCombatTime(victim_uuid);
|
||||
}
|
||||
|
||||
public static boolean isInCombat(UUID uuid) {
|
||||
try {
|
||||
long combattimer = (long) SmartCache.getPlayerData(uuid).get("combattime");
|
||||
long now = Instant.now().getEpochSecond();
|
||||
return combattimer > now;
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -38,3 +38,4 @@ messages:
|
||||
pvp_disabled_others: "&cYou've disabled %player%'s PvP."
|
||||
entering_combat: "&cEntering combat"
|
||||
leaving_combat: "&cLeaving combat"
|
||||
cant_do_that_during_combat: "&cYou can't do that while in combat!"
|
||||
|
||||
Reference in New Issue
Block a user