Skip to content
Snippets Groups Projects
Commit 26a20234 authored by SamB440's avatar SamB440
Browse files

Add TeleportReward and RegionDiscoverReward

parent f7c430b1
No related branches found
No related tags found
No related merge requests found
......@@ -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() {
......
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;
}
}
......@@ -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
......
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));
});
}
}
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);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment