mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-01-30 14:19:36 +01:00
Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO
This commit is contained in:
commit
2618cfbe78
@ -0,0 +1,76 @@
|
||||
package com.gmail.nossr50.events.skills.taming;
|
||||
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.events.experience.McMMOPlayerExperienceEvent;
|
||||
import com.google.common.base.Preconditions;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* Called when a player has tamed an entity, and we are about to award them experience for it.
|
||||
*/
|
||||
public class McMMOPlayerTameEntityEvent extends McMMOPlayerExperienceEvent {
|
||||
private static final HandlerList HANDLER_LIST = new HandlerList();
|
||||
|
||||
private final McMMOPlayer mmoPlayer;
|
||||
private float xpGained;
|
||||
private final Entity tamedEntity;
|
||||
|
||||
public McMMOPlayerTameEntityEvent(@NotNull McMMOPlayer mmoPlayer, float xp, @NotNull Entity tamedEntity) {
|
||||
super(mmoPlayer.getPlayer(), PrimarySkillType.TAMING, XPGainReason.PVE);
|
||||
this.mmoPlayer = mmoPlayer;
|
||||
this.xpGained = xp;
|
||||
this.tamedEntity = tamedEntity;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The {@link McMMOPlayer} associated with this event.
|
||||
*/
|
||||
@NotNull
|
||||
public McMMOPlayer getMcMMOPlayer() {
|
||||
return mmoPlayer;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The raw experience that the player will receive.
|
||||
*/
|
||||
public float getXpGained() {
|
||||
return this.xpGained;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param xpGained The raw experience that the player will receive.
|
||||
* @throws IllegalArgumentException if xpGained is NaN, infinite, or not positive.
|
||||
*/
|
||||
public void setXpGained(float xpGained) {
|
||||
Preconditions.checkArgument(Float.isFinite(xpGained), "new gained xp must be a number");
|
||||
Preconditions.checkArgument(xpGained > 0, "new gained xp must be a positive number");
|
||||
|
||||
this.xpGained = xpGained;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Entity getTamedEntity() {
|
||||
return tamedEntity;
|
||||
}
|
||||
|
||||
/**
|
||||
* @apiNote Cancelling this event prevents experience from being awarded, but the entity will remain tamed.
|
||||
*/
|
||||
@Override
|
||||
public void setCancelled(boolean cancelled) {
|
||||
super.setCancelled(cancelled);
|
||||
}
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
return HANDLER_LIST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull HandlerList getHandlers() {
|
||||
return HANDLER_LIST;
|
||||
}
|
||||
}
|
@ -2,12 +2,14 @@ package com.gmail.nossr50.skills.taming;
|
||||
|
||||
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainSource;
|
||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.subskills.taming.CallOfTheWildType;
|
||||
import com.gmail.nossr50.datatypes.skills.subskills.taming.TamingSummon;
|
||||
import com.gmail.nossr50.events.skills.taming.McMMOPlayerTameEntityEvent;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.metadata.MobMetaFlagType;
|
||||
@ -136,7 +138,13 @@ public class TamingManager extends SkillManager {
|
||||
* @param entity The LivingEntity to award XP for
|
||||
*/
|
||||
public void awardTamingXP(@NotNull LivingEntity entity) {
|
||||
applyXpGain(ExperienceConfig.getInstance().getTamingXP(entity.getType()), XPGainReason.PVE);
|
||||
int xp = ExperienceConfig.getInstance().getTamingXP(entity.getType());
|
||||
|
||||
final McMMOPlayerTameEntityEvent event = new McMMOPlayerTameEntityEvent(mmoPlayer, xp, entity);
|
||||
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if (!event.isCancelled())
|
||||
applyXpGain(event.getXpGained(), XPGainReason.PVE, XPGainSource.SELF);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user