2017-12-31 03:58:20 +00:00
package me.totalfreedom.totalfreedommod ;
import java.text.DecimalFormat ;
import me.totalfreedom.totalfreedommod.util.FUtil ;
2018-01-07 19:33:58 +00:00
import org.bukkit.ChatColor ;
2017-12-31 03:58:20 +00:00
import org.bukkit.Location ;
import org.bukkit.Material ;
import org.bukkit.entity.Player ;
import org.bukkit.event.entity.LingeringPotionSplashEvent ;
import org.bukkit.event.EventHandler ;
import org.bukkit.event.EventPriority ;
import org.bukkit.event.entity.PotionSplashEvent ;
import org.bukkit.projectiles.ProjectileSource ;
public class Monitors extends FreedomService
{
private final DecimalFormat decimalFormat = new DecimalFormat ( " # " ) ;
2018-01-07 19:33:58 +00:00
private String potionSpyPrefix = ChatColor . DARK_GRAY + " [ " + ChatColor . YELLOW + " PotionSpy " + ChatColor . DARK_GRAY + " ] " ;
2017-12-31 03:58:20 +00:00
public Monitors ( TotalFreedomMod plugin )
{
super ( plugin ) ;
}
@Override
protected void onStart ( )
{
}
@Override
protected void onStop ( )
{
}
public String getMaterial ( final int id )
{
2018-01-07 19:33:58 +00:00
return String . valueOf ( Material . getMaterial ( id ) ) . replace ( " _ " , " " ) . toLowerCase ( ) ;
2017-12-31 03:58:20 +00:00
}
2018-01-07 19:33:58 +00:00
@EventHandler ( priority = EventPriority . MONITOR )
2017-12-31 03:58:20 +00:00
public void onLingeringPotionSplash ( LingeringPotionSplashEvent event )
{
ProjectileSource source = event . getEntity ( ) . getShooter ( ) ;
if ( ! ( source instanceof Player ) )
{
return ;
}
Player player = ( Player ) source ;
if ( plugin . al . isAdmin ( ( Player ) event . getEntity ( ) . getShooter ( ) ) )
{
return ;
}
final int droppedItem = event . getEntity ( ) . getItem ( ) . getTypeId ( ) ;
final Location location = player . getLocation ( ) ;
for ( Player p : server . getOnlinePlayers ( ) )
{
2018-05-22 23:01:24 +00:00
if ( plugin . al . isAdmin ( p ) & & plugin . al . getAdmin ( p ) . getPotionSpy ( ) )
2017-12-31 03:58:20 +00:00
{
2018-01-07 19:33:58 +00:00
FUtil . playerMsg ( p , potionSpyPrefix + ChatColor . WHITE + player . getName ( ) + " splashed " + event . getEntity ( ) . getItem ( ) . getAmount ( ) + " " + getMaterial ( droppedItem ) + " at X: " + decimalFormat . format ( location . getX ( ) ) + " , Y: " + decimalFormat . format ( location . getY ( ) ) + " , Z: " + decimalFormat . format ( location . getZ ( ) ) + " , in the world ' " + location . getWorld ( ) . getName ( ) + " '. " ) ;
2017-12-31 03:58:20 +00:00
}
}
}
2018-01-07 19:33:58 +00:00
@EventHandler ( priority = EventPriority . MONITOR )
2017-12-31 03:58:20 +00:00
public void onPotionSplash ( PotionSplashEvent event )
{
ProjectileSource source = event . getEntity ( ) . getShooter ( ) ;
if ( ! ( source instanceof Player ) )
{
return ;
}
Player player = ( Player ) source ;
if ( plugin . al . isAdmin ( ( Player ) event . getEntity ( ) . getShooter ( ) ) )
{
return ;
}
final int droppedItem = event . getPotion ( ) . getItem ( ) . getTypeId ( ) ;
final Location location = player . getLocation ( ) ;
for ( Player p : server . getOnlinePlayers ( ) )
{
if ( plugin . al . isAdmin ( p ) & & plugin . pl . getPlayer ( p ) . isPotionMonitorEnabled ( ) )
{
2018-01-07 19:33:58 +00:00
FUtil . playerMsg ( p , potionSpyPrefix + ChatColor . WHITE + player . getName ( ) + " splashed " + event . getEntity ( ) . getItem ( ) . getAmount ( ) + " " + getMaterial ( droppedItem ) + " at X: " + decimalFormat . format ( location . getX ( ) ) + " , Y: " + decimalFormat . format ( location . getY ( ) ) + " , Z: " + decimalFormat . format ( location . getZ ( ) ) + " , in the world ' " + location . getWorld ( ) . getName ( ) + " '. " ) ;
2017-12-31 03:58:20 +00:00
}
}
}
}