Compare commits

..
20 Commits
Author SHA1 Message Date
Ben12345rocks d96490e60b Update version number 2020-10-03 20:18:55 -04:00
Ben12345rocks 2198c5d4a0 Bug fix 2020-10-03 20:13:31 -04:00
Ben12345rocks 776179e41d Little improvements 2020-10-03 19:31:14 -04:00
Ben12345rocks 7bda38ff48 Little improvement 2020-10-03 07:56:09 -04:00
Ben12345rocks a23ead4d9c Little command improvement 2020-10-02 19:42:37 -04:00
Ben12345rocks 0f820738c6 Add safe guard for milestones with config option 2020-10-02 19:14:52 -04:00
Ben12345rocks 30d912114d Improvements to book GUI 2020-09-29 19:45:04 -04:00
Ben12345rocks 567288309c Bug fix 2020-09-29 17:22:12 -04:00
Ben12345rocks 7cd67f55f1 Little improvement 2020-09-29 16:44:52 -04:00
Ben12345rocks 59e7dcd8e8 Bug fix and little improvements 2020-09-28 19:21:54 -04:00
Ben12345rocks 90e55a0a7d Add command /av resyncmilestonesalreadygiven 2020-09-25 20:04:25 -04:00
Ben12345rocks a280d91c05 Add book GUI for /vote 2020-09-24 19:27:21 -04:00
Ben12345rocks feb54aeb9e Undo test commit 2020-09-20 13:24:06 -04:00
Ben12345rocks ee96bf500e Test commit 2020-09-20 13:23:26 -04:00
Ben12345rocks 91a266889f Code cleanup 2020-09-20 12:39:59 -04:00
Ben12345rocks 6051138613 Test change 2020-09-14 17:03:17 -04:00
Ben12345rocks d9780f9954 Add a command to force top voter awards 2020-09-13 14:23:31 -04:00
Ben12345rocks 453287dc1c Fix logging votes to file 2020-09-12 18:23:21 -04:00
Ben12345rocks 8f119862d0 Update to 1.16.3 2020-09-10 19:22:46 -04:00
Ben12345rocks df1fc4a734 Little change 2020-09-07 14:51:35 -04:00
26 changed files with 1031 additions and 751 deletions

No files matched your search

+18
View File
@@ -113,6 +113,8 @@ Commands:
# disable /vote reward commands
# Effective after restart
DisableVoteRewardGUIs: false
# Enable to use book GUI instead of normal GUI
VoteBookGUI: false
Format:
# CommandHandler help message
@@ -417,6 +419,17 @@ GUI:
Amount: 1
URLText: '%VoteUrl%'
VoteURLBookGUI:
Title: '&cVoteURL'
SiteName: '&c%name%'
CanVoteText: 'Click me'
CanVoteColor: 'GREEN'
AlreadyVotedText: 'Click me'
AlreadyVotedColor: 'RED'
Layout:
- '&c%Sitename%'
- '[UrlText]'
VoteRewardBackButton: false
# Customize /vote reward
# Show players what you get when you vote on each site
@@ -699,6 +712,11 @@ UseJavascriptPlaceholders: true
# Limit monthly votes to number of days of a month multipled by the number of sites
LimitMonthlyVotes: false
# This is an extra safe guard to prevent milestones
# from being executed more than once
# Shoudn't be needed, but enable if you have trouble with milestones
PreventRepeatMilestones: false
######################
# Debug
######################
+1 -1
View File
@@ -3,7 +3,7 @@ version: ${project.version}
main: com.Ben12345rocks.VotingPlugin.Main
description: Highly Customizable Voting Listener!
website: https://www.spigotmc.org/resources/votingplugin.15358/
author: Ben12345rocks
author: BenCodez
softdepend: [MVdWPlaceholders, Votifier, VotifierPlus, NuVotifier, CMI, Vault, PlaceholderAPI, ProtocolLib, MVdWPlaceholderAPI, AuthMe]
api-version: 1.13
commands:
+7 -2
View File
@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.Ben12345rocks</groupId>
<artifactId>VotingPlugin</artifactId>
<version>5.23.3</version>
<version>5.24</version>
<packaging>jar</packaging>
<name>VotingPlugin</name>
<properties>
@@ -259,7 +259,7 @@
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.16.2-R0.1-SNAPSHOT</version>
<version>1.16.3-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -320,5 +320,10 @@
<artifactId>ConfigUpdater</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>xyz.upperlevel.spigot.book</groupId>
<artifactId>spigot-book-api</artifactId>
<version>1.3</version>
</dependency>
</dependencies>
</project>
@@ -342,7 +342,7 @@ public class CommandLoader {
});
plugin.getAdminVoteCommand().add(new CommandHandler(new String[] { "ResyncMilestones" },
"VotingPlugin.Commands.AdminVote.SetResyncMilestones|" + adminPerm, "Resync Milestones") {
"VotingPlugin.Commands.AdminVote.ResyncMilestones|" + adminPerm, "Resync Milestones") {
@Override
public void execute(CommandSender sender, String[] args) {
@@ -356,6 +356,44 @@ public class CommandLoader {
}
});
plugin.getAdminVoteCommand()
.add(new CommandHandler(new String[] { "ResyncMilestonesAlreadyGiven" },
"VotingPlugin.Commands.AdminVote.ResyncMilestonesGiven|" + adminPerm,
"Resync Milestones already given") {
@Override
public void execute(CommandSender sender, String[] args) {
sendMessage(sender, "&cStarting...");
ArrayList<Integer> nums = new ArrayList<Integer>();
for (String str : SpecialRewardsConfig.getInstance().getMilestoneVotes()) {
try {
nums.add(Integer.parseInt(str));
} catch (Exception e) {
plugin.getLogger().warning("Failed to get number from " + str);
}
}
for (String uuid : UserManager.getInstance().getAllUUIDs()) {
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
int milestoneCount = user.getMilestoneCount();
for (int num : nums) {
if (milestoneCount >= num) {
if (!user.hasGottenMilestone(num)) {
sendMessage(sender,
"&cMilestone " + num + " for " + user.getPlayerName()
+ " not already given when it should be, Current AllTimeTotal: "
+ user.getTotal(TopVoter.AllTime) + ", Current MileStoneCount: "
+ user.getMilestoneCount());
user.setHasGotteMilestone(num, true);
}
}
}
}
sendMessage(sender, "&cFinished");
}
});
plugin.getAdminVoteCommand()
.add(new CommandHandler(new String[] { "ResetPoints" },
"VotingPlugin.Commands.AdminVote.ResetPoints|" + adminPerm, "Clears all points of all players",
@@ -1150,6 +1188,68 @@ public class CommandLoader {
}
});
for (final TopVoter top : TopVoter.valuesMinusAllTime()) {
plugin.getAdminVoteCommand()
.add(new CommandHandler(
new String[] { "User", "(player)", "ForceTopVoter", top.toString(), "(Number)" },
"VotingPlugin.Commands.AdminVote.ForceTopVoter." + top.toString() + "|" + adminPerm,
"Force a top voter reward") {
@Override
public void execute(CommandSender sender, String[] args) {
User user = UserManager.getInstance().getVotingPluginUser(args[1]);
int place = parseInt(args[4]);
switch (top) {
case Daily:
user.giveDailyTopVoterAward(place, args[4]);
break;
case Monthly:
user.giveMonthlyTopVoterAward(place, args[4]);
break;
case Weekly:
user.giveWeeklyTopVoterAward(place, args[4]);
break;
default:
break;
}
sendMessage(sender, "&cTopVoter " + top.toString() + " " + args[4] + " forced");
}
});
String text = "";
switch (top) {
case Daily:
text = "Day";
break;
case Monthly:
text = "Month";
break;
case Weekly:
text = "Week";
break;
default:
break;
}
final String str = text;
plugin.getAdminVoteCommand()
.add(new CommandHandler(new String[] { "User", "(player)", "ForceVoteStreak", str, "(Number)" },
"VotingPlugin.Commands.AdminVote.ForceVoteStreak|" + adminPerm,
"Force a votestreak reward for " + str) {
@Override
public void execute(CommandSender sender, String[] args) {
User user = UserManager.getInstance().getVotingPluginUser(args[1]);
SpecialRewards.getInstance().giveVoteStreakReward(user, user.isOnline(), str, args[4],
parseInt(args[4]));
sendMessage(sender, "&cVoteStreak " + str + " " + args[4] + " forced");
}
});
}
plugin.getAdminVoteCommand()
.add(new CommandHandler(new String[] { "User", "(player)", "ForceCummulative", "(Number)" },
"VotingPlugin.Commands.AdminVote.ForceCummulative|" + adminPerm, "Force a cummulative reward") {
@@ -1184,19 +1284,6 @@ public class CommandLoader {
}
});
plugin.getAdminVoteCommand()
.add(new CommandHandler(new String[] { "User", "(player)", "ForceVoteStreak", "(Text)", "(Number)" },
"VotingPlugin.Commands.AdminVote.ForceVoteStreak|" + adminPerm, "Force a votestreak reward") {
@Override
public void execute(CommandSender sender, String[] args) {
User user = UserManager.getInstance().getVotingPluginUser(args[1]);
SpecialRewards.getInstance().giveVoteStreakReward(user, user.isOnline(), args[3], args[4],
parseInt(args[4]));
sendMessage(sender, "&cVoteStreak " + args[3] + " " + args[4] + " forced");
}
});
plugin.getAdminVoteCommand()
.add(new CommandHandler(new String[] { "Placeholders", "(player)" },
"VotingPlugin.Commands.AdminVote.Placeholders.Players|" + adminPerm,
@@ -1265,6 +1352,7 @@ public class CommandLoader {
plugin.getCommand("vote" + arg)
.setTabCompleter(new AliasesTabCompleter().setCMDHandle(cmdHandle, false));
plugin.getCommand("vote" + arg).setPermission(cmdHandle.getPerm().split("|")[0]);
for (String str : plugin.getCommand("vote" + arg).getAliases()) {
commands.put(str, cmdHandle);
}
@@ -1286,6 +1374,7 @@ public class CommandLoader {
plugin.getCommand("adminvote" + arg)
.setTabCompleter(new AliasesTabCompleter().setCMDHandle(cmdHandle, true));
plugin.getCommand("adminvote" + arg).setPermission(cmdHandle.getPerm().split("|")[0]);
for (String str : plugin.getCommand("adminvote" + arg).getAliases()) {
commands.put(str, cmdHandle);
}
@@ -723,54 +723,6 @@ public class Commands {
return ArrayUtils.getInstance().convert(msg);
}
public long voteNextDurationTime(User user, VoteSite voteSite) {
long time = user.getTime(voteSite);
LocalDateTime now = TimeChecker.getInstance().getTime();
;
LocalDateTime lastVote = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault())
.plusHours(Main.plugin.getOptions().getTimeHourOffSet());
if (!voteSite.isVoteDelayDaily()) {
double votedelay = voteSite.getVoteDelay();
if (votedelay == 0 && voteSite.getVoteDelayMin() == 0) {
return 0;
} else {
LocalDateTime nextvote = lastVote.plusHours((long) votedelay)
.plusMinutes((long) voteSite.getVoteDelayMin());
if (time == 0 || now.isAfter(nextvote)) {
return 0;
} else {
Duration dur = Duration.between(now, nextvote);
return dur.getSeconds();
}
}
} else {
LocalDateTime offsetoclockyesterday = TimeChecker.getInstance().getTime().plusDays(-1).withHour(0)
.withMinute(0).plusHours((long) voteSite.getTimeOffSet());
LocalDateTime offsetoclocktoday = TimeChecker.getInstance().getTime().withHour(0).withMinute(0)
.plusHours((long) voteSite.getTimeOffSet());
LocalDateTime offsetoclocktomorrow = TimeChecker.getInstance().getTime().plusDays(1).withHour(0)
.withMinute(0).plusHours((long) voteSite.getTimeOffSet());
if (!now.isBefore(offsetoclocktoday)) {
if (!lastVote.isBefore(offsetoclocktoday)) {
Duration dur = Duration.between(now, offsetoclocktomorrow);
return dur.getSeconds();
} else {
return 0;
}
} else {
if (!lastVote.isBefore(offsetoclockyesterday)) {
Duration dur = Duration.between(now, offsetoclocktoday);
return dur.getSeconds();
} else {
return 0;
}
}
}
}
/**
* Vote command next info.
*
@@ -974,6 +926,54 @@ public class Commands {
return texts;
}
public long voteNextDurationTime(User user, VoteSite voteSite) {
long time = user.getTime(voteSite);
LocalDateTime now = TimeChecker.getInstance().getTime();
;
LocalDateTime lastVote = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault())
.plusHours(Main.plugin.getOptions().getTimeHourOffSet());
if (!voteSite.isVoteDelayDaily()) {
double votedelay = voteSite.getVoteDelay();
if (votedelay == 0 && voteSite.getVoteDelayMin() == 0) {
return 0;
} else {
LocalDateTime nextvote = lastVote.plusHours((long) votedelay)
.plusMinutes((long) voteSite.getVoteDelayMin());
if (time == 0 || now.isAfter(nextvote)) {
return 0;
} else {
Duration dur = Duration.between(now, nextvote);
return dur.getSeconds();
}
}
} else {
LocalDateTime offsetoclockyesterday = TimeChecker.getInstance().getTime().plusDays(-1).withHour(0)
.withMinute(0).plusHours((long) voteSite.getTimeOffSet());
LocalDateTime offsetoclocktoday = TimeChecker.getInstance().getTime().withHour(0).withMinute(0)
.plusHours((long) voteSite.getTimeOffSet());
LocalDateTime offsetoclocktomorrow = TimeChecker.getInstance().getTime().plusDays(1).withHour(0)
.withMinute(0).plusHours((long) voteSite.getTimeOffSet());
if (!now.isBefore(offsetoclocktoday)) {
if (!lastVote.isBefore(offsetoclocktoday)) {
Duration dur = Duration.between(now, offsetoclocktomorrow);
return dur.getSeconds();
} else {
return 0;
}
} else {
if (!lastVote.isBefore(offsetoclockyesterday)) {
Duration dur = Duration.between(now, offsetoclocktoday);
return dur.getSeconds();
} else {
return 0;
}
}
}
}
/**
* Vote today.
*
@@ -8,6 +8,7 @@ import java.util.Map.Entry;
import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
@@ -34,6 +35,10 @@ import com.Ben12345rocks.VotingPlugin.TopVoter.TopVoter;
import com.Ben12345rocks.VotingPlugin.TopVoter.TopVoterHandler;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import xyz.upperlevel.spigot.book.BookUtil;
public class PlayerGUIs {
static PlayerGUIs instance = new PlayerGUIs();
@@ -692,84 +697,163 @@ public class PlayerGUIs {
*/
public void openVoteURL(Player player) {
setSelectedPlayer(player, null);
BInventory inv = new BInventory(Config.getInstance().getGUIVoteURLName());
User user = UserManager.getInstance().getVotingPluginUser(player);
if (!Config.getInstance().isCommandsVoteBookGUI()) {
// normal GUI
BInventory inv = new BInventory(Config.getInstance().getGUIVoteURLName());
int count = 0;
if (Config.getInstance().getVoteURLViewAllUrlsButtonEnabled()) {
ItemBuilder builderAll = new ItemBuilder(
Config.getInstance().getVoteURLAlreadyVotedAllUrlsButtonItemSection());
if (Config.getInstance().isGuiVoteURLAllUrlsButtonrequireAllSitesVoted()) {
if (user.canVoteAny()) {
builderAll = new ItemBuilder(Config.getInstance().getVoteURLCanVoteAllUrlsButtonItemSection());
int count = 0;
if (Config.getInstance().getVoteURLViewAllUrlsButtonEnabled()) {
ItemBuilder builderAll = new ItemBuilder(
Config.getInstance().getVoteURLAlreadyVotedAllUrlsButtonItemSection());
if (Config.getInstance().isGuiVoteURLAllUrlsButtonrequireAllSitesVoted()) {
if (user.canVoteAny()) {
builderAll = new ItemBuilder(Config.getInstance().getVoteURLCanVoteAllUrlsButtonItemSection());
}
} else {
if (user.canVoteAll()) {
builderAll = new ItemBuilder(Config.getInstance().getVoteURLCanVoteAllUrlsButtonItemSection());
}
}
} else {
if (user.canVoteAll()) {
builderAll = new ItemBuilder(Config.getInstance().getVoteURLCanVoteAllUrlsButtonItemSection());
if (!builderAll.hasCustomDisplayName()) {
builderAll.setName("&4All Voting Sites");
}
}
if (!builderAll.hasCustomDisplayName()) {
builderAll.setName("&4All Voting Sites");
}
if (!builderAll.hasCustomLore()) {
builderAll.setLore("&cClick Me");
}
inv.addButton(count, new BInventoryButton(builderAll) {
@Override
public void onClick(ClickEvent event) {
User user = UserManager.getInstance().getVotingPluginUser(event.getPlayer());
user.sendMessage(Commands.getInstance().voteURLs(user, true));
if (!builderAll.hasCustomLore()) {
builderAll.setLore("&cClick Me");
}
});
count++;
}
inv.addButton(count, new BInventoryButton(builderAll) {
for (final VoteSite voteSite : plugin.getVoteSites()) {
ItemBuilder builder = new ItemBuilder(Config.getInstance().getVoteURLAlreadyVotedItemSection());
if (user.canVoteSite(voteSite)) {
builder = new ItemBuilder(Config.getInstance().getVoteURLCanVoteItemSection());
} else {
builder.addLoreLine(Config.getInstance().getVoteURLNextVote().replace("%Info%",
Commands.getInstance().voteCommandNextInfo(user, voteSite)));
@Override
public void onClick(ClickEvent event) {
User user = UserManager.getInstance().getVotingPluginUser(event.getPlayer());
user.sendMessage(Commands.getInstance().voteURLs(user, true));
}
});
count++;
}
builder.setName(Config.getInstance().getVoteURLSiteName().replace("%Name%", voteSite.getDisplayName()));
for (final VoteSite voteSite : plugin.getVoteSites()) {
ItemBuilder builder = new ItemBuilder(Config.getInstance().getVoteURLAlreadyVotedItemSection());
if (user.canVoteSite(voteSite)) {
builder = new ItemBuilder(Config.getInstance().getVoteURLCanVoteItemSection());
} else {
builder.addLoreLine(Config.getInstance().getVoteURLNextVote().replace("%Info%",
Commands.getInstance().voteCommandNextInfo(user, voteSite)));
}
inv.addButton(count, new BInventoryButton(builder) {
builder.setName(Config.getInstance().getVoteURLSiteName().replace("%Name%", voteSite.getDisplayName()));
@Override
public void onClick(ClickEvent event) {
Player player = event.getPlayer();
if (player != null) {
if (Config.getInstance().isCommandsVoteRewardFromVoteURL()
&& event.getClick().equals(ClickType.RIGHT)) {
voteReward(player, voteSite.getKey());
inv.addButton(count, new BInventoryButton(builder) {
@Override
public void onClick(ClickEvent event) {
Player player = event.getPlayer();
if (player != null) {
if (Config.getInstance().isCommandsVoteRewardFromVoteURL()
&& event.getClick().equals(ClickType.RIGHT)) {
voteReward(player, voteSite.getKey());
} else {
User user = UserManager.getInstance().getVotingPluginUser(player);
user.sendMessage(
StringParser.getInstance()
.replacePlaceHolder(
StringParser.getInstance()
.replacePlaceHolder(
StringParser.getInstance().replacePlaceHolder(
Config.getInstance()
.getGUIVoteURLURLText(),
"voteurl", voteSite.getVoteURL()),
"sitename", voteSite.getDisplayName()),
"player", player.getName()));
}
}
}
});
count++;
}
if (Config.getInstance().getGUIVoteURLBackButton()) {
inv.addButton(getBackButton());
}
inv.openInventory(player);
} else {
// book gui
ArrayList<BaseComponent[]> builder = new ArrayList<BaseComponent[]>();
BookUtil.PageBuilder currentPage = new BookUtil.PageBuilder();
int lines = 0;
for (final VoteSite site : plugin.getVoteSites()) {
try {
ArrayList<String> layout = Config.getInstance().getGUIVoteURLBookGUILayout();
lines += layout.size();
if (lines > 14) {
builder.add(currentPage.build());
currentPage = new BookUtil.PageBuilder();
lines = layout.size();
plugin.debug("New page");
}
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("Sitename", site.getDisplayName());
ChatColor color = ChatColor.valueOf(Config.getInstance().getGUIVoteURLBookGUIAlreadyVotedColor());
String text = Config.getInstance().getGUIVoteURLBookGUIAlreadyVotedText();
if (user.canVoteSite(site)) {
color = ChatColor.valueOf(Config.getInstance().getGUIVoteURLBookGUICanVoteColor());
text = Config.getInstance().getGUIVoteURLBookGUICanVoteText();
}
String url = ChatColor.stripColor(StringParser.getInstance()
.colorize(StringParser.getInstance().parseJson(site.getVoteURL(false)).toPlainText()));
if (!url.startsWith("http")) {
if (!url.startsWith("www.")) {
url = "https://www." + url;
} else {
User user = UserManager.getInstance().getVotingPluginUser(player);
user.sendMessage(StringParser.getInstance().replacePlaceHolder(StringParser.getInstance()
.replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
Config.getInstance().getGUIVoteURLURLText(), "voteurl",
voteSite.getVoteURL()), "sitename", voteSite.getDisplayName()),
"player", player.getName()));
url = "https://" + url;
}
}
for (String str : layout) {
str = StringParser.getInstance().replacePlaceHolder(str, placeholders);
if (StringParser.getInstance().containsIgnorecase(str, "[UrlText]")) {
String[] split = str.split("[UrlText]");
String s = split[0].substring(0, split[0].length() - 1);
BaseComponent comp = new TextComponent(StringParser.getInstance().colorize(s));
comp.addExtra(BookUtil.TextBuilder.of(text).color(color)
.onClick(BookUtil.ClickAction.openUrl(url))
.onHover(BookUtil.HoverAction.showText(url)).build());
comp.addExtra(StringParser.getInstance().colorize(str.substring(s.length() + 9)));
currentPage.add(comp);
} else {
currentPage.add(StringParser.getInstance().colorize(str));
}
currentPage.newLine();
}
} catch (Exception e) {
e.printStackTrace();
}
}
builder.add(currentPage.build());
ItemStack book = BookUtil.writtenBook().author(player.getName())
.title(StringParser.getInstance().colorize(Config.getInstance().getGUIVoteURLBookGUITitle()))
.pages(builder).build();
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
BookUtil.openPlayer(player, book);
}
});
count++;
}
if (Config.getInstance().getGUIVoteURLBackButton()) {
inv.addButton(getBackButton());
}
inv.openInventory(player);
}
public void openVoteURL(Player player, String voteSite) {
@@ -27,19 +27,6 @@ public class BungeeSettings extends YMLFile {
return instance;
}
public BungeeSettings() {
super(new File(Main.plugin.getDataFolder(), "BungeeSettings.yml"));
}
public void loadValues() {
new AnnotationHandler().load(getData(), this);
}
@Override
public void onFileCreation() {
plugin.saveResource("BungeeSettings.yml", true);
}
@ConfigDataBoolean(path = "UseBungeecord", secondPath = "UseBungeecoord")
@Getter
private boolean useBungeecoord = false;
@@ -79,4 +66,17 @@ public class BungeeSettings extends YMLFile {
@ConfigDataInt(path = "SpigotServer.Port")
@Getter
private int spigotServerPort = 1298;
public BungeeSettings() {
super(new File(Main.plugin.getDataFolder(), "BungeeSettings.yml"));
}
public void loadValues() {
new AnnotationHandler().load(getData(), this);
}
@Override
public void onFileCreation() {
plugin.saveResource("BungeeSettings.yml", true);
}
}
@@ -13,6 +13,7 @@ import com.Ben12345rocks.AdvancedCore.Util.Annotation.ConfigDataConfigurationSec
import com.Ben12345rocks.AdvancedCore.Util.Annotation.ConfigDataInt;
import com.Ben12345rocks.AdvancedCore.Util.Annotation.ConfigDataListString;
import com.Ben12345rocks.AdvancedCore.Util.Annotation.ConfigDataString;
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
import com.Ben12345rocks.AdvancedCore.YML.YMLFile;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.TopVoter.TopVoter;
@@ -316,15 +317,23 @@ public class Config extends YMLFile {
@Getter
private boolean allowUnJoinedCheckServer = true;
@ConfigDataBoolean(path = "Commands.VoteBookGUI")
@Getter
private boolean commandsVoteBookGUI = false;
@ConfigDataBoolean(path = "UseJavascriptPlaceholders")
@Getter
private boolean useJavascriptPlaceholders = true;
@ConfigDataBoolean(path = "UseBungeecord", secondPath = "UseBungeecoord")
@Getter
@Deprecated
private boolean useBungeecoord = false;
@ConfigDataBoolean(path = "PreventRepeatMilestones")
@Getter
private boolean preventRepeatMilestones = false;
@ConfigDataListString(path = "DisabledCommands")
@Getter
private ArrayList<String> disabledCommands = new ArrayList<String>();
@@ -333,6 +342,35 @@ public class Config extends YMLFile {
@Getter
private ArrayList<String> votingBroadcastBlacklist = new ArrayList<String>();
@ConfigDataListString(path = "GUI.VoteURLBookGUI.Layout")
@Getter
private ArrayList<String> GUIVoteURLBookGUILayout = ArrayUtils.getInstance()
.convert(new String[] { "&c%Sitename%", "[UrlText]" });
@ConfigDataString(path = "GUI.VoteURLBookGUI.Title")
@Getter
private String GUIVoteURLBookGUITitle = "&cVoteURL";
@ConfigDataString(path = "GUI.VoteURLBookGUI.SiteName")
@Getter
private String GUIVoteURLBookGUISiteName = "&c%name%";
@ConfigDataString(path = "GUI.VoteURLBookGUI.CanVoteText")
@Getter
private String GUIVoteURLBookGUICanVoteText = "Click me";
@ConfigDataString(path = "GUI.VoteURLBookGUI.AlreadyVotedText")
@Getter
private String GUIVoteURLBookGUIAlreadyVotedText = "Click me";
@ConfigDataString(path = "GUI.VoteURLBookGUI.CanVoteColor")
@Getter
private String GUIVoteURLBookGUICanVoteColor = "GREEN";
@ConfigDataString(path = "GUI.VoteURLBookGUI.AlreadyVotedColor")
@Getter
private String GUIVoteURLBookGUIAlreadyVotedColor = "RED";
/**
* Instantiates a new config.
*/
@@ -1129,20 +1167,20 @@ public class Config extends YMLFile {
return getData().getBoolean("Shop." + shop + ".NotBuyable", false);
}
public boolean getVoteShopResetDaily(String shop) {
return getData().getBoolean("Shop." + shop + ".Reset.Daily", false);
public String getVoteShopPermission(String ident) {
return getData().getString("Shop." + ident + ".Permission", "");
}
public boolean getVoteShopResetWeekly(String shop) {
return getData().getBoolean("Shop." + shop + ".Reset.Weekly", false);
public boolean getVoteShopResetDaily(String shop) {
return getData().getBoolean("Shop." + shop + ".Reset.Daily", false);
}
public boolean getVoteShopResetMonthly(String shop) {
return getData().getBoolean("Shop." + shop + ".Reset.Monthly", false);
}
public String getVoteShopPermission(String ident) {
return getData().getString("Shop." + ident + ".Permission", "");
public boolean getVoteShopResetWeekly(String shop) {
return getData().getBoolean("Shop." + shop + ".Reset.Weekly", false);
}
/**
@@ -137,6 +137,10 @@ public class ConfigVoteSites extends YMLFile {
return getData(siteName).getString("ServiceSite");
}
public int getTimeOffSet(String siteName) {
return getData(siteName).getInt("TimeOffSet", 0);
}
/**
* Gets the vote delay.
*
@@ -148,10 +152,6 @@ public class ConfigVoteSites extends YMLFile {
return getData(siteName).getInt("VoteDelay");
}
public int getTimeOffSet(String siteName) {
return getData(siteName).getInt("TimeOffSet", 0);
}
public int getVoteDelayMin(String siteName) {
return getData(siteName).getInt("VoteDelayMin", 0);
}
@@ -29,26 +29,150 @@ public class SpecialRewardsConfig extends YMLFile {
return instance;
}
@ConfigDataBoolean(path = "EnableWeeklyAwards")
@Getter
private boolean enableWeeklyAwards = false;
@ConfigDataBoolean(path = "EnableDailyRewards")
@Getter
private boolean enableDailyRewards = false;
@ConfigDataBoolean(path = "EnableMonthlyAwards")
@Getter
private boolean enableMonthlyAwards = false;
@Getter
private String anySiteRewardsPath = "AnySiteRewards";
@ConfigDataDouble(path = "VoteStreak.Requirement.Day")
@Getter
private double voteStreakRequirementDay = 50;
@ConfigDataDouble(path = "VoteStreak.Requirement.Week")
@Getter
private double voteStreakRequirementWeek = 50;
@ConfigDataDouble(path = "VoteStreak.Requirement.Month")
@Getter
private double voteStreakRequirementMonth = 50;
@ConfigDataBoolean(path = "VoteStreak.Requirement.UsePercentage")
@Getter
private boolean voteStreakRequirementUsePercentage = false;
@ConfigDataBoolean(path = "VoteParty.ResetExtraVotesMonthly")
@Getter
private boolean votePartyResetExtraVotesMonthly = false;
@Getter
private String allSitesRewardPath = "AllSites";
@Getter
private String votePartyRewardsPath = "VoteParty.Rewards";
@Getter
private String firstVoteRewardsPath = "FirstVote";
public SpecialRewardsConfig() {
super(new File(Main.plugin.getDataFolder(), "SpecialRewards.yml"));
}
public void loadValues() {
new AnnotationHandler().load(getData(), this);
public boolean getCumulativeRewardEnabled(int cumulative) {
return getData().getBoolean("Cumulative." + cumulative + ".Enabled");
}
public String getWeeklyAwardRewardsPath(String path) {
return "WeeklyAwards." + path + ".Rewards";
public String getCumulativeRewardsPath(int cumulative) {
return "Cumulative." + cumulative + ".Rewards";
}
/**
* Gets the weekly possible reward places.
* Gets the cumulative votes.
*
* @return the weekly possible reward places
* @return the cumulative votes
*/
public Set<String> getWeeklyPossibleRewardPlaces() {
public Set<String> getCumulativeVotes() {
try {
return getData().getConfigurationSection("WeeklyAwards").getKeys(false);
Set<String> set = getData().getConfigurationSection("Cumulative").getKeys(false);
if (set != null) {
return set;
}
return new HashSet<String>();
} catch (Exception ex) {
return new HashSet<String>();
}
}
/**
* Gets the cumulative votes in same day.
*
* @param cumulative
* the cumulative
* @return the cumulative votes in same day
*/
public boolean getCumulativeVotesInSameDay(int cumulative) {
return getData().getBoolean("Cumulative." + cumulative + ".VotesInSameDay");
}
public boolean getCumulativeVotesInSameMonth(int cumulative) {
return getData().getBoolean("Cumulative." + cumulative + ".VotesInSameMonth");
}
public boolean getCumulativeVotesInSameWeek(int cumulative) {
return getData().getBoolean("Cumulative." + cumulative + ".VotesInSameWeek");
}
public String getDailyAwardRewardsPath(String path) {
return "DailyAwards." + path + ".Rewards";
}
/**
* Gets the daily possible reward places.
*
* @return the daily possible reward places
*/
public Set<String> getDailyPossibleRewardPlaces() {
try {
return getData().getConfigurationSection("DailyAwards").getKeys(false);
} catch (Exception ex) {
return new HashSet<String>();
}
}
/**
* Gets the milestone reward enabled.
*
* @param milestones
* the milestones
* @return the milestone reward enabled
*/
public boolean getMilestoneRewardEnabled(int milestones) {
return getData().getBoolean("MileStones." + milestones + ".Enabled");
}
/**
* Gets the milestone rewards.
*
* @param milestones
* the milestones
* @return the milestone rewards
*/
public String getMilestoneRewardsPath(int milestones) {
return "MileStones." + milestones + ".Rewards";
}
/**
* Gets the milestone votes.
*
* @return the milestone votes
*/
public Set<String> getMilestoneVotes() {
try {
Set<String> set = getData().getConfigurationSection("MileStones").getKeys(false);
if (set != null) {
return set;
}
return new HashSet<String>();
} catch (Exception ex) {
return new HashSet<String>();
}
@@ -71,47 +195,8 @@ public class SpecialRewardsConfig extends YMLFile {
}
}
public String getDailyAwardRewardsPath(String path) {
return "DailyAwards." + path + ".Rewards";
}
/**
* Gets the daily possible reward places.
*
* @return the daily possible reward places
*/
public Set<String> getDailyPossibleRewardPlaces() {
try {
return getData().getConfigurationSection("DailyAwards").getKeys(false);
} catch (Exception ex) {
return new HashSet<String>();
}
}
@ConfigDataBoolean(path = "EnableWeeklyAwards")
@Getter
private boolean enableWeeklyAwards = false;
@ConfigDataBoolean(path = "EnableDailyRewards")
@Getter
private boolean enableDailyRewards = false;
@ConfigDataBoolean(path = "EnableMonthlyAwards")
@Getter
private boolean enableMonthlyAwards = false;
@Override
public void onFileCreation() {
plugin.saveResource("SpecialRewards.yml", true);
}
public boolean getCumulativeRewardEnabled(int cumulative) {
return getData().getBoolean("Cumulative." + cumulative + ".Enabled");
}
public String getCumulativeRewardsPath(int cumulative) {
return "Cumulative." + cumulative + ".Rewards";
public boolean getResetMilestonesMonthly() {
return getData().getBoolean("ResetMilestonesMonthly");
}
public String getVotePartyBroadcast() {
@@ -170,25 +255,6 @@ public class SpecialRewardsConfig extends YMLFile {
return getData().getInt("VoteParty.VotesRequired");
}
@Getter
private String anySiteRewardsPath = "AnySiteRewards";
@ConfigDataDouble(path = "VoteStreak.Requirement.Day")
@Getter
private double voteStreakRequirementDay = 50;
@ConfigDataDouble(path = "VoteStreak.Requirement.Week")
@Getter
private double voteStreakRequirementWeek = 50;
@ConfigDataDouble(path = "VoteStreak.Requirement.Month")
@Getter
private double voteStreakRequirementMonth = 50;
@ConfigDataBoolean(path = "VoteStreak.Requirement.UsePercentage")
@Getter
private boolean voteStreakRequirementUsePercentage = false;
public boolean getVoteStreakRewardEnabled(String type, String s) {
return getData().getBoolean("VoteStreak." + type + "." + s + ".Enabled");
}
@@ -197,10 +263,6 @@ public class SpecialRewardsConfig extends YMLFile {
return "VoteStreak." + type + "." + string + ".Rewards";
}
public boolean getResetMilestonesMonthly() {
return getData().getBoolean("ResetMilestonesMonthly");
}
public Set<String> getVoteStreakVotes(String type) {
try {
Set<String> set = getData().getConfigurationSection("VoteStreak." + type).getKeys(false);
@@ -213,91 +275,29 @@ public class SpecialRewardsConfig extends YMLFile {
}
}
public String getWeeklyAwardRewardsPath(String path) {
return "WeeklyAwards." + path + ".Rewards";
}
/**
* Gets the cumulative votes.
* Gets the weekly possible reward places.
*
* @return the cumulative votes
* @return the weekly possible reward places
*/
public Set<String> getCumulativeVotes() {
public Set<String> getWeeklyPossibleRewardPlaces() {
try {
Set<String> set = getData().getConfigurationSection("Cumulative").getKeys(false);
if (set != null) {
return set;
}
return new HashSet<String>();
return getData().getConfigurationSection("WeeklyAwards").getKeys(false);
} catch (Exception ex) {
return new HashSet<String>();
}
}
/**
* Gets the milestone reward enabled.
*
* @param milestones
* the milestones
* @return the milestone reward enabled
*/
public boolean getMilestoneRewardEnabled(int milestones) {
return getData().getBoolean("MileStones." + milestones + ".Enabled");
public void loadValues() {
new AnnotationHandler().load(getData(), this);
}
/**
* Gets the milestone rewards.
*
* @param milestones
* the milestones
* @return the milestone rewards
*/
public String getMilestoneRewardsPath(int milestones) {
return "MileStones." + milestones + ".Rewards";
@Override
public void onFileCreation() {
plugin.saveResource("SpecialRewards.yml", true);
}
@ConfigDataBoolean(path = "VoteParty.ResetExtraVotesMonthly")
@Getter
private boolean votePartyResetExtraVotesMonthly = false;
/**
* Gets the milestone votes.
*
* @return the milestone votes
*/
public Set<String> getMilestoneVotes() {
try {
Set<String> set = getData().getConfigurationSection("MileStones").getKeys(false);
if (set != null) {
return set;
}
return new HashSet<String>();
} catch (Exception ex) {
return new HashSet<String>();
}
}
/**
* Gets the cumulative votes in same day.
*
* @param cumulative
* the cumulative
* @return the cumulative votes in same day
*/
public boolean getCumulativeVotesInSameDay(int cumulative) {
return getData().getBoolean("Cumulative." + cumulative + ".VotesInSameDay");
}
public boolean getCumulativeVotesInSameWeek(int cumulative) {
return getData().getBoolean("Cumulative." + cumulative + ".VotesInSameWeek");
}
public boolean getCumulativeVotesInSameMonth(int cumulative) {
return getData().getBoolean("Cumulative." + cumulative + ".VotesInSameMonth");
}
@Getter
private String allSitesRewardPath = "AllSites";
@Getter
private String votePartyRewardsPath = "VoteParty.Rewards";
@Getter
private String firstVoteRewardsPath = "FirstVote";
}
@@ -127,22 +127,6 @@ public class ServerData {
getData().getDouble("Signs." + sign + ".Z"));
}
/**
* Gets the sign location.
*
* @param sign
* the sign
* @return the sign location
*/
public Location getSignSkullLocation(String sign) {
if (getData().getString("Signs." + sign + ".Skull.World", "").isEmpty()) {
return null;
}
return new Location(Bukkit.getWorld(getData().getString("Signs." + sign + ".Skull.World")),
getData().getDouble("Signs." + sign + ".Skull.X"), getData().getDouble("Signs." + sign + ".Skull.Y"),
getData().getDouble("Signs." + sign + ".Skull.Z"));
}
/**
* Gets the sign position.
*
@@ -167,6 +151,22 @@ public class ServerData {
}
}
/**
* Gets the sign location.
*
* @param sign
* the sign
* @return the sign location
*/
public Location getSignSkullLocation(String sign) {
if (getData().getString("Signs." + sign + ".Skull.World", "").isEmpty()) {
return null;
}
return new Location(Bukkit.getWorld(getData().getString("Signs." + sign + ".Skull.World")),
getData().getDouble("Signs." + sign + ".Skull.X"), getData().getDouble("Signs." + sign + ".Skull.Y"),
getData().getDouble("Signs." + sign + ".Skull.Z"));
}
public int getVotePartyExtraRequired() {
return getData().getInt("VotePartyExtraRequired", 0);
}
@@ -54,6 +54,14 @@ public class PlayerVoteEvent extends Event {
@Setter
private long time;
@Getter
@Setter
private boolean bungee = false;
@Getter
@Setter
private boolean forceBungee = false;
public PlayerVoteEvent(VoteSite voteSite, String voteUsername, String serviceSite, boolean realVote) {
super(true);
this.player = voteUsername;
@@ -71,12 +79,4 @@ public class PlayerVoteEvent extends Event {
return handlers;
}
@Getter
@Setter
private boolean bungee = false;
@Getter
@Setter
private boolean forceBungee = false;
}
@@ -1,5 +1,7 @@
package com.Ben12345rocks.VotingPlugin.Listeners;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList;
import org.bukkit.Bukkit;
@@ -104,7 +106,8 @@ public class PlayerVoteListener implements Listener {
VoteParty.getInstance().vote(user, event.isRealVote());
// broadcast vote if enabled in config
if (config.isBroadcastVotesEnabled() && (BungeeSettings.getInstance().isBungeeBroadcast() || !event.isBungee())) {
if (config.isBroadcastVotesEnabled()
&& (BungeeSettings.getInstance().isBungeeBroadcast() || !event.isBungee())) {
if (!Config.getInstance().getFormatBroadcastWhenOnline() || user.isOnline()) {
voteSite.broadcastVote(user);
}
@@ -118,6 +121,16 @@ public class PlayerVoteListener implements Listener {
}
user.setLastVoteCoolDownCheck(false, voteSite);
// try logging to file
if (Config.getInstance().isLogVotesToFile()) {
try {
Main.plugin.logVote(LocalDateTime.now().atZone(ZoneId.systemDefault()).toLocalDateTime(),
playerName, voteSite.getKey());
} catch (Exception e) {
e.printStackTrace();
}
}
// check first vote rewards
SpecialRewards.getInstance().checkFirstVote(user);
@@ -168,7 +181,6 @@ public class PlayerVoteListener implements Listener {
}
}, 40);
}
}
}
@@ -2,11 +2,10 @@ package com.Ben12345rocks.VotingPlugin;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
@@ -149,6 +148,15 @@ public class Main extends AdvancedCorePlugin {
@Getter
private BungeeSettings bungeeSettings;
public void basicBungeeUpdate() {
for (Player player : Bukkit.getOnlinePlayers()) {
User user = UserManager.getInstance().getVotingPluginUser(player);
user.clearCache();
user.offVote();
user.checkOfflineRewards();
}
}
/**
* Check votifier.
*/
@@ -301,15 +309,6 @@ public class Main extends AdvancedCorePlugin {
return VoteParty.getInstance();
}
public boolean isVoteSite(String voteSite) {
for (VoteSite site : getVoteSites()) {
if (site.getKey().equalsIgnoreCase(voteSite)) {
return true;
}
}
return false;
}
/**
* Gets the vote site.
*
@@ -405,6 +404,15 @@ public class Main extends AdvancedCorePlugin {
return false;
}
public boolean isVoteSite(String voteSite) {
for (VoteSite site : getVoteSites()) {
if (site.getKey().equalsIgnoreCase(voteSite)) {
return true;
}
}
return false;
}
private void loadTimer() {
Bukkit.getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
@@ -477,9 +485,10 @@ public class Main extends AdvancedCorePlugin {
* @param voteSite
* the vote site
*/
public void logVote(Date date, String playerName, String voteSite) {
public void logVote(LocalDateTime date, String playerName, String voteSite) {
if (Config.getInstance().isLogVotesToFile()) {
String str = new SimpleDateFormat("EEE, d MMM yyyy HH:mm").format(date);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
String str = formatter.format(date);
voteLog.logToFile(str + ": " + playerName + " voted on " + voteSite);
}
}
@@ -878,7 +887,6 @@ public class Main extends AdvancedCorePlugin {
getMysql().alterColumnType("MonthVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("Points", "INT DEFAULT '0'");
getMysql().alterColumnType("HighestDailyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("MileStoneTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("AllTimeTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("HighestMonthlyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("MilestoneCount", "INT DEFAULT '0'");
@@ -1217,15 +1225,6 @@ public class Main extends AdvancedCorePlugin {
}
}
public void basicBungeeUpdate() {
for (Player player : Bukkit.getOnlinePlayers()) {
User user = UserManager.getInstance().getVotingPluginUser(player);
user.clearCache();
user.offVote();
user.checkOfflineRewards();
}
}
public void updateAdvancedCoreHook() {
getJavascriptEngine().put("VotingPlugin", this);
allowDownloadingFromSpigot(15358);
@@ -177,6 +177,62 @@ public class User extends com.Ben12345rocks.AdvancedCore.UserManager.User {
setWeekVoteStreak(getWeekVoteStreak() + 1);
}
public void bungeeVote(String service) {
if (BungeeSettings.getInstance().isUseBungeecoord()) {
Main.plugin.debug("Bungee vote for " + getPlayerName() + " on " + service);
PlayerVoteEvent voteEvent = new PlayerVoteEvent(plugin.getVoteSite(service), getPlayerName(), service,
true);
voteEvent.setBungee(true);
voteEvent.setForceBungee(true);
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
plugin.getServer().getPluginManager().callEvent(voteEvent);
}
});
}
}
public void bungeeVoteOnline(String service) {
if (BungeeSettings.getInstance().isUseBungeecoord()) {
Main.plugin.debug("Bungee online vote for " + getPlayerName() + " on " + service);
PlayerVoteEvent voteEvent = new PlayerVoteEvent(plugin.getVoteSite(service), getPlayerName(), service,
true);
voteEvent.setBungee(true);
voteEvent.setForceBungee(false);
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
plugin.getServer().getPluginManager().callEvent(voteEvent);
}
});
}
}
public void bungeeVotePluginMessaging(String service, long time) {
if (BungeeSettings.getInstance().isUseBungeecoord()) {
Main.plugin.debug("Pluginmessaging vote for " + getPlayerName() + " on " + service);
PlayerVoteEvent voteEvent = new PlayerVoteEvent(plugin.getVoteSite(service), getPlayerName(), service,
true);
voteEvent.setBungee(true);
voteEvent.setForceBungee(true);
voteEvent.setTime(time);
voteEvent.setAddTotals(false);
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
plugin.getServer().getPluginManager().callEvent(voteEvent);
}
});
}
}
/**
* Can vote all.
*
@@ -202,16 +258,6 @@ public class User extends com.Ben12345rocks.AdvancedCore.UserManager.User {
return false;
}
public int getSitesVotedOn() {
int amount = 0;
for (VoteSite site : plugin.getVoteSites()) {
if (!canVoteSite(site)) {
amount++;
}
}
return amount;
}
/**
* Can vote site.
*
@@ -491,6 +537,16 @@ public class User extends com.Ben12345rocks.AdvancedCore.UserManager.User {
return getUserData().getInt("Points");
}
public int getSitesVotedOn() {
int amount = 0;
for (VoteSite site : plugin.getVoteSites()) {
if (!canVoteSite(site)) {
amount++;
}
}
return amount;
}
/**
* Gets the time.
*
@@ -611,62 +667,6 @@ public class User extends com.Ben12345rocks.AdvancedCore.UserManager.User {
.setOnline(isOnline()).send(this);
}
public void bungeeVotePluginMessaging(String service, long time) {
if (BungeeSettings.getInstance().isUseBungeecoord()) {
Main.plugin.debug("Pluginmessaging vote for " + getPlayerName() + " on " + service);
PlayerVoteEvent voteEvent = new PlayerVoteEvent(plugin.getVoteSite(service), getPlayerName(), service,
true);
voteEvent.setBungee(true);
voteEvent.setForceBungee(true);
voteEvent.setTime(time);
voteEvent.setAddTotals(false);
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
plugin.getServer().getPluginManager().callEvent(voteEvent);
}
});
}
}
public void bungeeVote(String service) {
if (BungeeSettings.getInstance().isUseBungeecoord()) {
Main.plugin.debug("Bungee vote for " + getPlayerName() + " on " + service);
PlayerVoteEvent voteEvent = new PlayerVoteEvent(plugin.getVoteSite(service), getPlayerName(), service,
true);
voteEvent.setBungee(true);
voteEvent.setForceBungee(true);
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
plugin.getServer().getPluginManager().callEvent(voteEvent);
}
});
}
}
public void bungeeVoteOnline(String service) {
if (BungeeSettings.getInstance().isUseBungeecoord()) {
Main.plugin.debug("Bungee online vote for " + getPlayerName() + " on " + service);
PlayerVoteEvent voteEvent = new PlayerVoteEvent(plugin.getVoteSite(service), getPlayerName(), service,
true);
voteEvent.setBungee(true);
voteEvent.setForceBungee(false);
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
plugin.getServer().getPluginManager().callEvent(voteEvent);
}
});
}
}
/**
* Checks for gotten first vote.
*
@@ -924,7 +924,7 @@ public class User extends com.Ben12345rocks.AdvancedCore.UserManager.User {
* the new points
*/
public void setPoints(int value) {
getUserData().setInt("Points", value);
getUserData().setInt("Points", value, !BungeeSettings.getInstance().isUseBungeecoord());
}
public void setReminded(boolean reminded) {
@@ -45,21 +45,6 @@ public class VoteSite {
@Setter
private String voteURL;
public String getVoteURL(boolean json) {
if (!Config.getInstance().isFormatCommandsVoteForceLinks() || !json) {
return voteURL;
} else {
if (!voteURL.startsWith("http")) {
return "[Text=\"" + voteURL + "\",url=\"http://" + voteURL + "\"]";
}
return "[Text=\"" + voteURL + "\",url=\"" + voteURL + "\"]";
}
}
public String getVoteURL() {
return getVoteURL(true);
}
@Getter
@Setter
private String serviceSite;
@@ -203,6 +188,21 @@ public class VoteSite {
return configVoteSites.getData(key);
}
public String getVoteURL() {
return getVoteURL(true);
}
public String getVoteURL(boolean json) {
if (!Config.getInstance().isFormatCommandsVoteForceLinks() || !json) {
return voteURL;
} else {
if (!voteURL.startsWith("http")) {
return "[Text=\"" + voteURL + "\",url=\"http://" + voteURL + "\"]";
}
return "[Text=\"" + voteURL + "\",url=\"" + voteURL + "\"]";
}
}
public void giveRewards(User user, boolean online, boolean bungee) {
new RewardBuilder(configVoteSites.getData(), configVoteSites.getRewardsPath(key)).setOnline(online)
.withPlaceHolder("ServiceSite", getServiceSite()).withPlaceHolder("SiteName", getDisplayName())
@@ -87,10 +87,6 @@ public class SignHandler {
return false;
}
public boolean isSkullSet() {
return skullLocation != null;
}
/**
* Check skulls.
*/
@@ -152,6 +148,10 @@ public class SignHandler {
return loc.equals(getLocation());
}
public boolean isSkullSet() {
return skullLocation != null;
}
/**
* Removes the sign.
*/
@@ -1,5 +1,6 @@
package com.Ben12345rocks.VotingPlugin.SpecialRewards;
import java.util.ArrayList;
import java.util.Set;
import org.bukkit.Bukkit;
@@ -147,6 +148,31 @@ public class SpecialRewards {
* @return true, if successful
*/
public boolean checkMilestone(User user) {
if (Config.getInstance().isPreventRepeatMilestones()) {
ArrayList<Integer> nums = new ArrayList<Integer>();
for (String str : SpecialRewardsConfig.getInstance().getMilestoneVotes()) {
try {
nums.add(Integer.parseInt(str));
} catch (Exception e) {
plugin.getLogger().warning("Failed to get number from " + str);
}
}
int milestoneCount = user.getMilestoneCount();
for (int num : nums) {
if (milestoneCount >= num) {
if (!user.hasGottenMilestone(num)) {
plugin.getLogger().info("Milestone " + num + " for " + user.getPlayerName()
+ " not already given when it should be, Current AllTimeTotal: "
+ user.getTotal(TopVoter.AllTime) + ", Current MileStoneCount: "
+ user.getMilestoneCount());
user.setHasGotteMilestone(num, true);
}
}
}
}
boolean gotMilestone = false;
Set<String> votes = SpecialRewardsConfig.getInstance().getMilestoneVotes();
for (String vote : votes) {
@@ -15,6 +15,10 @@ public enum TopVoter {
return AllTime;
}
public static TopVoter[] valuesMinusAllTime() {
return new TopVoter[] { TopVoter.Daily, TopVoter.Weekly, TopVoter.Monthly };
}
public static TopVoter getTopVoter(String str) {
for (TopVoter value : values()) {
if (value.toString().equalsIgnoreCase(str)) {
@@ -279,7 +279,7 @@ public class PlaceHolders {
}
times.put(t, site);
}
for (Entry<Long,VoteSite> entry : times.entrySet()) {
for (Entry<Long, VoteSite> entry : times.entrySet()) {
if (entry.getKey().longValue() == smallest) {
return Commands.getInstance().voteCommandNextInfo(user, entry.getValue());
}
@@ -184,9 +184,11 @@ public class VoteParty implements Listener {
}
public void giveReward(User user, boolean online) {
new RewardBuilder(SpecialRewardsConfig.getInstance().getData(), SpecialRewardsConfig.getInstance().getVotePartyRewardsPath())
.setOnline(online)
.withPlaceHolder("VotesRequired", "" + SpecialRewardsConfig.getInstance().getVotePartyVotesRequired()).send(user);
new RewardBuilder(SpecialRewardsConfig.getInstance().getData(),
SpecialRewardsConfig.getInstance().getVotePartyRewardsPath()).setOnline(online)
.withPlaceHolder("VotesRequired",
"" + SpecialRewardsConfig.getInstance().getVotePartyVotesRequired())
.send(user);
}
/**
@@ -65,31 +65,21 @@ public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listene
private VoteCache voteCacheFile;
@EventHandler
public void onPluginMessage(PluginMessageEvent ev) {
if (!ev.getTag().equals("VotingPlugin:VotingPlugin".toLowerCase())) {
return;
}
ByteArrayInputStream instream = new ByteArrayInputStream(ev.getData());
DataInputStream in = new DataInputStream(instream);
try {
ByteArrayOutputStream outstream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(outstream);
String subchannel = in.readUTF();
int size = in.readInt();
out.writeUTF(subchannel);
out.writeInt(size);
for (int i = 0; i < size; i++) {
out.writeUTF(in.readUTF());
}
for (String send : getProxy().getServers().keySet()) {
if (getProxy().getServers().get(send).getPlayers().size() > 0) {
getProxy().getServers().get(send).sendData("VotingPlugin:VotingPlugin".toLowerCase(),
outstream.toByteArray());
public void checkCachedVotes(String server) {
if (getProxy().getServerInfo(server) != null) {
if (!getProxy().getServerInfo(server).getPlayers().isEmpty()) {
if (cachedVotes.containsKey(server)) {
ArrayList<OfflineBungeeVote> c = cachedVotes.get(server);
if (!c.isEmpty()) {
for (OfflineBungeeVote cache : c) {
sendPluginMessageServer(server, "Vote", cache.getPlayerName(), cache.getUuid(),
cache.getService(), "" + cache.getTime(), Boolean.FALSE.toString(),
"" + cache.isRealVote());
}
cachedVotes.put(server, new ArrayList<OfflineBungeeVote>());
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
@@ -107,35 +97,53 @@ public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listene
}
}
public void checkCachedVotes(String server) {
if (!getProxy().getServerInfo(server).getPlayers().isEmpty()) {
if (cachedVotes.containsKey(server)) {
ArrayList<OfflineBungeeVote> c = cachedVotes.get(server);
if (!c.isEmpty()) {
for (OfflineBungeeVote cache : c) {
sendPluginMessageServer(server, "Vote", cache.getPlayerName(), cache.getUuid(),
cache.getService(), "" + cache.getTime(), Boolean.FALSE.toString(),
"" + cache.isRealVote());
}
cachedVotes.put(server, new ArrayList<OfflineBungeeVote>());
}
}
public void debug(String msg) {
if (config.getDebug()) {
getLogger().info("Debug: " + msg);
}
}
@EventHandler
public void onServerConnected(ServerConnectedEvent event) {
final String server = event.getServer().getInfo().getName();
final String uuid = event.getPlayer().getUniqueId().toString();
getProxy().getScheduler().schedule(this, new Runnable() {
public UUID fetchUUID(String playerName) throws Exception {
// Get response from Mojang API
URL url = new URL("https://api.mojang.com/users/profiles/minecraft/" + playerName);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.connect();
@Override
public void run() {
checkCachedVotes(server);
checkOnlineVotes(event.getPlayer(), uuid);
}
if (connection.getResponseCode() == 400) {
getProxy().getLogger().info("There is no player with the name \"" + playerName + "\"!");
return null;
}
}, 2, TimeUnit.SECONDS);
InputStream inputStream = connection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
// Parse JSON response and get UUID
JsonElement element = new JsonParser().parse(bufferedReader);
JsonObject object = element.getAsJsonObject();
String uuidAsString = object.get("id").getAsString();
// Return UUID
return parseUUIDFromString(uuidAsString);
}
public String getProperName(String uuid, String currentName) {
ProxiedPlayer p = getProxy().getPlayer(UUID.fromString(uuid));
if (p != null && p.isConnected()) {
return p.getName();
}
return currentName;
}
public String getUUID(String playerName) {
ProxiedPlayer p = getProxy().getPlayer(playerName);
if (p != null && p.isConnected()) {
return p.getUniqueId().toString();
}
String str = mysql.getUUID(playerName);
if (str != null) {
return str;
}
return "";
}
@Override
@@ -185,7 +193,6 @@ public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listene
getMysql().alterColumnType("MonthVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("Points", "INT DEFAULT '0'");
getMysql().alterColumnType("HighestDailyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("MileStoneTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("AllTimeTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("HighestMonthlyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("MilestoneCount", "INT DEFAULT '0'");
@@ -235,7 +242,7 @@ public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listene
voteCacheFile.clearData();
getProxy().getScheduler().runAsync(this, new Runnable() {
getProxy().getScheduler().schedule(this, new Runnable() {
@Override
public void run() {
@@ -247,7 +254,7 @@ public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listene
checkOnlineVotes(getProxy().getPlayer(UUID.fromString(player)), player);
}
}
});
}, 15l, TimeUnit.SECONDS);
this.getProxy().registerChannel("VotingPlugin:VotingPlugin".toLowerCase());
} else if (method.equals(BungeeMethod.SOCKETS)) {
@@ -299,8 +306,47 @@ public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listene
getLogger().info("VotingPlugin loaded, using method: " + method.toString());
}
public void reload() {
config.load();
@EventHandler
public void onPluginMessage(PluginMessageEvent ev) {
if (!ev.getTag().equals("VotingPlugin:VotingPlugin".toLowerCase())) {
return;
}
ByteArrayInputStream instream = new ByteArrayInputStream(ev.getData());
DataInputStream in = new DataInputStream(instream);
try {
ByteArrayOutputStream outstream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(outstream);
String subchannel = in.readUTF();
int size = in.readInt();
out.writeUTF(subchannel);
out.writeInt(size);
for (int i = 0; i < size; i++) {
out.writeUTF(in.readUTF());
}
for (String send : getProxy().getServers().keySet()) {
if (getProxy().getServers().get(send).getPlayers().size() > 0) {
getProxy().getServers().get(send).sendData("VotingPlugin:VotingPlugin".toLowerCase(),
outstream.toByteArray());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
@EventHandler
public void onServerConnected(ServerConnectedEvent event) {
final String server = event.getServer().getInfo().getName();
final String uuid = event.getPlayer().getUniqueId().toString();
getProxy().getScheduler().schedule(this, new Runnable() {
@Override
public void run() {
checkCachedVotes(server);
checkOnlineVotes(event.getPlayer(), uuid);
}
}, 2, TimeUnit.SECONDS);
}
@EventHandler
@@ -312,10 +358,95 @@ public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listene
}
public void debug(String msg) {
if (config.getDebug()) {
getLogger().info("Debug: " + msg);
private UUID parseUUIDFromString(String uuidAsString) {
String[] parts = { "0x" + uuidAsString.substring(0, 8), "0x" + uuidAsString.substring(8, 12),
"0x" + uuidAsString.substring(12, 16), "0x" + uuidAsString.substring(16, 20),
"0x" + uuidAsString.substring(20, 32) };
long mostSigBits = Long.decode(parts[0]).longValue();
mostSigBits <<= 16;
mostSigBits |= Long.decode(parts[1]).longValue();
mostSigBits <<= 16;
mostSigBits |= Long.decode(parts[2]).longValue();
long leastSigBits = Long.decode(parts[3]).longValue();
leastSigBits <<= 48;
leastSigBits |= Long.decode(parts[4]).longValue();
return new UUID(mostSigBits, leastSigBits);
}
public void reload() {
config.load();
}
public void sendPluginMessageServer(String server, String channel, String... messageData) {
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(byteOutStream);
try {
out.writeUTF(channel);
out.writeInt(messageData.length);
for (String message : messageData) {
out.writeUTF(message);
}
if (getProxy().getServers().get(server).getPlayers().size() > 0) {
getProxy().getServers().get(server).sendData("VotingPlugin:VotingPlugin".toLowerCase(),
byteOutStream.toByteArray(), false);
}
out.close();
} catch (Exception e) {
e.printStackTrace();
}
debug("Sending plugin message " + server + " " + channel + " "
+ ArrayUtils.getInstance().makeStringList(ArrayUtils.getInstance().convert(messageData)));
}
public void sendServerMessage(String... messageData) {
for (ClientHandler h : clientHandles.values()) {
h.sendMessage(messageData);
}
}
public void sendServerMessageServer(String server, String... messageData) {
if (clientHandles.containsKey(server)) {
clientHandles.get(server).sendMessage(messageData);
}
}
public void sendSocketVote(String name, String service) {
String uuid = getUUID(name);
if (config.getSendVotesToAllServers()) {
sendServerMessage("bungeevote", uuid, name, service);
if (config.getBroadcast()) {
sendServerMessage("BungeeBroadcast", service, uuid, name);
}
} else {
// online server only
ProxiedPlayer p = getProxy().getPlayer(name);
String server = "";
if (p != null && p.isConnected()) {
server = p.getServer().getInfo().getName();
} else {
server = config.getFallBack();
}
if (config.getBlockedServers().contains(server)) {
server = config.getFallBack();
}
sendServerMessageServer(server, "bungeevoteonline", uuid, name, service);
if (config.getBroadcast()) {
sendServerMessage("BungeeBroadcast", service, uuid, name);
}
sendServerMessage("BungeeUpdate");
}
}
public void status(CommandSender sender) {
sendServerMessage("status");
}
public void vote(String player, String service, boolean realVote) {
@@ -352,7 +483,7 @@ public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listene
for (Column d : data) {
if (d.getName().equalsIgnoreCase("alltimetotal") || d.getName().equalsIgnoreCase("monthtotal")
|| d.getName().equalsIgnoreCase("weeklytotal") || d.getName().equalsIgnoreCase("dailytotal")
|| d.getName().equalsIgnoreCase("Points") || d.getName().equalsIgnoreCase("milestonecount")) {
|| d.getName().equalsIgnoreCase("Points") || d.getName().equalsIgnoreCase("MilestoneCount")) {
Object value = d.getValue();
int num = 0;
if (value instanceof Integer) {
@@ -419,134 +550,4 @@ public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listene
}
}
public UUID fetchUUID(String playerName) throws Exception {
// Get response from Mojang API
URL url = new URL("https://api.mojang.com/users/profiles/minecraft/" + playerName);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.connect();
if (connection.getResponseCode() == 400) {
System.err.println("There is no player with the name \"" + playerName + "\"!");
return null;
}
InputStream inputStream = connection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
// Parse JSON response and get UUID
JsonElement element = new JsonParser().parse(bufferedReader);
JsonObject object = element.getAsJsonObject();
String uuidAsString = object.get("id").getAsString();
// Return UUID
return parseUUIDFromString(uuidAsString);
}
private UUID parseUUIDFromString(String uuidAsString) {
String[] parts = { "0x" + uuidAsString.substring(0, 8), "0x" + uuidAsString.substring(8, 12),
"0x" + uuidAsString.substring(12, 16), "0x" + uuidAsString.substring(16, 20),
"0x" + uuidAsString.substring(20, 32) };
long mostSigBits = Long.decode(parts[0]).longValue();
mostSigBits <<= 16;
mostSigBits |= Long.decode(parts[1]).longValue();
mostSigBits <<= 16;
mostSigBits |= Long.decode(parts[2]).longValue();
long leastSigBits = Long.decode(parts[3]).longValue();
leastSigBits <<= 48;
leastSigBits |= Long.decode(parts[4]).longValue();
return new UUID(mostSigBits, leastSigBits);
}
public String getProperName(String uuid, String currentName) {
ProxiedPlayer p = getProxy().getPlayer(UUID.fromString(uuid));
if (p != null && p.isConnected()) {
return p.getName();
}
return currentName;
}
public String getUUID(String playerName) {
ProxiedPlayer p = getProxy().getPlayer(playerName);
if (p != null && p.isConnected()) {
return p.getUniqueId().toString();
}
String str = mysql.getUUID(playerName);
if (str != null) {
return str;
}
return "";
}
public void sendSocketVote(String name, String service) {
String uuid = getUUID(name);
if (config.getSendVotesToAllServers()) {
sendServerMessage("bungeevote", uuid, name, service);
if (config.getBroadcast()) {
sendServerMessage("BungeeBroadcast", service, uuid, name);
}
} else {
// online server only
ProxiedPlayer p = getProxy().getPlayer(name);
String server = "";
if (p != null && p.isConnected()) {
server = p.getServer().getInfo().getName();
} else {
server = config.getFallBack();
}
if (config.getBlockedServers().contains(server)) {
server = config.getFallBack();
}
sendServerMessageServer(server, "bungeevoteonline", uuid, name, service);
if (config.getBroadcast()) {
sendServerMessage("BungeeBroadcast", service, uuid, name);
}
sendServerMessage("BungeeUpdate");
}
}
public void sendServerMessage(String... messageData) {
for (ClientHandler h : clientHandles.values()) {
h.sendMessage(messageData);
}
}
public void sendServerMessageServer(String server, String... messageData) {
if (clientHandles.containsKey(server)) {
clientHandles.get(server).sendMessage(messageData);
}
}
public void sendPluginMessageServer(String server, String channel, String... messageData) {
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(byteOutStream);
try {
out.writeUTF(channel);
out.writeInt(messageData.length);
for (String message : messageData) {
out.writeUTF(message);
}
if (getProxy().getServers().get(server).getPlayers().size() > 0) {
getProxy().getServers().get(server).sendData("VotingPlugin:VotingPlugin".toLowerCase(),
byteOutStream.toByteArray(), false);
}
out.close();
} catch (Exception e) {
e.printStackTrace();
}
debug("Sending plugin message " + server + " " + channel + " "
+ ArrayUtils.getInstance().makeStringList(ArrayUtils.getInstance().convert(messageData)));
}
public void status(CommandSender sender) {
sendServerMessage("status");
}
}
@@ -130,36 +130,6 @@ public class BungeeMySQL {
}
}
public String getUUID(String playerName) {
String query = "SELECT uuid FROM " + getName() + " WHERE " + "PlayerName" + "='" + playerName + "';";
try {
ResultSet rs = null;
Connection conn = mysql.getConnectionManager().getConnection();
PreparedStatement sql = conn.prepareStatement(query);
rs = sql.executeQuery();
/*
* Query sql = new Query(mysql, query);
* ResultSet rs = sql.executeQuery();
*/
if (rs.next()) {
String uuid = rs.getString("uuid");
if (uuid != null && !uuid.isEmpty()) {
sql.close();
conn.close();
return uuid;
}
}
sql.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (ArrayIndexOutOfBoundsException e) {
}
return null;
}
public void checkColumn(String column, DataType dataType) {
synchronized (object4) {
if (!getColumns().contains(column)) {
@@ -379,6 +349,36 @@ public class BungeeMySQL {
return result;
}
public String getUUID(String playerName) {
String query = "SELECT uuid FROM " + getName() + " WHERE " + "PlayerName" + "='" + playerName + "';";
try {
ResultSet rs = null;
Connection conn = mysql.getConnectionManager().getConnection();
PreparedStatement sql = conn.prepareStatement(query);
rs = sql.executeQuery();
/*
* Query sql = new Query(mysql, query);
* ResultSet rs = sql.executeQuery();
*/
if (rs.next()) {
String uuid = rs.getString("uuid");
if (uuid != null && !uuid.isEmpty()) {
sql.close();
conn.close();
return uuid;
}
}
sql.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (ArrayIndexOutOfBoundsException e) {
}
return null;
}
public Set<String> getUuids() {
if (uuids == null || uuids.size() == 0) {
uuids.clear();
@@ -21,9 +21,54 @@ public class Config {
this.bungee = bungee;
}
public List<String> getBlockedServers() {
return getData().getStringList("BlockedServers");
}
public boolean getBroadcast() {
return getData().getBoolean("Broadcast", false);
}
public String getBungeeHost() {
return getData().getString("BungeeServer.Host", "");
}
public String getBungeeMethod() {
return getData().getString("BungeeMethod", "SOCKETS");
}
public int getBungeePort() {
return getData().getInt("BungeeServer.Port", 1297);
}
public boolean getDebug() {
return getData().getBoolean("Debug", false);
}
public String getFallBack() {
return getData().getString("FallBackServer", "");
}
public boolean getSendToOnlineServer() {
return getData().getBoolean("SendToOnlineServer");
}
public boolean getSendVotesToAllServers() {
return getData().getBoolean("SendVotesToAllServers");
}
public Configuration getSpigotServerConfiguration(String s) {
return getData().getSection("SpigotServers." + s);
}
public Collection<String> getSpigotServers() {
return getData().getSection("SpigotServers").getKeys();
}
public void load() {
if (!bungee.getDataFolder().exists())
if (!bungee.getDataFolder().exists()) {
bungee.getDataFolder().mkdir();
}
File file = new File(bungee.getDataFolder(), "bungeeconfig.yml");
@@ -51,48 +96,4 @@ public class Config {
}
}
public boolean getSendVotesToAllServers() {
return getData().getBoolean("SendVotesToAllServers");
}
public boolean getSendToOnlineServer() {
return getData().getBoolean("SendToOnlineServer");
}
public String getBungeeMethod() {
return getData().getString("BungeeMethod", "SOCKETS");
}
public String getBungeeHost() {
return getData().getString("BungeeServer.Host", "");
}
public int getBungeePort() {
return getData().getInt("BungeeServer.Port", 1297);
}
public Collection<String> getSpigotServers() {
return getData().getSection("SpigotServers").getKeys();
}
public List<String> getBlockedServers() {
return getData().getStringList("BlockedServers");
}
public boolean getBroadcast() {
return getData().getBoolean("Broadcast", false);
}
public boolean getDebug() {
return getData().getBoolean("Debug", false);
}
public String getFallBack() {
return getData().getString("FallBackServer", "");
}
public Configuration getSpigotServerConfiguration(String s) {
return getData().getSection("SpigotServers." + s);
}
}
@@ -18,60 +18,6 @@ public class VoteCache {
this.bungee = bungee;
}
public void load() {
if (!bungee.getDataFolder().exists())
bungee.getDataFolder().mkdir();
File file = new File(bungee.getDataFolder(), "votecache.yml");
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
data = ConfigurationProvider.getProvider(YamlConfiguration.class)
.load(new File(bungee.getDataFolder(), "votecache.yml"));
} catch (IOException e) {
e.printStackTrace();
}
}
public void save() {
try {
ConfigurationProvider.getProvider(YamlConfiguration.class).save(data,
new File(bungee.getDataFolder(), "votecache.yml"));
} catch (IOException e) {
e.printStackTrace();
}
}
public Collection<String> getServers() {
return getData().getSection("VoteCache").getKeys();
}
public Collection<String> getPlayers() {
return getData().getSection("OnlineCache").getKeys();
}
public Configuration getServerVotes(String server, String num) {
return getData().getSection("VoteCache." + server + "." + num);
}
public Configuration getOnlineVotes(String name, String num) {
return getData().getSection("OnlineCache." + name + "." + num);
}
public Collection<String> getServerVotes(String server) {
return getData().getSection("VoteCache." + server).getKeys();
}
public Collection<String> getOnlineVotes(String name) {
return getData().getSection("OnlineCache." + name).getKeys();
}
public void addVote(String server, int num, OfflineBungeeVote voteData) {
Configuration section = getData().getSection("VoteCache." + server + "." + num);
section.set("Name", voteData.getPlayerName());
@@ -98,4 +44,59 @@ public class VoteCache {
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 void load() {
if (!bungee.getDataFolder().exists()) {
bungee.getDataFolder().mkdir();
}
File file = new File(bungee.getDataFolder(), "votecache.yml");
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
data = ConfigurationProvider.getProvider(YamlConfiguration.class)
.load(new File(bungee.getDataFolder(), "votecache.yml"));
} catch (IOException e) {
e.printStackTrace();
}
}
public void save() {
try {
ConfigurationProvider.getProvider(YamlConfiguration.class).save(data,
new File(bungee.getDataFolder(), "votecache.yml"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
@@ -24,7 +24,7 @@ public class VotingPluginBungeeCommand extends Command {
if (args.length >= 2) {
String user = args[1];
String site = args[2];
bungee.vote(user, site,false);
bungee.vote(user, site, false);
sender.sendMessage(new TextComponent("Sending vote"));
}
}