Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
21c4be4148 | ||
|
|
d44290dcdc | ||
|
|
702c739ec8 | ||
|
|
c1122bd939 | ||
|
|
bdaa896fc1 | ||
|
|
3b1c051fd2 | ||
|
|
11194f819e | ||
|
|
662eb16fdd | ||
|
|
d65070973c | ||
|
|
cef41348cc | ||
|
|
bcba694308 | ||
|
|
fbd7c6d3fc | ||
|
|
f842c08d62 | ||
|
|
4e58a6915f | ||
|
|
4336644fbc | ||
|
|
e32909ac58 | ||
|
|
bd16e2ccaf | ||
|
|
36fa55139e | ||
|
|
b128280d5f | ||
|
|
51e3f05031 | ||
|
|
19b83070c6 | ||
|
|
5622956e75 | ||
|
|
1ac3ea4916 | ||
|
|
391cc0edf1 | ||
|
|
a59a98f8cb | ||
|
|
e62213bfd5 | ||
|
|
61b77c4754 | ||
|
|
758aaa3dd7 | ||
|
|
51389a27fb | ||
|
|
37b94cc36c | ||
|
|
1e4796d418 | ||
|
|
62b0d6012d | ||
|
|
52726c8bb3 | ||
|
|
ede06e0923 | ||
|
|
6eb2c95cc0 | ||
|
|
835dff8620 | ||
|
|
1019b0b83b | ||
|
|
a44070b505 | ||
|
|
58bd4e2d9d | ||
|
|
cff346e6a4 | ||
|
|
0331e34e91 | ||
|
|
26ff8d8588 | ||
|
|
9a38826cf7 | ||
|
|
b854631990 | ||
|
|
5d1cd97ebd | ||
|
|
c21feb74d1 | ||
|
|
052e2f2541 | ||
|
|
1270b57afa | ||
|
|
cf8b219b9d | ||
|
|
689133aab8 | ||
|
|
019c0f01eb | ||
|
|
743cac217b | ||
|
|
5f19cb1ec8 | ||
|
|
ac5ffa0f7c | ||
|
|
114e07eb01 | ||
|
|
8ba1d75ab3 | ||
|
|
b3555918ed | ||
|
|
0759c05ed1 | ||
|
|
278a8f70f2 | ||
|
|
fb5dc9923f | ||
|
|
f942505e62 | ||
|
|
2d2b2db0a7 | ||
|
|
18d5078842 | ||
|
|
074b2c51e2 | ||
|
|
539194720a | ||
|
|
19fc5865fa | ||
|
|
f0d58e0c6a | ||
|
|
ddc2bea418 | ||
|
|
24da6893ac |
No files matched your search
@@ -0,0 +1,30 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Bug report for VotingPlugin
|
||||
title: ''
|
||||
labels: Possible Bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Versions**
|
||||
Plugin version and spigot version.
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots/Configs**
|
||||
If applicable, add screenshots to help explain your problem and/or configs relating to the issue.
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea
|
||||
title: ''
|
||||
labels: Possible Feature
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
name: Question/Concerns
|
||||
about: Ask about a question or a concern about the plugin
|
||||
title: ''
|
||||
labels: Question/Concern
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Versions**
|
||||
Plugin version and spigot version
|
||||
|
||||
**Relevant information**
|
||||
Configs that relate to the issue in a pastebin.
|
||||
|
||||
**Context**
|
||||
Context about the question/concern
|
||||
@@ -0,0 +1,16 @@
|
||||
# Number of days of inactivity before an issue becomes stale
|
||||
daysUntilStale: 20
|
||||
# Number of days of inactivity before a stale issue is closed
|
||||
daysUntilClose: 7
|
||||
# Issues with these labels will never be considered stale
|
||||
exemptLabels:
|
||||
- Priority
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: stale
|
||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs. Thank you
|
||||
for your contributions.
|
||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||
closeComment: false
|
||||
@@ -454,8 +454,8 @@ GUI:
|
||||
Name: '&3&l%position%: &3%player%'
|
||||
Lore: '&3&lVotes: &3%votes%'
|
||||
SwitchItem:
|
||||
Name: 'Switch TopVoter'
|
||||
Lore: 'Currently: %Top%'
|
||||
Name: '&3Switch TopVoter'
|
||||
Lore: '&bCurrently: %Top%'
|
||||
Material: 'SIGN'
|
||||
Amount: 1
|
||||
# 8 Slots over from the bottom left
|
||||
@@ -561,7 +561,7 @@ GUI:
|
||||
VoteShopName: 'VoteShop'
|
||||
|
||||
BackButton:
|
||||
Material: 'PAPER'
|
||||
Material: 'BARRIER'
|
||||
Data: 0
|
||||
Amount: 1
|
||||
Name: '&8Back to VoteGUI'
|
||||
@@ -575,6 +575,7 @@ VoteShopLimitReached: '&aYou reached your limit'
|
||||
Shop:
|
||||
# Identifier
|
||||
# Used in placeholders for formats
|
||||
# Do not have spaces in the identifier
|
||||
Diamond:
|
||||
# Item
|
||||
Material: 'DIAMOND'
|
||||
@@ -608,13 +609,12 @@ Shop:
|
||||
# To disable reward set value to []
|
||||
# Eg:
|
||||
# FirstVote: [] (All in one line)
|
||||
# By default all rewards are disabled
|
||||
# Rewards will be given if there is a reward to give
|
||||
|
||||
# First vote rewards
|
||||
FirstVote:
|
||||
Messages:
|
||||
Player: '&aYou voted for your first time!'
|
||||
Money: 100
|
||||
|
||||
# All vote rewards
|
||||
# Reward for voting on all sites in one day
|
||||
@@ -652,6 +652,8 @@ VoteParty:
|
||||
ResetEachDay: false
|
||||
# Reset at the end of the month
|
||||
ResetMonthly: false
|
||||
# Reset extra votes
|
||||
ResetExtraVotesMonthly: false
|
||||
# Count votes from /av vote?
|
||||
CountFakeVotes: true
|
||||
# Number of user votes that apply to vote party total the user needs to get rewards
|
||||
@@ -886,6 +888,10 @@ CountFakeVotes: true
|
||||
# Requires restart to take affect
|
||||
GiveDefaultPermission: true
|
||||
|
||||
# Permissions given by VotingPlugin.Player by default
|
||||
# Permissions listed here will no be accessible with the default permission
|
||||
DisabledDefaultPermissions: []
|
||||
|
||||
# Remove old player files
|
||||
# Happens on startup or /av purge
|
||||
PurgeOldData: false
|
||||
@@ -943,28 +949,49 @@ LoadSkulls: true
|
||||
# May not work on some plugins
|
||||
UseVaultPermissions: false
|
||||
|
||||
# Plugin using bungee, requires plugin on bungee server
|
||||
UseBungeecoord: false
|
||||
|
||||
# What server this is in bungee (must match)
|
||||
# Also can be applied to rewards
|
||||
Server: PleaseSet
|
||||
|
||||
# Get the plugin to broadcast to all servers
|
||||
BungeeBroadcast: false
|
||||
|
||||
# List of disabled commands from /vote
|
||||
# List the specific permission
|
||||
# E.g:
|
||||
# - PERMISSION
|
||||
DisabledCommands: []
|
||||
|
||||
# Enable to true for extra player checks
|
||||
ExtraBackgroundUpdate: false
|
||||
|
||||
# --------------------------
|
||||
# Bungee Setup
|
||||
# Only if using votingplugin bungee to send votes
|
||||
# REQUIRES RESTART FOR CHANGES TO TAKE EFFECT
|
||||
# --------------------------
|
||||
|
||||
# Plugin using bungee, requires plugin on bungee server
|
||||
UseBungeecoord: false
|
||||
|
||||
# Get the plugin to broadcast to all servers
|
||||
BungeeBroadcast: false
|
||||
|
||||
# What server this is in bungee (must match)
|
||||
# Also can be applied to rewards
|
||||
Server: PleaseSet
|
||||
|
||||
# Bungee communication, add bungee host/port here
|
||||
BungeeServer:
|
||||
Host: '127.0.0.1'
|
||||
Port: 1297
|
||||
|
||||
# Bungee communication, add this to bungee server
|
||||
SpigotServer:
|
||||
Host: '127.0.0.1'
|
||||
Port: 1298
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# Mysql cache options
|
||||
# Clearing cache forces the plugin to pull from database
|
||||
# Not needed unless you are using multiple servers
|
||||
# ---------------------------------------------------------
|
||||
|
||||
# Clear cache on update, setting to true reduces update speed
|
||||
# Also may require AlwaysUpdate set to true
|
||||
ClearCacheOnUpdate: false
|
||||
|
||||
# Clear mysql on player join always
|
||||
@@ -975,12 +1002,12 @@ ClearCacheOnJoin: false
|
||||
# Would recommend for some bungee setups
|
||||
ClearCacheOnVote: false
|
||||
|
||||
# Will force GUI's to close on every click
|
||||
AlwaysCloseInventory: false
|
||||
|
||||
# ###############################################################
|
||||
# Deprecated options, don't recommend using any of these
|
||||
|
||||
# Will force GUI's to close on every click
|
||||
AlwaysCloseInventory: false
|
||||
|
||||
# Options for request api
|
||||
# Current methods:
|
||||
# ANVIL
|
||||
|
||||
@@ -7,6 +7,28 @@
|
||||
SendVotesToAllServers: true
|
||||
# Have a reward on 1 server on the network
|
||||
SendToOnlineServer: false
|
||||
# Tell servers to broadcast
|
||||
Broadcast: true
|
||||
# List of servers the plugin won't send the vote to
|
||||
BlockedServers:
|
||||
- hub
|
||||
FallBackServer: factions
|
||||
|
||||
# Bungee communication, Add this to each spigot server
|
||||
BungeeServer:
|
||||
Host: '127.0.0.1'
|
||||
Port: 1297
|
||||
|
||||
# Bungee communication, add each spigot server here
|
||||
SpigotServers:
|
||||
lobby:
|
||||
Host: '127.0.0.1'
|
||||
Port: 1298
|
||||
factions:
|
||||
Host: '127.0.0.1'
|
||||
Port: 1999
|
||||
|
||||
|
||||
# MYSQL Required
|
||||
# MYSQL INFO --------------------------
|
||||
Host: ''
|
||||
|
||||
@@ -4,7 +4,7 @@ main: com.Ben12345rocks.VotingPlugin.Main
|
||||
description: Highly Customizable Voting Listener!
|
||||
website: https://www.spigotmc.org/resources/votingplugin.15358/
|
||||
author: Ben12345rocks
|
||||
softdepend: [MVdWPlaceholders, Votifier]
|
||||
softdepend: [MVdWPlaceholders, Votifier, CMI, Vault, PlaceholderAPI, ProtocolLib]
|
||||
api-version: 1.13
|
||||
commands:
|
||||
vote:
|
||||
@@ -225,4 +225,6 @@ permissions:
|
||||
default: false
|
||||
VotingPlugin.Sign.Create:
|
||||
description: Permission to create sign
|
||||
VotingPlugin.Admin.GenerateServiceSite:
|
||||
description: Permission for generating votesite message
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.Ben12345rocks</groupId>
|
||||
<artifactId>VotingPlugin</artifactId>
|
||||
<version>5.20.3</version>
|
||||
<version>5.21</version>
|
||||
<packaging>jar</packaging>
|
||||
<name>VotingPlugin</name>
|
||||
<properties>
|
||||
@@ -259,7 +259,7 @@
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.14.4-R0.1-SNAPSHOT</version>
|
||||
<version>1.15.2-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@@ -1,14 +1,21 @@
|
||||
package com.Ben12345rocks.VotingPlugin;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.io.File;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.Ben12345rocks.AdvancedCore.Util.PluginMessage.PluginMessage;
|
||||
import com.Ben12345rocks.AdvancedCore.Util.PluginMessage.PluginMessageHandler;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import com.Ben12345rocks.AdvancedCore.Util.Encryption.EncryptionHandler;
|
||||
import com.Ben12345rocks.AdvancedCore.Util.Sockets.ClientHandler;
|
||||
import com.Ben12345rocks.AdvancedCore.Util.Sockets.SocketHandler;
|
||||
import com.Ben12345rocks.AdvancedCore.Util.Sockets.SocketReceiver;
|
||||
import com.Ben12345rocks.VotingPlugin.Config.Config;
|
||||
import com.Ben12345rocks.VotingPlugin.Objects.User;
|
||||
import com.Ben12345rocks.VotingPlugin.Objects.VoteSite;
|
||||
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
public class BungeeHandler {
|
||||
private static BungeeHandler instance = new BungeeHandler();
|
||||
|
||||
@@ -16,32 +23,103 @@ public class BungeeHandler {
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Getter
|
||||
private SocketHandler socketHandler;
|
||||
|
||||
@Getter
|
||||
private ClientHandler clientHandler;
|
||||
|
||||
private EncryptionHandler encryptionHandler;
|
||||
|
||||
public void close() {
|
||||
socketHandler.closeConnection();
|
||||
clientHandler.stopConnection();
|
||||
}
|
||||
|
||||
public void load() {
|
||||
PluginMessage.getInstance().add(new PluginMessageHandler("bungeevote") {
|
||||
encryptionHandler = new EncryptionHandler(new File(Main.plugin.getDataFolder(), "secretkey.key"));
|
||||
Bukkit.getScheduler().runTask(Main.plugin, new Runnable() {
|
||||
|
||||
@Override
|
||||
public void onRecieve(String subchannel, ArrayList<String> data) {
|
||||
String uuid = data.get(0);
|
||||
Main.plugin.getMysql().clearCache(uuid);
|
||||
User user = UserManager.getInstance().getVotingPluginUser(UUID.fromString(uuid));
|
||||
user.bungeeVote();
|
||||
public void run() {
|
||||
clientHandler = new ClientHandler(Config.getInstance().getBungeeServerHost(),
|
||||
Config.getInstance().getBungeeServerPort(), encryptionHandler);
|
||||
|
||||
socketHandler.add(new SocketReceiver() {
|
||||
|
||||
@Override
|
||||
public void onReceive(String[] data) {
|
||||
if (data.length > 3) {
|
||||
if (data[0].equalsIgnoreCase("bungeevote")) {
|
||||
String uuid = data[1];
|
||||
User user = null;
|
||||
if (!uuid.isEmpty()) {
|
||||
user = UserManager.getInstance().getVotingPluginUser(UUID.fromString(uuid));
|
||||
} else {
|
||||
user = UserManager.getInstance().getVotingPluginUser(data[2]);
|
||||
}
|
||||
|
||||
user.clearCache();
|
||||
|
||||
user.bungeeVote(data[3]);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
socketHandler.add(new SocketReceiver() {
|
||||
|
||||
@Override
|
||||
public void onReceive(String[] data) {
|
||||
if (data.length > 3) {
|
||||
if (data[0].equalsIgnoreCase("bungeevoteonline")) {
|
||||
String uuid = data[1];
|
||||
User user = null;
|
||||
if (!uuid.isEmpty()) {
|
||||
user = UserManager.getInstance().getVotingPluginUser(UUID.fromString(uuid));
|
||||
} else {
|
||||
user = UserManager.getInstance().getVotingPluginUser(data[2]);
|
||||
}
|
||||
|
||||
user.clearCache();
|
||||
|
||||
user.bungeeVoteOnline(data[3]);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
socketHandler.add(new SocketReceiver() {
|
||||
|
||||
@Override
|
||||
public void onReceive(String[] data) {
|
||||
if (data.length > 2) {
|
||||
if (data[0].equalsIgnoreCase("BungeeBroadcast")) {
|
||||
|
||||
VoteSite site = Main.plugin.getVoteSite(data[1]);
|
||||
String p = data[3];
|
||||
User user = UserManager.getInstance().getVotingPluginUser(p);
|
||||
if (site != null) {
|
||||
site.broadcastVote(user, false);
|
||||
} else {
|
||||
Main.plugin.getLogger().warning("No votesite for " + data[1]);
|
||||
}
|
||||
Main.plugin.setUpdate(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
PluginMessage.getInstance().add(new PluginMessageHandler("Broadcast") {
|
||||
socketHandler = new SocketHandler(Main.plugin.getVersion(), Config.getInstance().getSpigotServerHost(),
|
||||
Config.getInstance().getSpigotServerPort(), encryptionHandler);
|
||||
|
||||
@Override
|
||||
public void onRecieve(String subchannel, ArrayList<String> data) {
|
||||
VoteSite site = Main.plugin.getVoteSite(data.get(0));
|
||||
String p = data.get(1);
|
||||
User user = UserManager.getInstance().getVotingPluginUser(p);
|
||||
if (site != null) {
|
||||
site.broadcastVote(user, false);
|
||||
} else {
|
||||
Main.plugin.getLogger().warning("No votesite for " + data.get(0));
|
||||
}
|
||||
Main.plugin.setUpdate(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void sendData(String... strings) {
|
||||
clientHandler.sendMessage(strings);
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@@ -21,6 +22,8 @@ import com.Ben12345rocks.AdvancedCore.CommandAPI.CommandHandler;
|
||||
import com.Ben12345rocks.AdvancedCore.CommandAPI.TabCompleteHandle;
|
||||
import com.Ben12345rocks.AdvancedCore.CommandAPI.TabCompleteHandler;
|
||||
import com.Ben12345rocks.AdvancedCore.Commands.GUI.UserGUI;
|
||||
import com.Ben12345rocks.AdvancedCore.Rewards.RewardHandler;
|
||||
import com.Ben12345rocks.AdvancedCore.Rewards.RewardOptions;
|
||||
import com.Ben12345rocks.AdvancedCore.UserManager.UUID;
|
||||
import com.Ben12345rocks.AdvancedCore.UserManager.UserStorage;
|
||||
import com.Ben12345rocks.AdvancedCore.Util.Inventory.BInventory;
|
||||
@@ -340,6 +343,19 @@ public class CommandLoader {
|
||||
}
|
||||
});
|
||||
|
||||
plugin.getAdminVoteCommand().add(new CommandHandler(new String[] { "ResyncMilestones", "(player)" },
|
||||
"VotingPlugin.Commands.AdminVote.SetResyncMilestones|" + adminPerm, "Resync Milestones") {
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
User user = UserManager.getInstance().getVotingPluginUser(args[1]);
|
||||
user.setMilestoneCount(user.getTotal(TopVoter.AllTime));
|
||||
|
||||
sendMessage(sender, "&cResynced milestones for " + args[1]);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
plugin.getAdminVoteCommand()
|
||||
.add(new CommandHandler(new String[] { "User", "(player)", "AddPoints", "(number)" },
|
||||
"VotingPlugin.Commands.AdminVote.AddPoints|" + adminPerm, "Add to players voting points") {
|
||||
@@ -509,6 +525,8 @@ public class CommandLoader {
|
||||
});
|
||||
|
||||
}
|
||||
sendMessage(sender,
|
||||
"Using AdvancedCore " + plugin.getVersion() + "' built on '" + plugin.getBuildTime());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1065,6 +1083,18 @@ 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") {
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
ServerData.getInstance().setVotePartyExtraRequired(Integer.parseInt(args[1]));
|
||||
sendMessage(sender, "&cSet VotePartyExtraRequired to " + args[1]);
|
||||
}
|
||||
});
|
||||
|
||||
plugin.getAdminVoteCommand()
|
||||
.add(new CommandHandler(new String[] { "User", "(player)", "ForceMilestone", "(Number)" },
|
||||
"VotingPlugin.Commands.AdminVote.ForceMilestone|" + adminPerm, "Force a milestone") {
|
||||
@@ -1073,6 +1103,7 @@ public class CommandLoader {
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
User user = UserManager.getInstance().getVotingPluginUser(args[1]);
|
||||
SpecialRewards.getInstance().giveMilestoneVoteReward(user, user.isOnline(), parseInt(args[3]));
|
||||
sendMessage(sender, "&cMilestone " + args[3] + " forced");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1084,6 +1115,7 @@ public class CommandLoader {
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
User user = UserManager.getInstance().getVotingPluginUser(args[1]);
|
||||
SpecialRewards.getInstance().giveCumulativeVoteReward(user, user.isOnline(), parseInt(args[3]));
|
||||
sendMessage(sender, "&cCummulative " + args[3] + " forced");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1094,6 +1126,7 @@ public class CommandLoader {
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
User user = UserManager.getInstance().getVotingPluginUser(args[1]);
|
||||
SpecialRewards.getInstance().giveAllSitesRewards(user, user.isOnline());
|
||||
sendMessage(sender, "&cAllSites forced");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1104,6 +1137,7 @@ public class CommandLoader {
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
User user = UserManager.getInstance().getVotingPluginUser(args[1]);
|
||||
SpecialRewards.getInstance().giveFirstVoteRewards(user, user.isOnline());
|
||||
sendMessage(sender, "&cFirstVote forced");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1116,6 +1150,7 @@ public class CommandLoader {
|
||||
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");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1396,6 +1431,83 @@ public class CommandLoader {
|
||||
PlayerGUIs.getInstance().openVoteShop((Player) sender);
|
||||
}
|
||||
});
|
||||
plugin.getVoteCommand().add(new CommandHandler(new String[] { "Shop", "(Text)" },
|
||||
"VotingPlugin.Commands.Vote.Shop|" + playerPerm, "Open VoteShop GUI", false) {
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
if (!Config.getInstance().getVoteShopEnabled()) {
|
||||
sender.sendMessage(StringParser.getInstance().colorize("&cVote shop disabled"));
|
||||
return;
|
||||
}
|
||||
|
||||
String identifier = args[1];
|
||||
Set<String> identifiers = Config.getInstance().getIdentifiers();
|
||||
if (ArrayUtils.getInstance().containsIgnoreCase(identifiers, identifier)) {
|
||||
for (String ident : identifiers) {
|
||||
if (ident.equalsIgnoreCase(args[1])) {
|
||||
identifier = ident;
|
||||
}
|
||||
}
|
||||
|
||||
String perm = Config.getInstance().getVoteShopPermission(identifier);
|
||||
boolean hasPerm = false;
|
||||
if (perm.isEmpty()) {
|
||||
hasPerm = true;
|
||||
} else {
|
||||
hasPerm = sender.hasPermission(perm);
|
||||
}
|
||||
|
||||
int limit = Config.getInstance().getIdentifierLimit(identifier);
|
||||
|
||||
User user = UserManager.getInstance().getVotingPluginUser(sender.getName());
|
||||
boolean limitPass = true;
|
||||
if (limit > 0) {
|
||||
|
||||
if (user.getVoteShopIdentifierLimit(identifier) >= limit) {
|
||||
limitPass = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!Config.getInstance().getVoteShopNotBuyable(identifier)) {
|
||||
if (hasPerm) {
|
||||
user.clearCache();
|
||||
int points = Config.getInstance().getIdentifierCost(identifier);
|
||||
if (identifier != null) {
|
||||
|
||||
if (limitPass) {
|
||||
HashMap<String, String> placeholders = new HashMap<String, String>();
|
||||
placeholders.put("identifier", identifier);
|
||||
placeholders.put("points", "" + points);
|
||||
placeholders.put("limit", "" + limit);
|
||||
if (user.removePoints(points)) {
|
||||
|
||||
RewardHandler.getInstance().giveReward(user, Config.getInstance().getData(),
|
||||
Config.getInstance().getIdentifierRewardsPath(identifier),
|
||||
new RewardOptions().setPlaceholders(placeholders));
|
||||
|
||||
user.sendMessage(StringParser.getInstance().replacePlaceHolder(
|
||||
Config.getInstance().getFormatShopPurchaseMsg(), placeholders));
|
||||
if (limit > 0) {
|
||||
user.setVoteShopIdentifierLimit(identifier,
|
||||
user.getVoteShopIdentifierLimit(identifier) + 1);
|
||||
}
|
||||
} else {
|
||||
user.sendMessage(StringParser.getInstance().replacePlaceHolder(
|
||||
Config.getInstance().getFormatShopFailedMsg(), placeholders));
|
||||
}
|
||||
} else {
|
||||
user.sendMessage(Config.getInstance().getVoteShopLimitReached());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sendMessage(sender, "&cWrong voteshop item");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
plugin.getVoteCommand().add(new CommandHandler(new String[] { "URL" },
|
||||
@@ -1408,7 +1520,7 @@ public class CommandLoader {
|
||||
}
|
||||
});
|
||||
plugin.getVoteCommand().add(new CommandHandler(new String[] { "URL", "(SiteName)" },
|
||||
"VotingPlugin.Commands.Vote.URL.VoteSite|" + playerPerm, "Open VoteURL GUI", false) {
|
||||
"VotingPlugin.Commands.Vote.URL.VoteSite", "Open VoteURL GUI", false) {
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
@@ -2134,6 +2246,20 @@ public class CommandLoader {
|
||||
list.remove(i);
|
||||
}
|
||||
}
|
||||
ArrayList<String> disabledDefaultPerms = config.getDisabledDefaultPermissions();
|
||||
for (CommandHandler cmd : list) {
|
||||
boolean contains = false;
|
||||
for (String dis : disabledDefaultPerms) {
|
||||
if (cmd.getPerm().contains(dis + "|")) {
|
||||
contains = true;
|
||||
}
|
||||
}
|
||||
if (contains) {
|
||||
cmd.setPerm(cmd.getPerm().replace("|" + playerPerm, ""));
|
||||
plugin.debug("Disabling VotingPlugin.Player permission on " + cmd.getPerm());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -598,6 +598,9 @@ public class Commands {
|
||||
if (time > 0) {
|
||||
Date date = new Date(time);
|
||||
String timeString = new SimpleDateFormat(config.getFormatTimeFormat()).format(date);
|
||||
if (StringParser.getInstance().containsIgnorecase(timeString, "YamlConfiguration")) {
|
||||
plugin.getLogger().warning("Detected issue parsing time, check time format");
|
||||
}
|
||||
return timeString;
|
||||
}
|
||||
return "";
|
||||
@@ -921,7 +924,7 @@ public class Commands {
|
||||
MessageBuilder message = new MessageBuilder(config.getFormatCommandsVoteURLS());
|
||||
message.replacePlaceholder("num", Integer.toString(counter)).replacePlaceholder("url", voteURL)
|
||||
.replacePlaceholder("SiteName", voteSite.getDisplayName())
|
||||
.replacePlaceholder("player", user.getPlayerName())
|
||||
.replacePlaceholder("player", "" + user.getPlayerName())
|
||||
.replacePlaceholder("Next", "" + voteCommandNextInfo(user, voteSite)).colorize();
|
||||
sites.add(message.getText());
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ public class PlayerGUIs {
|
||||
if (sec != null) {
|
||||
item = new ItemBuilder(sec);
|
||||
} else {
|
||||
item = new ItemBuilder(Material.PAPER, 1).setName("&8Back to VoteGUI");
|
||||
item = new ItemBuilder(Material.BARRIER, 1).setName("&8Back to VoteGUI");
|
||||
}
|
||||
|
||||
BInventoryButton b = new BInventoryButton(item) {
|
||||
@@ -309,6 +309,7 @@ public class PlayerGUIs {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
Player player = event.getWhoClicked();
|
||||
event.getButton().getInv().closeInv(player, null);
|
||||
|
||||
User user = UserManager.getInstance().getVotingPluginUser(player);
|
||||
user.clearCache();
|
||||
@@ -704,6 +705,10 @@ public class PlayerGUIs {
|
||||
}
|
||||
|
||||
public void openVoteURL(Player player, String voteSite) {
|
||||
if (!plugin.isVoteSite(voteSite)) {
|
||||
player.sendMessage("Not a valid votesite");
|
||||
return;
|
||||
}
|
||||
User user = UserManager.getInstance().getVotingPluginUser(player);
|
||||
VoteSite site = plugin.getVoteSite(voteSite);
|
||||
BInventory inv = new BInventory(StringParser.getInstance()
|
||||
|
||||
@@ -56,6 +56,10 @@ public class Config extends YMLFile {
|
||||
@ConfigDataBoolean(path = "Commands.VoteRewardFromVoteURL")
|
||||
@Getter
|
||||
private boolean commandsVoteRewardFromVoteURL = false;
|
||||
|
||||
@ConfigDataBoolean(path = "ExtraBackgroundUpdate")
|
||||
@Getter
|
||||
private boolean extraBackgroundUpdate = false;
|
||||
|
||||
@ConfigDataString(path = "Format.Commands.Vote.Last.TimeFormat", defaultValue = "%amount% %TimeType%")
|
||||
@Getter
|
||||
@@ -69,9 +73,9 @@ public class Config extends YMLFile {
|
||||
@Getter
|
||||
private String formatCommandsVoteLastNeverVoted;
|
||||
|
||||
@ConfigDataString(path = "Format.Commands.Vote.Last.LastVoted", defaultValue = "%times% ago")
|
||||
@ConfigDataString(path = "Format.Commands.Vote.Last.LastVoted")
|
||||
@Getter
|
||||
private String formatCommandsVoteLastLastVoted;
|
||||
private String formatCommandsVoteLastLastVoted = "%times% ago";
|
||||
|
||||
@ConfigDataString(path = "Format.TimeFormats.Days", defaultValue = "Days")
|
||||
@Getter
|
||||
@@ -125,6 +129,10 @@ public class Config extends YMLFile {
|
||||
@Getter
|
||||
private boolean addTotals = true;
|
||||
|
||||
@ConfigDataBoolean(path = "AlterColumns")
|
||||
@Getter
|
||||
private boolean alterColumns = true;
|
||||
|
||||
@Getter
|
||||
private String allSitesRewardPath = "AllSites";
|
||||
|
||||
@@ -207,6 +215,10 @@ public class Config extends YMLFile {
|
||||
@Getter
|
||||
private int convertDelay;
|
||||
|
||||
@ConfigDataInt(path = "ConvertAmount")
|
||||
@Getter
|
||||
private int convertAmount = 250;
|
||||
|
||||
@ConfigDataBoolean(path = "EnableDailyRewards")
|
||||
@Getter
|
||||
private boolean enableDailyRewards = false;
|
||||
@@ -223,6 +235,14 @@ public class Config extends YMLFile {
|
||||
@Getter
|
||||
private boolean disableNoServiceSiteMessage = false;
|
||||
|
||||
@ConfigDataListString(path = "DisabledDefaultPermissions")
|
||||
@Getter
|
||||
private ArrayList<String> disabledDefaultPermissions = new ArrayList<String>();
|
||||
|
||||
@ConfigDataBoolean(path = "VoteParty.ResetExtraVotesMonthly")
|
||||
@Getter
|
||||
private boolean votePartyResetExtraVotesMonthly = false;
|
||||
|
||||
@ConfigDataBoolean(path = "DisableAdvancedTab")
|
||||
@Getter
|
||||
private boolean disableAdvancedTab = false;
|
||||
@@ -311,11 +331,27 @@ public class Config extends YMLFile {
|
||||
@ConfigDataBoolean(path = "AllowUnJoinedCheckServer")
|
||||
@Getter
|
||||
private boolean allowUnJoinedCheckServer = true;
|
||||
|
||||
|
||||
@ConfigDataListString(path = "DisabledCommands")
|
||||
@Getter
|
||||
private ArrayList<String> disabledCommands = new ArrayList<String>();
|
||||
|
||||
@ConfigDataString(path = "BungeeServer.Host")
|
||||
@Getter
|
||||
private String bungeeServerHost = "";
|
||||
|
||||
@ConfigDataString(path = "SpigotServer.Host")
|
||||
@Getter
|
||||
private String spigotServerHost = "";
|
||||
|
||||
@ConfigDataInt(path = "BungeeServer.Port")
|
||||
@Getter
|
||||
private int bungeeServerPort = 1297;
|
||||
|
||||
@ConfigDataInt(path = "SpigotServer.Port")
|
||||
@Getter
|
||||
private int spigotServerPort = 1298;
|
||||
|
||||
/**
|
||||
* Instantiates a new config.
|
||||
*/
|
||||
|
||||
@@ -6,11 +6,14 @@ import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.Ben12345rocks.AdvancedCore.Util.Messages.StringParser;
|
||||
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
|
||||
import com.Ben12345rocks.AdvancedCore.YML.YMLFile;
|
||||
import com.Ben12345rocks.VotingPlugin.Main;
|
||||
@@ -65,6 +68,13 @@ public class ConfigVoteSites extends YMLFile {
|
||||
set(siteName, "Rewards.Messages.Player", "&aThanks for voting on %ServiceSite%!");
|
||||
|
||||
plugin.loadVoteSites();
|
||||
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
if (p.hasPermission("VotingPlugin.Admin.GenerateServiceSite")) {
|
||||
p.sendMessage(StringParser.getInstance().colorize("&cGenerating votesite for service site "
|
||||
+ siteName + ", please check console for details"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -70,5 +70,9 @@ public class PlayerVoteEvent extends Event {
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean bungee = false;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean forceBungee = false;
|
||||
|
||||
}
|
||||
@@ -8,7 +8,6 @@ import org.bukkit.event.Listener;
|
||||
import com.Ben12345rocks.AdvancedCore.Listeners.AdvancedCoreLoginEvent;
|
||||
import com.Ben12345rocks.AdvancedCore.UserManager.UserStorage;
|
||||
import com.Ben12345rocks.VotingPlugin.Main;
|
||||
import com.Ben12345rocks.VotingPlugin.Config.Config;
|
||||
import com.Ben12345rocks.VotingPlugin.Objects.User;
|
||||
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
|
||||
|
||||
@@ -52,9 +51,6 @@ public class PlayerJoinEvent implements Listener {
|
||||
}
|
||||
|
||||
boolean data = user.getData().hasData();
|
||||
if (Main.plugin.getOptions().isProcessRewards() && Config.getInstance().isUseBungeeCoord() && data) {
|
||||
user.bungeeVote();
|
||||
}
|
||||
|
||||
// run remind
|
||||
user.loginMessage();
|
||||
|
||||
@@ -99,7 +99,7 @@ public class PlayerVoteListener implements Listener {
|
||||
VoteParty.getInstance().vote(user, event.isRealVote());
|
||||
|
||||
// broadcast vote if enabled in config
|
||||
if (config.isBroadcastVotesEnabled()) {
|
||||
if (config.isBroadcastVotesEnabled() && (!Config.getInstance().isBungeeBroadcast() || !event.isBungee())) {
|
||||
if (!Config.getInstance().getFormatBroadcastWhenOnline() || user.isOnline()) {
|
||||
voteSite.broadcastVote(user);
|
||||
}
|
||||
@@ -124,7 +124,7 @@ public class PlayerVoteListener implements Listener {
|
||||
|
||||
if (((user.isOnline() || voteSite.isGiveOffline()) && Main.plugin.getOptions().isProcessRewards())
|
||||
|| event.isBungee()) {
|
||||
user.playerVote(voteSite, true, false, event.isBungee());
|
||||
user.playerVote(voteSite, true, false, event.isForceBungee());
|
||||
user.closeInv();
|
||||
} else {
|
||||
user.addOfflineVote(voteSite.getKey());
|
||||
|
||||
@@ -69,7 +69,7 @@ public class VotiferEvent implements Listener {
|
||||
}
|
||||
|
||||
plugin.getLogger()
|
||||
.info("Recieved a vote from service site '" + voteSite + "' by player '" + voteUsername + "'!");
|
||||
.info("Received a vote from service site '" + voteSite + "' by player '" + voteUsername + "'!");
|
||||
|
||||
plugin.debug("PlayerUsername: " + voteUsername);
|
||||
plugin.debug("VoteSite: " + voteSite);
|
||||
|
||||
@@ -137,6 +137,8 @@ public class Main extends AdvancedCorePlugin {
|
||||
@Getter
|
||||
private boolean ymlError = false;
|
||||
|
||||
private boolean votifierLoaded = true;
|
||||
|
||||
/**
|
||||
* Check votifier.
|
||||
*/
|
||||
@@ -144,8 +146,13 @@ public class Main extends AdvancedCorePlugin {
|
||||
try {
|
||||
Class.forName("com.vexsoftware.votifier.model.VotifierEvent");
|
||||
} catch (ClassNotFoundException e) {
|
||||
plugin.getLogger()
|
||||
.warning("No VotifierEvent found, install Votifier, NuVotifier, or another Votifier plugin");
|
||||
if (!Config.getInstance().isUseBungeeCoord()) {
|
||||
plugin.getLogger()
|
||||
.warning("No VotifierEvent found, install Votifier, NuVotifier, or another Votifier plugin");
|
||||
} else {
|
||||
plugin.debug("No VotifierEvent found, but usebungeecoord enabled");
|
||||
}
|
||||
votifierLoaded = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,7 +220,7 @@ public class Main extends AdvancedCorePlugin {
|
||||
|
||||
ArrayList<String> converted = new ArrayList<String>();
|
||||
int i = 0;
|
||||
while (i < 250 && i < uuids.size()) {
|
||||
while (i < Config.getInstance().getConvertAmount() && i < uuids.size()) {
|
||||
String uuid = uuids.get(i);
|
||||
try {
|
||||
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
|
||||
@@ -284,6 +291,15 @@ 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.
|
||||
*
|
||||
@@ -408,6 +424,18 @@ public class Main extends AdvancedCorePlugin {
|
||||
}
|
||||
}, 1000 * 60 * 10, 1000 * 60 * 5);
|
||||
|
||||
getTimer().schedule(new TimerTask() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (plugin != null && Config.getInstance().isExtraBackgroundUpdate()) {
|
||||
basicBungeeUpdate();
|
||||
} else {
|
||||
cancel();
|
||||
}
|
||||
}
|
||||
}, 1000, 1000 * 30);
|
||||
|
||||
}
|
||||
}, 40L);
|
||||
|
||||
@@ -748,7 +776,6 @@ public class Main extends AdvancedCorePlugin {
|
||||
@Override
|
||||
public void onPostLoad() {
|
||||
if (Config.getInstance().isUseBungeeCoord()) {
|
||||
registerBungeeChannels();
|
||||
BungeeHandler.getInstance().load();
|
||||
if (Config.getInstance().isUseBungeeCoord()) {
|
||||
if (getOptions().getServer().equalsIgnoreCase("PleaseSet")) {
|
||||
@@ -759,8 +786,8 @@ public class Main extends AdvancedCorePlugin {
|
||||
}
|
||||
|
||||
registerCommands();
|
||||
registerEvents();
|
||||
checkVotifier();
|
||||
registerEvents();
|
||||
CheckUpdate.getInstance().startUp();
|
||||
VoteReminding.getInstance().loadRemindChecking();
|
||||
plugin.signs = new ArrayList<SignHandler>();
|
||||
@@ -822,7 +849,7 @@ public class Main extends AdvancedCorePlugin {
|
||||
}
|
||||
|
||||
// set columns
|
||||
if (getStorageType().equals(UserStorage.MYSQL)) {
|
||||
if (getStorageType().equals(UserStorage.MYSQL) && Config.getInstance().isAlterColumns()) {
|
||||
getMysql().alterColumnType("TopVoterIgnore", "VARCHAR(5)");
|
||||
getMysql().alterColumnType("CheckWorld", "VARCHAR(5)");
|
||||
getMysql().alterColumnType("Reminded", "VARCHAR(5)");
|
||||
@@ -997,6 +1024,13 @@ public class Main extends AdvancedCorePlugin {
|
||||
}
|
||||
}, 0);
|
||||
HandlerList.unregisterAll(plugin);
|
||||
if (Config.getInstance().isUseBungeeCoord()) {
|
||||
try {
|
||||
BungeeHandler.getInstance().close();
|
||||
} catch (Exception e) {
|
||||
debug(e);
|
||||
}
|
||||
}
|
||||
plugin = null;
|
||||
}
|
||||
|
||||
@@ -1040,7 +1074,9 @@ public class Main extends AdvancedCorePlugin {
|
||||
PluginManager pm = getServer().getPluginManager();
|
||||
|
||||
pm.registerEvents(new PlayerJoinEvent(this), this);
|
||||
pm.registerEvents(new VotiferEvent(this), this);
|
||||
if (votifierLoaded) {
|
||||
pm.registerEvents(new VotiferEvent(this), this);
|
||||
}
|
||||
pm.registerEvents(new PlayerVoteListener(this), this);
|
||||
pm.registerEvents(new SignChange(this), this);
|
||||
pm.registerEvents(new BlockBreak(this), this);
|
||||
@@ -1139,12 +1175,10 @@ public class Main extends AdvancedCorePlugin {
|
||||
ServerData.getInstance().updateValues();
|
||||
Signs.getInstance().updateSigns();
|
||||
|
||||
boolean bungee = Config.getInstance().isUseBungeeCoord();
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
User user = UserManager.getInstance().getVotingPluginUser(player);
|
||||
user.offVote();
|
||||
if (bungee) {
|
||||
user.bungeeVote(false);
|
||||
if (!Config.getInstance().isExtraBackgroundUpdate()) {
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
User user = UserManager.getInstance().getVotingPluginUser(player);
|
||||
user.offVote();
|
||||
}
|
||||
}
|
||||
time1 = ((System.currentTimeMillis() - time) / 1000);
|
||||
@@ -1161,6 +1195,15 @@ 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);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.Ben12345rocks.VotingPlugin.Objects;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.util.ArrayList;
|
||||
@@ -222,26 +223,31 @@ public class User extends com.Ben12345rocks.AdvancedCore.UserManager.User {
|
||||
if (time == 0) {
|
||||
return true;
|
||||
}
|
||||
LocalDateTime now = TimeChecker.getInstance().getTime();
|
||||
LocalDateTime lastVote = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault())
|
||||
.plusHours(Main.plugin.getOptions().getTimeHourOffSet());
|
||||
try {
|
||||
LocalDateTime now = TimeChecker.getInstance().getTime();
|
||||
LocalDateTime lastVote = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault())
|
||||
.plusHours(Main.plugin.getOptions().getTimeHourOffSet());
|
||||
|
||||
if (!voteSite.isVoteDelayDaily()) {
|
||||
int votedelay = ConfigVoteSites.getInstance().getVoteDelay(siteName);
|
||||
if (!voteSite.isVoteDelayDaily()) {
|
||||
int votedelay = ConfigVoteSites.getInstance().getVoteDelay(siteName);
|
||||
|
||||
if (votedelay == 0) {
|
||||
if (votedelay == 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
LocalDateTime nextvote = lastVote.plusHours(votedelay);
|
||||
|
||||
return now.isAfter(nextvote);
|
||||
} else {
|
||||
if (now.getDayOfYear() != lastVote.getDayOfYear() || now.getYear() != lastVote.getYear()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
LocalDateTime nextvote = lastVote.plusHours(votedelay);
|
||||
|
||||
return now.isAfter(nextvote);
|
||||
} else {
|
||||
if (now.getDayOfYear() != lastVote.getDayOfYear() || now.getYear() != lastVote.getYear()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@@ -599,44 +605,39 @@ public class User extends com.Ben12345rocks.AdvancedCore.UserManager.User {
|
||||
.withPlaceHolder("votes", "" + getTotal(TopVoter.Weekly)).setOnline(isOnline()).send(this);
|
||||
}
|
||||
|
||||
public void bungeeVote() {
|
||||
bungeeVote(true);
|
||||
}
|
||||
|
||||
public void bungeeVote(boolean clearCache) {
|
||||
public void bungeeVote(String service) {
|
||||
if (Config.getInstance().isUseBungeeCoord()) {
|
||||
if (clearCache) {
|
||||
Main.plugin.getMysql().clearCache(getUUID());
|
||||
}
|
||||
Main.plugin.debug("Bungee vote for " + getPlayerName() + " on " + service);
|
||||
|
||||
checkBungeeData(getData().getString("Proxy_" + Main.plugin.getOptions().getServer()));
|
||||
getData().setString("Proxy_" + Main.plugin.getOptions().getServer(), "");
|
||||
PlayerVoteEvent voteEvent = new PlayerVoteEvent(plugin.getVoteSite(service), getPlayerName(), service,
|
||||
true);
|
||||
voteEvent.setBungee(true);
|
||||
voteEvent.setForceBungee(true);
|
||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
|
||||
|
||||
checkBungeeData(getData().getString("Proxy_Online"));
|
||||
getData().setString("Proxy_Online", "");
|
||||
@Override
|
||||
public void run() {
|
||||
plugin.getServer().getPluginManager().callEvent(voteEvent);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void checkBungeeData(String data) {
|
||||
if (!data.isEmpty()) {
|
||||
for (String serviceData : data.split("%line%")) {
|
||||
String[] d = serviceData.split("%time%");
|
||||
if (d.length == 2) {
|
||||
String service = d[0];
|
||||
String time = d[1];
|
||||
PlayerVoteEvent voteEvent = new PlayerVoteEvent(plugin.getVoteSite(service), getPlayerName(),
|
||||
service, false);
|
||||
voteEvent.setBungee(true);
|
||||
voteEvent.setTime(Long.parseLong(time));
|
||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
|
||||
public void bungeeVoteOnline(String service) {
|
||||
if (Config.getInstance().isUseBungeeCoord()) {
|
||||
Main.plugin.debug("Bungee online vote for " + getPlayerName() + " on " + service);
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
plugin.getServer().getPluginManager().callEvent(voteEvent);
|
||||
}
|
||||
});
|
||||
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);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -924,8 +925,8 @@ public class User extends com.Ben12345rocks.AdvancedCore.UserManager.User {
|
||||
break;
|
||||
case Monthly:
|
||||
if (Config.getInstance().isLimitMonthlyVotes()) {
|
||||
int days = TimeChecker.getInstance().getTime().getMonth().maxLength();
|
||||
if (value > days) {
|
||||
int days = LocalDate.now().lengthOfMonth();
|
||||
if (value >= days * plugin.getVoteSites().size()) {
|
||||
value = days * plugin.getVoteSites().size();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,8 +14,7 @@ import com.Ben12345rocks.AdvancedCore.Util.Item.ItemBuilder;
|
||||
import com.Ben12345rocks.AdvancedCore.Util.Messages.StringParser;
|
||||
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
|
||||
import com.Ben12345rocks.AdvancedCore.Util.Misc.MiscUtils;
|
||||
import com.Ben12345rocks.AdvancedCore.Util.Misc.PlayerUtils;
|
||||
import com.Ben12345rocks.AdvancedCore.Util.PluginMessage.PluginMessage;
|
||||
import com.Ben12345rocks.VotingPlugin.BungeeHandler;
|
||||
import com.Ben12345rocks.VotingPlugin.Main;
|
||||
import com.Ben12345rocks.VotingPlugin.Config.Config;
|
||||
import com.Ben12345rocks.VotingPlugin.Config.ConfigVoteSites;
|
||||
@@ -118,8 +117,7 @@ public class VoteSite {
|
||||
public void broadcastVote(User user, boolean checkBungee) {
|
||||
if (!user.isVanished()) {
|
||||
if (checkBungee && Config.getInstance().isBungeeBroadcast()) {
|
||||
PluginMessage.getInstance().sendPluginMessage(PlayerUtils.getInstance().getRandomPlayer(), "Broadcast",
|
||||
getServiceSite(), user.getPlayerName());
|
||||
BungeeHandler.getInstance().sendData("Broadcast", getServiceSite(), user.getPlayerName());
|
||||
} else {
|
||||
String playerName = user.getPlayerName();
|
||||
String bc = StringParser.getInstance().colorize(config.getFormatBroadCastMsg());
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.Ben12345rocks.VotingPlugin.Util.PlaceHolders;
|
||||
|
||||
import java.text.NumberFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Locale;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
@@ -236,6 +238,15 @@ public class PlaceHolders {
|
||||
}
|
||||
}.withDescription("User points"));
|
||||
|
||||
placeholders.add(new PlaceHolder<User>("Points_Format") {
|
||||
|
||||
@Override
|
||||
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
|
||||
NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US);
|
||||
return numberFormat.format(user.getPoints());
|
||||
}
|
||||
}.withDescription("User points"));
|
||||
|
||||
placeholders.add(new PlaceHolder<User>("CanVote") {
|
||||
|
||||
@Override
|
||||
|
||||
@@ -231,6 +231,10 @@ public class VoteParty implements Listener {
|
||||
if (Config.getInstance().getVotePartyResetMontly()) {
|
||||
reset();
|
||||
}
|
||||
|
||||
if (Config.getInstance().isVotePartyResetExtraVotesMonthly()) {
|
||||
ServerData.getInstance().setVotePartyExtraRequired(0);
|
||||
}
|
||||
}
|
||||
|
||||
public void register() {
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
package com.Ben12345rocks.VotingPlugin.bungee;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import com.Ben12345rocks.AdvancedCore.UserStorage.sql.DataType;
|
||||
import com.Ben12345rocks.AdvancedCore.Util.Encryption.EncryptionHandler;
|
||||
import com.Ben12345rocks.AdvancedCore.Util.Sockets.ClientHandler;
|
||||
import com.Ben12345rocks.AdvancedCore.Util.Sockets.SocketHandler;
|
||||
import com.Ben12345rocks.AdvancedCore.Util.Sockets.SocketReceiver;
|
||||
import com.vexsoftware.votifier.bungee.events.VotifierEvent;
|
||||
import com.vexsoftware.votifier.model.Vote;
|
||||
|
||||
import lombok.Getter;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
import net.md_5.bungee.api.event.PluginMessageEvent;
|
||||
import net.md_5.bungee.api.plugin.Plugin;
|
||||
import net.md_5.bungee.config.Configuration;
|
||||
import net.md_5.bungee.event.EventHandler;
|
||||
|
||||
public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listener {
|
||||
@@ -25,10 +25,15 @@ public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listene
|
||||
@Getter
|
||||
private BungeeMySQL mysql;
|
||||
|
||||
private SocketHandler socketHandler;
|
||||
|
||||
private HashMap<String, ClientHandler> clientHandles;
|
||||
|
||||
private EncryptionHandler encryptionHandler;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
getProxy().getPluginManager().registerListener(this, this);
|
||||
this.getProxy().registerChannel("VotingPlugin:VotingPlugin".toLowerCase());
|
||||
config = new Config(this);
|
||||
config.load();
|
||||
|
||||
@@ -60,6 +65,32 @@ public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listene
|
||||
getMysql().alterColumnType("LastMonthTotal", "INT DEFAULT '0'");
|
||||
|
||||
getProxy().getPluginManager().registerCommand(this, new VotingPluginBungeeCommand(this));
|
||||
encryptionHandler = new EncryptionHandler(new File(getDataFolder(), "secretkey.key"));
|
||||
|
||||
socketHandler = new SocketHandler(getDescription().getVersion(), config.getBungeeHost(), config.getBungeePort(),
|
||||
encryptionHandler);
|
||||
|
||||
socketHandler.add(new SocketReceiver() {
|
||||
|
||||
@Override
|
||||
public void onReceive(String[] data) {
|
||||
if (data.length > 2) {
|
||||
if (data[0].equalsIgnoreCase("Broadcast")) {
|
||||
sendServerMessage(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void reload() {
|
||||
@@ -67,35 +98,9 @@ public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listene
|
||||
}
|
||||
|
||||
@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();
|
||||
}
|
||||
}
|
||||
|
||||
public void onVote(VotifierEvent event) {
|
||||
Vote vote = event.getVote();
|
||||
getLogger().info("Vote received " + vote.getUsername() + " from service site " + vote.getServiceName());
|
||||
saveVote(vote.getUsername(), vote.getServiceName());
|
||||
}
|
||||
|
||||
@@ -115,43 +120,44 @@ public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listene
|
||||
String uuid = getUUID(name);
|
||||
|
||||
if (!uuid.isEmpty()) {
|
||||
String data = mysql.getProxyVotes(uuid, "online");
|
||||
String finalData = service + "%time%"
|
||||
+ LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
|
||||
if (data != null && !data.isEmpty()) {
|
||||
finalData = data + "%line%" + service + "%time%"
|
||||
+ LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
|
||||
}
|
||||
if (config.getSendVotesToAllServers()) {
|
||||
for (String send : getProxy().getServers().keySet()) {
|
||||
mysql.update(uuid, "Proxy_" + send, finalData, DataType.STRING);
|
||||
sendPluginMessage("bungeevote", uuid, name);
|
||||
// for (String send : getProxy().getServers().keySet()) {
|
||||
// mysql.update(uuid, "Proxy_" + send, finalData, DataType.STRING);
|
||||
// }
|
||||
sendServerMessage("bungeevote", uuid, name, service);
|
||||
if (config.getBroadcast()) {
|
||||
sendServerMessage("BungeeBroadcast", service, uuid, name);
|
||||
}
|
||||
} else if (config.getSendToOnlineServer()) {
|
||||
mysql.update(uuid, "Proxy_Online", finalData, DataType.STRING);
|
||||
sendPluginMessage("bungeevote", uuid, name);
|
||||
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();
|
||||
}
|
||||
// mysql.update(uuid, "Proxy_Online", finalData, DataType.STRING);
|
||||
sendServerMessageServer(server, "bungeevoteonline", uuid, name, service);
|
||||
if (config.getBroadcast()) {
|
||||
sendServerMessage("BungeeBroadcast", service, uuid, name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void sendPluginMessage(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);
|
||||
}
|
||||
for (String send : getProxy().getServers().keySet()) {
|
||||
if (getProxy().getServers().get(send).getPlayers().size() > 0) {
|
||||
getProxy().getServers().get(send).sendData("VotingPlugin:VotingPlugin".toLowerCase(),
|
||||
byteOutStream.toByteArray());
|
||||
}
|
||||
}
|
||||
out.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import lombok.Getter;
|
||||
import net.md_5.bungee.config.Configuration;
|
||||
@@ -54,7 +56,35 @@ public class Config {
|
||||
}
|
||||
|
||||
public boolean getSendToOnlineServer() {
|
||||
return getData().getBoolean("SendVotesToAllServers");
|
||||
return getData().getBoolean("SendToOnlineServer");
|
||||
}
|
||||
|
||||
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 String getFallBack() {
|
||||
return getData().getString("FallBackServer", "");
|
||||
}
|
||||
|
||||
public Configuration getSpigotServerConfiguration(String s) {
|
||||
return getData().getSection("SpigotServers." + s);
|
||||
}
|
||||
|
||||
}
|
||||
+16
-11
@@ -8,24 +8,29 @@ public class VotingPluginBungeeCommand extends Command {
|
||||
private Bungee bungee;
|
||||
|
||||
public VotingPluginBungeeCommand(Bungee bungee) {
|
||||
super("votingpluginbungee");
|
||||
super("votingpluginbungee", "votingplugin.admin");
|
||||
this.bungee = bungee;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
if (args.length > 0) {
|
||||
if (args[0].equalsIgnoreCase("reload")) {
|
||||
bungee.reload();
|
||||
sender.sendMessage(new TextComponent("Reloading VotingPluginBungee"));
|
||||
}
|
||||
if (args[0].equalsIgnoreCase("vote")) {
|
||||
if (args.length >= 2) {
|
||||
String user = args[1];
|
||||
String site = args[2];
|
||||
bungee.saveVote(user, site);
|
||||
if (sender.hasPermission("votingplugin.admin")) {
|
||||
if (args.length > 0) {
|
||||
if (args[0].equalsIgnoreCase("reload")) {
|
||||
bungee.reload();
|
||||
sender.sendMessage(new TextComponent("Reloading VotingPluginBungee"));
|
||||
}
|
||||
if (args[0].equalsIgnoreCase("vote")) {
|
||||
if (args.length >= 2) {
|
||||
String user = args[1];
|
||||
String site = args[2];
|
||||
bungee.saveVote(user, site);
|
||||
sender.sendMessage(new TextComponent("Sending vote"));
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(new TextComponent("You do not have permission to do this!"));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user