Compare commits

...
16 Commits
Author SHA1 Message Date
Ben12345rocks 0c9c2dacfa Update version number 2020-08-23 13:26:39 -04:00
Ben12345rocks 48dbd26d24 Improvements 2020-08-23 13:19:38 -04:00
Ben12345rocks 65de370539 Add top placeholder 2020-08-23 12:14:28 -04:00
Ben12345rocks 1ffb050939 Add voteshop disabled message to config 2020-08-22 17:22:15 -04:00
Ben12345rocks 0f15c69831 Bug fix 2020-08-22 15:27:51 -04:00
Ben12345rocks 5d99ea6154 Add placeholder 2020-08-22 14:57:11 -04:00
Ben12345rocks 7224cb76de Bug fix 2020-08-17 15:55:34 -04:00
Ben12345rocks 1ac9df057d Bug fix 2020-08-16 17:54:39 -04:00
Ben12345rocks 033941388c Bug fix 2020-08-16 17:50:42 -04:00
Ben12345rocks fc979bc6bf Bug fix 2020-08-16 17:34:09 -04:00
Ben12345rocks f1860f2934 Use config option 2020-08-16 13:44:55 -04:00
Ben12345rocks ab8696a3a4 Bug fix 2020-08-16 13:28:31 -04:00
Ben12345rocks 09cd00a563 Bug fix 2020-08-16 12:56:11 -04:00
Ben12345rocks f2ca7c3240 Add placeholder 2020-08-16 12:39:31 -04:00
Ben12345rocks 6928c15147 Bug fixes 2020-08-16 12:15:27 -04:00
Ben12345rocks 9e278de881 Fix spelling mistake 2020-08-15 20:02:52 -04:00
10 changed files with 137 additions and 56 deletions

No files matched your search

+1 -1
View File
@@ -6,7 +6,7 @@
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.8.0_261">
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
+2 -1
View File
@@ -585,6 +585,7 @@ VoteShopHideLimitedReached: true
# Requires above to be false
VoteShopLimitReached: '&aYou reached your limit'
VoteShopRequireConfirmation: false
VoteShopDisabled: '&cVote shop disabled'
Shop:
# Identifier
# Used in placeholders for formats
@@ -992,7 +993,7 @@ ExtraBackgroundUpdate: false
# --------------------------
# Plugin using bungee, requires plugin on bungee server
UseBungeecoord: false
UseBungeecord: false
# For pluginmessaging method only
# Whether to broadcast on cached votes
+1 -1
View File
@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.Ben12345rocks</groupId>
<artifactId>VotingPlugin</artifactId>
<version>5.23</version>
<version>5.23.1</version>
<packaging>jar</packaging>
<name>VotingPlugin</name>
<properties>
@@ -723,6 +723,54 @@ 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.
*
@@ -769,12 +817,12 @@ public class Commands {
}
}
} else {
LocalDateTime offsetoclockyesterday = TimeChecker.getInstance().getTime().plusDays(-1).withHour(0).withMinute(0)
.plusHours((long) voteSite.getTimeOffSet());
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());
LocalDateTime offsetoclocktomorrow = TimeChecker.getInstance().getTime().plusDays(1).withHour(0)
.withMinute(0).plusHours((long) voteSite.getTimeOffSet());
if (!now.isBefore(offsetoclocktoday)) {
if (!lastVote.isBefore(offsetoclocktoday)) {
@@ -85,8 +85,8 @@ public class PlayerGUIs {
public void openVoteBest(Player player, User user) {
setSelectedPlayer(player, user);
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteBestName(), "player", user.getPlayerName()));
BInventory inv = new BInventory(Config.getInstance().getGUIVoteBestName());
inv.addPlaceholder("player", user.getPlayerName());
inv.addButton(new BInventoryButton(new ItemBuilder(Config.getInstance().getGUIVoteBestDayBestItem())
.addPlaceholder("Best", "" + user.getBestDayVoteStreak())) {
@@ -132,12 +132,15 @@ public class PlayerGUIs {
return;
}
setSelectedPlayer(player, user);
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteGUIName(), "player", user.getPlayerName()));
BInventory inv = new BInventory(Config.getInstance().getGUIVoteGUIName());
if (!Config.getInstance().isAlwaysCloseInventory()) {
inv.dontClose();
}
inv.addPlaceholder("points", "" + user.getPoints());
inv.addPlaceholder("player", user.getPlayerName());
inv.addPlaceholder("top", Config.getInstance().getVoteTopDefault());
for (String slot : Config.getInstance().getVoteGUISlots()) {
ItemBuilder builder = new ItemBuilder(Config.getInstance().getVoteGUISlotSection(slot));
@@ -145,6 +148,7 @@ public class PlayerGUIs {
lore = ArrayUtils.getInstance().convert(Config.getInstance().getVoteGUISlotLore(slot));
String str = Config.getInstance().getVoteTopDefault();
if (lore.length == 0) {
if (slot.equalsIgnoreCase("url")) {
lore = new String[] { "&aClick me" };
@@ -155,7 +159,7 @@ public class PlayerGUIs {
} else if (slot.equalsIgnoreCase("total")) {
lore = Commands.getInstance().voteCommandTotal(user);
} else if (slot.equalsIgnoreCase("top")) {
String str = Config.getInstance().getVoteTopDefault();
if (str.equalsIgnoreCase("monthly")) {
lore = TopVoterHandler.getInstance().topVoterMonthly(1);
} else if (str.equalsIgnoreCase("weekly")) {
@@ -172,10 +176,6 @@ public class PlayerGUIs {
}
}
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("points", "" + user.getPoints());
builder.setPlaceholders(placeholders);
builder.setLore(ArrayUtils.getInstance().convert(lore));
inv.addButton(new BInventoryButton(builder) {
@@ -228,8 +228,8 @@ public class PlayerGUIs {
public void openVoteLast(Player player, User user) {
setSelectedPlayer(player, user);
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteLastName(), "player", user.getPlayerName()));
BInventory inv = new BInventory(Config.getInstance().getGUIVoteLastName());
inv.addPlaceholder("player", user.getPlayerName());
for (VoteSite site : plugin.getVoteSites()) {
inv.addButton(inv.getNextSlot(), new BInventoryButton(site.getItem().setName(site.getDisplayName())
.setLore(Commands.getInstance().voteCommandLastLine(user, site)).setAmountNone(1)) {
@@ -250,8 +250,8 @@ public class PlayerGUIs {
public void openVoteNext(Player player, User user) {
setSelectedPlayer(player, user);
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteNextName(), "player", user.getPlayerName()));
BInventory inv = new BInventory(Config.getInstance().getGUIVoteNextName());
inv.addPlaceholder("player", user.getPlayerName());
for (VoteSite site : plugin.getVoteSites()) {
inv.addButton(inv.getNextSlot(), new BInventoryButton(site.getItem().setName(site.getDisplayName())
.setLore(Commands.getInstance().voteCommandNextInfo(user, site)).setAmountNone(1)) {
@@ -271,7 +271,7 @@ public class PlayerGUIs {
public void openVoteShop(Player player) {
if (!Config.getInstance().getVoteShopEnabled()) {
player.sendMessage(StringParser.getInstance().colorize("&cVote shop disabled"));
player.sendMessage(StringParser.getInstance().colorize(Config.getInstance().getVoteShopDisabled()));
return;
}
@@ -433,8 +433,8 @@ public class PlayerGUIs {
public void openVoteStreak(Player player, User user) {
setSelectedPlayer(player, user);
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteStreakName(), "player", user.getPlayerName()));
BInventory inv = new BInventory(Config.getInstance().getGUIVoteStreakName());
inv.addPlaceholder("player", user.getPlayerName());
inv.addButton(new BInventoryButton(new ItemBuilder(Config.getInstance().getGUIVoteStreakCurrentDayStreakItem())
.addPlaceholder("Streak", "" + user.getDayVoteStreak())) {
@@ -554,8 +554,8 @@ public class PlayerGUIs {
LinkedHashMap<User, Integer> topVotes = (LinkedHashMap<User, Integer>) plugin.getTopVoter(top).clone();
users = topVotes.entrySet();
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteTopName(), "topvoter", topVoter));
BInventory inv = new BInventory(Config.getInstance().getGUIVoteTopName());
inv.addPlaceholder("topvoter", topVoter);
if (!Config.getInstance().isAlwaysCloseInventory()) {
inv.dontClose();
}
@@ -618,8 +618,8 @@ public class PlayerGUIs {
users = plugin.getLastMonthTopVoter().entrySet();
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteTopName(), "topvoter", "Last Month"));
BInventory inv = new BInventory(Config.getInstance().getGUIVoteTopName());
inv.addPlaceholder("topvoter", "Last Month");
if (!Config.getInstance().isAlwaysCloseInventory()) {
inv.dontClose();
}
@@ -662,8 +662,8 @@ public class PlayerGUIs {
public void openVoteTotal(Player player, User user) {
setSelectedPlayer(player, user);
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteTotalName(), "player", user.getPlayerName()));
BInventory inv = new BInventory(Config.getInstance().getGUIVoteTotalName());
inv.addPlaceholder("player", user.getPlayerName());
for (TopVoter top : TopVoter.values()) {
inv.addButton(new BInventoryButton(new ItemBuilder(Config.getInstance().getGUIVoteTotalItem(top))
@@ -777,8 +777,8 @@ public class PlayerGUIs {
}
User user = UserManager.getInstance().getVotingPluginUser(player);
VoteSite site = plugin.getVoteSite(voteSite);
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteURLSiteName(), "site", site.getDisplayName()));
BInventory inv = new BInventory(Config.getInstance().getGUIVoteURLSiteName());
inv.addPlaceholder("site", site.getDisplayName());
inv.setMeta(player, "VoteSite", site);
if (!Config.getInstance().isAlwaysCloseInventory()) {
inv.dontClose();
@@ -140,6 +140,10 @@ public class Config extends YMLFile {
@Getter
private String allSitesRewardPath = "AllSites";
@Getter
@ConfigDataString(path = "VoteShopDisabled")
private String voteShopDisabled = "&cVote shop disabled";
@ConfigDataBoolean(path = "AlternateUUIDLookup")
@Getter
@@ -152,7 +156,7 @@ public class Config extends YMLFile {
@Getter
private boolean autoCreateVoteSites = true;
@ConfigDataBoolean(path = "UseBungeecoord")
@ConfigDataBoolean(path = "UseBungeecord", secondPath = "UseBungeecoord")
@Getter
private boolean useBungeecoord = false;
@@ -2,6 +2,7 @@ package com.Ben12345rocks.VotingPlugin.Util.PlaceHolders;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map.Entry;
@@ -259,6 +260,35 @@ public class PlaceHolders {
}
}.withDescription("Return true/false if player can vote on all sites"));
placeholders.add(new PlaceHolder<User>("Next_AnySite") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
if (user.canVoteAny()) {
return Config.getInstance().getFormatCommandsVoteNextInfoCanVote();
}
long smallest = -1;
HashMap<Long, VoteSite> times = new HashMap<Long, VoteSite>();
for (VoteSite site : plugin.getVoteSites()) {
long t = Commands.getInstance().voteNextDurationTime(user, site);
if (smallest == -1) {
smallest = t;
}
if (t < smallest) {
smallest = t;
}
times.put(t, site);
}
for (Entry<Long,VoteSite> entry : times.entrySet()) {
if (entry.getKey().longValue() == smallest) {
return Commands.getInstance().voteCommandNextInfo(user, entry.getValue());
}
}
return "Error";
}
}.withDescription("How long until user can vote on anysite"));
for (final VoteSite voteSite : plugin.getVoteSites()) {
placeholders.add(new PlaceHolder<User>("Next_" + voteSite.getKey()) {
@@ -37,7 +37,6 @@ import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.event.PluginMessageEvent;
import net.md_5.bungee.api.event.PostLoginEvent;
import net.md_5.bungee.api.event.ServerConnectedEvent;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.config.Configuration;
@@ -57,6 +56,7 @@ public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listene
private EncryptionHandler encryptionHandler;
@Getter
private BungeeMethod method;
private HashMap<String, ArrayList<OfflineBungeeVote>> cachedVotes = new HashMap<String, ArrayList<OfflineBungeeVote>>();
@@ -125,27 +125,16 @@ public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listene
@EventHandler
public void onServerConnected(ServerConnectedEvent event) {
final String server = event.getServer().getInfo().getName();
getProxy().getScheduler().schedule(this, new Runnable() {
@Override
public void run() {
checkCachedVotes(server);
}
}, 2, TimeUnit.SECONDS);
}
@EventHandler
public void onPlayerJoin(PostLoginEvent event) {
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);
}, 2, TimeUnit.SECONDS);
}
@Override
@@ -404,14 +393,17 @@ public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listene
}
} else {
ProxiedPlayer p = getProxy().getPlayer(UUID.fromString(uuid));
if (p.isConnected()) {
if (p != null && p.isConnected()) {
sendPluginMessageServer(p.getServer().getInfo().getName(), "VoteOnline", player, uuid, service,
"" + time, Boolean.TRUE.toString());
} else {
if (!cachedOnlineVotes.containsKey(uuid)) {
cachedOnlineVotes.put(uuid, new ArrayList<OfflineBungeeVote>());
}
ArrayList<OfflineBungeeVote> list = cachedVotes.get(uuid);
ArrayList<OfflineBungeeVote> list = cachedOnlineVotes.get(uuid);
if (list == null) {
list = new ArrayList<OfflineBungeeVote>();
}
list.add(new OfflineBungeeVote(player, uuid, service, time));
cachedOnlineVotes.put(uuid, list);
debug("Caching online vote for " + player + " on " + service);
@@ -143,12 +143,13 @@ public class BungeeMySQL {
* Query sql = new Query(mysql, query);
* ResultSet rs = sql.executeQuery();
*/
rs.next();
String uuid = rs.getString("uuid");
if (uuid != null && !uuid.isEmpty()) {
sql.close();
conn.close();
return uuid;
if (rs.next()) {
String uuid = rs.getString("uuid");
if (uuid != null && !uuid.isEmpty()) {
sql.close();
conn.close();
return uuid;
}
}
sql.close();
conn.close();
@@ -29,8 +29,13 @@ public class VotingPluginBungeeCommand extends Command {
}
}
if (args[0].equalsIgnoreCase("status")) {
sender.sendMessage(new TextComponent("Checking status, waiting for response, check console, only for socket method"));
bungee.status(sender);
if (bungee.getMethod().equals(BungeeMethod.SOCKETS)) {
sender.sendMessage(new TextComponent(
"Checking status, waiting for response, check console, only for socket method"));
bungee.status(sender);
} else {
sender.sendMessage(new TextComponent("Not using socket method, command unavailable"));
}
}
if (args[0].equalsIgnoreCase("help")) {
TextComponent[] msg = new TextComponent[3];