mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-10-04 01:18:15 +02:00
AdvancedBan support (#688)
+ Make Hook not check if the class extends JavaPlugin
This commit is contained in:
parent
5ad7f3f591
commit
9d45fa1c40
@ -19,6 +19,7 @@ softdepend:
|
||||
- ProtocolSupport
|
||||
- Kingdoms
|
||||
- RedProtect
|
||||
- AdvancedBan
|
||||
|
||||
commands:
|
||||
plan:
|
||||
|
@ -129,7 +129,7 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.gmail.nossr50</groupId>
|
||||
<artifactId>mcmmo</artifactId>
|
||||
<artifactId>mcMMO</artifactId>
|
||||
<version>1.5.07</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
@ -161,7 +161,7 @@
|
||||
<dependency>
|
||||
<groupId>net.kaikk.mc</groupId>
|
||||
<artifactId>GriefPreventionPlus</artifactId>
|
||||
<version>RELEASE</version>
|
||||
<version>13.3</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@ -230,6 +230,12 @@
|
||||
<version>6.549</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>me.leoko</groupId>
|
||||
<artifactId>advancedban</artifactId>
|
||||
<version>2.1.5</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<finalName>${project.artifactId}</finalName>
|
||||
|
@ -6,6 +6,7 @@ import com.djrapitops.plugin.api.Check;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
import com.djrapitops.pluginbridge.plan.aac.AdvancedAntiCheatHook;
|
||||
import com.djrapitops.pluginbridge.plan.advancedachievements.AdvancedAchievementsHook;
|
||||
import com.djrapitops.pluginbridge.plan.advancedban.AdvancedBanHook;
|
||||
import com.djrapitops.pluginbridge.plan.askyblock.ASkyBlockHook;
|
||||
import com.djrapitops.pluginbridge.plan.banmanager.BanManagerHook;
|
||||
import com.djrapitops.pluginbridge.plan.buycraft.BuyCraftHook;
|
||||
@ -64,13 +65,16 @@ public class Bridge {
|
||||
}
|
||||
|
||||
private static Hook[] getBungeeHooks(HookHandler h) {
|
||||
return new Hook[0];
|
||||
return new Hook[]{
|
||||
new AdvancedBanHook(h)
|
||||
};
|
||||
}
|
||||
|
||||
private static Hook[] getBukkitHooks(HookHandler h) {
|
||||
return new Hook[]{
|
||||
new AdvancedAntiCheatHook(h),
|
||||
new AdvancedAchievementsHook(h),
|
||||
new AdvancedBanHook(h),
|
||||
new ASkyBlockHook(h),
|
||||
new BanManagerHook(h),
|
||||
new BuyCraftHook(h),
|
||||
|
@ -2,9 +2,6 @@ package com.djrapitops.pluginbridge.plan;
|
||||
|
||||
import com.djrapitops.plan.data.plugin.HookHandler;
|
||||
import com.djrapitops.plan.data.plugin.PluginData;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
|
||||
|
||||
/**
|
||||
* Abstract class for easy hooking of plugins.
|
||||
@ -35,11 +32,9 @@ public abstract class Hook {
|
||||
public Hook(String plugin, HookHandler hookHandler) {
|
||||
this.hookHandler = hookHandler;
|
||||
try {
|
||||
Class<?> givenClass = Class.forName(plugin);
|
||||
Class<? extends JavaPlugin> pluginClass = (Class<? extends JavaPlugin>) givenClass;
|
||||
JavaPlugin hookedPlugin = getPlugin(pluginClass);
|
||||
enabled = hookedPlugin.isEnabled();
|
||||
} catch (NoClassDefFoundError | NoSuchFieldError | NoSuchMethodError | Exception e) {
|
||||
Class.forName(plugin);
|
||||
enabled = true;
|
||||
} catch (Exception e) {
|
||||
enabled = false;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,105 @@
|
||||
/*
|
||||
* 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.advancedban;
|
||||
|
||||
import com.djrapitops.plan.api.PlanAPI;
|
||||
import com.djrapitops.plan.data.element.AnalysisContainer;
|
||||
import com.djrapitops.plan.data.element.InspectContainer;
|
||||
import com.djrapitops.plan.data.plugin.ContainerSize;
|
||||
import com.djrapitops.plan.data.plugin.PluginData;
|
||||
import com.djrapitops.plan.data.store.keys.AnalysisKeys;
|
||||
import com.djrapitops.plan.utilities.FormatUtils;
|
||||
import com.djrapitops.plan.utilities.html.Html;
|
||||
import com.djrapitops.plan.utilities.html.HtmlUtils;
|
||||
import com.djrapitops.plan.utilities.html.icon.Color;
|
||||
import com.djrapitops.plan.utilities.html.icon.Family;
|
||||
import com.djrapitops.plan.utilities.html.icon.Icon;
|
||||
import com.djrapitops.plan.utilities.html.icon.Icons;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
import me.leoko.advancedban.manager.PunishmentManager;
|
||||
import me.leoko.advancedban.manager.UUIDManager;
|
||||
import me.leoko.advancedban.utils.Punishment;
|
||||
import me.leoko.advancedban.utils.PunishmentType;
|
||||
|
||||
/**
|
||||
* PluginData for AdvancedBan plugin.
|
||||
*
|
||||
* @author Vankka
|
||||
*/
|
||||
public class AdvancedBanData extends PluginData {
|
||||
public AdvancedBanData() {
|
||||
super(ContainerSize.THIRD, "AdvancedBan");
|
||||
setPluginIcon(Icons.BANNED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public InspectContainer getPlayerData(UUID uuid, InspectContainer inspectContainer) {
|
||||
String abUuid = uuid.toString().replace("-", "");
|
||||
|
||||
if (uuid.version() == 3) { // Cracked / Offline UUID
|
||||
return inspectContainer;
|
||||
}
|
||||
|
||||
Punishment ban = PunishmentManager.get().getBan(abUuid);
|
||||
Punishment mute = PunishmentManager.get().getMute(abUuid);
|
||||
long warnings = PunishmentManager.get().getWarns(abUuid).stream().filter(warning -> !warning.isExpired()).count();
|
||||
|
||||
inspectContainer.addValue(getWithIcon("Banned", Icons.BANNED), ban != null ? "Yes" : "No");
|
||||
inspectContainer.addValue(getWithIcon("Muted", Icon.called("bell-slash").of(Color.DEEP_ORANGE)), mute != null ? "Yes" : "No");
|
||||
inspectContainer.addValue(getWithIcon("Warnings", Icon.called("flag").of(Color.YELLOW)), warnings);
|
||||
|
||||
if (ban != null) {
|
||||
String operator = ban.getOperator();
|
||||
String link = Html.LINK.parse(PlanAPI.getInstance().getPlayerInspectPageLink(operator), operator);
|
||||
String reason = HtmlUtils.swapColorsToSpan(ban.getReason());
|
||||
long start = ban.getStart();
|
||||
String end = FormatUtils.formatTimeStampYear(ban.getEnd());
|
||||
|
||||
if (ban.getType() == PunishmentType.BAN || ban.getType() == PunishmentType.IP_BAN) { // Permanent
|
||||
end = "Permanent ban";
|
||||
}
|
||||
|
||||
if (operator.equals("CONSOLE")) {
|
||||
link = "CONSOLE";
|
||||
}
|
||||
|
||||
inspectContainer.addValue(" " + getWithIcon("Operator", Icon.called("user").of(Color.RED)), link);
|
||||
inspectContainer.addValue(" " + getWithIcon("Date", Icon.called("calendar").of(Color.RED).of(Family.REGULAR)), FormatUtils.formatTimeStampYear(start));
|
||||
inspectContainer.addValue(" " + getWithIcon("Ends", Icon.called("calendar-check").of(Color.RED).of(Family.REGULAR)), end);
|
||||
inspectContainer.addValue(" " + getWithIcon("Reason", Icon.called("comment").of(Color.RED).of(Family.REGULAR)), reason);
|
||||
}
|
||||
|
||||
if (mute != null) {
|
||||
String operator = mute.getOperator();
|
||||
String link = Html.LINK.parse(PlanAPI.getInstance().getPlayerInspectPageLink(operator), operator);
|
||||
String reason = HtmlUtils.swapColorsToSpan(mute.getReason());
|
||||
long start = mute.getStart();
|
||||
String end = FormatUtils.formatTimeStampYear(mute.getEnd());
|
||||
|
||||
if (mute.getType() == PunishmentType.MUTE) { // Permanent
|
||||
end = "Permanent mute";
|
||||
}
|
||||
|
||||
if (operator.equals("CONSOLE")) {
|
||||
link = "CONSOLE";
|
||||
}
|
||||
|
||||
inspectContainer.addValue(" " + getWithIcon("Operator", Icon.called("user").of(Color.DEEP_ORANGE)), link);
|
||||
inspectContainer.addValue(" " + getWithIcon("Date", Icon.called("calendar").of(Color.DEEP_ORANGE).of(Family.REGULAR)), FormatUtils.formatTimeStampYear(start));
|
||||
inspectContainer.addValue(" " + getWithIcon("Ends", Icon.called("calendar-check").of(Color.DEEP_ORANGE).of(Family.REGULAR)), end);
|
||||
inspectContainer.addValue(" " + getWithIcon("Reason", Icon.called("comment").of(Color.DEEP_ORANGE).of(Family.REGULAR)), reason);
|
||||
}
|
||||
|
||||
return inspectContainer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AnalysisContainer getServerData(Collection<UUID> uuids, AnalysisContainer analysisContainer) {
|
||||
return analysisContainer;
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* 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.advancedban;
|
||||
|
||||
import com.djrapitops.pluginbridge.plan.Hook;
|
||||
import com.djrapitops.plan.data.plugin.HookHandler;
|
||||
|
||||
/**
|
||||
* Hook for AdvancedBan plugin.
|
||||
*
|
||||
* @author Vankka
|
||||
*/
|
||||
public class AdvancedBanHook extends Hook {
|
||||
public AdvancedBanHook(HookHandler hookHandler) {
|
||||
super("me.leoko.advancedban.Universal", hookHandler);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hook() throws NoClassDefFoundError {
|
||||
if (enabled) {
|
||||
addPluginDataSource(new AdvancedBanData());
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user