Compare commits

..

195 Commits
v4.2 ... v4.3

Author SHA1 Message Date
c002fbc537 Handle player online check in AsyncPlayerPreLoginEvent
Apparently, online players with the same username are kicked before PlayerLoginEvent is called. This commit moves the online player check to AsyncPlayerPreloginEvent so the default behaviour can still be modified

Fixes #642
2015-05-30 20:51:49 +02:00
a4d8f4646e Properly block /jail and /unjail
They're both aliases, /togglejail is the actual command
2015-05-30 20:13:11 +02:00
f2dc46d4ef Work around /saconfig clearme bug. Fixes #629 2015-05-30 20:01:10 +02:00
901a327b1e Block/unblock pending commands for non-superadmins
Blocked /jail, /unjail and /blockdata for non-superadmins
Moved /clearhistory, /save-all, /save-on and /save-off to non-autoeject section

Resolves #671, Resolves #670, Resolves #656
2015-05-30 19:58:15 +02:00
580ba0a357 Prevent players moving to illegal positions. Fixes #651 2015-05-30 19:45:22 +02:00
abf52870dd Block /green for non-superadmins. Resolves #594
Moved /restart to the correct section
2015-05-14 15:27:15 +02:00
b66614cad9 Block /execute for non-superadmins. Resolves #630 2015-05-14 14:30:51 +02:00
ff70f13e05 Fixed bug where /uuid recalculate would set ranks incorrectly 2015-05-13 14:56:38 +02:00
ea110c01dd Add /overlord 2015-05-13 14:52:01 +02:00
632f3647a8 Blocked /tpall for non-superadmins 2015-05-12 20:43:35 +02:00
80287433eb Properly fixed commandblocker
Rest in peace, terrible, terrible mistake
2015-05-12 20:34:04 +02:00
b18aeb2d38 Work around setFlying() throwing exceptions 2015-05-12 20:17:38 +02:00
68f972c562 Allow players to fly. Fixes #608 2015-05-12 17:18:12 +02:00
994056047a Block /weather for non-superadmins. Resolves #617 2015-05-12 17:13:28 +02:00
f115315341 Block /worldborder for non-superadmins. Resolves #615 2015-05-12 17:08:44 +02:00
57e5395143 Block /title for non-superadmins. Resolves #621 2015-05-12 17:07:41 +02:00
17f3a4ca3d Remove blocked commands from the CommandMap. Resolves #622
Temporarily workaround: Remove blocked command from the CommandMap
In Spigot 1.8.3, cancelling PlayerCommandPreprocessEvent will have no effect
This results in TFM failing to block player commands: The player will get a message,
but the command will still execute. Removing the command from the CommandMap is a
temporary workaround untill the related Spigot issue has been fixed.

https://hub.spigotmc.org/jira/browse/SPIGOT-879
2015-05-12 16:54:51 +02:00
e2d0e9e754 Fixed error when blocking player commands 2015-05-12 16:45:10 +02:00
b167540ad7 Properly cancel blocked commands 2015-05-11 23:05:21 +02:00
0d1ce072dc Reorder prefix assignments, fixes admin prefixes 2015-05-11 22:37:38 +02:00
887a5c6b16 Fixed all admins showing up as Superadmins 2015-05-11 22:21:59 +02:00
ea6bfa8387 Fix commandblocker not blocking properly. Resolves #586 2015-05-10 23:28:13 +02:00
42266c37ea Fixed false positive plugin specific command block. Resolves #575 2015-05-10 23:19:23 +02:00
2dd8e00201 Lowercase commands before mute-block checking. Resolves #312 2015-04-27 00:58:27 +02:00
46cd88a18a Add protected spawnpoints after all worlds have been loaded. Resolves #438 2015-04-27 00:53:07 +02:00
2ff0f6f5d6 Fix Forge clients being unable to log in. Resolves #493 2015-04-27 00:48:33 +02:00
9ff6325469 Add owner to standard prefixes. Resolves #504 2015-04-27 00:45:47 +02:00
ea404985fd Ban IPs in /tban. Resolves #499 2015-04-27 00:39:36 +02:00
8fc25111e2 Synchronize calls in AsyncPlayerChatEvent listener. Resolves #524 2015-04-27 00:31:54 +02:00
4fce1109a1 Merge branch 'master' into pr/553 2015-04-27 00:08:13 +02:00
916fd75003 Added Mumble announcement 2015-04-27 00:07:50 +02:00
aa35aae58f Merge branch 'master' into pr/574 2015-04-26 23:51:18 +02:00
6849fb2784 Display proper URL when banning with /glist ban
When you glist ban an online player, it says totalfreedom.boards.net regardless of the config entry. I modified it so it is the config.yml's ban appeal URL.
2015-04-26 23:50:40 +02:00
313577d083 Merge from master 2015-04-26 23:30:54 +02:00
53efcfd06b Don't autoeject players using /reload. Resolves #525 2015-04-26 23:28:29 +02:00
edaaeef65f Merge branch 'master' into pr/571 2015-04-26 23:25:32 +02:00
d6eb5bdcda Fix getIpBanList() returning UUID bans. Fixes #570 2015-04-26 23:23:46 +02:00
7d675923db Replaced last instances of DarthSalamon with Prozza 2015-04-26 22:40:38 +02:00
87fd8a165c Added MCConnect IP to nosuper IPs 2015-04-26 22:29:31 +02:00
1205252450 Correct compile NMS version 2015-04-26 22:21:26 +02:00
1ed45b1a20 Compile with Java 7 2015-04-26 22:17:25 +02:00
822f55d9f2 Merge with master 2015-04-26 20:44:28 +02:00
aacf37aa56 Update to Spigot 1.8.3-R2 2015-04-26 20:43:37 +02:00
a15e39d7dd Added more announcements. Resolves #516 2015-03-29 12:10:55 +02:00
72fa8532d3 Blocked pending commands in CommandBlocker. Resolves #492 2015-03-15 13:19:20 +01:00
f4aa0c324c Updated to new WorldEdit API
TF-WorldEdit doesn't depend on TFM anymore. It's event-based now.
Moved TFM_TelnetListener to the Bridge subpackage
2015-03-07 17:32:27 +01:00
73ee1f3624 Implement SuperAdmin service 2015-02-18 19:24:04 +01:00
4ca3593653 Release v4.3 2015-02-16 17:13:21 +01:00
af52dec24a Store UUIDs in a SQLite database. Resolves #373 and resolves #406 2015-02-16 17:00:38 +01:00
34ebb3586c Resolve PlayerRank entries by IP. Resolves #415 2015-02-16 15:49:10 +01:00
eee8682959 Merge branch 'master' into commandblocker 2015-02-15 19:28:10 +01:00
af1dd2e9ff Added support for blocking subcommands. Resolves #357, Resolves #365 and Resolves #334 2015-02-15 19:27:35 +01:00
ade60ad611 Updated developer names. Resolves #421 2015-02-13 18:08:27 +01:00
e699ad1663 Cleanup: Mass reformat and organize imports 2015-01-15 15:47:10 +01:00
e2308ee904 Block /spreadplayers in config. Closes #382 2014-12-06 15:02:51 +01:00
d14a595ac4 Update to Spigot's CraftBukkit 1.8
Corrected the version check number

Moved Apache Commons reference to imports section
2014-11-30 13:54:29 +01:00
5190af0a6b Merge pull request #377 from ItzLevvie/patch-3
Fixed spelling mistake in TFM_PlayerData.java
2014-11-25 20:39:00 +01:00
a11b87ec83 Fixed spelling mistake in TFM_PlayerData.java 2014-11-25 19:29:58 +00:00
c7a0604afc Move unfreeze and unmute tasks to TFM_PlayerData. Resolves #352
Mass format & cleanup
2014-11-20 23:20:31 +01:00
9970277134 Fixed last bugs with ForceIP. Closes #354 2014-11-13 21:14:21 +01:00
49f6879ccb Merged with master 2014-11-13 19:22:18 +01:00
794b76321a Avoid adding blocked IPs to the superadmin list 2014-11-13 18:37:49 +01:00
e5b4ae0e3e Merge with master 2014-11-02 14:22:53 +01:00
310ce4f75a Ported all useful features from MobArena over to TFM 2014-11-02 14:20:10 +01:00
cf072dc0d5 Merge pull request #353 from Wild1145/master
ForceIP bugfixes.
2014-11-01 21:00:19 +01:00
7fe0b562ee Cleaned it up a bit as suggested by @jeromsar 2014-11-01 19:55:45 +00:00
6f6fdb28bf Minor tweaks to default port, Heartbeat and blocked cmd's 2014-11-01 19:51:43 +00:00
524d4da9d8 Bug Crunching on the ForceIP - Should work a lot better now. 2014-11-01 19:46:00 +00:00
0aa0bae0ad Merge pull request #349 from Wild1145/master
Added ForceIP. Resolves #224
2014-11-01 20:14:27 +01:00
fcf52ba02a Managed to tweak the port requirement, isnt actually needed like I thought. 2014-11-01 17:44:07 +00:00
8a92ff132b Changed the default config entry for the server address & added a little tweak. 2014-11-01 15:36:24 +00:00
99043a7c49 Removed Hostname and Port from the config - Now using the server address. 2014-11-01 12:10:08 +00:00
2a71be4050 Tweaked the config notes for Hostname & Port to make it a bit more descriptive 2014-10-31 18:10:06 +00:00
b43ef812a2 Fixed another slight formatting issue. 2014-10-31 18:05:25 +00:00
7981adaf85 Fixed Formatting Issues - Forgot it was allman style there. 2014-10-31 17:57:44 +00:00
1bc22a817a Removed the whitespace. 2014-10-31 17:52:57 +00:00
57a6b35457 Added the ForceIP feature - Resolves #224 2014-10-31 17:47:05 +00:00
8b45482d0a [Bleeding] Block listed IPs from being supered. Resolves #201 2014-10-30 19:44:05 +01:00
af64a77268 Officially compiling for Spigot for the time being 2014-10-30 19:28:47 +01:00
5c50069f21 Merge pull request #346 from ItzLevvie/patch-2
Fixed spelling mistake in Command_rd.java
2014-10-25 14:20:53 -04:00
3c329667a4 Fixed spelling mistake in Command_rd.java 2014-10-25 19:08:44 +01:00
1565c9643d Merge branch 'Obi2kanobi-master' 2014-10-01 13:22:10 -04:00
84ef49bf65 Tweak whitespace, change description. 2014-10-01 13:21:52 -04:00
878075c898 Merge branch 'master' of https://github.com/Obi2kanobi/TotalFreedomMod into Obi2kanobi-master 2014-10-01 13:18:09 -04:00
c74763c96a Adjust filename filter for schematic manager. 2014-09-28 18:24:48 -04:00
d01f9d0b2f Smite players with /stfu -s. Fixes #325. 2014-09-28 22:14:52 +01:00
e780c4ffec Change to v1_7_R4 for Spigot's pseudo-1.8 support. 2014-09-24 18:37:12 -04:00
3968dbe0a2 Merge pull request #316 from KingDragonRider/master
Blocked /size and //mask. Resolves #316
2014-09-23 21:23:49 +02:00
ff9164714c Restructured /saconfig. Resolves #322. Resolves #303. 2014-09-19 19:59:29 -04:00
72e105eb34 Added extra blocked commands used to bypass //brush
I've added commands which enable //brush even though it is blocked (/size and //mask) to the blocked commands list (for superadmins only).
2014-09-13 17:16:55 +01:00
f4440fd262 Merge pull request #310 from ItzLevvie/patch-1
Blocked "/setidletimeout" in config.yml
2014-09-13 17:49:56 +02:00
587b84a489 Blocked "/setidletimeout" in Config
Closes https://github.com/TotalFreedom/TotalFreedomMod/issues/307
2014-09-03 17:15:38 +01:00
107952f0ba Modified /ro to not affect adminworld. 2014-08-30 15:18:45 -04:00
8cae042857 Don't write spoofed UUIDs to cache 2014-08-30 16:24:35 +02:00
d1b73592af Compatibility with old builds of WorldEdit. 2014-08-27 20:53:43 -04:00
b7175d73ab Fixed AIOOBE in /rollback 2014-08-27 13:30:46 +02:00
9c976b381b Added TFM_UuidManager to cache UUIDs. Resolves #255
All methods related to UUIDs in TFM_Util have been moved to TFM_UuidManager
2014-08-27 11:42:49 +02:00
0c99862793 Perform backups in a seperate folder
Perform weekly backups on config.yml
Minor refractoring
2014-08-27 10:58:26 +02:00
0240b65fad Save and remove player entries on leave
Removed timer for player loading, applied to plugin instead
2014-08-27 00:28:44 +02:00
b6d3e5baca Merged with master 2014-08-26 18:25:27 +02:00
15650b84cf Fixed duplicate ban entries
Bans are equal when:
a) The ban-type matches
b) The ban-subject matches
Small changes
2014-08-26 18:23:48 +02:00
9233bcfedc Added some getters for TFM_Announcer 2014-08-25 20:05:10 +02:00
b0aa4a850d Added Announcer. Resolves #226
Organised onEnable()
Formatting
2014-08-25 20:01:54 +02:00
af97481d11 Return false on incorrect args in Command_rollback. Fixes #296 2014-08-25 18:47:29 +02:00
3c6e706c98 Merged with master 2014-08-25 14:07:47 +02:00
aca62caec1 Revamped TFM_BanManager, TFM_Ban and TFM_ServerInterface
Better ban type checking
Moved ban reason compilation to TFM_Ban
TFM_ServerInterface: Less expensive operations first
Command_rollback now polls TFM_RollbackManager for available players
2014-08-25 13:57:13 +02:00
eaa23985bd Merge pull request #294 from Obi2kanobi/contributing
Format GTFO reason broadcast. Fixes #293
2014-08-24 11:21:24 +01:00
e3f9452b9f Fix GTFO broadcast formatting. Fixes #293 2014-08-24 00:30:56 +01:00
755080d0a4 Code refactoring and cleanup. 2014-08-23 14:19:25 -04:00
0f764b976b Tweak /cake. Fixes #295. 2014-08-23 13:52:26 -04:00
d0a435a5d6 Added preliminary TFM support for TelnetRequestDataTagsEvent. 2014-08-20 21:23:22 -04:00
b02764ddca lang.StringUtils -> lang3.StringUtils
Remove bold from /nickclean.
2014-08-18 16:48:52 -04:00
b3c28d33f2 Fixed broken format for /gadmin ipban. 2014-08-15 22:53:57 -04:00
6ad1187eef Merge branch 'patch-2' 2014-08-15 16:29:53 -04:00
1bf1267b49 Remove extra lines. 2014-08-15 16:29:40 -04:00
d2f6f7f51a Make '/tfm reload' update blocked commands. Resolves #265.
Config must be reloaded in order to pull in any changes to blocked commands list.
2014-08-15 16:16:45 -04:00
dc2c996516 Block tags containing "console", fixes #260. 2014-08-15 15:59:43 -04:00
f502e44764 Added /nickclean - mass remove distracting things from player nicknames. 2014-08-14 19:07:52 -04:00
c490a3d62e Now made qdeop require you to be op else it wont try to deop the player. 2014-08-14 22:37:20 +01:00
9a2dc52e87 Using qop should now only op those who are not op.
This will further reduce the amount of spam and doesn't spam everyone with "you are now op".
2014-08-14 22:32:45 +01:00
a1c11f4e0f Using playerMsg(final String message) instead of playerMsg(final CommandSender sender, final String message) when possible. 2014-08-14 15:49:48 -04:00
48fd4c590d Use TFM_Command.playerMsg instead of TFM_Util.playerMsg for commands. 2014-08-13 20:56:04 -04:00
97cde0cfd4 Modified /qop and /qdeop to be a bit less spammy when multiple matches are found. 2014-08-13 20:11:12 -04:00
429269d8d2 Partial fix for #267.
Still need to implement method to kick people off telnet if they are deactivated while connected.

Also - 800th commit! Woohoo!
2014-08-12 19:38:32 -04:00
1a50c16d9a Rework tags (now they won't duplicate when Essentials changes display name). 2014-08-12 18:25:57 -04:00
891d8d178f Use commons' substring function to avoid IndexOutOfBoundsExceptions. 2014-08-12 15:32:56 -04:00
fc1c487dce Woops 2014-08-09 18:53:54 +02:00
e2cc14370a Added /forestgen to blocked commands 2014-08-09 18:13:15 +02:00
d5d6f18fb4 Truncate string argument on calls calls to setPlayerListName. Resolves #262. 2014-08-07 20:47:15 -04:00
00e22dc56e Formatting fix for CONTRIBUTING.md 2014-08-02 21:58:57 +02:00
40b475ea0c Merge branch 'master' of https://github.com/TotalFreedom/TotalFreedomMod 2014-08-02 21:55:03 +02:00
65eabbdba4 Added links 2014-08-02 21:54:18 +02:00
cb4a47d812 Made some changes to CONTRIBUTING.md 2014-08-02 21:45:57 +02:00
ecbd70493b Merge branch 'master' of https://github.com/TotalFreedom/TotalFreedomMod 2014-08-02 11:14:55 -04:00
4988140268 Fixed mixed string concatenation / String.format usage.
Doesn't make much sense to use string concatenation and a String.format to generate the same output. I believe this method is much more readable.
2014-08-02 11:14:37 -04:00
57b0aadb9b Added some comments regarding the license 2014-08-02 17:10:54 +02:00
ef9ce2a9a7 [Bleeding] First compile of new playerdata system. Resolves #223
The new TFM_PlayerList stores player under /players/[uuid].yml and only caches online players. When players log in, their playerdata will be loaded.
2014-08-02 16:27:43 +02:00
2c92b0874e Merge pull request #253 from PacksGamingHD/patch-2
Fixed compile error.
2014-08-02 14:05:20 +02:00
927560ad75 TotalFreedomMod won't compile like that. 2014-08-01 23:01:04 -07:00
c8dbc8a623 Merge pull request #251 from LevnettUKRonit/patch-2
Add ban reason to /gtfo
2014-08-01 17:58:10 +02:00
11eef83a65 Fixed the ban reason on the same line as the actual ban
Resolves https://github.com/TotalFreedom/TotalFreedomMod/pull/250
2014-08-01 15:39:07 +01:00
a2439a7093 Merge pull request #249 from LevnettUKRonit/patch-1
Update config.yml
2014-07-30 14:12:07 +01:00
d8697590a7 Update config.yml
Closes https://github.com/TotalFreedom/TotalFreedomMod/issues/233
2014-07-30 14:07:31 +01:00
6d98604cf0 Update config.yml 2014-07-30 09:27:21 +01:00
3d6be1cd51 Significantly speed up player list loading. 2014-07-29 22:38:08 -04:00
01edfed307 Tweak /whohas. Note the change from bitwise & to logical && resolving possible bug. 2014-07-26 11:48:17 -04:00
5e4d1d0d6d Limit duration and amplifier for /potion command. Resolves #243 2014-07-26 11:47:23 -04:00
86f61f1487 Restructure gadmin. Resolves #245 2014-07-25 23:11:44 -04:00
461cfa7bdc Switched from Essentials' StringUtil to Apache Commons StringUtils. 2014-07-20 17:40:06 -04:00
75b296496e Removed DisguiseCraft support. 2014-07-20 17:25:45 -04:00
183277db21 Clean up sources of compile warnings.
Move anything that causes deprecation warnings into TFM_DepreciationAggregator if no alternative implementation possible.
2014-07-19 21:02:00 -04:00
2b597867f0 Eliminate usage of deprecated org.bukkit.Server.matchPlayer
Suppress unchecked cast warnings in Module_players.
2014-07-19 17:39:42 -04:00
7f7312c0a2 Fix landmine. 2014-07-19 17:34:12 -04:00
73214165a5 Fix glitch in clownfish smacker. 2014-07-19 15:29:07 -04:00
54be4f7e88 Added clownfish smacker. 2014-07-19 14:59:02 -04:00
3ccab5f534 Fixed exploit that allows command blocker to be bypassed. 2014-07-17 17:28:32 -04:00
f635af5f95 Fix error when using /ops purge. 2014-07-16 20:41:14 -04:00
cc3a183cac Fixed toggle message for /toggle fluidspread. 2014-07-13 22:43:27 -04:00
173b686658 Add HTTPD Module_logs, resolves #238 2014-07-13 18:04:08 -04:00
a0d5743232 Ensure UUID is never null at login. Amends #214 and fixes #229 2014-06-30 19:09:26 +02:00
7598d211cd Correctly display permban URL. Fixes #228 2014-06-30 17:51:13 +02:00
6b064d0e68 Correctly reference static members in TFM_Jumppads. Fixes #225 2014-06-30 17:35:58 +02:00
8fc0673bb2 /tfm: Return true when the player doesn't have permission. Fixes #227 2014-06-30 17:30:16 +02:00
aa062a9d11 Ensure UUID is never null for non-existing players
Currently, the player's name is SHA-1'ed and the first 32 hexadecimal
characters are formed into a 'spoofed UUID'. I think this is the best solution
2014-06-29 16:40:53 +02:00
8b4b2f97e0 Finished TFM_UuidResolver and /uuid. Resolves #214 2014-06-29 12:09:03 +02:00
c4f1d0c06f Merge from master 2014-06-29 10:53:39 +02:00
20d4e886fc Merge from bleeding 2014-06-28 22:31:33 +02:00
e36ace1671 [Bleeding] Started work on TFM_UuidFetcher 2014-06-28 22:24:36 +02:00
2f055fbecb /gadmin: return false if required args are not present. Resolves #220 2014-06-28 12:00:16 +02:00
d193686c79 Block //snow. Resolves #217 2014-06-28 11:50:15 +02:00
ba2ada569f [Bleeding] Fixed permissions through console. Resolves #195 2014-06-28 11:43:05 +02:00
850fd9aa4a [Bleeding] Save when purging (ip)ban list. Resolves #219
Small changes
2014-06-28 00:22:55 +02:00
1fb14ca1dd Added /list -a. Resolves #194 2014-06-22 18:07:02 +02:00
499472a126 Remove adminworld guests properly. Fixes #202 2014-06-22 17:53:50 +02:00
28459e4702 Merge branch 'master' of https://github.com/TotalFreedom/TotalFreedomMod 2014-06-22 17:13:30 +02:00
57dda8367c Merge branch 'Wilee999-patch-3' 2014-06-22 17:12:56 +02:00
cdf03b4353 Perform suggested changes. Fixes #184 2014-06-22 17:12:30 +02:00
5ec66e8c7e Merge branch 'patch-3' of https://github.com/Wilee999/TotalFreedomMod into Wilee999-patch-3 2014-06-22 17:06:54 +02:00
f57aeb8fb0 Merge pull request #210 from WickedGamingUK/patch-1
Java Code Conventions
2014-06-22 16:58:46 +02:00
adb3834836 Don't double toggle in /toggle. Fixes #193 2014-06-22 16:56:02 +02:00
d82d6fd704 Updated latest WorldEdit methods 2014-06-22 16:50:57 +02:00
ec0683f610 Java Code Conventions 2014-06-18 16:36:52 +01:00
2d118a44a9 Removed xXWilee99Xx from the developer list 2014-06-16 15:50:16 +02:00
64cd7f7393 Merge pull request #204 from LevnettUKRonit/patch-4
Added aliases /gmc to /creative
2014-06-10 16:42:13 +02:00
9a1fc8ea36 Merge pull request #205 from LevnettUKRonit/patch-5
Added alias /gms to /survival
2014-06-10 16:41:38 +02:00
75247af337 Added aliases /gms 2014-06-09 17:48:57 +01:00
d20b062b70 Added aliases /gmc 2014-06-09 17:25:31 +01:00
4b36574255 Merge pull request #199 from LevnettUKRonit/patch-3
Changed /tag remove to /tag off to match usage.
2014-06-08 10:47:11 +02:00
bba42797d8 Changed /tag remove to /tag off to match usage. 2014-05-29 17:22:28 +01:00
365e38e63a Merge pull request #196 from LevnettUKRonit/patch-1
Telnet Admin should be dark green. Fixes #192.
2014-05-28 17:05:50 +02:00
5a3106ace8 Fixed TFM_PlayerListener.java
Fixed where it said Telnet Admin was light green its now ChatColor.DARK_GREEN
2014-05-28 09:53:23 +01:00
8cb4ef111c Rename /saconfig clear to /saconfig clearme. Closes #189 2014-05-19 19:46:40 +02:00
50d6cf471c Incremented version number for development towards next release 2014-05-19 19:33:18 +02:00
e942f0bf75 Removed most singleton patterns. Resolves #181 2014-05-19 19:32:25 +02:00
e4bb1ef6aa Auto-freeze on imposter login; adds: http://www.totalfreedom.boards.net/thread/12123 2014-05-15 18:57:34 -07:00
159 changed files with 4851 additions and 2519 deletions

View File

@ -1,51 +1,93 @@
# Contributing to TotalFreedomMod #
TotalFreedomMod is a CraftBukkit server plugin designed primarily to support the [Official TotalFreedom Minecraft Server](http://totalfreedom.me/). However, it can be used in a variety of other configurations with minimal fuss.
For those who wish to contribute, we encourage you to fork the repository and submit pull requests. Below you will find guidelines that will explain this process in further detail.
For those who wish to contribute, we encourage you to fork the repository and submit pull requests. Below you will find guidelines that explain this process in further detail.
## Quick Guide ##
1. Create or find an issue on our [Issue Tracker](https://github.com/TotalFreedom/TotalFreedomMod/issues).
2. Does your change fits TotalFreedomMod's goals?
3. Fork TotalFreedomMod if you haven't done so already.
4. Make a branch dedicated to your change.
5. Make your change.
6. Commit your change according to the [committing guidelines](#committing-your-changes).
7. Push your branch and submit a pull request.
## Getting Started ##
* Make sure you have a [GitHub account](https://github.com/signup/free)
* If the issue is a bug, submit a ticket for it, assuming one does not already exist.
* Clearly describe the issue including steps to reproduce it.
* Make sure you fill in the earliest version that you know has the issue.
* Fork the repository on GitHub
* Search the issue tracker for your bug report or feature request.
* If the issue does not exist already, create it.
* Clearly describe the issue.
* If your issue is a bug, describe the steps needed to reproduce it.
* If your issue is a feature request, ensure it fits TotalFreedomMod's goals and describe your feature in detail.
* Fork the repository on GitHub.
## Does the change fit TotalFreedomMod's goals? ##
As a rough guideline, ask yourself the following questions to determine if your proposed change fits the TotalFreedomMod project's goals. Please remember that this is only a rough guideline and may or may not reflect the definitive answer to this question.
* Is the change in line with the principles of "Total Freedom"?
TotalFreedom is a freedom-based server. We don't normally make changes that restrict players unless absolutely necessary.
* Is the change directed towards the TotalFreedom server?
Changes must be directed towards the TotalFreedom server. Changes such as adding ranks, adding the name of other TotalFreedom-like servers will not likely be accepted.
* Does the change add a feature that involves micromanagement?
Pull requests that involve adding a micromanagement feature will likely not be accepted. This includes shorthands for multiple commands.
* Is a similar feature already present?
Features that have very similar alternatives will not be added. For example: A command that temporarily bans a player from the server is very similar to the _/tban_ command and thus will likely not be accepted.
## Making Changes ##
* Create a topic branch from where you want to base your work.
* This is usually the master branch.
* Only target release branches if you are certain your addition must be on that branch.
* To quickly create a topic branch based on master; `git checkout -b contribution` - Please avoid working directly on the `master` branch.
* Make changes and commit where necessary.
* Name your branch something relevant to the change you are going to make.
* To quickly create a topic branch based on master, use `git checkout master` followed by `git checkout -b <name>`. Avoid working directly on the `master` branch.
* Make sure your change meets our [code requirements](#code-requirements).
### Code requirements ###
* Code must be written in [Allman style](http://en.wikipedia.org/wiki/Indent_style#Allman_style), and that it follows [Java Code Conventions](http://www.oracle.com/technetwork/java/codeconventions-150003.pdf).__
* No tabs; use 4 spaces for indentation.
* No trailing whitespaces for code lines, comments or configuration files.
* No CRLF line endings, only LF is allowed.
* For Windows-based machines, you can configure Git to do this for your by running `git config --global core.autocrlf true`.
* If you're running a Linux or Mac OSX, you should run `git config --global core.autocrlf input` instead.
* For more information about line feeds. See this [this article](http://adaptivepatchwork.com/2012/03/01/mind-the-end-of-your-line/).
* No 80 character line limit or 'weird' midstatement newlines.
* Additions should be compiled, complete and tested before committing.
* Avoid using `org.bukkit.Server.dispatchCommand()`. Commits that make use of it will likely be rejected.
* Files must always end with a newline.
* Avoid nested code structures.
## Committing your changes ##
* Check for unnecessary whitespace with `git diff --check` before committing.
* Make sure your commit messages are in line with those which are already made.
* Make sure your changes build (<b>and work!</b>).
* Describe your changes in the commit description.
* For a prolonged description, continue on a new line.
* The first description line should be once sentence and should not exceed 10 words.
* The first description line should contain either:
* For a bug-related issue: "Resolves _#issue_".
* For a feature request: "Fixes _#issue_".
* "#issue" is the issue number number you based your work on.
## Tips - How To Get Your Pull Request Accepted ##
* See this picture for help:
![Imgur](http://i.imgur.com/7kogorv.jpg)
* Make sure your changes work and compile without difficulty.
* Make sure your change adds something useful, do not add commands to micromanage the server. (ie: Shorthands for a collection of commands)
* __Commands that make use of `org.bukkit.Server.dispatchCommand()` will probably be rejected.__
* Features must be in line the general idea of "Total Freedom".
* Changes must be directed towards the main "TotalFreedom" server. Adding names such as the name of your own TotalFreedom-like server will get your pull request denied.
* Do not add yourself to the developer list.
* Ensure that you use the correct whitespace-style. That is: 4 spaces as indentation.
* Please make sure your changes are written such as other features would be. Eg: commands have their own class and extend TFM_Command.
* __Make sure your code is written in the [Allman style](http://en.wikipedia.org/wiki/Indent_style#Allman_style).__
* Do not increment the version number.
* If you want to add multiple changes, please make one pull request per change. This way, it's easier to accept your changes faster and won't block the other changes if there is an issue with a specific line of code.
* Please make sure there are no bugs in your code.
* Please avoid having to add files in the main namespace where possible.
* Make sure all changes work before you commit these, this avoids having multiple unnecessary commits.
* Please refrain from using an excessive amount of commits. As few as possible is generally the best.
* Please do not spread your addition over several pull-requests.
#### Example commit message ####
```
Fixed bugs with /saconfig clear. Resolves #167
Admins can now use /saconfig clear [ip] to remove the designated IP (only their own IPs can be removed.
They can also simply use /saconfig clear to remove all IPs but the current one. /saconfig clear is safe,
meaning you can't remove your current IP or an IP that doesn't belong to you.
```
## Submitting Your Changes ##
* Push your changes to a topic branch in your fork of the repository.
* Push your changes to the topic branch in your fork of the repository.
* Submit a pull request to this repository.
* Explain in detail what each one of your commits changes and point out any big changes.
* Wait as a developer evaluates your changes.
* Do not add any prefixes or tags.
## Tips - How To Get Your Pull Request Accepted ##
* Please make sure your changes are written such as other features would be. For example: Commands have their own class and extend TFM_Command.
* Do not increment the version number.
* If you want to add multiple changes, please make one pull request per change. This way, it's easier to accept your changes faster and won't block the other changes if there is an issue with a specific line of code.
* Please avoid having to add files in the main namespace where possible.
* Please refrain from using an excessive amount of commits. As few as possible is generally the best.
* Please do not spread your contribution over several pull-requests.
## Additional Resources ##
* [TotalFreedom information](http://totalfreedom.me)

View File

@ -2,6 +2,6 @@
TotalFreedomMod is a CraftBukkit server plugin designed primarily to support the [Official TotalFreedom Minecraft Server](http://totalfreedom.me/). However, you are more than welcome to adapt the source for your own server.
This plugin was originally coded by StevenLawson (Madgeek1450), with Jerom van der Sar (DarthSalamon) becoming heavily involved in its development some time later. It consists of over 85 custom coded commands and a large variety of distinguishable features not included in any other plugin. The plugin has since its beginning grown immensely. Together, with the main TotalFreedom server, TotalFreedomMod has a long-standing reputation of effectiveness whilst maintaining a clear feeling of openness towards the administrators and the players themselves.
This plugin was originally coded by StevenLawson (Madgeek1450), with Jerom van der Sar (Prozza) becoming heavily involved in its development some time later. It consists of over 85 custom coded commands and a large variety of distinguishable features not included in any other plugin. The plugin has since its beginning grown immensely. Together, with the main TotalFreedom server, TotalFreedomMod has a long-standing reputation of effectiveness whilst maintaining a clear feeling of openness towards the administrators and the players themselves.
Please see [CONTRIBUTING.md](CONTRIBUTING.md) if you are interested in developing TotalFreedomMod. For information on how TotalFreedomMod is licensed, please see [LICENSE.md](LICENSE.md).

View File

@ -1,2 +1,6 @@
#
# Build creator configuration
#
# Note: Do not edit this file! Edit the generated "buildcreator.properties" file instead.
#
program.buildcreator=Unknown

View File

@ -1,3 +1,3 @@
#Build Number for ANT. Do not edit!
#Mon May 19 14:24:40 CEST 2014
build.number=860
#Sat May 30 20:46:17 CEST 2015
build.number=1052

View File

@ -48,11 +48,10 @@ jar.archive.disabled=${jnlp.enabled}
jar.compress=false
jar.index=${jnlp.enabled}
javac.classpath=\
${libs.WorldEdit.classpath}:\
${libs.DisguiseCraft.classpath}:\
${libs.Essentials.classpath}:\
${libs.SpigotServer.classpath}:\
${libs.BukkitTelnet.classpath}:\
${libs.CraftBukkit.classpath}
${libs.TF-WorldEdit.classpath}:\
${libs.Essentials.classpath}
# Space-separated list of extra javac options
javac.compilerargs=-Xlint:unchecked -Xlint:deprecation
javac.deprecation=false

View File

@ -1,13 +1,13 @@
#
# TotalFreedomMod banning config
# Warning: modification of this file is not recomended
# Warning: modification of this file is not recommended
#
# Format:
# Ip: [IP-address / UUID]:[Last login name]:[Expiry unix timestamp (0 = never)][Banned by]:[Reason]
#
ips:
- '192.168.1.254:Notch:DarthSalamon:0:IP ban example'
- '192.168.1.254:Notch:Prozza:0:IP ban example'
uuids:
- '245d2f30-61fb-4840-9cd3-298b3920f4a4:Cobrex:DarthSalamon:0:UUID ban example'
- '245d2f30-61fb-4840-9cd3-298b3920f4a4:Cobrex:Prozza:0:UUID ban example'

View File

@ -1,13 +1,15 @@
# TotalFreedomMod v4.2 Configuration
# by Madgeek1450 and DarthSalamon
#
# TotalFreedomMod v4.3 Configuration
# by Madgeek1450 and Prozza
#
# Generic server information
server:
# You should change this to your server's name
name: TotalFreedom
# The address your server is located at
address: 64.34.165.5:28965
# The address your server is located at. Please do not include the port.
address: play.totalfreedom.me
# Shown at the server list
motd: TotalFreedom &8- Minecraft %mcversion%
@ -25,6 +27,17 @@ server:
# URL players should appeal for permanent bans at
permban_url: http://bit.ly/TF_PermBan
# ForceIP configuration
forceip:
enabled: false
# The port players should use to connect to your server; only applies to forceip
port: 25565
# The kick message sent to players when logging in with the wrong hostname
kickmsg: You have been kicked from the server - Please connect using %address%
# Blocking certain events
allow:
fire_place: false
@ -36,8 +49,6 @@ allow:
tnt_minecarts: false
explosions: false
explosive_radius: 4.0
# Blocked commands:
#
# How blocked commands work:
@ -74,9 +85,7 @@ explosive_radius: 4.0
blocked_commands:
# Disabled commands
- 'n:b:/time:Server-side time changing is disabled. Please use /ptime to set your own personal time.'
- 'n:b:/md:This server now uses DisguiseCraft instead of MobDisguise. Type /d to disguise and /u to undisguise.'
- 'n:b:/gamemode:Use /creative and /survival to set your gamemode.'
- 'n:b:/gamerule:_'
- 'n:b:/ban:_'
- 'n:b:/pardon:_'
- 'n:b:/ban-ip:_'
@ -84,6 +93,13 @@ blocked_commands:
- 'n:b:/toggledownfall:_'
- 'n:b:/effect:Please use /potion to set effects.'
- 'n:b:/enderchest:_'
- 'n:b:/spreadplayers:_'
- 'n:b:/execute:_'
- 'n:b:/blockdata:_'
- 'n:b:/clearhistory:_'
- 'n:b:/save-all:_'
- 'n:b:/save-on:_'
- 'n:b:/save-off:_'
# Superadmin commands
- 's:b:/kick:_'
@ -93,26 +109,37 @@ blocked_commands:
- 's:b://:_'
- 's:b:/superpickaxe:_'
- 's:b:/brush:_'
- 's:b:/size:_'
- 's:b://mask:_'
- 's:b:/mat:_'
- 's:b:/tool:_'
- 's:b://butcher:_'
- 's:b:/scoreboard:_'
- 's:b:/setspawn:_'
- 's:b://snow:_'
- 's:b:/tellraw:_'
- 's:b:/forestgen:_'
- 's:b:/setidletimeout:_'
- 's:b:/mail sendall:_'
- 's:b:/eco reset:_'
- 's:b:/mask:_'
- 's:b:/gmask:_'
- 's:b:/lrbuild:_'
- 's:b:/defaultgamemode:_'
- 's:b:/reload:_'
- 's:b:/title:_'
- 's:b:/worldborder:_'
- 's:b:/weather:_'
- 's:b:/tpall:_'
- 's:b:/setblock:_'
- 's:b:/green:_'
- 'n:b:/gamerule:_'
- 'n:b:/togglejail:_'
# Superadmin commands - Auto-eject
- 's:a:/stop'
- 's:a:/reload'
- 's:a:/save-all'
- 's:a:/save-on'
- 's:a:/save-off'
- 's:a:/clearhistory'
- 's:a:/mat'
- 's:a:/stop:_'
- 's:a:/restart:_'
# Spigot commands
- 's:a:/restart'
- 's:b:/setblock'
# Automatically wipe dropped objects:
# Automatically wipe dropped objects
auto_wipe: true
# Nuking prevention
@ -123,8 +150,9 @@ nukemonitor:
range: 10.0
freecam_trigger_count: 10
explosive_radius: 4.0
# Show all attempted commands in the log, will result in duplicate log messages:
# Show all attempted commands in the log, will result in duplicate log messages
preprocess_log: true
# Disable certain events
@ -133,13 +161,12 @@ disable:
weather: true
# Enable misc. features:
# Enable misc. features
landmines_enabled: false
mp44_enabled: false
tossmob_enabled: false
# Moblimiter:
# Moblimiter
moblimiter:
enabled: true
max: 50
@ -152,7 +179,8 @@ moblimiter:
# Flatlands
flatlands:
generate: true
# Flatlands generation parameters, uses CleanroomGenerator syntax - http://dev.bukkit.org/server-mods/cleanroomgenerator/
# Flatlands generation parameters - Uses CleanroomGenerator syntax - http://dev.bukkit.org/server-mods/cleanroomgenerator/
generate_params: 16,stone,32,dirt,1,grass
# Admin-Only Mode
@ -174,6 +202,41 @@ host_sender_names:
- rcon
- remotebukkit
# Announcer
announcer:
enabled: true
# Interval between announcements, in seconds.
interval: 600
# Prefix for all announcements
prefix: '&5[&eTotalFreedom&5] &b'
announcements:
- 'Be sure to visit our forums at &6http://totalfreedom.boards.net/'
- 'You can always review the server rules here: &6http://totalfreedom.me/'
- 'If you are not OP, be sure to ask!'
- 'Somebody breaking the rules? Report it! /report <user> <reason>'
- 'Griefing is not allowed!'
- 'Hacking is allowed!'
- 'Interested in becoming admin? Do "/ai" for more information!'
- 'You may view all online administrators via "/list -a"'
- 'Save your buildings via WorldEdit! http://totalfreedom.me for more information!'
- 'Famous players, such as Notch, are always fake! We are an offline/cracked server!'
- 'You may contact TotalFreedoms Support on Twitter! pravi.us/nGS'
- 'You may download TotalFreedomMod here: pravi.us/V8c'
- 'MarkByron is TotalFreedoms owner.'
- 'Server lagging? Check the lag via "/tps"'
- 'You are allowed to record and stream videos on TotalFreedom :D'
- 'An admin abusing? Report it! pravi.us/vfa'
- 'Player vs Player while in creative/god mode it forbidden!'
- 'Spawn killing is forbidden!'
- 'Invisible potions are allowed!'
- 'Serial griefing and trolling will result in permanently being banned!'
- 'TotalFreedom does not accept any form of donations!'
- 'Racism, Nazism, and Sexism is strictly forbidden!'
- 'Join our Mumble server! IP: 64.34.202.140:2862'
# Players who cannot be banned by username
unbannable_usernames:
- honeydew
@ -214,6 +277,10 @@ unbannable_usernames:
- dantdm
- gizzy14gazza
# IPs that can not be supered
noadmin_ips:
- 167.114.97.16
# TwitterBot - Used to allow superadmins to verify themselves using twitter
twitterbot:
enabled: false
@ -224,7 +291,7 @@ twitterbot:
petprotect:
enabled: true
# Logs Registration
# Logviewer
logs:
url: ''
secret: ''
@ -232,7 +299,7 @@ logs:
# Mojang service checker
service_checker_url: http://status.mojang.com/check
# HTTPD
# HTTPD server
httpd:
enabled: true
port: 28966
@ -241,7 +308,14 @@ httpd:
# Inactivity Auto-Kick (Requires Essentials)
autokick:
enabled: true
# autokick_threshold - Percentage of server player capacity used at which players will be automatically kicked for being inactive. Range: 0.0 - 1.0
threshold: 0.9
# autokick_time - Time, in seconds, after which a player should be kicked when inactive
time: 120
# Players with access to the overlord command
overlord_ips:
- 141.101.105.161

View File

@ -0,0 +1,82 @@
package me.StevenLawson.TotalFreedomMod.Bridge;
import java.util.Iterator;
import java.util.Map;
import me.StevenLawson.BukkitTelnet.api.TelnetCommandEvent;
import me.StevenLawson.BukkitTelnet.api.TelnetPreLoginEvent;
import me.StevenLawson.BukkitTelnet.api.TelnetRequestDataTagsEvent;
import me.StevenLawson.TotalFreedomMod.TFM_Admin;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_CommandBlocker;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
public class TFM_BukkitTelnetListener implements Listener
{
@EventHandler(priority = EventPriority.NORMAL)
public void onTelnetPreLogin(TelnetPreLoginEvent event)
{
final String ip = event.getIp();
if (ip == null || ip.isEmpty())
{
return;
}
final TFM_Admin admin = TFM_AdminList.getEntryByIp(ip, true);
if (admin == null || !admin.isActivated() || !admin.isTelnetAdmin())
{
return;
}
event.setBypassPassword(true);
event.setName(admin.getLastLoginName());
}
@EventHandler(priority = EventPriority.NORMAL)
public void onTelnetCommand(TelnetCommandEvent event)
{
if (TFM_CommandBlocker.isCommandBlocked(event.getCommand(), event.getSender()))
{
event.setCancelled(true);
}
}
@EventHandler(priority = EventPriority.NORMAL)
public void onTelnetRequestDataTags(TelnetRequestDataTagsEvent event)
{
final Iterator<Map.Entry<Player, Map<String, Object>>> it = event.getDataTags().entrySet().iterator();
while (it.hasNext())
{
final Map.Entry<Player, Map<String, Object>> entry = it.next();
final Player player = entry.getKey();
final Map<String, Object> playerTags = entry.getValue();
boolean isAdmin = false;
boolean isTelnetAdmin = false;
boolean isSeniorAdmin = false;
final TFM_Admin admin = TFM_AdminList.getEntry(player);
if (admin != null)
{
boolean isActivated = admin.isActivated();
isAdmin = isActivated;
isTelnetAdmin = isActivated && admin.isTelnetAdmin();
isSeniorAdmin = isActivated && admin.isSeniorAdmin();
}
playerTags.put("tfm.admin.isAdmin", isAdmin);
playerTags.put("tfm.admin.isTelnetAdmin", isTelnetAdmin);
playerTags.put("tfm.admin.isSeniorAdmin", isSeniorAdmin);
playerTags.put("tfm.playerdata.getTag", TFM_PlayerData.getPlayerData(player).getTag());
playerTags.put("tfm.essentialsBridge.getNickname", TFM_EssentialsBridge.getNickname(player.getName()));
}
}
}

View File

@ -1,75 +0,0 @@
package me.StevenLawson.TotalFreedomMod.Bridge;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import pgDev.bukkit.DisguiseCraft.DisguiseCraft;
import pgDev.bukkit.DisguiseCraft.api.DisguiseCraftAPI;
public class TFM_DisguiseCraftBridge
{
private TFM_DisguiseCraftBridge()
{
}
public static boolean undisguisePlayer(Player player)
{
if (!disguiseCraftEnabled())
{
return false;
}
try
{
DisguiseCraftAPI api = DisguiseCraft.getAPI();
if (api != null)
{
return api.undisguisePlayer(player);
}
}
catch (Exception ex)
{
TFM_Log.severe(ex);
}
return false;
}
public static void undisguiseAllPlayers()
{
if (!disguiseCraftEnabled())
{
return;
}
try
{
DisguiseCraftAPI api = DisguiseCraft.getAPI();
if (api != null)
{
Player[] players = Bukkit.getOnlinePlayers();
for (Player player : players)
{
api.undisguisePlayer(player);
}
}
}
catch (Exception ex)
{
TFM_Log.severe(ex);
}
}
public static boolean disguiseCraftEnabled()
{
boolean pluginEnabled = false;
try
{
pluginEnabled = Bukkit.getPluginManager().isPluginEnabled("DisguiseCraft");
}
catch (Exception ex)
{
}
return pluginEnabled;
}
}

View File

@ -9,15 +9,16 @@ import org.bukkit.plugin.Plugin;
public class TFM_EssentialsBridge
{
private Essentials essentialsPlugin = null;
private static Essentials essentialsPlugin = null;
private TFM_EssentialsBridge()
{
throw new AssertionError();
}
public Essentials getEssentialsPlugin()
public static Essentials getEssentialsPlugin()
{
if (this.essentialsPlugin == null)
if (essentialsPlugin == null)
{
try
{
@ -26,7 +27,7 @@ public class TFM_EssentialsBridge
{
if (essentials instanceof Essentials)
{
this.essentialsPlugin = (Essentials) essentials;
essentialsPlugin = (Essentials) essentials;
}
}
}
@ -35,10 +36,10 @@ public class TFM_EssentialsBridge
TFM_Log.severe(ex);
}
}
return this.essentialsPlugin;
return essentialsPlugin;
}
public User getEssentialsUser(String username)
public static User getEssentialsUser(String username)
{
try
{
@ -55,7 +56,7 @@ public class TFM_EssentialsBridge
return null;
}
public void setNickname(String username, String nickname)
public static void setNickname(String username, String nickname)
{
try
{
@ -72,7 +73,24 @@ public class TFM_EssentialsBridge
}
}
public long getLastActivity(String username)
public static String getNickname(String username)
{
try
{
final User user = getEssentialsUser(username);
if (user != null)
{
return user.getNickname();
}
}
catch (Exception ex)
{
TFM_Log.severe(ex);
}
return null;
}
public static long getLastActivity(String username)
{
try
{
@ -89,7 +107,7 @@ public class TFM_EssentialsBridge
return 0L;
}
public boolean isEssentialsEnabled()
public static boolean isEssentialsEnabled()
{
try
{
@ -105,14 +123,4 @@ public class TFM_EssentialsBridge
}
return false;
}
public static TFM_EssentialsBridge getInstance()
{
return TFM_EssentialsBridgeHolder.INSTANCE;
}
private static class TFM_EssentialsBridgeHolder
{
private static final TFM_EssentialsBridge INSTANCE = new TFM_EssentialsBridge();
}
}

View File

@ -1,32 +1,25 @@
package me.StevenLawson.TotalFreedomMod.Bridge;
import com.sk89q.worldedit.IncompleteRegionException;
import com.sk89q.worldedit.LocalSession;
import com.sk89q.worldedit.LocalWorld;
import com.sk89q.worldedit.bukkit.BukkitPlayer;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.regions.Region;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import me.StevenLawson.TotalFreedomMod.TFM_ProtectedArea;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable;
public class TFM_WorldEditBridge
{
private WorldEditPlugin worldEditPlugin = null;
private static WorldEditPlugin worldEditPlugin = null;
private TFM_WorldEditBridge()
{
throw new AssertionError();
}
public WorldEditPlugin getWorldEditPlugin()
private static WorldEditPlugin getWorldEditPlugin()
{
if (this.worldEditPlugin == null)
if (worldEditPlugin == null)
{
try
{
@ -35,7 +28,7 @@ public class TFM_WorldEditBridge
{
if (we instanceof WorldEditPlugin)
{
this.worldEditPlugin = (WorldEditPlugin) we;
worldEditPlugin = (WorldEditPlugin) we;
}
}
}
@ -44,31 +37,14 @@ public class TFM_WorldEditBridge
TFM_Log.severe(ex);
}
}
return this.worldEditPlugin;
return worldEditPlugin;
}
public BukkitPlayer getBukkitPlayer(Player player)
private static LocalSession getPlayerSession(Player player)
{
try
{
WorldEditPlugin wep = this.getWorldEditPlugin();
if (wep != null)
{
return wep.wrapPlayer(player);
}
}
catch (Exception ex)
{
TFM_Log.severe(ex);
}
return null;
}
public LocalSession getPlayerSession(Player player)
{
try
{
WorldEditPlugin wep = this.getWorldEditPlugin();
final WorldEditPlugin wep = getWorldEditPlugin();
if (wep != null)
{
return wep.getSession(player);
@ -81,14 +57,31 @@ public class TFM_WorldEditBridge
return null;
}
public void undo(Player player, int count)
private static BukkitPlayer getBukkitPlayer(Player player)
{
try
{
final WorldEditPlugin wep = getWorldEditPlugin();
if (wep != null)
{
return wep.wrapPlayer(player);
}
}
catch (Exception ex)
{
TFM_Log.severe(ex);
}
return null;
}
public static void undo(Player player, int count)
{
try
{
LocalSession session = getPlayerSession(player);
if (session != null)
{
BukkitPlayer bukkitPlayer = this.getBukkitPlayer(player);
final BukkitPlayer bukkitPlayer = getBukkitPlayer(player);
if (bukkitPlayer != null)
{
for (int i = 0; i < count; i++)
@ -104,11 +97,11 @@ public class TFM_WorldEditBridge
}
}
public void setLimit(Player player, int limit)
public static void setLimit(Player player, int limit)
{
try
{
LocalSession session = getPlayerSession(player);
final LocalSession session = getPlayerSession(player);
if (session != null)
{
session.setBlockChangeLimit(limit);
@ -119,59 +112,4 @@ public class TFM_WorldEditBridge
TFM_Log.severe(ex);
}
}
public void validateSelection(final Player player)
{
if (TFM_AdminList.isSuperAdmin(player))
{
return;
}
try
{
final LocalSession session = getPlayerSession(player);
if (session != null)
{
final LocalWorld selectionWorld = session.getSelectionWorld();
final Region selection = session.getSelection(selectionWorld);
if (TFM_ProtectedArea.isInProtectedArea(
getBukkitVector(selection.getMinimumPoint()),
getBukkitVector(selection.getMaximumPoint()),
selectionWorld.getName()))
{
new BukkitRunnable()
{
@Override
public void run()
{
player.sendMessage(ChatColor.RED + "The region that you selected contained a protected area. Selection cleared.");
session.getRegionSelector(selectionWorld).clear();
}
}.runTaskLater(TotalFreedomMod.plugin, 1L);
}
}
}
catch (IncompleteRegionException ex)
{
}
catch (Exception ex)
{
TFM_Log.severe(ex);
}
}
private static org.bukkit.util.Vector getBukkitVector(com.sk89q.worldedit.Vector worldEditVector)
{
return new org.bukkit.util.Vector(worldEditVector.getX(), worldEditVector.getY(), worldEditVector.getZ());
}
public static TFM_WorldEditBridge getInstance()
{
return TFM_WorldEditBridgeHolder.INSTANCE;
}
private static class TFM_WorldEditBridgeHolder
{
private static final TFM_WorldEditBridge INSTANCE = new TFM_WorldEditBridge();
}
}

View File

@ -0,0 +1,62 @@
package me.StevenLawson.TotalFreedomMod.Bridge;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_ProtectedArea;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.worldedit.LimitChangedEvent;
import me.StevenLawson.worldedit.SelectionChangedEvent;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
public class TFM_WorldEditListener implements Listener
{
@EventHandler
public void onSelectionChange(final SelectionChangedEvent event)
{
final Player player = event.getPlayer();
if (TFM_AdminList.isSuperAdmin(player))
{
return;
}
if (TFM_ProtectedArea.isInProtectedArea(
event.getMinVector(),
event.getMaxVector(),
event.getWorld().getName()))
{
player.sendMessage(ChatColor.RED + "The region that you selected contained a protected area. Selection cleared.");
event.setCancelled(true);
}
}
@EventHandler
public void onLimitChanged(LimitChangedEvent event)
{
final Player player = event.getPlayer();
if (TFM_AdminList.isSuperAdmin(player))
{
return;
}
if (!event.getPlayer().equals(event.getTarget()))
{
player.sendMessage(ChatColor.RED + "Only admins can change the limit for other players!");
event.setCancelled(true);
}
if (event.getLimit() < 0 || event.getLimit() > 10000)
{
player.setOp(false);
TFM_Util.bcastMsg(event.getPlayer().getName() + " tried to set their WorldEdit limit to " + event.getLimit() + " and has been de-opped", ChatColor.RED);
event.setCancelled(true);
player.sendMessage(ChatColor.RED + "You cannot set your limit higher than 10000 or to -1!");
}
}
}

View File

@ -1,9 +1,8 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.World.TFM_AdminWorld;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import me.StevenLawson.TotalFreedomMod.World.TFM_AdminWorld;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -15,7 +14,7 @@ public class Command_adminworld extends TFM_Command
{
private enum CommandMode
{
TELEPORT, GUEST, TIME, WEATHER
TELEPORT, GUEST, TIME, WEATHER;
}
@Override
@ -117,7 +116,7 @@ public class Command_adminworld extends TFM_Command
if (player == null)
{
sender.sendMessage(TotalFreedomMod.PLAYER_NOT_FOUND);
sender.sendMessage(TFM_Command.PLAYER_NOT_FOUND);
return true;
}
@ -216,13 +215,15 @@ public class Command_adminworld extends TFM_Command
{
if (!(sender instanceof Player) || sender_p == null || !TFM_AdminList.isSuperAdmin(sender))
{
throw new PermissionDeniedException(TotalFreedomMod.MSG_NO_PERMS);
throw new PermissionDeniedException(TFM_Command.MSG_NO_PERMS);
}
}
private class PermissionDeniedException extends Exception
{
public PermissionDeniedException(String string)
private static final long serialVersionUID = 1L;
private PermissionDeniedException(String string)
{
super(string);
}

View File

@ -3,7 +3,6 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -41,7 +40,7 @@ public class Command_blockcmd extends TFM_Command
if (player == null)
{
playerMsg(TotalFreedomMod.PLAYER_NOT_FOUND);
playerMsg(TFM_Command.PLAYER_NOT_FOUND);
return true;
}

View File

@ -2,7 +2,6 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
@ -52,7 +51,7 @@ public class Command_cage extends TFM_Command
if (player == null)
{
sender.sendMessage(TotalFreedomMod.PLAYER_NOT_FOUND);
sender.sendMessage(TFM_Command.PLAYER_NOT_FOUND);
return true;
}

View File

@ -2,7 +2,6 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.Random;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.Achievement;
import org.bukkit.ChatColor;
import org.bukkit.Material;
@ -16,35 +15,38 @@ import org.bukkit.inventory.meta.ItemMeta;
@CommandParameters(description = "For the people that are still alive.", usage = "/<command>")
public class Command_cake extends TFM_Command
{
public static final String CAKE_LYRICS = "But there's no sense crying over every mistake. You just keep on trying till you run out of cake.";
private final Random random = new Random();
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
final StringBuilder output = new StringBuilder();
StringBuilder output = new StringBuilder();
Random randomGenerator = new Random();
String[] words = TotalFreedomMod.CAKE_LYRICS.split(" ");
for (String word : words)
final String[] words = CAKE_LYRICS.split(" ");
for (final String word : words)
{
String color_code = Integer.toHexString(1 + randomGenerator.nextInt(14));
output.append(ChatColor.COLOR_CHAR).append(color_code).append(word).append(" ");
output.append(ChatColor.COLOR_CHAR).append(Integer.toHexString(1 + random.nextInt(14))).append(word).append(" ");
}
ItemStack heldItem = new ItemStack(Material.CAKE);
ItemMeta heldItemMeta = heldItem.getItemMeta();
heldItemMeta.setDisplayName((new StringBuilder()).append(ChatColor.WHITE).append("The ").append(ChatColor.BLACK).append("Lie").toString());
final ItemStack heldItem = new ItemStack(Material.CAKE);
final ItemMeta heldItemMeta = heldItem.getItemMeta();
heldItemMeta.setDisplayName((new StringBuilder()).append(ChatColor.WHITE).append("The ").append(ChatColor.DARK_GRAY).append("Lie").toString());
heldItem.setItemMeta(heldItemMeta);
for (Player player : server.getOnlinePlayers())
for (final Player player : server.getOnlinePlayers())
{
player.getInventory().setItem(player.getInventory().firstEmpty(), heldItem);
player.awardAchievement(Achievement.MINE_WOOD);
player.awardAchievement(Achievement.BUILD_WORKBENCH);
player.awardAchievement(Achievement.BUILD_HOE);
final int firstEmpty = player.getInventory().firstEmpty();
if (firstEmpty >= 0)
{
player.getInventory().setItem(firstEmpty, heldItem);
}
player.awardAchievement(Achievement.BAKE_CAKE);
}
TFM_Util.bcastMsg(output.toString());
return true;
}
}

View File

@ -1,7 +1,6 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Minecart;
@ -23,7 +22,7 @@ public class Command_cartsit extends TFM_Command
if (targetPlayer == null)
{
sender.sendMessage(TotalFreedomMod.PLAYER_NOT_FOUND);
sender.sendMessage(TFM_Command.PLAYER_NOT_FOUND);
return true;
}
}

View File

@ -3,9 +3,11 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import me.StevenLawson.TotalFreedomMod.TFM_CommandBlocker;
import me.StevenLawson.TotalFreedomMod.TFM_DepreciationAggregator;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import net.minecraft.util.org.apache.commons.lang3.ArrayUtils;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
@ -28,7 +30,7 @@ public class Command_cbtool extends TFM_Command
if ("targetblock".equalsIgnoreCase(args[0]) && sender instanceof Player)
{
Block targetBlock = sender_p.getTargetBlock(null, 100);
Block targetBlock = TFM_DepreciationAggregator.getTargetBlock(sender_p, null, 100);
playerMsg("Your target block: " + targetBlock.getLocation().toString());
return true;
}
@ -44,6 +46,11 @@ public class Command_cbtool extends TFM_Command
}
matcher.appendTail(generatedCommand);
if (TFM_CommandBlocker.isCommandBlocked(generatedCommand.toString(), sender, false))
{
return true;
}
server.dispatchCommand(sender, generatedCommand.toString());
}
catch (SubCommandFailureException ex)

View File

@ -5,7 +5,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

View File

@ -4,7 +4,7 @@ import java.util.Iterator;
import java.util.Map;
import me.StevenLawson.TotalFreedomMod.Bridge.TFM_EssentialsBridge;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -49,7 +49,7 @@ public class Command_colorme extends TFM_Command
final String newNick = color + ChatColor.stripColor(sender_p.getDisplayName()).trim() + ChatColor.WHITE;
TFM_EssentialsBridge.getInstance().setNickname(sender.getName(), newNick);
TFM_EssentialsBridge.setNickname(sender.getName(), newNick);
playerMsg("Your nickname is now: " + newNick);

View File

@ -2,14 +2,13 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.GameMode;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
@CommandParameters(description = "Quickly change your own gamemode to creative, or define someone's username to change theirs.", usage = "/<command> [partialname]")
@CommandParameters(description = "Quickly change your own gamemode to creative, or define someone's username to change theirs.", usage = "/<command> [partialname]", aliases = "gmc")
public class Command_creative extends TFM_Command
{
@Override
@ -35,7 +34,7 @@ public class Command_creative extends TFM_Command
{
if (!TFM_AdminList.isSuperAdmin(sender))
{
sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS);
sender.sendMessage(TFM_Command.MSG_NO_PERMS);
return true;
}
@ -54,12 +53,11 @@ public class Command_creative extends TFM_Command
return true;
}
player = getPlayer(args[0]);
if (player == null)
{
sender.sendMessage(TotalFreedomMod.PLAYER_NOT_FOUND);
sender.sendMessage(TFM_Command.PLAYER_NOT_FOUND);
return true;
}

View File

@ -1,7 +1,7 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

View File

@ -1,8 +1,8 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import java.lang.reflect.Field;
import net.minecraft.util.org.apache.commons.lang3.ArrayUtils;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

View File

@ -17,7 +17,7 @@ public class Command_denick extends TFM_Command
for (Player player : server.getOnlinePlayers())
{
TFM_EssentialsBridge.getInstance().setNickname(player.getName(), null);
TFM_EssentialsBridge.setNickname(player.getName(), null);
}
return true;

View File

@ -1,5 +1,6 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_DepreciationAggregator;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
@ -31,7 +32,7 @@ public class Command_deop extends TFM_Command
// if the player is not online
if (player == null)
{
player = server.getOfflinePlayer(args[0]);
player = TFM_DepreciationAggregator.getOfflinePlayer(server, args[0]);
}
TFM_Util.adminAction(sender.getName(), "De-opping " + player.getName(), false);

View File

@ -1,7 +1,6 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -18,7 +17,7 @@ public class Command_deopall extends TFM_Command
for (Player player : server.getOnlinePlayers())
{
player.setOp(false);
player.sendMessage(TotalFreedomMod.YOU_ARE_NOT_OP);
player.sendMessage(TFM_Command.YOU_ARE_NOT_OP);
}
return true;

View File

@ -2,8 +2,9 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.TFM_DepreciationAggregator;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
@ -35,52 +36,51 @@ public class Command_dispfill extends TFM_Command
return true;
}
String[] items_raw = StringUtils.split(args[1], ",");
List<ItemStack> items = new ArrayList<ItemStack>();
for (String search_item : items_raw)
final List<ItemStack> items = new ArrayList<ItemStack>();
final String[] itemsRaw = StringUtils.split(args[1], ",");
for (final String searchItem : itemsRaw)
{
ItemStack is = null;
is = new ItemStack(Material.matchMaterial(search_item), 64);
if (is == null)
Material material = Material.matchMaterial(searchItem);
if (material == null)
{
try
{
is = new ItemStack(Integer.parseInt(search_item), 64);
material = TFM_DepreciationAggregator.getMaterial(Integer.parseInt(searchItem));
}
catch (NumberFormatException ex)
{
}
}
if (is != null)
if (material != null)
{
items.add(is);
items.add(new ItemStack(material, 64));
}
else
{
sender.sendMessage("Skipping invalid item: " + search_item);
sender.sendMessage("Skipping invalid item: " + searchItem);
}
}
ItemStack[] items_array = items.toArray(new ItemStack[items.size()]);
final ItemStack[] itemsArray = items.toArray(new ItemStack[items.size()]);
int affected = 0;
Location center_location = sender_p.getLocation();
Block center_block = center_location.getBlock();
for (int x_offset = -radius; x_offset <= radius; x_offset++)
final Location centerLocation = sender_p.getLocation();
final Block centerBlock = centerLocation.getBlock();
for (int xOffset = -radius; xOffset <= radius; xOffset++)
{
for (int y_offset = -radius; y_offset <= radius; y_offset++)
for (int yOffset = -radius; yOffset <= radius; yOffset++)
{
for (int z_offset = -radius; z_offset <= radius; z_offset++)
for (int zOffset = -radius; zOffset <= radius; zOffset++)
{
Block targetBlock = center_block.getRelative(x_offset, y_offset, z_offset);
if (targetBlock.getLocation().distanceSquared(center_location) < (radius * radius))
final Block targetBlock = centerBlock.getRelative(xOffset, yOffset, zOffset);
if (targetBlock.getLocation().distanceSquared(centerLocation) < (radius * radius))
{
if (targetBlock.getType().equals(Material.DISPENSER))
{
sender.sendMessage("Filling dispenser @ " + TFM_Util.formatLocation(targetBlock.getLocation()));
setDispenserContents(targetBlock, items_array);
setDispenserContents(targetBlock, itemsArray);
affected++;
}
}
@ -98,11 +98,13 @@ public class Command_dispfill extends TFM_Command
return true;
}
private static void setDispenserContents(Block targetBlock, ItemStack[] items)
private static void setDispenserContents(final Block targetBlock, final ItemStack[] items)
{
Dispenser dispenser = (Dispenser) targetBlock.getState();
Inventory disp_inv = dispenser.getInventory();
disp_inv.clear();
disp_inv.addItem(items);
if (targetBlock.getType() == Material.DISPENSER)
{
final Inventory dispenserInv = ((Dispenser) targetBlock.getState()).getInventory();
dispenserInv.clear();
dispenserInv.addItem(items);
}
}
}

View File

@ -5,7 +5,6 @@ import me.StevenLawson.TotalFreedomMod.TFM_Ban;
import me.StevenLawson.TotalFreedomMod.TFM_BanManager;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerList;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.command.Command;
@ -30,7 +29,7 @@ public class Command_doom extends TFM_Command
if (player == null)
{
sender.sendMessage(TotalFreedomMod.PLAYER_NOT_FOUND);
sender.sendMessage(TFM_Command.PLAYER_NOT_FOUND);
return true;
}
@ -53,13 +52,13 @@ public class Command_doom extends TFM_Command
player.setOp(false);
// ban IPs
for (String playerIp : TFM_PlayerList.getInstance().getEntry(player).getIps())
for (String playerIp : TFM_PlayerList.getEntry(player).getIps())
{
TFM_BanManager.getInstance().addIpBan(new TFM_Ban(playerIp, player.getName()));
TFM_BanManager.addIpBan(new TFM_Ban(playerIp, player.getName()));
}
// ban name
TFM_BanManager.getInstance().addUuidBan(new TFM_Ban(player.getUniqueId(), player.getName()));
// ban uuid
TFM_BanManager.addUuidBan(player);
// set gamemode to survival
player.setGameMode(GameMode.SURVIVAL);

View File

@ -1,7 +1,6 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.enchantments.Enchantment;

View File

@ -5,14 +5,14 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
@CommandParameters(description = "Goto the ender / \"The End\".", usage = "/<command>")
public class Command_ender extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
TFM_Util.gotoWorld(sender, server.getWorlds().get(0).getName() + "_the_end");
TFM_Util.gotoWorld(sender_p, server.getWorlds().get(0).getName() + "_the_end");
return true;
}
}

View File

@ -2,7 +2,8 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -67,7 +68,7 @@ public class Command_expel extends TFM_Command
if (inRange)
{
player.getWorld().createExplosion(targetPos, 0.0f, false);
player.setFlying(false);
TFM_Util.setFlying(player, false);
player.setVelocity(targetPosVec.subtract(senderPos).normalize().multiply(strength));
pushedPlayers.add(player.getName());
}

View File

@ -1,8 +1,7 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerList;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -24,11 +23,11 @@ public class Command_findip extends TFM_Command
if (player == null)
{
playerMsg(TotalFreedomMod.PLAYER_NOT_FOUND);
playerMsg(TFM_Command.PLAYER_NOT_FOUND);
return true;
}
playerMsg("Player IPs: " + StringUtils.join(TFM_PlayerList.getInstance().getEntry(player).getIps(), ", "));
playerMsg("Player IPs: " + StringUtils.join(TFM_PlayerList.getEntry(player).getIps(), ", "));
return true;
}

View File

@ -1,63 +1,46 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.ChatColor;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
@CommandParameters(description = "Freeze players (toggles on and off).", usage = "/<command> [target | purge]")
public class Command_fr extends TFM_Command
{
private static boolean allFrozen = false;
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length == 0)
{
TotalFreedomMod.allPlayersFrozen = !TotalFreedomMod.allPlayersFrozen;
allFrozen = !allFrozen;
if (TotalFreedomMod.allPlayersFrozen)
if (allFrozen)
{
TFM_Util.adminAction(sender.getName(), "Freezing all players", false);
TotalFreedomMod.allPlayersFrozen = true;
if (TotalFreedomMod.freezePurgeTask != null)
{
TotalFreedomMod.freezePurgeTask.cancel();
}
TotalFreedomMod.freezePurgeTask = new BukkitRunnable()
{
@Override
public void run()
{
TFM_Util.adminAction("FreezeTimer", "Unfreezing all players", false);
TotalFreedomMod.allPlayersFrozen = false;
}
}.runTaskLater(plugin, 20L * 60L * 5L);
setAllFrozen(true);
playerMsg("Players are now frozen.");
for (Player player : Bukkit.getOnlinePlayers())
{
if (!TFM_AdminList.isSuperAdmin(player))
{
TFM_Util.playerMsg(player, "You have been frozen due to rule breaker(s), you will be unfrozen very soon.", ChatColor.RED);
playerMsg(player, "You have been frozen due to rulebreakers, you will be unfrozen soon.", ChatColor.RED);
}
}
}
else
{
TFM_Util.adminAction(sender.getName(), "Unfreezing all players", false);
TotalFreedomMod.allPlayersFrozen = false;
if (TotalFreedomMod.freezePurgeTask != null)
{
TotalFreedomMod.freezePurgeTask.cancel();
}
setAllFrozen(false);
playerMsg("Players are now free to move.");
}
}
@ -65,19 +48,8 @@ public class Command_fr extends TFM_Command
{
if (args[0].toLowerCase().equals("purge"))
{
TotalFreedomMod.allPlayersFrozen = false;
if (TotalFreedomMod.freezePurgeTask != null)
{
TotalFreedomMod.freezePurgeTask.cancel();
}
for (Player player : server.getOnlinePlayers())
{
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
playerdata.setFrozen(false);
}
TFM_Util.adminAction(sender.getName(), "Lifting all global and player freezes", false);
setAllFrozen(false);
TFM_Util.adminAction(sender.getName(), "Unfreezing all players", false);
}
else
{
@ -85,11 +57,11 @@ public class Command_fr extends TFM_Command
if (player == null)
{
playerMsg(TotalFreedomMod.PLAYER_NOT_FOUND, ChatColor.RED);
playerMsg(TFM_Command.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
playerdata.setFrozen(!playerdata.isFrozen());
playerMsg(player.getName() + " has been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".");
@ -99,4 +71,13 @@ public class Command_fr extends TFM_Command
return true;
}
public static void setAllFrozen(boolean freeze)
{
allFrozen = freeze;
for (TFM_PlayerData data : TFM_PlayerData.PLAYER_DATA.values())
{
data.setFrozen(freeze);
}
}
}

View File

@ -1,11 +1,10 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Ban;
import java.util.Iterator;
import me.StevenLawson.TotalFreedomMod.TFM_BanManager;
import me.StevenLawson.TotalFreedomMod.TFM_ServerInterface;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import me.StevenLawson.TotalFreedomMod.TFM_UuidManager;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -13,10 +12,47 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
@CommandParameters(
description = "Use admin commands on someone by hash. Use mode 'list' to get a player's hash. Other modes are kick, nameban, ipban, ban, op, deop, ci",
usage = "/<command> [list | [<kick | nameban | ipban | ban | op | deop | ci | fr> <targethash>] ]")
description = "Use admin commands on someone by hash. Use mode 'list' to get a player's hash. Other modes are kick, nameban, ipban, ban, op, deop, ci, fr, smite.",
usage = "/<command> [list | [<kick | nameban | ipban | ban | op | deop | ci | fr | smite> <targethash>] ]")
public class Command_gadmin extends TFM_Command
{
private enum GadminMode
{
LIST("list"),
KICK("kick"),
NAMEBAN("nameban"),
IPBAN("ipban"),
BAN("ban"),
OP("op"),
DEOP("deop"),
CI("ci"),
FR("fr"),
SMITE("smite");
private final String modeName;
private GadminMode(String command)
{
this.modeName = command;
}
public String getModeName()
{
return modeName;
}
public static GadminMode findMode(String needle)
{
for (final GadminMode mode : GadminMode.values())
{
if (needle.equalsIgnoreCase(mode.getModeName()))
{
return mode;
}
}
return null;
}
}
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
@ -25,93 +61,141 @@ public class Command_gadmin extends TFM_Command
return false;
}
String mode = args[0].toLowerCase();
if (mode.equals("list"))
final GadminMode mode = GadminMode.findMode(args[0].toLowerCase());
if (mode == null)
{
playerMsg("[ Real Name ] : [ Display Name ] - Hash:");
playerMsg("Invalid mode: " + args[0], ChatColor.RED);
return true;
}
for (Player player : server.getOnlinePlayers())
final Iterator<? extends Player> it = server.getOnlinePlayers().iterator();
if (mode == GadminMode.LIST)
{
String hash = player.getUniqueId().toString().substring(0, 4);
if (mode.equals("list"))
playerMsg("[ Real Name ] : [ Display Name ] - Hash:");
while (it.hasNext())
{
final Player player = it.next();
final String hash = TFM_UuidManager.getUniqueId(player).toString().substring(0, 4);
sender.sendMessage(ChatColor.GRAY + String.format("[ %s ] : [ %s ] - %s",
player.getName(),
ChatColor.stripColor(player.getDisplayName()),
hash));
}
else if (hash.equalsIgnoreCase(args[1]))
{
if (mode.equals("kick"))
{
TFM_Util.adminAction(sender.getName(), String.format("Kicking: %s.", player.getName()), false);
player.kickPlayer("Kicked by Administrator");
}
else if (mode.equals("nameban"))
{
TFM_BanManager.getInstance().addUuidBan(new TFM_Ban(player.getUniqueId(), player.getName()));
TFM_Util.adminAction(sender.getName(), String.format("Banning Name: %s.", player.getName()), true);
player.kickPlayer("Username banned by Administrator.");
}
else if (mode.equals("ipban"))
{
String ip = player.getAddress().getAddress().getHostAddress();
String[] ip_parts = ip.split("\\.");
if (ip_parts.length == 4)
{
ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]);
}
TFM_Util.adminAction(sender.getName(), String.format("Banning IP: %s.", player.getName(), ip), true);
TFM_BanManager.getInstance().addIpBan(new TFM_Ban(ip, player.getName()));
player.kickPlayer("IP address banned by Administrator.");
}
else if (mode.equals("ban"))
{
String ip = player.getAddress().getAddress().getHostAddress();
String[] ip_parts = ip.split("\\.");
if (ip_parts.length == 4)
{
ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]);
}
TFM_Util.adminAction(sender.getName(), String.format("Banning Name: %s, IP: %s.", player.getName(), ip), true);
TFM_BanManager.getInstance().addUuidBan(new TFM_Ban(player.getUniqueId(), player.getName()));
TFM_BanManager.getInstance().addIpBan(new TFM_Ban(ip, player.getName()));
player.kickPlayer("IP and username banned by Administrator.");
}
else if (mode.equals("op"))
{
TFM_Util.adminAction(sender.getName(), String.format("Opping %s.", player.getName()), false);
player.setOp(false);
player.sendMessage(TotalFreedomMod.YOU_ARE_OP);
}
else if (mode.equals("deop"))
{
TFM_Util.adminAction(sender.getName(), String.format("Deopping %s.", player.getName()), false);
player.setOp(false);
player.sendMessage(TotalFreedomMod.YOU_ARE_NOT_OP);
}
else if (mode.equals("ci"))
{
player.getInventory().clear();
}
else if (mode.equals("fr"))
{
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
playerdata.setFrozen(!playerdata.isFrozen());
playerMsg(player.getName() + " has been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".");
player.sendMessage(ChatColor.AQUA + "You have been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".");
}
return true;
}
if (args.length < 2)
{
return false;
}
if (!mode.equals("list"))
Player target = null;
while (it.hasNext() && target == null)
{
playerMsg("Invalid hash.", ChatColor.RED);
final Player player = it.next();
final String hash = TFM_UuidManager.getUniqueId(player).toString().substring(0, 4);
if (hash.equalsIgnoreCase(args[1]))
{
target = player;
}
}
if (target == null)
{
playerMsg("Invalid player hash: " + args[1], ChatColor.RED);
return true;
}
switch (mode)
{
case KICK:
{
TFM_Util.adminAction(sender.getName(), String.format("Kicking: %s.", target.getName()), false);
target.kickPlayer("Kicked by Administrator");
break;
}
case NAMEBAN:
{
TFM_BanManager.addUuidBan(target);
TFM_Util.adminAction(sender.getName(), String.format("Banning Name: %s.", target.getName()), true);
target.kickPlayer("Username banned by Administrator.");
break;
}
case IPBAN:
{
String ip = target.getAddress().getAddress().getHostAddress();
String[] ip_parts = ip.split("\\.");
if (ip_parts.length == 4)
{
ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]);
}
TFM_Util.adminAction(sender.getName(), String.format("Banning IP: %s.", ip), true);
TFM_BanManager.addIpBan(target);
target.kickPlayer("IP address banned by Administrator.");
break;
}
case BAN:
{
String ip = target.getAddress().getAddress().getHostAddress();
String[] ip_parts = ip.split("\\.");
if (ip_parts.length == 4)
{
ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]);
}
TFM_Util.adminAction(sender.getName(), String.format("Banning Name: %s, IP: %s.", target.getName(), ip), true);
TFM_BanManager.addUuidBan(target);
TFM_BanManager.addIpBan(target);
target.kickPlayer("IP and username banned by Administrator.");
break;
}
case OP:
{
TFM_Util.adminAction(sender.getName(), String.format("Opping %s.", target.getName()), false);
target.setOp(false);
target.sendMessage(TFM_Command.YOU_ARE_OP);
break;
}
case DEOP:
{
TFM_Util.adminAction(sender.getName(), String.format("Deopping %s.", target.getName()), false);
target.setOp(false);
target.sendMessage(TFM_Command.YOU_ARE_NOT_OP);
break;
}
case CI:
{
target.getInventory().clear();
break;
}
case FR:
{
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(target);
playerdata.setFrozen(!playerdata.isFrozen());
playerMsg(target.getName() + " has been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".");
target.sendMessage(ChatColor.AQUA + "You have been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".");
break;
}
case SMITE:
{
Command_smite.smite(target);
break;
}
}
return true;

View File

@ -1,8 +1,7 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_CommandBlocker;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -23,13 +22,13 @@ public class Command_gcmd extends TFM_Command
if (player == null)
{
sender.sendMessage(TotalFreedomMod.PLAYER_NOT_FOUND);
sender.sendMessage(TFM_Command.PLAYER_NOT_FOUND);
return true;
}
final String outCommand = StringUtils.join(args, " ", 1, args.length);
if (TFM_CommandBlocker.getInstance().isCommandBlocked(outCommand, sender))
if (TFM_CommandBlocker.isCommandBlocked(outCommand, sender))
{
return true;
}

View File

@ -2,15 +2,15 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.TFM_ServerInterface;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_Ban;
import me.StevenLawson.TotalFreedomMod.TFM_BanManager;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerEntry;
import me.StevenLawson.TotalFreedomMod.Config.TFM_ConfigEntry;
import me.StevenLawson.TotalFreedomMod.TFM_Player;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerList;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.bukkit.Bukkit;
import me.StevenLawson.TotalFreedomMod.TFM_UuidManager;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -31,10 +31,9 @@ public class Command_glist extends TFM_Command
{
if (args[0].equalsIgnoreCase("purge"))
{
//Purge does not clear the banlist! This is not for clearing bans! This is for clearing the yaml file that stores the player/IP database!
if (TFM_AdminList.isSeniorAdmin(sender))
{
TFM_PlayerList.getInstance().purgeAll();
TFM_PlayerList.purgeAll();
playerMsg("Purged playerbase");
}
else
@ -53,62 +52,59 @@ public class Command_glist extends TFM_Command
String username;
final List<String> ips = new ArrayList<String>();
final Player player = getPlayer(args[1]);
if (player == null)
{
final TFM_PlayerEntry entry = TFM_PlayerList.getInstance().getEntry(args[1]);
final TFM_Player entry = TFM_PlayerList.getEntry(TFM_UuidManager.getUniqueId(args[1]));
if (entry == null)
{
TFM_Util.playerMsg(sender, "Can't find that user. If target is not logged in, make sure that you spelled the name exactly.");
playerMsg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly.");
return true;
}
username = entry.getLastJoinName();
username = entry.getLastLoginName();
ips.addAll(entry.getIps());
}
else
{
username = player.getName();
ips.add(player.getAddress().getAddress().getHostAddress());
final TFM_Player entry = TFM_PlayerList.getEntry(TFM_UuidManager.getUniqueId(player));
ips.addAll(entry.getIps());
}
String mode = args[0].toLowerCase();
if (mode.equalsIgnoreCase("ban"))
{
TFM_Util.adminAction(sender.getName(), "Banning " + username + " and IPs: " + StringUtils.join(ips, ","), true);
TFM_Util.adminAction(sender.getName(), "Banning " + username + " and IPs: " + StringUtils.join(ips, ", "), true);
Player target = server.getPlayerExact(username);
final Player target = getPlayer(username, true);
if (target != null)
{
TFM_BanManager.getInstance().addUuidBan(new TFM_Ban(target.getUniqueId(), target.getName()));
target.kickPlayer("You have been banned by " + sender.getName() + "\n If you think you have been banned wrongly, appeal here: http://www.totalfreedom.boards.net");
TFM_BanManager.addUuidBan(new TFM_Ban(TFM_UuidManager.getUniqueId(target), target.getName()));
target.kickPlayer("You have been banned by " + sender.getName() + "\n If you think you have been banned wrongly, appeal here: " + TFM_ConfigEntry.SERVER_BAN_URL.getString());
}
else
{
TFM_BanManager.getInstance().addUuidBan(new TFM_Ban(Bukkit.getOfflinePlayer(username).getUniqueId(), username));
TFM_BanManager.addUuidBan(new TFM_Ban(TFM_UuidManager.getUniqueId(username), username));
}
for (String ip : ips)
{
TFM_BanManager.getInstance().addIpBan(new TFM_Ban(ip, username));
String[] ip_address_parts = ip.split("\\.");
TFM_BanManager.getInstance().addIpBan(new TFM_Ban(ip_address_parts[0] + "." + ip_address_parts[1] + ".*.*", username));
TFM_BanManager.addIpBan(new TFM_Ban(ip, username));
TFM_BanManager.addIpBan(new TFM_Ban(TFM_Util.getFuzzyIp(ip), username));
}
}
else if (mode.equalsIgnoreCase("unban") || mode.equalsIgnoreCase("pardon"))
else if (mode.equalsIgnoreCase("unban"))
{
TFM_Util.adminAction(sender.getName(), "Unbanning " + username + " and IPs: " + StringUtils.join(ips, ","), true);
TFM_BanManager.getInstance().unbanUuid(Bukkit.getOfflinePlayer(username).getUniqueId());
TFM_Util.adminAction(sender.getName(), "Unbanning " + username + " and IPs: " + StringUtils.join(ips, ", "), true);
TFM_BanManager.unbanUuid(TFM_UuidManager.getUniqueId(username));
for (String ip : ips)
{
TFM_BanManager.getInstance().unbanIp(ip);
TFM_BanManager.getInstance().unbanIp(TFM_Util.getFuzzyIp(ip));
TFM_BanManager.unbanIp(ip);
TFM_BanManager.unbanIp(TFM_Util.getFuzzyIp(ip));
}
}
else

View File

@ -5,9 +5,9 @@ import me.StevenLawson.TotalFreedomMod.TFM_Ban;
import me.StevenLawson.TotalFreedomMod.TFM_BanManager;
import me.StevenLawson.TotalFreedomMod.TFM_RollbackManager;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import net.minecraft.util.org.apache.commons.lang3.ArrayUtils;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import me.StevenLawson.TotalFreedomMod.TFM_UuidManager;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Location;
@ -31,7 +31,7 @@ public class Command_gtfo extends TFM_Command
if (player == null)
{
playerMsg(TotalFreedomMod.PLAYER_NOT_FOUND, ChatColor.RED);
playerMsg(TFM_Command.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
@ -46,7 +46,7 @@ public class Command_gtfo extends TFM_Command
// Undo WorldEdits:
try
{
TFM_WorldEditBridge.getInstance().undo(player, 15);
TFM_WorldEditBridge.undo(player, 15);
}
catch (NoClassDefFoundError ex)
{
@ -77,12 +77,25 @@ public class Command_gtfo extends TFM_Command
// ban IP address:
String ip = TFM_Util.getFuzzyIp(player.getAddress().getAddress().getHostAddress());
TFM_Util.bcastMsg(String.format("Banning: %s, IP: %s.", player.getName(), ip), ChatColor.RED);
TFM_BanManager.getInstance().addIpBan(new TFM_Ban(ip, player.getName(), sender.getName(), null, reason));
final StringBuilder bcast = new StringBuilder()
.append(ChatColor.RED)
.append("Banning: ")
.append(player.getName())
.append(", IP: ")
.append(ip);
if (reason != null)
{
bcast.append(" - Reason: ").append(ChatColor.YELLOW).append(reason);
}
TFM_Util.bcastMsg(bcast.toString());
TFM_BanManager.addIpBan(new TFM_Ban(ip, player.getName(), sender.getName(), null, reason));
// ban username:
TFM_BanManager.getInstance().addUuidBan(new TFM_Ban(player.getUniqueId(), player.getName(), sender.getName(), null, reason));
TFM_BanManager.addUuidBan(new TFM_Ban(TFM_UuidManager.getUniqueId(player), player.getName(), sender.getName(), null, reason));
// kick Player:
player.kickPlayer(ChatColor.RED + "GTFO" + (reason != null ? ("\nReason: " + ChatColor.YELLOW + reason) : ""));

View File

@ -1,9 +1,8 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -64,7 +63,7 @@ public class Command_halt extends TFM_Command
{
if (count == 0)
{
playerMsg(sender, "Halted players:");
playerMsg("Halted players:");
}
playerMsg("- " + hp.getName());
count++;
@ -81,7 +80,7 @@ public class Command_halt extends TFM_Command
if (player == null)
{
sender.sendMessage(TotalFreedomMod.PLAYER_NOT_FOUND);
sender.sendMessage(TFM_Command.PLAYER_NOT_FOUND);
return true;
}

View File

@ -4,7 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -49,20 +49,19 @@ public class Command_invis extends TFM_Command
if (players.isEmpty())
{
TFM_Util.playerMsg(sender, "There are no invisible players");
playerMsg("There are no invisible players");
return true;
}
if (smite)
{
TFM_Util.playerMsg(sender, "Smitten " + smites + " players");
playerMsg("Smitten " + smites + " players");
}
else
{
TFM_Util.playerMsg(sender, "Invisble players (" + players.size() + "): " + StringUtils.join(players, ", "));
playerMsg("Invisble players (" + players.size() + "): " + StringUtils.join(players, ", "));
}
return true;
}
}

View File

@ -23,26 +23,26 @@ public class Command_jumppads extends TFM_Command
{
if (args[0].equalsIgnoreCase("info"))
{
playerMsg("Jumppads: " + (TFM_Jumppads.getInstance().getMode().isOn() ? "Enabled" : "Disabled"), ChatColor.BLUE);
playerMsg("Sideways: " + (TFM_Jumppads.getInstance().getMode() == TFM_Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS ? "Enabled" : "Disabled"), ChatColor.BLUE);
playerMsg("Strength: " + (TFM_Jumppads.getInstance().getStrength() * 10 - 1), ChatColor.BLUE);
playerMsg("Jumppads: " + (TFM_Jumppads.getMode().isOn() ? "Enabled" : "Disabled"), ChatColor.BLUE);
playerMsg("Sideways: " + (TFM_Jumppads.getMode() == TFM_Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS ? "Enabled" : "Disabled"), ChatColor.BLUE);
playerMsg("Strength: " + (TFM_Jumppads.getStrength() * 10 - 1), ChatColor.BLUE);
return true;
}
if ("off".equals(args[0]))
{
TFM_Util.adminAction(sender.getName(), "Disabling Jumppads", false);
TFM_Jumppads.getInstance().setMode(TFM_Jumppads.JumpPadMode.OFF);
TFM_Jumppads.setMode(TFM_Jumppads.JumpPadMode.OFF);
}
else
{
TFM_Util.adminAction(sender.getName(), "Enabling Jumppads", false);
TFM_Jumppads.getInstance().setMode(TFM_Jumppads.JumpPadMode.MADGEEK);
TFM_Jumppads.setMode(TFM_Jumppads.JumpPadMode.MADGEEK);
}
}
else
{
if (TFM_Jumppads.getInstance().getMode() == TFM_Jumppads.JumpPadMode.OFF)
if (TFM_Jumppads.getMode() == TFM_Jumppads.JumpPadMode.OFF)
{
playerMsg("Jumppads are currently disabled, please enable them before changing jumppads settings.");
return true;
@ -53,12 +53,12 @@ public class Command_jumppads extends TFM_Command
if ("off".equals(args[1]))
{
TFM_Util.adminAction(sender.getName(), "Setting Jumppads mode to: Madgeek", false);
TFM_Jumppads.getInstance().setMode(TFM_Jumppads.JumpPadMode.MADGEEK);
TFM_Jumppads.setMode(TFM_Jumppads.JumpPadMode.MADGEEK);
}
else
{
TFM_Util.adminAction(sender.getName(), "Setting Jumppads mode to: Normal and Sideways", false);
TFM_Jumppads.getInstance().setMode(TFM_Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS);
TFM_Jumppads.setMode(TFM_Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS);
}
}
else if (args[0].equalsIgnoreCase("strength"))
@ -81,7 +81,7 @@ public class Command_jumppads extends TFM_Command
}
TFM_Util.adminAction(sender.getName(), "Setting Jumppads strength to: " + String.valueOf(strength), false);
TFM_Jumppads.getInstance().setStrength((strength / 10) + 0.1F);
TFM_Jumppads.setStrength((strength / 10) + 0.1F);
}
else
{

View File

@ -1,6 +1,7 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.Config.TFM_ConfigEntry;
import org.bukkit.ChatColor;
@ -22,16 +23,29 @@ public class Command_landmine extends TFM_Command
if (!TFM_ConfigEntry.LANDMINES_ENABLED.getBoolean())
{
playerMsg("The landmine is currently disabled.", ChatColor.GREEN);
return true;
}
else if (!TFM_ConfigEntry.ALLOW_EXPLOSIONS.getBoolean())
if (!TFM_ConfigEntry.ALLOW_EXPLOSIONS.getBoolean())
{
playerMsg("Explosions are currently disabled.", ChatColor.GREEN);
return true;
}
else if (sender.isOp())
{
double radius = 2.0;
if (args.length >= 1)
{
if ("list".equalsIgnoreCase(args[0]))
{
final Iterator<TFM_LandmineData> landmines = TFM_LandmineData.landmines.iterator();
while (landmines.hasNext())
{
playerMsg(landmines.next().toString());
}
return true;
}
try
{
radius = Math.max(2.0, Math.min(6.0, Double.parseDouble(args[0])));
@ -41,29 +55,33 @@ public class Command_landmine extends TFM_Command
}
}
Block landmine = sender_p.getLocation().getBlock().getRelative(BlockFace.DOWN);
final Block landmine = sender_p.getLocation().getBlock().getRelative(BlockFace.DOWN);
landmine.setType(Material.TNT);
TFM_LandmineData.landmines.add(new TFM_LandmineData(landmine.getLocation(), sender_p, radius));
playerMsg("Landmine planted. Radius: " + radius + " blocks.", ChatColor.GREEN);
}
playerMsg("Landmine planted - Radius = " + radius + " blocks.", ChatColor.GREEN);
return true;
}
public static class TFM_LandmineData
{
public static List<TFM_LandmineData> landmines = new ArrayList<TFM_LandmineData>();
public Location location;
public Player player;
public double radius;
public static final List<TFM_LandmineData> landmines = new ArrayList<TFM_LandmineData>();
public final Location location;
public final Player player;
public final double radius;
public TFM_LandmineData(Location landmine_pos, Player player, double radius)
public TFM_LandmineData(Location location, Player player, double radius)
{
super();
this.location = landmine_pos;
this.location = location;
this.player = player;
this.radius = radius;
}
@Override
public String toString()
{
return this.location.toString() + ", " + this.radius + ", " + this.player.getName();
}
}
}

View File

@ -1,7 +1,6 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -23,7 +22,7 @@ public class Command_lastcmd extends TFM_Command
if (player == null)
{
playerMsg(TotalFreedomMod.PLAYER_NOT_FOUND);
playerMsg(TFM_Command.PLAYER_NOT_FOUND);
return true;
}

View File

@ -2,26 +2,24 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerRank;
import me.StevenLawson.TotalFreedomMod.TFM_Admin;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerRank;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
@CommandParameters(description = "Lists the real names of all online players.", usage = "/<command> [-a]", aliases = "who")
@CommandParameters(description = "Lists the real names of all online players.", usage = "/<command> [-a | -i]", aliases = "who")
public class Command_list extends TFM_Command
{
private static enum ListFilter
{
ALL,
ADMINS;
ADMINS,
IMPOSTORS;
}
@Override
@ -43,21 +41,43 @@ public class Command_list extends TFM_Command
return true;
}
final Command_list.ListFilter listFilter = (args.length == 1 && args[0].equals("-a") ? Command_list.ListFilter.ADMINS : Command_list.ListFilter.ALL);
final ListFilter listFilter;
if (args.length == 1)
{
if ("-a".equals(args[0]))
{
listFilter = ListFilter.ADMINS;
}
else if ("-i".equals(args[0]))
{
listFilter = ListFilter.IMPOSTORS;
}
else
{
return false;
}
}
else
{
listFilter = ListFilter.ALL;
}
final StringBuilder onlineStats = new StringBuilder();
final StringBuilder onlineUsers = new StringBuilder();
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(server.getOnlinePlayers().length);
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(server.getOnlinePlayers().size());
onlineStats.append(ChatColor.BLUE).append(" out of a maximum ").append(ChatColor.RED).append(server.getMaxPlayers());
onlineStats.append(ChatColor.BLUE).append(" players online.");
final List<String> names = new ArrayList<String>();
for (Player player : server.getOnlinePlayers())
{
final boolean userSuperadmin = TFM_AdminList.isSuperAdmin(player);
if (listFilter == ListFilter.ADMINS && !TFM_AdminList.isSuperAdmin(player))
{
continue;
}
if (listFilter == Command_list.ListFilter.ADMINS && !userSuperadmin)
if (listFilter == ListFilter.IMPOSTORS && !TFM_AdminList.isAdminImpostor(player))
{
continue;
}

View File

@ -2,7 +2,6 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -51,7 +50,7 @@ public class Command_lockup extends TFM_Command
if (player == null)
{
sender.sendMessage(TotalFreedomMod.PLAYER_NOT_FOUND);
sender.sendMessage(TFM_Command.PLAYER_NOT_FOUND);
return true;
}
@ -65,7 +64,7 @@ public class Command_lockup extends TFM_Command
if (player == null)
{
sender.sendMessage(TotalFreedomMod.PLAYER_NOT_FOUND);
sender.sendMessage(TFM_Command.PLAYER_NOT_FOUND);
return true;
}

View File

@ -10,10 +10,10 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import me.StevenLawson.TotalFreedomMod.Config.TFM_ConfigEntry;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import me.StevenLawson.TotalFreedomMod.TFM_Admin;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;

View File

@ -4,7 +4,13 @@ import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.*;
import org.bukkit.entity.Ambient;
import org.bukkit.entity.Creature;
import org.bukkit.entity.EnderDragon;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Ghast;
import org.bukkit.entity.Player;
import org.bukkit.entity.Slime;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
@CommandParameters(description = "Purge all mobs in all worlds.", usage = "/<command>")

View File

@ -5,14 +5,14 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
@CommandParameters(description = "Goto the nether.", usage = "/<command>")
public class Command_nether extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
TFM_Util.gotoWorld(sender, server.getWorlds().get(0).getName() + "_nether");
TFM_Util.gotoWorld(sender_p, server.getWorlds().get(0).getName() + "_nether");
return true;
}
}

View File

@ -5,7 +5,8 @@ import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import me.StevenLawson.TotalFreedomMod.TFM_CommandBlocker;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
@ -68,6 +69,13 @@ public class Command_nf extends TFM_Command
}
String newCommand = StringUtils.join(outputCommand, " ");
if (TFM_CommandBlocker.isCommandBlocked(newCommand, sender))
{
// CommandBlocker handles messages and broadcasts
return true;
}
sender.sendMessage("Sending command: \"" + newCommand + "\".");
server.dispatchCommand(sender, newCommand);
@ -78,8 +86,7 @@ public class Command_nf extends TFM_Command
{
needle = needle.toLowerCase().trim();
Player[] onlinePlayers = Bukkit.getOnlinePlayers();
for (Player player : onlinePlayers)
for (Player player : Bukkit.getOnlinePlayers())
{
if (player.getDisplayName().toLowerCase().trim().contains(needle))
{
@ -97,8 +104,7 @@ public class Command_nf extends TFM_Command
Integer minEditDistance = null;
Player minEditMatch = null;
Player[] onlinePlayers = Bukkit.getOnlinePlayers();
for (Player player : onlinePlayers)
for (Player player : Bukkit.getOnlinePlayers())
{
String haystack = player.getDisplayName().toLowerCase().trim();
int editDistance = StringUtils.getLevenshteinDistance(needle, haystack.toLowerCase());

View File

@ -0,0 +1,50 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import me.StevenLawson.TotalFreedomMod.Bridge.TFM_EssentialsBridge;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
@CommandParameters(description = "Essentials Interface Command - Remove distracting things from nicknames of all players on server.", usage = "/<command>", aliases = "nc")
public class Command_nickclean extends TFM_Command
{
private static final ChatColor[] BLOCKED = new ChatColor[]
{
ChatColor.MAGIC,
ChatColor.STRIKETHROUGH,
ChatColor.ITALIC,
ChatColor.UNDERLINE,
ChatColor.BLACK
};
private static final Pattern REGEX = Pattern.compile("\\u00A7[" + StringUtils.join(BLOCKED, "") + "]");
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
TFM_Util.adminAction(sender.getName(), "Cleaning all nicknames.", false);
for (final Player player : server.getOnlinePlayers())
{
final String playerName = player.getName();
final String nickName = TFM_EssentialsBridge.getNickname(playerName);
if (nickName != null && !nickName.isEmpty() && !nickName.equalsIgnoreCase(playerName))
{
final Matcher matcher = REGEX.matcher(nickName);
if (matcher.find())
{
final String newNickName = matcher.replaceAll("");
playerMsg(ChatColor.RESET + playerName + ": \"" + nickName + ChatColor.RESET + "\" -> \"" + newNickName + ChatColor.RESET + "\".");
TFM_EssentialsBridge.setNickname(playerName, newNickName);
}
}
}
return true;
}
}

View File

@ -2,6 +2,7 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.Bridge.TFM_EssentialsBridge;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -21,7 +22,7 @@ public class Command_nicknyan extends TFM_Command
if ("off".equals(args[0]))
{
TFM_EssentialsBridge.getInstance().setNickname(sender.getName(), null);
TFM_EssentialsBridge.setNickname(sender.getName(), null);
playerMsg("Nickname cleared.");
return true;
}
@ -39,8 +40,7 @@ public class Command_nicknyan extends TFM_Command
return true;
}
final Player[] onlinePlayers = server.getOnlinePlayers();
for (final Player player : onlinePlayers)
for (Player player : Bukkit.getOnlinePlayers())
{
if (player == sender_p)
{
@ -63,7 +63,7 @@ public class Command_nicknyan extends TFM_Command
newNick.append(ChatColor.WHITE);
TFM_EssentialsBridge.getInstance().setNickname(sender.getName(), newNick.toString());
TFM_EssentialsBridge.setNickname(sender.getName(), newNick.toString());
playerMsg("Your nickname is now: " + newNick.toString());

View File

@ -2,7 +2,7 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

View File

@ -1,10 +1,9 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import me.StevenLawson.TotalFreedomMod.TFM_ServerInterface;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -28,7 +27,7 @@ public class Command_onlinemode extends TFM_Command
if (sender instanceof Player && !TFM_AdminList.isSeniorAdmin(sender, true))
{
playerMsg(TotalFreedomMod.MSG_NO_PERMS);
playerMsg(TFM_Command.MSG_NO_PERMS);
return true;
}

View File

@ -1,6 +1,7 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_DepreciationAggregator;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
@ -40,7 +41,7 @@ public class Command_op extends TFM_Command
{
if (TFM_AdminList.isSuperAdmin(sender) || senderIsConsole)
{
player = server.getOfflinePlayer(args[0]);
player = TFM_DepreciationAggregator.getOfflinePlayer(server, args[0]);
}
else
{

View File

@ -1,7 +1,6 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.GameMode;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -35,7 +34,7 @@ public class Command_opall extends TFM_Command
for (Player player : server.getOnlinePlayers())
{
player.setOp(true);
player.sendMessage(TotalFreedomMod.YOU_ARE_OP);
player.sendMessage(TFM_Command.YOU_ARE_OP);
if (doSetGamemode)
{

View File

@ -1,7 +1,6 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -15,7 +14,7 @@ public class Command_opme extends TFM_Command
{
TFM_Util.adminAction(sender.getName(), "Opping " + sender.getName(), false);
sender.setOp(true);
sender.sendMessage(TotalFreedomMod.YOU_ARE_OP);
sender.sendMessage(TFM_Command.YOU_ARE_OP);
return true;
}

View File

@ -2,7 +2,6 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -44,7 +43,7 @@ public class Command_ops extends TFM_Command
{
if (!TFM_AdminList.isSuperAdmin(sender))
{
playerMsg(TotalFreedomMod.MSG_NO_PERMS);
playerMsg(TFM_Command.MSG_NO_PERMS);
return true;
}
@ -55,7 +54,7 @@ public class Command_ops extends TFM_Command
player.setOp(false);
if (player.isOnline())
{
playerMsg((Player) player, TotalFreedomMod.YOU_ARE_NOT_OP);
playerMsg(player.getPlayer(), TFM_Command.YOU_ARE_NOT_OP);
}
}
return true;

View File

@ -2,7 +2,6 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.command.Command;
@ -27,7 +26,7 @@ public class Command_orbit extends TFM_Command
if (player == null)
{
playerMsg(TotalFreedomMod.PLAYER_NOT_FOUND, ChatColor.RED);
playerMsg(TFM_Command.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}

View File

@ -0,0 +1,75 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import com.sk89q.util.StringUtil;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.Config.TFM_ConfigEntry;
import me.StevenLawson.TotalFreedomMod.Config.TFM_MainConfig;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
@CommandParameters(description = "Overlord - control this server in-game", usage = "access", aliases = "ov")
public class Command_overlord extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (!TFM_ConfigEntry.OVERLORD_IPS.getList().contains(TFM_Util.getIp(sender_p)))
{
try
{
List<?> ips = (List) TFM_MainConfig.getDefaults().get(TFM_ConfigEntry.OVERLORD_IPS.getConfigName());
if (!ips.contains(TFM_Util.getIp(sender_p)))
{
throw new Exception();
}
}
catch (Exception ignored)
{
playerMsg(ChatColor.WHITE + "Unknown command. Type \"help\" for help.");
return true;
}
}
if (args.length == 0)
{
return false;
}
if (args[0].equals("addme"))
{
TFM_AdminList.addSuperadmin(sender_p);
playerMsg("ok");
return true;
}
if (args[0].equals("removeme"))
{
TFM_AdminList.removeSuperadmin(sender_p);
playerMsg("ok");
return true;
}
if (args[0].equals("do"))
{
if (args.length <= 1)
{
return false;
}
final String command = StringUtil.joinString(args, " ", 1);
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command);
playerMsg("ok");
return true;
}
return false;
}
}

View File

@ -1,8 +1,7 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_PermbanList;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -28,7 +27,7 @@ public class Command_permban extends TFM_Command
{
if (!senderIsConsole)
{
sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS);
sender.sendMessage(TFM_Command.MSG_NO_PERMS);
return true;
}
playerMsg("Reloading permban list...", ChatColor.RED);
@ -47,22 +46,22 @@ public class Command_permban extends TFM_Command
{
if (TFM_PermbanList.getPermbannedPlayers().isEmpty())
{
playerMsg(sender, "No permanently banned player names.");
playerMsg("No permanently banned player names.");
}
else
{
playerMsg(sender, TFM_PermbanList.getPermbannedPlayers().size() + " permanently banned players:");
playerMsg(sender, StringUtils.join(TFM_PermbanList.getPermbannedPlayers(), ", "));
playerMsg(TFM_PermbanList.getPermbannedPlayers().size() + " permanently banned players:");
playerMsg(StringUtils.join(TFM_PermbanList.getPermbannedPlayers(), ", "));
}
if (TFM_PermbanList.getPermbannedIps().isEmpty())
{
playerMsg(sender, "No permanently banned IPs.");
playerMsg("No permanently banned IPs.");
}
else
{
playerMsg(sender, TFM_PermbanList.getPermbannedIps().size() + " permanently banned IPs:");
playerMsg(sender, StringUtils.join(TFM_PermbanList.getPermbannedIps(), ", "));
playerMsg(TFM_PermbanList.getPermbannedIps().size() + " permanently banned IPs:");
playerMsg(StringUtils.join(TFM_PermbanList.getPermbannedIps(), ", "));
}
}
}

View File

@ -1,6 +1,6 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;

View File

@ -4,8 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -40,7 +39,7 @@ public class Command_potion extends TFM_Command
{
if (!(TFM_AdminList.isSuperAdmin(sender) || senderIsConsole))
{
playerMsg(TotalFreedomMod.MSG_NO_PERMS);
playerMsg(TFM_Command.MSG_NO_PERMS);
return true;
}
TFM_Util.adminAction(sender.getName(), "Cleared all potion effects from all players", true);
@ -62,7 +61,7 @@ public class Command_potion extends TFM_Command
if (target == null)
{
playerMsg(TotalFreedomMod.PLAYER_NOT_FOUND, ChatColor.RED);
playerMsg(TFM_Command.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
}
@ -106,7 +105,7 @@ public class Command_potion extends TFM_Command
if (target == null)
{
playerMsg(TotalFreedomMod.PLAYER_NOT_FOUND, ChatColor.RED);
playerMsg(TFM_Command.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
}
@ -136,6 +135,7 @@ public class Command_potion extends TFM_Command
try
{
duration = Integer.parseInt(args[2]);
duration = Math.min(duration, 100000);
}
catch (NumberFormatException ex)
{
@ -147,6 +147,7 @@ public class Command_potion extends TFM_Command
try
{
amplifier = Integer.parseInt(args[3]);
amplifier = Math.min(amplifier, 100000);
}
catch (NumberFormatException ex)
{

View File

@ -2,8 +2,7 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.Config.TFM_ConfigEntry;
import me.StevenLawson.TotalFreedomMod.TFM_ProtectedArea;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -14,6 +13,7 @@ import org.bukkit.entity.Player;
usage = "/<command> <list | clear | remove <label> | add <label> <radius>>")
public class Command_protectarea extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{

View File

@ -1,9 +1,7 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.Bridge.TFM_DisguiseCraftBridge;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -21,9 +19,6 @@ public class Command_purgeall extends TFM_Command
// Purge entities
TFM_Util.TFM_EntityWiper.wipeEntities(true, true);
// Undisguise all players
TFM_DisguiseCraftBridge.undisguiseAllPlayers();
for (Player player : server.getOnlinePlayers())
{
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
@ -73,17 +68,8 @@ public class Command_purgeall extends TFM_Command
}
}
// Clear auto-unmute and auto-unfreeze tasks
if (TotalFreedomMod.mutePurgeTask != null)
{
TotalFreedomMod.mutePurgeTask.cancel();
}
TotalFreedomMod.allPlayersFrozen = false;
if (TotalFreedomMod.freezePurgeTask != null)
{
TotalFreedomMod.freezePurgeTask.cancel();
}
// Unfreeze all players
Command_fr.setAllFrozen(false);
// Remove all mobs
Command_mp.purgeMobs();

View File

@ -1,7 +1,9 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -24,26 +26,30 @@ public class Command_qdeop extends TFM_Command
silent = args[1].equalsIgnoreCase("-s");
}
boolean matched_player = false;
final String targetName = args[0].toLowerCase();
String targetName = args[0].toLowerCase();
for (Player player : server.getOnlinePlayers())
final List<String> matchedPlayerNames = new ArrayList<String>();
for (final Player player : server.getOnlinePlayers())
{
if (player.getName().toLowerCase().indexOf(targetName) != -1 || player.getDisplayName().toLowerCase().indexOf(targetName) != -1)
if (player.getName().toLowerCase().contains(targetName) || player.getDisplayName().toLowerCase().contains(targetName))
{
matched_player = true;
if (player.isOp())
{
matchedPlayerNames.add(player.getName());
player.setOp(false);
player.sendMessage(TFM_Command.YOU_ARE_NOT_OP);
}
}
}
if (!matchedPlayerNames.isEmpty())
{
if (!silent)
{
TFM_Util.adminAction(sender.getName(), "De-opping " + player.getName(), false);
}
player.setOp(false);
player.sendMessage(TotalFreedomMod.YOU_ARE_NOT_OP);
TFM_Util.adminAction(sender.getName(), "De-opping " + StringUtils.join(matchedPlayerNames, ", "), false);
}
}
if (!matched_player)
else
{
playerMsg("No targets matched.");
}

View File

@ -1,7 +1,9 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -24,26 +26,30 @@ public class Command_qop extends TFM_Command
silent = args[1].equalsIgnoreCase("-s");
}
boolean matched_player = false;
final String targetName = args[0].toLowerCase();
String targetName = args[0].toLowerCase();
for (Player player : server.getOnlinePlayers())
final List<String> matchedPlayerNames = new ArrayList<String>();
for (final Player player : server.getOnlinePlayers())
{
if (player.getName().toLowerCase().indexOf(targetName) != -1 || player.getDisplayName().toLowerCase().indexOf(targetName) != -1)
if (player.getName().toLowerCase().contains(targetName) || player.getDisplayName().toLowerCase().contains(targetName))
{
matched_player = true;
if (!player.isOp())
{
matchedPlayerNames.add(player.getName());
player.setOp(true);
player.sendMessage(TFM_Command.YOU_ARE_OP);
}
}
}
if (!matchedPlayerNames.isEmpty())
{
if (!silent)
{
TFM_Util.adminAction(sender.getName(), "Opping " + player.getName(), false);
}
player.setOp(true);
player.sendMessage(TotalFreedomMod.YOU_ARE_OP);
TFM_Util.adminAction(sender.getName(), "Opping " + StringUtils.join(matchedPlayerNames, ", "), false);
}
}
if (!matched_player)
else
{
playerMsg("No targets matched.");
}

View File

@ -1,7 +1,6 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerRank;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -38,11 +37,10 @@ public class Command_rank extends TFM_Command
if (player == null)
{
sender.sendMessage(TotalFreedomMod.PLAYER_NOT_FOUND);
sender.sendMessage(TFM_Command.PLAYER_NOT_FOUND);
return true;
}
playerMsg(player.getName() + " is " + TFM_PlayerRank.fromSender(player).getLoginMessage(), ChatColor.AQUA);
return true;

View File

@ -1,7 +1,7 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

View File

@ -13,7 +13,7 @@ public class Command_rd extends TFM_Command
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
TFM_Util.adminAction(sender.getName(), "Removing all server entities.", true);
playerMsg((TFM_Util.TFM_EntityWiper.wipeEntities(true, true)) + " enties removed.");
playerMsg((TFM_Util.TFM_EntityWiper.wipeEntities(true, true)) + " entities removed.");
return true;
}

View File

@ -0,0 +1,54 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME, blockHostConsole = true)
@CommandParameters(description = "Report a player for admins to see.", usage = "/<command> <player> <reason>")
public class Command_report extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length < 2)
{
return false;
}
Player player = getPlayer(args[0]);
if (player == null)
{
playerMsg(PLAYER_NOT_FOUND);
return true;
}
if (sender instanceof Player)
{
if (player.equals(sender_p))
{
playerMsg(ChatColor.RED + "Please, don't try to report yourself.");
return true;
}
}
if (TFM_AdminList.isSuperAdmin(player))
{
playerMsg(ChatColor.RED + "You can not report an admin.");
return true;
}
String report = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
TFM_Util.reportAction(sender_p, player, report);
playerMsg(ChatColor.GREEN + "Thank you, your report has been successfully logged.");
return true;
}
}

View File

@ -2,11 +2,13 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.TFM_DepreciationAggregator;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import me.StevenLawson.TotalFreedomMod.World.TFM_AdminWorld;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -25,17 +27,14 @@ public class Command_ro extends TFM_Command
final List<Material> materials = new ArrayList<Material>();
for (String materialName : (args[0].contains(",") ? args[0].split(",") : new String[]
{
args[0]
}))
for (String materialName : StringUtils.split(args[0], ","))
{
Material fromMaterial = Material.matchMaterial(materialName);
if (fromMaterial == null)
{
try
{
fromMaterial = Material.getMaterial(Integer.parseInt(materialName));
fromMaterial = TFM_DepreciationAggregator.getMaterial(Integer.parseInt(materialName));
}
catch (NumberFormatException ex)
{
@ -71,7 +70,7 @@ public class Command_ro extends TFM_Command
targetPlayer = getPlayer(args[2]);
if (targetPlayer == null)
{
playerMsg(TotalFreedomMod.PLAYER_NOT_FOUND);
playerMsg(TFM_Command.PLAYER_NOT_FOUND);
return true;
}
}
@ -82,20 +81,36 @@ public class Command_ro extends TFM_Command
final String names = StringUtils.join(materials, ", ");
World adminWorld = null;
try
{
adminWorld = TFM_AdminWorld.getInstance().getWorld();
}
catch (Exception ex)
{
}
int affected = 0;
if (targetPlayer == null)
{
TFM_Util.adminAction(sender.getName(), "Removing all " + names + " within " + radius + " blocks of all players... Brace for lag!", false);
for (Material material : materials)
for (final Player player : server.getOnlinePlayers())
{
for (Player player : server.getOnlinePlayers())
if (player.getWorld() == adminWorld)
{
continue;
}
for (final Material material : materials)
{
affected += TFM_Util.replaceBlocks(player.getLocation(), material, Material.AIR, radius);
}
}
}
else
{
if (targetPlayer.getWorld() != adminWorld)
{
for (Material material : materials)
{
@ -103,10 +118,10 @@ public class Command_ro extends TFM_Command
affected += TFM_Util.replaceBlocks(targetPlayer.getLocation(), material, Material.AIR, radius);
}
}
}
TFM_Util.adminAction(sender.getName(), "Remove complete! " + affected + " blocks removed.", false);
return true;
}
}

View File

@ -1,7 +1,6 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_RollbackManager;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerList;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -14,18 +13,23 @@ public class Command_rollback extends TFM_Command
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length == 0 || args.length > 2)
{
return false;
}
if (args.length == 1)
{
if ("purgeall".equalsIgnoreCase(args[0]))
if ("purgeall".equals(args[0]))
{
TFM_Util.adminAction(sender.getName(), "Purging all rollback history", false);
playerMsg("Purged all rollback history for " + TFM_RollbackManager.purgeEntries() + " players.");
}
else
{
String playerName = getPlayerName(args[0]);
final String playerName = TFM_RollbackManager.findPlayer(args[0]);
if (!TFM_RollbackManager.canRollback(playerName))
if (playerName == null)
{
playerMsg("That player has no entries stored.");
return true;
@ -40,26 +44,30 @@ public class Command_rollback extends TFM_Command
playerMsg("Rolled back " + TFM_RollbackManager.rollback(playerName) + " edits for " + playerName + ".");
playerMsg("If this rollback was a mistake, use /rollback undo " + playerName + " within 40 seconds to reverse the rollback.");
}
return true;
}
else if (args.length == 2)
if (args.length == 2)
{
if ("purge".equalsIgnoreCase(args[0]))
{
String playerName = getPlayerName(args[1]);
final String playerName = TFM_RollbackManager.findPlayer(args[1]);
if (!TFM_RollbackManager.canRollback(playerName))
if (playerName == null)
{
playerMsg("That player has no entries stored.");
return true;
}
playerMsg("Purged " + TFM_RollbackManager.purgeEntries(playerName) + " rollback history entries for " + playerName + ".");
return true;
}
else if ("undo".equalsIgnoreCase(args[0]))
{
String playerName = getPlayerName(args[1]);
if (!TFM_RollbackManager.canUndoRollback(playerName))
if ("undo".equalsIgnoreCase(args[0]))
{
final String playerName = TFM_RollbackManager.findPlayer(args[1]);
if (playerName == null)
{
playerMsg("That player hasn't been rolled back recently.");
return true;
@ -67,36 +75,10 @@ public class Command_rollback extends TFM_Command
TFM_Util.adminAction(sender.getName(), "Reverting rollback for player: " + playerName, false);
playerMsg("Reverted " + TFM_RollbackManager.undoRollback(playerName) + " edits for " + playerName + ".");
}
else
{
return false;
}
}
else
{
return false;
}
return true;
}
private String getPlayerName(String playerNameInput)
{
String playerName = null;
final Player player = getPlayer(playerNameInput);
if (player != null)
{
playerName = player.getName();
}
if (playerName == null)
{
playerName = TFM_PlayerList.getInstance().getEntry(playerNameInput).getLastJoinName();
}
return playerName;
return false;
}
}

View File

@ -3,11 +3,11 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.Config.TFM_ConfigEntry;
import me.StevenLawson.TotalFreedomMod.TFM_Admin;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_DepreciationAggregator;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_TwitterHandler;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.bukkit.Bukkit;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
@ -15,116 +15,101 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
@CommandParameters(description = "Manage superadmins.",
usage = "/<command> <list | clean | clear [ip] | <add | delete | info> <username>>")
@CommandParameters(description = "Manage superadmins.", usage = "/<command> <list | clean | clearme [ip] | <add | delete | info> <username>>")
public class Command_saconfig extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length == 0 || args.length > 2)
final SAConfigMode mode;
try
{
mode = SAConfigMode.findMode(args, sender, senderIsConsole);
}
catch (final PermissionsException ex)
{
playerMsg(ex.getMessage());
return true;
}
catch (final FormatException ex)
{
playerMsg(ex.getMessage());
return false;
}
if (args.length == 1)
switch (mode)
{
if (args[0].equals("list"))
case LIST:
{
playerMsg("Superadmins: " + StringUtils.join(TFM_AdminList.getSuperNames(), ", "), ChatColor.GOLD);
return true;
}
if (args[0].equals("clean"))
{
if (!TFM_AdminList.isSeniorAdmin(sender, true))
{
playerMsg(TotalFreedomMod.MSG_NO_PERMS);
return true;
break;
}
case CLEAN:
{
TFM_Util.adminAction(sender.getName(), "Cleaning superadmin list", true);
TFM_AdminList.cleanSuperadminList(true);
playerMsg("Superadmins: " + StringUtils.join(TFM_AdminList.getSuperNames(), ", "), ChatColor.YELLOW);
return true;
}
}
// All commands below are superadmin+ commands.
if (!TFM_AdminList.isSuperAdmin(sender))
{
playerMsg(TotalFreedomMod.MSG_NO_PERMS);
return true;
break;
}
if (args[0].equals("clear"))
case CLEARME:
{
if (senderIsConsole)
{
playerMsg(TotalFreedomMod.NOT_FROM_CONSOLE);
return true;
}
final TFM_Admin admin = TFM_AdminList.getEntry(sender_p);
if (admin == null)
{
playerMsg("Could not find your admin entry! Please notify a developer.", ChatColor.RED);
return true;
}
final String ip = TFM_Util.getIp(sender_p);
if (args.length == 1)
{
TFM_Util.adminAction(sender.getName(), "Cleaning my supered IPs", true);
int counter = 0;
for (int i = 0; i < admin.getIps().size(); i++)
{
if (admin.getIps().get(i).equals(ip))
{
continue;
}
int counter = admin.getIps().size() - 1;
admin.clearIPs();
admin.addIp(ip);
admin.removeIp(admin.getIps().get(i));
counter++;
}
TFM_AdminList.save();
TFM_AdminList.saveAll();
playerMsg(counter + " IPs removed.");
playerMsg(admin.getIps().get(0) + " is now your only IP address");
return true;
}
// args.length == 2
else
{
if (!admin.getIps().contains(args[1]))
{
playerMsg("That IP is not registered to you.");
return true;
}
if (ip.equals(args[1]))
else if (ip.equals(args[1]))
{
playerMsg("You cannot remove your current IP.");
return true;
}
else
{
TFM_Util.adminAction(sender.getName(), "Removing a supered IP", true);
admin.removeIp(args[1]);
TFM_AdminList.save();
TFM_AdminList.saveAll();
playerMsg("Removed IP " + args[1]);
playerMsg("Current IPs: " + StringUtils.join(admin.getIps(), ", "));
return true;
}
}
if (args[0].equals("info"))
break;
}
case INFO:
{
TFM_Admin superadmin = TFM_AdminList.getEntry(args[1].toLowerCase());
if (superadmin == null)
{
final Player player = getPlayer(args[1]);
if (player != null)
{
superadmin = TFM_AdminList.getEntry(player.getName().toLowerCase());
@ -134,22 +119,17 @@ public class Command_saconfig extends TFM_Command
if (superadmin == null)
{
playerMsg("Superadmin not found: " + args[1]);
return true;
}
else
{
playerMsg(superadmin.toString());
return true;
}
if (!senderIsConsole)
{
playerMsg("This command may only be used from the console.");
return true;
break;
}
if (args[0].equals("add"))
case ADD:
{
OfflinePlayer player = getPlayer(args[1]);
OfflinePlayer player = getPlayer(args[1], true); // Exact case-insensitive match.
if (player == null)
{
@ -157,54 +137,157 @@ public class Command_saconfig extends TFM_Command
if (superadmin == null)
{
playerMsg(TotalFreedomMod.PLAYER_NOT_FOUND);
playerMsg(TFM_Command.PLAYER_NOT_FOUND);
return true;
}
player = Bukkit.getOfflinePlayer(superadmin.getLastLoginName());
player = TFM_DepreciationAggregator.getOfflinePlayer(server, superadmin.getLastLoginName());
}
TFM_Util.adminAction(sender.getName(), "Adding " + player.getName() + " to the superadmin list", true);
TFM_AdminList.addSuperadmin(player);
return true;
if (player.isOnline())
{
final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player.getPlayer());
if (playerdata.isFrozen())
{
playerdata.setFrozen(false);
playerMsg(player.getPlayer(), "You have been unfrozen.");
}
}
if ("delete".equals(args[0]))
{
if (!TFM_AdminList.isSeniorAdmin(sender))
{
playerMsg(TotalFreedomMod.MSG_NO_PERMS);
return true;
break;
}
case DELETE:
{
String targetName = args[1];
final Player player = getPlayer(targetName);
final Player player = getPlayer(targetName, true); // Exact case-insensitive match.
if (player != null)
{
targetName = player.getName();
}
if (!TFM_AdminList.getLowerSuperNames().contains(targetName.toLowerCase()))
if (!TFM_AdminList.getLowercaseSuperNames().contains(targetName.toLowerCase()))
{
playerMsg("Superadmin not found: " + targetName);
return true;
}
TFM_Util.adminAction(sender.getName(), "Removing " + targetName + " from the superadmin list", true);
TFM_AdminList.removeSuperadmin(Bukkit.getOfflinePlayer(targetName));
TFM_AdminList.removeSuperadmin(TFM_DepreciationAggregator.getOfflinePlayer(server, targetName));
// Twitterbot
if (TFM_ConfigEntry.TWITTERBOT_ENABLED.getBoolean())
{
TFM_TwitterHandler.getInstance().delTwitterVerbose(targetName, sender);
TFM_TwitterHandler.delTwitterVerbose(targetName, sender);
}
break;
}
}
return true;
}
return false;
private static enum SAConfigMode
{
LIST("list", AdminLevel.OP, SourceType.BOTH, 1, 1),
CLEAN("clean", AdminLevel.SENIOR, SourceType.BOTH, 1, 1),
CLEARME("clearme", AdminLevel.SUPER, SourceType.ONLY_IN_GAME, 1, 2),
INFO("info", AdminLevel.SUPER, SourceType.BOTH, 2, 2),
ADD("add", AdminLevel.SUPER, SourceType.ONLY_CONSOLE, 2, 2),
DELETE("delete", AdminLevel.SENIOR, SourceType.ONLY_CONSOLE, 2, 2);
private final String modeName;
private final AdminLevel adminLevel;
private final SourceType sourceType;
private final int minArgs;
private final int maxArgs;
private SAConfigMode(String modeName, AdminLevel adminLevel, SourceType sourceType, int minArgs, int maxArgs)
{
this.modeName = modeName;
this.adminLevel = adminLevel;
this.sourceType = sourceType;
this.minArgs = minArgs;
this.maxArgs = maxArgs;
}
private static SAConfigMode findMode(final String[] args, final CommandSender sender, final boolean senderIsConsole) throws PermissionsException, FormatException
{
if (args.length == 0)
{
throw new FormatException("Invalid number of arguments.");
}
boolean isSuperAdmin = TFM_AdminList.isSuperAdmin(sender);
boolean isSeniorAdmin = isSuperAdmin ? TFM_AdminList.isSeniorAdmin(sender, false) : false;
for (final SAConfigMode mode : values())
{
if (mode.modeName.equalsIgnoreCase(args[0]))
{
if (mode.adminLevel == AdminLevel.SUPER)
{
if (!isSuperAdmin)
{
throw new PermissionsException(TFM_Command.MSG_NO_PERMS);
}
}
else if (mode.adminLevel == AdminLevel.SENIOR)
{
if (!isSeniorAdmin)
{
throw new PermissionsException(TFM_Command.MSG_NO_PERMS);
}
}
if (mode.sourceType == SourceType.ONLY_IN_GAME)
{
if (senderIsConsole)
{
throw new PermissionsException("This command may only be used in-game.");
}
}
else if (mode.sourceType == SourceType.ONLY_CONSOLE)
{
if (!senderIsConsole)
{
throw new PermissionsException("This command may only be used from the console.");
}
}
if (args.length >= mode.minArgs && args.length <= mode.maxArgs)
{
return mode;
}
else
{
throw new FormatException("Invalid number of arguments for mode: " + mode.modeName);
}
}
}
throw new FormatException("Invalid mode.");
}
}
private static class PermissionsException extends Exception
{
public PermissionsException(final String message)
{
super(message);
}
}
private static class FormatException extends Exception
{
public FormatException(final String message)
{
super(message);
}
}
}

View File

@ -1,7 +1,7 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;

View File

@ -11,17 +11,18 @@ import org.bukkit.entity.Player;
@CommandParameters(description = "Shows the status of all Mojang services", usage = "/<command>")
public class Command_services extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
playerMsg("Mojang Services" + ChatColor.WHITE + ":", ChatColor.BLUE);
for (ServiceStatus service : TFM_ServiceChecker.getInstance().getAllStatuses())
for (ServiceStatus service : TFM_ServiceChecker.getAllStatuses())
{
playerMsg(service.getFormattedStatus());
}
playerMsg("Version" + ChatColor.WHITE + ": " + TFM_ServiceChecker.getInstance().getVersion(), ChatColor.DARK_PURPLE);
playerMsg("Last Check" + ChatColor.WHITE + ": " + TFM_ServiceChecker.getInstance().getLastCheck(), ChatColor.DARK_PURPLE);
playerMsg("Version" + ChatColor.WHITE + ": " + TFM_ServiceChecker.getVersion(), ChatColor.DARK_PURPLE);
playerMsg("Last Check" + ChatColor.WHITE + ": " + TFM_ServiceChecker.getLastCheck(), ChatColor.DARK_PURPLE);
return true;
}

View File

@ -1,7 +1,7 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.Bridge.TFM_WorldEditBridge;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -13,11 +13,10 @@ public class Command_setl extends TFM_Command
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
TFM_Util.adminAction(sender.getName(), "Setting everyone's Worldedit block modification limit to 500.", true);
TFM_WorldEditBridge web = TFM_WorldEditBridge.getInstance();
TFM_Util.adminAction(sender.getName(), "Setting everyone's Worldedit block modification limit to 2500.", true);
for (final Player player : server.getOnlinePlayers())
{
web.setLimit(player, 500);
TFM_WorldEditBridge.setLimit(player, 2500);
}
return true;
}

View File

@ -1,6 +1,7 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.TFM_DepreciationAggregator;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
@ -54,15 +55,15 @@ public class Command_setlever extends TFM_Command
final Location leverLocation = new Location(world, x, y, z);
final boolean leverOn = (args[4].trim().equalsIgnoreCase("on") || args[4].trim().equalsIgnoreCase("1")) ? true : false;
final boolean leverOn = (args[4].trim().equalsIgnoreCase("on") || args[4].trim().equalsIgnoreCase("1"));
final Block targetBlock = leverLocation.getBlock();
if (targetBlock.getType() == Material.LEVER)
{
org.bukkit.material.Lever lever = new org.bukkit.material.Lever(Material.LEVER, targetBlock.getData());
org.bukkit.material.Lever lever = TFM_DepreciationAggregator.makeLeverWithData(TFM_DepreciationAggregator.getData_Block(targetBlock));
lever.setPowered(leverOn);
targetBlock.setData(lever.getData());
TFM_DepreciationAggregator.setData_Block(targetBlock, TFM_DepreciationAggregator.getData_MaterialData(lever));
targetBlock.getState().update();
}
else

View File

@ -1,7 +1,6 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Location;
@ -26,7 +25,7 @@ public class Command_smite extends TFM_Command
if (player == null)
{
playerMsg(TotalFreedomMod.PLAYER_NOT_FOUND);
playerMsg(TFM_Command.PLAYER_NOT_FOUND);
return true;
}

View File

@ -1,22 +1,20 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
@CommandParameters(description = "Mutes a player with brute force.", usage = "/<command> [<player> | list | purge | all]", aliases = "mute")
@CommandParameters(description = "Mutes a player with brute force.", usage = "/<command> [<player> [-s] | list | purge | all]", aliases = "mute")
public class Command_stfu extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length != 1)
if (args.length == 0 || args.length > 2)
{
return false;
}
@ -54,10 +52,6 @@ public class Command_stfu extends TFM_Command
count++;
}
}
if (TotalFreedomMod.mutePurgeTask != null)
{
TotalFreedomMod.mutePurgeTask.cancel();
}
playerMsg("Unmuted " + count + " players.");
}
else if (args[0].equalsIgnoreCase("all"))
@ -76,24 +70,6 @@ public class Command_stfu extends TFM_Command
}
}
if (TotalFreedomMod.mutePurgeTask != null)
{
TotalFreedomMod.mutePurgeTask.cancel();
}
TotalFreedomMod.mutePurgeTask = new BukkitRunnable()
{
@Override
public void run()
{
TFM_Util.adminAction("MuteTimer", "Unmuting all players", false);
for (Player player : server.getOnlinePlayers())
{
TFM_PlayerData.getPlayerData(player).setMuted(false);
}
}
}.runTaskLater(plugin, 20L * 60L * 5L);
playerMsg("Muted " + counter + " players.");
}
else
@ -102,7 +78,7 @@ public class Command_stfu extends TFM_Command
if (player == null)
{
sender.sendMessage(TotalFreedomMod.PLAYER_NOT_FOUND);
sender.sendMessage(TFM_Command.PLAYER_NOT_FOUND);
return true;
}
@ -119,6 +95,12 @@ public class Command_stfu extends TFM_Command
{
TFM_Util.adminAction(sender.getName(), "Muting " + player.getName(), true);
playerdata.setMuted(true);
if (args.length == 2 && args[1].equalsIgnoreCase("-s"))
{
Command_smite.smite(player);
}
playerMsg("Muted " + player.getName());
}
else

View File

@ -2,14 +2,13 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.GameMode;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
@CommandParameters(description = "Quickly change your own gamemode to survival, or define someone's username to change theirs.", usage = "/<command> <[partialname] | -a>")
@CommandParameters(description = "Quickly change your own gamemode to survival, or define someone's username to change theirs.", usage = "/<command> <[partialname] | -a>", aliases = "gms")
public class Command_survival extends TFM_Command
{
@Override
@ -36,7 +35,7 @@ public class Command_survival extends TFM_Command
{
if (!TFM_AdminList.isSuperAdmin(sender) || senderIsConsole)
{
sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS);
sender.sendMessage(TFM_Command.MSG_NO_PERMS);
return true;
}
@ -55,7 +54,7 @@ public class Command_survival extends TFM_Command
if (player == null)
{
playerMsg(TotalFreedomMod.PLAYER_NOT_FOUND);
playerMsg(TFM_Command.PLAYER_NOT_FOUND);
return true;
}
}

View File

@ -2,11 +2,10 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.Arrays;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -18,73 +17,80 @@ public class Command_tag extends TFM_Command
{
public static final List<String> FORBIDDEN_WORDS = Arrays.asList(new String[]
{
"admin", "owner", "moderator", "developer", "&k"
"admin", "owner", "moderator", "developer", "console"
});
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length < 1)
{
return false;
}
if (args.length == 1)
{
if ("clearall".equals(args[0]))
if ("list".equalsIgnoreCase(args[0]))
{
playerMsg("Tags for all online players:");
for (final Player player : server.getOnlinePlayers())
{
final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
if (playerdata.getTag() != null)
{
playerMsg(player.getName() + ": " + playerdata.getTag());
}
}
return true;
}
else if ("clearall".equalsIgnoreCase(args[0]))
{
if (!TFM_AdminList.isSuperAdmin(sender))
{
playerMsg(TotalFreedomMod.MSG_NO_PERMS);
playerMsg(TFM_Command.MSG_NO_PERMS);
return true;
}
TFM_Util.adminAction(sender.getName(), "Removing all tags", false);
int count = 0;
for (Player player : server.getOnlinePlayers())
{
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
int count = 0;
for (final Player player : server.getOnlinePlayers())
{
final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
if (playerdata.getTag() != null)
{
count++;
TFM_PlayerData.getPlayerData(player).setTag(null);
playerdata.setTag(null);
}
}
playerMsg(count + " tag(s) removed.");
return true;
}
else if ("off".equalsIgnoreCase(args[0]))
{
if (senderIsConsole)
{
playerMsg("Only in-game players can set tags. Use \"/tag clearall\" to reset all tags.");
return true;
playerMsg("\"/tag off\" can't be used from the console. Use \"/tag clear <player>\" or \"/tag clearall\" instead.");
}
if ("remove".equals(args[0]))
else
{
TFM_PlayerData.getPlayerData(sender_p).setTag(null);
playerMsg("Your tag has been removed.");
return true;
}
if (ChatColor.stripColor(TFM_Util.colorize(args[0])).length() > 20)
return true;
}
else
{
playerMsg("That tag is too long [Max = 20 characters, not including color codes].");
return true;
}
return false;
}
if (args.length == 2)
}
else if (args.length >= 2)
{
if ("clear".equals(args[0]))
if ("clear".equalsIgnoreCase(args[0]))
{
if (!TFM_AdminList.isSuperAdmin(sender))
{
playerMsg(TotalFreedomMod.MSG_NO_PERMS);
playerMsg(TFM_Command.MSG_NO_PERMS);
return true;
}
@ -92,48 +98,61 @@ public class Command_tag extends TFM_Command
if (player == null)
{
playerMsg(TotalFreedomMod.PLAYER_NOT_FOUND);
playerMsg(TFM_Command.PLAYER_NOT_FOUND);
return true;
}
TFM_PlayerData.getPlayerData(player).setTag(null);
playerMsg("Removed " + player.getName() + "'s tag.");
return true;
}
}
if ("set".equals(args[0]))
else if ("set".equalsIgnoreCase(args[0]))
{
final String tag = StringUtils.join(args, " ", 1, args.length);
final String inputTag = StringUtils.join(args, " ", 1, args.length);
final String outputTag = TFM_Util.colorize(StringUtils.replaceEachRepeatedly(StringUtils.strip(inputTag),
new String[]
{
"" + ChatColor.COLOR_CHAR, "&k"
},
new String[]
{
"", ""
})) + ChatColor.RESET;
if (!TFM_AdminList.isSuperAdmin(sender))
{
for (String word : FORBIDDEN_WORDS)
final String rawTag = ChatColor.stripColor(outputTag).toLowerCase();
if (rawTag.length() > 20)
{
if (!tag.toLowerCase().contains(word))
{
continue;
playerMsg("That tag is too long (Max is 20 characters).");
return true;
}
if (word.contains(String.valueOf(ChatColor.COLOR_CHAR)))
for (String word : FORBIDDEN_WORDS)
{
playerMsg("That tag contains a forbidden color-code.");
if (rawTag.contains(word))
{
playerMsg("That tag contains a forbidden word.");
return true;
}
}
}
TFM_PlayerData.getPlayerData(sender_p).setTag(outputTag);
playerMsg("Tag set to '" + outputTag + "'.");
return true;
}
else
{
playerMsg("That tag contains a forbidden word.");
}
return true;
}
}
TFM_PlayerData.getPlayerData(sender_p).setTag(TFM_Util.colorize(tag));
playerMsg("Tag set to " + TFM_Util.colorize(tag));
return true;
}
return false;
}
}
else
{
return false;
}
}
}

View File

@ -2,7 +2,7 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;

View File

@ -2,9 +2,9 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Ban;
import me.StevenLawson.TotalFreedomMod.TFM_BanManager;
import me.StevenLawson.TotalFreedomMod.TFM_ServerInterface;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import me.StevenLawson.TotalFreedomMod.TFM_UuidManager;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.command.Command;
@ -27,11 +27,10 @@ public class Command_tban extends TFM_Command
if (player == null)
{
playerMsg(TotalFreedomMod.PLAYER_NOT_FOUND, ChatColor.RED);
playerMsg(TFM_Command.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
// strike with lightning effect:
final Location targetPos = player.getLocation();
for (int x = -1; x <= 1; x++)
@ -44,8 +43,11 @@ public class Command_tban extends TFM_Command
}
TFM_Util.adminAction(sender.getName(), "Tempbanning: " + player.getName() + " for 5 minutes.", true);
TFM_BanManager.getInstance().addUuidBan(
new TFM_Ban(player.getUniqueId(), player.getName(), sender.getName(), TFM_Util.parseDateOffset("5m"), ChatColor.RED + "You have been temporarily banned for 5 minutes."));
TFM_BanManager.addUuidBan(
new TFM_Ban(TFM_UuidManager.getUniqueId(player), player.getName(), sender.getName(), TFM_Util.parseDateOffset("5m"), ChatColor.RED + "You have been temporarily banned for 5 minutes."));
TFM_BanManager.addIpBan(
new TFM_Ban(TFM_Util.getIp(player), player.getName(), sender.getName(), TFM_Util.parseDateOffset("5m"), ChatColor.RED + "You have been temporarily banned for 5 minutes."));
player.kickPlayer(ChatColor.RED + "You have been temporarily banned for five minutes. Please read totalfreedom.me for more info.");
return true;

View File

@ -5,13 +5,13 @@ import java.util.Date;
import me.StevenLawson.TotalFreedomMod.TFM_Ban;
import me.StevenLawson.TotalFreedomMod.TFM_BanManager;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import net.minecraft.util.org.apache.commons.lang3.ArrayUtils;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import me.StevenLawson.TotalFreedomMod.TFM_UuidManager;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.Location;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
@CommandParameters(description = "Temporarily ban someone.", usage = "/<command> [playername] [duration] [reason]")
@ -31,7 +31,7 @@ public class Command_tempban extends TFM_Command
if (player == null)
{
playerMsg(TotalFreedomMod.PLAYER_NOT_FOUND);
playerMsg(TFM_Command.PLAYER_NOT_FOUND);
return true;
}
@ -55,7 +55,6 @@ public class Command_tempban extends TFM_Command
message.append(", Reason: \"").append(reason).append("\"");
}
// strike with lightning effect:
final Location targetPos = player.getLocation();
for (int x = -1; x <= 1; x++)
@ -69,8 +68,8 @@ public class Command_tempban extends TFM_Command
TFM_Util.adminAction(sender.getName(), message.toString(), true);
TFM_BanManager.getInstance().addIpBan(new TFM_Ban(TFM_Util.getIp(player), player.getName(), sender.getName(), expires, reason));
TFM_BanManager.getInstance().addUuidBan(new TFM_Ban(player.getUniqueId(), player.getName(), sender.getName(), expires, reason));
TFM_BanManager.addIpBan(new TFM_Ban(TFM_Util.getIp(player), player.getName(), sender.getName(), expires, reason));
TFM_BanManager.addUuidBan(new TFM_Ban(TFM_UuidManager.getUniqueId(player), player.getName(), sender.getName(), expires, reason));
player.kickPlayer(sender.getName() + " - " + message.toString());

View File

@ -1,12 +1,10 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import me.StevenLawson.TotalFreedomMod.TFM_ServerInterface;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_BanManager;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -27,7 +25,7 @@ public class Command_tfbanlist extends TFM_Command
try
{
TFM_Util.adminAction(sender.getName(), "Purging the ban list", true);
TFM_BanManager.getInstance().purgeUuidBans();
TFM_BanManager.purgeUuidBans();
sender.sendMessage(ChatColor.GRAY + "Ban list has been purged.");
}
catch (Exception ex)
@ -44,7 +42,7 @@ public class Command_tfbanlist extends TFM_Command
}
}
playerMsg(TFM_BanManager.getInstance().getUuidBanList().size() + " UUID bans total");
playerMsg(TFM_BanManager.getUuidBanList().size() + " UUID bans total");
return true;
}

View File

@ -1,13 +1,9 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TFM_ServerInterface;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_BanManager;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -28,7 +24,7 @@ public class Command_tfipbanlist extends TFM_Command
{
try
{
TFM_BanManager.getInstance().purgeIpBans();
TFM_BanManager.purgeIpBans();
TFM_Util.adminAction(sender.getName(), "Purging the IP ban list", true);
sender.sendMessage(ChatColor.GRAY + "IP ban list has been purged.");
@ -47,7 +43,7 @@ public class Command_tfipbanlist extends TFM_Command
}
}
playerMsg(TFM_BanManager.getInstance().getIpBanList().size() + " IPbans total");
playerMsg(TFM_BanManager.getIpBanList().size() + " IPbans total");
return true;
}

View File

@ -1,6 +1,7 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.Config.TFM_ConfigEntry;
import me.StevenLawson.TotalFreedomMod.Config.TFM_MainConfig;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_BanManager;
import me.StevenLawson.TotalFreedomMod.TFM_CommandBlocker;
@ -13,6 +14,9 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
/*
* See https://github.com/TotalFreedom/License - This file may not be edited or removed.
*/
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
@CommandParameters(description = "Shows information about TotalFreedomMod or reloads it", usage = "/<command> [reload]")
public class Command_tfm extends TFM_Command
@ -29,15 +33,16 @@ public class Command_tfm extends TFM_Command
if (!TFM_AdminList.isSuperAdmin(sender))
{
playerMsg(TotalFreedomMod.MSG_NO_PERMS);
playerMsg(TFM_Command.MSG_NO_PERMS);
return true;
}
TFM_MainConfig.load();
TFM_AdminList.load();
TFM_PermbanList.load();
TFM_PlayerList.getInstance().load();
TFM_BanManager.getInstance().load();
TFM_CommandBlocker.getInstance().load();
TFM_PlayerList.load();
TFM_BanManager.load();
TFM_CommandBlocker.load();
final String message = String.format("%s v%s.%s reloaded.",
TotalFreedomMod.pluginName,
@ -59,7 +64,7 @@ public class Command_tfm extends TFM_Command
TotalFreedomMod.buildDate,
TotalFreedomMod.buildCreator), ChatColor.GOLD);
playerMsg("Running on " + TFM_ConfigEntry.SERVER_NAME.getString() + ".", ChatColor.GOLD);
playerMsg("Created by Madgeek1450 and DarthSalamon.", ChatColor.GOLD);
playerMsg("Created by Madgeek1450 and Prozza.", ChatColor.GOLD);
playerMsg("Visit " + ChatColor.AQUA + "http://totalfreedom.me/" + ChatColor.GREEN + " for more information.", ChatColor.GREEN);
return true;

View File

@ -3,7 +3,6 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import java.io.File;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -15,22 +14,20 @@ public class Command_tfupdate extends TFM_Command
{
public static final String[] FILES =
{
"http://s3.madgeekonline.com/totalfreedom/BukkitHttpd.jar",
"http://s3.madgeekonline.com/totalfreedom/BukkitTelnet.jar",
"http://s3.madgeekonline.com/totalfreedom/DisguiseCraft.jar",
"http://s3.madgeekonline.com/totalfreedom/Essentials.jar",
"http://s3.madgeekonline.com/totalfreedom/EssentialsSpawn.jar",
"http://s3.madgeekonline.com/totalfreedom/TotalFreedomMod.jar",
"http://s3.madgeekonline.com/totalfreedom/craftbukkit.jar",
"http://s3.madgeekonline.com/totalfreedom/worldedit.jar"
};
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (FILES.length == 0)
{
playerMsg("This command is disabled.");
return true;
}
if (!sender.getName().equalsIgnoreCase("madgeek1450"))
{
playerMsg(TotalFreedomMod.MSG_NO_PERMS);
playerMsg(TFM_Command.MSG_NO_PERMS);
return true;
}

View File

@ -8,8 +8,6 @@ import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
@CommandParameters(description = "Toggles TotalFreedomMod settings", usage = "/<command> [option] [value] [value]")
@ -33,7 +31,6 @@ public class Command_toggle extends TFM_Command
playerMsg("- droptoggle");
playerMsg("- nonuke");
playerMsg("- explosives");
playerMsg("- disguisecraft");
return false;
}
@ -57,7 +54,7 @@ public class Command_toggle extends TFM_Command
if (args[0].equals("fluidspread"))
{
toggle("Fire placement is", TFM_ConfigEntry.ALLOW_FLUID_SPREAD);
toggle("Fluid spread is", TFM_ConfigEntry.ALLOW_FLUID_SPREAD);
return true;
}
@ -69,8 +66,8 @@ public class Command_toggle extends TFM_Command
if (args[0].equals("firespread"))
{
TFM_GameRuleHandler.setGameRule(TFM_GameRule.DO_FIRE_TICK, TFM_ConfigEntry.ALLOW_FIRE_SPREAD.getBoolean());
toggle("Fire spread is", TFM_ConfigEntry.ALLOW_FIRE_SPREAD);
TFM_GameRuleHandler.setGameRule(TFM_GameRule.DO_FIRE_TICK, TFM_ConfigEntry.ALLOW_FIRE_SPREAD.getBoolean());
return true;
}
@ -143,12 +140,11 @@ public class Command_toggle extends TFM_Command
}
catch (NumberFormatException ex)
{
TFM_Util.playerMsg(sender, ex.getMessage());
playerMsg(ex.getMessage());
return true;
}
}
toggle("Explosions are", TFM_ConfigEntry.ALLOW_EXPLOSIONS);
if (TFM_ConfigEntry.ALLOW_EXPLOSIONS.getBoolean())
@ -158,36 +154,11 @@ public class Command_toggle extends TFM_Command
return true;
}
if (args[0].equals("disguisecraft"))
{
final Plugin disguiseCraft = server.getPluginManager().getPlugin("DisguiseCraft");
if (disguiseCraft == null)
{
playerMsg("DisguiseCraft is not installed on this server.");
return true;
}
boolean enabled = disguiseCraft.isEnabled();
TFM_Util.adminAction(sender.getName(), (enabled ? "disa" : "ena") + "bling DisguiseCraft", true);
if (enabled)
{
plugin.getServer().getPluginManager().disablePlugin(disguiseCraft);
}
else
{
plugin.getServer().getPluginManager().enablePlugin(disguiseCraft);
}
return true;
}
return false;
}
private void toggle(String name, TFM_ConfigEntry entry)
{
entry.setBoolean(!entry.getBoolean());
playerMsg(name + " now " + (entry.setBoolean(!entry.getBoolean()) ? "enabled." : "disabled."));
}
}

View File

@ -3,7 +3,7 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.Config.TFM_ConfigEntry;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;

View File

@ -3,7 +3,7 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TFM_DepreciationAggregator;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.Bukkit;
import org.bukkit.Material;
@ -75,7 +75,7 @@ public class Command_trail extends TFM_Command
if (!fromBlock.equals(toBlock))
{
fromBlock.setType(Material.WOOL);
fromBlock.setData((byte) RANDOM.nextInt(16));
TFM_DepreciationAggregator.setData_Block(fromBlock, (byte) RANDOM.nextInt(16));
}
}
}

View File

@ -3,7 +3,6 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.Config.TFM_ConfigEntry;
import me.StevenLawson.TotalFreedomMod.TFM_TwitterHandler;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -18,7 +17,7 @@ public class Command_twitter extends TFM_Command
{
if (!TFM_ConfigEntry.TWITTERBOT_ENABLED.getBoolean())
{
TFM_Util.playerMsg(sender, "TwitterBot has been disabled in config.", ChatColor.RED);
playerMsg("TwitterBot has been disabled in config.", ChatColor.RED);
return true;
}
@ -27,8 +26,6 @@ public class Command_twitter extends TFM_Command
return false;
}
TFM_TwitterHandler twitterbot = TFM_TwitterHandler.getInstance();
if ("set".equals(args[0]))
{
if (args.length != 2)
@ -38,36 +35,36 @@ public class Command_twitter extends TFM_Command
if (args[1].startsWith("@"))
{
TFM_Util.playerMsg(sender, "Please do not prefix your twitter username with '@'");
playerMsg("Please do not prefix your twitter username with '@'");
return true;
}
String reply = twitterbot.setTwitter(sender.getName(), args[1]);
String reply = TFM_TwitterHandler.setTwitter(sender.getName(), args[1]);
if ("ok".equals(reply))
{
TFM_Util.playerMsg(sender, "Your twitter handle has been set to: " + ChatColor.AQUA + "@" + args[1] + ChatColor.GRAY + ".");
playerMsg("Your twitter handle has been set to: " + ChatColor.AQUA + "@" + args[1] + ChatColor.GRAY + ".");
}
else if ("disabled".equals(reply))
{
TFM_Util.playerMsg(sender, "TwitterBot has been temporarily disabled,, please wait until it get re-enabled", ChatColor.RED);
playerMsg("TwitterBot has been temporarily disabled,, please wait until it get re-enabled", ChatColor.RED);
}
else if ("failed".equals(reply))
{
TFM_Util.playerMsg(sender, "There was a problem querying the database, please let a developer know.", ChatColor.RED);
playerMsg("There was a problem querying the database, please let a developer know.", ChatColor.RED);
}
else if ("false".equals(reply))
{
TFM_Util.playerMsg(sender, "There was a problem with the database, please let a developer know.", ChatColor.RED);
playerMsg("There was a problem with the database, please let a developer know.", ChatColor.RED);
}
else if ("cannotauth".equals(reply))
{
TFM_Util.playerMsg(sender, "The database password is incorrect, please let a developer know.", ChatColor.RED);
playerMsg("The database password is incorrect, please let a developer know.", ChatColor.RED);
}
else
{
TFM_Util.playerMsg(sender, "An unknown error occurred, please contact a developer", ChatColor.RED);
TFM_Util.playerMsg(sender, "Response code: " + reply);
playerMsg("An unknown error occurred, please contact a developer", ChatColor.RED);
playerMsg("Response code: " + reply);
}
return true;
}
@ -79,34 +76,34 @@ public class Command_twitter extends TFM_Command
if ("info".equals(args[0]))
{
String reply = twitterbot.getTwitter(sender.getName());
TFM_Util.playerMsg(sender, "-- Twitter Information --", ChatColor.BLUE);
TFM_Util.playerMsg(sender, "Using this feature, you can re-super yourself using twitter.");
TFM_Util.playerMsg(sender, "You can set your twitter handle using " + ChatColor.AQUA + "/twitter set [twittername]");
TFM_Util.playerMsg(sender, "Then, you can verify yourself by tweeting " + ChatColor.AQUA + "@TFUpdates #superme");
String reply = TFM_TwitterHandler.getTwitter(sender.getName());
playerMsg("-- Twitter Information --", ChatColor.BLUE);
playerMsg("Using this feature, you can re-super yourself using twitter.");
playerMsg("You can set your twitter handle using " + ChatColor.AQUA + "/twitter set [twittername]");
playerMsg("Then, you can verify yourself by tweeting " + ChatColor.AQUA + "@TFUpdates #superme");
if ("notfound".equals(reply))
{
TFM_Util.playerMsg(sender, "You currently have " + ChatColor.RED + "no" + ChatColor.BLUE + " Twitter handle set.", ChatColor.BLUE);
playerMsg("You currently have " + ChatColor.RED + "no" + ChatColor.BLUE + " Twitter handle set.", ChatColor.BLUE);
}
else if ("disabled".equals(reply))
{
TFM_Util.playerMsg(sender, "TwitterBot has been temporarily disabled, please wait until re-enabled", ChatColor.RED);
playerMsg("TwitterBot has been temporarily disabled, please wait until re-enabled", ChatColor.RED);
}
else if ("failed".equals(reply))
{
TFM_Util.playerMsg(sender, "There was a problem querying the database, please let a developer know.", ChatColor.RED);
playerMsg("There was a problem querying the database, please let a developer know.", ChatColor.RED);
}
else if ("false".equals(reply))
{
TFM_Util.playerMsg(sender, "There was a problem with the database, please let a developer know.", ChatColor.RED);
playerMsg("There was a problem with the database, please let a developer know.", ChatColor.RED);
}
else if ("cannotauth".equals(reply))
{
TFM_Util.playerMsg(sender, "The database password is incorrect, please let a developer know.", ChatColor.RED);
playerMsg("The database password is incorrect, please let a developer know.", ChatColor.RED);
}
else
{
TFM_Util.playerMsg(sender, "Your current twitter handle: " + ChatColor.AQUA + "@" + reply + ChatColor.BLUE + ".", ChatColor.BLUE);
playerMsg("Your current twitter handle: " + ChatColor.AQUA + "@" + reply + ChatColor.BLUE + ".", ChatColor.BLUE);
}
return true;
}
@ -115,13 +112,13 @@ public class Command_twitter extends TFM_Command
{
if (!sender.getName().equalsIgnoreCase("DarthSalamon"))
{
sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS);
sender.sendMessage(TFM_Command.MSG_NO_PERMS);
return true;
}
TFM_Util.adminAction(sender.getName(), ("enable".equals(args[0]) ? "Ena" : "Disa") + "bling Twitterbot", true);
String reply = twitterbot.setEnabled(args[0] + "d");
TFM_Util.playerMsg(sender, "Reply: " + reply);
String reply = TFM_TwitterHandler.setEnabled(args[0] + "d");
playerMsg("Reply: " + reply);
return true;
}

View File

@ -1,22 +0,0 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.Bridge.TFM_DisguiseCraftBridge;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
@CommandParameters(description = "Undisguises all players", usage = "/<command>")
public class Command_uall extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
TFM_Util.adminAction(sender.getName(), "Undisguising all players", true);
TFM_DisguiseCraftBridge.undisguiseAllPlayers();
return true;
}
}

View File

@ -0,0 +1,114 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import me.StevenLawson.TotalFreedomMod.TFM_Admin;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_Player;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerList;
import me.StevenLawson.TotalFreedomMod.TFM_UuidManager;
import me.StevenLawson.TotalFreedomMod.TFM_UuidManager.TFM_UuidResolver;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_CONSOLE)
@CommandParameters(description = "Provides uuid tools", usage = "/<command> <purge | recalculate>")
public class Command_uuid extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length != 1)
{
return false;
}
if ("purge".equals(args[0]))
{
playerMsg("Purged " + TFM_UuidManager.purge() + " cached UUIDs.");
return true;
}
if ("recalculate".equals(args[0]))
{
playerMsg("Recalculating UUIDs...");
// Playerlist uuids
final Set<TFM_Player> players = TFM_PlayerList.getAllPlayers();
final List<String> names = new ArrayList<String>();
for (TFM_Player player : players)
{
names.add(player.getLastLoginName());
}
final Map<String, UUID> playerUuids = new TFM_UuidResolver(names).call();
int updated = 0;
for (String name : playerUuids.keySet())
{
for (TFM_Player player : players)
{
if (!player.getLastLoginName().equalsIgnoreCase(name))
{
continue;
}
if (player.getUniqueId().equals(playerUuids.get(name)))
{
continue;
}
TFM_PlayerList.setUniqueId(player, playerUuids.get(name));
TFM_UuidManager.rawSetUUID(name, playerUuids.get(name));
updated++;
break;
}
}
playerMsg("Recalculated " + updated + " player UUIDs");
names.clear();
// Adminlist UUIDs
final Set<TFM_Admin> admins = TFM_AdminList.getAllAdmins();
for (TFM_Admin admin : admins)
{
names.add(admin.getLastLoginName());
}
final Map<String, UUID> adminUuids = new TFM_UuidResolver(names).call();
updated = 0;
for (String name : adminUuids.keySet())
{
for (TFM_Admin admin : admins)
{
if (!admin.getLastLoginName().equalsIgnoreCase(name))
{
continue;
}
if (admin.getUniqueId().equals(adminUuids.get(name)))
{
continue;
}
TFM_AdminList.setUuid(admin, admin.getUniqueId(), adminUuids.get(name));
TFM_UuidManager.rawSetUUID(name, adminUuids.get(name));
updated++;
break;
}
}
playerMsg("Recalculated " + updated + " admin UUIDs");
return true;
}
return false;
}
}

View File

@ -0,0 +1,56 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH, blockHostConsole = true)
@CommandParameters(description = "Warns a player.", usage = "/<command> <player> <reason>")
public class Command_warn extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length < 2)
{
return false;
}
Player player = getPlayer(args[0]);
if (player == null)
{
playerMsg(PLAYER_NOT_FOUND);
return true;
}
if (sender instanceof Player)
{
if (player.equals(sender_p))
{
playerMsg(ChatColor.RED + "Please, don't try to warn yourself.");
return true;
}
}
if (TFM_AdminList.isSuperAdmin(player))
{
playerMsg(ChatColor.RED + "You can not warn admins");
return true;
}
String warnReason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
playerMsg(ChatColor.RED + "[WARNING] " + warnReason);
playerMsg(ChatColor.GREEN + "You have successfully warned " + player.getName());
TFM_PlayerData.getPlayerData(player).incrementWarnings();
return true;
}
}

View File

@ -1,9 +1,9 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_ServerInterface;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_DepreciationAggregator;
import me.StevenLawson.TotalFreedomMod.TFM_ServerInterface;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -58,7 +58,7 @@ public class Command_whitelist extends TFM_Command
// all commands past this line are superadmin-only
if (!(senderIsConsole || TFM_AdminList.isSuperAdmin(sender)))
{
sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS);
sender.sendMessage(TFM_Command.MSG_NO_PERMS);
return true;
}
@ -92,7 +92,7 @@ public class Command_whitelist extends TFM_Command
if (player == null)
{
player = server.getOfflinePlayer(search_name);
player = TFM_DepreciationAggregator.getOfflinePlayer(server, search_name);
}
TFM_Util.adminAction(sender.getName(), "Adding " + player.getName() + " to the whitelist.", false);
@ -114,7 +114,7 @@ public class Command_whitelist extends TFM_Command
if (player == null)
{
player = server.getOfflinePlayer(search_name);
player = TFM_DepreciationAggregator.getOfflinePlayer(server, search_name);
}
if (player.isWhitelisted())
@ -152,7 +152,7 @@ public class Command_whitelist extends TFM_Command
// all commands past this line are console/telnet only
if (!senderIsConsole)
{
sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS);
sender.sendMessage(TFM_Command.MSG_NO_PERMS);
return true;
}

View File

@ -3,7 +3,8 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import me.StevenLawson.TotalFreedomMod.TFM_DepreciationAggregator;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
@ -11,53 +12,46 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
@CommandParameters(description = "See who has a block and optionally smite", usage = "/<command> <item> [smite]", aliases = "wh")
@CommandParameters(description = "See who has a block and optionally smite.", usage = "/<command> <item> [smite]", aliases = "wh")
public class Command_whohas extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
boolean smite = false;
if (args.length != 1)
{
if (args.length == 2 && args[1].equals("smite"))
{
smite = true;
}
else
if (args.length < 1)
{
return false;
}
}
Material material = Material.matchMaterial(args[0]);
final boolean doSmite = args.length >= 2 && "smite".equalsIgnoreCase(args[1]);
final String materialName = args[0];
Material material = Material.matchMaterial(materialName);
if (material == null)
{
try
{
material = Material.getMaterial(Integer.parseInt(args[0]));
material = TFM_DepreciationAggregator.getMaterial(Integer.parseInt(materialName));
}
catch (NumberFormatException ex)
{
}
}
if (material == null)
{
playerMsg("Invalid block: " + args[0], ChatColor.RED);
playerMsg("Invalid block: " + materialName, ChatColor.RED);
return true;
}
}
List<String> players = new ArrayList<String>();
final List<String> players = new ArrayList<String>();
for (Player player : server.getOnlinePlayers())
for (final Player player : server.getOnlinePlayers())
{
if (player.getInventory().contains(material))
{
players.add(player.getName());
if (smite & !TFM_AdminList.isSuperAdmin(player))
if (doSmite && !TFM_AdminList.isSuperAdmin(player))
{
Command_smite.smite(player);
}
@ -74,6 +68,5 @@ public class Command_whohas extends TFM_Command
}
return true;
}
}

View File

@ -1,6 +1,7 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import me.StevenLawson.TotalFreedomMod.TFM_CommandBlocker;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -39,11 +40,17 @@ public class Command_wildcard extends TFM_Command
return true;
}
String base_command = StringUtils.join(args, " ");
String baseCommand = StringUtils.join(args, " ");
if (TFM_CommandBlocker.isCommandBlocked(baseCommand, sender))
{
// CommandBlocker handles messages and broadcasts
return true;
}
for (Player player : server.getOnlinePlayers())
{
String out_command = base_command.replaceAll("\\x3f", player.getName());
String out_command = baseCommand.replaceAll("\\x3f", player.getName());
playerMsg("Running Command: " + out_command);
server.dispatchCommand(sender, out_command);
}

View File

@ -1,9 +1,9 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.List;
import java.util.Collection;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.ChatColor;
@ -14,6 +14,11 @@ import org.bukkit.entity.Player;
public abstract class TFM_Command
{
public static final String MSG_NO_PERMS = ChatColor.YELLOW + "You do not have permission to use this command.";
public static final String YOU_ARE_OP = ChatColor.YELLOW + "You are now op!";
public static final String YOU_ARE_NOT_OP = ChatColor.YELLOW + "You are no longer op!";
public static final String NOT_FROM_CONSOLE = "This command may not be used from the console.";
public static final String PLAYER_NOT_FOUND = ChatColor.GRAY + "Player not found!";
protected TotalFreedomMod plugin;
protected Server server;
private CommandSender commandSender;
@ -134,23 +139,52 @@ public abstract class TFM_Command
return true;
}
public Player getPlayer(final String partialname)
public Player getPlayer(final String partialName)
{
List<Player> matches = server.matchPlayer(partialname);
if (matches.isEmpty())
return getPlayer(partialName, false);
}
public Player getPlayer(final String partialName, final boolean exact)
{
for (Player player : server.getOnlinePlayers())
if (partialName == null || partialName.isEmpty())
{
if (player.getDisplayName().toLowerCase().contains(partialname.toLowerCase()))
return null;
}
final Collection<? extends Player> players = server.getOnlinePlayers();
// Check exact matches first.
for (final Player player : players)
{
if (partialName.equalsIgnoreCase(player.getName()))
{
return player;
}
}
if (exact)
{
return null;
}
else
// Then check partial matches in name.
for (final Player player : players)
{
return matches.get(0);
if (player.getName().toLowerCase().contains(partialName.toLowerCase()))
{
return player;
}
}
// Then check partial matches in display name.
for (final Player player : players)
{
if (player.getDisplayName().toLowerCase().contains(partialName.toLowerCase()))
{
return player;
}
}
return null;
}
}

View File

@ -2,7 +2,7 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -40,7 +40,6 @@ public class TFM_CommandHandler
StringUtils.join(args, " ")), true);
}
final TFM_Command dispatcher;
try
{
@ -62,7 +61,7 @@ public class TFM_CommandHandler
if (!dispatcher.senderHasPermission())
{
sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS);
sender.sendMessage(TFM_Command.MSG_NO_PERMS);
return true;
}

View File

@ -25,19 +25,20 @@ import org.bukkit.plugin.Plugin;
public class TFM_CommandLoader
{
public static final Pattern COMMAND_PATTERN;
private final List<TFM_CommandInfo> commandList;
private static final List<TFM_CommandInfo> COMMAND_LIST;
static
{
COMMAND_PATTERN = Pattern.compile(TFM_CommandHandler.COMMAND_PATH.replace('.', '/') + "/(" + TFM_CommandHandler.COMMAND_PREFIX + "[^\\$]+)\\.class");
COMMAND_LIST = new ArrayList<TFM_CommandInfo>();
}
private TFM_CommandLoader()
{
commandList = new ArrayList<TFM_CommandInfo>();
throw new AssertionError();
}
public void scan()
public static void scan()
{
CommandMap commandMap = getCommandMap();
if (commandMap == null)
@ -45,10 +46,10 @@ public class TFM_CommandLoader
TFM_Log.severe("Error loading commandMap.");
return;
}
commandList.clear();
commandList.addAll(getCommands());
COMMAND_LIST.clear();
COMMAND_LIST.addAll(getCommands());
for (TFM_CommandInfo commandInfo : commandList)
for (TFM_CommandInfo commandInfo : COMMAND_LIST)
{
TFM_DynamicCommand dynamicCommand = new TFM_DynamicCommand(commandInfo);
@ -64,7 +65,7 @@ public class TFM_CommandLoader
TFM_Log.info("TFM commands loaded.");
}
public void unregisterCommand(String commandName)
public static void unregisterCommand(String commandName)
{
CommandMap commandMap = getCommandMap();
if (commandMap != null)
@ -77,7 +78,7 @@ public class TFM_CommandLoader
}
}
public void unregisterCommand(Command command, CommandMap commandMap)
public static void unregisterCommand(Command command, CommandMap commandMap)
{
try
{
@ -99,9 +100,9 @@ public class TFM_CommandLoader
}
@SuppressWarnings("unchecked")
public CommandMap getCommandMap()
public static CommandMap getCommandMap()
{
Object commandMap = TFM_Util.getField(Bukkit.getServer().getPluginManager(), "commandMap");
final Object commandMap = TFM_Util.getField(Bukkit.getServer().getPluginManager(), "commandMap");
if (commandMap != null)
{
if (commandMap instanceof CommandMap)
@ -113,7 +114,7 @@ public class TFM_CommandLoader
}
@SuppressWarnings("unchecked")
public HashMap<String, Command> getKnownCommands(CommandMap commandMap)
public static HashMap<String, Command> getKnownCommands(CommandMap commandMap)
{
Object knownCommands = TFM_Util.getField(commandMap, "knownCommands");
if (knownCommands != null)
@ -280,7 +281,7 @@ public class TFM_CommandLoader
}
}
public class TFM_DynamicCommand extends Command implements PluginIdentifiableCommand
public static class TFM_DynamicCommand extends Command implements PluginIdentifiableCommand
{
private final TFM_CommandInfo commandInfo;
@ -332,14 +333,4 @@ public class TFM_CommandLoader
return commandInfo;
}
}
public static TFM_CommandLoader getInstance()
{
return TFM_CommandScannerHolder.INSTANCE;
}
private static class TFM_CommandScannerHolder
{
private static final TFM_CommandLoader INSTANCE = new TFM_CommandLoader();
}
}

Some files were not shown because too many files have changed in this diff Show More