As you can see I added the a mouse listener to the game.
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
public class Game implements Runnable
{
private Display display;
public int width, height;
public String title;
private boolean running = false;
private Thread thread;
private BufferStrategy bs;
private Graphics g;
// States
public static State gameState;
// Input
private InputManager inputManager;
private MouseHandler mouseHandler;
public Game(String title, int width, int height)
{
    this.width = width;
    this.height = height;
    this.title = title;
    inputManager = new InputManager();
    mouseHandler = new MouseHandler();
}
/**
 * Initializes all of the graphics
 */
private void initialize()
{
    display = new Display(title, width, height);
    display.getFrame().addKeyListener(inputManager);
    display.getFrame().addMouseListener(mouseHandler);
    Assets.loadAssets();
    gameState = new GameState(this, 1);
    State.setState(gameState);
}
/**
 * Updates everything in the game loop
 */
private void update()
{
    if (State.getState() != null)
        State.getState().update();
}
private void render()
{
    bs = display.getCanvas().getBufferStrategy();
    // If this is the first time running initialize the buffer strategy
    if (bs == null)
    {
        display.getCanvas().createBufferStrategy(3);
        return;
    }
    g = bs.getDrawGraphics();
    // Clear the screen
    g.clearRect(0, 0, width, height);
    // Drawing
    if (State.getState() != null)
        State.getState().render(g);
    // End drawing
    bs.show();
    g.dispose();
}
public void run()
{
    initialize();
    // Updates the game loop 60 times every 1 second = 1,000,000,000
    // nanoseconds
    int fps = 60;
    double timePerUpdate = 1000000000 / fps;
    double timeElapsed = 0;
    long now;
    // Current time of computer in nanoseconds
    long lastTime = System.nanoTime();
    // Game loop
    while (running)
    {
        now = System.nanoTime();
        timeElapsed += (now - lastTime) / timePerUpdate;
        lastTime = now;
        if (timeElapsed >= 1)
        {
            update();
            render();
            timeElapsed--;
        }
    }
    stop();
}
public synchronized void start()
{
    // Do not make a new thread if it is already running
    if (running)
        return;
    // Starts the game
    running = true;
    thread = new Thread(this); // this = Game class
    thread.start(); // Goes to run
}
public synchronized void stop()
{
    // In case stop gets called and it is already not running
    if (!running)
        return;
    // Stops the game
    running = false;
    try
    {
        thread.join();
    }
    catch (InterruptedException e)
    {
        e.printStackTrace();
    }
}
public InputManager getInputManager()
{
    return inputManager;
}
public MouseHandler getMouseHandler()
{
    return mouseHandler;
}
public static void main(String[] args)
{
    Game game = new Game("Game", 1024, 768);
    game.start();
}
}
This is my mouse adapter class, basically all I want is the x,y coordinates of where the mouse is pressed
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class MouseHandler extends MouseAdapter
{
public int x, y;
public MouseHandler()
{
}
public void MousePressed(MouseEvent e)
{
    x = e.getX();
    y = e.getY();
}
}
When I try to get the X, and Y coordinates they are always 0 instead of where the mouse actually clicked. I have no clue why.
                        
int variables are always initialized to 0.
Method names are case sensitive.
Your code is never executed since the method to override should be
mousePressed(...). Fix the typo in your code.Always use code like:
Then if you make a typo the compiler will tell you.
Since your code is never executed the default value is returned.