9
0
mirror of https://gitlab.com/SamB440/rpgregions-2.git synced 2025-12-29 19:59:11 +00:00

Add TeleportReward and RegionDiscoverReward

This commit is contained in:
SamB440
2021-05-09 18:46:42 +01:00
parent f7c430b1fb
commit 26a2023458
5 changed files with 114 additions and 0 deletions

View File

@@ -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() {

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -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));
});
}
}

View File

@@ -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);
}
}