mirror of
https://gitlab.com/SamB440/rpgregions-2.git
synced 2025-12-19 14:59:19 +00:00
Implement time between reward
This commit is contained in:
@@ -15,6 +15,8 @@ public abstract class DiscoveryReward implements IGuiEditable {
|
||||
@GuiEditable("Time Between Reward (s)")
|
||||
private int timeBetweenReward;
|
||||
|
||||
private long lastReward;
|
||||
|
||||
public DiscoveryReward(IRPGRegionsAPI api) {
|
||||
this.api = api;
|
||||
}
|
||||
@@ -29,6 +31,10 @@ public abstract class DiscoveryReward implements IGuiEditable {
|
||||
*/
|
||||
public abstract void award(Player player);
|
||||
|
||||
protected void updateAwardTime() {
|
||||
this.lastReward = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
public boolean isAlwaysAward() {
|
||||
return alwaysAward;
|
||||
}
|
||||
@@ -45,6 +51,10 @@ public abstract class DiscoveryReward implements IGuiEditable {
|
||||
this.timeBetweenReward = timeBetweenReward;
|
||||
}
|
||||
|
||||
public boolean canAward() {
|
||||
return (System.currentTimeMillis() - lastReward) >= (timeBetweenReward * 1000L);
|
||||
}
|
||||
|
||||
public String getPluginRequirement() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -106,7 +106,7 @@ public class RegionListener implements Listener {
|
||||
Bukkit.getPluginManager().callEvent(new RegionDiscoverEvent(player, region, discovery));
|
||||
} else if (prioritised && configuredRegion.isDiscoverable() && has) {
|
||||
if (configuredRegion.getRewards() != null) configuredRegion.getRewards().forEach(reward -> {
|
||||
if (reward.isAlwaysAward()) {
|
||||
if (reward.isAlwaysAward() && reward.canAward()) {
|
||||
reward.award(player);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -17,6 +17,7 @@ public class AlonsoLevelReward extends LevelReward {
|
||||
@Override
|
||||
public void award(Player player) {
|
||||
AlonsoLevelsAPI.addLevel(player.getUniqueId(), 1);
|
||||
this.updateAwardTime();
|
||||
}
|
||||
|
||||
public String getPluginRequirement() {
|
||||
|
||||
@@ -29,6 +29,7 @@ public class ConsoleCommandReward extends DiscoveryReward {
|
||||
command = PlaceholderAPI.setPlaceholders(player, command);
|
||||
}
|
||||
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), command);
|
||||
this.updateAwardTime();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -23,6 +23,7 @@ public class ExperienceReward extends DiscoveryReward {
|
||||
@Override
|
||||
public void award(Player player) {
|
||||
player.giveExp(xp);
|
||||
this.updateAwardTime();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -25,6 +25,7 @@ public class ItemReward extends DiscoveryReward {
|
||||
player.getInventory().addItem(item).forEach((pos, item) -> {
|
||||
player.getLocation().getWorld().dropItemNaturally(player.getLocation(), item);
|
||||
});
|
||||
this.updateAwardTime();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -30,6 +30,7 @@ public class MessageReward extends DiscoveryReward {
|
||||
@Override
|
||||
public void award(Player player) {
|
||||
messages.forEach(message -> player.sendMessage(ChatColor.translateAlternateColorCodes('&', message)));
|
||||
this.updateAwardTime();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -34,6 +34,7 @@ public class MoneyReward extends DiscoveryReward {
|
||||
}
|
||||
|
||||
economy.getProvider().depositPlayer(player, amount);
|
||||
this.updateAwardTime();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -38,6 +38,7 @@ public class PlaceholderConsoleCommandReward extends DiscoveryReward {
|
||||
public void award(Player player) {
|
||||
if (hasPlaceholder(player)) {
|
||||
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), PlaceholderAPI.setPlaceholders(player, command.replace("%player%", player.getName())));
|
||||
this.updateAwardTime();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ public class PlayerCommandReward extends DiscoveryReward {
|
||||
command = PlaceholderAPI.setPlaceholders(player, command);
|
||||
}
|
||||
player.performCommand(command);
|
||||
this.updateAwardTime();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -50,6 +50,7 @@ public class QuestReward extends DiscoveryReward implements Blocking {
|
||||
if (quest == null) return;
|
||||
if (start) quester.takeQuest(quest, ignoreRequirements);
|
||||
else quest.completeQuest(quester);
|
||||
this.updateAwardTime();
|
||||
} catch (InterruptedException | ExecutionException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ public class RegionDiscoverReward extends DiscoveryReward {
|
||||
final WorldDiscovery worldDiscovery = new WorldDiscovery(formattedDate, region);
|
||||
account.addDiscovery(worldDiscovery);
|
||||
Bukkit.getPluginManager().callEvent(new RegionDiscoverEvent(player, region, worldDiscovery));
|
||||
this.updateAwardTime();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,5 +34,6 @@ public class TeleportReward extends DiscoveryReward {
|
||||
@Override
|
||||
public void award(Player player) {
|
||||
PaperLib.teleportAsync(player, location);
|
||||
this.updateAwardTime();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user