Skip to content

Commit

Permalink
Support BetterTeams. Bump version
Browse files Browse the repository at this point in the history
  • Loading branch information
PikaMug committed Feb 26, 2025
1 parent d0c4de0 commit eb633de
Show file tree
Hide file tree
Showing 9 changed files with 309 additions and 4 deletions.
10 changes: 8 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>me.pikamug.unite</groupId>
<artifactId>Unite</artifactId>
<version>1.1.8</version>
<version>1.2.0</version>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Expand All @@ -27,7 +27,7 @@
<url>https://repo.alessiodp.com/releases/</url>
</repository>
<repository>
<!-- DungeonsXL -->
<!-- BetterTeams, DungeonsXL -->
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
Expand Down Expand Up @@ -68,6 +68,12 @@
<version>3.2.9</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.booksaw</groupId>
<artifactId>BetterTeams</artifactId>
<version>4.11.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.PikaMug</groupId>
<artifactId>DungeonsXL-Dummy</artifactId>
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/me/pikamug/unite/Unite.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package me.pikamug.unite;

import me.pikamug.unite.api.objects.PartyProvider;
import me.pikamug.unite.api.objects.plugins.PartyProvider_BetterTeams;
import me.pikamug.unite.api.objects.plugins.PartyProvider_DungeonsXL;
import me.pikamug.unite.api.objects.plugins.PartyProvider_PAF;
import me.pikamug.unite.api.objects.plugins.PartyProvider_PAFGUI;
Expand Down Expand Up @@ -57,6 +58,7 @@ public static Unite getInstance() {

public void hookProviders() {
hookProvider("Parties", PartyProvider_Parties.class, ServicePriority.Highest, "com.alessiodp.parties.api.interfaces.PartiesAPI");
hookProvider("BetterTeams", PartyProvider_BetterTeams.class, ServicePriority.Normal, "com.booksaw.betterTeams.Main");
hookProvider("DungeonsXL", PartyProvider_DungeonsXL.class, ServicePriority.Normal, "de.erethon.dungeonsxl.DungeonsXL");
hookProvider("mcMMO", PartyProvider_mcMMO.class, ServicePriority.High, "com.gmail.nossr50.party.PartyManager");
hookProvider("PartyAndFriends", PartyProvider_PAF.class, ServicePriority.Normal, "de.simonsator.partyandfriends.main.PAFPlugin");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package me.pikamug.unite.api.events.betterteams;

import com.booksaw.betterTeams.customEvents.CreateTeamEvent;
import me.pikamug.unite.api.events.PartyCreateEvent;
import me.pikamug.unite.api.objects.PartyProvider;
import org.bukkit.event.Event;
import org.jetbrains.annotations.NotNull;

import java.util.Objects;
import java.util.UUID;

public class PartyCreateEvent_BetterTeams extends PartyCreateEvent {
private final PartyProvider partyProvider;
private final CreateTeamEvent event;

public PartyCreateEvent_BetterTeams(PartyProvider partyProvider, Event event, boolean async) {
super(async);
this.partyProvider = partyProvider;
this.event = (CreateTeamEvent) event;
}

@Override
public Event getPluginEvent() {
return event;
}

@Override
public @NotNull PartyProvider getPartyProvider() {
return partyProvider;
}

@Override
public UUID getCreator() {
return Objects.requireNonNull(event.getPlayer()).getUniqueId();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package me.pikamug.unite.api.events.betterteams;

import com.booksaw.betterTeams.customEvents.DisbandTeamEvent;
import me.pikamug.unite.api.events.PartyDeleteEvent;
import me.pikamug.unite.api.objects.PartyProvider;
import org.bukkit.event.Event;
import org.jetbrains.annotations.NotNull;

import java.util.Objects;
import java.util.UUID;

public class PartyDeleteEvent_BetterTeams extends PartyDeleteEvent {
private final PartyProvider partyProvider;
private final DisbandTeamEvent event;

public PartyDeleteEvent_BetterTeams(PartyProvider partyProvider, Event event, boolean async) {
super(async);
this.partyProvider = partyProvider;
this.event = (DisbandTeamEvent) event;
}

@Override
public Event getPluginEvent() {
return event;
}

@Override
public @NotNull PartyProvider getPartyProvider() {
return partyProvider;
}

@Override
public UUID getDisbander() {
return Objects.requireNonNull(event.getPlayer()).getUniqueId();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package me.pikamug.unite.api.events.betterteams;

import com.booksaw.betterTeams.customEvents.PlayerJoinTeamEvent;
import me.pikamug.unite.api.events.PartyJoinEvent;
import me.pikamug.unite.api.objects.PartyProvider;
import org.bukkit.event.Event;
import org.jetbrains.annotations.NotNull;

import java.util.UUID;

public class PartyJoinEvent_BetterTeams extends PartyJoinEvent {
private final PartyProvider partyProvider;
private final PlayerJoinTeamEvent event;

public PartyJoinEvent_BetterTeams(PartyProvider partyProvider, Event event, boolean async) {
super(async);
this.partyProvider = partyProvider;
this.event = (PlayerJoinTeamEvent) event;
}

@Override
public Event getPluginEvent() {
return event;
}

@Override
public @NotNull PartyProvider getPartyProvider() {
return partyProvider;
}

@Override
public UUID getPlayer() {
return event.getPlayer().getUniqueId();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package me.pikamug.unite.api.events.betterteams;

import com.booksaw.betterTeams.customEvents.PlayerLeaveTeamEvent;
import me.pikamug.unite.api.events.PartyLeaveEvent;
import me.pikamug.unite.api.objects.PartyProvider;
import org.bukkit.event.Event;
import org.jetbrains.annotations.NotNull;

import java.util.UUID;

public class PartyLeaveEvent_BetterTeams extends PartyLeaveEvent {
private final PartyProvider partyProvider;
private final PlayerLeaveTeamEvent event;

public PartyLeaveEvent_BetterTeams(PartyProvider partyProvider, Event event, boolean async) {
super(async);
this.partyProvider = partyProvider;
this.event = (PlayerLeaveTeamEvent) event;
}

@Override
public Event getPluginEvent() {
return event;
}

@Override
public @NotNull PartyProvider getPartyProvider() {
return partyProvider;
}

@Override
public UUID getPlayer() {
return event.getPlayer().getUniqueId();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
package me.pikamug.unite.api.objects.plugins;

import com.booksaw.betterTeams.Main;
import com.booksaw.betterTeams.PlayerRank;
import com.booksaw.betterTeams.Team;
import com.booksaw.betterTeams.customEvents.CreateTeamEvent;
import com.booksaw.betterTeams.customEvents.DisbandTeamEvent;
import com.booksaw.betterTeams.customEvents.PlayerJoinTeamEvent;
import com.booksaw.betterTeams.customEvents.PlayerLeaveTeamEvent;
import me.pikamug.unite.api.events.PartyCreateEvent;
import me.pikamug.unite.api.events.PartyDeleteEvent;
import me.pikamug.unite.api.events.PartyJoinEvent;
import me.pikamug.unite.api.events.PartyLeaveEvent;
import me.pikamug.unite.api.events.betterteams.PartyCreateEvent_BetterTeams;
import me.pikamug.unite.api.events.betterteams.PartyDeleteEvent_BetterTeams;
import me.pikamug.unite.api.events.betterteams.PartyJoinEvent_BetterTeams;
import me.pikamug.unite.api.events.betterteams.PartyLeaveEvent_BetterTeams;
import me.pikamug.unite.api.objects.PartyProvider;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.server.PluginDisableEvent;
import org.bukkit.event.server.PluginEnableEvent;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;

import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;

public class PartyProvider_BetterTeams extends PartyProvider {
private Main betterTeams;
private final String pluginName = "BetterTeams";

public PartyProvider_BetterTeams(Plugin plugin) {
this.plugin = plugin;
plugin.getServer().getPluginManager().registerEvents(new PartyServerListener(this), plugin);

if (betterTeams == null) {
betterTeams = (Main) Bukkit.getPluginManager().getPlugin(pluginName);
}
}

public class PartyServerListener implements Listener {
final PartyProvider_BetterTeams partyPlugin;

public PartyServerListener(PartyProvider_BetterTeams partyPlugin) {
this.partyPlugin = partyPlugin;
}

@EventHandler(priority = EventPriority.MONITOR)
public void onPluginEnable(PluginEnableEvent event) {
if (event.getPlugin().getDescription().getName().equals(pluginName)) {
log.info(String.format("[%s][Party] %s hooked.", plugin.getDescription().getName(), partyPlugin.pluginName));
}
}

@EventHandler(priority = EventPriority.MONITOR)
public void onPluginDisable(PluginDisableEvent event) {
if (event.getPlugin().getDescription().getName().equals(pluginName)) {
log.info(String.format("[%s][Party] %s un-hooked.", plugin.getDescription().getName(), partyPlugin.pluginName));
}
}

@EventHandler
public void onPartyCreate(final CreateTeamEvent pluginEvent) {
final PartyCreateEvent event = new PartyCreateEvent_BetterTeams(partyPlugin, pluginEvent, pluginEvent.isAsynchronous());
plugin.getServer().getPluginManager().callEvent(event);
}

@EventHandler
public void onPartyDelete(final DisbandTeamEvent pluginEvent) {
final PartyDeleteEvent event = new PartyDeleteEvent_BetterTeams(partyPlugin, pluginEvent, pluginEvent.isAsynchronous());
plugin.getServer().getPluginManager().callEvent(event);
}

@EventHandler
public void onPartyJoin(final PlayerJoinTeamEvent pluginEvent) {
final PartyJoinEvent event = new PartyJoinEvent_BetterTeams(partyPlugin, pluginEvent, pluginEvent.isAsynchronous());
plugin.getServer().getPluginManager().callEvent(event);
}

@EventHandler
public void onPartyLeave(final PlayerLeaveTeamEvent pluginEvent) {
final PartyLeaveEvent event = new PartyLeaveEvent_BetterTeams(partyPlugin, pluginEvent, pluginEvent.isAsynchronous());
plugin.getServer().getPluginManager().callEvent(event);
}
}

@Override
public boolean isPluginEnabled() {
if (betterTeams == null) {
return false;
}
if (plugin.getServer().getPluginManager().getPlugin(pluginName) != null) {
return Objects.requireNonNull(plugin.getServer().getPluginManager().getPlugin(pluginName)).isEnabled();
}
return false;
}

@Override
public @NotNull String getPluginName() {
return pluginName;
}

@Override
public boolean createParty(String partyName, UUID playerId) {
return Team.getTeamManager().createNewTeam(partyName, plugin.getServer().getPlayer(playerId)) != null;
}

@Override
public boolean isPlayerInParty(UUID playerId) {
return Team.getTeamManager().isInTeam(plugin.getServer().getOfflinePlayer(playerId));
}

@Override
public boolean areInSameParty(UUID playerId1, UUID playerId2) {
final Team one = Team.getTeam(plugin.getServer().getOfflinePlayer(playerId1));
final Team two = Team.getTeam(plugin.getServer().getOfflinePlayer(playerId2));
return one != null && two != null && one.getID().equals(two.getID());
}

@Override
public String getPartyName(UUID playerId) {
return Team.getTeam(plugin.getServer().getOfflinePlayer(playerId)).getName();
}

@Override
public String getPartyId(UUID playerId) {
return Team.getTeam(plugin.getServer().getOfflinePlayer(playerId)).getID().toString();
}

@Override
public UUID getLeader(String partyId) {
final Team team = Team.getTeam(UUID.fromString(partyId));
if (team != null) {
return team.getMembers().getRank(PlayerRank.OWNER).get(0).getPlayer().getUniqueId();
}
return null;
}

@Override
public Set<UUID> getMembers(String partyId) {
return Team.getTeam(UUID.fromString(partyId)).getMembers().getOfflinePlayers().stream().map(OfflinePlayer::getUniqueId).collect(Collectors.toSet());
}

@Override
public Set<UUID> getOnlineMembers(String partyId) {
return Team.getTeam(UUID.fromString(partyId)).getOnlineMembers().stream().map(Player::getUniqueId).collect(Collectors.toSet());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public PartyProvider_mcMMO(Plugin plugin) {
plugin.getServer().getPluginManager().registerEvents(new PartyServerListener(this), plugin);

if (mcmmo == null) {
mcmmo = (mcMMO) Bukkit.getPluginManager().getPlugin("mcMMO");
mcmmo = (mcMMO) Bukkit.getPluginManager().getPlugin(pluginName);
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ api-version: 1.13
description: Abstraction library for Minecraft party plugins
dev-url: https://github.com/PikaMug/Unite
author: PikaMug
softdepend: [DungeonsXL, mcMMO, Parties, PartyAndFriends, PartyAndFriendsGUI, SimpleClans]
softdepend: [BetterTeams, DungeonsXL, mcMMO, Parties, PartyAndFriends, PartyAndFriendsGUI, SimpleClans]

commands:
unite:
Expand Down

0 comments on commit eb633de

Please sign in to comment.