mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-07-01 23:36:18 +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.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.SignChangeEvent;
|
import org.bukkit.event.block.SignChangeEvent;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.event.player.*;
|
import org.bukkit.event.player.*;
|
||||||
import org.bukkit.event.world.WorldLoadEvent;
|
import org.bukkit.event.world.WorldLoadEvent;
|
||||||
@ -67,4 +68,9 @@ public class EventListener implements Listener {
|
|||||||
private void onRespawn(PlayerRespawnEvent e) {
|
private void onRespawn(PlayerRespawnEvent e) {
|
||||||
Death.respawnEvent(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.BetterRTP;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.file.FileOther;
|
import me.SuperRonanCraft.BetterRTP.references.file.FileOther;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.player.HelperPlayer;
|
||||||
import me.SuperRonanCraft.BetterRTP.versions.AsyncHandler;
|
import me.SuperRonanCraft.BetterRTP.versions.AsyncHandler;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
@ -52,7 +53,7 @@ public class RTPEffect_Potions { //Potions AND Invincibility
|
|||||||
public void giveEffects(Player p) {
|
public void giveEffects(Player p) {
|
||||||
AsyncHandler.syncAtEntity(p, () -> {
|
AsyncHandler.syncAtEntity(p, () -> {
|
||||||
if (invincibleEnabled)
|
if (invincibleEnabled)
|
||||||
p.setNoDamageTicks(invincibleTime * 20);
|
HelperPlayer.getData(p).setInvincibleEndTime(System.currentTimeMillis() + (invincibleTime * 1000L));
|
||||||
if (potionEnabled) {
|
if (potionEnabled) {
|
||||||
List<PotionEffect> effects = new ArrayList<>();
|
List<PotionEffect> effects = new ArrayList<>();
|
||||||
for (PotionEffectType e : potionEffects.keySet()) {
|
for (PotionEffectType e : potionEffects.keySet()) {
|
||||||
|
@ -22,6 +22,7 @@ public class PlayerData {
|
|||||||
@Getter @Setter boolean rtping;
|
@Getter @Setter boolean rtping;
|
||||||
@Getter @Setter int rtpCount;
|
@Getter @Setter int rtpCount;
|
||||||
@Getter @Setter long globalCooldown;
|
@Getter @Setter long globalCooldown;
|
||||||
|
@Getter @Setter long invincibleEndTime;
|
||||||
|
|
||||||
PlayerData(Player player) {
|
PlayerData(Player player) {
|
||||||
this.player = player;
|
this.player = player;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user