Compare commits

..
25 Commits
Author SHA1 Message Date
BenCodez b4d57c7eae Update version number to 6.18.3 2025-02-24 14:58:52 -06:00
Ben 2ac6609d8e Update README.md 2025-02-24 14:51:22 -06:00
Ben 9eec6525c0 Merge pull request #1421 from BenCodez/dependabot/maven/VotingPlugin/org.junit.jupiter-junit-jupiter-engine-5.12.0
Bump org.junit.jupiter:junit-jupiter-engine from 5.11.4 to 5.12.0 in /VotingPlugin
2025-02-24 08:17:06 -06:00
dependabot[bot] 858b8b7b3c Bump org.junit.jupiter:junit-jupiter-engine in /VotingPlugin
Bumps [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit5) from 5.11.4 to 5.12.0.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/compare/r5.11.4...r5.12.0)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter-engine
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 07:04:40 +00:00
BenCodez 0aaef50a82 Add extra checks for velocity 2025-02-22 07:58:36 -06:00
BenCodez 365f06d2ed Add extra checks for velocity 2025-02-22 07:58:36 -06:00
BenCodez a1b7370da0 Adjust login check to be a little more efficient 2025-02-18 21:23:38 -06:00
Ben 2f52576bc4 Merge pull request #1420 from BenCodez/dependabot/maven/VotingPlugin/org.junit.jupiter-junit-jupiter-engine-5.11.4
Bump org.junit.jupiter:junit-jupiter-engine from 5.8.1 to 5.11.4 in /VotingPlugin
2025-02-17 08:26:44 -06:00
dependabot[bot] bac19aecb9 Bump org.junit.jupiter:junit-jupiter-engine in /VotingPlugin
Bumps [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit5) from 5.8.1 to 5.11.4.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/compare/r5.8.1...r5.11.4)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter-engine
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-17 06:35:47 +00:00
BenCodez 3ad6ce247d Undo test change 2025-02-13 16:24:51 -06:00
BenCodez bb78792e27 Test change in pom.xml 2025-02-13 16:02:24 -06:00
BenCodez 726b116c20 Add voteparty test 2025-02-12 17:48:42 -06:00
BenCodez f731f82b01 Modify test package location 2025-02-12 08:36:08 -06:00
BenCodez 939c431bcf Fix lombok 2025-02-11 11:40:09 -06:00
BenCodez 87ed9dfe39 Change default source and resource folder, add first unit test 2025-02-11 11:35:59 -06:00
BenCodez eceacf607f Change handling of json files on bungee 2025-02-09 13:52:38 -06:00
BenCodez 8d6db5b94f Add extra null check on nonvotedplayerscache.json 2025-02-09 09:51:24 -06:00
BenCodez 700300a293 Adjust handling of non voted player cache on bungee 2025-02-08 08:32:28 -06:00
BenCodez 5e5e208de0 Adjust plugin messaging handling slightly 2025-02-05 10:37:48 -06:00
BenCodez b48662acfe Add AdminVoteTopPoints command and GUI for viewing top points 2025-02-05 08:45:05 -06:00
BenCodez 0aed3068db Adjust multi-proxy loading 2025-02-04 17:25:24 -06:00
BenCodez 25a3ff904d Add more debug to vote party check 2025-02-04 10:54:04 -06:00
BenCodez bb7adc409a Small change for bungee 2025-01-31 12:34:57 -06:00
BenCodez 1b28966798 Fixed an error that can happen on bungee 2025-01-26 18:42:36 -06:00
BenCodez f5d34ad84a Update version number to 6.18.3-SNAPSHOT 2025-01-26 13:35:26 -06:00
131 changed files with 854 additions and 416 deletions

No files matched your search

-4
View File
@@ -2,10 +2,6 @@
Plugin on SpigotMC
https://www.spigotmc.org/resources/votingplugin.15358/
## License
### Creative Commons Arttribution 3.0 Unported
https://github.com/BenCodez/VotingPlugin/blob/master/VotingPlugin/Resources/LICENSE.txt
### Maven:
<repository>
+1
View File
@@ -6,3 +6,4 @@
/.settings/
/.classpath
/.factorypath
/.apt_generated_tests/
+22 -8
View File
@@ -4,20 +4,21 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.bencodez</groupId>
<artifactId>votingplugin</artifactId>
<version>6.18.2</version>
<version>6.18.3</version>
<packaging>jar</packaging>
<name>VotingPlugin</name>
<properties>
<github.global.server>github</github.global.server>
<project.build.sourceEncoding>Cp1252</project.build.sourceEncoding>
<build.number>NOTSET</build.number>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<maven.compiler.release>8</maven.compiler.release>
</properties>
<build>
<resources>
<resource>
<directory>Resources</directory>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>plugin.yml</include>
@@ -26,11 +27,12 @@
</includes>
</resource>
<resource>
<directory>Resources</directory>
<directory>src/main/resources</directory>
<filtering>false</filtering>
</resource>
</resources>
<sourceDirectory>src</sourceDirectory>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<pluginManagement>
<plugins>
<plugin>
@@ -74,7 +76,7 @@
<configuration>
<addOutputDirectory>false</addOutputDirectory>
<outputDirectory>${project.basedir}/target/delombok</outputDirectory>
<sourceDirectory>${project.basedir}/src</sourceDirectory>
<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
</configuration>
</execution>
</executions>
@@ -257,9 +259,21 @@
<dependency>
<groupId>com.bencodez</groupId>
<artifactId>advancedcore</artifactId>
<version>3.7.14-SNAPSHOT</version>
<version>3.7.14</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.12.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>5.15.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
@@ -1,118 +0,0 @@
package com.bencodez.votingplugin.bungee;
import java.io.File;
import java.io.IOException;
import lombok.Getter;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.config.Configuration;
import net.md_5.bungee.config.ConfigurationProvider;
import net.md_5.bungee.config.JsonConfiguration;
import net.md_5.bungee.config.YamlConfiguration;
public class NonVotedPlayersCache {
private VotingPluginBungee bungee;
@Getter
private Configuration data;
public NonVotedPlayersCache(VotingPluginBungee bungee) {
this.bungee = bungee;
}
public void addPlayer(ProxiedPlayer proxiedPlayer) {
if (!bungee.getVotingPluginProxy().getProxyMySQL().containsKeyQuery(proxiedPlayer.getUniqueId().toString())) {
addPlayer(proxiedPlayer.getUniqueId().toString(), proxiedPlayer.getName());
}
}
public void addPlayer(String uuid, String playerName) {
getData().set("NonVotedPlayers." + playerName + ".UUID", uuid);
getData().set("NonVotedPlayers." + playerName + ".LastTime", System.currentTimeMillis());
save();
}
public void addPlayerCheck(String uuid, String playerName) {
if (!bungee.getVotingPluginProxy().getProxyMySQL().containsKeyQuery(uuid)) {
addPlayer(uuid, playerName);
}
}
public void check() {
for (String player : getData().getSection("NonVotedPlayers").getKeys()) {
long time = getData().getLong("NonVotedPlayers." + player + ".LastTime", 0);
if ((System.currentTimeMillis() - time) > 1000 * 60 * 60 * 24 * 5) {
remove(player);
} else {
String uuid = getData().getString("NonVotedPlayers." + player + ".UUID", "");
if (!uuid.isEmpty()) {
if (bungee.getVotingPluginProxy().getProxyMySQL().containsKeyQuery(uuid)) {
remove(player);
}
} else {
remove(player);
}
}
}
save();
}
public void load() {
if (!bungee.getDataFolder().exists()) {
bungee.getDataFolder().mkdir();
}
File yamlFile = new File(bungee.getDataFolder(), "nonvotedplayerscache.yml");
File file = new File(bungee.getDataFolder(), "nonvotedplayerscache.json");
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
if (yamlFile.exists()) {
try {
data = ConfigurationProvider.getProvider(YamlConfiguration.class)
.load(new File(bungee.getDataFolder(), "nonvotedplayerscache.yml"));
yamlFile.renameTo(new File(bungee.getDataFolder(), "oldnonvotedplayerscache.yml"));
ConfigurationProvider.getProvider(YamlConfiguration.class).save(data,
new File(bungee.getDataFolder(), "oldnonvotedplayerscache.yml"));
} catch (IOException e) {
e.printStackTrace();
}
save();
}
try {
data = ConfigurationProvider.getProvider(JsonConfiguration.class)
.load(new File(bungee.getDataFolder(), "nonvotedplayerscache.json"));
} catch (IOException e) {
e.printStackTrace();
}
}
public String playerExists(String playerName) {
if (getData().getSection("NonVotedPlayers").getKeys().contains(playerName)) {
return getData().getString("NonVotedPlayers." + playerName + ".UUID", "");
}
return "";
}
private void remove(String player) {
bungee.debug("Removing nonvotedplayer: " + player);
getData().set("NonVotedPlayers." + player, null);
}
public void save() {
try {
ConfigurationProvider.getProvider(JsonConfiguration.class).save(data,
new File(bungee.getDataFolder(), "nonvotedplayerscache.json"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
@@ -1,161 +0,0 @@
package com.bencodez.votingplugin.bungee;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import com.bencodez.votingplugin.timequeue.VoteTimeQueue;
import lombok.Getter;
import net.md_5.bungee.config.Configuration;
import net.md_5.bungee.config.ConfigurationProvider;
import net.md_5.bungee.config.JsonConfiguration;
import net.md_5.bungee.config.YamlConfiguration;
public class VoteCache {
private VotingPluginBungee bungee;
@Getter
private Configuration data;
public VoteCache(VotingPluginBungee bungee) {
this.bungee = bungee;
}
public void addTimedVote(int num, VoteTimeQueue voteTimedQueue) {
Configuration section = getData().getSection("TimedVoteCache." + num);
section.set("Name", voteTimedQueue.getName());
section.set("Service", voteTimedQueue.getService());
section.set("Time", voteTimedQueue.getTime());
}
public void addVote(String server, int num, OfflineBungeeVote voteData) {
Configuration section = getData().getSection("VoteCache." + server + "." + num);
section.set("Name", voteData.getPlayerName());
section.set("Service", voteData.getService());
section.set("UUID", voteData.getUuid());
section.set("Time", voteData.getTime());
section.set("Real", voteData.isRealVote());
section.set("Text", voteData.getText());
}
public void addVoteOnline(String player, int num, OfflineBungeeVote voteData) {
Configuration section = getData().getSection("OnlineCache." + player + "." + num);
section.set("Name", voteData.getPlayerName());
section.set("Service", voteData.getService());
section.set("UUID", voteData.getUuid());
section.set("Time", voteData.getTime());
section.set("Real", voteData.isRealVote());
section.set("Text", voteData.getText());
}
public void clearData() {
getData().set("VoteCache", null);
getData().set("OnlineCache", null);
getData().set("TimedVoteCache", null);
save();
}
public Collection<String> getOnlineVotes(String name) {
return getData().getSection("OnlineCache." + name).getKeys();
}
public Configuration getOnlineVotes(String name, String num) {
return getData().getSection("OnlineCache." + name + "." + num);
}
public Collection<String> getPlayers() {
return getData().getSection("OnlineCache").getKeys();
}
public Collection<String> getServers() {
return getData().getSection("VoteCache").getKeys();
}
public Collection<String> getServerVotes(String server) {
return getData().getSection("VoteCache." + server).getKeys();
}
public Configuration getServerVotes(String server, String num) {
return getData().getSection("VoteCache." + server + "." + num);
}
public Collection<String> getTimedVoteCache() {
return getData().getSection("TimedVoteCache").getKeys();
}
public Configuration getTimedVoteCache(String key) {
return getData().getSection("TimedVoteCache." + key);
}
public int getVotePartyCache(String server) {
return getData().getInt("VoteParty.Cache." + server, 0);
}
public int getVotePartyCurrentVotes() {
return getData().getInt("VoteParty.CurrentVotes", 0);
}
public int getVotePartyInreaseVotesRequired() {
return getData().getInt("VoteParty.IncreaseVotes", 0);
}
public void load() {
if (!bungee.getDataFolder().exists()) {
bungee.getDataFolder().mkdir();
}
File yamlFile = new File(bungee.getDataFolder(), "votecache.yml");
File file = new File(bungee.getDataFolder(), "votecache.json");
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
if (yamlFile.exists()) {
try {
data = ConfigurationProvider.getProvider(YamlConfiguration.class)
.load(new File(bungee.getDataFolder(), "votecache.yml"));
yamlFile.renameTo(new File(bungee.getDataFolder(), "oldvotecache.yml"));
ConfigurationProvider.getProvider(YamlConfiguration.class).save(data,
new File(bungee.getDataFolder(), "oldvotecache.yml"));
} catch (IOException e) {
e.printStackTrace();
}
save();
}
try {
data = ConfigurationProvider.getProvider(JsonConfiguration.class)
.load(new File(bungee.getDataFolder(), "votecache.json"));
} catch (IOException e) {
e.printStackTrace();
}
}
public void save() {
try {
ConfigurationProvider.getProvider(JsonConfiguration.class).save(data,
new File(bungee.getDataFolder(), "votecache.json"));
} catch (IOException e) {
e.printStackTrace();
}
}
public void setVotePartyCache(String server, int amount) {
getData().set("VoteParty.Cache." + server, amount);
}
public void setVotePartyCurrentVotes(int amount) {
getData().set("VoteParty.CurrentVotes", amount);
}
public void setVotePartyInreaseVotesRequired(int amount) {
getData().set("VoteParty.IncreaseVotes", amount);
}
}
@@ -0,0 +1,73 @@
package com.bencodez.votingplugin.bungee;
import java.io.File;
import com.bencodez.simpleapi.file.BungeeJsonFile;
import com.velocitypowered.api.proxy.Player;
import lombok.Getter;
import net.md_5.bungee.config.Configuration;
public class NonVotedPlayersCache extends BungeeJsonFile {
private VotingPluginBungee plugin;
@Getter
private Configuration data;
public NonVotedPlayersCache(VotingPluginBungee plugin) {
super(new File(plugin.getDataFolder(), "nonvotedplayerscache.json"));
this.plugin = plugin;
}
public void addPlayer(Player player) {
if (!plugin.getVotingPluginProxy().getProxyMySQL().containsKeyQuery(player.getUniqueId().toString())) {
addPlayer(player.getUniqueId().toString(), player.getUsername());
}
}
public void addPlayer(String uuid, String playerName) {
setString("NonVotedPlayers." + playerName + ".UUID", uuid);
setLong("NonVotedPlayers." + playerName + ".LastTime", System.currentTimeMillis());
save();
}
public void addPlayerCheck(String uuid, String playerName) {
if (!plugin.getVotingPluginProxy().getProxyMySQL().containsKeyQuery(uuid)) {
addPlayer(uuid, playerName);
}
}
public void check() {
for (String player : getKeys("NonVotedPlayers")) {
long time = getLong("NonVotedPlayers." + player + ".LastTime", 0);
if ((System.currentTimeMillis() - time) > 1000 * 60 * 60 * 24 * 5) {
removePlayer(player);
} else {
String uuid = getString("NonVotedPlayers." + player + ".UUID", "");
if (!uuid.isEmpty()) {
if (plugin.getVotingPluginProxy().getProxyMySQL().containsKeyQuery(uuid)) {
removePlayer(player);
}
} else {
removePlayer(player);
}
}
}
save();
}
public String playerExists(String playerName) {
String uuid = getString("NonVotedPlayers." + playerName + ".UUID", "");
if (!uuid.isEmpty()) {
return uuid;
}
return "";
}
private void removePlayer(String player) {
plugin.debug("Removing nonvotedplayer: " + player);
remove("NonVotedPlayers." + player);
save();
}
}
@@ -0,0 +1,126 @@
package com.bencodez.votingplugin.bungee;
import java.io.File;
import java.util.Collection;
import com.bencodez.simpleapi.file.BungeeJsonFile;
import com.bencodez.votingplugin.timequeue.VoteTimeQueue;
import com.google.gson.JsonElement;
public class VoteCache extends BungeeJsonFile {
private VotingPluginBungee bungee;
public VoteCache(VotingPluginBungee bungee) {
super(new File(bungee.getDataFolder(), "votecache.json"));
this.bungee = bungee;
initialize();
}
private void initialize() {
if (!bungee.getDataFolder().exists()) {
bungee.getDataFolder().mkdir();
}
// Reload the JSON file to ensure latest data
reload();
}
public void addTimedVote(int num, VoteTimeQueue voteTimedQueue) {
String path = "TimedVoteCache." + num;
setString(path + ".Name", voteTimedQueue.getName());
setString(path + ".Service", voteTimedQueue.getService());
setLong(path + ".Time", voteTimedQueue.getTime());
}
public void addVote(String server, int num, OfflineBungeeVote voteData) {
String path = "VoteCache." + server + "." + num;
setString(path + ".Name", voteData.getPlayerName());
setString(path + ".Service", voteData.getService());
setString(path + ".UUID", voteData.getUuid());
setLong(path + ".Time", voteData.getTime());
setBoolean(path + ".Real", voteData.isRealVote());
setString(path + ".Text", voteData.getText());
}
public void addVoteOnline(String player, int num, OfflineBungeeVote voteData) {
String path = "OnlineCache." + player + "." + num;
setString(path + ".Name", voteData.getPlayerName());
setString(path + ".Service", voteData.getService());
setString(path + ".UUID", voteData.getUuid());
setLong(path + ".Time", voteData.getTime());
setBoolean(path + ".Real", voteData.isRealVote());
setString(path + ".Text", voteData.getText());
}
public void clearData() {
setString("VoteCache", null);
setString("OnlineCache", null);
setString("TimedVoteCache", null);
save();
}
public Collection<String> getOnlineVotes(String name) {
return getKeys("OnlineCache." + name);
}
public JsonElement getOnlineVotes(String name, String num) {
return getNode("OnlineCache." + name + "." + num);
}
public Collection<String> getPlayers() {
return getKeys("OnlineCache");
}
public Collection<String> getServers() {
return getKeys("VoteCache");
}
public Collection<String> getServerVotes(String server) {
return getKeys("VoteCache." + server);
}
public JsonElement getServerVotes(String server, String num) {
return getNode("VoteCache." + server + "." + num);
}
public Collection<String> getTimedVoteCache() {
return getKeys("TimedVoteCache");
}
public JsonElement getTimedVoteCache(String key) {
return getNode("TimedVoteCache." + key);
}
public int getVotePartyCache(String server) {
return getInt("VoteParty.Cache." + server, 0);
}
public int getVotePartyCurrentVotes() {
return getInt("VoteParty.CurrentVotes", 0);
}
public int getVotePartyInreaseVotesRequired() {
return getInt("VoteParty.IncreaseVotes", 0);
}
public void setVotePartyCache(String server, int amount) {
setInt("VoteParty.Cache." + server, amount);
}
public void setVotePartyCurrentVotes(int amount) {
setInt("VoteParty.CurrentVotes", amount);
}
public void setVotePartyInreaseVotesRequired(int amount) {
setInt("VoteParty.IncreaseVotes", amount);
}
@Override
public void save() {
super.save();
}
@Override
public void reload() {
super.reload();
}
}
@@ -29,6 +29,8 @@ import com.bencodez.votingplugin.bungee.proxy.VotingPluginProxy;
import com.bencodez.votingplugin.bungee.proxy.VotingPluginProxyConfig;
import com.bencodez.votingplugin.timequeue.VoteTimeQueue;
import com.bencodez.votingplugin.topvoter.TopVoter;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import lombok.Getter;
import net.md_5.bungee.api.ChatColor;
@@ -490,22 +492,22 @@ public class VotingPluginBungee extends Plugin implements Listener {
@Override
public long getVoteCacheLastUpdated() {
return voteCacheFile.getData().getLong("Time.LastUpdated");
return voteCacheFile.getLong("Time.LastUpdated", 0L);
}
@Override
public int getVoteCachePrevDay() {
return voteCacheFile.getData().getInt("Time.Day");
return voteCacheFile.getInt("Time.Day", 0);
}
@Override
public String getVoteCachePrevMonth() {
return voteCacheFile.getData().getString("Time.Month");
return voteCacheFile.getString("Time.Month", "");
}
@Override
public int getVoteCachePrevWeek() {
return voteCacheFile.getData().getInt("Time.Week");
return voteCacheFile.getInt("Time.Week", 0);
}
@Override
@@ -531,7 +533,7 @@ public class VotingPluginBungee extends Plugin implements Listener {
@Override
public boolean isVoteCacheIgnoreTime() {
return voteCacheFile.getData().getBoolean("Time.IgnoreTime");
return voteCacheFile.getBoolean("Time.IgnoreTime", false);
}
@Override
@@ -561,36 +563,36 @@ public class VotingPluginBungee extends Plugin implements Listener {
@Override
public void sendPluginMessageData(String server, String channel, byte[] data, boolean queue) {
getProxy().getServers().get(server).sendData(channel, data, queue);
getProxy().getServerInfo(server).sendData(channel, data, queue);
}
@Override
public void setVoteCacheLastUpdated() {
voteCacheFile.getData().set("Time.LastUpdated", System.currentTimeMillis());
voteCacheFile.setLong("Time.LastUpdated", System.currentTimeMillis());
voteCacheFile.save();
}
@Override
public void setVoteCachePrevDay(int day) {
voteCacheFile.getData().set("Time.Day", day);
voteCacheFile.setInt("Time.Day", day);
voteCacheFile.save();
}
@Override
public void setVoteCachePrevMonth(String text) {
voteCacheFile.getData().set("Time.Month", text);
voteCacheFile.setString("Time.Month", text);
voteCacheFile.save();
}
@Override
public void setVoteCachePrevWeek(int week) {
voteCacheFile.getData().set("Time.Week", week);
voteCacheFile.setInt("Time.Week", week);
voteCacheFile.save();
}
@Override
public void setVoteCacheVoteCacheIgnoreTime(boolean ignore) {
voteCacheFile.getData().set("Time.IgnoreTime", ignore);
voteCacheFile.setBoolean("Time.IgnoreTime", ignore);
voteCacheFile.save();
}
@@ -609,7 +611,7 @@ public class VotingPluginBungee extends Plugin implements Listener {
public void warn(String message) {
getLogger().warning(message);
}
@Override
public void reloadCore(boolean mysql) {
reloadPlugin(mysql);
@@ -648,18 +650,25 @@ public class VotingPluginBungee extends Plugin implements Listener {
if (mysqlLoaded) {
voteCacheFile = new VoteCache(this);
voteCacheFile.load();
// voteCacheFile.load();
nonVotedPlayersCache = new NonVotedPlayersCache(this);
nonVotedPlayersCache.load();
// nonVotedPlayersCache.load();
getVotingPluginProxy().load();
try {
for (String key : voteCacheFile.getTimedVoteCache()) {
Configuration data = voteCacheFile.getTimedVoteCache(key);
getVotingPluginProxy().getTimeChangeQueue().add(
new VoteTimeQueue(data.getString("Name"), data.getString("Service"), data.getLong("Time")));
JsonElement dataElement = voteCacheFile.getTimedVoteCache(key);
if (dataElement != null && dataElement.isJsonObject()) {
JsonObject data = dataElement.getAsJsonObject();
String name = data.has("Name") ? data.get("Name").getAsString() : "";
String service = data.has("Service") ? data.get("Service").getAsString() : "";
long time = data.has("Time") ? data.get("Time").getAsLong() : 0L;
getVotingPluginProxy().getTimeChangeQueue().add(new VoteTimeQueue(name, service, time));
}
}
getVotingPluginProxy().processQueue();
@@ -669,14 +678,24 @@ public class VotingPluginBungee extends Plugin implements Listener {
try {
for (String server : voteCacheFile.getServers()) {
ArrayList<OfflineBungeeVote> vote = new ArrayList<>();
ArrayList<OfflineBungeeVote> votes = new ArrayList<>();
for (String num : voteCacheFile.getServerVotes(server)) {
Configuration data = voteCacheFile.getServerVotes(server, num);
vote.add(new OfflineBungeeVote(data.getString("Name"), data.getString("UUID"),
data.getString("Service"), data.getLong("Time"), data.getBoolean("Real"),
data.getString("Text")));
JsonElement dataElement = voteCacheFile.getServerVotes(server, num);
if (dataElement != null && dataElement.isJsonObject()) {
JsonObject data = dataElement.getAsJsonObject();
String name = data.has("Name") ? data.get("Name").getAsString() : "";
String uuid = data.has("UUID") ? data.get("UUID").getAsString() : "";
String service = data.has("Service") ? data.get("Service").getAsString() : "";
long time = data.has("Time") ? data.get("Time").getAsLong() : 0L;
boolean real = data.has("Real") && data.get("Real").getAsBoolean();
String text = data.has("Text") ? data.get("Text").getAsString() : "";
votes.add(new OfflineBungeeVote(name, uuid, service, time, real, text));
}
}
getVotingPluginProxy().getCachedVotes().put(server, vote);
getVotingPluginProxy().getCachedVotes().put(server, votes);
}
} catch (Exception e) {
e.printStackTrace();
@@ -684,14 +703,25 @@ public class VotingPluginBungee extends Plugin implements Listener {
try {
for (String player : voteCacheFile.getPlayers()) {
ArrayList<OfflineBungeeVote> vote = new ArrayList<>();
ArrayList<OfflineBungeeVote> votes = new ArrayList<>();
for (String num : voteCacheFile.getOnlineVotes(player)) {
Configuration data = voteCacheFile.getOnlineVotes(player, num);
vote.add(new OfflineBungeeVote(data.getString("Name"), data.getString("UUID"),
data.getString("Service"), data.getLong("Time"), data.getBoolean("Real"),
data.getString("Text")));
JsonElement dataElement = voteCacheFile.getOnlineVotes(player, num);
if (dataElement != null && dataElement.isJsonObject()) {
JsonObject data = dataElement.getAsJsonObject();
String name = data.has("Name") ? data.get("Name").getAsString() : "";
String uuid = data.has("UUID") ? data.get("UUID").getAsString() : "";
String service = data.has("Service") ? data.get("Service").getAsString() : "";
long time = data.has("Time") ? data.get("Time").getAsLong() : 0L;
boolean real = data.has("Real") && data.get("Real").getAsBoolean();
String text = data.has("Text") ? data.get("Text").getAsString() : "";
votes.add(new OfflineBungeeVote(name, uuid, service, time, real, text));
}
}
getVotingPluginProxy().getCachedOnlineVotes().put(player, vote);
getLogger().info("VoteCache: " + player);
getVotingPluginProxy().getCachedOnlineVotes().put(player, votes);
}
} catch (Exception e) {
e.printStackTrace();
@@ -709,8 +739,10 @@ public class VotingPluginBungee extends Plugin implements Listener {
}
for (String player : getVotingPluginProxy().getCachedOnlineVotes().keySet()) {
getVotingPluginProxy().checkOnlineVotes(getProxy().getPlayer(UUID.fromString(player)).getName(),
player, null);
ProxiedPlayer p = getProxy().getPlayer(UUID.fromString(player));
if (p != null) {
getVotingPluginProxy().checkOnlineVotes(p.getName(), player, null);
}
}
}
}, 120l, 60l, TimeUnit.SECONDS);
@@ -5,7 +5,6 @@ import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
@@ -230,8 +229,6 @@ public abstract class VotingPluginProxy {
}
};
loadMultiProxySupport();
}
public void addCurrentVotePartyVotes(int amount) {
@@ -483,7 +480,7 @@ public abstract class VotingPluginProxy {
if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
if (getConfig().getPluginMessageEncryption()) {
encryptionHandler = new EncryptionHandler(new File(getDataFolderPlugin(), "secretkey.key"));
}
}
} else if (method.equals(BungeeMethod.SOCKETS)) {
encryptionHandler = new EncryptionHandler(new File(getDataFolderPlugin(), "secretkey.key"));
@@ -761,66 +758,73 @@ public abstract class VotingPluginProxy {
enabled = false;
}
public void onPluginMessageReceived(DataInputStream in) throws IOException {
ByteArrayOutputStream outstream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(outstream);
String subchannel = "";
if (getConfig().getPluginMessageEncryption() && encryptionHandler != null) {
subchannel = encryptionHandler.decrypt(in.readUTF());
} else {
subchannel = in.readUTF();
}
int size = in.readInt();
public void onPluginMessageReceived(DataInputStream in) {
runAsync(new Runnable() {
debug("Received plugin message, processing...");
try {
String data = "";
if (size > 0) {
if (getConfig().getPluginMessageEncryption() && encryptionHandler != null) {
data = encryptionHandler.decrypt(in.readUTF());
} else {
data = in.readUTF();
}
}
String[] list = data.split("/a/");
// check for status message returns
if (subchannel.equalsIgnoreCase("statusokay")) {
String server = list[0];
log("Status okay for " + server);
return;
} else if (subchannel.equalsIgnoreCase("TimeChangeFinished")) {
// not used currently
} else if (subchannel.equalsIgnoreCase("login")) {
String player = list[0];
String uuid = list[1];
String server = list[2];
debug("Login: " + player + "/" + uuid + " " + server);
login(player, uuid, server);
return;
} else if (subchannel.equalsIgnoreCase("VoteUpdate")) {
out.writeUTF(subchannel);
out.writeInt(size);
if (getConfig().getPluginMessageEncryption() && encryptionHandler != null) {
out.writeUTF(encryptionHandler.encrypt(data));
} else {
out.writeUTF(data);
}
for (String send : getAllAvailableServers()) {
if (isSomeoneOnlineServer(send)) {
sendPluginMessageData(send, getConfig().getPluginMessageChannel().toLowerCase(),
outstream.toByteArray(), false);
@Override
public void run() {
try {
ByteArrayOutputStream outstream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(outstream);
String subchannel = "";
if (getConfig().getPluginMessageEncryption() && encryptionHandler != null) {
subchannel = encryptionHandler.decrypt(in.readUTF());
} else {
subchannel = in.readUTF();
}
int size = in.readInt();
debug("Received plugin message, processing...");
String data = "";
if (size > 0) {
if (getConfig().getPluginMessageEncryption() && encryptionHandler != null) {
data = encryptionHandler.decrypt(in.readUTF());
} else {
data = in.readUTF();
}
}
String[] list = data.split("/a/");
// check for status message returns
if (subchannel.equalsIgnoreCase("statusokay")) {
String server = list[0];
log("Status okay for " + server);
return;
} else if (subchannel.equalsIgnoreCase("TimeChangeFinished")) {
// not used currently
} else if (subchannel.equalsIgnoreCase("login")) {
String player = list[0];
String uuid = list[1];
String server = list[2];
debug("Login: " + player + "/" + uuid + " " + server);
login(player, uuid, server);
return;
} else if (subchannel.equalsIgnoreCase("VoteUpdate")) {
out.writeUTF(subchannel);
out.writeInt(size);
if (getConfig().getPluginMessageEncryption() && encryptionHandler != null) {
out.writeUTF(encryptionHandler.encrypt(data));
} else {
out.writeUTF(data);
}
for (String send : getAllAvailableServers()) {
if (isSomeoneOnlineServer(send)) {
sendPluginMessageData(send, getConfig().getPluginMessageChannel().toLowerCase(),
outstream.toByteArray(), false);
}
}
} else {
debug("Ignoring plugin message: " + subchannel);
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
debug("Ignoring plugin message: " + subchannel);
}
} catch (Exception e) {
e.printStackTrace();
}
});
}
private UUID parseUUIDFromString(String uuidAsString) {
@@ -516,7 +516,11 @@ public class VotingPluginVelocity {
@Override
public String getCurrentPlayerServer(String player) {
return server.getPlayer(player).get().getCurrentServer().get().getServer().getServerInfo().getName();
if (server.getPlayer(player).isPresent()) {
return server.getPlayer(player).get().getCurrentServer().get().getServer().getServerInfo()
.getName();
}
return "";
}
@Override
@@ -51,6 +51,7 @@ import com.bencodez.votingplugin.commands.gui.admin.AdminVoteHelp;
import com.bencodez.votingplugin.commands.gui.admin.AdminVotePerms;
import com.bencodez.votingplugin.commands.gui.admin.AdminVotePlaceholders;
import com.bencodez.votingplugin.commands.gui.admin.AdminVotePlaceholdersPlayer;
import com.bencodez.votingplugin.commands.gui.admin.AdminVoteTopPoints;
import com.bencodez.votingplugin.commands.gui.admin.AdminVoteVoteParty;
import com.bencodez.votingplugin.commands.gui.admin.AdminVoteVotePlayer;
import com.bencodez.votingplugin.commands.gui.admin.cumulative.AdminVoteCumulative;
@@ -295,6 +296,18 @@ public class CommandLoader {
}
});
plugin.getAdminVoteCommand().add(new CommandHandler(plugin, new String[] { "TopPoints" },
"VotingPlugin.Commands.AdminVote.TopPoints|" + adminPerm, "Open the top points GUI", false) {
@Override
public void execute(CommandSender sender, String[] args) {
sendMessage(sender, "&cLoading top points, please wait...");
new AdminVoteTopPoints(plugin, sender,
plugin.getVotingPluginUserManager().getVotingPluginUser((Player) sender), 1).open();
}
});
plugin.getAdminVoteCommand().add(new CommandHandler(plugin, new String[] { "PauseRewards" },
"VotingPlugin.Commands.AdminVote.PauseRewards|" + adminPerm, "Pause rewards globally") {
@@ -0,0 +1,171 @@
package com.bencodez.votingplugin.commands.gui.admin;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map.Entry;
import java.util.Queue;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentLinkedQueue;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import com.bencodez.advancedcore.api.gui.GUIHandler;
import com.bencodez.advancedcore.api.gui.GUIMethod;
import com.bencodez.advancedcore.api.inventory.BInventory;
import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.rewards.RewardBuilder;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.commands.gui.player.VoteGUI;
import com.bencodez.votingplugin.topvoter.TopVoterPlayer;
import com.bencodez.votingplugin.user.VotingPluginUser;
public class AdminVoteTopPoints extends GUIHandler {
private int page;
private VotingPluginMain plugin;
private VotingPluginUser user;
public AdminVoteTopPoints(VotingPluginMain plugin, CommandSender player, VotingPluginUser user, int page) {
super(plugin, player);
this.plugin = plugin;
this.user = user;
this.page = page;
}
@Override
public ArrayList<String> getChat(CommandSender sender) {
return null;
}
@Override
public void onBook(Player player) {
}
@Override
public void onChat(CommandSender sender) {
}
@Override
public void onChest(Player player) {
try {
Set<Entry<TopVoterPlayer, Integer>> users = null;
LinkedHashMap<TopVoterPlayer, Integer> topPoints1 = new LinkedHashMap<TopVoterPlayer, Integer>();
for (String uuid : plugin.getVotingPluginUserManager().getAllUUIDs()) {
VotingPluginUser vpUser = plugin.getVotingPluginUserManager()
.getVotingPluginUser(UUID.fromString(uuid));
vpUser.dontCache();
int points = vpUser.getPoints();
if (points > 0) {
topPoints1.put(vpUser.getTopVoterPlayer(), points);
}
}
LinkedHashMap<TopVoterPlayer, Integer> topPoints = plugin.getTopVoterHandler().sortByValues(topPoints1,
false);
users = topPoints.entrySet();
ConfigurationSection customization = plugin.getGui().getChestVoteTopCustomization();
boolean customzationEnabled = false;
Queue<Integer> playerSlots = new ConcurrentLinkedQueue<>();
if (customization != null) {
customzationEnabled = customization.getBoolean("Enabled");
List<Integer> customizationPlayerSlots = customization.getIntegerList("PlayerSlots");
playerSlots.addAll(customizationPlayerSlots);
}
BInventory inv = new BInventory("Top Points");
if (!plugin.getConfigFile().isAlwaysCloseInventory()) {
inv.dontClose();
}
int pos = 1;
for (Entry<TopVoterPlayer, Integer> entry : users) {
ItemBuilder playerItem = new ItemBuilder(Material.PAPER);
if (plugin.getGui().isChestVoteTopUseSkull()) {
playerItem = new ItemBuilder(entry.getKey().getPlayerHead());
} else {
playerItem = new ItemBuilder(Material.valueOf(plugin.getGui().getChestVoteTopPlayerItemMaterial()));
}
playerItem.setLore(new ArrayList<>());
BInventoryButton button = new BInventoryButton(playerItem
.setName(plugin.getGui().getChestVoteTopItemName())
.addLoreLine(plugin.getGui().getChestVoteTopItemLore()).addPlaceholder("position", "" + pos)
.addPlaceholder("player", entry.getKey().getPlayerName())
.addPlaceholder("votes", "" + entry.getValue())) {
@Override
public void onClick(ClickEvent clickEvent) {
if (plugin.getGui().isChestVoteTopOpenMainGUIOnClick()) {
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());
if (customzationEnabled && !playerSlots.isEmpty()) {
button.setSlot(playerSlots.remove());
}
inv.setCloseInv(plugin.getGui().isChestVoteTopCloseGUIOnClick());
inv.addButton(button);
pos++;
}
if (plugin.getGui().isChestVoteTopBackButton()) {
if (customzationEnabled) {
inv.addButton(plugin.getCommandLoader().getBackButton(user)
.setSlot(customization.getInt("BackButtonSlot", 0)));
} else {
inv.getPageButtons().add(plugin.getCommandLoader().getBackButton(user).setSlot(1));
}
}
String guiPath = "VoteTop.Customization";
for (final String str : plugin.getGui().getChestGUIExtraItems(guiPath)) {
inv.addButton(
new BInventoryButton(new ItemBuilder(plugin.getGui().getChestGUIExtraItemsItem(guiPath, str))) {
@Override
public void onClick(ClickEvent clickEvent) {
plugin.getCommandLoader().processSlotClick(player, user, str);
new RewardBuilder(plugin.getGui().getData(),
"CHEST." + guiPath + ".ExtraItems." + str + ".Rewards").setGiveOffline(false)
.send(clickEvent.getPlayer());
}
});
}
if (customization == null || !customzationEnabled || !customization.getBoolean("RemoveBottomBar")) {
inv.setPages(true);
}
inv.setMaxInvSize(plugin.getGui().getChestVoteTopSize());
inv.openInventory(player);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void open() {
open(GUIMethod.CHEST);
}
}
Loaded 100 of 131 files, more files were not shown because too many files have changed in this diff. Show more