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)")
|
@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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ public class MoneyReward extends DiscoveryReward {
|
|||||||
}
|
}
|
||||||
|
|
||||||
economy.getProvider().depositPlayer(player, amount);
|
economy.getProvider().depositPlayer(player, amount);
|
||||||
|
this.updateAwardTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user