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:
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user