mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-07-01 15:26:44 +00:00
Fix for handling damage event for invincible effect (#205)
* handle damage event for invincible effect * Update comment to be more informative --------- Co-authored-by: HSGamer <huynhqtienvtag@gmail.com> Co-authored-by: TechnicallyCoded <technicallycoded@gmail.com>
This commit is contained in:
parent
0afea8b3d5
commit
f2b039b962
@ -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);
|
||||
}
|
||||
}
|
@ -5,6 +5,7 @@ import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEven
|
||||
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;
|
||||
@ -67,4 +68,9 @@ public class EventListener implements Listener {
|
||||
private void onRespawn(PlayerRespawnEvent e) {
|
||||
Death.respawnEvent(e);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
private void onDamage(EntityDamageEvent e) {
|
||||
Damage.onEntityDamage(e);
|
||||
}
|
||||
}
|
@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTP.player.rtp.effects;
|
||||
|
||||
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;
|
||||
@ -52,7 +53,7 @@ public class RTPEffect_Potions { //Potions AND Invincibility
|
||||
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()) {
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user