mirror of
https://github.com/YouHaveTrouble/PreventStabby.git
synced 2026-05-12 05:16:55 +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;
|
package eu.endermite.togglepvp.commands;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
|
import eu.endermite.togglepvp.util.CombatTimer;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import net.md_5.bungee.api.ChatMessageType;
|
import net.md_5.bungee.api.ChatMessageType;
|
||||||
import net.md_5.bungee.api.chat.BaseComponent;
|
import net.md_5.bungee.api.chat.BaseComponent;
|
||||||
@@ -25,6 +26,12 @@ public class PvpToggleCommand {
|
|||||||
if (args.length == 1) {
|
if (args.length == 1) {
|
||||||
if (sender instanceof Player) {
|
if (sender instanceof Player) {
|
||||||
Player player = (Player) sender;
|
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());
|
boolean currentState = TogglePvP.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId());
|
||||||
|
|
||||||
String message = "";
|
String message = "";
|
||||||
@@ -45,6 +52,14 @@ public class PvpToggleCommand {
|
|||||||
sender.spigot().sendMessage(component);
|
sender.spigot().sendMessage(component);
|
||||||
return;
|
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 {
|
try {
|
||||||
Player player = Bukkit.getPlayer(args[1]);
|
Player player = Bukkit.getPlayer(args[1]);
|
||||||
boolean currentState = TogglePvP.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId());
|
boolean currentState = TogglePvP.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId());
|
||||||
@@ -79,6 +94,10 @@ public class PvpToggleCommand {
|
|||||||
if (args.length == 1) {
|
if (args.length == 1) {
|
||||||
if (sender instanceof Player) {
|
if (sender instanceof Player) {
|
||||||
Player player = (Player) sender;
|
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);
|
TogglePvP.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true);
|
||||||
String message = PluginMessages.parseMessage(TogglePvP.getPlugin().getConfigCache().getPvp_enabled());
|
String message = PluginMessages.parseMessage(TogglePvP.getPlugin().getConfigCache().getPvp_enabled());
|
||||||
BaseComponent[] component = TextComponent.fromLegacyText(message);
|
BaseComponent[] component = TextComponent.fromLegacyText(message);
|
||||||
@@ -93,6 +112,13 @@ public class PvpToggleCommand {
|
|||||||
sender.spigot().sendMessage(component);
|
sender.spigot().sendMessage(component);
|
||||||
return;
|
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 {
|
try {
|
||||||
Player player = Bukkit.getPlayer(args[1]);
|
Player player = Bukkit.getPlayer(args[1]);
|
||||||
String message = TogglePvP.getPlugin().getConfigCache().getPvp_enabled_other();
|
String message = TogglePvP.getPlugin().getConfigCache().getPvp_enabled_other();
|
||||||
@@ -120,6 +146,10 @@ public class PvpToggleCommand {
|
|||||||
if (args.length == 1) {
|
if (args.length == 1) {
|
||||||
if (sender instanceof Player) {
|
if (sender instanceof Player) {
|
||||||
Player player = (Player) sender;
|
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);
|
TogglePvP.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), false);
|
||||||
String message = PluginMessages.parseMessage(TogglePvP.getPlugin().getConfigCache().getPvp_disabled());
|
String message = PluginMessages.parseMessage(TogglePvP.getPlugin().getConfigCache().getPvp_disabled());
|
||||||
BaseComponent[] component = TextComponent.fromLegacyText(message);
|
BaseComponent[] component = TextComponent.fromLegacyText(message);
|
||||||
@@ -134,6 +164,13 @@ public class PvpToggleCommand {
|
|||||||
sender.spigot().sendMessage(component);
|
sender.spigot().sendMessage(component);
|
||||||
return;
|
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 {
|
try {
|
||||||
Player player = Bukkit.getPlayer(args[1]);
|
Player player = Bukkit.getPlayer(args[1]);
|
||||||
String message = TogglePvP.getPlugin().getConfigCache().getPvp_disabled_other();
|
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 punish_for_combat_logout_message;
|
||||||
@Getter private final String entering_combat;
|
@Getter private final String entering_combat;
|
||||||
@Getter private final String leaving_combat;
|
@Getter private final String leaving_combat;
|
||||||
|
@Getter final String cant_do_that_during_combat;
|
||||||
|
|
||||||
public ConfigCache() {
|
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.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.entering_combat = config.getString("messages.entering_combat", "&cEntering combat");
|
||||||
this.leaving_combat = config.getString("messages.leaving_combat", "&cLeaving 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());
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
||||||
} else if (entity instanceof Wolf) {
|
} else if (entity instanceof Wolf) {
|
||||||
Wolf victim = (Wolf) entity;
|
Wolf victim = (Wolf) entity;
|
||||||
if (victim.getOwner() == null) {
|
if (victim.getOwner() == null || victim.getOwner() == damager) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||||
|
|||||||
@@ -42,10 +42,10 @@ public class FishingListener implements Listener {
|
|||||||
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
CombatTimer.refreshPlayersCombatTime(damager.getUniqueId(), victim.getUniqueId());
|
||||||
} else if (event.getCaught() instanceof Wolf) {
|
} else if (event.getCaught() instanceof Wolf) {
|
||||||
Wolf victim = (Wolf) event.getCaught();
|
Wolf victim = (Wolf) event.getCaught();
|
||||||
if (victim.getOwner() == null) {
|
Player damager = event.getPlayer();
|
||||||
|
if (victim.getOwner() == null || victim.getOwner() == damager) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Player damager = event.getPlayer();
|
|
||||||
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||||
if (!damagerPvpEnabled) {
|
if (!damagerPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|||||||
+1
-1
@@ -113,7 +113,7 @@ public class LavaDumpAndIgniteListener implements Listener {
|
|||||||
}
|
}
|
||||||
} else if (entity instanceof Wolf) {
|
} else if (entity instanceof Wolf) {
|
||||||
Wolf victim = (Wolf) entity;
|
Wolf victim = (Wolf) entity;
|
||||||
if (victim.getOwner() == null) {
|
if (victim.getOwner() == null || victim.getOwner() == damager) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||||
|
|||||||
+2
-2
@@ -51,10 +51,10 @@ public class PlaceWitherRoseListener implements Listener {
|
|||||||
}
|
}
|
||||||
} else if (entity instanceof Wolf) {
|
} else if (entity instanceof Wolf) {
|
||||||
Wolf victim = (Wolf) entity;
|
Wolf victim = (Wolf) entity;
|
||||||
if (victim.getOwner() == null) {
|
Player damager = event.getPlayer();
|
||||||
|
if (victim.getOwner() == null || victim.getOwner() == damager) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Player damager = event.getPlayer();
|
|
||||||
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||||
if (!damagerPvpEnabled) {
|
if (!damagerPvpEnabled) {
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
||||||
|
|||||||
+2
-2
@@ -24,10 +24,10 @@ public class PlayerHitWolfWithProjectile implements Listener {
|
|||||||
Projectile projectile = (Projectile) event.getDamager();
|
Projectile projectile = (Projectile) event.getDamager();
|
||||||
if (projectile.getShooter() instanceof Player) {
|
if (projectile.getShooter() instanceof Player) {
|
||||||
Wolf victim = (Wolf) event.getEntity();
|
Wolf victim = (Wolf) event.getEntity();
|
||||||
if (victim.getOwner() == null) {
|
Player damager = (Player) projectile.getShooter();
|
||||||
|
if (victim.getOwner() == null || victim.getOwner() == damager) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Player damager = (Player) projectile.getShooter();
|
|
||||||
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||||
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||||
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
||||||
|
|||||||
@@ -30,6 +30,9 @@ public class WolfHitByExplosionListener implements Listener {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
UUID damageruuid = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
|
UUID damageruuid = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
|
||||||
|
if (victim.getOwner().getUniqueId() == damageruuid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||||
boolean damagerPvpEnabled = (boolean) SmartCache.getPlayerData(damageruuid).get("pvpenabled");
|
boolean damagerPvpEnabled = (boolean) SmartCache.getPlayerData(damageruuid).get("pvpenabled");
|
||||||
if (!damagerPvpEnabled) {
|
if (!damagerPvpEnabled) {
|
||||||
|
|||||||
@@ -17,12 +17,13 @@ public class WolfHitByFireworkListener implements Listener {
|
|||||||
public void onFireworkDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
public void onFireworkDamage(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||||
if (event.getDamager() instanceof Firework && event.getEntity() instanceof Wolf) {
|
if (event.getDamager() instanceof Firework && event.getEntity() instanceof Wolf) {
|
||||||
Wolf victim = (Wolf) event.getEntity();
|
Wolf victim = (Wolf) event.getEntity();
|
||||||
if (victim.getOwner() == null) {
|
if (victim.getOwner() == null)
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
Firework firework = (Firework) event.getDamager();
|
Firework firework = (Firework) event.getDamager();
|
||||||
if (firework.getShooter() instanceof Player) {
|
if (firework.getShooter() instanceof Player) {
|
||||||
Player damager = (Player) firework.getShooter();
|
Player damager = (Player) firework.getShooter();
|
||||||
|
if (victim.getOwner() == damager)
|
||||||
|
return;
|
||||||
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getOwner().getUniqueId());
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getOwner().getUniqueId());
|
||||||
if (!damagerPvpEnabled) {
|
if (!damagerPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|||||||
+2
-4
@@ -48,10 +48,8 @@ public class WolfHitBySplashPotionListener implements Listener {
|
|||||||
if (entity instanceof Wolf) {
|
if (entity instanceof Wolf) {
|
||||||
Player damager = (Player) event.getEntity().getShooter();
|
Player damager = (Player) event.getEntity().getShooter();
|
||||||
Wolf victim = (Wolf) entity;
|
Wolf victim = (Wolf) entity;
|
||||||
|
if (victim.getOwner() == null || victim.getOwner() == damager)
|
||||||
if (victim.getOwner() == null) {
|
continue;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||||
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||||
|
|||||||
@@ -24,4 +24,16 @@ public class CombatTimer {
|
|||||||
refreshPlayersCombatTime(victim_uuid);
|
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."
|
pvp_disabled_others: "&cYou've disabled %player%'s PvP."
|
||||||
entering_combat: "&cEntering combat"
|
entering_combat: "&cEntering combat"
|
||||||
leaving_combat: "&cLeaving 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