mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-19 19:25:48 +00:00
feat: Add RadiationDamageEvent to the api (#4225)
This commit is contained in:
parent
7d2ccc261f
commit
f1363ceadf
@ -0,0 +1,69 @@
|
|||||||
|
package io.github.thebusybiscuit.slimefun4.api.events;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link RadiationDamageEvent} is called when a player takes radiation damage.
|
||||||
|
*
|
||||||
|
* @author HoosierTransfer
|
||||||
|
*/
|
||||||
|
public class RadiationDamageEvent extends Event implements Cancellable {
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
|
||||||
|
private final Player player;
|
||||||
|
private final int exposure;
|
||||||
|
private boolean cancelled;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This constructs a new {@link RadiationDamageEvent}.
|
||||||
|
*
|
||||||
|
* @param player The {@link Player} who took radiation damage
|
||||||
|
* @param exposure The amount of radiation exposure
|
||||||
|
*/
|
||||||
|
public RadiationDamageEvent(@Nonnull Player player, int exposure) {
|
||||||
|
this.player = player;
|
||||||
|
this.exposure = exposure;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This returns the {@link Player} who took radiation damage.
|
||||||
|
*
|
||||||
|
* @return The {@link Player} who took radiation damage
|
||||||
|
*/
|
||||||
|
public @Nonnull Player getPlayer() {
|
||||||
|
return player;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This returns the amount of radiation exposure.
|
||||||
|
*
|
||||||
|
* @return The amount of radiation exposure
|
||||||
|
*/
|
||||||
|
public int getExposure() {
|
||||||
|
return exposure;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean cancelled) {
|
||||||
|
this.cancelled = cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @Nonnull HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nonnull HandlerList getHandlers() {
|
||||||
|
return getHandlerList();
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package io.github.thebusybiscuit.slimefun4.implementation.tasks.armor;
|
package io.github.thebusybiscuit.slimefun4.implementation.tasks.armor;
|
||||||
|
|
||||||
import io.github.bakedlibs.dough.common.ChatColors;
|
import io.github.bakedlibs.dough.common.ChatColors;
|
||||||
|
import io.github.thebusybiscuit.slimefun4.api.events.RadiationDamageEvent;
|
||||||
import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem;
|
import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem;
|
||||||
import io.github.thebusybiscuit.slimefun4.api.player.PlayerProfile;
|
import io.github.thebusybiscuit.slimefun4.api.player.PlayerProfile;
|
||||||
import io.github.thebusybiscuit.slimefun4.core.attributes.ProtectionType;
|
import io.github.thebusybiscuit.slimefun4.core.attributes.ProtectionType;
|
||||||
@ -12,6 +13,8 @@ import io.github.thebusybiscuit.slimefun4.utils.RadiationUtils;
|
|||||||
import net.md_5.bungee.api.ChatMessageType;
|
import net.md_5.bungee.api.ChatMessageType;
|
||||||
import net.md_5.bungee.api.chat.BaseComponent;
|
import net.md_5.bungee.api.chat.BaseComponent;
|
||||||
import net.md_5.bungee.api.chat.ComponentBuilder;
|
import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@ -71,6 +74,13 @@ public class RadiationTask extends AbstractArmorTask {
|
|||||||
int exposureLevelAfter = RadiationUtils.getExposure(p);
|
int exposureLevelAfter = RadiationUtils.getExposure(p);
|
||||||
|
|
||||||
Slimefun.runSync(() -> {
|
Slimefun.runSync(() -> {
|
||||||
|
RadiationDamageEvent event = new RadiationDamageEvent(p, exposureLevelAfter);
|
||||||
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (RadiationSymptom symptom : symptoms) {
|
for (RadiationSymptom symptom : symptoms) {
|
||||||
if (symptom.shouldApply(exposureLevelAfter)) {
|
if (symptom.shouldApply(exposureLevelAfter)) {
|
||||||
symptom.apply(p);
|
symptom.apply(p);
|
||||||
|
Loading…
Reference in New Issue
Block a user