Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
package me.confuser.banmanager.webenhancer.bukkit;

import lombok.Getter;
import me.confuser.banmanager.bukkit.BMBukkitPlugin;
import me.confuser.banmanager.bukkit.BukkitCommand;
import me.confuser.banmanager.bukkit.BukkitScheduler;
import me.confuser.banmanager.bukkit.PluginLogger;
import org.bstats.bukkit.Metrics;
import me.confuser.banmanager.common.commands.CommonCommand;
import me.confuser.banmanager.common.configs.PluginInfo;
import me.confuser.banmanager.common.configuration.ConfigurationSection;
import me.confuser.banmanager.common.configuration.file.YamlConfiguration;
import me.confuser.banmanager.webenhancer.bukkit.listeners.LogServerAppender;
import me.confuser.banmanager.webenhancer.bukkit.listeners.ReportListener;
import me.confuser.banmanager.webenhancer.common.WebEnhancerPlugin;
import me.confuser.banmanager.webenhancer.bukkit.listeners.LogServerAppender;
import org.apache.logging.log4j.LogManager;
import org.bukkit.event.Listener;
import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;

import java.io.File;
Expand All @@ -35,23 +36,31 @@ public class BukkitPlugin extends JavaPlugin {

@Override
public void onEnable() {
BMBukkitPlugin banManager = (BMBukkitPlugin) Bukkit.getPluginManager().getPlugin("BanManager");
if (banManager == null || banManager.getPlugin() == null) {
getLogger().severe("BanManager is not enabled — cannot start BanManager-WebEnhancer.");
getPluginLoader().disablePlugin(this);
return;
}

PluginInfo pluginInfo;
try {
pluginInfo = setupConfigs();
} catch (IOException e) {
getPluginLoader().disablePlugin(this);
e.printStackTrace();
getLogger().log(java.util.logging.Level.WARNING, "Failed to set up plugin configuration", e);
return;
}

metrics = new Metrics(this, 8838);
plugin = new WebEnhancerPlugin(pluginInfo, new PluginLogger(getLogger()), getDataFolder(), new BukkitScheduler(this), new BukkitMetrics(metrics));
plugin = new WebEnhancerPlugin(pluginInfo, new PluginLogger(getLogger()), getDataFolder(),
new BukkitScheduler(this), new BukkitMetrics(metrics), banManager.getPlugin());

try {
plugin.enable();
} catch (Exception e) {
getPluginLoader().disablePlugin(this);
e.printStackTrace();
getLogger().log(java.util.logging.Level.WARNING, "Failed to enable BanManager-WebEnhancer", e);
return;
}

Expand Down Expand Up @@ -102,7 +111,7 @@ private PluginInfo setupConfigs() throws IOException {
public void setupCommands() {
for (CommonCommand cmd : plugin.getCommands()) {
try {
getCommand(cmd.getCommandName()).setExecutor(new BukkitCommand(cmd));
getCommand(cmd.getCommandName()).setExecutor(new BukkitCommand(plugin.getBanManagerPlugin(), cmd));
} catch (NullPointerException e) {
plugin.getLogger().severe("Failed to register /" + cmd.getCommandName() + " command");
}
Expand All @@ -113,10 +122,6 @@ public void setupListeners() {
appender = new LogServerAppender(plugin);
((org.apache.logging.log4j.core.Logger) LogManager.getRootLogger()).addAppender(appender);

registerEvent(new ReportListener(this));
}

private void registerEvent(Listener listener) {
getServer().getPluginManager().registerEvents(listener, this);
new ReportListener(this);
}
}
Original file line number Diff line number Diff line change
@@ -1,50 +1,54 @@
package me.confuser.banmanager.webenhancer.bukkit.listeners;

import me.confuser.banmanager.common.ormlite.stmt.DeleteBuilder;
import me.confuser.banmanager.bukkit.api.events.PlayerBannedEvent;
import me.confuser.banmanager.bukkit.api.events.PlayerReportDeletedEvent;
import me.confuser.banmanager.bukkit.api.events.PlayerReportedEvent;
import me.confuser.banmanager.bukkit.api.events.PlayerDeniedEvent;
import me.confuser.banmanager.bukkit.api.events.PluginReloadedEvent;
import me.confuser.banmanager.common.util.Message;
import me.confuser.banmanager.api.event.player.PlayerReportDeletedEvent;
import me.confuser.banmanager.api.event.player.PlayerReportedEvent;
import me.confuser.banmanager.api.event.player.PluginReloadedEvent;
import me.confuser.banmanager.common.BanManagerPlugin;
import me.confuser.banmanager.common.data.PlayerReportData;
import me.confuser.banmanager.common.ormlite.stmt.DeleteBuilder;
import me.confuser.banmanager.webenhancer.bukkit.BukkitPlugin;
import me.confuser.banmanager.webenhancer.common.data.LogData;
import me.confuser.banmanager.webenhancer.common.data.ReportLogData;
import me.confuser.banmanager.webenhancer.common.listeners.CommonPlayerDeniedListener;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
import me.confuser.banmanager.common.BanManagerPlugin;

public class ReportListener implements Listener {
/**
* Bridges Bukkit's report lifecycle into WebEnhancer storage.
*
* <p>Subscribes to the cross-platform {@link me.confuser.banmanager.api.event.EventBus}
* — the per-platform {@code PlayerDeniedEvent}/{@code PlayerBannedEvent}
* handlers that used to live here have been consolidated into
* {@link me.confuser.banmanager.webenhancer.common.listeners.CommonPlayerDeniedListener}.</p>
*/
public class ReportListener {
private final BukkitPlugin plugin;
private CommonPlayerDeniedListener listener;
private final BanManagerPlugin banManagerPlugin;

public ReportListener(BukkitPlugin plugin) {
this.plugin = plugin;
this.listener = new CommonPlayerDeniedListener(plugin.getPlugin());
this.banManagerPlugin = plugin.getPlugin().getBanManagerPlugin();

var events = plugin.getPlugin().getBanManagerService().events();
events.subscribe(PlayerReportedEvent.class, this::notifyOnReport);
events.subscribe(PlayerReportDeletedEvent.class, this::reportDeleted);
events.subscribe(PluginReloadedEvent.class, e -> plugin.getPlugin().setupConfigs());
}

@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
public void notifyOnReport(PlayerReportedEvent event) {
private void notifyOnReport(PlayerReportedEvent event) {
List<LogData> logs;
Queue<LogData> queue = plugin.getAppender().getQueue();
synchronized (queue) {
logs = new ArrayList<>(queue);
}

final int reportId = event.getReport().getId();
final int reportId = event.report().id();

BanManagerPlugin.getInstance().getScheduler().runAsync(() -> {
banManagerPlugin.getScheduler().runAsync(() -> {
try {
PlayerReportData report = BanManagerPlugin.getInstance()
.getPlayerReportStorage().queryForId(reportId);
PlayerReportData report = banManagerPlugin.getPlayerReportStorage().queryForId(reportId);

if (report == null) return;

Expand All @@ -53,44 +57,21 @@ public void notifyOnReport(PlayerReportedEvent event) {
plugin.getPlugin().getReportLogStorage().create(new ReportLogData(report, log));
}
} catch (SQLException e) {
e.printStackTrace();
plugin.getPlugin().getLogger().warning("Failed to attach report logs: " + e.getMessage());
}
});
}

@EventHandler
public void reportDeleted(PlayerReportDeletedEvent event) {
int id = event.getReport().getId();
private void reportDeleted(PlayerReportDeletedEvent event) {
int id = event.report().id();

DeleteBuilder<ReportLogData, Integer> builder = plugin.getPlugin().getReportLogStorage().deleteBuilder();

try {
builder.where().eq("report_id", id);
builder.delete();
} catch (SQLException e) {
e.printStackTrace();
plugin.getLogger().warning("Failed to delete report associations for " + id);
}
}

@EventHandler
public void onDeny(PlayerDeniedEvent event) {
listener.handlePin(event.getPlayer(), event.getMessage());
}

@EventHandler(priority = EventPriority.MONITOR)
public void onBanned(PlayerBannedEvent event) {
try {
Message kickMessage = event.getKickMessage();
if (kickMessage != null) {
listener.handlePin(event.getBan().getPlayer(), kickMessage);
}
} catch (NoSuchMethodError ignored) {
}
}

@EventHandler
public void onReload(PluginReloadedEvent event) {
plugin.getPlugin().setupConfigs();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,11 @@ public void execute(CommandSender sender, String[] args) {
}

private CommonSender getSender(CommandSender source) {
BanManagerPlugin banManagerPlugin = plugin.getPlugin().getBanManagerPlugin();
if (source instanceof ProxiedPlayer) {
return new BungeePlayer((ProxiedPlayer) source, BanManagerPlugin.getInstance().getConfig().isOnlineMode());
return new BungeePlayer(banManagerPlugin, (ProxiedPlayer) source, banManagerPlugin.getConfig().isOnlineMode());
} else {
return new BungeeSender(BanManagerPlugin.getInstance(), source);
return new BungeeSender(banManagerPlugin, source);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
package me.confuser.banmanager.webenhancer.bungee;

import lombok.Getter;
import me.confuser.banmanager.bungee.BMBungeePlugin;
import me.confuser.banmanager.bungee.BungeeScheduler;
import me.confuser.banmanager.bungee.PluginLogger;
import me.confuser.banmanager.common.commands.CommonCommand;
import me.confuser.banmanager.common.configs.PluginInfo;
import me.confuser.banmanager.common.configuration.ConfigurationSection;
import me.confuser.banmanager.common.configuration.file.YamlConfiguration;
import me.confuser.banmanager.webenhancer.bungee.BungeeCommand;
import me.confuser.banmanager.webenhancer.common.WebEnhancerPlugin;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.api.plugin.Plugin;
import org.bstats.bungeecord.Metrics;
import me.confuser.banmanager.webenhancer.bungee.listeners.*;

import java.io.*;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.file.Files;

public class BungeePlugin extends Plugin {
Expand All @@ -29,25 +31,31 @@ public class BungeePlugin extends Plugin {

@Override
public void onEnable() {
BMBungeePlugin banManager = (BMBungeePlugin) getProxy().getPluginManager().getPlugin("BanManager");
if (banManager == null || banManager.getPlugin() == null) {
getLogger().severe("BanManager is not enabled — cannot start BanManager-WebEnhancer.");
return;
}

PluginInfo pluginInfo;
try {
pluginInfo = setupConfigs();
} catch (IOException e) {
e.printStackTrace();
getLogger().log(java.util.logging.Level.WARNING, "Failed to set up plugin configuration", e);
return;
}

metrics = new Metrics(this, 14539);
plugin = new WebEnhancerPlugin(pluginInfo, new PluginLogger(getLogger()), getDataFolder(), new BungeeScheduler(this), new BungeeMetrics(metrics));
plugin = new WebEnhancerPlugin(pluginInfo, new PluginLogger(getLogger()), getDataFolder(),
new BungeeScheduler(this), new BungeeMetrics(metrics), banManager.getPlugin());

try {
plugin.enable();
} catch (Exception e) {
e.printStackTrace();
getLogger().log(java.util.logging.Level.WARNING, "Failed to enable BanManager-WebEnhancer", e);
return;
}

setupListeners();
setupCommands();
}

Expand Down Expand Up @@ -101,12 +109,4 @@ private void setupCommands() {

getLogger().info("Registered commands");
}

public void setupListeners() {
registerEvent(new BanListener(this));
}

private void registerEvent(Listener listener) {
getProxy().getPluginManager().registerListener(this, listener);
}
}

This file was deleted.

1 change: 1 addition & 0 deletions common/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ applyPlatformAndCoreConfiguration()
dependencies {
api(project(":BanManagerWebEnhancerLibs"))

api("me.confuser.banmanager:BanManagerAPI:8.0.0-SNAPSHOT")
api("me.confuser.banmanager:BanManagerCommon:8.0.0-SNAPSHOT")
api("me.confuser.banmanager.BanManagerLibs:BanManagerLibs:8.0.0-SNAPSHOT")

Expand Down
Loading
Loading