package com.carpentersblocks.util.protection;
import java.util.UUID;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.server.MinecraftServer;
import com.carpentersblocks.util.registry.FeatureRegistry;
public class PlayerPermissions {
/**
* Returns true if player is operator.
* Can only return true if called server-side.
*/
public static boolean isOp(EntityPlayer entityPlayer)
{
if (!entityPlayer.worldObj.isRemote) {
return ((EntityPlayerMP)entityPlayer).mcServer.getConfigurationManager().func_152596_g(entityPlayer.getGameProfile());
} else {
return false;
}
}
/**
* Whether player is an operator, owner or is in a singleplayer server.
*
* @param object the {@link IProtected} block or entity
* @param entityPlayer the {@link EntityPlayer}
* @param enforceOwnership whether ownership is required, bypassing configuration settings
* @return <code>true</code> if player has elevated permission
*/
public static boolean hasElevatedPermission(IProtected object, EntityPlayer entityPlayer, boolean enforceOwnership)
{
if (entityPlayer.worldObj.isRemote && Minecraft.getMinecraft().isSingleplayer()) { // Check if client is playing singleplayer
return true;
} else if (!entityPlayer.worldObj.isRemote && MinecraftServer.getServer().isSinglePlayer()) { // Check if server is integrated (singleplayer)
return true;
} else if (isOp(entityPlayer)) {
return true;
} else if (!enforceOwnership && !FeatureRegistry.enableOwnership) {
return true;
} else {
return isOwner(object, entityPlayer);
}
}
/**
* Whether the player is the owner of the object.
*
* @param object
* @param entityPlayer
* @return <code>true</code> if player is owner
*/
private static boolean isOwner(IProtected object, EntityPlayer entityPlayer)
{
try {
UUID.fromString(object.getOwner());
return object.getOwner().equals(entityPlayer.getUniqueID().toString());
} catch (IllegalArgumentException e) {
return object.getOwner().equals(entityPlayer.getDisplayName());
}
}
}