Moved close script to party module listener

This commit is contained in:
Jules 2023-03-03 14:55:29 +01:00
parent 8c0d8da483
commit 46ea648414
2 changed files with 38 additions and 40 deletions

View File

@ -33,8 +33,6 @@ import net.Indyuce.mmocore.experience.droptable.ExperienceTable;
import net.Indyuce.mmocore.guild.provided.Guild; import net.Indyuce.mmocore.guild.provided.Guild;
import net.Indyuce.mmocore.loot.chest.particle.SmallParticleEffect; import net.Indyuce.mmocore.loot.chest.particle.SmallParticleEffect;
import net.Indyuce.mmocore.party.AbstractParty; import net.Indyuce.mmocore.party.AbstractParty;
import net.Indyuce.mmocore.party.provided.MMOCorePartyModule;
import net.Indyuce.mmocore.party.provided.Party;
import net.Indyuce.mmocore.player.ClassDataContainer; import net.Indyuce.mmocore.player.ClassDataContainer;
import net.Indyuce.mmocore.player.CombatHandler; import net.Indyuce.mmocore.player.CombatHandler;
import net.Indyuce.mmocore.player.Unlockable; import net.Indyuce.mmocore.player.Unlockable;
@ -142,11 +140,8 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
this.mmoData = mmoData; this.mmoData = mmoData;
questData = new PlayerQuests(this); questData = new PlayerQuests(this);
playerStats = new PlayerStats(this); playerStats = new PlayerStats(this);
} }
/** /**
* Update all references after /mmocore reload so there can be garbage * Update all references after /mmocore reload so there can be garbage
* collection with old plugin objects like class or skill instances. * collection with old plugin objects like class or skill instances.
@ -372,13 +367,6 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
@Override @Override
public void close() { public void close() {
// Remove from party if it is MMO Party Module
if (MMOCore.plugin.partyModule instanceof MMOCorePartyModule) {
AbstractParty party = getParty();
if (party != null && party instanceof Party)
((Party) party).removeMember(this);
}
// Close combat handler // Close combat handler
combat.close(); combat.close();
@ -760,9 +748,9 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
final double r = Math.sin((double) t / warpTime * Math.PI); final double r = Math.sin((double) t / warpTime * Math.PI);
for (double j = 0; j < Math.PI * 2; j += Math.PI / 4) for (double j = 0; j < Math.PI * 2; j += Math.PI / 4)
getPlayer().getLocation().getWorld().spawnParticle(Particle.REDSTONE, getPlayer().getLocation().add( getPlayer().getLocation().getWorld().spawnParticle(Particle.REDSTONE, getPlayer().getLocation().add(
Math.cos((double) 5 * t / warpTime + j) * r, Math.cos((double) 5 * t / warpTime + j) * r,
(double) 2 * t / warpTime, (double) 2 * t / warpTime,
Math.sin((double) 5 * t / warpTime + j) * r), Math.sin((double) 5 * t / warpTime + j) * r),
1, new Particle.DustOptions(Color.PURPLE, 1.25f)); 1, new Particle.DustOptions(Color.PURPLE, 1.25f));
} }
}.runTaskTimer(MMOCore.plugin, 0, 1); }.runTaskTimer(MMOCore.plugin, 0, 1);
@ -1211,7 +1199,7 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
* checks if they could potentially upgrade to one of these * checks if they could potentially upgrade to one of these
* *
* @return If the player can change its current class to * @return If the player can change its current class to
* a subclass * a subclass
*/ */
@Deprecated @Deprecated
public boolean canChooseSubclass() { public boolean canChooseSubclass() {

View File

@ -1,42 +1,52 @@
package net.Indyuce.mmocore.party.provided; package net.Indyuce.mmocore.party.provided;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.event.social.PartyChatEvent;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.manager.ConfigManager; import net.Indyuce.mmocore.manager.ConfigManager;
import net.Indyuce.mmocore.api.event.social.PartyChatEvent; import net.Indyuce.mmocore.party.AbstractParty;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerQuitEvent;
public class PartyListener implements Listener { public class PartyListener implements Listener {
private final MMOCorePartyModule module; private final MMOCorePartyModule module;
public PartyListener(MMOCorePartyModule module) { public PartyListener(MMOCorePartyModule module) {
this.module = module; this.module = module;
} }
@EventHandler(priority = EventPriority.LOW) @EventHandler(priority = EventPriority.LOW)
public void a(AsyncPlayerChatEvent event) { public void partyChat(AsyncPlayerChatEvent event) {
if (!event.getMessage().startsWith(MMOCore.plugin.configManager.partyChatPrefix)) if (!event.getMessage().startsWith(MMOCore.plugin.configManager.partyChatPrefix))
return; return;
PlayerData data = PlayerData.get(event.getPlayer()); PlayerData data = PlayerData.get(event.getPlayer());
Party party = module.getParty(data); Party party = module.getParty(data);
if (party == null) if (party == null)
return; return;
event.setCancelled(true); event.setCancelled(true);
// Running it in a delayed task is recommended // Running it in a delayed task is recommended
Bukkit.getScheduler().scheduleSyncDelayedTask(MMOCore.plugin, () -> { Bukkit.getScheduler().scheduleSyncDelayedTask(MMOCore.plugin, () -> {
ConfigManager.SimpleMessage format = MMOCore.plugin.configManager.getSimpleMessage("party-chat", "player", data.getPlayer().getName(), "message", ConfigManager.SimpleMessage format = MMOCore.plugin.configManager.getSimpleMessage("party-chat", "player", data.getPlayer().getName(), "message",
event.getMessage().substring(MMOCore.plugin.configManager.partyChatPrefix.length())); event.getMessage().substring(MMOCore.plugin.configManager.partyChatPrefix.length()));
PartyChatEvent called = new PartyChatEvent(party, data, format.message()); PartyChatEvent called = new PartyChatEvent(party, data, format.message());
Bukkit.getPluginManager().callEvent(called); Bukkit.getPluginManager().callEvent(called);
if (!called.isCancelled()) if (!called.isCancelled())
party.getOnlineMembers().forEach(member -> format.send(member.getPlayer())); party.getOnlineMembers().forEach(member -> format.send(member.getPlayer()));
}); });
} }
@EventHandler(priority = EventPriority.LOW)
public void leavePartyOnQuit(PlayerQuitEvent event) {
final PlayerData playerData = PlayerData.get(event.getPlayer());
final AbstractParty party = playerData.getParty();
if (party != null)
((Party) party).removeMember(playerData);
}
} }