Compare commits

..
17 Commits
23 changed files with 462 additions and 100 deletions

No files matched your search

@@ -51,6 +51,12 @@ TriggerVotifierEvent: false
# Also can be applied to rewards
Server: PleaseSet
# Rewards from bungee vote party
# Gives to only players only
# Use regular voteparty rewards otherwise
# Can edit via /av gui
BungeeVotePartyRewards: {}
# -----------------------------
# For socket setup below only
# -----------------------------
+4 -4
View File
@@ -22,10 +22,6 @@ MySQL:
Password: ''
# Max number of connections
MaxConnections: 1
# Maxium size of caching mysql
# -1 for no limit
# Affecting this value may affect performance
MaxSize: -1
# Table name prefix, for use with mutliple servers
# Don't use with PLUGINMESSAGING bungee setup
Prefix: ''
@@ -426,6 +422,10 @@ LimitMonthlyVotes: false
# Shoudn't be needed, but enable if you have trouble with milestones
PreventRepeatMilestones: false
# Close inventory on player vote
# This is to prevent any possible exploits
CloseInventoryOnVote: true
# When enabled the command /vote setprimaryaccount (playername)
# will be shown (after restart)
# Primary account will be used instead of the players account to get
+2 -2
View File
@@ -79,8 +79,8 @@ CHEST:
# Name: 'Extra item'
## Works on most GUI items
# Slot: 10
## Send rewards on click, run commands, check conditions, etc
# Rewards: []
## Send rewards on click, run commands, check conditions, etc
# Rewards: []
# GUI for /vote url, /vote
VoteURL:
@@ -168,6 +168,11 @@ LogoutRewards: {}
EnableMonthlyAwards: true
# TopVoter Placeholders:
#%place% - place in topvoter
#%topvoter% - topvoter type
#%votes% - current total votes related to top voter
# Rewards to give
MonthlyAwards:
# Position. 1 is first in top voter, 2 is second, etc...
+19
View File
@@ -56,6 +56,25 @@ BungeeManageTotals: true
# Set DisableBroadcast to true on spigot servers (BungeeSettings.yml) as well
Broadcast: true
VoteParty:
# If enabled, will trigger vote party reward
# in BungeeSettings.yml under BungeeVotePartyReward
# Only runs rewards for online players
Enabled: false
# Votes required
VotesRequired: 100
# Increase amount required on each vote party
IncreaseVotesRequired: 0
# If false, will only send to servers listed below
SendToAllServers: true
# Servers to send to, if SendToAllServers is false
ServersToSend: []
# List of commands to run on bungee server
# Set spigot commands in BungeeSettings.yml
BungeeCommands: []
Broadcast: '&aVote party has been reached!'
# ----------------------------
# PLUGINMESSAGING Settings
# ----------------------------
+1 -1
View File
@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.bencodez</groupId>
<artifactId>votingplugin</artifactId>
<version>6.6.2</version>
<version>6.7</version>
<packaging>jar</packaging>
<name>VotingPlugin</name>
<properties>
@@ -4,7 +4,12 @@ import java.io.File;
import java.util.ArrayList;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import com.bencodez.advancedcore.api.misc.MiscUtils;
import com.bencodez.advancedcore.api.misc.encryption.EncryptionHandler;
import com.bencodez.advancedcore.api.rewards.RewardBuilder;
import com.bencodez.advancedcore.bungeeapi.pluginmessage.PluginMessageHandler;
import com.bencodez.advancedcore.bungeeapi.sockets.ClientHandler;
import com.bencodez.advancedcore.bungeeapi.sockets.SocketHandler;
@@ -82,17 +87,27 @@ public class BungeeHandler {
user.clearCache();
boolean broadcast = true;
boolean bungeeBroadcast = false;
if (!plugin.getBungeeSettings().isBungeeBroadcast()&& !plugin.getBungeeSettings().isDisableBroadcast()) {
if (wasOnline || plugin.getBungeeSettings().isBungeeBroadcastAlways()) {
VoteSite site = plugin.getVoteSite(service, true);
if (site != null) {
site.broadcastVote(user, false);
broadcast = false;
} else {
plugin.getLogger().warning("No votesite for " + service);
if (args.size() > 9) {
bungeeBroadcast = Boolean.valueOf(args.get(9));
}
if (!bungeeBroadcast) {
if (!plugin.getBungeeSettings().isBungeeBroadcast()
&& !plugin.getBungeeSettings().isDisableBroadcast()) {
if (wasOnline || plugin.getBungeeSettings().isBungeeBroadcastAlways()) {
VoteSite site = plugin.getVoteSite(service, true);
if (site != null) {
site.broadcastVote(user, false);
broadcast = false;
} else {
plugin.getLogger().warning("No votesite for " + service);
}
}
}
} else {
broadcast = false;
}
user.bungeeVotePluginMessaging(service, time, text, !setTotals, wasOnline, broadcast);
@@ -139,17 +154,28 @@ public class BungeeHandler {
boolean wasOnline = Boolean.valueOf(args.get(4));
boolean broadcast = true;
boolean bungeeBroadcast = false;
if (!plugin.getBungeeSettings().isBungeeBroadcast() && !plugin.getBungeeSettings().isDisableBroadcast()) {
if (Boolean.valueOf(args.get(4)) || plugin.getBungeeSettings().isBungeeBroadcastAlways()) {
VoteSite site = plugin.getVoteSite(service, true);
if (site != null) {
site.broadcastVote(user, false);
broadcast = false;
} else {
plugin.getLogger().warning("No votesite for " + service);
if (args.size() > 9) {
bungeeBroadcast = Boolean.valueOf(args.get(9));
}
if (!bungeeBroadcast) {
if (!plugin.getBungeeSettings().isBungeeBroadcast()
&& !plugin.getBungeeSettings().isDisableBroadcast()) {
if (Boolean.valueOf(args.get(4))
|| plugin.getBungeeSettings().isBungeeBroadcastAlways()) {
VoteSite site = plugin.getVoteSite(service, true);
if (site != null) {
site.broadcastVote(user, false);
broadcast = false;
} else {
plugin.getLogger().warning("No votesite for " + service);
}
}
}
} else {
broadcast = false;
}
user.bungeeVotePluginMessaging(service, time, text, !setTotals, wasOnline, broadcast);
@@ -207,6 +233,23 @@ public class BungeeHandler {
}
});
plugin.getPluginMessaging().add(new PluginMessageHandler("VotePartyBungee") {
@Override
public void onRecieve(String subChannel, ArrayList<String> args) {
for (Player p : Bukkit.getOnlinePlayers()) {
new RewardBuilder(plugin.getBungeeSettings().getData(), "BungeeVotePartyRewards").send(p);
}
}
});
plugin.getPluginMessaging().add(new PluginMessageHandler("VotePartyBroadcast") {
@Override
public void onRecieve(String subChannel, ArrayList<String> args) {
String broadcast = args.get(0);
MiscUtils.getInstance().broadcast(broadcast);
}
});
} else if (method.equals(BungeeMethod.SOCKETS)) {
encryptionHandler = new EncryptionHandler(new File(plugin.getDataFolder(), "secretkey.key"));
@@ -305,6 +348,25 @@ public class BungeeHandler {
}
});
socketHandler.add(new SocketReceiver("VotePartyBungee") {
@Override
public void onReceive(String[] data) {
for (Player p : Bukkit.getOnlinePlayers()) {
new RewardBuilder(plugin.getBungeeSettings().getData(), "BungeeVotePartyRewards").send(p);
}
}
});
socketHandler.add(new SocketReceiver("VotePartyBroadcast") {
@Override
public void onReceive(String[] data) {
String broadcast = data[0];
MiscUtils.getInstance().broadcast(broadcast);
}
});
if (plugin.getOptions().getServer().equalsIgnoreCase("pleaseset")) {
plugin.getLogger().warning("Server name for bungee voting is not set, please set it");
}
@@ -270,7 +270,11 @@ public class VotingPluginMain extends AdvancedCorePlugin {
}
public LinkedHashMap<TopVoterPlayer, Integer> getTopVoter(TopVoter top) {
return topVoter.get(top);
LinkedHashMap<TopVoterPlayer, Integer> top1 = topVoter.get(top);
if (top1 == null) {
top1 = new LinkedHashMap<TopVoterPlayer, Integer>();
}
return top1;
}
/**
@@ -846,6 +850,28 @@ public class VotingPluginMain extends AdvancedCorePlugin {
});
}
addDirectlyDefinedRewards(new DirectlyDefinedReward("BungeeVotePartyRewards") {
@Override
public void createSection(String key) {
getBungeeSettings().createSection(key);
}
@Override
public ConfigurationSection getFileData() {
return getBungeeSettings().getData();
}
@Override
public void save() {
getBungeeSettings().saveData();
}
@Override
public void setData(String path, Object value) {
getBungeeSettings().setValue(path, value);
}
});
}
private void loadTimer() {
@@ -77,6 +77,34 @@ public class Config {
return getData().getBoolean("WaitForUserOnline", false);
}
public boolean getVotePartyEnabled() {
return getData().getBoolean("VoteParty.Enabled", false);
}
public boolean getVotePartySendToAllServers() {
return getData().getBoolean("VoteParty.SendToAllServers", true);
}
public int getVotePartyVotesRequired() {
return getData().getInt("VoteParty.VotesRequired", 100);
}
public int getVotePartyIncreaseVotesRequired() {
return getData().getInt("VoteParty.IncreaseVotesRequired", 0);
}
public String getVotePartyBroadcast() {
return getData().getString("VoteParty.Broadcast", "");
}
public List<String> getVotePartyServersToSend() {
return getData().getStringList("VoteParty.ServersToSend");
}
public List<String> getVotePartyBungeeCommands() {
return getData().getStringList("VoteParty.BungeeCommands");
}
public void load() {
if (!bungee.getDataFolder().exists()) {
bungee.getDataFolder().mkdir();
@@ -18,6 +18,30 @@ public class VoteCache {
this.bungee = bungee;
}
public int getVotePartyCurrentVotes() {
return getData().getInt("VoteParty.CurrentVotes", 0);
}
public int getVotePartyInreaseVotesRequired() {
return getData().getInt("VoteParty.IncreaseVotes", 0);
}
public void setVotePartyCurrentVotes(int amount) {
getData().set("VoteParty.CurrentVotes", amount);
}
public void setVotePartyInreaseVotesRequired(int amount) {
getData().set("VoteParty.IncreaseVotes", amount);
}
public void setVotePartyCache(String server, int amount) {
getData().set("VoteParty.Cache." + server, amount);
}
public int getVotePartyCache(String server) {
return getData().getInt("VoteParty.Cache." + server, 0);
}
public void addVote(String server, int num, OfflineBungeeVote voteData) {
Configuration section = getData().getSection("VoteCache." + server + "." + num);
section.set("Name", voteData.getPlayerName());
@@ -39,7 +39,9 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import lombok.Getter;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.connection.Server;
@@ -102,7 +104,7 @@ public class VotingPluginBungee extends Plugin implements Listener {
cache.getService(), "" + cache.getTime(), Boolean.FALSE.toString(),
"" + cache.isRealVote(), cache.getText(),
"" + getConfig().getBungeeManageTotals(),
"" + BungeeVersion.getPluginMessageVersion());
"" + BungeeVersion.getPluginMessageVersion(), "" + config.getBroadcast());
} else {
debug("Not sending vote because user isn't on server " + server + ": "
+ cache.toString());
@@ -129,7 +131,7 @@ public class VotingPluginBungee extends Plugin implements Listener {
sendPluginMessageServer(server, "VoteOnline", cache.getPlayerName(), cache.getUuid(),
cache.getService(), "" + cache.getTime(), Boolean.FALSE.toString(),
"" + cache.isRealVote(), cache.getText(), "" + getConfig().getBungeeManageTotals(),
"" + BungeeVersion.getPluginMessageVersion());
"" + BungeeVersion.getPluginMessageVersion(), "" + config.getBroadcast());
}
cachedOnlineVotes.put(uuid, new ArrayList<OfflineBungeeVote>());
}
@@ -309,8 +311,8 @@ public class VotingPluginBungee extends Plugin implements Listener {
num++;
}
}
voteCacheFile.save();
}
voteCacheFile.save();
nonVotedPlayersCache.save();
if (mysql != null) {
mysql.shutdown();
@@ -359,15 +361,12 @@ public class VotingPluginBungee extends Plugin implements Listener {
this.getProxy().registerChannel("vp:vp");
if (mysqlLoaded) {
if (method.equals(BungeeMethod.MYSQL)) {
// this.getProxy().registerChannel("vp:vp");
voteCacheFile = new VoteCache(this);
voteCacheFile.load();
} else if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
voteCacheFile = new VoteCache(this);
voteCacheFile.load();
nonVotedPlayersCache = new NonVotedPlayersCache(this);
nonVotedPlayersCache.load();
nonVotedPlayersCache = new NonVotedPlayersCache(this);
nonVotedPlayersCache.load();
if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
try {
for (String server : voteCacheFile.getServers()) {
@@ -472,6 +471,10 @@ public class VotingPluginBungee extends Plugin implements Listener {
}
}
currentVotePartyVotesRequired = getConfig().getVotePartyVotesRequired()
+ voteCacheFile.getVotePartyInreaseVotesRequired();
votePartyVotes = voteCacheFile.getVotePartyCurrentVotes();
BStatsMetricsBungee metrics = new BStatsMetricsBungee(this, 9453);
metrics.addCustomChart(
@@ -598,6 +601,8 @@ public class VotingPluginBungee extends Plugin implements Listener {
public void reload(boolean loadMysql) {
config.load();
currentVotePartyVotesRequired = getConfig().getVotePartyVotesRequired()
+ voteCacheFile.getVotePartyInreaseVotesRequired();
if (loadMysql) {
try {
if (!config.getData().getString("Host", "").isEmpty()) {
@@ -764,13 +769,7 @@ public class VotingPluginBungee extends Plugin implements Listener {
text = new BungeeMessageData(0, 0, 0, 0, 0, 0);
}
/*
* String text = mysqlUpdate(data, uuid, "AllTimeTotal", 1) + "//" +
* mysqlUpdate(data, uuid, "MonthTotal", 1) + "//" + mysqlUpdate(data, uuid,
* "WeeklyTotal", 1) + "//" + mysqlUpdate(data, uuid, "DailyTotal", 1) + "//" +
* mysqlUpdate(data, uuid, "Points", 1) + "//" + mysqlUpdate(data, uuid,
* "MilestoneCount", 1);
*/
addVoteParty();
long time = LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
@@ -802,7 +801,7 @@ public class VotingPluginBungee extends Plugin implements Listener {
sendPluginMessageServer(s, "Vote", player, uuid, service, "" + time,
Boolean.TRUE.toString(), "" + realVote, text.toString(),
"" + getConfig().getBungeeManageTotals(),
"" + BungeeVersion.getPluginMessageVersion());
"" + BungeeVersion.getPluginMessageVersion(), "" + config.getBroadcast());
}
if (config.getBroadcast()) {
sendPluginMessageServer(s, "VoteBroadcast", uuid, player, service);
@@ -815,7 +814,8 @@ public class VotingPluginBungee extends Plugin implements Listener {
&& !config.getBlockedServers().contains(p.getServer().getInfo().getName())) {
sendPluginMessageServer(p.getServer().getInfo().getName(), "VoteOnline", player, uuid, service,
"" + time, Boolean.TRUE.toString(), "" + realVote, text.toString(),
"" + getConfig().getBungeeManageTotals(), "" + BungeeVersion.getPluginMessageVersion());
"" + getConfig().getBungeeManageTotals(), "" + BungeeVersion.getPluginMessageVersion(),
"" + config.getBroadcast());
} else {
if (!cachedOnlineVotes.containsKey(uuid)) {
cachedOnlineVotes.put(uuid, new ArrayList<OfflineBungeeVote>());
@@ -844,4 +844,63 @@ public class VotingPluginBungee extends Plugin implements Listener {
}
private int votePartyVotes = 0;
private int currentVotePartyVotesRequired = 0;
public void addCurrentVotePartyVotes(int amount) {
votePartyVotes += amount;
voteCacheFile.setVotePartyCurrentVotes(votePartyVotes);
debug("Current vote party total: " + votePartyVotes);
}
public void addVoteParty() {
if (getConfig().getVotePartyEnabled()) {
addCurrentVotePartyVotes(1);
if (votePartyVotes >= currentVotePartyVotesRequired) {
debug("Vote party reached");
addCurrentVotePartyVotes(-currentVotePartyVotesRequired);
currentVotePartyVotesRequired += getConfig().getVotePartyIncreaseVotesRequired();
voteCacheFile.setVotePartyInreaseVotesRequired(voteCacheFile.getVotePartyInreaseVotesRequired()
+ getConfig().getVotePartyIncreaseVotesRequired());
if (!getConfig().getVotePartyBroadcast().isEmpty()) {
getProxy().broadcast(new TextComponent(
ChatColor.translateAlternateColorCodes('&', getConfig().getVotePartyBroadcast())));
}
for (String command : getConfig().getVotePartyBungeeCommands()) {
getProxy().getPluginManager().dispatchCommand(getProxy().getConsole(), command);
}
if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
if (getConfig().getVotePartySendToAllServers()) {
for (Entry<String, ServerInfo> entry : getProxy().getServers().entrySet()) {
sendVoteParty(entry.getKey(), entry.getValue());
}
} else {
for (String server : getConfig().getVotePartyServersToSend()) {
ServerInfo serverInfo = getProxy().getServerInfo(server);
if (serverInfo != null) {
sendVoteParty(server, serverInfo);
}
}
}
}
}
voteCacheFile.save();
}
}
public void sendVoteParty(String server, ServerInfo serverInfo) {
if (!serverInfo.getPlayers().isEmpty()) {
if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
sendPluginMessageServer(server, "VotePartyBungee");
} else if (method.equals(BungeeMethod.SOCKETS)) {
sendServerMessageServer(server, "VotePartyBungee");
}
}
}
}
@@ -63,6 +63,38 @@ public class Config extends VelocityYMLFile {
return getBoolean(getNode("SendVotesToAllServers"), true);
}
public boolean getVotePartyEnabled() {
return getBoolean(getVotePartyNode().getNode("Enabled"), false);
}
public ConfigurationNode getVotePartyNode() {
return getNode("VoteParty");
}
public boolean getVotePartySendToAllServers() {
return getBoolean(getVotePartyNode().getNode("SendToAllServers"), false);
}
public int getVotePartyVotesRequired() {
return getInt(getVotePartyNode().getNode("VotesRequired"), 100);
}
public int getVotePartyIncreaseVotesRequired() {
return getInt(getVotePartyNode().getNode("IncreaseVotesRequired"), 0);
}
public String getVotePartyBroadcast() {
return getString(getVotePartyNode().getNode("Broadcast"), "");
}
public List<String> getVotePartyServersToSend() {
return getStringList(getVotePartyNode().getNode("ServersToSend"), new ArrayList<String>());
}
public List<String> getVotePartyBungeeCommands() {
return getStringList(getVotePartyNode().getNode("BungeeCommands"), new ArrayList<String>());
}
public ConfigurationNode getSpigotServerConfiguration(String s) {
return getNode("SpigotServers", s);
}
@@ -14,6 +14,30 @@ public class VoteCache extends VelocityYMLFile {
super(file);
}
public int getVotePartyCurrentVotes() {
return getInt(getNode("VoteParty").getNode("CurrentVotes"), 0);
}
public int getVotePartyInreaseVotesRequired() {
return getInt(getNode("VoteParty").getNode("IncreaseVotes"), 0);
}
public void setVotePartyCurrentVotes(int amount) {
getNode("VoteParty").getNode("CurrentVotes").setValue(amount);
}
public void setVotePartyInreaseVotesRequired(int amount) {
getNode("VoteParty").getNode("IncreaseVotes").setValue(amount);
}
public void setVotePartyCache(String server, int amount) {
getNode("VoteParty").getNode("Cache").getNode(server).setValue(amount);
}
public int getVotePartyCache(String server) {
return getNode("VoteParty").getNode("Cache").getNode(server).getInt(0);
}
public void addVote(String server, int num, OfflineBungeeVote voteData) {
String[] path = new String[] { "VoteCache", server, "" + num };
@@ -20,6 +20,7 @@ import java.sql.SQLException;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
@@ -143,7 +144,7 @@ public class VotingPluginVelocity {
sendPluginMessageServer(serverToCheck, "Vote", cache.getPlayerName(), cache.getUuid(),
cache.getService(), "" + cache.getTime(), Boolean.FALSE.toString(),
"" + cache.isRealVote(), cache.getText(), "" + getConfig().getBungeeManageTotals(),
"" + BungeeVersion.getPluginMessageVersion());
"" + BungeeVersion.getPluginMessageVersion(), "" + config.getBroadcast());
} else {
debug("Not sending vote because user isn't on server " + serverToCheck + ": "
+ cache.toString());
@@ -169,7 +170,7 @@ public class VotingPluginVelocity {
sendPluginMessageServer(serverToCheck, "VoteOnline", cache.getPlayerName(), cache.getUuid(),
cache.getService(), "" + cache.getTime(), Boolean.FALSE.toString(),
"" + cache.isRealVote(), cache.getText(), "" + getConfig().getBungeeManageTotals(),
"" + BungeeVersion.getPluginMessageVersion());
"" + BungeeVersion.getPluginMessageVersion(), "" + config.getBroadcast());
}
cachedOnlineVotes.put(uuid, new ArrayList<OfflineBungeeVote>());
}
@@ -374,9 +375,8 @@ public class VotingPluginVelocity {
num++;
}
}
voteCacheFile.save();
}
voteCacheFile.save();
nonVotedPlayersCache.save();
if (mysql != null) {
mysql.shutDown();
@@ -431,14 +431,10 @@ public class VotingPluginVelocity {
server.getCommandManager().register(meta, new VotingPluginVelocityCommand(this));
if (mysqlLoaded) {
if (method.equals(BungeeMethod.MYSQL)) {
// this.getProxy().registerChannel("vp:vp");
} else if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
voteCacheFile = new VoteCache(new File(dataDirectory.toFile(), "votecache.yml"));
nonVotedPlayersCache = new NonVotedPlayersCache(
new File(dataDirectory.toFile(), "nonvotedplayerscache.yml"), this);
voteCacheFile = new VoteCache(new File(dataDirectory.toFile(), "votecache.yml"));
nonVotedPlayersCache = new NonVotedPlayersCache(
new File(dataDirectory.toFile(), "nonvotedplayerscache.yml"), this);
if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
try {
for (String serverToCheck : voteCacheFile.getServers()) {
ArrayList<OfflineBungeeVote> vote = new ArrayList<OfflineBungeeVote>();
@@ -480,7 +476,9 @@ public class VotingPluginVelocity {
}
for (String player : cachedOnlineVotes.keySet()) {
checkOnlineVotes(server.getPlayer(UUID.fromString(player)).get(), player, null);
if (server.getPlayer(UUID.fromString(player)).isPresent()) {
checkOnlineVotes(server.getPlayer(UUID.fromString(player)).get(), player, null);
}
}
}).delay(15L, TimeUnit.SECONDS).repeat(30l, TimeUnit.SECONDS).schedule();
@@ -538,6 +536,10 @@ public class VotingPluginVelocity {
}
}
currentVotePartyVotesRequired = getConfig().getVotePartyVotesRequired()
+ voteCacheFile.getVotePartyInreaseVotesRequired();
votePartyVotes = voteCacheFile.getVotePartyCurrentVotes();
try {
getVersionFile();
if (versionFile != null) {
@@ -671,6 +673,8 @@ public class VotingPluginVelocity {
public void reload(boolean loadMySQL) {
config.reload();
currentVotePartyVotesRequired = getConfig().getVotePartyVotesRequired()
+ voteCacheFile.getVotePartyInreaseVotesRequired();
if (loadMySQL) {
if (!config.getString(config.getNode("Host"), "").isEmpty()) {
loadMysql();
@@ -872,7 +876,7 @@ public class VotingPluginVelocity {
sendPluginMessageServer(s, "Vote", player, uuid, service, "" + time,
Boolean.TRUE.toString(), "" + realVote, text.toString(),
"" + getConfig().getBungeeManageTotals(),
"" + BungeeVersion.getPluginMessageVersion());
"" + BungeeVersion.getPluginMessageVersion(), "" + config.getBroadcast());
}
if (config.getBroadcast()) {
sendPluginMessageServer(s, "VoteBroadcast", uuid, player, service);
@@ -880,12 +884,16 @@ public class VotingPluginVelocity {
}
}
} else {
Player p = server.getPlayer(UUID.fromString(uuid)).get();
Player p = null;
if (server.getPlayer(UUID.fromString(uuid)).isPresent()) {
p = server.getPlayer(UUID.fromString(uuid)).get();
}
if (p != null && p.isActive() && !config.getBlockedServers()
.contains(p.getCurrentServer().get().getServerInfo().getName())) {
sendPluginMessageServer(p.getCurrentServer().get().getServer(), "VoteOnline", player, uuid,
service, "" + time, Boolean.TRUE.toString(), "" + realVote, text.toString(),
"" + getConfig().getBungeeManageTotals(), "" + BungeeVersion.getPluginMessageVersion());
"" + getConfig().getBungeeManageTotals(), "" + BungeeVersion.getPluginMessageVersion(),
"" + config.getBroadcast());
} else {
if (!cachedOnlineVotes.containsKey(uuid)) {
cachedOnlineVotes.put(uuid, new ArrayList<OfflineBungeeVote>());
@@ -913,4 +921,72 @@ public class VotingPluginVelocity {
e.printStackTrace();
}
}
private int votePartyVotes = 0;
private int currentVotePartyVotesRequired = 0;
public void addCurrentVotePartyVotes(int amount) {
votePartyVotes += amount;
voteCacheFile.setVotePartyCurrentVotes(votePartyVotes);
debug("Current vote party total: " + votePartyVotes);
}
public void addVoteParty() {
if (getConfig().getVotePartyEnabled()) {
addCurrentVotePartyVotes(1);
if (votePartyVotes >= currentVotePartyVotesRequired) {
debug("Current vote party total: " + votePartyVotes);
addCurrentVotePartyVotes(-currentVotePartyVotesRequired);
currentVotePartyVotesRequired += getConfig().getVotePartyIncreaseVotesRequired();
voteCacheFile.setVotePartyInreaseVotesRequired(voteCacheFile.getVotePartyInreaseVotesRequired()
+ getConfig().getVotePartyIncreaseVotesRequired());
if (!getConfig().getVotePartyBroadcast().isEmpty()) {
for (RegisteredServer server : getVotePartyServers()) {
if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
sendPluginMessageServer(server, "VotePartyBroadcast", config.getVotePartyBroadcast());
} else if (method.equals(BungeeMethod.SOCKETS)) {
sendServerMessageServer(server.getServerInfo().getName(), config.getVotePartyBroadcast());
}
}
}
for (String command : getConfig().getVotePartyBungeeCommands()) {
server.getCommandManager().executeAsync(server.getConsoleCommandSource(), command);
}
if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
for (RegisteredServer server : getVotePartyServers()) {
sendVoteParty(server);
}
}
}
voteCacheFile.save();
}
}
public Collection<RegisteredServer> getVotePartyServers() {
if (getConfig().getVotePartySendToAllServers()) {
return server.getAllServers();
}
Collection<RegisteredServer> list = new ArrayList<RegisteredServer>();
for (String server : getConfig().getVotePartyServersToSend()) {
if (this.server.getServer(server).isPresent()) {
list.add(this.server.getServer(server).get());
}
}
return list;
}
public void sendVoteParty(RegisteredServer server) {
if (!server.getPlayersConnected().isEmpty()) {
if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
sendPluginMessageServer(server, "VotePartyBungee");
} else if (method.equals(BungeeMethod.SOCKETS)) {
sendServerMessageServer(server.getServerInfo().getName(), "VotePartyBungee");
}
}
}
}
@@ -149,6 +149,15 @@ public class AdminGUI {
}
});
buttons.add(new BInventoryButton(new ItemBuilder(Material.STONE, 1).setName("&cEdit BungeeVotePartyRewards")) {
@Override
public void onClick(ClickEvent clickEvent) {
RewardEditGUI.getInstance().openRewardGUI(clickEvent.getPlayer(),
RewardHandler.getInstance().getDirectlyDefined("BungeeVotePartyRewards"));
}
});
buttons.add(new BInventoryButton(new ItemBuilder("GRASS_BLOCK").setName("&cEdit BungeeSettings.yml")) {
@Override
@@ -51,7 +51,11 @@ public class VoteShop extends GUIHandler {
return;
}
if (this.user == null) {
user = plugin.getVotingPluginUserManager().getVotingPluginUser(player);
}
BInventory inv = new BInventory(plugin.getGui().getChestVoteShopName());
inv.addPlaceholder("points", "" + user.getPoints());
inv.dontClose();
for (final String identifier : plugin.getGui().getChestShopIdentifiers()) {
@@ -68,7 +72,6 @@ public class VoteShop extends GUIHandler {
boolean limitPass = true;
if (limit > 0) {
VotingPluginUser user = UserManager.getInstance().getVotingPluginUser(player);
if (user.getVoteShopIdentifierLimit(identifier) >= limit) {
limitPass = false;
}
@@ -93,7 +93,7 @@ public class VoteShopConfirm extends GUIHandler {
if (plugin.getGui().getChestVoteShopCloseGUI(identifier)) {
event.getButton().getInv().closeInv(player, null);
} else {
new VoteShop(plugin, event.getPlayer(), user);
new VoteShop(plugin, event.getPlayer(), user).open();;
}
}
});
@@ -104,8 +104,8 @@ public class VoteTopVoter extends GUIHandler {
@Override
public void onClick(ClickEvent clickEvent) {
if (plugin.getGui().getChestVoteTopOpenMainGUIOnClick()) {
VotingPluginUser user = (VotingPluginUser) getData("User");
new VoteGUI(plugin, player, user)
TopVoterPlayer user = (TopVoterPlayer) getData("User");
new VoteGUI(plugin, player, user.getUser())
.open(GUIMethod.valueOf(plugin.getGui().getGuiMethodGUI().toUpperCase()));
} else {
getInv().forceClose(clickEvent.getPlayer());
@@ -74,8 +74,8 @@ public class VoteTopVoterLastMonth extends GUIHandler {
@Override
public void onClick(ClickEvent clickEvent) {
VotingPluginUser user = (VotingPluginUser) getData("User");
new VoteGUI(plugin, player, user)
TopVoterPlayer user = (TopVoterPlayer) getData("User");
new VoteGUI(plugin, player, user.getUser())
.open(GUIMethod.valueOf(plugin.getGui().getGuiMethodGUI().toUpperCase()));
}
}.addData("player", entry.getKey().getPlayerName()).addData("User", entry.getKey()));
@@ -117,6 +117,10 @@ public class Config extends YMLFile {
@Getter
private boolean extraAllSitesCheck = false;
@ConfigDataBoolean(path = "CloseInventoryOnVote")
@Getter
private boolean closeInventoryOnVote = true;
@ConfigDataBoolean(path = "ExtraBackgroundUpdate")
@Getter
private boolean extraBackgroundUpdate = false;
@@ -103,22 +103,22 @@ public class PlayerVoteListener implements Listener {
user = UserManager.getInstance().getVotingPluginUser(playerName);
}
// reupdate cache
user.clearCache();
user.updateName(true);
if (voteSite.isWaitUntilVoteDelay() && !user.canVoteSite(voteSite)) {
plugin.getLogger().info(user.getPlayerName() + " must wait until votedelay is over, ignoring vote");
return;
}
synchronized (object) {
// reupdate cache
user.clearCache();
user.cache();
user.updateName(true);
// vote party
plugin.getVoteParty().vote(user, event.isRealVote(), event.isForceBungee());
if (event.isBroadcast() && !plugin.getBungeeSettings().isDisableBroadcast() ) {
if (event.isBroadcast() && !plugin.getBungeeSettings().isDisableBroadcast()) {
// broadcast vote if enabled in config
if (plugin.getConfigFile().isBroadcastVotesEnabled()
&& (plugin.getBungeeSettings().isBungeeBroadcast() || !event.isBungee())) {
@@ -169,7 +169,9 @@ public class PlayerVoteListener implements Listener {
}
user.playerVote(voteSite, online, false, event.isForceBungee());
user.sendVoteEffects(online);
user.closeInv();
if (plugin.getConfigFile().isCloseInventoryOnVote()) {
user.closeInv();
}
} else {
user.addOfflineVote(voteSite.getKey());
plugin.debug(
@@ -187,6 +187,8 @@ public class SpecialRewards {
plugin.debug(user.getPlayerName() + " got milestone " + votesRequired);
}
} else {
plugin.debug("Milestone " + votesRequired + " not enabled or has no rewards");
}
}
} else {
@@ -306,12 +306,14 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
ArrayList<Integer> days = new ArrayList<Integer>();
for (VoteSite voteSite : plugin.getVoteSites()) {
long time = user.getTime(voteSite);
if (time != 0) {
months.add(MiscUtils.getInstance().getMonthFromMili(time));
days.add(MiscUtils.getInstance().getDayFromMili(time));
} else {
return false;
if (voteSite.isEnabled() && !voteSite.isHidden()) {
long time = user.getTime(voteSite);
if (time != 0) {
months.add(MiscUtils.getInstance().getMonthFromMili(time));
days.add(MiscUtils.getInstance().getDayFromMili(time));
} else {
return false;
}
}
}
@@ -570,27 +572,6 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
.setOnline(isOnline()).send(this);
}
/*
* public Integer hasLastCumulative(int votesRequired) { HashMap<Integer,
* Integer> lastCumative = getLastCumulatives(); if
* (lastCumative.containsKey(votesRequired)) { return
* lastCumative.get(votesRequired); } return 0; } public HashMap<Integer,
* Integer> getLastCumulatives() { HashMap<Integer, Integer> lastCumulative =
* new HashMap<Integer, Integer>(); ArrayList<String> milestoneList =
* getUserData().getStringList("LastCumulative"); for (String str :
* milestoneList) { String[] data = str.split("//"); if (data.length > 1) { try
* { lastCumulative.put(Integer.parseInt(data[0]), Integer.parseInt(data[1])); }
* catch (Exception e) { e.printStackTrace(); } } } return lastCumulative; }
* public void setLastCumulatives(HashMap<Integer, Integer> lastCumulative) {
* ArrayList<String> data = new ArrayList<String>(); for (Entry<Integer,
* Integer> entry : lastCumulative.entrySet()) { String str = entry.getKey() +
* "//" + entry.getValue(); data.add(str); }
* getUserData().setStringList("LastCumulative", data); } public void
* setLastCumulative(int votesRequired, int value) { HashMap<Integer, Integer>
* lastCumulative = getLastCumulatives(); lastCumulative.put(votesRequired,
* value); setLastCumulatives(lastCumulative); }
*/
public void giveMonthlyTopVoterAward(int place, String path) {
new RewardBuilder(plugin.getSpecialRewardsConfig().getData(),
plugin.getSpecialRewardsConfig().getMonthlyAwardRewardsPath(path)).withPlaceHolder("place", "" + place)