# Importing to you project

You can make extensions to any XG7Plugins!

## 1. Setup a project

First, create a Java project as usual and choose between Gradle or Maven.

<figure><img src="https://3517373422-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvCPuRTEKauRUXrpCflGs%2Fuploads%2FMfDk89yIkhdrJtcJKSqP%2Fimage.png?alt=media&#x26;token=a239381a-3db2-4c43-9bc1-e4e41adef723" alt=""><figcaption></figcaption></figure>

## 2. Add the dependency

After you create the project, add the **CORE** dependency and dependency of the plugin you will make the extension.<br>

```groovy
plugins {
    id 'java'
}

group = 'org.example'
version = '1.0-SNAPSHOT'

repositories {
    mavenCentral()
    maven { url 'https://jitpack.io' }
    maven {
        url = uri("https://hub.spigotmc.org/nexus/content/groups/public/")
    }
}

dependencies {
    compileOnly 'com.github.XG7Plugins:XG7Plugins:1.4-06'
    compileOnly 'org.spigotmc:spigot-api:VERSION'
}
```

In my case, i'll make an extension for the core!

## 3. Make the main class

```java
public class Main implements Extension {

    @Override
    public Plugin getPlugin() {
        return XG7Plugins.getInstance();
    }

    @Override
    public String getName() {
        return "example";
    }

    @Override
    public void onEnable() {
        //Extension startup
    }

    @Override
    public void onReload() {
        //Extension reload
    }

    @Override
    public void onDisable() {
        //Extension disable
    }

    //Register tasks
    @Override
    public List<TimerTask> getTimerTasks() {
        return Extension.super.getTimerTasks();
    }
    
    //Register listeners
    @Override
    public List<Listener> getListeners() {
        return Extension.super.getListeners();
    }

    //Register commands
    @Override
    public List<Command> getCommands() {
        return Extension.super.getCommands();
    }
    
    //Api (To use on core code or other plugins)
    @Override
    public <T extends ExtensionAPI> T getAPI() {
        return Extension.super.getAPI();
    }
}
```
