Package com.forgeessentials.playerlogger

Source Code of com.forgeessentials.playerlogger.EventLogger

package com.forgeessentials.playerlogger;

import java.util.ArrayList;
import java.util.List;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntityCommandBlock;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.BlockSnapshot;
import net.minecraftforge.event.CommandEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action;
import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.event.world.BlockEvent.BreakEvent;

import com.forgeessentials.api.APIRegistry;
import com.forgeessentials.playerlogger.types.BlockChangeType;
import com.forgeessentials.playerlogger.types.BlockChangeType.blockChangeLogCategory;
import com.forgeessentials.playerlogger.types.CommandType;
import com.forgeessentials.playerlogger.types.PlayerTrackerType;
import com.forgeessentials.util.UserIdent;
import com.forgeessentials.util.events.ServerEventHandler;

import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.eventhandler.EventPriority;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.PlayerEvent;
import cpw.mods.fml.relauncher.Side;

public class EventLogger extends ServerEventHandler {
  public static boolean logPlayerChangedDimension = true;
  public static boolean logPlayerRespawn = true;
  public static boolean logItemUsage = true;
  public static boolean logBlockChanges = true;
  public static boolean logPlayerLoginLogout = true;
  public static boolean logCommands_Player = true;
  public static boolean logCommands_Block = true;
  public static boolean logCommands_rest = true;
    public static boolean logDeathDrops = true;
  public static boolean BlockChange_WhiteList_Use = false;
  public static ArrayList<Integer> BlockChange_WhiteList = new ArrayList<Integer>();
  public static ArrayList<Integer> BlockChange_BlackList = new ArrayList<Integer>();
  public static List<String> exempt_players = new ArrayList<String>();
  public static List<String> exempt_groups = new ArrayList<String>();
  public Side side = FMLCommonHandler.instance().getEffectiveSide();

  public EventLogger()
  {
    MinecraftForge.EVENT_BUS.register(this);
  }

  public static boolean exempt(EntityPlayer player)
  {
    for (String un : exempt_players)
    {
      if (un.replaceAll("\"", "").equalsIgnoreCase(player.getPersistentID().toString()))
      {
        return true;
      }
    }
    for (String group : APIRegistry.perms.getPlayerGroups(new UserIdent(player)))
    {
      if (exempt_groups.contains(group))
      {
        return true;
      }
    }
    return false;
  }

  @SubscribeEvent
  public void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent e)
  {
    if (logPlayerLoginLogout && side.isServer())
    {
      if (exempt(e.player))
      {
        return;
      }
      new PlayerTrackerType(PlayerTrackerType.Types.Login, e.player, "");
    }
  }

  @SubscribeEvent
  public void onPlayerLogout(PlayerEvent.PlayerLoggedOutEvent e)
  {
    if (logPlayerLoginLogout && side.isServer())
    {
      if (exempt(e.player))
      {
        return;
      }
      new PlayerTrackerType(PlayerTrackerType.Types.Logout, e.player, "");
    }
  }

  @SubscribeEvent
  public void onPlayerChangedDimension(PlayerEvent.PlayerChangedDimensionEvent e)
  {
    if (logPlayerChangedDimension && side.isServer())
    {
      if (exempt(e.player))
      {
        return;
      }
      new PlayerTrackerType(PlayerTrackerType.Types.ChangedDim, e.player, "");
    }
  }

  @SubscribeEvent
  public void onPlayerRespawn(PlayerEvent.PlayerRespawnEvent e)
  {
    if (logPlayerRespawn && side.isServer())
    {
      if (exempt(e.player))
      {
        return;
      }
      new PlayerTrackerType(PlayerTrackerType.Types.Respawn, e.player, "");
    }
  }

  @SubscribeEvent(priority = EventPriority.LOWEST)
  public void command(CommandEvent e)
  {
    if (logCommands_Player && !e.isCanceled() && e.sender instanceof EntityPlayer && side.isServer())
    {
      if (exempt((EntityPlayer) e.sender))
      {
        return;
      }
      new CommandType(e.sender.getCommandSenderName(), getCommand(e));
      return;
    }
    if (logCommands_Block && !e.isCanceled() && e.sender instanceof TileEntityCommandBlock && side.isServer())
    {
      new CommandType(e.sender.getCommandSenderName(), getCommand(e));
      return;
    }
    if (logCommands_rest && !e.isCanceled() && side.isServer())
    {
      new CommandType(e.sender.getCommandSenderName(), getCommand(e));
      return;
    }
  }

  @SubscribeEvent(priority = EventPriority.LOWEST)
  public void playerBlockBreak(BreakEvent e)
  {
    if (logBlockChanges && !e.isCanceled() && side.isServer())
    {
      if (exempt(e.getPlayer()))
      {
        return;
      }

      new BlockChangeType(blockChangeLogCategory.broke, e.getPlayer(), e.block.getUnlocalizedName() + ":" + e.blockMetadata, e.x, e.y, e.z,
          e.world.getTileEntity(e.x, e.y, e.z));
    }
  }

    @SubscribeEvent(priority = EventPriority.LOWEST)
    public void playerBlockPlace(BlockEvent.PlaceEvent e)
    {
        if (logBlockChanges && !e.isCanceled() && side.isServer())
        {
            if (exempt(e.player))
            {
                return;
            }
            if (BlockChange_WhiteList_Use && !BlockChange_WhiteList.contains(e.player.dimension))
            {
                return;
            }
            if (BlockChange_BlackList.contains(e.player.dimension) && !BlockChange_WhiteList.contains(e.player.dimension))
            {
                return;
            }

            String block = "";
            if (e.player.inventory.getCurrentItem() != null)
            {
                block = e.player.inventory.getCurrentItem().getUnlocalizedName() + ":" + e.player.inventory.getCurrentItem().getItemDamage();
            }

            new BlockChangeType(blockChangeLogCategory.placed, e.player, block, e.x, e.y, e.z, null);
        }
    }

    @SubscribeEvent(priority = EventPriority.LOWEST)
    public void playerBlockPlace(BlockEvent.MultiPlaceEvent e)
    {
        if (logBlockChanges && !e.isCanceled() && side.isServer())
        {
            if (exempt(e.player))
            {
                return;
            }
            if (BlockChange_WhiteList_Use && !BlockChange_WhiteList.contains(e.player.dimension))
            {
                return;
            }
            if (BlockChange_BlackList.contains(e.player.dimension) && !BlockChange_WhiteList.contains(e.player.dimension))
            {
                return;
            }

            String block = "";
            if (e.player.inventory.getCurrentItem() != null)
            {
                block = e.player.inventory.getCurrentItem().getUnlocalizedName() + ":" + e.player.inventory.getCurrentItem().getItemDamage();
            }

            for (BlockSnapshot b : e.getReplacedBlockSnapshots())
            {
                new BlockChangeType(blockChangeLogCategory.placed, e.player, block, b.x, b.y, b.z, null);
            }

        }
    }



  /*
   * Needed background stuff
   */

  @SubscribeEvent(priority = EventPriority.LOWEST)
  public void playerInteractEvent(PlayerInteractEvent e)
  {
    if (e.action == Action.RIGHT_CLICK_BLOCK)
    {
      if (exempt(e.entityPlayer))
      {
        return;
      }
      if (BlockChange_WhiteList_Use && !BlockChange_WhiteList.contains(e.entityPlayer.dimension))
      {
        return;
      }
      if (BlockChange_BlackList.contains(e.entityPlayer.dimension) && !BlockChange_WhiteList.contains(e.entityPlayer.dimension))
      {
        return;
      }

      new BlockChangeType(blockChangeLogCategory.interact, e.entityPlayer, e.entity.worldObj.getBlock(e.x, e.y, e.z).getUnlocalizedName()
          + ":" + e.entity.worldObj.getBlockMetadata(e.x, e.y, e.z), e.x, e.y, e.z, e.entity.worldObj.getTileEntity(
          e.x, e.y, e.z));
    }
  }

  public String getCommand(CommandEvent e)
  {
    String command = "/" + e.command.getCommandName();
    for (String str : e.parameters)
    {
      command = command + " " + str;
    }
    return command;
  }
}
TOP

Related Classes of com.forgeessentials.playerlogger.EventLogger

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.