Compare commits

..
158 Commits
Author SHA1 Message Date
BenCodez 050bfb3055 Update version number to 6.16.2 2024-05-26 16:31:33 -04:00
BenCodez 3ce40de5f6 Update utils classes 2024-05-20 15:19:00 -04:00
BenCodez 095cd2a422 Update imports 2024-05-20 14:45:26 -04:00
BenCodez 5e7cc2b7ad Add relocation to pom.xml 2024-05-20 14:02:55 -04:00
BenCodez 38c61ce669 Update imports 2024-05-20 13:50:11 -04:00
BenCodez 9de71167ec Update imports 2024-05-20 13:16:18 -04:00
BenCodez e8b9c9fbc2 Update imports 2024-05-20 12:46:40 -04:00
BenCodez 60ac9fcd46 Use newer classes 2024-05-20 10:37:14 -04:00
BenCodez a0d334c88b Fix minor spacing error 2024-05-07 19:14:30 -04:00
BenCodez b90b4964e4 Add relocation pattern to fix javadoc 2024-05-07 19:02:00 -04:00
BenCodez a0fbdaa2a0 Update version number to 6.16.1 2024-05-07 18:58:14 -04:00
BenCodez 17066cb679 Stop background timer on velocity on shutdown 2024-05-06 16:04:00 -04:00
Ben 9eb1ba82af Merge pull request #1352 from BenCodez/dependabot/maven/VotingPlugin/org.apache.maven.plugins-maven-deploy-plugin-3.1.2
Bump org.apache.maven.plugins:maven-deploy-plugin from 3.1.1 to 3.1.2 in /VotingPlugin
2024-05-06 15:48:27 -04:00
dependabot[bot] 06b12c9599 Bump org.apache.maven.plugins:maven-deploy-plugin in /VotingPlugin
Bumps [org.apache.maven.plugins:maven-deploy-plugin](https://github.com/apache/maven-deploy-plugin) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/apache/maven-deploy-plugin/releases)
- [Commits](https://github.com/apache/maven-deploy-plugin/compare/maven-deploy-plugin-3.1.1...maven-deploy-plugin-3.1.2)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-deploy-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-06 06:19:25 +00:00
BenCodez fe277d8bfd Update version number to 6.16 2024-05-05 13:30:18 -04:00
BenCodez 86cba23568 Add lastmonth position placeholder 2024-05-01 20:17:42 -04:00
BenCodez 5a6140020f Merge branch 'master' of https://github.com/BenCodez/VotingPlugin 2024-05-01 16:15:13 -04:00
BenCodez cb203edecf Update to 1.20.6 2024-04-30 21:13:21 -04:00
Ben 5510e3bb98 Merge pull request #1350 from BenCodez/dependabot/maven/VotingPlugin/org.apache.maven.plugins-maven-shade-plugin-3.5.3
Bump org.apache.maven.plugins:maven-shade-plugin from 3.5.2 to 3.5.3 in /VotingPlugin
2024-04-29 16:07:56 -04:00
dependabot[bot] 470c52e6e3 Bump org.apache.maven.plugins:maven-shade-plugin in /VotingPlugin
Bumps [org.apache.maven.plugins:maven-shade-plugin](https://github.com/apache/maven-shade-plugin) from 3.5.2 to 3.5.3.
- [Release notes](https://github.com/apache/maven-shade-plugin/releases)
- [Commits](https://github.com/apache/maven-shade-plugin/compare/maven-shade-plugin-3.5.2...maven-shade-plugin-3.5.3)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-shade-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-29 06:53:18 +00:00
BenCodez 03e4c2165e Fix command casing 2024-04-28 14:50:10 -04:00
BenCodez 45d617106b Fix issues with command aliases not always working 2024-04-28 14:09:48 -04:00
BenCodez 58869742bc Update to 1.20.5 2024-04-23 19:34:57 -04:00
Ben a8841ca732 Merge pull request #1348 from BenCodez/dependabot/maven/VotingPlugin/org.apache.maven.plugins-maven-jar-plugin-3.4.1
Bump org.apache.maven.plugins:maven-jar-plugin from 3.4.0 to 3.4.1 in /VotingPlugin
2024-04-22 16:50:25 -04:00
dependabot[bot] 96ef82aef0 Bump org.apache.maven.plugins:maven-jar-plugin in /VotingPlugin
Bumps [org.apache.maven.plugins:maven-jar-plugin](https://github.com/apache/maven-jar-plugin) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/apache/maven-jar-plugin/releases)
- [Commits](https://github.com/apache/maven-jar-plugin/compare/maven-jar-plugin-3.4.0...maven-jar-plugin-3.4.1)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-jar-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-22 06:44:29 +00:00
BenCodez 5a33b5b892 Changes to almostallsites rewards trigger 2024-04-18 16:57:50 -04:00
Ben ed2fb77a7b Merge pull request #1347 from BenCodez/dependabot/maven/VotingPlugin/org.apache.maven.plugins-maven-jar-plugin-3.4.0
Bump org.apache.maven.plugins:maven-jar-plugin from 3.3.0 to 3.4.0 in /VotingPlugin
2024-04-15 16:42:58 -04:00
dependabot[bot] 8a1c820e42 Bump org.apache.maven.plugins:maven-jar-plugin in /VotingPlugin
Bumps [org.apache.maven.plugins:maven-jar-plugin](https://github.com/apache/maven-jar-plugin) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/apache/maven-jar-plugin/releases)
- [Commits](https://github.com/apache/maven-jar-plugin/compare/maven-jar-plugin-3.3.0...maven-jar-plugin-3.4.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-jar-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-15 06:39:42 +00:00
BenCodez 43c5419453 Add additional debug for almostallsites reward 2024-04-14 14:14:51 -04:00
BenCodez 4f2caf67d0 Fix issue with conditional items and rewards in VoteGUI 2024-04-13 08:22:09 -04:00
BenCodez 8b17e43ce0 Adjustments to getting votesites 2024-04-10 20:24:39 -04:00
BenCodez 05db0b189b Add /av correctservicesites command 2024-04-09 20:48:25 -04:00
BenCodez 93f91923bb Slightly adjust vote next time caculations for votedailydaily sites 2024-04-09 17:09:09 -04:00
BenCodez 6dca3ad152 Slight change vote next time caculation 2024-04-07 13:14:59 -04:00
BenCodez 637db5afdb Changes to placeholders 2024-04-06 20:03:14 -04:00
BenCodez 029fa00e3a Fix typo 2024-04-06 19:46:11 -04:00
BenCodez e1bb95c482 Use only enabled votesites for monthly total 2024-04-06 15:58:17 -04:00
BenCodez 667b1b082d change log message to debug 2024-03-29 14:11:09 -04:00
BenCodez 2097fc4b86 Add new advanced service site handling feature, experimental 2024-03-28 20:53:29 -04:00
Ben 49d20c0bc8 Merge pull request #1341 from BenCodez/dependabot/maven/VotingPlugin/org.projectlombok-lombok-1.18.32
Bump org.projectlombok:lombok from 1.18.30 to 1.18.32 in /VotingPlugin
2024-03-25 16:47:05 -04:00
dependabot[bot] fe2ac4f02c Bump org.projectlombok:lombok from 1.18.30 to 1.18.32 in /VotingPlugin
Bumps [org.projectlombok:lombok](https://github.com/projectlombok/lombok) from 1.18.30 to 1.18.32.
- [Changelog](https://github.com/projectlombok/lombok/blob/master/doc/changelog.markdown)
- [Commits](https://github.com/projectlombok/lombok/compare/v1.18.30...v1.18.32)

---
updated-dependencies:
- dependency-name: org.projectlombok:lombok
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-25 06:29:20 +00:00
BenCodez 4859c37ef8 Fix status command on velocity not working 2024-03-23 22:13:28 -04:00
BenCodez c818007426 Fix issue with multi-proxy redis on velocity 2024-03-23 20:48:31 -04:00
Ben c86f07aeb6 Create FUNDING.yml 2024-03-22 16:57:09 -04:00
BenCodez 0a74e338c2 More fixes for cooldown events 2024-03-19 21:15:04 -04:00
BenCodez d1dc8b392f Added neededvotes placeholder to broadcast 2024-03-17 17:35:02 -04:00
BenCodez bd5234b479 Adjustments to vote delay daily can vote caculations 2024-03-16 14:58:04 -04:00
BenCodez cca9e3dc58 Added votesrequired placeholder to broadcasts 2024-03-16 08:38:52 -04:00
BenCodez c3df294ce6 Changes for vote delay daily sites issues 2024-03-15 17:04:15 -04:00
BenCodez d81a113240 More changes to cooldown events 2024-03-12 20:45:36 -04:00
BenCodez f2feafa45a Changes to cooldown checks 2024-03-12 20:37:58 -04:00
BenCodez f63a743c2c Change default displayitem material on auto generated votesites 2024-03-09 19:51:12 -05:00
BenCodez 2d9c6482fc Add placeholders for time until month and week changes 2024-03-09 19:46:18 -05:00
BenCodez 448a9eeea9 Add placeholderapi placeholder %votingplugin_sitesavailable% 2024-03-08 18:48:52 -05:00
BenCodez c8e32696af Adjustments to cooldown checks 2024-03-06 20:49:56 -05:00
BenCodez 36eb6eafb3 Add votedelay and votehour placeholders 2024-03-05 19:03:05 -05:00
BenCodez 040fafe33a Add better handling of more than 2 proxies in multi-proxy setup 2024-03-03 14:43:13 -05:00
BenCodez 040e467761 Fix issue with new placeholder not always working 2024-02-29 19:08:01 -05:00
BenCodez e0d28be260 Fix typo in debug 2024-02-28 19:33:57 -05:00
BenCodez 1ef2440bf9 Add more placeholders to VoteURL GUI 2024-02-28 19:07:25 -05:00
Ben 2a5d5d3bea Merge pull request #1336 from Melon-Oof/master
Update BungeeSettings.yml
2024-02-27 16:39:55 -05:00
Melon-Oof 419153d654 Update BungeeSettings.yml 2024-02-27 17:14:21 +01:00
Ben ed8c504c27 Merge pull request #1335 from BenCodez/dependabot/maven/VotingPlugin/org.apache.maven.plugins-maven-shade-plugin-3.5.2
Bump org.apache.maven.plugins:maven-shade-plugin from 3.5.1 to 3.5.2 in /VotingPlugin
2024-02-26 16:47:58 -05:00
dependabot[bot] 2c29f11a8b Bump org.apache.maven.plugins:maven-shade-plugin in /VotingPlugin
Bumps [org.apache.maven.plugins:maven-shade-plugin](https://github.com/apache/maven-shade-plugin) from 3.5.1 to 3.5.2.
- [Release notes](https://github.com/apache/maven-shade-plugin/releases)
- [Commits](https://github.com/apache/maven-shade-plugin/compare/maven-shade-plugin-3.5.1...maven-shade-plugin-3.5.2)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-shade-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-26 06:30:21 +00:00
BenCodez c442cd1deb Add ability to set prefix for redis channels 2024-02-23 20:46:03 -05:00
BenCodez 770e3e866c First implementation of multi-proxy redis 2024-02-23 20:30:32 -05:00
BenCodez 4014046444 Save vote cache file more often on proxy 2024-02-21 19:11:16 -05:00
BenCodez 6f378297dd Recode of multi-proxy backend for prep of redis multi-proxy 2024-02-18 20:24:05 -05:00
BenCodez 1c5c33be6a Update version number to 6.15.1 2024-02-17 20:33:16 -05:00
BenCodez 206665a40b Fix rare ConcurrentModificationException 2024-02-17 15:03:39 -05:00
BenCodez 159eb54e4e Fixed issue with used percentage for vote streaks not working 2024-02-11 13:43:15 -05:00
BenCodez f63ab7b693 Added more debug to votestreak 2024-02-10 08:07:16 -05:00
BenCodez 97e5f73774 Add new merge command to combine user totals 2024-02-05 20:30:57 -05:00
BenCodez 9f85149776 Add players to non voted cache before checking if they are online 2024-02-03 21:34:02 -05:00
BenCodez d6fa68dead Force mutli-proxy login message regardless of allowunjoined setting 2024-02-03 19:12:40 -05:00
BenCodez 5e42fdbfbe Fix remove offline uuids command 2024-02-02 20:25:24 -05:00
BenCodez 9b20d1754b Changes to rmeoveofflineuuids command 2024-02-02 19:50:49 -05:00
BenCodez d310fa3688 Add command to remove offline uuids from database 2024-02-02 19:33:43 -05:00
Ben 7ab3e8040c Merge pull request #1330 from NahuLD/patch-1
Fix issue with RedisHandler initialization utilizing wrong parameters
2024-02-02 10:10:09 -05:00
Nahuel Dolores 5173c24546 Fix issue with RedisHandler initialization utilizing wrong parameters 2024-02-02 10:21:03 -03:00
BenCodez 0c1cccfdcd Save reminds on toggle reminders command 2024-01-31 20:57:05 -05:00
BenCodez d36cd47597 Fix default config for vote reminding comments 2024-01-28 16:42:18 -05:00
BenCodez 6f34d11138 Add extra checks for milestones on proxy setups 2024-01-28 13:53:12 -05:00
Ben bf3f7bb6ad Merge pull request #1328 from BenCodez/dependabot/maven/VotingPlugin/net.md-5-bungeecord-api-1.20-R0.2
Bump net.md-5:bungeecord-api from 1.20-R0.1 to 1.20-R0.2 in /VotingPlugin
2024-01-22 16:51:53 -05:00
dependabot[bot] 28f74aa50a Bump net.md-5:bungeecord-api in /VotingPlugin
Bumps [net.md-5:bungeecord-api](https://github.com/SpigotMC/BungeeCord) from 1.20-R0.1 to 1.20-R0.2.
- [Commits](https://github.com/SpigotMC/BungeeCord/commits)

---
updated-dependencies:
- dependency-name: net.md-5:bungeecord-api
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-22 06:47:54 +00:00
BenCodez dc3c605315 Bypass fake votes for WaitUntilVoteDelay 2023-12-31 15:22:44 -05:00
BenCodez 5abc8004c7 Add option to reset extra votes required weekly 2023-12-31 13:43:24 -05:00
BenCodez bf1e971edd Add bypass permission for waituntilvotedelay 2023-12-31 12:55:30 -05:00
BenCodez 37c767dc74 Update version number to 6.15 2023-12-26 10:25:49 -05:00
BenCodez 8257b4f7f6 Add option to not hide voteshop item with no permission 2023-12-16 19:47:13 -05:00
BenCodez 0340f4512e Handle multi-proxy logins on velocity like bungee 2023-12-16 19:16:16 -05:00
BenCodez c45ce0d090 Fix a minor issue on velocity for redis 2023-12-13 19:58:14 -05:00
BenCodez add3dcaa26 Initial implementation of redis bungee method 2023-12-13 19:56:44 -05:00
BenCodez 4a88b10e61 Fix gotten milestones not resetting if per server milestones enabled 2023-12-12 17:55:32 -05:00
BenCodez 7001d0f7fc Update to 1.20.3 2023-12-05 19:04:31 -05:00
Ben fdf72b14eb Merge pull request #1318 from BenCodez/dependabot/maven/VotingPlugin/org.apache.maven.plugins-maven-javadoc-plugin-3.6.3
Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.2 to 3.6.3 in /VotingPlugin
2023-12-04 17:36:45 -05:00
dependabot[bot] 830de0388a Bump org.apache.maven.plugins:maven-javadoc-plugin in /VotingPlugin
Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.6.2 to 3.6.3.
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.6.2...maven-javadoc-plugin-3.6.3)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-javadoc-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-04 06:52:55 +00:00
BenCodez 4a77c6bdd3 Add DisableReminders placeholder 2023-12-02 20:32:06 -05:00
BenCodez 579844f193 Save vote reminding toggles across restarts 2023-12-01 21:34:06 -05:00
BenCodez 4c6073c02a Add checks to matching server name in BungeeSettings.yml 2023-12-01 20:23:21 -05:00
Ben b1eb591e20 Merge pull request #1315 from NotAlexNoyle/master
Apply license to project root
2023-11-24 17:47:03 -05:00
NotAlexNoyle f5ee776586 Apply license to project root 2023-11-24 21:26:07 +01:00
BenCodez a2bf7c3dfc Update version number to 6.14.2 2023-11-19 19:07:25 -05:00
BenCodez 0543a91c5a Remove deprecated api 2023-11-17 18:34:36 -05:00
Ben d88868c4f7 Merge pull request #1312 from BenCodez/dependabot/maven/VotingPlugin/org.apache.maven.plugins-maven-javadoc-plugin-3.6.2
Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.0 to 3.6.2 in /VotingPlugin
2023-11-13 18:30:35 -05:00
dependabot[bot] 86dc52f131 Bump org.apache.maven.plugins:maven-javadoc-plugin in /VotingPlugin
Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.6.0 to 3.6.2.
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.6.0...maven-javadoc-plugin-3.6.2)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-javadoc-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-13 06:24:14 +00:00
BenCodez f7d88a26ef Handle allowunjoined disabled on multi-proxy setup 2023-11-05 20:16:52 -05:00
BenCodez ab1468d03a Changes to bedrock player support 2023-10-30 20:01:24 -04:00
Ben 3c65365b83 Merge pull request #1311 from BenCodez/dependabot/maven/VotingPlugin/me.clip-placeholderapi-2.11.5
Bump me.clip:placeholderapi from 2.11.4 to 2.11.5 in /VotingPlugin
2023-10-30 17:38:13 -04:00
dependabot[bot] bfefbb59d6 Bump me.clip:placeholderapi from 2.11.4 to 2.11.5 in /VotingPlugin
Bumps me.clip:placeholderapi from 2.11.4 to 2.11.5.

---
updated-dependencies:
- dependency-name: me.clip:placeholderapi
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-30 06:06:35 +00:00
BenCodez 9d74b5e428 Changes to handling ignoring bungee time change votes 2023-10-23 19:42:16 -04:00
BenCodez f131ce948c Force update placeholders on every vote to prevent issues 2023-10-22 12:45:09 -04:00
BenCodez 1a78a23e7c Shorten shutdown time 2023-10-17 16:52:35 -04:00
BenCodez 16cdfec4d5 Add player placeholder to vote reminder broadcast for voteparty 2023-10-13 16:49:45 -04:00
BenCodez 243300534c Add vote reminder broadcasts to vote party, WIP 2023-10-12 20:04:02 -04:00
BenCodez ea646b8e6f Ignore daily total for max amount of votes per day option 2023-10-08 12:34:07 -04:00
BenCodez bd5532aa71 Add vote limit feature to proxy setup 2023-10-05 20:55:20 -04:00
BenCodez be033793c2 Changes to limit monthly votes 2023-10-04 16:50:10 -04:00
BenCodez 28ce76bc60 Allow limit monthly votes to work on PLUGINMESSAGING 2023-10-01 16:36:10 -04:00
BenCodez 10732ee978 Limit monthly votes each day instead of at the end of the month 2023-10-01 13:54:05 -04:00
BenCodez 7deccf2e26 Minor changes to voteparty on proxy setup 2023-09-26 16:50:28 -04:00
Ben 8873fc8263 Merge pull request #1302 from BenCodez/dependabot/maven/VotingPlugin/me.clip-placeholderapi-2.11.4
Bump me.clip:placeholderapi from 2.11.3 to 2.11.4 in /VotingPlugin
2023-09-25 16:45:05 -04:00
Ben aaaaf2c670 Merge pull request #1303 from BenCodez/dependabot/maven/VotingPlugin/org.projectlombok-lombok-1.18.30
Bump org.projectlombok:lombok from 1.18.28 to 1.18.30 in /VotingPlugin
2023-09-25 16:44:50 -04:00
Ben 1e8421f83f Merge pull request #1304 from BenCodez/dependabot/maven/VotingPlugin/org.apache.maven.plugins-maven-shade-plugin-3.5.1
Bump org.apache.maven.plugins:maven-shade-plugin from 3.5.0 to 3.5.1 in /VotingPlugin
2023-09-25 16:44:45 -04:00
dependabot[bot] a29a7bf5c3 Bump org.apache.maven.plugins:maven-shade-plugin in /VotingPlugin
Bumps [org.apache.maven.plugins:maven-shade-plugin](https://github.com/apache/maven-shade-plugin) from 3.5.0 to 3.5.1.
- [Release notes](https://github.com/apache/maven-shade-plugin/releases)
- [Commits](https://github.com/apache/maven-shade-plugin/compare/maven-shade-plugin-3.5.0...maven-shade-plugin-3.5.1)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-shade-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-25 06:33:21 +00:00
dependabot[bot] fae67a49ce Bump org.projectlombok:lombok from 1.18.28 to 1.18.30 in /VotingPlugin
Bumps [org.projectlombok:lombok](https://github.com/projectlombok/lombok) from 1.18.28 to 1.18.30.
- [Changelog](https://github.com/projectlombok/lombok/blob/master/doc/changelog.markdown)
- [Commits](https://github.com/projectlombok/lombok/compare/v1.18.28...v1.18.30)

---
updated-dependencies:
- dependency-name: org.projectlombok:lombok
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-25 06:33:11 +00:00
dependabot[bot] c48a0c1083 Bump me.clip:placeholderapi from 2.11.3 to 2.11.4 in /VotingPlugin
Bumps me.clip:placeholderapi from 2.11.3 to 2.11.4.

---
updated-dependencies:
- dependency-name: me.clip:placeholderapi
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-25 06:33:05 +00:00
BenCodez 37e29b8643 Update version number to 6.14.1 2023-09-23 20:42:13 -04:00
BenCodez f683cc66c1 Update to 1.20.2 2023-09-22 19:54:16 -04:00
BenCodez 2059832df8 Small change to bungee all sites reward 2023-09-18 19:24:52 -04:00
Ben bda5e61898 Merge pull request #1299 from BenCodez/dependabot/maven/VotingPlugin/org.apache.maven.plugins-maven-javadoc-plugin-3.6.0
Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.5.0 to 3.6.0 in /VotingPlugin
2023-09-18 16:53:46 -04:00
dependabot[bot] dcb5f67ba8 Bump org.apache.maven.plugins:maven-javadoc-plugin in /VotingPlugin
Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.5.0 to 3.6.0.
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.5.0...maven-javadoc-plugin-3.6.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-javadoc-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-18 06:23:29 +00:00
BenCodez e6065f85cc Adjust allsites check for bungee a bit 2023-09-17 15:18:17 -04:00
BenCodez e0d3d36349 Add option to give extra allsites rewards when on PLUGINMESSAGING 2023-09-17 14:49:57 -04:00
BenCodez ab4d2069eb A lot of internal changes 2023-09-17 13:01:53 -04:00
BenCodez 84f8f9073d Adjustments to cooldown rewards checking 2023-09-10 20:02:31 -04:00
BenCodez 1e9828f594 Adjust cooldown checks a bit more 2023-09-09 21:16:37 -04:00
BenCodez a01050125b Make sure reset time is exactly the right second 2023-09-09 21:13:25 -04:00
BenCodez 60957be6fe Delay votesite cooldown checks a bit 2023-09-09 21:03:35 -04:00
BenCodez a2b094f7d8 Change some debug messages to log messages temporary 2023-09-09 08:49:53 -04:00
BenCodez 56e9705a6e Adjust cooldown checks slightly 2023-09-07 17:24:57 -04:00
BenCodez ad62da3221 Changes to placeholder caching 2023-09-05 21:15:10 -04:00
BenCodez c1421d6324 Add more placeholder cache updates on bungee votes 2023-09-05 20:51:43 -04:00
BenCodez 068c2b704e Add luckperms to softdepend 2023-09-05 17:21:16 -04:00
BenCodez 89d21044d2 Small code cleanup 2023-09-03 21:22:47 -04:00
BenCodez 98246613ca Remove debug messages 2023-09-03 21:22:19 -04:00
BenCodez ee884ee06a More fixes for vote cooldown events/rewards 2023-09-03 21:19:45 -04:00
BenCodez 355ca2cdf0 Add placeholders for last month top voters 2023-09-03 19:54:32 -04:00
BenCodez abc37be619 Small changes to account for using placeholder cache on next placeholder 2023-09-03 14:28:01 -04:00
BenCodez 20d9c08630 Edit votesites.yml comments slightly for new option 2023-09-03 14:15:54 -04:00
BenCodez 523c9e4ef9 Add gui editing ability for VoteDelayDailyHour 2023-09-03 14:14:52 -04:00
BenCodez 76b19f7fb3 Use new VoteDelayDailyHour option to fix issues with vote delay daily 2023-09-03 14:10:33 -04:00
BenCodez d776d0d798 Delay opening voteshop confirm slightly 2023-09-03 12:33:34 -04:00
BenCodez b63da09fe8 Add command to force check cooldown rewards 2023-09-01 19:29:40 -04:00
BenCodez d626210804 Changes to cooldown rewards checking 2023-09-01 19:26:38 -04:00
BenCodez 777c198471 Small changes to cool down checks 2023-08-30 20:15:43 -04:00
BenCodez dbd52a9114 Slight modifications to cooldown checks 2023-08-28 17:10:47 -04:00
BenCodez 3208b865e6 Removed config auto update option 2023-08-27 15:21:06 -04:00
84 changed files with 2975 additions and 1296 deletions

No files matched your search

+14
View File
@@ -0,0 +1,14 @@
# These are supported funding model platforms
github: BenCodez # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
#patreon: # Replace with a single Patreon username
#open_collective: # Replace with a single Open Collective username
#ko_fi: # Replace with a single Ko-fi username
#tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
#community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
#liberapay: # Replace with a single Liberapay username
#issuehunt: # Replace with a single IssueHunt username
#lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
#polar: # Replace with a single Polar username
#buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
custom: ["https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=YQBX25RTXJ5DG"]
File renamed without changes.
+1
View File
@@ -5,3 +5,4 @@
/*.iml
/.settings/
/.classpath
/.factorypath
+18
View File
@@ -14,8 +14,19 @@ UseBungeecord: false
# SOCKETS
# PLUGINMESSAGING (Recommended)
# MYSQL
# REDIS (2nd Most Recommended)
BungeeMethod: PLUGINMESSAGING
# Use Redis for between server communication, set BungeeMethod to REDIS to use this
Redis:
Host: localhost
Port: 6379
# To get the user name, run redis-cli, if you set a password, run "auth <your password>" and if the out put is "OK" run "ACL USERS"
Username: 'default'
Password: ''
# Set a prefix from an entire proxy network if using multi-proxy setup below
Prefix: ''
# Enables more debug messages for communication between servers
# Use /votingpluginbungee status for testing communication
BungeeDebug: false
@@ -52,6 +63,13 @@ PerServerPoints: false
# Should allow some compability with other plugins
TriggerVotifierEvent: false
# If enabled plugin will give extra allsites reward if deterimned that it should
# E.g. user votes offline for 7 days, they will only get 1 allsites reward by default
# When enabled, they should get 7
# Only applies to PLUGINMESSAGING
# Recommend enabling ExtraAllSitesCheck in config.yml as well
GiveExtraAllSitesRewards: false
# What server this is in bungee (must match)
# Also can be applied to rewards
Server: PleaseSet
+12 -15
View File
@@ -50,7 +50,7 @@ VoteReminding:
# Requires VoteDelays to be setup properly
# Use /vote next to see when you can be reminded
# Players require the perm "VotingPlugin.Login.RemindVotes" or "VotingPlugin.Player"
# To remind if any votesite is available (rather than all) use the permission "VotingPlugin.Login.RemindVotes.Any"
# To remind if all votesites are available (rather than any) use the permission "VotingPlugin.Login.RemindVotes.All"
Enabled: true
# Will remind player on login if he can vote
@@ -517,6 +517,12 @@ QueueVotesDuringTimeChange: false
# Most cases this will work all the time
AutoCreateVoteSites: true
# Experiemtental feature
# Uses https://github.com/BenCodez/VotingPlugin/wiki/Minecraft-Server-Lists
# Not all voting sites use the domain name as the service sites
# This feature is an attempt to ease setup for new users by matching domain name to actual service site
AdvancedServiceSiteHandling: false
# Set this to false to disable the plugin adding totals
# Not really recommended
AddTotals: true
@@ -530,13 +536,11 @@ UseVoteStreaks: true
# If false, storing best totals will be disabled
UseHighestTotals: true
# Enable Geyser prefix support
# May take time before geyser players can vote properly
# If players vote with prefix, then this is probably not needed and
# may work better disabled
# Geyser support is currently hit or miss
GeyserPrefixSupport: false
GeyserPrefix: '*'
# Geyser/Bedrock player support
# Set prefix used for voting
# Players should vote with prefix
# https://github.com/BenCodez/VotingPlugin/wiki/Bedrock-Player-Support
BedrockPlayerPrefix: '.'
# Whether or not to create daily backups. (Only the most recent ones get kept)
CreateBackups: true
@@ -576,13 +580,6 @@ DefaultRewardWorlds: []
# Default blackedlisted worlds set for all rewards
DefaultRewardBlackListedWorlds: []
# If enabled Config.yml will add new options as they are added to default file
# Expiremental at this time, make backups
# Still a WIP, DO NOT USE IN LIVE SERVERS
# Use /av config update to do manual update if you so desire
# Config backup will be made
AutoConfigUpdating: false
###########################################
# Skull settings
###########################################
+3 -1
View File
@@ -71,7 +71,7 @@ CHEST:
Name: '&4Vote Shop'
Lore:
- '&aYou currently have %points% points'
# 'ExtraName' below is an identifier, can be whatever
# 'ExtraItem' below is an identifier, can be whatever
# ExtraItem:
# Item:
# Material: 'DIRT'
@@ -335,6 +335,8 @@ CHEST:
Cost: 3
# Permission required, leave blank for no permission
Permission: ''
# Hide if player doesn't have permission (only if permission is set)
HideOnNoPermission: true
# Whether or not to keep GUI open after purchase
CloseGUI: true
# Require confirmation on purchase, overrides global option above
+7 -1
View File
@@ -83,7 +83,9 @@ VoteParty:
OnlyOncePerDay: false
# If true, will give voteparty once per week only
OnlyOncePerWeek: false
# Reset extra votes
# Reset extra votes weekly
ResetExtraVotesWeekly: false
# Reset extra votes monthly
ResetExtraVotesMonthly: false
# Count votes from /av vote?
CountFakeVotes: true
@@ -93,6 +95,10 @@ VoteParty:
CountOfflineVotes: true
# Broadcast when vote party reached
Broadcast: '&cReached the vote party amount!'
# Send a broadcast at a certain number of votes left and send a vote reminder
VoteReminderBroadcast: '%votesrequired% left to go, go vote!'
# List of votes required amounts for when to send vote party reminders
VoteReminderAtVotes: []
# List of commands to execute, these only execute once.
# %player% does not work here
GlobalCommands: []
+7 -3
View File
@@ -38,6 +38,7 @@ VoteSites:
VoteDelay: 24
# Use to have a minute votedelay
# Must set a value on VoteDelay if you plan on only using this setting
#VoteDelayMin: 30
# Require waiting until votedelay time has pasted in order to accept vote
@@ -48,8 +49,11 @@ VoteSites:
# Recommend: false
VoteDelayDaily: false
#Offset time for /vote next caculations
#TimeOffSet: 0
# Replaces offset, set the exact hour based on server time
# Include server time offset when setting this
# 2 = 2 am server time
# Use 1-24
#VoteDelayDailyHour: 14
# If true, rewards can be executed offline (requires ForceOffline to be true in the reward)
# Setting this to true will execute the reward offline while the player is offline
@@ -115,7 +119,7 @@ VoteSites:
Messages:
Player: 'You got unlucky'
# Give 1 diamond
# Give 1 diamond regardless of above
Items:
item1:
Material: DIAMOND
+60 -12
View File
@@ -19,10 +19,6 @@ Prefix: ''
#Attempt to use mariadb driver
#UseMariaDB: false
# Online mode for UUIDS
# Offline mode setups are not fully tested and are not supported currently
OnlineMode: true
####################################################################################
# Global mysql data handle for between server commmunications
@@ -86,8 +82,18 @@ WhiteListedServers: []
# SOCKETS
# PLUGINMESSAGING (Recommended)
# MYSQL
# REDIS
BungeeMethod: PLUGINMESSAGING
# Use Redis for between server communication, set BungeeMethod to REDIS to use this
Redis:
Host: localhost
Port: 6379
Username: ''
Password: ''
# Set a prefix from an entire proxy network if using mutli-proxy setup below
Prefix: ''
# If false, votes will be checked if user is a valid player that has joined to server
# Works for PLUGINMESSAGING and SOCKETS methods only
# This requires spigot servers AllowUnJoined to be set to true in Config.yml
@@ -106,17 +112,22 @@ BungeeManageTotals: true
# Set DisableBroadcast to true on spigot servers (BungeeSettings.yml) as well
Broadcast: true
# Geyser settings
# This may or may not work
# Does not work on velocity currently
GeyserSupport: false
GeyserPrefix: '.'
# Geyser/bedrock player settings
# https://github.com/BenCodez/VotingPlugin/wiki/Bedrock-Player-Support
BedrockPlayerPrefix: '.'
# Time votes will be cached on proxy
# -1 means no time limit
# Time in days
VoteCacheTime: -1
# Maxium number of votes possible per day
# Usually matches the amount of votesites
# Will limit vote totals to match accordingly
# Only applies for month total
# Set to -1 to disable
MaxAmountOfVotesPerDay: -1
VoteParty:
# If enabled, will trigger vote party reward
# in BungeeSettings.yml under BungeeVotePartyReward
@@ -135,6 +146,9 @@ VoteParty:
BungeeCommands: []
Broadcast: '&aVote party has been reached!'
# Online mode for UUIDS
# Offline mode setups are not fully tested and are not supported currently
OnlineMode: true
##########################################
# PLUGINMESSAGING Settings
@@ -142,19 +156,19 @@ VoteParty:
# Applies to PLUGINMESSAGING only
# Votes will be forwarded when specific player is online
# If set to false, rewards should still reward when player logs in (by default)
WaitForUserOnline: false
##########################################
# Multi-proxy setup
# This is still a WIP, use with caution
# Primary server needs votifier and config option enabled
# Primary server needs votifier and config option enabled
# Set socket host on each proxy and primary server set sub proxies
# All servers should be on pluginmessaging or sockets setup
##########################################
# Support for redis
# experimental
# Support for multiple proxies
MultiProxySupport: false
# Enable on primary proxy server with votifier
@@ -165,12 +179,46 @@ PrimaryServer: false
# Must also disable sendtoallservers
MultiProxyOneGlobalReward: false
# Multi-proxy available methods:
# SOCKET
# REDIS
MultiProxyMethod: SOCKET
##########################################
# REDIS Settings
##########################################
# Set multiproxymethod to REDIS to use redis
MultiProxyRedis:
# If true the plugin will use the exsiting connection set above
# Must be on REDIS method to use this setting
UseExistingConnection: false
Host: localhost
Port: 6379
Username: ''
Password: ''
# Set each server it's own proxy name here (can be anything)
ProxyServerName: proxy1
# Set names of other proxy servers
# Must match what's set as the proxy server name above from other servers
# On non primary proxy server just set the primary proxy server name here
ProxyServers:
- proxy2
- proxy3
##########################################
# SOCKET settings for mutli-proxy
##########################################
# Set this for each proxy
MultiProxySocketHost:
Host: 0.0.0.0
Port: 1234
# Set other sub proxies here
# On non primary proxy only set primary proxy
MultiProxyServers:
secondproxy:
Host: 0.0.0.0
+65 -61
View File
@@ -1,5 +1,5 @@
name: ${project.name}
version: "${project.version}"
version: ${project.version}
main: com.bencodez.votingplugin.VotingPluginMain
description: Highly Customizable Voting Listener!
website: https://www.spigotmc.org/resources/votingplugin.15358/
@@ -16,6 +16,7 @@ softdepend:
- AuthMe
- SuperVanish
- PremiumVanish
- LuckPerms
loadbefore:
- MCPerks
api-version: 1.13
@@ -140,106 +141,106 @@ commands:
adminvotegivereward:
description: Command Alias
aliases: avgivereward
adminvoteConvertFromData:
adminvoteconvertfromdata:
description: Command Alias
aliases: avConvertFromData
adminvoteConvertToData:
aliases: avconvertfromdata
adminvoteonverttodata:
description: Command Alias
aliases: avConvertFromData
adminvoteClearTotal:
aliases: avconverttodata
adminvotecleartotal:
description: Command Alias
adminvoteBackgroundUpdate:
adminvotebackgroundupdate:
description: Command Alias
aliases: avBackgroundUpdate
adminvoteClearCache:
aliases: avbackgroundupdate
adminvoteclearcache:
description: Command Alias
aliases: avClearCache
adminvoteServiceSites:
aliases: avclearcache
adminvoteservicesites:
description: Command Alias
aliases: avServiceSites
adminvoteVoteParty:
aliases: avservicesites
adminvotevoteparty:
description: Command Alias
aliases: avVoteParty
adminvoteChoices:
aliases: avvoteparty
adminvotechoices:
description: Command Alias
aliases: avChoices
adminvoteReloadAll:
aliases: avchoices
adminvotereloadall:
description: Command Alias
aliases: avReloadAll
adminvotePermsPlayer:
aliases: avreloadall
adminvotepermsplayer:
description: Command Alias
aliases: avPermsPlayer
adminvoteResyncMilestonesAlreadyGiven:
aliases: avpermsplayer
adminvoteresyncmilestonesalreadygiven:
description: Command Alias
aliases: avResyncMilestonesAlreadyGiven
voteSetPrimaryAccount:
aliases: avresyncmilestonesalreadygiven
votesetprimaryaccount:
description: Command Alias
adminvoteClearOfflineVotes:
adminvoteclearofflinevotes:
description: Command Alias
aliases: avClearOfflineVotes
adminvoteGiveAll:
aliases: avclearofflinevotes
adminvotegiveall:
description: Command Alias
aliases: avGiveAll
adminvoteGiveAllOnline:
aliases: avgiveall
adminvotegiveallonline:
description: Command Alias
aliases: avGiveAllOnline
adminvoteForceTimeChanged:
aliases: avgiveallonline
adminvoteforcetimechanged:
description: Command Alias
aliases: avForceTimeChanged
aliases: avforcetimechanged
adminvoteplayername:
description: Command Alias
aliases: avplayername
adminvoteResyncMilestones:
adminvoteresyncmilestones:
description: Command Alias
aliases: avResyncMilestones
adminvoteClearOfflineRewards:
aliases: avresyncmilestones
adminvoteclearofflinerewards:
description: Command Alias
aliases: avClearOfflineRewards
adminvoteUserRemove:
aliases: avclearofflinerewards
adminvoteuserremove:
description: Command Alias
aliases: avUserRemove
adminvotePurge:
aliases: avuserremove
adminvotepurge:
description: Command Alias
aliases: avPurge
adminvoteJavascript:
aliases: avpurge
adminvotejavascript:
description: Command Alias
aliases: avJavascript
adminvoteStatus:
aliases: avjavascript
adminvotestatus:
description: Command Alias
aliases: avStatus
adminvoteTest:
aliases: avstatus
adminvotetest:
description: Command Alias
aliases: avTest
adminvotePlaceholders:
aliases: avtest
adminvoteplaceholders:
description: Command Alias
aliases: avPlaceholders
adminvoteDownloadJenkins:
aliases: avplaceholders
adminvotedownloadjenkins:
description: Command Alias
aliases: avDownloadJenkins
adminvoteSetRequestMethod:
aliases: avdownloadjenkins
adminvotesetrequestmethod:
description: Command Alias
aliases: avSetRequestMethod
adminvoteUser:
aliases: avsetrequestmethod
adminvoteuser:
description: Command Alias
aliases: avUser
adminvoteCurrentPluginTime:
aliases: avuser
adminvotecurrentplugintime:
description: Command Alias
aliases: avCurrentPluginTime
adminvoteResetPoints:
aliases: avcurrentplugintime
adminvoteresetpoints:
description: Command Alias
aliases: avResetPoints
adminvoteRunCMD:
aliases: avresetpoints
adminvoteruncmd:
description: Command Alias
aliases: avRunCMD
aliases: avruncmd
adminvoteuseruuidremove:
description: Command Alias
aliases: avuseruuidremove
adminvoteedit:
description: Command Alias
aliases: avedit
adminvoteResetMilestoneCount:
adminvoteresetmilestonecount:
description: Command Alias
aliases: avResetMilestoneCount
aliases: avresetmilestonecount
permissions:
VotingPlugin.Player:
description: Allows basic access player commands
@@ -256,6 +257,9 @@ permissions:
VotingPlugin.NoRemind:
description: Ignore vote reminding
default: false
VotingPlugin.BypassWaitUntilVoteDelay:
description: Bypass WaitUntilVoteDelay
default: false
VotingPlugin.Sign.Create:
description: Permission to create sign
VotingPlugin.Admin.GenerateServiceSite:
+42 -23
View File
@@ -1,8 +1,10 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bencodez</groupId>
<artifactId>${version.art}</artifactId>
<version>6.14</version>
<version>6.16.2</version>
<packaging>jar</packaging>
<name>VotingPlugin</name>
<properties>
@@ -59,7 +61,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<version>3.4.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
@@ -88,7 +90,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.0</version>
<version>3.5.3</version>
<configuration>
<shadedArtifactAttached>false</shadedArtifactAttached>
<minimizeJar>true</minimizeJar>
@@ -101,9 +103,15 @@
</filter>
</filters>
<relocations>
<relocation>
<pattern>com.bencodez.simpleapi</pattern>
<shadedPattern>
${project.groupId}.votingplugin.simpleapi</shadedPattern>
</relocation>
<relocation>
<pattern>com.bencodez.advancedcore</pattern>
<shadedPattern>${project.groupId}.votingplugin.advancedcore</shadedPattern>
<shadedPattern>
${project.groupId}.votingplugin.advancedcore</shadedPattern>
</relocation>
<relocation>
<pattern>net.pl3x.bukkit.chatapi</pattern>
@@ -111,24 +119,30 @@
</relocation>
<relocation>
<pattern>me.mrten.mysqlapi</pattern>
<shadedPattern>${project.groupId}.votingplugin.mysqlapi</shadedPattern>
<shadedPattern>
${project.groupId}.votingplugin.mysqlapi</shadedPattern>
</relocation>
<relocation>
<pattern>com.zaxxer.HikariCP</pattern>
<shadedPattern>${project.groupId}.votingplugin.HikariCP</shadedPattern>
<shadedPattern>
${project.groupId}.votingplugin.HikariCP</shadedPattern>
</relocation>
<relocation>
<pattern>com.zaxxer.hikari</pattern>
<shadedPattern>${project.groupId}.votingplugin.hikari</shadedPattern>
<shadedPattern>
${project.groupId}.votingplugin.hikari</shadedPattern>
</relocation>
<relocation>
<pattern>org.bstats</pattern>
<shadedPattern>${project.groupId}.votingplugin.bstats</shadedPattern>
<shadedPattern>
${project.groupId}.votingplugin.bstats</shadedPattern>
</relocation>
<relocation>
<pattern>xyz.upperlevel.spigot</pattern>
<shadedPattern>${project.groupId}.votingplugin.advancedcore.xyz.upperlevel.spigot</shadedPattern>
<shadedPattern>
${project.groupId}.votingplugin.advancedcore.xyz.upperlevel.spigot</shadedPattern>
</relocation>
</relocations>
</configuration>
<executions>
@@ -139,7 +153,8 @@
</goals>
<configuration>
<artifactSet>
<!-- Lets exclude google code, because the server already has this
<!-- Lets exclude google code, because the
server already has this
code in it (guava, etc) -->
<excludes>
<exclude>com.google.*:*</exclude>
@@ -214,26 +229,27 @@
</repository>
<repository>
<id>placeholderapi</id>
<url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
<url>
https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.20.1-R0.1-SNAPSHOT</version>
<version>1.20.6-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
<version>1.18.32</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.md-5</groupId>
<artifactId>bungeecord-api</artifactId>
<version>1.20-R0.1</version>
<version>1.20-R0.2</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -263,7 +279,7 @@
<dependency>
<groupId>me.clip</groupId>
<artifactId>placeholderapi</artifactId>
<version>2.11.3</version>
<version>2.11.5</version>
<scope>provided</scope>
</dependency>
</dependencies>
@@ -360,7 +376,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.1.1</version>
<version>3.1.2</version>
<configuration>
<skip>true</skip>
</configuration>
@@ -415,7 +431,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.5.0</version>
<version>3.6.3</version>
<executions>
<execution>
<id>attach-javadocs</id>
@@ -424,8 +440,10 @@
</goals>
<phase>deploy</phase>
<configuration>
<sourcepath>${project.basedir}/target/delombok</sourcepath>
<outputDirectory>${project.basedir}/target/apidocs</outputDirectory>
<sourcepath>
${project.basedir}/target/delombok</sourcepath>
<outputDirectory>
${project.basedir}/target/apidocs</outputDirectory>
</configuration>
</execution>
</executions>
@@ -465,7 +483,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.5.0</version>
<version>3.6.3</version>
<executions>
<execution>
<id>attach-javadocs</id>
@@ -474,7 +492,8 @@
</goals>
<phase>deploy</phase>
<configuration>
<sourcepath>${project.basedir}/target/delombok</sourcepath>
<sourcepath>
${project.basedir}/target/delombok</sourcepath>
</configuration>
</execution>
</executions>
@@ -482,7 +501,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.1.1</version>
<version>3.1.2</version>
<configuration>
<skip>true</skip>
</configuration>
@@ -22,13 +22,17 @@ import com.bencodez.advancedcore.api.user.UserStorage;
import com.bencodez.advancedcore.api.user.usercache.value.DataValue;
import com.bencodez.advancedcore.api.user.usercache.value.DataValueBoolean;
import com.bencodez.advancedcore.api.user.userstorage.mysql.api.config.MysqlConfigSpigot;
import com.bencodez.advancedcore.bungeeapi.GlobalMessage.GlobalMessageHandler;
import com.bencodez.advancedcore.bungeeapi.GlobalMessage.GlobalMessageListener;
import com.bencodez.advancedcore.bungeeapi.globaldata.GlobalDataHandler;
import com.bencodez.advancedcore.bungeeapi.globaldata.GlobalMySQL;
import com.bencodez.advancedcore.bungeeapi.pluginmessage.PluginMessageHandler;
import com.bencodez.advancedcore.bungeeapi.redis.RedisHandler;
import com.bencodez.advancedcore.bungeeapi.redis.RedisListener;
import com.bencodez.advancedcore.bungeeapi.sockets.ClientHandler;
import com.bencodez.advancedcore.bungeeapi.sockets.SocketHandler;
import com.bencodez.advancedcore.bungeeapi.sockets.SocketReceiver;
import com.bencodez.advancedcore.scheduler.BukkitScheduler;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.votingplugin.bungee.BungeeMessageData;
import com.bencodez.votingplugin.bungee.BungeeMethod;
import com.bencodez.votingplugin.bungee.BungeeVersion;
@@ -62,6 +66,14 @@ public class BungeeHandler implements Listener {
@Getter
private ScheduledExecutorService timer;
@Getter
private RedisHandler redisHandler;
@Getter
private GlobalMessageHandler globalMessageHandler;
private Thread redisThread;
public BungeeHandler(VotingPluginMain plugin) {
this.plugin = plugin;
}
@@ -143,8 +155,9 @@ public class BungeeHandler implements Listener {
long lastUpdated = Long.valueOf(data.get("LastUpdated").getString()).longValue();
plugin.debug("LastUpdated: " + lastUpdated);
if (LocalDateTime.now().atZone(ZoneOffset.UTC).toInstant().toEpochMilli() - lastUpdated > 1000 * 60 * 60
* 1) {
plugin.getLogger().warning("Ignore bungee time change since it was more than 1 hour ago");
* 2) {
plugin.getLogger().warning("Ignoring bungee time change since it was more than 2 hours ago");
globalDataHandler.setBoolean(plugin.getBungeeSettings().getServer(), type.toString(), false);
return false;
}
@@ -261,9 +274,368 @@ public class BungeeHandler implements Listener {
loadGlobalMysql();
globalMessageHandler = new GlobalMessageHandler() {
@Override
public void sendMessage(String subChannel, String... messageData) {
if (method.equals(BungeeMethod.MYSQL)) {
plugin.getPluginMessaging().sendPluginMessage(subChannel, messageData);
} else if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
plugin.getPluginMessaging().sendPluginMessage(subChannel, messageData);
} else if (method.equals(BungeeMethod.SOCKETS)) {
ArrayList<String> list = new ArrayList<String>();
list.add(subChannel);
list.addAll(ArrayUtils.convert(messageData));
sendData(ArrayUtils.convert(list));
} else if (method.equals(BungeeMethod.REDIS)) {
ArrayList<String> list = new ArrayList<String>();
list.add(subChannel);
list.addAll(ArrayUtils.convert(messageData));
redisHandler.sendMessage(plugin.getBungeeSettings().getRedisPrefix() + "VotingPlugin",
ArrayUtils.convert(list));
}
}
};
globalMessageHandler.addListener(new GlobalMessageListener("Vote") {
@Override
public void onReceive(ArrayList<String> args) {
if (args.size() > 8) {
int bungeeVersion = Integer.parseInt(args.get(8));
if (bungeeVersion != BungeeVersion.getPluginMessageVersion()) {
plugin.getLogger().warning("Incompatible version with bungee, please update all servers"
+ bungeeVersion + ":" + BungeeVersion.getPluginMessageVersion());
return;
}
String player = args.get(0);
String uuid = args.get(1);
String service = args.get(2);
long time = Long.parseLong(args.get(3));
plugin.debug("pluginmessaging vote received from " + player + "/" + uuid + " on " + service);
VotingPluginUser user = plugin.getVotingPluginUserManager()
.getVotingPluginUser(UUID.fromString(uuid), player);
boolean wasOnline = Boolean.valueOf(args.get(4));
BungeeMessageData text = new BungeeMessageData(args.get(6));
bungeeVotePartyCurrent = text.getVotePartyCurrent();
bungeeVotePartyRequired = text.getVotePartyRequired();
plugin.getPlaceholders().onBungeeVotePartyUpdate();
plugin.getServerData().setBungeeVotePartyCurrent(bungeeVotePartyCurrent);
plugin.getServerData().setBungeeVotePartyRequired(bungeeVotePartyRequired);
boolean setTotals = Boolean.valueOf(args.get(7));
user.cache();
boolean broadcast = true;
boolean bungeeBroadcast = false;
if (args.size() > 9) {
bungeeBroadcast = Boolean.valueOf(args.get(9));
}
int num = 1;
if (args.size() > 10) {
num = Integer.valueOf(args.get(10));
}
int numberOfVotes = 1;
if (args.size() > 11) {
numberOfVotes = Integer.valueOf(args.get(11));
}
if (!bungeeBroadcast) {
if (!plugin.getBungeeSettings().isBungeeBroadcast()
&& !plugin.getBungeeSettings().isDisableBroadcast()) {
if (wasOnline || plugin.getBungeeSettings().isBungeeBroadcastAlways()) {
if (plugin.getConfigFile().isFormatOnlyOneOfflineBroadcast() && !wasOnline) {
if (num == 1) {
user.offlineBroadcast(user, plugin.getBungeeSettings().isUseBungeecoord(),
numberOfVotes);
}
} else {
VoteSite site = plugin.getVoteSite(service, true);
if (site != null) {
site.broadcastVote(user, false);
broadcast = false;
} else {
plugin.getLogger().warning("No votesite for " + service);
}
}
}
}
} else {
broadcast = false;
}
user.bungeeVotePluginMessaging(service, time, text, !setTotals, wasOnline, broadcast, num);
if (plugin.getBungeeSettings().isPerServerPoints()) {
user.addPoints(plugin.getConfigFile().getPointsOnVote());
}
plugin.getSpecialRewards().bungeeAllSitesCheck(user, numberOfVotes, num);
if (Boolean.valueOf(args.get(5))) {
plugin.getServerData().addServiceSite(service);
}
} else {
plugin.getLogger().warning("Incompatible version with bungee, please update all servers");
}
}
});
globalMessageHandler.addListener(new GlobalMessageListener("VoteOnline") {
@Override
public void onReceive(ArrayList<String> args) {
if (args.size() > 8) {
int bungeeVersion = Integer.parseInt(args.get(8));
if (bungeeVersion != BungeeVersion.getPluginMessageVersion()) {
plugin.getLogger().warning("Incompatible version with bungee, please update all servers");
return;
}
String player = args.get(0);
String uuid = args.get(1);
String service = args.get(2);
long time = Long.parseLong(args.get(3));
BungeeMessageData text = new BungeeMessageData(args.get(6));
bungeeVotePartyCurrent = text.getVotePartyCurrent();
bungeeVotePartyRequired = text.getVotePartyRequired();
plugin.getPlaceholders().onBungeeVotePartyUpdate();
plugin.getServerData().setBungeeVotePartyCurrent(bungeeVotePartyCurrent);
plugin.getServerData().setBungeeVotePartyRequired(bungeeVotePartyRequired);
plugin.debug("pluginmessaging voteonline received from " + player + "/" + uuid + " on " + service);
VotingPluginUser user = plugin.getVotingPluginUserManager()
.getVotingPluginUser(UUID.fromString(uuid), player);
user.cache();
if (plugin.getBungeeSettings().isPerServerPoints()) {
user.addPoints(plugin.getConfigFile().getPointsOnVote());
}
boolean setTotals = Boolean.valueOf(args.get(7));
boolean wasOnline = Boolean.valueOf(args.get(4));
boolean broadcast = true;
boolean bungeeBroadcast = false;
if (args.size() > 9) {
bungeeBroadcast = Boolean.valueOf(args.get(9));
}
int num = 1;
if (args.size() > 10) {
num = Integer.valueOf(args.get(10));
}
int numberOfVotes = 1;
if (args.size() > 11) {
numberOfVotes = Integer.valueOf(args.get(11));
}
if (!bungeeBroadcast) {
if (!plugin.getBungeeSettings().isBungeeBroadcast()
&& !plugin.getBungeeSettings().isDisableBroadcast()) {
if (wasOnline || plugin.getBungeeSettings().isBungeeBroadcastAlways()) {
if (plugin.getConfigFile().isFormatOnlyOneOfflineBroadcast() && !wasOnline) {
if (num == 1) {
user.offlineBroadcast(user, plugin.getBungeeSettings().isUseBungeecoord(),
numberOfVotes);
}
} else {
VoteSite site = plugin.getVoteSite(service, true);
if (site != null) {
site.broadcastVote(user, false);
broadcast = false;
} else {
plugin.getLogger().warning("No votesite for " + service);
}
}
}
}
} else {
broadcast = false;
}
user.bungeeVotePluginMessaging(service, time, text, !setTotals, wasOnline, broadcast, num);
if (plugin.getBungeeSettings().isPerServerPoints()) {
user.addPoints(plugin.getConfigFile().getPointsOnVote());
}
plugin.getSpecialRewards().bungeeAllSitesCheck(user, numberOfVotes, num);
if (Boolean.valueOf(args.get(5))) {
plugin.getServerData().addServiceSite(service);
}
} else {
plugin.getLogger().warning("Incompatible version with bungee, please update all servers");
}
}
});
globalMessageHandler.addListener(new GlobalMessageListener("VoteUpdate") {
@Override
public void onReceive(ArrayList<String> args) {
String player = args.get(0);
plugin.debug("pluginmessaging voteupdate received for " + player);
VotingPluginUser user = plugin.getVotingPluginUserManager()
.getVotingPluginUser(UUID.fromString(player));
user.cache();
user.offVote();
if (args.size() > 3 && plugin.getBungeeSettings().isPerServerMilestones()) {
BungeeMessageData text = new BungeeMessageData(args.get(3));
plugin.getSpecialRewards().checkMilestone(user, text, true);
}
if (args.size() > 2) {
bungeeVotePartyCurrent = Integer.parseInt(args.get(1));
bungeeVotePartyRequired = Integer.parseInt(args.get(2));
plugin.getServerData().setBungeeVotePartyCurrent(bungeeVotePartyCurrent);
plugin.getServerData().setBungeeVotePartyRequired(bungeeVotePartyRequired);
}
plugin.setUpdate(true);
}
});
globalMessageHandler.addListener(new GlobalMessageListener("BungeeTimeChange") {
@Override
public void onReceive(ArrayList<String> args) {
checkGlobalData();
}
});
globalMessageHandler.addListener(new GlobalMessageListener("VoteBroadcast") {
@Override
public void onReceive(ArrayList<String> args) {
if (args.size() > 2) {
String uuid = args.get(0);
String service = args.get(2);
VotingPluginUser user = plugin.getVotingPluginUserManager()
.getVotingPluginUser(UUID.fromString(uuid), args.get(1));
VoteSite site = plugin.getVoteSite(service, true);
if (site != null) {
site.broadcastVote(user, false);
} else {
plugin.getLogger().warning("No votesite for " + service);
}
}
}
});
globalMessageHandler.addListener(new GlobalMessageListener("VoteBroadcastOffline") {
@Override
public void onReceive(ArrayList<String> args) {
if (args.size() > 2) {
String uuid = args.get(0);
String votes = args.get(2);
VotingPluginUser user = plugin.getVotingPluginUserManager()
.getVotingPluginUser(UUID.fromString(uuid), args.get(1));
user.offlineBroadcast(user, false, Integer.parseInt(votes));
}
}
});
globalMessageHandler.addListener(new GlobalMessageListener("Status") {
@Override
public void onReceive(ArrayList<String> args) {
String server = args.get(0);
sendMessage(globalMessageHandler, "statusokay", server);
}
});
globalMessageHandler.addListener(new GlobalMessageListener("ServerName") {
@Override
public void onReceive(ArrayList<String> args) {
String server = args.get(0);
if (!plugin.getOptions().getServer().equals(server)) {
plugin.getLogger().warning("Server name doesn't match in BungeeSettings.yml, should be " + server);
}
}
});
globalMessageHandler.addListener(new GlobalMessageListener("VotePartyBungee") {
@Override
public void onReceive(ArrayList<String> args) {
for (final String cmd : plugin.getBungeeSettings().getBungeeVotePartyGlobalCommands()) {
plugin.getBukkitScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), cmd);
}
});
}
for (Player p : Bukkit.getOnlinePlayers()) {
new RewardBuilder(plugin.getBungeeSettings().getData(), "BungeeVotePartyRewards").send(p);
}
}
});
globalMessageHandler.addListener(new GlobalMessageListener("VotePartyBroadcast") {
@Override
public void onReceive(ArrayList<String> args) {
String broadcast = args.get(0);
MiscUtils.getInstance().broadcast(broadcast);
}
});
if (method.equals(BungeeMethod.MYSQL)) {
plugin.registerBungeeChannels("vp:vp");
} else if (method.equals(BungeeMethod.REDIS)) {
redisHandler = new RedisHandler(plugin.getBungeeSettings().getRedisHost(),
plugin.getBungeeSettings().getRedisPort(), plugin.getBungeeSettings().getRedisUsername(),
plugin.getBungeeSettings().getRedisPassword()) {
@Override
protected void onMessage(String channel, String[] message) {
plugin.getLogger().info(channel + ArrayUtils.makeStringList(ArrayUtils.convert(message)));
if (message.length > 0) {
ArrayList<String> list = new ArrayList<String>();
for (int i = 1; i < message.length; i++) {
list.add(message[i]);
}
globalMessageHandler.onMessage(message[0], list);
}
}
@Override
public void debug(String message) {
if (plugin.getBungeeSettings().isBungeeDebug()) {
plugin.debug(message);
}
}
};
redisThread = new Thread(new Runnable() {
@Override
public void run() {
if (plugin.isEnabled()) {
redisHandler.loadListener(
new RedisListener(redisHandler, plugin.getBungeeSettings().getRedisPrefix()
+ "VotingPlugin_" + plugin.getBungeeSettings().getServer()));
}
}
});
redisThread.start();
} else if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
plugin.registerBungeeChannels("vp:vp");
bungeeVotePartyCurrent = plugin.getServerData().getBungeeVotePartyCurrent();
@@ -274,274 +646,71 @@ public class BungeeHandler implements Listener {
plugin.getPluginMessaging().add(new PluginMessageHandler("Vote") {
@Override
public void onRecieve(String subChannel, ArrayList<String> args) {
if (args.size() > 8) {
int bungeeVersion = Integer.parseInt(args.get(8));
if (bungeeVersion != BungeeVersion.getPluginMessageVersion()) {
plugin.getLogger().warning("Incompatible version with bungee, please update all servers");
return;
}
String player = args.get(0);
String uuid = args.get(1);
String service = args.get(2);
long time = Long.parseLong(args.get(3));
plugin.debug("pluginmessaging vote received from " + player + "/" + uuid + " on " + service);
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(UUID.fromString(uuid),
player);
boolean wasOnline = Boolean.valueOf(args.get(4));
BungeeMessageData text = new BungeeMessageData(args.get(6));
bungeeVotePartyCurrent = text.getVotePartyCurrent();
bungeeVotePartyRequired = text.getVotePartyRequired();
plugin.getPlaceholders().onBungeeVotePartyUpdate();
plugin.getServerData().setBungeeVotePartyCurrent(bungeeVotePartyCurrent);
plugin.getServerData().setBungeeVotePartyRequired(bungeeVotePartyRequired);
boolean setTotals = Boolean.valueOf(args.get(7));
user.cache();
boolean broadcast = true;
boolean bungeeBroadcast = false;
if (args.size() > 9) {
bungeeBroadcast = Boolean.valueOf(args.get(9));
}
int num = 1;
if (args.size() > 10) {
num = Integer.valueOf(args.get(10));
}
int numberOfVotes = 1;
if (args.size() > 11) {
numberOfVotes = Integer.valueOf(args.get(11));
}
if (!bungeeBroadcast) {
if (!plugin.getBungeeSettings().isBungeeBroadcast()
&& !plugin.getBungeeSettings().isDisableBroadcast()) {
if (wasOnline || plugin.getBungeeSettings().isBungeeBroadcastAlways()) {
if (plugin.getConfigFile().isFormatOnlyOneOfflineBroadcast() && !wasOnline) {
if (num == 1) {
user.offlineBroadcast(user, plugin.getBungeeSettings().isUseBungeecoord(),
numberOfVotes);
}
} else {
VoteSite site = plugin.getVoteSite(service, true);
if (site != null) {
site.broadcastVote(user, false);
broadcast = false;
} else {
plugin.getLogger().warning("No votesite for " + service);
}
}
}
}
} else {
broadcast = false;
}
user.bungeeVotePluginMessaging(service, time, text, !setTotals, wasOnline, broadcast, num);
if (plugin.getBungeeSettings().isPerServerPoints()) {
user.addPoints(plugin.getConfigFile().getPointsOnVote());
}
if (Boolean.valueOf(args.get(5))) {
plugin.getServerData().addServiceSite(service);
}
} else {
plugin.getLogger().warning("Incompatible version with bungee, please update all servers");
}
globalMessageHandler.onMessage("Vote", args);
}
});
plugin.getPluginMessaging().add(new PluginMessageHandler("VoteOnline") {
@Override
public void onRecieve(String subChannel, ArrayList<String> args) {
if (args.size() > 8) {
int bungeeVersion = Integer.parseInt(args.get(8));
if (bungeeVersion != BungeeVersion.getPluginMessageVersion()) {
plugin.getLogger().warning("Incompatible version with bungee, please update all servers");
return;
}
String player = args.get(0);
String uuid = args.get(1);
String service = args.get(2);
long time = Long.parseLong(args.get(3));
BungeeMessageData text = new BungeeMessageData(args.get(6));
bungeeVotePartyCurrent = text.getVotePartyCurrent();
bungeeVotePartyRequired = text.getVotePartyRequired();
plugin.getPlaceholders().onBungeeVotePartyUpdate();
plugin.getServerData().setBungeeVotePartyCurrent(bungeeVotePartyCurrent);
plugin.getServerData().setBungeeVotePartyRequired(bungeeVotePartyRequired);
plugin.debug(
"pluginmessaging voteonline received from " + player + "/" + uuid + " on " + service);
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(UUID.fromString(uuid),
player);
user.cache();
if (plugin.getBungeeSettings().isPerServerPoints()) {
user.addPoints(plugin.getConfigFile().getPointsOnVote());
}
boolean setTotals = Boolean.valueOf(args.get(7));
boolean wasOnline = Boolean.valueOf(args.get(4));
boolean broadcast = true;
boolean bungeeBroadcast = false;
if (args.size() > 9) {
bungeeBroadcast = Boolean.valueOf(args.get(9));
}
int num = 1;
if (args.size() > 10) {
num = Integer.valueOf(args.get(10));
}
int numberOfVotes = 1;
if (args.size() > 11) {
numberOfVotes = Integer.valueOf(args.get(11));
}
if (!bungeeBroadcast) {
if (!plugin.getBungeeSettings().isBungeeBroadcast()
&& !plugin.getBungeeSettings().isDisableBroadcast()) {
if (wasOnline || plugin.getBungeeSettings().isBungeeBroadcastAlways()) {
if (plugin.getConfigFile().isFormatOnlyOneOfflineBroadcast() && !wasOnline) {
if (num == 1) {
user.offlineBroadcast(user, plugin.getBungeeSettings().isUseBungeecoord(),
numberOfVotes);
}
} else {
VoteSite site = plugin.getVoteSite(service, true);
if (site != null) {
site.broadcastVote(user, false);
broadcast = false;
} else {
plugin.getLogger().warning("No votesite for " + service);
}
}
}
}
} else {
broadcast = false;
}
user.bungeeVotePluginMessaging(service, time, text, !setTotals, wasOnline, broadcast, num);
if (plugin.getBungeeSettings().isPerServerPoints()) {
user.addPoints(plugin.getConfigFile().getPointsOnVote());
}
if (Boolean.valueOf(args.get(5))) {
plugin.getServerData().addServiceSite(service);
}
} else {
plugin.getLogger().warning("Incompatible version with bungee, please update all servers");
}
globalMessageHandler.onMessage("VoteOnline", args);
}
});
plugin.getPluginMessaging().add(new PluginMessageHandler("VoteUpdate") {
@Override
public void onRecieve(String subChannel, ArrayList<String> args) {
String player = args.get(0);
plugin.debug("pluginmessaging voteupdate received for " + player);
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(UUID.fromString(player));
user.cache();
user.offVote();
if (args.size() > 2) {
bungeeVotePartyCurrent = Integer.parseInt(args.get(1));
bungeeVotePartyRequired = Integer.parseInt(args.get(2));
plugin.getServerData().setBungeeVotePartyCurrent(bungeeVotePartyCurrent);
plugin.getServerData().setBungeeVotePartyRequired(bungeeVotePartyRequired);
}
plugin.setUpdate(true);
globalMessageHandler.onMessage("VoteUpdate", args);
}
});
plugin.getPluginMessaging().add(new PluginMessageHandler("BungeeTimeChange") {
@Override
public void onRecieve(String subChannel, ArrayList<String> args) {
checkGlobalData();
globalMessageHandler.onMessage("BungeeTimeChange", args);
}
});
plugin.getPluginMessaging().add(new PluginMessageHandler("VoteBroadcast") {
@Override
public void onRecieve(String subChannel, ArrayList<String> args) {
if (args.size() > 2) {
String uuid = args.get(0);
String service = args.get(2);
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(UUID.fromString(uuid),
args.get(1));
VoteSite site = plugin.getVoteSite(service, true);
if (site != null) {
site.broadcastVote(user, false);
} else {
plugin.getLogger().warning("No votesite for " + service);
}
}
globalMessageHandler.onMessage("VoteBroadcast", args);
}
});
plugin.getPluginMessaging().add(new PluginMessageHandler("VoteBroadcastOffline") {
@Override
public void onRecieve(String subChannel, ArrayList<String> args) {
if (args.size() > 2) {
String uuid = args.get(0);
String votes = args.get(2);
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(UUID.fromString(uuid),
args.get(1));
user.offlineBroadcast(user, false, Integer.parseInt(votes));
}
globalMessageHandler.onMessage("VoteBroadcastOffline", args);
}
});
plugin.getPluginMessaging().add(new PluginMessageHandler("Status") {
@Override
public void onRecieve(String subChannel, ArrayList<String> args) {
String server = args.get(0);
plugin.getPluginMessaging().sendPluginMessage("statusokay", server);
globalMessageHandler.onMessage("Status", args);
}
});
plugin.getPluginMessaging().add(new PluginMessageHandler("ServerName") {
@Override
public void onRecieve(String subChannel, ArrayList<String> args) {
globalMessageHandler.onMessage("ServerName", args);
}
});
plugin.getPluginMessaging().add(new PluginMessageHandler("VotePartyBungee") {
@Override
public void onRecieve(String subChannel, ArrayList<String> args) {
for (final String cmd : plugin.getBungeeSettings().getBungeeVotePartyGlobalCommands()) {
BukkitScheduler.runTask(plugin, new Runnable() {
@Override
public void run() {
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), cmd);
}
});
}
for (Player p : Bukkit.getOnlinePlayers()) {
new RewardBuilder(plugin.getBungeeSettings().getData(), "BungeeVotePartyRewards").send(p);
}
globalMessageHandler.onMessage("VotePartyBungee", args);
}
});
plugin.getPluginMessaging().add(new PluginMessageHandler("VotePartyBroadcast") {
@Override
public void onRecieve(String subChannel, ArrayList<String> args) {
String broadcast = args.get(0);
MiscUtils.getInstance().broadcast(broadcast);
globalMessageHandler.onMessage("VotePartyBroadcast", args);
}
});
@@ -41,7 +41,7 @@ import com.bencodez.advancedcore.api.inventory.editgui.EditGUIButton;
import com.bencodez.advancedcore.api.inventory.editgui.valuetypes.EditGUIValueNumber;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.javascript.JavascriptPlaceholderRequest;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.misc.MiscUtils;
import com.bencodez.advancedcore.api.rewards.DirectlyDefinedReward;
import com.bencodez.advancedcore.api.rewards.Reward;
@@ -52,12 +52,11 @@ import com.bencodez.advancedcore.api.rewards.injected.RewardInjectConfigurationS
import com.bencodez.advancedcore.api.rewards.injected.RewardInjectInt;
import com.bencodez.advancedcore.api.rewards.injected.RewardInjectValidator;
import com.bencodez.advancedcore.api.skull.SkullHandler;
import com.bencodez.advancedcore.api.updater.Updater;
import com.bencodez.advancedcore.api.user.userstorage.Column;
import com.bencodez.advancedcore.api.yml.YMLConfig;
import com.bencodez.advancedcore.logger.Logger;
import com.bencodez.advancedcore.nms.NMSManager;
import com.bencodez.advancedcore.scheduler.BukkitScheduler;
import com.bencodez.simpleapi.nms.NMSManager;
import com.bencodez.simpleapi.updater.Updater;
import com.bencodez.votingplugin.broadcast.BroadcastHandler;
import com.bencodez.votingplugin.commands.CommandLoader;
import com.bencodez.votingplugin.commands.executers.CommandAdminVote;
@@ -83,6 +82,7 @@ import com.bencodez.votingplugin.objects.VoteSite;
import com.bencodez.votingplugin.placeholders.MVdWPlaceholders;
import com.bencodez.votingplugin.placeholders.PlaceHolders;
import com.bencodez.votingplugin.placeholders.VotingPluginExpansion;
import com.bencodez.votingplugin.servicesites.ServiceSiteHandler;
import com.bencodez.votingplugin.signs.Signs;
import com.bencodez.votingplugin.specialrewards.SpecialRewards;
import com.bencodez.votingplugin.test.VoteTester;
@@ -263,13 +263,13 @@ public class VotingPluginMain extends AdvancedCorePlugin {
}
if (ymlError) {
BukkitScheduler.runTaskLaterAsynchronously(plugin, new Runnable() {
plugin.getBukkitScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
@Override
public void run() {
plugin.getLogger().severe("Failed to load a file, check startup log");
}
}, 10);
}, 1);
}
}
@@ -343,28 +343,41 @@ public class VotingPluginMain extends AdvancedCorePlugin {
}
public ArrayList<VoteSite> getVoteSitesEnabled() {
ArrayList<VoteSite> sites = new ArrayList<VoteSite>();
for (VoteSite site : getVoteSites()) {
if (site.isEnabled()) {
sites.add(site);
}
}
return sites;
}
public String getVoteSiteName(boolean checkEnabled, String... urls) {
ArrayList<String> sites = getConfigVoteSites().getVoteSitesNames(checkEnabled);
for (String url : urls) {
if (url == null) {
return null;
}
if (sites != null) {
for (String siteName : sites) {
String URL = getConfigVoteSites().getServiceSite(siteName);
if (URL != null) {
if (URL.equalsIgnoreCase(url)) {
if (!url.isEmpty()) {
if (sites != null) {
for (String siteName : sites) {
String URL = getConfigVoteSites().getServiceSite(siteName);
if (URL != null) {
if (URL.equalsIgnoreCase(url)) {
return siteName;
}
}
if (siteName.equalsIgnoreCase(url)) {
return siteName;
}
}
if (siteName.equalsIgnoreCase(url)) {
return siteName;
}
}
}
}
return url;
}
for (String url : urls) {
return url;
}
@@ -936,7 +949,7 @@ public class VotingPluginMain extends AdvancedCorePlugin {
}
private void loadTimer() {
BukkitScheduler.runTaskLaterAsynchronously(plugin, new Runnable() {
plugin.getBukkitScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
@Override
public void run() {
@@ -961,7 +974,7 @@ public class VotingPluginMain extends AdvancedCorePlugin {
}, 1000, 1000 * 30, TimeUnit.MILLISECONDS);
}
}, 40L);
}, 2);
}
@@ -1058,13 +1071,14 @@ public class VotingPluginMain extends AdvancedCorePlugin {
checkUpdate.startUp();
voteReminding = new VoteReminding(this);
voteReminding.loadRemindChecking();
voteReminding.loadReminds();
specialRewards = new SpecialRewards(this);
signs = new Signs(this);
coolDownCheck.checkEnabled();
coolDownCheck.load();
BukkitScheduler.runTask(plugin, new Runnable() {
plugin.getBukkitScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
@@ -1074,7 +1088,7 @@ public class VotingPluginMain extends AdvancedCorePlugin {
topVoterHandler = new TopVoterHandler(this);
lastMonthTopVoter = new LinkedHashMap<TopVoterPlayer, Integer>();
BukkitScheduler.runTaskAsynchronously(plugin, new Runnable() {
plugin.getBukkitScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
@@ -1097,7 +1111,7 @@ public class VotingPluginMain extends AdvancedCorePlugin {
topVoterHandler.register();
BukkitScheduler.runTaskAsynchronously(plugin, new Runnable() {
plugin.getBukkitScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
@@ -1164,7 +1178,7 @@ public class VotingPluginMain extends AdvancedCorePlugin {
ConfigurationSection section, HashMap<String, String> placeholders) {
if (section.getBoolean("Enabled")) {
user.sendBossBar(
StringParser.getInstance().replacePlaceHolder(section.getString("Message", ""),
PlaceholderUtils.replacePlaceHolder(section.getString("Message", ""),
placeholders),
section.getString("Color", "BLUE"), section.getString("Style", "SOLID"),
(double) getVotingPluginUserManager().getVotingPluginUser(user).getSitesVotedOn()
@@ -1223,18 +1237,29 @@ public class VotingPluginMain extends AdvancedCorePlugin {
}
if (!issues) {
BukkitScheduler.runTaskLaterAsynchronously(plugin, new Runnable() {
plugin.getBukkitScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
@Override
public void run() {
plugin.getLogger().warning(
"Detected an issue with voting sites, check the server startup log for more details: https://github.com/BenCodez/VotingPlugin/wiki/Votifier-Troubleshooting");
}
}, 30l);
}, 5);
plugin.getBukkitScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
@Override
public void run() {
serviceSiteHandler = new ServiceSiteHandler(plugin);
}
}, 10);
}
}
@Getter
private ServiceSiteHandler serviceSiteHandler;
/*
* (non-Javadoc)
*
@@ -1285,7 +1310,7 @@ public class VotingPluginMain extends AdvancedCorePlugin {
}
voteTimer.shutdown();
try {
voteTimer.awaitTermination(10, TimeUnit.SECONDS);
voteTimer.awaitTermination(1, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
@@ -1413,6 +1438,18 @@ public class VotingPluginMain extends AdvancedCorePlugin {
if (userStorage) {
placeholders.load();
placeholders.reload();
getCoolDownCheck().getTimer().schedule(new Runnable() {
@Override
public void run() {
for (VoteSite site : plugin.getVoteSites()) {
if (site.isVoteDelayDaily()) {
getCoolDownCheck().checkAllVoteSite(site);
}
}
}
}, 5, TimeUnit.SECONDS);
}
voteReminding.loadRemindChecking();
@@ -1426,16 +1463,6 @@ public class VotingPluginMain extends AdvancedCorePlugin {
configFile = new Config(this);
configFile.setup();
if (configFile.isAutoConfigUpdating()) {
/*try {
ConfigUpdater.update(plugin, "Config.yml", configFile.getdFile(),
Arrays.asList("VoteReminding", "MySQL", "CustomCommands", "CustomPlaceholderReturns"));
configFile.reloadData();
} catch (IOException e) {
e.printStackTrace();
}*/
}
configVoteSites = new ConfigVoteSites(this);
configVoteSites.setup();
@@ -2,7 +2,7 @@ package com.bencodez.votingplugin;
import java.util.concurrent.Callable;
import com.bencodez.advancedcore.api.metrics.BStatsMetrics;
import com.bencodez.simpleapi.metrics.BStatsMetrics;
public class VotingPluginMetrics {
@@ -161,7 +161,7 @@ public class VotingPluginMetrics {
@Override
public String call() throws Exception {
return "" + plugin.getVoteSites().size();
return "" + plugin.getVoteSitesEnabled().size();
}
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("numberofrewards", new Callable<String>() {
@@ -324,11 +324,11 @@ public class VotingPluginMetrics {
}
}));
metrics.addCustomChart(new BStatsMetrics.SimplePie("geyserprefixsupport", new Callable<String>() {
metrics.addCustomChart(new BStatsMetrics.SimplePie("bedrockplayerprefix", new Callable<String>() {
@Override
public String call() throws Exception {
return "" + plugin.getOptions().isGeyserPrefixSupport();
return "" + plugin.getOptions().getBedrockPlayerPrefix();
}
}));
@@ -10,8 +10,9 @@ import java.util.concurrent.TimeUnit;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.misc.MiscUtils;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
public class BroadcastHandler {
@@ -30,8 +31,7 @@ public class BroadcastHandler {
for (int i = 0; i < size; i++) {
votedPlayers.poll();
}
String bc = StringParser.getInstance()
.colorize(plugin.getConfigFile().getFormatAlternateBroadcastBroadcast());
String bc = MessageAPI.colorize(plugin.getConfigFile().getFormatAlternateBroadcastBroadcast());
String playersText = "";
while (!votedPlayers.isEmpty()) {
playersText += votedPlayers.remove();
@@ -42,7 +42,7 @@ public class BroadcastHandler {
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("numberofplayers", "" + size);
placeholders.put("players", playersText);
bc = StringParser.getInstance().replacePlaceHolder(bc, placeholders);
bc = PlaceholderUtils.replacePlaceHolder(bc, placeholders);
ArrayList<Player> players = new ArrayList<Player>();
for (Player p : Bukkit.getOnlinePlayers()) {
if (!plugin.getVotingPluginUserManager().getVotingPluginUser(p).getDisableBroadcast()) {
@@ -3,6 +3,7 @@ package com.bencodez.votingplugin.bungee;
import java.util.regex.Pattern;
import lombok.Getter;
import lombok.Setter;
public class BungeeMessageData {
@@ -10,20 +11,28 @@ public class BungeeMessageData {
// alltimetotal//monthtotal//weeklytotal//dailytotal//points//milestonecount//votepartycurrent//votepartyrequired
@Getter
@Setter
private int allTimeTotal = 0;
@Getter
@Setter
private int dailyTotal = 0;
@Getter
@Setter
private int milestoneCount = 0;
@Getter
@Setter
private int monthTotal = 0;
@Getter
@Setter
private int points = 0;
@Getter
@Setter
private int weeklyTotal = 0;
@Getter
@Setter
private int votePartyCurrent = 0;
@Getter
@Setter
private int votePartyRequired = 0;
public BungeeMessageData(int allTimeTotal, int monthTotal, int weeklyTotal, int dailyTotal, int points,
@@ -1,7 +1,7 @@
package com.bencodez.votingplugin.bungee;
public enum BungeeMethod {
MYSQL, PLUGINMESSAGING, SOCKETS;
MYSQL, PLUGINMESSAGING, SOCKETS, REDIS;
public static BungeeMethod getByName(String str) {
for (BungeeMethod method : values()) {
@@ -9,6 +9,6 @@ public enum BungeeMethod {
return method;
}
}
return SOCKETS;
return PLUGINMESSAGING;
}
}
@@ -21,6 +21,26 @@ public class Config {
this.bungee = bungee;
}
public String getRedisHost() {
return getData().getString("Redis.Host", "");
}
public int getRedisPort() {
return getData().getInt("Redis.Port", 6379);
}
public String getRedisUsername() {
return getData().getString("Redis.Username", "");
}
public String getRedisPrefix() {
return getData().getString("Redis.Prefix", "");
}
public String getRedisPassword() {
return getData().getString("Redis.Password", "");
}
public boolean getAllowUnJoined() {
return getData().getBoolean("AllowUnJoined", false);
}
@@ -37,12 +57,8 @@ public class Config {
return getData().getBoolean("Broadcast", false);
}
public boolean getGeyserSupport() {
return getData().getBoolean("GeyserSupport", false);
}
public String getGeyserPrefix() {
return getData().getString("GeyserPrefix", ".");
public String getBedrockPlayerPrefix() {
return getData().getString("BedrockPlayerPrefix", ".");
}
public boolean getOnlineMode() {
@@ -81,6 +97,10 @@ public class Config {
return getData().getBoolean("MultiProxySupport", false);
}
public int getMaxAmountOfVotesPerDay() {
return getData().getInt("MaxAmountOfVotesPerDay", -1);
}
public int getMultiProxySocketHostPort() {
return getData().getInt("MultiProxySocketHost.Port", 1297);
}
@@ -153,6 +173,22 @@ public class Config {
return getData().getString("VoteParty.Broadcast", "");
}
public String getMultiProxyMethod() {
return getData().getString("MultiProxyMethod", "SOCKET");
}
public String getProxyServerName() {
return getData().getString("ProxyServerName", "SOCKET");
}
public List<String> getProxyServers() {
return getData().getStringList("ProxyServers");
}
public boolean getMultiProxyRedisUseExistingConnection() {
return getData().getBoolean("MultiProxyRedis.UseExistingConnection", false);
}
public List<String> getVotePartyServersToSend() {
return getData().getStringList("VoteParty.ServersToSend");
}
@@ -161,6 +197,22 @@ public class Config {
return getData().getStringList("VoteParty.BungeeCommands");
}
public String getMultiProxyRedisHost() {
return getData().getString("MultiProxyRedis.Host", "");
}
public int getMultiProxyRedisPort() {
return getData().getInt("MultiProxyRedis.Port", 6379);
}
public String getMultiProxyRedisUsername() {
return getData().getString("MultiProxyRedis.Username", "");
}
public String getMultiProxyRedisPassword() {
return getData().getString("MultiProxyRedis.Password", "");
}
public void load() {
if (!bungee.getDataFolder().exists()) {
bungee.getDataFolder().mkdir();
@@ -25,9 +25,16 @@ public class NonVotedPlayersCache {
}
}
private void addPlayer(String uuid, String playerName) {
public void addPlayer(String uuid, String playerName) {
getData().set("NonVotedPlayers." + playerName + ".UUID", uuid);
getData().set("NonVotedPlayers." + playerName + ".LastTime", System.currentTimeMillis());
save();
}
public void addPlayerCheck(String uuid, String playerName) {
if (!bungee.getMysql().containsKeyQuery(uuid)) {
addPlayer(uuid, playerName);
}
}
public void check() {
@@ -18,6 +18,7 @@ import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -31,9 +32,7 @@ import java.util.concurrent.TimeUnit;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.misc.encryption.EncryptionHandler;
import com.bencodez.advancedcore.api.misc.jsonparser.JsonParser;
import com.bencodez.advancedcore.api.time.TimeType;
import com.bencodez.advancedcore.api.user.usercache.value.DataValue;
import com.bencodez.advancedcore.api.user.usercache.value.DataValueBoolean;
@@ -44,10 +43,18 @@ import com.bencodez.advancedcore.api.user.userstorage.mysql.api.config.MysqlConf
import com.bencodez.advancedcore.bungeeapi.globaldata.GlobalDataHandlerProxy;
import com.bencodez.advancedcore.bungeeapi.globaldata.GlobalMySQL;
import com.bencodez.advancedcore.bungeeapi.mysql.BungeeMySQL;
import com.bencodez.advancedcore.bungeeapi.redis.RedisHandler;
import com.bencodez.advancedcore.bungeeapi.redis.RedisListener;
import com.bencodez.advancedcore.bungeeapi.sockets.ClientHandler;
import com.bencodez.advancedcore.bungeeapi.sockets.SocketHandler;
import com.bencodez.advancedcore.bungeeapi.sockets.SocketReceiver;
import com.bencodez.advancedcore.bungeeapi.time.BungeeTimeChecker;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.json.JsonParser;
import com.bencodez.votingplugin.bungee.global.multiproxy.MultiProxyHandler;
import com.bencodez.votingplugin.bungee.global.multiproxy.MultiProxyMethod;
import com.bencodez.votingplugin.bungee.global.multiproxy.MultiProxyServerSocketConfiguration;
import com.bencodez.votingplugin.bungee.global.multiproxy.MultiProxyServerSocketConfigurationBungee;
import com.bencodez.votingplugin.timequeue.VoteTimeQueue;
import com.bencodez.votingplugin.topvoter.TopVoter;
import com.google.gson.JsonElement;
@@ -71,16 +78,12 @@ import net.md_5.bungee.event.EventHandler;
public class VotingPluginBungee extends Plugin implements Listener {
private HashMap<String, ArrayList<OfflineBungeeVote>> cachedOnlineVotes = new HashMap<String, ArrayList<OfflineBungeeVote>>();
private ConcurrentHashMap<String, ArrayList<OfflineBungeeVote>> cachedOnlineVotes = new ConcurrentHashMap<String, ArrayList<OfflineBungeeVote>>();
private HashMap<String, ArrayList<OfflineBungeeVote>> cachedVotes = new HashMap<String, ArrayList<OfflineBungeeVote>>();
private ConcurrentHashMap<String, ArrayList<OfflineBungeeVote>> cachedVotes = new ConcurrentHashMap<String, ArrayList<OfflineBungeeVote>>();
private HashMap<String, ClientHandler> clientHandles;
private HashMap<String, ClientHandler> multiproxyClientHandles;
private SocketHandler multiproxySocketHandler;
@Getter
private Config config;
@@ -110,6 +113,9 @@ public class VotingPluginBungee extends Plugin implements Listener {
@Getter
private GlobalDataHandlerProxy globalDataHandler;
@Getter
private RedisHandler redisHandler;
public synchronized void checkCachedVotes(String server) {
if (getProxy().getServerInfo(server) != null) {
if (!getProxy().getServerInfo(server).getPlayers().isEmpty()) {
@@ -132,7 +138,7 @@ public class VotingPluginBungee extends Plugin implements Listener {
}
if (toSend) {
sendPluginMessageServer(server, "Vote", cache.getPlayerName(), cache.getUuid(),
sendMessageServer(server, "Vote", cache.getPlayerName(), cache.getUuid(),
cache.getService(), "" + cache.getTime(), Boolean.FALSE.toString(),
"" + cache.isRealVote(), cache.getText(),
"" + getConfig().getBungeeManageTotals(),
@@ -164,7 +170,7 @@ public class VotingPluginBungee extends Plugin implements Listener {
int num = 1;
int numberOfVotes = c.size();
for (OfflineBungeeVote cache : c) {
sendPluginMessageServer(server, "VoteOnline", cache.getPlayerName(), cache.getUuid(),
sendMessageServer(server, "VoteOnline", cache.getPlayerName(), cache.getUuid(),
cache.getService(), "" + cache.getTime(), Boolean.FALSE.toString(),
"" + cache.isRealVote(), cache.getText(), "" + getConfig().getBungeeManageTotals(),
"" + BungeeVersion.getPluginMessageVersion(), "" + config.getBroadcast(), "" + num,
@@ -173,7 +179,7 @@ public class VotingPluginBungee extends Plugin implements Listener {
}
cachedOnlineVotes.put(uuid, new ArrayList<OfflineBungeeVote>());
if (getConfig().getMultiProxySupport() && getConfig().getMultiProxyOneGlobalReward()) {
sendMultiProxyServerMessage("ClearVote", player.getName(), uuid);
multiProxyHandler.sendMultiProxyServerMessage("ClearVote", player.getName(), uuid);
}
}
}
@@ -541,6 +547,7 @@ public class VotingPluginBungee extends Plugin implements Listener {
num++;
}
}
voteCacheFile.save();
nonVotedPlayersCache.save();
if (mysql != null) {
@@ -552,6 +559,9 @@ public class VotingPluginBungee extends Plugin implements Listener {
private VoteEventBungee voteEventBungee;
@Getter
private MultiProxyHandler multiProxyHandler;
@Override
public void onEnable() {
enabled = true;
@@ -798,6 +808,9 @@ public class VotingPluginBungee extends Plugin implements Listener {
debug("Checking nonvotedplayers.yml...");
nonVotedPlayersCache.check();
}
if (voteCacheFile != null) {
voteCacheFile.save();
}
}
}, 1l, 60l, TimeUnit.MINUTES);
} else if (method.equals(BungeeMethod.SOCKETS)) {
@@ -850,13 +863,54 @@ public class VotingPluginBungee extends Plugin implements Listener {
encryptionHandler, config.getDebug()));
}
}
} else if (method.equals(BungeeMethod.REDIS)) {
redisHandler = new RedisHandler(config.getRedisHost(), config.getRedisPort(), config.getRedisUsername(),
config.getRedisPassword()) {
@Override
protected void onMessage(String channel, String[] message) {
if (message.length > 0) {
if (message[0].equalsIgnoreCase("statusokay")) {
String server = message[1];
getLogger().info("Status okay for " + server);
} else if (message[0].equalsIgnoreCase("login")) {
String player = message[1];
String uuid = message[2];
String server = "";
if (message.length > 3) {
server = message[3];
}
debug("Login: " + player + "/" + uuid + " " + server);
if (nonVotedPlayersCache != null) {
nonVotedPlayersCache.addPlayerCheck(uuid, player);
}
ProxiedPlayer p = getProxy().getPlayer(player);
login(p);
}
}
}
@Override
public void debug(String message) {
debug2(message);
}
};
getProxy().getScheduler().runAsync(this, new Runnable() {
@Override
public void run() {
redisHandler.loadListener(
new RedisListener(redisHandler, getConfig().getRedisPrefix() + "VotingPlugin"));
}
});
}
currentVotePartyVotesRequired = getConfig().getVotePartyVotesRequired()
+ voteCacheFile.getVotePartyInreaseVotesRequired();
votePartyVotes = voteCacheFile.getVotePartyCurrentVotes();
}
loadMultiProxySupport();
loadMultiProxySupport();
}
if (!votifierEnabled) {
if (!(getConfig().getMultiProxySupport() && !getConfig().getPrimaryServer())) {
@@ -905,63 +959,156 @@ public class VotingPluginBungee extends Plugin implements Listener {
if (!buildNumber.equals("NOTSET")) {
getLogger().info("Detected using dev build number: " + buildNumber);
}
sendServerNameMessage();
}
public void loadMultiProxySupport() {
if (getConfig().getMultiProxySupport()) {
if (encryptionHandler == null) {
encryptionHandler = new EncryptionHandler(new File(getDataFolder(), "secretkey.key"));
}
private void runAsyncNow(Runnable runnable) {
getProxy().getScheduler().runAsync(this, runnable);
}
if (multiproxySocketHandler != null) {
multiproxySocketHandler.closeConnection();
multiproxySocketHandler = null;
}
multiproxySocketHandler = new SocketHandler(getDescription().getVersion(),
config.getMultiProxySocketHostHost(), config.getMultiProxySocketHostPort(), encryptionHandler,
config.getDebug()) {
@Override
public void log(String str) {
getLogger().info(str);
}
};
multiproxySocketHandler.add(new SocketReceiver() {
@Override
public void onReceive(String[] data) {
if (data.length > 0) {
if (data[0].equalsIgnoreCase("Status")) {
getLogger().info("Multi-proxy status message received");
} else if (data[0].equalsIgnoreCase("ClearVote")) {
cachedOnlineVotes.remove(data[2]);
}
}
if (data.length > 8) {
if (data[0].equalsIgnoreCase("Vote")) {
vote(data[2], data[3], Boolean.valueOf(data[7]), true, 0, new BungeeMessageData(data[8]),
data[1]);
} else if (data[0].equalsIgnoreCase("VoteOnline")) {
vote(data[2], data[3], Boolean.valueOf(data[7]), true, 0, new BungeeMessageData(data[8]),
data[1]);
}
}
}
});
multiproxyClientHandles = new HashMap<String, ClientHandler>();
for (
String s : config.getMultiProxyServers()) {
Configuration d = config.getMultiProxyServersConfiguration(s);
multiproxyClientHandles.put(s, new ClientHandler(d.getString("Host", ""), d.getInt("Port", 1234),
encryptionHandler, config.getDebug()));
}
getLogger().info("Loaded multi-proxy support");
private void loadMultiProxySupport() {
if (multiProxyHandler != null) {
multiProxyHandler.close();
}
multiProxyHandler = new MultiProxyHandler() {
@Override
public void triggerVote(String player, String service, boolean realVote, boolean timeQueue, long queueTime,
BungeeMessageData text, String uuid) {
vote(player, service, realVote, timeQueue, queueTime, text, uuid);
}
@Override
public void setEncryptionHandler(EncryptionHandler encryptionHandler1) {
encryptionHandler = encryptionHandler1;
}
@Override
public void logInfo(String msg) {
getLogger().info(msg);
}
@Override
public String getVersion() {
return getDescription().getVersion();
}
@Override
public boolean getMultiProxySupportEnabled() {
return config.getMultiProxySupport();
}
@Override
public int getMultiProxySocketHostPort() {
return config.getMultiProxySocketHostPort();
}
@Override
public String getMultiProxySocketHostHost() {
return config.getMultiProxySocketHostHost();
}
@Override
public MultiProxyServerSocketConfiguration getMultiProxyServersConfiguration(String s) {
return new MultiProxyServerSocketConfigurationBungee(s, config.getMultiProxyServersConfiguration(s));
}
@Override
public Collection<String> getMultiProxyServers() {
return config.getMultiProxyServers();
}
@Override
public EncryptionHandler getEncryptionHandler() {
return encryptionHandler;
}
@Override
public boolean getDebug() {
return config.getDebug();
}
@Override
public File getPluginDataFolder() {
return getDataFolder();
}
@Override
public void clearVote(String string) {
cachedOnlineVotes.remove(string);
}
@Override
public void addNonVotedPlayerCache(String uuid, String player) {
nonVotedPlayersCache.addPlayer(uuid, player);
}
@Override
public boolean getPrimaryServer() {
return config.getPrimaryServer();
}
@Override
public List<String> getProxyServers() {
return config.getProxyServers();
}
@Override
public void runAsnc(Runnable runnable) {
runAsyncNow(runnable);
}
@Override
public MultiProxyMethod getMultiProxyMethod() {
return MultiProxyMethod.getByName(config.getMultiProxyMethod());
}
@Override
public RedisHandler getRedisHandler() {
return redisHandler;
}
@Override
public boolean getMultiProxyRedisUseExistingConnection() {
return config.getMultiProxyRedisUseExistingConnection();
}
@Override
public String getMultiProxyPassword() {
return config.getMultiProxyRedisPassword();
}
@Override
public String getMultiProxyUsername() {
return config.getMultiProxyRedisUsername();
}
@Override
public int getMultiProxyRedisPort() {
return config.getMultiProxyRedisPort();
}
@Override
public String getMultiProxyRedisHost() {
return config.getMultiProxyRedisHost();
}
@Override
public String getMultiProxyServerName() {
return config.getProxyServerName();
}
};
multiProxyHandler.loadMultiProxySupport();
}
public void sendServerNameMessage() {
if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
for (String s : getAvailableAllServers()) {
sendPluginMessageServer(s, "ServerName", s);
}
}
}
@EventHandler
@@ -989,14 +1136,15 @@ public class VotingPluginBungee extends Plugin implements Listener {
public void login(ProxiedPlayer p) {
if (p != null && p.getServer() != null && p.getServer().getInfo() != null) {
final String server = p.getServer().getInfo().getName();
final ProxiedPlayer proixedPlayer = p;
final ProxiedPlayer proxiedPlayer = p;
getProxy().getScheduler().schedule(this, new Runnable() {
@Override
public void run() {
if (isOnline(p)) {
checkCachedVotes(server);
checkOnlineVotes(proixedPlayer, proixedPlayer.getUniqueId().toString(), server);
checkOnlineVotes(proxiedPlayer, proxiedPlayer.getUniqueId().toString(), server);
multiProxyHandler.login(proxiedPlayer.getUniqueId().toString(), proxiedPlayer.getName());
}
}
}, 1, TimeUnit.SECONDS);
@@ -1097,6 +1245,22 @@ public class VotingPluginBungee extends Plugin implements Listener {
loadMultiProxySupport();
}
public void sendMessageServer(String server, String channel, String... messageData) {
if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
sendPluginMessageServer(server, channel, messageData);
} else if (method.equals(BungeeMethod.REDIS)) {
sendRedisMessageServer(server, channel, messageData);
}
}
public void sendRedisMessageServer(String server, String channel, String... messageData) {
ArrayList<String> list = new ArrayList<String>();
list.add(channel);
list.addAll(ArrayUtils.convert(messageData));
redisHandler.sendMessage(getConfig().getRedisPrefix() + "VotingPlugin_" + server,
ArrayUtils.convert(list));
}
public void sendPluginMessageServer(String server, String channel, String... messageData) {
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(byteOutStream);
@@ -1114,7 +1278,7 @@ public class VotingPluginBungee extends Plugin implements Listener {
e.printStackTrace();
}
debug("Sending plugin message " + server + " " + channel + " "
+ ArrayUtils.getInstance().makeStringList(ArrayUtils.getInstance().convert(messageData)));
+ ArrayUtils.makeStringList(ArrayUtils.convert(messageData)));
}
@@ -1124,12 +1288,6 @@ public class VotingPluginBungee extends Plugin implements Listener {
}
}
public void sendMultiProxyServerMessage(String... messageData) {
for (ClientHandler h : multiproxyClientHandles.values()) {
h.sendMessage(messageData);
}
}
public void sendServerMessageServer(String server, String... messageData) {
if (clientHandles.containsKey(server)) {
clientHandles.get(server).sendMessage(messageData);
@@ -1172,7 +1330,7 @@ public class VotingPluginBungee extends Plugin implements Listener {
public void status(CommandSender sender) {
if (method.equals(BungeeMethod.SOCKETS)) {
sendServerMessage("status");
} else if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
} else if (method.equals(BungeeMethod.PLUGINMESSAGING) || method.equals(BungeeMethod.REDIS)) {
for (String s : getAvailableAllServers()) {
ServerInfo info = getProxy().getServerInfo(s);
if (info.getPlayers().isEmpty()) {
@@ -1180,7 +1338,7 @@ public class VotingPluginBungee extends Plugin implements Listener {
} else {
// send
getLogger().info("Sending request for status message on " + s);
sendPluginMessageServer(s, "Status", s);
sendMessageServer(s, "Status", s);
}
}
}
@@ -1211,15 +1369,10 @@ public class VotingPluginBungee extends Plugin implements Listener {
}
if (uuid.isEmpty()) {
if (config.getGeyserSupport()) {
if (!player.startsWith(config.getGeyserPrefix())) {
uuid = getUUID(config.getGeyserPrefix() + player);
player = config.getGeyserPrefix() + player;
}
if (player.startsWith(config.getBedrockPlayerPrefix())) {
getLogger().info("Ignoring vote since unable to get UUID of bedrock player");
return;
}
}
if (uuid.isEmpty()) {
if (config.getAllowUnJoined()) {
debug("Fetching UUID online, since allowunjoined is enabled");
UUID u = null;
@@ -1245,8 +1398,8 @@ public class VotingPluginBungee extends Plugin implements Listener {
player = getProperName(uuid, player);
addVoteParty();
if (getConfig().getPrimaryServer() || !getConfig().getMultiProxySupport()) {
addVoteParty();
if (getConfig().getBungeeManageTotals()) {
if (mysql == null) {
@@ -1267,6 +1420,15 @@ public class VotingPluginBungee extends Plugin implements Listener {
int dailyTotal = getValue(data, "DailyTotal", 1);
int points = getValue(data, "Points", getConfig().getPointsOnVote());
int milestoneCount = getValue(data, "MilestoneCount", 1);
int maxVotes = getConfig().getMaxAmountOfVotesPerDay();
if (maxVotes > 0) {
LocalDateTime cTime = getBungeeTimeChecker().getTime();
int days = cTime.getDayOfMonth();
if (monthTotal > days * maxVotes) {
monthTotal = days * maxVotes;
}
}
text = new BungeeMessageData(allTimeTotal, monthTotal, weeklyTotal, dailyTotal, points,
milestoneCount, votePartyVotes, currentVotePartyVotesRequired);
ArrayList<Column> update = new ArrayList<Column>();
@@ -1289,7 +1451,7 @@ public class VotingPluginBungee extends Plugin implements Listener {
}
ProxiedPlayer p = getProxy().getPlayer(UUID.fromString(uuid));
if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
if (method.equals(BungeeMethod.PLUGINMESSAGING) || method.equals(BungeeMethod.REDIS)) {
if (config.getSendVotesToAllServers()) {
for (String s : getAvailableAllServers()) {
@@ -1300,7 +1462,7 @@ public class VotingPluginBungee extends Plugin implements Listener {
debug("Forcing vote to cache");
}
if (config.getBroadcast()) {
sendPluginMessageServer(s, "VoteBroadcast", uuid, player, service);
sendMessageServer(s, "VoteBroadcast", uuid, player, service);
}
if (info.getPlayers().isEmpty() || forceCache) {
// cache
@@ -1315,21 +1477,20 @@ public class VotingPluginBungee extends Plugin implements Listener {
} else {
// send
sendPluginMessageServer(s, "Vote", player, uuid, service, "" + time,
Boolean.TRUE.toString(), "" + realVote, text.toString(),
"" + getConfig().getBungeeManageTotals(),
sendMessageServer(s, "Vote", player, uuid, service, "" + time, Boolean.TRUE.toString(),
"" + realVote, text.toString(), "" + getConfig().getBungeeManageTotals(),
"" + BungeeVersion.getPluginMessageVersion(), "" + config.getBroadcast(), "1", "1");
}
}
} else {
if (isOnline(p) && getAvailableAllServers().contains(p.getServer().getInfo().getName())) {
sendPluginMessageServer(p.getServer().getInfo().getName(), "VoteOnline", player, uuid, service,
sendMessageServer(p.getServer().getInfo().getName(), "VoteOnline", player, uuid, service,
"" + time, Boolean.TRUE.toString(), "" + realVote, text.toString(),
"" + getConfig().getBungeeManageTotals(), "" + BungeeVersion.getPluginMessageVersion(),
"" + config.getBroadcast(), "1", "1");
if (getConfig().getMultiProxySupport() && getConfig().getMultiProxyOneGlobalReward()) {
sendMultiProxyServerMessage("ClearVote", player, uuid);
multiProxyHandler.sendMultiProxyServerMessage("ClearVote", player, uuid);
}
} else {
if (!cachedOnlineVotes.containsKey(uuid)) {
@@ -1345,10 +1506,10 @@ public class VotingPluginBungee extends Plugin implements Listener {
}
for (String s : getAvailableAllServers()) {
if (config.getBroadcast()) {
sendPluginMessageServer(s, "VoteBroadcast", uuid, player, service);
sendMessageServer(s, "VoteBroadcast", uuid, player, service);
}
sendPluginMessageServer(s, "VoteUpdate", uuid, "" + votePartyVotes,
"" + currentVotePartyVotesRequired);
sendMessageServer(s, "VoteUpdate", uuid, "" + votePartyVotes,
"" + currentVotePartyVotesRequired, text.toString());
}
}
@@ -1358,14 +1519,15 @@ public class VotingPluginBungee extends Plugin implements Listener {
if (getConfig().getMultiProxySupport() && getConfig().getPrimaryServer()) {
if (!getConfig().getMultiProxyOneGlobalReward()) {
debug("Seending global proxy vote message");
sendMultiProxyServerMessage("Vote", uuid, player, service, "" + votePartyVotes,
multiProxyHandler.sendMultiProxyServerMessage("Vote", uuid, player, service, "" + votePartyVotes,
"" + currentVotePartyVotesRequired, "" + time, "" + realVote, text.toString());
} else {
// check if reward should've already been given
if (!(isOnline(p) && !config.getBlockedServers().contains(p.getServer().getInfo().getName()))) {
debug("Sending global proxy voteonline message");
sendMultiProxyServerMessage("VoteOnline", uuid, player, service, "" + votePartyVotes,
"" + currentVotePartyVotesRequired, "" + time, "" + realVote, text.toString());
multiProxyHandler.sendMultiProxyServerMessage("VoteOnline", uuid, player, service,
"" + votePartyVotes, "" + currentVotePartyVotesRequired, "" + time, "" + realVote,
text.toString());
} else {
debug("Not sending global proxy message for voteonline, player already got reward");
}
@@ -49,14 +49,20 @@ public class VotingPluginBungeeCommand extends Command {
sender.sendMessage(new TextComponent(
"&aChecking status, waiting for response, check console, method: plugin messaging"));
bungee.status(sender);
bungee.sendServerNameMessage();
} else if (bungee.getMethod().equals(BungeeMethod.REDIS)) {
sender.sendMessage(new TextComponent(
"&aChecking status, waiting for response, check console, method: redis"));
bungee.status(sender);
bungee.sendServerNameMessage();
} else {
sender.sendMessage(
new TextComponent("&aNot using socket/pluginmessage method, command unavailable"));
new TextComponent("&aNot using socket/pluginmessage/redis method, command unavailable"));
}
}
if (args[0].equalsIgnoreCase("multiproxystatus")) {
bungee.sendMultiProxyServerMessage("Status");
sender.sendMessage(new TextComponent("&aSending status message"));
bungee.getMultiProxyHandler().sendMultiProxyServerMessage("Status");
sender.sendMessage(new TextComponent("Sending status message"));
}
if (args[0].equalsIgnoreCase("help")) {
TextComponent[] msg = new TextComponent[7];
@@ -0,0 +1,229 @@
package com.bencodez.votingplugin.bungee.global.multiproxy;
import java.io.File;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import com.bencodez.advancedcore.api.misc.encryption.EncryptionHandler;
import com.bencodez.advancedcore.bungeeapi.redis.RedisHandler;
import com.bencodez.advancedcore.bungeeapi.redis.RedisListener;
import com.bencodez.advancedcore.bungeeapi.sockets.ClientHandler;
import com.bencodez.advancedcore.bungeeapi.sockets.SocketHandler;
import com.bencodez.advancedcore.bungeeapi.sockets.SocketReceiver;
import com.bencodez.votingplugin.bungee.BungeeMessageData;
import lombok.Getter;
public abstract class MultiProxyHandler {
public abstract boolean getMultiProxySupportEnabled();
public abstract EncryptionHandler getEncryptionHandler();
public abstract File getPluginDataFolder();
public abstract void setEncryptionHandler(EncryptionHandler encryptionHandler);
public abstract void logInfo(String msg);
public abstract boolean getDebug();
public abstract String getVersion();
private HashMap<String, ClientHandler> multiproxyClientHandles;
private SocketHandler multiproxySocketHandler;
@Getter
private RedisHandler multiProxyRedis;
public MultiProxyHandler() {
}
public void sendMultiProxyServerMessage(String... messageData) {
if (getMultiProxyMethod().equals(MultiProxyMethod.SOCKETS)) {
for (ClientHandler h : multiproxyClientHandles.values()) {
h.sendMessage(messageData);
}
} else if (getMultiProxyMethod().equals(MultiProxyMethod.REDIS)) {
for (String server : getProxyServers()) {
multiProxyRedis.sendMessage("VotingPluginProxy_" + server, messageData);
}
}
}
public abstract List<String> getProxyServers();
public void close() {
if (multiproxySocketHandler != null) {
multiproxySocketHandler.closeConnection();
multiproxySocketHandler = null;
}
if (multiProxyRedis != null && !getMultiProxyRedisUseExistingConnection()) {
multiProxyRedis.close();
}
}
public void loadMultiProxySupport() {
if (getMultiProxySupportEnabled()) {
if (getMultiProxyMethod().equals(MultiProxyMethod.SOCKETS)) {
if (getEncryptionHandler() == null) {
setEncryptionHandler(new EncryptionHandler(new File(getPluginDataFolder(), "secretkey.key")));
}
if (multiproxySocketHandler != null) {
multiproxySocketHandler.closeConnection();
multiproxySocketHandler = null;
}
multiproxySocketHandler = new SocketHandler(getVersion(), getMultiProxySocketHostHost(),
getMultiProxySocketHostPort(), getEncryptionHandler(), getDebug()) {
@Override
public void log(String str) {
logInfo(str);
}
};
multiproxySocketHandler.add(new SocketReceiver() {
@Override
public void onReceive(String[] data) {
if (data.length > 0) {
if (data[0].equalsIgnoreCase("Status")) {
logInfo("Multi-proxy status message received");
} else if (data[0].equalsIgnoreCase("ClearVote")) {
clearVote(data[2]);
if (getPrimaryServer()) {
sendMultiProxyServerMessage("ClearVotePrimary", data[1], data[2]);
}
} else if (data[0].equalsIgnoreCase("ClearVotePrimary")) {
clearVote(data[2]);
} else if (data[0].equalsIgnoreCase("login")) {
addNonVotedPlayerCache(data[1], data[2]);
// nonVotedPlayersCache.addPlayer(data[1], data[2]);
}
}
if (data.length > 8) {
if (data[0].equalsIgnoreCase("Vote")) {
triggerVote(data[2], data[3], Boolean.valueOf(data[7]), true, 0,
new BungeeMessageData(data[8]), data[1]);
} else if (data[0].equalsIgnoreCase("VoteOnline")) {
triggerVote(data[2], data[3], Boolean.valueOf(data[7]), true, 0,
new BungeeMessageData(data[8]), data[1]);
}
}
}
});
multiproxyClientHandles = new HashMap<String, ClientHandler>();
for (String s : getMultiProxyServers()) {
MultiProxyServerSocketConfiguration d = getMultiProxyServersConfiguration(s);
multiproxyClientHandles.put(s,
new ClientHandler(d.getHost(), d.getPort(), getEncryptionHandler(), getDebug()));
}
} else {
if (getMultiProxyRedisUseExistingConnection() && getRedisHandler() != null) {
multiProxyRedis = getRedisHandler();
} else {
multiProxyRedis = new RedisHandler(getMultiProxyRedisHost(), getMultiProxyRedisPort(),
getMultiProxyUsername(), getMultiProxyPassword()) {
@Override
public void onMessage(String channel, String[] data) {
if (data.length > 0) {
if (data[0].equalsIgnoreCase("Status")) {
logInfo("Multi-proxy status message received");
} else if (data[0].equalsIgnoreCase("ClearVote")) {
clearVote(data[2]);
if (getPrimaryServer()) {
sendMultiProxyServerMessage("ClearVotePrimary", data[1], data[2]);
}
} else if (data[0].equalsIgnoreCase("ClearVotePrimary")) {
clearVote(data[2]);
} else if (data[0].equalsIgnoreCase("login")) {
addNonVotedPlayerCache(data[1], data[2]);
// nonVotedPlayersCache.addPlayer(data[1], data[2]);
}
}
if (data.length > 8) {
if (data[0].equalsIgnoreCase("Vote")) {
triggerVote(data[2], data[3], Boolean.valueOf(data[7]), true, 0,
new BungeeMessageData(data[8]), data[1]);
} else if (data[0].equalsIgnoreCase("VoteOnline")) {
triggerVote(data[2], data[3], Boolean.valueOf(data[7]), true, 0,
new BungeeMessageData(data[8]), data[1]);
}
}
}
@Override
public void debug(String message) {
if (getDebug()) {
logInfo("MultiProxyRedis: " + message);
}
}
};
}
runAsnc(new Runnable() {
@Override
public void run() {
multiProxyRedis.loadListener(
new RedisListener(multiProxyRedis, "VotingPluginProxy_" + getMultiProxyServerName()));
}
});
}
logInfo("Loaded multi-proxy support: " + getMultiProxyMethod().toString());
}
}
public abstract void runAsnc(Runnable runnable);
public abstract MultiProxyMethod getMultiProxyMethod();
public abstract RedisHandler getRedisHandler();
public abstract boolean getMultiProxyRedisUseExistingConnection();
public abstract String getMultiProxyPassword();
public abstract String getMultiProxyUsername();
public abstract String getMultiProxyServerName();
public abstract int getMultiProxyRedisPort();
public abstract String getMultiProxyRedisHost();
public abstract boolean getPrimaryServer();
public void login(String uuid, String playerName) {
if (!getMultiProxySupportEnabled()) {
return;
}
if (getPrimaryServer()) {
return;
}
sendMultiProxyServerMessage("Login", uuid, playerName);
}
public abstract int getMultiProxySocketHostPort();
public abstract String getMultiProxySocketHostHost();
public abstract MultiProxyServerSocketConfiguration getMultiProxyServersConfiguration(String s);
public abstract Collection<String> getMultiProxyServers();
public abstract void triggerVote(String player, String service, boolean realVote, boolean timeQueue, long queueTime,
BungeeMessageData text, String uuid);
public abstract void addNonVotedPlayerCache(String string, String string2);
public abstract void clearVote(String string);
}
@@ -0,0 +1,14 @@
package com.bencodez.votingplugin.bungee.global.multiproxy;
public enum MultiProxyMethod {
SOCKETS, REDIS;
public static MultiProxyMethod getByName(String str) {
for (MultiProxyMethod method : values()) {
if (method.toString().equalsIgnoreCase(str)) {
return method;
}
}
return MultiProxyMethod.SOCKETS;
}
}
@@ -0,0 +1,9 @@
package com.bencodez.votingplugin.bungee.global.multiproxy;
public interface MultiProxyServerSocketConfiguration {
String getServerName();
String getHost();
int getPort();
}
@@ -0,0 +1,31 @@
package com.bencodez.votingplugin.bungee.global.multiproxy;
import net.md_5.bungee.config.Configuration;
public class MultiProxyServerSocketConfigurationBungee implements MultiProxyServerSocketConfiguration {
private String server;
private String host;
private int port;
public MultiProxyServerSocketConfigurationBungee(String s, Configuration config) {
server = s;
host = config.getString("Host", "");
port = config.getInt("Port", 1234);
}
@Override
public String getServerName() {
return server;
}
@Override
public String getHost() {
return host;
}
@Override
public int getPort() {
return port;
}
}
@@ -0,0 +1,33 @@
package com.bencodez.votingplugin.bungee.global.multiproxy;
import ninja.leaping.configurate.ConfigurationNode;
public class MultiProxyServerSocketConfigurationVelocity implements MultiProxyServerSocketConfiguration {
private String server;
private String host;
private int port;
public MultiProxyServerSocketConfigurationVelocity(String s, ConfigurationNode config) {
server = s;
host = config.getNode("Host").getString("0.0.0.0");
port = config.getNode("Port").getInt(1298);
}
@Override
public String getServerName() {
return server;
}
@Override
public String getHost() {
return host;
}
@Override
public int getPort() {
return port;
}
}
@@ -7,7 +7,7 @@ import java.util.List;
import org.checkerframework.checker.nullness.qual.NonNull;
import com.bencodez.advancedcore.bungeeapi.velocity.VelocityYMLFile;
import com.bencodez.simpleapi.file.velocity.VelocityYMLFile;
import ninja.leaping.configurate.ConfigurationNode;
@@ -53,6 +53,26 @@ public class Config extends VelocityYMLFile {
return getString(getNode("BungeeMethod"), "PLUGINMESSAGING");
}
public String getRedisHost() {
return getString(getNode("Redis", "Host"), "");
}
public int getRedisPort() {
return getInt(getNode("Redis", "Port"), 6379);
}
public String getRedisUsername() {
return getString(getNode("Redis", "Username"), "");
}
public String getRedisPrefix() {
return getString(getNode("Redis", "Prefix"), "");
}
public String getRedisPassword() {
return getString(getNode("Redis", "Password"), "");
}
public String getBungeeHost() {
return getString(getNode("BungeeServer", "Host"), "");
}
@@ -60,11 +80,15 @@ public class Config extends VelocityYMLFile {
public int getBungeePort() {
return getInt(getNode("BungeeServer", "Port"), 1297);
}
public int getMaxAmountOfVotesPerDay() {
return getInt(getNode("MaxAmountOfVotesPerDay"), -1);
}
public int getVoteCacheTime() {
return getInt(getNode("VoteCacheTime"), -1);
}
public boolean getDebug() {
return getBoolean(getNode("Debug"), false);
}
@@ -137,16 +161,12 @@ public class Config extends VelocityYMLFile {
return getBoolean(getNode("MultiProxyOneGlobalReward"), false);
}
public boolean getGeyserSupport() {
return getBoolean(getNode("GeyserSupport"), false);
}
public boolean getPrimaryServer() {
return getBoolean(getNode("PrimaryServer"), false);
}
public String getGeyserPrefix() {
return getString(getNode("GeyserPrefix"), "*");
public String getBedrockPlayerPrefix() {
return getString(getNode("BedrockPlayerPrefix"), ".");
}
public ConfigurationNode getMultiProxyServers(String s) {
@@ -165,4 +185,36 @@ public class Config extends VelocityYMLFile {
return getInt(getNode("MultiProxySocketHost", "Port"), 1297);
}
public String getMultiProxyMethod() {
return getString(getNode("MultiProxyMethod"), "SOCKET");
}
public String getProxyServerName() {
return getString(getNode("ProxyServerName"), "SOCKET");
}
public List<String> getProxyServers() {
return getStringList(getNode("ProxyServers"), new ArrayList<String>());
}
public boolean getMultiProxyRedisUseExistingConnection() {
return getBoolean(getNode("MultiProxyRedis", "UseExistingConnection"), false);
}
public String getMultiProxyRedisHost() {
return getString(getNode("MultiProxyRedis", "Host"), "");
}
public int getMultiProxyRedisPort() {
return getInt(getNode("MultiProxyRedis", "Port"), 6379);
}
public String getMultiProxyRedisUsername() {
return getString(getNode("MultiProxyRedis", "Username"), "");
}
public String getMultiProxyRedisPassword() {
return getString(getNode("MultiProxyRedis", "Password"), "");
}
}
@@ -2,7 +2,7 @@ package com.bencodez.votingplugin.bungee.velocity;
import java.io.File;
import com.bencodez.advancedcore.bungeeapi.velocity.VelocityJSONFile;
import com.bencodez.simpleapi.file.velocity.VelocityJSONFile;
import com.velocitypowered.api.proxy.Player;
public class NonVotedPlayersCache extends VelocityJSONFile {
@@ -20,12 +20,18 @@ public class NonVotedPlayersCache extends VelocityJSONFile {
}
}
private void addPlayer(String uuid, String playerName) {
public void addPlayer(String uuid, String playerName) {
getNode("NonVotedPlayers", playerName, "UUID").setValue(uuid);
getNode("NonVotedPlayers", playerName, "LastTime").setValue(System.currentTimeMillis());
save();
}
public void addPlayerCheck(String uuid, String playerName) {
if (!plugin.getMysql().containsKeyQuery(uuid)) {
addPlayer(uuid, playerName);
}
}
public void check() {
for (String player : getKeys(getNode("NonVotedPlayers"))) {
long time = getNode("NonVotedPlayers", player, "LastTime").getLong(0);
@@ -3,7 +3,7 @@ package com.bencodez.votingplugin.bungee.velocity;
import java.io.File;
import java.util.Collection;
import com.bencodez.advancedcore.bungeeapi.velocity.VelocityJSONFile;
import com.bencodez.simpleapi.file.velocity.VelocityJSONFile;
import com.bencodez.votingplugin.bungee.OfflineBungeeVote;
import com.bencodez.votingplugin.timequeue.VoteTimeQueue;
@@ -42,9 +42,7 @@ import org.bstats.charts.SimplePie;
import org.bstats.velocity.Metrics;
import org.slf4j.Logger;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.misc.encryption.EncryptionHandler;
import com.bencodez.advancedcore.api.misc.jsonparser.JsonParser;
import com.bencodez.advancedcore.api.time.TimeType;
import com.bencodez.advancedcore.api.user.usercache.value.DataValue;
import com.bencodez.advancedcore.api.user.usercache.value.DataValueBoolean;
@@ -55,15 +53,23 @@ import com.bencodez.advancedcore.api.user.userstorage.mysql.api.config.MysqlConf
import com.bencodez.advancedcore.bungeeapi.globaldata.GlobalDataHandlerProxy;
import com.bencodez.advancedcore.bungeeapi.globaldata.GlobalMySQL;
import com.bencodez.advancedcore.bungeeapi.mysql.VelocityMySQL;
import com.bencodez.advancedcore.bungeeapi.redis.RedisHandler;
import com.bencodez.advancedcore.bungeeapi.redis.RedisListener;
import com.bencodez.advancedcore.bungeeapi.sockets.ClientHandler;
import com.bencodez.advancedcore.bungeeapi.sockets.SocketHandler;
import com.bencodez.advancedcore.bungeeapi.sockets.SocketReceiver;
import com.bencodez.advancedcore.bungeeapi.time.BungeeTimeChecker;
import com.bencodez.advancedcore.bungeeapi.velocity.VelocityYMLFile;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.file.velocity.VelocityYMLFile;
import com.bencodez.simpleapi.json.JsonParser;
import com.bencodez.votingplugin.bungee.BungeeMessageData;
import com.bencodez.votingplugin.bungee.BungeeMethod;
import com.bencodez.votingplugin.bungee.BungeeVersion;
import com.bencodez.votingplugin.bungee.OfflineBungeeVote;
import com.bencodez.votingplugin.bungee.global.multiproxy.MultiProxyHandler;
import com.bencodez.votingplugin.bungee.global.multiproxy.MultiProxyMethod;
import com.bencodez.votingplugin.bungee.global.multiproxy.MultiProxyServerSocketConfiguration;
import com.bencodez.votingplugin.bungee.global.multiproxy.MultiProxyServerSocketConfigurationVelocity;
import com.bencodez.votingplugin.timequeue.VoteTimeQueue;
import com.bencodez.votingplugin.topvoter.TopVoter;
import com.google.gson.JsonElement;
@@ -93,8 +99,8 @@ import ninja.leaping.configurate.yaml.YAMLConfigurationLoader;
public class VotingPluginVelocity {
private static final ChannelIdentifier CHANNEL = MinecraftChannelIdentifier.create("vp", "vp");
private HashMap<String, ArrayList<OfflineBungeeVote>> cachedOnlineVotes = new HashMap<String, ArrayList<OfflineBungeeVote>>();
private HashMap<RegisteredServer, ArrayList<OfflineBungeeVote>> cachedVotes = new HashMap<RegisteredServer, ArrayList<OfflineBungeeVote>>();
private ConcurrentHashMap<String, ArrayList<OfflineBungeeVote>> cachedOnlineVotes = new ConcurrentHashMap<String, ArrayList<OfflineBungeeVote>>();
private ConcurrentHashMap<RegisteredServer, ArrayList<OfflineBungeeVote>> cachedVotes = new ConcurrentHashMap<RegisteredServer, ArrayList<OfflineBungeeVote>>();
private HashMap<String, ClientHandler> clientHandles;
@@ -134,9 +140,8 @@ public class VotingPluginVelocity {
@Getter
private GlobalDataHandlerProxy globalDataHandler;
private HashMap<String, ClientHandler> multiproxyClientHandles;
private SocketHandler multiproxySocketHandler;
@Getter
private RedisHandler redisHandler;
@Inject
public VotingPluginVelocity(ProxyServer server, Logger logger, Metrics.Factory metricsFactory,
@@ -174,7 +179,7 @@ public class VotingPluginVelocity {
}
if (toSend) {
sendPluginMessageServer(serverToCheck, "Vote", cache.getPlayerName(), cache.getUuid(),
sendMessageServer(serverToCheck, "Vote", cache.getPlayerName(), cache.getUuid(),
cache.getService(), "" + cache.getTime(), Boolean.FALSE.toString(),
"" + cache.isRealVote(), cache.getText(), "" + getConfig().getBungeeManageTotals(),
"" + BungeeVersion.getPluginMessageVersion(), "" + config.getBroadcast(), "" + num,
@@ -204,7 +209,7 @@ public class VotingPluginVelocity {
int num = 1;
int numberOfVotes = c.size();
for (OfflineBungeeVote cache : c) {
sendPluginMessageServer(serverToCheck, "VoteOnline", cache.getPlayerName(), cache.getUuid(),
sendMessageServer(serverToCheck, "VoteOnline", cache.getPlayerName(), cache.getUuid(),
cache.getService(), "" + cache.getTime(), Boolean.FALSE.toString(),
"" + cache.isRealVote(), cache.getText(), "" + getConfig().getBungeeManageTotals(),
"" + BungeeVersion.getPluginMessageVersion(), "" + config.getBroadcast(), "" + num,
@@ -213,7 +218,7 @@ public class VotingPluginVelocity {
}
cachedOnlineVotes.put(uuid, new ArrayList<OfflineBungeeVote>());
if (getConfig().getMultiProxySupport() && getConfig().getMultiProxyOneGlobalReward()) {
sendMultiProxyServerMessage("ClearVote", player.getUsername(), uuid);
getMultiProxyHandler().sendMultiProxyServerMessage("ClearVote", player.getUsername(), uuid);
}
}
}
@@ -507,6 +512,7 @@ public class VotingPluginVelocity {
public void run() {
checkCachedVotes(server);
checkOnlineVotes(p1, p.getUniqueId().toString(), server);
getMultiProxyHandler().login(p1.getUniqueId().toString(), p1.getUsername());
}
});
@@ -587,6 +593,7 @@ public class VotingPluginVelocity {
if (mysql != null) {
mysql.shutDown();
}
timer.shutdownNow();
enabled = false;
logger.info("VotingPlugin disabled");
}
@@ -876,6 +883,9 @@ public class VotingPluginVelocity {
debug("Checking nonvotedplayerscache.yml...");
nonVotedPlayersCache.check();
}
if (voteCacheFile != null) {
voteCacheFile.save();
}
}).delay(1L, TimeUnit.MINUTES).repeat(60l, TimeUnit.MINUTES).schedule();
} else if (method.equals(BungeeMethod.SOCKETS)) {
encryptionHandler = new EncryptionHandler(new File(dataDirectory.toFile(), "secretkey.key"));
@@ -928,6 +938,62 @@ public class VotingPluginVelocity {
d.getNode("Port").getInt(1298), encryptionHandler, config.getDebug()));
}
}
} else if (method.equals(BungeeMethod.REDIS)) {
redisHandler = new RedisHandler(config.getRedisHost(), config.getRedisPort(), config.getRedisUsername(),
config.getRedisPassword()) {
@Override
protected void onMessage(String channel, String[] message) {
if (message.length > 0) {
if (message[0].equalsIgnoreCase("statusokay")) {
String server = message[1];
getLogger().info("Status okay for " + server);
} else if (message[0].equalsIgnoreCase("login")) {
String player = message[1];
String uuid = message[2];
String serverName = "";
if (message.length > 3) {
serverName = message[3];
}
debug("Login: " + player + "/" + uuid + " " + serverName);
if (nonVotedPlayersCache != null) {
nonVotedPlayersCache.addPlayerCheck(uuid, player);
}
if (server.getPlayer(player).isPresent() && (getGlobalDataHandler() == null
|| !getGlobalDataHandler().isTimeChangedHappened())) {
Player p = server.getPlayer(player).get();
if (p.getCurrentServer().isPresent()) {
final RegisteredServer server = p.getCurrentServer().get().getServer();
final Player p1 = p;
timer.execute(new Runnable() {
@Override
public void run() {
checkCachedVotes(server);
checkOnlineVotes(p1, p.getUniqueId().toString(), server);
getMultiProxyHandler().login(p1.getUniqueId().toString(),
p1.getUsername());
}
});
}
}
return;
}
}
}
@Override
public void debug(String message) {
debug2(message);
}
};
server.getScheduler().buildTask(this, () -> {
redisHandler.loadListener(
new RedisListener(redisHandler, getConfig().getRedisPrefix() + "VotingPlugin"));
}).schedule();
}
currentVotePartyVotesRequired = getConfig().getVotePartyVotesRequired()
@@ -987,64 +1053,162 @@ public class VotingPluginVelocity {
if (!buildNumber.equals("NOTSET")) {
logger.info("Detected using dev build number: " + buildNumber);
}
sendServerNameMessage();
}
public void loadMultiProxySupport() {
if (getConfig().getMultiProxySupport()) {
if (encryptionHandler == null) {
encryptionHandler = new EncryptionHandler(new File(dataDirectory.toFile(), "secretkey.key"));
}
if (multiproxySocketHandler != null) {
multiproxySocketHandler.closeConnection();
multiproxySocketHandler = null;
}
multiproxySocketHandler = new SocketHandler(
server.getPluginManager().getPlugin("votingplugin").get().getDescription().getVersion().get(),
config.getMultiProxySocketHostHost(), config.getMultiProxySocketHostPort(), encryptionHandler,
config.getDebug()) {
@Override
public void log(String str) {
getLogger().info(str);
}
};
multiproxySocketHandler.add(new SocketReceiver() {
@Override
public void onReceive(String[] data) {
if (data.length > 0) {
if (data[0].equalsIgnoreCase("Status")) {
getLogger().info("Multi-proxy status message received");
} else if (data[0].equalsIgnoreCase("ClearVote")) {
cachedOnlineVotes.remove(data[2]);
}
}
if (data.length > 8) {
if (data[0].equalsIgnoreCase("Vote")) {
vote(data[2], data[3], Boolean.valueOf(data[7]), true, 0, new BungeeMessageData(data[8]),
data[1]);
} else if (data[0].equalsIgnoreCase("VoteOnline")) {
vote(data[2], data[3], Boolean.valueOf(data[7]), true, 0, new BungeeMessageData(data[8]),
data[1]);
}
}
}
});
multiproxyClientHandles = new HashMap<String, ClientHandler>();
for (ConfigurationNode s : config.getMultiProxyServers()) {
ConfigurationNode d = config.getMultiProxyServers(s.getKey().toString());
multiproxyClientHandles.put(s.getKey().toString(),
new ClientHandler(d.getNode("Host").getString("0.0.0.0"), d.getNode("Port").getInt(1298),
encryptionHandler, config.getDebug()));
}
getLogger().info("Loaded multi-proxy support");
private void loadMultiProxySupport() {
if (multiProxyHandler != null) {
multiProxyHandler.close();
}
multiProxyHandler = new MultiProxyHandler() {
@Override
public void triggerVote(String player, String service, boolean realVote, boolean timeQueue, long queueTime,
BungeeMessageData text, String uuid) {
vote(player, service, realVote, timeQueue, queueTime, text, uuid);
}
@Override
public void setEncryptionHandler(EncryptionHandler encryptionHandler1) {
encryptionHandler = encryptionHandler1;
}
@Override
public void logInfo(String msg) {
getLogger().info(msg);
}
@Override
public String getVersion() {
return server.getPluginManager().getPlugin("votingplugin").get().getDescription().getVersion().get();
}
@Override
public boolean getMultiProxySupportEnabled() {
return config.getMultiProxySupport();
}
@Override
public int getMultiProxySocketHostPort() {
return config.getMultiProxySocketHostPort();
}
@Override
public String getMultiProxySocketHostHost() {
return config.getMultiProxySocketHostHost();
}
@Override
public MultiProxyServerSocketConfiguration getMultiProxyServersConfiguration(String s) {
return new MultiProxyServerSocketConfigurationVelocity(s, config.getMultiProxyServers(s));
}
@Override
public Collection<String> getMultiProxyServers() {
ArrayList<String> servers = new ArrayList<String>();
for (ConfigurationNode s : config.getMultiProxyServers()) {
servers.add(s.getKey().toString());
}
return servers;
}
@Override
public EncryptionHandler getEncryptionHandler() {
return encryptionHandler;
}
@Override
public boolean getDebug() {
return config.getDebug();
}
@Override
public File getPluginDataFolder() {
return dataDirectory.toFile();
}
@Override
public void clearVote(String string) {
cachedOnlineVotes.remove(string);
}
@Override
public void addNonVotedPlayerCache(String uuid, String player) {
nonVotedPlayersCache.addPlayer(uuid, player);
}
@Override
public boolean getPrimaryServer() {
return config.getPrimaryServer();
}
@Override
public List<String> getProxyServers() {
return config.getProxyServers();
}
@Override
public void runAsnc(Runnable runnable) {
runAsyncNow(runnable);
}
@Override
public MultiProxyMethod getMultiProxyMethod() {
return MultiProxyMethod.getByName(config.getMultiProxyMethod());
}
@Override
public RedisHandler getRedisHandler() {
return redisHandler;
}
@Override
public boolean getMultiProxyRedisUseExistingConnection() {
return config.getMultiProxyRedisUseExistingConnection();
}
@Override
public String getMultiProxyPassword() {
return config.getMultiProxyRedisPassword();
}
@Override
public String getMultiProxyUsername() {
return config.getMultiProxyRedisUsername();
}
@Override
public int getMultiProxyRedisPort() {
return config.getMultiProxyRedisPort();
}
@Override
public String getMultiProxyRedisHost() {
return config.getMultiProxyRedisHost();
}
@Override
public String getMultiProxyServerName() {
return config.getProxyServerName();
}
};
multiProxyHandler.loadMultiProxySupport();
}
private void runAsyncNow(Runnable runnable) {
server.getScheduler().buildTask(this, runnable).schedule();
}
@Getter
private MultiProxyHandler multiProxyHandler;
public void sendServerNameMessage() {
if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
for (RegisteredServer s : getAvailableAllServers()) {
sendPluginMessageServer(s, "ServerName", s.getServerInfo().getName());
}
}
}
private String version = "";
@@ -1130,6 +1294,22 @@ public class VotingPluginVelocity {
loadMultiProxySupport();
}
public void sendMessageServer(RegisteredServer s, String channel, String... messageData) {
if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
sendPluginMessageServer(s, channel, messageData);
} else if (method.equals(BungeeMethod.REDIS)) {
sendRedisMessageServer(s, channel, messageData);
}
}
public void sendRedisMessageServer(RegisteredServer s, String channel, String... messageData) {
ArrayList<String> list = new ArrayList<String>();
list.add(channel);
list.addAll(ArrayUtils.convert(messageData));
redisHandler.sendMessage(getConfig().getRedisPrefix() + "VotingPlugin_" + s.getServerInfo().getName(),
ArrayUtils.convert(list));
}
public void sendPluginMessageServer(RegisteredServer s, String channel, String... messageData) {
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(byteOutStream);
@@ -1147,7 +1327,7 @@ public class VotingPluginVelocity {
e.printStackTrace();
}
debug("Sending plugin message " + s.getServerInfo().getName() + " " + channel + " "
+ ArrayUtils.getInstance().makeStringList(ArrayUtils.getInstance().convert(messageData)));
+ ArrayUtils.makeStringList(ArrayUtils.convert(messageData)));
}
@@ -1199,14 +1379,14 @@ public class VotingPluginVelocity {
public void status() {
if (method.equals(BungeeMethod.SOCKETS)) {
sendServerMessage("status");
} else if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
} else if (method.equals(BungeeMethod.PLUGINMESSAGING) || method.equals(BungeeMethod.REDIS)) {
for (RegisteredServer s : getAvailableAllServers()) {
if (s.getPlayersConnected().size() == 0) {
getLogger().info("No players on server " + s + " to send test status message");
} else {
// send
getLogger().info("Sending request for status message on " + s);
sendPluginMessageServer(s, "Status", s.getServerInfo().getName());
sendMessageServer(s, "Status", s.getServerInfo().getName());
}
}
@@ -1247,17 +1427,12 @@ public class VotingPluginVelocity {
uuid = getUUID(player);
}
if (uuid.isEmpty()) {
if (config.getGeyserSupport()) {
if (!player.startsWith(config.getGeyserPrefix())) {
uuid = getUUID(config.getGeyserPrefix() + player);
player = config.getGeyserPrefix() + player;
}
}
}
if (uuid.isEmpty()) {
if (config.getAllowUnJoined()) {
if (player.startsWith(config.getBedrockPlayerPrefix())) {
logger.info("Ignoring vote since unable to get UUID of bedrock player");
return;
}
debug("Fetching UUID online, since allowunjoined is enabled");
UUID u = null;
try {
@@ -1282,8 +1457,8 @@ public class VotingPluginVelocity {
player = getProperName(uuid, player);
addVoteParty();
if (getConfig().getPrimaryServer() || !getConfig().getMultiProxySupport()) {
addVoteParty();
if (getConfig().getBungeeManageTotals()) {
if (mysql == null) {
@@ -1303,6 +1478,15 @@ public class VotingPluginVelocity {
int dailyTotal = getValue(data, "DailyTotal", 1);
int points = getValue(data, "Points", getConfig().getPointsOnVote());
int milestoneCount = getValue(data, "MilestoneCount", 1);
int maxVotes = getConfig().getMaxAmountOfVotesPerDay();
if (maxVotes > 0) {
LocalDateTime cTime = getBungeeTimeChecker().getTime();
int days = cTime.getDayOfMonth();
if (monthTotal > days * maxVotes) {
monthTotal = days * maxVotes;
}
}
text = new BungeeMessageData(allTimeTotal, monthTotal, weeklyTotal, dailyTotal, points,
milestoneCount, votePartyVotes, currentVotePartyVotesRequired);
ArrayList<Column> update = new ArrayList<Column>();
@@ -1328,7 +1512,7 @@ public class VotingPluginVelocity {
if (server.getPlayer(UUID.fromString(uuid)).isPresent()) {
p = server.getPlayer(UUID.fromString(uuid)).get();
}
if (method.equals(BungeeMethod.PLUGINMESSAGING)) {
if (method.equals(BungeeMethod.PLUGINMESSAGING) || method.equals(BungeeMethod.REDIS)) {
if (config.getSendVotesToAllServers()) {
for (RegisteredServer s : getAvailableAllServers()) {
@@ -1351,9 +1535,8 @@ public class VotingPluginVelocity {
} else {
// send
sendPluginMessageServer(s, "Vote", player, uuid, service, "" + time,
Boolean.TRUE.toString(), "" + realVote, text.toString(),
"" + getConfig().getBungeeManageTotals(),
sendMessageServer(s, "Vote", player, uuid, service, "" + time, Boolean.TRUE.toString(),
"" + realVote, text.toString(), "" + getConfig().getBungeeManageTotals(),
"" + BungeeVersion.getPluginMessageVersion(), "" + config.getBroadcast(), "1", "1");
}
if (config.getBroadcast()) {
@@ -1363,12 +1546,12 @@ public class VotingPluginVelocity {
} else {
if (isOnline(p) && isInAvailableServers(p.getCurrentServer().get().getServerInfo().getName())) {
sendPluginMessageServer(p.getCurrentServer().get().getServer(), "VoteOnline", player, uuid,
service, "" + time, Boolean.TRUE.toString(), "" + realVote, text.toString(),
sendMessageServer(p.getCurrentServer().get().getServer(), "VoteOnline", player, uuid, service,
"" + time, Boolean.TRUE.toString(), "" + realVote, text.toString(),
"" + getConfig().getBungeeManageTotals(), "" + BungeeVersion.getPluginMessageVersion(),
"" + config.getBroadcast(), "1", "1");
if (getConfig().getMultiProxySupport() && getConfig().getMultiProxyOneGlobalReward()) {
sendMultiProxyServerMessage("ClearVote", player, uuid);
getMultiProxyHandler().sendMultiProxyServerMessage("ClearVote", player, uuid);
}
} else {
if (!cachedOnlineVotes.containsKey(uuid)) {
@@ -1384,10 +1567,10 @@ public class VotingPluginVelocity {
}
for (RegisteredServer s : getAvailableAllServers()) {
sendPluginMessageServer(s, "VoteUpdate", uuid, "" + votePartyVotes,
"" + currentVotePartyVotesRequired);
sendMessageServer(s, "VoteUpdate", uuid, "" + votePartyVotes,
"" + currentVotePartyVotesRequired, text.toString());
if (config.getBroadcast()) {
sendPluginMessageServer(s, "VoteBroadcast", uuid, player, service);
sendMessageServer(s, "VoteBroadcast", uuid, player, service);
}
}
}
@@ -1398,15 +1581,17 @@ public class VotingPluginVelocity {
if (getConfig().getMultiProxySupport() && getConfig().getPrimaryServer()) {
if (!getConfig().getMultiProxyOneGlobalReward()) {
debug("Sending global proxy vote message");
sendMultiProxyServerMessage("Vote", uuid, player, service, "" + votePartyVotes,
"" + currentVotePartyVotesRequired, "" + time, "" + realVote, text.toString());
getMultiProxyHandler().sendMultiProxyServerMessage("Vote", uuid, player, service,
"" + votePartyVotes, "" + currentVotePartyVotesRequired, "" + time, "" + realVote,
text.toString());
} else {
// check if reward should've already been given
if (!(isOnline(p) && !config.getBlockedServers()
.contains(p.getCurrentServer().get().getServerInfo().getName()))) {
debug("Seending global proxy voteonline message");
sendMultiProxyServerMessage("VoteOnline", uuid, player, service, "" + votePartyVotes,
"" + currentVotePartyVotesRequired, "" + time, "" + realVote, text.toString());
getMultiProxyHandler().sendMultiProxyServerMessage("VoteOnline", uuid, player, service,
"" + votePartyVotes, "" + currentVotePartyVotesRequired, "" + time, "" + realVote,
text.toString());
} else {
debug("Not sending global proxy message for voteonline, player already got reward");
}
@@ -1454,12 +1639,6 @@ public class VotingPluginVelocity {
return false;
}
public void sendMultiProxyServerMessage(String... messageData) {
for (ClientHandler h : multiproxyClientHandles.values()) {
h.sendMessage(messageData);
}
}
@Getter
private int votePartyVotes = 0;
@Getter
@@ -55,13 +55,21 @@ public class VotingPluginVelocityCommand implements SimpleCommand {
.text("Checking status, waiting for response, check console, method: pluginmessaging")
.color(NamedTextColor.AQUA));
plugin.status();
plugin.sendServerNameMessage();
} else if (plugin.getMethod().equals(BungeeMethod.REDIS)) {
source.sendMessage(
Component.text("Checking status, waiting for response, check console, method: redis")
.color(NamedTextColor.AQUA));
plugin.status();
plugin.sendServerNameMessage();
} else {
source.sendMessage(Component.text("Not using socket/pluginmessage method, command unavailable")
.color(NamedTextColor.AQUA));
}
}
if (args[0].equalsIgnoreCase("multiproxystatus")) {
plugin.sendMultiProxyServerMessage("Status");
plugin.getMultiProxyHandler().sendMultiProxyServerMessage("Status");
source.sendMessage(Component.text("Sending status message").color(NamedTextColor.AQUA));
}
if (args[0].equalsIgnoreCase("help")) {
@@ -5,9 +5,12 @@ import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map.Entry;
import java.util.Queue;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;
import org.bukkit.Bukkit;
@@ -19,21 +22,17 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.permissions.Permission;
import com.bencodez.advancedcore.DebugLevel;
import com.bencodez.advancedcore.api.command.CommandHandler;
import com.bencodez.advancedcore.api.command.PlayerCommandHandler;
import com.bencodez.advancedcore.api.command.TabCompleteHandle;
import com.bencodez.advancedcore.api.command.TabCompleteHandler;
import com.bencodez.advancedcore.api.gui.GUIMethod;
import com.bencodez.advancedcore.api.inventory.BInventory;
import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.misc.PlayerUtils;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.misc.PlayerManager;
import com.bencodez.advancedcore.api.rewards.RewardOptions;
import com.bencodez.advancedcore.api.updater.Updater;
import com.bencodez.advancedcore.api.user.UserStorage;
import com.bencodez.advancedcore.api.user.userstorage.Column;
import com.bencodez.advancedcore.api.user.userstorage.DataType;
import com.bencodez.advancedcore.api.valuerequest.ValueRequest;
@@ -42,7 +41,12 @@ import com.bencodez.advancedcore.api.valuerequest.listeners.StringListener;
import com.bencodez.advancedcore.api.yml.editor.ConfigEditor;
import com.bencodez.advancedcore.api.yml.updater.ConfigUpdater;
import com.bencodez.advancedcore.command.gui.UserGUI;
import com.bencodez.advancedcore.scheduler.BukkitScheduler;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.command.TabCompleteHandle;
import com.bencodez.simpleapi.command.TabCompleteHandler;
import com.bencodez.simpleapi.debug.DebugLevel;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.simpleapi.updater.Updater;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.commands.executers.CommandAliases;
import com.bencodez.votingplugin.commands.gui.AdminGUI;
@@ -99,27 +103,27 @@ public class CommandLoader {
}
public void processSlotClick(Player player, VotingPluginUser user, String slot) {
if (StringParser.getInstance().startsWithIgnoreCase(slot, "url")) {
if (MessageAPI.startsWithIgnoreCase(slot, "url")) {
new VoteURL(plugin, player, user, true).open();
} else if (StringParser.getInstance().startsWithIgnoreCase(slot, "next")) {
} else if (MessageAPI.startsWithIgnoreCase(slot, "next")) {
new VoteNext(plugin, player, user).open(GUIMethod.CHEST);
} else if (StringParser.getInstance().startsWithIgnoreCase(slot, "last")) {
} else if (MessageAPI.startsWithIgnoreCase(slot, "last")) {
new VoteLast(plugin, player, user).open(GUIMethod.CHEST);
} else if (StringParser.getInstance().startsWithIgnoreCase(slot, "total")) {
} else if (MessageAPI.startsWithIgnoreCase(slot, "total")) {
new VoteTotal(plugin, player, user).open(GUIMethod.CHEST);
} else if (StringParser.getInstance().startsWithIgnoreCase(slot, "top")) {
} else if (MessageAPI.startsWithIgnoreCase(slot, "top")) {
new VoteTopVoter(plugin, player, user, TopVoter.getDefault(), 1).open(GUIMethod.CHEST);
} else if (StringParser.getInstance().startsWithIgnoreCase(slot, "today")) {
} else if (MessageAPI.startsWithIgnoreCase(slot, "today")) {
new VoteToday(plugin, player, user, 1).open(GUIMethod.CHEST);
} else if (StringParser.getInstance().startsWithIgnoreCase(slot, "help")) {
} else if (MessageAPI.startsWithIgnoreCase(slot, "help")) {
player.performCommand("vote help");
} else if (StringParser.getInstance().startsWithIgnoreCase(slot, "shop")) {
} else if (MessageAPI.startsWithIgnoreCase(slot, "shop")) {
new VoteShop(plugin, player, user).open(GUIMethod.CHEST);
} else if (StringParser.getInstance().startsWithIgnoreCase(slot, "lastmonth")) {
} else if (MessageAPI.startsWithIgnoreCase(slot, "lastmonth")) {
new VoteTopVoterLastMonth(plugin, player, user).open(GUIMethod.CHEST);
} else if (StringParser.getInstance().startsWithIgnoreCase(slot, "best")) {
} else if (MessageAPI.startsWithIgnoreCase(slot, "best")) {
new VoteBest(plugin, player, user).open(GUIMethod.CHEST);
} else if (StringParser.getInstance().startsWithIgnoreCase(slot, "streak")) {
} else if (MessageAPI.startsWithIgnoreCase(slot, "streak")) {
new VoteStreak(plugin, player, user).open(GUIMethod.CHEST);
}
}
@@ -289,16 +293,14 @@ public class CommandLoader {
public void executeSinglePlayer(CommandSender sender, String[] args) {
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(args[1]);
user.setPoints(Integer.parseInt(args[3]));
sender.sendMessage(
StringParser.getInstance().colorize("&cSet " + args[1] + " points to " + args[3]));
sender.sendMessage(MessageAPI.colorize("&cSet " + args[1] + " points to " + args[3]));
}
@Override
public void executeAll(CommandSender sender, String[] args) {
int num = Integer.parseInt(args[3]);
sender.sendMessage(
StringParser.getInstance().colorize("&cSetting all players points to " + args[3]));
sender.sendMessage(MessageAPI.colorize("&cSetting all players points to " + args[3]));
for (String uuidStr : plugin.getUserManager().getAllUUIDs()) {
UUID uuid = UUID.fromString(uuidStr);
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(uuid);
@@ -307,8 +309,7 @@ public class CommandLoader {
plugin.getSpecialRewards().checkMilestone(user, null,
plugin.getBungeeSettings().isUseBungeecoord());
}
sender.sendMessage(
StringParser.getInstance().colorize("&cDone setting all players points to " + args[3]));
sender.sendMessage(MessageAPI.colorize("&cDone setting all players points to " + args[3]));
}
});
@@ -442,8 +443,8 @@ public class CommandLoader {
user.cache();
int newTotal = 0;
newTotal = user.addPoints(Integer.parseInt(args[3]));
sender.sendMessage(StringParser.getInstance().colorize("&cGave " + args[1] + " " + args[3]
+ " points" + ", " + args[1] + " now has " + newTotal + " points"));
sender.sendMessage(MessageAPI.colorize("&cGave " + args[1] + " " + args[3] + " points"
+ ", " + args[1] + " now has " + newTotal + " points"));
}
}
@@ -451,8 +452,8 @@ public class CommandLoader {
public void executeAll(CommandSender sender, String[] args) {
int num = Integer.parseInt(args[3]);
sender.sendMessage(StringParser.getInstance()
.colorize("&cGiving " + "all players" + " " + args[3] + " points"));
sender.sendMessage(
MessageAPI.colorize("&cGiving " + "all players" + " " + args[3] + " points"));
for (String uuidStr : plugin.getUserManager().getAllUUIDs()) {
UUID uuid = UUID.fromString(uuidStr);
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(uuid);
@@ -461,8 +462,7 @@ public class CommandLoader {
plugin.getSpecialRewards().checkMilestone(user, null,
plugin.getBungeeSettings().isUseBungeecoord());
}
sender.sendMessage(StringParser.getInstance()
.colorize("&cGave " + "all players" + " " + args[3] + " points"));
sender.sendMessage(MessageAPI.colorize("&cGave " + "all players" + " " + args[3] + " points"));
}
});
@@ -475,8 +475,8 @@ public class CommandLoader {
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(args[1]);
user.cache();
user.removePoints(Integer.parseInt(args[3]));
sender.sendMessage(StringParser.getInstance().colorize("&cRemoved " + args[3] + " points from "
+ args[1] + ", " + args[1] + " now has " + user.getPoints() + " points"));
sender.sendMessage(MessageAPI.colorize("&cRemoved " + args[3] + " points from " + args[1] + ", "
+ args[1] + " now has " + user.getPoints() + " points"));
}
});
@@ -515,6 +515,40 @@ public class CommandLoader {
}
});
plugin.getAdminVoteCommand()
.add(new CommandHandler(plugin, new String[] { "CorrectServiceSites" },
"VotingPlugin.Commands.AdminVote.CorrectServiceSites|" + adminPerm,
"Attempt to correct invalid services sites") {
@Override
public void execute(CommandSender sender, String[] args) {
int invalid = 0;
int fixed = 0;
for (VoteSite site : plugin.getVoteSitesEnabled()) {
if (!site.isVaidServiceSite()) {
invalid++;
if (plugin.getServiceSiteHandler().contains(site.getServiceSite())) {
fixed++;
plugin.getConfigVoteSites().setServiceSite(site.getKey(),
plugin.getServiceSiteHandler().match(site.getServiceSite()));
sendMessage(sender,
"&aChanging '" + site.getServiceSite() + "' to '"
+ plugin.getServiceSiteHandler().match(site.getServiceSite())
+ "' on site '" + site.getKey() + "'");
} else {
sendMessage(sender, "&cCouldn't find an valid service site for '"
+ site.getServiceSite() + "' on site '" + site.getKey() + "'");
}
}
}
if (fixed > 0) {
plugin.reload();
}
sendMessage(sender,
"&aDetected " + invalid + " service sites possibly invalid, fixed " + fixed);
}
});
plugin.getAdminVoteCommand().add(new CommandHandler(plugin, new String[] { "Help&?", "(number)" },
"VotingPlugin.Commands.AdminVote.Help|" + adminPerm, "See this page") {
@@ -629,8 +663,8 @@ public class CommandLoader {
@Override
public void execute(CommandSender sender, String[] args) {
sendMessage(sender, ArrayUtils.getInstance()
.convert(new AdminVotePerms(plugin, sender, 0).listPermsDev(sender)));
sendMessage(sender,
ArrayUtils.convert(new AdminVotePerms(plugin, sender, 0).listPermsDev(sender)));
}
});
}
@@ -696,7 +730,7 @@ public class CommandLoader {
public void execute(CommandSender sender, String[] args) {
if (sender instanceof Player) {
Player player = (Player) sender;
BukkitScheduler.runTask(plugin, new Runnable() {
plugin.getBukkitScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
@@ -705,7 +739,7 @@ public class CommandLoader {
});
} else {
BukkitScheduler.runTask(plugin, new Runnable() {
plugin.getBukkitScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
@@ -765,7 +799,7 @@ public class CommandLoader {
@Override
public void execute(CommandSender sender, String[] args) {
sender.sendMessage(ChatColor.GREEN + "UUID of player " + ChatColor.DARK_GREEN + args[1]
+ ChatColor.GREEN + " is: " + PlayerUtils.getInstance().getUUID(args[1]));
+ ChatColor.GREEN + " is: " + PlayerManager.getInstance().getUUID(args[1]));
}
});
@@ -778,7 +812,7 @@ public class CommandLoader {
try {
sender.sendMessage(ChatColor.GREEN + "PlayerName of player " + ChatColor.DARK_GREEN + args[1]
+ ChatColor.GREEN + " is: "
+ PlayerUtils.getInstance().getPlayerName(
+ PlayerManager.getInstance().getPlayerName(
plugin.getVotingPluginUserManager().getVotingPluginUser(UUID.fromString(args[1])),
args[1]));
} catch (IllegalArgumentException e) {
@@ -794,8 +828,7 @@ public class CommandLoader {
@Override
public void execute(CommandSender sender, String[] args) {
if (sender instanceof Player) {
sender.sendMessage(
StringParser.getInstance().colorize("&cThis command can not be done from ingame"));
sender.sendMessage(MessageAPI.colorize("&cThis command can not be done from ingame"));
return;
}
@@ -804,7 +837,7 @@ public class CommandLoader {
}
plugin.getUserManager().getDataManager().clearCache();
plugin.setUpdate(true);
sender.sendMessage(StringParser.getInstance().colorize("&cCleared totals for everyone"));
sender.sendMessage(MessageAPI.colorize("&cCleared totals for everyone"));
}
});
@@ -814,15 +847,14 @@ public class CommandLoader {
@Override
public void execute(CommandSender sender, String[] args) {
if (sender instanceof Player) {
sender.sendMessage(
StringParser.getInstance().colorize("&cThis command can not be done from ingame"));
sender.sendMessage(MessageAPI.colorize("&cThis command can not be done from ingame"));
return;
}
plugin.getUserManager().removeAllKeyValues("OfflineVotes", DataType.STRING);
plugin.getUserManager().removeAllKeyValues(plugin.getUserManager().getOfflineRewardsPath(),
DataType.STRING);
plugin.getUserManager().getDataManager().clearCache();
sender.sendMessage(StringParser.getInstance().colorize("&cCleared offline votes/rewards"));
sender.sendMessage(MessageAPI.colorize("&cCleared offline votes/rewards"));
}
});
@@ -834,8 +866,8 @@ public class CommandLoader {
public void execute(CommandSender sender, String[] args) {
plugin.getVotingPluginUserManager().getVotingPluginUser(args[1])
.setDayVoteStreak(Integer.parseInt(args[4]));
sender.sendMessage(StringParser.getInstance()
.colorize("&cSet votestreak day for '" + args[1] + "' to " + args[4]));
sender.sendMessage(
MessageAPI.colorize("&cSet votestreak day for '" + args[1] + "' to " + args[4]));
}
});
@@ -847,8 +879,7 @@ public class CommandLoader {
public void execute(CommandSender sender, String[] args) {
plugin.getVotingPluginUserManager().getVotingPluginUser(args[1])
.setWeekVoteStreak(Integer.parseInt(args[4]));
sender.sendMessage(StringParser.getInstance()
.colorize("&cSet votestreak week for '" + args[1] + "' to " + args[4]));
sender.sendMessage(MessageAPI.colorize("&cSet votestreak week for '" + args[1] + "' to " + args[4]));
}
});
@@ -860,8 +891,7 @@ public class CommandLoader {
public void execute(CommandSender sender, String[] args) {
plugin.getVotingPluginUserManager().getVotingPluginUser(args[1])
.setMonthVoteStreak(Integer.parseInt(args[4]));
sender.sendMessage(StringParser.getInstance()
.colorize("&cSet votestreak month for '" + args[1] + "' to " + args[4]));
sender.sendMessage(MessageAPI.colorize("&cSet votestreak month for '" + args[1] + "' to " + args[4]));
}
});
@@ -876,7 +906,7 @@ public class CommandLoader {
public void execute(CommandSender sender, String[] args) {
plugin.getVotingPluginUserManager().getVotingPluginUser(args[1]).setTotal(top,
Integer.parseInt(args[4]));
sender.sendMessage(StringParser.getInstance().colorize(
sender.sendMessage(MessageAPI.colorize(
"&cSet " + top.toString() + " total for '" + args[1] + "' to " + args[4]));
}
});
@@ -891,8 +921,8 @@ public class CommandLoader {
public void execute(CommandSender sender, String[] args) {
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(args[1]);
user.setTotal(top, user.getTotal(top) + Integer.parseInt(args[4]));
sender.sendMessage(StringParser.getInstance()
.colorize("&cAdded " + top.toString() + " total for " + args[1]));
sender.sendMessage(
MessageAPI.colorize("&cAdded " + top.toString() + " total for " + args[1]));
}
});
}
@@ -904,7 +934,7 @@ public class CommandLoader {
public void execute(CommandSender sender, String[] args) {
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(args[1]);
user.clearTotals();
sender.sendMessage(StringParser.getInstance().colorize("&cCleared totals for '" + args[1] + "'"));
sender.sendMessage(MessageAPI.colorize("&cCleared totals for '" + args[1] + "'"));
}
});
@@ -918,8 +948,7 @@ public class CommandLoader {
user.resetLastVoted();
plugin.getCoolDownCheck().check(user);
plugin.getCoolDownCheck().checkPerSite(user);
sender.sendMessage(
StringParser.getInstance().colorize("&cVoted sites reset for '" + args[1] + "'"));
sender.sendMessage(MessageAPI.colorize("&cVoted sites reset for '" + args[1] + "'"));
}
});
@@ -933,8 +962,8 @@ public class CommandLoader {
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(args[1]);
user.resetLastVoted(plugin.getVoteSite(args[3], false));
plugin.getCoolDownCheck().checkPerSite(user);
sender.sendMessage(StringParser.getInstance()
.colorize("&cVoted site reset for '" + args[1] + "'" + " on " + args[3]));
sender.sendMessage(
MessageAPI.colorize("&cVoted site reset for '" + args[1] + "'" + " on " + args[3]));
}
});
@@ -949,16 +978,14 @@ public class CommandLoader {
user.setMilestoneCount(user.getMilestoneCount() + Integer.parseInt(args[3]));
plugin.getSpecialRewards().checkMilestone(user, null,
plugin.getBungeeSettings().isUseBungeecoord());
sender.sendMessage(
StringParser.getInstance().colorize("&cAdded milestonecount for " + args[1]));
sender.sendMessage(MessageAPI.colorize("&cAdded milestonecount for " + args[1]));
}
@Override
public void executeAll(CommandSender sender, String[] args) {
int toAdd = Integer.parseInt(args[3]);
sender.sendMessage(
StringParser.getInstance().colorize("&cAdding milestonecount for all players..."));
sender.sendMessage(MessageAPI.colorize("&cAdding milestonecount for all players..."));
for (String uuidStr : plugin.getUserManager().getAllUUIDs()) {
UUID uuid = UUID.fromString(uuidStr);
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(uuid);
@@ -967,8 +994,7 @@ public class CommandLoader {
plugin.getSpecialRewards().checkMilestone(user, null,
plugin.getBungeeSettings().isUseBungeecoord());
}
sender.sendMessage(StringParser.getInstance()
.colorize("&cFinished adding milestonecount for all players"));
sender.sendMessage(MessageAPI.colorize("&cFinished adding milestonecount for all players"));
}
});
@@ -980,8 +1006,8 @@ public class CommandLoader {
public void execute(CommandSender sender, String[] args) {
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(args[1]);
user.setMilestoneCount(Integer.parseInt(args[3]));
sender.sendMessage(StringParser.getInstance()
.colorize("&cSet milestonecount for " + args[1] + " to " + args[3]));
sender.sendMessage(
MessageAPI.colorize("&cSet milestonecount for " + args[1] + " to " + args[3]));
}
});
@@ -994,8 +1020,7 @@ public class CommandLoader {
public void executeSinglePlayer(CommandSender sender, String[] args) {
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(args[1]);
user.setHasGottenMilestone(new HashMap<String, Boolean>());
sender.sendMessage(
StringParser.getInstance().colorize("&cClearing gotten milestones for " + args[1]));
sender.sendMessage(MessageAPI.colorize("&cClearing gotten milestones for " + args[1]));
}
@Override
@@ -1004,14 +1029,13 @@ public class CommandLoader {
if (plugin.getBungeeSettings().isPerServerMilestones()) {
path = plugin.getBungeeSettings().getServerNameStorage() + "_" + "GottenMilestones";
}
sender.sendMessage(
StringParser.getInstance().colorize("&cClearing gotten milestones for all players..."));
sender.sendMessage(MessageAPI.colorize("&cClearing gotten milestones for all players..."));
plugin.getUserManager().removeAllKeyValues(path, DataType.STRING);
for (Player p : Bukkit.getOnlinePlayers()) {
plugin.getUserManager().getDataManager().cacheUser(p.getUniqueId());
}
sender.sendMessage(StringParser.getInstance()
.colorize("&cFinished clearing gotten milestones for all players"));
sender.sendMessage(
MessageAPI.colorize("&cFinished clearing gotten milestones for all players"));
}
});
@@ -1021,7 +1045,7 @@ public class CommandLoader {
@Override
public void execute(CommandSender sender, String[] args) {
sendMessage(sender, "&cTriggering vote for all voting sites...");
for (VoteSite site : plugin.getVoteSites()) {
for (VoteSite site : plugin.getVoteSitesEnabled()) {
plugin.getVoteTimer().submit(new Runnable() {
@Override
@@ -1134,7 +1158,7 @@ public class CommandLoader {
@Override
public void execute(CommandSender sender, String[] args) {
sendMessage(sender, "&cTriggering vote for all voting sites...");
for (VoteSite site : plugin.getVoteSites()) {
for (VoteSite site : plugin.getVoteSitesEnabled()) {
PlayerVoteEvent voteEvent = new PlayerVoteEvent(site, args[1], site.getServiceSite(),
false);
if (voteEvent.getVoteSite() != null) {
@@ -1197,10 +1221,10 @@ public class CommandLoader {
@Override
public void execute(CommandSender sender, String[] args) {
sender.sendMessage(StringParser.getInstance().colorize("&cCreating VoteSite..." + args[1]));
sender.sendMessage(MessageAPI.colorize("&cCreating VoteSite..." + args[1]));
plugin.getConfigVoteSites().generateVoteSite(args[1]);
sender.sendMessage(StringParser.getInstance().colorize("&cCreated VoteSite: &c&l" + args[1]));
sender.sendMessage(MessageAPI.colorize("&cCreated VoteSite: &c&l" + args[1]));
}
});
@@ -1212,7 +1236,7 @@ public class CommandLoader {
@Override
public void execute(CommandSender sender, String[] args) {
VotingPluginMain.plugin.getOptions().setDebug(DebugLevel.INFO);
plugin.getOptions().setDebug(DebugLevel.INFO);
}
});
@@ -1223,7 +1247,7 @@ public class CommandLoader {
@Override
public void execute(CommandSender sender, String[] args) {
VotingPluginMain.plugin.getOptions().setDebug(DebugLevel.EXTRA);
plugin.getOptions().setDebug(DebugLevel.EXTRA);
}
});
@@ -1254,11 +1278,33 @@ public class CommandLoader {
String voteSite = plugin.getVoteSiteName(true, args[1]);
String serviceSite = args[3];
plugin.getConfigVoteSites().setServiceSite(voteSite, serviceSite);
sender.sendMessage(StringParser.getInstance()
sender.sendMessage(MessageAPI
.colorize("&cSet ServiceSite to &c&l" + serviceSite + "&c on &c&l" + voteSite));
}
});
plugin.getAdminVoteCommand()
.add(new CommandHandler(plugin, new String[] { "CheckVoteCoolDownRewards" },
"VotingPlugin.Commands.AdminVote.VoteSite.CheckVoteCoolDownRewards|" + adminPerm,
"Force check all vote cooldown rewards") {
@Override
public void execute(CommandSender sender, String[] args) {
plugin.getCoolDownCheck().getTimer().schedule(new Runnable() {
@Override
public void run() {
for (VoteSite site : plugin.getVoteSitesEnabled()) {
if (site.isVoteDelayDaily()) {
plugin.getCoolDownCheck().checkAllVoteSite(site);
}
}
}
}, 5, TimeUnit.SECONDS);
sender.sendMessage(MessageAPI.colorize("&cForce checking on vote cooldown rewards"));
}
});
plugin.getAdminVoteCommand()
.add(new CommandHandler(plugin, new String[] { "VoteSite", "(sitename)", "SetVoteURL", "(string)" },
"VotingPlugin.Commands.AdminVote.VoteSite.Edit|" + adminPerm, "Set VoteSite VoteURL") {
@@ -1268,8 +1314,8 @@ public class CommandLoader {
String voteSite = plugin.getVoteSiteName(true, args[1]);
String url = args[3];
plugin.getConfigVoteSites().setVoteURL(voteSite, url);
sender.sendMessage(StringParser.getInstance()
.colorize("&cSet VoteURL to &c&l" + url + "&c on &c&l" + voteSite));
sender.sendMessage(
MessageAPI.colorize("&cSet VoteURL to &c&l" + url + "&c on &c&l" + voteSite));
}
});
@@ -1282,8 +1328,8 @@ public class CommandLoader {
String voteSite = plugin.getVoteSiteName(true, args[1]);
int value = Integer.parseInt(args[3]);
plugin.getConfigVoteSites().setPriority(voteSite, value);
sender.sendMessage(StringParser.getInstance()
.colorize("&cSet priortiy to &c&l" + value + "&c on &c&l" + voteSite));
sender.sendMessage(
MessageAPI.colorize("&cSet priortiy to &c&l" + value + "&c on &c&l" + voteSite));
}
});
@@ -1297,8 +1343,8 @@ public class CommandLoader {
String voteSite = plugin.getVoteSiteName(true, args[1]);
int delay = Integer.parseInt(args[3]);
plugin.getConfigVoteSites().setVoteDelay(voteSite, delay);
sender.sendMessage(StringParser.getInstance()
.colorize("&cSet VoteDelay to &c&l" + delay + "&c on &c&l" + voteSite));
sender.sendMessage(
MessageAPI.colorize("&cSet VoteDelay to &c&l" + delay + "&c on &c&l" + voteSite));
}
});
@@ -1309,26 +1355,26 @@ public class CommandLoader {
@Override
public void execute(CommandSender sender, String[] args) {
BukkitScheduler.runTaskAsynchronously(plugin, new Runnable() {
plugin.getBukkitScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
sender.sendMessage(StringParser.getInstance().colorize("&cChecking for update..."));
sender.sendMessage(MessageAPI.colorize("&cChecking for update..."));
plugin.setUpdater(new Updater(plugin, 15358, false));
final Updater.UpdateResult result = plugin.getUpdater().getResult();
switch (result) {
case FAIL_SPIGOT: {
sender.sendMessage(StringParser.getInstance()
sender.sendMessage(MessageAPI
.colorize("&cFailed to check for update for &c&l" + plugin.getName() + "&c!"));
break;
}
case NO_UPDATE: {
sender.sendMessage(StringParser.getInstance().colorize("&c&l" + plugin.getName()
sender.sendMessage(MessageAPI.colorize("&c&l" + plugin.getName()
+ " &cis up to date! Version: &c&l" + plugin.getUpdater().getVersion()));
break;
}
case UPDATE_AVAILABLE: {
sender.sendMessage(StringParser.getInstance().colorize(
sender.sendMessage(MessageAPI.colorize(
"&c&l" + plugin.getName() + " &chas an update available! Your Version: &c&l"
+ plugin.getDescription().getVersion() + " &cNew Version: &c&l"
+ plugin.getUpdater().getVersion()));
@@ -1354,8 +1400,7 @@ public class CommandLoader {
boolean value = Boolean.parseBoolean(args[3]);
plugin.getConfigVoteSites().setEnabled(voteSite, value);
sender.sendMessage(StringParser.getInstance()
.colorize("&cSet votesite " + voteSite + " enabled to " + value));
sender.sendMessage(MessageAPI.colorize("&cSet votesite " + voteSite + " enabled to " + value));
}
});
@@ -1367,23 +1412,22 @@ public class CommandLoader {
public void execute(CommandSender sender, String[] args) {
String siteName = args[1];
if (!plugin.getConfigVoteSites().isServiceSiteGood(siteName)) {
sender.sendMessage(StringParser.getInstance()
.colorize("&cServiceSite is invalid, votes may not work properly"));
sender.sendMessage(MessageAPI.colorize("&cServiceSite is invalid, votes may not work properly"));
} else {
String service = plugin.getConfigVoteSites().getServiceSite(siteName);
if (plugin.getServerData().getServiceSites().contains(service)) {
sender.sendMessage(StringParser.getInstance().colorize("&aServiceSite is properly setup"));
sender.sendMessage(MessageAPI.colorize("&aServiceSite is properly setup"));
} else {
sender.sendMessage(StringParser.getInstance()
.colorize("&cService may not be valid, haven't recieved a vote from " + service
+ ", see /av servicesites"));
sender.sendMessage(
MessageAPI.colorize("&cService may not be valid, haven't recieved a vote from "
+ service + ", see /av servicesites"));
}
}
if (!plugin.getConfigVoteSites().isVoteURLGood(siteName)) {
sender.sendMessage(StringParser.getInstance().colorize("&cVoteURL is invalid"));
sender.sendMessage(MessageAPI.colorize("&cVoteURL is invalid"));
} else {
sender.sendMessage(StringParser.getInstance().colorize("&aVoteURL is properly setup"));
sender.sendMessage(MessageAPI.colorize("&aVoteURL is properly setup"));
}
}
});
@@ -1395,7 +1439,7 @@ public class CommandLoader {
public void execute(CommandSender sender, String[] args) {
plugin.setUpdate(true);
plugin.update();
sender.sendMessage(StringParser.getInstance().colorize("&cUpdating..."));
sender.sendMessage(MessageAPI.colorize("&cUpdating..."));
}
});
@@ -1406,7 +1450,7 @@ public class CommandLoader {
public void execute(CommandSender sender, String[] args) {
plugin.getUserManager().removeAllKeyValues("OfflineVotes", DataType.STRING);
plugin.getUserManager().getDataManager().clearCache();
sender.sendMessage(StringParser.getInstance().colorize("&cOffline votes Cleared"));
sender.sendMessage(MessageAPI.colorize("&cOffline votes Cleared"));
}
});
@@ -1666,6 +1710,29 @@ public class CommandLoader {
}
});
plugin.getAdminVoteCommand()
.add(new CommandHandler(plugin, new String[] { "RemoveOfflineUUIDs" },
"VotingPlugin.Commands.AdminVote.RemoveOfflineUUIDs|" + adminPerm,
"Purges database of offline UUIDs, keeps online UUIDs", true, true) {
@Override
public void execute(CommandSender sender, String[] args) {
if (!plugin.getOptions().isOnlineMode()) {
sendMessage(sender, "&cNot in online mode!");
return;
}
int amount = 0;
for (String uuid : plugin.getUserManager().getAllUUIDs()) {
if (uuid.charAt(14) == '3') {
plugin.getUserManager().removeUUID(UUID.fromString(uuid));
amount++;
}
}
sendMessage(sender, "&cOffline UUIDs purged: " + amount);
}
});
plugin.getAdminVoteCommand()
.add(new CommandHandler(plugin, new String[] { "Placeholders", "(player)" },
"VotingPlugin.Commands.AdminVote.Placeholders.Players|" + adminPerm,
@@ -1679,6 +1746,51 @@ public class CommandLoader {
}
});
plugin.getAdminVoteCommand()
.add(new CommandHandler(plugin, new String[] { "MergeDataFrom", "(UserStorage)" },
"VotingPlugin.Commands.AdminVote.MergeDataFrom|" + adminPerm,
"Merge player totals from other storage type", true, true) {
@Override
public void execute(CommandSender sender, String[] args) {
plugin.loadUserAPI(UserStorage.value(args[1]));
if (plugin.getMysql() != null) {
plugin.getMysql().clearCacheBasic();
}
HashMap<UUID, ArrayList<Column>> cols = plugin.getUserManager()
.getAllKeys(UserStorage.value(args[1]));
Queue<Entry<UUID, ArrayList<Column>>> players = new LinkedList<Entry<UUID, ArrayList<Column>>>(
cols.entrySet());
ArrayList<String> uuids = plugin.getUserManager().getAllUUIDs();
while (players.size() > 0) {
Entry<UUID, ArrayList<Column>> entry = players.poll();
VotingPluginUser user = plugin.getVotingPluginUserManager()
.getVotingPluginUser(entry.getKey(), false);
user.dontCache();
if (uuids.contains(entry.getKey().toString())) {
user.mergeData(user.getData().convert(entry.getValue()));
} else {
user.getData().setValues(plugin.getStorageType(),
user.getData().convert(entry.getValue()));
}
sendMessage(sender, "Finished merge for " + user.getUUID() + ", " + players.size()
+ " more left to go!");
if (players.size() % 50 == 0) {
sendMessage(sender,
"Working on converting data, about " + players.size() + " left to go!");
}
}
plugin.getUserManager().getDataManager().clearCache();
sendMessage(sender, "Merge finished");
}
});
plugin.getAdminVoteCommand().add(new CommandHandler(plugin, new String[] {},
"VotingPlugin.Commands.AdminVote|" + adminPerm, "Base command") {
@@ -1804,7 +1916,7 @@ public class CommandLoader {
public void loadCommands() {
loadAdminVoteCommand();
loadVoteCommand();
BukkitScheduler.runTaskAsynchronously(plugin, new Runnable() {
plugin.getBukkitScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
@@ -1817,11 +1929,11 @@ public class CommandLoader {
public void onClick(ClickEvent clickEvent) {
Player player = clickEvent.getPlayer();
ArrayList<String> voteSites = new ArrayList<String>();
for (VoteSite voteSite : plugin.getVoteSites()) {
for (VoteSite voteSite : plugin.getVoteSitesEnabled()) {
voteSites.add(voteSite.getKey());
}
new ValueRequest().requestString(player, "",
ArrayUtils.getInstance().convert(voteSites), true, new StringListener() {
new ValueRequest().requestString(player, "", ArrayUtils.convert(voteSites), true,
new StringListener() {
@Override
public void onInput(Player player, String value) {
@@ -1850,7 +1962,7 @@ public class CommandLoader {
String playerName = (String) event.getMeta(player, "Player");
BInventory inv = new BInventory("MileStones: " + playerName);
for (String mileStoneName : plugin.getSpecialRewardsConfig().getMilestoneVotes()) {
if (StringParser.getInstance().isInt(mileStoneName)) {
if (MessageAPI.isInt(mileStoneName)) {
int mileStone = Integer.parseInt(mileStoneName);
inv.addButton(inv.getNextSlot(),
@@ -1862,8 +1974,8 @@ public class CommandLoader {
@Override
public void onClick(ClickEvent clickEvent) {
if (StringParser.getInstance().isInt(clickEvent.getClickedItem()
.getItemMeta().getDisplayName())) {
if (MessageAPI.isInt(clickEvent.getClickedItem().getItemMeta()
.getDisplayName())) {
Player player = clickEvent.getPlayer();
int mileStone = Integer.parseInt(clickEvent.getClickedItem()
.getItemMeta().getDisplayName());
@@ -1910,7 +2022,7 @@ public class CommandLoader {
*/
public void loadTabComplete() {
ArrayList<String> sites = new ArrayList<String>();
for (VoteSite site : plugin.getVoteSites()) {
for (VoteSite site : plugin.getVoteSitesEnabled()) {
sites.add(site.getKey());
}
@@ -1919,7 +2031,7 @@ public class CommandLoader {
@Override
public void reload() {
ArrayList<String> sites = new ArrayList<String>();
for (VoteSite site : plugin.getVoteSites()) {
for (VoteSite site : plugin.getVoteSitesEnabled()) {
sites.add(site.getKey());
}
setReplace(sites);
@@ -1987,7 +2099,7 @@ public class CommandLoader {
} else {
try {
user.setPrimaryAccount(
java.util.UUID.fromString(PlayerUtils.getInstance().getUUID(args[1])));
java.util.UUID.fromString(PlayerManager.getInstance().getUUID(args[1])));
sendMessage(sender, "&cPrimary account set");
} catch (Exception e) {
e.printStackTrace();
@@ -2026,6 +2138,9 @@ public class CommandLoader {
value = !plugin.getVoteReminding().getRemindersEnabled().get(p.getUniqueId());
}
plugin.getVoteReminding().getRemindersEnabled().put(p.getUniqueId(), value);
plugin.getPlaceholders().onUpdate(
plugin.getVotingPluginUserManager().getVotingPluginUser(p.getUniqueId(), p.getName()), true);
plugin.getVoteReminding().saveReminds();
if (value) {
sendMessage(sender, plugin.getConfigFile().getFormatCommandsVoteToggleRemindersEnabled());
@@ -2051,13 +2166,13 @@ public class CommandLoader {
@Override
public void execute(CommandSender sender, String[] args) {
if (!plugin.getGui().isChestVoteShopEnabled()) {
sender.sendMessage(StringParser.getInstance().colorize("&cVote shop disabled"));
sender.sendMessage(MessageAPI.colorize("&cVote shop disabled"));
return;
}
String identifier = args[1];
Set<String> identifiers = plugin.getGui().getChestShopIdentifiers();
if (ArrayUtils.getInstance().containsIgnoreCase(identifiers, identifier)) {
if (ArrayUtils.containsIgnoreCase(identifiers, identifier)) {
for (String ident : identifiers) {
if (ident.equalsIgnoreCase(args[1])) {
identifier = ident;
@@ -2103,14 +2218,14 @@ public class CommandLoader {
plugin.getGui().getChestShopIdentifierRewardsPath(identifier),
new RewardOptions().setPlaceholders(placeholders));
user.sendMessage(StringParser.getInstance().replacePlaceHolder(
user.sendMessage(PlaceholderUtils.replacePlaceHolder(
plugin.getConfigFile().getFormatShopPurchaseMsg(), placeholders));
if (limit > 0) {
user.setVoteShopIdentifierLimit(identifier,
user.getVoteShopIdentifierLimit(identifier) + 1);
}
} else {
user.sendMessage(StringParser.getInstance().replacePlaceHolder(
user.sendMessage(PlaceholderUtils.replacePlaceHolder(
plugin.getConfigFile().getFormatShopFailedMsg(), placeholders));
}
} else {
@@ -2157,7 +2272,7 @@ public class CommandLoader {
new VoteLast(plugin, sender, plugin.getVotingPluginUserManager().getVotingPluginUser(args[1]))
.open();
} else {
sendMessage(sender, StringParser.getInstance()
sendMessage(sender, PlaceholderUtils
.replacePlaceHolder(plugin.getConfigFile().getFormatUserNotExist(), "player", args[1]));
}
@@ -2202,7 +2317,7 @@ public class CommandLoader {
new VoteNext(plugin, sender, plugin.getVotingPluginUserManager().getVotingPluginUser(args[1]))
.open();
} else {
sendMessage(sender, StringParser.getInstance()
sendMessage(sender, PlaceholderUtils
.replacePlaceHolder(plugin.getConfigFile().getFormatUserNotExist(), "player", args[1]));
}
}
@@ -2220,10 +2335,10 @@ public class CommandLoader {
if (sender instanceof Player) {
plugin.getVotingPluginUserManager().getVotingPluginUser((Player) sender).sendMessage(msg);
} else {
sender.sendMessage(StringParser.getInstance().colorize(msg));
sender.sendMessage(MessageAPI.colorize(msg));
}
} else {
sendMessage(sender, StringParser.getInstance()
sendMessage(sender, PlaceholderUtils
.replacePlaceHolder(plugin.getConfigFile().getFormatUserNotExist(), "player", args[1]));
}
@@ -2261,7 +2376,7 @@ public class CommandLoader {
new VoteGUI(plugin, sender, plugin.getVotingPluginUserManager().getVotingPluginUser(args[1]))
.open();
} else {
sendMessage(sender, StringParser.getInstance()
sendMessage(sender, PlaceholderUtils
.replacePlaceHolder(plugin.getConfigFile().getFormatUserNotExist(), "player", args[1]));
}
@@ -2413,14 +2528,14 @@ public class CommandLoader {
}
for (String s : plugin.getConfigFile().getFormatCommandsVoteTotalAll()) {
String str = StringParser.getInstance().replaceIgnoreCase(s, "%DailyTotal%", "" + daily);
str = StringParser.getInstance().replaceIgnoreCase(str, "%WeeklyTotal%", "" + weekly);
str = StringParser.getInstance().replaceIgnoreCase(str, "%MonthlyTotal%", "" + month);
str = StringParser.getInstance().replaceIgnoreCase(str, "%AllTimeTotal%", "" + all);
String str = MessageAPI.replaceIgnoreCase(s, "%DailyTotal%", "" + daily);
str = MessageAPI.replaceIgnoreCase(str, "%WeeklyTotal%", "" + weekly);
str = MessageAPI.replaceIgnoreCase(str, "%MonthlyTotal%", "" + month);
str = MessageAPI.replaceIgnoreCase(str, "%AllTimeTotal%", "" + all);
msg.add(str);
}
msg = ArrayUtils.getInstance().colorize(msg);
msg = ArrayUtils.colorize(msg);
sendMessage(sender, msg);
}
@@ -2435,7 +2550,7 @@ public class CommandLoader {
new VoteTotal(plugin, sender, plugin.getVotingPluginUserManager().getVotingPluginUser(args[1]))
.open();
} else {
sendMessage(sender, StringParser.getInstance()
sendMessage(sender, PlaceholderUtils
.replacePlaceHolder(plugin.getConfigFile().getFormatUserNotExist(), "player", args[1]));
}
@@ -2471,7 +2586,7 @@ public class CommandLoader {
new VoteBest(plugin, sender, plugin.getVotingPluginUserManager().getVotingPluginUser(args[1]))
.open();
} else {
sendMessage(sender, StringParser.getInstance()
sendMessage(sender, PlaceholderUtils
.replacePlaceHolder(plugin.getConfigFile().getFormatUserNotExist(), "player", args[1]));
}
}
@@ -2496,7 +2611,7 @@ public class CommandLoader {
new VoteStreak(plugin, sender, plugin.getVotingPluginUserManager().getVotingPluginUser(args[1]))
.open();
} else {
sendMessage(sender, StringParser.getInstance()
sendMessage(sender, PlaceholderUtils
.replacePlaceHolder(plugin.getConfigFile().getFormatUserNotExist(), "player", args[1]));
}
}
@@ -2530,11 +2645,11 @@ public class CommandLoader {
placeholders.put("touser", "" + user.getPlayerName());
placeholders.put("fromuser", "" + cPlayer.getPlayerName());
sendMessage(sender,
StringParser.getInstance()
PlaceholderUtils
.replacePlaceHolder(plugin.getConfigFile()
.getFormatCommandsVoteGivePointsTransferFrom(),
placeholders));
user.sendMessage(StringParser.getInstance().replacePlaceHolder(
user.sendMessage(PlaceholderUtils.replacePlaceHolder(
plugin.getConfigFile().getFormatCommandsVoteGivePointsTransferTo(),
placeholders));
} else {
@@ -2547,7 +2662,7 @@ public class CommandLoader {
}
} else {
sendMessage(sender,
StringParser.getInstance().replacePlaceHolder(
PlaceholderUtils.replacePlaceHolder(
plugin.getConfigFile()
.getFormatCommandsVoteGivePointsNotJoinedServer(),
"player", args[1]));
@@ -2589,7 +2704,7 @@ public class CommandLoader {
for (String ident : plugin.getConfigFile().getCustomCommands()) {
ConfigurationSection section = plugin.getConfigFile().getCustomCommands(ident);
@SuppressWarnings("unchecked")
String[] args = ArrayUtils.getInstance()
String[] args = ArrayUtils
.convert((ArrayList<String>) section.getList("Args", new ArrayList<String>()));
plugin.getVoteCommand().add(new CommandHandler(plugin, args, section.getString("Permission", ""),
section.getString("HelpMessage", "")) {
@@ -2599,7 +2714,7 @@ public class CommandLoader {
public void execute(CommandSender sender, String[] args) {
sendMessage(sender, section.getString("Message", ""));
for (String str : (ArrayList<String>) section.getList("Commands", new ArrayList<String>())) {
BukkitScheduler.runTask(plugin, new Runnable() {
plugin.getBukkitScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
@@ -2632,8 +2747,7 @@ public class CommandLoader {
}
if (remove) {
plugin.debug("Disabling: " + ArrayUtils.getInstance()
.makeStringList(ArrayUtils.getInstance().convert(list.get(i).getArgs())));
plugin.debug("Disabling: " + ArrayUtils.makeStringList(ArrayUtils.convert(list.get(i).getArgs())));
list.remove(i);
}
}
@@ -5,7 +5,7 @@ import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import com.bencodez.advancedcore.api.command.CommandHandler;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
// TODO: Auto-generated Javadoc
@@ -36,7 +36,7 @@ public class CommandAdminVote implements CommandExecutor {
}
// invalid command
sender.sendMessage(StringParser.getInstance().colorize(plugin.getConfigFile().getFormatInvalidCommandAdminVote()));
sender.sendMessage(MessageAPI.colorize(plugin.getConfigFile().getFormatInvalidCommandAdminVote()));
return true;
}
@@ -7,8 +7,8 @@ import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import com.bencodez.advancedcore.api.command.CommandHandler;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
// TODO: Auto-generated Javadoc
@@ -46,7 +46,7 @@ public class CommandAliases implements CommandExecutor {
argsNew.add(arg);
}
plugin.debug("Attempting cmd...");
plugin.debug("Inputed args: " + ArrayUtils.getInstance().makeStringList(argsNew));
plugin.debug("Inputed args: " + ArrayUtils.makeStringList(argsNew));
ArrayList<CommandHandler> handles = new ArrayList<CommandHandler>();
if (adminCommand) {
@@ -73,7 +73,7 @@ public class CommandAliases implements CommandExecutor {
}
if (argsMatch) {
if (cmdHandle.runCommand(sender, ArrayUtils.getInstance().convert(argsNew))) {
if (cmdHandle.runCommand(sender, ArrayUtils.convert(argsNew))) {
plugin.debug("cmd found, ran cmd");
return true;
}
@@ -91,9 +91,11 @@ public class CommandAliases implements CommandExecutor {
// invalid command
if (adminCommand) {
sender.sendMessage(StringParser.getInstance().colorize(plugin.getConfigFile().getFormatInvalidCommandAdminVote()));
sender.sendMessage(
MessageAPI.colorize(plugin.getConfigFile().getFormatInvalidCommandAdminVote()));
} else {
sender.sendMessage(StringParser.getInstance().colorize(plugin.getConfigFile().getFormatInvalidCommandVote()));
sender.sendMessage(
MessageAPI.colorize(plugin.getConfigFile().getFormatInvalidCommandVote()));
}
return true;
}
@@ -5,7 +5,7 @@ import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import com.bencodez.advancedcore.api.command.CommandHandler;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
// TODO: Auto-generated Javadoc
@@ -61,7 +61,7 @@ public class CommandVote implements CommandExecutor {
}
// invalid command
sender.sendMessage(StringParser.getInstance().colorize(plugin.getConfigFile().getFormatInvalidCommandVote()));
sender.sendMessage(MessageAPI.colorize(plugin.getConfigFile().getFormatInvalidCommandVote()));
return true;
}
@@ -19,14 +19,14 @@ import com.bencodez.advancedcore.api.inventory.editgui.valuetypes.EditGUIValueLi
import com.bencodez.advancedcore.api.inventory.editgui.valuetypes.EditGUIValueNumber;
import com.bencodez.advancedcore.api.inventory.editgui.valuetypes.EditGUIValueString;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.misc.PlayerUtils;
import com.bencodez.advancedcore.api.valuerequest.InputMethod;
import com.bencodez.advancedcore.api.valuerequest.ValueRequest;
import com.bencodez.advancedcore.api.valuerequest.ValueRequestBuilder;
import com.bencodez.advancedcore.api.valuerequest.listeners.StringListener;
import com.bencodez.advancedcore.api.yml.editor.ConfigEditor;
import com.bencodez.advancedcore.command.gui.RewardEditGUI;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.player.PlayerUtils;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.commands.gui.admin.AdminVoteVoteParty;
import com.bencodez.votingplugin.commands.gui.admin.cumulative.AdminVoteCumulative;
@@ -242,14 +242,16 @@ public class AdminGUI {
int count = 0;
for (VoteSite voteSite : plugin.getVoteSites()) {
ArrayList<String> lore = new ArrayList<String>();
lore.add("Enabled: " + voteSite.isEnabled());
lore.add("Priority: " + voteSite.getPriority());
lore.add("Name: " + voteSite.getDisplayName());
lore.add("ServiceSite: " + voteSite.getServiceSite());
lore.add("VoteURL: " + voteSite.getVoteURL());
lore.add("VoteDelay: " + voteSite.getVoteDelay());
lore.add("VoteDelayMin: " + voteSite.getVoteDelayMin());
inv.addButton(count, new BInventoryButton(voteSite.getKey(), ArrayUtils.getInstance().convert(lore),
inv.addButton(count, new BInventoryButton(voteSite.getKey(), ArrayUtils.convert(lore),
new ItemStack(Material.STONE)) {
@Override
@@ -287,7 +289,7 @@ public class AdminGUI {
@Override
public void onInput(Player player, String value) {
Object ob = PlayerUtils.getInstance().getPlayerMeta(player, "VoteSite");
Object ob = PlayerUtils.getPlayerMeta(plugin, player, "VoteSite");
if (ob != null) {
VoteSite site = (VoteSite) ob;
PlayerVoteEvent voteEvent = new PlayerVoteEvent(site, value, site.getServiceSite(), false);
@@ -300,7 +302,7 @@ public class AdminGUI {
});
}
}
}, ArrayUtils.getInstance().convert(playerNames)).usingMethod(InputMethod.INVENTORY)
}, ArrayUtils.convert(playerNames)).usingMethod(InputMethod.INVENTORY)
.allowCustomOption(true).request(event.getWhoClicked());
}
});
@@ -369,6 +371,17 @@ public class AdminGUI {
}
}));
inv.addButton(new EditGUIButton(new EditGUIValueNumber("VoteDelayDailyHour", voteSite.getVoteDelayDailyHour()) {
@Override
public void setValue(Player player, Number num) {
VoteSite voteSite = (VoteSite) getInv().getMeta(player, "VoteSite");
String siteName = voteSite.getKey();
plugin.getConfigVoteSites().setVoteDelay(siteName, num.intValue());
plugin.reload();
}
}));
inv.addButton(new EditGUIButton(new EditGUIValueBoolean("Enabled", voteSite.isEnabled()) {
@Override
@@ -10,7 +10,7 @@ import org.bukkit.entity.Player;
import com.bencodez.advancedcore.api.command.CommandHandler;
import com.bencodez.advancedcore.api.gui.GUIHandler;
import com.bencodez.advancedcore.api.gui.GUIMethod;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
import net.md_5.bungee.api.chat.TextComponent;
@@ -43,9 +43,9 @@ public class AdminVoteHelp extends GUIHandler {
maxPage++;
}
msg.add(StringParser.getInstance().stringToComp("&6&lVotingPlugin Admin Help " + (page) + "/" + maxPage));
msg.add(StringParser.getInstance().stringToComp("&6&l() = Needed"));
msg.add(StringParser.getInstance().stringToComp("&6&lAliases: adminvote, av"));
msg.add(MessageAPI.stringToComp("&6&lVotingPlugin Admin Help " + (page) + "/" + maxPage));
msg.add(MessageAPI.stringToComp("&6&l() = Needed"));
msg.add(MessageAPI.stringToComp("&6&lAliases: adminvote, av"));
for (int i = pagesize * (page - 1); (i < text.size()) && (i < ((page) * pagesize)); i++) {
msg.add(text.get(i));
@@ -12,7 +12,7 @@ import org.bukkit.permissions.Permission;
import com.bencodez.advancedcore.api.command.CommandHandler;
import com.bencodez.advancedcore.api.gui.GUIHandler;
import com.bencodez.advancedcore.api.gui.GUIMethod;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.votingplugin.VotingPluginMain;
public class AdminVotePerms extends GUIHandler {
@@ -108,9 +108,9 @@ public class AdminVotePerms extends GUIHandler {
text.add(msg.get(i));
}
text = ArrayUtils.getInstance().colorize(text);
text = ArrayUtils.colorize(text);
return ArrayUtils.getInstance().convert(text);
return ArrayUtils.convert(text);
}
public ArrayList<String> listPerms(CommandSender sender, String player, int page) {
@@ -158,7 +158,7 @@ public class AdminVotePerms extends GUIHandler {
}
}
msg = ArrayUtils.getInstance().colorize(msg);
msg = ArrayUtils.colorize(msg);
int pagesize = plugin.getConfigFile().getFormatPageSize();
@@ -175,7 +175,7 @@ public class AdminVotePerms extends GUIHandler {
} else {
text.add("&cPlayer not online: " + player);
}
return ArrayUtils.getInstance().colorize(text);
return ArrayUtils.colorize(text);
}
@@ -202,9 +202,9 @@ public class AdminVotePerms extends GUIHandler {
msg.add(perm.getName() + " : " + perm.getDescription());
}
msg = ArrayUtils.getInstance().colorize(msg);
msg = ArrayUtils.colorize(msg);
return ArrayUtils.getInstance().convert(msg);
return ArrayUtils.convert(msg);
}
@Override
@@ -44,7 +44,7 @@ public class AdminVoteVotePlayer extends GUIHandler {
EditGUI inv = new EditGUI("Trigger vote for " + playerName);
inv.requirePermission("VotingPlugin.Commands.AdminVote.Vote|VotingPlugin.Admin");
for (VoteSite site : plugin.getVoteSites()) {
for (VoteSite site : plugin.getVoteSitesEnabled()) {
inv.addButton(new BInventoryButton(site.getItem().setName(site.getKey())) {
@Override
@@ -12,12 +12,12 @@ import com.bencodez.advancedcore.api.inventory.BInventory;
import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.valuerequest.InputMethod;
import com.bencodez.advancedcore.api.valuerequest.ValueRequest;
import com.bencodez.advancedcore.api.valuerequest.ValueRequestBuilder;
import com.bencodez.advancedcore.api.valuerequest.listeners.NumberListener;
import com.bencodez.advancedcore.command.gui.RewardEditGUI;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
public class AdminVoteCumulative extends GUIHandler {
@@ -54,7 +54,7 @@ public class AdminVoteCumulative extends GUIHandler {
public void onClick(ClickEvent clickEvent) {
ArrayList<Integer> nums = new ArrayList<Integer>();
for (String num : plugin.getSpecialRewardsConfig().getCumulativeVotes()) {
if (StringParser.getInstance().isInt(num)) {
if (MessageAPI.isInt(num)) {
nums.add(Integer.parseInt(num));
}
}
@@ -12,12 +12,12 @@ import com.bencodez.advancedcore.api.inventory.BInventory;
import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.valuerequest.InputMethod;
import com.bencodez.advancedcore.api.valuerequest.ValueRequest;
import com.bencodez.advancedcore.api.valuerequest.ValueRequestBuilder;
import com.bencodez.advancedcore.api.valuerequest.listeners.NumberListener;
import com.bencodez.advancedcore.command.gui.RewardEditGUI;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
public class AdminVoteMilestones extends GUIHandler {
@@ -54,7 +54,7 @@ public class AdminVoteMilestones extends GUIHandler {
public void onClick(ClickEvent clickEvent) {
ArrayList<Integer> nums = new ArrayList<Integer>();
for (String num : plugin.getSpecialRewardsConfig().getMilestoneVotes()) {
if (StringParser.getInstance().isInt(num)) {
if (MessageAPI.isInt(num)) {
nums.add(Integer.parseInt(num));
}
}
@@ -12,8 +12,9 @@ import com.bencodez.advancedcore.api.inventory.BInventory;
import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.rewards.RewardBuilder;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.user.VotingPluginUser;
@@ -41,9 +42,9 @@ public class VoteBest extends GUIHandler {
placeholders.put("player", user.getPlayerName());
msg = ArrayUtils.getInstance().replacePlaceHolder(msg, placeholders);
msg = PlaceholderUtils.replacePlaceHolder(msg, placeholders);
return ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.colorize(msg);
}
@Override
@@ -12,10 +12,10 @@ import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.inventory.UpdatingBInventoryButton;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.rewards.RewardBuilder;
import com.bencodez.advancedcore.api.rewards.RewardOptions;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.user.VotingPluginUser;
@@ -39,19 +39,19 @@ public class VoteGUI extends GUIHandler {
ItemBuilder builder = new ItemBuilder(plugin.getGui().getChestVoteGUISlotSection(slot));
String[] lore = new String[1];
lore = ArrayUtils.getInstance().convert(plugin.getGui().getChestVoteGUISlotLore(slot));
lore = ArrayUtils.convert(plugin.getGui().getChestVoteGUISlotLore(slot));
String str = plugin.getConfigFile().getVoteTopDefault();
if (lore.length == 0) {
if (StringParser.getInstance().startsWithIgnoreCase(slot, "url")) {
if (MessageAPI.startsWithIgnoreCase(slot, "url")) {
lore = new String[] { "&aClick me" };
} else if (StringParser.getInstance().startsWithIgnoreCase(slot, "next")) {
lore = ArrayUtils.getInstance().convert(new VoteNext(plugin, player, user).getChat(player));
} else if (StringParser.getInstance().startsWithIgnoreCase(slot, "last")) {
lore = ArrayUtils.getInstance().convert(new VoteLast(plugin, player, user).getChat(player));
} else if (StringParser.getInstance().startsWithIgnoreCase(slot, "total")) {
lore = ArrayUtils.getInstance().convert(new VoteTotal(plugin, player, user).getChat(player));
} else if (StringParser.getInstance().startsWithIgnoreCase(slot, "top")) {
} else if (MessageAPI.startsWithIgnoreCase(slot, "next")) {
lore = ArrayUtils.convert(new VoteNext(plugin, player, user).getChat(player));
} else if (MessageAPI.startsWithIgnoreCase(slot, "last")) {
lore = ArrayUtils.convert(new VoteLast(plugin, player, user).getChat(player));
} else if (MessageAPI.startsWithIgnoreCase(slot, "total")) {
lore = ArrayUtils.convert(new VoteTotal(plugin, player, user).getChat(player));
} else if (MessageAPI.startsWithIgnoreCase(slot, "top")) {
if (str.equalsIgnoreCase("monthly")) {
lore = plugin.getTopVoterHandler().topVoterMonthly(1);
@@ -70,12 +70,12 @@ public class VoteGUI extends GUIHandler {
list.add(today[i]);
}
}
lore = ArrayUtils.getInstance().convert(list);
lore = ArrayUtils.convert(list);
} else if (slot.equalsIgnoreCase("help")) {
lore = new String[] { "Click to view help" };
}
}
builder.setLore(ArrayUtils.getInstance().convert(lore));
builder.setLore(ArrayUtils.convert(lore));
return builder;
}
@@ -162,13 +162,19 @@ public class VoteGUI extends GUIHandler {
} else {
plugin.getCommandLoader().processSlotClick(player, user, slot);
}
String prefix = "";
if (event.getButton().getBuilder().isConditional()) {
prefix = "Item.";
}
if (plugin.getRewardHandler().hasRewards(plugin.getGui().getData(), plugin.getGui()
.getChestVoteGUISlotRewardsPath(slot, event.getButton().getLastRewardsPath(player)))) {
plugin.getRewardHandler().giveReward(plugin.getVotingPluginUserManager().getVotingPluginUser(player),
if (plugin.getRewardHandler().hasRewards(plugin.getGui().getData(),
plugin.getGui().getChestVoteGUISlotRewardsPath(slot,
prefix + event.getButton().getLastRewardsPath(player)))) {
plugin.getRewardHandler().giveReward(
plugin.getVotingPluginUserManager().getVotingPluginUser(player),
plugin.getGui().getData(),
plugin.getGui().getChestVoteGUISlotRewardsPath(slot,
event.getButton().getLastRewardsPath(player)),
prefix + event.getButton().getLastRewardsPath(player)),
new RewardOptions().addPlaceholder("identifier", slot));
}
}
@@ -10,8 +10,8 @@ import org.bukkit.entity.Player;
import com.bencodez.advancedcore.api.command.CommandHandler;
import com.bencodez.advancedcore.api.gui.GUIHandler;
import com.bencodez.advancedcore.api.gui.GUIMethod;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.nms.NMSManager;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.simpleapi.nms.NMSManager;
import com.bencodez.votingplugin.VotingPluginMain;
import net.md_5.bungee.api.ChatColor;
@@ -121,7 +121,7 @@ public class VoteHelp extends GUIHandler {
maxPage++;
}
msg.add(StringParser.getInstance()
msg.add(MessageAPI
.stringToComp(plugin.getConfigFile().getFormatCommandsVoteHelpTitle() + " " + page + "/" + maxPage));
for (int i = pagesize * (page - 1); (i < text.size()) && (i < ((page) * pagesize)); i++) {
@@ -12,9 +12,10 @@ import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.inventory.UpdatingBInventoryButton;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.rewards.RewardBuilder;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.objects.VoteSite;
import com.bencodez.votingplugin.user.VotingPluginUser;
@@ -36,16 +37,16 @@ public class VoteLast extends GUIHandler {
String playerName = user.getPlayerName();
msg.add(StringParser.getInstance().replaceIgnoreCase(plugin.getConfigFile().getFormatCommandsVoteLastTitle(),
"%player%", playerName));
msg.add(MessageAPI.replaceIgnoreCase(plugin.getConfigFile().getFormatCommandsVoteLastTitle(), "%player%",
playerName));
for (VoteSite voteSite : plugin.getVoteSites()) {
for (VoteSite voteSite : plugin.getVoteSitesEnabled()) {
if (!voteSite.isHidden()) {
msg.add(user.voteCommandLastLine(voteSite));
}
}
return ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.colorize(msg);
}
@Override
@@ -62,7 +63,7 @@ public class VoteLast extends GUIHandler {
public void onChest(Player player) {
BInventory inv = new BInventory(plugin.getGui().getChestVoteLastName());
inv.addPlaceholder("player", user.getPlayerName());
for (VoteSite site : plugin.getVoteSites()) {
for (VoteSite site : plugin.getVoteSitesEnabled()) {
if (!site.isHidden()) {
inv.addButton(inv.getNextSlot(),
new UpdatingBInventoryButton(plugin, site.getItem().setName(site.getDisplayName())
@@ -73,12 +74,13 @@ public class VoteLast extends GUIHandler {
if (plugin.getGui().isChestVoteLastClickableLinks()) {
Player player = event.getPlayer();
if (player != null) {
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(player);
VotingPluginUser user = plugin.getVotingPluginUserManager()
.getVotingPluginUser(player);
user.sendMessage(
StringParser.getInstance()
PlaceholderUtils
.replacePlaceHolder(
StringParser.getInstance().replacePlaceHolder(
StringParser.getInstance()
PlaceholderUtils.replacePlaceHolder(
PlaceholderUtils
.replacePlaceHolder(plugin.getGui()
.getChestVoteURLURLText(),
"voteurl", site.getVoteURL()),
@@ -11,12 +11,13 @@ import com.bencodez.advancedcore.api.bookgui.Layout;
import com.bencodez.advancedcore.api.gui.GUIHandler;
import com.bencodez.advancedcore.api.gui.GUIMethod;
import com.bencodez.advancedcore.api.inventory.BInventory;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.inventory.UpdatingBInventoryButton;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.rewards.RewardBuilder;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.objects.VoteSite;
import com.bencodez.votingplugin.user.VotingPluginUser;
@@ -40,19 +41,17 @@ public class VoteNext extends GUIHandler {
String playerName = user.getPlayerName();
msg.add(StringParser.getInstance().colorize(StringParser.getInstance()
msg.add(MessageAPI.colorize(MessageAPI
.replaceIgnoreCase(plugin.getConfigFile().getFormatCommandsVoteNextTitle(), "%player%", playerName)));
for (VoteSite voteSite : plugin.getVoteSites()) {
for (VoteSite voteSite : plugin.getVoteSitesEnabled()) {
if (!voteSite.isHidden()) {
String msgLine = plugin.getConfigFile().getFormatCommandsVoteNextLayout();
msgLine = StringParser.getInstance().replaceIgnoreCase(msgLine, "%info%",
user.voteCommandNextInfo(voteSite));
msgLine = MessageAPI.replaceIgnoreCase(msgLine, "%info%", user.voteCommandNextInfo(voteSite));
msgLine = StringParser.getInstance().replaceIgnoreCase(msgLine, "%SiteName%",
voteSite.getDisplayName());
msg.add(StringParser.getInstance().colorize(msgLine));
msgLine = MessageAPI.replaceIgnoreCase(msgLine, "%SiteName%", voteSite.getDisplayName());
msg.add(MessageAPI.colorize(msgLine));
}
}
return msg;
@@ -63,7 +62,7 @@ public class VoteNext extends GUIHandler {
BookWrapper book = new BookWrapper(plugin.getGui().getBookVoteURLBookGUITitle());
// add colors/config options
for (VoteSite site : plugin.getVoteSites()) {
for (VoteSite site : plugin.getVoteSitesEnabled()) {
if (!site.isHidden()) {
Layout nextLayout = new Layout(new ArrayList<String>(Arrays.asList("[Json]")));
nextLayout.replaceTextComponent("[Json]",
@@ -87,7 +86,7 @@ public class VoteNext extends GUIHandler {
public void onChest(Player player) {
BInventory inv = new BInventory(plugin.getGui().getChestVoteNextName());
inv.addPlaceholder("player", user.getPlayerName());
for (VoteSite site : plugin.getVoteSites()) {
for (VoteSite site : plugin.getVoteSitesEnabled()) {
if (!site.isHidden()) {
String siteNameDisplay = plugin.getGui().getChestVoteNextCustomSiteNamesDisplays(site.getKey());
if (siteNameDisplay.isEmpty()) {
@@ -95,7 +94,7 @@ public class VoteNext extends GUIHandler {
}
inv.addButton(inv.getNextSlot(),
new UpdatingBInventoryButton(plugin, site.getItem().setName(siteNameDisplay)
.setLore(StringParser.getInstance().replacePlaceHolder(
.setLore(PlaceholderUtils.replacePlaceHolder(
plugin.getGui().getChestVoteNextLine(), "time", user.voteCommandNextInfo(site)))
.setAmountNone(1), 1000, 1000) {
@@ -12,9 +12,10 @@ import com.bencodez.advancedcore.api.inventory.BInventory;
import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.rewards.RewardBuilder;
import com.bencodez.advancedcore.api.rewards.RewardOptions;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.user.VotingPluginUser;
@@ -46,7 +47,7 @@ public class VoteShop extends GUIHandler {
@Override
public void onChest(Player player) {
if (!plugin.getGui().isChestVoteShopEnabled()) {
player.sendMessage(StringParser.getInstance().colorize(plugin.getGui().getChestVoteShopDisabled()));
player.sendMessage(MessageAPI.colorize(plugin.getGui().getChestVoteShopDisabled()));
return;
}
@@ -86,7 +87,8 @@ public class VoteShop extends GUIHandler {
}
if (!plugin.getGui().getChestVoteShopNotBuyable(identifier)) {
if (hasPerm && (limitPass || !plugin.getGui().isChestVoteShopHideLimitedReached())) {
if ((hasPerm || !plugin.getGui().getChestVoteShopHideOnNoPermission(identifier))
&& (limitPass || !plugin.getGui().isChestVoteShopHideLimitedReached())) {
ItemBuilder builder = new ItemBuilder(plugin.getGui().getChestShopIdentifierSection(identifier));
inv.addButton(new BInventoryButton(builder) {
@@ -134,7 +136,7 @@ public class VoteShop extends GUIHandler {
plugin.getGui().getChestShopIdentifierRewardsPath(identifier),
new RewardOptions().setPlaceholders(placeholders));
user.sendMessage(StringParser.getInstance().replacePlaceHolder(
user.sendMessage(PlaceholderUtils.replacePlaceHolder(
plugin.getGui().getCHESTVoteShopPurchase(identifier),
placeholders));
if (limit > 0) {
@@ -142,11 +144,18 @@ public class VoteShop extends GUIHandler {
user.getVoteShopIdentifierLimit(identifier) + 1);
}
} else {
user.sendMessage(StringParser.getInstance().replacePlaceHolder(
user.sendMessage(PlaceholderUtils.replacePlaceHolder(
plugin.getConfigFile().getFormatShopFailedMsg(), placeholders));
}
} else {
new VoteShopConfirm(plugin, player, user, identifier).open(GUIMethod.CHEST);
plugin.getBukkitScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
new VoteShopConfirm(plugin, player, user, identifier)
.open(GUIMethod.CHEST);
}
});
}
} else {
@@ -12,9 +12,9 @@ import com.bencodez.advancedcore.api.inventory.BInventory;
import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.misc.PlayerUtils;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.rewards.RewardOptions;
import com.bencodez.simpleapi.player.PlayerUtils;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.user.VotingPluginUser;
@@ -46,7 +46,7 @@ public class VoteShopConfirm extends GUIHandler {
@Override
public void onChest(Player player) {
PlayerUtils.getInstance().setPlayerMeta(player, "ident", identifier);
PlayerUtils.setPlayerMeta(plugin, player, "ident", identifier);
BInventory inv = new BInventory(plugin.getGui().getChestShopConfirmPurchaseTitle());
inv.dontClose();
inv.addButton(new BInventoryButton(new ItemBuilder(plugin.getGui().getChestShopConfirmPurchaseYesItem())) {
@@ -71,13 +71,13 @@ public class VoteShopConfirm extends GUIHandler {
plugin.getGui().getChestShopIdentifierRewardsPath(identifier),
new RewardOptions().setPlaceholders(placeholders));
user.sendMessage(StringParser.getInstance()
user.sendMessage(PlaceholderUtils
.replacePlaceHolder(plugin.getGui().getCHESTVoteShopPurchase(identifier), placeholders));
if (limit > 0) {
user.setVoteShopIdentifierLimit(identifier, user.getVoteShopIdentifierLimit(identifier) + 1);
}
} else {
user.sendMessage(StringParser.getInstance()
user.sendMessage(PlaceholderUtils
.replacePlaceHolder(plugin.getConfigFile().getFormatShopFailedMsg(), placeholders));
}
if (plugin.getGui().getChestVoteShopCloseGUI(identifier)) {
@@ -12,8 +12,9 @@ import com.bencodez.advancedcore.api.inventory.BInventory;
import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.rewards.RewardBuilder;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.user.VotingPluginUser;
@@ -46,9 +47,9 @@ public class VoteStreak extends GUIHandler {
placeholders.put("player", user.getPlayerName());
msg = ArrayUtils.getInstance().replacePlaceHolder(msg, placeholders);
msg = PlaceholderUtils.replacePlaceHolder(msg, placeholders);
return ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.colorize(msg);
}
@Override
@@ -16,10 +16,10 @@ import com.bencodez.advancedcore.api.inventory.BInventory;
import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.rewards.RewardBuilder;
import com.bencodez.advancedcore.nms.NMSManager;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.nms.NMSManager;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.objects.VoteSite;
import com.bencodez.votingplugin.topvoter.TopVoterPlayer;
@@ -66,7 +66,7 @@ public class VoteToday extends GUIHandler {
msg.add(voteToday[i]);
}
return ArrayUtils.getInstance().colorize(ArrayUtils.getInstance().replacePlaceHolder(msg, placeholders));
return ArrayUtils.colorize(PlaceholderUtils.replacePlaceHolder(msg, placeholders));
}
@Override
@@ -94,14 +94,14 @@ public class VoteToday extends GUIHandler {
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("VoteSite", voteSite.getDisplayName());
placeholders.put("Time", timeString);
msg = StringParser.getInstance().replacePlaceHolder(msg, placeholders);
msg = PlaceholderUtils.replacePlaceHolder(msg, placeholders);
ItemBuilder item = null;
if (plugin.getGui().isChestVoteTodayUseSkull() && !NMSManager.getInstance().isVersion("1.12")) {
item = new ItemBuilder(user.getPlayerHead());
} else {
item = new ItemBuilder(plugin.getGui().getChestVoteTodayPlayerItem());
}
item.setName(StringParser.getInstance().replacePlaceHolder(plugin.getGui().getChestVoteTodayIconTitle(),
item.setName(PlaceholderUtils.replacePlaceHolder(plugin.getGui().getChestVoteTodayIconTitle(),
"player", user.getPlayerName()));
item.setLore(msg);
final UUID uuid = user.getUuid();
@@ -122,23 +122,18 @@ public class VoteToday extends GUIHandler {
inv.addButton(
new BInventoryButton(new ItemBuilder(plugin.getGui().getChestGUIExtraItemsItem(guiPath, str))) {
@Override
public void onClick(ClickEvent clickEvent) {
new RewardBuilder(plugin.getGui().getData(),
"CHEST." + guiPath + ".ExtraItems." + str + "."
+ clickEvent.getButton().getLastRewardsPath(player))
.setGiveOffline(false).send(clickEvent.getPlayer());
@Override
public void onClick(ClickEvent clickEvent) {
new RewardBuilder(plugin.getGui().getData(),
"CHEST." + guiPath + ".ExtraItems." + str + "." + clickEvent.getButton().getLastRewardsPath(player))
.setGiveOffline(false).send(clickEvent.getPlayer());
}
});
}
if (plugin.getGui().isChestVoteTodayBackButton()) {
inv.addButton(plugin.getCommandLoader().getBackButton(user));
}
inv.openInventory(player);
}
});}
if(plugin.getGui().isChestVoteTodayBackButton()){inv.addButton(plugin.getCommandLoader().getBackButton(user));}inv.openInventory(player);}
@Override
public void open() {
open(GUIMethod.valueOf(plugin.getGui().getGuiMethodToday().toUpperCase()));
@@ -155,14 +150,14 @@ public class VoteToday extends GUIHandler {
placeholders.put("player", user.getPlayerName());
placeholders.put("votesite", voteSite.getKey());
placeholders.put("time", timeString);
msg.add(StringParser.getInstance()
msg.add(PlaceholderUtils
.replacePlaceHolder(plugin.getConfigFile().getFormatCommandsVoteTodayLine(), placeholders));
// msg.add("&6" + user.getPlayerName() + " : " + voteSite.getKey() + " : " +
// timeString);
}
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
msg = ArrayUtils.colorize(msg);
return ArrayUtils.convert(msg);
}
public String[] voteTodayGUI() {
@@ -184,12 +179,12 @@ public class VoteToday extends GUIHandler {
placeholders.put("player", user.getPlayerName());
placeholders.put("votesite", mostRecentSite.getKey());
placeholders.put("time", timeString);
msg.add(StringParser.getInstance()
msg.add(PlaceholderUtils
.replacePlaceHolder(plugin.getConfigFile().getFormatCommandsVoteTodayLine(), placeholders));
}
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
msg = ArrayUtils.colorize(msg);
return ArrayUtils.convert(msg);
}
}
@@ -20,8 +20,8 @@ import com.bencodez.advancedcore.api.inventory.BInventory;
import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.rewards.RewardBuilder;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.topvoter.TopVoter;
import com.bencodez.votingplugin.topvoter.TopVoterPlayer;
@@ -46,13 +46,13 @@ public class VoteTopVoter extends GUIHandler {
public ArrayList<String> getChat(CommandSender sender) {
switch (top) {
case AllTime:
return ArrayUtils.getInstance().convert(plugin.getTopVoterHandler().topVoterAllTime(page));
return ArrayUtils.convert(plugin.getTopVoterHandler().topVoterAllTime(page));
case Daily:
return ArrayUtils.getInstance().convert(plugin.getTopVoterHandler().topVoterDaily(page));
return ArrayUtils.convert(plugin.getTopVoterHandler().topVoterDaily(page));
case Monthly:
return ArrayUtils.getInstance().convert(plugin.getTopVoterHandler().topVoterMonthly(page));
return ArrayUtils.convert(plugin.getTopVoterHandler().topVoterMonthly(page));
case Weekly:
return ArrayUtils.getInstance().convert(plugin.getTopVoterHandler().topVoterWeekly(page));
return ArrayUtils.convert(plugin.getTopVoterHandler().topVoterWeekly(page));
default:
break;
}
@@ -8,13 +8,13 @@ import org.bukkit.entity.Player;
import com.bencodez.advancedcore.api.gui.GUIHandler;
import com.bencodez.advancedcore.api.gui.GUIMethod;
import com.bencodez.advancedcore.api.inventory.BInventory;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.inventory.BInventory.ClickEvent;
import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.inventory.UpdatingBInventoryButton;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.rewards.RewardBuilder;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.topvoter.TopVoter;
import com.bencodez.votingplugin.user.VotingPluginUser;
@@ -40,15 +40,15 @@ public class VoteTotal extends GUIHandler {
int all = user.getTotal(TopVoter.AllTime);
for (String s : plugin.getConfigFile().getFormatCommandsVoteTotal()) {
String str = StringParser.getInstance().replaceIgnoreCase(s, "%DailyTotal%", "" + daily);
str = StringParser.getInstance().replaceIgnoreCase(str, "%WeeklyTotal%", "" + weekly);
str = StringParser.getInstance().replaceIgnoreCase(str, "%MonthlyTotal%", "" + month);
str = StringParser.getInstance().replaceIgnoreCase(str, "%AllTimeTotal%", "" + all);
str = StringParser.getInstance().replaceIgnoreCase(str, "%player%", user.getPlayerName());
String str = MessageAPI.replaceIgnoreCase(s, "%DailyTotal%", "" + daily);
str = MessageAPI.replaceIgnoreCase(str, "%WeeklyTotal%", "" + weekly);
str = MessageAPI.replaceIgnoreCase(str, "%MonthlyTotal%", "" + month);
str = MessageAPI.replaceIgnoreCase(str, "%AllTimeTotal%", "" + all);
str = MessageAPI.replaceIgnoreCase(str, "%player%", user.getPlayerName());
msg.add(str);
}
return ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.colorize(msg);
}
@Override
@@ -18,9 +18,9 @@ import com.bencodez.advancedcore.api.inventory.BInventoryButton;
import com.bencodez.advancedcore.api.inventory.UpdatingBInventoryButton;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.messages.MessageBuilder;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.rewards.RewardBuilder;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.objects.VoteSite;
import com.bencodez.votingplugin.topvoter.TopVoter;
@@ -59,7 +59,7 @@ public class VoteURL extends GUIHandler {
}
if (plugin.getConfigFile().isFormatCommandsVoteAutoInputSites()) {
int counter = 0;
for (VoteSite voteSite : plugin.getVoteSites()) {
for (VoteSite voteSite : plugin.getVoteSitesEnabled()) {
if (!voteSite.isHidden()) {
counter++;
String voteURL = voteSite.getVoteURL(json);
@@ -81,10 +81,10 @@ public class VoteURL extends GUIHandler {
phs.put("MonthTotal", "" + user.getTotal(TopVoter.Monthly));
phs.put("Total", "" + user.getTotal(TopVoter.AllTime));
sites = ArrayUtils.getInstance().replacePlaceHolder(sites, phs);
sites = PlaceholderUtils.replacePlaceHolder(sites, phs);
}
return ArrayUtils.getInstance().colorize(sites);
return ArrayUtils.colorize(sites);
}
private ItemBuilder getItemAll() {
@@ -117,13 +117,16 @@ public class VoteURL extends GUIHandler {
if (user.canVoteSite(voteSite)) {
builder = new ItemBuilder(plugin.getGui().getChestVoteURLCanVoteItemSection());
builder.setName(
plugin.getGui().getChestVoteURLGUISiteNameCanVote().replace("%Name%", voteSite.getDisplayName()));
builder.setName(plugin.getGui().getChestVoteURLGUISiteNameCanVote());
} else {
builder.setName(plugin.getGui().getChestVoteURLGUISiteName().replace("%Name%", voteSite.getDisplayName()));
builder.addLoreLine(
plugin.getGui().getChestVoteURLNextVote().replace("%Info%", user.voteCommandNextInfo(voteSite)));
builder.setName(plugin.getGui().getChestVoteURLGUISiteName());
builder.addLoreLine(plugin.getGui().getChestVoteURLNextVote());
}
builder.addPlaceholder("ServiceSite", voteSite.getServiceSite());
builder.addPlaceholder("Name", voteSite.getDisplayName());
builder.addPlaceholder("VoteDelay", "" + voteSite.getVoteDelay());
builder.addPlaceholder("VoteHour", "" + voteSite.getVoteDelayDailyHour());
builder.addPlaceholder("Info", user.voteCommandNextInfo(voteSite));
return builder;
}
@@ -137,7 +140,7 @@ public class VoteURL extends GUIHandler {
book.addLayout(layout);
}
int i = 1;
for (VoteSite site : plugin.getVoteSites()) {
for (VoteSite site : plugin.getVoteSitesEnabled()) {
Layout layout = new Layout(plugin.getGui().getBookVoteURLBookGUILayout()).addPlaceholder("sitename",
site.getDisplayName());
String text = plugin.getGui().getBookVoteURLBookGUIAlreadyVotedText();
@@ -146,7 +149,7 @@ public class VoteURL extends GUIHandler {
color = ChatColor.valueOf(plugin.getGui().getBookVoteURLBookGUICanVoteColor());
text = plugin.getGui().getBookVoteURLBookGUICanVoteText();
}
String url = StringParser.getInstance().replacePlaceHolder(StringParser.getInstance()
String url = PlaceholderUtils.replacePlaceHolder(PlaceholderUtils
.replacePlaceHolder(site.getVoteURLJsonStrip(), "player", user.getPlayerName()), "num", "" + i);
layout.replaceTextComponent("[UrlText]", BookUtil.TextBuilder.of(text).color(color)
.onClick(BookUtil.ClickAction.openUrl(url)).onHover(BookUtil.HoverAction.showText(url)).build());
@@ -186,7 +189,7 @@ public class VoteURL extends GUIHandler {
}
int startSlot = plugin.getGui().getChestVoteURLAllUrlsButtonStartSlot();
for (final VoteSite voteSite : plugin.getVoteSites()) {
for (final VoteSite voteSite : plugin.getVoteSitesEnabled()) {
if (!voteSite.isHidden()) {
ItemBuilder builder = getItemVoteSite(voteSite);
if (startSlot >= 0) {
@@ -201,11 +204,14 @@ public class VoteURL extends GUIHandler {
Player player = event.getPlayer();
if (player != null) {
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(player);
user.sendMessage(StringParser.getInstance().replacePlaceHolder(StringParser.getInstance()
.replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
plugin.getGui().getChestVoteURLURLText(), "voteurl", voteSite.getVoteURL()),
"sitename", voteSite.getDisplayName()),
"player", player.getName()));
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("voteurl", voteSite.getVoteURL());
placeholders.put("sitename", voteSite.getDisplayName());
placeholders.put("player", player.getName());
placeholders.put("servicesite", voteSite.getServiceSite());
placeholders.put("VoteDelay", "" + voteSite.getVoteDelay());
placeholders.put("VoteHour", "" + voteSite.getVoteDelayDailyHour());
user.sendMessage(plugin.getGui().getChestVoteURLURLText(), placeholders);
}
@@ -10,8 +10,8 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import com.bencodez.advancedcore.api.command.TabCompleteHandler;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.command.AdvancedCoreTabCompleteHandler;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
/**
@@ -36,11 +36,11 @@ public class AdminVoteTabCompleter implements TabCompleter {
Set<String> cmds = new HashSet<String>();
cmds.addAll(TabCompleteHandler.getInstance().getTabCompleteOptions(plugin.getAdminVoteCommand(), sender, args,
args.length - 1));
cmds.addAll(AdvancedCoreTabCompleteHandler.getInstance().getTabCompleteOptions(plugin.getAdminVoteCommand(),
sender, args, args.length - 1));
for (String str : cmds) {
if (StringParser.getInstance().startsWithIgnoreCase(str, args[args.length - 1])) {
if (MessageAPI.startsWithIgnoreCase(str, args[args.length - 1])) {
tab.add(str);
}
}
@@ -12,9 +12,9 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import com.bencodez.advancedcore.api.command.CommandHandler;
import com.bencodez.advancedcore.api.command.TabCompleteHandler;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.command.TabCompleteHandler;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
/**
@@ -45,7 +45,7 @@ public class AliasesTabCompleter implements TabCompleter {
msgArray.add(arg);
}
String[] args = ArrayUtils.getInstance().convert(msgArray);
String[] args = ArrayUtils.convert(msgArray);
ArrayList<String> tab = new ArrayList<String>();
@@ -88,7 +88,7 @@ public class AliasesTabCompleter implements TabCompleter {
}
for (String str : cmds) {
if (StringParser.getInstance().startsWithIgnoreCase(str, args[args.length - 1])) {
if (MessageAPI.startsWithIgnoreCase(str, args[args.length - 1])) {
tab.add(str);
}
}
@@ -10,8 +10,8 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import com.bencodez.advancedcore.api.command.TabCompleteHandler;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.command.AdvancedCoreTabCompleteHandler;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
// TODO: Auto-generated Javadoc
@@ -37,11 +37,11 @@ public class VoteTabCompleter implements TabCompleter {
Set<String> cmds = new HashSet<String>();
cmds.addAll(TabCompleteHandler.getInstance().getTabCompleteOptions(plugin.getVoteCommand(), sender, args,
cmds.addAll(AdvancedCoreTabCompleteHandler.getInstance().getTabCompleteOptions(plugin.getVoteCommand(), sender, args,
args.length - 1));
for (String str : cmds) {
if (StringParser.getInstance().startsWithIgnoreCase(str, args[args.length - 1])) {
if (MessageAPI.startsWithIgnoreCase(str, args[args.length - 1])) {
tab.add(str);
}
}
@@ -4,11 +4,11 @@ import java.io.File;
import java.util.ArrayList;
import com.bencodez.advancedcore.api.yml.YMLFile;
import com.bencodez.advancedcore.api.yml.annotation.AnnotationHandler;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataBoolean;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataInt;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataListString;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataString;
import com.bencodez.simpleapi.file.annotation.AnnotationHandler;
import com.bencodez.simpleapi.file.annotation.ConfigDataBoolean;
import com.bencodez.simpleapi.file.annotation.ConfigDataInt;
import com.bencodez.simpleapi.file.annotation.ConfigDataListString;
import com.bencodez.simpleapi.file.annotation.ConfigDataString;
import com.bencodez.votingplugin.VotingPluginMain;
import lombok.Getter;
@@ -31,6 +31,26 @@ public class BungeeSettings extends YMLFile {
@Getter
private String bungeeMethod = "PLUGINMESSAGING";
@ConfigDataString(path = "Redis.Host")
@Getter
private String RedisHost = "";
@ConfigDataString(path = "Redis.Username")
@Getter
private String RedisUsername = "";
@ConfigDataString(path = "Redis.Prefix")
@Getter
private String RedisPrefix = "";
@ConfigDataString(path = "Redis.Password")
@Getter
private String RedisPassword = "";
@ConfigDataInt(path = "Redis.Port")
@Getter
private int RedisPort = 6379;
@ConfigDataString(path = "BungeeServer.Host")
@Getter
private String bungeeServerHost = "";
@@ -47,6 +67,10 @@ public class BungeeSettings extends YMLFile {
@Getter
private boolean perServerMilestones = false;
@ConfigDataBoolean(path = "GiveExtraAllSitesRewards")
@Getter
private boolean giveExtraAllSitesRewards = false;
@ConfigDataBoolean(path = "PerServerRewards")
@Getter
private boolean perServerRewards = false;
@@ -7,14 +7,14 @@ import java.util.Set;
import org.bukkit.configuration.ConfigurationSection;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.yml.YMLFile;
import com.bencodez.advancedcore.api.yml.annotation.AnnotationHandler;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataBoolean;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataInt;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataKeys;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataListString;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataString;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.file.annotation.AnnotationHandler;
import com.bencodez.simpleapi.file.annotation.ConfigDataBoolean;
import com.bencodez.simpleapi.file.annotation.ConfigDataInt;
import com.bencodez.simpleapi.file.annotation.ConfigDataKeys;
import com.bencodez.simpleapi.file.annotation.ConfigDataListString;
import com.bencodez.simpleapi.file.annotation.ConfigDataString;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.placeholders.PlaceholderCacheLevel;
import com.bencodez.votingplugin.topvoter.TopVoter;
@@ -47,6 +47,10 @@ public class Config extends YMLFile {
@Getter
private boolean queueVotesDuringTimeChange = false;
@ConfigDataBoolean(path = "AdvancedServiceSiteHandling")
@Getter
private boolean advancedServiceSiteHandling = false;
@ConfigDataBoolean(path = "AllowUnjoined")
@Getter
private boolean allowUnjoined = false;
@@ -213,7 +217,7 @@ public class Config extends YMLFile {
@ConfigDataListString(path = "Format.Commands.Vote.Today.Title")
@Getter
private ArrayList<String> formatCommandsVoteTodayTitle = ArrayUtils.getInstance()
private ArrayList<String> formatCommandsVoteTodayTitle = ArrayUtils
.convert(new String[] { "&cToday's Votes %page%/%maxpage%", "&cPlayerName : VoteSite : Time" });
@ConfigDataString(path = "Format.Commands.Vote.ToggleBroadcasts.Disabled")
@@ -695,10 +699,6 @@ public class Config extends YMLFile {
@Getter
private boolean voteRemindingRemindOnlyOnce = false;
@ConfigDataBoolean(path = "AutoConfigUpdating")
@Getter
private boolean autoConfigUpdating = false;
/**
* Gets the rewards.
*
@@ -13,10 +13,10 @@ import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.rewards.DirectlyDefinedReward;
import com.bencodez.advancedcore.api.yml.YMLFile;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.objects.VoteSite;
@@ -48,7 +48,7 @@ public class ConfigVoteSites extends YMLFile {
setServiceSite(siteName, org);
setVoteURL(siteName, "VoteURL");
setVoteDelay(siteName, 24);
set(siteName, "DisplayItem.Material", "GRASS");
set(siteName, "DisplayItem.Material", "STONE");
set(siteName, "DisplayItem.Amount", 1);
set(siteName, "Rewards.Messages.Player", "&aThanks for voting on %ServiceSite%!");
@@ -103,7 +103,7 @@ public class ConfigVoteSites extends YMLFile {
for (Player p : Bukkit.getOnlinePlayers()) {
if (p.hasPermission("VotingPlugin.Admin.GenerateServiceSite") || p.isOp()) {
p.sendMessage(StringParser.getInstance().colorize("&cGenerating votesite for service site "
p.sendMessage(MessageAPI.colorize("&cGenerating votesite for service site "
+ siteName + ", please check console for details"));
}
}
@@ -168,8 +168,8 @@ public class ConfigVoteSites extends YMLFile {
return getData(siteName).getString("ServiceSite");
}
public int getTimeOffSet(String siteName) {
return getData(siteName).getInt("TimeOffSet", 0);
public int getVoteDelayDailyHour(String siteName) {
return getData(siteName).getInt("VoteDelayDailyHour", 0);
}
/**
@@ -278,7 +278,7 @@ public class ConfigVoteSites extends YMLFile {
public ArrayList<String> getVoteSitesNames(boolean checkEnabled) {
ArrayList<String> siteNames = new ArrayList<String>();
if (getData().isConfigurationSection("VoteSites")) {
siteNames = ArrayUtils.getInstance().convert(getData().getConfigurationSection("VoteSites").getKeys(false));
siteNames = ArrayUtils.convert(getData().getConfigurationSection("VoteSites").getKeys(false));
}
for (int i = siteNames.size() - 1; i >= 0; i--) {
@@ -7,15 +7,15 @@ import java.util.Set;
import org.bukkit.configuration.ConfigurationSection;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.yml.YMLFile;
import com.bencodez.advancedcore.api.yml.annotation.AnnotationHandler;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataBoolean;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataConfigurationSection;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataInt;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataKeys;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataListString;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataString;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.file.annotation.AnnotationHandler;
import com.bencodez.simpleapi.file.annotation.ConfigDataBoolean;
import com.bencodez.simpleapi.file.annotation.ConfigDataConfigurationSection;
import com.bencodez.simpleapi.file.annotation.ConfigDataInt;
import com.bencodez.simpleapi.file.annotation.ConfigDataKeys;
import com.bencodez.simpleapi.file.annotation.ConfigDataListString;
import com.bencodez.simpleapi.file.annotation.ConfigDataString;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.topvoter.TopVoter;
@@ -45,7 +45,7 @@ public class GUI extends YMLFile {
@ConfigDataListString(path = "BOOK.VoteURLBookGUI.Layout")
@Getter
private ArrayList<String> bookVoteURLBookGUILayout = ArrayUtils.getInstance()
private ArrayList<String> bookVoteURLBookGUILayout = ArrayUtils
.convert(new String[] { "&c%Sitename%", "[UrlText]" });
@ConfigDataListString(path = "BOOK.VoteURLBookGUI.TopLayout")
@@ -326,6 +326,10 @@ public class GUI extends YMLFile {
public boolean getChestVoteShopCloseGUI(String shop) {
return getData().getBoolean("CHEST.Shop." + shop + ".CloseGUI", true);
}
public boolean getChestVoteShopHideOnNoPermission(String shop) {
return getData().getBoolean("CHEST.Shop." + shop + ".HideOnNoPermission", true);
}
@ConfigDataBoolean(path = "CHEST.VoteShopEnabled")
@Getter
@@ -7,13 +7,13 @@ import java.util.List;
import java.util.Set;
import com.bencodez.advancedcore.api.yml.YMLFile;
import com.bencodez.advancedcore.api.yml.annotation.AnnotationHandler;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataBoolean;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataDouble;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataInt;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataKeys;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataListString;
import com.bencodez.advancedcore.api.yml.annotation.ConfigDataString;
import com.bencodez.simpleapi.file.annotation.AnnotationHandler;
import com.bencodez.simpleapi.file.annotation.ConfigDataBoolean;
import com.bencodez.simpleapi.file.annotation.ConfigDataDouble;
import com.bencodez.simpleapi.file.annotation.ConfigDataInt;
import com.bencodez.simpleapi.file.annotation.ConfigDataKeys;
import com.bencodez.simpleapi.file.annotation.ConfigDataListString;
import com.bencodez.simpleapi.file.annotation.ConfigDataString;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.topvoter.TopVoter;
@@ -66,6 +66,18 @@ public class SpecialRewardsConfig extends YMLFile {
@ConfigDataBoolean(path = "VoteParty.ResetExtraVotesMonthly")
@Getter
private boolean votePartyResetExtraVotesMonthly = false;
@ConfigDataBoolean(path = "VoteParty.ResetExtraVotesWeekly")
@Getter
private boolean votePartyResetExtraVotesWeekly = false;
@ConfigDataString(path = "VoteParty.VoteReminderBroadcast")
@Getter
private String votePartyVoteReminderBroadcast = "%votesrequired% left to go, go vote!";
@ConfigDataListString(path = "VoteParty.VoteReminderAtVotes")
@Getter
private ArrayList<String> votePartyVoteReminderAtVotes = new ArrayList<String>();
@ConfigDataListString(path = "VoteParty.GlobalRandomCommand")
@Getter
@@ -1,6 +1,8 @@
package com.bencodez.votingplugin.cooldown;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.UUID;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
@@ -14,12 +16,15 @@ import org.bukkit.event.Listener;
import com.bencodez.advancedcore.api.rewards.RewardOptions;
import com.bencodez.advancedcore.api.user.AdvancedCoreUser;
import com.bencodez.advancedcore.api.user.UserStartup;
import com.bencodez.advancedcore.api.user.userstorage.Column;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.events.PlayerVoteCoolDownEndEvent;
import com.bencodez.votingplugin.events.PlayerVoteSiteCoolDownEndEvent;
import com.bencodez.votingplugin.objects.VoteSite;
import com.bencodez.votingplugin.user.VotingPluginUser;
import lombok.Getter;
public class CoolDownCheck implements Listener {
private VotingPluginMain plugin;
@@ -33,6 +38,7 @@ public class CoolDownCheck implements Listener {
this.timer = Executors.newScheduledThreadPool(1);
}
@Getter
private ScheduledExecutorService timer;
private boolean cooldownCheckEnabled = false;
@@ -47,45 +53,56 @@ public class CoolDownCheck implements Listener {
}
public void check(UUID uuid) {
check(plugin.getVotingPluginUserManager().getVotingPluginUser(uuid));
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(uuid);
if (!user.isOnline()) {
user.dontCache();
}
check(user);
}
public void checkPerSite(UUID uuid) {
checkPerSite(plugin.getVotingPluginUserManager().getVotingPluginUser(uuid));
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(uuid);
if (!user.isOnline()) {
user.dontCache();
}
checkPerSite(user);
}
public void vote(VotingPluginUser user, VoteSite site) {
if (cooldownCheckEnabled) {
schedule(user);
schedule(user, true);
}
if (plugin.getConfigFile().isPerSiteCoolDownEvents()) {
user.setCoolDownCheckSite(site, Boolean.FALSE);
schedulePerSite(user);
schedulePerSite(user, true);
}
}
public void check(VotingPluginUser user) {
public synchronized void check(VotingPluginUser user) {
boolean coolDownCheck = user.getCoolDownCheck();
if (user.canVoteAll() && coolDownCheck) {
user.setCoolDownCheck(false);
PlayerVoteCoolDownEndEvent event = new PlayerVoteCoolDownEndEvent(user);
plugin.getServer().getPluginManager().callEvent(event);
allSiteTasks.remove(user.getJavaUUID());
} else if (!coolDownCheck) {
schedule(user);
if (coolDownCheck) {
if (user.canVoteAll()) {
user.setCoolDownCheck(false);
PlayerVoteCoolDownEndEvent event = new PlayerVoteCoolDownEndEvent(user);
plugin.getServer().getPluginManager().callEvent(event);
allSiteTasks.remove(user.getJavaUUID());
} else {
schedulePerSite(user, false);
}
}
}
public synchronized void checkPerSite(VotingPluginUser user) {
if (plugin.getConfigFile().isPerSiteCoolDownEvents()) {
HashMap<VoteSite, Boolean> coolDownChecks = user.getCoolDownCheckSiteList();
HashMap<String, Boolean> coolDownChecks = user.getCoolDownCheckSiteList();
boolean changed = false;
for (VoteSite site : plugin.getVoteSites()) {
if (user.canVoteSite(site)) {
if (!coolDownChecks.containsKey(site) || !coolDownChecks.get(site).booleanValue()) {
coolDownChecks.put(site, Boolean.TRUE);
for (VoteSite site : plugin.getVoteSitesEnabled()) {
if (!coolDownChecks.containsKey(site.getKey()) || !coolDownChecks.get(site.getKey()).booleanValue()) {
if (user.canVoteSite(site)) {
coolDownChecks.put(site.getKey(), Boolean.TRUE);
changed = true;
plugin.extraDebug("Triggering votesitecooldownend event for " + user.getUUID());
PlayerVoteSiteCoolDownEndEvent event = new PlayerVoteSiteCoolDownEndEvent(user, site);
plugin.getServer().getPluginManager().callEvent(event);
}
@@ -94,63 +111,72 @@ public class CoolDownCheck implements Listener {
if (changed) {
user.setCoolDownCheckSite(coolDownChecks);
}
}
schedulePerSite(user);
schedulePerSite(user, false);
}
}
public void schedulePerSite(VotingPluginUser user) {
final UUID uuid = UUID.fromString(user.getUUID());
long time = user.getNextTimeFirstSiteAvailable();
if (time > 0) {
public void schedulePerSite(VotingPluginUser user, boolean force) {
if (user.getSitesVotedOn() > 0 || force) {
final UUID uuid = UUID.fromString(user.getUUID());
long time = user.getNextTimeFirstSiteAvailable();
if (perSiteTasks.containsKey(uuid)) {
perSiteTasks.get(uuid).cancel(false);
perSiteTasks.remove(uuid);
}
plugin.devDebug("PerSiteCoolDownEvent schedule time: " + time);
ScheduledFuture<?> scheduledFuture = timer.schedule(new Runnable() {
if (time > 0) {
plugin.devDebug("PerSiteCoolDownEvent schedule time: " + time + " seconds");
ScheduledFuture<?> scheduledFuture = timer.schedule(new Runnable() {
@Override
public void run() {
if (plugin != null && plugin.isEnabled()) {
checkPerSite(uuid);
@Override
public void run() {
if (plugin != null && plugin.isEnabled()) {
checkPerSite(uuid);
}
}
}
}, time + 2, TimeUnit.SECONDS);
perSiteTasks.put(uuid, scheduledFuture);
}, time + 2, TimeUnit.SECONDS);
perSiteTasks.put(uuid, scheduledFuture);
} else {
plugin.extraDebug(user.getUUID() + "/" + user.getPlayerName() + " not scheduling cooldown check");
}
}
}
public void schedule(VotingPluginUser user) {
final UUID uuid = UUID.fromString(user.getUUID());
long time = user.getNextTimeAllSitesAvailable();
if (time > 0) {
user.setCoolDownCheck(true);
public void schedule(VotingPluginUser user, boolean force) {
if (user.getSitesVotedOn() > 0 || force) {
final UUID uuid = UUID.fromString(user.getUUID());
long time = user.getNextTimeAllSitesAvailable();
if (allSiteTasks.containsKey(uuid)) {
allSiteTasks.get(uuid).cancel(false);
allSiteTasks.remove(uuid);
}
ScheduledFuture<?> scheduledFuture = timer.schedule(new Runnable() {
if (time > 0) {
user.setCoolDownCheck(true);
ScheduledFuture<?> scheduledFuture = timer.schedule(new Runnable() {
@Override
public void run() {
check(uuid);
}
}, time + 2, TimeUnit.SECONDS);
allSiteTasks.put(uuid, scheduledFuture);
@Override
public void run() {
if (plugin != null && plugin.isEnabled()) {
check(uuid);
}
}
}, time + 2, TimeUnit.SECONDS);
allSiteTasks.put(uuid, scheduledFuture);
} else {
plugin.extraDebug(user.getUUID() + "/" + user.getPlayerName() + " not scheduling cooldown check");
}
}
}
public void load() {
plugin.addUserStartup(new UserStartup() {
@Override
public void onStartUp(AdvancedCoreUser advancedcoreUser) {
VotingPluginUser user = plugin.getVotingPluginUserManager().getVotingPluginUser(advancedcoreUser);
user.dontCache();
if (cooldownCheckEnabled) {
check(user);
}
@@ -169,6 +195,32 @@ public class CoolDownCheck implements Listener {
}
});
}
public void checkAllVoteSite(VoteSite site) {
plugin.getLogger().info("Checking vote cooldown rewards for all players: " + site.getKey());
HashMap<UUID, ArrayList<Column>> cols = plugin.getUserManager().getAllKeys();
for (Entry<UUID, ArrayList<Column>> playerData : cols.entrySet()) {
String uuid = playerData.getKey().toString();
if (plugin != null && plugin.isEnabled()) {
if (uuid != null && !uuid.isEmpty()) {
VotingPluginUser user = plugin.getVotingPluginUserManager()
.getVotingPluginUser(UUID.fromString(uuid), false);
user.dontCache();
user.updateTempCacheWithColumns(playerData.getValue());
cols.put(playerData.getKey(), null);
checkPerSite(user);
user.clearTempCache();
user = null;
}
}
}
cols.clear();
cols = null;
plugin.getLogger().info("Finished checking vote cooldown rewards for all players: " + site.getKey());
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
@@ -6,12 +6,13 @@ import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.configuration.ConfigurationSection;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.signs.SignHandler;
import com.bencodez.votingplugin.timequeue.VoteTimeQueue;
@@ -31,7 +32,7 @@ public class ServerData {
public void addAutoCachedPlaceholder(String placeholder) {
List<String> p = getAutoCachedPlaceholder();
if (!ArrayUtils.getInstance().containsIgnoreCase(p, placeholder)) {
if (!ArrayUtils.containsIgnoreCase(p, placeholder)) {
p.add(placeholder);
setAutoCachedPlaceholder(p);
}
@@ -72,12 +73,16 @@ public class ServerData {
return getData().getStringList("AutoCachePlaceholders");
}
public List<String> getDisabledReminders() {
return getData().getStringList("DisabledReminders");
}
public synchronized void addServiceSite(String site) {
ArrayList<String> l = getServiceSites();
if (!getServiceSites().contains(site)) {
l.add(site);
}
setServiceSites(ArrayUtils.getInstance().removeDuplicates(l));
setServiceSites(ArrayUtils.removeDuplicates(l));
}
/**
@@ -327,6 +332,15 @@ public class ServerData {
saveData();
}
public void saveDisabledReminders(ArrayList<UUID> disabledReminders) {
ArrayList<String> uuids = new ArrayList<String>();
for (UUID uuid : disabledReminders) {
uuids.add(uuid.toString());
}
getData().set("DisabledReminders", uuids);
saveData();
}
/**
* Update values.
*/
@@ -7,7 +7,6 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import com.bencodez.advancedcore.scheduler.BukkitScheduler;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.signs.SignHandler;
@@ -39,7 +38,7 @@ public class BlockBreak implements Listener {
if (event.getBlock().getState() instanceof Sign) {
Sign s = (Sign) event.getBlock().getState();
final Location loc = s.getLocation();
BukkitScheduler.runTaskAsynchronously(plugin, new Runnable() {
plugin.getBukkitScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
@@ -1,6 +1,5 @@
package com.bencodez.votingplugin.listeners;
import com.bencodez.advancedcore.scheduler.BukkitScheduler;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.events.PlayerVoteEvent;
import com.vexsoftware.votifier.model.Vote;
@@ -9,7 +8,7 @@ import com.vexsoftware.votifier.model.VotifierEvent;
public class BungeeVotifierEvent {
public void send(VotingPluginMain plugin, PlayerVoteEvent event) {
plugin.debug("Triggering vote event");
BukkitScheduler.runTask(plugin, new Runnable() {
plugin.getBukkitScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
@@ -9,7 +9,8 @@ import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import com.bencodez.advancedcore.api.misc.PlayerUtils;
import com.bencodez.advancedcore.api.misc.PlayerManager;
import com.bencodez.simpleapi.player.PlayerUtils;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.signs.SignHandler;
@@ -55,19 +56,19 @@ public class PlayerInteract implements Listener {
.sendMessage(sign.getRightClickMessage());
if (!sign.isSkullSet()) {
if (PlayerUtils.getInstance().hasServerPermission(event.getPlayer().getName(),
if (PlayerManager.getInstance().hasServerPermission(event.getPlayer().getName(),
"VotingPlugin.Sign.Create")
|| PlayerUtils.getInstance().hasServerPermission(event.getPlayer().getName(),
|| PlayerManager.getInstance().hasServerPermission(event.getPlayer().getName(),
"VotingPlugin.Admin")) {
player.sendMessage("Skull not set, click to set skull");
PlayerUtils.getInstance().setPlayerMeta(player, "skullset", sign.getSign());
PlayerUtils.setPlayerMeta(plugin, player, "skullset", sign.getSign());
}
}
}
}
} else if (event.getClickedBlock().getState() instanceof Skull) {
Object ob = PlayerUtils.getInstance().getPlayerMeta(player, "skullset");
Object ob = PlayerUtils.getPlayerMeta(plugin, player, "skullset");
if (ob != null) {
String sign1 = (String) ob;
for (SignHandler sign : plugin.getSigns().getSigns()) {
@@ -78,7 +79,7 @@ public class PlayerInteract implements Listener {
player.sendMessage("Skull set");
}
}
PlayerUtils.getInstance().setPlayerMeta(player, "skullset", null);
PlayerUtils.setPlayerMeta(plugin, player, "skullset", null);
}
}
}
@@ -49,9 +49,10 @@ public class PlayerJoinEvent implements Listener {
plugin.getPlaceholders().onUpdate(user, true);
if (plugin.getBungeeSettings().isUseBungeecoord()
&& plugin.getBungeeHandler().getMethod().equals(BungeeMethod.PLUGINMESSAGING)) {
plugin.getPluginMessaging().sendPluginMessage("Login", user.getPlayerName(), user.getUUID(),
plugin.getBungeeSettings().getServer());
&& (plugin.getBungeeHandler().getMethod().equals(BungeeMethod.PLUGINMESSAGING)
|| plugin.getBungeeHandler().getMethod().equals(BungeeMethod.REDIS))) {
plugin.getBungeeHandler().getGlobalMessageHandler().sendMessage("Login", user.getPlayerName(),
user.getUUID(), plugin.getBungeeSettings().getServer());
}
}
@@ -10,14 +10,14 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.misc.PlayerUtils;
import com.bencodez.advancedcore.scheduler.BukkitScheduler;
import com.bencodez.advancedcore.api.misc.PlayerManager;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.bungee.BungeeMethod;
import com.bencodez.votingplugin.events.PlayerPostVoteEvent;
import com.bencodez.votingplugin.events.PlayerVoteEvent;
import com.bencodez.votingplugin.objects.VoteSite;
import com.bencodez.votingplugin.topvoter.TopVoter;
import com.bencodez.votingplugin.user.VotingPluginUser;
// TODO: Auto-generated Javadoc
@@ -50,7 +50,7 @@ public class PlayerVoteListener implements Listener {
}
String playerName = event.getPlayer();
plugin.debug("Processing PlayerVoteEvent: " + playerName + "/" + event.getServiceSite());
if (!PlayerUtils.getInstance().isValidUser(playerName, plugin.getConfigFile().isAllowUnJoinedCheckServer())) {
if (!PlayerManager.getInstance().isValidUser(playerName, plugin.getConfigFile().isAllowUnJoinedCheckServer())) {
if (!plugin.getConfigFile().isAllowUnjoined()) {
plugin.getLogger().warning("Player " + playerName
+ " has not joined before, disregarding vote, set AllowUnjoined to true to prevent this");
@@ -91,7 +91,7 @@ public class PlayerVoteListener implements Listener {
services.add(site.getServiceSite());
}
plugin.getLogger()
.warning("Current known service sites: " + ArrayUtils.getInstance().makeStringList(services));
.warning("Currently set service sites: " + ArrayUtils.makeStringList(services));
}
return;
}
@@ -115,8 +115,17 @@ public class PlayerVoteListener implements Listener {
}
if (voteSite.isWaitUntilVoteDelay() && !user.canVoteSite(voteSite)) {
plugin.getLogger().info(user.getPlayerName() + " must wait until votedelay is over, ignoring vote");
return;
if (!event.isRealVote()) {
plugin.getLogger().info(user.getPlayerName() + " did a not real vote, bypassing WaitUntilVoteDelay");
} else {
if (user.hasPermission("VotingPlugin.BypassWaitUntilVoteDelay")) {
plugin.getLogger()
.info(user.getPlayerName() + " has bypass permission for WaitUntilVoteDelay, bypassing");
} else {
plugin.getLogger().info(user.getPlayerName() + " must wait until votedelay is over, ignoring vote");
return;
}
}
}
final String uuid = user.getUUID();
@@ -209,6 +218,20 @@ public class PlayerVoteListener implements Listener {
}
user.checkDayVoteStreak(event.isForceBungee());
if (plugin.getConfigFile().isLimitMonthlyVotes()) {
int value = 0;
if (event.isBungee()) {
value = event.getBungeeTextTotals().getMonthTotal();
} else {
value = user.getTotal(TopVoter.Monthly);
}
LocalDateTime cTime = plugin.getTimeChecker().getTime();
int days = cTime.getDayOfMonth();
if (value >= days * plugin.getVoteSitesEnabled().size()) {
user.setTotal(TopVoter.Monthly, days * plugin.getVoteSitesEnabled().size());
}
}
// other rewards
plugin.getSpecialRewards().checkAllSites(user, event.isForceBungee());
plugin.getSpecialRewards().checkAlmostAllSites(user, event.isForceBungee());
@@ -219,15 +242,15 @@ public class PlayerVoteListener implements Listener {
if (plugin.getBungeeSettings().isUseBungeecoord()) {
if (plugin.getBungeeHandler().getMethod().equals(BungeeMethod.MYSQL)) {
BukkitScheduler.runTaskLaterAsynchronously(plugin, new Runnable() {
plugin.getBukkitScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
@Override
public void run() {
if (Bukkit.getOnlinePlayers().size() > 0) {
plugin.getPluginMessaging().sendPluginMessage("VoteUpdate", uuid);
plugin.getBungeeHandler().getGlobalMessageHandler().sendMessage("VoteUpdate", uuid);
}
}
}, 40);
}, 2);
}
}
@@ -235,6 +258,10 @@ public class PlayerVoteListener implements Listener {
event.isForceBungee(), voteTime);
plugin.getServer().getPluginManager().callEvent(postVoteEvent);
if (user.isOnline()) {
plugin.getPlaceholders().onUpdate(user, true);
}
if (!user.isOnline()) {
user.clearCache();
}
@@ -4,9 +4,8 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.SignChangeEvent;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.misc.PlayerUtils;
import com.bencodez.advancedcore.scheduler.BukkitScheduler;
import com.bencodez.advancedcore.api.misc.PlayerManager;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
// TODO: Auto-generated Javadoc
@@ -35,8 +34,8 @@ public class SignChange implements Listener {
@EventHandler(ignoreCancelled = true)
public void onSignChange(SignChangeEvent event) {
if (event.getLine(0).equalsIgnoreCase("[VotingPlugin]")) {
if (PlayerUtils.getInstance().hasServerPermission(event.getPlayer().getName(), "VotingPlugin.Sign.Create")
|| PlayerUtils.getInstance().hasServerPermission(event.getPlayer().getName(),
if (PlayerManager.getInstance().hasServerPermission(event.getPlayer().getName(), "VotingPlugin.Sign.Create")
|| PlayerManager.getInstance().hasServerPermission(event.getPlayer().getName(),
"VotingPlugin.Admin")) {
String data = event.getLine(2);
if (!data.equalsIgnoreCase("all") && !data.equalsIgnoreCase("monthly")
@@ -46,8 +45,8 @@ public class SignChange implements Listener {
try {
plugin.getServerData().addSign(event.getBlock().getLocation(), event.getLine(2),
Integer.parseInt(event.getLine(1)));
event.getPlayer().sendMessage(StringParser.getInstance().colorize("&aAdded sign!"));
BukkitScheduler.runTaskAsynchronously(plugin, new Runnable() {
event.getPlayer().sendMessage(MessageAPI.colorize("&aAdded sign!"));
plugin.getBukkitScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
@@ -56,12 +55,11 @@ public class SignChange implements Listener {
}
});
} catch (Exception ex) {
event.getPlayer().sendMessage(StringParser.getInstance().colorize("&cError on sign creation!"));
event.getPlayer().sendMessage(MessageAPI.colorize("&cError on sign creation!"));
ex.printStackTrace();
}
} else {
event.getPlayer()
.sendMessage(StringParser.getInstance().colorize(plugin.getConfigFile().getFormatNoPerms()));
event.getPlayer().sendMessage(MessageAPI.colorize(plugin.getConfigFile().getFormatNoPerms()));
}
}
@@ -6,7 +6,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.bungee.BungeeMethod;
import com.bencodez.votingplugin.events.PlayerVoteEvent;
@@ -77,25 +77,34 @@ public class VotiferEvent implements Listener {
"Ignoring vote from votifier since pluginmessaging or socket bungee method is enabled, this means you aren't setup correctly for those methods, please check: https://github.com/BenCodez/VotingPlugin/wiki/Bungeecord-Setups");
return;
}
String voteSiteNameStr = plugin.getVoteSiteName(false, voteSite);
String matchSite = "";
if (plugin.getConfigFile().isAdvancedServiceSiteHandling()) {
if (plugin.getServiceSiteHandler() != null) {
matchSite = plugin.getServiceSiteHandler().matchReverse(voteSite);
}
}
String voteSiteNameStr = plugin.getVoteSiteName(false, voteSite, matchSite);
ArrayList<String> sites = plugin.getConfigVoteSites().getVoteSitesNames(false);
boolean createSite = false;
if (sites != null) {
if (!ArrayUtils.getInstance().containsIgnoreCase(sites, voteSiteNameStr)) {
if (!ArrayUtils.containsIgnoreCase(sites, voteSiteNameStr)) {
createSite = true;
}
} else {
createSite = true;
}
String serviceSite = voteSite;
if (plugin.getConfigFile().isAutoCreateVoteSites() && createSite) {
plugin.getLogger().warning("VoteSite with service site '" + voteSiteNameStr
+ "' does not exist, attempting to generate...");
plugin.getConfigVoteSites().generateVoteSite(voteSiteNameStr);
plugin.getLogger().info("Current known service sites: "
+ ArrayUtils.getInstance().makeStringList(plugin.getServerData().getServiceSites()));
+ ArrayUtils.makeStringList(plugin.getServerData().getServiceSites()));
}
if (plugin.getTimeChecker().isActiveProcessing()
@@ -107,7 +116,7 @@ public class VotiferEvent implements Listener {
return;
}
String voteSiteName = plugin.getVoteSiteName(true, voteSite);
String voteSiteName = plugin.getVoteSiteName(true, serviceSite, matchSite);
PlayerVoteEvent voteEvent = new PlayerVoteEvent(plugin.getVoteSite(voteSiteName, true),
voteUsername, voteSite, true);
@@ -10,10 +10,11 @@ import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import com.bencodez.advancedcore.api.item.ItemBuilder;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.misc.MiscUtils;
import com.bencodez.advancedcore.api.rewards.RewardBuilder;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.bungee.BungeeMethod;
import com.bencodez.votingplugin.user.VotingPluginUser;
@@ -64,7 +65,7 @@ public class VoteSite {
@Getter
@Setter
private double timeOffSet;
private int voteDelayDailyHour;
@Getter
@Setter
@@ -126,15 +127,17 @@ public class VoteSite {
}
} else {
String bc = StringParser.getInstance().colorize(plugin.getConfigFile().getFormatBroadCastMsg());
String bc = MessageAPI.colorize(plugin.getConfigFile().getFormatBroadCastMsg());
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("player", playerName);
placeholders.put("nickname",
(user.getPlayer() != null) ? user.getPlayer().getDisplayName() : user.getPlayerName());
placeholders.put("sitename", getDisplayName());
placeholders.put("servicesite", getServiceSite());
bc = StringParser.getInstance().replacePlaceHolder(bc, placeholders);
bc = StringParser.getInstance().replacePlaceHolders(user.getOfflinePlayer(), bc);
placeholders.put("votesrequired", "" + plugin.getVoteParty().getVotesRequired());
placeholders.put("neededvotes", "" + plugin.getVoteParty().getNeededVotes());
bc = PlaceholderUtils.replacePlaceHolder(bc, placeholders);
bc = PlaceholderUtils.replacePlaceHolders(user.getOfflinePlayer(), bc);
ArrayList<Player> players = new ArrayList<Player>();
for (Player p : Bukkit.getOnlinePlayers()) {
if (!plugin.getVotingPluginUserManager().getVotingPluginUser(p).getDisableBroadcast()) {
@@ -172,7 +175,7 @@ public class VoteSite {
public String getVoteURL(boolean json) {
if (!plugin.getConfigFile().isFormatCommandsVoteForceLinks() || !json
|| StringParser.getInstance().containsJson(voteURL)) {
|| MessageAPI.containsJson(voteURL)) {
return voteURL;
} else {
if (!voteURL.startsWith("http")) {
@@ -183,8 +186,8 @@ public class VoteSite {
}
public String getVoteURLJsonStrip() {
String url = ChatColor.stripColor(StringParser.getInstance()
.colorize(StringParser.getInstance().parseJson(getVoteURL(false)).toPlainText()));
String url = ChatColor
.stripColor(MessageAPI.colorize(PlaceholderUtils.parseJson(getVoteURL(false)).toPlainText()));
if (!url.startsWith("http")) {
if (!url.startsWith("www.")) {
url = "https://www." + url;
@@ -230,13 +233,13 @@ public class VoteSite {
voteDelayDaily = plugin.getConfigVoteSites().getVoteSiteResetVoteDelayDaily(key);
giveOffline = plugin.getConfigVoteSites().getVoteSiteGiveOffline(key);
waitUntilVoteDelay = plugin.getConfigVoteSites().getWaitUntilVoteDelay(key);
timeOffSet = plugin.getConfigVoteSites().getTimeOffSet(key);
voteDelayDailyHour = plugin.getConfigVoteSites().getVoteDelayDailyHour(key);
hidden = plugin.getConfigVoteSites().getVoteSiteHidden(key);
ignoreCanVote = plugin.getConfigVoteSites().getVoteSiteIgnoreCanVote(key);
}
public boolean isVaidServiceSite() {
return ArrayUtils.getInstance().containsIgnoreCase(plugin.getServerData().getServiceSites(), getServiceSite());
return ArrayUtils.containsIgnoreCase(plugin.getServerData().getServiceSites(), getServiceSite());
}
public String loadingDebug() {
@@ -247,7 +250,7 @@ public class VoteSite {
str += ", VoteDelayDaily: " + isVoteDelayDaily();
str += ", IsWaitUntilVoteDelay: " + isWaitUntilVoteDelay();
str += ", ServiceSite: " + getServiceSite();
str += ", TimeOffSet:" + getTimeOffSet();
str += ", VoteDelayDailyHour:" + getVoteDelayDailyHour();
str += ", Url: " + getVoteURL();
str += ", IgnoreCanVote: " + isIgnoreCanVote();
str += ", Hidden: " + isHidden();
@@ -3,6 +3,8 @@ package com.bencodez.votingplugin.placeholders;
import java.text.NumberFormat;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.temporal.TemporalField;
import java.time.temporal.WeekFields;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -17,12 +19,13 @@ import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.placeholder.CalculatingPlaceholder;
import com.bencodez.advancedcore.api.placeholder.NonPlayerPlaceHolder;
import com.bencodez.advancedcore.api.placeholder.PlaceHolder;
import com.bencodez.advancedcore.api.user.AdvancedCoreUser;
import com.bencodez.advancedcore.api.user.UserDataChanged;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.objects.VoteSite;
import com.bencodez.votingplugin.topvoter.TopVoter;
@@ -109,7 +112,7 @@ public class PlaceHolders {
public String getPlaceholderValue(OfflinePlayer p, String identifier, boolean javascript, boolean forceProcess,
boolean useCache) {
if (plugin.getConfigFile().isUseJavascriptPlaceholders() && javascript && p != null) {
identifier = StringParser.getInstance().replaceJavascript(p, identifier);
identifier = PlaceholderUtils.replaceJavascript(p, identifier);
}
if (!identifier.endsWith("Position")) {
@@ -242,7 +245,7 @@ public class PlaceHolders {
public String getPlaceHolder(Player p, String identifier) {
if (plugin.getConfigFile().isUseJavascriptPlaceholders()) {
identifier = StringParser.getInstance().replaceJavascript(p, identifier);
identifier = PlaceholderUtils.replaceJavascript(p, identifier);
}
return getPlaceHolder(p, identifier, false);
}
@@ -286,6 +289,20 @@ public class PlaceHolders {
}
}.withDescription("Returns true/false if user has broadcast disabled").updateDataKey("DisableBroadcast"));
placeholders.add(new PlaceHolder<VotingPluginUser>("DisableReminders") {
@Override
public String placeholderRequest(VotingPluginUser user, String identifier) {
if (plugin.getVoteReminding().getRemindersEnabled().containsKey(user.getJavaUUID())) {
if (!plugin.getVoteReminding().getRemindersEnabled().get(user.getJavaUUID()).booleanValue()) {
return "True";
}
}
return "False";
}
}.withDescription("Returns true/false if user has reminders disabled"));
placeholders.add(new PlaceHolder<VotingPluginUser>("MilestoneCount") {
@Override
@@ -296,7 +313,7 @@ public class PlaceHolders {
Set<String> mVotes = plugin.getSpecialRewardsConfig().getMilestoneVotes();
for (String vote : mVotes) {
if (StringParser.getInstance().isInt(vote)) {
if (MessageAPI.isInt(vote)) {
final int num = Integer.parseInt(vote);
if (plugin.getSpecialRewardsConfig().getMilestoneRewardEnabled(num)) {
@@ -471,7 +488,7 @@ public class PlaceHolders {
}
long smallest = -1;
HashMap<Long, VoteSite> times = new HashMap<Long, VoteSite>();
for (VoteSite site : plugin.getVoteSites()) {
for (VoteSite site : plugin.getVoteSitesEnabled()) {
long t = user.voteNextDurationTime(site);
if (smallest == -1) {
smallest = t;
@@ -491,7 +508,15 @@ public class PlaceHolders {
}
}.withDescription("How long until user can vote on anysite").updateDataKey("LastVotes"));
for (final VoteSite voteSite : plugin.getVoteSites()) {
placeholders.add(new PlaceHolder<VotingPluginUser>("SitesAvailable") {
@Override
public String placeholderRequest(VotingPluginUser user, String identifier) {
return "" + user.getSitesNotVotedOn();
}
}.withDescription("Get number of sites available to be voted on").updateDataKey("LastVotes"));
for (final VoteSite voteSite : plugin.getVoteSitesEnabled()) {
placeholders.add(new CalculatingPlaceholder<VotingPluginUser>("Next_" + voteSite.getKey()) {
@Override
@@ -576,7 +601,7 @@ public class PlaceHolders {
@Override
public String placeholderRequest(String identifier) {
if (!StringParser.getInstance().isInt(identifier.split("_")[2])) {
if (!MessageAPI.isInt(identifier.split("_")[2])) {
return null;
}
int num = 1;
@@ -607,11 +632,64 @@ public class PlaceHolders {
}
}.withDescription("Get user top voter position"));
if (plugin.getGui().isLastMonthGUI()) {
placeholders.add(new PlaceHolder<VotingPluginUser>("Top_LastMonth_Position") {
@Override
public String placeholderRequest(VotingPluginUser user, String identifier) {
int num = 1;
UUID toMatch = UUID.fromString(user.getUUID());
for (Entry<TopVoterPlayer, Integer> entry : plugin.getLastMonthTopVoter().entrySet()) {
if (entry.getKey().getUuid().equals(toMatch)) {
return "" + num;
}
num++;
}
return "";
}
}.withDescription("Get user top voter position for lastmonth"));
nonPlayerPlaceholders.add(new NonPlayerPlaceHolder<VotingPluginUser>("Top_LastMonth_") {
@Override
public String placeholderRequest(String identifier) {
if (!MessageAPI.isInt(identifier.split("_")[2])) {
return null;
}
int num = 1;
int number = Integer.parseInt(identifier.split("_")[2]);
for (Entry<TopVoterPlayer, Integer> entry : plugin.getLastMonthTopVoter().entrySet()) {
if (num == number) {
return entry.getKey().getPlayerName();
}
num++;
}
return "";
}
}.useStartsWith().withDescription("Get user at position in last month top voter"));
nonPlayerPlaceholders.add(new NonPlayerPlaceHolder<VotingPluginUser>("Top_LastMonthVotes_") {
@Override
public String placeholderRequest(String identifier) {
int num = 1;
int number = Integer.parseInt(identifier.split("_")[2]);
for (Entry<TopVoterPlayer, Integer> entry : plugin.getLastMonthTopVoter().entrySet()) {
if (num == number) {
return "" + entry.getValue().intValue();
}
num++;
}
return "";
}
}.useStartsWith().withDescription("Get user votes at position in last month top voter"));
}
nonPlayerPlaceholders.add(new NonPlayerPlaceHolder<VotingPluginUser>("Top_Month_") {
@Override
public String placeholderRequest(String identifier) {
if (!StringParser.getInstance().isInt(identifier.split("_")[2])) {
if (!MessageAPI.isInt(identifier.split("_")[2])) {
return null;
}
int num = 1;
@@ -662,7 +740,7 @@ public class PlaceHolders {
@Override
public String placeholderRequest(String identifier) {
if (!StringParser.getInstance().isInt(identifier.split("_")[2])) {
if (!MessageAPI.isInt(identifier.split("_")[2])) {
return null;
}
int num = 1;
@@ -713,7 +791,7 @@ public class PlaceHolders {
@Override
public String placeholderRequest(String identifier) {
if (!StringParser.getInstance().isInt(identifier.split("_")[2])) {
if (!MessageAPI.isInt(identifier.split("_")[2])) {
return null;
}
int num = 1;
@@ -864,7 +942,7 @@ public class PlaceHolders {
@Override
public String placeholderRequest(String identifier) {
LocalDateTime now = LocalDateTime.now();
LocalDateTime now = plugin.getTimeChecker().getTime();
LocalDateTime offsetoclocktoday = plugin.getTimeChecker().getTime().withHour(0).withMinute(0);
LocalDateTime offsetoclocktomorrow = plugin.getTimeChecker().getTime().plusDays(1).withHour(0)
.withMinute(0);
@@ -890,14 +968,87 @@ public class PlaceHolders {
diffMinutes = diffMinutes * -1;
}
timeMsg = StringParser.getInstance().replaceIgnoreCase(timeMsg, "%hours%", Integer.toString(diffHours));
timeMsg = StringParser.getInstance().replaceIgnoreCase(timeMsg, "%minutes%",
Long.toString(diffMinutes));
timeMsg = MessageAPI.replaceIgnoreCase(timeMsg, "%hours%", Integer.toString(diffHours));
timeMsg = MessageAPI.replaceIgnoreCase(timeMsg, "%minutes%", Long.toString(diffMinutes));
return timeMsg;
}
}.withDescription("Time until plugin time day changes"));
nonPlayerPlaceholders.add(new NonPlayerPlaceHolder<VotingPluginUser>("TimeUntilWeekReset") {
@Override
public String placeholderRequest(String identifier) {
LocalDateTime now = plugin.getTimeChecker().getTime();
LocalDateTime newWeek = plugin.getTimeChecker().getTime().withHour(0).withMinute(0);
TemporalField woy = WeekFields.of(Locale.getDefault()).weekOfWeekBasedYear();
int weekNumber = newWeek.get(woy);
int newWeekNumber = weekNumber;
while (weekNumber == newWeekNumber) {
newWeek = newWeek.plusDays(1);
newWeekNumber = newWeek.get(woy);
}
String timeMsg = "%days% Days %hours% Hours %minutes% Minutes";
Duration dur = Duration.between(now, newWeek);
int diffDays = (int) (dur.getSeconds() / (60 * 60 * 24));
int diffHours = (int) (dur.getSeconds() / (60 * 60) - diffDays * 24);
long diffMinutes = dur.getSeconds() / 60 - diffHours * 60 - diffDays * 24 * 60;
if (diffHours < 0) {
diffHours = diffHours * -1;
}
if (diffHours >= 24) {
diffHours = diffHours - 24;
}
if (diffMinutes < 0) {
diffMinutes = diffMinutes * -1;
}
timeMsg = MessageAPI.replaceIgnoreCase(timeMsg, "%days%", Integer.toString(diffDays));
timeMsg = MessageAPI.replaceIgnoreCase(timeMsg, "%hours%", Integer.toString(diffHours));
timeMsg = MessageAPI.replaceIgnoreCase(timeMsg, "%minutes%", Long.toString(diffMinutes));
return timeMsg;
}
}.withDescription("Time until plugin time week changes"));
nonPlayerPlaceholders.add(new NonPlayerPlaceHolder<VotingPluginUser>("TimeUntilMonthReset") {
@Override
public String placeholderRequest(String identifier) {
LocalDateTime now = plugin.getTimeChecker().getTime();
LocalDateTime newMonth = plugin.getTimeChecker().getTime().plusMonths(1).withDayOfMonth(1).withHour(0)
.withMinute(0);
String timeMsg = "%days% Days %hours% Hours %minutes% Minutes";
Duration dur = Duration.between(now, newMonth);
int diffDays = (int) (dur.getSeconds() / (60 * 60 * 24));
int diffHours = (int) (dur.getSeconds() / (60 * 60) - diffDays * 24);
long diffMinutes = dur.getSeconds() / 60 - diffHours * 60 - diffDays * 24 * 60;
if (diffHours < 0) {
diffHours = diffHours * -1;
}
if (diffHours >= 24) {
diffHours = diffHours - 24;
}
if (diffMinutes < 0) {
diffMinutes = diffMinutes * -1;
}
timeMsg = MessageAPI.replaceIgnoreCase(timeMsg, "%days%", Integer.toString(diffDays));
timeMsg = MessageAPI.replaceIgnoreCase(timeMsg, "%hours%", Integer.toString(diffHours));
timeMsg = MessageAPI.replaceIgnoreCase(timeMsg, "%minutes%", Long.toString(diffMinutes));
return timeMsg;
}
}.withDescription("Time until plugin time month changes"));
Set<String> placeholdersSet = new HashSet<String>();
placeholdersSet.addAll(plugin.getConfigFile().getCachedPlaceholders());
if (getCacheLevel().equals(PlaceholderCacheLevel.AUTO)) {
@@ -1075,6 +1226,9 @@ public class PlaceHolders {
public void onUpdate() {
checkNonCachedPlaceholders();
for (Player p : Bukkit.getOnlinePlayers()) {
onUpdate(plugin.getVotingPluginUserManager().getVotingPluginUser(p), true);
}
/*
* for (NonPlayerPlaceHolder<VotingPluginUser> placeholder :
* nonPlayerPlaceholders) { if (placeholder.isUsesCache()) { for (String ident :
@@ -0,0 +1,97 @@
package com.bencodez.votingplugin.servicesites;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map.Entry;
import com.bencodez.votingplugin.VotingPluginMain;
import lombok.Getter;
public class ServiceSiteHandler {
@Getter
private HashMap<String, String> serviceSites = new HashMap<String, String>();
private VotingPluginMain plugin;
public String match(String service) {
for (Entry<String, String> entry : serviceSites.entrySet()) {
if (entry.getKey().equalsIgnoreCase(service)) {
return entry.getValue();
}
}
return service;
}
public String matchReverse(String service) {
for (Entry<String, String> entry : serviceSites.entrySet()) {
if (entry.getValue().equalsIgnoreCase(service)) {
return entry.getKey();
}
}
return service;
}
public ServiceSiteHandler(VotingPluginMain plugin) {
this.plugin = plugin;
loadFromGithub();
for (Entry<String, String> entry : serviceSites.entrySet()) {
plugin.extraDebug(entry.getKey() + " - " + entry.getValue());
}
}
public void readFromWeb(String webURL) throws IOException {
serviceSites.clear();
URL url = new URL(webURL);
InputStream is = url.openStream();
try (BufferedReader br = new BufferedReader(new InputStreamReader(is))) {
String line;
boolean rawFound = false;
while ((line = br.readLine()) != null) {
if (line.contains("<ul>")) {
rawFound = true;
} else if (!line.contains(" - ")) {
rawFound = false;
} else if (rawFound) {
String data = line.replaceAll("<li>", "").replaceAll("</li>", "");
String[] split = data.split(" - ");
if (split.length > 0) {
serviceSites.put(split[0], split[1]);
}
}
}
} catch (MalformedURLException e) {
plugin.debug(e);
// e.printStackTrace();
// throw new MalformedURLException("URL is malformed!!");
} catch (IOException e) {
plugin.debug(e);
// e.printStackTrace();
// throw new IOException();
}
}
public void loadFromGithub() {
try {
readFromWeb("https://github.com/BenCodez/VotingPlugin/wiki/Minecraft-Server-Lists");
} catch (IOException e) {
e.printStackTrace();
}
}
public boolean contains(String service) {
for (Entry<String, String> entry : serviceSites.entrySet()) {
if (entry.getKey().equalsIgnoreCase(service)) {
return true;
}
}
return false;
}
}
@@ -10,10 +10,9 @@ import org.bukkit.block.Sign;
import org.bukkit.block.Skull;
import org.bukkit.block.data.Directional;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.misc.MiscUtils;
import com.bencodez.advancedcore.nms.NMSManager;
import com.bencodez.advancedcore.scheduler.BukkitScheduler;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.nms.NMSManager;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.topvoter.TopVoter;
import com.bencodez.votingplugin.topvoter.TopVoterPlayer;
@@ -111,7 +110,7 @@ public class SignHandler {
* Check valid sign.
*/
public void checkValidSign() {
BukkitScheduler.runTask(plugin, new Runnable() {
plugin.getBukkitScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
@@ -228,7 +227,7 @@ public class SignHandler {
lines.set(j, lines.get(j).replace("%SiteName%", data).replace("%position%", "" + position));
}
lines = ArrayUtils.getInstance().colorize(lines);
lines = ArrayUtils.colorize(lines);
}
@@ -240,7 +239,7 @@ public class SignHandler {
* @param delay the delay
*/
public void updateSign(int delay) {
BukkitScheduler.runTaskLater(plugin, new Runnable() {
plugin.getBukkitScheduler().runTaskLater(plugin, new Runnable() {
@SuppressWarnings("deprecation")
@Override
@@ -77,7 +77,7 @@ public class Signs {
} else {
getSigns().get(i).updateLines();
getSigns().get(i).updateSign(time);
time += 5;
time += 1;
}
}
@@ -7,9 +7,9 @@ import java.util.Set;
import org.bukkit.Bukkit;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.rewards.RewardBuilder;
import com.bencodez.advancedcore.api.rewards.RewardOptions;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.bungee.BungeeMessageData;
import com.bencodez.votingplugin.events.PlayerSpecialRewardEvent;
@@ -49,8 +49,26 @@ public class SpecialRewards {
return checkAllVotes;
}
public void bungeeAllSitesCheck(VotingPluginUser user, int numberOfVotes, int num) {
if (plugin.getBungeeSettings().isGiveExtraAllSitesRewards()) {
int numberOfSites = plugin.getVoteSitesEnabled().size();
if (numberOfVotes >= numberOfSites * 2) {
if (num > numberOfSites) {
if (num % numberOfSites == 0) {
// should give extra allsites?
if (user.checkAllVotes()) {
plugin.debug("Giving extra allsites reward from bungee");
giveAllSitesRewards(user, user.isOnline(), true);
}
}
}
}
}
}
public boolean checkAlmostAllSites(VotingPluginUser user, boolean forceBungee) {
boolean checkAllVotes = user.checkAlmostAllVotes();
plugin.extraDebug("Checking almostallsites reward: " + checkAllVotes + "/" + user.getSitesNotVotedOn());
if (checkAllVotes) {
int currentDay = LocalDateTime.now().getDayOfYear();
int day = user.getGottenAlmostAllSitesDay();
@@ -70,7 +88,7 @@ public class SpecialRewards {
boolean gotCumulativeAny = false;
Set<String> votes = plugin.getSpecialRewardsConfig().getCumulativeVotes();
for (String vote : votes) {
if (StringParser.getInstance().isInt(vote)) {
if (MessageAPI.isInt(vote)) {
int votesRequired = Integer.parseInt(vote);
if (votesRequired != 0) {
if (plugin.getSpecialRewardsConfig().getCumulativeRewardEnabled(votesRequired)
@@ -210,7 +228,7 @@ public class SpecialRewards {
boolean gotMilestone = false;
Set<String> votes = plugin.getSpecialRewardsConfig().getMilestoneVotes();
for (String vote : votes) {
if (StringParser.getInstance().isInt(vote)) {
if (MessageAPI.isInt(vote)) {
int votesRequired = Integer.parseInt(vote);
if (votesRequired != 0) {
if (plugin.getSpecialRewardsConfig().getMilestoneRewardEnabled(votesRequired)
@@ -245,8 +263,10 @@ public class SpecialRewards {
if (streak.contains("-")) {
// multiple
multiple = true;
}
if (StringParser.getInstance().isInt(s)) {
plugin.debug("Streak: " + streak + " multiple: " + multiple);
if (MessageAPI.isInt(s)) {
int streakRequired = Integer.parseInt(s);
if (streakRequired != 0) {
if (plugin.getSpecialRewardsConfig().getVoteStreakRewardEnabled(type, streak)
@@ -270,8 +290,7 @@ public class SpecialRewards {
}
} else {
if (curStreak != 0 && curStreak % streakRequired == 0) {
giveVoteStreakReward(user, user.isOnline(), type, streakRequired + "-", curStreak,
forceBungee);
giveVoteStreakReward(user, user.isOnline(), type, streak, curStreak, forceBungee);
gotReward = true;
plugin.debug(
user.getPlayerName() + " got VoteStreak " + streakRequired + "* for " + type);
@@ -6,7 +6,6 @@ import java.util.UUID;
import com.bencodez.advancedcore.api.rewards.Reward;
import com.bencodez.advancedcore.api.rewards.RewardOptions;
import com.bencodez.advancedcore.scheduler.BukkitScheduler;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.events.PlayerVoteEvent;
import com.bencodez.votingplugin.topvoter.TopVoter;
@@ -125,7 +124,7 @@ public class VoteTester {
.info("Time to process votes (" + amount + "): " + time + " ms, average per vote "
+ timePerVoteAvg + " ms. " + VotingPluginMain.plugin.getStorageType() + ", "
+ plugin.getVotingPluginUserManager().getAllUUIDs().size() + " users. "
+ VotingPluginMain.plugin.getVoteSites().size() + " votesites");
+ plugin.getVoteSitesEnabled().size() + " votesites");
}
});
@@ -134,7 +133,7 @@ public class VoteTester {
public void testSpam(int amount, String name, String site) {
for (int i = 0; i < amount; i++) {
BukkitScheduler.runTaskAsynchronously(plugin, new Runnable() {
plugin.getBukkitScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
@@ -17,8 +17,6 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.time.TimeType;
import com.bencodez.advancedcore.api.time.events.DateChangedEvent;
import com.bencodez.advancedcore.api.time.events.DayChangeEvent;
@@ -29,6 +27,8 @@ import com.bencodez.advancedcore.api.user.UserStorage;
import com.bencodez.advancedcore.api.user.userstorage.Column;
import com.bencodez.advancedcore.api.user.userstorage.DataType;
import com.bencodez.advancedcore.api.yml.YMLFileHandler;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.user.VotingPluginUser;
@@ -59,8 +59,8 @@ public class TopVoterHandler implements Listener {
.replace("%votes%", "" + plugin.getTopVoter(TopVoter.Weekly).get(users.get(i)));
msg.add(line);
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
msg = ArrayUtils.colorize(msg);
return ArrayUtils.convert(msg);
}
private HashMap<Integer, String> handlePlaces(Set<String> places) {
@@ -205,7 +205,7 @@ public class TopVoterHandler implements Listener {
}
// give time for other servers to catch up
if (!plugin.getTopVoterHandler().bungeeHandleResets()) {
if (!plugin.getTopVoterHandler().bungeeHandleResets() && plugin.getBungeeSettings().isUseBungeecoord()) {
plugin.debug("Delaying time change 10 seconds for other servers to catchup");
try {
Thread.sleep(10000);
@@ -322,7 +322,7 @@ public class TopVoterHandler implements Listener {
}
// give time for other servers to catch up
if (!bungeeHandleResets()) {
if (!bungeeHandleResets() && plugin.getBungeeSettings().isUseBungeecoord()) {
plugin.debug("Delaying time change 10 seconds for other servers to catchup");
try {
Thread.sleep(10000);
@@ -432,7 +432,7 @@ public class TopVoterHandler implements Listener {
}
// give time for other servers to catch up
if (!plugin.getTopVoterHandler().bungeeHandleResets()) {
if (!plugin.getTopVoterHandler().bungeeHandleResets() && plugin.getBungeeSettings().isUseBungeecoord()) {
plugin.debug("Delaying time change 10 seconds for other servers to catchup");
try {
Thread.sleep(10000);
@@ -462,7 +462,14 @@ public class TopVoterHandler implements Listener {
}
public void resetGottenMilestones() {
plugin.getUserManager().removeAllKeyValues("GottenMileStones", DataType.STRING);
plugin.getUserManager().removeAllKeyValues(getGottenMilestonesPath(), DataType.STRING);
}
public String getGottenMilestonesPath() {
if (plugin.getBungeeSettings().isPerServerMilestones()) {
return plugin.getBungeeSettings().getServerNameStorage() + "_" + "GottenMilestones";
}
return "GottenMileStones";
}
public void resetVoteShopLimit(String shopIdent) {
@@ -590,14 +597,14 @@ public class TopVoterHandler implements Listener {
title = title.replace("%page%", "" + page);
title = title.replace("%maxpages%", "" + pageSize);
title = title.replace("%Top%", plugin.getConfigFile().getFormatTopVoterAllTime());
msg.add(StringParser.getInstance().colorize(title));
msg.add(MessageAPI.colorize(title));
for (int i = (page - 1) * pagesize; (i < topVoters.size()) && (i < (((page - 1) * pagesize) + 10)); i++) {
msg.add(topVoters.get(i));
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
msg = ArrayUtils.colorize(msg);
return ArrayUtils.convert(msg);
}
/**
@@ -629,14 +636,14 @@ public class TopVoterHandler implements Listener {
title = title.replace("%page%", "" + page);
title = title.replace("%maxpages%", "" + pageSize);
title = title.replace("%Top%", plugin.getConfigFile().getFormatTopVoterDaily());
msg.add(StringParser.getInstance().colorize(title));
msg.add(MessageAPI.colorize(title));
for (int i = (page - 1) * pagesize; (i < topVoters.size()) && (i < (((page - 1) * pagesize) + 10)); i++) {
msg.add(topVoters.get(i));
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
msg = ArrayUtils.colorize(msg);
return ArrayUtils.convert(msg);
}
/**
@@ -668,14 +675,14 @@ public class TopVoterHandler implements Listener {
title = title.replace("%page%", "" + page);
title = title.replace("%maxpages%", "" + pageSize);
title = title.replace("%Top%", plugin.getConfigFile().getFormatTopVoterMonthly());
msg.add(StringParser.getInstance().colorize(title));
msg.add(MessageAPI.colorize(title));
for (int i = (page - 1) * pagesize; (i < topVoters.size()) && (i < (((page - 1) * pagesize) + 10)); i++) {
msg.add(topVoters.get(i));
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
msg = ArrayUtils.colorize(msg);
return ArrayUtils.convert(msg);
}
/**
@@ -702,8 +709,8 @@ public class TopVoterHandler implements Listener {
i++;
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
msg = ArrayUtils.colorize(msg);
return ArrayUtils.convert(msg);
}
/**
@@ -727,8 +734,8 @@ public class TopVoterHandler implements Listener {
msg.add(line);
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
msg = ArrayUtils.colorize(msg);
return ArrayUtils.convert(msg);
}
/**
@@ -755,8 +762,8 @@ public class TopVoterHandler implements Listener {
i++;
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
msg = ArrayUtils.colorize(msg);
return ArrayUtils.convert(msg);
}
/**
@@ -788,14 +795,14 @@ public class TopVoterHandler implements Listener {
title = title.replace("%page%", "" + page);
title = title.replace("%maxpages%", "" + pageSize);
title = title.replace("%Top%", plugin.getConfigFile().getFormatTopVoterWeekly());
msg.add(StringParser.getInstance().colorize(title));
msg.add(MessageAPI.colorize(title));
for (int i = (page - 1) * pagesize; (i < topVoters.size()) && (i < (((page - 1) * pagesize) + 10)); i++) {
msg.add(topVoters.get(i));
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
msg = ArrayUtils.colorize(msg);
return ArrayUtils.convert(msg);
}
public synchronized void updateTopVoters(
@@ -4,7 +4,7 @@ import java.util.UUID;
import org.bukkit.inventory.ItemStack;
import com.bencodez.advancedcore.api.misc.PlayerUtils;
import com.bencodez.advancedcore.api.misc.PlayerManager;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.user.VotingPluginUser;
@@ -30,7 +30,7 @@ public class TopVoterPlayer {
}
public ItemStack getPlayerHead() {
return PlayerUtils.getInstance().getPlayerSkull(getPlayerName(), false);
return PlayerManager.getInstance().getPlayerSkull(getPlayerName(), false);
}
public VotingPluginUser getUser() {
@@ -3,8 +3,7 @@ package com.bencodez.votingplugin.updater;
import java.util.Timer;
import java.util.TimerTask;
import com.bencodez.advancedcore.api.updater.Updater;
import com.bencodez.advancedcore.scheduler.BukkitScheduler;
import com.bencodez.simpleapi.updater.Updater;
import com.bencodez.votingplugin.VotingPluginMain;
// TODO: Auto-generated Javadoc
@@ -73,7 +72,7 @@ public class CheckUpdate {
if (plugin.getConfigFile().isDisableUpdateChecking()) {
return;
}
BukkitScheduler.runTaskLaterAsynchronously(plugin, new Runnable() {
plugin.getBukkitScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
@Override
public void run() {
@@ -87,7 +86,7 @@ public class CheckUpdate {
}, 1000 * 60 * 1200, 1000 * 60 * 1200);
}
}, 10l);
}, 10);
}
}
@@ -19,24 +19,12 @@ public class UserManager {
this.plugin = plugin;
}
@Deprecated
public UserManager() {
}
@Deprecated
static UserManager instance = new UserManager();
@Deprecated
public static UserManager getInstance() {
return instance;
}
public void addCachingKeys() {
UserDataManager manager = plugin.getUserManager().getDataManager();
manager.addKey(new UserDataKeyBoolean("TopVoterIgnore"));
manager.addKey(new UserDataKeyInt("VotePartyVotes"));
manager.addKey(new UserDataKeyString("LastVotes"));
manager.addKey(new UserDataKeyBoolean("CoolDownCheck"));
manager.addKey(new UserDataKeyBoolean(getCoolDownCheckPath()));
manager.addKey(new UserDataKeyString("OfflineVotes").setColumnType("MEDIUMTEXT"));
manager.addKey(new UserDataKeyInt("MilestoneCount"));
manager.addKey(new UserDataKeyInt("MonthTotal"));
@@ -60,6 +48,7 @@ public class UserManager {
manager.addKey(new UserDataKeyInt("LastWeeklyTotal"));
manager.addKey(new UserDataKeyInt("LastDailyTotal"));
manager.addKey(new UserDataKeyInt("BestMonthVoteStreak"));
manager.addKey(new UserDataKeyString(getCoolDownCheckSitePath()).setColumnType("LONGTEXT"));
if (plugin.getOptions().isPerServerRewards()) {
manager.addKey(new UserDataKeyString("OfflineRewards" + plugin.getOptions().getServer())
.setColumnType("MEDIUMTEXT"));
@@ -84,6 +73,22 @@ public class UserManager {
return "AlmostAllSitesLast";
}
public String getCoolDownCheckSitePath() {
if (plugin.getBungeeSettings().isUseBungeecoord()) {
return "CoolDownCheck_" + plugin.getBungeeSettings().getServerNameStorage() + "_Sites";
} else {
return "CoolDownCheck" + "_Sites";
}
}
public String getCoolDownCheckPath() {
if (plugin.getBungeeSettings().isUseBungeecoord()) {
return "CoolDownCheck_" + plugin.getBungeeSettings().getServerNameStorage();
} else {
return "CoolDownCheck";
}
}
public ArrayList<String> getAllUUIDs() {
return plugin.getUserManager().getAllUUIDs();
}
@@ -4,7 +4,6 @@ import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.YearMonth;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Collections;
@@ -20,11 +19,14 @@ import java.util.stream.Collectors;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.misc.MiscUtils;
import com.bencodez.advancedcore.api.rewards.RewardBuilder;
import com.bencodez.advancedcore.api.rewards.RewardOptions;
import com.bencodez.advancedcore.api.user.AdvancedCoreUser;
import com.bencodez.advancedcore.api.user.usercache.value.DataValue;
import com.bencodez.advancedcore.api.user.usercache.value.DataValueInt;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.bungee.BungeeMessageData;
import com.bencodez.votingplugin.bungee.BungeeMethod;
@@ -224,7 +226,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
* @return true, if successful
*/
public boolean canVoteAll() {
for (VoteSite voteSite : plugin.getVoteSites()) {
for (VoteSite voteSite : plugin.getVoteSitesEnabled()) {
if (!voteSite.isHidden()) {
boolean canVote = canVoteSite(voteSite);
if (!canVote) {
@@ -236,7 +238,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
}
public boolean canVoteAny() {
for (VoteSite voteSite : plugin.getVoteSites()) {
for (VoteSite voteSite : plugin.getVoteSitesEnabled()) {
if (!voteSite.isIgnoreCanVote() && !voteSite.isHidden()) {
boolean canVote = canVoteSite(voteSite);
if (canVote) {
@@ -276,24 +278,21 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
return now.isAfter(nextvote);
} else {
LocalDateTime offsetoclockyesterday = plugin.getTimeChecker().getTime().plusDays(-1).withHour(0)
.withMinute(0).plusHours((long) voteSite.getTimeOffSet());
LocalDateTime offsetoclocktoday = plugin.getTimeChecker().getTime().withHour(0).withMinute(0)
.plusHours((long) voteSite.getTimeOffSet());
LocalDateTime resetTime = lastVote.withHour(voteSite.getVoteDelayDailyHour()).withMinute(0)
.withSecond(0);
LocalDateTime resetTimeTomorrow = resetTime.plusHours(24);
if (!now.isBefore(offsetoclocktoday)) {
if (!lastVote.isBefore(offsetoclocktoday)) {
return false;
} else {
// if (ChronoUnit.HOURS.between(lastVote, resetTime) > 24) {
if (lastVote.isBefore(resetTime)) {
if (now.isAfter(resetTime)) {
return true;
}
} else {
if (!lastVote.isBefore(offsetoclockyesterday)) {
return false;
} else {
if (now.isAfter(resetTimeTomorrow)) {
return true;
}
}
}
} catch (Exception e) {
e.printStackTrace();
@@ -303,7 +302,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
}
public boolean checkAlmostAllVotes() {
if (getSitesNotVotedOn() == 1) {
if (getSitesNotVotedOn() <= 1) {
return true;
}
return false;
@@ -320,7 +319,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
ArrayList<Integer> months = new ArrayList<Integer>();
ArrayList<Integer> days = new ArrayList<Integer>();
for (VoteSite voteSite : plugin.getVoteSites()) {
for (VoteSite voteSite : plugin.getVoteSitesEnabled()) {
if (voteSite.isEnabled() && !voteSite.isHidden()) {
long time = user.getTime(voteSite);
if (time != 0) {
@@ -353,6 +352,10 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
if (!voteStreakUpdatedToday(LocalDateTime.now())) {
if (!plugin.getSpecialRewardsConfig().isVoteStreakRequirementUsePercentage() || hasPercentageTotal(
TopVoter.Daily, plugin.getSpecialRewardsConfig().getVoteStreakRequirementDay(), null)) {
plugin.extraDebug("Adding day vote streak to " + getUUID() + " "
+ plugin.getSpecialRewardsConfig().isVoteStreakRequirementUsePercentage() + " "
+ hasPercentageTotal(TopVoter.Daily,
plugin.getSpecialRewardsConfig().getVoteStreakRequirementDay(), null));
addDayVoteStreak();
plugin.getSpecialRewards().checkVoteStreak(this, "Day", forceBungee);
setDayVoteStreakLastUpdate(System.currentTimeMillis());
@@ -451,8 +454,8 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
return getData().getInt("LastMonthTotal", isCacheData(), isWaitForCache());
}
public HashMap<VoteSite, Boolean> getCoolDownCheckSiteList() {
HashMap<VoteSite, Boolean> coolDownChecks = new HashMap<VoteSite, Boolean>();
public HashMap<String, Boolean> getCoolDownCheckSiteList() {
HashMap<String, Boolean> coolDownChecks = new HashMap<String, Boolean>();
ArrayList<String> coolDownCheck = getData().getStringList(getCoolDownCheckSitePath(), isCacheData(),
isWaitForCache());
for (String str : coolDownCheck) {
@@ -461,7 +464,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
VoteSite site = plugin.getVoteSite(data[0], true);
if (site != null) {
Boolean b = Boolean.valueOf(data[1]);
coolDownChecks.put(site, b);
coolDownChecks.put(site.getKey(), b);
}
}
}
@@ -469,9 +472,9 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
}
public boolean getCoolDownCheckSite(VoteSite site) {
HashMap<VoteSite, Boolean> coolDownChecks = getCoolDownCheckSiteList();
if (coolDownChecks.containsKey(site)) {
return coolDownChecks.get(site).booleanValue();
HashMap<String, Boolean> coolDownChecks = getCoolDownCheckSiteList();
if (coolDownChecks.containsKey(site.getKey())) {
return coolDownChecks.get(site.getKey()).booleanValue();
}
return false;
}
@@ -516,7 +519,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
public HashMap<VoteSite, Long> getLastVoteTimesSorted() {
LinkedHashMap<VoteSite, Long> times = new LinkedHashMap<VoteSite, Long>();
for (VoteSite voteSite : plugin.getVoteSites()) {
for (VoteSite voteSite : plugin.getVoteSitesEnabled()) {
times.put(voteSite, getTime(voteSite));
}
LinkedHashMap<VoteSite, Long> sorted = new LinkedHashMap<>(
@@ -569,7 +572,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
public int getSitesVotedOn() {
int amount = 0;
for (VoteSite site : plugin.getVoteSites()) {
for (VoteSite site : plugin.getVoteSitesEnabled()) {
if (!canVoteSite(site)) {
amount++;
}
@@ -684,11 +687,12 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
int total = getTotal(top);
switch (top) {
case Daily:
return total / plugin.getVoteSites().size() * 100 > percentage;
return (double) total / (double) plugin.getVoteSitesEnabled().size() * 100 > percentage;
case Monthly:
return total / (plugin.getVoteSites().size() * time.getMonth().length(false)) * 100 > percentage;
return (double) total / ((double) plugin.getVoteSitesEnabled().size() * time.getMonth().length(false))
* 100 > percentage;
case Weekly:
return total / (plugin.getVoteSites().size() * 7) * 100 > percentage;
return (double) total / ((double) plugin.getVoteSitesEnabled().size() * 7) * 100 > percentage;
default:
return false;
}
@@ -793,14 +797,14 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
}
} else {
String bc = StringParser.getInstance().colorize(plugin.getConfigFile().getFormatOfflineBroadcast());
String bc = MessageAPI.colorize(plugin.getConfigFile().getFormatOfflineBroadcast());
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("player", playerName);
placeholders.put("nickname",
(user.getPlayer() != null) ? user.getPlayer().getDisplayName() : user.getPlayerName());
placeholders.put("numberofvotes", "" + numberOfVotes);
bc = StringParser.getInstance().replacePlaceHolder(bc, placeholders);
bc = StringParser.getInstance().replacePlaceHolders(user.getOfflinePlayer(), bc);
bc = PlaceholderUtils.replacePlaceHolder(bc, placeholders);
bc = PlaceholderUtils.replacePlaceHolders(user.getOfflinePlayer(), bc);
ArrayList<Player> players = new ArrayList<Player>();
for (Player p : Bukkit.getOnlinePlayers()) {
if (!plugin.getVotingPluginUserManager().getVotingPluginUser(p).getDisableBroadcast()) {
@@ -951,18 +955,18 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
getUserData().setStringList("LastVotes", data);
}
public void setCoolDownCheckSite(HashMap<VoteSite, Boolean> coolDownChecks) {
public void setCoolDownCheckSite(HashMap<String, Boolean> coolDownChecks) {
ArrayList<String> data = new ArrayList<String>();
for (Entry<VoteSite, Boolean> entry : coolDownChecks.entrySet()) {
String str = entry.getKey().getKey() + "//" + entry.getValue().toString();
for (Entry<String, Boolean> entry : coolDownChecks.entrySet()) {
String str = entry.getKey() + "//" + entry.getValue().toString();
data.add(str);
}
getUserData().setStringList(getCoolDownCheckSitePath(), data);
}
public void setCoolDownCheckSite(VoteSite site, boolean value) {
HashMap<VoteSite, Boolean> coolDownChecks = getCoolDownCheckSiteList();
coolDownChecks.put(site, Boolean.valueOf(value));
HashMap<String, Boolean> coolDownChecks = getCoolDownCheckSiteList();
coolDownChecks.put(site.getKey(), Boolean.valueOf(value));
setCoolDownCheckSite(coolDownChecks);
}
@@ -1037,7 +1041,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
int mileStoneCount = getMilestoneCount();
HashMap<String, Boolean> gottenMileStones = getHasGottenMilestone();
for (String vote : mVotes) {
if (StringParser.getInstance().isInt(vote)) {
if (MessageAPI.isInt(vote)) {
final int num = Integer.parseInt(vote);
if (plugin.getSpecialRewardsConfig().getMilestoneRewardEnabled(num)) {
if (gottenMileStones.containsKey("" + num)) {
@@ -1094,9 +1098,9 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
case Monthly:
if (plugin.getConfigFile().isLimitMonthlyVotes()) {
LocalDateTime time = plugin.getTimeChecker().getTime();
int days = YearMonth.of(time.getYear(), time.getMonth()).lengthOfMonth();
if (value >= days * plugin.getVoteSites().size()) {
value = days * plugin.getVoteSites().size();
int days = time.getDayOfMonth();
if (value >= days * plugin.getVoteSitesEnabled().size()) {
value = days * plugin.getVoteSitesEnabled().size();
}
}
getData().setInt("MonthTotal", value);
@@ -1146,7 +1150,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
if (time > 0) {
Date date = new Date(time);
String timeString = new SimpleDateFormat(plugin.getConfigFile().getFormatTimeFormat()).format(date);
if (StringParser.getInstance().containsIgnorecase(timeString, "YamlConfiguration")) {
if (MessageAPI.containsIgnorecase(timeString, "YamlConfiguration")) {
plugin.getLogger().warning("Detected issue parsing time, check time format");
}
return timeString;
@@ -1170,40 +1174,40 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
String info = "";
if (diffDays == 1) {
info += StringParser.getInstance()
.replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
info += PlaceholderUtils
.replacePlaceHolder(PlaceholderUtils.replacePlaceHolder(
plugin.getConfigFile().getFormatCommandsVoteLastTimeFormat(), "TimeType",
plugin.getConfigFile().getFormatTimeFormatsDay()), "amount", "" + diffDays);
info += " ";
} else if (diffDays > 1) {
info += StringParser.getInstance()
.replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
info += PlaceholderUtils
.replacePlaceHolder(PlaceholderUtils.replacePlaceHolder(
plugin.getConfigFile().getFormatCommandsVoteLastTimeFormat(), "TimeType",
plugin.getConfigFile().getFormatTimeFormatsDays()), "amount", "" + diffDays);
info += " ";
}
if (diffHours == 1) {
info += StringParser.getInstance()
.replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
info += PlaceholderUtils
.replacePlaceHolder(PlaceholderUtils.replacePlaceHolder(
plugin.getConfigFile().getFormatCommandsVoteLastTimeFormat(), "TimeType",
plugin.getConfigFile().getFormatTimeFormatsHour()), "amount", "" + diffHours);
info += " ";
} else if (diffHours > 1) {
info += StringParser.getInstance()
.replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
info += PlaceholderUtils
.replacePlaceHolder(PlaceholderUtils.replacePlaceHolder(
plugin.getConfigFile().getFormatCommandsVoteLastTimeFormat(), "TimeType",
plugin.getConfigFile().getFormatTimeFormatsHours()), "amount", "" + diffHours);
info += " ";
}
if (diffMinutes == 1) {
info += StringParser.getInstance().replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
info += PlaceholderUtils.replacePlaceHolder(PlaceholderUtils.replacePlaceHolder(
plugin.getConfigFile().getFormatCommandsVoteLastTimeFormat(), "TimeType",
plugin.getConfigFile().getFormatTimeFormatsMinute()), "amount", "" + diffMinutes);
info += " ";
} else if (diffMinutes > 1) {
info += StringParser.getInstance().replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
info += PlaceholderUtils.replacePlaceHolder(PlaceholderUtils.replacePlaceHolder(
plugin.getConfigFile().getFormatCommandsVoteLastTimeFormat(), "TimeType",
plugin.getConfigFile().getFormatTimeFormatsMinutes()), "amount", "" + diffMinutes);
info += " ";
@@ -1211,17 +1215,17 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
if (plugin.getConfigFile().isFormatCommandsVoteLastIncludeSeconds()) {
if (diffSeconds == 1) {
info += StringParser.getInstance().replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
info += PlaceholderUtils.replacePlaceHolder(PlaceholderUtils.replacePlaceHolder(
plugin.getConfigFile().getFormatCommandsVoteLastTimeFormat(), "TimeType",
plugin.getConfigFile().getFormatTimeFormatsSecond()), "amount", "" + diffSeconds);
} else {
info += StringParser.getInstance().replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
info += PlaceholderUtils.replacePlaceHolder(PlaceholderUtils.replacePlaceHolder(
plugin.getConfigFile().getFormatCommandsVoteLastTimeFormat(), "TimeType",
plugin.getConfigFile().getFormatTimeFormatsSeconds()), "amount", "" + diffSeconds);
}
}
info = StringParser.getInstance()
info = PlaceholderUtils
.replacePlaceHolder(plugin.getConfigFile().getFormatCommandsVoteLastLastVoted(), "times", info);
return info;
@@ -1238,7 +1242,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
placeholders.put("SiteName", voteSite.getDisplayName());
placeholders.put("timesince", timeSince);
return StringParser.getInstance().replacePlaceHolder(plugin.getGui().getChestVoteLastLine(), placeholders);
return PlaceholderUtils.replacePlaceHolder(plugin.getGui().getChestVoteLastLine(), placeholders);
}
public String voteCommandLastLine(VoteSite voteSite) {
@@ -1250,7 +1254,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
placeholders.put("SiteName", voteSite.getDisplayName());
placeholders.put("timesince", timeSince);
return StringParser.getInstance().replacePlaceHolder(plugin.getConfigFile().getFormatCommandsVoteLastLine(),
return PlaceholderUtils.replacePlaceHolder(plugin.getConfigFile().getFormatCommandsVoteLastLine(),
placeholders);
}
@@ -1261,103 +1265,37 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
public String voteCommandNextInfo(VoteSite voteSite, long time) {
String info = new String();
LocalDateTime now = plugin.getTimeChecker().getTime();
LocalDateTime lastVote = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault())
.plusHours(plugin.getOptions().getTimeHourOffSet());
if (!voteSite.isVoteDelayDaily()) {
double votedelay = voteSite.getVoteDelay();
if (votedelay == 0 && voteSite.getVoteDelayMin() == 0) {
String errorMsg = plugin.getConfigFile().getFormatCommandsVoteNextInfoError();
info = errorMsg;
} else {
LocalDateTime nextvote = lastVote.plusHours((long) votedelay)
.plusMinutes((long) voteSite.getVoteDelayMin());
if (time == 0 || now.isAfter(nextvote)) {
info = plugin.getConfigFile().getFormatCommandsVoteNextInfoCanVote();
} else {
Duration dur = Duration.between(now, nextvote);
long diffHours = dur.getSeconds() / (60 * 60);
long diffMinutes = dur.getSeconds() / 60 - diffHours * 60;
String timeMsg = plugin.getConfigFile().getFormatCommandsVoteNextInfoTime();
timeMsg = StringParser.getInstance().replaceIgnoreCase(timeMsg, "%hours%",
Long.toString(diffHours));
timeMsg = StringParser.getInstance().replaceIgnoreCase(timeMsg, "%minutes%",
Long.toString(diffMinutes));
info = timeMsg;
}
}
long nextTime = voteNextDurationTime(voteSite, time);
if (nextTime == 0) {
info = plugin.getConfigFile().getFormatCommandsVoteNextInfoCanVote();
} else {
LocalDateTime offsetoclockyesterday = plugin.getTimeChecker().getTime().plusDays(-1).withHour(0)
.withMinute(0).plusHours((long) voteSite.getTimeOffSet());
LocalDateTime offsetoclocktoday = plugin.getTimeChecker().getTime().withHour(0).withMinute(0)
.plusHours((long) voteSite.getTimeOffSet());
LocalDateTime offsetoclocktomorrow = plugin.getTimeChecker().getTime().plusDays(1).withHour(0).withMinute(0)
.plusHours((long) voteSite.getTimeOffSet());
int diffHours = (int) (nextTime / (60 * 60));
long diffMinutes = nextTime / 60 - diffHours * 60;
if (!now.isBefore(offsetoclocktoday)) {
if (!lastVote.isBefore(offsetoclocktoday)) {
Duration dur = Duration.between(now, offsetoclocktomorrow);
int diffHours = (int) (dur.getSeconds() / (60 * 60));
long diffMinutes = dur.getSeconds() / 60 - diffHours * 60;
if (diffHours < 0) {
diffHours = diffHours * -1;
}
if (diffHours >= 24) {
diffHours = diffHours - 24;
}
if (diffMinutes < 0) {
diffMinutes = diffMinutes * -1;
}
String timeMsg = plugin.getConfigFile().getFormatCommandsVoteNextInfoVoteDelayDaily();
timeMsg = StringParser.getInstance().replaceIgnoreCase(timeMsg, "%hours%",
Integer.toString(diffHours));
timeMsg = StringParser.getInstance().replaceIgnoreCase(timeMsg, "%minutes%",
Long.toString(diffMinutes));
info = timeMsg;
} else {
info = plugin.getConfigFile().getFormatCommandsVoteNextInfoCanVote();
}
} else {
if (!lastVote.isBefore(offsetoclockyesterday)) {
Duration dur = Duration.between(now, offsetoclocktoday);
int diffHours = (int) (dur.getSeconds() / (60 * 60));
long diffMinutes = dur.getSeconds() / 60 - diffHours * 60;
if (diffHours < 0) {
diffHours = diffHours * -1;
}
if (diffHours >= 24) {
diffHours = diffHours - 24;
}
if (diffMinutes < 0) {
diffMinutes = diffMinutes * -1;
}
String timeMsg = plugin.getConfigFile().getFormatCommandsVoteNextInfoVoteDelayDaily();
timeMsg = StringParser.getInstance().replaceIgnoreCase(timeMsg, "%hours%",
Integer.toString(diffHours));
timeMsg = StringParser.getInstance().replaceIgnoreCase(timeMsg, "%minutes%",
Long.toString(diffMinutes));
info = timeMsg;
} else {
info = plugin.getConfigFile().getFormatCommandsVoteNextInfoCanVote();
}
if (diffHours < 0) {
diffHours = diffHours * -1;
}
if (diffHours >= 24) {
diffHours = diffHours - 24;
}
if (diffMinutes < 0) {
diffMinutes = diffMinutes * -1;
}
String timeMsg = plugin.getConfigFile().getFormatCommandsVoteNextInfoVoteDelayDaily();
timeMsg = MessageAPI.replaceIgnoreCase(timeMsg, "%hours%", Integer.toString(diffHours));
timeMsg = MessageAPI.replaceIgnoreCase(timeMsg, "%minutes%", Long.toString(diffMinutes));
info = timeMsg;
}
return info;
}
public long voteNextDurationTime(VoteSite voteSite) {
long time = getTime(voteSite);
return voteNextDurationTime(voteSite, getTime(voteSite));
}
public long voteNextDurationTime(VoteSite voteSite, long time) {
LocalDateTime now = plugin.getTimeChecker().getTime();
LocalDateTime lastVote = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault())
@@ -1379,28 +1317,21 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
}
}
} else {
LocalDateTime offsetoclockyesterday = plugin.getTimeChecker().getTime().plusDays(-1).withHour(0)
.withMinute(0).plusHours((long) voteSite.getTimeOffSet());
LocalDateTime offsetoclocktoday = plugin.getTimeChecker().getTime().withHour(0).withMinute(0)
.plusHours((long) voteSite.getTimeOffSet());
LocalDateTime offsetoclocktomorrow = plugin.getTimeChecker().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);
LocalDateTime resetTime = lastVote.withHour(voteSite.getVoteDelayDailyHour()).withMinute(0).withSecond(0);
LocalDateTime resetTimeTomorrow = resetTime.plusHours(24);
if (lastVote.isBefore(resetTime)) {
if (now.isBefore(resetTime)) {
Duration dur = Duration.between(now, resetTime);
return dur.getSeconds();
} else {
return 0;
}
} else {
if (!lastVote.isBefore(offsetoclockyesterday)) {
Duration dur = Duration.between(now, offsetoclocktoday);
if (now.isBefore(resetTimeTomorrow)) {
Duration dur = Duration.between(now, resetTimeTomorrow);
return dur.getSeconds();
} else {
return 0;
}
}
return 0;
}
}
@@ -1410,7 +1341,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
public int getSitesNotVotedOn() {
int amount = 0;
for (VoteSite site : plugin.getVoteSites()) {
for (VoteSite site : plugin.getVoteSitesEnabled()) {
if (!site.isHidden()) {
if (canVoteSite(site)) {
amount++;
@@ -1426,7 +1357,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
public long getNextTimeAllSitesAvailable() {
long longest = 0;
for (VoteSite site : plugin.getVoteSites()) {
for (VoteSite site : plugin.getVoteSitesEnabled()) {
long seconds = voteNextDurationTime(site);
if (seconds > longest) {
longest = seconds;
@@ -1438,7 +1369,7 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
public long getNextTimeFirstSiteAvailable() {
long shortest = 0;
for (VoteSite site : plugin.getVoteSites()) {
for (VoteSite site : plugin.getVoteSitesEnabled()) {
if (!canVoteSite(site)) {
long seconds = voteNextDurationTime(site);
if (shortest == 0 || seconds < shortest) {
@@ -1484,4 +1415,20 @@ public class VotingPluginUser extends com.bencodez.advancedcore.api.user.Advance
}
public void mergeData(HashMap<String, DataValue> toAdd) {
HashMap<String, DataValue> currentData = getData().getValues();
HashMap<String, DataValue> newData = new HashMap<String, DataValue>();
for (TopVoter top : TopVoter.values()) {
if (toAdd.containsKey(top.getColumnName()) && currentData.containsKey(top.getColumnName())) {
newData.put(top.getColumnName(), new DataValueInt(
currentData.get(top.getColumnName()).getInt() + toAdd.get(top.getColumnName()).getInt()));
}
}
if (newData.size() > 0) {
getData().setValues(newData);
}
}
}
@@ -13,15 +13,15 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import com.bencodez.advancedcore.api.messages.StringParser;
import com.bencodez.advancedcore.api.misc.ArrayUtils;
import com.bencodez.advancedcore.api.messages.PlaceholderUtils;
import com.bencodez.advancedcore.api.misc.MiscUtils;
import com.bencodez.advancedcore.api.rewards.RewardBuilder;
import com.bencodez.advancedcore.api.time.events.DayChangeEvent;
import com.bencodez.advancedcore.api.time.events.MonthChangeEvent;
import com.bencodez.advancedcore.api.time.events.WeekChangeEvent;
import com.bencodez.advancedcore.api.user.userstorage.DataType;
import com.bencodez.advancedcore.scheduler.BukkitScheduler;
import com.bencodez.simpleapi.array.ArrayUtils;
import com.bencodez.simpleapi.messages.MessageAPI;
import com.bencodez.votingplugin.VotingPluginMain;
import com.bencodez.votingplugin.events.VotePartyEvent;
import com.bencodez.votingplugin.user.VotingPluginUser;
@@ -115,16 +115,17 @@ public class VoteParty implements Listener {
placeholders.put("votesrequired", "" + votesRequired);
placeholders.put("neededvotes", "" + neededVotes);
placeholders.put("votes", "" + votes);
msg = ArrayUtils.getInstance().colorize(ArrayUtils.getInstance().replacePlaceHolder(msg, placeholders));
msg = ArrayUtils.colorize(
PlaceholderUtils.replacePlaceHolder(msg, placeholders));
if (sender instanceof Player) {
Player p = (Player) sender;
sender.sendMessage(
ArrayUtils.getInstance().convert(ArrayUtils.getInstance().replacePlaceHolders(msg, p)));
sender.sendMessage(ArrayUtils.convert(
PlaceholderUtils.replacePlaceHolders(msg, p)));
} else {
sender.sendMessage(ArrayUtils.getInstance().convert(msg));
sender.sendMessage(ArrayUtils.convert(msg));
}
} else {
sender.sendMessage(StringParser.getInstance().colorize("&cVoteParty not enabled"));
sender.sendMessage(MessageAPI.colorize("&cVoteParty not enabled"));
}
}
@@ -205,12 +206,12 @@ public class VoteParty implements Listener {
String player = getRandomPlayerName();
for (final String cmd : plugin.getSpecialRewardsConfig().getVotePartyGlobalCommands()) {
BukkitScheduler.runTask(plugin, new Runnable() {
plugin.getBukkitScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(),
StringParser.getInstance().replacePlaceHolder(cmd, "randomonlineplayer", player));
PlaceholderUtils.replacePlaceHolder(cmd, "randomonlineplayer", player));
}
});
@@ -218,12 +219,12 @@ public class VoteParty implements Listener {
final ArrayList<String> list = plugin.getSpecialRewardsConfig().getVotePartyGlobalRandomCommand();
if (list.size() > 0) {
BukkitScheduler.runTask(plugin, new Runnable() {
plugin.getBukkitScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(),
StringParser.getInstance().replacePlaceHolder(
PlaceholderUtils.replacePlaceHolder(
list.get(ThreadLocalRandom.current().nextInt(list.size())), "randomonlineplayer",
player));
}
@@ -265,7 +266,7 @@ public class VoteParty implements Listener {
}
} else {
plugin.debug("Trying to give all voted players vote party");
plugin.debug(ArrayUtils.getInstance().makeStringList(getVotedUsers()));
plugin.debug(ArrayUtils.makeStringList(getVotedUsers()));
for (String uuid : getVotedUsers()) {
VotingPluginUser user;
if (orgUser != null && orgUser.getJavaUUID().toString().equals(uuid)) {
@@ -306,6 +307,10 @@ public class VoteParty implements Listener {
if (plugin.getSpecialRewardsConfig().isVotePartyResetWeekly()) {
reset(true);
}
if (plugin.getSpecialRewardsConfig().isVotePartyResetExtraVotesWeekly()) {
plugin.getServerData().setVotePartyExtraRequired(0);
}
}
public void register() {
@@ -345,6 +350,24 @@ public class VoteParty implements Listener {
plugin.getServerData().saveData();
}
public void checkVoteReminder(VotingPluginUser user) {
int neededVotes = getNeededVotes();
for (String str : plugin.getSpecialRewardsConfig().getVotePartyVoteReminderAtVotes()) {
if (MessageAPI.isInt(str)) {
int num = Integer.parseInt(str);
if (neededVotes == num) {
String broadcastMessage = plugin.getSpecialRewardsConfig().getVotePartyVoteReminderBroadcast();
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("player", user.getPlayerName());
placeholders.put("votesrequired", "" + neededVotes);
MiscUtils.getInstance()
.broadcast(PlaceholderUtils.replacePlaceHolder(broadcastMessage, placeholders));
}
}
}
}
public synchronized void vote(VotingPluginUser user, boolean realVote, boolean forceBungee) {
if (plugin.getSpecialRewardsConfig().isVotePartyEnabled()) {
if (plugin.getSpecialRewardsConfig().isVotePartyCountFakeVotes() || realVote) {
@@ -352,6 +375,7 @@ public class VoteParty implements Listener {
addTotal(user);
addVotePlayer(user);
check(user, forceBungee);
checkVoteReminder(user);
}
}
}
@@ -1,5 +1,8 @@
package com.bencodez.votingplugin.votereminding;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
@@ -33,6 +36,35 @@ public class VoteReminding {
this.plugin = plugin;
}
public void loadReminds() {
List<String> uuidsStr = plugin.getServerData().getDisabledReminders();
for (String str : uuidsStr) {
remindersEnabled.put(UUID.fromString(str), Boolean.FALSE);
}
plugin.getTimer().scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
saveReminds();
}
}, 24, 24, TimeUnit.HOURS);
}
public void saveReminds() {
ArrayList<UUID> remindersDisabled = new ArrayList<UUID>();
for (Entry<UUID, Boolean> entry : remindersEnabled.entrySet()) {
if (remindersEnabled.containsKey(entry.getKey())) {
if (!remindersEnabled.get(entry.getKey()).booleanValue()) {
remindersDisabled.add(entry.getKey());
}
}
}
plugin.getServerData().saveDisabledReminders(remindersDisabled);
}
/**
* Check remind.
*
@@ -119,7 +151,7 @@ public class VoteReminding {
return user.canVoteAny();
}
} else {
plugin.debug(user.getUUID() + " no need to remind because plaeyr has VotingPlugin.NoRemind");
plugin.debug(user.getUUID() + " no need to remind because player has VotingPlugin.NoRemind");
return false;
}
}