44import com .github .elic0de .hungergames .HungerGames ;
55import com .github .elic0de .hungergames .game .HungerGame ;
66import com .github .elic0de .hungergames .game .phase .InGamePhase ;
7+ import com .github .elic0de .hungergames .menu .DeathChestMenu ;
78import com .github .elic0de .hungergames .user .GameUser ;
89import com .github .elic0de .hungergames .user .GameUserManager ;
10+ import net .md_5 .bungee .api .ChatMessageType ;
11+ import net .md_5 .bungee .api .chat .ComponentBuilder ;
12+ import org .bukkit .ChatColor ;
913import org .bukkit .GameMode ;
1014import org .bukkit .Material ;
15+ import org .bukkit .block .Block ;
1116import org .bukkit .block .BlockFace ;
17+ import org .bukkit .entity .Arrow ;
1218import org .bukkit .entity .EnderDragon ;
1319import org .bukkit .entity .Player ;
1420import org .bukkit .event .EventHandler ;
1521import org .bukkit .event .Listener ;
22+ import org .bukkit .event .block .Action ;
23+ import org .bukkit .event .entity .EntityDamageByEntityEvent ;
1624import org .bukkit .event .entity .EntityDamageEvent ;
1725import org .bukkit .event .entity .PlayerDeathEvent ;
18- import org .bukkit .event .player .AsyncPlayerChatEvent ;
19- import org .bukkit .event .player .PlayerJoinEvent ;
20- import org .bukkit .event .player .PlayerMoveEvent ;
21- import org .bukkit .event .player .PlayerQuitEvent ;
26+ import org .bukkit .event .player .*;
2227import org .bukkit .inventory .ItemStack ;
2328import org .spigotmc .event .entity .EntityDismountEvent ;
2429
@@ -76,6 +81,15 @@ private void onDamage(EntityDamageEvent event) {
7681 }
7782 }
7883
84+ @ EventHandler
85+ private void onInteract (PlayerInteractEvent event ) {
86+ final Block block = event .getClickedBlock ();
87+ if (block == null ) return ;
88+ if (block .getType () == Material .CHEST && event .getAction () == Action .RIGHT_CLICK_BLOCK ) {
89+ game .getDeathChest ().openDeathChest (event .getPlayer (), block .getLocation ());
90+ }
91+ }
92+
7993 @ EventHandler
8094 private void onTeamChat (AsyncPlayerChatEvent event ) {
8195 if (game .getPhase () instanceof InGamePhase ) {
@@ -87,4 +101,33 @@ private void onTeamChat(AsyncPlayerChatEvent event) {
87101 game .sendMessageOwnTeam (sender , event .getMessage ());
88102 }
89103 }
104+
105+ @ EventHandler
106+ public void onFight (EntityDamageByEntityEvent event ) {
107+ if (event .getEntity () instanceof Player vitim ) {
108+ Player damager = null ;
109+ if (event .getDamager () instanceof Player ) damager = (Player ) event .getDamager ();
110+ if (event .getDamager () instanceof Arrow arrow ) if (arrow .getShooter () instanceof Player ) damager = (Player ) event .getDamager ();
111+ if (damager != null ) damager .spigot ().sendMessage (ChatMessageType .ACTION_BAR , new ComponentBuilder (String .join ("%s %s" , vitim .getName (), getHeartLevel (vitim ))).create ());
112+ }
113+ }
114+
115+ private String getHeartLevel (Player player ) {
116+
117+ int currentHealth = (int ) player .getHealth () / 2 ;
118+ int maxHealth = (int ) player .getMaxHealth () / 2 ;
119+ int lostHealth = maxHealth - currentHealth ;
120+
121+ String rHeart = "" ;
122+ String lHeart = "" ;
123+
124+ for (int i = 0 ; i < currentHealth ; i ++) {
125+ rHeart = rHeart + ChatColor .RESET + "❤" ;
126+ }
127+ for (int i = 0 ; i < lostHealth ; i ++) {
128+ lHeart = lHeart + ChatColor .GRAY + "❤" ;
129+ }
130+
131+ return rHeart + lHeart ;
132+ }
90133}
0 commit comments