forked from Upstream/mmocore
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
e53e9db3d7
@ -0,0 +1,36 @@
|
|||||||
|
package net.Indyuce.mmocore.api.event;
|
||||||
|
|
||||||
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class PlayerEnterCastingModeEvent extends PlayerDataEvent implements Cancellable {
|
||||||
|
private static final HandlerList handlerList = new HandlerList();
|
||||||
|
private boolean cancelled = false;
|
||||||
|
|
||||||
|
public PlayerEnterCastingModeEvent(@NotNull Player who) {
|
||||||
|
super(PlayerData.get(who.getUniqueId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean cancelled) {
|
||||||
|
this.cancelled = cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return getHandlerList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList(){
|
||||||
|
return handlerList;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package net.Indyuce.mmocore.api.event;
|
||||||
|
|
||||||
|
|
||||||
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class PlayerExitCastingModeEvent extends PlayerDataEvent implements Cancellable {
|
||||||
|
private static final HandlerList handlerList = new HandlerList();
|
||||||
|
private boolean cancelled = false;
|
||||||
|
|
||||||
|
public PlayerExitCastingModeEvent(@NotNull Player who) {
|
||||||
|
super(PlayerData.get(who.getUniqueId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean cancelled) {
|
||||||
|
this.cancelled = cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlerList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return handlerList;
|
||||||
|
}
|
||||||
|
}
|
@ -10,9 +10,7 @@ import io.lumine.mythic.lib.util.Closeable;
|
|||||||
import net.Indyuce.mmocore.MMOCore;
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
import net.Indyuce.mmocore.api.ConfigMessage;
|
import net.Indyuce.mmocore.api.ConfigMessage;
|
||||||
import net.Indyuce.mmocore.api.SoundEvent;
|
import net.Indyuce.mmocore.api.SoundEvent;
|
||||||
import net.Indyuce.mmocore.api.event.PlayerExperienceGainEvent;
|
import net.Indyuce.mmocore.api.event.*;
|
||||||
import net.Indyuce.mmocore.api.event.PlayerLevelUpEvent;
|
|
||||||
import net.Indyuce.mmocore.api.event.PlayerResourceUpdateEvent;
|
|
||||||
import net.Indyuce.mmocore.api.event.unlocking.ItemLockedEvent;
|
import net.Indyuce.mmocore.api.event.unlocking.ItemLockedEvent;
|
||||||
import net.Indyuce.mmocore.api.event.unlocking.ItemUnlockedEvent;
|
import net.Indyuce.mmocore.api.event.unlocking.ItemUnlockedEvent;
|
||||||
import net.Indyuce.mmocore.api.player.attribute.PlayerAttribute;
|
import net.Indyuce.mmocore.api.player.attribute.PlayerAttribute;
|
||||||
@ -1005,9 +1003,21 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
|
|||||||
return skillCasting != null;
|
return skillCasting != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSkillCasting(@NotNull SkillCastingInstance skillCasting) {
|
/**
|
||||||
|
* @return true if the PlayerEnterCastingModeEvent successfully put the player into casting mode, otherwise if the event is cancelled, returns false.
|
||||||
|
* @apiNote Changed to a boolean to reflect the cancellation state of the event being fired
|
||||||
|
*/
|
||||||
|
public boolean setSkillCasting(@NotNull SkillCastingInstance skillCasting) {
|
||||||
Validate.isTrue(!isCasting(), "Player already in casting mode");
|
Validate.isTrue(!isCasting(), "Player already in casting mode");
|
||||||
|
PlayerEnterCastingModeEvent event = new PlayerEnterCastingModeEvent(getPlayer());
|
||||||
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
|
||||||
|
if (event.isCancelled()){
|
||||||
|
skillCasting.close();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
this.skillCasting = skillCasting;
|
this.skillCasting = skillCasting;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1023,11 +1033,33 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
|
|||||||
return Objects.requireNonNull(skillCasting, "Player not in casting mode");
|
return Objects.requireNonNull(skillCasting, "Player not in casting mode");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void leaveSkillCasting() {
|
/**
|
||||||
|
* API Method to leave casting mode and fire the PlayerExitCastingModeEvent
|
||||||
|
* @return true if the skill casting mode was left, or false if the event was cancelled, keeping the player in casting mode.
|
||||||
|
*/
|
||||||
|
public boolean leaveSkillCasting(){
|
||||||
|
return this.leaveSkillCasting(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param skipEvent Skip Firing the PlayerExitCastingModeEvent
|
||||||
|
* @return true if the PlayerExitCastingModeEvent is not cancelled, or if the event is skipped.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public boolean leaveSkillCasting(boolean skipEvent) {
|
||||||
Validate.isTrue(isCasting(), "Player not in casting mode");
|
Validate.isTrue(isCasting(), "Player not in casting mode");
|
||||||
|
if (!skipEvent) {
|
||||||
|
PlayerExitCastingModeEvent event = new PlayerExitCastingModeEvent(getPlayer());
|
||||||
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
skillCasting.close();
|
skillCasting.close();
|
||||||
this.skillCasting = null;
|
this.skillCasting = null;
|
||||||
setLastActivity(PlayerActivity.ACTION_BAR_MESSAGE, 0); // Reset action bar
|
setLastActivity(PlayerActivity.ACTION_BAR_MESSAGE, 0); // Reset action bar
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void displayActionBar(String message) {
|
public void displayActionBar(String message) {
|
||||||
|
@ -71,7 +71,7 @@ public class KeyCombos implements SkillCastingListener {
|
|||||||
public void whenPressingKey(PlayerKeyPressEvent event) {
|
public void whenPressingKey(PlayerKeyPressEvent event) {
|
||||||
PlayerData playerData = event.getData();
|
PlayerData playerData = event.getData();
|
||||||
Player player = playerData.getPlayer();
|
Player player = playerData.getPlayer();
|
||||||
if(player.getGameMode()== GameMode.CREATIVE&&!MMOCore.plugin.configManager.canCreativeCast)
|
if (player.getGameMode() == GameMode.CREATIVE && !MMOCore.plugin.configManager.canCreativeCast)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Start combo when there is an initializer key
|
// Start combo when there is an initializer key
|
||||||
@ -82,8 +82,9 @@ public class KeyCombos implements SkillCastingListener {
|
|||||||
if (event.getPressed().shouldCancelEvent()) event.setCancelled(true);
|
if (event.getPressed().shouldCancelEvent()) event.setCancelled(true);
|
||||||
|
|
||||||
// Start combo
|
// Start combo
|
||||||
playerData.setSkillCasting(new CustomSkillCastingInstance(playerData));
|
if (playerData.setSkillCasting(new CustomSkillCastingInstance(playerData)) && beginComboSound != null)
|
||||||
if (beginComboSound != null) beginComboSound.playTo(player);
|
beginComboSound.playTo(player);
|
||||||
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -98,8 +99,8 @@ public class KeyCombos implements SkillCastingListener {
|
|||||||
final @NotNull ComboMap comboMap = Objects.requireNonNullElse(playerData.getProfess().getComboMap(), this.comboMap);
|
final @NotNull ComboMap comboMap = Objects.requireNonNullElse(playerData.getProfess().getComboMap(), this.comboMap);
|
||||||
if (comboMap.isComboStart(event.getPressed())) {
|
if (comboMap.isComboStart(event.getPressed())) {
|
||||||
casting = new CustomSkillCastingInstance(playerData);
|
casting = new CustomSkillCastingInstance(playerData);
|
||||||
playerData.setSkillCasting(casting);
|
if (playerData.setSkillCasting(new CustomSkillCastingInstance(playerData)) && beginComboSound != null)
|
||||||
if (beginComboSound != null) beginComboSound.playTo(player);
|
beginComboSound.playTo(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,8 +56,9 @@ public class SkillBar implements SkillCastingListener {
|
|||||||
// Enter spell casting
|
// Enter spell casting
|
||||||
final PlayerData playerData = event.getData();
|
final PlayerData playerData = event.getData();
|
||||||
if (player.getGameMode() != GameMode.SPECTATOR && (MMOCore.plugin.configManager.canCreativeCast || player.getGameMode() != GameMode.CREATIVE) && !playerData.isCasting() && !playerData.getBoundSkills().isEmpty()) {
|
if (player.getGameMode() != GameMode.SPECTATOR && (MMOCore.plugin.configManager.canCreativeCast || player.getGameMode() != GameMode.CREATIVE) && !playerData.isCasting() && !playerData.getBoundSkills().isEmpty()) {
|
||||||
playerData.setSkillCasting(new CustomSkillCastingInstance(playerData));
|
if (playerData.setSkillCasting(new CustomSkillCastingInstance(playerData))) {
|
||||||
MMOCore.plugin.soundManager.getSound(SoundEvent.SPELL_CAST_BEGIN).playTo(player);
|
MMOCore.plugin.soundManager.getSound(SoundEvent.SPELL_CAST_BEGIN).playTo(player);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,10 @@ public class SkillScroller implements SkillCastingListener {
|
|||||||
if (event.getPressed().shouldCancelEvent()) event.setCancelled(true);
|
if (event.getPressed().shouldCancelEvent()) event.setCancelled(true);
|
||||||
|
|
||||||
// Enter casting mode
|
// Enter casting mode
|
||||||
playerData.setSkillCasting(new CustomSkillCastingInstance(playerData));
|
if (!playerData.setSkillCasting(new CustomSkillCastingInstance(playerData))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (enterSound != null) enterSound.playTo(player);
|
if (enterSound != null) enterSound.playTo(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user