Compare commits

..
28 Commits
Author SHA1 Message Date
Ben12345rocks 241746fdf0 Update build path 2017-12-21 19:40:50 -05:00
Ben 37932f570e Merge pull request #322 from Ben12345rocks/5.12
5.12
2017-12-21 19:39:41 -05:00
Ben12345rocks 1c834a480f Other changes 2017-12-21 19:31:51 -05:00
Ben12345rocks 6a0d74f400 Update version number 2017-12-18 20:13:52 -05:00
Ben12345rocks feed85d9bb Add support for player name in vote url 2017-12-18 16:46:30 -05:00
Ben12345rocks f9b4adf342 Back to beta version 2017-12-17 16:35:13 -05:00
Ben12345rocks a04b9b996d Update version number 2017-12-17 15:45:51 -05:00
Ben12345rocks 4992c547ed Add an option to add totals 2017-12-17 15:27:54 -05:00
Ben12345rocks d5c1f3bf11 Some improvements to top voter files 2017-12-17 15:17:10 -05:00
Ben12345rocks b82736e933 More performance boosts 2017-12-17 13:59:00 -05:00
Ben12345rocks d0d1e262c2 Performance changes 2017-12-17 13:55:03 -05:00
Ben12345rocks 0b0dea8f51 Bug fixes 2017-12-16 14:40:05 -05:00
Ben12345rocks 48e1298b73 Allow top voter ties 2017-12-16 12:54:44 -05:00
Ben12345rocks 8d850dde7e Add command to reset offline rewards/votes 2017-12-14 20:00:30 -05:00
Ben12345rocks 963ff8b5f2 Add an option to reset vote party monthly 2017-12-11 19:33:56 -05:00
Ben12345rocks 5a871656c5 Add beta build version 2017-12-10 17:13:22 -05:00
Ben12345rocks 011e18ff9d Remove debug 2017-12-10 17:11:58 -05:00
Ben12345rocks 53f9b2c9f8 Major improvements 2017-12-10 17:07:11 -05:00
Ben12345rocks fe488158df Bug fix 2017-12-10 15:15:08 -05:00
Ben12345rocks 699bb1bdf6 Rename a config option to avoid confusion 2017-12-10 14:58:56 -05:00
Ben12345rocks f9c8b8a719 Generate item section for a vote site 2017-12-10 14:40:12 -05:00
Ben12345rocks 242eceda2c Fix typo 2017-12-10 14:17:46 -05:00
Ben12345rocks 98cd79684e Minor improvements 2017-12-10 14:16:13 -05:00
Ben12345rocks 5b4f73dadf Small api improvement 2017-12-09 20:12:40 -05:00
Ben12345rocks a8113aa941 Add new events 2017-12-09 20:09:29 -05:00
Ben12345rocks f741dbf6a7 Add last month total, closes #317 2017-12-05 18:59:25 -05:00
Ben12345rocks f589817301 Add ability to execute console commands once for vote party, closes #316 2017-12-03 13:21:36 -05:00
Ben12345rocks 27874ecb70 Fixed wrong month showing in top voter monthly files 2017-12-03 13:12:00 -05:00
19 changed files with 440 additions and 173 deletions

No files matched your search

+12 -12
View File
@@ -343,15 +343,6 @@ GUI:
Amount: 1
Name: '&4Vote Shop'
Slot: 6
# /vote Reward gui item
# Uncomment to use, most likely will be unused
#Rewards:
# Item:
# Material: 'DIAMOND'
# Data: 0
# Amount: 1
# Name: '&4Voting Rewards'
# Slot: 7
# GUI for /vote url
# And /vote if enabled in Config.yml
@@ -609,12 +600,16 @@ VoteParty:
GiveAllPlayers: false
# If true, the vote count will reset each day
ResetEachDay: false
# Reset at the end of the month
ResetMonthly: false
# Count votes from /av vote?
CountFakeVotes: true
# Number of user votes that apply to vote party total the user needs to get rewards
UserVotesRequired: 0
# Broadcast when vote party reached
Broadcast: '&cReached the vote party amount!'
# List of commands to execute, these only execute once.
Commands: []
# Reward files to give
Rewards: []
@@ -671,6 +666,7 @@ VoteStreak:
# IT WILL ONLY RUN ONE TIME FOR ANY NUMBER OF OFFLINE VOTES
# Any reward files listed here are ran on vote of any site
# It is recommended to add rewards to each site instead of here
# Using forceoffline won't work here
AnySiteRewards: []
@@ -754,9 +750,13 @@ DailyAwards:
# Set to 0 to give no points
PointsOnVote: 1
# Wether or not to check on world change
# Should only be used if you do per world rewards
CheckOnWorldChange: false
# Set this to false to disable the plugin adding totals
# Not really recommended
AddTotals: true
# Disable checking on world change
# May improve performance
DisableCheckOnWorldChange: false
# Debug
Debug: false
+12 -4
View File
@@ -31,18 +31,26 @@ 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
# If true, rewards can be executed offline (requires ForceOffline to be true in the reward)
# Setting this to true will execute the reward offline, NOT WHEN THE PLAYER IS OFFLINE
# This basiclly disables offline voting if set to true, don't misinterpret this option
ForceOffline: false
# VoteSite Material for GUI's
# Removing this may result in an error, required on each site
Item:
Material: 'DIAMOND'
Amount: 1
# List of reward files to give to voter
# Rewards to give
# https://github.com/Ben12345rocks/AdvancedCore/wiki/Rewards
Rewards:
- 'ExampleReward'
Commands:
- 'say hello'
Messages:
Player: 'You voted'
# Reward for any site
# Similar to AnySiteReward
# This requires the site to be configured in order to get the reward.
EverySiteReward: []
+1 -1
View File
@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.Ben12345rocks</groupId>
<artifactId>VotingPlugin</artifactId>
<version>5.11</version>
<version>5.12</version>
<packaging>jar</packaging>
<name>VotingPlugin</name>
<properties>
@@ -466,6 +466,25 @@ public class CommandLoader {
}
});
plugin.adminVoteCommand.add(new CommandHandler(new String[] { "ClearOfflineRewards" },
"VotingPlugin.Commands.AdminVote.ClearOfflineRewards|" + adminPerm, "Reset offline votes/rewards") {
@Override
public void execute(CommandSender sender, String[] args) {
if (sender instanceof Player) {
sender.sendMessage(
StringUtils.getInstance().colorize("&cThis command can not be done from ingame"));
return;
}
for (String uuid : UserManager.getInstance().getAllUUIDs()) {
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
user.clearOfflineRewards();
}
sender.sendMessage(StringUtils.getInstance().colorize("&cCleared totals for everyone"));
}
});
plugin.adminVoteCommand.add(new CommandHandler(new String[] { "ConvertFromData", "(userstorage)" },
"VotingPlugin.Commands.AdminVote.ConvertFromData",
"Convert from selected user storage to current user storage") {
@@ -679,7 +679,7 @@ public class Commands {
timeMsg = StringUtils.getInstance().replaceIgnoreCase(timeMsg, "%minutes%",
Long.toString(diffMinutes));
info = timeMsg;
}
}
} else {
@@ -834,6 +834,7 @@ public class Commands {
msg = StringUtils.getInstance().replaceIgnoreCase(msg, "%num%", Integer.toString(counter));
msg = StringUtils.getInstance().replaceIgnoreCase(msg, "%url%", voteURL);
msg = StringUtils.getInstance().replaceIgnoreCase(msg, "%SiteName%", voteSite.getDisplayName());
msg = StringUtils.getInstance().replaceIgnoreCase(msg, "%player%", user.getPlayerName());
sites.add(msg);
}
}
@@ -535,10 +535,12 @@ public class PlayerGUIs {
if (player != null) {
player.closeInventory();
User user = UserManager.getInstance().getVotingPluginUser(player);
user.sendMessage(StringUtils.getInstance()
.replacePlaceHolder(StringUtils.getInstance().replacePlaceHolder(
Config.getInstance().getGUIVoteURLURLText(), "voteurl", voteSite.getVoteURL()),
"sitename", voteSite.getDisplayName()));
user.sendMessage(StringUtils.getInstance().replacePlaceHolder(
StringUtils.getInstance()
.replacePlaceHolder(StringUtils.getInstance().replacePlaceHolder(
Config.getInstance().getGUIVoteURLURLText(), "voteurl",
voteSite.getVoteURL()), "sitename", voteSite.getDisplayName()),
"player", player.getName()));
}
@@ -110,8 +110,8 @@ public class Config extends YMLFile {
return getData().getBoolean("BroadcastVote", true);
}
public boolean getCheckOnWorldChange() {
return getData().getBoolean("CheckOnWorldChange");
public boolean getDisableCheckOnWorldChange() {
return getData().getBoolean("DisableCheckOnWorldChange");
}
public boolean getClearCacheOnUpdate() {
@@ -1112,6 +1112,14 @@ public class Config extends YMLFile {
return getData().getBoolean("VoteParty.ResetEachDay");
}
public boolean getAddTotals() {
return getData().getBoolean("AddTotals", true);
}
public boolean getVotePartyResetMontly() {
return getData().getBoolean("VoteParty.ResetMonthly");
}
/**
* Gets the vote party rewards.
*
@@ -1121,6 +1129,11 @@ public class Config extends YMLFile {
return "VoteParty.Rewards";
}
@SuppressWarnings("unchecked")
public ArrayList<String> getVotePartyCommands() {
return (ArrayList<String>) getData().getList("VoteParty.Commands", new ArrayList<String>());
}
/**
* Gets the vote party votes required.
*
@@ -60,6 +60,8 @@ public class ConfigVoteSites extends YMLFile {
setServiceSite(siteName, org);
setVoteURL(siteName, "VoteURL");
setVoteDelay(siteName, 24);
set(siteName, "Item.Material", "GRASS");
set(siteName, "Item.Amount", 1);
set(siteName, "Rewards.Messages.Player", "&aThanks for voting on %ServiceSite%!");
plugin.loadVoteSites();
@@ -167,7 +169,7 @@ public class ConfigVoteSites extends YMLFile {
}
public boolean getVoteSiteGiveOffline(String site) {
return getData(site).getBoolean("GiveOffline");
return getData(site).getBoolean("ForceOffline", getData(site).getBoolean("GiveOffline"));
}
public boolean getVoteSiteResetVoteDelayDaily(String siteName) {
@@ -53,14 +53,18 @@ public class PlayerJoinEvent implements Listener {
if (player != null) {
User user = UserManager.getInstance().getVotingPluginUser(player);
if (UserManager.getInstance().getAllUUIDs().contains(player.getUniqueId().toString())) {
// give offline vote (if they voted
// offline)
user.offVote();
}
// run remind
user.loginMessage();
if (UserManager.getInstance().getAllUUIDs().contains(player.getUniqueId().toString())) {
// give offline vote (if they voted
// offline)
user.offVote();
}
}
}
@@ -0,0 +1,80 @@
package com.Ben12345rocks.VotingPlugin.Events;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import com.Ben12345rocks.VotingPlugin.Objects.User;
// TODO: Auto-generated Javadoc
/**
* The Class PlayerVoteEvent.
*/
public class PlayerVoteAllSitesEvent extends Event {
/** The Constant handlers. */
private static final HandlerList handlers = new HandlerList();
/**
* Gets the handler list.
*
* @return the handler list
*/
public static HandlerList getHandlerList() {
return handlers;
}
private User user;
/** The cancelled. */
private boolean cancelled;
public PlayerVoteAllSitesEvent(User user) {
super();
setUser(user);
}
/**
* @return the user
*/
public User getUser() {
return user;
}
/**
* @param user
* the user to set
*/
public void setUser(User user) {
this.user = user;
}
/*
* (non-Javadoc)
*
* @see org.bukkit.event.Event#getHandlers()
*/
@Override
public HandlerList getHandlers() {
return handlers;
}
/**
* Checks if is cancelled.
*
* @return true, if is cancelled
*/
public boolean isCancelled() {
return cancelled;
}
/**
* Sets the cancelled.
*
* @param bln
* the new cancelled
*/
public void setCancelled(boolean bln) {
cancelled = bln;
}
}
@@ -0,0 +1,60 @@
package com.Ben12345rocks.VotingPlugin.Events;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
// TODO: Auto-generated Javadoc
/**
* The Class PlayerVoteEvent.
*/
public class VotePartyEvent extends Event {
/** The Constant handlers. */
private static final HandlerList handlers = new HandlerList();
/**
* Gets the handler list.
*
* @return the handler list
*/
public static HandlerList getHandlerList() {
return handlers;
}
/** The cancelled. */
private boolean cancelled;
public VotePartyEvent() {
super();
}
/*
* (non-Javadoc)
*
* @see org.bukkit.event.Event#getHandlers()
*/
@Override
public HandlerList getHandlers() {
return handlers;
}
/**
* Checks if is cancelled.
*
* @return true, if is cancelled
*/
public boolean isCancelled() {
return cancelled;
}
/**
* Sets the cancelled.
*
* @param bln
* the new cancelled
*/
public void setCancelled(boolean bln) {
cancelled = bln;
}
}
@@ -36,90 +36,88 @@ public class VotiferEvent implements Listener {
/** The plugin. */
static Main plugin = Main.plugin;
private static Object object = new Object();
public static void playerVote(final String playerName, final String voteSiteURL) {
playerVote(playerName, voteSiteURL, true);
}
public static void playerVote(final String playerName, final String voteSiteURL, final boolean realVote) {
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
synchronized (configVoteSites) {
if (!PlayerUtils.getInstance().isValidUser(playerName) && !config.allowUnJoined()) {
plugin.getLogger().warning("Player " + playerName
+ " has not joined before, disregarding vote, set AllowUnjoined to true to prevent this");
return;
}
User user = UserManager.getInstance().getVotingPluginUser(playerName);
VoteSite voteSite = plugin.getVoteSite(voteSiteURL);
if (voteSite == null) {
if (!Config.getInstance().getDisableNoServiceSiteMessage()) {
plugin.getLogger().warning("No voting site with the service site: '" + voteSiteURL + "'");
plugin.getLogger().warning(
"Please read here on how to fix it: https://github.com/Ben12345rocks/VotingPlugin/wiki/Common-Problems");
if (!PlayerUtils.getInstance().isValidUser(playerName) && !config.allowUnJoined()) {
plugin.getLogger().warning("Player " + playerName
+ " has not joined before, disregarding vote, set AllowUnjoined to true to prevent this");
return;
}
ArrayList<String> services = new ArrayList<String>();
for (VoteSite site : plugin.getVoteSites()) {
services.add(site.getServiceSite());
}
plugin.getLogger().warning(
"Current service sites: " + ArrayUtils.getInstance().makeStringList(services));
}
return;
}
User user = UserManager.getInstance().getVotingPluginUser(playerName);
// vote party
if (Config.getInstance().getVotePartyEnabled()) {
if (Config.getInstance().getVotePartyCountFakeVotes() || realVote) {
VoteParty.getInstance().addTotal(user);
VoteParty.getInstance().addVotePlayer(user);
VoteParty.getInstance().check();
}
}
VoteSite voteSite = plugin.getVoteSite(voteSiteURL);
if (voteSite == null) {
if (!Config.getInstance().getDisableNoServiceSiteMessage()) {
plugin.getLogger().warning("No voting site with the service site: '" + voteSiteURL + "'");
plugin.getLogger().warning(
"Please read here on how to fix it: https://github.com/Ben12345rocks/VotingPlugin/wiki/Common-Problems");
// broadcast vote if enabled in config
if (config.getBroadCastVotesEnabled()) {
if (!Config.getInstance().getFormatBroadcastWhenOnline() || user.isOnline()) {
voteSite.broadcastVote(user);
}
}
ArrayList<String> services = new ArrayList<String>();
for (VoteSite site : plugin.getVoteSites()) {
services.add(site.getServiceSite());
}
plugin.getLogger()
.warning("Current service sites: " + ArrayUtils.getInstance().makeStringList(services));
}
return;
}
// update last vote time
user.setTime(voteSite);
synchronized (object) {
OtherVoteReward.getInstance().checkFirstVote(user);
// vote party
VoteParty.getInstance().vote(user, realVote);
// add to total votes
if (Config.getInstance().getCountFakeVotes() || realVote) {
user.addTotal();
user.addTotalDaily();
user.addTotalWeekly();
user.addPoints();
}
user.setReminded(false);
// check if player has voted on all sites in one day
OtherVoteReward.getInstance().checkAllSites(user);
OtherVoteReward.getInstance().checkCumualativeVotes(user);
OtherVoteReward.getInstance().checkMilestone(user);
if (user.isOnline() || voteSite.isGiveOffline()) {
user.playerVote(voteSite, true, false);
user.closeInv();
} else {
user.addOfflineVote(voteSite.getKey());
// plugin.debug(ArrayUtils.getInstance().makeStringList(user.getOfflineVotes()));
plugin.debug("Offline vote set for " + playerName + " (" + user.getUUID() + ") on "
+ voteSite.getKey());
}
plugin.setUpdate(true);
// broadcast vote if enabled in config
if (config.getBroadCastVotesEnabled()) {
if (!Config.getInstance().getFormatBroadcastWhenOnline() || user.isOnline()) {
voteSite.broadcastVote(user);
}
}
});
// update last vote time
user.setTime(voteSite);
OtherVoteReward.getInstance().checkFirstVote(user);
if (user.isReminded()) {
user.setReminded(false);
}
// check if player has voted on all sites in one day
if (user.isOnline() || voteSite.isGiveOffline()) {
user.playerVote(voteSite, true, false);
user.closeInv();
} else {
user.addOfflineVote(voteSite.getKey());
// plugin.debug(ArrayUtils.getInstance().makeStringList(user.getOfflineVotes()));
plugin.debug(
"Offline vote set for " + playerName + " (" + user.getUUID() + ") on " + voteSite.getKey());
}
// add to total votes
if (Config.getInstance().getCountFakeVotes() || realVote) {
if (Config.getInstance().getAddTotals()) {
user.addTotal();
user.addTotalDaily();
user.addTotalWeekly();
}
user.addPoints();
}
OtherVoteReward.getInstance().checkAllSites(user);
OtherVoteReward.getInstance().checkCumualativeVotes(user);
OtherVoteReward.getInstance().checkMilestone(user);
}
plugin.setUpdate(true);
}
@@ -163,13 +161,6 @@ public class VotiferEvent implements Listener {
public void run() {
String voteSiteName = plugin.getVoteSiteName(voteSite);
PlayerVoteEvent voteEvent = new PlayerVoteEvent(plugin.getVoteSite(voteSiteName), voteUsername);
plugin.getServer().getPluginManager().callEvent(voteEvent);
if (voteEvent.isCancelled()) {
return;
}
ArrayList<String> sites = configVoteSites.getVoteSitesNames();
if (sites != null) {
if (!sites.contains(voteSiteName) && Config.getInstance().getAutoCreateVoteSites()) {
@@ -182,6 +173,13 @@ public class VotiferEvent implements Listener {
ConfigVoteSites.getInstance().generateVoteSite(voteSiteName);
}
PlayerVoteEvent voteEvent = new PlayerVoteEvent(plugin.getVoteSite(voteSiteName), voteUsername);
plugin.getServer().getPluginManager().callEvent(voteEvent);
if (voteEvent.isCancelled()) {
return;
}
playerVote(voteUsername, voteSite, true);
}
@@ -525,11 +525,11 @@ public class Main extends JavaPlugin {
return Config.getInstance().getDataStorage();
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("CheckOnWorldChange") {
metrics.addCustomChart(new BStatsMetrics.SimplePie("DisableCheckOnWorldChange") {
@Override
public String getValue() {
return "" + Config.getInstance().getCheckOnWorldChange();
return "" + Config.getInstance().getDisableCheckOnWorldChange();
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("votereminding_enabled") {
@@ -873,53 +873,47 @@ public class Main extends JavaPlugin {
if (update && plugin != null && !updateStarted) {
updateStarted = true;
update = false;
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
synchronized (plugin) {
if (AdvancedCoreHook.getInstance().getStorageType().equals(UserStorage.MYSQL)) {
if (AdvancedCoreHook.getInstance().getMysql() == null) {
plugin.debug("MySQL not loaded yet");
return;
} else if (Config.getInstance().getClearCacheOnUpdate()) {
AdvancedCoreHook.getInstance().getMysql().clearCache();
} else {
AdvancedCoreHook.getInstance().getMysql().clearCacheBasic();
}
}
plugin.debug("Starting background task");
long time = System.currentTimeMillis();
try {
ArrayList<String> uuids = UserManager.getInstance().getAllUUIDs();
ArrayList<User> users = new ArrayList<User>();
for (String uuid : uuids) {
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
users.add(user);
}
update = false;
long time1 = ((System.currentTimeMillis() - time) / 1000);
plugin.debug("Finished loading player data in " + time1 + " seconds, " + users.size()
+ " users");
TopVoterHandler.getInstance().updateTopVoters(users);
Commands.getInstance().updateVoteToday(users);
ServerData.getInstance().updateValues();
Signs.getInstance().updateSigns();
for (Player player : Bukkit.getOnlinePlayers()) {
UserManager.getInstance().getVotingPluginUser(player).offVote();
}
time1 = ((System.currentTimeMillis() - time) / 1000);
plugin.debug("Background task finished in " + time1 + " seconds");
} catch (Exception ex) {
ex.printStackTrace();
plugin.getLogger().info("Looks like something went wrong.");
}
synchronized (plugin) {
if (AdvancedCoreHook.getInstance().getStorageType().equals(UserStorage.MYSQL)) {
if (AdvancedCoreHook.getInstance().getMysql() == null) {
plugin.debug("MySQL not loaded yet");
return;
} else if (Config.getInstance().getClearCacheOnUpdate()) {
AdvancedCoreHook.getInstance().getMysql().clearCache();
} else {
AdvancedCoreHook.getInstance().getMysql().clearCacheBasic();
}
}
});
plugin.debug("Starting background task");
long time = System.currentTimeMillis();
try {
ArrayList<String> uuids = UserManager.getInstance().getAllUUIDs();
ArrayList<User> users = new ArrayList<User>();
for (String uuid : uuids) {
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
users.add(user);
}
update = false;
long time1 = ((System.currentTimeMillis() - time) / 1000);
plugin.debug("Finished loading player data in " + time1 + " seconds, " + users.size() + " users");
TopVoterHandler.getInstance().updateTopVoters(users);
Commands.getInstance().updateVoteToday(users);
ServerData.getInstance().updateValues();
Signs.getInstance().updateSigns();
for (Player player : Bukkit.getOnlinePlayers()) {
UserManager.getInstance().getVotingPluginUser(player).offVote();
}
time1 = ((System.currentTimeMillis() - time) / 1000);
plugin.debug("Background task finished in " + time1 + " seconds");
} catch (Exception ex) {
ex.printStackTrace();
plugin.getLogger().info("Looks like something went wrong.");
}
}
updateStarted = false;
}
}
@@ -932,7 +926,8 @@ public class Main extends JavaPlugin {
AdvancedCoreHook.getInstance().setStorageType(UserStorage.value(Config.getInstance().getDataStorage()));
loadMySQL();
AdvancedCoreHook.getInstance().setCheckOnWorldChange(Config.getInstance().getCheckOnWorldChange());
AdvancedCoreHook.getInstance()
.setDisableCheckOnWorldChange(Config.getInstance().getDisableCheckOnWorldChange());
AdvancedCoreHook.getInstance().setDebug(Config.getInstance().getDebugEnabled());
AdvancedCoreHook.getInstance().setDebugIngame(Config.getInstance().getDebugInfoIngame());
AdvancedCoreHook.getInstance().setDefaultRequestMethod(Config.getInstance().getRequestAPIDefaultMethod());
@@ -13,6 +13,7 @@ import java.util.stream.Collectors;
import org.bukkit.entity.Player;
import com.Ben12345rocks.AdvancedCore.AdvancedCoreHook;
import com.Ben12345rocks.AdvancedCore.Objects.RewardBuilder;
import com.Ben12345rocks.AdvancedCore.Objects.RewardHandler;
import com.Ben12345rocks.AdvancedCore.Objects.UUID;
@@ -352,6 +353,10 @@ public class User extends com.Ben12345rocks.AdvancedCore.Objects.User {
return getData().getInt("MonthTotal");
}
public int getLastMonthTotal() {
return getData().getInt("LastMonthTotal");
}
public int getMonthVoteStreak() {
return getData().getInt("MonthVoteStreak");
}
@@ -558,6 +563,7 @@ public class User extends com.Ben12345rocks.AdvancedCore.Objects.User {
* Off vote.
*/
public void offVote() {
AdvancedCoreHook.getInstance().extraDebug("Checking offline vote site votes");
Player player = getPlayer();
if (player != null) {
boolean topVoterIngorePerm = player.hasPermission("VotingPlugin.TopVoter.Ignore");
@@ -578,9 +584,8 @@ public class User extends com.Ben12345rocks.AdvancedCore.Objects.User {
plugin.debug("Site doesn't exist: " + offlineVotes.get(i));
}
}
if (!offlineVotes.isEmpty()) {
setOfflineVotes(new ArrayList<String>());
}
setOfflineVotes(new ArrayList<String>());
giveOfflineOtherRewards();
}
@@ -597,7 +602,7 @@ public class User extends com.Ben12345rocks.AdvancedCore.Objects.User {
* the broadcast
*/
public void playerVote(VoteSite voteSite, boolean online, boolean broadcast) {
if (Config.getInstance().getBroadCastVotesEnabled() && Config.getInstance().getFormatBroadcastWhenOnline()
if (Config.getInstance().getFormatBroadcastWhenOnline() && Config.getInstance().getBroadCastVotesEnabled()
&& broadcast) {
voteSite.broadcastVote(this);
}
@@ -624,6 +629,7 @@ public class User extends com.Ben12345rocks.AdvancedCore.Objects.User {
}
public void resetMonthlyTotalVotes() {
setLastMonthTotal(getMonthTotal());
setMonthTotal(0);
}
@@ -713,6 +719,10 @@ public class User extends com.Ben12345rocks.AdvancedCore.Objects.User {
getData().setInt("MonthTotal", total);
}
public void setLastMonthTotal(int total) {
getData().setInt("LastMonthTotal", total);
}
public void setMonthVoteStreak(int streak) {
getData().setInt("MonthVoteStreak", streak);
if (getBestMonthVoteStreak() < streak) {
@@ -781,4 +791,10 @@ public class User extends com.Ben12345rocks.AdvancedCore.Objects.User {
return true;
}
public void clearOfflineRewards() {
setOfflineVotes(new ArrayList<String>());
setOfflineRewards(new ArrayList<String>());
setOfflineOtherRewards(new ArrayList<String>());
}
}
@@ -2,12 +2,15 @@ package com.Ben12345rocks.VotingPlugin.OtherRewards;
import java.util.Set;
import org.bukkit.Bukkit;
import com.Ben12345rocks.AdvancedCore.Objects.RewardBuilder;
import com.Ben12345rocks.AdvancedCore.Objects.RewardHandler;
import com.Ben12345rocks.AdvancedCore.Util.Misc.StringUtils;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Config.ConfigVoteSites;
import com.Ben12345rocks.VotingPlugin.Events.PlayerVoteAllSitesEvent;
import com.Ben12345rocks.VotingPlugin.Objects.User;
// TODO: Auto-generated Javadoc
@@ -66,7 +69,6 @@ public class OtherVoteReward {
giveAllSitesRewards(user, user.isOnline());
}
return checkAllVotes;
}
/**
@@ -224,6 +226,12 @@ public class OtherVoteReward {
* the online
*/
public void giveAllSitesRewards(User user, boolean online) {
PlayerVoteAllSitesEvent event = new PlayerVoteAllSitesEvent(user);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
RewardHandler.getInstance().giveReward(user, Config.getInstance().getData(),
Config.getInstance().getAllSitesRewardPath(), online);
}
@@ -275,4 +283,6 @@ public class OtherVoteReward {
new RewardBuilder(Config.getInstance().getData(), Config.getInstance().getVoteStreakRewardsPath(type, string))
.setOnline(online).withPlaceHolder("Type", type).withPlaceHolder("Streak", "" + votes).send(user);
}
}
@@ -81,7 +81,7 @@ public class TopVoterHandler implements Listener {
public void onDateChanged(DateChangedEvent event) {
plugin.setUpdate(true);
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onPreDateChanged(PreDateChangedEvent event) {
plugin.setUpdate(true);
@@ -113,13 +113,17 @@ public class TopVoterHandler implements Listener {
if (Config.getInstance().getDailyAwardsEnabled()) {
Set<String> places = Config.getInstance().getDailyPossibleRewardPlaces();
int i = 0;
int lastTotal = -1;
for (User user : plugin.topVoterDaily.keySet()) {
if (!Config.getInstance().getTopVoterIgnorePermission() || !user.isTopVoterIgnore()) {
i++;
if (user.getDailyTotal() != lastTotal) {
i++;
}
if (places.contains(Integer.toString(i))) {
user.giveDailyTopVoterAward(i);
}
}
lastTotal = user.getDailyTotal();
}
}
resetDailyTotals();
@@ -150,13 +154,18 @@ public class TopVoterHandler implements Listener {
if (Config.getInstance().getMonthlyAwardsEnabled()) {
Set<String> places = Config.getInstance().getMonthlyPossibleRewardPlaces();
int i = 0;
int lastTotal = -1;
for (User user : plugin.topVoterMonthly.keySet()) {
if (!Config.getInstance().getTopVoterIgnorePermission() || !user.isTopVoterIgnore()) {
i++;
if (user.getMonthTotal() != lastTotal) {
i++;
}
if (places.contains(Integer.toString(i))) {
user.giveMonthlyTopVoterAward(i);
}
}
lastTotal = user.getMonthTotal();
}
}
resetMonthlyTotals();
@@ -196,13 +205,17 @@ public class TopVoterHandler implements Listener {
if (Config.getInstance().getWeeklyAwardsEnabled()) {
Set<String> places = Config.getInstance().getWeeklyPossibleRewardPlaces();
int i = 0;
int lastTotal = -1;
for (User user : plugin.topVoterWeekly.keySet()) {
if (!Config.getInstance().getTopVoterIgnorePermission() || !user.isTopVoterIgnore()) {
i++;
if (user.getWeeklyTotal() != lastTotal) {
i++;
}
if (places.contains(Integer.toString(i))) {
user.giveWeeklyTopVoterAward(i);
}
}
lastTotal = user.getWeeklyTotal();
}
}
resetWeeklyTotals();
@@ -268,9 +281,10 @@ public class TopVoterHandler implements Listener {
}
public void storeDailyTopVoters() {
String month = LocalDateTime.now().getMonth().toString();
int year = LocalDateTime.now().getYear();
int day = LocalDateTime.now().getDayOfMonth();
LocalDateTime time = LocalDateTime.now().minusHours(5);
String month = time.getMonth().toString();
int year = time.getYear();
int day = time.getDayOfMonth();
YMLFileHandler file = new YMLFileHandler(new File(plugin.getDataFolder(),
"TopVoter" + File.separator + "Daily" + File.separator + year + "_" + month + "_" + day + ".yml"));
file.setup();
@@ -285,10 +299,11 @@ public class TopVoterHandler implements Listener {
}
public void storeMonthlyTopVoters() {
String month = LocalDateTime.now().getMonth().toString();
int year = LocalDateTime.now().getYear();
LocalDateTime time = LocalDateTime.now().minusHours(10);
String month = time.getMonth().toString();
int year = time.getYear();
YMLFileHandler file = new YMLFileHandler(new File(plugin.getDataFolder(),
"TopVoter" + File.separator + "Monthly" + File.separator + year + "_" + month + ".yml"));
"TopVoter" + File.separator + "Monthly" + File.separator + month + "_" + year + ".yml"));
file.setup();
ArrayList<String> topVoters = new ArrayList<String>();
int count = 1;
@@ -301,9 +316,10 @@ public class TopVoterHandler implements Listener {
}
public void storeWeeklyTopVoters() {
String month = LocalDateTime.now().getMonth().toString();
int year = LocalDateTime.now().getYear();
int week = LocalDateTime.now().getDayOfMonth();
LocalDateTime time = LocalDateTime.now().minusHours(10);
String month = time.getMonth().toString();
int year = time.getYear();
int week = time.getDayOfYear();
YMLFileHandler file = new YMLFileHandler(new File(plugin.getDataFolder(),
"TopVoter" + File.separator + "Weekly" + File.separator + year + "_" + month + "_" + week + ".yml"));
file.setup();
@@ -49,4 +49,8 @@ public class UserManager {
public User getVotingPluginUser(UUID uuid) {
return new User(uuid);
}
public User getVotingPluginUser(java.util.UUID uuid) {
return getVotingPluginUser(new UUID(uuid.toString()));
}
}
@@ -61,6 +61,8 @@ public class PlaceHolders {
return Integer.toString(user.getMonthTotal());
} else if (identifier.equalsIgnoreCase("alltimetotal")) {
return Integer.toString(user.getAllTimeTotal());
} else if (identifier.equalsIgnoreCase("lastmonthtotal")) {
return Integer.toString(user.getLastMonthTotal());
}
String[] args = identifier.split("_");
@@ -3,11 +3,13 @@ package com.Ben12345rocks.VotingPlugin.VoteParty;
import java.util.ArrayList;
import java.util.HashMap;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import com.Ben12345rocks.AdvancedCore.Listeners.DayChangeEvent;
import com.Ben12345rocks.AdvancedCore.Listeners.MonthChangeEvent;
import com.Ben12345rocks.AdvancedCore.Objects.RewardBuilder;
import com.Ben12345rocks.AdvancedCore.Objects.UUID;
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
@@ -16,6 +18,7 @@ import com.Ben12345rocks.AdvancedCore.Util.Misc.StringUtils;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Data.ServerData;
import com.Ben12345rocks.VotingPlugin.Events.VotePartyEvent;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
@@ -85,6 +88,12 @@ public class VoteParty implements Listener {
public void check() {
if (getTotalVotes() >= Config.getInstance().getVotePartyVotesRequired()) {
setTotalVotes(getTotalVotes() - Config.getInstance().getVotePartyVotesRequired());
VotePartyEvent event = new VotePartyEvent();
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
giveRewards();
MiscUtils.getInstance().broadcast(Config.getInstance().getVotePartyBroadcast());
}
@@ -172,6 +181,17 @@ public class VoteParty implements Listener {
* Give rewards.
*/
public void giveRewards() {
for (final String cmd : Config.getInstance().getVotePartyCommands()) {
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), cmd);
}
});
}
if (Config.getInstance().getVotePartyGiveAllPlayers()) {
for (String uuid : UserManager.getInstance().getAllUUIDs()) {
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
@@ -189,8 +209,14 @@ public class VoteParty implements Listener {
@EventHandler
public void onDayChange(DayChangeEvent event) {
if (Config.getInstance().getVotePartyResetEachDay()) {
setTotalVotes(0);
setVotedUsers(new ArrayList<String>());
reset();
}
}
@EventHandler
public void onMonthChange(MonthChangeEvent event) {
if (Config.getInstance().getVotePartyResetMontly()) {
reset();
}
}
@@ -206,6 +232,7 @@ public class VoteParty implements Listener {
user.setVotePartyVotes(0);
}
}
}
/**
@@ -230,4 +257,14 @@ public class VoteParty implements Listener {
ServerData.getInstance().saveData();
}
public synchronized void vote(User user, boolean realVote) {
if (Config.getInstance().getVotePartyEnabled()) {
if (Config.getInstance().getVotePartyCountFakeVotes() || realVote) {
addTotal(user);
addVotePlayer(user);
check();
}
}
}
}