Compare commits

..
30 Commits
Author SHA1 Message Date
BenCodez ba2312ed46 Add line for mysql in default config 2021-06-30 07:54:44 -04:00
BenCodez 2d8f9e1ca1 Update bstats class 2021-06-29 21:50:10 -04:00
BenCodez 7556a203c2 Fix version of maven plugin 2021-06-29 13:11:27 -04:00
BenCodez 67b8fbcc88 Update version number 2021-06-29 13:05:02 -04:00
BenCodez 4c9f7f76b9 Fix comments 2021-06-28 17:20:04 -04:00
BenCodez df388ca0e3 Add commands to set votestreaks 2021-06-25 16:02:53 -04:00
BenCodez 1d8fc309ff Bug fix 2021-06-23 19:35:44 -04:00
BenCodez 42a159ea82 Little comment change 2021-06-21 17:08:05 -04:00
BenCodez a62187e0cb Better handling when mysql isn't working on bungee & velocity 2021-06-20 18:52:14 -04:00
BenCodez 7896b2f08a Added /av vote (player), with GUI 2021-06-20 14:09:03 -04:00
BenCodez 034d031d79 Add failsafe for votesite loading 2021-06-19 22:12:07 -04:00
BenCodez e228fd6fed Remove barely used command 2021-06-16 21:09:33 -04:00
BenCodez baa85d7222 Update version number to 6.4 2021-06-13 13:37:29 -04:00
BenCodez 5fd2d976a2 Change convert players amount & add login pluginmessage for faster votes 2021-06-13 12:52:30 -04:00
BenCodez 03ac8627df Add libraries for 1.17 support 2021-06-12 20:47:37 -04:00
BenCodez 63d6f2829c Minor changes to sign handling 2021-06-11 19:11:20 -04:00
BenCodez 9824a891b6 Update to 1.17 2021-06-11 16:59:02 -04:00
BenCodez a648074757 Fix velocity issue 2021-06-11 16:12:28 -04:00
BenCodez 5e3a3621bc Make sure directly is created for votingplugin 2021-06-09 15:53:12 -04:00
BenCodez 01a645083f Replace - char for server name for column names 2021-06-06 15:50:17 -04:00
BenCodez 8b9aced63c Add FirstVoteToday reward 2021-06-06 12:33:45 -04:00
BenCodez 6eba6aee3b Don't attempt to get placeholders if cache needs to load 2021-06-06 12:25:35 -04:00
BenCodez 0fbbaaee5d Edit comments in SpecialRewards.yml 2021-06-04 19:37:52 -04:00
BenCodez 57e973b371 Add check for milestones adding milestone count 2021-06-04 15:59:06 -04:00
BenCodez c93f8f06f2 Remove unneeded dependency 2021-06-04 15:45:38 -04:00
BenCodez 6a742dbecc Add debug message 2021-06-03 17:27:27 -04:00
BenCodez c3edbf946c Fix velocity files not generating by default & errors when mysql not set 2021-06-02 19:32:46 -04:00
BenCodez 24fcd076b8 Bug fix 2021-06-02 15:47:57 -04:00
BenCodez a6ac022cb3 Relocate bstats 2021-06-01 17:32:28 -04:00
BenCodez 363c57158f Force generate file when needed 2021-06-01 17:19:58 -04:00
27 changed files with 696 additions and 376 deletions

No files matched your search

+1 -1
View File
@@ -9,7 +9,7 @@ UseBungeecord: false
# What type of bungee setup
# Requires restart and set on all servers
# https://github.com/Ben12345rocks/VotingPlugin/wiki/Bungeecoord-Setups
# https://github.com/BenCodez/VotingPlugin/wiki/Bungeecoord-Setups
# Available:
# SOCKETS
# PLUGINMESSAGING
+5 -5
View File
@@ -1,7 +1,7 @@
# VotingPlugin by Ben12345rocks
# VotingPlugin by BenCodez
# Main Config
# See wiki for help:
# https://github.com/Ben12345rocks/VotingPlugin/wiki
# https://github.com/BenCodez/VotingPlugin/wiki
# Config is sorted in sections
# Use Control + F to search with Notepad++
#
@@ -30,6 +30,8 @@ MySQL:
Prefix: ''
#UseSSL: true
#PublicKeyRetrieval: false
#Additional info on connection string
#Line: ''
# ---------------------------------------------------------
# Mysql cache options
@@ -96,10 +98,8 @@ VoteReminding:
RemindDelay: 30
# Run reward files on remind
# By default, the reward file will be created for you
# and have the default message
# Edit the message at AdvancedCore/Rewards/Remind.yml (or any other reward listed)
# Can add titles and more in the reward file
# Can add titles and more in the reward
Rewards:
Messages:
Player: '&aRemember to vote!'
+6 -3
View File
@@ -1,13 +1,16 @@
# To disable reward set value to []
# To disable reward set value to {}
# or remove entirely
# Eg:
# FirstVote: [] (All in one line)
# Rewards will be given if there is a reward to give
# FirstVote: {} (All in one line)
# Rewards will be given if there is a reward to give, otherwise they will be ignored
# First vote rewards
FirstVote:
Messages:
Player: '&aYou voted for your first time!'
# First vote of the day reward
FirstVoteToday: {}
# All vote rewards
# Reward for voting on all sites in one day
+3
View File
@@ -5,7 +5,10 @@ description: Highly Customizable Voting Listener!
website: https://www.spigotmc.org/resources/votingplugin.15358/
author: BenCodez
softdepend: [MVdWPlaceholders, Votifier, VotifierPlus, NuVotifier, CMI, Vault, PlaceholderAPI, ProtocolLib, MVdWPlaceholderAPI, AuthMe]
loadbefore: [MCPerks]
api-version: 1.13
libraries:
- org.openjdk.nashorn:nashorn-core:15.2
commands:
vote:
description: Vote command
+8 -34
View File
@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.bencodez</groupId>
<artifactId>VotingPlugin</artifactId>
<version>6.3.2</version>
<version>6.4.1</version>
<packaging>jar</packaging>
<name>VotingPlugin</name>
<properties>
@@ -79,7 +79,7 @@
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.18.12.0</version>
<version>1.18.20.0</version>
<executions>
<execution>
<id>delombok</id>
@@ -139,6 +139,11 @@
<pattern>xyz.upperlevel.spigot.book</pattern>
<shadedPattern>${project.groupId}.votingplugin.upperlevel.book</shadedPattern>
</relocation>
<relocation>
<pattern>org.bstats</pattern>
<!-- Replace this with your package! -->
<shadedPattern>${project.groupId}.votingplugin.bstats</shadedPattern>
</relocation>
</relocations>
</configuration>
<executions>
@@ -264,7 +269,7 @@
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.16.5-R0.1-SNAPSHOT</version>
<version>1.17-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -286,17 +291,6 @@
<scope>system</scope>
<systemPath>${project.basedir}/Jars/nuvotifier.jar</systemPath>
</dependency>
<dependency>
<groupId>com.tchristofferson</groupId>
<artifactId>ConfigUpdater</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>be.maximvdw</groupId>
<artifactId>MVdWPlaceholderAPI</artifactId>
@@ -372,25 +366,5 @@
</dependency>
</dependencies>
</profile>
<profile>
<id>dev-withmysqldriver</id>
<properties>
<build.profile.id>dev-withmysqldriver</build.profile.id>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.bencodez</groupId>
<artifactId>AdvancedCore</artifactId>
<version>LATEST</version>
<scope>compile</scope>
</dependency>
</dependencies>
</profile>
</profiles>
</project>
@@ -524,6 +524,29 @@ public class VotingPluginMain extends AdvancedCorePlugin {
getSpecialRewardsConfig().setValue(path, value);
}
});
addDirectlyDefinedRewards(new DirectlyDefinedReward("FirstVoteToday") {
@Override
public void createSection(String key) {
getSpecialRewardsConfig().createSection(key);
}
@Override
public ConfigurationSection getFileData() {
return getSpecialRewardsConfig().getData();
}
@Override
public void save() {
getSpecialRewardsConfig().saveData();
}
@Override
public void setData(String path, Object value) {
getSpecialRewardsConfig().setValue(path, value);
}
});
addDirectlyDefinedRewards(new DirectlyDefinedReward("VoteReminding.Rewards") {
@@ -1370,11 +1393,9 @@ public class VotingPluginMain extends AdvancedCorePlugin {
specialRewardsConfig = new SpecialRewardsConfig(this);
specialRewardsConfig.setup();
// specialRewardsConfig.loadValues();
bungeeSettings = new BungeeSettings(this);
bungeeSettings.setup();
// bungeeSettings.loadValues();
gui = new GUI(this);
gui.setup();
@@ -1,5 +1,7 @@
package com.bencodez.votingplugin;
import java.util.concurrent.Callable;
import com.bencodez.advancedcore.api.metrics.BStatsMetrics;
import com.bencodez.advancedcore.api.rewards.RewardHandler;
import com.bencodez.votingplugin.user.UserManager;
@@ -7,12 +9,12 @@ import com.bencodez.votingplugin.user.UserManager;
public class VotingPluginMetrics {
public void load(VotingPluginMain plugin) {
BStatsMetrics metrics = new BStatsMetrics(plugin);
BStatsMetrics metrics = new BStatsMetrics(plugin, 38);
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_firstvote") {
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_firstvote", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
if (RewardHandler.getInstance().hasRewards(plugin.getSpecialRewardsConfig().getData(),
plugin.getSpecialRewardsConfig().getFirstVoteRewardsPath())) {
return "True";
@@ -20,11 +22,11 @@ public class VotingPluginMetrics {
return "False";
}
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_everysite") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_everysite", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
if (RewardHandler.getInstance().hasRewards(plugin.getConfigVoteSites().getData(),
plugin.getConfigVoteSites().getEverySiteRewardPath())) {
return "True";
@@ -32,11 +34,11 @@ public class VotingPluginMetrics {
return "False";
}
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_allsites") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_allsites", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
if (RewardHandler.getInstance().hasRewards(plugin.getSpecialRewardsConfig().getData(),
plugin.getSpecialRewardsConfig().getAllSitesRewardPath())) {
return "True";
@@ -44,11 +46,11 @@ public class VotingPluginMetrics {
return "False";
}
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_cumulative") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_cumulative", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
if (plugin.getSpecialRewardsConfig().getCumulativeVotes().size() == 0) {
return "False";
} else {
@@ -60,22 +62,22 @@ public class VotingPluginMetrics {
return "False";
}
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_voteparty") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_voteparty", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
if (!plugin.getSpecialRewardsConfig().getVotePartyEnabled()) {
return "False";
} else {
return "True";
}
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_milestone") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_milestone", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
if (plugin.getSpecialRewardsConfig().getMilestoneVotes().size() == 0) {
return "False";
} else {
@@ -87,11 +89,11 @@ public class VotingPluginMetrics {
return "False";
}
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_anysitereward") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_anysitereward", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
if (RewardHandler.getInstance().hasRewards(plugin.getSpecialRewardsConfig().getData(),
plugin.getSpecialRewardsConfig().getAnySiteRewardsPath())) {
return "True";
@@ -99,11 +101,11 @@ public class VotingPluginMetrics {
return "False";
}
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_votestreakday") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_votestreakday", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
for (String s : plugin.getSpecialRewardsConfig().getVoteStreakVotes("Day")) {
if (plugin.getSpecialRewardsConfig().getVoteStreakRewardEnabled("Day", s)
@@ -115,12 +117,12 @@ public class VotingPluginMetrics {
}
return "False";
}
});
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_votestreakweek") {
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_votestreakweek", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
for (String s : plugin.getSpecialRewardsConfig().getVoteStreakVotes("Week")) {
if (plugin.getSpecialRewardsConfig().getVoteStreakRewardEnabled("Week", s)
@@ -132,12 +134,12 @@ public class VotingPluginMetrics {
return "False";
}
});
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_votestreakmonth") {
metrics.addCustomChart(new BStatsMetrics.SimplePie("extrarewards_votestreakmonth", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
for (String s : plugin.getSpecialRewardsConfig().getVoteStreakVotes("Month")) {
if (plugin.getSpecialRewardsConfig().getVoteStreakRewardEnabled("Month", s)
@@ -149,33 +151,33 @@ public class VotingPluginMetrics {
return "False";
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("numberofsites") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("numberofsites", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
return "" + plugin.getVoteSites().size();
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("numberofrewards") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("numberofrewards", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
return "" + RewardHandler.getInstance().getRewards().size();
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("autocreatevotesites") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("autocreatevotesites", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
return "" + plugin.getConfigFile().isAutoCreateVoteSites();
}
});
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("numberofusers") {
metrics.addCustomChart(new BStatsMetrics.SimplePie("numberofusers", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
int total = UserManager.getInstance().getAllUUIDs().size();
if (total < 1000) {
return "<1000";
@@ -185,113 +187,113 @@ public class VotingPluginMetrics {
return "1000-10000";
}
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("data_storage") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("data_storage", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
return plugin.getOptions().getStorageType().toString();
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("DisableCheckOnWorldChange") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("DisableCheckOnWorldChange", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
return "" + plugin.getOptions().isDisableCheckOnWorldChange();
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("votereminding_enabled") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("votereminding_enabled", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
return "" + plugin.getConfigFile().getVoteRemindingEnabled();
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("LoadTopVoter_Monthly") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("LoadTopVoter_Monthly", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
return "" + plugin.getConfigFile().getLoadTopVoterMonthly();
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("LoadTopVoter_Weekly") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("LoadTopVoter_Weekly", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
return "" + plugin.getConfigFile().getLoadTopVoterWeekly();
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("LoadTopVoter_Daily") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("LoadTopVoter_Daily", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
return "" + plugin.getConfigFile().getLoadTopVoterDaily();
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("bungeemethod") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("bungeemethod", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
if (plugin.getBungeeSettings().isUseBungeecoord()) {
return "" + plugin.getBungeeHandler().getMethod().toString();
} else {
return "Disabled";
}
}
});
}));
if (plugin.getBungeeSettings().isUseBungeecoord()) {
metrics.addCustomChart(new BStatsMetrics.SimplePie("bungeebroadcast") {
metrics.addCustomChart(new BStatsMetrics.SimplePie("bungeebroadcast", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
return "" + plugin.getBungeeSettings().isBungeeBroadcast();
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("bungeebroadcastalways") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("bungeebroadcastalways", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
return "" + plugin.getBungeeSettings().isBungeeBroadcastAlways();
}
});
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("perserverrewards") {
metrics.addCustomChart(new BStatsMetrics.SimplePie("perserverrewards", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
return "" + plugin.getBungeeSettings().isPerServerRewards();
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("perserverpoints") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("perserverpoints", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
return "" + plugin.getBungeeSettings().isPerServerPoints();
}
});
metrics.addCustomChart(new BStatsMetrics.SimplePie("triggervotifierevent") {
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("triggervotifierevent", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
return "" + plugin.getBungeeSettings().isTriggerVotifierEvent();
}
});
}));
}
metrics.addCustomChart(new BStatsMetrics.SimplePie("geyserprefixsupport") {
metrics.addCustomChart(new BStatsMetrics.SimplePie("geyserprefixsupport", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
return "" + plugin.getOptions().isGeyserPrefixSupport();
}
});
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("using_dev_build") {
metrics.addCustomChart(new BStatsMetrics.SimplePie("using_dev_build", new Callable<String>() {
@Override
public String getValue() {
public String call() throws Exception {
return "" + plugin.getProfile().contains("dev");
}
});
}));
}
}
@@ -53,6 +53,7 @@ public class BroadcastHandler {
public void schelude(int delay) {
if (timer != null) {
timer.cancel();
timer = new Timer();
} else {
timer = new Timer();
}
@@ -235,6 +235,36 @@ public class VotingPluginBungee extends Plugin {
}
}
private void loadMysql() {
mysql = new BungeeMySQL(this, "VotingPlugin_Users", config.getData());
// column types
getMysql().alterColumnType("TopVoterIgnore", "VARCHAR(5)");
getMysql().alterColumnType("CheckWorld", "VARCHAR(5)");
getMysql().alterColumnType("Reminded", "VARCHAR(5)");
getMysql().alterColumnType("DisableBroadcast", "VARCHAR(5)");
getMysql().alterColumnType("LastOnline", "VARCHAR(20)");
getMysql().alterColumnType("PlayerName", "VARCHAR(30)");
getMysql().alterColumnType("DailyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("WeeklyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("DayVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("BestDayVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("WeekVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("BestWeekVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("VotePartyVotes", "INT DEFAULT '0'");
getMysql().alterColumnType("MonthVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("Points", "INT DEFAULT '0'");
getMysql().alterColumnType("HighestDailyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("AllTimeTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("HighestMonthlyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("MilestoneCount", "INT DEFAULT '0'");
getMysql().alterColumnType("MonthTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("HighestWeeklyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("LastMonthTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("OfflineRewards", "MEDIUMTEXT");
getMysql().alterColumnType("DayVoteStreakLastUpdate", "MEDIUMTEXT");
}
@Override
public void onEnable() {
try {
@@ -252,40 +282,21 @@ public class VotingPluginBungee extends Plugin {
config = new Config(this);
config.load();
try {
mysql = new BungeeMySQL(this, "VotingPlugin_Users", config.getData());
getProxy().getPluginManager().registerCommand(this, new VotingPluginBungeeCommand(this));
// column types
getMysql().alterColumnType("TopVoterIgnore", "VARCHAR(5)");
getMysql().alterColumnType("CheckWorld", "VARCHAR(5)");
getMysql().alterColumnType("Reminded", "VARCHAR(5)");
getMysql().alterColumnType("DisableBroadcast", "VARCHAR(5)");
getMysql().alterColumnType("LastOnline", "VARCHAR(20)");
getMysql().alterColumnType("PlayerName", "VARCHAR(30)");
getMysql().alterColumnType("DailyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("WeeklyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("DayVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("BestDayVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("WeekVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("BestWeekVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("VotePartyVotes", "INT DEFAULT '0'");
getMysql().alterColumnType("MonthVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("Points", "INT DEFAULT '0'");
getMysql().alterColumnType("HighestDailyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("AllTimeTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("HighestMonthlyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("MilestoneCount", "INT DEFAULT '0'");
getMysql().alterColumnType("MonthTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("HighestWeeklyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("LastMonthTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("OfflineRewards", "MEDIUMTEXT");
getMysql().alterColumnType("DayVoteStreakLastUpdate", "MEDIUMTEXT");
boolean mysqlLoaded = true;
try {
if (!config.getData().getString("Host", "").isEmpty()) {
loadMysql();
} else {
mysqlLoaded = false;
getLogger().severe("MySQL settings not set in bungeeconfig.yml");
}
} catch (Exception e) {
mysqlLoaded = false;
e.printStackTrace();
}
getProxy().getPluginManager().registerCommand(this, new VotingPluginBungeeCommand(this));
method = BungeeMethod.getByName(config.getBungeeMethod());
if (method == null) {
method = BungeeMethod.PLUGINMESSAGING;
@@ -293,114 +304,116 @@ public class VotingPluginBungee extends Plugin {
this.getProxy().registerChannel("vp:vp");
if (method.equals(BungeeMethod.MYSQL)) {
// this.getProxy().registerChannel("vp:vp");
if (mysqlLoaded) {
if (method.equals(BungeeMethod.MYSQL)) {
// this.getProxy().registerChannel("vp:vp");
} else if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
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();
try {
for (String server : voteCacheFile.getServers()) {
ArrayList<OfflineBungeeVote> vote = new ArrayList<OfflineBungeeVote>();
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")));
try {
for (String server : voteCacheFile.getServers()) {
ArrayList<OfflineBungeeVote> vote = new ArrayList<OfflineBungeeVote>();
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")));
}
cachedVotes.put(server, vote);
}
cachedVotes.put(server, vote);
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
for (String player : voteCacheFile.getPlayers()) {
ArrayList<OfflineBungeeVote> vote = new ArrayList<OfflineBungeeVote>();
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")));
try {
for (String player : voteCacheFile.getPlayers()) {
ArrayList<OfflineBungeeVote> vote = new ArrayList<OfflineBungeeVote>();
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")));
}
cachedOnlineVotes.put(player, vote);
}
cachedOnlineVotes.put(player, vote);
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
voteCacheFile.clearData();
voteCacheFile.clearData();
getProxy().getScheduler().schedule(this, new Runnable() {
getProxy().getScheduler().schedule(this, new Runnable() {
@Override
public void run() {
for (String server : cachedVotes.keySet()) {
checkCachedVotes(server);
@Override
public void run() {
for (String server : cachedVotes.keySet()) {
checkCachedVotes(server);
}
for (String player : cachedOnlineVotes.keySet()) {
checkOnlineVotes(getProxy().getPlayer(UUID.fromString(player)), player, null);
}
}
}, 15l, 30l, TimeUnit.SECONDS);
for (String player : cachedOnlineVotes.keySet()) {
checkOnlineVotes(getProxy().getPlayer(UUID.fromString(player)), player, null);
getProxy().getScheduler().schedule(this, new Runnable() {
@Override
public void run() {
if (nonVotedPlayersCache != null) {
debug("Checking nonvotedplayers.yml...");
nonVotedPlayersCache.check();
}
}
}
}, 15l, 30l, TimeUnit.SECONDS);
}, 1l, 60l, TimeUnit.MINUTES);
} else if (method.equals(BungeeMethod.SOCKETS)) {
encryptionHandler = new EncryptionHandler(new File(getDataFolder(), "secretkey.key"));
getProxy().getScheduler().schedule(this, new Runnable() {
socketHandler = new SocketHandler(getDescription().getVersion(), config.getBungeeHost(),
config.getBungeePort(), encryptionHandler, config.getDebug());
@Override
public void run() {
if (nonVotedPlayersCache != null) {
debug("Checking nonvotedplayers.yml...");
nonVotedPlayersCache.check();
}
}
}, 1l, 60l, TimeUnit.MINUTES);
} else if (method.equals(BungeeMethod.SOCKETS)) {
encryptionHandler = new EncryptionHandler(new File(getDataFolder(), "secretkey.key"));
socketHandler.add(new SocketReceiver() {
socketHandler = new SocketHandler(getDescription().getVersion(), config.getBungeeHost(),
config.getBungeePort(), encryptionHandler, config.getDebug());
socketHandler.add(new SocketReceiver() {
@Override
public void onReceive(String[] data) {
if (data.length > 1) {
if (data.length > 2) {
if (data[0].equalsIgnoreCase("Broadcast")) {
sendServerMessage(data);
@Override
public void onReceive(String[] data) {
if (data.length > 1) {
if (data.length > 2) {
if (data[0].equalsIgnoreCase("Broadcast")) {
sendServerMessage(data);
}
}
}
}
});
}
});
socketHandler.add(new SocketReceiver() {
socketHandler.add(new SocketReceiver() {
@Override
public void onReceive(String[] data) {
if (data.length > 1) {
if (data[0].equalsIgnoreCase("StatusOkay")) {
String server = data[1];
getLogger().info("Voting communicaton okay with " + server);
@Override
public void onReceive(String[] data) {
if (data.length > 1) {
if (data[0].equalsIgnoreCase("StatusOkay")) {
String server = data[1];
getLogger().info("Voting communicaton okay with " + server);
}
}
}
});
}
});
clientHandles = new HashMap<String, ClientHandler>();
List<String> l = config.getBlockedServers();
for (String s : config.getSpigotServers()) {
if (!l.contains(s)) {
Configuration d = config.getSpigotServerConfiguration(s);
clientHandles.put(s, new ClientHandler(d.getString("Host", ""), d.getInt("Port", 1298),
encryptionHandler, config.getDebug()));
clientHandles = new HashMap<String, ClientHandler>();
List<String> l = config.getBlockedServers();
for (String s : config.getSpigotServers()) {
if (!l.contains(s)) {
Configuration d = config.getSpigotServerConfiguration(s);
clientHandles.put(s, new ClientHandler(d.getString("Host", ""), d.getInt("Port", 1298),
encryptionHandler, config.getDebug()));
}
}
}
}
@@ -425,7 +438,8 @@ public class VotingPluginBungee extends Plugin {
metrics.addCustomChart(
new BStatsMetricsBungee.SimplePie("waitforuseronline", () -> "" + getConfig().getWaitForUserOnline()));
getLogger().info("VotingPlugin loaded, using method: " + method.toString());
getLogger().info("VotingPlugin loaded, using method: " + method.toString() + ", PluginMessagingVersion: "
+ BungeeVersion.getPluginMessageVersion());
}
@EventHandler
@@ -519,8 +533,19 @@ public class VotingPluginBungee extends Plugin {
return new UUID(mostSigBits, leastSigBits);
}
public void reload() {
public void reload(boolean loadMysql) {
config.load();
if (loadMysql) {
try {
if (!config.getData().getString("Host", "").isEmpty()) {
loadMysql();
} else {
getLogger().severe("MySQL settings not set in bungeeconfig.yml");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void sendPluginMessageServer(String server, String channel, String... messageData) {
@@ -645,6 +670,11 @@ public class VotingPluginBungee extends Plugin {
if (getConfig().getBungeeManageTotals()) {
if (mysql == null) {
getLogger().severe("Mysql is not loaded correctly, stopping vote processing");
return;
}
if (!mysql.getUuids().contains(uuid)) {
mysql.update(uuid, "PlayerName", player, DataType.STRING);
}
@@ -17,41 +17,46 @@ public class VotingPluginBungeeCommand extends Command {
if (sender.hasPermission("votingplugin.admin")) {
if (args.length > 0) {
if (args[0].equalsIgnoreCase("reload")) {
bungee.reload();
sender.sendMessage(new TextComponent("Reloading VotingPluginBungee"));
bungee.reload(false);
sender.sendMessage(new TextComponent("&aReloading VotingPluginBungee"));
}
if (args[0].equalsIgnoreCase("reloadmysql")) {
bungee.reload(true);
sender.sendMessage(new TextComponent("&aReloading VotingPluginBungee with MySQL"));
}
if (args[0].equalsIgnoreCase("vote")) {
if (args.length >= 2) {
String user = args[1];
String site = args[2];
bungee.vote(user, site, false);
sender.sendMessage(new TextComponent("Sending vote"));
sender.sendMessage(new TextComponent("&aSending vote"));
}
}
if (args[0].equalsIgnoreCase("status")) {
if (bungee.getMethod().equals(BungeeMethod.SOCKETS)) {
sender.sendMessage(new TextComponent(
"Checking status, waiting for response, check console, method: sockets"));
"&aChecking status, waiting for response, check console, method: sockets"));
bungee.status(sender);
} else if (bungee.getMethod().equals(BungeeMethod.PLUGINMESSAGING)) {
sender.sendMessage(new TextComponent(
"Checking status, waiting for response, check console, method: plugin messaging"));
"&aChecking status, waiting for response, check console, method: plugin messaging"));
bungee.status(sender);
} else {
sender.sendMessage(
new TextComponent("Not using socket/pluginmessage method, command unavailable"));
new TextComponent("&aNot using socket/pluginmessage method, command unavailable"));
}
}
if (args[0].equalsIgnoreCase("help")) {
TextComponent[] msg = new TextComponent[3];
TextComponent[] msg = new TextComponent[4];
msg[0] = new TextComponent("&avotingpluginbungee reload - Reload plugin");
msg[1] = new TextComponent("&avotingpluginbungee vote (player) (servicesite) - Send bungee vote");
msg[2] = new TextComponent("&avotingpluginbungee status - Check socket connection status");
msg[1] = new TextComponent("&avotingpluginbungee reloadmysql - Reload plugin including mysql");
msg[2] = new TextComponent("&avotingpluginbungee vote (player) (servicesite) - Send bungee vote");
msg[3] = new TextComponent("&avotingpluginbungee status - Check socket connection status");
sender.sendMessage(msg);
}
}
} else {
sender.sendMessage(new TextComponent("You do not have permission to do this!"));
sender.sendMessage(new TextComponent("&cYou do not have permission to do this!"));
}
}
}
@@ -24,7 +24,7 @@ public class VelocityYMLFile {
this.file = file;
if (!file.exists()) {
try {
System.out.println(file.toString());
file.getParentFile().mkdirs();
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
@@ -6,6 +6,8 @@ import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
@@ -20,6 +22,7 @@ import java.util.Map.Entry;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import org.bstats.charts.SimplePie;
import org.bstats.velocity.Metrics;
import org.slf4j.Logger;
@@ -157,8 +160,44 @@ public class VotingPluginVelocity {
this.metricsFactory = metricsFactory;
}
public void reload() {
private void loadMysql() {
mysql = new BungeeMySQL(this, "VotingPlugin_Users", config);
// column types
getMysql().alterColumnType("TopVoterIgnore", "VARCHAR(5)");
getMysql().alterColumnType("CheckWorld", "VARCHAR(5)");
getMysql().alterColumnType("Reminded", "VARCHAR(5)");
getMysql().alterColumnType("DisableBroadcast", "VARCHAR(5)");
getMysql().alterColumnType("LastOnline", "VARCHAR(20)");
getMysql().alterColumnType("PlayerName", "VARCHAR(30)");
getMysql().alterColumnType("DailyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("WeeklyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("DayVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("BestDayVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("WeekVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("BestWeekVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("VotePartyVotes", "INT DEFAULT '0'");
getMysql().alterColumnType("MonthVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("Points", "INT DEFAULT '0'");
getMysql().alterColumnType("HighestDailyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("AllTimeTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("HighestMonthlyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("MilestoneCount", "INT DEFAULT '0'");
getMysql().alterColumnType("MonthTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("HighestWeeklyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("LastMonthTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("OfflineRewards", "MEDIUMTEXT");
getMysql().alterColumnType("DayVoteStreakLastUpdate", "MEDIUMTEXT");
}
public void reload(boolean loadMySQL) {
config.reload();
if (loadMySQL) {
if (!config.getString(config.getNode("Host"), "").isEmpty()) {
loadMysql();
} else {
logger.error("MySQL settings not set in bungeeconfig.yml");
}
}
}
public void status() {
@@ -184,10 +223,42 @@ public class VotingPluginVelocity {
@Subscribe
public void onProxyInitialization(ProxyInitializeEvent event) {
File configFile = new File(dataDirectory.toFile(), "bungeeconfig.yml");
configFile.getParentFile().mkdirs();
if (!configFile.exists()) {
try {
configFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
InputStream toCopyStream = VotingPluginVelocity.class.getClassLoader()
.getResourceAsStream("bungeeconfig.yml");
try (FileOutputStream fos = new FileOutputStream(configFile)) {
byte[] buf = new byte[2048];
int r;
while (-1 != (r = toCopyStream.read(buf))) {
fos.write(buf, 0, r);
}
} catch (IOException e) {
e.printStackTrace();
}
}
config = new Config(configFile);
server.getChannelRegistrar().register(CHANNEL);
method = BungeeMethod.getByName(config.getBungeeMethod());
mysql = new BungeeMySQL(this, "VotingPlugin_Users", config);
boolean mysqlLoaded = true;
try {
if (!config.getString(config.getNode("Host"), "").isEmpty()) {
loadMysql();
} else {
mysqlLoaded = false;
logger.error("MySQL settings not set in bungeeconfig.yml");
}
} catch (Exception e) {
mysqlLoaded = false;
e.printStackTrace();
}
CommandMeta meta = server.getCommandManager().metaBuilder("votingpluginbungee")
// Specify other aliases (optional)
@@ -195,116 +266,130 @@ public class VotingPluginVelocity {
server.getCommandManager().register(meta, new VotingPluginVelocityCommand(this));
if (method.equals(BungeeMethod.MYSQL)) {
// this.getProxy().registerChannel("vp:vp");
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);
} 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);
try {
for (String serverToCheck : voteCacheFile.getServers()) {
ArrayList<OfflineBungeeVote> vote = new ArrayList<OfflineBungeeVote>();
for (String num : voteCacheFile.getServerVotes(serverToCheck)) {
ConfigurationNode data = voteCacheFile.getServerVotes(serverToCheck, num);
try {
for (String serverToCheck : voteCacheFile.getServers()) {
ArrayList<OfflineBungeeVote> vote = new ArrayList<OfflineBungeeVote>();
for (String num : voteCacheFile.getServerVotes(serverToCheck)) {
ConfigurationNode data = voteCacheFile.getServerVotes(serverToCheck, num);
vote.add(new OfflineBungeeVote(data.getNode("Name").getString(),
data.getNode("UUID").getString(), data.getNode("Service").getString(),
data.getNode("Time").getLong(), data.getNode("Real").getBoolean(),
data.getNode("TEXT").getString()));
vote.add(new OfflineBungeeVote(data.getNode("Name").getString(),
data.getNode("UUID").getString(), data.getNode("Service").getString(),
data.getNode("Time").getLong(), data.getNode("Real").getBoolean(),
data.getNode("TEXT").getString()));
}
cachedVotes.put(server.getServer(serverToCheck).get(), vote);
}
cachedVotes.put(server.getServer(serverToCheck).get(), vote);
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
for (String player : voteCacheFile.getPlayers()) {
ArrayList<OfflineBungeeVote> vote = new ArrayList<OfflineBungeeVote>();
for (String num : voteCacheFile.getOnlineVotes(player)) {
ConfigurationNode data = voteCacheFile.getOnlineVotes(player, num);
vote.add(new OfflineBungeeVote(data.getNode("Name").getString(),
data.getNode("UUID").getString(), data.getNode("Service").getString(),
data.getNode("Time").getLong(), data.getNode("Real").getBoolean(),
data.getNode("TEXT").getString()));
try {
for (String player : voteCacheFile.getPlayers()) {
ArrayList<OfflineBungeeVote> vote = new ArrayList<OfflineBungeeVote>();
for (String num : voteCacheFile.getOnlineVotes(player)) {
ConfigurationNode data = voteCacheFile.getOnlineVotes(player, num);
vote.add(new OfflineBungeeVote(data.getNode("Name").getString(),
data.getNode("UUID").getString(), data.getNode("Service").getString(),
data.getNode("Time").getLong(), data.getNode("Real").getBoolean(),
data.getNode("TEXT").getString()));
}
cachedOnlineVotes.put(player, vote);
}
cachedOnlineVotes.put(player, vote);
}
} catch (Exception e) {
e.printStackTrace();
}
voteCacheFile.clearData();
server.getScheduler().buildTask(this, () -> {
for (RegisteredServer server : cachedVotes.keySet()) {
checkCachedVotes(server);
} catch (Exception e) {
e.printStackTrace();
}
for (String player : cachedOnlineVotes.keySet()) {
checkOnlineVotes(server.getPlayer(UUID.fromString(player)).get(), player, null);
}
}).delay(15L, TimeUnit.SECONDS).repeat(30l, TimeUnit.SECONDS).schedule();
voteCacheFile.clearData();
server.getScheduler().buildTask(this, () -> {
if (nonVotedPlayersCache != null) {
debug("Checking nonvotedplayerscache.yml...");
nonVotedPlayersCache.check();
}
}).delay(1L, TimeUnit.MINUTES).repeat(60l, TimeUnit.MINUTES).schedule();
} else if (method.equals(BungeeMethod.SOCKETS)) {
encryptionHandler = new EncryptionHandler(new File(dataDirectory.toFile(), "secretkey.key"));
server.getScheduler().buildTask(this, () -> {
for (RegisteredServer server : cachedVotes.keySet()) {
checkCachedVotes(server);
}
socketHandler = new SocketHandler(
server.getPluginManager().getPlugin("votingplugin").get().getDescription().getVersion().get(),
config.getBungeeHost(), config.getBungeePort(), encryptionHandler, config.getDebug());
for (String player : cachedOnlineVotes.keySet()) {
checkOnlineVotes(server.getPlayer(UUID.fromString(player)).get(), player, null);
}
}).delay(15L, TimeUnit.SECONDS).repeat(30l, TimeUnit.SECONDS).schedule();
socketHandler.add(new SocketReceiver() {
server.getScheduler().buildTask(this, () -> {
if (nonVotedPlayersCache != null) {
debug("Checking nonvotedplayerscache.yml...");
nonVotedPlayersCache.check();
}
}).delay(1L, TimeUnit.MINUTES).repeat(60l, TimeUnit.MINUTES).schedule();
} else if (method.equals(BungeeMethod.SOCKETS)) {
encryptionHandler = new EncryptionHandler(new File(dataDirectory.toFile(), "secretkey.key"));
@Override
public void onReceive(String[] data) {
if (data.length > 1) {
if (data.length > 2) {
if (data[0].equalsIgnoreCase("Broadcast")) {
sendServerMessage(data);
socketHandler = new SocketHandler(
server.getPluginManager().getPlugin("votingplugin").get().getDescription().getVersion().get(),
config.getBungeeHost(), config.getBungeePort(), encryptionHandler, config.getDebug());
socketHandler.add(new SocketReceiver() {
@Override
public void onReceive(String[] data) {
if (data.length > 1) {
if (data.length > 2) {
if (data[0].equalsIgnoreCase("Broadcast")) {
sendServerMessage(data);
}
}
}
}
});
}
});
socketHandler.add(new SocketReceiver() {
socketHandler.add(new SocketReceiver() {
@Override
public void onReceive(String[] data) {
if (data.length > 1) {
if (data[0].equalsIgnoreCase("StatusOkay")) {
String server = data[1];
logger.info("Voting communicaton okay with " + server);
@Override
public void onReceive(String[] data) {
if (data.length > 1) {
if (data[0].equalsIgnoreCase("StatusOkay")) {
String server = data[1];
logger.info("Voting communicaton okay with " + server);
}
}
}
});
}
});
clientHandles = new HashMap<String, ClientHandler>();
List<String> l = config.getBlockedServers();
for (String s : config.getSpigotServers()) {
if (!l.contains(s)) {
ConfigurationNode d = config.getSpigotServerConfiguration(s);
clientHandles.put(s, new ClientHandler(d.getNode("Host").getString(""),
d.getNode("Port").getInt(1298), encryptionHandler, config.getDebug()));
clientHandles = new HashMap<String, ClientHandler>();
List<String> l = config.getBlockedServers();
for (String s : config.getSpigotServers()) {
if (!l.contains(s)) {
ConfigurationNode d = config.getSpigotServerConfiguration(s);
clientHandles.put(s, new ClientHandler(d.getNode("Host").getString(""),
d.getNode("Port").getInt(1298), encryptionHandler, config.getDebug()));
}
}
}
}
@SuppressWarnings("unused")
Metrics metrics = metricsFactory.make(this, 11547);
logger.info("VotingPlugin velocity loaded, method: " + method.toString());
metrics.addCustomChart(new SimplePie("bungee_method", () -> getConfig().getBungeeMethod().toString()));
metrics.addCustomChart(new SimplePie("sendtoallservers", () -> "" + getConfig().getSendVotesToAllServers()));
metrics.addCustomChart(new SimplePie("allowunjoined", () -> "" + getConfig().getAllowUnJoined()));
metrics.addCustomChart(new SimplePie("pointsonvote", () -> "" + getConfig().getPointsOnVote()));
metrics.addCustomChart(new SimplePie("bungeemanagetotals", () -> "" + getConfig().getBungeeManageTotals()));
metrics.addCustomChart(new SimplePie("waitforuseronline", () -> "" + getConfig().getWaitForUserOnline()));
logger.info("VotingPlugin velocity loaded, method: " + method.toString() + ", PluginMessagingVersion: "
+ BungeeVersion.getPluginMessageVersion());
}
@Subscribe
@@ -543,6 +628,11 @@ public class VotingPluginVelocity {
if (getConfig().getBungeeManageTotals()) {
if (mysql == null) {
logger.error("Mysql is not loaded correctly, stopping vote processing");
return;
}
if (!mysql.getUuids().contains(uuid)) {
mysql.update(uuid, "PlayerName", player, DataType.STRING);
}
@@ -22,9 +22,13 @@ public class VotingPluginVelocityCommand implements SimpleCommand {
if (args.length > 0) {
if (args[0].equalsIgnoreCase("reload")) {
plugin.reload();
plugin.reload(false);
source.sendMessage(Component.text("Reloading VotingPluginBungee").color(NamedTextColor.AQUA));
}
if (args[0].equalsIgnoreCase("reloadmysql")) {
plugin.reload(true);
source.sendMessage(Component.text("Reloading VotingPluginBungee MySQL").color(NamedTextColor.AQUA));
}
if (args[0].equalsIgnoreCase("vote")) {
if (args.length >= 2) {
String user = args[1];
@@ -50,10 +54,11 @@ public class VotingPluginVelocityCommand implements SimpleCommand {
}
}
if (args[0].equalsIgnoreCase("help")) {
String[] msg = new String[3];
String[] msg = new String[4];
msg[0] = "votingpluginbungee reload - Reload plugin";
msg[1] = "votingpluginbungee vote (player) (servicesite) - Send bungee vote";
msg[2] = "votingpluginbungee status - Check socket connection status";
msg[1] = "votingpluginbungee reloadmysql - Reload plugin including mysql";
msg[2] = "votingpluginbungee vote (player) (servicesite) - Send bungee vote";
msg[3] = "votingpluginbungee status - Check socket connection status";
for (String m : msg) {
source.sendMessage(Component.text(m).color(NamedTextColor.AQUA));
}
@@ -1,7 +1,5 @@
package com.bencodez.votingplugin.commands;
import java.io.File;
import java.io.IOException;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
@@ -47,6 +45,7 @@ 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.AdminVoteVoteParty;
import com.bencodez.votingplugin.commands.gui.admin.AdminVoteVotePlayer;
import com.bencodez.votingplugin.commands.gui.admin.cumulative.AdminVoteCumulative;
import com.bencodez.votingplugin.commands.gui.admin.milestones.AdminVoteMilestones;
import com.bencodez.votingplugin.commands.gui.admin.voteshop.AdminVoteVoteShop;
@@ -70,7 +69,6 @@ import com.bencodez.votingplugin.test.VoteTester;
import com.bencodez.votingplugin.topvoter.TopVoter;
import com.bencodez.votingplugin.user.UserManager;
import com.bencodez.votingplugin.user.VotingPluginUser;
import com.tchristofferson.configupdater.ConfigUpdater;
// TODO: Auto-generated Javadoc
/**
@@ -748,6 +746,47 @@ public class CommandLoader {
}
});
plugin.getAdminVoteCommand()
.add(new CommandHandler(new String[] { "User", "(player)", "SetVoteStreak", "DAY", "(number)" },
"VotingPlugin.Commands.AdminVote.SetVoteStreak.Day|" + adminPerm, "Set votestreak for player") {
@Override
public void execute(CommandSender sender, String[] args) {
UserManager.getInstance().getVotingPluginUser(args[1])
.setDayVoteStreak(Integer.parseInt(args[4]));
sender.sendMessage(StringParser.getInstance()
.colorize("&cSet votestreak day for '" + args[1] + "' to " + args[4]));
}
});
plugin.getAdminVoteCommand()
.add(new CommandHandler(new String[] { "User", "(player)", "SetVoteStreak", "WEEK", "(number)" },
"VotingPlugin.Commands.AdminVote.SetVoteStreak.Week|" + adminPerm,
"Set votestreak for player") {
@Override
public void execute(CommandSender sender, String[] args) {
UserManager.getInstance().getVotingPluginUser(args[1])
.setWeekVoteStreak(Integer.parseInt(args[4]));
sender.sendMessage(StringParser.getInstance()
.colorize("&cSet votestreak week for '" + args[1] + "' to " + args[4]));
}
});
plugin.getAdminVoteCommand()
.add(new CommandHandler(new String[] { "User", "(player)", "SetVoteStreak", "MONTH", "(number)" },
"VotingPlugin.Commands.AdminVote.SetVoteStreak.Month|" + adminPerm,
"Set votestreak for player") {
@Override
public void execute(CommandSender sender, String[] args) {
UserManager.getInstance().getVotingPluginUser(args[1])
.setMonthVoteStreak(Integer.parseInt(args[4]));
sender.sendMessage(StringParser.getInstance()
.colorize("&cSet votestreak month for '" + args[1] + "' to " + args[4]));
}
});
for (final TopVoter top : TopVoter.values()) {
plugin.getAdminVoteCommand()
.add(new CommandHandler(new String[] { "User", "(player)", "SetTotal", top.toString(), "(number)" },
@@ -797,6 +836,7 @@ public class CommandLoader {
public void execute(CommandSender sender, String[] args) {
VotingPluginUser user = UserManager.getInstance().getVotingPluginUser(args[1]);
user.setMilestoneCount(user.getMilestoneCount() + Integer.parseInt(args[3]));
plugin.getSpecialRewards().checkMilestone(user, null, false);
sender.sendMessage(
StringParser.getInstance().colorize("&cAdded milestonecount for " + args[1]));
}
@@ -862,6 +902,15 @@ public class CommandLoader {
}
});
plugin.getAdminVoteCommand().add(new CommandHandler(new String[] { "Vote", "(player)", },
"VotingPlugin.Commands.AdminVote.Vote|" + adminPerm, "Trigger manual vote via GUI", false) {
@Override
public void execute(CommandSender sender, String[] args) {
new AdminVoteVotePlayer(plugin, sender, args[1]).open();
}
});
plugin.getAdminVoteCommand().add(new CommandHandler(new String[] { "Vote" },
"VotingPlugin.Commands.AdminVote.Vote|" + adminPerm, "Manual vote syntax") {
@@ -941,26 +990,6 @@ public class CommandLoader {
}
});
plugin.getAdminVoteCommand().add(new CommandHandler(new String[] { "Config", "Update" },
"VotingPlugin.Commands.AdminVote.Config.Edit|" + adminPerm, "Updates config with missing values") {
@Override
public void execute(CommandSender sender, String[] args) {
ArrayList<String> ignoreSections = new ArrayList<String>();
ignoreSections.add("VoteReminding");
File file = new File(plugin.getDataFolder(), "Config.yml");
try {
ConfigUpdater.update(plugin, "Config.yml", file, ignoreSections);
} catch (IOException e) {
e.printStackTrace();
}
plugin.getConfigFile().reloadData();
plugin.getConfigFile().loadValues();
sendMessage(sender, "&cUpdated config with new values");
}
});
plugin.getAdminVoteCommand()
.add(new CommandHandler(new String[] { "Config", "TempExtraDebug" },
"VotingPlugin.Commands.AdminVote.Config.Edit|" + adminPerm,
@@ -1200,7 +1229,7 @@ public class CommandLoader {
plugin.getAdminVoteCommand()
.add(new CommandHandler(new String[] { "VotePartyExtraRequired", "(Number)" },
"VotingPlugin.Commands.AdminVote.VoteParty.SetExtraRequired|" + adminPerm,
"Force a voteparty reward, resets vote count") {
"Set VotePartyExtraRequired value") {
@Override
public void execute(CommandSender sender, String[] args) {
@@ -1334,6 +1363,18 @@ public class CommandLoader {
}
});
plugin.getAdminVoteCommand().add(new CommandHandler(new String[] { "User", "(player)", "ForceFirstVoteToday" },
"VotingPlugin.Commands.AdminVote.ForceFirstVoteToday|" + adminPerm, "Force a firstvotetoday reward") {
@Override
public void execute(CommandSender sender, String[] args) {
VotingPluginUser user = UserManager.getInstance().getVotingPluginUser(args[1]);
plugin.getSpecialRewards().giveFirstVoteTodayRewards(user, user.isOnline(),
plugin.getBungeeSettings().isUseBungeecoord());
sendMessage(sender, "&cFirstVoteToday forced");
}
});
plugin.getAdminVoteCommand()
.add(new CommandHandler(new String[] { "Placeholders", "(player)" },
"VotingPlugin.Commands.AdminVote.Placeholders.Players|" + adminPerm,
@@ -113,6 +113,14 @@ public class AdminGUI {
RewardHandler.getInstance().getDirectlyDefined("FirstVote"));
}
});
buttons.add(new BInventoryButton(new ItemBuilder(Material.STONE, 1).setName("&cEdit FirstVoteToday reward")) {
@Override
public void onClick(ClickEvent clickEvent) {
RewardEditGUI.getInstance().openRewardGUI(clickEvent.getPlayer(),
RewardHandler.getInstance().getDirectlyDefined("FirstVoteToday"));
}
});
buttons.add(new BInventoryButton(new ItemBuilder(Material.STONE, 1).setName("&cEdit AllSites reward")) {
@@ -0,0 +1,80 @@
package com.bencodez.votingplugin.commands.gui.admin;
import java.util.ArrayList;
import org.bukkit.command.CommandSender;
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.ClickEvent;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.inventory.editgui.EditGUI;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.events.PlayerVoteEvent;
import com.bencodez.votingplugin.objects.VoteSite;
public class AdminVoteVotePlayer extends GUIHandler {
private VotingPluginMain plugin;
private String playerName;
public AdminVoteVotePlayer(VotingPluginMain plugin, CommandSender player, String playerName) {
super(player);
this.plugin = plugin;
this.playerName = playerName;
}
@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) {
EditGUI inv = new EditGUI("Trigger vote for " + playerName);
inv.requirePermission("VotingPlugin.Commands.AdminVote.Vote|VotingPlugin.Admin");
for (VoteSite site : plugin.getVoteSites()) {
inv.addButton(new BInventoryButton(site.getItem().setName(site.getKey())) {
@Override
public void onClick(ClickEvent clickEvent) {
VoteSite site = (VoteSite) getData("site");
PlayerVoteEvent voteEvent = new PlayerVoteEvent(site, playerName, site.getServiceSite(), false);
sendMessage(clickEvent.getPlayer(), "&cTriggering vote...");
if (voteEvent.getVoteSite() != null) {
if (!voteEvent.getVoteSite().isVaidServiceSite()) {
sendMessage(clickEvent.getPlayer(),
"&cPossible issue with service site, has the server gotten the vote from "
+ voteEvent.getServiceSite() + "?");
}
}
plugin.getServer().getPluginManager().callEvent(voteEvent);
if (plugin.isYmlError()) {
sendMessage(clickEvent.getPlayer(),
"&3Detected yml error, please check server log for details");
}
}
}.addData("site", site));
}
inv.openInventory(player);
}
@Override
public void open() {
open(GUIMethod.CHEST);
}
}
@@ -52,6 +52,10 @@ public class BungeeSettings extends YMLFile {
@ConfigDataString(path = "Server")
@Getter
private String server = "PleaseSet";
public String getServerNameStorage() {
return getServer().replace("-", "_");
}
@ConfigDataString(path = "SpigotServer.Host")
@Getter
@@ -87,7 +87,7 @@ public class Config extends YMLFile {
@ConfigDataInt(path = "ConvertAmount")
@Getter
private int convertAmount = 250;
private int convertAmount = 150;
@ConfigDataInt(path = "ConvertDelay", defaultValue = 30000)
@Getter
@@ -69,6 +69,9 @@ public class ConfigVoteSites extends YMLFile {
* @return the data
*/
public ConfigurationSection getData(String siteName) {
if (!getData().isConfigurationSection("VoteSites." + siteName)) {
plugin.getLogger().warning("VoteSites." + siteName + " is not a configuration section");
}
return getData().getConfigurationSection("VoteSites." + siteName);
}
@@ -235,11 +238,14 @@ public class ConfigVoteSites extends YMLFile {
for (int i = siteNames.size() - 1; i >= 0; i--) {
// plugin.getLogger().info(siteNames.get(i));
if (!getVoteSiteEnabled(siteNames.get(i)) || siteNames.get(i).equalsIgnoreCase("null")
if (!getData().isConfigurationSection("VoteSites." + siteNames.get(i))) {
plugin.getLogger()
.warning("VoteSites." + siteNames.get(i) + " is not a configuration section, please remove");
siteNames.remove(i);
} else if (siteNames.get(i).equalsIgnoreCase("null") || !getVoteSiteEnabled(siteNames.get(i))
|| !siteCheck(siteNames.get(i))) {
// plugin.getLogger().info("Removed: " + siteNames.get(i));
siteNames.remove(i);
}
}
@@ -36,6 +36,9 @@ public class SpecialRewardsConfig extends YMLFile {
@Getter
private String firstVoteRewardsPath = "FirstVote";
@Getter
private String firstVoteTodayRewardsPath = "FirstVoteToday";
/** The plugin. */
private VotingPluginMain plugin;
@@ -133,7 +136,7 @@ public class SpecialRewardsConfig extends YMLFile {
return TopVoter.Daily.toString();
}
}
return TopVoter.AllTime.toString();
return str;
}
public String getDailyAwardRewardsPath(String path) {
@@ -3,7 +3,7 @@ package com.bencodez.votingplugin.events;
import lombok.Getter;
public enum SpecialRewardType {
ALLSITE, CUMMULATIVE, FIRSTVOTE, MILESTONE, VOTESTREAK;
ALLSITE, CUMMULATIVE, FIRSTVOTE, MILESTONE, VOTESTREAK, FIRSTVOTETODAY;
@Getter
private int amount = -1;
@@ -10,6 +10,7 @@ import org.bukkit.event.player.PlayerQuitEvent;
import com.bencodez.advancedcore.api.user.UserStorage;
import com.bencodez.advancedcore.listeners.AdvancedCoreLoginEvent;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.bungee.BungeeMethod;
import com.bencodez.votingplugin.user.UserManager;
import com.bencodez.votingplugin.user.VotingPluginUser;
@@ -47,6 +48,11 @@ public class PlayerJoinEvent implements Listener {
}
user.loginRewards();
if (plugin.getBungeeSettings().isUseBungeecoord()
&& plugin.getBungeeHandler().getMethod().equals(BungeeMethod.PLUGINMESSAGING)) {
plugin.getPluginMessaging().sendPluginMessage("Login", user.getPlayerName(), user.getUUID());
}
}
/**
@@ -142,6 +142,7 @@ public class PlayerVoteListener implements Listener {
// check first vote rewards
plugin.getSpecialRewards().checkFirstVote(user, event.isForceBungee());
plugin.getSpecialRewards().checkFirstVoteToday(user, event.isForceBungee());
if (user.isReminded()) {
user.setReminded(false);
@@ -54,6 +54,10 @@ public class PlaceHolders {
VotingPluginUser user = UserManager.getInstance().getVotingPluginUser(p);
if (Bukkit.isPrimaryThread() || plugin.getConfigFile().isAlwaysWaitForCachePlaceholders()) {
user.setWaitForCache(false);
if (!user.isCached()) {
user.loadCache();
return "";
}
}
if (plugin.getConfigFile().isUsePrimaryAccountForPlaceholders() && user.hasPrimaryAccount()) {
user = UserManager.getInstance().getVotingPluginUser(user.getPrimaryAccount());
@@ -251,6 +251,7 @@ public class SignHandler {
}
} catch (Exception ex) {
plugin.debug("Failed to update sign at " + getLocation().toString());
VotingPluginMain.plugin.debug(ex);
}
}
@@ -123,6 +123,18 @@ public class SpecialRewards {
return false;
}
public boolean checkFirstVoteToday(VotingPluginUser user, boolean forceBungee) {
if (RewardHandler.getInstance().hasRewards(plugin.getSpecialRewardsConfig().getData(),
plugin.getSpecialRewardsConfig().getFirstVoteRewardsPath())) {
if (!user.hasGottenFirstVoteToday()) {
giveFirstVoteTodayRewards(user, user.isOnline(), forceBungee);
return true;
}
}
return false;
}
public boolean checkMilestone(VotingPluginUser user, BungeeMessageData bungeeMessageData, boolean forceBungee) {
int milestoneCount = user.getMilestoneCount();
if (bungeeMessageData != null) {
@@ -274,6 +286,18 @@ public class SpecialRewards {
new RewardOptions().setServer(forceBungee).setOnline(online));
}
public void giveFirstVoteTodayRewards(VotingPluginUser user, boolean online, boolean forceBungee) {
PlayerSpecialRewardEvent event = new PlayerSpecialRewardEvent(user, SpecialRewardType.FIRSTVOTETODAY);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
RewardHandler.getInstance().giveReward(user, plugin.getSpecialRewardsConfig().getData(),
plugin.getSpecialRewardsConfig().getFirstVoteTodayRewardsPath(),
new RewardOptions().setServer(forceBungee).setOnline(online));
}
public void giveMilestoneVoteReward(VotingPluginUser user, boolean online, int milestone, boolean forceBungee) {
PlayerSpecialRewardEvent event = new PlayerSpecialRewardEvent(user,
SpecialRewardType.MILESTONE.setAmount(milestone));
@@ -397,7 +397,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
public int getGottenAllSitesDay() {
if (plugin.getBungeeSettings().isUseBungeecoord()) {
return getData().getInt("AllSitesLast_" + plugin.getBungeeSettings().getServer(), 0, true);
return getData().getInt("AllSitesLast_" + plugin.getBungeeSettings().getServerNameStorage(), 0, true);
} else {
return getData().getInt("AllSitesLast", 0, true);
}
@@ -528,7 +528,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
public String getPointsPath() {
if (plugin.getBungeeSettings().isPerServerPoints()) {
return plugin.getBungeeSettings().getServer() + "_Points";
return plugin.getBungeeSettings().getServerNameStorage() + "_Points";
} else {
return "Points";
}
@@ -654,6 +654,14 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
return getTotal(TopVoter.AllTime) != 0;
}
public boolean hasGottenFirstVoteToday() {
if (plugin.getBungeeSettings().isUseBungeecoord()
&& plugin.getBungeeHandler().getMethod().equals(BungeeMethod.PLUGINMESSAGING)) {
return getTotal(TopVoter.Daily) > 1;
}
return getTotal(TopVoter.Daily) != 0;
}
/**
* Checks for gotten milestone.
*
@@ -821,7 +829,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
public void setGottenAllSitesDay(int day) {
if (plugin.getBungeeSettings().isUseBungeecoord()) {
getData().setInt("AllSitesLast_" + plugin.getBungeeSettings().getServer(), day);
getData().setInt("AllSitesLast_" + plugin.getBungeeSettings().getServerNameStorage(), day);
} else {
getData().setInt("AllSitesLast", day);
}