can't change pvp state in combat and misc wolf fixes

This commit is contained in:
YouHaveTrouble
2020-08-21 15:46:47 +02:00
parent aab96c7a21
commit b9a4286a64
12 changed files with 68 additions and 14 deletions
@@ -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!");
}
}
@@ -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);
@@ -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());
@@ -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());
@@ -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);
@@ -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;
}
}
}
+1
View File
@@ -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!"