Compare commits

..
238 Commits
Author SHA1 Message Date
BenCodez c992724456 Deploying to gh-pages from @ BenCodez/VotingPlugin@39f4717f36 🚀 2026-07-23 01:52:30 +00:00
BenCodez d704732d45 Deploying to gh-pages from @ BenCodez/VotingPlugin@fe401f1988 🚀 2026-06-07 21:22:33 +00:00
BenCodez 7defc8caaf Deploying to gh-pages from @ BenCodez/VotingPlugin@300f9fd928 🚀 2026-02-14 20:35:04 +00:00
BenCodez 986cf367c0 Deploying to gh-pages from @ BenCodez/VotingPlugin@17574f6c50 🚀 2025-11-10 00:58:48 +00:00
BenCodez 482181b77f Deploying to gh-pages from @ BenCodez/VotingPlugin@b8acfe20ec 🚀 2025-08-24 21:50:37 +00:00
BenCodez 92b9bba37e Deploying to gh-pages from @ BenCodez/VotingPlugin@caa7058363 🚀 2025-07-01 00:45:05 +00:00
BenCodez 23236a51de Deploying to gh-pages from @ BenCodez/VotingPlugin@54a573a445 🚀 2025-06-22 21:42:59 +00:00
BenCodez fed3f65b03 Deploying to gh-pages from @ BenCodez/VotingPlugin@8060f594c3 🚀 2025-05-24 02:40:01 +00:00
BenCodez b902e0619f Deploying to gh-pages from @ BenCodez/VotingPlugin@f04930e437 🚀 2025-04-13 21:49:54 +00:00
BenCodez 373ac74666 Deploying to gh-pages from @ BenCodez/VotingPlugin@b4d57c7eae 🚀 2025-02-24 21:04:14 +00:00
BenCodez 31dd9a4c54 Deploying to gh-pages from @ BenCodez/VotingPlugin@abd86834a6 🚀 2025-01-26 19:31:40 +00:00
BenCodez 9f67bb23ef Deploying to gh-pages from @ BenCodez/VotingPlugin@a951aae0de 🚀 2025-01-26 02:17:29 +00:00
BenCodez f5d968959c Deploying to gh-pages from @ BenCodez/VotingPlugin@c2fe26aaea 🚀 2024-12-17 02:27:31 +00:00
BenCodez a5e31d37f9 Deploying to gh-pages from @ BenCodez/VotingPlugin@ad7970c99d 🚀 2024-12-01 22:11:38 +00:00
Ben a9ed8f58b5 Create jekyll-gp-pages.yml 2024-11-29 11:01:24 -06:00
BenCodez 37a82d3190 Deploying to gh-pages from @ BenCodez/VotingPlugin@3e862efff2 🚀 2024-11-24 20:25:45 +00:00
BenCodez acb94288d1 Deploying to gh-pages from @ BenCodez/VotingPlugin@3c78db5fe6 🚀 2024-10-20 19:39:27 +00:00
BenCodez 43be517f4e Deploying to gh-pages from @ BenCodez/VotingPlugin@c2fa7c4f90 🚀 2024-08-04 17:48:12 +00:00
BenCodez 1b42d3a357 Deploying to gh-pages from @ BenCodez/VotingPlugin@616a102d73 🚀 2024-07-20 23:32:43 +00:00
BenCodez 934295ce7b Deploying to gh-pages from @ BenCodez/VotingPlugin@054c8d0361 🚀 2024-06-23 18:59:31 +00:00
BenCodez 79c4a9e458 Deploying to gh-pages from @ BenCodez/VotingPlugin@050bfb3055 🚀 2024-05-26 20:38:43 +00:00
BenCodez 689d7b1ed9 Deploying to gh-pages from @ BenCodez/VotingPlugin@a0fbdaa2a0 🚀 2024-05-07 23:07:48 +00:00
BenCodez 05f670dc91 Deploying to gh-pages from @ BenCodez/VotingPlugin@fe277d8bfd 🚀 2024-05-05 17:43:22 +00:00
BenCodez ed5ebd5fe5 Deploying to gh-pages from @ BenCodez/VotingPlugin@1c5c33be6a 🚀 2024-02-18 01:46:48 +00:00
BenCodez 23326afbba Deploying to gh-pages from @ BenCodez/VotingPlugin@37c767dc74 🚀 2023-12-26 15:34:32 +00:00
BenCodez 3f55a39e68 Deploying to gh-pages from @ BenCodez/VotingPlugin@a2bf7c3dfc 🚀 2023-11-20 00:10:18 +00:00
BenCodez 9b913cd999 Deploying to gh-pages from @ BenCodez/VotingPlugin@37e29b8643 🚀 2023-09-24 00:50:42 +00:00
BenCodez 9c4663da08 Deploying to gh-pages from @ BenCodez/VotingPlugin@a78624eafb 🚀 2023-08-27 18:54:14 +00:00
BenCodez af5aab4cf9 Deploying to gh-pages from @ BenCodez/VotingPlugin@9a122fb46d 🚀 2023-06-18 19:37:46 +00:00
BenCodez f478ded219 Deploying to gh-pages from @ BenCodez/VotingPlugin@17fc78a15f 🚀 2023-06-18 19:31:00 +00:00
Ben b60026b205 Maven javadoc for 6.13.1 2023-06-18 01:54:40 +00:00
Ben 8883ceadda Maven javadoc for 6.13 2023-05-14 17:51:31 +00:00
Ben 19f4383b4c Maven javadoc for 6.12.2 2023-04-30 23:31:03 +00:00
Ben 648321e41c Maven javadoc for 6.12.1 2023-04-17 21:25:31 +00:00
Ben 33bd24dce4 Maven javadoc for 6.12 2023-04-16 00:34:40 +00:00
Ben 589b5583d1 Maven javadoc for 6.11.3 2023-03-18 23:40:29 +00:00
Ben 8aad0d6cf8 Maven javadoc for 6.11.2 2023-02-19 00:36:35 +00:00
Ben 6ab86569e8 Maven javadoc for 6.11.1 2023-01-22 02:06:17 +00:00
Ben 7e8b3da5ae Maven javadoc for 6.11 2023-01-15 19:17:15 +00:00
Ben 50371d292a Maven javadoc for 6.10.0 2022-12-11 01:16:50 +00:00
Ben 69012648c1 Maven javadoc for 6.9.5 2022-09-25 19:37:51 +00:00
Ben 559855ceb4 Maven javadoc for 6.9.4 2022-08-27 23:56:36 +00:00
Ben 6c1991a243 Maven javadoc for 6.9.3 2022-07-23 20:52:55 +00:00
Ben f94233462d Maven javadoc for 6.9.2 2022-06-07 20:24:43 +00:00
Ben d43f56a55c Maven javadoc for 6.9.1 2022-05-15 20:25:48 +00:00
Ben dad206b72f Maven javadoc for 6.9 2022-04-24 19:38:03 +00:00
Ben 8630b94419 Maven javadoc for 6.8.4 2022-03-27 01:39:28 +00:00
Ben 258f188f36 Maven javadoc for 6.8.3 2022-02-20 19:14:25 +00:00
Ben 5cb575a519 Maven javadoc for 6.8.2 2022-02-13 21:25:08 +00:00
Ben 11019d3009 Maven javadoc for 6.8.1 2022-01-30 22:02:39 +00:00
Ben 2716a838f3 Maven javadoc for 6.8.1 2022-01-16 02:04:09 +00:00
Ben b754cffe63 Maven javadoc for 6.8 2022-01-03 16:05:23 +00:00
Ben 04ebbc432f Maven javadoc for 6.7.1 2021-11-29 00:35:30 +00:00
Ben 30fcc786e7 Maven javadoc for 6.7 2021-10-10 18:36:58 +00:00
Ben fcfd4c9c68 Maven javadoc for 6.6.3 2021-09-05 16:54:10 +00:00
Ben 750ce0d205 Maven javadoc for 6.6.2 2021-08-29 17:47:35 +00:00
Ben 074b322ab1 Maven javadoc for 6.6.1 2021-08-16 22:47:58 +00:00
Ben d666b428dd Maven javadoc for 6.6 2021-08-15 17:46:53 +00:00
Ben 557e4f9290 Maven javadoc for 6.5.2 2021-07-18 22:58:14 +00:00
Ben 0d70413e94 Maven javadoc for 6.5.1 2021-07-18 18:26:33 +00:00
Ben 55f54afd8f Maven javadoc for 6.5 2021-07-18 00:31:44 +00:00
Ben 5d8c3fd505 Maven javadoc for 6.4.1 2021-07-03 23:55:37 +00:00
Ben ffb598d52d Maven javadoc for 6.4.1 2021-06-29 17:35:14 +00:00
Ben 25579f9517 Maven javadoc for 6.4 2021-06-13 18:05:27 +00:00
Ben 92b948a6d7 Maven javadoc for 6.3.2 2021-05-30 16:53:44 +00:00
Ben a20653b786 Maven javadoc for 6.3 2021-04-25 18:33:53 +00:00
Ben 4d9e164121 Maven javadoc for 6.2.1 2021-04-07 21:17:56 +00:00
Ben f7fb5301d0 Maven javadoc for 6.2 2021-04-04 18:54:52 +00:00
Ben 93f3beab81 Maven javadoc for 6.1.7 2021-03-27 23:15:50 +00:00
Ben 7fcd6737ff Maven javadoc for 6.1.6 2021-03-14 17:10:12 +00:00
Ben 5cfa6cc94c Maven javadoc for 6.1.5 2021-03-07 01:21:51 +00:00
Ben b4293e03ae Maven javadoc for 6.1.4 2021-02-21 19:46:47 +00:00
Ben 6d89ef0fe9 Maven javadoc for 6.1.3 2021-02-07 19:06:30 +00:00
Ben 99ddc4f062 Maven javadoc for 6.1.2 2021-02-01 22:27:33 +00:00
Ben 6e7a1b9d5e Maven javadoc for 6.1.1 2021-01-31 01:27:42 +00:00
Ben 27a4d0c37a Maven javadoc for 6.1 2021-01-23 23:18:21 +00:00
Ben 975dfb77d6 Maven javadoc for 6.0.4 2020-12-22 22:15:51 +00:00
Ben 0b05f42008 Maven javadoc for 6.0.3 2020-12-19 23:07:07 +00:00
Ben 2fcd32f5a7 Maven javadoc for 6.0.2 2020-12-19 22:21:25 +00:00
Ben ba8499af1a Maven javadoc for 6.0.1 2020-11-28 02:05:32 +00:00
Ben 8abd61e718 Maven javadoc for 6.0 2020-11-22 20:16:33 +00:00
Ben 0baff556d7 Maven javadoc for 5.24.1 2020-10-05 21:14:44 +00:00
Ben 5acb7ab7a1 Maven javadoc for 5.24 2020-10-04 01:06:50 +00:00
Ben 01cb217eab Maven javadoc for 5.23.3 2020-09-07 00:23:28 +00:00
Ben 6c67d35394 Maven javadoc for 5.23.2 2020-08-30 01:14:17 +00:00
Ben faf78a4350 Maven javadoc for 5.23.1 2020-08-23 18:01:26 +00:00
Ben 28e0c2d70e Maven javadoc for 5.23 2020-08-15 23:45:18 +00:00
Ben 12b2b14856 Maven javadoc for 5.22 2020-06-27 23:42:09 +00:00
Ben b07f596f50 Maven javadoc for 5.21.3 2020-05-12 23:31:57 +00:00
Ben f41941863e Maven javadoc for 5.21.1 2020-04-12 16:51:55 +00:00
Ben be32fae627 Maven javadoc for 5.21 2020-03-29 16:40:55 +00:00
Ben 2a0508e294 Maven javadoc for 5.20.8 2020-03-15 18:13:31 +00:00
Ben 207ef16375 Maven javadoc for 5.20.7 2020-02-23 17:37:15 +00:00
Ben 854078e9c2 Maven javadoc for 5.20.6 2020-01-21 22:17:30 +00:00
Ben 711e00b35d Maven javadoc for 5.20.5 2019-12-08 00:23:37 +00:00
Ben 55fc4e3d10 Maven javadoc for 5.20.4 2019-11-03 01:24:47 +00:00
Ben 3cf4486dae Maven javadoc for 5.20.3 2019-10-20 00:33:32 +00:00
Ben 0597f3b673 Maven javadoc for 5.20.2 2019-10-01 23:35:08 +00:00
Ben 7aaaa7f59b Maven javadoc for 5.20.1 2019-09-20 20:56:19 +00:00
Ben d71afa7acf Maven javadoc for 5.20.0 2019-09-15 18:57:47 +00:00
Ben 174e9e58c2 Maven javadoc for 5.19.4 2019-08-15 23:32:58 +00:00
Ben de08b2f32f Maven javadoc for 5.19.3 2019-08-11 17:34:54 +00:00
Ben 438bc4522f Maven javadoc for 5.19.2 2019-08-04 17:48:31 +00:00
Ben 0251c5f1ad Maven javadoc for 5.19.1 2019-07-04 13:33:19 +00:00
Ben 1738e0fbc9 Maven javadoc for 5.19 2019-06-09 00:20:22 +00:00
Ben 8727149ae9 Maven javadoc for 5.18.3 2019-04-26 21:22:34 +00:00
Ben 74320203cf Maven javadoc for 5.18.2 2019-03-18 23:30:34 +00:00
Ben 7f8f6ed6eb Maven javadoc for 5.18.1 2019-03-10 02:08:13 +00:00
Ben 131e1ffafe Maven javadoc for 5.18 2019-02-17 00:06:45 +00:00
Ben 874c26baee Maven javadoc for 5.17.4 2019-01-20 00:40:42 +00:00
Ben 75ce6bd9d4 Maven javadoc for 5.17.3 2018-12-30 23:48:04 +00:00
Ben 6f9507b000 Maven javadoc for 5.17.2 2018-12-30 20:39:25 +00:00
Ben e197818451 Maven javadoc for 5.17.1 2018-12-15 14:29:13 +00:00
Ben 3146ce77f2 Maven javadoc for 5.17 2018-12-09 00:44:05 +00:00
Ben a9bc7f99b6 Maven javadoc for 5.16.3 2018-11-22 23:42:53 +00:00
Ben db4ee25b2f Maven javadoc for 5.16.2 2018-11-18 18:26:25 +00:00
Ben 2b33013962 Maven javadoc for 5.16.1 2018-10-28 17:53:17 +00:00
Ben 9bd60cb6f1 Maven javadoc for 5.16 2018-10-20 21:31:11 +00:00
Ben d0c3d57414 Maven javadoc for 5.15.1 2018-09-30 17:56:12 +00:00
Ben dcce6b4eef Maven javadoc for 5.15.1 2018-09-30 17:41:36 +00:00
Ben ce40bcf279 Maven javadoc for 5.14.2 2018-08-11 15:38:32 +00:00
Ben cc2aa8a5f3 Maven javadoc for 5.14.1 2018-08-11 15:13:53 +00:00
Ben 27ebcb9f42 Maven javadoc for 5.14 2018-07-25 23:27:41 +00:00
Ben 29087677cc Maven javadoc for 5.13.6 2018-07-18 21:12:31 +00:00
Ben 52acd791b8 Maven javadoc for 5.13.5 2018-07-16 21:07:31 +00:00
Ben d1be259c95 Maven javadoc for 5.13.4 2018-07-15 18:50:40 +00:00
Ben 031cb599ab Maven javadoc for 5.13.3 2018-07-08 00:04:54 +00:00
Ben b1d0953c9d Maven javadoc for 5.13.2 2018-07-06 13:00:19 +00:00
Ben 8cce203244 Maven javadoc for 5.13.1 2018-05-08 00:22:59 +00:00
Ben 8d33fdc6d2 Maven javadoc for 5.13 2018-05-06 17:04:08 +00:00
Ben 1cde77e9f8 Maven javadoc for 5.12.9 2018-04-22 01:02:48 +00:00
Ben 43094c09b9 Maven javadoc for 5.12.8 2018-03-30 13:17:21 +00:00
Ben eb46e1a987 Maven javadoc for 5.12.7 2018-03-11 17:25:30 +00:00
Ben 26c8d4c74f Maven javadoc for 5.12.6 2018-02-18 02:05:21 +00:00
Ben ad90b6ad4c Maven javadoc for 5.12.5 2018-02-11 19:49:02 +00:00
Ben d1a6c73257 Maven javadoc for 5.12.4 2018-02-04 18:08:20 +00:00
Ben 3d752092e7 Maven javadoc for 5.12.3 2018-01-28 20:57:11 +00:00
Ben f8efcbf154 Maven javadoc for 5.12.2 2018-01-28 19:52:27 +00:00
Ben 50f425eea1 Maven javadoc for 5.12.1 2018-01-15 01:38:22 +00:00
Ben 11c8b53b05 Maven javadoc for 5.12 2017-12-22 00:57:06 +00:00
Ben 8d96a7b77b Maven javadoc for 5.11 2017-11-19 21:13:48 +00:00
Ben d0679d6032 Maven javadoc for 5.11 2017-11-19 20:47:20 +00:00
Ben 75482d0d46 Maven javadoc for 5.10.6 2017-10-29 16:54:00 +00:00
Ben 5bf5c69aab Maven javadoc for 5.10.5 2017-10-22 19:59:12 +00:00
Ben 3fdff5801c Maven javadoc for 5.10.4 2017-10-14 12:28:20 +00:00
Ben 0e126a6c5c Maven javadoc for 5.10.3 2017-10-14 00:55:09 +00:00
Ben 4fd11f21fa Maven javadoc for 5.10.2 2017-09-26 18:28:38 +00:00
Ben 5aeced6023 Maven javadoc for 5.10.1 2017-09-22 14:25:45 +00:00
Ben 103b351f6f Maven javadoc for 5.10.0 2017-09-03 19:43:12 +00:00
Ben 6cd8b6608d Maven javadoc for 5.9.7 2017-08-27 17:21:39 +00:00
Ben 9b0ebda9d7 Maven javadoc for 5.9.6 2017-08-12 01:01:54 +00:00
Ben e98550a8ff Maven javadoc for 5.9.5 2017-08-08 14:49:34 +00:00
Ben 77a25ed1f8 Maven javadoc for 5.9.4 2017-07-23 21:18:18 +00:00
Ben 88d04b9196 Maven javadoc for 5.9.3 2017-07-16 21:26:59 +00:00
Ben 0e3f1113df Maven javadoc for 5.9.2 2017-07-12 13:40:42 +00:00
Ben 9c2348149f Maven javadoc for 5.9.1 2017-07-09 19:48:30 +00:00
Ben 01334fe135 Maven javadoc for 5.9 2017-06-28 12:32:54 +00:00
Ben 61a96aea7f Maven javadoc for 5.8.7 2017-06-19 00:39:00 +00:00
Ben cdf1b4ecc7 Maven javadoc for 5.8.6 2017-06-14 20:01:00 +00:00
Ben 24302b1116 Maven javadoc for 5.8.5 2017-06-11 21:13:36 +00:00
Ben 8ccff7d29a Maven javadoc for 5.8.4 2017-06-03 23:41:25 +00:00
Ben fe55f49f6c Maven javadoc for 5.8.3 2017-05-15 20:08:31 +00:00
Ben 17220620c7 Maven javadoc for 5.8.2 2017-05-05 00:07:10 +00:00
Ben 95fa01fecb Maven javadoc for 5.8.1 2017-04-26 21:02:07 +00:00
Ben 7f9eb235b1 Maven javadoc for 5.8 2017-04-17 15:32:57 +00:00
Ben 5e3dc4890d Maven javadoc for 5.7.4 2017-04-10 00:09:24 +00:00
Ben f8f630ab24 Maven javadoc for 5.7.3 2017-04-09 17:19:28 +00:00
Ben ecee161f9b Maven javadoc for 5.7.2 2017-04-08 23:57:32 +00:00
Ben 6bf5879c4f Maven javadoc for 5.7.1 2017-04-05 01:55:53 +00:00
Ben b86dc423ea Maven javadoc for 5.7.1 2017-04-05 01:20:08 +00:00
Ben fb1462564d Maven javadoc for 5.7 2017-04-02 21:05:14 +00:00
Ben 24570d9a53 Maven javadoc for 5.6.6 2017-03-25 12:32:20 +00:00
Ben be7fb62c11 Maven javadoc for 5.6.5 2017-03-21 19:51:20 +00:00
Ben dded55aff9 Maven javadoc for 5.6.4 2017-03-21 01:24:10 +00:00
Ben 64f3d20caa Maven javadoc for 5.6.3 2017-03-17 19:38:50 +00:00
Ben d090c081d8 Maven javadoc for 5.6.2 2017-03-17 19:09:34 +00:00
Ben 1a2c516523 Maven javadoc for 5.6.1 2017-03-17 15:18:42 +00:00
Ben 06b07d2026 Maven javadoc for 5.6.1 2017-03-17 15:04:23 +00:00
Ben 39357fc143 Maven javadoc for 5.6 2017-03-17 14:06:21 +00:00
Ben efeb69ae0b Maven javadoc for 5.5.5 2017-03-13 13:42:14 +00:00
Ben 282aa76887 Maven javadoc for 5.5.4 2017-03-08 02:52:36 +00:00
Ben 2770f8e679 Maven javadoc for 5.5.3 2017-03-06 21:21:50 +00:00
Ben 068263d5d7 Maven javadoc for 5.5.2 2017-03-06 01:38:41 +00:00
Ben debca7df24 Maven javadoc for 5.5.1 2017-02-26 19:07:49 +00:00
Ben 0dc7635839 Maven javadoc for 5.5 2017-02-19 22:15:46 +00:00
Ben d92a7da900 Maven javadoc for 5.4.6 2017-02-11 21:56:03 +00:00
Ben b6af73fa17 Maven javadoc for 5.4.5 2017-02-10 01:28:13 +00:00
Ben 6ea6880da1 Maven javadoc for 5.4.4 2017-02-04 03:02:16 +00:00
Ben c64a6ac4ba Maven javadoc for 5.4.3 2017-02-02 14:00:15 +00:00
Ben c2d57e453e Maven javadoc for 5.4.2 2017-02-01 14:29:20 +00:00
Ben 2f7be9e1c5 Maven javadoc for 5.4.1 2017-02-01 01:48:12 +00:00
Ben 72b7cd75b3 Maven javadoc for 5.4 2017-01-31 14:56:21 +00:00
Ben 19ad085378 Maven javadoc for 5.3.3 2017-01-25 02:06:49 +00:00
Ben 09bd126e31 Maven javadoc for 5.3.2 2017-01-10 02:06:21 +00:00
Ben 7ddcdbe365 Maven javadoc for 5.3.1 2017-01-09 20:45:11 +00:00
Ben c756de7abe Maven javadoc for 5.3 2017-01-08 18:49:48 +00:00
Ben c8ff3fa4d0 Maven javadoc for 5.2.6 2017-01-06 13:44:09 +00:00
Ben 8f26fadef4 Maven javadoc for 5.2.5 2017-01-06 00:32:31 +00:00
Ben 7147517b2b Maven javadoc for 5.2.4 2017-01-04 14:50:33 +00:00
Ben 53da438f56 Maven javadoc for 5.2.3 2017-01-04 13:40:01 +00:00
Ben 672bee3f9b Maven javadoc for 5.2.2 2017-01-02 13:50:07 +00:00
Ben ff3c97d047 Maven javadoc for 5.2.1 2016-12-29 16:12:17 +00:00
Ben 8318400461 Maven javadoc for 5.2 2016-12-29 14:05:02 +00:00
Ben f219eac3a2 Maven javadoc for 5.1.5 2016-12-23 00:46:12 +00:00
Ben fd1fe596ab Maven javadoc for 5.1.4 2016-12-21 21:08:55 +00:00
Ben 1b367774ab Maven javadoc for 5.1.3 2016-12-18 00:15:29 +00:00
Ben 2fa9274a1c Maven javadoc for 5.1.2 2016-12-14 20:53:47 +00:00
Ben beeab60add Maven javadoc for 5.1.1 2016-12-13 20:44:11 +00:00
Ben 404754286d Maven javadoc for 5.1 2016-12-12 00:27:13 +00:00
Ben 855b220b09 Maven javadoc for 5.0.3 2016-12-08 20:40:13 +00:00
Ben 85ee06f50f Maven javadoc for 5.0.3 2016-12-07 21:30:54 +00:00
Ben ca9ded8434 Maven javadoc for 5.0.2 2016-12-05 20:57:50 +00:00
Ben 19b141b9f5 Maven javadoc for 5.0.1 2016-12-05 01:37:41 +00:00
Ben 00f185f5f4 Maven javadoc for 5.0 2016-12-04 19:53:14 +00:00
Ben a27fdaaea0 Maven javadoc for 4.7.1 2016-11-24 01:51:52 +00:00
Ben 159a04b18f Maven javadoc for 4.7.1 2016-11-24 01:32:13 +00:00
Ben 065a44dfd3 Maven javadoc for 4.7.1 2016-11-23 01:53:55 +00:00
Ben 7fb999e483 Maven javadoc for 4.7.1 2016-11-23 01:41:01 +00:00
Ben12345rocks 02cc6a4747 Update javadoc 2016-10-30 16:04:23 -04:00
Ben12345rocks 58b56535aa Update javadoc 2016-10-23 14:03:31 -04:00
Ben12345rocks 98b8c35ebf Update JavaDoc 2016-09-11 14:11:34 -04:00
Ben12345rocks a2253ffc2d Update JavaDoc 2016-09-04 17:07:14 -04:00
Ben12345rocks f2e5bf32c1 Update JavaDoc 2016-08-29 15:32:11 -04:00
Ben12345rocks 2e32ae845a Update JavaDoc 2016-08-28 12:56:45 -04:00
Ben12345rocks 36021cc2e0 Update JavaDoc for 4.3 2016-08-24 08:49:28 -04:00
Ben12345rocks 5d31d04822 Update javadoc 2016-08-22 15:03:48 -04:00
Ben12345rocks 7ee0c82c98 Update javadoc 2016-08-22 14:56:51 -04:00
Ben12345rocks 16536afdba 4.2 2016-07-26 10:46:25 -04:00
Ben12345rocks 4cf7ff6787 4.2 2016-07-26 10:43:21 -04:00
Ben12345rocks 62a781a050 4.2 2016-07-26 10:22:42 -04:00
Ben12345rocks c59f2363b5 4.1.4 2016-07-20 10:21:48 -04:00
Ben12345rocks d3fb57e5e1 4.1.4 2016-07-20 10:18:07 -04:00
Ben12345rocks 242507da7e Update 2016-07-20 10:10:29 -04:00
Ben12345rocks b06c2e95c4 Update 2016-07-20 10:08:11 -04:00
Ben12345rocks 14cd13e059 Added_stuff 2016-07-20 10:04:21 -04:00
Ben12345rocks e1e90b4a45 Merge branch 'gh-pages' of https://github.com/Ben12345rocks/VotingPlugin into gh-pages 2016-07-19 17:02:55 -04:00
Ben 7f669ace50 Upload javadoc 2016-07-19 16:30:58 -04:00
Ben 8aa07be98b Create gh-pages branch via GitHub 2016-07-19 15:28:40 -04:00
728 changed files with 128495 additions and 16613 deletions

No files matched your search

-30
View File
@@ -1,30 +0,0 @@
---
name: Bug report
about: Bug report for VotingPlugin
title: ''
labels: Possible Bug
assignees: ''
---
**Versions**
Plugin version and spigot version.
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots/Configs**
If applicable, add screenshots to help explain your problem and/or configs relating to the issue.
**Additional context**
Add any other context about the problem here.
-20
View File
@@ -1,20 +0,0 @@
---
name: Feature request
about: Suggest an idea
title: ''
labels: Possible Feature
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
@@ -1,17 +0,0 @@
---
name: Question/Concerns
about: Ask about a question or a concern about the plugin
title: ''
labels: Question/Concern
assignees: ''
---
**Versions**
Plugin version and spigot version
**Relevant information**
Configs that relate to the issue in a pastebin.
**Context**
Context about the question/concern
-16
View File
@@ -1,16 +0,0 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 20
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 5
# Issues with these labels will never be considered stale
exemptLabels:
- Priority
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false
+51
View File
@@ -0,0 +1,51 @@
# Sample workflow for building and deploying a Jekyll site to GitHub Pages
name: Deploy Jekyll with GitHub Pages dependencies preinstalled
on:
# Runs on pushes targeting the default branch
push:
branches: ["gh-pages"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Build with Jekyll
uses: actions/jekyll-build-pages@v1
with:
source: ./apidocs
destination: ./_site
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
View File
Whitespace-only changes.
-31
View File
@@ -1,31 +0,0 @@
# VotingPlugin
Plugin on SpigotMC
https://www.spigotmc.org/resources/votingplugin.15358/
![img](http://badge.henrya.org/spigot/downloads?id=15358&color=green)
![img2](http://badge.henrya.org/spigot/version?id=15358&color=red)
## License
### Creative Commons Arttribution 3.0 Unported
https://github.com/Ben12345rocks/VotingPlugin/blob/master/VotingPlugin/Resources/LICENSE.txt
### Maven:
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
<dependency>
<groupId>com.github.Ben12345rocks</groupId>
<artifactId>VotingPlugin</artifactId>
<version>LATEST</version>
<scope>provided</scope>
</dependency>
Versions:
LATEST - latest stable release
BRANCH-SNAPHSOT - unstable builds
-25
View File
@@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry exported="true" kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="Resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
-3
View File
@@ -1,3 +0,0 @@
/bin/
/target/
/doc/
-23
View File
@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>VotingPlugin</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
@@ -1,7 +0,0 @@
add_todo=false
eclipse.preferences.version=1
include_subpackages=true
mode=mode_replace
project_specific_settings=true
replacements=<?xml version\="1.0" standalone\="yes"?>\n\n<replacements>\n<replacement key\="get" scope\="1" mode\="0">Gets the</replacement>\n<replacement key\="set" scope\="1" mode\="0">Sets the</replacement>\n<replacement key\="add" scope\="1" mode\="0">Adds the</replacement>\n<replacement key\="edit" scope\="1" mode\="0">Edits the</replacement>\n<replacement key\="remove" scope\="1" mode\="0">Removes the</replacement>\n<replacement key\="init" scope\="1" mode\="0">Inits the</replacement>\n<replacement key\="parse" scope\="1" mode\="0">Parses the</replacement>\n<replacement key\="create" scope\="1" mode\="0">Creates the</replacement>\n<replacement key\="build" scope\="1" mode\="0">Builds the</replacement>\n<replacement key\="is" scope\="1" mode\="0">Checks if is</replacement>\n<replacement key\="print" scope\="1" mode\="0">Prints the</replacement>\n<replacement key\="has" scope\="1" mode\="0">Checks for</replacement>\n</replacements>\n\n
use_internal_formatter=true
@@ -1,4 +0,0 @@
eclipse.preferences.version=1
encoding/<project>=Cp1252
encoding/Resources=Cp1252
encoding/src=Cp1252
@@ -1,27 +0,0 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.doc.comment.support=disabled
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
org.eclipse.jdt.core.compiler.source=1.8
@@ -1,2 +0,0 @@
eclipse.preferences.version=1
org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
@@ -1,4 +0,0 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
@@ -1,3 +0,0 @@
eclipse.preferences.version=1
project.repository.kind=github
project.repository.url=http\://github.com/Ben12345rocks/VotingPlugin
@@ -1,2 +0,0 @@
eclipse.preferences.version=1
org.jboss.ide.eclipse.as.core.singledeployable.deployableList=\n
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large. Load diff
-319
View File
@@ -1,319 +0,0 @@
Creative Commons Legal Code
Attribution 3.0 Unported
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
DAMAGES RESULTING FROM ITS USE.
License
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
CONDITIONS.
1. Definitions
a. "Adaptation" means a work based upon the Work, or upon the Work and
other pre-existing works, such as a translation, adaptation,
derivative work, arrangement of music or other alterations of a
literary or artistic work, or phonogram or performance and includes
cinematographic adaptations or any other form in which the Work may be
recast, transformed, or adapted including in any form recognizably
derived from the original, except that a work that constitutes a
Collection will not be considered an Adaptation for the purpose of
this License. For the avoidance of doubt, where the Work is a musical
work, performance or phonogram, the synchronization of the Work in
timed-relation with a moving image ("synching") will be considered an
Adaptation for the purpose of this License.
b. "Collection" means a collection of literary or artistic works, such as
encyclopedias and anthologies, or performances, phonograms or
broadcasts, or other works or subject matter other than works listed
in Section 1(f) below, which, by reason of the selection and
arrangement of their contents, constitute intellectual creations, in
which the Work is included in its entirety in unmodified form along
with one or more other contributions, each constituting separate and
independent works in themselves, which together are assembled into a
collective whole. A work that constitutes a Collection will not be
considered an Adaptation (as defined above) for the purposes of this
License.
c. "Distribute" means to make available to the public the original and
copies of the Work or Adaptation, as appropriate, through sale or
other transfer of ownership.
d. "Licensor" means the individual, individuals, entity or entities that
offer(s) the Work under the terms of this License.
e. "Original Author" means, in the case of a literary or artistic work,
the individual, individuals, entity or entities who created the Work
or if no individual or entity can be identified, the publisher; and in
addition (i) in the case of a performance the actors, singers,
musicians, dancers, and other persons who act, sing, deliver, declaim,
play in, interpret or otherwise perform literary or artistic works or
expressions of folklore; (ii) in the case of a phonogram the producer
being the person or legal entity who first fixes the sounds of a
performance or other sounds; and, (iii) in the case of broadcasts, the
organization that transmits the broadcast.
f. "Work" means the literary and/or artistic work offered under the terms
of this License including without limitation any production in the
literary, scientific and artistic domain, whatever may be the mode or
form of its expression including digital form, such as a book,
pamphlet and other writing; a lecture, address, sermon or other work
of the same nature; a dramatic or dramatico-musical work; a
choreographic work or entertainment in dumb show; a musical
composition with or without words; a cinematographic work to which are
assimilated works expressed by a process analogous to cinematography;
a work of drawing, painting, architecture, sculpture, engraving or
lithography; a photographic work to which are assimilated works
expressed by a process analogous to photography; a work of applied
art; an illustration, map, plan, sketch or three-dimensional work
relative to geography, topography, architecture or science; a
performance; a broadcast; a phonogram; a compilation of data to the
extent it is protected as a copyrightable work; or a work performed by
a variety or circus performer to the extent it is not otherwise
considered a literary or artistic work.
g. "You" means an individual or entity exercising rights under this
License who has not previously violated the terms of this License with
respect to the Work, or who has received express permission from the
Licensor to exercise rights under this License despite a previous
violation.
h. "Publicly Perform" means to perform public recitations of the Work and
to communicate to the public those public recitations, by any means or
process, including by wire or wireless means or public digital
performances; to make available to the public Works in such a way that
members of the public may access these Works from a place and at a
place individually chosen by them; to perform the Work to the public
by any means or process and the communication to the public of the
performances of the Work, including by public digital performance; to
broadcast and rebroadcast the Work by any means including signs,
sounds or images.
i. "Reproduce" means to make copies of the Work by any means including
without limitation by sound or visual recordings and the right of
fixation and reproducing fixations of the Work, including storage of a
protected performance or phonogram in digital form or other electronic
medium.
2. Fair Dealing Rights. Nothing in this License is intended to reduce,
limit, or restrict any uses free from copyright or rights arising from
limitations or exceptions that are provided for in connection with the
copyright protection under copyright law or other applicable laws.
3. License Grant. Subject to the terms and conditions of this License,
Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
perpetual (for the duration of the applicable copyright) license to
exercise the rights in the Work as stated below:
a. to Reproduce the Work, to incorporate the Work into one or more
Collections, and to Reproduce the Work as incorporated in the
Collections;
b. to create and Reproduce Adaptations provided that any such Adaptation,
including any translation in any medium, takes reasonable steps to
clearly label, demarcate or otherwise identify that changes were made
to the original Work. For example, a translation could be marked "The
original work was translated from English to Spanish," or a
modification could indicate "The original work has been modified.";
c. to Distribute and Publicly Perform the Work including as incorporated
in Collections; and,
d. to Distribute and Publicly Perform Adaptations.
e. For the avoidance of doubt:
i. Non-waivable Compulsory License Schemes. In those jurisdictions in
which the right to collect royalties through any statutory or
compulsory licensing scheme cannot be waived, the Licensor
reserves the exclusive right to collect such royalties for any
exercise by You of the rights granted under this License;
ii. Waivable Compulsory License Schemes. In those jurisdictions in
which the right to collect royalties through any statutory or
compulsory licensing scheme can be waived, the Licensor waives the
exclusive right to collect such royalties for any exercise by You
of the rights granted under this License; and,
iii. Voluntary License Schemes. The Licensor waives the right to
collect royalties, whether individually or, in the event that the
Licensor is a member of a collecting society that administers
voluntary licensing schemes, via that society, from any exercise
by You of the rights granted under this License.
The above rights may be exercised in all media and formats whether now
known or hereafter devised. The above rights include the right to make
such modifications as are technically necessary to exercise the rights in
other media and formats. Subject to Section 8(f), all rights not expressly
granted by Licensor are hereby reserved.
4. Restrictions. The license granted in Section 3 above is expressly made
subject to and limited by the following restrictions:
a. You may Distribute or Publicly Perform the Work only under the terms
of this License. You must include a copy of, or the Uniform Resource
Identifier (URI) for, this License with every copy of the Work You
Distribute or Publicly Perform. You may not offer or impose any terms
on the Work that restrict the terms of this License or the ability of
the recipient of the Work to exercise the rights granted to that
recipient under the terms of the License. You may not sublicense the
Work. You must keep intact all notices that refer to this License and
to the disclaimer of warranties with every copy of the Work You
Distribute or Publicly Perform. When You Distribute or Publicly
Perform the Work, You may not impose any effective technological
measures on the Work that restrict the ability of a recipient of the
Work from You to exercise the rights granted to that recipient under
the terms of the License. This Section 4(a) applies to the Work as
incorporated in a Collection, but this does not require the Collection
apart from the Work itself to be made subject to the terms of this
License. If You create a Collection, upon notice from any Licensor You
must, to the extent practicable, remove from the Collection any credit
as required by Section 4(b), as requested. If You create an
Adaptation, upon notice from any Licensor You must, to the extent
practicable, remove from the Adaptation any credit as required by
Section 4(b), as requested.
b. If You Distribute, or Publicly Perform the Work or any Adaptations or
Collections, You must, unless a request has been made pursuant to
Section 4(a), keep intact all copyright notices for the Work and
provide, reasonable to the medium or means You are utilizing: (i) the
name of the Original Author (or pseudonym, if applicable) if supplied,
and/or if the Original Author and/or Licensor designate another party
or parties (e.g., a sponsor institute, publishing entity, journal) for
attribution ("Attribution Parties") in Licensor's copyright notice,
terms of service or by other reasonable means, the name of such party
or parties; (ii) the title of the Work if supplied; (iii) to the
extent reasonably practicable, the URI, if any, that Licensor
specifies to be associated with the Work, unless such URI does not
refer to the copyright notice or licensing information for the Work;
and (iv) , consistent with Section 3(b), in the case of an Adaptation,
a credit identifying the use of the Work in the Adaptation (e.g.,
"French translation of the Work by Original Author," or "Screenplay
based on original Work by Original Author"). The credit required by
this Section 4 (b) may be implemented in any reasonable manner;
provided, however, that in the case of a Adaptation or Collection, at
a minimum such credit will appear, if a credit for all contributing
authors of the Adaptation or Collection appears, then as part of these
credits and in a manner at least as prominent as the credits for the
other contributing authors. For the avoidance of doubt, You may only
use the credit required by this Section for the purpose of attribution
in the manner set out above and, by exercising Your rights under this
License, You may not implicitly or explicitly assert or imply any
connection with, sponsorship or endorsement by the Original Author,
Licensor and/or Attribution Parties, as appropriate, of You or Your
use of the Work, without the separate, express prior written
permission of the Original Author, Licensor and/or Attribution
Parties.
c. Except as otherwise agreed in writing by the Licensor or as may be
otherwise permitted by applicable law, if You Reproduce, Distribute or
Publicly Perform the Work either by itself or as part of any
Adaptations or Collections, You must not distort, mutilate, modify or
take other derogatory action in relation to the Work which would be
prejudicial to the Original Author's honor or reputation. Licensor
agrees that in those jurisdictions (e.g. Japan), in which any exercise
of the right granted in Section 3(b) of this License (the right to
make Adaptations) would be deemed to be a distortion, mutilation,
modification or other derogatory action prejudicial to the Original
Author's honor and reputation, the Licensor will waive or not assert,
as appropriate, this Section, to the fullest extent permitted by the
applicable national law, to enable You to reasonably exercise Your
right under Section 3(b) of this License (right to make Adaptations)
but not otherwise.
5. Representations, Warranties and Disclaimer
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
7. Termination
a. This License and the rights granted hereunder will terminate
automatically upon any breach by You of the terms of this License.
Individuals or entities who have received Adaptations or Collections
from You under this License, however, will not have their licenses
terminated provided such individuals or entities remain in full
compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
survive any termination of this License.
b. Subject to the above terms and conditions, the license granted here is
perpetual (for the duration of the applicable copyright in the Work).
Notwithstanding the above, Licensor reserves the right to release the
Work under different license terms or to stop distributing the Work at
any time; provided, however that any such election will not serve to
withdraw this License (or any other license that has been, or is
required to be, granted under the terms of this License), and this
License will continue in full force and effect unless terminated as
stated above.
8. Miscellaneous
a. Each time You Distribute or Publicly Perform the Work or a Collection,
the Licensor offers to the recipient a license to the Work on the same
terms and conditions as the license granted to You under this License.
b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
offers to the recipient a license to the original Work on the same
terms and conditions as the license granted to You under this License.
c. If any provision of this License is invalid or unenforceable under
applicable law, it shall not affect the validity or enforceability of
the remainder of the terms of this License, and without further action
by the parties to this agreement, such provision shall be reformed to
the minimum extent necessary to make such provision valid and
enforceable.
d. No term or provision of this License shall be deemed waived and no
breach consented to unless such waiver or consent shall be in writing
and signed by the party to be charged with such waiver or consent.
e. This License constitutes the entire agreement between the parties with
respect to the Work licensed here. There are no understandings,
agreements or representations with respect to the Work not specified
here. Licensor shall not be bound by any additional provisions that
may appear in any communication from You. This License may not be
modified without the mutual written agreement of the Licensor and You.
f. The rights granted under, and the subject matter referenced, in this
License were drafted utilizing the terminology of the Berne Convention
for the Protection of Literary and Artistic Works (as amended on
September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
and the Universal Copyright Convention (as revised on July 24, 1971).
These rights and subject matter take effect in the relevant
jurisdiction in which the License terms are sought to be enforced
according to the corresponding provisions of the implementation of
those treaty provisions in the applicable national law. If the
standard suite of rights granted under applicable copyright law
includes additional rights not granted under this License, such
additional rights are deemed to be included in the License; this
License is not intended to restrict the license of any rights under
applicable law.
Creative Commons Notice
Creative Commons is not a party to this License, and makes no warranty
whatsoever in connection with the Work. Creative Commons will not be
liable to You or any party on any legal theory for any damages
whatsoever, including without limitation any general, special,
incidental or consequential damages arising in connection to this
license. Notwithstanding the foregoing two (2) sentences, if Creative
Commons has expressly identified itself as the Licensor hereunder, it
shall have all rights and obligations of Licensor.
Except for the limited purpose of indicating to the public that the
Work is licensed under the CCPL, Creative Commons does not authorize
the use by either party of the trademark "Creative Commons" or any
related trademark or logo of Creative Commons without the prior
written consent of Creative Commons. Any permitted use will be in
compliance with Creative Commons' then-current trademark usage
guidelines, as may be published on its website or otherwise made
available upon request from time to time. For the avoidance of doubt,
this trademark restriction does not form part of this License.
Creative Commons may be contacted at https://creativecommons.org/.
-111
View File
@@ -1,111 +0,0 @@
VoteSites:
# VoteSite key
# Used for saving data for votesites
# Use a short name if you can
ExampleVoteSite:
# Enable voteSite
# If false, votesite will not be loaded by plugin
# Default: false
Enabled: false
# Display name of voting site
Name: 'ExampleVoteSite'
# Priority of this site
# Used for sorted list
# High prority, higher on the list
Priority: 5
# The serviceName from the vote, has to be correct to work correctly
# Gotten from voting on the site (will be in console/log)
# Usually is the main part of the url(e.g. PlanetMinecraft.com), but not always
# See console when you vote (it will notify you if the plugin didn't find a votingsite matching the service site
ServiceSite: 'PlanetMinecraft.com'
# vote url for /vote
# Format for this can be set in Format.yml
# Do not include colors here
# If you need to force a url set the url as this:
# VoteURL: '[Text="ANY TEXT TO CLICK ON HERE",url="URLHERE"]'
VoteURL: 'link to vote URL here, used in /vote'
# Time between votes in hours (used for /vote next)
# Most sites are 24 hours
VoteDelay: 24
# Use to have a minute votedelay
#VoteDelayMin: 30
# Require waiting until votedelay time has pasted in order to accept vote
# Recommend: false
WaitUntilVoteDelay: false
# Reset vote delay each day (for certain sites that do this)
# Recommend: false
VoteDelayDaily: false
# 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
# This basiclly disables offline voting if set to true, don't misinterpret this option
ForceOffline: false
# VoteSite Material for some GUI's
# Removing this may result in an error, required on each site
Item:
Material: 'DIAMOND'
Amount: 1
# Rewards to give
# https://github.com/Ben12345rocks/AdvancedCore/wiki/Rewards
Rewards:
# Execute console commands
Commands:
- 'say hello'
# Send player a message
Messages:
Player: 'You voted'
# Site 2 example
Site2:
Enabled: false
Name: 'Site2'
ServiceSite: 'PlanetMinecraft.com'
VoteURL: 'link to vote URL here, used in /vote'
VoteDelay: 24
Item:
Material: 'DIAMOND'
Amount: 1
Rewards:
Commands:
- 'say hello'
# Advanced example
# 50% chance for reward1, if reward1 not given then 20% chance to get reward2, if reward2 not given then fallback
AdvancedPriority:
# Similar to priority, but no need to have to use reward files
# Add requirements under each reward
# Will go in order from list here and try to run each of the following rewards...
# This name can be anything, but they need to be different
Reward1:
Chance: 50
# Any other requirement here
# If any requirement fails, the next reward will be attempted
# Use permission requirement for rank based rewards
#RequirePermission: true
#Permission: 'permhere'
Messages:
Player: 'You got first reward'
Reward2:
Chance: 20
Messages:
Player: 'You got second reward'
# Fallback, 100% chance, after other rewards fail chances
Fallback:
Messages:
Player: 'You got unlucky'
Messages:
Player: 'You voted'
# Reward for any site
# Similar to AnySiteReward
# This requires the site to be configured in order to get the reward.
EverySiteReward: []
-4
View File
@@ -1,4 +0,0 @@
name: ${project.name}
version: ${project.version}
main: com.Ben12345rocks.VotingPlugin.bungee.Bungee
author: Ben12345rocks
-50
View File
@@ -1,50 +0,0 @@
# Set bungeecoord to true on servers on the network (In VotingPlugin)
# Set server name in each server related to what it is on bungee
#
# Have a reward on each server
SendVotesToAllServers: true
# Have a reward on 1 server on the network
SendToOnlineServer: false
# Tell servers to broadcast
Broadcast: true
# List of servers the plugin won't send the vote to
BlockedServers:
- hub
FallBackServer: factions
# Bungee communication, Add this to each spigot server
BungeeServer:
Host: '127.0.0.1'
Port: 1297
# Bungee communication, add each spigot server here
SpigotServers:
lobby:
Host: '127.0.0.1'
Port: 1298
factions:
Host: '127.0.0.1'
Port: 1999
# MYSQL Required
# MYSQL INFO --------------------------
Host: ''
# Default port is 3306
Port: 3306
Database: ''
Username: ''
Password: ''
# Max number of connections
MaxConnections: 1
# Maxium size of caching mysql
# -1 for no limit
# Affecting this value may affect performance
MaxSize: -1
# Table name prefix, for use with mutliple servers
Prefix: ''
#UseSSL: true
#########################################
Debug: false
-230
View File
@@ -1,230 +0,0 @@
name: ${project.name}
version: ${project.version}
main: com.Ben12345rocks.VotingPlugin.Main
description: Highly Customizable Voting Listener!
website: https://www.spigotmc.org/resources/votingplugin.15358/
author: Ben12345rocks
softdepend: [MVdWPlaceholders, Votifier, CMI, Vault, PlaceholderAPI, ProtocolLib]
api-version: 1.13
commands:
vote:
description: Vote command
adminvote:
description: Admin commands for VotingPlugin
av:
description: Admin commands for VotingPlugin
votehelp:
description: See access to a list of commands, Formated in Format.yml
aliases: vhelp
votetotal:
description: See totals of votes
aliases: vtotal
votelast:
description: See the last time you voted
aliases: vlast
votenext:
description: See when you can vote next
aliases: vnext
votetop:
description: See top voters
aliases: vtop
votetoday:
description: See who voted today
aliases: vtoday
votegui:
description: Open VoteGUI
aliases: vgui
voteurl:
description: Open VoteURL
aliases: vurl
votereward:
description: Open VoteReward GUI
aliases: vreward
vote?:
description: View Help
aliases: v?
voteparty:
description: A command
aliases: vparty
voteshop:
description: A command
aliases: vshop
votebest:
description: A command
aliases: vbest
votestreak:
description: A command
aliases: vstreak
votetogglebroadcast:
description: A command
aliases: vtogglebroadcast
votepoints:
description: A command
aliases: vpoints
votelist:
description: A command
aliases: vlist
voteall:
description: A command
aliases: vall
votechoices:
description: A command
alaises: vchoices
votegivepoints:
description: A command
alaises: vgivepoints
adminvotehelp:
description: Open adminvote help
aliases: avhelp
adminvote?:
description: Open adminvote help
aliases: av?
adminvotereport:
description: Command Alias
aliases: avreport
adminvoteperms:
description: Command Alias
aliases: avperms
adminvoteDownload:
description: Command Alias
aliases: avdownload
adminvotereload:
description: Command Alias
aliases: avreload
adminvotetestreward:
description: Command Alias
aliases: avtestreward
adminvoteversion:
description: Command Alias
aliases: avversion
adminvotesites:
description: Command Alias
aliases: avsites
adminvoterewards:
description: Command Alias
aliases: avrewards
adminvoteuuid:
description: Command Alias
aliases: avuuid
adminvotevotesite:
description: Command Alias
aliases: avvotesite
adminvoteconfig:
description: Command Alias
aliases: avconfig
adminvotesettotal:
description: Command Alias
aliases: avsettotal
adminvoteupdatecheck:
description: Command Alias
aliases: avupdatecheck
adminvotevote:
description: Command Alias
aliases: [avvote, fakevote]
adminvotegui:
description: Command Alias
aliases: avgui
adminvotegivereward:
description: Command Alias
aliases: avgivereward
adminvoteusers:
description: Command Alias
aliases: avusers
adminvoteConvertFromData:
description: Command Alias
aliases: avConvertFromData
adminvoteClearTotal:
description: Command Alias
adminvoteBackgroundUpdate:
description: Command Alias
aliases: avBackgroundUpdate
adminvoteClearCache:
description: Command Alias
aliases: avClearCache
adminvoteConvertFrom:
description: Command Alias
aliases: avConvertFrom
adminvoteServiceSites:
description: Command Alias
aliases: avServiceSites
adminvoteSetVotePartyCount:
description: Command Alias
aliases: avSetVotePartyCount
adminvoteClearOfflineVotes:
description: Command Alias
aliases: avClearOfflineVotes
adminvoteGiveAll:
description: Command Alias
aliases: avGiveAll
adminvoteGiveAllOnline:
description: Command Alias
aliases: avGiveAllOnline
adminvoteForceTimeChanged:
description: Command Alias
aliases: avForceTimeChanged
adminvoteplayername:
description: Command Alias
aliases: avplayername
adminvoteResyncMilestones:
description: Command Alias
aliases: avResyncMilestones
adminvoteClearOfflineRewards:
description: Command Alias
aliases: avClearOfflineRewards
adminvoteUserRemove:
description: Command Alias
aliases: avUserRemove
adminvotePurge:
description: Command Alias
aliases: avPurge
adminvoteJavascript:
description: Command Alias
aliases: avJavascript
adminvoteStatus:
description: Command Alias
aliases: avStatus
adminvoteTest:
description: Command Alias
aliases: avTest
adminvotePlaceholders:
description: Command Alias
aliases: avPlaceholders
adminvoteDownloadJenkins:
description: Command Alias
aliases: avDownloadJenkins
adminvoteForceVoteParty:
description: Command Alias
aliases: avForceVoteParty
adminvoteUserEditValue:
description: Command Alias
aliases: avUserEditValue
adminvoteSetRequestMethod:
description: Command Alias
aliases: avSetRequestMethod
adminvoteUser:
description: Command Alias
aliases: avUser
permissions:
VotingPlugin.Player:
description: Allows basic access player commands
VotingPlugin.Mod:
description: Allows mod access player commands
VotingPlugin.Admin:
description: Allows admin access player commands
VotingPlugin.Login.RemindVotes:
description: Allows players to get remined on login if they can vote
default: true
VotingPlugin.Admin.Debug:
description: Permission to view debug info ingame
VotingPlugin.Signs.Create:
description: Allows access to create signs
VotingPlugin.TopVoter.Ignore:
description: Allows you to be exempt from top voter
VotingPlugin.NoRemind:
description: Ignore vote reminding
default: false
VotingPlugin.Sign.Create:
description: Permission to create sign
VotingPlugin.Admin.GenerateServiceSite:
description: Permission for generating votesite message
-324
View File
@@ -1,324 +0,0 @@
<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.Ben12345rocks</groupId>
<artifactId>VotingPlugin</artifactId>
<version>5.22</version>
<packaging>jar</packaging>
<name>VotingPlugin</name>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<github.global.server>github</github.global.server>
<project.build.sourceEncoding>Cp1252</project.build.sourceEncoding>
</properties>
<distributionManagement>
<repository>
<id>internal.repo</id>
<name>Temporary Staging Repository</name>
<url>file://${project.build.directory}/mvn-repo</url>
</repository>
</distributionManagement>
<build>
<resources>
<resource>
<directory>Resources</directory>
<filtering>true</filtering>
<includes>
<include>plugin.yml</include>
<include>bungee.yml</include>
</includes>
</resource>
<resource>
<directory>Resources</directory>
<filtering>false</filtering>
</resource>
</resources>
<sourceDirectory>src</sourceDirectory>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<versionRange>[1,)</versionRange>
<goals>
<goal>delombok</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<finalName>${project.name}</finalName>
</configuration>
</plugin>
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.18.12.0</version>
<executions>
<execution>
<id>delombok</id>
<phase>deploy</phase>
<goals>
<goal>delombok</goal>
</goals>
<configuration>
<addOutputDirectory>false</addOutputDirectory>
<outputDirectory>${project.basedir}/target/delombok</outputDirectory>
<sourceDirectory>${project.basedir}/src</sourceDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<shadedArtifactAttached>false</shadedArtifactAttached>
<relocations>
<!-- Lets relocate the shaded API so we dont cause any conflicts with
other plugins -->
<relocation>
<pattern>com.Ben12345rocks.AdvancedCore</pattern>
<shadedPattern>${project.groupId}.${project.artifactId}.AdvancedCore</shadedPattern>
</relocation>
<!-- Lets relocate the shaded API so we dont cause any conflicts with
other plugins -->
<relocation>
<pattern>net.pl3x.bukkit.chatapi</pattern>
<shadedPattern>${project.groupId}.${project.artifactId}</shadedPattern>
</relocation>
<relocation>
<pattern>me.mrten.mysqlapi</pattern>
<shadedPattern>${project.groupId}.${project.artifactId}.mysqlapi</shadedPattern>
</relocation>
<relocation>
<pattern>com.zaxxer.HikariCP</pattern>
<shadedPattern>${project.groupId}.${project.artifactId}.HikariCP</shadedPattern>
</relocation>
<relocation>
<pattern>com.zaxxer.hikari</pattern>
<shadedPattern>${project.groupId}.${project.artifactId}.hikari</shadedPattern>
</relocation>
<relocation>
<pattern>org.slf4j.slf4j-simple</pattern>
<shadedPattern>${project.groupId}.${project.artifactId}.slf4j-simple</shadedPattern>
</relocation>
</relocations>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<!-- Lets exclude google code, because the server already has this
code in it (guava, etc) -->
<excludes>
<exclude>com.google.*:*</exclude>
</excludes>
</artifactSet>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.4</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<phase>deploy</phase>
<configuration>
<sourcepath>${project.basedir}/target/delombok</sourcepath>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.github.github</groupId>
<artifactId>site-maven-plugin</artifactId>
<version>0.12</version>
<executions>
<execution>
<id>javadoc</id>
<goals>
<goal>site</goal>
</goals>
<phase>deploy</phase>
<configuration>
<message>Maven javadoc for ${project.version}</message>
<noJekyll>true</noJekyll>
<outputDirectory>${project.build.directory}/apidocs
</outputDirectory>
<branch>refs/heads/gh-pages</branch>
<includes>
<include>**/*</include>
</includes>
<repositoryName>VotingPlugin</repositoryName>
<repositoryOwner>Ben12345rocks</repositoryOwner>
<server>github</server>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>install</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${user.home}/Documents/Test Server/plugins</outputDirectory>
<resources>
<resource>
<directory>${basedir}/target</directory>
<includes>
<include>${project.artifactId}.jar</include>
</includes>
</resource>
</resources>
<overwrite>true</overwrite>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<repository>
<id>maven-central</id>
<url>https://oss.sonatype.org/content/groups/public</url>
</repository>
<repository>
<id>bungeecord-repo</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
<repository>
<id>bintray-repo</id>
<url>https://dl.bintray.com/nuvotifier/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.Ben12345rocks</groupId>
<artifactId>AdvancedCore</artifactId>
<version>master-SNAPSHOT</version>
</dependency>
<!--<dependency> <groupId>com.Ben12345rocks</groupId> <artifactId>AdvancedCore</artifactId>
<version>LATEST</version> <scope>compile</scope> </dependency> -->
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.16.1-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.vexsoftware</groupId>
<artifactId>votifier</artifactId>
<version>1.9</version>
<scope>system</scope>
<systemPath>${project.basedir}/Jars/Votifier.jar</systemPath>
</dependency>
<dependency>
<groupId>com.swifteh</groupId>
<artifactId>GAL</artifactId>
<version>1.3.2</version>
<scope>system</scope>
<systemPath>${project.basedir}/Jars/GAListener.jar</systemPath>
</dependency>
<dependency>
<groupId>com.mythicacraft</groupId>
<artifactId>voteroulette</artifactId>
<version>3.2.2</version>
<scope>system</scope>
<systemPath>${project.basedir}/Jars/VoteRoulette.jar</systemPath>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.mimimum.minecraft</groupId>
<artifactId>SuperbVote</artifactId>
<version>0.5.3</version>
<scope>system</scope>
<systemPath>${project.basedir}/Jars/SuperbVote-0.5.3.jar</systemPath>
</dependency>
<dependency>
<groupId>be.maximvdw</groupId>
<artifactId>MVdWPlaceholderAPI</artifactId>
<version>LATEST</version>
<scope>system</scope>
<systemPath>${project.basedir}/Jars/MVdWPlaceholderAPI.jar</systemPath>
</dependency>
<dependency>
<groupId>net.md-5</groupId>
<artifactId>bungeecord-api</artifactId>
<version>LATEST</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.vexsoftware</groupId>
<artifactId>nuvotifier-universal</artifactId>
<version>2.3.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.tchristofferson</groupId>
<artifactId>ConfigUpdater</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
@@ -1,133 +0,0 @@
package com.Ben12345rocks.VotingPlugin;
import java.io.File;
import java.util.UUID;
import com.Ben12345rocks.AdvancedCore.Util.Encryption.EncryptionHandler;
import com.Ben12345rocks.AdvancedCore.Util.Sockets.ClientHandler;
import com.Ben12345rocks.AdvancedCore.Util.Sockets.SocketHandler;
import com.Ben12345rocks.AdvancedCore.Util.Sockets.SocketReceiver;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import com.Ben12345rocks.VotingPlugin.Objects.VoteSite;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
import lombok.Getter;
public class BungeeHandler {
private static BungeeHandler instance = new BungeeHandler();
public static BungeeHandler getInstance() {
return instance;
}
@Getter
private SocketHandler socketHandler;
@Getter
private ClientHandler clientHandler;
private EncryptionHandler encryptionHandler;
public void close() {
socketHandler.closeConnection();
clientHandler.stopConnection();
}
public void load() {
Main.plugin.debug("Loading bungee handles");
encryptionHandler = new EncryptionHandler(new File(Main.plugin.getDataFolder(), "secretkey.key"));
clientHandler = new ClientHandler(Config.getInstance().getBungeeServerHost(),
Config.getInstance().getBungeeServerPort(), encryptionHandler, Config.getInstance().isBungeeDebug());
socketHandler = new SocketHandler(Main.plugin.getVersion(), Config.getInstance().getSpigotServerHost(),
Config.getInstance().getSpigotServerPort(), encryptionHandler, Config.getInstance().isBungeeDebug());
socketHandler.add(new SocketReceiver() {
@Override
public void onReceive(String[] data) {
if (data.length > 3) {
if (data[0].equalsIgnoreCase("bungeevote")) {
String uuid = data[1];
User user = null;
if (!uuid.isEmpty()) {
user = UserManager.getInstance().getVotingPluginUser(UUID.fromString(uuid));
} else {
user = UserManager.getInstance().getVotingPluginUser(data[2]);
}
user.clearCache();
user.bungeeVote(data[3]);
}
}
}
});
socketHandler.add(new SocketReceiver() {
@Override
public void onReceive(String[] data) {
if (data.length > 3) {
if (data[0].equalsIgnoreCase("bungeevoteonline")) {
String uuid = data[1];
User user = null;
if (!uuid.isEmpty()) {
user = UserManager.getInstance().getVotingPluginUser(UUID.fromString(uuid));
} else {
user = UserManager.getInstance().getVotingPluginUser(data[2]);
}
user.clearCache();
user.bungeeVoteOnline(data[3]);
}
}
}
});
socketHandler.add(new SocketReceiver() {
@Override
public void onReceive(String[] data) {
if (data.length > 2) {
if (data[0].equalsIgnoreCase("BungeeBroadcast")) {
VoteSite site = Main.plugin.getVoteSite(data[1]);
String p = data[3];
User user = UserManager.getInstance().getVotingPluginUser(p);
if (site != null) {
site.broadcastVote(user, false);
} else {
Main.plugin.getLogger().warning("No votesite for " + data[1]);
}
Main.plugin.setUpdate(true);
}
}
}
});
socketHandler.add(new SocketReceiver() {
@Override
public void onReceive(String[] data) {
if (data.length > 0) {
if (data[0].equalsIgnoreCase("Status")) {
Main.plugin.getLogger().info("Received status command, sending status back");
sendData("StatusOkay", Main.plugin.getOptions().getServer());
}
}
}
});
}
public void sendData(String... strings) {
clientHandler.sendMessage(strings);
}
}
File diff suppressed because it is too large. Load diff
@@ -1,961 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Commands;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.permissions.Permission;
import com.Ben12345rocks.AdvancedCore.CommandAPI.CommandHandler;
import com.Ben12345rocks.AdvancedCore.TimeChecker.TimeChecker;
import com.Ben12345rocks.AdvancedCore.UserManager.UUID;
import com.Ben12345rocks.AdvancedCore.Util.Messages.MessageBuilder;
import com.Ben12345rocks.AdvancedCore.Util.Messages.StringParser;
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
import com.Ben12345rocks.AdvancedCore.Util.Misc.MiscUtils;
import com.Ben12345rocks.AdvancedCore.Util.Scoreboards.SimpleScoreboard;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Config.ConfigVoteSites;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import com.Ben12345rocks.VotingPlugin.Objects.VoteSite;
import com.Ben12345rocks.VotingPlugin.TopVoter.TopVoter;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
import net.md_5.bungee.api.chat.TextComponent;
// TODO: Auto-generated Javadoc
/**
* The Class Commands.
*/
public class Commands {
/** The config. */
static Config config = Config.getInstance();
/** The config vote sites. */
static ConfigVoteSites configVoteSites = ConfigVoteSites.getInstance();
/** The instance. */
static Commands instance = new Commands();
/** The plugin. */
static Main plugin = Main.plugin;
/**
* Gets the single instance of Commands.
*
* @return single instance of Commands
*/
public static Commands getInstance() {
return instance;
}
/**
* Instantiates a new commands.
*/
private Commands() {
}
/**
* Instantiates a new commands.
*
* @param plugin
* the plugin
*/
public Commands(Main plugin) {
Commands.plugin = plugin;
}
/**
* Admin help.
*
* @param sender
* the sender
* @param page
* the page
* @return the array list
*/
public ArrayList<TextComponent> adminHelp(CommandSender sender, int page) {
int pagesize = Config.getInstance().getFormatPageSize();
ArrayList<TextComponent> msg = new ArrayList<TextComponent>();
ArrayList<TextComponent> text = adminHelpText(sender);
int maxPage = text.size() / pagesize;
if ((text.size() % pagesize) != 0) {
maxPage++;
}
msg.add(StringParser.getInstance().stringToComp("&3&lVotingPlugin Admin Help " + (page + 1) + "/" + maxPage));
msg.add(StringParser.getInstance().stringToComp("&3&l() = Needed"));
msg.add(StringParser.getInstance().stringToComp("&3&lAliases: adminvote, av"));
for (int i = pagesize * page; (i < text.size()) && (i < ((page + 1) * pagesize)); i++) {
msg.add(text.get(i));
}
return msg;
}
/**
* Admin help text.
*
* @param sender
* the sender
* @return the array list
*/
public ArrayList<TextComponent> adminHelpText(CommandSender sender) {
ArrayList<TextComponent> msg = new ArrayList<TextComponent>();
HashMap<String, TextComponent> unsorted = new HashMap<String, TextComponent>();
boolean requirePerms = Config.getInstance().getFormatCommandsVoteHelpRequirePermission();
for (CommandHandler cmdHandle : plugin.getAdminVoteCommand()) {
if (sender.hasPermission(cmdHandle.getPerm()) && requirePerms) {
unsorted.put(cmdHandle.getHelpLineCommand("/adminvote"), cmdHandle.getHelpLine("/adminvote"));
} else {
unsorted.put(cmdHandle.getHelpLineCommand("/adminvote"), cmdHandle.getHelpLine("/adminvote"));
}
}
ArrayList<String> unsortedList = new ArrayList<String>();
unsortedList.addAll(unsorted.keySet());
Collections.sort(unsortedList, String.CASE_INSENSITIVE_ORDER);
for (String cmd : unsortedList) {
msg.add(unsorted.get(cmd));
}
return msg;
}
public String[] best(CommandSender sender, String name) {
ArrayList<String> msg = new ArrayList<String>();
msg.add(config.getFormatCommandsVoteBestTitle());
msg.addAll(config.getFormatCommandsVoteBestLines());
User user = UserManager.getInstance().getVotingPluginUser(name);
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("HighestDailyTotal", "" + user.getHighestDailyTotal());
placeholders.put("HighestWeeklyTotal", "" + user.getHighestWeeklyTotal());
placeholders.put("HighestMonthlyTotal", "" + user.getHighestMonthlyTotal());
placeholders.put("player", name);
msg = ArrayUtils.getInstance().replacePlaceHolder(msg, placeholders);
return ArrayUtils.getInstance().convert(ArrayUtils.getInstance().colorize(msg));
}
/**
* Command vote today.
*
* @param page
* the page
* @return the string[]
*/
public String[] commandVoteToday(int page) {
int pagesize = Config.getInstance().getFormatPageSize();
if (page < 1) {
page = 1;
}
ArrayList<String> msg = new ArrayList<String>();
String[] voteToday = voteToday();
int maxPage = voteToday.length / pagesize;
if ((voteToday.length % pagesize) != 0) {
maxPage++;
}
msg.add("&cToday's Votes " + page + "/" + maxPage);
msg.add("&cPlayerName : VoteSite : Time");
page--;
for (int i = pagesize * page; (i < voteToday.length) && (i < ((page + 1) * pagesize)); i++) {
msg.add(voteToday[i]);
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
}
public String[] listPerms(CommandSender sender) {
ArrayList<String> msg = new ArrayList<String>();
msg.add("&c&lCommand : Permissions (seperated by |)");
for (CommandHandler handle : plugin.getVoteCommand()) {
if (sender instanceof Player) {
if (handle.hasPerm(sender)) {
msg.add("&a" + handle.getHelpLineCommand("/vote") + " : " + handle.getPerm() + " : true");
} else {
msg.add("&c" + handle.getHelpLineCommand("/vote") + " : " + handle.getPerm() + " : false");
}
} else {
msg.add(handle.getHelpLineCommand("/vote") + " : " + handle.getPerm());
}
}
for (CommandHandler handle : plugin.getAdminVoteCommand()) {
if (sender instanceof Player) {
if (handle.hasPerm(sender)) {
msg.add("&a" + handle.getHelpLineCommand("/av") + " : " + handle.getPerm() + " : true");
} else {
msg.add("&c" + handle.getHelpLineCommand("/av") + " : " + handle.getPerm() + " : false");
}
} else {
msg.add(handle.getHelpLineCommand("/av") + " : " + handle.getPerm());
}
}
for (Permission perm : plugin.getDescription().getPermissions()) {
if (sender instanceof Player) {
if (sender.hasPermission(perm)) {
msg.add("&a" + perm.getName() + " : true");
} else {
msg.add("&c" + perm.getName() + " : false");
}
} else {
msg.add(perm.getName());
}
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
}
public void listPerms(CommandSender sender, String player, int page) {
Player p = Bukkit.getPlayer(player);
if (p != null) {
ArrayList<String> msg = new ArrayList<String>();
ArrayList<String> text = new ArrayList<String>();
for (CommandHandler handle : plugin.getVoteCommand()) {
if (handle.hasPerm(p)) {
msg.add("&a" + handle.getHelpLineCommand("/vote") + " : " + handle.getPerm() + " : true");
} else {
msg.add("&c" + handle.getHelpLineCommand("/vote") + " : " + handle.getPerm() + " : false");
}
}
for (CommandHandler handle : plugin.getAdminVoteCommand()) {
if (handle.hasPerm(p)) {
msg.add("&a" + handle.getHelpLineCommand("/av") + " : " + handle.getPerm() + " : true");
} else {
msg.add("&c" + handle.getHelpLineCommand("/av") + " : " + handle.getPerm() + " : false");
}
}
for (Permission perm : plugin.getDescription().getPermissions()) {
if (p.hasPermission(perm)) {
msg.add("&a" + perm.getName() + " : true");
} else {
msg.add("&c" + perm.getName() + " : false");
}
}
msg = ArrayUtils.getInstance().colorize(msg);
int pagesize = Config.getInstance().getFormatPageSize();
int maxPage = msg.size() / pagesize;
if ((msg.size() % pagesize) != 0) {
maxPage++;
}
text.add("&c&lCommand : Permissions (seperated by |) " + page + "/" + maxPage);
for (int i = pagesize * page - pagesize; i < msg.size() && i < pagesize * page; i++) {
text.add(msg.get(i));
}
sender.sendMessage(ArrayUtils.getInstance().convert(ArrayUtils.getInstance().colorize(text)));
} else {
sender.sendMessage(StringParser.getInstance().colorize("&cPlayer not online: " + player));
}
}
/**
* Player info.
*
* @param user
* the user
* @return the string[]
*/
public String[] playerInfo(User user) {
ArrayList<String> msg = new ArrayList<String>();
// title
msg.add("&cPlayer '" + user.getPlayerName() + "' Info");
// last vote
msg.addAll(ArrayUtils.getInstance().convert(voteCommandLast(user)));
// next vote
msg.addAll(ArrayUtils.getInstance().convert(voteCommandNext(user)));
// total
msg.addAll(ArrayUtils.getInstance().convert(voteCommandTotal(user)));
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
}
/**
* Send top voter monthly score board.
*
* @param player
* the player
* @param page
* the page
*/
public void sendTopVoterAllTimeScoreBoard(final Player player, int page) {
if (Main.plugin.getOptions().isSendScoreboards()) {
int pagesize = Config.getInstance().getFormatPageSize();
ArrayList<User> users = plugin.convertSet(plugin.getTopVoter(TopVoter.AllTime).keySet());
int pageSize = (users.size() / pagesize);
if ((users.size() % pagesize) != 0) {
pageSize++;
}
String title = StringParser.getInstance().colorize(config.getFormatCommandVoteTopTitle()
.replace("%page%", "" + page).replace("%maxpages%", "" + pageSize).replace("%Top%", "All"));
SimpleScoreboard scoreboard = new SimpleScoreboard(title);
for (int i = (page - 1) * pagesize; (i < users.size()) && (i < (((page - 1) * pagesize) + 10)); i++) {
scoreboard.add("" + (i + 1) + ": " + users.get(i).getPlayerName(),
plugin.getTopVoter(TopVoter.AllTime).get(users.get(i)));
}
scoreboard.build();
scoreboard.send(player);
Bukkit.getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
player.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
}
}, 90);
}
}
/**
* Send top voter daily score board.
*
* @param player
* the player
* @param page
* the page
*/
public void sendTopVoterDailyScoreBoard(final Player player, int page) {
if (Main.plugin.getOptions().isSendScoreboards()) {
int pagesize = Config.getInstance().getFormatPageSize();
ArrayList<User> users = plugin.convertSet(plugin.getTopVoter(TopVoter.Daily).keySet());
int pageSize = (users.size() / pagesize);
if ((users.size() % pagesize) != 0) {
pageSize++;
}
String title = StringParser.getInstance().colorize(config.getFormatCommandVoteTopTitle()
.replace("%page%", "" + page).replace("%maxpages%", "" + pageSize).replace("%Top%", "Daily"));
SimpleScoreboard scoreboard = new SimpleScoreboard(title);
for (int i = (page - 1) * pagesize; (i < users.size()) && (i < (((page - 1) * pagesize) + 10)); i++) {
scoreboard.add("" + (i + 1) + ": " + users.get(i).getPlayerName(),
plugin.getTopVoter(TopVoter.Daily).get(users.get(i)));
}
scoreboard.build();
scoreboard.send(player);
Bukkit.getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
player.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
}
}, 90);
}
}
/**
* Send top voter monthly score board.
*
* @param player
* the player
* @param page
* the page
*/
public void sendTopVoterMonthlyScoreBoard(final Player player, int page) {
if (Main.plugin.getOptions().isSendScoreboards()) {
int pagesize = Config.getInstance().getFormatPageSize();
ArrayList<User> users = plugin.convertSet(plugin.getTopVoter(TopVoter.Monthly).keySet());
int pageSize = (users.size() / pagesize);
if ((users.size() % pagesize) != 0) {
pageSize++;
}
String title = StringParser.getInstance().colorize(config.getFormatCommandVoteTopTitle()
.replace("%page%", "" + page).replace("%maxpages%", "" + pageSize).replace("%Top%", "Monthly"));
SimpleScoreboard scoreboard = new SimpleScoreboard(title);
for (int i = (page - 1) * pagesize; (i < users.size()) && (i < (((page - 1) * pagesize) + 10)); i++) {
scoreboard.add("" + (i + 1) + ": " + users.get(i).getPlayerName(),
plugin.getTopVoter(TopVoter.Monthly).get(users.get(i)));
}
scoreboard.build();
scoreboard.send(player);
Bukkit.getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
player.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
}
}, 90);
}
}
/**
* Send top voter weekly score board.
*
* @param player
* the player
* @param page
* the page
*/
public void sendTopVoterWeeklyScoreBoard(final Player player, int page) {
if (Main.plugin.getOptions().isSendScoreboards()) {
int pagesize = Config.getInstance().getFormatPageSize();
ArrayList<User> users = plugin.convertSet(plugin.getTopVoter(TopVoter.Weekly).keySet());
int pageSize = (users.size() / pagesize);
if ((users.size() % pagesize) != 0) {
pageSize++;
}
String title = StringParser.getInstance().colorize(config.getFormatCommandVoteTopTitle()
.replace("%page%", "" + page).replace("%maxpages%", "" + pageSize).replace("%Top%", "Weekly"));
SimpleScoreboard scoreboard = new SimpleScoreboard(title);
for (int i = (page - 1) * pagesize; (i < users.size()) && (i < (((page - 1) * pagesize) + 10)); i++) {
scoreboard.add("" + (i + 1) + ": " + users.get(i).getPlayerName(),
plugin.getTopVoter(TopVoter.Weekly).get(users.get(i)));
}
scoreboard.build();
scoreboard.send(player);
Bukkit.getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
player.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
}
}, 90);
}
}
/**
* Send vote today score board.
*
* @param player
* the player
* @param page
* the page
*/
public void sendVoteTodayScoreBoard(final Player player, int page) {
if (Main.plugin.getOptions().isSendScoreboards()) {
int pagesize = Config.getInstance().getFormatPageSize();
String[] voteToday = voteToday();
int maxPage = voteToday.length / pagesize;
if ((voteToday.length % pagesize) != 0) {
maxPage++;
}
SimpleScoreboard scoreboard = new SimpleScoreboard("&cToday's Votes " + page + "/" + maxPage);
for (int i = pagesize * page; (i < voteToday.length) && (i < ((page + 1) * pagesize)); i++) {
scoreboard.add(voteToday[i], i);
}
scoreboard.build();
scoreboard.send(player);
Bukkit.getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
player.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
}
}, 90);
}
}
public String[] streak(CommandSender sender, String name) {
ArrayList<String> msg = new ArrayList<String>();
msg.add(config.getFormatCommandsVoteStreakTitle());
msg.addAll(config.getFormatCommandsVoteStreakLines());
User user = UserManager.getInstance().getVotingPluginUser(name);
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("DailyStreak", "" + user.getDayVoteStreak());
placeholders.put("WeeklyStreak", "" + user.getWeekVoteStreak());
placeholders.put("MonthlyStreak", "" + user.getMonthVoteStreak());
placeholders.put("BestDailyStreak", "" + user.getBestDayVoteStreak());
placeholders.put("BestWeeklyStreak", "" + user.getBestWeekVoteStreak());
placeholders.put("BestMonthlyStreak", "" + user.getBestMonthVoteStreak());
placeholders.put("player", name);
msg = ArrayUtils.getInstance().replacePlaceHolder(msg, placeholders);
return ArrayUtils.getInstance().convert(ArrayUtils.getInstance().colorize(msg));
}
public void updateVoteToday(ArrayList<User> users) {
plugin.getVoteToday().clear();
for (User user : users) {
HashMap<VoteSite, LocalDateTime> times = new HashMap<VoteSite, LocalDateTime>();
for (VoteSite voteSite : plugin.getVoteSites()) {
long time = user.getTime(voteSite);
if ((LocalDateTime.now().getDayOfMonth() == MiscUtils.getInstance().getDayFromMili(time))
&& (LocalDateTime.now().getMonthValue() == MiscUtils.getInstance().getMonthFromMili(time))
&& (LocalDateTime.now().getYear() == MiscUtils.getInstance().getYearFromMili(time))) {
times.put(voteSite, LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault()));
}
}
if (times.keySet().size() > 0) {
plugin.getVoteToday().put(user, times);
}
}
plugin.debug("Updated VoteToday");
}
/**
* Vote command last.
*
* @param user
* the user
* @return the string[]
*/
public String[] voteCommandLast(User user) {
ArrayList<String> msg = new ArrayList<String>();
String playerName = user.getPlayerName();
msg.add(StringParser.getInstance().replaceIgnoreCase(config.getFormatCommandsVoteLastTitle(), "%player%",
playerName));
for (VoteSite voteSite : plugin.getVoteSites()) {
msg.add(voteCommandLastLine(user, voteSite));
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
}
/**
* Vote command last date.
*
* @param user
* the user
* @param voteSite
* the vote site
* @return the string
*/
@Deprecated
public String voteCommandLastDate(User user, VoteSite voteSite) {
long time = user.getTime(voteSite);
if (time > 0) {
Date date = new Date(time);
String timeString = new SimpleDateFormat(config.getFormatTimeFormat()).format(date);
if (StringParser.getInstance().containsIgnorecase(timeString, "YamlConfiguration")) {
plugin.getLogger().warning("Detected issue parsing time, check time format");
}
return timeString;
}
return "";
}
public String voteCommandLastDuration(User user, VoteSite voteSite) {
long time = user.getTime(voteSite);
if (time > 0) {
LocalDateTime now = LocalDateTime.now();
LocalDateTime lastVote = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault());
Duration dur = Duration.between(lastVote, now);
long diffSecond = dur.getSeconds();
int diffDays = (int) (diffSecond / 60 / 60 / 24);
int diffHours = (int) (diffSecond / 60 / 60 - diffDays * 24);
int diffMinutes = (int) (diffSecond / 60 - diffHours * 60 - diffDays * 24 * 60);
int diffSeconds = (int) (diffSecond - diffMinutes * 60 - diffHours * 60 * 60 - diffDays * 24 * 60 * 60);
String info = "";
if (diffDays == 1) {
info += StringParser.getInstance()
.replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
Config.getInstance().getFormatCommandsVoteLastTimeFormat(), "TimeType",
Config.getInstance().getFormatTimeFormatsDay()), "amount", "" + diffDays);
info += " ";
} else if (diffDays > 1) {
info += StringParser.getInstance()
.replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
Config.getInstance().getFormatCommandsVoteLastTimeFormat(), "TimeType",
Config.getInstance().getFormatTimeFormatsDays()), "amount", "" + diffDays);
info += " ";
}
if (diffHours == 1) {
info += StringParser.getInstance()
.replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
Config.getInstance().getFormatCommandsVoteLastTimeFormat(), "TimeType",
Config.getInstance().getFormatTimeFormatsHour()), "amount", "" + diffHours);
info += " ";
} else if (diffHours > 1) {
info += StringParser.getInstance()
.replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
Config.getInstance().getFormatCommandsVoteLastTimeFormat(), "TimeType",
Config.getInstance().getFormatTimeFormatsHours()), "amount", "" + diffHours);
info += " ";
}
if (diffMinutes == 1) {
info += StringParser.getInstance()
.replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
Config.getInstance().getFormatCommandsVoteLastTimeFormat(), "TimeType",
Config.getInstance().getFormatTimeFormatsMinute()), "amount", "" + diffMinutes);
info += " ";
} else if (diffMinutes > 1) {
info += StringParser.getInstance().replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
Config.getInstance().getFormatCommandsVoteLastTimeFormat(), "TimeType",
Config.getInstance().getFormatTimeFormatsMinutes()), "amount", "" + diffMinutes);
info += " ";
}
if (diffSeconds == 1) {
info += StringParser.getInstance()
.replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
Config.getInstance().getFormatCommandsVoteLastTimeFormat(), "TimeType",
Config.getInstance().getFormatTimeFormatsSecond()), "amount", "" + diffSeconds);
} else {
info += StringParser.getInstance().replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
Config.getInstance().getFormatCommandsVoteLastTimeFormat(), "TimeType",
Config.getInstance().getFormatTimeFormatsSeconds()), "amount", "" + diffSeconds);
}
info = StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getFormatCommandsVoteLastLastVoted(), "times", info);
return info;
}
return Config.getInstance().getFormatCommandsVoteLastNeverVoted();
}
public String voteCommandLastLine(User user, VoteSite voteSite) {
String timeString = voteCommandLastDate(user, voteSite);
String timeSince = voteCommandLastDuration(user, voteSite);
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("time", timeString);
placeholders.put("SiteName", voteSite.getDisplayName());
placeholders.put("timesince", timeSince);
return StringParser.getInstance().replacePlaceHolder(Config.getInstance().getFormatCommandsVoteLastLine(),
placeholders);
}
/**
* Vote command next.
*
* @param user
* the user
* @return the string[]
*/
public String[] voteCommandNext(User user) {
ArrayList<String> msg = new ArrayList<String>();
String playerName = user.getPlayerName();
msg.add(StringParser.getInstance().colorize(StringParser.getInstance()
.replaceIgnoreCase(config.getFormatCommandsVoteNextTitle(), "%player%", playerName)));
for (VoteSite voteSite : plugin.getVoteSites()) {
String msgLine = config.getFormatCommandsVoteNextLayout();
msgLine = StringParser.getInstance().replaceIgnoreCase(msgLine, "%info%",
voteCommandNextInfo(user, voteSite));
msgLine = StringParser.getInstance().replaceIgnoreCase(msgLine, "%SiteName%", voteSite.getDisplayName());
msg.add(StringParser.getInstance().colorize(msgLine));
}
return ArrayUtils.getInstance().convert(msg);
}
/**
* Vote command next info.
*
* @param user
* the user
* @param voteSite
* the vote site
* @return the string
*/
public String voteCommandNextInfo(User user, VoteSite voteSite) {
String info = new String();
long time = user.getTime(voteSite);
LocalDateTime now = TimeChecker.getInstance().getTime();
;
LocalDateTime lastVote = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault())
.plusHours(Main.plugin.getOptions().getTimeHourOffSet());
if (!voteSite.isVoteDelayDaily()) {
double votedelay = voteSite.getVoteDelay();
if (votedelay == 0 && voteSite.getVoteDelayMin() == 0) {
String errorMsg = config.getFormatCommandsVoteNextInfoError();
info = errorMsg;
} else {
LocalDateTime nextvote = lastVote.plusHours((long) votedelay)
.plusMinutes((long) voteSite.getVoteDelayMin());
if (time == 0 || now.isAfter(nextvote)) {
info = config.getFormatCommandsVoteNextInfoCanVote();
} else {
Duration dur = Duration.between(now, nextvote);
long diffHours = dur.getSeconds() / (60 * 60);
long diffMinutes = dur.getSeconds() / 60 - diffHours * 60;
String timeMsg = config.getFormatCommandsVoteNextInfoTime();
timeMsg = StringParser.getInstance().replaceIgnoreCase(timeMsg, "%hours%",
Long.toString(diffHours));
timeMsg = StringParser.getInstance().replaceIgnoreCase(timeMsg, "%minutes%",
Long.toString(diffMinutes));
info = timeMsg;
}
}
} else {
if (lastVote.getDayOfYear() == now.getDayOfYear() && lastVote.getYear() == now.getYear()) {
LocalDateTime midnight = TimeChecker.getInstance().getTime().plusDays(1).withHour(0).withMinute(0)
.plusHours((long) voteSite.getTimeOffSet());
Duration dur = Duration.between(now, midnight);
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 = config.getFormatCommandsVoteNextInfoVoteDelayDaily();
timeMsg = StringParser.getInstance().replaceIgnoreCase(timeMsg, "%hours%", Integer.toString(diffHours));
timeMsg = StringParser.getInstance().replaceIgnoreCase(timeMsg, "%minutes%",
Long.toString(diffMinutes));
info = timeMsg;
} else {
info = config.getFormatCommandsVoteNextInfoCanVote();
}
}
return info;
}
/**
* Vote command total.
*
* @param user
* the user
* @return the string[]
*/
public String[] voteCommandTotal(User user) {
ArrayList<String> msg = new ArrayList<String>();
int daily = user.getTotal(TopVoter.Daily);
int weekly = user.getTotal(TopVoter.Weekly);
int month = user.getTotal(TopVoter.Monthly);
int all = user.getTotal(TopVoter.AllTime);
for (String s : config.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());
msg.add(str);
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
}
/**
* Vote command total all.
*
* @return the string[]
*/
public String[] voteCommandTotalAll() {
ArrayList<String> msg = new ArrayList<String>();
ArrayList<String> uuids = UserManager.getInstance().getAllUUIDs();
int daily = 0;
int weekly = 0;
int month = 0;
int all = 0;
for (String uuid : uuids) {
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
daily += user.getTotal(TopVoter.Daily);
weekly += user.getTotal(TopVoter.Weekly);
month += user.getTotal(TopVoter.Monthly);
all += user.getTotal(TopVoter.AllTime);
}
for (String s : config.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);
msg.add(str);
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
}
/**
* Vote help text.
*
* @param sender
* the sender
* @return the array list
*/
public ArrayList<TextComponent> voteHelpText(CommandSender sender) {
ArrayList<TextComponent> texts = new ArrayList<TextComponent>();
HashMap<String, TextComponent> unsorted = new HashMap<String, TextComponent>();
texts.add(StringParser.getInstance().stringToComp(config.getFormatCommandsVoteHelpTitle()));
boolean requirePerms = config.getFormatCommandsVoteHelpRequirePermission();
for (CommandHandler cmdHandle : plugin.getVoteCommand()) {
if (cmdHandle.hasPerm(sender)) {
unsorted.put(cmdHandle.getHelpLineCommand("/vote"), cmdHandle.getHelpLine("/vote"));
} else if (!requirePerms) {
unsorted.put(cmdHandle.getHelpLineCommand("/vote"), cmdHandle.getHelpLine("/vote"));
}
}
ArrayList<String> unsortedList = new ArrayList<String>();
unsortedList.addAll(unsorted.keySet());
Collections.sort(unsortedList, String.CASE_INSENSITIVE_ORDER);
for (String cmd : unsortedList) {
texts.add(unsorted.get(cmd));
}
return texts;
}
/**
* Vote today.
*
* @return the string[]
*/
public String[] voteToday() {
ArrayList<String> msg = new ArrayList<String>();
for (User user : plugin.getVoteToday().keySet()) {
for (VoteSite voteSite : plugin.getVoteToday().get(user).keySet()) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(Config.getInstance().getFormatTimeFormat());
String timeString = plugin.getVoteToday().get(user).get(voteSite).format(formatter);
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("player", user.getPlayerName());
placeholders.put("votesite", voteSite.getKey());
placeholders.put("time", timeString);
msg.add(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getFormatCommandsVoteTodayLine(), placeholders));
// msg.add("&6" + user.getPlayerName() + " : " + voteSite.getKey() + " : " +
// timeString);
}
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
}
public String[] voteURLs(User user) {
ArrayList<String> sites = new ArrayList<String>();
List<String> title = config.getFormatCommandsVoteText();
if (title != null) {
sites.addAll(title);
}
if (config.getFormatCommandsVoteAutoInputSites()) {
int counter = 0;
for (VoteSite voteSite : plugin.getVoteSites()) {
counter++;
String voteURL = voteSite.getVoteURL(false);
MessageBuilder message = new MessageBuilder(config.getFormatCommandsVoteURLS());
message.replacePlaceholder("num", Integer.toString(counter)).replacePlaceholder("url", voteURL)
.replacePlaceholder("SiteName", voteSite.getDisplayName());
if (user != null && user.getPlayerName() != null) {
message.replacePlaceholder("player", "" + user.getPlayerName()).replacePlaceholder("Next",
"" + voteCommandNextInfo(user, voteSite));
}
sites.add(message.colorize().getText());
}
}
if (user != null) {
HashMap<String, String> phs = new HashMap<String, String>();
phs.put("DailyTotal", "" + user.getTotal(TopVoter.Daily));
phs.put("WeekTotal", "" + user.getTotal(TopVoter.Weekly));
phs.put("MonthTotal", "" + user.getTotal(TopVoter.Monthly));
phs.put("Total", "" + user.getTotal(TopVoter.AllTime));
sites = ArrayUtils.getInstance().replacePlaceHolder(sites, phs);
}
sites = ArrayUtils.getInstance().colorize(sites);
return ArrayUtils.getInstance().convert(sites);
}
}
@@ -1,76 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Commands.Executers;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import com.Ben12345rocks.AdvancedCore.CommandAPI.CommandHandler;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Config.ConfigVoteSites;
// TODO: Auto-generated Javadoc
/**
* The Class CommandAdminVote.
*/
public class CommandAdminVote implements CommandExecutor {
/** The instance. */
private static CommandAdminVote instance = new CommandAdminVote();
/**
* Gets the single instance of CommandAdminVote.
*
* @return single instance of CommandAdminVote
*/
public static CommandAdminVote getInstance() {
return instance;
}
/** The config. */
Config config = Config.getInstance();
/** The plugin. */
private Main plugin = Main.plugin;
/** The vote sites. */
ConfigVoteSites voteSites = ConfigVoteSites.getInstance();
/**
* Instantiates a new command admin vote.
*/
private CommandAdminVote() {
}
/**
* Instantiates a new command admin vote.
*
* @param plugin
* the plugin
*/
public CommandAdminVote(Main plugin) {
this.plugin = plugin;
}
/*
* (non-Javadoc)
* @see org.bukkit.command.CommandExecutor#onCommand(org.bukkit.command.
* CommandSender , org.bukkit.command.Command, java.lang.String,
* java.lang.String[])
*/
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
for (CommandHandler commandHandler : plugin.getAdminVoteCommand()) {
if (commandHandler.runCommand(sender, args)) {
return true;
}
}
// invalid command
sender.sendMessage(ChatColor.RED + "No valid arguments, see /adminvote help!");
return true;
}
}
@@ -1,99 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Commands.Executers;
import java.util.ArrayList;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import com.Ben12345rocks.AdvancedCore.CommandAPI.CommandHandler;
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
import com.Ben12345rocks.VotingPlugin.Main;
// TODO: Auto-generated Javadoc
/**
* The Class CommandAliases.
*/
public class CommandAliases implements CommandExecutor {
/** The plugin. */
private Main plugin = Main.plugin;
/** The cmd handle. */
private CommandHandler cmdHandle;
private boolean adminCommand;
public CommandAliases(CommandHandler cmdHandle, boolean adminCommand) {
this.cmdHandle = cmdHandle;
this.adminCommand = adminCommand;
}
/*
* (non-Javadoc)
* @see org.bukkit.command.CommandExecutor#onCommand(org.bukkit.command.
* CommandSender , org.bukkit.command.Command, java.lang.String,
* java.lang.String[])
*/
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
ArrayList<String> argsNew = new ArrayList<String>();
argsNew.add(cmdHandle.getArgs()[0]);
for (String arg : args) {
argsNew.add(arg);
}
plugin.debug("Attempting cmd...");
plugin.debug("Inputed args: " + ArrayUtils.getInstance().makeStringList(argsNew));
ArrayList<CommandHandler> handles = new ArrayList<CommandHandler>();
if (adminCommand) {
handles.addAll(plugin.getAdminVoteCommand());
} else {
handles.addAll(plugin.getVoteCommand());
}
for (CommandHandler cmdHandle : handles) {
if (cmdHandle.getArgs().length > args.length) {
for (String arg : cmdHandle.getArgs()[0].split("&")) {
if (cmd.getName().equalsIgnoreCase("vote" + arg)
|| cmd.getName().equalsIgnoreCase("adminvote" + arg)) {
argsNew.set(0, arg);
boolean argsMatch = true;
for (int i = 0; i < argsNew.size(); i++) {
if (i < cmdHandle.getArgs().length) {
if (!cmdHandle.argsMatch(argsNew.get(i), i)) {
argsMatch = false;
}
}
}
if (argsMatch) {
if (cmdHandle.runCommand(sender, ArrayUtils.getInstance().convert(argsNew))) {
plugin.debug("cmd found, ran cmd");
return true;
}
}
}
}
}
}
/*
* for (String arg : cmdHandle.getArgs()[0].split("&")) { argsNew.set(0, arg);
* if (cmdHandle.runCommand(sender, Utils.getInstance().convertArray(argsNew)))
* { plugin.debug( "cmd found, ran cmd"); return true; } }
*/
// invalid command
if (adminCommand) {
sender.sendMessage(ChatColor.RED + "No valid arguments, see /adminvote help!");
} else {
sender.sendMessage(ChatColor.RED + "No valid arguments, see /vote help!");
}
return true;
}
}
@@ -1,68 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Commands.Executers;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import com.Ben12345rocks.AdvancedCore.CommandAPI.CommandHandler;
import com.Ben12345rocks.VotingPlugin.Main;
// TODO: Auto-generated Javadoc
/**
* The Class CommandVote.
*/
public class CommandVote implements CommandExecutor {
/** The instance. */
private static CommandVote instance = new CommandVote();
/** The plugin. */
private static Main plugin;
/**
* Gets the single instance of CommandVote.
*
* @return single instance of CommandVote
*/
public static CommandVote getInstance() {
return instance;
}
/**
* Instantiates a new command vote.
*/
private CommandVote() {
}
/**
* Instantiates a new command vote.
*
* @param plugin
* the plugin
*/
public CommandVote(Main plugin) {
CommandVote.plugin = plugin;
}
/*
* (non-Javadoc)
* @see org.bukkit.command.CommandExecutor#onCommand(org.bukkit.command.
* CommandSender , org.bukkit.command.Command, java.lang.String,
* java.lang.String[])
*/
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
for (CommandHandler commandHandler : plugin.getVoteCommand()) {
if (commandHandler.runCommand(sender, args)) {
return true;
}
}
// invalid command
sender.sendMessage(ChatColor.RED + "No valid arguments, see /vote help!");
return true;
}
}
@@ -1,270 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Commands.GUI;
import java.util.ArrayList;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;
import com.Ben12345rocks.AdvancedCore.Util.EditGUI.EditGUI;
import com.Ben12345rocks.AdvancedCore.Util.EditGUI.EditGUIButton;
import com.Ben12345rocks.AdvancedCore.Util.EditGUI.ValueTypes.EditGUIValueBoolean;
import com.Ben12345rocks.AdvancedCore.Util.EditGUI.ValueTypes.EditGUIValueList;
import com.Ben12345rocks.AdvancedCore.Util.EditGUI.ValueTypes.EditGUIValueNumber;
import com.Ben12345rocks.AdvancedCore.Util.EditGUI.ValueTypes.EditGUIValueString;
import com.Ben12345rocks.AdvancedCore.Util.Inventory.BInventory;
import com.Ben12345rocks.AdvancedCore.Util.Inventory.BInventory.ClickEvent;
import com.Ben12345rocks.AdvancedCore.Util.Inventory.BInventoryButton;
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
import com.Ben12345rocks.AdvancedCore.Util.Misc.PlayerUtils;
import com.Ben12345rocks.AdvancedCore.Util.ValueRequest.InputMethod;
import com.Ben12345rocks.AdvancedCore.Util.ValueRequest.ValueRequest;
import com.Ben12345rocks.AdvancedCore.Util.ValueRequest.ValueRequestBuilder;
import com.Ben12345rocks.AdvancedCore.Util.ValueRequest.Listeners.StringListener;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.ConfigVoteSites;
import com.Ben12345rocks.VotingPlugin.Events.PlayerVoteEvent;
import com.Ben12345rocks.VotingPlugin.Objects.VoteSite;
public class AdminGUI {
static AdminGUI instance = new AdminGUI();
/**
* Gets the single instance of Commands.
*
* @return single instance of Commands
*/
public static AdminGUI getInstance() {
return instance;
}
/** The plugin. */
Main plugin = Main.plugin;
/**
* Instantiates a new commands.
*/
private AdminGUI() {
}
/**
* Open admin GUI.
*
* @return ArrayList of buttons
*/
public ArrayList<BInventoryButton> adminGUIButtons() {
ArrayList<BInventoryButton> buttons = new ArrayList<BInventoryButton>();
buttons.add(new BInventoryButton("&cVoteSites",
new String[] { "&cOnly enabled sites are listed in this section", "&cMiddle Click to create" },
new ItemStack(Material.STONE)) {
@Override
public void onClick(ClickEvent event) {
Player player = event.getPlayer();
if (event.getClick().equals(ClickType.MIDDLE)) {
new ValueRequest().requestString(player, new StringListener() {
@Override
public void onInput(Player player, String value) {
ConfigVoteSites.getInstance().generateVoteSite(value);
player.sendMessage("Generated site");
plugin.reload();
}
});
} else {
openAdminGUIVoteSites(player);
}
}
});
buttons.add(new BInventoryButton("&cReload Plugin", new String[] {}, new ItemStack(Material.STONE, 1)) {
@Override
public void onClick(ClickEvent event) {
plugin.reload();
}
});
return buttons;
}
public void loadHook() {
for (BInventoryButton b : adminGUIButtons()) {
com.Ben12345rocks.AdvancedCore.Commands.GUI.AdminGUI.getInstance().addButton(b);
}
}
/**
* Open admin GUI vote sites.
*
* @param player
* the player
*/
public void openAdminGUIVoteSites(Player player) {
BInventory inv = new BInventory("VoteSites");
int count = 0;
for (VoteSite voteSite : plugin.getVoteSites()) {
ArrayList<String> lore = new ArrayList<String>();
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());
inv.addButton(count, new BInventoryButton(voteSite.getKey(), ArrayUtils.getInstance().convert(lore),
new ItemStack(Material.STONE)) {
@Override
public void onClick(ClickEvent event) {
Player player = event.getWhoClicked();
openAdminGUIVoteSiteSite(player, voteSite);
}
});
count++;
}
inv.openInventory(player);
}
/**
* Open admin GUI vote site site.
*
* @param player
* the player
* @param voteSite
* the vote site
*/
public void openAdminGUIVoteSiteSite(Player player, VoteSite voteSite) {
EditGUI inv = new EditGUI("VoteSite: " + voteSite.getDisplayName());
inv.setMeta(player, "VoteSite", voteSite);
inv.addButton(new BInventoryButton(voteSite.getItem().setName("&cForce vote")) {
@Override
public void onClick(ClickEvent event) {
ArrayList<String> playerNames = new ArrayList<String>();
for (Player p : Bukkit.getOnlinePlayers()) {
playerNames.add(p.getName());
}
new ValueRequestBuilder(new StringListener() {
@Override
public void onInput(Player player, String value) {
Object ob = PlayerUtils.getInstance().getPlayerMeta(player, "VoteSite");
if (ob != null) {
VoteSite site = (VoteSite) ob;
PlayerVoteEvent voteEvent = new PlayerVoteEvent(site, value, site.getServiceSite(), false);
plugin.getServer().getPluginManager().callEvent(voteEvent);
}
}
}, ArrayUtils.getInstance().convert(playerNames)).usingMethod(InputMethod.INVENTORY)
.allowCustomOption(true).request(event.getWhoClicked());
}
});
inv.addButton(new EditGUIButton(new EditGUIValueNumber("Priority", voteSite.getPriority()) {
@Override
public void setValue(Player player, Number num) {
VoteSite voteSite = (VoteSite) getInv().getMeta(player, "VoteSite");
ConfigVoteSites.getInstance().setPriority(voteSite.getKey(), num.intValue());
plugin.reload();
}
}));
inv.addButton(new EditGUIButton(new EditGUIValueString("ServiceSite", voteSite.getServiceSite()) {
@Override
public void setValue(Player player, String value) {
VoteSite voteSite = (VoteSite) getInv().getMeta(player, "VoteSite");
String siteName = voteSite.getKey();
ConfigVoteSites.getInstance().setServiceSite(siteName, value);
plugin.reload();
}
}));
inv.addButton(new EditGUIButton(new EditGUIValueString("Name", voteSite.getDisplayName()) {
@Override
public void setValue(Player player, String value) {
VoteSite voteSite = (VoteSite) getInv().getMeta(player, "VoteSite");
ConfigVoteSites.getInstance().setDisplayName(voteSite.getKey(), value);
plugin.reload();
}
}));
inv.addButton(new EditGUIButton(new EditGUIValueString("VoteURL", voteSite.getVoteURL()) {
@Override
public void setValue(Player player, String value) {
VoteSite voteSite = (VoteSite) getInv().getMeta(player, "VoteSite");
String siteName = voteSite.getKey();
ConfigVoteSites.getInstance().setVoteURL(siteName, value);
plugin.reload();
}
}));
inv.addButton(new EditGUIButton(new EditGUIValueNumber("VoteDelay", voteSite.getVoteDelay()) {
@Override
public void setValue(Player player, Number num) {
VoteSite voteSite = (VoteSite) getInv().getMeta(player, "VoteSite");
String siteName = voteSite.getKey();
ConfigVoteSites.getInstance().setVoteDelay(siteName, num.intValue());
plugin.reload();
}
}));
inv.addButton(new EditGUIButton(new EditGUIValueBoolean("Enabled", voteSite.isEnabled()) {
@Override
public void setValue(Player player, boolean value) {
VoteSite voteSite = (VoteSite) getInv().getMeta(player, "VoteSite");
String siteName = voteSite.getKey();
ConfigVoteSites.getInstance().setEnabled(siteName, value);
plugin.reload();
}
}));
inv.addButton(new EditGUIButton(new EditGUIValueBoolean("ForceOffline", voteSite.isGiveOffline()) {
@Override
public void setValue(Player player, boolean value) {
VoteSite voteSite = (VoteSite) getInv().getMeta(player, "VoteSite");
String siteName = voteSite.getKey();
ConfigVoteSites.getInstance().setForceOffline(siteName, value);
plugin.reload();
}
}));
inv.addButton(new EditGUIButton(new EditGUIValueBoolean("VoteDelayDaily", voteSite.isVoteDelayDaily()) {
@Override
public void setValue(Player player, boolean value) {
VoteSite voteSite = (VoteSite) getInv().getMeta(player, "VoteSite");
String siteName = voteSite.getKey();
ConfigVoteSites.getInstance().setVoteDelayDaily(siteName, value);
plugin.reload();
}
}));
if (voteSite.getSiteData().isList("Rewards")) {
inv.addButton(
new EditGUIButton(new EditGUIValueList("Rewards", voteSite.getSiteData().getStringList("Rewards")) {
@Override
public void setValue(Player p, ArrayList<String> rewards) {
VoteSite voteSite = (VoteSite) getInv().getMeta(player, "VoteSite");
ConfigVoteSites.getInstance().set(voteSite.getKey(), "Rewards", rewards);
plugin.reload();
}
}));
}
inv.openInventory(player);
}
}
@@ -1,867 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Commands.GUI;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardHandler;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardOptions;
import com.Ben12345rocks.AdvancedCore.Util.Inventory.BInventory;
import com.Ben12345rocks.AdvancedCore.Util.Inventory.BInventory.ClickEvent;
import com.Ben12345rocks.AdvancedCore.Util.Inventory.BInventoryButton;
import com.Ben12345rocks.AdvancedCore.Util.Item.ItemBuilder;
import com.Ben12345rocks.AdvancedCore.Util.Messages.StringParser;
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
import com.Ben12345rocks.AdvancedCore.Util.Misc.MiscUtils;
import com.Ben12345rocks.AdvancedCore.Util.Misc.PlayerUtils;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Commands.Commands;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import com.Ben12345rocks.VotingPlugin.Objects.VoteSite;
import com.Ben12345rocks.VotingPlugin.TopVoter.TopVoter;
import com.Ben12345rocks.VotingPlugin.TopVoter.TopVoterHandler;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
public class PlayerGUIs {
static PlayerGUIs instance = new PlayerGUIs();
/**
* Gets the single instance of Commands.
*
* @return single instance of Commands
*/
public static PlayerGUIs getInstance() {
return instance;
}
/** The plugin. */
Main plugin = Main.plugin;
/**
* Instantiates a new commands.
*/
private PlayerGUIs() {
}
public BInventoryButton getBackButton() {
ConfigurationSection sec = Config.getInstance().getBackButton();
ItemBuilder item;
if (sec != null) {
item = new ItemBuilder(sec);
} else {
item = new ItemBuilder(Material.BARRIER, 1).setName("&8Back to VoteGUI");
}
BInventoryButton b = new BInventoryButton(item) {
@Override
public void onClick(ClickEvent event) {
openVoteGUI(event.getWhoClicked(), getSelectedPlayer(event.getWhoClicked()));
}
};
if (!Config.getInstance().isAlwaysCloseInventory()) {
b.dontClose();
}
return b;
}
public User getSelectedPlayer(Player player) {
User str = (User) PlayerUtils.getInstance().getPlayerMeta(player, "SelectedPlayerGUIs");
return str;
}
public void openVoteBest(Player player, User user) {
setSelectedPlayer(player, user);
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteBestName(), "player", user.getPlayerName()));
inv.addButton(new BInventoryButton(new ItemBuilder(Config.getInstance().getGUIVoteBestDayBestItem())
.addPlaceholder("Best", "" + user.getBestDayVoteStreak())) {
@Override
public void onClick(ClickEvent clickEvent) {
}
});
inv.addButton(new BInventoryButton(new ItemBuilder(Config.getInstance().getGUIVoteBestWeekBestItem())
.addPlaceholder("Best", "" + user.getBestWeekVoteStreak())) {
@Override
public void onClick(ClickEvent clickEvent) {
}
});
inv.addButton(new BInventoryButton(new ItemBuilder(Config.getInstance().getGUIVoteBestMonthBestItem())
.addPlaceholder("Best", "" + user.getBestMonthVoteStreak())) {
@Override
public void onClick(ClickEvent clickEvent) {
}
});
inv.openInventory(player);
}
public void openVoteGUI(Player player, User user) {
if (user == null) {
user = UserManager.getInstance().getVotingPluginUser(player);
setSelectedPlayer(player, user);
}
if ((!player.getName().equals(user.getPlayerName())
&& !player.hasPermission("VotingPlugin.Commands.Vote.GUI.Other")
&& !player.hasPermission("VotingPlugin.Mod"))
|| (!player.hasPermission("VotingPlugin.Commands.Vote.GUI")
&& !player.hasPermission("VotingPlugin.Player"))) {
player.sendMessage(StringParser.getInstance().colorize(Main.plugin.getOptions().getFormatNoPerms()));
return;
}
setSelectedPlayer(player, user);
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteGUIName(), "player", user.getPlayerName()));
if (!Config.getInstance().isAlwaysCloseInventory()) {
inv.dontClose();
}
for (String slot : Config.getInstance().getVoteGUISlots()) {
ItemBuilder builder = new ItemBuilder(Config.getInstance().getVoteGUISlotSection(slot));
String[] lore = new String[1];
lore = ArrayUtils.getInstance().convert(Config.getInstance().getVoteGUISlotLore(slot));
if (lore.length == 0) {
if (slot.equalsIgnoreCase("url")) {
lore = new String[] { "&aClick me" };
} else if (slot.equalsIgnoreCase("next")) {
lore = Commands.getInstance().voteCommandNext(user);
} else if (slot.equalsIgnoreCase("last")) {
lore = Commands.getInstance().voteCommandLast(user);
} else if (slot.equalsIgnoreCase("total")) {
lore = Commands.getInstance().voteCommandTotal(user);
} else if (slot.equalsIgnoreCase("top")) {
String str = Config.getInstance().getVoteTopDefault();
if (str.equalsIgnoreCase("monthly")) {
lore = TopVoterHandler.getInstance().topVoterMonthly(1);
} else if (str.equalsIgnoreCase("weekly")) {
lore = TopVoterHandler.getInstance().topVoterWeekly(1);
} else if (str.equalsIgnoreCase("daily")) {
lore = TopVoterHandler.getInstance().topVoterDaily(1);
} else {
lore = TopVoterHandler.getInstance().topVoterAllTime(1);
}
} else if (slot.equalsIgnoreCase("today")) {
lore = Commands.getInstance().voteToday();
} else if (slot.equalsIgnoreCase("help")) {
lore = new String[] { "Click to view help" };
}
}
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("points", "" + user.getPoints());
builder.setPlaceholders(placeholders);
builder.setLore(ArrayUtils.getInstance().convert(lore));
inv.addButton(new BInventoryButton(builder) {
@Override
public void onClick(ClickEvent event) {
Player player = event.getWhoClicked();
String cmd = Config.getInstance().getVoteGUISlotCommand(slot);
User user = getSelectedPlayer(player);
if (cmd.equalsIgnoreCase("none")) {
return;
} else if (!cmd.equals("")) {
event.runSync(new Runnable() {
@Override
public void run() {
player.performCommand(cmd);
}
});
} else {
if (slot.equalsIgnoreCase("url")) {
user.sendMessage(Commands.getInstance().voteURLs(user));
event.closeInventory();
} else if (slot.equalsIgnoreCase("next")) {
openVoteNext(player, user);
} else if (slot.equalsIgnoreCase("last")) {
openVoteLast(player, user);
} else if (slot.equalsIgnoreCase("total")) {
openVoteTotal(player, user);
} else if (slot.equalsIgnoreCase("top")) {
openVoteTop(player, null);
} else if (slot.equalsIgnoreCase("today")) {
openVoteToday(player);
} else if (slot.equalsIgnoreCase("help")) {
player.performCommand("vote help");
} else if (slot.equalsIgnoreCase("shop")) {
openVoteShop(player);
} else if (slot.equalsIgnoreCase("lastmonth")) {
openVoteTopLastMonth(player);
}
}
}
});
}
inv.openInventory(player);
}
public void openVoteLast(Player player, User user) {
setSelectedPlayer(player, user);
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteLastName(), "player", user.getPlayerName()));
for (VoteSite site : plugin.getVoteSites()) {
inv.addButton(inv.getNextSlot(), new BInventoryButton(site.getItem().setName(site.getDisplayName())
.setLore(Commands.getInstance().voteCommandLastLine(user, site)).setAmountNone(1)) {
@Override
public void onClick(ClickEvent clickEvent) {
}
});
}
if (Config.getInstance().getGUIVoteLastBackButton()) {
inv.addButton(getBackButton());
}
inv.openInventory(player);
}
public void openVoteNext(Player player, User user) {
setSelectedPlayer(player, user);
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteNextName(), "player", user.getPlayerName()));
for (VoteSite site : plugin.getVoteSites()) {
inv.addButton(inv.getNextSlot(), new BInventoryButton(site.getItem().setName(site.getDisplayName())
.setLore(Commands.getInstance().voteCommandNextInfo(user, site)).setAmountNone(1)) {
@Override
public void onClick(ClickEvent clickEvent) {
}
});
}
if (Config.getInstance().getGUIVoteNextBackButton()) {
inv.addButton(getBackButton());
}
inv.openInventory(player);
}
public void openVoteShop(Player player) {
if (!Config.getInstance().getVoteShopEnabled()) {
player.sendMessage(StringParser.getInstance().colorize("&cVote shop disabled"));
return;
}
BInventory inv = new BInventory(Config.getInstance().getVoteShopName());
for (final String identifier : Config.getInstance().getIdentifiers()) {
String perm = Config.getInstance().getVoteShopPermission(identifier);
boolean hasPerm = false;
if (perm.isEmpty()) {
hasPerm = true;
} else {
hasPerm = player.hasPermission(perm);
}
int limit = Config.getInstance().getIdentifierLimit(identifier);
boolean limitPass = true;
if (limit > 0) {
User user = UserManager.getInstance().getVotingPluginUser(player);
if (user.getVoteShopIdentifierLimit(identifier) >= limit) {
limitPass = false;
}
}
if (!Config.getInstance().getVoteShopNotBuyable(identifier)) {
if (hasPerm && (limitPass || !Config.getInstance().isVoteShopHideLimitedReached())) {
ItemBuilder builder = new ItemBuilder(Config.getInstance().getIdentifierSection(identifier));
inv.addButton(new BInventoryButton(builder) {
@Override
public void onClick(ClickEvent event) {
Player player = event.getWhoClicked();
event.getButton().getInv().closeInv(player, null);
User user = UserManager.getInstance().getVotingPluginUser(player);
user.clearCache();
String identifier = (String) getData("identifier");
int limit = (int) getData("Limit");
int points = Config.getInstance().getIdentifierCost(identifier);
if (identifier != null) {
// limit fail-safe, should never be needed, except in rare cases
boolean limitPass = true;
if (limit > 0) {
if (user.getVoteShopIdentifierLimit(identifier) >= limit) {
limitPass = false;
}
}
if (limitPass) {
if (!Config.getInstance().isVoteShopRequireConfirmation()) {
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("identifier",
Config.getInstance().getIdentifierIdentifierName(identifier));
placeholders.put("points", "" + points);
placeholders.put("limit", "" + limit);
if (user.removePoints(points)) {
RewardHandler.getInstance().giveReward(user, Config.getInstance().getData(),
Config.getInstance().getIdentifierRewardsPath(identifier),
new RewardOptions().setPlaceholders(placeholders));
user.sendMessage(StringParser.getInstance().replacePlaceHolder(
Config.getInstance().getFormatShopPurchaseMsg(), placeholders));
if (limit > 0) {
user.setVoteShopIdentifierLimit(identifier,
user.getVoteShopIdentifierLimit(identifier) + 1);
}
} else {
user.sendMessage(StringParser.getInstance().replacePlaceHolder(
Config.getInstance().getFormatShopFailedMsg(), placeholders));
}
} else {
openVoteShopConfirmation(player, identifier);
}
} else {
user.sendMessage(Config.getInstance().getVoteShopLimitReached());
}
}
}
}.addData("identifier", identifier).addData("Limit", limit));
}
} else {
if (hasPerm) {
ItemBuilder builder = new ItemBuilder(Config.getInstance().getIdentifierSection(identifier));
inv.addButton(new BInventoryButton(builder) {
@Override
public void onClick(ClickEvent event) {
}
}.dontClose().addData("identifier", identifier).addData("Limit", limit));
}
}
}
if (Config.getInstance().getVoteShopBackButton()) {
inv.addButton(getBackButton());
}
inv.openInventory(player);
}
public void openVoteShopConfirmation(Player player, String identifier) {
PlayerUtils.getInstance().setPlayerMeta(player, "ident", identifier);
BInventory inv = new BInventory("Confirm Purchase?");
inv.addButton(new BInventoryButton(new ItemBuilder(Material.EMERALD_BLOCK).setName("&aYes")) {
@Override
public void onClick(ClickEvent event) {
String ident = (String) PlayerUtils.getInstance().getPlayerMeta(event.getPlayer(), "ident");
User user = UserManager.getInstance().getVotingPluginUser(event.getPlayer());
int points = Config.getInstance().getIdentifierCost(ident);
int limit = Config.getInstance().getIdentifierLimit(identifier);
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("identifier", identifier);
placeholders.put("points", "" + points);
placeholders.put("limit", "" + limit);
if (user.removePoints(points)) {
RewardHandler.getInstance().giveReward(user, Config.getInstance().getData(),
Config.getInstance().getIdentifierRewardsPath(identifier),
new RewardOptions().setPlaceholders(placeholders));
user.sendMessage(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getFormatShopPurchaseMsg(), placeholders));
if (limit > 0) {
user.setVoteShopIdentifierLimit(identifier, user.getVoteShopIdentifierLimit(identifier) + 1);
}
} else {
user.sendMessage(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getFormatShopFailedMsg(), placeholders));
}
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
event.getPlayer().closeInventory();
}
});
}
});
inv.addButton(new BInventoryButton(new ItemBuilder(Material.BARRIER).setName("&cNo")) {
@Override
public void onClick(ClickEvent event) {
event.getPlayer().closeInventory();
}
});
inv.openInventory(player);
}
public void openVoteStreak(Player player, User user) {
setSelectedPlayer(player, user);
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteStreakName(), "player", user.getPlayerName()));
inv.addButton(new BInventoryButton(new ItemBuilder(Config.getInstance().getGUIVoteStreakCurrentDayStreakItem())
.addPlaceholder("Streak", "" + user.getDayVoteStreak())) {
@Override
public void onClick(ClickEvent clickEvent) {
}
});
inv.addButton(new BInventoryButton(new ItemBuilder(Config.getInstance().getGUIVoteStreakCurrentWeekStreakItem())
.addPlaceholder("Streak", "" + user.getWeekVoteStreak())) {
@Override
public void onClick(ClickEvent clickEvent) {
}
});
inv.addButton(
new BInventoryButton(new ItemBuilder(Config.getInstance().getGUIVoteStreakCurrentMonthStreakItem())
.addPlaceholder("Streak", "" + user.getMonthVoteStreak())) {
@Override
public void onClick(ClickEvent clickEvent) {
}
});
inv.addButton(new BInventoryButton(new ItemBuilder(Config.getInstance().getGUIVoteStreakHighestDayStreakItem())
.addPlaceholder("Streak", "" + user.getBestDayVoteStreak())) {
@Override
public void onClick(ClickEvent clickEvent) {
}
});
inv.addButton(new BInventoryButton(new ItemBuilder(Config.getInstance().getGUIVoteStreakHighestWeekStreakItem())
.addPlaceholder("Streak", "" + user.getBestWeekVoteStreak())) {
@Override
public void onClick(ClickEvent clickEvent) {
}
});
inv.addButton(
new BInventoryButton(new ItemBuilder(Config.getInstance().getGUIVoteStreakHighestMonthStreakItem())
.addPlaceholder("Streak", "" + user.getBestMonthVoteStreak())) {
@Override
public void onClick(ClickEvent clickEvent) {
}
});
if (Config.getInstance().getGUIVoteStreakBackButton()) {
inv.addButton(getBackButton());
}
inv.openInventory(player);
}
public void openVoteToday(Player player) {
setSelectedPlayer(player, null);
BInventory inv = new BInventory(Config.getInstance().getGUIVoteTodayName());
if (!Config.getInstance().isAlwaysCloseInventory()) {
inv.dontClose();
}
for (User user : plugin.getVoteToday().keySet()) {
for (VoteSite voteSite : plugin.getVoteToday().get(user).keySet()) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(Config.getInstance().getFormatTimeFormat());
String timeString = plugin.getVoteToday().get(user).get(voteSite).format(formatter);
String msg = Config.getInstance().getGUIVoteTodayLine();
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("VoteSite", voteSite.getDisplayName());
placeholders.put("Time", timeString);
msg = StringParser.getInstance().replacePlaceHolder(msg, placeholders);
inv.addButton(inv.getNextSlot(),
new BInventoryButton(StringParser.getInstance().replacePlaceHolder(
Config.getInstance().getGUIVoteTodayIconTitle(), "player", user.getPlayerName()),
new String[] { msg }, MiscUtils.getInstance().setSkullOwner(user.getOfflinePlayer())) {
@Override
public void onClick(ClickEvent clickEvent) {
User user = UserManager.getInstance().getVotingPluginUser(
clickEvent.getClickedItem().getItemMeta().getDisplayName());
openVoteGUI(player, user);
}
});
}
}
if (Config.getInstance().getGUIVoteTodayBackButton()) {
inv.addButton(getBackButton());
}
inv.openInventory(player);
}
public void openVoteTop(Player player, TopVoter top) {
try {
if (top == null) {
top = TopVoter.getDefault();
}
Set<Entry<User, Integer>> users = null;
String topVoter = top.getName();
@SuppressWarnings("unchecked")
LinkedHashMap<User, Integer> topVotes = (LinkedHashMap<User, Integer>) plugin.getTopVoter(top).clone();
users = topVotes.entrySet();
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteTopName(), "topvoter", topVoter));
if (!Config.getInstance().isAlwaysCloseInventory()) {
inv.dontClose();
}
int pos = 1;
for (Entry<User, Integer> entry : users) {
ItemBuilder playerItem;
if (Config.getInstance().isGuiVoteTopUseSkull()) {
playerItem = new ItemBuilder(entry.getKey().getPlayerHead());
} else {
playerItem = new ItemBuilder(
Material.valueOf(Config.getInstance().getGuiVoteTopPlayerItemMaterial()));
}
playerItem.setLore(new ArrayList<String>());
inv.addButton(new BInventoryButton(playerItem.setName(Config.getInstance().getGUIVoteTopItemName())
.addLoreLine(Config.getInstance().getGUIVoteTopItemLore()).addPlaceholder("position", "" + pos)
.addPlaceholder("player", entry.getKey().getPlayerName())
.addPlaceholder("votes", "" + entry.getValue())) {
@Override
public void onClick(ClickEvent clickEvent) {
User user = (User) getData("User");
openVoteGUI(player, user);
}
}.addData("player", entry.getKey().getPlayerName()).addData("User", entry.getKey()));
pos++;
}
final TopVoter cur = top;
inv.getPageButtons().add(new BInventoryButton(
new ItemBuilder(Config.getInstance().getGUIVoteTopSwitchItem()).addPlaceholder("Top", topVoter)) {
@Override
public void onClick(ClickEvent clickEvent) {
if (!clickEvent.getClick().equals(ClickType.RIGHT)) {
openVoteTop(player, cur.next());
} else {
openVoteTop(player, cur.prev());
}
}
});
if (Config.getInstance().getGUIVoteTopBackButton()) {
inv.getPageButtons().add(getBackButton().setSlot(1));
}
inv.setPages(true);
inv.setMaxInvSize(Config.getInstance().getGUIVoteTopSize());
inv.openInventory(player);
} catch (Exception e) {
e.printStackTrace();
}
}
public void openVoteTopLastMonth(Player player) {
Set<Entry<User, Integer>> users = null;
users = plugin.getLastMonthTopVoter().entrySet();
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteTopName(), "topvoter", "Last Month"));
if (!Config.getInstance().isAlwaysCloseInventory()) {
inv.dontClose();
}
int pos = 1;
for (Entry<User, Integer> entry : users) {
ItemBuilder playerItem;
if (Config.getInstance().isGuiVoteTopUseSkull()) {
playerItem = new ItemBuilder(entry.getKey().getPlayerHead());
} else {
playerItem = new ItemBuilder(Material.valueOf(Config.getInstance().getGuiVoteTopPlayerItemMaterial()));
}
playerItem.setLore(new ArrayList<String>());
inv.addButton(new BInventoryButton(playerItem.setName(Config.getInstance().getGUIVoteTopItemName())
.addLoreLine(Config.getInstance().getGUIVoteTopItemLore()).addPlaceholder("position", "" + pos)
.addPlaceholder("player", entry.getKey().getPlayerName())
.addPlaceholder("votes", "" + entry.getValue())) {
@Override
public void onClick(ClickEvent clickEvent) {
User user = (User) getData("User");
openVoteGUI(player, user);
}
}.addData("player", entry.getKey().getPlayerName()).addData("User", entry.getKey()));
pos++;
}
if (Config.getInstance().getGUIVoteTopBackButton()) {
inv.getPageButtons().add(getBackButton().setSlot(1));
}
inv.setPages(true);
inv.setMaxInvSize(Config.getInstance().getGUIVoteTopSize());
inv.openInventory(player);
}
public void openVoteTotal(Player player, User user) {
setSelectedPlayer(player, user);
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteTotalName(), "player", user.getPlayerName()));
for (TopVoter top : TopVoter.values()) {
inv.addButton(new BInventoryButton(new ItemBuilder(Config.getInstance().getGUIVoteTotalItem(top))
.addPlaceholder("Total", "" + user.getTotal(top)).addPlaceholder("topvoter", top.getName())) {
@Override
public void onClick(ClickEvent clickEvent) {
}
});
}
if (Config.getInstance().getGUIVoteTotalBackButton()) {
inv.addButton(getBackButton());
}
inv.openInventory(player);
}
/**
* Vote URL.
*
* @param player
* the player
*/
public void openVoteURL(Player player) {
setSelectedPlayer(player, null);
BInventory inv = new BInventory(Config.getInstance().getGUIVoteURLName());
User user = UserManager.getInstance().getVotingPluginUser(player);
int count = 0;
if (Config.getInstance().getVoteURLViewAllUrlsButtonEnabled()) {
ItemBuilder builderAll = new ItemBuilder(
Config.getInstance().getVoteURLAlreadyVotedAllUrlsButtonItemSection());
if (Config.getInstance().isGuiVoteURLAllUrlsButtonrequireAllSitesVoted()) {
if (user.canVoteAny()) {
builderAll = new ItemBuilder(Config.getInstance().getVoteURLCanVoteAllUrlsButtonItemSection());
}
} else {
if (user.canVoteAll()) {
builderAll = new ItemBuilder(Config.getInstance().getVoteURLCanVoteAllUrlsButtonItemSection());
}
}
if (!builderAll.hasCustomDisplayName()) {
builderAll.setName("&4All Voting Sites");
}
if (!builderAll.hasCustomLore()) {
builderAll.setLore("&cClick Me");
}
inv.addButton(count, new BInventoryButton(builderAll) {
@Override
public void onClick(ClickEvent event) {
User user = UserManager.getInstance().getVotingPluginUser(event.getPlayer());
user.sendMessage(Commands.getInstance().voteURLs(user));
}
});
count++;
}
for (final VoteSite voteSite : plugin.getVoteSites()) {
ItemBuilder builder = new ItemBuilder(Config.getInstance().getVoteURLAlreadyVotedItemSection());
if (user.canVoteSite(voteSite)) {
builder = new ItemBuilder(Config.getInstance().getVoteURLCanVoteItemSection());
} else {
builder.addLoreLine(Config.getInstance().getVoteURLNextVote().replace("%Info%",
Commands.getInstance().voteCommandNextInfo(user, voteSite)));
}
builder.setName(Config.getInstance().getVoteURLSiteName().replace("%Name%", voteSite.getDisplayName()));
inv.addButton(count, new BInventoryButton(builder) {
@Override
public void onClick(ClickEvent event) {
Player player = event.getPlayer();
if (player != null) {
if (Config.getInstance().isCommandsVoteRewardFromVoteURL()
&& event.getClick().equals(ClickType.RIGHT)) {
voteReward(player, voteSite.getKey());
} else {
User user = UserManager.getInstance().getVotingPluginUser(player);
user.sendMessage(StringParser.getInstance().replacePlaceHolder(StringParser.getInstance()
.replacePlaceHolder(StringParser.getInstance().replacePlaceHolder(
Config.getInstance().getGUIVoteURLURLText(), "voteurl",
voteSite.getVoteURL()), "sitename", voteSite.getDisplayName()),
"player", player.getName()));
}
}
}
});
count++;
}
if (Config.getInstance().getGUIVoteURLBackButton()) {
inv.addButton(getBackButton());
}
inv.openInventory(player);
}
public void openVoteURL(Player player, String voteSite) {
if (!plugin.isVoteSite(voteSite)) {
player.sendMessage("Not a valid votesite");
return;
}
User user = UserManager.getInstance().getVotingPluginUser(player);
VoteSite site = plugin.getVoteSite(voteSite);
BInventory inv = new BInventory(StringParser.getInstance()
.replacePlaceHolder(Config.getInstance().getGUIVoteURLSiteName(), "site", site.getDisplayName()));
inv.setMeta(player, "VoteSite", site);
if (!Config.getInstance().isAlwaysCloseInventory()) {
inv.dontClose();
}
inv.addButton(
new BInventoryButton(new ItemBuilder(Material.BOW).setName("&4URL").addLoreLine("Click to see URL")) {
@Override
public void onClick(ClickEvent clickEvent) {
VoteSite site = (VoteSite) clickEvent.getMeta("VoteSite");
clickEvent.getWhoClicked().sendMessage(site.getVoteURL());
}
});
inv.addButton(new BInventoryButton(new ItemBuilder(Material.COMPASS).setName("&4Next Vote")
.addLoreLine(Commands.getInstance().voteCommandNextInfo(user, site))) {
@Override
public void onClick(ClickEvent clickEvent) {
openVoteURL(clickEvent.getPlayer());
}
});
inv.addButton(new BInventoryButton(new ItemBuilder(Material.CLOCK).setName("&4Last Vote")
.addLoreLine(Commands.getInstance().voteCommandLastLine(user, site))) {
@Override
public void onClick(ClickEvent clickEvent) {
openVoteURL(clickEvent.getPlayer());
}
});
if (Config.getInstance().getGUIVoteURLBackButton()) {
inv.addButton(getBackButton());
}
inv.openInventory(player);
}
public void setSelectedPlayer(Player player, User user) {
PlayerUtils.getInstance().setPlayerMeta(player, "SelectedPlayerGUIs", user);
}
/**
* Vote reward.
*
* @param player
* the player
* @param siteName
* the site name
*/
public void voteReward(Player player, String siteName) {
BInventory inv = new BInventory(Config.getInstance().getGUIVoteRewardName());
if ((siteName == null) || (siteName == "")) {
for (VoteSite voteSite : plugin.getVoteSites()) {
try {
ItemBuilder builder = voteSite.getItem();
inv.addButton(new BInventoryButton(builder) {
@Override
public void onClick(ClickEvent event) {
Player player = event.getWhoClicked();
voteReward(player, (String) getData("site"));
}
}.addData("site", voteSite.getKey()));
} catch (Exception ex) {
}
}
} else {
for (String itemName : Config.getInstance().getVoteSiteItems(siteName)) {
ItemBuilder builder = new ItemBuilder(Config.getInstance().getVoteSiteItemsSection(siteName, itemName));
inv.addButton(Config.getInstance().getVoteSiteItemsSlot(siteName, itemName),
new BInventoryButton(builder) {
@Override
public void onClick(ClickEvent event) {
}
});
}
}
if (Config.getInstance().isVoteRewardBackButton()) {
inv.addButton(getBackButton());
}
inv.openInventory(player);
}
}
@@ -1,52 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Commands.TabCompleter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import com.Ben12345rocks.AdvancedCore.CommandAPI.TabCompleteHandler;
import com.Ben12345rocks.AdvancedCore.Util.Messages.StringParser;
import com.Ben12345rocks.VotingPlugin.Main;
/**
* The Class AdminVoteTabCompleter.
*/
public class AdminVoteTabCompleter implements TabCompleter {
/** The plugin. */
Main plugin = Main.plugin;
/*
* (non-Javadoc)
* @see org.bukkit.command.TabCompleter#onTabComplete(org.bukkit.command.
* CommandSender, org.bukkit.command.Command, java.lang.String,
* java.lang.String[])
*/
@Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String alias, String[] args) {
List<String> tab = new ArrayList<String>();
Set<String> cmds = new HashSet<String>();
cmds.addAll(TabCompleteHandler.getInstance().getTabCompleteOptions(plugin.getAdminVoteCommand(), sender, args,
args.length - 1));
for (String str : cmds) {
if (StringParser.getInstance().startsWithIgnoreCase(str, args[args.length - 1])) {
tab.add(str);
}
}
Collections.sort(tab, String.CASE_INSENSITIVE_ORDER);
return tab;
}
}
@@ -1,106 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Commands.TabCompleter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import com.Ben12345rocks.AdvancedCore.CommandAPI.CommandHandler;
import com.Ben12345rocks.AdvancedCore.CommandAPI.TabCompleteHandler;
import com.Ben12345rocks.AdvancedCore.Util.Messages.StringParser;
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
import com.Ben12345rocks.VotingPlugin.Main;
/**
* The Class AliasesTabCompleter.
*/
public class AliasesTabCompleter implements TabCompleter {
/** The plugin. */
Main plugin = Main.plugin;
/** The cmd handle. */
public CommandHandler cmdHandle;
private boolean adminCommand;
/*
* (non-Javadoc)
* @see org.bukkit.command.TabCompleter#onTabComplete(org.bukkit.command.
* CommandSender, org.bukkit.command.Command, java.lang.String,
* java.lang.String[])
*/
@Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String alias, String[] argsIn) {
ArrayList<String> msgArray = new ArrayList<String>();
msgArray.add("");
for (String arg : argsIn) {
msgArray.add(arg);
}
String[] args = ArrayUtils.getInstance().convert(msgArray);
ArrayList<String> tab = new ArrayList<String>();
Set<String> cmds = new HashSet<String>();
ArrayList<CommandHandler> cmdHandlers = new ArrayList<CommandHandler>();
if (adminCommand) {
cmdHandlers.addAll(plugin.getAdminVoteCommand());
} else {
cmdHandlers.addAll(plugin.getVoteCommand());
}
ConcurrentHashMap<String, ArrayList<String>> tabCompletes = TabCompleteHandler.getInstance()
.getTabCompleteOptions();
for (CommandHandler cmdHandle : cmdHandlers) {
if (cmdHandle.getArgs().length >= argsIn.length) {
for (String arg : cmdHandle.getArgs()[0].split("&")) {
if (cmd.getName().equalsIgnoreCase("vote" + arg)
|| cmd.getName().equalsIgnoreCase("adminvote" + arg)) {
// plugin.debug("Found cmd... attempting to get tab
// complete");
args[0] = arg;
boolean argsMatch = true;
for (int i = 0; i < argsIn.length; i++) {
if (args.length >= i) {
if (!cmdHandle.argsMatch(args[i], i)) {
argsMatch = false;
}
}
}
if (argsMatch) {
cmds.addAll(cmdHandle.getTabCompleteOptions(sender, args, argsIn.length, tabCompletes));
}
}
}
}
}
for (String str : cmds) {
if (StringParser.getInstance().startsWithIgnoreCase(str, args[args.length - 1])) {
tab.add(str);
}
}
Collections.sort(tab, String.CASE_INSENSITIVE_ORDER);
return tab;
}
public AliasesTabCompleter setCMDHandle(CommandHandler cmd, boolean adminCommand) {
cmdHandle = cmd;
this.adminCommand = adminCommand;
return this;
}
}
@@ -1,53 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Commands.TabCompleter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import com.Ben12345rocks.AdvancedCore.CommandAPI.TabCompleteHandler;
import com.Ben12345rocks.AdvancedCore.Util.Messages.StringParser;
import com.Ben12345rocks.VotingPlugin.Main;
// TODO: Auto-generated Javadoc
/**
* The Class VoteTabCompleter.
*/
public class VoteTabCompleter implements TabCompleter {
/** The plugin. */
Main plugin = Main.plugin;
/*
* (non-Javadoc)
* @see org.bukkit.command.TabCompleter#onTabComplete(org.bukkit.command.
* CommandSender, org.bukkit.command.Command, java.lang.String,
* java.lang.String[])
*/
@Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String alias, String[] args) {
ArrayList<String> tab = new ArrayList<String>();
Set<String> cmds = new HashSet<String>();
cmds.addAll(TabCompleteHandler.getInstance().getTabCompleteOptions(plugin.getVoteCommand(), sender, args,
args.length - 1));
for (String str : cmds) {
if (StringParser.getInstance().startsWithIgnoreCase(str, args[args.length - 1])) {
tab.add(str);
}
}
Collections.sort(tab, String.CASE_INSENSITIVE_ORDER);
return tab;
}
}
File diff suppressed because it is too large. Load diff
@@ -1,466 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Config;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import com.Ben12345rocks.AdvancedCore.Util.Messages.StringParser;
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
import com.Ben12345rocks.AdvancedCore.YML.YMLFile;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Objects.VoteSite;
// TODO: Auto-generated Javadoc
/**
* The Class ConfigVoteSites.
*/
public class ConfigVoteSites extends YMLFile {
/** The instance. */
static ConfigVoteSites instance = new ConfigVoteSites();
/** The plugin. */
static Main plugin = Main.plugin;
/**
* Gets the single instance of ConfigVoteSites.
*
* @return single instance of ConfigVoteSites
*/
public static ConfigVoteSites getInstance() {
return instance;
}
/**
* Instantiates a new config vote sites.
*/
public ConfigVoteSites() {
super(new File(Main.plugin.getDataFolder(), "VoteSites.yml"));
}
/**
* Generate vote site.
*
* @param siteName
* the site name
*/
public void generateVoteSite(String siteName) {
if (Config.getInstance().isAutoCreateVoteSites()) {
String org = siteName;
siteName = siteName.replace(".", "_");
plugin.getLogger().warning("VoteSite " + siteName
+ " does not exist, creating one, set AutoCreateVoteSites to false to prevent this");
setEnabled(siteName, true);
setServiceSite(siteName, org);
setVoteURL(siteName, "VoteURL");
setVoteDelay(siteName, 24);
set(siteName, "Item.Material", "GRASS");
set(siteName, "Item.Amount", 1);
set(siteName, "Rewards.Messages.Player", "&aThanks for voting on %ServiceSite%!");
plugin.loadVoteSites();
for (Player p : Bukkit.getOnlinePlayers()) {
if (p.hasPermission("VotingPlugin.Admin.GenerateServiceSite")) {
p.sendMessage(StringParser.getInstance().colorize("&cGenerating votesite for service site "
+ siteName + ", please check console for details"));
}
}
}
}
/**
* Gets the data.
*
* @param siteName
* the site name
* @return the data
*/
public ConfigurationSection getData(String siteName) {
return getData().getConfigurationSection("VoteSites." + siteName);
}
public String getDisplayName(String site) {
return getData(site).getString("Name");
}
public String getEverySiteRewardPath() {
return "EverySiteReward";
}
public ConfigurationSection getItem(String site) {
return getData(site).getConfigurationSection("Item");
}
/**
* Gets the priority.
*
* @param siteName
* the site name
* @return the priority
*/
public int getPriority(String siteName) {
return getData(siteName).getInt("Priority");
}
/**
* Gets the rewards.
*
* @param siteName
* the site name
* @return the rewards
*/
public String getRewardsPath(String siteName) {
return "VoteSites." + siteName + ".Rewards";
}
/**
* Gets the service site.
*
* @param siteName
* the site name
* @return the service site
*/
public String getServiceSite(String siteName) {
return getData(siteName).getString("ServiceSite");
}
/**
* Gets the vote delay.
*
* @param siteName
* the site name
* @return the vote delay
*/
public int getVoteDelay(String siteName) {
return getData(siteName).getInt("VoteDelay");
}
public int getTimeOffSet(String siteName) {
return getData(siteName).getInt("TimeOffSet",0);
}
public int getVoteDelayMin(String siteName) {
return getData(siteName).getInt("VoteDelayMin",0);
}
/**
* Gets the vote site enabled.
*
* @param siteName
* the site name
* @return the vote site enabled
*/
public boolean getVoteSiteEnabled(String siteName) {
return getData(siteName).getBoolean("Enabled");
}
/**
* Gets the vote site file.
*
* @param siteName
* the site name
* @return the vote site file
*/
public File getVoteSiteFile(String siteName) {
File dFile = new File(plugin.getDataFolder() + File.separator + "VoteSites", siteName + ".yml");
FileConfiguration data = YamlConfiguration.loadConfiguration(dFile);
if (!dFile.exists()) {
try {
data.save(dFile);
} catch (IOException e) {
plugin.getLogger().severe(ChatColor.RED + "Could not create VoteSites/" + siteName + ".yml!");
}
}
return dFile;
}
public boolean getVoteSiteGiveOffline(String site) {
return getData(site).getBoolean("ForceOffline", getData(site).getBoolean("GiveOffline"));
}
public boolean getVoteSiteResetVoteDelayDaily(String siteName) {
return getData(siteName).getBoolean("VoteDelayDaily");
}
/**
* Gets the vote sites load.
*
* @return the vote sites load
*/
public ArrayList<VoteSite> getVoteSitesLoad() {
ArrayList<VoteSite> voteSites = new ArrayList<VoteSite>();
ArrayList<String> voteSiteNames = getVoteSitesNames();
if (voteSiteNames != null) {
for (String site : voteSiteNames) {
if (getVoteSiteEnabled(site) && !site.equalsIgnoreCase("null")) {
if (!siteCheck(site)) {
plugin.getLogger().warning("Failed to load site " + site + ", see above");
} else {
voteSites.add(new VoteSite(site));
}
}
}
}
Collections.sort(voteSites, new Comparator<VoteSite>() {
@Override
public int compare(VoteSite v1, VoteSite v2) {
int v1P = v1.getPriority();
int v2P = v2.getPriority();
if (v1P < v2P) {
return 1;
}
if (v1P > v2P) {
return -1;
}
return 0;
}
});
return voteSites;
}
/**
* Gets the vote sites names.
*
* @return the vote sites names
*/
public ArrayList<String> getVoteSitesNames() {
ArrayList<String> siteNames = new ArrayList<String>();
if (getData().isConfigurationSection("VoteSites")) {
siteNames = ArrayUtils.getInstance().convert(getData().getConfigurationSection("VoteSites").getKeys(false));
}
for (int i = siteNames.size() - 1; i >= 0; i--) {
// plugin.getLogger().info(siteNames.get(i));
if (!getVoteSiteEnabled(siteNames.get(i)) || siteNames.get(i).equalsIgnoreCase("null")
|| !siteCheck(siteNames.get(i))) {
// plugin.getLogger().info("Removed: " + siteNames.get(i));
siteNames.remove(i);
}
}
return siteNames;
}
/**
* Gets the vote URL.
*
* @param siteName
* the site name
* @return the vote URL
*/
public String getVoteURL(String siteName) {
return getData(siteName).getString("VoteURL");
}
public boolean getWaitUntilVoteDelay(String siteName) {
return getData(siteName).getBoolean("WaitUntilVoteDelay", false);
}
/**
* Checks if is service site good.
*
* @param siteName
* the site name
* @return true, if is service site good
*/
public boolean isServiceSiteGood(String siteName) {
if (getServiceSite(siteName) == null || getServiceSite(siteName).equals("")) {
return false;
}
return true;
}
/**
* Checks if is vote URL good.
*
* @param siteName
* the site name
* @return true, if is vote URL good
*/
public boolean isVoteURLGood(String siteName) {
if (getVoteURL(siteName) == null || getVoteURL(siteName).equals("")) {
return false;
}
return true;
}
@Override
public void onFileCreation() {
plugin.saveResource("VoteSites.yml", true);
}
/**
* Rename vote site.
*
* @param siteName
* the site name
* @param newName
* the new name
* @return true, if successful
*/
public boolean renameVoteSite(String siteName, String newName) {
return getVoteSiteFile(siteName)
.renameTo(new File(plugin.getDataFolder() + File.separator + "VoteSites", newName + ".yml"));
}
/**
* Sets the.
*
* @param siteName
* the site name
* @param path
* the path
* @param value
* the value
*/
public void set(String siteName, String path, Object value) {
// String playerName = user.getPlayerName();
ConfigurationSection data = getData(siteName);
if (data == null) {
getData().createSection("VoteSites." + siteName);
data = getData(siteName);
}
data.set(path, value);
saveData();
}
/**
* Sets the cumulative rewards.
*
* @param siteName
* the site name
* @param value
* the value
*/
public void setCumulativeRewards(String siteName, ArrayList<String> value) {
set(siteName, "Cumulative.Rewards", value);
}
public void setCumulativeVotes(String siteName, int value) {
set(siteName, "Cumulative.Votes", value);
}
public void setDisplayName(String siteName, String value) {
set(siteName, "Name", value);
}
/**
* Sets the enabled.
*
* @param siteName
* the site name
* @param disabled
* the disabled
*/
public void setEnabled(String siteName, boolean disabled) {
set(siteName, "Enabled", disabled);
}
public void setForceOffline(String siteName, boolean value) {
set(siteName, "ForceOffline", value);
}
/**
* Sets the priority.
*
* @param siteName
* the site name
* @param value
* the value
*/
public void setPriority(String siteName, int value) {
set(siteName, "Priority", value);
}
/**
* Sets the rewards.
*
* @param siteName
* the site name
* @param value
* the value
*/
public void setRewards(String siteName, ArrayList<String> value) {
set(siteName, "Rewards", value);
}
/**
* Sets the service site.
*
* @param siteName
* the site name
* @param serviceSite
* the service site
*/
public void setServiceSite(String siteName, String serviceSite) {
set(siteName, "ServiceSite", serviceSite);
}
/**
* Sets the vote delay.
*
* @param siteName
* the site name
* @param voteDelay
* the vote delay
*/
public void setVoteDelay(String siteName, int voteDelay) {
set(siteName, "VoteDelay", voteDelay);
}
public void setVoteDelayDaily(String siteName, boolean value) {
set(siteName, "VoteDelayDaily", value);
}
/**
* Sets the vote URL.
*
* @param siteName
* the site name
* @param url
* the url
*/
public void setVoteURL(String siteName, String url) {
set(siteName, "VoteURL", url);
}
/**
* Site check.
*
* @param siteName
* the site name
* @return true, if successful
*/
public boolean siteCheck(String siteName) {
boolean pass = true;
if (!isServiceSiteGood(siteName)) {
plugin.getLogger().warning("Issue with ServiceSite in site " + siteName + ", votes may not work properly");
pass = false;
}
if (!isVoteURLGood(siteName)) {
plugin.getLogger().warning("Issue with VoteURL in site " + siteName);
}
return pass;
}
}
@@ -1,84 +0,0 @@
package com.Ben12345rocks.VotingPlugin.CoolDown;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardHandler;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardOptions;
import com.Ben12345rocks.AdvancedCore.TimeChecker.Events.DateChangedEvent;
import com.Ben12345rocks.AdvancedCore.UserManager.UUID;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Events.PlayerVoteCoolDownEndEvent;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
// TODO: Auto-generated Javadoc
/**
* The Class VoteReminding.
*/
public class CoolDownCheck implements Listener {
/** The instance. */
static CoolDownCheck instance = new CoolDownCheck();
/** The plugin. */
static Main plugin = Main.plugin;
/**
* Gets the single instance of VoteReminding.
*
* @return single instance of VoteReminding
*/
public static CoolDownCheck getInstance() {
return instance;
}
/**
* Instantiates a new vote reminding.
*/
private CoolDownCheck() {
}
/**
* Instantiates a new vote reminding.
*
* @param plugin
* the plugin
*/
public CoolDownCheck(Main plugin) {
CoolDownCheck.plugin = plugin;
}
public void checkAll() {
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
for (String uuid : UserManager.getInstance().getAllUUIDs()) {
if (Main.plugin != null) {
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
if (user.getUserData().hasData() && user.hasLoggedOnBefore()) {
user.checkCoolDownEvents();
}
}
}
}
});
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onCoolDownEnd(PlayerVoteCoolDownEndEvent event) {
RewardHandler.getInstance().giveReward(event.getPlayer(), Config.getInstance().getData(),
"VoteCoolDownEndedReward",
new RewardOptions().addPlaceholder("Votesite", event.getVoteSite().getDisplayName()));
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onDayChangeEnd(DateChangedEvent event) {
checkAll();
}
}
@@ -1,277 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Data;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.configuration.ConfigurationSection;
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Signs.SignHandler;
// TODO: Auto-generated Javadoc
/**
* The Class ServerData.
*/
public class ServerData {
/** The instance. */
static ServerData instance = new ServerData();
/** The plugin. */
static Main plugin = Main.plugin;
/**
* Gets the single instance of ServerData.
*
* @return single instance of ServerData
*/
public static ServerData getInstance() {
return instance;
}
/**
* Instantiates a new server data.
*/
private ServerData() {
}
/**
* Instantiates a new server data.
*
* @param plugin
* the plugin
*/
public ServerData(Main plugin) {
ServerData.plugin = plugin;
}
public synchronized void addServiceSite(String site) {
ArrayList<String> l = getServiceSites();
if (!getServiceSites().contains(site)) {
l.add(site);
}
setServiceSites(ArrayUtils.getInstance().removeDuplicates(l));
}
/**
* Adds the sign.
*
* @param location
* the location
* @param data
* the data
* @param position
* the position
*/
public void addSign(Location location, String data, int position) {
int count = nextSignNumber();
getData().set("Signs." + count + ".World", location.getWorld().getName());
getData().set("Signs." + count + ".X", location.getBlockX());
getData().set("Signs." + count + ".Y", location.getBlockY());
getData().set("Signs." + count + ".Z", location.getBlockZ());
getData().set("Signs." + count + ".Data", data);
getData().set("Signs." + count + ".Position", position);
saveData();
plugin.getSigns().add(new SignHandler("" + count, getSignLocation("" + count), getSignSkullLocation("" + count),
getSignData("" + count), getSignPosition("" + count)));
}
/**
* Gets the data.
*
* @return the data
*/
public ConfigurationSection getData() {
ConfigurationSection data = com.Ben12345rocks.AdvancedCore.Data.ServerData.getInstance().getData()
.getConfigurationSection("VotingPlugin");
if (data == null) {
com.Ben12345rocks.AdvancedCore.Data.ServerData.getInstance().getData().createSection("VotingPlugin");
data = com.Ben12345rocks.AdvancedCore.Data.ServerData.getInstance().getData()
.getConfigurationSection("VotingPlugin");
}
return data;
}
@SuppressWarnings("unchecked")
public ArrayList<String> getServiceSites() {
return (ArrayList<String>) getData().getList("ServiceSites", new ArrayList<String>());
}
/**
* Gets the sign data.
*
* @param sign
* the sign
* @return the sign data
*/
public String getSignData(String sign) {
return getData().getString("Signs." + sign + ".Data");
}
/**
* Gets the sign location.
*
* @param sign
* the sign
* @return the sign location
*/
public Location getSignLocation(String sign) {
return new Location(Bukkit.getWorld(getData().getString("Signs." + sign + ".World")),
getData().getDouble("Signs." + sign + ".X"), getData().getDouble("Signs." + sign + ".Y"),
getData().getDouble("Signs." + sign + ".Z"));
}
/**
* Gets the sign location.
*
* @param sign
* the sign
* @return the sign location
*/
public Location getSignSkullLocation(String sign) {
if (getData().getString("Signs." + sign + ".Skull.World", "").isEmpty()) {
return null;
}
return new Location(Bukkit.getWorld(getData().getString("Signs." + sign + ".Skull.World")),
getData().getDouble("Signs." + sign + ".Skull.X"), getData().getDouble("Signs." + sign + ".Skull.Y"),
getData().getDouble("Signs." + sign + ".Skull.Z"));
}
/**
* Gets the sign position.
*
* @param sign
* the sign
* @return the sign position
*/
public int getSignPosition(String sign) {
return getData().getInt("Signs." + sign + ".Position");
}
/**
* Gets the signs.
*
* @return the signs
*/
public Set<String> getSigns() {
try {
return getData().getConfigurationSection("Signs").getKeys(false);
} catch (Exception ex) {
return new HashSet<String>();
}
}
public int getVotePartyExtraRequired() {
return getData().getInt("VotePartyExtraRequired", 0);
}
/**
* Next sign number.
*
* @return the int
*/
public int nextSignNumber() {
Set<String> signs = getSigns();
if (signs != null) {
for (int i = 0; i < 100000; i++) {
if (!signs.contains(Integer.toString(i))) {
return i;
}
}
}
return 0;
}
/**
* Reload data.
*/
public void reloadData() {
com.Ben12345rocks.AdvancedCore.Data.ServerData.getInstance().reloadData();
}
/**
* Removes the sign.
*
* @param sign
* the sign
*/
public void removeSign(String sign) {
getData().set("Signs." + sign + ".World", null);
getData().set("Signs." + sign + ".X", null);
getData().set("Signs." + sign + ".Y", null);
getData().set("Signs." + sign + ".Z", null);
getData().set("Signs." + sign + ".Data", null);
getData().set("Signs." + sign + ".Position", null);
getData().set("Signs." + sign, null);
getData().set("Signs." + sign + ".Skull.World", null);
getData().set("Signs." + sign + ".Skull.X", null);
getData().set("Signs." + sign + ".Skull.Y", null);
getData().set("Signs." + sign + ".Skull.Z", null);
saveData();
}
/**
* Save data.
*/
public synchronized void saveData() {
com.Ben12345rocks.AdvancedCore.Data.ServerData.getInstance().saveData();
}
public void setServiceSites(ArrayList<String> list) {
getData().set("ServiceSites", list);
saveData();
}
public void setSign(String count, Location location, Location skullLocation, String data, int position) {
getData().set("Signs." + count + ".World", location.getWorld().getName());
getData().set("Signs." + count + ".X", (int) location.getX());
getData().set("Signs." + count + ".Y", (int) location.getY());
getData().set("Signs." + count + ".Z", (int) location.getZ());
getData().set("Signs." + count + ".Data", data);
getData().set("Signs." + count + ".Position", position);
if (skullLocation != null) {
getData().set("Signs." + count + ".Skull.World", skullLocation.getWorld().getName());
getData().set("Signs." + count + ".Skull.X", (int) skullLocation.getX());
getData().set("Signs." + count + ".Skull.Y", (int) skullLocation.getY());
getData().set("Signs." + count + ".Skull.Z", (int) skullLocation.getZ());
}
saveData();
}
public void setSkullLocation(String count, Location skullLocation) {
if (skullLocation != null) {
getData().set("Signs." + count + ".Skull.World", skullLocation.getWorld().getName());
getData().set("Signs." + count + ".Skull.X", (int) skullLocation.getX());
getData().set("Signs." + count + ".Skull.Y", (int) skullLocation.getY());
getData().set("Signs." + count + ".Skull.Z", (int) skullLocation.getZ());
}
}
/**
* Sets the version.
*/
public void setVersion() {
getData().set("Version", Bukkit.getVersion());
saveData();
}
public void setVotePartyExtraRequired(int value) {
getData().set("VotePartyExtraRequired", value);
saveData();
}
/**
* Update values.
*/
public void updateValues() {
setVersion();
}
}
@@ -1,60 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Events;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import lombok.Getter;
import lombok.Setter;
// TODO: Auto-generated Javadoc
/**
* The Class PlayerVoteEvent.
*/
public class PlayerReceivePointsEvent extends Event {
/** The Constant handlers. */
private static final HandlerList handlers = new HandlerList();
/**
* Gets the handler list.
*
* @return the handler list
*/
public static HandlerList getHandlerList() {
return handlers;
}
@Getter
@Setter
private User player;
@Getter
@Setter
private int points;
@Getter
@Setter
private boolean cancelled;
@Getter
@Setter
private String serviceSite = "";
public PlayerReceivePointsEvent(User user, int points) {
super(true);
this.player = user;
this.points = points;
}
/*
* (non-Javadoc)
* @see org.bukkit.event.Event#getHandlers()
*/
@Override
public HandlerList getHandlers() {
return handlers;
}
}
@@ -1,56 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Events;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import lombok.Getter;
import lombok.Setter;
// TODO: Auto-generated Javadoc
/**
* The Class PlayerVoteEvent.
*/
public class PlayerSpecialRewardEvent extends Event {
/** The Constant handlers. */
private static final HandlerList handlers = new HandlerList();
/**
* Gets the handler list.
*
* @return the handler list
*/
public static HandlerList getHandlerList() {
return handlers;
}
@Getter
@Setter
private User user;
@Getter
@Setter
private SpecialRewardType type;
@Getter
@Setter
private boolean cancelled;
public PlayerSpecialRewardEvent(User user, SpecialRewardType type) {
super(true);
this.type = type;
this.user = user;
}
/*
* (non-Javadoc)
* @see org.bukkit.event.Event#getHandlers()
*/
@Override
public HandlerList getHandlers() {
return handlers;
}
}
@@ -1,57 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Events;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import com.Ben12345rocks.VotingPlugin.Objects.VoteSite;
import lombok.Getter;
import lombok.Setter;
// TODO: Auto-generated Javadoc
/**
* The Class PlayerVoteEvent.
*/
public class PlayerVoteCoolDownEndEvent extends Event {
/** The Constant handlers. */
private static final HandlerList handlers = new HandlerList();
/**
* Gets the handler list.
*
* @return the handler list
*/
public static HandlerList getHandlerList() {
return handlers;
}
@Getter
@Setter
private User player;
@Getter
@Setter
private VoteSite voteSite;
@Getter
@Setter
private boolean cancelled;
public PlayerVoteCoolDownEndEvent(User user, VoteSite site) {
super(true);
player = user;
voteSite = site;
}
/*
* (non-Javadoc)
* @see org.bukkit.event.Event#getHandlers()
*/
@Override
public HandlerList getHandlers() {
return handlers;
}
}
@@ -1,78 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Events;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import com.Ben12345rocks.VotingPlugin.Objects.VoteSite;
import lombok.Getter;
import lombok.Setter;
// TODO: Auto-generated Javadoc
/**
* The Class PlayerVoteEvent.
*/
public class PlayerVoteEvent extends Event {
/** The Constant handlers. */
private static final HandlerList handlers = new HandlerList();
/**
* Gets the handler list.
*
* @return the handler list
*/
public static HandlerList getHandlerList() {
return handlers;
}
@Getter
@Setter
private String player;
@Getter
@Setter
private VoteSite voteSite;
@Getter
@Setter
private boolean cancelled;
@Getter
@Setter
private boolean realVote = true;
@Getter
@Setter
private String serviceSite = "";
@Getter
@Setter
private long time;
public PlayerVoteEvent(VoteSite voteSite, String voteUsername, String serviceSite, boolean realVote) {
super(true);
this.player = voteUsername;
this.voteSite = voteSite;
this.realVote = realVote;
this.serviceSite = serviceSite;
}
/*
* (non-Javadoc)
* @see org.bukkit.event.Event#getHandlers()
*/
@Override
public HandlerList getHandlers() {
return handlers;
}
@Getter
@Setter
private boolean bungee = false;
@Getter
@Setter
private boolean forceBungee = false;
}
@@ -1,24 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Events;
import lombok.Getter;
public enum SpecialRewardType {
ALLSITE, CUMMULATIVE, MILESTONE, VOTESTREAK, FIRSTVOTE;
@Getter
private int amount = -1;
@Getter
private String type = "";
public SpecialRewardType setAmount(int num) {
amount = num;
return this;
}
public SpecialRewardType setType(String type) {
this.type = type;
return this;
}
}
@@ -1,44 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Events;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import lombok.Getter;
import lombok.Setter;
// TODO: Auto-generated Javadoc
/**
* The Class PlayerVoteEvent.
*/
public class VotePartyEvent extends Event {
/** The Constant handlers. */
private static final HandlerList handlers = new HandlerList();
/**
* Gets the handler list.
*
* @return the handler list
*/
public static HandlerList getHandlerList() {
return handlers;
}
@Getter
@Setter
private boolean cancelled;
public VotePartyEvent() {
super(true);
}
/*
* (non-Javadoc)
* @see org.bukkit.event.Event#getHandlers()
*/
@Override
public HandlerList getHandlers() {
return handlers;
}
}
@@ -1,60 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Listeners;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.block.Sign;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Signs.SignHandler;
// TODO: Auto-generated Javadoc
/**
* The Class BlockBreak.
*/
public class BlockBreak implements Listener {
/** The plugin. */
private static Main plugin;
/**
* Instantiates a new block break.
*
* @param plugin
* the plugin
*/
public BlockBreak(Main plugin) {
BlockBreak.plugin = plugin;
}
/**
* On block break.
*
* @param event
* the event
*/
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onBlockBreak(BlockBreakEvent event) {
if (event.getBlock().getState() instanceof Sign) {
Sign s = (Sign) event.getBlock().getState();
final Location loc = s.getLocation();
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
for (SignHandler sign : plugin.getSigns()) {
if (sign.getLocation().equals(loc)) {
sign.removeSign();
sign.setValid(false);
}
}
}
});
}
}
}
@@ -1,48 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Listeners;
import java.util.ArrayList;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandSendEvent;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Commands.CommandLoader;
import com.Ben12345rocks.VotingPlugin.Config.Config;
// TODO: Auto-generated Javadoc
/**
* The Class PlayerJoinEvent.
*/
public class PlayerCommandSendListener implements Listener {
@SuppressWarnings("unused")
private static Main plugin;
public PlayerCommandSendListener(Main plugin) {
PlayerCommandSendListener.plugin = plugin;
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onTab(PlayerCommandSendEvent event) {
if (Config.getInstance().isDisableAdvancedTab()) {
return;
}
ArrayList<String> removeCmds = new ArrayList<String>();
ArrayList<String> whiteListed = new ArrayList<String>();
for (String cmd : event.getCommands()) {
if (CommandLoader.getInstance().isVotingPluginCommand(event.getPlayer(), cmd)) {
if (!CommandLoader.getInstance().hasPermission(event.getPlayer(), cmd) && !whiteListed.contains(cmd)) {
removeCmds.add(cmd);
// plugin.debug("removed " + cmd);
} else {
removeCmds.remove(cmd);
whiteListed.add(cmd);
// plugin.debug("has " + cmd);
}
}
}
event.getCommands().removeAll(removeCmds);
}
}
@@ -1,84 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Listeners;
import org.bukkit.block.Sign;
import org.bukkit.block.Skull;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import com.Ben12345rocks.AdvancedCore.Util.Misc.PlayerUtils;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Signs.SignHandler;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
// TODO: Auto-generated Javadoc
/**
* The Class PlayerInteract.
*/
public class PlayerInteract implements Listener {
/** The plugin. */
private static Main plugin;
/**
* Instantiates a new player interact.
*
* @param plugin
* the plugin
*/
public PlayerInteract(Main plugin) {
PlayerInteract.plugin = plugin;
}
/**
* On player interact.
*
* @param event
* the event
*/
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onPlayerInteract(PlayerInteractEvent event) {
Player player = event.getPlayer();
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
// plugin.debug("Checking for sign click");
if (event.getClickedBlock().getState() instanceof Sign) {
// plugin.debug(player.getName() + " right clicked a sign");
for (SignHandler sign : plugin.getSigns()) {
if (sign.isLocationSame(event.getClickedBlock().getLocation())) {
// plugin.debug(player.getName() +
// " right clicked a top voter sign, sending message");
UserManager.getInstance().getVotingPluginUser(player).sendMessage(sign.getRightClickMessage());
if (!sign.isSkullSet()) {
if (PlayerUtils.getInstance().hasServerPermission(event.getPlayer().getName(),
"VotingPlugin.Sign.Create")
|| PlayerUtils.getInstance().hasServerPermission(event.getPlayer().getName(),
"VotingPlugin.Admin")) {
player.sendMessage("Skull not set, click to set skull");
PlayerUtils.getInstance().setPlayerMeta(player, "skullset", sign.getSign());
}
}
}
}
} else if (event.getClickedBlock().getState() instanceof Skull) {
Object ob = PlayerUtils.getInstance().getPlayerMeta(player, "skullset");
if (ob != null) {
String sign1 = (String) ob;
for (SignHandler sign : plugin.getSigns()) {
if (sign.getSign().equals(sign1)) {
sign.setSkullLocation(event.getClickedBlock().getLocation());
sign.storeSign();
sign.checkSkulls();
player.sendMessage("Skull set");
}
}
PlayerUtils.getInstance().setPlayerMeta(player, "skullset", null);
}
}
}
}
}
@@ -1,64 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Listeners;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import com.Ben12345rocks.AdvancedCore.Listeners.AdvancedCoreLoginEvent;
import com.Ben12345rocks.AdvancedCore.UserManager.UserStorage;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
// TODO: Auto-generated Javadoc
/**
* The Class PlayerJoinEvent.
*/
public class PlayerJoinEvent implements Listener {
/** The plugin. */
@SuppressWarnings("unused")
private static Main plugin;
/**
* Instantiates a new player join event.
*
* @param plugin
* the plugin
*/
public PlayerJoinEvent(Main plugin) {
PlayerJoinEvent.plugin = plugin;
}
/**
* On player login.
*
* @param event
* the event
*/
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerLogin(AdvancedCoreLoginEvent event) {
if (event.getPlayer() == null
|| (Main.plugin.getStorageType().equals(UserStorage.MYSQL) && Main.plugin.getMysql() == null)) {
return;
}
Player player = event.getPlayer();
User user = UserManager.getInstance().getVotingPluginUser(player);
if (player.isOp() && plugin.isYmlError()) {
user.sendMessage("&cVotingPlugin: Detected yml error, please check console for details");
}
boolean data = user.getData().hasData();
// run remind
user.loginMessage();
if (data) {
// give offline vote (if they voted offline)
user.offVote();
}
}
}
@@ -1,156 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Listeners;
import java.util.ArrayList;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
import com.Ben12345rocks.AdvancedCore.Util.Misc.PlayerUtils;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Config.ConfigVoteSites;
import com.Ben12345rocks.VotingPlugin.Events.PlayerVoteEvent;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import com.Ben12345rocks.VotingPlugin.Objects.VoteSite;
import com.Ben12345rocks.VotingPlugin.SpecialRewards.SpecialRewards;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
import com.Ben12345rocks.VotingPlugin.VoteParty.VoteParty;
// TODO: Auto-generated Javadoc
/**
* The Class VotiferEvent.
*/
public class PlayerVoteListener implements Listener {
/** The config. */
static Config config = Config.getInstance();
/** The config vote sites. */
static ConfigVoteSites configVoteSites = ConfigVoteSites.getInstance();
/** The plugin. */
static Main plugin = Main.plugin;
private static Object object = new Object();
/**
* Instantiates a new votifer event.
*
* @param plugin
* the plugin
*/
public PlayerVoteListener(Main plugin) {
PlayerVoteListener.plugin = plugin;
}
/**
* On votifer event.
*
* @param event
* the event
*/
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onplayerVote(PlayerVoteEvent event) {
String playerName = event.getPlayer();
if (!PlayerUtils.getInstance().isValidUser(playerName, Config.getInstance().isAllowUnJoinedCheckServer())) {
if (!config.isAllowUnjoined()) {
plugin.getLogger().warning("Player " + playerName
+ " has not joined before, disregarding vote, set AllowUnjoined to true to prevent this");
return;
}
}
VoteSite voteSite = event.getVoteSite();
// check valid service sites
if (voteSite == null) {
if (!Config.getInstance().isDisableNoServiceSiteMessage()) {
plugin.getLogger().warning("No voting site with the service site: '" + event.getServiceSite() + "'");
plugin.getLogger().warning(
"Please read here on how to fix it: https://github.com/Ben12345rocks/VotingPlugin/wiki/Common-Problems");
ArrayList<String> services = new ArrayList<String>();
for (VoteSite site : plugin.getVoteSites()) {
services.add(site.getServiceSite());
}
plugin.getLogger()
.warning("Current known service sites: " + ArrayUtils.getInstance().makeStringList(services));
}
return;
}
User user = UserManager.getInstance().getVotingPluginUser(playerName);
user.updateName();
if (Config.getInstance().isClearCacheOnVote() || Config.getInstance().isUseBungeecoord()) {
user.clearCache();
}
if (voteSite.isWaitUntilVoteDelay() && !user.canVoteSite(voteSite)) {
plugin.getLogger().info(user.getPlayerName() + " must wait until votedelay is over, ignoring vote");
return;
}
synchronized (object) {
// vote party
VoteParty.getInstance().vote(user, event.isRealVote());
// broadcast vote if enabled in config
if (config.isBroadcastVotesEnabled() && (!Config.getInstance().isBungeeBroadcast() || !event.isBungee())) {
if (!Config.getInstance().getFormatBroadcastWhenOnline() || user.isOnline()) {
voteSite.broadcastVote(user);
}
}
// update last vote time
if (event.getTime() != 0) {
user.setTime(voteSite, event.getTime());
} else {
user.setTime(voteSite);
}
user.setLastVoteCoolDownCheck(false, voteSite);
// check first vote rewards
SpecialRewards.getInstance().checkFirstVote(user);
if (user.isReminded()) {
user.setReminded(false);
}
// check if player has voted on all sites in one day
if (((user.isOnline() || voteSite.isGiveOffline()) && Main.plugin.getOptions().isProcessRewards())
|| event.isBungee()) {
user.playerVote(voteSite, true, false, event.isForceBungee());
user.closeInv();
} else {
user.addOfflineVote(voteSite.getKey());
plugin.debug(
"Offline vote set for " + playerName + " (" + user.getUUID() + ") on " + voteSite.getKey());
}
// add to total votes
if (Config.getInstance().isCountFakeVotes() || event.isRealVote()) {
if (Config.getInstance().isAddTotals()) {
user.addTotal();
user.addTotalDaily();
user.addTotalWeekly();
}
user.addPoints();
}
user.checkDayVoteStreak();
// other rewards
SpecialRewards.getInstance().checkAllSites(user);
SpecialRewards.getInstance().checkCumualativeVotes(user);
SpecialRewards.getInstance().checkMilestone(user);
}
plugin.setUpdate(true);
}
}
@@ -1,74 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Listeners;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.SignChangeEvent;
import com.Ben12345rocks.AdvancedCore.Util.Messages.StringParser;
import com.Ben12345rocks.AdvancedCore.Util.Misc.PlayerUtils;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Data.ServerData;
import com.Ben12345rocks.VotingPlugin.Signs.Signs;
// TODO: Auto-generated Javadoc
/**
* The Class SignChange.
*/
public class SignChange implements Listener {
/** The plugin. */
private static Main plugin;
/**
* Instantiates a new sign change.
*
* @param plugin
* the plugin
*/
public SignChange(Main plugin) {
SignChange.plugin = plugin;
}
/**
* On sign change.
*
* @param event
* the event
*/
@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(),
"VotingPlugin.Admin")) {
String data = event.getLine(2);
if (!data.equalsIgnoreCase("all") && !data.equalsIgnoreCase("monthly")
&& !data.equalsIgnoreCase("weekly") && !data.equalsIgnoreCase("daily")) {
return;
}
try {
ServerData.getInstance().addSign(event.getBlock().getLocation(), event.getLine(2),
Integer.parseInt(event.getLine(1)));
event.getPlayer().sendMessage(StringParser.getInstance().colorize("&aAdded sign!"));
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
Signs.getInstance().updateSigns();
}
});
} catch (Exception ex) {
event.getPlayer().sendMessage(StringParser.getInstance().colorize("&cError on sign creation!"));
ex.printStackTrace();
}
} else {
event.getPlayer()
.sendMessage(StringParser.getInstance().colorize(Config.getInstance().getFormatNoPerms()));
}
}
}
}
@@ -1,121 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Listeners;
import java.util.ArrayList;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Config.ConfigVoteSites;
import com.Ben12345rocks.VotingPlugin.Data.ServerData;
import com.Ben12345rocks.VotingPlugin.Events.PlayerVoteEvent;
import com.Ben12345rocks.VotingPlugin.Objects.VoteSite;
import com.vexsoftware.votifier.model.Vote;
import com.vexsoftware.votifier.model.VotifierEvent;
// TODO: Auto-generated Javadoc
/**
* The Class VotiferEvent.
*/
public class VotiferEvent implements Listener {
/** The config. */
static Config config = Config.getInstance();
/** The config vote sites. */
static ConfigVoteSites configVoteSites = ConfigVoteSites.getInstance();
/** The plugin. */
static Main plugin = Main.plugin;
/**
* Instantiates a new votifer event.
*
* @param plugin
* the plugin
*/
public VotiferEvent(Main plugin) {
VotiferEvent.plugin = plugin;
}
/**
* On votifer event.
*
* @param event
* the event
*/
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onVotiferEvent(VotifierEvent event) {
Vote vote = event.getVote();
final String voteSite = vote.getServiceName();
final String IP = vote.getAddress();
final String voteUsername = vote.getUsername().trim();
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
ServerData.getInstance().addServiceSite(voteSite);
}
});
if (voteUsername.length() == 0) {
plugin.getLogger().warning("No name from vote on " + voteSite);
return;
}
plugin.getLogger()
.info("Received a vote from service site '" + voteSite + "' by player '" + voteUsername + "'!");
plugin.debug("PlayerUsername: " + voteUsername);
plugin.debug("VoteSite: " + voteSite);
plugin.debug("IP: " + IP);
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
String voteSiteName = plugin.getVoteSiteName(voteSite);
ArrayList<String> sites = configVoteSites.getVoteSitesNames();
boolean createSite = false;
if (sites != null) {
if (!sites.contains(voteSiteName)) {
createSite = true;
}
} else {
createSite = true;
}
if (Config.getInstance().isAutoCreateVoteSites() && createSite) {
plugin.getLogger().warning("VoteSite with service site '" + voteSiteName
+ "' does not exist, attempting to generaterate...");
ConfigVoteSites.getInstance().generateVoteSite(voteSiteName);
ArrayList<String> services = new ArrayList<String>();
for (VoteSite site : plugin.getVoteSites()) {
services.add(site.getServiceSite());
}
plugin.getLogger()
.info("Current known service sites: " + ArrayUtils.getInstance().makeStringList(services));
}
PlayerVoteEvent voteEvent = new PlayerVoteEvent(plugin.getVoteSite(voteSiteName), voteUsername,
voteSite, true);
plugin.getServer().getPluginManager().callEvent(voteEvent);
if (voteEvent.isCancelled()) {
plugin.debug("Vote cancelled");
return;
}
}
});
}
}
@@ -1,45 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Listeners;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import com.Ben12345rocks.AdvancedCore.Listeners.PluginUpdateVersionEvent;
import com.Ben12345rocks.VotingPlugin.Main;
// TODO: Auto-generated Javadoc
/**
* The Class AdvancedCoreUpdateEvent.
*/
public class VotingPluginUpdateEvent implements Listener {
/** The plugin. */
private static Main plugin;
/**
* Instantiates a new advanced core update event.
*
* @param plugin
* the plugin
*/
public VotingPluginUpdateEvent(Main plugin) {
VotingPluginUpdateEvent.plugin = plugin;
}
/**
* On plugin update.
*
* @param event
* the event
*/
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPluginUpdate(PluginUpdateVersionEvent event) {
if (event.getPlugin().getName().equals(plugin.getDescription().getName())) {
if (!event.getOldVersion().equals("")) {
plugin.getLogger().info("VotingPlugin Updated to " + plugin.getDescription().getVersion() + " from "
+ event.getOldVersion());
}
}
}
}
File diff suppressed because it is too large. Load diff
@@ -1,978 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Objects;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.YearMonth;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collectors;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardBuilder;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardHandler;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardOptions;
import com.Ben12345rocks.AdvancedCore.TimeChecker.TimeChecker;
import com.Ben12345rocks.AdvancedCore.UserManager.UUID;
import com.Ben12345rocks.AdvancedCore.Util.Messages.StringParser;
import com.Ben12345rocks.AdvancedCore.Util.Misc.MiscUtils;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Events.PlayerReceivePointsEvent;
import com.Ben12345rocks.VotingPlugin.Events.PlayerVoteCoolDownEndEvent;
import com.Ben12345rocks.VotingPlugin.Events.PlayerVoteEvent;
import com.Ben12345rocks.VotingPlugin.SpecialRewards.SpecialRewards;
import com.Ben12345rocks.VotingPlugin.TopVoter.TopVoter;
import com.Ben12345rocks.VotingPlugin.VoteParty.VoteParty;
import com.Ben12345rocks.VotingPlugin.VoteReminding.VoteReminding;
// TODO: Auto-generated Javadoc
/**
* The Class User.
*/
public class User extends com.Ben12345rocks.AdvancedCore.UserManager.User {
/** The plugin. */
static Main plugin = Main.plugin;
/**
* Instantiates a new user.
*
* @param player
* the player
*/
@Deprecated
public User(Player player) {
super(plugin, player);
}
/**
* Instantiates a new user.
*
* @param playerName
* the player name
*/
@Deprecated
public User(String playerName) {
super(plugin, playerName);
}
/**
* Instantiates a new user.
*
* @param uuid
* the uuid
*/
@Deprecated
public User(UUID uuid) {
super(plugin, uuid);
}
/**
* Instantiates a new user.
*
* @param uuid
* the uuid
* @param loadName
* the load name
*/
@Deprecated
public User(UUID uuid, boolean loadName) {
super(plugin, uuid, loadName);
}
public void addAllTimeTotal() {
setAllTimeTotal(getAllTimeTotal() + 1);
}
public void addDayVoteStreak() {
setDayVoteStreak(getDayVoteStreak() + 1);
}
public void addMonthTotal() {
setMonthTotal(getMonthTotal() + 1);
}
public void addMonthVoteStreak() {
setMonthVoteStreak(getMonthVoteStreak() + 1);
}
public void addOfflineOtherReward(String reward) {
ArrayList<String> offlineOtherRewards = getOfflineOtherRewards();
offlineOtherRewards.add(reward);
setOfflineOtherRewards(offlineOtherRewards);
}
public void addOfflineVote(String voteSiteName) {
ArrayList<String> offlineVotes = getOfflineVotes();
offlineVotes.add(voteSiteName);
setOfflineVotes(offlineVotes);
}
/**
* Adds the points.
*/
public void addPoints() {
int points = Config.getInstance().getPointsOnVote();
if (points != 0) {
addPoints(points);
}
}
/**
* Adds the points.
*
* @param value
* the value
*/
public void addPoints(int value) {
PlayerReceivePointsEvent event = new PlayerReceivePointsEvent(this, value);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
setPoints(getPoints() + event.getPoints());
}
/**
* Adds the total.
*
*/
public void addTotal() {
setMilestoneCount(getMilestoneCount() + 1);
addMonthTotal();
addAllTimeTotal();
}
/**
* Adds the total daily.
*
*
*/
public void addTotalDaily() {
setDailyTotal(getDailyTotal() + 1);
}
/**
* Adds the total weekly.
*
*
*/
public void addTotalWeekly() {
setWeeklyTotal(getWeeklyTotal() + 1);
}
public void addWeekVoteStreak() {
setWeekVoteStreak(getWeekVoteStreak() + 1);
}
/**
* Can vote all.
*
* @return true, if successful
*/
public boolean canVoteAll() {
for (VoteSite voteSite : plugin.getVoteSites()) {
boolean canVote = canVoteSite(voteSite);
if (!canVote) {
return false;
}
}
return true;
}
public boolean canVoteAny() {
for (VoteSite voteSite : plugin.getVoteSites()) {
boolean canVote = canVoteSite(voteSite);
if (canVote) {
return true;
}
}
return false;
}
public int getSitesVotedOn() {
int amount = 0;
for (VoteSite site : plugin.getVoteSites()) {
if (!canVoteSite(site)) {
amount++;
}
}
return amount;
}
/**
* Can vote site.
*
* @param voteSite
* the vote site
* @return true, if successful
*/
public boolean canVoteSite(VoteSite voteSite) {
long time = getTime(voteSite);
if (time == 0) {
return true;
}
try {
LocalDateTime now = TimeChecker.getInstance().getTime();
LocalDateTime lastVote = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault())
.plusHours(Main.plugin.getOptions().getTimeHourOffSet());
if (!voteSite.isVoteDelayDaily()) {
double votedelay = voteSite.getVoteDelay();
if (votedelay == 0) {
return false;
}
LocalDateTime nextvote = lastVote.plusHours((long) votedelay)
.plusMinutes((long) voteSite.getVoteDelayMin());
return now.isAfter(nextvote);
} else {
if (now.getDayOfYear() != lastVote.getDayOfYear() || now.getYear() != lastVote.getYear()) {
return true;
}
return false;
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
/**
* Check all votes.
*
* @return true, if successful
*/
public boolean checkAllVotes() {
User user = this;
ArrayList<Integer> months = new ArrayList<Integer>();
ArrayList<Integer> days = new ArrayList<Integer>();
for (VoteSite voteSite : plugin.getVoteSites()) {
long time = user.getTime(voteSite);
if (time != 0) {
months.add(MiscUtils.getInstance().getMonthFromMili(time));
days.add(MiscUtils.getInstance().getDayFromMili(time));
} else {
return false;
}
}
// check months
for (int i = 0; i < months.size(); i++) {
if (!months.get(0).equals(months.get(i))) {
return false;
}
}
// check days
for (int i = 0; i < days.size(); i++) {
if (!days.get(0).equals(days.get(i))) {
return false;
}
}
return true;
}
public void checkCoolDownEvents() {
for (VoteSite site : plugin.getVoteSites()) {
if (canVoteSite(site) != getLastCoolDownCheck(site)) {
plugin.debug(getPlayerName() + " vote cooldown ended: " + site.getKey());
PlayerVoteCoolDownEndEvent event = new PlayerVoteCoolDownEndEvent(this, site);
plugin.getServer().getPluginManager().callEvent(event);
setLastVoteCoolDownCheck(true, site);
}
}
}
public void checkDayVoteStreak() {
if (!voteStreakUpdatedToday(LocalDateTime.now())) {
if (!Config.getInstance().isVoteStreakRequirementUsePercentage()
|| hasPercentageTotal(TopVoter.Daily, Config.getInstance().getVoteStreakRequirementDay(), null)) {
addDayVoteStreak();
SpecialRewards.getInstance().checkVoteStreak(this, "Day");
setDayVoteStreakLastUpdate(System.currentTimeMillis());
}
}
}
public void clearOfflineRewards() {
setOfflineVotes(new ArrayList<String>());
setOfflineRewards(new ArrayList<String>());
setOfflineOtherRewards(new ArrayList<String>());
}
public void clearTotals() {
for (TopVoter top : TopVoter.values()) {
resetTotals(top);
}
}
@Deprecated
public int getAllTimeTotal() {
return getUserData().getInt("AllTimeTotal");
}
public int getBestDayVoteStreak() {
return getData().getInt("BestDayVoteStreak");
}
public int getBestMonthVoteStreak() {
return getData().getInt("BestMonthVoteStreak");
}
public int getBestWeekVoteStreak() {
return getData().getInt("BestWeekVoteStreak");
}
@Deprecated
public int getDailyTotal() {
return getUserData().getInt("DailyTotal");
}
public int getDayVoteStreak() {
return getData().getInt("DayVoteStreak");
}
public long getDayVoteStreakLastUpdate() {
String str = getData().getString("DayVoteStreakLastUpdate");
if (str.isEmpty()) {
return 0;
}
return Long.parseLong(str);
}
public boolean getDisableBroadcast() {
return getUserData().getBoolean("DisableBroadcast");
}
public HashMap<String, Boolean> getHasGottenMilestone() {
HashMap<String, Boolean> hasGottenMilestone = new HashMap<String, Boolean>();
ArrayList<String> milestoneList = getUserData().getStringList("GottenMileStones");
for (String str : milestoneList) {
String[] data = str.split("//");
if (data.length > 1) {
boolean gotten = Boolean.parseBoolean(data[1]);
hasGottenMilestone.put(data[0], gotten);
}
}
return hasGottenMilestone;
}
public int getHighestDailyTotal() {
return getData().getInt("HighestDailyTotal");
}
public int getHighestMonthlyTotal() {
return getData().getInt("HighestMonthlyTotal");
}
public int getHighestWeeklyTotal() {
return getData().getInt("HighestWeeklyTotal");
}
public boolean getLastCoolDownCheck(VoteSite site) {
HashMap<VoteSite, Boolean> array = getLastCoolDownCheckArray();
if (array.containsKey(site)) {
return array.get(site).booleanValue();
}
return true;
}
public HashMap<VoteSite, Boolean> getLastCoolDownCheckArray() {
HashMap<VoteSite, Boolean> lastVotesCheck = new HashMap<VoteSite, Boolean>();
ArrayList<String> LastVotesCheckList = getUserData().getStringList("LastVoteCoolDownCheck");
for (String str : LastVotesCheckList) {
String[] data = str.split("//");
if (data.length > 1 && plugin.hasVoteSite(data[0])) {
VoteSite site = plugin.getVoteSite(data[0]);
if (site != null) {
Boolean value = Boolean.FALSE;
try {
value = Boolean.valueOf(data[1]);
} catch (NumberFormatException e) {
plugin.debug("Not value: " + data[1]);
}
lastVotesCheck.put(site, value);
}
}
}
return lastVotesCheck;
}
public int getLastMonthTotal() {
return getData().getInt("LastMonthTotal");
}
public HashMap<VoteSite, Long> getLastVotes() {
HashMap<VoteSite, Long> lastVotes = new HashMap<VoteSite, Long>();
ArrayList<String> LastVotesList = getUserData().getStringList("LastVotes");
for (String str : LastVotesList) {
String[] data = str.split("//");
if (data.length > 1 && plugin.hasVoteSite(data[0])) {
VoteSite site = plugin.getVoteSite(data[0]);
if (site != null) {
long time = 0;
try {
time = Long.parseLong(data[1]);
} catch (NumberFormatException e) {
time = 0;
plugin.debug("Not long: " + data[1]);
}
lastVotes.put(site, time);
}
}
}
return lastVotes;
}
/**
* Gets the last vote times sorted.
*
* @return the last vote times sorted
*/
public HashMap<VoteSite, Long> getLastVoteTimesSorted() {
LinkedHashMap<VoteSite, Long> times = new LinkedHashMap<VoteSite, Long>();
for (VoteSite voteSite : plugin.getVoteSites()) {
times.put(voteSite, getTime(voteSite));
}
LinkedHashMap<VoteSite, Long> sorted = new LinkedHashMap<>(
times.entrySet().stream().sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)));
return sorted;
}
public int getMilestoneCount() {
return getData().getInt("MilestoneCount", getAllTimeTotal());
}
@Deprecated
public int getMonthTotal() {
return getData().getInt("MonthTotal");
}
public int getMonthVoteStreak() {
return getData().getInt("MonthVoteStreak");
}
public ArrayList<String> getOfflineOtherRewards() {
return getUserData().getStringList("OfflineOtherRewards");
}
public ArrayList<String> getOfflineVotes() {
return getUserData().getStringList("OfflineVotes");
}
/**
* Gets the points.
*
* @return the points
*/
public int getPoints() {
return getUserData().getInt("Points");
}
/**
* Gets the time.
*
* @param voteSite
* the vote site
* @return the time
*/
public long getTime(VoteSite voteSite) {
HashMap<VoteSite, Long> lastVotes = getLastVotes();
if (lastVotes.containsKey(voteSite)) {
return lastVotes.get(voteSite);
}
return 0;
}
public int getTotal(TopVoter top) {
switch (top) {
case AllTime:
return getUserData().getInt("AllTimeTotal");
case Daily:
return getUserData().getInt("DailyTotal");
case Monthly:
return getData().getInt("MonthTotal");
case Weekly:
return getUserData().getInt("WeeklyTotal");
default:
break;
}
return 0;
}
public int getVotePartyVotes() {
return getUserData().getInt("VotePartyVotes");
}
public int getVoteShopIdentifierLimit(String identifier) {
return getData().getInt("VoteShopLimit" + identifier);
}
@Deprecated
public int getWeeklyTotal() {
return getUserData().getInt("WeeklyTotal");
}
public int getWeekVoteStreak() {
return getData().getInt("WeekVoteStreak");
}
public void giveDailyTopVoterAward(int place, String path) {
new RewardBuilder(Config.getInstance().getData(), Config.getInstance().getDailyAwardRewardsPath(path))
.withPlaceHolder("place", "" + place).withPlaceHolder("topvoter", "Daily")
.withPlaceHolder("votes", "" + getTotal(TopVoter.Daily)).setOnline(isOnline()).send(this);
}
public void giveMonthlyTopVoterAward(int place, String path) {
new RewardBuilder(Config.getInstance().getData(), Config.getInstance().getMonthlyAwardRewardsPath(path))
.withPlaceHolder("place", "" + place).withPlaceHolder("topvoter", "Monthly")
.withPlaceHolder("votes", "" + getTotal(TopVoter.Monthly)).setOnline(isOnline()).send(this);
}
public void giveOfflineOtherRewards() {
// old reward api, will be removed in the future
ArrayList<String> offlineRewards = getOfflineOtherRewards();
for (String str : offlineRewards) {
if (str.equalsIgnoreCase("FirstVote")) {
SpecialRewards.getInstance().giveFirstVoteRewards(this, false);
} else if (str.equalsIgnoreCase("AllSites")) {
SpecialRewards.getInstance().giveAllSitesRewards(this, false);
} else if (str.equalsIgnoreCase("VoteParty")) {
VoteParty.getInstance().giveReward(this, false);
} else if (str.contains("Cumulative")) {
String st = str.substring("Cumulative".length());
if (StringParser.getInstance().isInt(st)) {
int votesRequired = Integer.parseInt(st);
if (votesRequired != 0) {
if (Config.getInstance().getCumulativeRewardEnabled(votesRequired)) {
SpecialRewards.getInstance().giveCumulativeVoteReward(this, false, votesRequired);
}
}
}
} else if (str.contains("MileStone")) {
String st = str.substring("MileStone".length());
if (StringParser.getInstance().isInt(st)) {
int votesRequired = Integer.parseInt(st);
if (votesRequired > 0) {
if (Config.getInstance().getMilestoneRewardEnabled(votesRequired)) {
SpecialRewards.getInstance().giveMilestoneVoteReward(this, true, votesRequired);
}
}
}
} else if (str.contains("VoteStreak")) {
String[] args = str.split("_");
if (args.length > 2) {
String type = args[1];
String st = args[2];
if (Config.getInstance().getVoteStreakRewardEnabled(type, st)) {
SpecialRewards.getInstance().giveVoteStreakReward(this, false, type, "" + st, -1);
}
}
} else {
plugin.debug("Reward handle for " + str + " does not exist!");
}
}
if (!offlineRewards.isEmpty()) {
setOfflineOtherRewards(new ArrayList<String>());
}
}
public void giveWeeklyTopVoterAward(int place, String path) {
new RewardBuilder(Config.getInstance().getData(), Config.getInstance().getWeeklyAwardRewardsPath(path))
.withPlaceHolder("place", "" + place).withPlaceHolder("topvoter", "Weekly")
.withPlaceHolder("votes", "" + getTotal(TopVoter.Weekly)).setOnline(isOnline()).send(this);
}
public void bungeeVote(String service) {
if (Config.getInstance().isUseBungeecoord()) {
Main.plugin.debug("Bungee vote for " + getPlayerName() + " on " + service);
PlayerVoteEvent voteEvent = new PlayerVoteEvent(plugin.getVoteSite(service), getPlayerName(), service,
true);
voteEvent.setBungee(true);
voteEvent.setForceBungee(true);
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
plugin.getServer().getPluginManager().callEvent(voteEvent);
}
});
}
}
public void bungeeVoteOnline(String service) {
if (Config.getInstance().isUseBungeecoord()) {
Main.plugin.debug("Bungee online vote for " + getPlayerName() + " on " + service);
PlayerVoteEvent voteEvent = new PlayerVoteEvent(plugin.getVoteSite(service), getPlayerName(), service,
true);
voteEvent.setBungee(true);
voteEvent.setForceBungee(false);
Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
plugin.getServer().getPluginManager().callEvent(voteEvent);
}
});
}
}
/**
* Checks for gotten first vote.
*
* @return true if user got the first vote reward
*/
public boolean hasGottenFirstVote() {
return getTotal(TopVoter.AllTime) != 0;
}
/**
* Checks for gotten milestone.
*
* @param votesRequired
* the votes required
* @return true, if successful
*/
public boolean hasGottenMilestone(int votesRequired) {
HashMap<String, Boolean> hasGottenMilestone = getHasGottenMilestone();
if (hasGottenMilestone.containsKey("" + votesRequired)) {
return hasGottenMilestone.get("" + votesRequired);
}
return false;
}
public boolean hasPercentageTotal(TopVoter top, double percentage, LocalDateTime time) {
int total = getTotal(top);
switch (top) {
case Daily:
return total / plugin.getVoteSites().size() * 100 > percentage;
case Monthly:
return total / (plugin.getVoteSites().size() * time.getMonth().length(false)) * 100 > percentage;
case Weekly:
return total / (plugin.getVoteSites().size() * 7) * 100 > percentage;
default:
return false;
}
}
public boolean isReminded() {
return getUserData().getBoolean("Reminded");
}
public boolean isTopVoterIgnore() {
return getUserData().getBoolean("TopVoterIgnore");
}
/**
* Login message.
*/
public void loginMessage() {
if (Config.getInstance().getVoteRemindingRemindOnLogin()) {
VoteReminding.getInstance().runRemindLogin(this);
}
}
/**
* Off vote.
*/
public void offVote() {
if (!Main.plugin.getOptions().isProcessRewards()) {
Main.plugin.debug("Processing rewards is disabled");
return;
}
Main.plugin.extraDebug("Checking offline vote site votes");
Player player = getPlayer();
if (player != null) {
boolean topVoterIngorePerm = player.hasPermission("VotingPlugin.TopVoter.Ignore");
if (isTopVoterIgnore() != topVoterIngorePerm) {
setTopVoterIgnore(topVoterIngorePerm);
}
ArrayList<String> offlineVotes = getOfflineVotes();
// plugin.debug(ArrayUtils.getInstance().makeStringList(offlineVotes));
if (offlineVotes.size() > 0) {
sendVoteEffects(true);
}
setOfflineVotes(new ArrayList<String>());
for (int i = 0; i < offlineVotes.size(); i++) {
if (plugin.hasVoteSite(offlineVotes.get(i))) {
plugin.debug("Giving offline site reward: " + offlineVotes.get(i));
playerVote(plugin.getVoteSite(offlineVotes.get(i)), false, true, false);
} else {
plugin.debug("Site doesn't exist: " + offlineVotes.get(i));
}
}
giveOfflineOtherRewards();
}
}
public void playerVote(VoteSite voteSite, boolean online, boolean broadcast, boolean bungee) {
if (Config.getInstance().getFormatBroadcastWhenOnline() && Config.getInstance().isBroadcastVotesEnabled()
&& broadcast) {
voteSite.broadcastVote(this);
}
voteSite.giveRewards(this, online, bungee);
}
/**
* Removes the points.
*
* @param points
* the points
* @return true, if successful
*/
public boolean removePoints(int points) {
if (getPoints() >= points) {
setPoints(getPoints() - points);
return true;
}
return false;
}
public void resetTotals(TopVoter topVoter) {
setTotal(topVoter, 0);
}
/**
* Send vote effects.
*
* @param online
* the online
*/
public void sendVoteEffects(boolean online) {
RewardHandler.getInstance().giveReward(this, Config.getInstance().getData(),
Config.getInstance().getAnySiteRewardsPath(), new RewardOptions().setOnline(online));
}
@Deprecated
public void setAllTimeTotal(int allTimeTotal) {
setTotal(TopVoter.AllTime, allTimeTotal);
}
public void setBestDayVoteStreak(int streak) {
getData().setInt("BestDayVoteStreak", streak);
}
public void setBestMonthVoteStreak(int streak) {
getData().setInt("BestMonthVoteStreak", streak);
}
public void setBestWeekVoteStreak(int streak) {
getData().setInt("BestWeekVoteStreak", streak);
}
@Deprecated
public void setDailyTotal(int total) {
setTotal(TopVoter.Daily, total);
}
public void setDayVoteStreak(int streak) {
getData().setInt("DayVoteStreak", streak);
if (getBestDayVoteStreak() < streak) {
setBestDayVoteStreak(streak);
}
}
public void setDayVoteStreakLastUpdate(long time) {
getData().setString("DayVoteStreakLastUpdate", "" + time);
}
public void setDisableBroadcast(boolean value) {
getUserData().setBoolean("DisableBroadcast", value);
}
public void setHasGotteMilestone(int votesRequired, boolean b) {
HashMap<String, Boolean> hasGottenMilestone = getHasGottenMilestone();
hasGottenMilestone.put("" + votesRequired, b);
setHasGottenMilestone(hasGottenMilestone);
}
public void setHasGottenMilestone(HashMap<String, Boolean> hasGottenMilestone) {
ArrayList<String> data = new ArrayList<String>();
for (Entry<String, Boolean> entry : hasGottenMilestone.entrySet()) {
String str = entry.getKey() + "//" + entry.getValue().booleanValue();
data.add(str);
}
getUserData().setStringList("GottenMileStones", data);
}
public void setHighestDailyTotal(int total) {
getData().setInt("HighestDailyTotal", total);
}
public void setHighestMonthlyTotal(int total) {
getData().setInt("HighestMonthlyTotal", total);
}
public void setHighestWeeklyTotal(int total) {
getData().setInt("HighestWeeklyTotal", total);
}
public void setLastCoolDownCheckArray(HashMap<VoteSite, Boolean> lastVotesCheck) {
ArrayList<String> data = new ArrayList<String>();
for (Entry<VoteSite, Boolean> entry : lastVotesCheck.entrySet()) {
String str = entry.getKey().getKey() + "//" + entry.getValue().booleanValue();
data.add(str);
}
getUserData().setStringList("LastVoteCoolDownCheck", data);
}
public void setLastMonthTotal(int total) {
getData().setInt("LastMonthTotal", total);
}
public void setLastVoteCoolDownCheck(boolean lastDelay, VoteSite voteSite) {
HashMap<VoteSite, Boolean> array = getLastCoolDownCheckArray();
array.put(voteSite, Boolean.valueOf(lastDelay));
setLastCoolDownCheckArray(array);
}
public void setLastVotes(HashMap<VoteSite, Long> lastVotes) {
ArrayList<String> data = new ArrayList<String>();
for (Entry<VoteSite, Long> entry : lastVotes.entrySet()) {
String str = entry.getKey().getKey() + "//" + entry.getValue().longValue();
data.add(str);
}
getUserData().setStringList("LastVotes", data);
}
public void setMilestoneCount(int value) {
getData().setInt("MilestoneCount", value);
}
@Deprecated
public void setMonthTotal(int total) {
setTotal(TopVoter.Monthly, total);
}
public void setMonthVoteStreak(int streak) {
getData().setInt("MonthVoteStreak", streak);
if (getBestMonthVoteStreak() < streak) {
setBestMonthVoteStreak(streak);
}
}
public void setOfflineOtherRewards(ArrayList<String> offlineOtherRewards) {
getUserData().setStringList("OfflineOtherRewards", offlineOtherRewards);
}
public void setOfflineVotes(ArrayList<String> offlineVotes) {
getUserData().setStringList("OfflineVotes", offlineVotes);
}
/**
* Sets the points.
*
* @param value
* the new points
*/
public void setPoints(int value) {
getUserData().setInt("Points", value);
}
public void setReminded(boolean reminded) {
getUserData().setString("Reminded", "" + reminded);
}
public void setTime(VoteSite voteSite) {
setTime(voteSite, LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
}
public void setTime(VoteSite voteSite, Long time) {
HashMap<VoteSite, Long> lastVotes = getLastVotes();
lastVotes.put(voteSite, time);
setLastVotes(lastVotes);
}
public void setTopVoterIgnore(boolean topVoterIgnore) {
getUserData().setString("TopVoterIgnore", "" + topVoterIgnore);
}
public void setTotal(TopVoter top, int value) {
switch (top) {
case AllTime:
getUserData().setInt("AllTimeTotal", value);
break;
case Daily:
getUserData().setInt("DailyTotal", value);
break;
case Monthly:
if (Config.getInstance().isLimitMonthlyVotes()) {
LocalDateTime time = TimeChecker.getInstance().getTime();
int days = YearMonth.of(time.getYear(), time.getMonth()).lengthOfMonth();
if (value >= days * plugin.getVoteSites().size()) {
value = days * plugin.getVoteSites().size();
}
}
getData().setInt("MonthTotal", value);
break;
case Weekly:
getUserData().setInt("WeeklyTotal", value);
break;
default:
break;
}
}
public void setVotePartyVotes(int value) {
getUserData().setInt("VotePartyVotes", value);
}
public void setVoteShopIdentifierLimit(String identifier, int value) {
getData().setInt("VoteShopLimit" + identifier, value);
}
@Deprecated
public void setWeeklyTotal(int total) {
setTotal(TopVoter.Weekly, total);
}
public void setWeekVoteStreak(int streak) {
getData().setInt("WeekVoteStreak", streak);
if (getBestWeekVoteStreak() < streak) {
setBestWeekVoteStreak(streak);
}
}
public boolean shouldBeReminded() {
Player player = getPlayer();
if (player != null) {
if (player.hasPermission("VotingPlugin.NoRemind")) {
return false;
}
}
return true;
}
public boolean voteStreakUpdatedToday(LocalDateTime time) {
return MiscUtils.getInstance().getTime(getDayVoteStreakLastUpdate()).getDayOfYear() == time.getDayOfYear();
}
}
@@ -1,228 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Objects;
import java.util.ArrayList;
import java.util.HashMap;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardBuilder;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardHandler;
import com.Ben12345rocks.AdvancedCore.Util.Item.ItemBuilder;
import com.Ben12345rocks.AdvancedCore.Util.Messages.StringParser;
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
import com.Ben12345rocks.AdvancedCore.Util.Misc.MiscUtils;
import com.Ben12345rocks.VotingPlugin.BungeeHandler;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Config.ConfigVoteSites;
import com.Ben12345rocks.VotingPlugin.Data.ServerData;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
import lombok.Getter;
import lombok.Setter;
/**
* The Class VoteSite.
*/
public class VoteSite {
/** The config. */
static Config config = Config.getInstance();
/** The config vote sites. */
static ConfigVoteSites configVoteSites = ConfigVoteSites.getInstance();
/** The plugin. */
static Main plugin = Main.plugin;
@Setter
private String voteURL;
public String getVoteURL(boolean json) {
if (!Config.getInstance().isFormatCommandsVoteForceLinks() || !json) {
return voteURL;
} else {
return "[Text=\"" + voteURL + "\",url=\"" + voteURL + "\"]";
}
}
public String getVoteURL() {
return getVoteURL(true);
}
@Getter
@Setter
private String serviceSite;
@Getter
@Setter
private String key;
@Getter
@Setter
private String displayName;
@Getter
@Setter
private double voteDelay;
@Getter
@Setter
private double voteDelayMin;
@Getter
@Setter
private double timeOffSet;
@Getter
@Setter
private boolean enabled;
@Getter
@Setter
private boolean voteDelayDaily;
@Getter
@Setter
private int priority;
@Setter
private ConfigurationSection item;
@Getter
@Setter
private boolean giveOffline;
@Getter
@Setter
private boolean waitUntilVoteDelay;
/**
* Instantiates a new vote site.
*
* @param plugin
* the plugin
*/
public VoteSite(Main plugin) {
VoteSite.plugin = plugin;
}
/**
* Instantiates a new vote site.
*
* @param siteName
* the site name
*/
public VoteSite(String siteName) {
key = siteName.replace(".", "_");
init();
}
public void broadcastVote(User user) {
broadcastVote(user, true);
}
/**
* Broadcast vote.
*
* @param user
* the user
* @param checkBungee
* check bungee broadcast
*/
public void broadcastVote(User user, boolean checkBungee) {
if (!user.isVanished()) {
if (checkBungee && Config.getInstance().isBungeeBroadcast()) {
BungeeHandler.getInstance().sendData("Broadcast", getServiceSite(), user.getPlayerName());
} else {
String playerName = user.getPlayerName();
if (config.getVotingBroadcastBlacklist().contains(playerName)) {
plugin.getLogger().info("Not broadcasting for " + playerName + ", in blacklist");
return;
}
String bc = StringParser.getInstance().colorize(config.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);
ArrayList<Player> players = new ArrayList<Player>();
for (Player p : Bukkit.getOnlinePlayers()) {
if (!UserManager.getInstance().getVotingPluginUser(p).getDisableBroadcast()) {
players.add(p);
}
}
MiscUtils.getInstance().broadcast(bc, players);
}
} else {
plugin.debug(user.getPlayerName() + " is vanished, not broadcasting");
}
}
/**
* @return the item
*/
public ItemBuilder getItem() {
if (item == null) {
plugin.getLogger().warning("Invalid item section in site: " + key);
return new ItemBuilder(Material.STONE, 1).setName("&cInvalid item for site: " + key)
.setLore("&cInvalid item for site: " + key);
} else {
return new ItemBuilder(item);
}
}
public ConfigurationSection getSiteData() {
return configVoteSites.getData(key);
}
public void giveRewards(User user, boolean online, boolean bungee) {
new RewardBuilder(configVoteSites.getData(), configVoteSites.getRewardsPath(key)).setOnline(online)
.withPlaceHolder("ServiceSite", getServiceSite()).withPlaceHolder("SiteName", getDisplayName())
.withPlaceHolder("VoteDelay", "" + getVoteDelay()).withPlaceHolder("VoteURL", getVoteURL())
.setServer(bungee).send(user);
new RewardBuilder(configVoteSites.getData(), configVoteSites.getEverySiteRewardPath()).setOnline(online)
.withPlaceHolder("ServiceSite", getServiceSite()).withPlaceHolder("SiteName", getDisplayName())
.withPlaceHolder("VoteDelay", "" + getVoteDelay()).withPlaceHolder("VoteURL", getVoteURL())
.setServer(bungee).send(user);
}
public boolean hasRewards() {
return RewardHandler.getInstance().hasRewards(configVoteSites.getData(), configVoteSites.getRewardsPath(key));
}
/**
* Inits the.
*/
public void init() {
setVoteURL(configVoteSites.getVoteURL(key));
setServiceSite(configVoteSites.getServiceSite(key));
setVoteDelay(configVoteSites.getVoteDelay(key));
setVoteDelayMin(configVoteSites.getVoteDelayMin(key));
setEnabled(configVoteSites.getVoteSiteEnabled(key));
setPriority(configVoteSites.getPriority(key));
displayName = configVoteSites.getDisplayName(key);
if (displayName == null || displayName.equals("")) {
displayName = key;
}
item = configVoteSites.getItem(key);
voteDelayDaily = configVoteSites.getVoteSiteResetVoteDelayDaily(key);
giveOffline = configVoteSites.getVoteSiteGiveOffline(key);
waitUntilVoteDelay = configVoteSites.getWaitUntilVoteDelay(key);
timeOffSet = configVoteSites.getTimeOffSet(key);
}
public boolean isVaidServiceSite() {
return ArrayUtils.getInstance().containsIgnoreCase(ServerData.getInstance().getServiceSites(),
getServiceSite());
}
}
@@ -1,277 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Signs;
import java.util.ArrayList;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.BlockState;
import org.bukkit.block.Sign;
import org.bukkit.block.Skull;
import org.bukkit.block.data.Directional;
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
import com.Ben12345rocks.AdvancedCore.Util.Misc.MiscUtils;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Data.ServerData;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import com.Ben12345rocks.VotingPlugin.TopVoter.TopVoter;
import lombok.Getter;
import lombok.Setter;
// TODO: Auto-generated Javadoc
/**
* The Class SignHandler.
*/
public class SignHandler {
@Getter
@Setter
private String sign;
@Getter
@Setter
private Location location;
@Getter
@Setter
private Location skullLocation;
@Getter
@Setter
private String data;
/** The lines. */
private ArrayList<String> lines;
/** The position. */
private int position;
/** The plugin. */
public Main plugin = Main.plugin;
/** The player name. */
private String playerName;
/** The votes. */
private int votes;
@Getter
@Setter
private boolean valid;
public SignHandler(String sign, Location location, Location skullLocation, String data, int position) {
setSign(sign);
setLocation(location);
setSkullLocation(skullLocation);
setData(data);
this.position = position;
setValid(true);
lines = new ArrayList<String>();
checkValidSign();
playerName = "";
}
@SuppressWarnings("deprecation")
private boolean checkSkull(Block block) {
if (block.getState() instanceof Skull) {
Skull skull = (Skull) block.getState();
skull.setOwner(playerName);
skull.update();
return true;
}
return false;
}
public boolean isSkullSet() {
return skullLocation != null;
}
/**
* Check skulls.
*/
public void checkSkulls() {
if (playerName.equalsIgnoreCase("No Player") || playerName.equals("")) {
return;
}
if (skullLocation != null) {
checkSkull(skullLocation.getBlock());
return;
}
Location loc = location;
Location loc1 = new Location(loc.getWorld(), loc.getBlockX() - 1, loc.getBlockY() - 1, loc.getBlockZ() - 1);
Location loc2 = new Location(loc.getWorld(), loc.getBlockX() + 1, loc.getBlockY() + 1, loc.getBlockZ() + 1);
updateSkulls(loc1, loc2);
}
/**
* Check valid sign.
*/
public void checkValidSign() {
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
try {
setValid(getLocation().getBlock().getState() instanceof Sign);
} catch (Exception ex) {
setValid(false);
}
}
});
}
/**
* Gets the right click message.
*
* @return the right click message
*/
public String getRightClickMessage() {
String msg = Config.getInstance().getFormatSignTopVoterSignRightClickMessage();
msg = msg.replace("%player%", playerName);
msg = msg.replace("%position%", "" + position);
msg = msg.replace("%votes%", "" + votes);
msg = msg.replace("%SiteName%", data);
return msg;
}
/**
* Checks if is location same.
*
* @param loc
* the loc
* @return true, if is location same
*/
public boolean isLocationSame(Location loc) {
return loc.equals(getLocation());
}
/**
* Removes the sign.
*/
public void removeSign() {
ServerData.getInstance().removeSign(sign);
}
/**
* Store sign.
*/
public void storeSign() {
ServerData.getInstance().setSign(sign, location, skullLocation, data, position);
}
/**
* Update lines.
*/
public void updateLines() {
lines = new ArrayList<String>();
checkValidSign();
if (position != 0) {
String line1 = Config.getInstance().getFormatSignTopVoterSignLine1();
String line2 = Config.getInstance().getFormatSignTopVoterSignLine2();
String line3 = Config.getInstance().getFormatSignTopVoterSignLine3();
String line4 = Config.getInstance().getFormatSignTopVoterSignLine4();
lines.add(line1);
lines.add(line2);
lines.add(line3);
lines.add(line4);
ArrayList<User> users = null;
if (data.equalsIgnoreCase("all")) {
users = plugin.convertSet(plugin.getTopVoter(TopVoter.AllTime).keySet());
} else if (data.equalsIgnoreCase("monthly")) {
users = plugin.convertSet(plugin.getTopVoter(TopVoter.Monthly).keySet());
} else if (data.equalsIgnoreCase("weekly")) {
users = plugin.convertSet(plugin.getTopVoter(TopVoter.Weekly).keySet());
} else if (data.equalsIgnoreCase("daily")) {
users = plugin.convertSet(plugin.getTopVoter(TopVoter.Daily).keySet());
}
if (users != null && users.size() >= position) {
User user = users.get(position - 1);
playerName = user.getPlayerName();
votes = 0;
if (data.equalsIgnoreCase("all")) {
votes = plugin.getTopVoter(TopVoter.AllTime).get(user);
} else if (data.equalsIgnoreCase("monthly")) {
votes = plugin.getTopVoter(TopVoter.Monthly).get(user);
} else if (data.equalsIgnoreCase("weekly")) {
votes = plugin.getTopVoter(TopVoter.Weekly).get(user);
} else if (data.equalsIgnoreCase("daily")) {
votes = plugin.getTopVoter(TopVoter.Daily).get(user);
}
for (int j = 0; j < lines.size(); j++) {
lines.set(j, lines.get(j).replace("%votes%", "" + votes).replace("%player%", playerName));
}
} else {
playerName = "No Player";
votes = 0;
for (int j = 0; j < lines.size(); j++) {
lines.set(j, lines.get(j).replace("%votes%", "" + votes).replace("%player%", playerName));
}
}
for (int j = 0; j < lines.size(); j++) {
lines.set(j, lines.get(j).replace("%SiteName%", data).replace("%position%", "" + position));
}
lines = ArrayUtils.getInstance().colorize(lines);
}
}
/**
* Update sign.
*
* @param delay
* the delay
*/
public void updateSign(int delay) {
Bukkit.getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
try {
BlockState state = getLocation().getBlock().getState();
if (state instanceof Sign) {
Sign s = (Sign) state;
for (int j = 0; j < lines.size() && j < 4; j++) {
s.setLine(j, lines.get(j));
}
s.update();
checkSkulls();
}
} catch (Exception ex) {
Main.plugin.debug(ex);
}
}
}, delay);
}
public void updateSkulls(Location loc1, Location loc2) {
BlockState state = getLocation().getBlock().getState();
if (state instanceof Sign && state.getBlockData() instanceof Directional) {
Directional s = (Directional) state.getBlockData();
Block b = location.getBlock().getRelative(s.getFacing());
Block above = b.getRelative(BlockFace.UP);
if (checkSkull(above)) {
return;
}
}
for (Block block : MiscUtils.getInstance().getRegionBlocks(location.getWorld(), loc1, loc2)) {
checkSkull(block);
}
}
}
@@ -1,107 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Signs;
import java.util.ArrayList;
import org.bukkit.Location;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Data.ServerData;
// TODO: Auto-generated Javadoc
/**
* The Class Signs.
*/
public class Signs {
/** The instance. */
static Signs instance = new Signs();
/** The plugin. */
static Main plugin = Main.plugin;
/**
* Gets the single instance of Signs.
*
* @return single instance of Signs
*/
public static Signs getInstance() {
return instance;
}
/**
* Instantiates a new signs.
*/
private Signs() {
}
/**
* Instantiates a new signs.
*
* @param plugin
* the plugin
*/
public Signs(Main plugin) {
Signs.plugin = plugin;
}
/**
* Gets the sign from location.
*
* @param loc
* the loc
* @return the sign from location
*/
public String getSignFromLocation(Location loc) {
for (String sign : ServerData.getInstance().getSigns()) {
if (ServerData.getInstance().getSignLocation(sign).equals(loc)) {
return sign;
}
}
return null;
}
/**
* Load signs.
*/
public void loadSigns() {
plugin.setSigns(new ArrayList<SignHandler>());
for (String sign : ServerData.getInstance().getSigns()) {
// plugin.getLogger().info("Loading sign " + sign);
plugin.getSigns().add(new SignHandler(sign, ServerData.getInstance().getSignLocation(sign),
ServerData.getInstance().getSignSkullLocation(sign), ServerData.getInstance().getSignData(sign),
ServerData.getInstance().getSignPosition(sign)));
}
}
/**
* Store signs.
*/
public void storeSigns() {
for (SignHandler sign : plugin.getSigns()) {
sign.storeSign();
}
}
/**
* Update signs.
*/
public void updateSigns() {
int time = 0;
for (int i = plugin.getSigns().size() - 1; i >= 0; i--) {
if (!plugin.getSigns().get(i).isValid()) {
plugin.debug("Sign " + i + " invalid, removing from data: "
+ plugin.getSigns().get(i).getLocation().toString());
plugin.getSigns().get(i).removeSign();
plugin.getSigns().remove(i);
} else {
plugin.getSigns().get(i).updateLines();
plugin.getSigns().get(i).updateSign(time);
time += 5;
}
}
plugin.debug("Signs updated");
}
}
@@ -1,318 +0,0 @@
package com.Ben12345rocks.VotingPlugin.SpecialRewards;
import java.util.Set;
import org.bukkit.Bukkit;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardBuilder;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardHandler;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardOptions;
import com.Ben12345rocks.AdvancedCore.Util.Messages.StringParser;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Config.ConfigVoteSites;
import com.Ben12345rocks.VotingPlugin.Events.PlayerSpecialRewardEvent;
import com.Ben12345rocks.VotingPlugin.Events.SpecialRewardType;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import com.Ben12345rocks.VotingPlugin.TopVoter.TopVoter;
// TODO: Auto-generated Javadoc
/**
* The Class OtherVoteReward.
*/
public class SpecialRewards {
/** The config. */
static Config config = Config.getInstance();
/** The config vote sites. */
static ConfigVoteSites configVoteSites = ConfigVoteSites.getInstance();
/** The instance. */
static SpecialRewards instance = new SpecialRewards();
/** The plugin. */
static Main plugin = Main.plugin;
/**
* Gets the single instance of OtherVoteReward.
*
* @return single instance of OtherVoteReward
*/
public static SpecialRewards getInstance() {
return instance;
}
/**
* Instantiates a new other vote reward.
*/
private SpecialRewards() {
}
/**
* Instantiates a new other vote reward.
*
* @param plugin
* the plugin
*/
public SpecialRewards(Main plugin) {
SpecialRewards.plugin = plugin;
}
/**
* Check all sites.
*
* @param user
* the user
* @return true, if successful
*/
public boolean checkAllSites(User user) {
boolean checkAllVotes = user.checkAllVotes();
if (checkAllVotes) {
giveAllSitesRewards(user, user.isOnline());
}
return checkAllVotes;
}
/**
* Check cumualative votes.
*
* @param user
* the user
* @return true, if successful
*/
public boolean checkCumualativeVotes(User user) {
boolean gotCumulative = false;
Set<String> votes = Config.getInstance().getCumulativeVotes();
for (String vote : votes) {
if (StringParser.getInstance().isInt(vote)) {
int votesRequired = Integer.parseInt(vote);
if (votesRequired != 0) {
if (Config.getInstance().getCumulativeRewardEnabled(votesRequired)
&& RewardHandler.getInstance().hasRewards(Config.getInstance().getData(),
Config.getInstance().getCumulativeRewardsPath(votesRequired))) {
int total = 0;
if (Config.getInstance().getCumulativeVotesInSameDay(votesRequired)) {
total = user.getTotal(TopVoter.Daily);
} else if (Config.getInstance().getCumulativeVotesInSameWeek(votesRequired)) {
total = user.getTotal(TopVoter.Weekly);
} else {
total = user.getTotal(TopVoter.AllTime);
}
if ((total % votesRequired) == 0 && total != 0) {
giveCumulativeVoteReward(user, user.isOnline(), votesRequired);
gotCumulative = true;
}
if (gotCumulative) {
plugin.debug(user.getPlayerName() + " got cumulative " + votesRequired);
}
}
}
} else {
plugin.debug("Invalid cumulative number: " + vote);
}
}
return gotCumulative;
}
/**
* Check first vote.
*
* @param user
* the user
* @return true, if successful
*/
public boolean checkFirstVote(User user) {
if (RewardHandler.getInstance().hasRewards(Config.getInstance().getData(),
Config.getInstance().getFirstVoteRewardsPath())) {
if (!user.hasGottenFirstVote()) {
giveFirstVoteRewards(user, user.isOnline());
return true;
}
}
return false;
}
/**
* Check milestone.
*
* @param user
* the user
* @return true, if successful
*/
public boolean checkMilestone(User user) {
boolean gotMilestone = false;
Set<String> votes = Config.getInstance().getMilestoneVotes();
for (String vote : votes) {
if (StringParser.getInstance().isInt(vote)) {
int votesRequired = Integer.parseInt(vote);
if (votesRequired != 0) {
if (Config.getInstance().getMilestoneRewardEnabled(votesRequired)
&& RewardHandler.getInstance().hasRewards(Config.getInstance().getData(),
Config.getInstance().getMilestoneRewardsPath(votesRequired))) {
int userVotesTotal = user.getMilestoneCount();
if (userVotesTotal >= votesRequired && !user.hasGottenMilestone(votesRequired)) {
giveMilestoneVoteReward(user, user.isOnline(), votesRequired);
user.setHasGotteMilestone(votesRequired, true);
plugin.debug(user.getPlayerName() + " got milestone " + votesRequired);
}
}
}
} else {
plugin.debug("Invalid milestone number: " + vote);
}
}
return gotMilestone;
}
public boolean checkVoteStreak(User user, String type) {
boolean gotReward = false;
Set<String> streaks = Config.getInstance().getVoteStreakVotes(type);
for (String streak : streaks) {
String s = streak.replaceAll("-", "");
boolean multiple = false;
if (streak.contains("-")) {
// multiple
multiple = true;
}
if (StringParser.getInstance().isInt(s)) {
int streakRequired = Integer.parseInt(s);
if (streakRequired != 0) {
if (Config.getInstance().getVoteStreakRewardEnabled(type, streak)
&& RewardHandler.getInstance().hasRewards(Config.getInstance().getData(),
Config.getInstance().getVoteStreakRewardsPath(type, "" + streak))) {
int curStreak = 0;
if (type.equalsIgnoreCase("day")) {
curStreak = user.getDayVoteStreak();
} else if (type.equalsIgnoreCase("week")) {
curStreak = user.getWeekVoteStreak();
} else if (type.equalsIgnoreCase("month")) {
curStreak = user.getMonthVoteStreak();
}
if (!multiple) {
if (curStreak == streakRequired) {
giveVoteStreakReward(user, user.isOnline(), type, "" + streakRequired, curStreak);
gotReward = true;
plugin.debug(
user.getPlayerName() + " got VoteStreak " + streakRequired + " for " + type);
}
} else {
if (curStreak != 0 && curStreak % streakRequired == 0) {
giveVoteStreakReward(user, user.isOnline(), type, streakRequired + "-", curStreak);
gotReward = true;
plugin.debug(
user.getPlayerName() + " got VoteStreak " + streakRequired + "* for " + type);
}
}
}
}
}
}
return gotReward;
}
/**
* Give all sites rewards.
*
* @param user
* the user
* @param online
* the online
*/
public void giveAllSitesRewards(User user, boolean online) {
PlayerSpecialRewardEvent event = new PlayerSpecialRewardEvent(user, SpecialRewardType.ALLSITE);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
RewardHandler.getInstance().giveReward(user, Config.getInstance().getData(),
Config.getInstance().getAllSitesRewardPath(), new RewardOptions().setOnline(online));
}
/**
* Give cumulative vote reward.
*
* @param user
* the user
* @param online
* the online
* @param cumulative
* the cumulative
*/
public void giveCumulativeVoteReward(User user, boolean online, int cumulative) {
PlayerSpecialRewardEvent event = new PlayerSpecialRewardEvent(user,
SpecialRewardType.CUMMULATIVE.setAmount(cumulative));
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
new RewardBuilder(Config.getInstance().getData(), Config.getInstance().getCumulativeRewardsPath(cumulative))
.setOnline(online).withPlaceHolder("Cumulative", "" + cumulative).send(user);
}
/**
* Give first vote rewards.
*
* @param user
* the user
* @param online
* the online
*/
public void giveFirstVoteRewards(User user, boolean online) {
PlayerSpecialRewardEvent event = new PlayerSpecialRewardEvent(user, SpecialRewardType.FIRSTVOTE);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
RewardHandler.getInstance().giveReward(user, Config.getInstance().getData(),
Config.getInstance().getFirstVoteRewardsPath(), new RewardOptions().setOnline(online));
}
/**
* Give milestone vote reward.
*
* @param user
* the user
* @param online
* the online
* @param milestone
* the milestone
*/
public void giveMilestoneVoteReward(User user, boolean online, int milestone) {
PlayerSpecialRewardEvent event = new PlayerSpecialRewardEvent(user,
SpecialRewardType.MILESTONE.setAmount(milestone));
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
new RewardBuilder(Config.getInstance().getData(), Config.getInstance().getMilestoneRewardsPath(milestone))
.setOnline(online).withPlaceHolder("Milestone", "" + milestone).send(user);
}
public void giveVoteStreakReward(User user, boolean online, String type, String string, int votes) {
PlayerSpecialRewardEvent event = new PlayerSpecialRewardEvent(user,
SpecialRewardType.VOTESTREAK.setType(type).setAmount(votes));
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
new RewardBuilder(Config.getInstance().getData(), Config.getInstance().getVoteStreakRewardsPath(type, string))
.setOnline(online).withPlaceHolder("Type", type).withPlaceHolder("Streak", "" + votes).send(user);
}
}
@@ -1,74 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Test;
import java.util.ArrayList;
import com.Ben12345rocks.AdvancedCore.Rewards.Reward;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardHandler;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardOptions;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Events.PlayerVoteEvent;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
public class VoteTester {
private static VoteTester instance = new VoteTester();
public static VoteTester getInstance() {
return instance;
}
private Main plugin = Main.plugin;
public void testRewards(int amount, String name, String rewardName) {
long time1 = System.currentTimeMillis();
ArrayList<Long> timesPerReward = new ArrayList<Long>();
User user = UserManager.getInstance().getVotingPluginUser(name);
Reward reward = RewardHandler.getInstance().getReward(rewardName);
int rewardsGiven = 0;
for (int i = 0; i < amount; i++) {
long start1 = System.currentTimeMillis();
if (reward.canGiveReward(user, new RewardOptions())) {
rewardsGiven++;
RewardHandler.getInstance().giveReward(user, reward, new RewardOptions().setIgnoreRequirements(true));
}
long start2 = System.currentTimeMillis();
timesPerReward.add(start2 - start1);
}
long time2 = System.currentTimeMillis();
long time = time2 - time1;
long timeTotal = 0;
for (Long t : timesPerReward) {
timeTotal += t.longValue();
}
long timePerRewardAvg = timeTotal / timesPerReward.size();
Main.plugin.getLogger().info("Time to process rewards (" + amount + "): " + time + " ms, average per reward "
+ timePerRewardAvg + " ms. " + Main.plugin.getStorageType() + ", "
+ UserManager.getInstance().getAllUUIDs().size() + " users. " + rewardsGiven + " rewards given");
}
public void testVotes(int amount, String name, String site) {
long time1 = System.currentTimeMillis();
ArrayList<Long> timesPerVote = new ArrayList<Long>();
for (int i = 0; i < amount; i++) {
long start1 = System.currentTimeMillis();
PlayerVoteEvent voteEvent = new PlayerVoteEvent(plugin.getVoteSite(site), name,
plugin.getVoteSiteServiceSite(site), false);
plugin.getServer().getPluginManager().callEvent(voteEvent);
long start2 = System.currentTimeMillis();
timesPerVote.add(start2 - start1);
}
long time2 = System.currentTimeMillis();
long time = time2 - time1;
long timeTotal = 0;
for (Long t : timesPerVote) {
timeTotal += t.longValue();
}
long timePerVoteAvg = timeTotal / timesPerVote.size();
Main.plugin.getLogger()
.info("Time to process votes (" + amount + "): " + time + " ms, average per vote " + timePerVoteAvg
+ " ms. " + Main.plugin.getStorageType() + ", " + UserManager.getInstance().getAllUUIDs().size()
+ " users. " + Main.plugin.getVoteSites().size() + " votesites");
}
}
@@ -1,90 +0,0 @@
package com.Ben12345rocks.VotingPlugin.TopVoter;
import java.util.ArrayList;
import com.Ben12345rocks.VotingPlugin.Config.Config;
public enum TopVoter {
AllTime, Monthly, Weekly, Daily;
public static TopVoter getDefault() {
TopVoter top = getTopVoter(Config.getInstance().getVoteTopDefault());
if (top != null) {
return top;
}
return AllTime;
}
public static TopVoter getTopVoter(String str) {
for (TopVoter value : values()) {
if (value.toString().equalsIgnoreCase(str)) {
return value;
}
}
return AllTime;
}
public String getName() {
if (this.equals(TopVoter.Monthly)) {
return Config.getInstance().getFormatTopVoterMonthly();
} else if (this.equals(TopVoter.Weekly)) {
return Config.getInstance().getFormatTopVoterWeekly();
} else if (this.equals(TopVoter.Daily)) {
return Config.getInstance().getFormatTopVoterDaily();
} else {
return Config.getInstance().getFormatTopVoterAllTime();
}
}
public TopVoter next() {
ArrayList<TopVoter> list = new ArrayList<TopVoter>();
if (Config.getInstance().getLoadTopVoterAllTime()) {
list.add(TopVoter.AllTime);
}
if (Config.getInstance().getLoadTopVoterMonthly()) {
list.add(TopVoter.Monthly);
}
if (Config.getInstance().getLoadTopVoterWeekly()) {
list.add(TopVoter.Weekly);
}
if (Config.getInstance().getLoadTopVoterDaily()) {
list.add(TopVoter.Daily);
}
for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals(this)) {
int next = i + 1;
if (next > list.size() - 1) {
next = 0;
}
return TopVoter.values()[next];
}
}
return TopVoter.AllTime;
}
public TopVoter prev() {
ArrayList<TopVoter> list = new ArrayList<TopVoter>();
if (Config.getInstance().getLoadTopVoterAllTime()) {
list.add(TopVoter.AllTime);
}
if (Config.getInstance().getLoadTopVoterMonthly()) {
list.add(TopVoter.Monthly);
}
if (Config.getInstance().getLoadTopVoterWeekly()) {
list.add(TopVoter.Weekly);
}
if (Config.getInstance().getLoadTopVoterDaily()) {
list.add(TopVoter.Daily);
}
for (int i = list.size() - 1; i >= 0; i--) {
if (list.get(i).equals(this)) {
int prev = i - 1;
if (prev < 0) {
prev = list.size() - 1;
}
return TopVoter.values()[prev];
}
}
return TopVoter.AllTime;
}
}
@@ -1,670 +0,0 @@
package com.Ben12345rocks.VotingPlugin.TopVoter;
import java.io.File;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import com.Ben12345rocks.AdvancedCore.TimeChecker.Events.DateChangedEvent;
import com.Ben12345rocks.AdvancedCore.TimeChecker.Events.DayChangeEvent;
import com.Ben12345rocks.AdvancedCore.TimeChecker.Events.MonthChangeEvent;
import com.Ben12345rocks.AdvancedCore.TimeChecker.Events.PreDateChangedEvent;
import com.Ben12345rocks.AdvancedCore.TimeChecker.Events.WeekChangeEvent;
import com.Ben12345rocks.AdvancedCore.UserManager.UUID;
import com.Ben12345rocks.AdvancedCore.Util.Messages.StringParser;
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
import com.Ben12345rocks.AdvancedCore.YML.YMLFileHandler;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import com.Ben12345rocks.VotingPlugin.SpecialRewards.SpecialRewards;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
public class TopVoterHandler implements Listener {
/** The instance. */
static TopVoterHandler instance = new TopVoterHandler();
/** The plugin. */
static Main plugin = Main.plugin;
/**
* Gets the single instance of TopVoter.
*
* @return single instance of TopVoter
*/
public static TopVoterHandler getInstance() {
return instance;
}
/**
* Instantiates a new top voter.
*/
private TopVoterHandler() {
}
public ArrayList<String> getTopVoterBlackList() {
return Config.getInstance().getBlackList();
}
/**
* Top voters weekly.
*
* @return the string[]
*/
public String[] getTopVotersWeekly() {
ArrayList<String> msg = new ArrayList<String>();
ArrayList<User> users = plugin.convertSet(plugin.getTopVoter(TopVoter.Weekly).keySet());
for (int i = 0; i < users.size(); i++) {
String line = Config.getInstance().getFormatCommandVoteTopLine().replace("%num%", "" + (i + 1))
.replace("%player%", users.get(i).getPlayerName())
.replace("%votes%", "" + plugin.getTopVoter(TopVoter.Weekly).get(users.get(i)));
msg.add(line);
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
}
private HashMap<Integer, String> handlePlaces(Set<String> places) {
HashMap<Integer, String> place = new HashMap<Integer, String>();
for (String p : places) {
String[] data = p.split("-");
try {
if (data.length > 1) {
for (int i = Integer.parseInt(data[0]); i < Integer.parseInt(data[1]); i++) {
place.put(i, p);
}
} else {
place.put(Integer.parseInt(data[0]), p);
}
} catch (Exception e) {
e.printStackTrace();
}
}
return place;
}
public void loadLastMonth() {
if (Config.getInstance().isLastMonthGUI()) {
plugin.getLastMonthTopVoter().clear();
LinkedHashMap<User, Integer> totals = new LinkedHashMap<User, Integer>();
for (String uuid : UserManager.getInstance().getAllUUIDs()) {
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
int total = user.getLastMonthTotal();
if (total > 0) {
totals.put(user, total);
}
}
plugin.getLastMonthTopVoter().putAll(sortByValues(totals, false));
plugin.debug("Loaded last month top voters");
}
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onDateChanged(DateChangedEvent event) {
plugin.setUpdate(true);
plugin.update();
loadLastMonth();
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onDayChange(DayChangeEvent event) {
synchronized (Main.plugin) {
for (String uuid : UserManager.getInstance().getAllUUIDs()) {
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
if (!user.voteStreakUpdatedToday(LocalDateTime.now().minusDays(1))) {
if (user.getDayVoteStreak() != 0) {
user.setDayVoteStreak(0);
}
}
if (user.getHighestDailyTotal() < user.getTotal(TopVoter.Daily)) {
user.setHighestDailyTotal(user.getTotal(TopVoter.Daily));
}
for (String shopIdent : Config.getInstance().getIdentifiers()) {
if (Config.getInstance().getVoteShopResetDaily(shopIdent)) {
user.setVoteShopIdentifierLimit(shopIdent, 0);
}
}
}
if (Config.getInstance().getStoreTopVotersDaily()) {
plugin.getLogger().info("Saving TopVoters Daily");
storeTopVoters(TopVoter.Daily);
}
try {
if (Config.getInstance().isEnableDailyRewards()) {
HashMap<Integer, String> places = handlePlaces(Config.getInstance().getDailyPossibleRewardPlaces());
int i = 0;
int lastTotal = -1;
@SuppressWarnings("unchecked")
LinkedHashMap<User, Integer> clone = (LinkedHashMap<User, Integer>) plugin
.getTopVoter(TopVoter.Daily).clone();
for (User user : clone.keySet()) {
if (!Config.getInstance().getTopVoterIgnorePermission() || !user.isTopVoterIgnore()) {
if (Config.getInstance().getTopVoterAwardsTies()) {
if (user.getTotal(TopVoter.Daily) != lastTotal) {
i++;
}
} else {
i++;
}
if (places.containsKey(i)) {
user.giveDailyTopVoterAward(i, places.get(i));
}
}
lastTotal = user.getTotal(TopVoter.Daily);
}
}
} catch (Exception e) {
e.printStackTrace();
}
resetTotals(TopVoter.Daily);
}
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onMonthChange(MonthChangeEvent event) {
synchronized (Main.plugin) {
for (String uuid : UserManager.getInstance().getAllUUIDs()) {
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
if (user.getTotal(TopVoter.Monthly) == 0 && user.getMonthVoteStreak() != 0) {
user.setMonthVoteStreak(0);
} else {
if (!Config.getInstance().isVoteStreakRequirementUsePercentage() || user.hasPercentageTotal(
TopVoter.Monthly, Config.getInstance().getVoteStreakRequirementMonth(),
LocalDateTime.now().minusDays(1))) {
user.addMonthVoteStreak();
SpecialRewards.getInstance().checkVoteStreak(user, "Month");
}
}
for (String shopIdent : Config.getInstance().getIdentifiers()) {
if (Config.getInstance().getVoteShopResetMonthly(shopIdent)) {
user.setVoteShopIdentifierLimit(shopIdent, 0);
}
}
user.setLastMonthTotal(user.getTotal(TopVoter.Monthly));
if (user.getHighestMonthlyTotal() < user.getTotal(TopVoter.Monthly)) {
user.setHighestMonthlyTotal(user.getTotal(TopVoter.Monthly));
}
}
if (Config.getInstance().getStoreTopVotersMonthly()) {
plugin.getLogger().info("Saving TopVoters Monthly");
storeTopVoters(TopVoter.Monthly);
}
try {
if (Config.getInstance().isEnableMonthlyAwards()) {
HashMap<Integer, String> places = handlePlaces(
Config.getInstance().getMonthlyPossibleRewardPlaces());
int i = 0;
int lastTotal = -1;
@SuppressWarnings("unchecked")
LinkedHashMap<User, Integer> clone = (LinkedHashMap<User, Integer>) plugin
.getTopVoter(TopVoter.Monthly).clone();
for (User user : clone.keySet()) {
if (!Config.getInstance().getTopVoterIgnorePermission() || !user.isTopVoterIgnore()) {
if (Config.getInstance().getTopVoterAwardsTies()) {
if (user.getTotal(TopVoter.Monthly) != lastTotal) {
i++;
}
} else {
i++;
}
if (places.containsKey(i)) {
user.giveMonthlyTopVoterAward(i, places.get(i));
}
}
lastTotal = user.getTotal(TopVoter.Monthly);
}
}
} catch (Exception e) {
e.printStackTrace();
}
resetTotals(TopVoter.Monthly);
if (Config.getInstance().getResetMilestonesMonthly()) {
for (String uuid : UserManager.getInstance().getAllUUIDs()) {
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
user.setMilestoneCount(0);
user.setHasGottenMilestone(new HashMap<String, Boolean>());
}
}
}
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onPreDateChanged(PreDateChangedEvent event) {
plugin.setUpdate(true);
plugin.update();
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onWeekChange(WeekChangeEvent event) {
synchronized (Main.plugin) {
for (String uuid : UserManager.getInstance().getAllUUIDs()) {
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
if (user.getTotal(TopVoter.Weekly) == 0 && user.getWeekVoteStreak() != 0) {
user.setWeekVoteStreak(0);
} else {
if (!Config.getInstance().isVoteStreakRequirementUsePercentage() || user.hasPercentageTotal(
TopVoter.Weekly, Config.getInstance().getVoteStreakRequirementWeek(), null)) {
user.addWeekVoteStreak();
SpecialRewards.getInstance().checkVoteStreak(user, "Week");
}
}
for (String shopIdent : Config.getInstance().getIdentifiers()) {
if (Config.getInstance().getVoteShopResetWeekly(shopIdent)) {
user.setVoteShopIdentifierLimit(shopIdent, 0);
}
}
if (user.getHighestWeeklyTotal() < user.getTotal(TopVoter.Weekly)) {
user.setHighestWeeklyTotal(user.getTotal(TopVoter.Weekly));
}
}
if (Config.getInstance().getStoreTopVotersWeekly()) {
plugin.getLogger().info("Saving TopVoters Weekly");
storeTopVoters(TopVoter.Weekly);
}
try {
if (Config.getInstance().isEnableWeeklyAwards()) {
HashMap<Integer, String> places = handlePlaces(
Config.getInstance().getWeeklyPossibleRewardPlaces());
int i = 0;
int lastTotal = -1;
@SuppressWarnings("unchecked")
LinkedHashMap<User, Integer> clone = (LinkedHashMap<User, Integer>) plugin
.getTopVoter(TopVoter.Weekly).clone();
for (User user : clone.keySet()) {
if (!Config.getInstance().getTopVoterIgnorePermission() || !user.isTopVoterIgnore()) {
if (Config.getInstance().getTopVoterAwardsTies()) {
if (user.getTotal(TopVoter.Weekly) != lastTotal) {
i++;
}
} else {
i++;
}
if (places.containsKey(i)) {
user.giveWeeklyTopVoterAward(i, places.get(i));
}
}
lastTotal = user.getTotal(TopVoter.Weekly);
}
}
} catch (Exception e) {
e.printStackTrace();
}
resetTotals(TopVoter.Weekly);
}
}
public void register() {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
public void resetTotals(TopVoter topVoter) {
for (String uuid : UserManager.getInstance().getAllUUIDs()) {
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
if (user.getTotal(topVoter) != 0) {
user.resetTotals(topVoter);
}
}
}
public LinkedHashMap<User, Integer> sortByValues(LinkedHashMap<User, Integer> topVoterAllTime,
final boolean order) {
List<Entry<User, Integer>> list = new LinkedList<Entry<User, Integer>>(topVoterAllTime.entrySet());
// Sorting the list based on values
Collections.sort(list, new Comparator<Entry<User, Integer>>() {
@Override
public int compare(Entry<User, Integer> o1, Entry<User, Integer> o2) {
if (order) {
return o1.getValue().compareTo(o2.getValue());
} else {
return o2.getValue().compareTo(o1.getValue());
}
}
});
// Maintaining insertion order with the help of LinkedList
LinkedHashMap<User, Integer> sortedMap = new LinkedHashMap<User, Integer>();
for (Entry<User, Integer> entry : list) {
sortedMap.put(entry.getKey(), entry.getValue());
}
return sortedMap;
}
public void storeTopVoters(TopVoter top) {
LocalDateTime time = LocalDateTime.now().minusDays(1);
String month = time.getMonth().toString();
int year = time.getYear();
int week = time.getDayOfYear();
int day = time.getDayOfMonth();
String fileName = "TopVoter" + File.separator + top.toString() + File.separator + year + "_" + month;
if (top.equals(TopVoter.Daily)) {
fileName += "_" + day;
} else if (top.equals(TopVoter.Weekly)) {
fileName += "_" + week;
}
fileName += ".yml";
YMLFileHandler file = new YMLFileHandler(new File(plugin.getDataFolder(), fileName));
file.setup();
ArrayList<String> topVoters = new ArrayList<String>();
int count = 1;
for (Entry<User, Integer> entry : plugin.getTopVoter(top).entrySet()) {
topVoters.add(count + ": " + entry.getKey().getPlayerName() + ": " + entry.getValue());
count++;
}
file.getData().set(top.toString(), topVoters);
file.saveData();
}
/**
* Top voter all time
*
* @param page
* the page
* @return the string[]
*/
public String[] topVoterAllTime(int page) {
int pagesize = Config.getInstance().getFormatPageSize();
ArrayList<String> msg = new ArrayList<String>();
ArrayList<String> topVoters = new ArrayList<String>();
int count = 1;
for (Entry<User, Integer> entry : plugin.getTopVoter(TopVoter.AllTime).entrySet()) {
String line = Config.getInstance().getFormatCommandVoteTopLine();
line = line.replace("%num%", "" + count);
line = line.replace("%player%", entry.getKey().getPlayerName());
line = line.replace("%votes%", "" + entry.getValue());
topVoters.add(line);
count++;
}
int pageSize = (topVoters.size() / pagesize);
if ((topVoters.size() % pagesize) != 0) {
pageSize++;
}
String title = Config.getInstance().getFormatCommandVoteTopTitle();
title = title.replace("%page%", "" + page);
title = title.replace("%maxpages%", "" + pageSize);
title = title.replace("%Top%", "All Time");
msg.add(StringParser.getInstance().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);
}
/**
* Top voter weekly.
*
* @param page
* the page
* @return the string[]
*/
public String[] topVoterDaily(int page) {
int pagesize = Config.getInstance().getFormatPageSize();
ArrayList<String> msg = new ArrayList<String>();
ArrayList<String> topVoters = new ArrayList<String>();
int count = 1;
for (Entry<User, Integer> entry : plugin.getTopVoter(TopVoter.Daily).entrySet()) {
String line = Config.getInstance().getFormatCommandVoteTopLine();
line = line.replace("%num%", "" + count);
line = line.replace("%player%", entry.getKey().getPlayerName());
line = line.replace("%votes%", "" + entry.getValue());
topVoters.add(line);
count++;
}
int pageSize = (topVoters.size() / pagesize);
if ((topVoters.size() % pagesize) != 0) {
pageSize++;
}
String title = Config.getInstance().getFormatCommandVoteTopTitle();
title = title.replace("%page%", "" + page);
title = title.replace("%maxpages%", "" + pageSize);
title = title.replace("%Top%", "Daily");
msg.add(StringParser.getInstance().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);
}
/**
* Top voter monthly
*
* @param page
* the page
* @return the string[]
*/
public String[] topVoterMonthly(int page) {
int pagesize = Config.getInstance().getFormatPageSize();
ArrayList<String> msg = new ArrayList<String>();
ArrayList<String> topVoters = new ArrayList<String>();
int count = 1;
for (Entry<User, Integer> entry : plugin.getTopVoter(TopVoter.Monthly).entrySet()) {
String line = Config.getInstance().getFormatCommandVoteTopLine();
line = line.replace("%num%", "" + count);
line = line.replace("%player%", entry.getKey().getPlayerName());
line = line.replace("%votes%", "" + entry.getValue());
topVoters.add(line);
count++;
}
int pageSize = (topVoters.size() / pagesize);
if ((topVoters.size() % pagesize) != 0) {
pageSize++;
}
String title = Config.getInstance().getFormatCommandVoteTopTitle();
title = title.replace("%page%", "" + page);
title = title.replace("%maxpages%", "" + pageSize);
title = title.replace("%Top%", "Monthly");
msg.add(StringParser.getInstance().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);
}
/**
* Top voters all time
*
* @return the string[]
*/
public String[] topVotersAllTime() {
ArrayList<String> msg = new ArrayList<String>();
List<Entry<User, Integer>> list = new LinkedList<Entry<User, Integer>>(
plugin.getTopVoter(TopVoter.AllTime).entrySet());
int i = 0;
for (Entry<User, Integer> entry : list) {
String line = "%num%: %player%, %votes%";
line = line.replace("%num%", "" + (i + 1));
try {
line = line.replace("%player%", entry.getKey().getPlayerName());
} catch (Exception ex) {
Main.plugin.debug(ex);
}
line = line.replace("%votes%", "" + entry.getValue());
msg.add(line);
i++;
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
}
/**
* Top voters daily.
*
* @return the string[]
*/
public String[] topVotersDaily() {
ArrayList<String> msg = new ArrayList<String>();
ArrayList<User> users = plugin.convertSet(plugin.getTopVoter(TopVoter.Daily).keySet());
for (int i = 0; i < users.size(); i++) {
String line = "%num%: %player%, %votes%";
line = line.replace("%num%", "" + (i + 1));
try {
line = line.replace("%player%", users.get(i).getPlayerName());
} catch (Exception ex) {
Main.plugin.debug(ex);
}
line = line.replace("%votes%", "" + plugin.getTopVoter(TopVoter.Monthly).get(users.get(i)));
msg.add(line);
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
}
/**
* Top voters.
*
* @return the string[]
*/
public String[] topVotersMonthly() {
ArrayList<String> msg = new ArrayList<String>();
List<Entry<User, Integer>> list = new LinkedList<Entry<User, Integer>>(
plugin.getTopVoter(TopVoter.Monthly).entrySet());
int i = 0;
for (Entry<User, Integer> entry : list) {
String line = "%num%: %player%, %votes%";
line = line.replace("%num%", "" + (i + 1));
try {
line = line.replace("%player%", entry.getKey().getPlayerName());
} catch (Exception ex) {
Main.plugin.debug(ex);
}
line = line.replace("%votes%", "" + entry.getValue());
msg.add(line);
i++;
}
msg = ArrayUtils.getInstance().colorize(msg);
return ArrayUtils.getInstance().convert(msg);
}
/**
* Top voter weekly.
*
* @param page
* the page
* @return the string[]
*/
public String[] topVoterWeekly(int page) {
int pagesize = Config.getInstance().getFormatPageSize();
ArrayList<String> msg = new ArrayList<String>();
ArrayList<String> topVoters = new ArrayList<String>();
int count = 1;
for (Entry<User, Integer> entry : plugin.getTopVoter(TopVoter.Weekly).entrySet()) {
String line = Config.getInstance().getFormatCommandVoteTopLine();
line = line.replace("%num%", "" + count);
line = line.replace("%player%", entry.getKey().getPlayerName());
line = line.replace("%votes%", "" + entry.getValue());
topVoters.add(line);
count++;
}
int pageSize = (topVoters.size() / pagesize);
if ((topVoters.size() % pagesize) != 0) {
pageSize++;
}
String title = Config.getInstance().getFormatCommandVoteTopTitle();
title = title.replace("%page%", "" + page);
title = title.replace("%maxpages%", "" + pageSize);
title = title.replace("%Top%", "Weekly");
msg.add(StringParser.getInstance().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);
}
public synchronized void updateTopVoters(ArrayList<User> users1) {
ArrayList<User> users = new ArrayList<User>();
ArrayList<String> blackList = getTopVoterBlackList();
for (User user : users1) {
if (!blackList.contains(user.getPlayerName())) {
if ((!Config.getInstance().getTopVoterIgnorePermission() || !user.isTopVoterIgnore())
&& !user.isBanned()) {
users.add(user);
}
}
}
plugin.debug("Number of users to check top voter: " + users.size());
for (TopVoter top : TopVoter.values()) {
plugin.getTopVoter(top).clear();
if (Config.getInstance().getLoadTopVoter(top)) {
for (User user : users) {
int total = user.getTotal(top);
if (total > 0) {
plugin.getTopVoter(top).put(user, total);
}
}
plugin.getTopVoter().put(top, sortByValues(plugin.getTopVoter(top), false));
plugin.debug(top.toString() + " TopVoter loaded");
}
}
plugin.debug("Updated TopVoter");
}
}
@@ -1,125 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Updater;
import java.util.Timer;
import java.util.TimerTask;
import org.bukkit.Bukkit;
import com.Ben12345rocks.AdvancedCore.Util.Updater.Updater;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.Config;
// TODO: Auto-generated Javadoc
/**
* The Class CheckUpdate.
*/
public class CheckUpdate {
/** The instance. */
static CheckUpdate instance = new CheckUpdate();
/** The plugin. */
static Main plugin = Main.plugin;
/**
* Gets the single instance of CheckUpdate.
*
* @return single instance of CheckUpdate
*/
public static CheckUpdate getInstance() {
return instance;
}
/**
* Instantiates a new check update.
*/
private CheckUpdate() {
}
/**
* Instantiates a new check update.
*
* @param plugin
* the plugin
*/
public CheckUpdate(Main plugin) {
CheckUpdate.plugin = plugin;
}
/**
* Check update.
*/
public void checkUpdate() {
if (Config.getInstance().isDisableUpdateChecking()) {
return;
}
plugin.setUpdater(new Updater(plugin, 15358, false));
final Updater.UpdateResult result = plugin.getUpdater().getResult();
switch (result) {
case FAIL_SPIGOT: {
plugin.getLogger().info("Failed to check for update for " + plugin.getName() + "!");
break;
}
case NO_UPDATE: {
plugin.getLogger()
.info(plugin.getName() + " is up to date! Version: " + plugin.getUpdater().getVersion());
break;
}
case UPDATE_AVAILABLE: {
plugin.getLogger()
.info(plugin.getName() + " has an update available! Your Version: "
+ plugin.getDescription().getVersion() + " New Version: "
+ plugin.getUpdater().getVersion() + " Use /av download to get the latest update!");
break;
}
default: {
break;
}
}
}
public void checkUpdateBasic() {
if (Config.getInstance().isDisableUpdateChecking()) {
return;
}
plugin.setUpdater(new Updater(plugin, 15358, false));
final Updater.UpdateResult result = plugin.getUpdater().getResult();
switch (result) {
case UPDATE_AVAILABLE: {
plugin.getLogger()
.info(plugin.getName() + " has an update available! Your Version: "
+ plugin.getDescription().getVersion() + " New Version: "
+ plugin.getUpdater().getVersion() + " Use /av download to get the latest update!");
break;
}
default: {
break;
}
}
}
/**
* Start up.
*/
public void startUp() {
if (Config.getInstance().isDisableUpdateChecking()) {
return;
}
Bukkit.getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
@Override
public void run() {
checkUpdate();
new Timer().schedule(new TimerTask() {
@Override
public void run() {
checkUpdateBasic();
}
}, 1000 * 60 * 1200, 1000 * 60 * 1200);
}
}, 10l);
}
}
@@ -1,60 +0,0 @@
package com.Ben12345rocks.VotingPlugin.UserManager;
import java.util.ArrayList;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import com.Ben12345rocks.AdvancedCore.UserManager.UUID;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Objects.User;
public class UserManager {
/** The instance. */
static UserManager instance = new UserManager();
/** The plugin. */
static Main plugin = Main.plugin;
/**
* Gets the single instance of UserManager.
*
* @return single instance of UserManager
*/
public static UserManager getInstance() {
return instance;
}
public UserManager() {
super();
}
public ArrayList<String> getAllUUIDs() {
return com.Ben12345rocks.AdvancedCore.UserManager.UserManager.getInstance().getAllUUIDs();
}
public User getVotingPluginUser(com.Ben12345rocks.AdvancedCore.UserManager.User user) {
return getVotingPluginUser(java.util.UUID.fromString(user.getUUID()));
}
public User getVotingPluginUser(java.util.UUID uuid) {
return getVotingPluginUser(new UUID(uuid.toString()));
}
public User getVotingPluginUser(OfflinePlayer player) {
return getVotingPluginUser(player.getName());
}
public User getVotingPluginUser(Player player) {
return getVotingPluginUser(player.getName());
}
@SuppressWarnings("deprecation")
public User getVotingPluginUser(String playerName) {
return new User(com.Ben12345rocks.AdvancedCore.UserManager.UserManager.getInstance().getProperName(playerName));
}
@SuppressWarnings("deprecation")
public User getVotingPluginUser(UUID uuid) {
return new User(uuid);
}
}
@@ -1,88 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Util.PlaceHolders;
import org.bukkit.Bukkit;
import com.Ben12345rocks.AdvancedCore.Util.Placeholder.PlaceHolder;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
import be.maximvdw.placeholderapi.PlaceholderAPI;
import be.maximvdw.placeholderapi.PlaceholderReplaceEvent;
import be.maximvdw.placeholderapi.PlaceholderReplacer;
// TODO: Auto-generated Javadoc
/**
* The Class PlaceHolders.
*/
public class MVdWPlaceholders {
/** The instance. */
static MVdWPlaceholders instance = new MVdWPlaceholders();
/** The plugin. */
static Main plugin = Main.plugin;
/**
* Gets the single instance of PlaceHolders.
*
* @return single instance of PlaceHolders
*/
public static MVdWPlaceholders getInstance() {
return instance;
}
/**
* Instantiates a new place holders.
*/
private MVdWPlaceholders() {
}
/**
* Instantiates a new place holders.
*
* @param plugin
* the plugin
*/
public MVdWPlaceholders(Main plugin) {
MVdWPlaceholders.plugin = plugin;
}
public void loadMVdWPlaceholders() {
if (Bukkit.getPluginManager().isPluginEnabled("MVdWPlaceholderAPI")) {
// The plugin is enabled
for (final PlaceHolder<User> place : PlaceHolders.getInstance().getPlaceholders()) {
String str = place.getIdentifier();
if (!str.endsWith("_")) {
PlaceholderAPI.registerPlaceholder(Main.plugin, "VotingPlugin_" + str, new PlaceholderReplacer() {
@Override
public String onPlaceholderReplace(PlaceholderReplaceEvent event) {
return place.placeholderRequest(event.getOfflinePlayer(),
UserManager.getInstance().getVotingPluginUser(event.getOfflinePlayer()),
event.getPlaceholder().substring("VotingPlugin_".length()));
}
});
}
}
for (final PlaceHolder<User> place : PlaceHolders.getInstance().getNonPlayerPlaceholders()) {
String str = place.getIdentifier();
if (!str.endsWith("_")) {
PlaceholderAPI.registerPlaceholder(Main.plugin, "VotingPlugin_" + str, new PlaceholderReplacer() {
@Override
public String onPlaceholderReplace(PlaceholderReplaceEvent event) {
return place.placeholderRequest(event.getOfflinePlayer(), null,
event.getPlaceholder().substring("VotingPlugin_".length()));
}
});
}
}
}
}
}
@@ -1,548 +0,0 @@
package com.Ben12345rocks.VotingPlugin.Util.PlaceHolders;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Locale;
import java.util.Map.Entry;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import com.Ben12345rocks.AdvancedCore.Util.Messages.StringParser;
import com.Ben12345rocks.AdvancedCore.Util.Placeholder.PlaceHolder;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Commands.Commands;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import com.Ben12345rocks.VotingPlugin.Objects.VoteSite;
import com.Ben12345rocks.VotingPlugin.TopVoter.TopVoter;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
import com.Ben12345rocks.VotingPlugin.VoteParty.VoteParty;
import lombok.Getter;
// TODO: Auto-generated Javadoc
/**
* The Class PlaceHolders.
*/
public class PlaceHolders {
/** The instance. */
static PlaceHolders instance = new PlaceHolders();
/** The plugin. */
static Main plugin = Main.plugin;
/**
* Gets the single instance of PlaceHolders.
*
* @return single instance of PlaceHolders
*/
public static PlaceHolders getInstance() {
return instance;
}
@Getter
private ArrayList<PlaceHolder<User>> placeholders = new ArrayList<PlaceHolder<User>>();
@Getter
private ArrayList<PlaceHolder<User>> nonPlayerPlaceholders = new ArrayList<PlaceHolder<User>>();
/**
* Instantiates a new place holders.
*/
private PlaceHolders() {
}
/**
* Instantiates a new place holders.
*
* @param plugin
* the plugin
*/
public PlaceHolders(Main plugin) {
PlaceHolders.plugin = plugin;
}
public String getPlaceHolder(OfflinePlayer p, String identifier) {
if (Config.getInstance().isUseJavascriptPlaceholders()) {
identifier = StringParser.getInstance().replaceJavascript(p, identifier);
}
for (PlaceHolder<User> placeholder : nonPlayerPlaceholders) {
if (placeholder.matches(identifier)) {
return placeholder.placeholderRequest(p, null, identifier);
}
}
User user = UserManager.getInstance().getVotingPluginUser(p);
for (PlaceHolder<User> placeholder : placeholders) {
if (placeholder.matches(identifier)) {
return placeholder.placeholderRequest(p, user, identifier);
}
}
return "Not a valid placeholder";
}
public String getPlaceHolder(Player p, String identifier) {
if (Config.getInstance().isUseJavascriptPlaceholders()) {
identifier = StringParser.getInstance().replaceJavascript(p, identifier);
}
return getPlaceHolder((OfflinePlayer) p, identifier);
}
public void load() {
placeholders.clear();
nonPlayerPlaceholders.clear();
// older placeholders, might be removed in the future
placeholders.add(new PlaceHolder<User>("total") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(user.getTotal(TopVoter.Monthly));
}
}.withDescription("Month total"));
placeholders.add(new PlaceHolder<User>("alltimetotal") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(user.getTotal(TopVoter.AllTime));
}
}.withDescription("Alltime total"));
placeholders.add(new PlaceHolder<User>("lastmonthtotal") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(user.getLastMonthTotal());
}
}.withDescription("Last month total"));
// end of older placeholders
placeholders.add(new PlaceHolder<User>("DisableBroadcast") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return "" + user.getDisableBroadcast();
}
}.withDescription("Returns true/false if user has broadcast disabled"));
placeholders.add(new PlaceHolder<User>("MilestoneCount") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return "" + user.getMilestoneCount();
}
}.withDescription("User milestonecount"));
for (final String identifier : Config.getInstance().getIdentifiers()) {
if (Config.getInstance().getIdentifierLimit(identifier) > 0) {
placeholders.add(new PlaceHolder<User>("VoteShopLimit_" + identifier) {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String ident) {
return "" + user.getVoteShopIdentifierLimit(identifier);
}
}.withDescription("User voteshop limit for " + identifier));
}
}
for (final TopVoter top : TopVoter.values()) {
placeholders.add(new PlaceHolder<User>("Total_" + top.toString()) {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(user.getTotal(top));
}
}.withDescription("User total for " + top.getName()));
}
placeholders.add(new PlaceHolder<User>("BestDailyTotal") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(user.getHighestDailyTotal());
}
}.withDescription("Best daily total"));
placeholders.add(new PlaceHolder<User>("BestWeeklyTotal") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(user.getHighestWeeklyTotal());
}
}.withDescription("Best weekly total"));
placeholders.add(new PlaceHolder<User>("BestMonthlyTotal") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(user.getHighestMonthlyTotal());
}
}.withDescription("Best monthly total"));
placeholders.add(new PlaceHolder<User>("DailyVoteStreak") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(user.getDayVoteStreak());
}
}.withDescription("Current daily votestreak"));
placeholders.add(new PlaceHolder<User>("WeeklyVoteStreak") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(user.getWeekVoteStreak());
}
}.withDescription("Current weekly votestreak"));
placeholders.add(new PlaceHolder<User>("MonthVoteStreak") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(user.getMonthVoteStreak());
}
}.withDescription("Current month votestreak"));
placeholders.add(new PlaceHolder<User>("BestDailyVoteStreak") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(user.getBestDayVoteStreak());
}
}.withDescription("Best daily votestreak"));
placeholders.add(new PlaceHolder<User>("BestWeeklyVoteStreak") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(user.getBestWeekVoteStreak());
}
}.withDescription("Best weekly votestreak"));
placeholders.add(new PlaceHolder<User>("BestMonthVoteStreak") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(user.getBestMonthVoteStreak());
}
}.withDescription("Best month votestreak"));
placeholders.add(new PlaceHolder<User>("Points") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(user.getPoints());
}
}.withDescription("User points"));
placeholders.add(new PlaceHolder<User>("Points_Format") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US);
return numberFormat.format(user.getPoints());
}
}.withDescription("User points"));
placeholders.add(new PlaceHolder<User>("CanVote") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Boolean.toString(user.canVoteAll());
}
}.withDescription("Return true/false if player can vote on all sites"));
for (final VoteSite voteSite : plugin.getVoteSites()) {
placeholders.add(new PlaceHolder<User>("Next_" + voteSite.getKey()) {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Commands.getInstance().voteCommandNextInfo(user, voteSite);
}
}.withDescription("How long until user can vote on " + voteSite.getKey()));
placeholders.add(new PlaceHolder<User>("Last_" + voteSite.getKey()) {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Commands.getInstance().voteCommandLastDuration(user, voteSite);
}
}.withDescription("How long ago user voted on " + voteSite.getKey()));
placeholders.add(new PlaceHolder<User>("CanVote_" + voteSite.getKey()) {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return "" + user.canVoteSite(voteSite);
}
}.withDescription("Whether or not player can vote on " + voteSite.getKey()));
}
placeholders.add(new PlaceHolder<User>("Top_All_Position") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
int num = 1;
for (Entry<User, Integer> entry : plugin.getTopVoter(TopVoter.AllTime).entrySet()) {
if (entry.getKey().getUUID().equals(p.getUniqueId().toString())) {
return "" + num;
}
num++;
}
return "";
}
}.withDescription("Get user top voter position"));
placeholders.add(new PlaceHolder<User>("Top_AllVotes_") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
int num = 1;
int number = Integer.parseInt(identifier.split("_")[2]);
for (Entry<User, Integer> entry : plugin.getTopVoter(TopVoter.AllTime).entrySet()) {
if (num == number) {
return "" + entry.getKey().getTotal(TopVoter.AllTime);
}
num++;
}
return "";
}
}.useStartsWith().withDescription("Get user votes at position in top voter"));
placeholders.add(new PlaceHolder<User>("Top_All_") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
int num = 1;
int number = Integer.parseInt(identifier.split("_")[2]);
for (Entry<User, Integer> entry : plugin.getTopVoter(TopVoter.AllTime).entrySet()) {
if (num == number) {
return entry.getKey().getPlayerName();
}
num++;
}
return "";
}
}.useStartsWith().withDescription("Get user at postion in top voter"));
placeholders.add(new PlaceHolder<User>("Top_Month_Position") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
int num = 1;
for (Entry<User, Integer> entry : plugin.getTopVoter(TopVoter.Monthly).entrySet()) {
if (entry.getKey().getUUID().equals(p.getUniqueId().toString())) {
return "" + num;
}
num++;
}
return "";
}
}.withDescription("Get user top voter position"));
placeholders.add(new PlaceHolder<User>("Top_Month_") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
int num = 1;
int number = Integer.parseInt(identifier.split("_")[2]);
for (Entry<User, Integer> entry : plugin.getTopVoter(TopVoter.Monthly).entrySet()) {
if (num == number) {
return entry.getKey().getPlayerName();
}
num++;
}
return "";
}
}.useStartsWith().withDescription("Get user at position in top voter"));
placeholders.add(new PlaceHolder<User>("Top_MonthVotes_") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
int num = 1;
int number = Integer.parseInt(identifier.split("_")[2]);
for (Entry<User, Integer> entry : plugin.getTopVoter(TopVoter.Monthly).entrySet()) {
if (num == number) {
return "" + entry.getKey().getTotal(TopVoter.Monthly);
}
num++;
}
return "";
}
}.useStartsWith().withDescription("Get user votes at position in top voter"));
placeholders.add(new PlaceHolder<User>("Top_Week_Position") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
int num = 1;
for (Entry<User, Integer> entry : plugin.getTopVoter(TopVoter.Weekly).entrySet()) {
if (entry.getKey().getUUID().equals(p.getUniqueId().toString())) {
return "" + num;
}
num++;
}
return "";
}
}.withDescription("Get user top voter position"));
placeholders.add(new PlaceHolder<User>("Top_Week_") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
int num = 1;
int number = Integer.parseInt(identifier.split("_")[2]);
for (Entry<User, Integer> entry : plugin.getTopVoter(TopVoter.Weekly).entrySet()) {
if (num == number) {
return entry.getKey().getPlayerName();
}
num++;
}
return "";
}
}.useStartsWith().withDescription("Get user at postion in top voter"));
placeholders.add(new PlaceHolder<User>("Top_WeekVotes_") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
int num = 1;
int number = Integer.parseInt(identifier.split("_")[2]);
for (Entry<User, Integer> entry : plugin.getTopVoter(TopVoter.Weekly).entrySet()) {
if (num == number) {
return "" + entry.getKey().getTotal(TopVoter.Weekly);
}
num++;
}
return "";
}
}.useStartsWith().withDescription("Get user votes at position in top voter"));
placeholders.add(new PlaceHolder<User>("Top_Daily_Position") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
int num = 1;
for (Entry<User, Integer> entry : plugin.getTopVoter(TopVoter.Daily).entrySet()) {
if (entry.getKey().getUUID().equals(p.getUniqueId().toString())) {
return "" + num;
}
num++;
}
return "";
}
}.withDescription("Get user top voter position"));
placeholders.add(new PlaceHolder<User>("Top_Daily_") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
int num = 1;
int number = Integer.parseInt(identifier.split("_")[2]);
for (Entry<User, Integer> entry : plugin.getTopVoter(TopVoter.Daily).entrySet()) {
if (num == number) {
return entry.getKey().getPlayerName();
}
num++;
}
return "";
}
}.useStartsWith().withDescription("Get user at postion in top voter"));
placeholders.add(new PlaceHolder<User>("Top_DailyVotes_") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
int num = 1;
int number = Integer.parseInt(identifier.split("_")[2]);
for (Entry<User, Integer> entry : plugin.getTopVoter(TopVoter.Daily).entrySet()) {
if (num == number) {
return "" + entry.getKey().getTotal(TopVoter.Daily);
}
num++;
}
return "";
}
}.useStartsWith().withDescription("Get user votes at position in top voter"));
// non players
nonPlayerPlaceholders.add(new PlaceHolder<User>("VotePartyVotesCurrent") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(VoteParty.getInstance().getTotalVotes());
}
}.withDescription("Current amount of voteparty votes"));
nonPlayerPlaceholders.add(new PlaceHolder<User>("VotePartyVotesNeeded") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(VoteParty.getInstance().getNeededVotes());
}
}.withDescription("Voteparty votes needed"));
nonPlayerPlaceholders.add(new PlaceHolder<User>("VotePartyVotesRequired") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
return Integer.toString(VoteParty.getInstance().getVotesRequired());
}
}.withDescription("Amount of votes needed for voteparty"));
nonPlayerPlaceholders.add(new PlaceHolder<User>("GlobalMonthTotal") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
int total = 0;
for (int num : Main.plugin.getTopVoter(TopVoter.Monthly).values()) {
total += num;
}
return Integer.toString(total);
}
}.withDescription("Global month total"));
nonPlayerPlaceholders.add(new PlaceHolder<User>("GlobalAllTimeTotal") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
int total = 0;
for (int num : Main.plugin.getTopVoter(TopVoter.AllTime).values()) {
total += num;
}
return Integer.toString(total);
}
}.withDescription("Global alltime total"));
nonPlayerPlaceholders.add(new PlaceHolder<User>("GlobalWeeklyTotal") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
int total = 0;
for (int num : Main.plugin.getTopVoter(TopVoter.Weekly).values()) {
total += num;
}
return Integer.toString(total);
}
}.withDescription("Global weekly total"));
nonPlayerPlaceholders.add(new PlaceHolder<User>("GlobalDailyTotal") {
@Override
public String placeholderRequest(OfflinePlayer p, User user, String identifier) {
int total = 0;
for (int num : Main.plugin.getTopVoter(TopVoter.Daily).values()) {
total += num;
}
return Integer.toString(total);
}
}.withDescription("Global daily total"));
}
}
@@ -1,288 +0,0 @@
package com.Ben12345rocks.VotingPlugin.VoteParty;
import java.util.ArrayList;
import java.util.HashMap;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardBuilder;
import com.Ben12345rocks.AdvancedCore.TimeChecker.Events.DayChangeEvent;
import com.Ben12345rocks.AdvancedCore.TimeChecker.Events.MonthChangeEvent;
import com.Ben12345rocks.AdvancedCore.UserManager.UUID;
import com.Ben12345rocks.AdvancedCore.Util.Messages.StringParser;
import com.Ben12345rocks.AdvancedCore.Util.Misc.ArrayUtils;
import com.Ben12345rocks.AdvancedCore.Util.Misc.MiscUtils;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Data.ServerData;
import com.Ben12345rocks.VotingPlugin.Events.VotePartyEvent;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
// TODO: Auto-generated Javadoc
/**
* The Class VoteParty.
*/
public class VoteParty implements Listener {
/** The instance. */
static VoteParty instance = new VoteParty();
/** The plugin. */
static Main plugin = Main.plugin;
/**
* Gets the single instance of VoteParty.
*
* @return single instance of VoteParty
*/
public static VoteParty getInstance() {
return instance;
}
/**
* Instantiates a new vote party.
*/
private VoteParty() {
}
/**
* Instantiates a new vote party.
*
* @param plugin
* the plugin
*/
public VoteParty(Main plugin) {
VoteParty.plugin = plugin;
}
public void addTotal(User user) {
setTotalVotes(getTotalVotes() + 1);
user.setVotePartyVotes(user.getVotePartyVotes() + 1);
}
/**
* Adds the vote player.
*
* @param user
* the user
*/
public void addVotePlayer(User user) {
String uuid = user.getUUID();
ArrayList<String> voted = getVotedUsers();
if (voted == null) {
voted = new ArrayList<String>();
}
if (!voted.contains(uuid)) {
voted.add(uuid);
setVotedUsers(voted);
}
}
/**
* Check.
*/
public void check() {
if (getTotalVotes() >= getVotesRequired()) {
setTotalVotes(getTotalVotes() - getVotesRequired());
VotePartyEvent event = new VotePartyEvent();
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
MiscUtils.getInstance().broadcast(Config.getInstance().getVotePartyBroadcast());
giveRewards();
if (Config.getInstance().getVotePartyIncreaseVotesRquired() > 0) {
ServerData.getInstance().setVotePartyExtraRequired(ServerData.getInstance().getVotePartyExtraRequired()
+ Config.getInstance().getVotePartyIncreaseVotesRquired());
}
}
}
/**
* Command vote party.
*
* @param sender
* the sender
*/
public void commandVoteParty(CommandSender sender) {
if (Config.getInstance().getVotePartyEnabled()) {
ArrayList<String> msg = Config.getInstance().getFormatCommandsVoteParty();
int votesRequired = getVotesRequired();
int votes = getTotalVotes();
int neededVotes = votesRequired - votes;
HashMap<String, String> placeholders = new HashMap<String, String>();
placeholders.put("votesrequired", "" + votesRequired);
placeholders.put("neededvotes", "" + neededVotes);
placeholders.put("votes", "" + votes);
msg = ArrayUtils.getInstance().colorize(ArrayUtils.getInstance().replacePlaceHolder(msg, placeholders));
sender.sendMessage(ArrayUtils.getInstance().convert(msg));
} else {
sender.sendMessage(StringParser.getInstance().colorize("&cVoteParty not enabled"));
}
}
/**
* Gets the needed votes.
*
* @return the needed votes
*/
public int getNeededVotes() {
int votesRequired = getVotesRequired();
int votes = getTotalVotes();
int neededVotes = votesRequired - votes;
return neededVotes;
}
/**
* Gets the total votes.
*
* @return the total votes
*/
public int getTotalVotes() {
return ServerData.getInstance().getData().getInt("VoteParty.Total");
}
/**
* Gets the voted users.
*
* @return the voted users
*/
@SuppressWarnings("unchecked")
public ArrayList<String> getVotedUsers() {
ArrayList<String> list = (ArrayList<String>) ServerData.getInstance().getData().getList("VoteParty.Voted");
if (list != null) {
return list;
}
return new ArrayList<String>();
}
public int getVotesRequired() {
int required = Config.getInstance().getVotePartyVotesRequired();
int extra = ServerData.getInstance().getVotePartyExtraRequired();
if (extra > 0) {
return required + extra;
}
return required;
}
public void giveReward(User user) {
if (Config.getInstance().getVotePartyUserVotesRequired() > 0) {
if (user.getVotePartyVotes() < Config.getInstance().getVotePartyUserVotesRequired()) {
return;
}
}
giveReward(user, user.isOnline());
}
public void giveReward(User user, boolean online) {
new RewardBuilder(Config.getInstance().getData(), Config.getInstance().getVotePartyRewardsPath())
.setOnline(online)
.withPlaceHolder("VotesRequired", "" + Config.getInstance().getVotePartyVotesRequired()).send(user);
}
/**
* Give rewards.
*/
public void giveRewards() {
for (final String cmd : Config.getInstance().getVotePartyCommands()) {
Bukkit.getScheduler().runTask(plugin, new Runnable() {
@Override
public void run() {
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), cmd);
}
});
}
if (Config.getInstance().getVotePartyGiveAllPlayers()) {
plugin.debug("Giving all players vote party");
for (String uuid : UserManager.getInstance().getAllUUIDs()) {
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
giveReward(user);
}
} else {
plugin.debug(ArrayUtils.getInstance().makeStringList(getVotedUsers()));
for (String uuid : getVotedUsers()) {
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
giveReward(user);
}
}
reset();
}
@EventHandler
public void onDayChange(DayChangeEvent event) {
if (Config.getInstance().getVotePartyResetEachDay()) {
reset();
}
}
@EventHandler
public void onMonthChange(MonthChangeEvent event) {
if (Config.getInstance().getVotePartyResetMontly()) {
reset();
}
if (Config.getInstance().isVotePartyResetExtraVotesMonthly()) {
ServerData.getInstance().setVotePartyExtraRequired(0);
}
}
public void register() {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
public void reset() {
setVotedUsers(new ArrayList<String>());
setTotalVotes(0);
for (String uuid : UserManager.getInstance().getAllUUIDs()) {
User user = UserManager.getInstance().getVotingPluginUser(new UUID(uuid));
if (user.getVotePartyVotes() != 0) {
user.setVotePartyVotes(0);
}
}
}
/**
* Sets the total votes.
*
* @param value
* the new total votes
*/
public void setTotalVotes(int value) {
ServerData.getInstance().getData().set("VoteParty.Total", value);
ServerData.getInstance().saveData();
}
/**
* Sets the voted users.
*
* @param value
* the new voted users
*/
public void setVotedUsers(ArrayList<String> value) {
ServerData.getInstance().getData().set("VoteParty.Voted", value);
ServerData.getInstance().saveData();
}
public synchronized void vote(User user, boolean realVote) {
if (Config.getInstance().getVotePartyEnabled()) {
if (Config.getInstance().getVotePartyCountFakeVotes() || realVote) {
addTotal(user);
addVotePlayer(user);
check();
}
}
}
}
@@ -1,127 +0,0 @@
package com.Ben12345rocks.VotingPlugin.VoteReminding;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardBuilder;
import com.Ben12345rocks.AdvancedCore.Util.Misc.PlayerUtils;
import com.Ben12345rocks.VotingPlugin.Main;
import com.Ben12345rocks.VotingPlugin.Config.Config;
import com.Ben12345rocks.VotingPlugin.Objects.User;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
// TODO: Auto-generated Javadoc
/**
* The Class VoteReminding.
*/
public class VoteReminding {
/** The instance. */
static VoteReminding instance = new VoteReminding();
/** The plugin. */
static Main plugin = Main.plugin;
/**
* Gets the single instance of VoteReminding.
*
* @return single instance of VoteReminding
*/
public static VoteReminding getInstance() {
return instance;
}
/**
* Instantiates a new vote reminding.
*/
private VoteReminding() {
}
/**
* Instantiates a new vote reminding.
*
* @param plugin
* the plugin
*/
public VoteReminding(Main plugin) {
VoteReminding.plugin = plugin;
}
/**
* Check remind.
*
* @param user
* the user
*/
public void checkRemind(User user) {
String playerName = user.getPlayerName();
if (PlayerUtils.getInstance().hasServerPermission(playerName, "VotingPlugin.Login.RemindVotes")
|| PlayerUtils.getInstance().hasServerPermission(playerName, "VotingPlugin.Player")) {
if (user.canVoteAll()) {
Player player = Bukkit.getPlayer(playerName);
if (player != null) {
if (!Config.getInstance().getVoteRemindingRemindOnlyOnce()) {
runRemind(user);
user.setReminded(true);
} else if (!user.isReminded()) {
runRemind(user);
user.setReminded(true);
}
}
}
}
}
private void giveReward(User user) {
new RewardBuilder(Config.getInstance().getData(), Config.getInstance().getVoteRemindingRewardsPath())
.setGiveOffline(false).send(user);
}
/**
* Load remind checking.
*/
public void loadRemindChecking() {
Bukkit.getScheduler().runTaskTimerAsynchronously(plugin, new Runnable() {
@Override
public void run() {
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
User user = UserManager.getInstance().getVotingPluginUser(player);
checkRemind(user);
}
}
}, 10, Config.getInstance().getVoteRemindingRemindDelay() * 20 * 60);
}
/**
* Run remind.
*
* @param user
* the user
*/
public void runRemind(User user) {
if (Config.getInstance().getVoteRemindingEnabled() && user.canVoteAll() && user.shouldBeReminded()) {
user.setReminded(true);
giveReward(user);
plugin.debug(user.getPlayerName() + " was reminded!");
}
}
public void runRemindLogin(User user) {
if (Config.getInstance().getVoteRemindingEnabled()
&& (!UserManager.getInstance().getAllUUIDs().contains(user.getUUID()) || user.canVoteAll())
&& user.shouldBeReminded()) {
giveReward(user);
if (user.getData().hasData()) {
user.setReminded(true);
}
plugin.debug(user.getPlayerName() + " was reminded!");
}
}
}
@@ -1,31 +0,0 @@
package com.Ben12345rocks.VotingPlugin;
import com.Ben12345rocks.AdvancedCore.Rewards.RewardHandler;
import com.Ben12345rocks.AdvancedCore.Rewards.Injected.RewardInject;
import com.Ben12345rocks.AdvancedCore.Rewards.InjectedRequirement.RequirementInject;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
public class VotingPluginHooks {
private static VotingPluginHooks instance = new VotingPluginHooks();
public static VotingPluginHooks getInstance() {
return instance;
}
public void addCustomRequirement(RequirementInject inject) {
RewardHandler.getInstance().addInjectedRequirements(inject);
}
public void addCustomReward(RewardInject inject) {
RewardHandler.getInstance().addInjectedReward(inject);
}
public Main getMainClass() {
return Main.plugin;
}
public UserManager getUserManager() {
return UserManager.getInstance();
}
}
@@ -1,187 +0,0 @@
package com.Ben12345rocks.VotingPlugin.bungee;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import com.Ben12345rocks.AdvancedCore.Util.Encryption.EncryptionHandler;
import com.Ben12345rocks.AdvancedCore.Util.Sockets.ClientHandler;
import com.Ben12345rocks.AdvancedCore.Util.Sockets.SocketHandler;
import com.Ben12345rocks.AdvancedCore.Util.Sockets.SocketReceiver;
import com.vexsoftware.votifier.bungee.events.VotifierEvent;
import com.vexsoftware.votifier.model.Vote;
import lombok.Getter;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.config.Configuration;
import net.md_5.bungee.event.EventHandler;
public class Bungee extends Plugin implements net.md_5.bungee.api.plugin.Listener {
@Getter
private Config config;
@Getter
private BungeeMySQL mysql;
private SocketHandler socketHandler;
private HashMap<String, ClientHandler> clientHandles;
private EncryptionHandler encryptionHandler;
@Override
public void onEnable() {
getProxy().getPluginManager().registerListener(this, this);
config = new Config(this);
config.load();
mysql = new BungeeMySQL("VotingPlugin_Users", config.getData());
// column types
getMysql().alterColumnType("TopVoterIgnore", "VARCHAR(5)");
getMysql().alterColumnType("CheckWorld", "VARCHAR(5)");
getMysql().alterColumnType("Reminded", "VARCHAR(5)");
getMysql().alterColumnType("DisableBroadcast", "VARCHAR(5)");
getMysql().alterColumnType("LastOnline", "VARCHAR(20)");
getMysql().alterColumnType("PlayerName", "VARCHAR(30)");
getMysql().alterColumnType("DailyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("WeeklyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("DayVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("BestDayVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("WeekVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("BestWeekVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("VotePartyVotes", "INT DEFAULT '0'");
getMysql().alterColumnType("MonthVoteStreak", "INT DEFAULT '0'");
getMysql().alterColumnType("Points", "INT DEFAULT '0'");
getMysql().alterColumnType("HighestDailyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("MileStoneTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("AllTimeTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("HighestMonthlyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("MilestoneCount", "INT DEFAULT '0'");
getMysql().alterColumnType("MonthTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("HighestWeeklyTotal", "INT DEFAULT '0'");
getMysql().alterColumnType("LastMonthTotal", "INT DEFAULT '0'");
getProxy().getPluginManager().registerCommand(this, new VotingPluginBungeeCommand(this));
encryptionHandler = new EncryptionHandler(new File(getDataFolder(), "secretkey.key"));
socketHandler = new SocketHandler(getDescription().getVersion(), config.getBungeeHost(), config.getBungeePort(),
encryptionHandler, config.getDebug());
socketHandler.add(new SocketReceiver() {
@Override
public void onReceive(String[] data) {
if (data.length > 1) {
if (data.length > 2) {
if (data[0].equalsIgnoreCase("Broadcast")) {
sendServerMessage(data);
}
}
}
}
});
socketHandler.add(new SocketReceiver() {
@Override
public void onReceive(String[] data) {
if (data.length > 1) {
if (data[0].equalsIgnoreCase("StatusOkay")) {
String server = data[1];
getLogger().info("Voting communicaton okay with " + server);
}
}
}
});
clientHandles = new HashMap<String, ClientHandler>();
List<String> l = config.getBlockedServers();
for (String s : config.getSpigotServers()) {
if (!l.contains(s)) {
Configuration d = config.getSpigotServerConfiguration(s);
clientHandles.put(s, new ClientHandler(d.getString("Host", ""), d.getInt("Port", 1298),
encryptionHandler, config.getDebug()));
}
}
}
public void reload() {
config.load();
}
@EventHandler
public void onVote(VotifierEvent event) {
Vote vote = event.getVote();
getLogger().info("Vote received " + vote.getUsername() + " from service site " + vote.getServiceName());
sendSocketVote(vote.getUsername(), vote.getServiceName());
}
public String getUUID(String playerName) {
ProxiedPlayer p = getProxy().getPlayer(playerName);
if (p != null && p.isConnected()) {
return p.getUniqueId().toString();
}
String str = mysql.getUUID(playerName);
if (str != null) {
return str;
}
return "";
}
public void sendSocketVote(String name, String service) {
String uuid = getUUID(name);
if (config.getSendVotesToAllServers()) {
// for (String send : getProxy().getServers().keySet()) {
// mysql.update(uuid, "Proxy_" + send, finalData, DataType.STRING);
// }
sendServerMessage("bungeevote", uuid, name, service);
if (config.getBroadcast()) {
sendServerMessage("BungeeBroadcast", service, uuid, name);
}
} else if (config.getSendToOnlineServer()) {
ProxiedPlayer p = getProxy().getPlayer(name);
String server = "";
if (p != null && p.isConnected()) {
server = p.getServer().getInfo().getName();
} else {
server = config.getFallBack();
}
if (config.getBlockedServers().contains(server)) {
server = config.getFallBack();
}
// mysql.update(uuid, "Proxy_Online", finalData, DataType.STRING);
sendServerMessageServer(server, "bungeevoteonline", uuid, name, service);
if (config.getBroadcast()) {
sendServerMessage("BungeeBroadcast", service, uuid, name);
}
}
}
public void sendServerMessage(String... messageData) {
for (ClientHandler h : clientHandles.values()) {
h.sendMessage(messageData);
}
}
public void sendServerMessageServer(String server, String... messageData) {
if (clientHandles.containsKey(server)) {
clientHandles.get(server).sendMessage(messageData);
}
}
public void status(CommandSender sender) {
sendServerMessage("status");
}
}
@@ -1,423 +0,0 @@
package com.Ben12345rocks.VotingPlugin.bungee;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import com.Ben12345rocks.AdvancedCore.UserStorage.mysql.api.queries.Query;
import com.Ben12345rocks.AdvancedCore.UserStorage.sql.Column;
import com.Ben12345rocks.AdvancedCore.UserStorage.sql.DataType;
import net.md_5.bungee.config.Configuration;
public class BungeeMySQL {
private com.Ben12345rocks.AdvancedCore.UserStorage.mysql.api.MySQL mysql;
private List<String> columns = Collections.synchronizedList(new ArrayList<String>());
// private HashMap<String, ArrayList<Column>> table;
// ConcurrentMap<String, ArrayList<Column>> table = new
// ConcurrentHashMap<String, ArrayList<Column>>();
private String name;
private Set<String> uuids = Collections.synchronizedSet(new HashSet<String>());
private Object object2 = new Object();
private Object object3 = new Object();
private Object object4 = new Object();
private List<String> intColumns = new ArrayList<String>();
public BungeeMySQL(String tableName, Configuration section) {
String tablePrefix = section.getString("Prefix");
String hostName = section.getString("Host");
int port = section.getInt("Port");
String user = section.getString("Username");
String pass = section.getString("Password");
String database = section.getString("Database");
long lifeTime = section.getLong("MaxLifeTime", -1);
int maxThreads = section.getInt("MaxConnections", 1);
String str = section.getString("Line", "");
if (maxThreads < 1) {
maxThreads = 1;
}
boolean useSSL = section.getBoolean("UseSSL", false);
if (!section.getString("Name", "").isEmpty()) {
tableName = section.getString("Name", "");
}
name = tableName;
if (tablePrefix != null) {
name = tablePrefix + tableName;
}
mysql = new com.Ben12345rocks.AdvancedCore.UserStorage.mysql.api.MySQL(maxThreads);
if (!mysql.connect(hostName, "" + port, user, pass, database, useSSL, lifeTime, str)) {
}
try {
Query q = new Query(mysql, "USE " + database + ";");
q.executeUpdateAsync();
} catch (SQLException e) {
e.printStackTrace();
}
String sql = "CREATE TABLE IF NOT EXISTS " + getName() + " (";
sql += "uuid VARCHAR(37),";
sql += "PRIMARY KEY ( uuid )";
sql += ");";
Query query;
try {
query = new Query(mysql, sql);
query.executeUpdateAsync();
} catch (SQLException e) {
e.printStackTrace();
}
loadData();
// tempoary to improve performance from old tables
// addToQue("ALTER TABLE " + getName() + " MODIFY uuid VARCHAR(37);");
alterColumnType("uuid", "VARCHAR(37)");
}
public void addColumn(String column, DataType dataType) {
synchronized (object3) {
String sql = "ALTER TABLE " + getName() + " ADD COLUMN " + column + " text" + ";";
try {
Query query = new Query(mysql, sql);
query.executeUpdate();
getColumns().add(column);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void alterColumnType(String column, String newType) {
checkColumn(column, DataType.STRING);
if (newType.contains("INT")) {
try {
new Query(mysql, "UPDATE " + getName() + " SET " + column + " = '0' where trim(coalesce(" + column
+ ", '')) = '';").executeUpdateAsync();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
;
if (!intColumns.contains(column)) {
intColumns.add(column);
}
}
try {
new Query(mysql, "ALTER TABLE " + getName() + " MODIFY " + column + " " + newType + ";")
.executeUpdateAsync();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String getUUID(String playerName) {
String query = "SELECT uuid FROM " + getName() + " WHERE " + "PlayerName" + "='" + playerName + "';";
try {
Query sql = new Query(mysql, query);
ResultSet rs = sql.executeQuery();
rs.next();
String uuid = rs.getString("uuid");
if (uuid != null && !uuid.isEmpty()) {
return uuid;
}
} catch (SQLException e) {
e.printStackTrace();
} catch (ArrayIndexOutOfBoundsException e) {
}
return null;
}
public String getProxyVotes(String uuid, String server) {
checkColumn("Proxy_" + server, DataType.STRING);
String query = "SELECT Proxy_" + server + " FROM " + getName() + " WHERE " + "uuid" + "='" + uuid + "';";
try {
Query sql = new Query(mysql, query);
ResultSet rs = sql.executeQuery();
rs.next();
String str = rs.getString("Proxy_" + server);
if (str != null && !str.isEmpty()) {
return str;
}
} catch (SQLException e) {
e.printStackTrace();
} catch (ArrayIndexOutOfBoundsException e) {
}
return null;
}
public void checkColumn(String column, DataType dataType) {
synchronized (object4) {
if (!getColumns().contains(column)) {
if (!getColumnsQueury().contains(column)) {
addColumn(column, dataType);
}
}
}
}
public void clearCache() {
clearCacheBasic();
}
public void clearCacheBasic() {
columns.clear();
columns.addAll(getColumnsQueury());
uuids.clear();
uuids.addAll(getUuidsQuery());
}
public void close() {
mysql.disconnect();
}
public boolean containsKeyQuery(String index) {
String sql = "SELECT uuid FROM " + getName() + ";";
try {
Query query = new Query(mysql, sql);
ResultSet rs = query.executeQuery();
while (rs.next()) {
if (rs.getString("uuid").equals(index)) {
return true;
}
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return false;
}
public List<String> getColumns() {
if (columns == null || columns.size() == 0) {
loadData();
}
return columns;
}
public ArrayList<String> getColumnsQueury() {
ArrayList<String> columns = new ArrayList<String>();
try {
Query query = new Query(mysql, "SELECT * FROM " + getName() + ";");
ResultSet rs = query.executeQuery();
ResultSetMetaData metadata = rs.getMetaData();
int columnCount = 0;
if (metadata != null) {
columnCount = metadata.getColumnCount();
for (int i = 1; i <= columnCount; i++) {
String columnName = metadata.getColumnName(i);
columns.add(columnName);
}
return columns;
}
} catch (SQLException e) {
e.printStackTrace();
}
return columns;
}
public ArrayList<Column> getExactQuery(Column column) {
ArrayList<Column> result = new ArrayList<>();
String query = "SELECT * FROM " + getName() + " WHERE `" + column.getName() + "`=?" + ";";
try {
Query sql = new Query(mysql, query);
sql.setParameter(1, column.getValue().toString());
ResultSet rs = sql.executeQuery();
rs.next();
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
String columnName = rs.getMetaData().getColumnLabel(i);
Column rCol = null;
if (intColumns.contains(columnName)) {
rCol = new Column(columnName, DataType.INTEGER);
} else {
rCol = new Column(columnName, DataType.STRING);
}
// System.out.println(i + " " +
// rs.getMetaData().getColumnLabel(i));
rCol.setValue(rs.getString(i));
// System.out.println(rCol.getValue());
result.add(rCol);
}
return result;
} catch (SQLException e) {
e.printStackTrace();
} catch (ArrayIndexOutOfBoundsException e) {
}
for (String col : getColumns()) {
result.add(new Column(col, DataType.STRING));
}
return result;
}
public String getName() {
return name;
}
public ArrayList<String> getNamesQuery() {
ArrayList<String> uuids = new ArrayList<String>();
checkColumn("PlayerName", DataType.STRING);
ArrayList<Column> rows = getRowsNameQuery();
if (rows != null) {
for (Column c : rows) {
uuids.add((String) c.getValue());
}
}
return uuids;
}
public ArrayList<Column> getRowsNameQuery() {
ArrayList<Column> result = new ArrayList<Column>();
String sql = "SELECT PlayerName FROM " + getName() + ";";
try {
Query query = new Query(mysql, sql);
ResultSet rs = query.executeQuery();
while (rs.next()) {
Column rCol = new Column("PlayerName", rs.getString("PlayerName"), DataType.STRING);
result.add(rCol);
}
} catch (SQLException e) {
}
return result;
}
public ArrayList<Column> getRowsQuery() {
ArrayList<Column> result = new ArrayList<Column>();
String sql = "SELECT uuid FROM " + getName() + ";";
try {
Query query = new Query(mysql, sql);
ResultSet rs = query.executeQuery();
while (rs.next()) {
Column rCol = new Column("uuid", rs.getString("uuid"), DataType.STRING);
result.add(rCol);
}
} catch (SQLException e) {
return null;
}
return result;
}
public Set<String> getUuids() {
if (uuids == null || uuids.size() == 0) {
uuids.clear();
uuids.addAll(getUuidsQuery());
return uuids;
}
return uuids;
}
public ArrayList<String> getUuidsQuery() {
ArrayList<String> uuids = new ArrayList<String>();
ArrayList<Column> rows = getRowsQuery();
for (Column c : rows) {
uuids.add((String) c.getValue());
}
return uuids;
}
public void insert(String index, String column, Object value, DataType dataType) {
insertQuery(index, column, value, dataType);
}
public void insertQuery(String index, String column, Object value, DataType dataType) {
synchronized (object2) {
String query = "INSERT " + getName() + " ";
query += "set uuid='" + index + "', ";
query += column + "='" + value.toString() + "';";
// AdvancedCorePlugin.getInstance().extraDebug(query);
try {
uuids.add(index);
new Query(mysql, query).executeUpdateAsync();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public boolean isIntColumn(String key) {
return intColumns.contains(key);
}
public void loadData() {
columns = getColumnsQueury();
try {
Connection con = mysql.getConnectionManager().getConnection();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void update(String index, String column, Object value, DataType dataType) {
checkColumn(column, dataType);
if (getUuids().contains(index)) {
synchronized (object2) {
String query = "UPDATE " + getName() + " SET ";
if (dataType == DataType.STRING) {
query += column + "='" + value.toString() + "'";
} else {
query += column + "=" + value;
}
query += " WHERE `uuid`=";
query += "'" + index + "';";
try {
Query q = new Query(mysql, query);
q.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
} else {
insert(index, column, value, dataType);
}
}
}
@@ -1,94 +0,0 @@
package com.Ben12345rocks.VotingPlugin.bungee;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.util.Collection;
import java.util.List;
import lombok.Getter;
import net.md_5.bungee.config.Configuration;
import net.md_5.bungee.config.ConfigurationProvider;
import net.md_5.bungee.config.YamlConfiguration;
public class Config {
private Bungee bungee;
@Getter
private Configuration data;
public Config(Bungee bungee) {
this.bungee = bungee;
}
public void load() {
if (!bungee.getDataFolder().exists())
bungee.getDataFolder().mkdir();
File file = new File(bungee.getDataFolder(), "bungeeconfig.yml");
if (!file.exists()) {
try (InputStream in = bungee.getResourceAsStream("bungeeconfig.yml")) {
Files.copy(in, file.toPath());
} catch (IOException e) {
e.printStackTrace();
}
}
try {
data = ConfigurationProvider.getProvider(YamlConfiguration.class)
.load(new File(bungee.getDataFolder(), "bungeeconfig.yml"));
} catch (IOException e) {
e.printStackTrace();
}
}
public void save() {
try {
ConfigurationProvider.getProvider(YamlConfiguration.class).save(data,
new File(bungee.getDataFolder(), "bungeeconfig.yml"));
} catch (IOException e) {
e.printStackTrace();
}
}
public boolean getSendVotesToAllServers() {
return getData().getBoolean("SendVotesToAllServers");
}
public boolean getSendToOnlineServer() {
return getData().getBoolean("SendToOnlineServer");
}
public String getBungeeHost() {
return getData().getString("BungeeServer.Host", "");
}
public int getBungeePort() {
return getData().getInt("BungeeServer.Port", 1297);
}
public Collection<String> getSpigotServers() {
return getData().getSection("SpigotServers").getKeys();
}
public List<String> getBlockedServers() {
return getData().getStringList("BlockedServers");
}
public boolean getBroadcast() {
return getData().getBoolean("Broadcast", false);
}
public boolean getDebug() {
return getData().getBoolean("Debug", false);
}
public String getFallBack() {
return getData().getString("FallBackServer", "");
}
public Configuration getSpigotServerConfiguration(String s) {
return getData().getSection("SpigotServers." + s);
}
}
@@ -1,47 +0,0 @@
package com.Ben12345rocks.VotingPlugin.bungee;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.plugin.Command;
public class VotingPluginBungeeCommand extends Command {
private Bungee bungee;
public VotingPluginBungeeCommand(Bungee bungee) {
super("votingpluginbungee", "votingplugin.admin");
this.bungee = bungee;
}
@Override
public void execute(CommandSender sender, String[] args) {
if (sender.hasPermission("votingplugin.admin")) {
if (args.length > 0) {
if (args[0].equalsIgnoreCase("reload")) {
bungee.reload();
sender.sendMessage(new TextComponent("Reloading VotingPluginBungee"));
}
if (args[0].equalsIgnoreCase("vote")) {
if (args.length >= 2) {
String user = args[1];
String site = args[2];
bungee.sendSocketVote(user, site);
sender.sendMessage(new TextComponent("Sending vote"));
}
}
if (args[0].equalsIgnoreCase("status")) {
sender.sendMessage(new TextComponent("Checking status, waiting for response, check console"));
bungee.status(sender);
}
if (args[0].equalsIgnoreCase("help")) {
TextComponent[] msg = new TextComponent[3];
msg[0] = new TextComponent("&avotingpluginbungee reload - Reload plugin");
msg[1] = new TextComponent("&avotingpluginbungee vote (player) (servicesite) - Send bungee vote");
msg[2] = new TextComponent("&avotingplugin status - Check socket connection status");
sender.sendMessage(msg);
}
}
} else {
sender.sendMessage(new TextComponent("You do not have permission to do this!"));
}
}
}
+992
View File
@@ -0,0 +1,992 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>All Classes and Interfaces (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="class index">
<meta name="generator" content="javadoc/AllClassesIndexWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="all-classes-index-page">
<script type="text/javascript">var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="index.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html#all-classes">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="All Classes and Interfaces" class="title">All Classes and Interfaces</h1>
</div>
<div id="all-classes-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="all-classes-table-tab0" role="tab" aria-selected="true" aria-controls="all-classes-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="all-classes-table-tab1" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab1', 2)" class="table-tab">Interfaces</button><button id="all-classes-table-tab2" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab2', 2)" class="table-tab">Classes</button><button id="all-classes-table-tab3" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab3', 2)" class="table-tab">Enum Classes</button></div>
<div id="all-classes-table.tabpanel" role="tabpanel" aria-labelledby="all-classes-table-tab0">
<div class="summary-table two-column-summary">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/AdminGUI.html" title="class in com.bencodez.votingplugin.commands.gui">AdminGUI</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin GUI handler for the voting plugin.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/AdminVoteConfirmation.html" title="class in com.bencodez.votingplugin.commands.gui.admin">AdminVoteConfirmation</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Abstract class for admin vote confirmation dialogs.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/AdminVoteHelp.html" title="class in com.bencodez.votingplugin.commands.gui.admin">AdminVoteHelp</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin help GUI handler.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/votelog/AdminVoteLogEventSelect.html" title="class in com.bencodez.votingplugin.commands.gui.admin.votelog">AdminVoteLogEventSelect</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin GUI: Select an event filter, then open AdminVoteLogRecent (filtered).</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/votelog/AdminVoteLogHelpers.html" title="class in com.bencodez.votingplugin.commands.gui.admin.votelog">AdminVoteLogHelpers</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Helper class for admin vote log GUI operations.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/votelog/AdminVoteLogMenu.html" title="class in com.bencodez.votingplugin.commands.gui.admin.votelog">AdminVoteLogMenu</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin vote log menu GUI handler.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/votelog/AdminVoteLogPlayer.html" title="class in com.bencodez.votingplugin.commands.gui.admin.votelog">AdminVoteLogPlayer</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin GUI: VoteLog entries for a given player (paged).</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/votelog/AdminVoteLogPlayerSelect.html" title="class in com.bencodez.votingplugin.commands.gui.admin.votelog">AdminVoteLogPlayerSelect</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin GUI: Select an ONLINE player, then open AdminVoteLogPlayer.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/votelog/AdminVoteLogPlayerSelectOnline.html" title="class in com.bencodez.votingplugin.commands.gui.admin.votelog">AdminVoteLogPlayerSelectOnline</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin GUI: Select an ONLINE player, then open AdminVoteLogPlayer.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/votelog/AdminVoteLogRecent.html" title="class in com.bencodez.votingplugin.commands.gui.admin.votelog">AdminVoteLogRecent</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin GUI: Recent VoteLog entries (paged).</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/votelog/AdminVoteLogServer.html" title="class in com.bencodez.votingplugin.commands.gui.admin.votelog">AdminVoteLogServer</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin GUI: VoteLog entries for a given server (paged).</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/votelog/AdminVoteLogServerSelect.html" title="class in com.bencodez.votingplugin.commands.gui.admin.votelog">AdminVoteLogServerSelect</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin GUI: Select a server (distinct list), then open AdminVoteLogServer.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/votelog/AdminVoteLogService.html" title="class in com.bencodez.votingplugin.commands.gui.admin.votelog">AdminVoteLogService</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin GUI: VoteLog entries for a given service/site (paged).</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/votelog/AdminVoteLogServiceSelect.html" title="class in com.bencodez.votingplugin.commands.gui.admin.votelog">AdminVoteLogServiceSelect</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin GUI: Select a service (distinct list), then open AdminVoteLogService.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/votelog/AdminVoteLogServiceSelectAll.html" title="class in com.bencodez.votingplugin.commands.gui.admin.votelog">AdminVoteLogServiceSelectAll</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin GUI: Select a service from DB (distinct services), then open
AdminVoteLogService.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/votelog/AdminVoteLogStats.html" title="class in com.bencodez.votingplugin.commands.gui.admin.votelog">AdminVoteLogStats</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin GUI: VoteLog stats overview.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/votelog/AdminVoteLogVoteId.html" title="class in com.bencodez.votingplugin.commands.gui.admin.votelog">AdminVoteLogVoteId</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin GUI: VoteLog entries for a given voteId (paged).</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/AdminVotePerms.html" title="class in com.bencodez.votingplugin.commands.gui.admin">AdminVotePerms</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin permissions GUI handler.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/AdminVotePlaceholders.html" title="class in com.bencodez.votingplugin.commands.gui.admin">AdminVotePlaceholders</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin placeholders GUI handler.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/AdminVotePlaceholdersPlayer.html" title="class in com.bencodez.votingplugin.commands.gui.admin">AdminVotePlaceholdersPlayer</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin placeholders player GUI handler.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/tabcompleter/AdminVoteTabCompleter.html" title="class in com.bencodez.votingplugin.commands.tabcompleter">AdminVoteTabCompleter</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class AdminVoteTabCompleter.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/AdminVoteTopPoints.html" title="class in com.bencodez.votingplugin.commands.gui.admin">AdminVoteTopPoints</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin top points GUI handler.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/milestones/AdminVoteVoteMilestoneRemove.html" title="class in com.bencodez.votingplugin.commands.gui.admin.milestones">AdminVoteVoteMilestoneRemove</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin vote milestone remove GUI handler.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/milestones/AdminVoteVoteMilestones.html" title="class in com.bencodez.votingplugin.commands.gui.admin.milestones">AdminVoteVoteMilestones</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin vote milestones GUI handler.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/AdminVoteVoteParty.html" title="class in com.bencodez.votingplugin.commands.gui.admin">AdminVoteVoteParty</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin vote party GUI handler.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/AdminVoteVotePlayer.html" title="class in com.bencodez.votingplugin.commands.gui.admin">AdminVoteVotePlayer</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin vote player GUI handler.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/voteshop/AdminVoteVoteShop.html" title="class in com.bencodez.votingplugin.commands.gui.admin.voteshop">AdminVoteVoteShop</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin vote shop GUI handler.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/voteshop/AdminVoteVoteShopCategories.html" title="class in com.bencodez.votingplugin.commands.gui.admin.voteshop">AdminVoteVoteShopCategories</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin vote shop categories GUI handler.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/voteshop/AdminVoteVoteShopCategory.html" title="class in com.bencodez.votingplugin.commands.gui.admin.voteshop">AdminVoteVoteShopCategory</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin vote shop category GUI handler.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/voteshop/AdminVoteVoteShopCategoryRemove.html" title="class in com.bencodez.votingplugin.commands.gui.admin.voteshop">AdminVoteVoteShopCategoryRemove</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin vote shop category remove GUI handler.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/voteshop/AdminVoteVoteShopItem.html" title="class in com.bencodez.votingplugin.commands.gui.admin.voteshop">AdminVoteVoteShopItem</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin vote shop item GUI handler.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/voteshop/AdminVoteVoteShopItemRemove.html" title="class in com.bencodez.votingplugin.commands.gui.admin.voteshop">AdminVoteVoteShopItemRemove</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin vote shop item remove GUI handler.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/admin/voteshop/AdminVoteVoteShopItems.html" title="class in com.bencodez.votingplugin.commands.gui.admin.voteshop">AdminVoteVoteShopItems</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Admin vote shop items GUI handler.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/tabcompleter/AliasCommandFilterListener.html" title="class in com.bencodez.votingplugin.commands.tabcompleter">AliasCommandFilterListener</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Filters VotingPlugin command aliases from tab completion when aliases are
disabled.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/tabcompleter/AliasesTabCompleter.html" title="class in com.bencodez.votingplugin.commands.tabcompleter">AliasesTabCompleter</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class AliasesTabCompleter.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/specialrewards/votemilestones/AtMatcher.html" title="class in com.bencodez.votingplugin.specialrewards.votemilestones">AtMatcher</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Supports: - At: 0 - At: 50 - At: [20, 50, 100] - At: - 10..200 step 10 - 250
Stateless evaluation: matches based solely on newTotal.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/listeners/BlockBreak.html" title="class in com.bencodez.votingplugin.listeners">BlockBreak</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class BlockBreak.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/broadcast/BroadcastFormat.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastFormat</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Defines HOW vote broadcasts are rendered.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/broadcast/BroadcastHandler.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastHandler</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Core broadcast logic.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/broadcast/BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Immutable broadcast configuration.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/bungee/BStatsMetricsBungee.html" title="class in com.bencodez.votingplugin.proxy.bungee">BStatsMetricsBungee</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">bStats collects some data for plugin authors.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/bungee/BStatsMetricsBungee.AdvancedBarChart.html" title="class in com.bencodez.votingplugin.proxy.bungee">BStatsMetricsBungee.AdvancedBarChart</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a custom advanced bar chart.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/bungee/BStatsMetricsBungee.AdvancedPie.html" title="class in com.bencodez.votingplugin.proxy.bungee">BStatsMetricsBungee.AdvancedPie</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a custom advanced pie.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/bungee/BStatsMetricsBungee.CustomChart.html" title="class in com.bencodez.votingplugin.proxy.bungee">BStatsMetricsBungee.CustomChart</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a custom chart.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/bungee/BStatsMetricsBungee.DrilldownPie.html" title="class in com.bencodez.votingplugin.proxy.bungee">BStatsMetricsBungee.DrilldownPie</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a custom drilldown pie.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/bungee/BStatsMetricsBungee.MultiLineChart.html" title="class in com.bencodez.votingplugin.proxy.bungee">BStatsMetricsBungee.MultiLineChart</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a custom multi line chart.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/bungee/BStatsMetricsBungee.SimpleBarChart.html" title="class in com.bencodez.votingplugin.proxy.bungee">BStatsMetricsBungee.SimpleBarChart</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a custom simple bar chart.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/bungee/BStatsMetricsBungee.SimplePie.html" title="class in com.bencodez.votingplugin.proxy.bungee">BStatsMetricsBungee.SimplePie</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a custom simple pie.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/bungee/BStatsMetricsBungee.SingleLineChart.html" title="class in com.bencodez.votingplugin.proxy.bungee">BStatsMetricsBungee.SingleLineChart</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a custom single line chart.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/bungee/BungeeConfig.html" title="class in com.bencodez.votingplugin.proxy.bungee">BungeeConfig</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Configuration implementation for Bungee proxy server.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/BungeeHandler.html" title="class in com.bencodez.votingplugin">BungeeHandler</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Handler for Bungee/proxy server integration.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/bungee/BungeeJsonNonVotedPlayersCache.html" title="class in com.bencodez.votingplugin.proxy.bungee">BungeeJsonNonVotedPlayersCache</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">JSON file-based storage for non-voted players cache on Bungee.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/bungee/BungeeJsonVoteCache.html" title="class in com.bencodez.votingplugin.proxy.bungee">BungeeJsonVoteCache</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">JSON file-based vote cache for Bungee.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/proxy/BungeeMethod.html" title="enum class in com.bencodez.votingplugin.proxy">BungeeMethod</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
<div class="block">Enumeration of available Bungee connection methods.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/config/BungeeSettings.html" title="class in com.bencodez.votingplugin.config">BungeeSettings</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Configuration file for Bungee/proxy settings.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/updater/CheckUpdate.html" title="class in com.bencodez.votingplugin.updater">CheckUpdate</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class CheckUpdate.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/executers/CommandAdminVote.html" title="class in com.bencodez.votingplugin.commands.executers">CommandAdminVote</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class CommandAdminVote.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/executers/CommandAliases.html" title="class in com.bencodez.votingplugin.commands.executers">CommandAliases</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class CommandAliases.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/CommandLoader.html" title="class in com.bencodez.votingplugin.commands">CommandLoader</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class CommandLoader.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/executers/CommandVote.html" title="class in com.bencodez.votingplugin.commands.executers">CommandVote</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class CommandVote.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/config/Config.html" title="class in com.bencodez.votingplugin.config">Config</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class Config.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/cache/ConfigDataNode.html" title="class in com.bencodez.votingplugin.proxy.cache">ConfigDataNode</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">ConfigurationNode-based implementation of DataNode.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/config/ConfigVoteSites.html" title="class in com.bencodez.votingplugin.config">ConfigVoteSites</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class ConfigVoteSites.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/cooldown/CoolDownCheck.html" title="class in com.bencodez.votingplugin.cooldown">CoolDownCheck</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Manages cooldown checks for vote rewards.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="com/bencodez/votingplugin/proxy/cache/DataNode.html" title="interface in com.bencodez.votingplugin.proxy.cache">DataNode</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
<div class="block">Interface for data node operations.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/discord/DiscordHandler.html" title="class in com.bencodez.votingplugin.discord">DiscordHandler</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Handler for Discord integration.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/webhook/DiscordRateLimitUtil.html" title="class in com.bencodez.votingplugin.webhook">DiscordRateLimitUtil</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Utility methods for handling Discord webhook rate-limit responses.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/webhook/DiscordWebhookPayloadBuilder.html" title="class in com.bencodez.votingplugin.webhook">DiscordWebhookPayloadBuilder</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Builds Discord-compatible webhook JSON payloads.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/presets/DisplayInfo.html" title="class in com.bencodez.votingplugin.presets">DisplayInfo</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents display information for a preset.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/presets/Fragment.html" title="class in com.bencodez.votingplugin.presets">Fragment</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a fragment defined in a preset meta JSON file.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/presets/GitHubVoteSitePresetLoader.html" title="class in com.bencodez.votingplugin.presets">GitHubVoteSitePresetLoader</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Utility class for loading vote site presets from GitHub.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/cache/GsonDataNode.html" title="class in com.bencodez.votingplugin.proxy.cache">GsonDataNode</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Implementation of DataNode using Google Gson.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/config/GUI.html" title="class in com.bencodez.votingplugin.config">GUI</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">GUI configuration.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="com/bencodez/votingplugin/proxy/cache/nonvoted/INonVotedPlayersStorage.html" title="interface in com.bencodez.votingplugin.proxy.cache.nonvoted">INonVotedPlayersStorage</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
<div class="block">Interface for storing non-voted players data.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/cache/nonvoted/INonVotedPlayersStorage.NonVotedPlayerEntry.html" title="class in com.bencodez.votingplugin.proxy.cache.nonvoted">INonVotedPlayersStorage.NonVotedPlayerEntry</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Entry for a non-voted player.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="com/bencodez/votingplugin/proxy/cache/IVoteCache.html" title="interface in com.bencodez.votingplugin.proxy.cache">IVoteCache</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
<div class="block">Interface for vote caching operations.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/presets/MatchInfo.html" title="class in com.bencodez.votingplugin.presets">MatchInfo</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents matching information for a preset.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/multiproxy/MultiProxyHandler.html" title="class in com.bencodez.votingplugin.proxy.multiproxy">MultiProxyHandler</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Abstract handler for multi-proxy support.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/proxy/multiproxy/MultiProxyMethod.html" title="enum class in com.bencodez.votingplugin.proxy.multiproxy">MultiProxyMethod</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab3">
<div class="block">Multi-proxy communication methods.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="com/bencodez/votingplugin/proxy/multiproxy/MultiProxyServerSocketConfiguration.html" title="interface in com.bencodez.votingplugin.proxy.multiproxy">MultiProxyServerSocketConfiguration</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
<div class="block">Configuration for a multi-proxy server socket.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/multiproxy/MultiProxyServerSocketConfigurationBungee.html" title="class in com.bencodez.votingplugin.proxy.multiproxy">MultiProxyServerSocketConfigurationBungee</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Multi-proxy server socket configuration for Bungee.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/multiproxy/MultiProxyServerSocketConfigurationVelocity.html" title="class in com.bencodez.votingplugin.proxy.multiproxy">MultiProxyServerSocketConfigurationVelocity</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Multi-proxy server socket configuration for Velocity.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/placeholders/MVdWPlaceholders.html" title="class in com.bencodez.votingplugin.placeholders">MVdWPlaceholders</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class PlaceHolders.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/cache/nonvoted/MySQLNonVotedPlayersStorage.html" title="class in com.bencodez.votingplugin.proxy.cache.nonvoted">MySQLNonVotedPlayersStorage</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">MySQL storage for non-voted players.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/specialrewards/NameMCLikeCheckerTask.html" title="class in com.bencodez.votingplugin.specialrewards">NameMCLikeCheckerTask</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Periodically checks NameMC likes for the configured server and gives a
one-time reward to players who have not claimed it yet.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votesites/NextSite.html" title="class in com.bencodez.votingplugin.votesites">NextSite</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents the next available vote site.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/cache/nonvoted/NonVotedPlayersCache.html" title="class in com.bencodez.votingplugin.proxy.cache.nonvoted">NonVotedPlayersCache</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Cache for players who haven't voted yet.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/OfflineBungeeVote.html" title="class in com.bencodez.votingplugin.proxy">OfflineBungeeVote</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents an offline bungee vote.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/proxy/broadcast/OfflineMode.html" title="enum class in com.bencodez.votingplugin.proxy.broadcast">OfflineMode</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab3">
<div class="block">Enum for offline broadcast modes.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/placeholders/PlaceholderCacheLevel.html" title="enum class in com.bencodez.votingplugin.placeholders">PlaceholderCacheLevel</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
<div class="block">Enum for placeholder cache levels.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/presets/PlaceholderDef.html" title="class in com.bencodez.votingplugin.presets">PlaceholderDef</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a placeholder definition loaded from a preset meta JSON file.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="com/bencodez/votingplugin/webhook/PlaceholderExpander.html" title="interface in com.bencodez.votingplugin.webhook">PlaceholderExpander</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
<div class="block">Placeholder expansion abstraction.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/placeholders/PlaceHolders.html" title="class in com.bencodez.votingplugin.placeholders">PlaceHolders</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class PlaceHolders.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/listeners/PlayerInteract.html" title="class in com.bencodez.votingplugin.listeners">PlayerInteract</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class PlayerInteract.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/listeners/PlayerJoinEvent.html" title="class in com.bencodez.votingplugin.listeners">PlayerJoinEvent</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class PlayerJoinEvent.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/events/PlayerPostVoteEvent.html" title="class in com.bencodez.votingplugin.events">PlayerPostVoteEvent</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class PlayerVoteEvent.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votelog/listeners/PlayerPostVoteLoggerListener.html" title="class in com.bencodez.votingplugin.votelog.listeners">PlayerPostVoteLoggerListener</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Listener for logging player post-vote events.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/events/PlayerReceivePointsEvent.html" title="class in com.bencodez.votingplugin.events">PlayerReceivePointsEvent</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class PlayerVoteEvent.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/events/PlayerSpecialRewardEvent.html" title="class in com.bencodez.votingplugin.events">PlayerSpecialRewardEvent</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class PlayerVoteEvent.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votelog/listeners/PlayerSpecialRewardLoggerListener.html" title="class in com.bencodez.votingplugin.votelog.listeners">PlayerSpecialRewardLoggerListener</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Listener for logging player special reward events.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/events/PlayerVoteCoolDownEndEvent.html" title="class in com.bencodez.votingplugin.events">PlayerVoteCoolDownEndEvent</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class PlayerVoteEvent.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/events/PlayerVoteEvent.html" title="class in com.bencodez.votingplugin.events">PlayerVoteEvent</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class PlayerVoteEvent.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/listeners/PlayerVoteListener.html" title="class in com.bencodez.votingplugin.listeners">PlayerVoteListener</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class VotiferEvent.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/events/PlayerVoteSiteCoolDownEndEvent.html" title="class in com.bencodez.votingplugin.events">PlayerVoteSiteCoolDownEndEvent</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class PlayerVoteEvent.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/broadcast/ProxyBroadcastDecider.html" title="class in com.bencodez.votingplugin.proxy.broadcast">ProxyBroadcastDecider</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Decides where vote broadcasts should execute (proxy-side routing only).</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/ProxyMysqlUserTable.html" title="class in com.bencodez.votingplugin.proxy">ProxyMysqlUserTable</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Proxy MySQL user table for managing voting plugin user data.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/cache/nonvoted/ProxyNonVotedPlayersTable.html" title="class in com.bencodez.votingplugin.proxy.cache.nonvoted">ProxyNonVotedPlayersTable</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Table for tracking non-voted players in the proxy cache.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/cache/nonvoted/ProxyNonVotedPlayersTable.NonVotedPlayerRow.html" title="class in com.bencodez.votingplugin.proxy.cache.nonvoted">ProxyNonVotedPlayersTable.NonVotedPlayerRow</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a row in the non-voted players table.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/cache/ProxyOnlineVoteCacheTable.html" title="class in com.bencodez.votingplugin.proxy.cache">ProxyOnlineVoteCacheTable</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Table for caching online votes in the proxy.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/cache/ProxyOnlineVoteCacheTable.VoteRow.html" title="class in com.bencodez.votingplugin.proxy.cache">ProxyOnlineVoteCacheTable.VoteRow</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a row in the online vote cache table.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/cache/ProxyTimedVoteCacheTable.html" title="class in com.bencodez.votingplugin.proxy.cache">ProxyTimedVoteCacheTable</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Table for caching timed votes in the proxy.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/cache/ProxyTimedVoteCacheTable.TimedVoteRow.html" title="class in com.bencodez.votingplugin.proxy.cache">ProxyTimedVoteCacheTable.TimedVoteRow</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a row in the timed vote cache table.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/cache/ProxyVoteCacheTable.html" title="class in com.bencodez.votingplugin.proxy.cache">ProxyVoteCacheTable</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Proxy vote cache (per-server cached votes).</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/cache/ProxyVoteCacheTable.VoteRow.html" title="class in com.bencodez.votingplugin.proxy.cache">ProxyVoteCacheTable.VoteRow</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a row in the vote cache table.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/listeners/ProxyVoteDelayCheck.html" title="class in com.bencodez.votingplugin.listeners">ProxyVoteDelayCheck</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Handles the WaitUntilVoteDelay exception for votes queued by a proxy.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/listeners/ProxyVotifierEvent.html" title="class in com.bencodez.votingplugin.listeners">ProxyVotifierEvent</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Handler for triggering Bungee Votifier events.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/specialrewards/votemilestones/RangeSpec.html" title="class in com.bencodez.votingplugin.specialrewards.votemilestones">RangeSpec</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Parses: - "10..200 step 10" - "10..200"
Expands to discrete values (simple + predictable for server owners).</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/proxy/broadcast/ScopeMode.html" title="enum class in com.bencodez.votingplugin.proxy.broadcast">ScopeMode</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
<div class="block">Proxy-side routing scope for broadcast triggers.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/data/ServerData.html" title="class in com.bencodez.votingplugin.data">ServerData</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class ServerData.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/servicesites/ServiceSiteHandler.html" title="class in com.bencodez.votingplugin.servicesites">ServiceSiteHandler</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Handles service site name/value mappings.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/config/ShopFile.html" title="class in com.bencodez.votingplugin.config">ShopFile</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The ShopFile class manages the vote shop configuration.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/listeners/SignChange.html" title="class in com.bencodez.votingplugin.listeners">SignChange</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class SignChange.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/signs/SignHandler.html" title="class in com.bencodez.votingplugin.signs">SignHandler</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class SignHandler.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/signs/Signs.html" title="class in com.bencodez.votingplugin.signs">Signs</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class Signs.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/specialrewards/SpecialRewards.html" title="class in com.bencodez.votingplugin.specialrewards">SpecialRewards</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class OtherVoteReward.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/config/SpecialRewardsConfig.html" title="class in com.bencodez.votingplugin.config">SpecialRewardsConfig</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The SpecialRewardsConfig class manages special rewards configuration.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/events/SpecialRewardType.html" title="enum class in com.bencodez.votingplugin.events">SpecialRewardType</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab3">
<div class="block">Enumeration for different special reward types.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/timequeue/TimeQueueHandler.html" title="class in com.bencodez.votingplugin.timequeue">TimeQueueHandler</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The TimeQueueHandler class manages time-based vote queue processing.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/topvoter/TopVoter.html" title="enum class in com.bencodez.votingplugin.topvoter">TopVoter</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab3">
<div class="block">Enumeration for different top voter time periods.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/topvoter/TopVoterHandler.html" title="class in com.bencodez.votingplugin.topvoter">TopVoterHandler</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Handles top voter rankings and statistics.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/topvoter/TopVoterPlayer.html" title="class in com.bencodez.votingplugin.topvoter">TopVoterPlayer</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a top voter player with ranking information.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votereminding/store/UserDataVoteReminderCooldownStore.html" title="class in com.bencodez.votingplugin.votereminding.store">UserDataVoteReminderCooldownStore</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Uses VotingPluginUser.getUserData() cached columns:
- VoteRemindersLast (BIGINT)
- VoteRemindersMap (LONGTEXT) format: name=ms;name=ms
NOTE: tryClaimGlobal is best-effort and not proxy-atomic unless your storage layer
supports conditional updates.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/user/UserManager.html" title="class in com.bencodez.votingplugin.user">UserManager</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Manages VotingPlugin user operations and data.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/velocity/VelocityConfig.html" title="class in com.bencodez.votingplugin.proxy.velocity">VelocityConfig</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Configuration file handler for Velocity proxy.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/velocity/VelocityJsonNonVotedPlayersCache.html" title="class in com.bencodez.votingplugin.proxy.velocity">VelocityJsonNonVotedPlayersCache</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">JSON-based non-voted players cache for Velocity proxy.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/velocity/VelocityJsonVoteCache.html" title="class in com.bencodez.votingplugin.proxy.velocity">VelocityJsonVoteCache</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">JSON-based vote cache implementation for Velocity proxy.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/player/VoteBest.html" title="class in com.bencodez.votingplugin.commands.gui.player">VoteBest</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">GUI handler for vote best/streak display.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/broadcast/VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
<div class="block">Defines WHEN vote broadcasts occur.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/cache/VoteCacheHandler.html" title="class in com.bencodez.votingplugin.proxy.cache">VoteCacheHandler</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Handles caching of votes for proxy servers.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/bungee/VoteEventBungee.html" title="class in com.bencodez.votingplugin.proxy.bungee">VoteEventBungee</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Handles vote events from Bungee proxy.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/velocity/VoteEventVelocity.html" title="class in com.bencodez.votingplugin.proxy.velocity">VoteEventVelocity</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Handles vote events from Velocity proxy.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/player/VoteGUI.html" title="class in com.bencodez.votingplugin.commands.gui.player">VoteGUI</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">GUI handler for vote interface.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/player/VoteHelp.html" title="class in com.bencodez.votingplugin.commands.gui.player">VoteHelp</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">GUI handler for vote help display.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/player/VoteLast.html" title="class in com.bencodez.votingplugin.commands.gui.player">VoteLast</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">GUI handler for displaying last vote information.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votelog/VoteLogMysqlTable.html" title="class in com.bencodez.votingplugin.votelog">VoteLogMysqlTable</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Vote log table usable from BOTH proxy and backend.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votelog/VoteLogMysqlTable.ServerCount.html" title="class in com.bencodez.votingplugin.votelog">VoteLogMysqlTable.ServerCount</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Holds server name and vote count.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votelog/VoteLogMysqlTable.ServiceCount.html" title="class in com.bencodez.votingplugin.votelog">VoteLogMysqlTable.ServiceCount</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Holds service name and vote count.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votelog/VoteLogMysqlTable.VoteLogCounts.html" title="class in com.bencodez.votingplugin.votelog">VoteLogMysqlTable.VoteLogCounts</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Holds vote count statistics.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votelog/VoteLogMysqlTable.VoteLogEntry.html" title="class in com.bencodez.votingplugin.votelog">VoteLogMysqlTable.VoteLogEntry</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a single vote log entry from the database.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/votelog/VoteLogMysqlTable.VoteLogEvent.html" title="enum class in com.bencodez.votingplugin.votelog">VoteLogMysqlTable.VoteLogEvent</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
<div class="block">Event types that can be logged in the vote log.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/votelog/VoteLogMysqlTable.VoteLogStatus.html" title="enum class in com.bencodez.votingplugin.votelog">VoteLogMysqlTable.VoteLogStatus</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab3">
<div class="block">Status types for vote processing.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/specialrewards/votemilestones/VoteMilestone.html" title="class in com.bencodez.votingplugin.specialrewards.votemilestones">VoteMilestone</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a single VoteMilestone entry.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/specialrewards/votemilestones/VoteMilestoneGroupParser.html" title="class in com.bencodez.votingplugin.specialrewards.votemilestones">VoteMilestoneGroupParser</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Utility class for parsing vote milestone group configuration.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/specialrewards/votemilestones/VoteMilestoneGroupSelect.html" title="enum class in com.bencodez.votingplugin.specialrewards.votemilestones">VoteMilestoneGroupSelect</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
<div class="block">Enum for selecting which milestones to trigger when multiple match in a group.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/specialrewards/votemilestones/VoteMilestoneLimit.html" title="class in com.bencodez.votingplugin.specialrewards.votemilestones">VoteMilestoneLimit</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Per-milestone retrigger limiter.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/specialrewards/votemilestones/VoteMilestoneLimit.Type.html" title="enum class in com.bencodez.votingplugin.specialrewards.votemilestones">VoteMilestoneLimit.Type</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
<div class="block">Limit types for milestone retriggering.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/events/VoteMilestoneRewardEvent.html" title="class in com.bencodez.votingplugin.events">VoteMilestoneRewardEvent</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Fired after a VoteMilestone reward has been executed successfully.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/specialrewards/votemilestones/VoteMilestonesConfig.html" title="class in com.bencodez.votingplugin.specialrewards.votemilestones">VoteMilestonesConfig</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Configuration for vote milestones.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/specialrewards/votemilestones/VoteMilestonesManager.html" title="class in com.bencodez.votingplugin.specialrewards.votemilestones">VoteMilestonesManager</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Evaluates VoteMilestones on each vote.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/specialrewards/votemilestones/VoteMilestonesMigrator.html" title="class in com.bencodez.votingplugin.specialrewards.votemilestones">VoteMilestonesMigrator</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Legacy migration: - Uses SpecialRewards.yml root as the reward container so
reward paths can be absolute. - FirstVote / FirstVoteToday: rewards are on
the section itself (no "Rewards" child) - Cumulative / MileStones: rewards
are under "...Rewards" - Totals are mapped into VoteMilestoneTotal (votes +
points + legacy counter)
Adds per-milestone Limit support (default NONE).</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/specialrewards/votemilestones/VoteMilestoneTotal.html" title="enum class in com.bencodez.votingplugin.specialrewards.votemilestones">VoteMilestoneTotal</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab3">
<div class="block">Defines what numeric value a VoteMilestone evaluates against.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votelog/listeners/VoteMilestoneVoteLogListener.html" title="class in com.bencodez.votingplugin.votelog.listeners">VoteMilestoneVoteLogListener</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Logs VoteMilestone reward executions to the VoteLog table.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/player/VoteNext.html" title="class in com.bencodez.votingplugin.commands.gui.player">VoteNext</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">GUI handler for displaying next vote information.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/specialrewards/voteparty/VoteParty.html" title="class in com.bencodez.votingplugin.specialrewards.voteparty">VoteParty</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class VoteParty.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/events/VotePartyEvent.html" title="class in com.bencodez.votingplugin.events">VotePartyEvent</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class PlayerVoteEvent.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="com/bencodez/votingplugin/votereminding/store/VoteReminderCooldownStore.html" title="interface in com.bencodez.votingplugin.votereminding.store">VoteReminderCooldownStore</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
<div class="block">Interface for storing and managing vote reminder cooldowns.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votereminding/VoteRemindersLegacyMigrator.html" title="class in com.bencodez.votingplugin.votereminding">VoteRemindersLegacyMigrator</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Utility class for migrating legacy vote reminding configuration to the new format.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votereminding/VoteRemindersListener.html" title="class in com.bencodez.votingplugin.votereminding">VoteRemindersListener</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Listener for vote reminder events.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votereminding/VoteRemindersManager.html" title="class in com.bencodez.votingplugin.votereminding">VoteRemindersManager</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">VoteReminders core manager (no Bukkit repeating tasks).</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votereminding/VoteRemindersManager.VoteReminderConditions.html" title="class in com.bencodez.votingplugin.votereminding">VoteRemindersManager.VoteReminderConditions</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votereminding/VoteRemindersManager.VoteReminderCooldowns.html" title="class in com.bencodez.votingplugin.votereminding">VoteRemindersManager.VoteReminderCooldowns</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votereminding/VoteRemindersManager.VoteReminderDefinition.html" title="class in com.bencodez.votingplugin.votereminding">VoteRemindersManager.VoteReminderDefinition</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votereminding/VoteRemindersManager.VoteReminderOptions.html" title="class in com.bencodez.votingplugin.votereminding">VoteRemindersManager.VoteReminderOptions</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/votereminding/VoteRemindersManager.VoteReminderType.html" title="enum class in com.bencodez.votingplugin.votereminding">VoteRemindersManager.VoteReminderType</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/player/VoteShop.html" title="class in com.bencodez.votingplugin.commands.gui.player">VoteShop</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Main vote shop GUI.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/voteshop/shop/VoteShopCategory.html" title="class in com.bencodez.votingplugin.voteshop.shop">VoteShopCategory</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Vote shop category.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/voteshop/shop/VoteShopCategoryButton.html" title="class in com.bencodez.votingplugin.voteshop.shop">VoteShopCategoryButton</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Vote shop entry that opens a category.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/player/VoteShopCategoryMenu.html" title="class in com.bencodez.votingplugin.commands.gui.player">VoteShopCategoryMenu</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Vote shop category GUI.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/player/VoteShopConfirm.html" title="class in com.bencodez.votingplugin.commands.gui.player">VoteShopConfirm</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Confirmation GUI for vote shop purchases.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/voteshop/shop/VoteShopDefinition.html" title="class in com.bencodez.votingplugin.voteshop.shop">VoteShopDefinition</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Full vote shop definition.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/voteshop/shop/VoteShopEntry.html" title="class in com.bencodez.votingplugin.voteshop.shop">VoteShopEntry</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Base vote shop entry.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/voteshop/shop/VoteShopExtraItem.html" title="class in com.bencodez.votingplugin.voteshop.shop">VoteShopExtraItem</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Extra vote shop item.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/voteshop/shop/VoteShopItem.html" title="class in com.bencodez.votingplugin.voteshop.shop">VoteShopItem</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Purchasable vote shop item.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/voteshop/shop/VoteShopLoader.html" title="class in com.bencodez.votingplugin.voteshop.shop">VoteShopLoader</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Loads vote shop data from ShopFile.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/voteshop/VoteShopManager.html" title="class in com.bencodez.votingplugin.voteshop">VoteShopManager</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Central vote shop manager.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/events/VoteShopPurchaseEvent.html" title="class in com.bencodez.votingplugin.events">VoteShopPurchaseEvent</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Fired when a player attempts to purchase an item from VotingPlugin's
VoteShop.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votelog/listeners/VoteShopPurchaseLoggerListener.html" title="class in com.bencodez.votingplugin.votelog.listeners">VoteShopPurchaseLoggerListener</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/voteshop/service/VoteShopPurchaseResult.html" title="enum class in com.bencodez.votingplugin.voteshop.service">VoteShopPurchaseResult</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
<div class="block">Result of a vote shop purchase validation or execution.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/voteshop/service/VoteShopPurchaseService.html" title="class in com.bencodez.votingplugin.voteshop.service">VoteShopPurchaseService</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Handles vote shop validation and purchases.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votesites/VoteSite.html" title="class in com.bencodez.votingplugin.votesites">VoteSite</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class VoteSite.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/presets/VoteSiteJsonPresetManager.html" title="class in com.bencodez.votingplugin.presets">VoteSiteJsonPresetManager</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Manager responsible for loading vote site presets defined in JSON and
applying them to the VotingPlugin configuration.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/votesites/VoteSiteManager.html" title="class in com.bencodez.votingplugin.votesites">VoteSiteManager</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/presets/VoteSitePreset.html" title="class in com.bencodez.votingplugin.presets">VoteSitePreset</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a vote site preset as defined in a meta JSON file.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/presets/VoteSitePresetSetupHandler.html" title="class in com.bencodez.votingplugin.presets">VoteSitePresetSetupHandler</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Handler class that guides a player through selecting a vote site preset and
configuring its placeholder values using the SimpleAPI <code>ValueRequest</code>
system.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/player/VoteStreak.html" title="class in com.bencodez.votingplugin.commands.gui.player">VoteStreak</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/specialrewards/votestreak/VoteStreakDefinition.html" title="class in com.bencodez.votingplugin.specialrewards.votestreak">VoteStreakDefinition</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/specialrewards/votestreak/VoteStreakHandler.html" title="class in com.bencodez.votingplugin.specialrewards.votestreak">VoteStreakHandler</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/specialrewards/votestreak/VoteStreakType.html" title="enum class in com.bencodez.votingplugin.specialrewards.votestreak">VoteStreakType</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/tabcompleter/VoteTabCompleter.html" title="class in com.bencodez.votingplugin.commands.tabcompleter">VoteTabCompleter</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class VoteTabCompleter.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/test/VoteTester.html" title="class in com.bencodez.votingplugin.test">VoteTester</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/timequeue/VoteTimeQueue.html" title="class in com.bencodez.votingplugin.timequeue">VoteTimeQueue</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents a vote delayed while a proxy time change is active.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/player/VoteToday.html" title="class in com.bencodez.votingplugin.commands.gui.player">VoteToday</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/player/VoteTopVoter.html" title="class in com.bencodez.votingplugin.commands.gui.player">VoteTopVoter</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/player/VoteTopVoterLastMonth.html" title="class in com.bencodez.votingplugin.commands.gui.player">VoteTopVoterLastMonth</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/player/VoteTopVoterPreviousMonths.html" title="class in com.bencodez.votingplugin.commands.gui.player">VoteTopVoterPreviousMonths</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/player/VoteTotal.html" title="class in com.bencodez.votingplugin.commands.gui.player">VoteTotal</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/VoteTotalsSnapshot.html" title="class in com.bencodez.votingplugin.proxy">VoteTotalsSnapshot</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/player/VoteURL.html" title="class in com.bencodez.votingplugin.commands.gui.player">VoteURL</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/commands/gui/player/VoteURLVoteSite.html" title="class in com.bencodez.votingplugin.commands.gui.player">VoteURLVoteSite</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/listeners/VotiferEvent.html" title="class in com.bencodez.votingplugin.listeners">VotiferEvent</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class VotiferEvent.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/bungee/VotingPluginBungee.html" title="class in com.bencodez.votingplugin.proxy.bungee">VotingPluginBungee</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">VotingPlugin proxy implementation for BungeeCord.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/bungee/VotingPluginBungeeCommand.html" title="class in com.bencodez.votingplugin.proxy.bungee">VotingPluginBungeeCommand</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/velocity/VotingPluginChannelIdentifier.html" title="class in com.bencodez.votingplugin.proxy.velocity">VotingPluginChannelIdentifier</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/placeholders/VotingPluginExpansion.html" title="class in com.bencodez.votingplugin.placeholders">VotingPluginExpansion</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/VotingPluginHooks.html" title="class in com.bencodez.votingplugin">VotingPluginHooks</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/VotingPluginMain.html" title="class in com.bencodez.votingplugin">VotingPluginMain</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class Main.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/VotingPluginMetrics.html" title="class in com.bencodez.votingplugin">VotingPluginMetrics</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Registers bStats charts for VotingPlugin.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/VotingPluginProxy.html" title="class in com.bencodez.votingplugin.proxy">VotingPluginProxy</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/VotingPluginProxyCommand.html" title="class in com.bencodez.votingplugin.proxy">VotingPluginProxyCommand</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="com/bencodez/votingplugin/proxy/VotingPluginProxyConfig.html" title="interface in com.bencodez.votingplugin.proxy">VotingPluginProxyConfig</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
<div class="block">Configuration interface for proxy server integration.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/listeners/VotingPluginUpdateEvent.html" title="class in com.bencodez.votingplugin.listeners">VotingPluginUpdateEvent</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class AdvancedCoreUpdateEvent.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/user/VotingPluginUser.html" title="class in com.bencodez.votingplugin.user">VotingPluginUser</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">The Class VotingPluginUser.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/velocity/VotingPluginVelocity.html" title="class in com.bencodez.votingplugin.proxy.velocity">VotingPluginVelocity</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">VotingPlugin proxy implementation for Velocity.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/velocity/VotingPluginVelocityCommand.html" title="class in com.bencodez.votingplugin.proxy.velocity">VotingPluginVelocityCommand</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/webhook/VotingPluginWebhooks.html" title="class in com.bencodez.votingplugin.webhook">VotingPluginWebhooks</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Convenience wrapper to manage webhook lifecycle within VotingPlugin.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/VotingPluginWire.html" title="class in com.bencodez.votingplugin.proxy">VotingPluginWire</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Canonical wire format for proxy - backend messages.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/VotingPluginWire.Vote.html" title="class in com.bencodez.votingplugin.proxy">VotingPluginWire.Vote</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/proxy/VotingPluginWire.VoteUpdate.html" title="class in com.bencodez.votingplugin.proxy">VotingPluginWire.VoteUpdate</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/webhook/WebhookConfigLoader.html" title="class in com.bencodez.votingplugin.webhook">WebhookConfigLoader</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Loads webhook definitions from VotingPlugin's Config.yml section.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/webhook/WebhookDefinition.html" title="class in com.bencodez.votingplugin.webhook">WebhookDefinition</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Webhook endpoint definition.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="com/bencodez/votingplugin/webhook/WebhookHttpMethod.html" title="enum class in com.bencodez.votingplugin.webhook">WebhookHttpMethod</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab3">
<div class="block">Supported HTTP methods for webhook requests.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="com/bencodez/votingplugin/webhook/WebhookLogger.html" title="interface in com.bencodez.votingplugin.webhook">WebhookLogger</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
<div class="block">Logging abstraction for the webhook subsystem.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/webhook/WebhookRequest.html" title="class in com.bencodez.votingplugin.webhook">WebhookRequest</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">A queued webhook request.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/webhook/WebhookRewardEntry.html" title="class in com.bencodez.votingplugin.webhook">WebhookRewardEntry</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Represents one webhook entry under a reward's "Webhooks:" list.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/webhook/WebhookRewardExecutor.html" title="class in com.bencodez.votingplugin.webhook">WebhookRewardExecutor</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Executes webhook rewards using configured definitions.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/webhook/WebhookRewardParser.html" title="class in com.bencodez.votingplugin.webhook">WebhookRewardParser</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Parses reward "Webhooks:" entries from a Bukkit <code>ConfigurationSection</code>.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/webhook/WebhookService.html" title="class in com.bencodez.votingplugin.webhook">WebhookService</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Asynchronous webhook dispatcher.</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/webhook/WebhookSignatureConfig.html" title="class in com.bencodez.votingplugin.webhook">WebhookSignatureConfig</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">Signature configuration used to sign webhook payloads for verification by the receiver.</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/bencodez/votingplugin/webhook/WebhookSigner.html" title="class in com.bencodez.votingplugin.webhook">WebhookSigner</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">Signs webhook payloads for receiver verification.</div>
</div>
</div>
</div>
</div>
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
+160
View File
@@ -0,0 +1,160 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>All Packages (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="package index">
<meta name="generator" content="javadoc/AllPackagesIndexWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="all-packages-index-page">
<script type="text/javascript">var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="index.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html#all-packages">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="All&amp;nbsp;Packages" class="title">All&nbsp;Packages</h1>
</div>
<div class="caption"><span>Package Summary</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/package-summary.html">com.bencodez.votingplugin</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/broadcast/package-summary.html">com.bencodez.votingplugin.broadcast</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/commands/package-summary.html">com.bencodez.votingplugin.commands</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/commands/executers/package-summary.html">com.bencodez.votingplugin.commands.executers</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/commands/gui/package-summary.html">com.bencodez.votingplugin.commands.gui</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/commands/gui/admin/package-summary.html">com.bencodez.votingplugin.commands.gui.admin</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/commands/gui/admin/milestones/package-summary.html">com.bencodez.votingplugin.commands.gui.admin.milestones</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/commands/gui/admin/votelog/package-summary.html">com.bencodez.votingplugin.commands.gui.admin.votelog</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/commands/gui/admin/voteshop/package-summary.html">com.bencodez.votingplugin.commands.gui.admin.voteshop</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/commands/gui/player/package-summary.html">com.bencodez.votingplugin.commands.gui.player</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/commands/tabcompleter/package-summary.html">com.bencodez.votingplugin.commands.tabcompleter</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/config/package-summary.html">com.bencodez.votingplugin.config</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/cooldown/package-summary.html">com.bencodez.votingplugin.cooldown</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/data/package-summary.html">com.bencodez.votingplugin.data</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/discord/package-summary.html">com.bencodez.votingplugin.discord</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/events/package-summary.html">com.bencodez.votingplugin.events</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/listeners/package-summary.html">com.bencodez.votingplugin.listeners</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/placeholders/package-summary.html">com.bencodez.votingplugin.placeholders</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/presets/package-summary.html">com.bencodez.votingplugin.presets</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/proxy/package-summary.html">com.bencodez.votingplugin.proxy</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/proxy/broadcast/package-summary.html">com.bencodez.votingplugin.proxy.broadcast</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/proxy/bungee/package-summary.html">com.bencodez.votingplugin.proxy.bungee</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/proxy/cache/package-summary.html">com.bencodez.votingplugin.proxy.cache</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/proxy/cache/nonvoted/package-summary.html">com.bencodez.votingplugin.proxy.cache.nonvoted</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/proxy/multiproxy/package-summary.html">com.bencodez.votingplugin.proxy.multiproxy</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/proxy/velocity/package-summary.html">com.bencodez.votingplugin.proxy.velocity</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/servicesites/package-summary.html">com.bencodez.votingplugin.servicesites</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/signs/package-summary.html">com.bencodez.votingplugin.signs</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/specialrewards/package-summary.html">com.bencodez.votingplugin.specialrewards</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/specialrewards/votemilestones/package-summary.html">com.bencodez.votingplugin.specialrewards.votemilestones</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/specialrewards/voteparty/package-summary.html">com.bencodez.votingplugin.specialrewards.voteparty</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/specialrewards/votestreak/package-summary.html">com.bencodez.votingplugin.specialrewards.votestreak</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/test/package-summary.html">com.bencodez.votingplugin.test</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/timequeue/package-summary.html">com.bencodez.votingplugin.timequeue</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/topvoter/package-summary.html">com.bencodez.votingplugin.topvoter</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/updater/package-summary.html">com.bencodez.votingplugin.updater</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/user/package-summary.html">com.bencodez.votingplugin.user</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/votelog/package-summary.html">com.bencodez.votingplugin.votelog</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/votelog/listeners/package-summary.html">com.bencodez.votingplugin.votelog.listeners</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/votereminding/package-summary.html">com.bencodez.votingplugin.votereminding</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/votereminding/store/package-summary.html">com.bencodez.votingplugin.votereminding.store</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/voteshop/package-summary.html">com.bencodez.votingplugin.voteshop</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/voteshop/service/package-summary.html">com.bencodez.votingplugin.voteshop.service</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/voteshop/shop/package-summary.html">com.bencodez.votingplugin.voteshop.shop</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/bencodez/votingplugin/votesites/package-summary.html">com.bencodez.votingplugin.votesites</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/bencodez/votingplugin/webhook/package-summary.html">com.bencodez.votingplugin.webhook</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
</div>
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,269 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>BungeeHandler (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="declaration: package: com.bencodez.votingplugin, class: BungeeHandler">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/BungeeHandler.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li>Field</li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">com.bencodez.votingplugin</a></div>
<h1 title="Class BungeeHandler" class="title">Class BungeeHandler</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">com.bencodez.votingplugin.BungeeHandler</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code>org.bukkit.event.Listener</code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">BungeeHandler</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
implements org.bukkit.event.Listener</span></div>
<div class="block">Handler for Bungee/proxy server integration.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(com.bencodez.votingplugin.VotingPluginMain)" class="member-name-link">BungeeHandler</a><wbr>(<a href="VotingPluginMain.html" title="class in com.bencodez.votingplugin">VotingPluginMain</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a new BungeeHandler.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#checkGlobalData()" class="member-name-link">checkGlobalData</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Checks and processes global data from the global data handler.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#checkGlobalDataTime(com.bencodez.advancedcore.api.time.TimeType,java.util.HashMap)" class="member-name-link">checkGlobalDataTime</a><wbr>(com.bencodez.advancedcore.api.time.TimeType&nbsp;type,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/HashMap.html" title="class or interface in java.util" class="external-link">HashMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>com.bencodez.simpleapi.sql.data.DataValue&gt;&nbsp;data)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Checks global data for a time type change.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#checkGlobalDataTimeValue(com.bencodez.simpleapi.sql.data.DataValue)" class="member-name-link">checkGlobalDataTimeValue</a><wbr>(com.bencodez.simpleapi.sql.data.DataValue&nbsp;data)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Checks and extracts the boolean value from a DataValue.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#close()" class="member-name-link">close</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Closes and cleans up all handlers and connections.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#load()" class="member-name-link">load</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Loads and initializes the bungee handler with the configured method.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadGlobalMysql()" class="member-name-link">loadGlobalMysql</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Loads the global MySQL handler for cross-server data synchronization.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(com.bencodez.votingplugin.VotingPluginMain)">
<h3>BungeeHandler</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">BungeeHandler</span><wbr><span class="parameters">(<a href="VotingPluginMain.html" title="class in com.bencodez.votingplugin">VotingPluginMain</a>&nbsp;plugin)</span></div>
<div class="block">Constructs a new BungeeHandler.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>plugin</code> - the main plugin instance</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="checkGlobalData()">
<h3>checkGlobalData</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">checkGlobalData</span>()</div>
<div class="block">Checks and processes global data from the global data handler.</div>
</section>
</li>
<li>
<section class="detail" id="checkGlobalDataTime(com.bencodez.advancedcore.api.time.TimeType,java.util.HashMap)">
<h3>checkGlobalDataTime</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">checkGlobalDataTime</span><wbr><span class="parameters">(com.bencodez.advancedcore.api.time.TimeType&nbsp;type,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/HashMap.html" title="class or interface in java.util" class="external-link">HashMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>com.bencodez.simpleapi.sql.data.DataValue&gt;&nbsp;data)</span></div>
<div class="block">Checks global data for a time type change.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>type</code> - the time type to check</dd>
<dd><code>data</code> - the global data map</dd>
<dt>Returns:</dt>
<dd>true if currently processing a time change</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="checkGlobalDataTimeValue(com.bencodez.simpleapi.sql.data.DataValue)">
<h3>checkGlobalDataTimeValue</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">checkGlobalDataTimeValue</span><wbr><span class="parameters">(com.bencodez.simpleapi.sql.data.DataValue&nbsp;data)</span></div>
<div class="block">Checks and extracts the boolean value from a DataValue.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>data</code> - the data value</dd>
<dt>Returns:</dt>
<dd>the boolean value</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="close()">
<h3>close</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">close</span>()</div>
<div class="block">Closes and cleans up all handlers and connections.</div>
</section>
</li>
<li>
<section class="detail" id="load()">
<h3>load</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">load</span>()</div>
<div class="block">Loads and initializes the bungee handler with the configured method.</div>
</section>
</li>
<li>
<section class="detail" id="loadGlobalMysql()">
<h3>loadGlobalMysql</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">loadGlobalMysql</span>()</div>
<div class="block">Loads the global MySQL handler for cross-server data synchronization.</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,223 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>VotingPluginHooks (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="declaration: package: com.bencodez.votingplugin, class: VotingPluginHooks">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/VotingPluginHooks.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li>Field</li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">com.bencodez.votingplugin</a></div>
<h1 title="Class VotingPluginHooks" class="title">Class VotingPluginHooks</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">com.bencodez.votingplugin.VotingPluginHooks</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">VotingPluginHooks</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">VotingPluginHooks</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addCustomRequirement(com.bencodez.advancedcore.api.rewards.injectedrequirement.RequirementInject)" class="member-name-link">addCustomRequirement</a><wbr>(com.bencodez.advancedcore.api.rewards.injectedrequirement.RequirementInject&nbsp;inject)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addCustomReward(com.bencodez.advancedcore.api.rewards.injected.RewardInject)" class="member-name-link">addCustomReward</a><wbr>(com.bencodez.advancedcore.api.rewards.injected.RewardInject&nbsp;inject)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#backgroundUpdate(org.bukkit.entity.Player)" class="member-name-link">backgroundUpdate</a><wbr>(org.bukkit.entity.Player&nbsp;player)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="VotingPluginHooks.html" title="class in com.bencodez.votingplugin">VotingPluginHooks</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getInstance()" class="member-name-link">getInstance</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="VotingPluginMain.html" title="class in com.bencodez.votingplugin">VotingPluginMain</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMainClass()" class="member-name-link">getMainClass</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="user/UserManager.html" title="class in com.bencodez.votingplugin.user">UserManager</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getUserManager()" class="member-name-link">getUserManager</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>VotingPluginHooks</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">VotingPluginHooks</span>()</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getInstance()">
<h3>getInstance</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="VotingPluginHooks.html" title="class in com.bencodez.votingplugin">VotingPluginHooks</a></span>&nbsp;<span class="element-name">getInstance</span>()</div>
</section>
</li>
<li>
<section class="detail" id="addCustomRequirement(com.bencodez.advancedcore.api.rewards.injectedrequirement.RequirementInject)">
<h3>addCustomRequirement</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addCustomRequirement</span><wbr><span class="parameters">(com.bencodez.advancedcore.api.rewards.injectedrequirement.RequirementInject&nbsp;inject)</span></div>
</section>
</li>
<li>
<section class="detail" id="addCustomReward(com.bencodez.advancedcore.api.rewards.injected.RewardInject)">
<h3>addCustomReward</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addCustomReward</span><wbr><span class="parameters">(com.bencodez.advancedcore.api.rewards.injected.RewardInject&nbsp;inject)</span></div>
</section>
</li>
<li>
<section class="detail" id="backgroundUpdate(org.bukkit.entity.Player)">
<h3>backgroundUpdate</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">backgroundUpdate</span><wbr><span class="parameters">(org.bukkit.entity.Player&nbsp;player)</span></div>
</section>
</li>
<li>
<section class="detail" id="getMainClass()">
<h3>getMainClass</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="VotingPluginMain.html" title="class in com.bencodez.votingplugin">VotingPluginMain</a></span>&nbsp;<span class="element-name">getMainClass</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getUserManager()">
<h3>getUserManager</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="user/UserManager.html" title="class in com.bencodez.votingplugin.user">UserManager</a></span>&nbsp;<span class="element-name">getUserManager</span>()</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,514 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>VotingPluginMain (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="declaration: package: com.bencodez.votingplugin, class: VotingPluginMain">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/VotingPluginMain.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li><a href="#field-summary">Field</a></li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li><a href="#field-detail">Field</a></li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">com.bencodez.votingplugin</a></div>
<h1 title="Class VotingPluginMain" class="title">Class VotingPluginMain</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">org.bukkit.plugin.PluginBase
<div class="inheritance">org.bukkit.plugin.java.JavaPlugin
<div class="inheritance">com.bencodez.advancedcore.AdvancedCorePlugin
<div class="inheritance">com.bencodez.votingplugin.VotingPluginMain</div>
</div>
</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code>org.bukkit.command.CommandExecutor</code>, <code>org.bukkit.command.TabCompleter</code>, <code>org.bukkit.command.TabExecutor</code>, <code>org.bukkit.plugin.Plugin</code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">VotingPluginMain</span>
<span class="extends-implements">extends com.bencodez.advancedcore.AdvancedCorePlugin</span></div>
<div class="block">The Class Main.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static <a href="VotingPluginMain.html" title="class in com.bencodez.votingplugin">VotingPluginMain</a></code></div>
<div class="col-second even-row-color"><code><a href="#plugin" class="member-name-link">plugin</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-com.bencodez.advancedcore.AdvancedCorePlugin">Fields inherited from class&nbsp;com.bencodez.advancedcore.AdvancedCorePlugin</h3>
<code>vaultHandler</code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">VotingPluginMain</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button><button id="method-summary-table-tab6" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab6', 3)" class="table-tab">Deprecated Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addDirectlyDefinedRewards(com.bencodez.advancedcore.api.rewards.DirectlyDefinedReward)" class="member-name-link">addDirectlyDefinedRewards</a><wbr>(com.bencodez.advancedcore.api.rewards.DirectlyDefinedReward&nbsp;directlyDefinedReward)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#basicBungeeUpdate()" class="member-name-link">basicBungeeUpdate</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#checkFirstTimeLoaded()" class="member-name-link">checkFirstTimeLoaded</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><wbr>&lt;<a href="topvoter/TopVoterPlayer.html" title="class in com.bencodez.votingplugin.topvoter">TopVoterPlayer</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#convertSet(java.util.Set)" class="member-name-link">convertSet</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="topvoter/TopVoterPlayer.html" title="class in com.bencodez.votingplugin.topvoter">TopVoterPlayer</a>&gt;&nbsp;set)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.bukkit.configuration.file.FileConfiguration</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getConfig()" class="member-name-link">getConfig</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/LinkedHashMap.html" title="class or interface in java.util" class="external-link">LinkedHashMap</a><wbr>&lt;<a href="topvoter/TopVoterPlayer.html" title="class in com.bencodez.votingplugin.topvoter">TopVoterPlayer</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTopVoter(com.bencodez.votingplugin.topvoter.TopVoter)" class="member-name-link">getTopVoter</a><wbr>(<a href="topvoter/TopVoter.html" title="enum class in com.bencodez.votingplugin.topvoter">TopVoter</a>&nbsp;top)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="user/VotingPluginUser.html" title="class in com.bencodez.votingplugin.user">VotingPluginUser</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#getUser(java.util.UUID)" class="member-name-link">getUser</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;uuid)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="votesites/VoteSite.html" title="class in com.bencodez.votingplugin.votesites">VoteSite</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#getVoteSite(java.lang.String,boolean)" class="member-name-link">getVoteSite</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;site,
boolean&nbsp;checkEnabled)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#getVoteSiteName(boolean,java.lang.String...)" class="member-name-link">getVoteSiteName</a><wbr>(boolean&nbsp;checkEnabled,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>...&nbsp;urls)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><wbr>&lt;<a href="votesites/VoteSite.html" title="class in com.bencodez.votingplugin.votesites">VoteSite</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#getVoteSites()" class="member-name-link">getVoteSites</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a><wbr>&lt;<a href="votesites/VoteSite.html" title="class in com.bencodez.votingplugin.votesites">VoteSite</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#getVoteSitesEnabled()" class="member-name-link">getVoteSitesEnabled</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#getVoteSiteServiceSite(java.lang.String)" class="member-name-link">getVoteSiteServiceSite</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#hasVoteSite(java.lang.String)" class="member-name-link">hasVoteSite</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;site)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#isVoteSite(java.lang.String)" class="member-name-link">isVoteSite</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;voteSite)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span></div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadDirectlyDefined()" class="member-name-link">loadDirectlyDefined</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadVoteLoggingMySQL()" class="member-name-link">loadVoteLoggingMySQL</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadVoteShopManager()" class="member-name-link">loadVoteShopManager</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadVoteSites()" class="member-name-link">loadVoteSites</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onPostLoad()" class="member-name-link">onPostLoad</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onPreLoad()" class="member-name-link">onPreLoad</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onUnLoad()" class="member-name-link">onUnLoad</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#reload()" class="member-name-link">reload</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Reload.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#reloadAll()" class="member-name-link">reloadAll</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#update()" class="member-name-link">update</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#updateAdvancedCoreHook()" class="member-name-link">updateAdvancedCoreHook</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-com.bencodez.advancedcore.AdvancedCorePlugin">Methods inherited from class&nbsp;com.bencodez.advancedcore.AdvancedCorePlugin</h3>
<code>addUserStartup, allowDownloadingFromSpigot, checkPluginUpdate, convertDataStorage, debug, debug, debug, devDebug, extraDebug, getAdvancedCoreBuildNumber, getAdvancedCoreCommandLoader, getAdvancedCoreVersion, getBannedPlayers, getBedrockHandle, getBuildTime, getBukkitScheduler, getBungeeChannel, getCmiHandle, getDialogService, getFullInventoryHandler, getHologramHandler, getInstance, getInventoryTimer, getJavascriptEngine, getJavascriptEngineRequests, getLoginTimer, getLuckPermsHandle, getMysql, getOptions, getPermissionHandler, getPluginMessaging, getRewardHandler, getServerDataFile, getSkullCacheHandler, getSQLiteUserTable, getStorageType, getTimeChecker, getTimer, getUserManager, getVaultHandler, isAuthMeLoaded, isLoadBedrockAPI, isLoadLuckPerms, isLoadRewards, isLoadServerData, isLoadSkullHandler, isLoadUserData, isLoadVault, isLoginSecurityLoaded, isMySQLOkay, isNLoginLoaded, isPlaceHolderAPIEnabled, loadAdvancedCoreEvents, loadHook, loadTabComplete, loadUserAPI, loadVault, onDisable, onEnable, registerBungeeChannels, registerEvents, reloadAdvancedCore, reloadAdvancedCore, setBungeeChannel, setConfigData, setConfigData, setDialogService, setInstance, setJavascriptEngine, setJavascriptEngineRequests, setLoadBedrockAPI, setLoadLuckPerms, setLoadRewards, setLoadServerData, setLoadSkullHandler, setLoadUserData, setLoadVault, setMysql, setUserManager, userStartup</code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.bukkit.plugin.java.JavaPlugin">Methods inherited from class&nbsp;org.bukkit.plugin.java.JavaPlugin</h3>
<code>getClassLoader, getCommand, getDataFolder, getDefaultBiomeProvider, getDefaultWorldGenerator, getDescription, getFile, getLogger, getPlugin, getPluginLoader, getProvidingPlugin, getResource, getServer, getTextResource, isEnabled, isNaggable, onCommand, onLoad, onTabComplete, reloadConfig, saveConfig, saveDefaultConfig, saveResource, setEnabled, setNaggable, toString</code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.bukkit.plugin.PluginBase">Methods inherited from class&nbsp;org.bukkit.plugin.PluginBase</h3>
<code>equals, getName, hashCode</code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="plugin">
<h3>plugin</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="VotingPluginMain.html" title="class in com.bencodez.votingplugin">VotingPluginMain</a></span>&nbsp;<span class="element-name">plugin</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>VotingPluginMain</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">VotingPluginMain</span>()</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="addDirectlyDefinedRewards(com.bencodez.advancedcore.api.rewards.DirectlyDefinedReward)">
<h3>addDirectlyDefinedRewards</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addDirectlyDefinedRewards</span><wbr><span class="parameters">(com.bencodez.advancedcore.api.rewards.DirectlyDefinedReward&nbsp;directlyDefinedReward)</span></div>
</section>
</li>
<li>
<section class="detail" id="basicBungeeUpdate()">
<h3>basicBungeeUpdate</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">basicBungeeUpdate</span>()</div>
</section>
</li>
<li>
<section class="detail" id="checkFirstTimeLoaded()">
<h3>checkFirstTimeLoaded</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">checkFirstTimeLoaded</span>()</div>
</section>
</li>
<li>
<section class="detail" id="loadVoteShopManager()">
<h3>loadVoteShopManager</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">loadVoteShopManager</span>()</div>
</section>
</li>
<li>
<section class="detail" id="convertSet(java.util.Set)">
<h3>convertSet</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="topvoter/TopVoterPlayer.html" title="class in com.bencodez.votingplugin.topvoter">TopVoterPlayer</a>&gt;</span>&nbsp;<span class="element-name">convertSet</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="topvoter/TopVoterPlayer.html" title="class in com.bencodez.votingplugin.topvoter">TopVoterPlayer</a>&gt;&nbsp;set)</span></div>
</section>
</li>
<li>
<section class="detail" id="getConfig()">
<h3>getConfig</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">org.bukkit.configuration.file.FileConfiguration</span>&nbsp;<span class="element-name">getConfig</span>()</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code>getConfig</code>&nbsp;in interface&nbsp;<code>org.bukkit.plugin.Plugin</code></dd>
<dt>Overrides:</dt>
<dd><code>getConfig</code>&nbsp;in class&nbsp;<code>org.bukkit.plugin.java.JavaPlugin</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getTopVoter(com.bencodez.votingplugin.topvoter.TopVoter)">
<h3>getTopVoter</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/LinkedHashMap.html" title="class or interface in java.util" class="external-link">LinkedHashMap</a>&lt;<a href="topvoter/TopVoterPlayer.html" title="class in com.bencodez.votingplugin.topvoter">TopVoterPlayer</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">getTopVoter</span><wbr><span class="parameters">(<a href="topvoter/TopVoter.html" title="enum class in com.bencodez.votingplugin.topvoter">TopVoter</a>&nbsp;top)</span></div>
</section>
</li>
<li>
<section class="detail" id="getUser(java.util.UUID)">
<h3>getUser</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="user/VotingPluginUser.html" title="class in com.bencodez.votingplugin.user">VotingPluginUser</a></span>&nbsp;<span class="element-name">getUser</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;uuid)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
<div class="block">Gets the user.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>uuid</code> - the uuid</dd>
<dt>Returns:</dt>
<dd>the user</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getVoteSite(java.lang.String,boolean)">
<h3>getVoteSite</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="votesites/VoteSite.html" title="class in com.bencodez.votingplugin.votesites">VoteSite</a></span>&nbsp;<span class="element-name">getVoteSite</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;site,
boolean&nbsp;checkEnabled)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="getVoteSiteName(boolean,java.lang.String...)">
<h3>getVoteSiteName</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getVoteSiteName</span><wbr><span class="parameters">(boolean&nbsp;checkEnabled,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>...&nbsp;urls)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="getVoteSitesEnabled()">
<h3>getVoteSitesEnabled</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/ArrayList.html" title="class or interface in java.util" class="external-link">ArrayList</a>&lt;<a href="votesites/VoteSite.html" title="class in com.bencodez.votingplugin.votesites">VoteSite</a>&gt;</span>&nbsp;<span class="element-name">getVoteSitesEnabled</span>()</div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="getVoteSiteServiceSite(java.lang.String)">
<h3>getVoteSiteServiceSite</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getVoteSiteServiceSite</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="hasVoteSite(java.lang.String)">
<h3>hasVoteSite</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">hasVoteSite</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;site)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="isVoteSite(java.lang.String)">
<h3>isVoteSite</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isVoteSite</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;voteSite)</span></div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="loadDirectlyDefined()">
<h3>loadDirectlyDefined</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">loadDirectlyDefined</span>()</div>
</section>
</li>
<li>
<section class="detail" id="loadVoteSites()">
<h3>loadVoteSites</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">loadVoteSites</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getVoteSites()">
<h3>getVoteSites</h3>
<div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="votesites/VoteSite.html" title="class in com.bencodez.votingplugin.votesites">VoteSite</a>&gt;</span>&nbsp;<span class="element-name">getVoteSites</span>()</div>
<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
</section>
</li>
<li>
<section class="detail" id="onPostLoad()">
<h3>onPostLoad</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onPostLoad</span>()</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code>onPostLoad</code>&nbsp;in class&nbsp;<code>com.bencodez.advancedcore.AdvancedCorePlugin</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="onPreLoad()">
<h3>onPreLoad</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onPreLoad</span>()</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code>onPreLoad</code>&nbsp;in class&nbsp;<code>com.bencodez.advancedcore.AdvancedCorePlugin</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="onUnLoad()">
<h3>onUnLoad</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onUnLoad</span>()</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code>onUnLoad</code>&nbsp;in class&nbsp;<code>com.bencodez.advancedcore.AdvancedCorePlugin</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="reload()">
<h3>reload</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">reload</span>()</div>
<div class="block">Reload.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code>reload</code>&nbsp;in class&nbsp;<code>com.bencodez.advancedcore.AdvancedCorePlugin</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="reloadAll()">
<h3>reloadAll</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">reloadAll</span>()</div>
</section>
</li>
<li>
<section class="detail" id="update()">
<h3>update</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">update</span>()</div>
</section>
</li>
<li>
<section class="detail" id="loadVoteLoggingMySQL()">
<h3>loadVoteLoggingMySQL</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">loadVoteLoggingMySQL</span>()</div>
</section>
</li>
<li>
<section class="detail" id="updateAdvancedCoreHook()">
<h3>updateAdvancedCoreHook</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">updateAdvancedCoreHook</span>()</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,195 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>VotingPluginMetrics (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="declaration: package: com.bencodez.votingplugin, class: VotingPluginMetrics">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/VotingPluginMetrics.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li>Field</li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">com.bencodez.votingplugin</a></div>
<h1 title="Class VotingPluginMetrics" class="title">Class VotingPluginMetrics</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">com.bencodez.votingplugin.VotingPluginMetrics</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">VotingPluginMetrics</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Registers bStats charts for VotingPlugin.
<p>
Updated for VotingPlugin 7.0:
<ul>
<li>Broadcast: Always logs broadcast_type if VoteBroadcast.Type exists. If Type == NONE, ignores other broadcast
settings.</li>
<li>VoteLogging: Only logs VoteLogging charts when VoteLogging.Enabled is true.</li>
<li>No "Unknown" values are emitted; charts are only registered when their data exists.</li>
<li>VoteMilestones chart is bucketed to reduce cardinality.</li>
</ul></div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">VotingPluginMetrics</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#load(com.bencodez.votingplugin.VotingPluginMain)" class="member-name-link">load</a><wbr>(<a href="VotingPluginMain.html" title="class in com.bencodez.votingplugin">VotingPluginMain</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Register bStats metrics.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>VotingPluginMetrics</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">VotingPluginMetrics</span>()</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="load(com.bencodez.votingplugin.VotingPluginMain)">
<h3>load</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">load</span><wbr><span class="parameters">(<a href="VotingPluginMain.html" title="class in com.bencodez.votingplugin">VotingPluginMain</a>&nbsp;plugin)</span></div>
<div class="block">Register bStats metrics.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>plugin</code> - VotingPlugin main instance</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,250 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>BroadcastFormat (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="declaration: package: com.bencodez.votingplugin.broadcast, class: BroadcastFormat">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/BroadcastFormat.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li>Field</li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">com.bencodez.votingplugin.broadcast</a></div>
<h1 title="Class BroadcastFormat" class="title">Class BroadcastFormat</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">com.bencodez.votingplugin.broadcast.BroadcastFormat</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">BroadcastFormat</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Defines HOW vote broadcasts are rendered.
Terminology:
- BroadcastMsg : used when EXACTLY ONE item exists (single-site vote)
- Header : used ONCE when MULTIPLE items exist (batch/interval)
- ListLine : used ONCE PER ITEM when MULTIPLE items exist
Placeholders (always available):
- %player% : player name (or "Server" for interval summaries)
- %site% : the current site/item for this line
- %sites_count% : number of items in the list
- %sites% : csv of items in the list
- %reason% : internal reason string ("vote", "batch", "interval", etc)
Extra context placeholders (INTERVAL_SUMMARY_GLOBAL):
- %players% / %numberofplayers%
- %sites% / %numberofsites% (note: %sites% is csv; %numberofsites% is count)</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">BroadcastFormat</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;broadcastMsg,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;header,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;listLine)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructor for BroadcastFormat.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#render(java.lang.String,java.util.List,java.lang.String)" class="member-name-link">render</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;items,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;reason)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Render the broadcast with player name, items, and reason.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#render(java.lang.String,java.util.List,java.lang.String,java.util.Map)" class="member-name-link">render</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;items,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;reason,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;context)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Render the broadcast with player name, items, reason, and context.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.String,java.lang.String)">
<h3>BroadcastFormat</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">BroadcastFormat</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;broadcastMsg,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;header,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;listLine)</span></div>
<div class="block">Constructor for BroadcastFormat.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>broadcastMsg</code> - the broadcast message template</dd>
<dd><code>header</code> - the header template</dd>
<dd><code>listLine</code> - the list line template</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="render(java.lang.String,java.util.List,java.lang.String)">
<h3>render</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">render</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;items,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;reason)</span></div>
<div class="block">Render the broadcast with player name, items, and reason.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>playerName</code> - the player name</dd>
<dd><code>items</code> - the list of items</dd>
<dd><code>reason</code> - the reason string</dd>
<dt>Returns:</dt>
<dd>the rendered list of strings</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="render(java.lang.String,java.util.List,java.lang.String,java.util.Map)">
<h3>render</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">render</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;items,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;reason,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;context)</span></div>
<div class="block">Render the broadcast with player name, items, reason, and context.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>playerName</code> - the player name</dd>
<dd><code>items</code> - the list of items</dd>
<dd><code>reason</code> - the reason string</dd>
<dd><code>context</code> - additional context placeholders</dd>
<dt>Returns:</dt>
<dd>the rendered list of strings</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,231 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>BroadcastHandler (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="declaration: package: com.bencodez.votingplugin.broadcast, class: BroadcastHandler">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/BroadcastHandler.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li>Field</li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">com.bencodez.votingplugin.broadcast</a></div>
<h1 title="Class BroadcastHandler" class="title">Class BroadcastHandler</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">com.bencodez.votingplugin.broadcast.BroadcastHandler</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">BroadcastHandler</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Core broadcast logic.
Decides when to broadcast and builds lines and messages. Uses the existing
eligible online players behavior and respects disabled broadcasts.
Backend servers only.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(com.bencodez.votingplugin.VotingPluginMain,com.bencodez.votingplugin.broadcast.BroadcastSettings,java.time.ZoneId)" class="member-name-link">BroadcastHandler</a><wbr>(<a href="../VotingPluginMain.html" title="class in com.bencodez.votingplugin">VotingPluginMain</a>&nbsp;plugin,
<a href="BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a>&nbsp;settings,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/time/ZoneId.html" title="class or interface in java.time" class="external-link">ZoneId</a>&nbsp;zoneId)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a new broadcast handler.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#broadcastVote(java.util.UUID,java.lang.String,java.lang.String,boolean)" class="member-name-link">broadcastVote</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;uuid,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;siteName,
boolean&nbsp;wasOnline)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Handles a received vote.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setSettings(com.bencodez.votingplugin.broadcast.BroadcastSettings)" class="member-name-link">setSettings</a><wbr>(<a href="BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a>&nbsp;settings)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Updates the broadcast settings and reschedules the interval task when
required.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(com.bencodez.votingplugin.VotingPluginMain,com.bencodez.votingplugin.broadcast.BroadcastSettings,java.time.ZoneId)">
<h3>BroadcastHandler</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">BroadcastHandler</span><wbr><span class="parameters">(<a href="../VotingPluginMain.html" title="class in com.bencodez.votingplugin">VotingPluginMain</a>&nbsp;plugin,
<a href="BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a>&nbsp;settings,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/time/ZoneId.html" title="class or interface in java.time" class="external-link">ZoneId</a>&nbsp;zoneId)</span></div>
<div class="block">Constructs a new broadcast handler.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>plugin</code> - the main plugin instance</dd>
<dd><code>settings</code> - the broadcast settings</dd>
<dd><code>zoneId</code> - the time zone ID, or null to use the system default</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="setSettings(com.bencodez.votingplugin.broadcast.BroadcastSettings)">
<h3>setSettings</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setSettings</span><wbr><span class="parameters">(<a href="BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a>&nbsp;settings)</span></div>
<div class="block">Updates the broadcast settings and reschedules the interval task when
required.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>settings</code> - the new broadcast settings</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="broadcastVote(java.util.UUID,java.lang.String,java.lang.String,boolean)">
<h3>broadcastVote</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">broadcastVote</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;uuid,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;siteName,
boolean&nbsp;wasOnline)</span></div>
<div class="block">Handles a received vote.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>uuid</code> - the voted player's UUID</dd>
<dd><code>playerName</code> - the player name, or null to resolve it from Bukkit</dd>
<dd><code>siteName</code> - the vote site display name</dd>
<dd><code>wasOnline</code> - whether the voted player was online when the vote was received</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,289 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>BroadcastSettings (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="declaration: package: com.bencodez.votingplugin.broadcast, class: BroadcastSettings">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/BroadcastSettings.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li>Field</li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">com.bencodez.votingplugin.broadcast</a></div>
<h1 title="Class BroadcastSettings" class="title">Class BroadcastSettings</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">com.bencodez.votingplugin.broadcast.BroadcastSettings</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">BroadcastSettings</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Immutable broadcast configuration.
Type: NONE disables broadcasting.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(com.bencodez.votingplugin.broadcast.VoteBroadcastType,com.bencodez.simpleapi.time.ParsedDuration,int,com.bencodez.votingplugin.broadcast.BroadcastFormat)" class="member-name-link">BroadcastSettings</a><wbr>(<a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a>&nbsp;type,
com.bencodez.simpleapi.time.ParsedDuration&nbsp;duration,
int&nbsp;maxSitesListed,
<a href="BroadcastFormat.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastFormat</a>&nbsp;format)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a BroadcastSettings with the specified parameters.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>com.bencodez.simpleapi.time.ParsedDuration</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getDuration()" class="member-name-link">getDuration</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the broadcast duration.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="BroadcastFormat.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastFormat</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getFormat()" class="member-name-link">getFormat</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the broadcast format.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMaxSitesListed()" class="member-name-link">getMaxSitesListed</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the maximum number of sites to list.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getType()" class="member-name-link">getType</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the broadcast type.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isDisabled()" class="member-name-link">isDisabled</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns whether broadcasting is disabled.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#load(org.bukkit.configuration.ConfigurationSection)" class="member-name-link">load</a><wbr>(org.bukkit.configuration.ConfigurationSection&nbsp;sec)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Loads VoteBroadcast settings from config.yml.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(com.bencodez.votingplugin.broadcast.VoteBroadcastType,com.bencodez.simpleapi.time.ParsedDuration,int,com.bencodez.votingplugin.broadcast.BroadcastFormat)">
<h3>BroadcastSettings</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">BroadcastSettings</span><wbr><span class="parameters">(<a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a>&nbsp;type,
com.bencodez.simpleapi.time.ParsedDuration&nbsp;duration,
int&nbsp;maxSitesListed,
<a href="BroadcastFormat.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastFormat</a>&nbsp;format)</span></div>
<div class="block">Constructs a BroadcastSettings with the specified parameters.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>type</code> - the broadcast type</dd>
<dd><code>duration</code> - the broadcast duration</dd>
<dd><code>maxSitesListed</code> - the maximum number of sites to list</dd>
<dd><code>format</code> - the broadcast format</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getType()">
<h3>getType</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></span>&nbsp;<span class="element-name">getType</span>()</div>
<div class="block">Returns the broadcast type.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the broadcast type</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getDuration()">
<h3>getDuration</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">com.bencodez.simpleapi.time.ParsedDuration</span>&nbsp;<span class="element-name">getDuration</span>()</div>
<div class="block">Returns the broadcast duration.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the broadcast duration</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getMaxSitesListed()">
<h3>getMaxSitesListed</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getMaxSitesListed</span>()</div>
<div class="block">Returns the maximum number of sites to list.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the maximum number of sites to list</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getFormat()">
<h3>getFormat</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="BroadcastFormat.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastFormat</a></span>&nbsp;<span class="element-name">getFormat</span>()</div>
<div class="block">Returns the broadcast format.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the broadcast format</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isDisabled()">
<h3>isDisabled</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isDisabled</span>()</div>
<div class="block">Returns whether broadcasting is disabled.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>true if broadcasting is disabled</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="load(org.bukkit.configuration.ConfigurationSection)">
<h3>load</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a></span>&nbsp;<span class="element-name">load</span><wbr><span class="parameters">(org.bukkit.configuration.ConfigurationSection&nbsp;sec)</span></div>
<div class="block">Loads VoteBroadcast settings from config.yml.
Expected structure: VoteBroadcast: Type: EVERY_VOTE Duration: 2m
MaxSitesListed: 0 Format: BroadcastMsg: '...' Header: '...' ListLine: '...'</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>sec</code> - the configuration section to load from</dd>
<dt>Returns:</dt>
<dd>the loaded broadcast settings</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,329 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>VoteBroadcastType (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="declaration: package: com.bencodez.votingplugin.broadcast, enum: VoteBroadcastType">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/VoteBroadcastType.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li><a href="#nested-class-summary">Nested</a></li>
<li><a href="#enum-constant-summary">Enum Constants</a></li>
<li>Field</li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li><a href="#enum-constant-detail">Enum Constants</a></li>
<li>Field</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">com.bencodez.votingplugin.broadcast</a></div>
<h1 title="Enum Class VoteBroadcastType" class="title">Enum Class VoteBroadcastType</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a>&gt;
<div class="inheritance">com.bencodez.votingplugin.broadcast.VoteBroadcastType</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public enum </span><span class="element-name type-name-label">VoteBroadcastType</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a>&gt;</span></div>
<div class="block">Defines WHEN vote broadcasts occur.
Set Type: NONE to disable broadcasting entirely.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="inherited-list">
<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
</section>
</li>
<!-- =========== ENUM CONSTANT SUMMARY =========== -->
<li>
<section class="constants-summary" id="enum-constant-summary">
<h2>Enum Constant Summary</h2>
<div class="caption"><span>Enum Constants</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Enum Constant</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code><a href="#BATCH_WINDOW_PER_PLAYER" class="member-name-link">BATCH_WINDOW_PER_PLAYER</a></code></div>
<div class="col-last even-row-color">
<div class="block">Batch sites per player for Duration, then broadcast one message listing
sites.</div>
</div>
<div class="col-first odd-row-color"><code><a href="#COOLDOWN_PER_PLAYER" class="member-name-link">COOLDOWN_PER_PLAYER</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Broadcast at most once per Duration per player.</div>
</div>
<div class="col-first even-row-color"><code><a href="#EVERY_VOTE" class="member-name-link">EVERY_VOTE</a></code></div>
<div class="col-last even-row-color">
<div class="block">Broadcast on every vote (even if the player is offline).</div>
</div>
<div class="col-first odd-row-color"><code><a href="#EVERY_VOTE_ONLINE_ONLY" class="member-name-link">EVERY_VOTE_ONLINE_ONLY</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Broadcast on every vote ONLY if the voting player is online.</div>
</div>
<div class="col-first even-row-color"><code><a href="#FIRST_VOTE_OF_DAY" class="member-name-link">FIRST_VOTE_OF_DAY</a></code></div>
<div class="col-last even-row-color">
<div class="block">Broadcast only the first vote of the day per player (calendar day).</div>
</div>
<div class="col-first odd-row-color"><code><a href="#INTERVAL_SUMMARY_GLOBAL" class="member-name-link">INTERVAL_SUMMARY_GLOBAL</a></code></div>
<div class="col-last odd-row-color">
<div class="block">Every Duration, broadcast a global summary of who voted and how many sites.</div>
</div>
<div class="col-first even-row-color"><code><a href="#NONE" class="member-name-link">NONE</a></code></div>
<div class="col-last even-row-color">
<div class="block">No vote broadcasting.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#parse(java.lang.String,com.bencodez.votingplugin.broadcast.VoteBroadcastType)" class="member-name-link">parse</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;s,
<a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a>&nbsp;def)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Parses a vote broadcast type from a string.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns the enum constant of this class with the specified name.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a>[]</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Returns an array containing the constants of this enum class, in
the order they are declared.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ ENUM CONSTANT DETAIL =========== -->
<li>
<section class="constant-details" id="enum-constant-detail">
<h2>Enum Constant Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="NONE">
<h3>NONE</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></span>&nbsp;<span class="element-name">NONE</span></div>
<div class="block">No vote broadcasting.</div>
</section>
</li>
<li>
<section class="detail" id="EVERY_VOTE">
<h3>EVERY_VOTE</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></span>&nbsp;<span class="element-name">EVERY_VOTE</span></div>
<div class="block">Broadcast on every vote (even if the player is offline). Uses
Format.BroadcastMsg (+ optional header/list if you choose).</div>
</section>
</li>
<li>
<section class="detail" id="EVERY_VOTE_ONLINE_ONLY">
<h3>EVERY_VOTE_ONLINE_ONLY</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></span>&nbsp;<span class="element-name">EVERY_VOTE_ONLINE_ONLY</span></div>
<div class="block">Broadcast on every vote ONLY if the voting player is online. Useful when
processing offline votes but you don't want global spam for them.</div>
</section>
</li>
<li>
<section class="detail" id="COOLDOWN_PER_PLAYER">
<h3>COOLDOWN_PER_PLAYER</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></span>&nbsp;<span class="element-name">COOLDOWN_PER_PLAYER</span></div>
<div class="block">Broadcast at most once per Duration per player. (Even if they vote multiple
sites inside the cooldown.)</div>
</section>
</li>
<li>
<section class="detail" id="BATCH_WINDOW_PER_PLAYER">
<h3>BATCH_WINDOW_PER_PLAYER</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></span>&nbsp;<span class="element-name">BATCH_WINDOW_PER_PLAYER</span></div>
<div class="block">Batch sites per player for Duration, then broadcast one message listing
sites.</div>
</section>
</li>
<li>
<section class="detail" id="FIRST_VOTE_OF_DAY">
<h3>FIRST_VOTE_OF_DAY</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></span>&nbsp;<span class="element-name">FIRST_VOTE_OF_DAY</span></div>
<div class="block">Broadcast only the first vote of the day per player (calendar day).</div>
</section>
</li>
<li>
<section class="detail" id="INTERVAL_SUMMARY_GLOBAL">
<h3>INTERVAL_SUMMARY_GLOBAL</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></span>&nbsp;<span class="element-name">INTERVAL_SUMMARY_GLOBAL</span></div>
<div class="block">Every Duration, broadcast a global summary of who voted and how many sites.
Uses context placeholders: %players%, %numberofplayers%, %sites%,
%numberofsites%.</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="values()">
<h3>values</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
<div class="block">Returns an array containing the constants of this enum class, in
the order they are declared.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>an array containing the constants of this enum class, in the order they are declared</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="valueOf(java.lang.String)">
<h3>valueOf</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
<div class="block">Returns the enum constant of this class with the specified name.
The string must match <i>exactly</i> an identifier used to declare an
enum constant in this class. (Extraneous whitespace characters are
not permitted.)</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>name</code> - the name of the enum constant to be returned.</dd>
<dt>Returns:</dt>
<dd>the enum constant with the specified name</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="parse(java.lang.String,com.bencodez.votingplugin.broadcast.VoteBroadcastType)">
<h3>parse</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></span>&nbsp;<span class="element-name">parse</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;s,
<a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a>&nbsp;def)</span></div>
<div class="block">Parses a vote broadcast type from a string.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>s</code> - the string to parse</dd>
<dd><code>def</code> - the default value if parsing fails</dd>
<dt>Returns:</dt>
<dd>the parsed broadcast type or default</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,104 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>Uses of Class com.bencodez.votingplugin.broadcast.BroadcastFormat (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="use: package: com.bencodez.votingplugin.broadcast, class: BroadcastFormat">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="../package-summary.html">Package</a></li>
<li><a href="../BroadcastFormat.html" title="class in com.bencodez.votingplugin.broadcast">Class</a></li>
<li class="nav-bar-cell1-rev">Use</li>
<li><a href="../package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#use">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="Uses of Class com.bencodez.votingplugin.broadcast.BroadcastFormat" class="title">Uses of Class<br>com.bencodez.votingplugin.broadcast.BroadcastFormat</h1>
</div>
<div class="caption"><span>Packages that use <a href="../BroadcastFormat.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastFormat</a></span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="#com.bencodez.votingplugin.broadcast">com.bencodez.votingplugin.broadcast</a></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
<section class="class-uses">
<ul class="block-list">
<li>
<section class="detail" id="com.bencodez.votingplugin.broadcast">
<h2>Uses of <a href="../BroadcastFormat.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastFormat</a> in <a href="../package-summary.html">com.bencodez.votingplugin.broadcast</a></h2>
<div class="caption"><span>Methods in <a href="../package-summary.html">com.bencodez.votingplugin.broadcast</a> that return <a href="../BroadcastFormat.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastFormat</a></span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code><a href="../BroadcastFormat.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastFormat</a></code></div>
<div class="col-second even-row-color"><span class="type-name-label">BroadcastSettings.</span><code><a href="../BroadcastSettings.html#getFormat()" class="member-name-link">getFormat</a>()</code></div>
<div class="col-last even-row-color">
<div class="block">Returns the broadcast format.</div>
</div>
</div>
<div class="caption"><span>Constructors in <a href="../package-summary.html">com.bencodez.votingplugin.broadcast</a> with parameters of type <a href="../BroadcastFormat.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastFormat</a></span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier</div>
<div class="table-header col-second">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="../BroadcastSettings.html#%3Cinit%3E(com.bencodez.votingplugin.broadcast.VoteBroadcastType,com.bencodez.simpleapi.time.ParsedDuration,int,com.bencodez.votingplugin.broadcast.BroadcastFormat)" class="member-name-link">BroadcastSettings</a><wbr>(<a href="../VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a>&nbsp;type,
com.bencodez.simpleapi.time.ParsedDuration&nbsp;duration,
int&nbsp;maxSitesListed,
<a href="../BroadcastFormat.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastFormat</a>&nbsp;format)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a BroadcastSettings with the specified parameters.</div>
</div>
</div>
</section>
</li>
</ul>
</section>
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,63 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>Uses of Class com.bencodez.votingplugin.broadcast.BroadcastHandler (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="use: package: com.bencodez.votingplugin.broadcast, class: BroadcastHandler">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="../package-summary.html">Package</a></li>
<li><a href="../BroadcastHandler.html" title="class in com.bencodez.votingplugin.broadcast">Class</a></li>
<li class="nav-bar-cell1-rev">Use</li>
<li><a href="../package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#use">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="Uses of Class com.bencodez.votingplugin.broadcast.BroadcastHandler" class="title">Uses of Class<br>com.bencodez.votingplugin.broadcast.BroadcastHandler</h1>
</div>
No usage of com.bencodez.votingplugin.broadcast.BroadcastHandler</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,115 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>Uses of Class com.bencodez.votingplugin.broadcast.BroadcastSettings (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="use: package: com.bencodez.votingplugin.broadcast, class: BroadcastSettings">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="../package-summary.html">Package</a></li>
<li><a href="../BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">Class</a></li>
<li class="nav-bar-cell1-rev">Use</li>
<li><a href="../package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#use">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="Uses of Class com.bencodez.votingplugin.broadcast.BroadcastSettings" class="title">Uses of Class<br>com.bencodez.votingplugin.broadcast.BroadcastSettings</h1>
</div>
<div class="caption"><span>Packages that use <a href="../BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a></span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="#com.bencodez.votingplugin.broadcast">com.bencodez.votingplugin.broadcast</a></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
<section class="class-uses">
<ul class="block-list">
<li>
<section class="detail" id="com.bencodez.votingplugin.broadcast">
<h2>Uses of <a href="../BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a> in <a href="../package-summary.html">com.bencodez.votingplugin.broadcast</a></h2>
<div class="caption"><span>Methods in <a href="../package-summary.html">com.bencodez.votingplugin.broadcast</a> that return <a href="../BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a></span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static <a href="../BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a></code></div>
<div class="col-second even-row-color"><span class="type-name-label">BroadcastSettings.</span><code><a href="../BroadcastSettings.html#load(org.bukkit.configuration.ConfigurationSection)" class="member-name-link">load</a><wbr>(org.bukkit.configuration.ConfigurationSection&nbsp;sec)</code></div>
<div class="col-last even-row-color">
<div class="block">Loads VoteBroadcast settings from config.yml.</div>
</div>
</div>
<div class="caption"><span>Methods in <a href="../package-summary.html">com.bencodez.votingplugin.broadcast</a> with parameters of type <a href="../BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a></span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>void</code></div>
<div class="col-second even-row-color"><span class="type-name-label">BroadcastHandler.</span><code><a href="../BroadcastHandler.html#setSettings(com.bencodez.votingplugin.broadcast.BroadcastSettings)" class="member-name-link">setSettings</a><wbr>(<a href="../BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a>&nbsp;settings)</code></div>
<div class="col-last even-row-color">
<div class="block">Updates the broadcast settings and reschedules the interval task when
required.</div>
</div>
</div>
<div class="caption"><span>Constructors in <a href="../package-summary.html">com.bencodez.votingplugin.broadcast</a> with parameters of type <a href="../BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a></span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier</div>
<div class="table-header col-second">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="../BroadcastHandler.html#%3Cinit%3E(com.bencodez.votingplugin.VotingPluginMain,com.bencodez.votingplugin.broadcast.BroadcastSettings,java.time.ZoneId)" class="member-name-link">BroadcastHandler</a><wbr>(<a href="../../VotingPluginMain.html" title="class in com.bencodez.votingplugin">VotingPluginMain</a>&nbsp;plugin,
<a href="../BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a>&nbsp;settings,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/time/ZoneId.html" title="class or interface in java.time" class="external-link">ZoneId</a>&nbsp;zoneId)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a new broadcast handler.</div>
</div>
</div>
</section>
</li>
</ul>
</section>
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,133 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>Uses of Enum Class com.bencodez.votingplugin.broadcast.VoteBroadcastType (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="use: package: com.bencodez.votingplugin.broadcast, enum: VoteBroadcastType">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="../package-summary.html">Package</a></li>
<li><a href="../VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">Class</a></li>
<li class="nav-bar-cell1-rev">Use</li>
<li><a href="../package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#use">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="Uses of Enum Class com.bencodez.votingplugin.broadcast.VoteBroadcastType" class="title">Uses of Enum Class<br>com.bencodez.votingplugin.broadcast.VoteBroadcastType</h1>
</div>
<div class="caption"><span>Packages that use <a href="../VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="#com.bencodez.votingplugin.broadcast">com.bencodez.votingplugin.broadcast</a></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
<section class="class-uses">
<ul class="block-list">
<li>
<section class="detail" id="com.bencodez.votingplugin.broadcast">
<h2>Uses of <a href="../VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a> in <a href="../package-summary.html">com.bencodez.votingplugin.broadcast</a></h2>
<div class="caption"><span>Methods in <a href="../package-summary.html">com.bencodez.votingplugin.broadcast</a> that return <a href="../VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code><a href="../VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></code></div>
<div class="col-second even-row-color"><span class="type-name-label">BroadcastSettings.</span><code><a href="../BroadcastSettings.html#getType()" class="member-name-link">getType</a>()</code></div>
<div class="col-last even-row-color">
<div class="block">Returns the broadcast type.</div>
</div>
<div class="col-first odd-row-color"><code>static <a href="../VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></code></div>
<div class="col-second odd-row-color"><span class="type-name-label">VoteBroadcastType.</span><code><a href="../VoteBroadcastType.html#parse(java.lang.String,com.bencodez.votingplugin.broadcast.VoteBroadcastType)" class="member-name-link">parse</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;s,
<a href="../VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a>&nbsp;def)</code></div>
<div class="col-last odd-row-color">
<div class="block">Parses a vote broadcast type from a string.</div>
</div>
<div class="col-first even-row-color"><code>static <a href="../VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></code></div>
<div class="col-second even-row-color"><span class="type-name-label">VoteBroadcastType.</span><code><a href="../VoteBroadcastType.html#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
<div class="col-last even-row-color">
<div class="block">Returns the enum constant of this class with the specified name.</div>
</div>
<div class="col-first odd-row-color"><code>static <a href="../VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a>[]</code></div>
<div class="col-second odd-row-color"><span class="type-name-label">VoteBroadcastType.</span><code><a href="../VoteBroadcastType.html#values()" class="member-name-link">values</a>()</code></div>
<div class="col-last odd-row-color">
<div class="block">Returns an array containing the constants of this enum class, in
the order they are declared.</div>
</div>
</div>
<div class="caption"><span>Methods in <a href="../package-summary.html">com.bencodez.votingplugin.broadcast</a> with parameters of type <a href="../VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static <a href="../VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></code></div>
<div class="col-second even-row-color"><span class="type-name-label">VoteBroadcastType.</span><code><a href="../VoteBroadcastType.html#parse(java.lang.String,com.bencodez.votingplugin.broadcast.VoteBroadcastType)" class="member-name-link">parse</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;s,
<a href="../VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a>&nbsp;def)</code></div>
<div class="col-last even-row-color">
<div class="block">Parses a vote broadcast type from a string.</div>
</div>
</div>
<div class="caption"><span>Constructors in <a href="../package-summary.html">com.bencodez.votingplugin.broadcast</a> with parameters of type <a href="../VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier</div>
<div class="table-header col-second">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="../BroadcastSettings.html#%3Cinit%3E(com.bencodez.votingplugin.broadcast.VoteBroadcastType,com.bencodez.simpleapi.time.ParsedDuration,int,com.bencodez.votingplugin.broadcast.BroadcastFormat)" class="member-name-link">BroadcastSettings</a><wbr>(<a href="../VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a>&nbsp;type,
com.bencodez.simpleapi.time.ParsedDuration&nbsp;duration,
int&nbsp;maxSitesListed,
<a href="../BroadcastFormat.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastFormat</a>&nbsp;format)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a BroadcastSettings with the specified parameters.</div>
</div>
</div>
</section>
</li>
</ul>
</section>
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,124 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>com.bencodez.votingplugin.broadcast (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="declaration: package: com.bencodez.votingplugin.broadcast">
<meta name="generator" content="javadoc/PackageWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li class="nav-bar-cell1-rev">Package</li>
<li>Class</li>
<li><a href="package-use.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html#package">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Package:</p>
<ul>
<li>Description</li>
<li><a href="#related-package-summary">Related Packages</a></li>
<li><a href="#class-summary">Classes and Interfaces</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Package:&nbsp;</li>
<li>Description&nbsp;|&nbsp;</li>
<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
<li><a href="#class-summary">Classes and Interfaces</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="Package com.bencodez.votingplugin.broadcast" class="title">Package com.bencodez.votingplugin.broadcast</h1>
</div>
<hr>
<div class="package-signature">package <span class="element-name">com.bencodez.votingplugin.broadcast</span></div>
<section class="summary">
<ul class="summary-list">
<li>
<div id="related-package-summary">
<div class="caption"><span>Related Packages</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="../package-summary.html">com.bencodez.votingplugin</a></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</div>
</li>
<li>
<div id="class-summary">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button></div>
<div id="class-summary.tabpanel" role="tabpanel" aria-labelledby="class-summary-tab0">
<div class="summary-table two-column-summary">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="BroadcastFormat.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastFormat</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Defines HOW vote broadcasts are rendered.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="BroadcastHandler.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastHandler</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Core broadcast logic.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="BroadcastSettings.html" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Immutable broadcast configuration.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="VoteBroadcastType.html" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab3">
<div class="block">Defines WHEN vote broadcasts occur.</div>
</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,93 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>com.bencodez.votingplugin.broadcast Class Hierarchy (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="tree: package: com.bencodez.votingplugin.broadcast">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-tree-page">
<script type="text/javascript">var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li>Class</li>
<li>Use</li>
<li class="nav-bar-cell1-rev">Tree</li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html#tree">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 class="title">Hierarchy For Package com.bencodez.votingplugin.broadcast</h1>
</div>
<span class="package-hierarchy-label">Package Hierarchies:</span>
<ul class="horizontal contents-list">
<li><a href="../../../../overview-tree.html">All Packages</a></li>
</ul>
<section class="hierarchy">
<h2 title="Class Hierarchy">Class Hierarchy</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">com.bencodez.votingplugin.broadcast.<a href="BroadcastFormat.html" class="type-name-link" title="class in com.bencodez.votingplugin.broadcast">BroadcastFormat</a></li>
<li class="circle">com.bencodez.votingplugin.broadcast.<a href="BroadcastHandler.html" class="type-name-link" title="class in com.bencodez.votingplugin.broadcast">BroadcastHandler</a></li>
<li class="circle">com.bencodez.votingplugin.broadcast.<a href="BroadcastSettings.html" class="type-name-link" title="class in com.bencodez.votingplugin.broadcast">BroadcastSettings</a></li>
</ul>
</li>
</ul>
</section>
<section class="hierarchy">
<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
<ul>
<li class="circle">com.bencodez.votingplugin.broadcast.<a href="VoteBroadcastType.html" class="type-name-link" title="enum class in com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</section>
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,95 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>Uses of Package com.bencodez.votingplugin.broadcast (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="use: package: com.bencodez.votingplugin.broadcast">
<meta name="generator" content="javadoc/PackageUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-use-page">
<script type="text/javascript">var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li>Class</li>
<li class="nav-bar-cell1-rev">Use</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html#use">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="Uses of Package com.bencodez.votingplugin.broadcast" class="title">Uses of Package<br>com.bencodez.votingplugin.broadcast</h1>
</div>
<div class="caption"><span>Packages that use <a href="package-summary.html">com.bencodez.votingplugin.broadcast</a></span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="#com.bencodez.votingplugin.broadcast">com.bencodez.votingplugin.broadcast</a></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
<section class="package-uses">
<ul class="block-list">
<li>
<section class="detail" id="com.bencodez.votingplugin.broadcast">
<div class="caption"><span>Classes in <a href="package-summary.html">com.bencodez.votingplugin.broadcast</a> used by <a href="package-summary.html">com.bencodez.votingplugin.broadcast</a></span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="class-use/BroadcastFormat.html#com.bencodez.votingplugin.broadcast">BroadcastFormat</a></div>
<div class="col-last even-row-color">
<div class="block">Defines HOW vote broadcasts are rendered.</div>
</div>
<div class="col-first odd-row-color"><a href="class-use/BroadcastSettings.html#com.bencodez.votingplugin.broadcast">BroadcastSettings</a></div>
<div class="col-last odd-row-color">
<div class="block">Immutable broadcast configuration.</div>
</div>
<div class="col-first even-row-color"><a href="class-use/VoteBroadcastType.html#com.bencodez.votingplugin.broadcast">VoteBroadcastType</a></div>
<div class="col-last even-row-color">
<div class="block">Defines WHEN vote broadcasts occur.</div>
</div>
</div>
</section>
</li>
</ul>
</section>
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,63 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>Uses of Class com.bencodez.votingplugin.BungeeHandler (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="use: package: com.bencodez.votingplugin, class: BungeeHandler">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="../package-summary.html">Package</a></li>
<li><a href="../BungeeHandler.html" title="class in com.bencodez.votingplugin">Class</a></li>
<li class="nav-bar-cell1-rev">Use</li>
<li><a href="../package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html#use">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="Uses of Class com.bencodez.votingplugin.BungeeHandler" class="title">Uses of Class<br>com.bencodez.votingplugin.BungeeHandler</h1>
</div>
No usage of com.bencodez.votingplugin.BungeeHandler</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,88 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>Uses of Class com.bencodez.votingplugin.VotingPluginHooks (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="use: package: com.bencodez.votingplugin, class: VotingPluginHooks">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="../package-summary.html">Package</a></li>
<li><a href="../VotingPluginHooks.html" title="class in com.bencodez.votingplugin">Class</a></li>
<li class="nav-bar-cell1-rev">Use</li>
<li><a href="../package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html#use">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="Uses of Class com.bencodez.votingplugin.VotingPluginHooks" class="title">Uses of Class<br>com.bencodez.votingplugin.VotingPluginHooks</h1>
</div>
<div class="caption"><span>Packages that use <a href="../VotingPluginHooks.html" title="class in com.bencodez.votingplugin">VotingPluginHooks</a></span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="#com.bencodez.votingplugin">com.bencodez.votingplugin</a></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
<section class="class-uses">
<ul class="block-list">
<li>
<section class="detail" id="com.bencodez.votingplugin">
<h2>Uses of <a href="../VotingPluginHooks.html" title="class in com.bencodez.votingplugin">VotingPluginHooks</a> in <a href="../package-summary.html">com.bencodez.votingplugin</a></h2>
<div class="caption"><span>Methods in <a href="../package-summary.html">com.bencodez.votingplugin</a> that return <a href="../VotingPluginHooks.html" title="class in com.bencodez.votingplugin">VotingPluginHooks</a></span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static <a href="../VotingPluginHooks.html" title="class in com.bencodez.votingplugin">VotingPluginHooks</a></code></div>
<div class="col-second even-row-color"><span class="type-name-label">VotingPluginHooks.</span><code><a href="../VotingPluginHooks.html#getInstance()" class="member-name-link">getInstance</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
</ul>
</section>
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,63 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>Uses of Class com.bencodez.votingplugin.VotingPluginMetrics (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="use: package: com.bencodez.votingplugin, class: VotingPluginMetrics">
<meta name="generator" content="javadoc/ClassUseWriter">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="../package-summary.html">Package</a></li>
<li><a href="../VotingPluginMetrics.html" title="class in com.bencodez.votingplugin">Class</a></li>
<li class="nav-bar-cell1-rev">Use</li>
<li><a href="../package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html#use">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="Uses of Class com.bencodez.votingplugin.VotingPluginMetrics" class="title">Uses of Class<br>com.bencodez.votingplugin.VotingPluginMetrics</h1>
</div>
No usage of com.bencodez.votingplugin.VotingPluginMetrics</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
@@ -0,0 +1,382 @@
<!DOCTYPE HTML>
<html lang>
<head>
<!-- Generated by javadoc (21) on Thu Jul 23 01:52:27 UTC 2026 -->
<title>CommandLoader (VotingPlugin 7.1.1 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-07-23">
<meta name="description" content="declaration: package: com.bencodez.votingplugin.commands, class: CommandLoader">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/CommandLoader.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li>Field</li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">com.bencodez.votingplugin.commands</a></div>
<h1 title="Class CommandLoader" class="title">Class CommandLoader</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">com.bencodez.votingplugin.commands.CommandLoader</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">CommandLoader</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">The Class CommandLoader.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(com.bencodez.votingplugin.VotingPluginMain)" class="member-name-link">CommandLoader</a><wbr>(<a href="../VotingPluginMain.html" title="class in com.bencodez.votingplugin">VotingPluginMain</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructs a new CommandLoader.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAdminPerm()" class="member-name-link">getAdminPerm</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAliasCommandNames()" class="member-name-link">getAliasCommandNames</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Gets the set of alias command names.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>com.bencodez.advancedcore.api.inventory.BInventoryButton</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBackButton(com.bencodez.votingplugin.user.VotingPluginUser)" class="member-name-link">getBackButton</a><wbr>(<a href="../user/VotingPluginUser.html" title="class in com.bencodez.votingplugin.user">VotingPluginUser</a>&nbsp;user)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Gets the back button for inventory navigation.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/HashMap.html" title="class or interface in java.util" class="external-link">HashMap</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>com.bencodez.advancedcore.api.command.CommandHandler&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCommands()" class="member-name-link">getCommands</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Gets the commands.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getModPerm()" class="member-name-link">getModPerm</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayerPerm()" class="member-name-link">getPlayerPerm</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hasPermission(org.bukkit.entity.Player,java.lang.String)" class="member-name-link">hasPermission</a><wbr>(org.bukkit.entity.Player&nbsp;player,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cmd)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Checks if a player has permission for a command.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isVotingPluginCommand(org.bukkit.entity.Player,java.lang.String)" class="member-name-link">isVotingPluginCommand</a><wbr>(org.bukkit.entity.Player&nbsp;player,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cmd)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Checks if a command belongs to the VotingPlugin.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadAliases()" class="member-name-link">loadAliases</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Load aliases.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadCommands()" class="member-name-link">loadCommands</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Load commands.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadTabComplete()" class="member-name-link">loadTabComplete</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Load tab complete.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#processSlotClick(org.bukkit.entity.Player,com.bencodez.votingplugin.user.VotingPluginUser,java.lang.String)" class="member-name-link">processSlotClick</a><wbr>(org.bukkit.entity.Player&nbsp;player,
<a href="../user/VotingPluginUser.html" title="class in com.bencodez.votingplugin.user">VotingPluginUser</a>&nbsp;user,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;slot)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Processes a slot click action from a GUI.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setCommands(java.util.HashMap)" class="member-name-link">setCommands</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/HashMap.html" title="class or interface in java.util" class="external-link">HashMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>com.bencodez.advancedcore.api.command.CommandHandler&gt;&nbsp;commands)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sets the commands.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(com.bencodez.votingplugin.VotingPluginMain)">
<h3>CommandLoader</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CommandLoader</span><wbr><span class="parameters">(<a href="../VotingPluginMain.html" title="class in com.bencodez.votingplugin">VotingPluginMain</a>&nbsp;plugin)</span></div>
<div class="block">Constructs a new CommandLoader.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>plugin</code> - the main plugin instance</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getAdminPerm()">
<h3>getAdminPerm</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getAdminPerm</span>()</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the adminPerm</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getBackButton(com.bencodez.votingplugin.user.VotingPluginUser)">
<h3>getBackButton</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">com.bencodez.advancedcore.api.inventory.BInventoryButton</span>&nbsp;<span class="element-name">getBackButton</span><wbr><span class="parameters">(<a href="../user/VotingPluginUser.html" title="class in com.bencodez.votingplugin.user">VotingPluginUser</a>&nbsp;user)</span></div>
<div class="block">Gets the back button for inventory navigation.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>user</code> - the voting plugin user</dd>
<dt>Returns:</dt>
<dd>the back button</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getCommands()">
<h3>getCommands</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/HashMap.html" title="class or interface in java.util" class="external-link">HashMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>com.bencodez.advancedcore.api.command.CommandHandler&gt;</span>&nbsp;<span class="element-name">getCommands</span>()</div>
<div class="block">Gets the commands.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the commands</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getModPerm()">
<h3>getModPerm</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getModPerm</span>()</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the modPerm</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getPlayerPerm()">
<h3>getPlayerPerm</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getPlayerPerm</span>()</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the playerPerm</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="hasPermission(org.bukkit.entity.Player,java.lang.String)">
<h3>hasPermission</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">hasPermission</span><wbr><span class="parameters">(org.bukkit.entity.Player&nbsp;player,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cmd)</span></div>
<div class="block">Checks if a player has permission for a command.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>player</code> - the player</dd>
<dd><code>cmd</code> - the command</dd>
<dt>Returns:</dt>
<dd>true if player has permission</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isVotingPluginCommand(org.bukkit.entity.Player,java.lang.String)">
<h3>isVotingPluginCommand</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isVotingPluginCommand</span><wbr><span class="parameters">(org.bukkit.entity.Player&nbsp;player,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cmd)</span></div>
<div class="block">Checks if a command belongs to the VotingPlugin.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>player</code> - the player</dd>
<dd><code>cmd</code> - the command</dd>
<dt>Returns:</dt>
<dd>true if it's a VotingPlugin command</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getAliasCommandNames()">
<h3>getAliasCommandNames</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">getAliasCommandNames</span>()</div>
<div class="block">Gets the set of alias command names.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>set of alias command names</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="loadAliases()">
<h3>loadAliases</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">loadAliases</span>()</div>
<div class="block">Load aliases.</div>
</section>
</li>
<li>
<section class="detail" id="loadCommands()">
<h3>loadCommands</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">loadCommands</span>()</div>
<div class="block">Load commands.</div>
</section>
</li>
<li>
<section class="detail" id="loadTabComplete()">
<h3>loadTabComplete</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">loadTabComplete</span>()</div>
<div class="block">Load tab complete.</div>
</section>
</li>
<li>
<section class="detail" id="processSlotClick(org.bukkit.entity.Player,com.bencodez.votingplugin.user.VotingPluginUser,java.lang.String)">
<h3>processSlotClick</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">processSlotClick</span><wbr><span class="parameters">(org.bukkit.entity.Player&nbsp;player,
<a href="../user/VotingPluginUser.html" title="class in com.bencodez.votingplugin.user">VotingPluginUser</a>&nbsp;user,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;slot)</span></div>
<div class="block">Processes a slot click action from a GUI.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>player</code> - the player</dd>
<dd><code>user</code> - the voting plugin user</dd>
<dd><code>slot</code> - the slot identifier</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setCommands(java.util.HashMap)">
<h3>setCommands</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setCommands</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/HashMap.html" title="class or interface in java.util" class="external-link">HashMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>com.bencodez.advancedcore.api.command.CommandHandler&gt;&nbsp;commands)</span></div>
<div class="block">Sets the commands.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>commands</code> - the commands</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2026. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
Loaded 100 of 728 files, more files were not shown because too many files have changed in this diff. Show more