Skip to content

Commit

Permalink
Clean death message
Browse files Browse the repository at this point in the history
  • Loading branch information
games647 committed Aug 8, 2016
1 parent b9877e1 commit d2eb62a
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 6 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<packaging>jar</packaging>

<name>HealthName</name>
<version>0.2.3</version>
<version>0.2.4</version>
<description>Sponge plugin that displays the health of a mob or player above their head</description>
<url>https://github.com/games647/HealthName</url>

Expand Down
46 changes: 43 additions & 3 deletions src/main/java/com/github/games647/healthname/DamageListener.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
package com.github.games647.healthname;

import com.github.games647.healthname.config.Config;

import java.util.Optional;

import org.spongepowered.api.data.key.Keys;
import org.spongepowered.api.entity.Entity;
import org.spongepowered.api.entity.EntityTypes;
import org.spongepowered.api.entity.living.Living;
import org.spongepowered.api.entity.living.player.Player;
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.entity.DamageEntityEvent;
import org.spongepowered.api.event.entity.DestructEntityEvent;
import org.spongepowered.api.event.entity.HealEntityEvent;
import org.spongepowered.api.scoreboard.Scoreboard;
import org.spongepowered.api.scoreboard.Team;
import org.spongepowered.api.scoreboard.displayslot.DisplaySlots;
import org.spongepowered.api.scoreboard.objective.Objective;
import org.spongepowered.api.text.LiteralText;
import org.spongepowered.api.text.Text;
import org.spongepowered.api.text.Text.Builder;
import org.spongepowered.api.text.format.TextColor;
import org.spongepowered.api.text.format.TextColors;

Expand Down Expand Up @@ -49,6 +52,44 @@ public void onEntityDamage(DamageEntityEvent damageEntityEvent) {
}
}

@Listener
public void onEntityDeath(DestructEntityEvent.Death deathEntityEvent) {
Living targetEntity = deathEntityEvent.getTargetEntity();

if (!deathEntityEvent.isMessageCancelled()) {
//clear entity properties
if (targetEntity.getType() == EntityTypes.PLAYER) {
Player targetPlayer = (Player) targetEntity;
Scoreboard playerScoreboard = targetPlayer.getScoreboard();

String playerName = targetPlayer.getName();

Optional<Team> optionalTeam = playerScoreboard.getTeam(playerName);
if (optionalTeam.isPresent()) {
optionalTeam.get().unregister();
}
} else if (targetEntity.supports(Keys.DISPLAY_NAME)) {
targetEntity.remove(Keys.DISPLAY_NAME);
}

//clean message
Text oldMessage = deathEntityEvent.getMessage();
Builder newMessageBuilder = Text.builder(oldMessage, "");
for (Text child : oldMessage.getChildren()) {
if (child instanceof LiteralText) {
String content = ((LiteralText) child).getContent();
String newContent = content.replace(plugin.getConfig().getDisplayChar() + "", "");
newMessageBuilder.append(Text.builder(child, newContent).build());
continue;
}

newMessageBuilder.append(child);
}

deathEntityEvent.setMessage(newMessageBuilder.build());
}
}

private void updateHealth(double maxHealth, double newHealth, Entity targetEntity) {
Text healthMessage = generateHealthMessage(newHealth, maxHealth);
if (targetEntity.getType() == EntityTypes.PLAYER) {
Expand Down Expand Up @@ -105,8 +146,7 @@ private Text generateHealthMessage(double currentHealth, double maxHealth) {
//10-steps -> 1=10% 2=20% 3=30%
int steps = (int) Math.ceil(percent / 10);

Config config = plugin.getConfig();
char displayChar = config.getDisplayChar();
char displayChar = plugin.getConfig().getDisplayChar();

TextColor highlightColor = getHealthColor(steps);

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/github/games647/healthname/HealthName.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
import org.spongepowered.api.text.Text;
import org.spongepowered.api.text.format.TextColors;

@Updatifier(repoOwner = "games647", repoName = "HealthName", version = "0.2.3")
@Plugin(id = "healthname", name = "HealthName", version = "0.2.3"
@Updatifier(repoOwner = "games647", repoName = "HealthName", version = "0.2.4")
@Plugin(id = "healthname", name = "HealthName", version = "0.2.4"
, url = "https://github.com/games647/HealthName"
, description = "A Sponge minecraft server plugin for displaying the health above an entity.")
public class HealthName {
Expand Down

0 comments on commit d2eb62a

Please sign in to comment.