diff --git a/VotingPlugin/Resources/VoteSites.yml b/VotingPlugin/Resources/VoteSites.yml index b91bbb7e3..5f56ac6a7 100644 --- a/VotingPlugin/Resources/VoteSites.yml +++ b/VotingPlugin/Resources/VoteSites.yml @@ -31,6 +31,9 @@ VoteSites: # Reset vote delay each day (for certain sites that do this) VoteDelayDaily: false + # If true, rewards can be executed offline (required ForceOffline to be true in the reward) + GiveOffline: false + # VoteSite Material for GUI's Item: Material: 'DIAMOND' diff --git a/VotingPlugin/pom.xml b/VotingPlugin/pom.xml index 4ac384b36..33386af28 100644 --- a/VotingPlugin/pom.xml +++ b/VotingPlugin/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.Ben12345rocks VotingPlugin - 5.9.2 + 5.9.3 jar VotingPlugin diff --git a/VotingPlugin/src/com/Ben12345rocks/VotingPlugin/Config/ConfigVoteSites.java b/VotingPlugin/src/com/Ben12345rocks/VotingPlugin/Config/ConfigVoteSites.java index 5e28e1e8c..4a5b1dda7 100644 --- a/VotingPlugin/src/com/Ben12345rocks/VotingPlugin/Config/ConfigVoteSites.java +++ b/VotingPlugin/src/com/Ben12345rocks/VotingPlugin/Config/ConfigVoteSites.java @@ -110,6 +110,10 @@ public String getRewardsPath(String siteName) { public String getEverySiteRewardPath() { return "EverySiteReward"; } + + public boolean getVoteSiteGiveOffline(String site) { + return getData(site).getBoolean("GiveOffline"); + } /** * Gets the service site. diff --git a/VotingPlugin/src/com/Ben12345rocks/VotingPlugin/Events/VotiferEvent.java b/VotingPlugin/src/com/Ben12345rocks/VotingPlugin/Events/VotiferEvent.java index d6909f47c..9dc86d94e 100644 --- a/VotingPlugin/src/com/Ben12345rocks/VotingPlugin/Events/VotiferEvent.java +++ b/VotingPlugin/src/com/Ben12345rocks/VotingPlugin/Events/VotiferEvent.java @@ -45,7 +45,7 @@ public static void playerVote(final String playerName, final String voteSiteURL) Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { @Override public void run() { - synchronized (plugin) { + synchronized (configVoteSites) { User user = UserManager.getInstance().getVotingPluginUser(playerName); if (!user.hasLoggedOnBefore() && !config.allowUnJoined()) { plugin.getLogger().warning("Player " + playerName @@ -94,7 +94,7 @@ public void run() { OtherVoteReward.getInstance().checkCumualativeVotes(user); OtherVoteReward.getInstance().checkMilestone(user); - if (user.isOnline()) { + if (user.isOnline() || voteSite.isGiveOffline()) { user.playerVote(voteSite, true, false); } else { user.addOfflineVote(voteSite.getKey()); @@ -141,14 +141,12 @@ public void onVotiferEvent(VotifierEvent event) { plugin.debug("PlayerUsername: " + voteUsername); plugin.debug("VoteSite: " + voteSite); - - Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { @Override public void run() { String voteSiteName = plugin.getVoteSiteName(voteSite); - + PlayerVoteEvent voteEvent = new PlayerVoteEvent(plugin.getVoteSite(voteSiteName), UserManager.getInstance().getVotingPluginUser(voteUsername)); plugin.getServer().getPluginManager().callEvent(voteEvent); diff --git a/VotingPlugin/src/com/Ben12345rocks/VotingPlugin/Main.java b/VotingPlugin/src/com/Ben12345rocks/VotingPlugin/Main.java index b01735ff3..a6700e9b0 100644 --- a/VotingPlugin/src/com/Ben12345rocks/VotingPlugin/Main.java +++ b/VotingPlugin/src/com/Ben12345rocks/VotingPlugin/Main.java @@ -15,7 +15,7 @@ import java.util.TimerTask; import org.bukkit.Bukkit; -import org.bukkit.entity.Player; +import org.bukkit.OfflinePlayer; import org.bukkit.event.HandlerList; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; @@ -664,7 +664,7 @@ public void run() { AdvancedCoreHook.getInstance().getJavascriptEngineRequests().add(new JavascriptPlaceholderRequest("User") { @Override - public Object getObject(Player player) { + public Object getObject(OfflinePlayer player) { return getUserManager().getVotingPluginUser(player); } }); diff --git a/VotingPlugin/src/com/Ben12345rocks/VotingPlugin/Objects/VoteSite.java b/VotingPlugin/src/com/Ben12345rocks/VotingPlugin/Objects/VoteSite.java index 44b246796..79cdbb3a0 100644 --- a/VotingPlugin/src/com/Ben12345rocks/VotingPlugin/Objects/VoteSite.java +++ b/VotingPlugin/src/com/Ben12345rocks/VotingPlugin/Objects/VoteSite.java @@ -40,7 +40,7 @@ public class VoteSite { /** The enabled. */ private boolean enabled; - + private boolean voteDelayDaily; /** The priority. */ @@ -48,6 +48,8 @@ public class VoteSite { private ConfigurationSection item; + private boolean giveOffline; + /** * Instantiates a new vote site. * @@ -77,7 +79,8 @@ public boolean isVoteDelayDaily() { } /** - * @param voteDelayDaily the voteDelayDaily to set + * @param voteDelayDaily + * the voteDelayDaily to set */ public void setVoteDelayDaily(boolean voteDelayDaily) { this.voteDelayDaily = voteDelayDaily; @@ -198,6 +201,28 @@ public void init() { } item = configVoteSites.getItem(key); voteDelayDaily = configVoteSites.getVoteSiteResetVoteDelayDaily(key); + giveOffline = configVoteSites.getVoteSiteGiveOffline(key); + } + + /** + * @return the giveOffline + */ + public boolean isGiveOffline() { + return giveOffline; + } + + /** + * @param giveOffline the giveOffline to set + */ + public void setGiveOffline(boolean giveOffline) { + this.giveOffline = giveOffline; + } + + /** + * @param item the item to set + */ + public void setItem(ConfigurationSection item) { + this.item = item; } /**