diff --git a/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/Bridge.java b/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/Bridge.java index 9a03cfd87..f684faf2a 100644 --- a/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/Bridge.java +++ b/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/Bridge.java @@ -3,6 +3,7 @@ package com.djrapitops.pluginbridge.plan; import com.djrapitops.plugin.api.utility.log.Log; import com.djrapitops.pluginbridge.plan.advancedachievements.AdvancedAchievementsHook; import com.djrapitops.pluginbridge.plan.askyblock.ASkyBlockHook; +import com.djrapitops.pluginbridge.plan.banmanager.BanManagerHook; import com.djrapitops.pluginbridge.plan.essentials.EssentialsHook; import com.djrapitops.pluginbridge.plan.factions.FactionsHook; import com.djrapitops.pluginbridge.plan.griefprevention.GriefPreventionHook; @@ -19,8 +20,12 @@ import main.java.com.djrapitops.plan.Settings; import main.java.com.djrapitops.plan.data.additional.HookHandler; /** + * Manages connection to other plugins. + * * @author Rsl1122 * @see AdvancedAchievementsHook + * @see ASkyBlockHook + * @see BanManagerHook * @see EssentialsHook * @see FactionsHook * @see GriefPreventionHook @@ -45,6 +50,7 @@ public class Bridge { Hook[] hooks = new Hook[]{ new AdvancedAchievementsHook(h), new ASkyBlockHook(h), + new BanManagerHook(h), new EssentialsHook(h), new FactionsHook(h), new GriefPreventionHook(h), diff --git a/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/banmanager/BanManagerData.java b/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/banmanager/BanManagerData.java new file mode 100644 index 000000000..338b9e184 --- /dev/null +++ b/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/banmanager/BanManagerData.java @@ -0,0 +1,84 @@ +/* + * Licence is provided in the jar as license.yml also here: + * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml + */ +package com.djrapitops.pluginbridge.plan.banmanager; + +import main.java.com.djrapitops.plan.Plan; +import main.java.com.djrapitops.plan.data.additional.*; +import main.java.com.djrapitops.plan.utilities.FormatUtils; +import main.java.com.djrapitops.plan.utilities.html.Html; +import me.confuser.banmanager.BmAPI; +import me.confuser.banmanager.data.PlayerBanData; +import me.confuser.banmanager.data.PlayerMuteData; + +import java.util.Collection; +import java.util.UUID; +import java.util.stream.Collectors; + +/** + * PluginData for BanManager plugin. + * + * @author Rsl1122 + */ +public class BanManagerData extends PluginData implements BanData { + + public BanManagerData() { + super(ContainerSize.THIRD, "BanManager"); + super.setIconColor("red"); + super.setPluginIcon("gavel"); + } + + @Override + public InspectContainer getPlayerData(UUID uuid, InspectContainer inspectContainer) throws Exception { + boolean banned = BmAPI.isBanned(uuid); + boolean muted = BmAPI.isMuted(uuid); + + inspectContainer.addValue(getWithIcon("Banned", "gavel", "red"), banned ? "Yes" : "No"); + + if (banned) { + PlayerBanData currentBan = BmAPI.getCurrentBan(uuid); + String bannedBy = currentBan.getActor().getName(); + String link = Html.LINK.parse(Plan.getPlanAPI().getPlayerInspectPageLink(bannedBy), bannedBy); + long date = currentBan.getCreated(); + long ends = currentBan.getExpires(); + String reason = currentBan.getReason(); + + inspectContainer.addValue(" " + getWithIcon("Banned by", "user", "red"), link); + inspectContainer.addValue(" " + getWithIcon("Date", "calendar", "red"), FormatUtils.formatTimeStampYear(date)); + inspectContainer.addValue(" " + getWithIcon("Ends", "calendar-check-o", "red"), FormatUtils.formatTimeStampYear(ends)); + inspectContainer.addValue(" " + getWithIcon("Reason", "comment", "red"), reason); + } + inspectContainer.addValue(getWithIcon("Muted", "bell-slash-o", "deep-orange"), muted ? "Yes" : "No"); + if (muted) { + PlayerMuteData currentMute = BmAPI.getCurrentMute(uuid); + String mutedBy = currentMute.getActor().getName(); + String link = Html.LINK.parse(Plan.getPlanAPI().getPlayerInspectPageLink(mutedBy), mutedBy); + long date = currentMute.getCreated(); + long ends = currentMute.getExpires(); + String reason = currentMute.getReason(); + + inspectContainer.addValue(" " + getWithIcon("Muted by", "user", "deep-orange"), link); + inspectContainer.addValue(" " + getWithIcon("Date", "calendar", "deep-orange"), FormatUtils.formatTimeStampYear(date)); + inspectContainer.addValue(" " + getWithIcon("Ends", "calendar-check-o", "deep-orange"), FormatUtils.formatTimeStampYear(ends)); + inspectContainer.addValue(" " + getWithIcon("Reason", "comment", "deep-orange"), reason); + } + + return inspectContainer; + } + + @Override + public AnalysisContainer getServerData(Collection collection, AnalysisContainer analysisContainer) throws Exception { + return analysisContainer; + } + + @Override + public boolean isBanned(UUID uuid) { + return BmAPI.isBanned(uuid); + } + + @Override + public Collection filterBanned(Collection collection) { + return collection.stream().filter(BmAPI::isBanned).collect(Collectors.toList()); + } +} \ No newline at end of file diff --git a/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/banmanager/BanManagerHook.java b/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/banmanager/BanManagerHook.java new file mode 100644 index 000000000..33b9bd431 --- /dev/null +++ b/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/banmanager/BanManagerHook.java @@ -0,0 +1,29 @@ +/* + * Licence is provided in the jar as license.yml also here: + * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml + */ +package com.djrapitops.pluginbridge.plan.banmanager; + +import com.djrapitops.pluginbridge.plan.Hook; +import main.java.com.djrapitops.plan.data.additional.HookHandler; + +/** + * Hook for BanManager plugin. + * + * @author Rsl1122 + */ +public class BanManagerHook extends Hook { + + public BanManagerHook(HookHandler hookHandler) { + super("me.confuser.banmanager.BanManager", hookHandler); + } + + @Override + public void hook() throws NoClassDefFoundError { + if (!enabled) { + return; + } + + addPluginDataSource(new BanManagerData()); + } +} \ No newline at end of file diff --git a/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/towny/TownyData.java b/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/towny/TownyData.java index 280848a8d..cb8cb8c8d 100644 --- a/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/towny/TownyData.java +++ b/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/towny/TownyData.java @@ -48,17 +48,17 @@ public class TownyData extends PluginData { String townMayor = Html.LINK.parse(Plan.getPlanAPI().getPlayerInspectPageLink(mayorName), mayorName); inspectContainer.addValue(getWithIcon("Town", "bank", "brown"), townName); - inspectContainer.addValue(getWithIcon("Mayor", "user", "brown"), townMayor); + inspectContainer.addValue(" " + getWithIcon("Mayor", "user", "brown"), townMayor); try { Coord homeBlock = town.getHomeBlock().getCoord(); String coordinates = "x: " + homeBlock.getX() + " z: " + homeBlock.getZ(); - inspectContainer.addValue(getWithIcon("Coordinates", "map-pin", "red"), coordinates); + inspectContainer.addValue(" " + getWithIcon("Coordinates", "map-pin", "red"), coordinates); } catch (TownyException e) { } int residents = town.getResidents().size(); - inspectContainer.addValue(getWithIcon("Residents", "users", "brown"), residents); + inspectContainer.addValue(" " + getWithIcon("Residents", "users", "brown"), residents); } else { inspectContainer.addValue(getWithIcon("Town", "bank", "brown"), "No Town"); }