9
0
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:
SamB440
2022-08-26 12:50:42 +01:00
parent b125fc42ff
commit 6eb563198f
13 changed files with 22 additions and 1 deletions

View File

@@ -15,6 +15,8 @@ public abstract class DiscoveryReward implements IGuiEditable {
@GuiEditable("Time Between Reward (s)") @GuiEditable("Time Between Reward (s)")
private int timeBetweenReward; private int timeBetweenReward;
private long lastReward;
public DiscoveryReward(IRPGRegionsAPI api) { public DiscoveryReward(IRPGRegionsAPI api) {
this.api = api; this.api = api;
} }
@@ -29,6 +31,10 @@ public abstract class DiscoveryReward implements IGuiEditable {
*/ */
public abstract void award(Player player); public abstract void award(Player player);
protected void updateAwardTime() {
this.lastReward = System.currentTimeMillis();
}
public boolean isAlwaysAward() { public boolean isAlwaysAward() {
return alwaysAward; return alwaysAward;
} }
@@ -45,6 +51,10 @@ public abstract class DiscoveryReward implements IGuiEditable {
this.timeBetweenReward = timeBetweenReward; this.timeBetweenReward = timeBetweenReward;
} }
public boolean canAward() {
return (System.currentTimeMillis() - lastReward) >= (timeBetweenReward * 1000L);
}
public String getPluginRequirement() { public String getPluginRequirement() {
return null; return null;
} }

View File

@@ -106,7 +106,7 @@ public class RegionListener implements Listener {
Bukkit.getPluginManager().callEvent(new RegionDiscoverEvent(player, region, discovery)); Bukkit.getPluginManager().callEvent(new RegionDiscoverEvent(player, region, discovery));
} else if (prioritised && configuredRegion.isDiscoverable() && has) { } else if (prioritised && configuredRegion.isDiscoverable() && has) {
if (configuredRegion.getRewards() != null) configuredRegion.getRewards().forEach(reward -> { if (configuredRegion.getRewards() != null) configuredRegion.getRewards().forEach(reward -> {
if (reward.isAlwaysAward()) { if (reward.isAlwaysAward() && reward.canAward()) {
reward.award(player); reward.award(player);
} }
}); });

View File

@@ -17,6 +17,7 @@ public class AlonsoLevelReward extends LevelReward {
@Override @Override
public void award(Player player) { public void award(Player player) {
AlonsoLevelsAPI.addLevel(player.getUniqueId(), 1); AlonsoLevelsAPI.addLevel(player.getUniqueId(), 1);
this.updateAwardTime();
} }
public String getPluginRequirement() { public String getPluginRequirement() {

View File

@@ -29,6 +29,7 @@ public class ConsoleCommandReward extends DiscoveryReward {
command = PlaceholderAPI.setPlaceholders(player, command); command = PlaceholderAPI.setPlaceholders(player, command);
} }
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), command); Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), command);
this.updateAwardTime();
} }
@Override @Override

View File

@@ -23,6 +23,7 @@ public class ExperienceReward extends DiscoveryReward {
@Override @Override
public void award(Player player) { public void award(Player player) {
player.giveExp(xp); player.giveExp(xp);
this.updateAwardTime();
} }
@Override @Override

View File

@@ -25,6 +25,7 @@ public class ItemReward extends DiscoveryReward {
player.getInventory().addItem(item).forEach((pos, item) -> { player.getInventory().addItem(item).forEach((pos, item) -> {
player.getLocation().getWorld().dropItemNaturally(player.getLocation(), item); player.getLocation().getWorld().dropItemNaturally(player.getLocation(), item);
}); });
this.updateAwardTime();
} }
@Override @Override

View File

@@ -30,6 +30,7 @@ public class MessageReward extends DiscoveryReward {
@Override @Override
public void award(Player player) { public void award(Player player) {
messages.forEach(message -> player.sendMessage(ChatColor.translateAlternateColorCodes('&', message))); messages.forEach(message -> player.sendMessage(ChatColor.translateAlternateColorCodes('&', message)));
this.updateAwardTime();
} }
@Override @Override

View File

@@ -34,6 +34,7 @@ public class MoneyReward extends DiscoveryReward {
} }
economy.getProvider().depositPlayer(player, amount); economy.getProvider().depositPlayer(player, amount);
this.updateAwardTime();
} }
@Override @Override

View File

@@ -38,6 +38,7 @@ public class PlaceholderConsoleCommandReward extends DiscoveryReward {
public void award(Player player) { public void award(Player player) {
if (hasPlaceholder(player)) { if (hasPlaceholder(player)) {
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), PlaceholderAPI.setPlaceholders(player, command.replace("%player%", player.getName()))); Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), PlaceholderAPI.setPlaceholders(player, command.replace("%player%", player.getName())));
this.updateAwardTime();
} }
} }

View File

@@ -29,6 +29,7 @@ public class PlayerCommandReward extends DiscoveryReward {
command = PlaceholderAPI.setPlaceholders(player, command); command = PlaceholderAPI.setPlaceholders(player, command);
} }
player.performCommand(command); player.performCommand(command);
this.updateAwardTime();
} }
@Override @Override

View File

@@ -50,6 +50,7 @@ public class QuestReward extends DiscoveryReward implements Blocking {
if (quest == null) return; if (quest == null) return;
if (start) quester.takeQuest(quest, ignoreRequirements); if (start) quester.takeQuest(quest, ignoreRequirements);
else quest.completeQuest(quester); else quest.completeQuest(quester);
this.updateAwardTime();
} catch (InterruptedException | ExecutionException e) { } catch (InterruptedException | ExecutionException e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@@ -36,6 +36,7 @@ public class RegionDiscoverReward extends DiscoveryReward {
final WorldDiscovery worldDiscovery = new WorldDiscovery(formattedDate, region); final WorldDiscovery worldDiscovery = new WorldDiscovery(formattedDate, region);
account.addDiscovery(worldDiscovery); account.addDiscovery(worldDiscovery);
Bukkit.getPluginManager().callEvent(new RegionDiscoverEvent(player, region, worldDiscovery)); Bukkit.getPluginManager().callEvent(new RegionDiscoverEvent(player, region, worldDiscovery));
this.updateAwardTime();
}); });
} }
} }

View File

@@ -34,5 +34,6 @@ public class TeleportReward extends DiscoveryReward {
@Override @Override
public void award(Player player) { public void award(Player player) {
PaperLib.teleportAsync(player, location); PaperLib.teleportAsync(player, location);
this.updateAwardTime();
} }
} }