Skip to content

Commit

Permalink
Fix for handling damage event for invincible effect (#205)
Browse files Browse the repository at this point in the history
* handle damage event for invincible effect

* Update comment to be more informative

---------

Co-authored-by: HSGamer <[email protected]>
Co-authored-by: TechnicallyCoded <[email protected]>
  • Loading branch information
3 people authored Mar 29, 2024
1 parent 0afea8b commit f2b039b
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package me.SuperRonanCraft.BetterRTP.player.events;

import me.SuperRonanCraft.BetterRTP.references.player.HelperPlayer;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageEvent;

public class Damage {
static boolean canCancel(EntityDamageEvent.DamageCause damageCause) {
return true; // TODO: Allow for filtering damage causes
}

static boolean isInInvincibleMode(Player player) {
return HelperPlayer.getData(player).getInvincibleEndTime() > System.currentTimeMillis();
}

static void onEntityDamage(EntityDamageEvent event) {
Entity entity = event.getEntity();
if (!(entity instanceof Player)) return;
Player player = (Player) entity;

if (!canCancel(event.getCause())) return;
if (!isInInvincibleMode(player)) return;

event.setCancelled(true);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.SignChangeEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.*;
import org.bukkit.event.world.WorldLoadEvent;
Expand Down Expand Up @@ -67,4 +68,9 @@ private void worldLoad(WorldLoadEvent e) {
private void onRespawn(PlayerRespawnEvent e) {
Death.respawnEvent(e);
}

@EventHandler
private void onDamage(EntityDamageEvent e) {
Damage.onEntityDamage(e);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.references.file.FileOther;
import me.SuperRonanCraft.BetterRTP.references.player.HelperPlayer;
import me.SuperRonanCraft.BetterRTP.versions.AsyncHandler;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
Expand Down Expand Up @@ -52,7 +53,7 @@ void load() {
public void giveEffects(Player p) {
AsyncHandler.syncAtEntity(p, () -> {
if (invincibleEnabled)
p.setNoDamageTicks(invincibleTime * 20);
HelperPlayer.getData(p).setInvincibleEndTime(System.currentTimeMillis() + (invincibleTime * 1000L));
if (potionEnabled) {
List<PotionEffect> effects = new ArrayList<>();
for (PotionEffectType e : potionEffects.keySet()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public class PlayerData {
@Getter @Setter boolean rtping;
@Getter @Setter int rtpCount;
@Getter @Setter long globalCooldown;
@Getter @Setter long invincibleEndTime;

PlayerData(Player player) {
this.player = player;
Expand Down

0 comments on commit f2b039b

Please sign in to comment.