diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..98b7f15
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="test" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" path="target/generated-sources/annotations">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="ignore_optional_problems" value="true"/>
+			<attribute name="m2e-apt" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="ignore_optional_problems" value="true"/>
+			<attribute name="m2e-apt" value="true"/>
+			<attribute name="test" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/.project b/.project
new file mode 100644
index 0000000..a2bc9d6
--- /dev/null
+++ b/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>EasySpawn</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..cf6931b
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding/<project>=UTF-8
diff --git a/.settings/org.eclipse.jdt.apt.core.prefs b/.settings/org.eclipse.jdt.apt.core.prefs
new file mode 100644
index 0000000..ec0c557
--- /dev/null
+++ b/.settings/org.eclipse.jdt.apt.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.apt.aptEnabled=false
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..e34d462
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.processAnnotations=disabled
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..14b697b
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/pom.xml b/pom.xml
index d544e6a..3a07345 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,6 +55,7 @@
                 <filtering>true</filtering>
                 <includes>
                     <include>plugin.yml</include>
+                    <include>config.yml</include>
                 </includes>
             </resource>
             <resource>
@@ -81,31 +82,3 @@
 </project>
 
 
-
-
-
-
-
-
-<repositories>
-    <repository>
-        <id>spigot-repo</id>
-        <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
-    </repository>
-</repositories>
-<dependencies>
-    <!--Spigot API-->
-    <dependency>
-           <groupId>org.spigotmc</groupId>
-           <artifactId>spigot-api</artifactId>
-           <version>1.13-R0.1-SNAPSHOT</version>
-           <scope>provided</scope>
-    </dependency>
-    <!--Bukkit API-->
-    <dependency>
-            <groupId>org.bukkit</groupId>
-            <artifactId>bukkit</artifactId>
-            <version>1.13-R0.1-SNAPSHOT</version>
-            <scope>provided</scope>
-    </dependency>
-</dependencies>
\ No newline at end of file
diff --git a/server.properties b/server.properties
deleted file mode 100644
index 3533037..0000000
--- a/server.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-#Minecraft server properties
-#Thu Jul 26 07:47:14 GMT 2018
diff --git a/src/main/java/nz/1248/easyspawn/EasySpawn.java b/src/main/java/nz/1248/easyspawn/EasySpawn.java
deleted file mode 100644
index 5394de4..0000000
--- a/src/main/java/nz/1248/easyspawn/EasySpawn.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package nz.jimmy.easyspawn;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-import org.bukkit.plugin.java.JavaPlugin;
-
-public class EasySpawn extends JavaPlugin{
-		
-	@Override
-	public boolean onCommand(CommandSender sender, Command command,
-			String label, String[] args) {
-		if(sender instanceof Player){
-			Player player = (Player)sender;
-			if(command.getName().equalsIgnoreCase("spawn")){
-				player.teleport(player.getWorld().getSpawnLocation());
-				player.sendMessage("You have been teleported to spawn.");
-				return true;
-			}
-			if(command.getName().equalsIgnoreCase("setspawn")){
-				player.getWorld().setSpawnLocation(player.getLocation().getBlockX(),
-						player.getLocation().getBlockY(),player.getLocation().getBlockZ());
-				player.sendMessage("Spawn set.");
-				return true;
-			}
-			if(command.getName().equalsIgnoreCase("bed")){
-				if(player.getBedSpawnLocation()!=null){
-					player.teleport(player.getBedSpawnLocation());
-					player.sendMessage("You have been teleported to your bed.");
-				}else sender.sendMessage("Your bed cannot be found.");
-				return true;
-			}
-		}
-		return false;
-	}
-
-}
diff --git a/src/main/java/nz/jimmy/easyspawn/Bed.java b/src/main/java/nz/jimmy/easyspawn/Bed.java
new file mode 100644
index 0000000..3c09e27
--- /dev/null
+++ b/src/main/java/nz/jimmy/easyspawn/Bed.java
@@ -0,0 +1,33 @@
+package nz.jimmy.easyspawn;
+
+import org.bukkit.Location;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.configuration.Configuration;
+import org.bukkit.entity.Player;
+
+/**
+ * Bed
+ */
+public class Bed implements CommandExecutor {
+    EasySpawn plugin;
+    public  Bed(EasySpawn plugin) {
+        this.plugin = plugin;
+        plugin.getCommand("bed").setExecutor(this);
+    }
+
+    public boolean onCommand(CommandSender sender, Command cmd, String label,
+        String[] args) {
+        if(sender instanceof Player) {
+            Player player = (Player)sender;
+            //Check if player has a bed
+            if(player.getBedSpawnLocation()!=null){
+                player.teleport(player.getBedSpawnLocation());
+                player.sendMessage("You have been teleported to your bed.");
+            }else sender.sendMessage("You need to sleep in a bed first.");
+            return true;
+        }
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/nz/jimmy/easyspawn/EasySpawn.java b/src/main/java/nz/jimmy/easyspawn/EasySpawn.java
new file mode 100644
index 0000000..8d506e1
--- /dev/null
+++ b/src/main/java/nz/jimmy/easyspawn/EasySpawn.java
@@ -0,0 +1,13 @@
+package nz.jimmy.easyspawn;
+
+import org.bukkit.plugin.java.JavaPlugin;
+
+public class EasySpawn extends JavaPlugin {
+	@Override
+	public void onEnable(){
+		new PlayerListener(this);
+		new SetSpawn(this);
+		new Spawn(this);
+		new Bed(this);
+	}
+}
diff --git a/src/main/java/nz/jimmy/easyspawn/PlayerListener.java b/src/main/java/nz/jimmy/easyspawn/PlayerListener.java
new file mode 100644
index 0000000..55ab199
--- /dev/null
+++ b/src/main/java/nz/jimmy/easyspawn/PlayerListener.java
@@ -0,0 +1,42 @@
+package nz.jimmy.easyspawn;
+
+import org.bukkit.Location;
+import org.bukkit.World;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerJoinEvent;
+
+
+/**
+ * PlayerListener
+ */
+public class PlayerListener implements Listener{
+    EasySpawn plugin;
+    public PlayerListener(EasySpawn plugin) {
+        this.plugin = plugin;
+        plugin.getServer().getPluginManager().registerEvents(this, plugin);
+    }
+
+    @EventHandler
+	public void onPlayerJoin(PlayerJoinEvent event) {
+		Player player = event.getPlayer();
+		if(!player.hasPlayedBefore()){
+			World world = player.getWorld();
+            String w = world.getName();
+            FileConfiguration config = plugin.getConfig();
+			//Check is spawn is set
+			if(config.contains("spawn."+w)){
+				int x = config.getInt("spawn."+w+".x");
+				int y = config.getInt("spawn."+w+".y");
+				int z = config.getInt("spawn."+w+".z");	
+				float pitch = config.getInt("spawn."+w+".pitch");
+				float yaw = config.getInt("spawn."+w+".yaw");
+				player.teleport(new Location(world, x, y, z, yaw, pitch));
+			}
+		}
+	}
+    
+}
+
diff --git a/src/main/java/nz/jimmy/easyspawn/SetSpawn.java b/src/main/java/nz/jimmy/easyspawn/SetSpawn.java
new file mode 100644
index 0000000..657d03a
--- /dev/null
+++ b/src/main/java/nz/jimmy/easyspawn/SetSpawn.java
@@ -0,0 +1,38 @@
+package nz.jimmy.easyspawn;
+
+import org.bukkit.Location;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.configuration.Configuration;
+import org.bukkit.entity.Player;
+
+/**
+ * SetSpawn
+ */
+public class SetSpawn implements CommandExecutor{
+    EasySpawn plugin;
+    public SetSpawn(EasySpawn plugin) {
+        this.plugin = plugin;
+        plugin.getCommand("setspawn").setExecutor(this);
+    }
+
+    public boolean onCommand(CommandSender sender, Command cmd, String label,
+        String[] args) {
+        if( sender instanceof Player) {
+            Player player = (Player)sender;
+            Location location = player.getLocation();
+            String world = player.getWorld().getName();
+            Configuration config = plugin.getConfig();
+            config.set("spawn."+world+".x", location.getBlockX());
+            config.set("spawn."+world+".y", location.getBlockY());
+            config.set("spawn."+world+".z", location.getBlockZ());
+            config.set("spawn."+world+".pitch", location.getPitch());
+            config.set("spawn."+world+".yaw", location.getYaw());
+            plugin.saveConfig();
+            player.sendMessage("Spawn set.");
+            return true;
+        }
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/nz/jimmy/easyspawn/Spawn.java b/src/main/java/nz/jimmy/easyspawn/Spawn.java
new file mode 100644
index 0000000..dc6d323
--- /dev/null
+++ b/src/main/java/nz/jimmy/easyspawn/Spawn.java
@@ -0,0 +1,39 @@
+package nz.jimmy.easyspawn;
+
+import org.bukkit.Location;
+import org.bukkit.World;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.configuration.Configuration;
+import org.bukkit.entity.Player;
+
+/**
+ * Spawn
+ */
+public class Spawn implements CommandExecutor{
+    private EasySpawn plugin;
+    public Spawn(EasySpawn plugin) {
+        this.plugin = plugin;
+        plugin.getCommand("spawn").setExecutor(this);;
+    }
+
+    public boolean onCommand(CommandSender sender, Command cmd, String label,
+        String[] args) {
+        if(sender instanceof Player) {
+            Player player = (Player)sender;
+            Configuration config = plugin.getConfig();
+            World world = player.getWorld();
+            String w = world.getName();
+            if(config.contains("spawn."+w)){                    
+                Location location = new Location(world, config.getInt("spawn."+w+".x"),
+                    config.getInt("spawn."+w+".y"),config.getInt("spawn."+w+".z"),
+                    config.getInt("spawn."+w+".pitch"), config.getInt("spawn."+w+".yaw"));
+                player.teleport(location);
+                player.sendMessage("You have been teleported to spawn.");
+            }else player.sendMessage("This world has no spawn");
+            return true;
+        }
+        return false;        
+    }
+}
\ No newline at end of file
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 8a18c81..98ad750 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -10,17 +10,17 @@ commands:
     description: Teleports you to spawn
     usage: /spawn
     permission: easyspawn.spawn
-    permission-message: You don't have <permission>
+    permission-message: You are not allowed
   bed:
     description: Teleports you to your bed
     usage: /bed
     permission: easyspawn.bed
-    permission-message: You don't have <permission>
+    permission-message: You are not allowed
   setspawn:
     description: Sets spawn location
     usage: /setspawn
     permission: easyspawn.setspawn
-    permission-message: You don't have <permission>
+    permission-message: You are not allowed 
 permissions:
   easyspawn.spawn:
     description: Teleports you to spawn