Skip to content
Merged
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
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Project metadata
group=xyz.earthcow.networkjoinmessages
version=3.2.0
version=3.3.0
description=A plugin handling join, leave and swap messages for proxy servers.

# Plugin.yml metadata
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import xyz.earthcow.networkjoinmessages.bungee.events.BungeeNetworkLeaveEvent;
import xyz.earthcow.networkjoinmessages.bungee.events.BungeeSwapServerEvent;
import xyz.earthcow.networkjoinmessages.bungee.listeners.BungeeDiscordListener;
import xyz.earthcow.networkjoinmessages.bungee.listeners.BungeePremiumVanishListener;
import xyz.earthcow.networkjoinmessages.bungee.listeners.PlayerListener;
import xyz.earthcow.networkjoinmessages.common.Core;
import xyz.earthcow.networkjoinmessages.common.abstraction.*;
Expand Down Expand Up @@ -57,7 +58,18 @@ public void onEnable() {
this.bungeeLogger = new BungeeLogger(getLogger());
this.console = new BungeeCommandSender(getProxy().getConsole());

this.core = new Core(this);
if (isPluginLoaded("PremiumVanish")) {
this.premiumVanish = new BungeePremiumVanish();
}

this.core = new Core(this, premiumVanish);

if (premiumVanish != null) {
getProxy()
.getPluginManager()
.registerListener(this, new BungeePremiumVanishListener(core.getCorePremiumVanishListener(), manager));
bungeeLogger.info("Successfully hooked into PremiumVanish!");
}

instance = this;

Expand All @@ -78,11 +90,6 @@ public void onEnable() {
.getPluginManager()
.registerCommand(this, new ToggleCommand(core.getCoreToggleJoinCommand()));

if (getProxy().getPluginManager().getPlugin("PremiumVanish") != null) {
this.premiumVanish = new BungeePremiumVanish();
bungeeLogger.info("Successfully hooked into PremiumVanish!");
}

for (CustomChart chart : core.getCustomCharts()) {
metrics.addCustomChart(chart);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public class BungeePlayer implements CorePlayer {
private final Audience audience;
private String cachedLeaveMessage;
private boolean disconnecting = false;
private boolean premiumVanishHidden = false;

public BungeePlayer(ProxiedPlayer bungeePlayer) {
this.bungeePlayer = bungeePlayer;
Expand Down Expand Up @@ -97,4 +98,14 @@ public boolean isDisconnecting() {
public void setDisconnecting() {
this.disconnecting = true;
}

@Override
public boolean getPremiumVanishHidden() {
return premiumVanishHidden;
}

@Override
public void setPremiumVanishHidden(boolean premiumVanishHidden) {
this.premiumVanishHidden = premiumVanishHidden;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package xyz.earthcow.networkjoinmessages.bungee.listeners;

import de.myzelyam.api.vanish.BungeePlayerHideEvent;
import de.myzelyam.api.vanish.BungeePlayerShowEvent;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.event.EventHandler;
import xyz.earthcow.networkjoinmessages.common.abstraction.CorePlayer;
import xyz.earthcow.networkjoinmessages.common.abstraction.PlayerManager;
import xyz.earthcow.networkjoinmessages.common.listeners.CorePremiumVanishListener;

public class BungeePremiumVanishListener implements Listener {

private final CorePremiumVanishListener corePremiumVanishListener;
private final PlayerManager manager;

public BungeePremiumVanishListener(CorePremiumVanishListener corePremiumVanishListener, PlayerManager manager) {
this.corePremiumVanishListener = corePremiumVanishListener;
this.manager = manager;
}

@EventHandler
public void premiumVanishShowEvent(BungeePlayerShowEvent event) {
CorePlayer p = manager.getPlayer(event.getPlayer().getUniqueId());
if (p == null) return;
corePremiumVanishListener.handlePremiumVanishShow(p);
}

@EventHandler
public void premiumVanishHideEvent(BungeePlayerHideEvent event) {
CorePlayer p = manager.getPlayer(event.getPlayer().getUniqueId());
if (p == null) return;
corePremiumVanishListener.handlePremiumVanishHide(p);
}

}
19 changes: 14 additions & 5 deletions src/main/java/xyz/earthcow/networkjoinmessages/common/Core.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,17 @@
import lombok.Getter;
import org.bstats.charts.CustomChart;
import xyz.earthcow.networkjoinmessages.common.abstraction.CorePlugin;
import xyz.earthcow.networkjoinmessages.common.abstraction.PremiumVanish;
import xyz.earthcow.networkjoinmessages.common.commands.CoreImportCommand;
import xyz.earthcow.networkjoinmessages.common.commands.CoreReloadCommand;
import xyz.earthcow.networkjoinmessages.common.commands.CoreSpoofCommand;
import xyz.earthcow.networkjoinmessages.common.commands.CoreToggleJoinCommand;
import xyz.earthcow.networkjoinmessages.common.listeners.CorePlayerListener;
import xyz.earthcow.networkjoinmessages.common.listeners.CorePremiumVanishListener;
import xyz.earthcow.networkjoinmessages.common.modules.DiscordIntegration;
import xyz.earthcow.networkjoinmessages.common.modules.SayanVanishHook;
import xyz.earthcow.networkjoinmessages.common.util.Formatter;
import xyz.earthcow.networkjoinmessages.common.util.SpoofManager;

import java.util.Collection;

Expand All @@ -26,7 +29,9 @@ public class Core {
private final CoreReloadCommand coreReloadCommand;
private final CoreToggleJoinCommand coreToggleJoinCommand;

public Core(CorePlugin plugin) {
private final CorePremiumVanishListener corePremiumVanishListener;

public Core(CorePlugin plugin, PremiumVanish premiumVanish) {
this.plugin = plugin;

ConfigManager configManager = new ConfigManager(plugin);
Expand All @@ -40,18 +45,22 @@ public Core(CorePlugin plugin) {
}

Storage storage = new Storage(plugin, configManager);
Formatter formatter = new Formatter(plugin, storage);
Formatter formatter = new Formatter(plugin, storage, storage.getPPBRequestTimeout());
MessageHandler messageHandler = new MessageHandler(plugin, storage, formatter, sayanVanishHook);
SpoofManager spoofManager = new SpoofManager(plugin, storage, messageHandler);
DiscordIntegration discordIntegration = new DiscordIntegration(plugin, storage, formatter, messageHandler, configManager.getDiscordConfig());

this.customCharts = storage.getCustomCharts();

this.corePlayerListener = new CorePlayerListener(plugin, storage, messageHandler, sayanVanishHook);
this.corePlayerListener = new CorePlayerListener(plugin, storage, messageHandler, sayanVanishHook, premiumVanish);

this.coreImportCommand = new CoreImportCommand(corePlayerListener.getPlayerJoinTracker());
this.coreSpoofCommand = new CoreSpoofCommand(plugin, storage, messageHandler);
this.coreReloadCommand = new CoreReloadCommand(plugin, configManager, storage, discordIntegration, messageHandler);
this.coreSpoofCommand = new CoreSpoofCommand(storage, messageHandler, spoofManager);
this.coreReloadCommand = new CoreReloadCommand(plugin, configManager, storage, formatter, messageHandler, discordIntegration);
this.coreToggleJoinCommand = new CoreToggleJoinCommand(storage, messageHandler);

this.corePremiumVanishListener = premiumVanish == null ? null :
new CorePremiumVanishListener(plugin.getCoreLogger(), storage, spoofManager);

}
}
15 changes: 13 additions & 2 deletions src/main/java/xyz/earthcow/networkjoinmessages/common/Storage.java
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,9 @@ public final class Storage {
private String swapServerMessageRequires = "ANY";

/// Other plugins
// PAPIProxyBridge
@Getter
private long PPBRequestTimeout;
// SayanVanish
@Getter
private boolean SVTreatVanishedPlayersAsSilent;
Expand All @@ -140,6 +143,10 @@ public final class Storage {
private boolean PVTreatVanishedPlayersAsSilent;
@Getter
private boolean PVRemoveVanishedPlayersFromPlayerCount;
@Getter
private boolean PVSpoofJoinMessageOnShow;
@Getter
private boolean PVSpoofLeaveMessageOnHide;
// LimboAPI
@Getter
private boolean shouldSuppressLimboSwap;
Expand Down Expand Up @@ -191,8 +198,8 @@ public void setUpDefaultValuesFromConfig() {
this.consoleSilentLeave = config.getString("Messages.Misc.ConsoleSilentLeave");

// Command messages
this.noMoreArgumentsNeeded = config.getString("Messages.Commands.Spoof.NoMoreArgumentsNeeded");
this.noPermission = config.getString("Messages.Commands.Spoof.NoPermission");
this.noMoreArgumentsNeeded = config.getString("Messages.Commands.NoMoreArgumentsNeeded");
this.noPermission = config.getString("Messages.Commands.NoPermission");

this.spoofNoArgument = config.getString("Messages.Commands.Spoof.NoArgument");
this.spoofSwapNoArgument = config.getString("Messages.Commands.Spoof.SwapNoArgument");
Expand Down Expand Up @@ -242,11 +249,15 @@ public void setUpDefaultValuesFromConfig() {
this.serverJoinMessageDisabled = config.getStringList("Settings.IgnoreJoinMessagesList");
this.serverLeaveMessageDisabled = config.getStringList("Settings.IgnoreLeaveMessagesList");

this.PPBRequestTimeout = config.getLong("OtherPlugins.PAPIProxyBridge.RequestTimeout");

this.SVTreatVanishedPlayersAsSilent = config.getBoolean("OtherPlugins.SayanVanish.TreatVanishedPlayersAsSilent");
this.SVRemoveVanishedPlayersFromPlayerCount = config.getBoolean("OtherPlugins.SayanVanish.RemoveVanishedPlayersFromPlayerCount");

this.PVTreatVanishedPlayersAsSilent = config.getBoolean("OtherPlugins.PremiumVanish.TreatVanishedPlayersAsSilent");
this.PVRemoveVanishedPlayersFromPlayerCount = config.getBoolean("OtherPlugins.PremiumVanish.RemoveVanishedPlayersFromPlayerCount");
this.PVSpoofJoinMessageOnShow = config.getBoolean("OtherPlugins.PremiumVanish.SpoofJoinMessageOnShow");
this.PVSpoofLeaveMessageOnHide = config.getBoolean("OtherPlugins.PremiumVanish.SpoofLeaveMessageOnHide");

this.shouldSuppressLimboSwap = config.getBoolean("OtherPlugins.LimboAPI.SuppressSwapMessages");
this.shouldSuppressLimboJoin = config.getBoolean("OtherPlugins.LimboAPI.SuppressJoinMessages");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,7 @@ public interface CorePlayer extends CoreCommandSender {

boolean isDisconnecting();
void setDisconnecting();

boolean getPremiumVanishHidden();
void setPremiumVanishHidden(boolean premiumVanishHidden);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import xyz.earthcow.networkjoinmessages.common.abstraction.CoreCommandSender;
import xyz.earthcow.networkjoinmessages.common.abstraction.CorePlugin;
import xyz.earthcow.networkjoinmessages.common.modules.DiscordIntegration;
import xyz.earthcow.networkjoinmessages.common.util.Formatter;

import java.util.List;

Expand All @@ -14,22 +15,25 @@ public class CoreReloadCommand implements Command {
private final CorePlugin plugin;
private final ConfigManager configManager;
private final Storage storage;
private final DiscordIntegration discordIntegration;
private final Formatter formatter;
private final MessageHandler messageHandler;
private final DiscordIntegration discordIntegration;

public CoreReloadCommand(CorePlugin plugin, ConfigManager configManager, Storage storage, DiscordIntegration discordIntegration, MessageHandler messageHandler) {
public CoreReloadCommand(CorePlugin plugin, ConfigManager configManager, Storage storage, Formatter formatter, MessageHandler messageHandler, DiscordIntegration discordIntegration) {
this.plugin = plugin;
this.configManager = configManager;
this.storage = storage;
this.discordIntegration = discordIntegration;
this.formatter = formatter;
this.messageHandler = messageHandler;
this.discordIntegration = discordIntegration;
}

@Override
public void execute(CoreCommandSender coreCommandSender, String[] args) {
if (coreCommandSender.hasPermission("networkjoinmessages.reload")) {
configManager.reload();
storage.setUpDefaultValuesFromConfig();
formatter.setPPBRequestTimeout(storage.getPPBRequestTimeout());
discordIntegration.loadVariables();
messageHandler.initCacheTasks();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,7 @@
import xyz.earthcow.networkjoinmessages.common.Storage;
import xyz.earthcow.networkjoinmessages.common.abstraction.CoreCommandSender;
import xyz.earthcow.networkjoinmessages.common.abstraction.CorePlayer;
import xyz.earthcow.networkjoinmessages.common.abstraction.CorePlugin;
import xyz.earthcow.networkjoinmessages.common.events.NetworkJoinEvent;
import xyz.earthcow.networkjoinmessages.common.events.NetworkLeaveEvent;
import xyz.earthcow.networkjoinmessages.common.events.SwapServerEvent;
import xyz.earthcow.networkjoinmessages.common.util.Formatter;
import xyz.earthcow.networkjoinmessages.common.util.MessageType;
import xyz.earthcow.networkjoinmessages.common.util.SpoofManager;

import java.util.List;

Expand All @@ -22,14 +17,14 @@ public class CoreSpoofCommand implements Command {
"join", "leave", "swap", "toggle"
);

private final CorePlugin plugin;
private final Storage storage;
private final MessageHandler messageHandler;
private final SpoofManager spoofManager;

public CoreSpoofCommand(CorePlugin plugin, Storage storage, MessageHandler messageHandler) {
this.plugin = plugin;
public CoreSpoofCommand(Storage storage, MessageHandler messageHandler, SpoofManager spoofManager) {
this.storage = storage;
this.messageHandler = messageHandler;
this.spoofManager = spoofManager;
}

@Override
Expand All @@ -55,36 +50,12 @@ public void execute(CoreCommandSender coreCommandSender, String[] args) {
return;
}

String currentServerName = player.getCurrentServer().getName();
String currentServerDisplayName = storage.getServerDisplayName(currentServerName);

String message;
Component formattedMessage;

switch (args[0].toLowerCase()) {
case "join":
message = messageHandler.formatJoinMessage(player);
formattedMessage = Formatter.deserialize(message);

messageHandler.broadcastMessage(message, MessageType.JOIN, player);

plugin.fireEvent(new NetworkJoinEvent(
player, currentServerName, currentServerDisplayName, false, false,
Formatter.serialize(formattedMessage),
Formatter.sanitize(formattedMessage)
));
spoofManager.spoofJoin(player);
return;
case "leave":
message = messageHandler.formatLeaveMessage(player);
formattedMessage = Formatter.deserialize(message);

messageHandler.broadcastMessage(message, MessageType.LEAVE, player);

plugin.fireEvent(new NetworkLeaveEvent(
player, currentServerName, currentServerDisplayName, false,
Formatter.serialize(formattedMessage),
Formatter.sanitize(formattedMessage)
));
spoofManager.spoofLeave(player);
return;
case "swap":
if (args.length < 3) {
Expand All @@ -94,23 +65,10 @@ public void execute(CoreCommandSender coreCommandSender, String[] args) {
);
return;
}
String fromName = args[1];
String toName = args[2];

String fromDisplayName = storage.getServerDisplayName(fromName);
String toDisplayName = storage.getServerDisplayName(toName);

message = messageHandler.parseSwapMessage(player, fromName, toName);

formattedMessage = Formatter.deserialize(message);

messageHandler.broadcastMessage(message, MessageType.SWAP, fromName, toName, player);
String from = args[1];
String to = args[2];

plugin.fireEvent(new SwapServerEvent(
player, fromName, toName, fromDisplayName, toDisplayName, false,
Formatter.serialize(formattedMessage),
Formatter.sanitize(formattedMessage)
));
spoofManager.spoofSwap(player, from, to);
return;
case "toggle":
if (!player.hasPermission("networkjoinmessages.silent")) {
Expand Down
Loading