mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-08-02 04:25:26 +02:00
Fixed possible NPE in our events, and BrewingStands now remember who last interacted with them, this allows for hoppers to be used with Alchemy Fixes #5004 Fixes #4958 Fixes #4641
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.gmail.nossr50.events.skills;
|
||||
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -7,19 +8,35 @@ import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.player.PlayerEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
/**
|
||||
* Generic event for mcMMO skill handling.
|
||||
*/
|
||||
public abstract class McMMOPlayerSkillEvent extends PlayerEvent {
|
||||
protected @NotNull PrimarySkillType skill;
|
||||
protected int skillLevel;
|
||||
protected McMMOPlayer mmoPlayer;
|
||||
|
||||
@Deprecated(forRemoval = true, since = "2.2.010")
|
||||
protected McMMOPlayerSkillEvent(@NotNull Player player, @NotNull PrimarySkillType skill) {
|
||||
super(player);
|
||||
McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
|
||||
requireNonNull(mmoPlayer, "Player not found in UserManager," +
|
||||
"contact the dev and tell them to use the constructor for" +
|
||||
" McMMOPlayerSkillEvent(McMMOPlayer, PrimarySkillType) instead");
|
||||
this.skill = skill;
|
||||
this.skillLevel = UserManager.getPlayer(player).getSkillLevel(skill);
|
||||
}
|
||||
|
||||
protected McMMOPlayerSkillEvent(@NotNull McMMOPlayer mmoPlayer, @NotNull PrimarySkillType primarySkillType) {
|
||||
super(mmoPlayer.getPlayer());
|
||||
requireNonNull(mmoPlayer, "mmoPlayer cannot be null");
|
||||
requireNonNull(primarySkillType, "primarySkillType cannot be null");
|
||||
this.skill = primarySkillType;
|
||||
this.skillLevel = mmoPlayer.getSkillLevel(primarySkillType);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The skill involved in this event
|
||||
*/
|
||||
@@ -37,6 +54,15 @@ public abstract class McMMOPlayerSkillEvent extends PlayerEvent {
|
||||
/** Rest of file is required boilerplate for custom events **/
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
|
||||
/**
|
||||
* Returns the {@link McMMOPlayer} associated with this event.
|
||||
*
|
||||
* @return The {@link McMMOPlayer} associated with this event.
|
||||
*/
|
||||
public @NotNull McMMOPlayer getMcMMOPlayer() {
|
||||
return mmoPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull HandlerList getHandlers() {
|
||||
return handlers;
|
||||
|
@@ -1,14 +1,24 @@
|
||||
package com.gmail.nossr50.events.skills.abilities;
|
||||
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class McMMOPlayerAbilityActivateEvent extends McMMOPlayerAbilityEvent implements Cancellable {
|
||||
private boolean cancelled;
|
||||
|
||||
@Deprecated(forRemoval = true, since = "2.2.010")
|
||||
public McMMOPlayerAbilityActivateEvent(Player player, PrimarySkillType skill) {
|
||||
super(player, skill);
|
||||
super(Objects.requireNonNull(UserManager.getPlayer(player)), skill);
|
||||
cancelled = false;
|
||||
}
|
||||
|
||||
public McMMOPlayerAbilityActivateEvent(McMMOPlayer mmoPlayer, PrimarySkillType skill) {
|
||||
super(mmoPlayer, skill);
|
||||
cancelled = false;
|
||||
}
|
||||
|
||||
|
@@ -1,10 +1,20 @@
|
||||
package com.gmail.nossr50.events.skills.abilities;
|
||||
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
public class McMMOPlayerAbilityDeactivateEvent extends McMMOPlayerAbilityEvent {
|
||||
public McMMOPlayerAbilityDeactivateEvent(Player player, PrimarySkillType skill) {
|
||||
super(player, skill);
|
||||
@Deprecated(forRemoval = true, since = "2.2.010")
|
||||
public McMMOPlayerAbilityDeactivateEvent(@NotNull Player player, @NotNull PrimarySkillType skill) {
|
||||
this(requireNonNull(UserManager.getPlayer(player)), skill);
|
||||
}
|
||||
|
||||
public McMMOPlayerAbilityDeactivateEvent(@NotNull McMMOPlayer mmoPlayer, @NotNull PrimarySkillType skill) {
|
||||
super(mmoPlayer, skill);
|
||||
}
|
||||
}
|
||||
|
@@ -1,16 +1,38 @@
|
||||
package com.gmail.nossr50.events.skills.abilities;
|
||||
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.SuperAbilityType;
|
||||
import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class McMMOPlayerAbilityEvent extends McMMOPlayerSkillEvent {
|
||||
private final SuperAbilityType ability;
|
||||
|
||||
/**
|
||||
* Create a new McMMOPlayerAbilityEvent.
|
||||
*
|
||||
* @param player The player involved in this event
|
||||
* @param skill The skill involved in this event
|
||||
* @deprecated Use {@link #McMMOPlayerAbilityEvent(McMMOPlayer, PrimarySkillType)} instead
|
||||
*/
|
||||
@Deprecated(forRemoval = true, since = "2.2.010")
|
||||
protected McMMOPlayerAbilityEvent(Player player, PrimarySkillType skill) {
|
||||
super(player, skill);
|
||||
super(Objects.requireNonNull(UserManager.getPlayer(player)), skill);
|
||||
ability = mcMMO.p.getSkillTools().getSuperAbility(skill);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new McMMOPlayerAbilityEvent.
|
||||
* @param mmoPlayer The McMMOPlayer involved in this event
|
||||
* @param skill The skill involved in this event
|
||||
*/
|
||||
protected McMMOPlayerAbilityEvent(McMMOPlayer mmoPlayer, PrimarySkillType skill) {
|
||||
super(mmoPlayer, skill);
|
||||
ability = mcMMO.p.getSkillTools().getSuperAbility(skill);
|
||||
}
|
||||
|
||||
|
@@ -1,24 +1,36 @@
|
||||
package com.gmail.nossr50.events.skills.alchemy;
|
||||
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.block.BrewingStand;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
public class McMMOPlayerBrewEvent extends McMMOPlayerSkillEvent implements Cancellable {
|
||||
private final BlockState brewingStand;
|
||||
|
||||
private boolean cancelled;
|
||||
|
||||
@Deprecated(forRemoval = true, since = "2.2.010")
|
||||
public McMMOPlayerBrewEvent(Player player, BlockState brewingStand) {
|
||||
super(player, PrimarySkillType.ALCHEMY);
|
||||
super(requireNonNull(UserManager.getPlayer(player)), PrimarySkillType.ALCHEMY);
|
||||
this.brewingStand = brewingStand;
|
||||
cancelled = false;
|
||||
}
|
||||
|
||||
public McMMOPlayerBrewEvent(@NotNull McMMOPlayer mmoPlayer, @NotNull BlockState brewingStand) {
|
||||
super(mmoPlayer, PrimarySkillType.ALCHEMY);
|
||||
this.brewingStand = requireNonNull(brewingStand);
|
||||
cancelled = false;
|
||||
}
|
||||
|
||||
public boolean isCancelled() {
|
||||
return cancelled;
|
||||
}
|
||||
|
@@ -1,17 +1,28 @@
|
||||
package com.gmail.nossr50.events.skills.alchemy;
|
||||
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
public class McMMOPlayerCatalysisEvent extends McMMOPlayerSkillEvent implements Cancellable {
|
||||
private double speed;
|
||||
|
||||
private boolean cancelled;
|
||||
|
||||
@Deprecated(forRemoval = true, since = "2.2.010")
|
||||
public McMMOPlayerCatalysisEvent(Player player, double speed) {
|
||||
super(player, PrimarySkillType.ALCHEMY);
|
||||
super(requireNonNull(UserManager.getPlayer(player)), PrimarySkillType.ALCHEMY);
|
||||
this.speed = speed;
|
||||
cancelled = false;
|
||||
}
|
||||
|
||||
public McMMOPlayerCatalysisEvent(McMMOPlayer mmoPlayer, double speed) {
|
||||
super(mmoPlayer, PrimarySkillType.ALCHEMY);
|
||||
this.speed = speed;
|
||||
cancelled = false;
|
||||
}
|
||||
|
@@ -1,15 +1,23 @@
|
||||
package com.gmail.nossr50.events.skills.fishing;
|
||||
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
public class McMMOPlayerFishingEvent extends McMMOPlayerSkillEvent implements Cancellable {
|
||||
private boolean cancelled;
|
||||
|
||||
@Deprecated(forRemoval = true, since = "2.2.010")
|
||||
protected McMMOPlayerFishingEvent(Player player) {
|
||||
super(player, PrimarySkillType.FISHING);
|
||||
super(UserManager.getPlayer(player), PrimarySkillType.FISHING);
|
||||
cancelled = false;
|
||||
}
|
||||
|
||||
protected McMMOPlayerFishingEvent(McMMOPlayer mmoPlayer) {
|
||||
super(mmoPlayer, PrimarySkillType.FISHING);
|
||||
cancelled = false;
|
||||
}
|
||||
|
||||
|
@@ -1,23 +1,34 @@
|
||||
package com.gmail.nossr50.events.skills.fishing;
|
||||
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
public class McMMOPlayerFishingTreasureEvent extends McMMOPlayerFishingEvent {
|
||||
private ItemStack treasure;
|
||||
private int xp;
|
||||
|
||||
@Deprecated(forRemoval = true, since = "2.2.010")
|
||||
public McMMOPlayerFishingTreasureEvent(Player player, ItemStack treasure, int xp) {
|
||||
super(player);
|
||||
this(requireNonNull(UserManager.getPlayer(player)), treasure, xp);
|
||||
}
|
||||
|
||||
public McMMOPlayerFishingTreasureEvent(@NotNull McMMOPlayer mmoPlayer, @Nullable ItemStack treasure, int xp) {
|
||||
super(mmoPlayer);
|
||||
this.treasure = treasure;
|
||||
this.xp = xp;
|
||||
}
|
||||
|
||||
public ItemStack getTreasure() {
|
||||
public @Nullable ItemStack getTreasure() {
|
||||
return treasure;
|
||||
}
|
||||
|
||||
public void setTreasure(ItemStack item) {
|
||||
public void setTreasure(@Nullable ItemStack item) {
|
||||
this.treasure = item;
|
||||
}
|
||||
|
||||
|
@@ -1,20 +1,32 @@
|
||||
package com.gmail.nossr50.events.skills.fishing;
|
||||
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class McMMOPlayerMagicHunterEvent extends McMMOPlayerFishingTreasureEvent {
|
||||
private final Map<Enchantment, Integer> enchants;
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
public McMMOPlayerMagicHunterEvent(Player player, ItemStack treasure, int xp, Map<Enchantment, Integer> enchants) {
|
||||
super(player, treasure, xp);
|
||||
this.enchants = enchants;
|
||||
public class McMMOPlayerMagicHunterEvent extends McMMOPlayerFishingTreasureEvent {
|
||||
private final Map<Enchantment, Integer> enchants = new HashMap<>();
|
||||
|
||||
@Deprecated(forRemoval = true, since = "2.2.010")
|
||||
public McMMOPlayerMagicHunterEvent(@NotNull Player player, @NotNull ItemStack treasure, int xp, @NotNull Map<Enchantment, Integer> enchants) {
|
||||
this(requireNonNull(UserManager.getPlayer(player)), treasure, xp, enchants);
|
||||
}
|
||||
|
||||
public Map<Enchantment, Integer> getEnchantments() {
|
||||
public McMMOPlayerMagicHunterEvent(@NotNull McMMOPlayer mmoPlayer, @NotNull ItemStack treasure, int xp, @NotNull Map<Enchantment, Integer> enchants) {
|
||||
super(mmoPlayer, treasure, xp);
|
||||
requireNonNull(enchants, "enchants cannot be null");
|
||||
this.enchants.putAll(enchants);
|
||||
}
|
||||
|
||||
public @NotNull Map<Enchantment, Integer> getEnchantments() {
|
||||
return enchants;
|
||||
}
|
||||
}
|
||||
|
@@ -1,11 +1,16 @@
|
||||
package com.gmail.nossr50.events.skills.secondaryabilities;
|
||||
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill;
|
||||
import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
public class SubSkillEvent extends McMMOPlayerSkillEvent implements Cancellable {
|
||||
private SubSkillType subSkillType;
|
||||
@@ -16,9 +21,20 @@ public class SubSkillEvent extends McMMOPlayerSkillEvent implements Cancellable
|
||||
* Only skills using the old system will fire this event
|
||||
* @param player target player
|
||||
* @param subSkillType target subskill
|
||||
* @deprecated Use {@link #SubSkillEvent(McMMOPlayer, SubSkillType)} instead
|
||||
*/
|
||||
public SubSkillEvent(Player player, SubSkillType subSkillType) {
|
||||
super(player, mcMMO.p.getSkillTools().getPrimarySkillBySubSkill(subSkillType));
|
||||
@Deprecated(forRemoval = true, since = "2.2.010")
|
||||
public SubSkillEvent(@NotNull Player player, @NotNull SubSkillType subSkillType) {
|
||||
this(requireNonNull(UserManager.getPlayer(player)), subSkillType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Only skills using the old system will fire this event
|
||||
* @param mmoPlayer target player
|
||||
* @param subSkillType target subskill
|
||||
*/
|
||||
public SubSkillEvent(@NotNull McMMOPlayer mmoPlayer, @NotNull SubSkillType subSkillType) {
|
||||
super(mmoPlayer, mcMMO.p.getSkillTools().getPrimarySkillBySubSkill(subSkillType));
|
||||
this.subSkillType = subSkillType;
|
||||
}
|
||||
|
||||
@@ -28,15 +44,30 @@ public class SubSkillEvent extends McMMOPlayerSkillEvent implements Cancellable
|
||||
* @param subSkillType target subskill
|
||||
* @param resultModifier a value multiplied against the final result of the dice roll, typically between 0-1.0
|
||||
*/
|
||||
public SubSkillEvent(Player player, SubSkillType subSkillType, double resultModifier) {
|
||||
@Deprecated(forRemoval = true, since = "2.2.010")
|
||||
public SubSkillEvent(@NotNull Player player, @NotNull SubSkillType subSkillType, double resultModifier) {
|
||||
this(requireNonNull(UserManager.getPlayer(player)), subSkillType, resultModifier);
|
||||
}
|
||||
|
||||
/**
|
||||
* Only skills using the old system will fire this event
|
||||
* @param player target player
|
||||
* @param subSkillType target subskill
|
||||
* @param resultModifier a value multiplied against the final result of the dice roll, typically between 0-1.0
|
||||
*/
|
||||
public SubSkillEvent(@NotNull McMMOPlayer player, @NotNull SubSkillType subSkillType, double resultModifier) {
|
||||
super(player, mcMMO.p.getSkillTools().getPrimarySkillBySubSkill(subSkillType));
|
||||
this.subSkillType = subSkillType;
|
||||
this.subSkillType = requireNonNull(subSkillType, "subSkillType cannot be null");
|
||||
this.resultModifier = resultModifier;
|
||||
}
|
||||
|
||||
public SubSkillEvent(Player player, AbstractSubSkill abstractSubSkill)
|
||||
{
|
||||
super(player, abstractSubSkill.getPrimarySkill());
|
||||
@Deprecated(forRemoval = true, since = "2.2.010")
|
||||
public SubSkillEvent(@NotNull Player player, @NotNull AbstractSubSkill abstractSubSkill) {
|
||||
this(requireNonNull(UserManager.getPlayer(player)), abstractSubSkill);
|
||||
}
|
||||
|
||||
public SubSkillEvent(@NotNull McMMOPlayer mmoPlayer, @NotNull AbstractSubSkill abstractSubSkill) {
|
||||
super(mmoPlayer, abstractSubSkill.getPrimarySkill());
|
||||
}
|
||||
|
||||
public double getResultModifier() {
|
||||
|
Reference in New Issue
Block a user