mirror of
https://gitlab.com/phoenix-dvpmt/mmocore.git
synced 2025-11-18 06:24:17 +01:00
New options to entirely disable parties & guilds
This commit is contained in:
parent
dcb3db9eca
commit
7a902d0af2
@ -7,13 +7,19 @@ import io.lumine.mythic.lib.skill.result.SkillResult;
|
||||
import io.lumine.mythic.lib.skill.trigger.TriggerMetadata;
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.guild.GuildModule;
|
||||
import net.Indyuce.mmocore.party.AbstractParty;
|
||||
import net.Indyuce.mmocore.party.PartyModule;
|
||||
import net.Indyuce.mmocore.skill.CastableSkill;
|
||||
import net.Indyuce.mmocore.skill.ClassSkill;
|
||||
import net.Indyuce.mmocore.skill.RegisteredSkill;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@ -28,7 +34,7 @@ public class MMOCoreAPI {
|
||||
return PlayerData.get(player);
|
||||
}
|
||||
|
||||
public boolean isInSameParty(Player player1, Player player2) {
|
||||
public boolean isInSameParty(@NotNull Player player1, @NotNull Player player2) {
|
||||
AbstractParty party = MMOCore.plugin.partyModule.getParty(PlayerData.get(player1));
|
||||
return party != null && party.hasMember(player2);
|
||||
}
|
||||
@ -112,4 +118,26 @@ public class MMOCoreAPI {
|
||||
RegisteredSkill registered = Objects.requireNonNull(MMOCore.plugin.skillManager.getSkill(skill.getId()), "Could not find registered skill with such handler");
|
||||
return new CastableSkill(new ClassSkill(registered, 0, 0), level).cast(triggerMeta);
|
||||
}
|
||||
|
||||
public void setPartyModule(@NotNull PartyModule module) {
|
||||
Validate.notNull(module, "Party module cannot be null");
|
||||
|
||||
// TODO fix once MythicLib has modules well defined
|
||||
PartyModule current = MMOCore.plugin.partyModule;
|
||||
if (current != null && current instanceof Listener)
|
||||
HandlerList.unregisterAll((Listener) MMOCore.plugin.partyModule);
|
||||
|
||||
MMOCore.plugin.partyModule = module;
|
||||
}
|
||||
|
||||
public void setGuildModule(@NotNull GuildModule module) {
|
||||
Validate.notNull(module, "Guild module cannot be null");
|
||||
|
||||
// TODO fix once MythicLib has modules well defined
|
||||
GuildModule current = MMOCore.plugin.guildModule;
|
||||
if (current != null && current instanceof Listener)
|
||||
HandlerList.unregisterAll((Listener) current);
|
||||
|
||||
MMOCore.plugin.guildModule = module;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
package net.Indyuce.mmocore.guild;
|
||||
|
||||
import net.Indyuce.mmocore.guild.compat.KingdomsXGuildModule;
|
||||
import net.Indyuce.mmocore.guild.compat.GuildsGuildModule;
|
||||
import net.Indyuce.mmocore.guild.compat.KingdomsXGuildModule;
|
||||
import net.Indyuce.mmocore.guild.compat.UltimateClansGuildModule;
|
||||
import net.Indyuce.mmocore.guild.provided.MMOCoreGuildModule;
|
||||
import net.Indyuce.mmocore.guild.provided.NoneGuildModule;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import javax.inject.Provider;
|
||||
@ -11,9 +12,10 @@ import javax.inject.Provider;
|
||||
public enum GuildModuleType {
|
||||
// Useless since MythicLib already supports FactionBridge
|
||||
// FACTIONS("Factions", FactionsGuildModule::new),
|
||||
MMOCORE("MMOCore", MMOCoreGuildModule::new),
|
||||
NONE("MMOCore", NoneGuildModule::new),
|
||||
GUILDS("Guilds", GuildsGuildModule::new),
|
||||
KINGDOMSX("Kingdoms", KingdomsXGuildModule::new),
|
||||
MMOCORE("MMOCore", MMOCoreGuildModule::new),
|
||||
ULTIMATE_CLANS("UltimateClans", UltimateClansGuildModule::new),
|
||||
;
|
||||
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
package net.Indyuce.mmocore.guild.provided;
|
||||
|
||||
import io.lumine.mythic.lib.comp.interaction.relation.Relationship;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.guild.AbstractGuild;
|
||||
import net.Indyuce.mmocore.guild.GuildModule;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class NoneGuildModule implements GuildModule {
|
||||
@Override
|
||||
public @Nullable AbstractGuild getGuild(PlayerData playerData) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull Relationship getRelationship(Player player, Player target) {
|
||||
return Relationship.GUILD_NEUTRAL;
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,7 @@
|
||||
package net.Indyuce.mmocore.party;
|
||||
|
||||
import net.Indyuce.mmocore.party.compat.*;
|
||||
import net.Indyuce.mmocore.party.provided.NonePartyModule;
|
||||
import net.Indyuce.mmocore.party.provided.MMOCorePartyModule;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
@ -8,6 +9,7 @@ import javax.inject.Provider;
|
||||
|
||||
public enum PartyModuleType {
|
||||
MMOCORE("MMOCore", MMOCorePartyModule::new),
|
||||
NONE("MMOCore", NonePartyModule::new),
|
||||
// DUNGEONS("Dungeons", DungeonsPartyModule::new),
|
||||
DUNGEONSXL("DungeonsXL", DungeonsXLPartyModule::new),
|
||||
HEROES("Heroes", HeroesPartyModule::new),
|
||||
@ -39,7 +41,7 @@ public enum PartyModuleType {
|
||||
}
|
||||
|
||||
public boolean isValid() {
|
||||
return Bukkit.getPluginManager().getPlugin(pluginName) != null;
|
||||
return pluginName == null || Bukkit.getPluginManager().getPlugin(pluginName) != null;
|
||||
}
|
||||
|
||||
public PartyModule provideModule() {
|
||||
|
||||
@ -1,19 +1,27 @@
|
||||
package net.Indyuce.mmocore.party.provided;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.ConfigMessage;
|
||||
import net.Indyuce.mmocore.api.event.social.PartyChatEvent;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.party.AbstractParty;
|
||||
import net.Indyuce.mmocore.party.PartyModule;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class MMOCorePartyModule implements PartyModule {
|
||||
public class MMOCorePartyModule implements PartyModule, Listener {
|
||||
protected final Set<Party> parties = new HashSet<>();
|
||||
protected final Map<UUID, Party> playerParties = new HashMap<>();
|
||||
|
||||
public MMOCorePartyModule() {
|
||||
Bukkit.getPluginManager().registerEvents(new PartyListener(this), MMOCore.plugin);
|
||||
Bukkit.getPluginManager().registerEvents(this, MMOCore.plugin);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@ -49,4 +57,31 @@ public class MMOCorePartyModule implements PartyModule {
|
||||
public void setParty(PlayerData playerData, Party party) {
|
||||
this.playerParties.put(playerData.getUniqueId(), party);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
public void partyChat(AsyncPlayerChatEvent event) {
|
||||
if (!event.getMessage().startsWith(MMOCore.plugin.configManager.partyChatPrefix)) return;
|
||||
|
||||
PlayerData data = PlayerData.get(event.getPlayer());
|
||||
Party party = this.getParty(data);
|
||||
if (party == null) return;
|
||||
|
||||
event.setCancelled(true);
|
||||
|
||||
// Running it in a delayed task is recommended
|
||||
Bukkit.getScheduler().runTask(MMOCore.plugin, () -> {
|
||||
ConfigMessage message = ConfigMessage.fromKey("party-chat", "player", data.getPlayer().getName(), "message",
|
||||
event.getMessage().substring(MMOCore.plugin.configManager.partyChatPrefix.length()));
|
||||
PartyChatEvent called = new PartyChatEvent(party, data, message.asLine());
|
||||
Bukkit.getPluginManager().callEvent(called);
|
||||
if (!called.isCancelled()) party.getOnlineMembers().forEach(member -> message.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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
package net.Indyuce.mmocore.party.provided;
|
||||
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.party.AbstractParty;
|
||||
import net.Indyuce.mmocore.party.PartyModule;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class NonePartyModule implements PartyModule {
|
||||
|
||||
@Override
|
||||
public @Nullable AbstractParty getParty(@NotNull PlayerData playerData) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -1,50 +0,0 @@
|
||||
package net.Indyuce.mmocore.party.provided;
|
||||
|
||||
import net.Indyuce.mmocore.MMOCore;
|
||||
import net.Indyuce.mmocore.api.ConfigMessage;
|
||||
import net.Indyuce.mmocore.api.event.social.PartyChatEvent;
|
||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||
import net.Indyuce.mmocore.party.AbstractParty;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
||||
public class PartyListener implements Listener {
|
||||
private final MMOCorePartyModule module;
|
||||
|
||||
public PartyListener(MMOCorePartyModule module) {
|
||||
this.module = module;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
public void partyChat(AsyncPlayerChatEvent event) {
|
||||
if (!event.getMessage().startsWith(MMOCore.plugin.configManager.partyChatPrefix))
|
||||
return;
|
||||
|
||||
PlayerData data = PlayerData.get(event.getPlayer());
|
||||
Party party = module.getParty(data);
|
||||
if (party == null)
|
||||
return;
|
||||
|
||||
event.setCancelled(true);
|
||||
|
||||
// Running it in a delayed task is recommended
|
||||
Bukkit.getScheduler().runTask(MMOCore.plugin, () -> {
|
||||
ConfigMessage message = ConfigMessage.fromKey("party-chat", "player", data.getPlayer().getName(), "message",
|
||||
event.getMessage().substring(MMOCore.plugin.configManager.partyChatPrefix.length()));
|
||||
PartyChatEvent called = new PartyChatEvent(party, data, message.asLine());
|
||||
Bukkit.getPluginManager().callEvent(called);
|
||||
if (!called.isCancelled()) party.getOnlineMembers().forEach(member -> message.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);
|
||||
}
|
||||
}
|
||||
@ -60,6 +60,7 @@ protect-custom-mine: false
|
||||
# Choose the plugin handling parties here.
|
||||
# Supported values (just copy and paste):
|
||||
# - mmocore (Default built-in party system)
|
||||
# - none (Used to fully disable parties)
|
||||
# - dungeonsxl
|
||||
# - heroes
|
||||
# - mcmmo
|
||||
@ -73,7 +74,8 @@ party-plugin: mmocore
|
||||
|
||||
# Edit the plugin handling guilds here.
|
||||
# Supported values (just copy and paste):
|
||||
# - mmocore
|
||||
# - mmocore (Default built-in guild system
|
||||
# - none (Used to fully disable guilds)
|
||||
# - guilds
|
||||
# - kingdomsx
|
||||
# - ultimate_clans
|
||||
|
||||
Loading…
Reference in New Issue
Block a user