Skip to content

Commit

Permalink
Add combat debug info for player versus player combat /mmodebug
Browse files Browse the repository at this point in the history
  • Loading branch information
nossr50 committed Mar 17, 2022
1 parent 0bf3f98 commit 5ea18e8
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 1 deletion.
2 changes: 2 additions & 0 deletions Changelog.txt
@@ -1,3 +1,5 @@
Version 2.1.211
Added /mmodebug info for players hitting other players
Version 2.1.210
Fixed a memory leak involving mob metadata
Fixed a potential null pointer exception in InventoryListener
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Expand Up @@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.gmail.nossr50.mcMMO</groupId>
<artifactId>mcMMO</artifactId>
<version>2.1.210</version>
<version>2.1.211-SNAPSHOT</version>
<name>mcMMO</name>
<url>https://github.com/mcMMO-Dev/mcMMO</url>
<scm>
Expand Down
58 changes: 58 additions & 0 deletions src/main/java/com/gmail/nossr50/listeners/EntityListener.java
Expand Up @@ -28,9 +28,11 @@
import com.gmail.nossr50.util.skills.SkillActivationType;
import com.gmail.nossr50.worldguard.WorldGuardManager;
import com.gmail.nossr50.worldguard.WorldGuardUtils;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.OfflinePlayer;
import org.bukkit.attribute.Attribute;
import org.bukkit.block.Block;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.*;
Expand Down Expand Up @@ -453,6 +455,62 @@ public void onEntityDamageMonitor(EntityDamageByEntityEvent entityDamageEvent) {
if(entityDamageEvent.getDamager() instanceof Projectile) {
CombatUtils.cleanupArrowMetadata((Projectile) entityDamageEvent.getDamager());
}

if(entityDamageEvent.getEntity() instanceof Player player && entityDamageEvent.getDamager() instanceof Player) {
McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
if(mmoPlayer != null) {
if(mmoPlayer.isDebugMode()) {
player.sendMessage(ChatColor.GOLD + "(mmodebug start of combat report) EntityDamageByEntityEvent DEBUG Info:");
player.sendMessage("You are being damaged by another player in this event");
player.sendMessage("Damage: " + entityDamageEvent.getDamage());
player.sendMessage("Final damage: " + entityDamageEvent.getFinalDamage());
player.sendMessage("Your max health: "+player.getAttribute(Attribute.GENERIC_MAX_HEALTH));
player.sendMessage("Your current health: "+player.getHealth());

if(entityDamageEvent instanceof FakeEntityDamageByEntityEvent) {
player.sendMessage("This report is for a fake damage event used by mcMMO to test a players permission to hurt another");
}

if(entityDamageEvent instanceof McMMOEntityDamageByRuptureEvent) {
player.sendMessage("This report is for a Rupture damage event, which is sent out by mcMMO");
}

if(entityDamageEvent.isCancelled()) {
player.sendMessage("Event was cancelled, which means no damage should be done.");
}

player.sendMessage(ChatColor.RED + "(mmodebug end of combat report)");
}
}
}

if(entityDamageEvent.getDamager() instanceof Player player && entityDamageEvent.getEntity() instanceof Player otherPlayer) {
McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
if(mmoPlayer != null) {
if(mmoPlayer.isDebugMode()) {
player.sendMessage(ChatColor.GOLD + "(mmodebug start of combat report) EntityDamageByEntityEvent DEBUG Info:");
player.sendMessage("You are dealing damage to another player in this event");
player.sendMessage("Damage: " + entityDamageEvent.getDamage());
player.sendMessage("Final damage: " + entityDamageEvent.getFinalDamage());
player.sendMessage("Target players max health: "+otherPlayer.getAttribute(Attribute.GENERIC_MAX_HEALTH));
player.sendMessage("Target players current health: "+otherPlayer.getHealth());

if(entityDamageEvent instanceof FakeEntityDamageByEntityEvent) {
player.sendMessage("This report is for a fake damage event used by mcMMO to test a players permission to hurt another");
}

if(entityDamageEvent instanceof McMMOEntityDamageByRuptureEvent) {
player.sendMessage("This report is for a Rupture damage event, which is sent out by mcMMO");
}

if(entityDamageEvent.isCancelled()) {
player.sendMessage("Event was cancelled, which means no damage should be done.");
}

player.sendMessage(ChatColor.RED + "(mmodebug end of combat report)");
}
}
}
}

public boolean checkParties(Cancellable event, Player defendingPlayer, Player attackingPlayer) {
Expand Down

0 comments on commit 5ea18e8

Please sign in to comment.