mirror of
https://github.com/TotalFreedomMC/TF-EssentialsX.git
synced 2025-02-11 11:49:12 +00:00
add delayed task for XMPP presence update
This commit is contained in:
parent
601bdbff46
commit
27ee587887
1 changed files with 74 additions and 49 deletions
|
@ -3,6 +3,9 @@ package com.earth2me.essentials.xmpp;
|
||||||
import com.earth2me.essentials.IEssentials;
|
import com.earth2me.essentials.IEssentials;
|
||||||
import com.earth2me.essentials.User;
|
import com.earth2me.essentials.User;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
import net.ess3.api.IUser;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
|
@ -10,64 +13,86 @@ import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import org.bukkit.Server;
|
||||||
|
|
||||||
|
|
||||||
class EssentialsXMPPPlayerListener implements Listener
|
class EssentialsXMPPPlayerListener implements Listener
|
||||||
{
|
{
|
||||||
private final transient IEssentials ess;
|
private final transient IEssentials ess;
|
||||||
|
|
||||||
EssentialsXMPPPlayerListener(final IEssentials ess)
|
EssentialsXMPPPlayerListener(final IEssentials ess)
|
||||||
{
|
{
|
||||||
super();
|
super();
|
||||||
this.ess = ess;
|
this.ess = ess;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onPlayerJoin(final PlayerJoinEvent event)
|
public void onPlayerJoin(final PlayerJoinEvent event)
|
||||||
{
|
{
|
||||||
final User user = ess.getUser(event.getPlayer());
|
final User user = ess.getUser(event.getPlayer());
|
||||||
sendMessageToSpyUsers("Player " + user.getDisplayName() + " joined the game");
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
Bukkit.getScheduler().scheduleSyncDelayedTask(ess, new Runnable()
|
||||||
public void onPlayerChat(final AsyncPlayerChatEvent event)
|
{
|
||||||
{
|
@Override
|
||||||
final User user = ess.getUser(event.getPlayer());
|
public void run()
|
||||||
sendMessageToSpyUsers(String.format(event.getFormat(), user.getDisplayName(), event.getMessage()));
|
{
|
||||||
}
|
EssentialsXMPP.updatePresence();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
sendMessageToSpyUsers("Player " + user.getDisplayName() + " joined the game");
|
||||||
public void onPlayerQuit(final PlayerQuitEvent event)
|
}
|
||||||
{
|
|
||||||
final User user = ess.getUser(event.getPlayer());
|
|
||||||
sendMessageToSpyUsers("Player " + user.getDisplayName() + " left the game");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void sendMessageToSpyUsers(final String message)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
{
|
public void onPlayerChat(final AsyncPlayerChatEvent event)
|
||||||
try
|
{
|
||||||
{
|
final User user = ess.getUser(event.getPlayer());
|
||||||
List<String> users = EssentialsXMPP.getInstance().getSpyUsers();
|
sendMessageToSpyUsers(String.format(event.getFormat(), user.getDisplayName(), event.getMessage()));
|
||||||
synchronized (users)
|
}
|
||||||
{
|
|
||||||
for (final String address : users)
|
|
||||||
{
|
|
||||||
Bukkit.getScheduler().scheduleSyncDelayedTask(ess, new Runnable()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
EssentialsXMPP.getInstance().sendMessage(address, message);
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
|
public void onPlayerQuit(final PlayerQuitEvent event)
|
||||||
|
{
|
||||||
|
final User user = ess.getUser(event.getPlayer());
|
||||||
|
|
||||||
}
|
Bukkit.getScheduler().scheduleSyncDelayedTask(ess, new Runnable()
|
||||||
}
|
{
|
||||||
}
|
@Override
|
||||||
catch (Exception ex)
|
public void run()
|
||||||
{
|
{
|
||||||
// Ignore exceptions
|
EssentialsXMPP.updatePresence();
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
|
|
||||||
|
sendMessageToSpyUsers("Player " + user.getDisplayName() + " left the game");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendMessageToSpyUsers(final String message)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
List<String> users = EssentialsXMPP.getInstance().getSpyUsers();
|
||||||
|
synchronized (users)
|
||||||
|
{
|
||||||
|
for (final String address : users)
|
||||||
|
{
|
||||||
|
Bukkit.getScheduler().scheduleSyncDelayedTask(ess, new Runnable()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
EssentialsXMPP.getInstance().sendMessage(address, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Ignore exceptions
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue