diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/RPGRegions.java b/rpgregions/src/main/java/net/islandearth/rpgregions/RPGRegions.java
index 0f20eb49e38326f241971d545abb5720fad44271..0f87e293d8776509e2a9bc2c5e8e95c3a84a02d4 100644
--- a/rpgregions/src/main/java/net/islandearth/rpgregions/RPGRegions.java
+++ b/rpgregions/src/main/java/net/islandearth/rpgregions/RPGRegions.java
@@ -44,7 +44,9 @@ import net.islandearth.rpgregions.rewards.MessageReward;
 import net.islandearth.rpgregions.rewards.MoneyReward;
 import net.islandearth.rpgregions.rewards.PlayerCommandReward;
 import net.islandearth.rpgregions.rewards.QuestReward;
+import net.islandearth.rpgregions.rewards.RegionDiscoverReward;
 import net.islandearth.rpgregions.rewards.RegionRewardRegistry;
+import net.islandearth.rpgregions.rewards.TeleportReward;
 import net.islandearth.rpgregions.translation.Translations;
 import net.islandearth.rpgregions.utils.XMaterial;
 import net.islandearth.rpgregions.utils.XSound;
@@ -268,6 +270,8 @@ public final class RPGRegions extends JavaPlugin implements IRPGRegionsAPI, Lang
 		registry.register(PlayerCommandReward.class);
 		registry.register(AlonsoLevelReward.class);
 		registry.register(QuestReward.class);
+		registry.register(TeleportReward.class);
+		registry.register(RegionDiscoverReward.class);
 	}
 
 	private void registerRequirements() {
diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/gui/element/LocationGuiFieldElement.java b/rpgregions/src/main/java/net/islandearth/rpgregions/gui/element/LocationGuiFieldElement.java
new file mode 100644
index 0000000000000000000000000000000000000000..520b09cf4529f02a0d97b9374d2598a682151de5
--- /dev/null
+++ b/rpgregions/src/main/java/net/islandearth/rpgregions/gui/element/LocationGuiFieldElement.java
@@ -0,0 +1,34 @@
+package net.islandearth.rpgregions.gui.element;
+
+import net.islandearth.rpgregions.gui.IGuiEditable;
+import org.apache.commons.lang.reflect.FieldUtils;
+import org.bukkit.Location;
+import org.bukkit.entity.Player;
+
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+public class LocationGuiFieldElement implements IGuiFieldElement {
+
+    @Override
+    public CompletableFuture<Void> set(Player player, IGuiEditable guiEditable, Field field, Object value) {
+        try {
+            FieldUtils.writeField(field, guiEditable, player.getLocation());
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        }
+        return CompletableFuture.completedFuture(null);
+    }
+
+    @Override
+    public List<Class<?>> getType() {
+        return Arrays.asList(Location.class);
+    }
+
+    @Override
+    public boolean needsValue() {
+        return true;
+    }
+}
diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/managers/RPGRegionsManagers.java b/rpgregions/src/main/java/net/islandearth/rpgregions/managers/RPGRegionsManagers.java
index d17c0b0229f08e40f4d29ea1b6ecf48f3c0f7a72..91d0165ba506a8d26aef5ecd83bbf9f51bc4ecdf 100644
--- a/rpgregions/src/main/java/net/islandearth/rpgregions/managers/RPGRegionsManagers.java
+++ b/rpgregions/src/main/java/net/islandearth/rpgregions/managers/RPGRegionsManagers.java
@@ -13,6 +13,7 @@ import net.islandearth.rpgregions.gui.element.GuiFieldElementRegistry;
 import net.islandearth.rpgregions.gui.element.IGuiFieldElementRegistry;
 import net.islandearth.rpgregions.gui.element.IntegerGuiFieldElement;
 import net.islandearth.rpgregions.gui.element.ItemStackGuiFieldElement;
+import net.islandearth.rpgregions.gui.element.LocationGuiFieldElement;
 import net.islandearth.rpgregions.managers.data.IRPGRegionsCache;
 import net.islandearth.rpgregions.managers.data.IStorageManager;
 import net.islandearth.rpgregions.managers.data.RPGRegionsCache;
@@ -152,6 +153,7 @@ public class RPGRegionsManagers implements IRPGRegionsManagers {
         guiFieldElementRegistry.register(new BooleanGuiFieldElement());
         guiFieldElementRegistry.register(new IntegerGuiFieldElement());
         guiFieldElementRegistry.register(new ItemStackGuiFieldElement());
+        guiFieldElementRegistry.register(new LocationGuiFieldElement());
     }
 
     @Override
diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/RegionDiscoverReward.java b/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/RegionDiscoverReward.java
new file mode 100644
index 0000000000000000000000000000000000000000..80b33264fbda1bfe70792c39b6104be989499a7e
--- /dev/null
+++ b/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/RegionDiscoverReward.java
@@ -0,0 +1,37 @@
+package net.islandearth.rpgregions.rewards;
+
+import net.islandearth.rpgregions.api.IRPGRegionsAPI;
+import net.islandearth.rpgregions.api.RPGRegionsAPI;
+import net.islandearth.rpgregions.gui.GuiEditable;
+import net.islandearth.rpgregions.managers.data.region.WorldDiscovery;
+import org.bukkit.entity.Player;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+public class RegionDiscoverReward extends DiscoveryReward {
+
+    @GuiEditable("Region")
+    private String region;
+
+    public RegionDiscoverReward(IRPGRegionsAPI api) {
+        super(api);
+    }
+
+    @Override
+    public String getName() {
+        return "Region Discovery";
+    }
+
+    @Override
+    public void award(Player player) {
+        IRPGRegionsAPI api = RPGRegionsAPI.getAPI();
+        api.getManagers().getStorageManager().getAccount(player.getUniqueId()).thenAccept(account -> {
+            LocalDateTime date = LocalDateTime.now();
+            DateTimeFormatter format = DateTimeFormatter.ofPattern(api.getConfig().getString("settings.server.discoveries.date.format"));
+
+            String formattedDate = date.format(format);
+            account.addDiscovery(new WorldDiscovery(formattedDate, region));
+        });
+    }
+}
diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/TeleportReward.java b/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/TeleportReward.java
new file mode 100644
index 0000000000000000000000000000000000000000..df5be2434a05c96190eeddeef153df8e11ee3464
--- /dev/null
+++ b/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/TeleportReward.java
@@ -0,0 +1,37 @@
+package net.islandearth.rpgregions.rewards;
+
+import io.papermc.lib.PaperLib;
+import net.islandearth.rpgregions.api.IRPGRegionsAPI;
+import net.islandearth.rpgregions.gui.GuiEditable;
+import org.bukkit.Bukkit;
+import org.bukkit.Location;
+import org.bukkit.entity.Player;
+
+public class TeleportReward extends DiscoveryReward {
+
+    @GuiEditable("Teleport location")
+    private Location location;
+
+    public TeleportReward(IRPGRegionsAPI api) {
+        super(api);
+        this.location = Bukkit.getWorlds().get(0).getSpawnLocation();
+    }
+
+    public Location getLocation() {
+        return location;
+    }
+
+    public void setLocation(Location location) {
+        this.location = location;
+    }
+
+    @Override
+    public String getName() {
+        return "Teleport";
+    }
+
+    @Override
+    public void award(Player player) {
+        PaperLib.teleportAsync(player, location);
+    }
+}