Skip to content

Commit 7c3bfb5

Browse files
committed
fix 弓でダメージを与えたときに相手のダメージが表示されないので表示されるように
1 parent 5837a3b commit 7c3bfb5

File tree

3 files changed

+41
-75
lines changed

3 files changed

+41
-75
lines changed

src/main/java/com/github/elic0de/thejpspit/listener/EventListener.java

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@
99
import com.github.elic0de.thejpspit.util.NoCollisionUtil;
1010
import com.github.elic0de.thejpspit.villager.VillagerNPC;
1111
import com.github.elic0de.thejpspit.villager.VillagerNPCManager;
12+
import net.md_5.bungee.api.ChatMessageType;
13+
import net.md_5.bungee.api.chat.ComponentBuilder;
1214
import org.bukkit.Bukkit;
15+
import org.bukkit.ChatColor;
1316
import org.bukkit.GameMode;
1417
import org.bukkit.Location;
1518
import org.bukkit.Material;
@@ -144,7 +147,6 @@ public void onDamage(EntityDamageByEntityEvent event) {
144147
event.setCancelled(true);
145148
return;
146149
}
147-
pitPlayer.showHealth(victimPitPlayer);
148150
victimPitPlayer.setLastDamager(pitPlayer);
149151
}
150152
if (event.getDamager() instanceof Arrow) {
@@ -153,12 +155,43 @@ public void onDamage(EntityDamageByEntityEvent event) {
153155
}
154156
}
155157

158+
@EventHandler
159+
public void onFight(EntityDamageByEntityEvent event) {
160+
if (event.getEntity() instanceof Player vitim) {
161+
Player damager = null;
162+
if (event.getDamager() instanceof Player) damager = (Player) event.getDamager();
163+
if (event.getDamager() instanceof Arrow arrow) if (arrow.getShooter() instanceof Player player) damager = player;
164+
if (damager != null) damager.spigot().sendMessage(
165+
ChatMessageType.ACTION_BAR, new ComponentBuilder(vitim.getName() + " " + getHeartLevel(vitim)).create());
166+
}
167+
}
168+
169+
private String getHeartLevel(Player player) {
170+
171+
int currentHealth = (int) player.getHealth() / 2;
172+
int maxHealth = (int) player.getMaxHealth() / 2;
173+
int lostHealth = maxHealth - currentHealth;
174+
175+
StringBuilder rHeart = new StringBuilder();
176+
StringBuilder lHeart = new StringBuilder();
177+
178+
for (int i = 0; i < currentHealth; i++) {
179+
rHeart.append(ChatColor.RED).append("❤");
180+
}
181+
for (int i = 0; i < lostHealth; i++) {
182+
lHeart.append(ChatColor.GRAY).append("❤");
183+
}
184+
185+
return rHeart + lHeart.toString();
186+
}
187+
156188
@EventHandler
157189
private void onEntityRegainHealth(EntityRegainHealthEvent event) {
158-
if (event.getEntity() instanceof Player) {
190+
if (event.getEntity() instanceof Player player) {
191+
event.setCancelled(true);
159192
if (event.getRegainReason() == EntityRegainHealthEvent.RegainReason.SATIATED) {
160-
TheJpsPit.getInstance().getPitPreferences().ifPresent(
161-
pitPreferences -> event.setAmount(pitPreferences.getAmountRegenHealth()));
193+
Bukkit.getScheduler().runTaskLater(TheJpsPit.getInstance(),
194+
() -> TheJpsPit.getInstance().getPitPreferences().ifPresent(pitPreferences -> player.setHealth(Math.min(20, player.getHealth() + pitPreferences.getAmountRegenHealth()))), 10 * 20);
162195
}
163196
}
164197
}

src/main/java/com/github/elic0de/thejpspit/player/PitPlayer.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,18 @@
55
import com.github.elic0de.thejpspit.hook.EconomyHook;
66
import com.github.elic0de.thejpspit.leveler.Levels;
77
import com.github.elic0de.thejpspit.scoreboard.PitPlayerScoreboard;
8-
import com.github.elic0de.thejpspit.util.ShowHealth;
98
import de.themoep.minedown.MineDown;
10-
import fr.mrmicky.fastboard.FastBoard;
9+
import java.math.BigDecimal;
10+
import java.util.Optional;
11+
import java.util.UUID;
12+
import java.util.stream.Stream;
1113
import org.bukkit.ChatColor;
1214
import org.bukkit.Material;
1315
import org.bukkit.Sound;
1416
import org.bukkit.entity.Player;
1517
import org.bukkit.inventory.ItemStack;
1618
import org.bukkit.inventory.PlayerInventory;
1719

18-
import java.math.BigDecimal;
19-
import java.util.Optional;
20-
import java.util.UUID;
21-
import java.util.stream.Stream;
22-
2320
public class PitPlayer {
2421

2522
private final Player player;
@@ -122,10 +119,6 @@ public void giveCoin(BigDecimal bigDecimal) {
122119
TheJpsPit.getInstance().getEconomyHook().ifPresent(economyHook -> economyHook.giveMoney(this, bigDecimal));
123120
}
124121

125-
public void showHealth(PitPlayer targetPit) {
126-
ShowHealth.showHealth(this, targetPit);
127-
}
128-
129122
public void sendMessage(String message) {
130123
player.spigot().sendMessage(new MineDown(message).toComponent());
131124
}

src/main/java/com/github/elic0de/thejpspit/util/ShowHealth.java

Lines changed: 0 additions & 60 deletions
This file was deleted.

0 commit comments

Comments
 (0)