1
0
mirror of https://github.com/essentials/Essentials.git synced 2025-09-06 12:40:45 +02:00

Compare commits

...

1882 Commits

Author SHA1 Message Date
Chris Ward
891f595706 Typo 2013-12-01 18:07:40 +11:00
Chris Ward
b42b5eadc9 Add optional 2nd arg to broadcast format.
50dca9abf5
2013-12-01 17:33:44 +11:00
Chris Ward
e49b2c5508 BuildAll -> EssentialsParent 2013-12-01 17:08:32 +11:00
Chris Ward
f8e100f5b7 Trim long /gc output, add /gc all
63ce4a99b9
2013-12-01 17:04:42 +11:00
Chris Ward
74dcb8e47a TODO <3 2013-12-01 16:58:28 +11:00
Chris Ward
03e9a0d290 Adds essentials.mute.notify
78e6da9504
2013-12-01 16:29:17 +11:00
Chris Ward
88ed9f5d41 Couple of extra /helpop aliases.
4807fb39e5
2013-12-01 15:20:20 +11:00
Chris Ward
2bd28952e2 Update items.csv 2013-12-01 14:58:32 +11:00
Chris Ward
25635d5abf New permission: essentials.sethome.bed
Players with this permission will force a bed home updating if daytime beds are enabled.
2d4a07b95
2013-12-01 14:51:16 +11:00
Chris Ward
fa50a3302b Update POM to Bukkit 1.7 2013-12-01 14:49:45 +11:00
Chris Ward
a458096123 Fix compilation 2013-12-01 14:49:14 +11:00
Iaccidentally
2af5229d4a Disregard women, acquire currency. 2013-06-09 16:49:02 -04:00
Iaccidentally
fc0b005ae1 Merge branch 'master' of https://github.com/essentials/Essentials 2013-05-26 10:51:22 -04:00
Iaccidentally
f81688b25f Cleanup and more API work 2013-05-26 10:50:58 -04:00
snowleo
43e7a6938b Update language files 2013-05-26 14:35:07 +02:00
Iaccidentally
cf3ab408b4 More work on the API 2013-05-25 18:52:17 -04:00
Iaccidentally
bc29f9d4b1 More API work 2013-05-25 15:40:44 -04:00
Iaccidentally
1129a6af88 Lets get this API party started. I invited the JavaDucks. (In all seriousness this is mostly just adding blank javadocs and a few small refactorings) 2013-05-25 15:09:18 -04:00
GunfighterJ
03c47f1f8a [Port] Check initial direction when looking for a safe teleport spot 2013-05-10 11:29:37 -05:00
Iaccidentally
b55b358cce Merge pull request #454 from Riaku/master
move commandAntioch to extras
2013-05-04 14:03:40 -07:00
Iaccidentally
59f91be43a Merge pull request #470 from drtshock/master
More logging!
2013-05-02 20:24:20 -07:00
drtshock
3ff12f6bf5 More logging! 2013-05-02 22:19:28 -05:00
Iaccidentally
c16b09a9ea Merge pull request #469 from drtshock/master
[Fixed] Use proper logging
2013-05-02 13:04:20 -07:00
drtshock
f326d0ad0c Use proper logging. 2013-05-02 14:21:30 -05:00
Iaccidentally
6807f878ad Update pom for 1.5.2 2013-05-02 11:51:00 -04:00
Riaku
27eb723fa0 change itemdb output to use locale
added ItemDatabaseResponse to messages.properties
2013-04-19 16:35:48 -05:00
Riaku
8c5620667a moving commandAntioch to extras 2013-04-19 14:59:39 -05:00
Riaku
f89306c42c adding /antioch command to stop error
http://pastebin.com/gJBJTVPd
no new permission nodes.
no new locales.
this is an easter egg for OPs so the messages probably shouldn't be in locale.
2013-04-19 14:48:46 -05:00
snowleo
fa7d89a5e9 Update pom.xml 2013-04-19 22:31:16 +03:00
Iaccidentally
4cf0843dd6 [3.0] Port kill exempt to 3.0 2013-04-19 14:48:45 -04:00
Iaccidentally
a60573a8ac [3.0] Port dispenser blacklist 2013-04-16 18:06:27 -04:00
Iaccidentally
45d19e18f3 [3.0] Update pom.xml for bukkit 1.5.1-r0.2 2013-04-16 18:05:52 -04:00
Iaccidentally
dc61159009 [PORT] port "update user activity on firing a bow" to 3.x 2013-04-16 16:18:06 -04:00
Iaccidentally
1b8b6e2d0b [3.0] We won't be needing these anymore 2013-04-08 20:04:48 -04:00
Chris Ward
59f3ec2519 Remove newline 2013-04-08 00:17:36 +10:00
snowleo
dbf0125eec Format everything using Netbeans 2013-04-07 15:00:40 +02:00
Chris Ward
ee98136fc5 Fix file modes, indents 2013-04-07 20:36:45 +10:00
Chris Ward
bf3e03fdaf Code Cleanup 2013-04-07 20:35:57 +10:00
snowleo
4d8543bb3a Fixing spacing again, and updating keys.pot 2013-04-06 16:23:20 +02:00
snowleo
0387d18ce2 Use correct translations with color 2013-04-06 16:09:02 +02:00
Chris Ward
96342bc6ce Whoops, breaking the file modes again 2013-04-07 01:00:57 +11:00
Chris Ward
0a892ade1d Update Bukkit to Beta build. 2013-04-06 23:45:52 +11:00
Chris Ward
4cf954d90b Fix spelling mistakes 2013-04-06 23:43:09 +11:00
snowleo
5826366dd2 Overload _( ) method to prevent creation of empty array. 2013-04-06 13:45:31 +02:00
snowleo
fd8ec9da7c Fix some spacing 2013-04-06 13:32:36 +02:00
snowleo
96ce631836 Update default messages to latest from 2.9 branch 2013-04-06 05:45:36 +02:00
snowleo
2754da89cb Let it compile again 2013-04-06 04:20:05 +02:00
snowleo
fd1c7f4fcc Moving all default messages back to the code, where they should be
Also tweaking I18n class and YamlStorageWriter a bit
2013-04-06 04:05:37 +02:00
snowleo
d17d7153dc Update README.markdown 2013-04-06 01:52:13 +03:00
snowleo
914b49a1d8 Update README.markdown 2013-04-06 01:51:40 +03:00
snowleo
78ecf273e7 Update README.markdown 2013-04-06 01:33:48 +03:00
Paul A.
4a3d496602 Merge pull request #430 from JamieSinn/master
[Feature]Healing other players extinguishes fire
2013-04-04 13:54:07 -07:00
Paul A.
39652d9985 Merge pull request #437 from Riaku/master
regex Check on banip
essentials.repair.all permission node
2013-04-04 13:52:12 -07:00
ementalo
d377c5cae7 [Fix] Switch around the if statement for enabling metrics 2013-04-04 21:45:07 +01:00
ementalo
3d2106e198 Remove GroupBridge from 3.0 2013-04-04 20:58:17 +01:00
Riaku
d646211613 adding new permission node:
essentials.repair.all
2013-04-04 12:18:22 -05:00
Riaku
d20aa0504e regex check on banip command format if player name is not found 2013-04-04 08:03:06 -05:00
Paul A.
c78ec4fed2 Merge pull request #436 from GunfighterJ/master
[Fix] NPE on ptime from console
2013-04-02 08:34:08 -07:00
GunfighterJ
fe51c55d0a [Fix]NPE on ptime from console 2013-04-02 10:26:49 -05:00
snowleo
5601cb7e28 Sorted pot is better for git 2013-04-02 00:01:08 +02:00
snowleo
29e430baa4 We don't need these files 2013-04-01 23:25:26 +02:00
snowleo
e669fdc4ee So you like pot? 2013-04-01 23:24:18 +02:00
Iaccidentally
4131a36765 Merge pull request #433 from GunfighterJ/master
More tab fixes
2013-04-01 14:23:06 -07:00
GunfighterJ
e78db0963c More tab fixes 2013-04-01 16:19:50 -05:00
Iaccidentally
cd50ee2732 Merge pull request #432 from GunfighterJ/master
Fix spaces into tabs.
2013-04-01 14:18:16 -07:00
GunfighterJ
9288daec8d Fix spaces into tabs.
Because no one told me
2013-04-01 16:16:48 -05:00
JamieSinn
e4e07cfc3d Healing others puts them out
Extinguishes the fire on another player if you do /heal <player>
2013-04-01 17:50:34 -03:00
snowleo
d91b174f96 Actually fix stuff and not break it 2013-04-01 20:33:23 +02:00
snowleo
7e92c35500 Make this test actually work 2013-04-01 20:33:22 +02:00
Iaccidentally
3447bdf0ad Merge pull request #429 from GunfighterJ/master
[Fix] Update Essentials Protect
2013-04-01 10:54:25 -07:00
snowleo
9494e94f7b Fix Travis builds of master branch 2013-04-01 19:48:54 +02:00
GunfighterJ
9a81b905a1 [Fix] Update protection settings
Removed unnecessary return statements
Waiting on bukkit bug for item frames and paintings
2013-04-01 11:59:05 -05:00
snowleo
3a4f7ae42c Fix reloading of AntiBuild 2013-03-31 11:24:18 +03:00
snowleo
726d659afc Fix reloading of Protect 2013-03-31 11:22:11 +03:00
Iaccidentally
774dd1c186 Merge pull request #410 from GunfighterJ/master
Port spawnmob changes to 3.x
2013-03-23 19:18:01 -07:00
GunfighterJ
a903cb5323 Port spawnmob changes to 3.x 2013-03-23 09:24:09 -05:00
Paul A.
1e8a29c064 Restore GM in pom 2013-03-22 10:52:43 +00:00
Paul A.
4dc1931f7e Rename travis.yml to .travis.yml 2013-03-22 10:43:27 +00:00
Paul A.
976ddaa487 Create travis.yml 2013-03-22 10:34:48 +00:00
Iaccidentally
2a64605fb9 Merge pull request #405 from GunfighterJ/master
Book with a lowercase b
2013-03-21 18:50:01 -07:00
GunfighterJ
bdaef6e2cf Book with a lowercase b 2013-03-21 19:57:13 -05:00
ementalo
e761967ebf Add firework command.
Add missing book.txt.
Update permissions.
2013-03-22 00:39:43 +00:00
ementalo
210c898dd6 Add Book command
Update pom
2013-03-21 23:49:58 +00:00
ementalo
91653847f5 port 7337b86 - pipe for linebreak 2013-03-21 23:21:07 +00:00
KHobbits
2711bdacf4 Merge pull request #386 from gmfreaky/patch-1
Keep player orientation when teleporting
2013-03-16 05:14:11 -07:00
gmfreaky
7901f6e9b9 Keep player orientation when teleporting
When no pitch/yaw was specified, take the current pitch/yaw of the player.
2013-03-15 17:31:54 +01:00
snowleo
e5b26fc061 Fixing some bugs in 3.0 2013-03-03 14:48:57 +01:00
KHobbits
af93487eef Merge pull request #306 from Riaku/master
per-group permissions attempt#2
2013-02-28 05:25:24 -08:00
ementalo
46b721c2a7 [Protect] Prevent creepers from breaking paintings if their explosions are disabled. 2013-02-25 22:43:05 +00:00
Riaku
6e13eb7070 adding per-group teleport permissions
node: essentials.teleport.groups.<groupname>
config: per-group-teleport: false
2013-02-08 04:53:12 -06:00
Iaccidentally
b2ff27cde2 Revert "adding per-group teleport permissions" 2013-02-06 18:53:14 -05:00
Iaccidentally
770830140d Merge pull request #305 from Riaku/master
Adding per-group teleport permissions :: will clean up later if needed.
2013-02-06 15:46:32 -08:00
Riaku
fbc8167ea9 adding per-group teleport permissions 2013-02-07 16:41:26 -06:00
Chris Ward
fa20d24957 Revert "PircBotX"
This reverts commit bb1710bb15.
2013-02-02 19:11:12 +11:00
Chris Ward
bb1710bb15 PircBotX 2013-02-02 18:51:22 +11:00
Chris Ward
7816916a8e Add tempban limit config option with matching exempt node. Console override to tempban.exempt 2013-02-02 18:45:32 +11:00
md_5
5996d645f4 Normalize file modes, please do not change without reason. 2013-02-02 18:08:22 +11:00
Chris Ward
2a87c4fe60 Fix maven shade 2013-02-02 17:16:56 +11:00
Chris Ward
0cb6d90bb3 Typo 2013-02-02 16:38:51 +11:00
Iaccidentally
5f480a5da5 Update pom.xml for 1.4.7 R1 :: Replace deprecated scheduleAsyncDelayedTask 2013-01-31 19:12:04 -05:00
Iaccidentally
d8657b3e00 Update heal in 3.0 2013-01-26 17:14:38 -05:00
Iaccidentally
2af3a234ad Update pom for bukkit 1.4.7-R0.1 2013-01-17 14:20:19 -05:00
Iaccidentally
fa3f4f92f4 Remove all instances of transient. (properly formatted this time!) 2013-01-14 20:38:11 -05:00
Iaccidentally
2a097530e5 Revert "Remove Transient :: Formatting Cleanup" 2013-01-14 20:06:28 -05:00
Iaccidentally
8e54bf13b2 Remove Transient :: Formatting Cleanup 2013-01-14 20:02:22 -05:00
Iaccidentally
232052b7d2 More Cleanup :: add TODO comments 2013-01-14 18:18:24 -05:00
md_5
4818bec0d8 Update the build system slightly to use embedded libraries. 2013-01-13 09:51:23 +11:00
md_5
2a26e46034 While we are at it, lets remove a file that never should have been added. 2013-01-12 15:12:56 +11:00
Chris Ward
ca863b8332 Fix GM line endings 2013-01-12 15:05:50 +11:00
Iaccidentally
eb7cedd6fd Revert "Remove GM from 3.0"
This reverts commit a4c93fef05.
2013-01-11 19:59:22 -05:00
Iaccidentally
859ca6e919 Cleanup :: Standardize import organization :: lots of comments :: remove unused eco systems 2013-01-11 19:56:02 -05:00
Iaccidentally
72ab21ac19 Lots of cleanup :: remove some unused variables :: add comments for future reference 2013-01-11 14:24:04 -05:00
Iaccidentally
d7c29ff0fd Merge pull request #255 from GunfighterJ/patch-1
Fixes link between Item Frames and Paintings when breaking :: Note: Does not currently work, needs later testing when 3.0 is more complete
2013-01-11 11:03:05 -08:00
GunfighterJ
502d0197c6 Fixes link between Item Frames and Paintings when breaking 2013-01-11 12:34:17 -06:00
Chris Ward
a4c93fef05 Remove GM from 3.0 2013-01-11 21:31:51 +11:00
Iaccidentally
cb819f37e9 porting e73983649f :: Ban cleanup 2013-01-09 16:41:05 -05:00
Iaccidentally
00237ae74f porting 341cb89bb7 :: Multiline kick messages and tempban countdown. 2013-01-09 16:31:24 -05:00
Chris Ward
4d4a3142f7 Add more items to Fireball command. Add /delay option to spawner
b04fa82be2
2988db08ca
2013-01-10 03:51:09 +11:00
Chris Ward
7381ec79d8 Expand plugin.yml fireball aliases.
368c33a843
2013-01-10 00:41:46 +11:00
Chris Ward
0d0c007c85 Fire a few extra entities from /fireball
c210e8730b
2013-01-10 00:41:32 +11:00
Chris Ward
4bcbd7350a Fix an import 2013-01-10 00:41:12 +11:00
Chris Ward
e86adc48e6 Unnecessary RegEx is unnecessary. Also storing Patterns in their classes for reuse.
437b01e371
c4e10da646
2013-01-10 00:40:54 +11:00
Chris Ward
f47c504202 Throw an error if user doesn't have permission to use kit sign.
f930ff48a2
2013-01-09 23:15:19 +11:00
Chris Ward
d0237a7fb4 Fix sign break bug
0937a35470
2013-01-09 22:53:55 +11:00
Chris Ward
e9e3d3b578 New permission: essentials.fly.safelogin - Players with this command automatically switch to fly mode if they login whilst floating in the air.
c6dd921f0c
2013-01-09 22:47:27 +11:00
Chris Ward
70aad4a954 New perm: essentials.vanish.effect - People with this effect will get the potion effect applied while vanished.
63e622374d
2013-01-09 22:29:39 +11:00
Chris Ward
1ccbf8dd68 Use the right formatter in XMPP
9ecb501e00
2013-01-09 22:05:12 +11:00
Chris Ward
dca47a117d Set default tpa timeout to 2 minutes.
3725a5e6d4
2013-01-09 20:25:54 +11:00
Chris Ward
688cfca625 Make /enchant only show valid enchantments for the item.
d551e8c6d2
2013-01-09 20:22:37 +11:00
Chris Ward
9a0b3d0db1 Add tpdeny message to /tpahere
e5fc579071
2013-01-09 20:15:03 +11:00
Chris Ward
bef0ed7cad Make seen statuses only show when true
c97763c3c8
2013-01-09 20:13:44 +11:00
Chris Ward
9222be9145 Log target plugin in debug mode for altcmd
617959a11b
2013-01-09 20:10:22 +11:00
Chris Ward
0177eca6e0 Final all the things - Recipe
a480091617
2013-01-09 20:07:36 +11:00
Chris Ward
556f218cbd Add a little bit of extra information to /seen, this will show when user is online.
ce78125028
2013-01-09 19:17:11 +11:00
Chris Ward
d19ffc6cc0 Warn other party when teleport fails after tpaccept
10b972bd07
2013-01-09 18:47:35 +11:00
Chris Ward
530dfd9129 Missed a spot 2013-01-09 01:11:14 +11:00
Chris Ward
9f5ea1bd39 Fix compilation. Finish InventoryWorkaround update. 2013-01-09 01:07:14 +11:00
Chris Ward
9b58760bb4 Revert "Fix Spawns/Jail loading"
This reverts commit 55877e1d1a.
2013-01-09 00:48:04 +11:00
Chris Ward
a8ecedab08 Redundant tpaccept cost check
b2d68fe213
2013-01-09 00:24:26 +11:00
Chris Ward
740c5dc712 Don't use broken CB methods
f125ac3b4a
2013-01-09 00:20:24 +11:00
Chris Ward
8a666d2467 Fix currency display in MOTD
b28db7e435
2013-01-09 00:17:27 +11:00
Chris Ward
b4ea7e66b1 Force people to use latest CB version
3ea3d18922
2013-01-09 00:06:12 +11:00
Chris Ward
55877e1d1a Fix Spawns/Jail loading
3faedec602
2013-01-09 00:00:12 +11:00
Chris Ward
bd4247b342 Update Inventory Workaround to latest version
2a88a314ce
2013-01-08 23:56:23 +11:00
Chris Ward
a50eb2c2c4 Update Recipe command 2013-01-08 23:16:15 +11:00
Chris Ward
02a0fb4f81 Fix deprecation nag exception 2013-01-08 22:57:48 +11:00
Iaccidentally
d328dcd901 Update pom.xml to 1.4.6 R0.3 :: Update Antibuild to use HangingBreakByEntityEvent instead of deprecated PaintingBreakByEntityEvent 2013-01-02 18:37:11 -05:00
snowleo
279e3f6f47 Cleanup 2013-01-01 23:54:22 +01:00
snowleo
bca953a96e Cleanup 2013-01-01 23:17:34 +01:00
snowleo
3c39ee58e0 clean EnumConverter 2013-01-01 23:00:35 +01:00
snowleo
32c4950059 WIP Converters
Only Integer and Enum for now, open for comments
2013-01-01 22:53:03 +01:00
Alexander Schepp
72c5ab8fd3 Merge pull request #238 from gravypod/patch-3
Fixing snowleo's comments on my last PR
2013-01-01 08:28:27 -08:00
gravypod
755b494e10 Fix copying block data 2013-01-01 11:24:16 -05:00
gravypod
2725a5960f Fixing snowleo's comments on my last PR 2013-01-01 11:17:04 -05:00
Alexander Schepp
b827aa1a00 Merge pull request #237 from gravypod/patch-3
Fix an NPE
2013-01-01 06:48:07 -08:00
gravypod
45679c755e Update Essentials/src/net/ess3/listener/EssentialsPlayerListener.java 2012-12-31 11:14:01 -05:00
gravypod
b35ec5ad2d Fix an NPE
Player dies, clicks title screen, logs in, respawns, NPE thrown.
2012-12-31 11:10:38 -05:00
KHobbits
8661927599 Merge gravy's pull and reformat code 2012-12-31 02:28:52 +00:00
gravypod
a6b83ca260 Updates, fixes, speedups and more 2012-12-30 20:29:37 -05:00
Chris Ward
67a6971e5b Fix missing import @gravypod 2012-12-30 14:18:01 +11:00
Chris Ward
72b1b90be4 Merge pull request #231 from gravypod/patch-4
Less objects and moar finals
2012-12-29 19:07:20 -08:00
Chris Ward
1e2d52a5fe Merge pull request #232 from gravypod/patch-5
Create less objects, store a copy of player
2012-12-29 19:07:11 -08:00
gravypod
2a3b5983e7 Create less objects, store a copy of player 2012-12-29 20:27:38 -05:00
gravypod
7c9c79a9ed Less objects and moar finals 2012-12-29 20:23:35 -05:00
Iaccidentally
2c1414e706 Merge pull request #230 from keybordpiano459/master
Fixed a typo in the config.yml
2012-12-29 16:37:50 -08:00
keybordpiano459
0bd3542f5b Another typo fix 2012-12-29 08:16:02 -05:00
Chris Ward
7df0802e88 Fix indents, file perms (sorry! XD) 2012-12-19 22:36:37 +11:00
Chris Ward
9b69334eea Add /recipe command 2012-12-19 22:06:03 +11:00
KHobbits
85adc3df14 Merge pull request #211 from chrisgward/patch-1
i18n
2012-12-14 05:34:34 -08:00
KHobbits
c947de2830 Merge pull request #213 from chrisgward/patch-2
Fix bans, add console override to exempt node
2012-12-14 05:33:40 -08:00
Chris Ward
69fca5c251 Fix bans, add console override to exempt node 2012-12-14 20:55:54 +11:00
Chris Ward
7a33087cba i18n 2012-12-14 12:26:08 +11:00
KHobbits
c5dccc5229 General cleanup 2012-12-02 02:54:32 +00:00
KHobbits
ce25abc3d8 Make abstract methods abstract 2012-12-02 02:26:50 +00:00
KHobbits
517fafab4e Support new game modes
Add gamemode to settings abstract
2012-12-02 02:20:05 +00:00
KHobbits
49fe260f8d Split settings abstract to allow more complex matches 2012-12-02 01:20:41 +00:00
KHobbits
032c35c90d Don't allow toggling offline players with /fly and /vanish 2012-12-02 00:59:04 +00:00
KHobbits
f79fe70a86 Fix queue save in god/tptoggle
Use settings abstract for socialspy
2012-12-01 23:44:09 +00:00
snowleo
bb8b15785d Missed one 2012-11-27 12:28:56 +01:00
snowleo
cf0386be7a Essentials Team instead of Essentialsteam 2012-11-27 12:26:04 +01:00
snowleo
00df93b709 Update authors fields of all plugins to a link instead of an outdated list of developers 2012-11-27 12:19:36 +01:00
snowleo
a59283b53a Cleanup 2012-11-18 12:56:33 +01:00
Iaccidentally
bcc4bb39fa Merge pull request #199 from evonuts/master
Clean PR for /eco reset broadcast messages.
2012-11-16 00:25:00 -08:00
evonuts
4e0a221dfe Clean commit for eco reset broadcast. 2012-11-16 21:21:42 +13:00
Iaccidentally
9551cc0cd2 Tl todo cleanup round 1 2012-11-15 22:26:49 -05:00
KHobbits
e6fad00926 Some TL cleanup 2012-11-16 02:58:04 +00:00
KHobbits
7eab8aa6f8 Add vanish toggle to abstract 2012-11-16 02:52:19 +00:00
KHobbits
e382a6c923 Abstract Settings Command class 2012-11-16 02:37:13 +00:00
KHobbits
6b332957c8 TL Move 2012-11-16 02:37:08 +00:00
Iaccidentally
0916f871a9 Add option to clear powertools on world change :: messages cleanup 2012-11-15 16:03:31 -05:00
Iaccidentally
e983cdf14d Add feed sign 2012-11-14 15:16:39 -05:00
Iaccidentally
9af7ab52ea Fix format stripping in max nick length 2012-11-14 03:27:23 -05:00
Iaccidentally
cdde047229 Add a configurable max nick length. 2012-11-13 23:29:35 -05:00
ementalo
cef5af0de3 AntiBuild config file defaults on first creation 2012-11-13 15:44:20 +00:00
KHobbits
8fbd8f0266 Let's have a sorted mob list. 2012-11-12 22:57:02 +00:00
KHobbits
74ff3cbbd4 Switch the signs to use the new spawnmob class. 2012-11-12 22:24:04 +00:00
KHobbits
c33a45dfbc Spawnmob cleanup 2012-11-12 22:06:57 +00:00
Iaccidentally
3fee4bc5ca cleanup powertool remove on quit 2012-11-12 16:06:29 -05:00
Iaccidentally
cd23fc957a add option to clear a players powertools on disconnect. test #1369 2012-11-12 14:57:14 -05:00
Iaccidentally
0ca7537440 update tptoggle to allow toggling other players :: new permission: essentials.tptoggle.others 2012-11-11 14:40:41 -05:00
Iaccidentally
1685ef4f55 make PlayerFishEvent cancel afk 2012-11-11 11:58:36 -05:00
snowleo
3983381fcd Fix build 2012-11-03 16:01:17 +01:00
snowleo
319a3e4def Ess2Compat: Settings part 1 2012-11-03 12:44:38 +01:00
snowleo
488096c1fd Cleanup imports 2012-11-03 02:57:01 +01:00
snowleo
83fefefb43 Ess2Compat: Convert user files 2012-11-03 02:36:17 +01:00
snowleo
59878a94e4 Make Timestamps more flexible 2012-11-03 02:06:21 +01:00
snowleo
aba2540bcd Store filename as key in zippedFiles 2012-11-03 00:30:45 +01:00
snowleo
c60beda40f Add support for zipped User / Warp files 2012-11-03 00:24:54 +01:00
Alexander Schepp
3ce525f032 Don't confuse gravypod 2012-11-01 22:56:47 +01:00
Iaccidentally
74b494cea4 typo fix 2012-10-28 15:03:14 -03:00
Iaccidentally
0f418fc348 Update Essentials/src/net/ess3/commands/Commandtppos.java
copy-paste fail :<
2012-10-28 15:00:30 -03:00
Iaccidentally
9038036abf cleanup 2012-10-28 13:50:30 -04:00
Iaccidentally
df275fc237 Prevent changes (wither support) 2012-10-28 13:41:13 -04:00
Iaccidentally
2338a4ef26 Update tppos to not accept coords over 30000000 2012-10-28 11:14:14 -04:00
Iaccidentally
689b9ebf22 Merge branch 'master' of https://github.com/essentials/Essentials 2012-10-28 10:54:50 -04:00
Iaccidentally
6be807e30d 1.4 update :: protect updates :: update config.yml 2012-10-28 10:53:26 -04:00
md_5
811f20d254 Cleanup usages of split. 2012-10-27 12:51:18 +11:00
ementalo
10c8540fa0 Porting 2.9 teleport changes 2012-10-25 15:42:11 +01:00
snowleo
f6f49f4f1e Removed empty methods. 2012-10-24 22:45:16 +02:00
snowleo
deae46fa73 Allow to fill data with defaults on newly created configs 2012-10-24 22:35:08 +02:00
ementalo
f03361b0c6 "When IDE's attack" 2012-10-24 14:49:40 +01:00
ementalo
96d76f46fc Null handling in AntiBuild 2012-10-24 14:48:12 +01:00
ementalo
bb838c3369 Fix metrics NPE 2012-10-24 14:36:49 +01:00
ementalo
a12706f88d Cleanup Entity Listener 2012-10-19 12:17:54 +01:00
ementalo
e0d3b9cfcf Fix command handlers 2012-10-19 10:33:10 +01:00
md_5
215e093c3f Clean up use of libraries 2012-10-19 19:54:56 +11:00
Iaccidentally
b41f3bdef6 Porting changes to 3.0: Volume 2 :: The Code Strikes Back 2012-10-18 21:40:26 -04:00
snowleo
9d486ac638 Add tabComplete support to Essentials commands 2012-10-18 23:17:19 +02:00
Iaccidentally
afa47c176b Porting changes to 3.0: volume 1 :: lots of cleanup 2012-10-18 16:00:25 -04:00
snowleo
3dd98f1048 Always teleport in sync thread 2012-10-16 22:21:48 +02:00
snowleo
ef289cb309 Added exempt/offline permissions to fly, god, gamemode and socialspy command. Added more options to socialspy 2012-10-16 22:04:56 +02:00
snowleo
3b32012a67 Remember kids, don't copy & paste while coding 2012-10-16 21:26:14 +02:00
snowleo
c644eb1ee2 Allow unsafe enchantments in /item /give /enchant with permissions. 2012-10-16 21:24:00 +02:00
snowleo
d056b9e436 Fix /seen for offline users 2012-10-16 21:12:29 +02:00
snowleo
c412a22502 Add command option /ignore list 2012-10-16 01:09:10 +02:00
snowleo
c70caf8001 Allow at least one home by default. 2012-10-16 00:23:27 +02:00
snowleo
4f4f9d8702 Cleanup of ranks and make it more resistant against exceptions from external code 2012-10-16 00:15:38 +02:00
snowleo
80bdae2cc9 Add config option for /near default radius 2012-10-15 23:34:13 +02:00
snowleo
d82899ebd6 Correctly implement charges in /more all 2012-10-15 23:28:53 +02:00
snowleo
c74545d614 Add command option /more all 2012-10-15 23:12:02 +02:00
snowleo
6f34f208b0 Add more options to /balancetop and fix access to getPlayer() on offline user 2012-10-15 23:00:55 +02:00
snowleo
10f47ed7a5 World permissions for /time command 2012-10-15 22:42:48 +02:00
snowleo
7c8f7ba3ed Fix changeDisplayname and related code 2012-10-15 21:02:02 +02:00
ementalo
b86ca14295 Fix chat colours 2012-10-15 00:47:36 +01:00
ementalo
9867af51a9 Remove [PLAYER_COMMAND] output, cleanup 2012-10-14 23:29:11 +01:00
snowleo
93fe12f433 New permissions: essentials.give.enchanted essentials.item.enchanted 2012-10-14 23:01:34 +02:00
snowleo
cb528935de Fix instanceof Player 2012-10-14 21:27:38 +02:00
snowleo
9ca4f53c1a replace user.isHidden() with player.canSee() 2012-10-14 00:35:24 +02:00
ementalo
eca8b54ef5 entity target bypass protect permission split out to essentials.protect.entity.bypass.entityname for per entity settings 2012-10-13 19:40:55 +01:00
ementalo
590430fcec Fix usermap player matching 2012-10-11 16:59:07 +01:00
ementalo
448e718085 Remove user assignment in anti build listeners. 2012-10-11 16:46:23 +01:00
ementalo
a00ca1fd52 Fix /god
Use assigned variable in protect BlockListener
Cleanup imports
2012-10-11 15:06:25 +01:00
ementalo
5e663508ce Anti Build 3.0 update 2012-10-11 13:40:26 +01:00
ementalo
3d2870cc4e Esschat clean up
Re-implement sign throttle Test #2331
2012-10-10 14:01:22 +01:00
snowleo
62d5f63ab1 Get Player objects of players, that are not in the game yet. 2012-10-09 20:39:58 +02:00
ementalo
2c72a6bc95 Updated items.csv and translations
Fixes missing whois tl key
2012-10-09 14:06:50 +01:00
ementalo
b6e7daa036 Move social spy command definition to config file.
Fix the loading of some values from the config.
2012-10-09 13:47:55 +01:00
ementalo
4fac9f95de Fix time set permissions 2012-10-09 11:11:51 +01:00
md_5
24ea8fe410 Golden rule of commiting, don't make formatting worse in a cleanup commit. 2012-10-09 20:26:53 +11:00
Iaccidentally
4aba49ce30 cleanup 2012-10-09 04:56:44 -04:00
ementalo
8412b6682f Null checks on join / quit variables 2012-10-09 00:38:55 +01:00
ementalo
4d1cdaa7f0 Adding join / quit messages in the config test #1697
PlayerChatEvent -> AsyncPlayerChatEvent
2012-10-08 22:22:06 +01:00
snowleo
b1103726cb Temporary fix for javadoc bug 2012-10-08 22:59:28 +02:00
snowleo
591d4af167 Show write queue size on /gc 2012-10-08 22:48:52 +02:00
snowleo
524531a090 Queued writing of the files to reduce disk io 2012-10-07 22:18:53 +02:00
md_5
7a36150f3c Use correct classloader to load 2012-10-07 21:47:14 +11:00
md_5
6d3119dfe6 Shift fields around so they are actually set. 2012-10-07 21:33:44 +11:00
md_5
41946a2da9 Don't name each command Commandxxx 2012-10-07 21:30:06 +11:00
md_5
7be9114d1a Helps to include the annotation 2012-10-07 21:26:56 +11:00
md_5
846668594c Use annotations to register commands 2012-10-07 21:24:03 +11:00
md_5
8215d7be9b Move ess init to onenable. 2012-10-07 20:58:45 +11:00
md_5
2c478072a2 Save commands that are in the jar by default, print commands on load. Should work, havent tested. 2012-10-07 15:37:27 +11:00
md_5
df1007baff Add Essentials extra and KittyCannon as a demo. 2012-10-07 15:22:23 +11:00
snowleo
ae10bcdffe Cleanup 2012-10-06 17:02:58 +02:00
snowleo
bb798a1051 Organize Imports 2012-10-06 16:58:46 +02:00
snowleo
8ccc16822f Cleanup 2012-10-06 16:55:17 +02:00
snowleo
fabd88dc25 Less locks please 2012-10-06 16:49:40 +02:00
snowleo
463c4ff62d Getting rid of locks, part one 2012-10-06 15:31:59 +02:00
snowleo
f2e31e56c5 Fix startup errors 2012-10-06 11:06:52 +02:00
snowleo
21b2e4b072 Removed Protection signs, use other plugins for this. 2012-10-03 22:08:59 +02:00
snowleo
a43207d395 Comment AntiBuild until latest version is ported from 2.9 2012-10-03 18:18:10 +02:00
snowleo
4a1e26697e Cleanup 2012-10-03 18:16:01 +02:00
snowleo
58821791ff Make ItemStackDotStarPermission more general 2012-10-03 18:10:10 +02:00
snowleo
a8c8e493b9 Better .* Permission classes 2012-10-03 17:52:01 +02:00
snowleo
b677dbfb25 New permission checks, now only registers the parent nodes and needs two checks. This combines the 2.9 and 3.0 permission check methods. 2012-10-03 15:57:37 +02:00
snowleo
53b512415e Fix Spawns commands 2012-10-03 13:54:35 +02:00
snowleo
cef10a5755 Check amount in /pay 2012-10-03 13:49:12 +02:00
snowleo
79b28a4441 Fix removing of item in /hat 2012-10-03 13:42:42 +02:00
snowleo
3d02713b0e Added link to /essentialshelp command for console 2012-10-03 13:38:16 +02:00
snowleo
3ad14f8fa8 Reenable Metrics 2012-10-03 13:32:56 +02:00
snowleo
4105ea4878 Fix NPE in /seen 2012-10-03 13:32:42 +02:00
snowleo
4341aac086 Cleanup 2012-10-03 13:16:46 +02:00
Iaccidentally
f317070c95 Merge pull request #127 from XwartX/patch-1
Update Essentials/src/messages_nl.properties
2012-09-27 14:12:28 -07:00
ementalo
94ea3ffd35 Remove IDE spam 2012-09-27 15:30:23 +01:00
ementalo
0283adb8c5 Updating antibuild to use 3.0 configs and perms.
AntiBuild listener still has some conversions to do
2012-09-27 15:27:25 +01:00
ementalo
622877dabe Protect pom update 2012-09-27 12:59:25 +01:00
ementalo
73eaadd8b5 Removing the signs and rails protection from protect
Remove the antibuild functionality from protect
2012-09-27 12:16:15 +01:00
Iaccidentally
476b5820bd Add EssentialsAntiBuild to 3.x :: still needs a little work 2012-09-26 19:27:21 -04:00
md_5
858350c344 Instructions on how to build. 2012-09-16 13:56:42 +10:00
Iaccidentally
cfdbd5360e Update Essentials/src/plugin.yml
more SKYNET updates
2012-09-15 21:09:56 -03:00
KHobbits
ce0fc35b3d Merge pull request #142 from xGhOsTkiLLeRx/master
Fixed jail extend message.
2012-09-13 17:11:52 -07:00
xGhOsTkiLLeRx
36e67a7f1d Fixed jail extend message 2012-09-13 20:25:50 +02:00
Iaccidentally
42710eb76c Merge pull request #137 from mbax/simoleon
Consistency in simoleon usage.
2012-09-06 19:16:36 -07:00
mbax
6d58ec8cc1 Consistency in simoleon usage.
Does not fix problem of char replace stuff being EVERYWHERE
2012-09-06 21:46:55 -04:00
snowleo
10b161ce09 Move format methods from Util to FormatUtil 2012-09-02 19:41:30 +02:00
snowleo
3676881efd Update LocationUtil to updated 2.9 code 2012-09-02 19:37:40 +02:00
snowleo
288604f673 Remove unused files 2012-09-02 19:17:00 +02:00
snowleo
dbe9d57f88 Fix tests 2012-08-30 23:58:34 +02:00
ementalo
bfc4b9b2a3 Change Util.registerPermission to PermissionFactory, remove registerPermissions from Util 2012-08-30 13:35:22 +01:00
ementalo
bbcf3ee352 Updates to protect and geoip 2012-08-29 15:11:29 +01:00
ementalo
cc82d2ccc2 Change user matching for enderchest.
Update SetExpFix to 2.9 Version
2012-08-29 14:30:37 +01:00
ementalo
1b725c7999 Fixing speed and enderchest on 3.0 2012-08-29 11:51:36 +01:00
ementalo
caa67e4207 Main jar should compile, the tests are messed up 2012-08-29 00:07:56 +01:00
Iaccidentally
44cd21a28b add Commandenerchest to 3.0 (still needs changes to playerlistener and user to work) and update plugin.yml 2012-08-27 19:30:08 -04:00
Iaccidentally
f52d7d05ec Merge branch 'master' of https://github.com/essentials/Essentials 2012-08-26 20:02:37 -04:00
Iaccidentally
d8c6b921f0 add Commandspeed to 3.x 2012-08-26 20:02:01 -04:00
ementalo
53cffa7556 Updates for new user object and other fixes 2012-08-27 01:01:04 +01:00
Iaccidentally
7aff52ccec Missed one. 2012-08-26 19:35:42 -04:00
Iaccidentally
8dc42dd39b fix imports 2012-08-26 14:41:07 -04:00
snowleo
50ab5ffd93 Removing server layer part 2 2012-08-26 20:17:29 +02:00
snowleo
b98021acab Organize Imports 2012-08-26 17:15:35 +02:00
snowleo
b36dae3f5c Removing server layer, part 1 2012-08-26 17:10:17 +02:00
snowleo
40267faa6e Updated pom to latest bukkit beta build 2012-08-26 09:58:09 +02:00
XwartX
007a9b9e0c Update Essentials/src/messages_nl.properties
Small fixes in translations
2012-08-21 12:56:12 +03:00
Iaccidentally
dd79a5bf8d 2.9 config > master fixes default config wiki page 2012-08-08 10:35:32 -03:00
Iaccidentally
1b3142d38c Merge branch 'master' of https://github.com/essentials/Essentials 2012-08-07 01:49:35 -04:00
Iaccidentally
224e76c803 re-add color 2012-08-07 01:48:49 -04:00
ementalo
99ca48ed42 update pom to 1.3 bukkit.
A couple of fixes
2012-08-06 15:38:12 +01:00
Iaccidentally
9cee4f9826 2.9 -> 3.0 (new commands and signs) 2012-08-06 07:50:40 -04:00
Iaccidentally
412d979c75 Merge pull request #110 from Yofel/master
use the correct enum types in the switch
2012-08-06 03:49:58 -07:00
Philip Muskovac
5ec004b1f7 fix the last commit to use the enum values correctly 2012-08-04 13:28:46 +02:00
Alexander Schepp
0c754c03c6 Merge pull request #109 from Yofel/master
make /gc show END worlds as The End
2012-08-04 04:14:32 -07:00
Iaccidentally
1e7c69c0d5 master branch too! 2012-08-04 08:03:05 -03:00
Iaccidentally
5c82ed2962 I before E, except after C. 2012-08-04 07:47:12 -03:00
Philip Muskovac
8a100886e9 add support for the end to /gc 2012-08-04 12:42:28 +02:00
Iaccidentally
6e837e2106 I am a master grammar nazi 2012-08-04 07:42:03 -03:00
Alexander Schepp
7d20e4edd1 Merge pull request #105 from oggehej/patch-1
"gameMode" message [Swedish Translation]
2012-08-01 06:00:44 -07:00
Alexander Schepp
06c34a1df8 Merge pull request #107 from necrodoom/patch-1
update items.csv to 1.3, may need extra cleanup
2012-08-01 05:59:39 -07:00
Alexander Schepp
6b8b507b4e Merge pull request #106 from samschaap/patch-1
Fixed small typo
2012-08-01 05:54:55 -07:00
necrodoom
686264fa83 removed useless emerald aliases
items.csv version 2.1_05
2012-08-01 15:28:52 +03:00
necrodoom
716b6b7c1f added splash mundane and unreverted dualbit
version 2.1_04 of items.csv
2012-08-01 12:01:48 +03:00
necrodoom
a332e68cb8 update items.csv to 1.3, may need extra cleanup
if someone is updating from 1.2 to 1.3 he must use new items.csv, due to changes in woodenslab crafting.
2012-07-31 16:59:28 +03:00
snowleo
cf66bcc05a Allow to cancel the event 2012-07-29 12:36:22 +02:00
snowleo
e6bda76b12 Events WIP 2012-07-29 12:33:35 +02:00
Alexander Schepp
8c4eb152a3 Fix days in polish translation 2012-07-26 04:25:03 +03:00
Iaccidentally
be87640ec4 fixed args count 2012-07-22 14:57:09 -04:00
Iaccidentally
fc6acc9af8 Round 1 of fixing getPlayer in commands 2012-07-22 14:54:18 -04:00
snowleo
13b9bc600a Fix AbstractDelayedYamlFileReader 2012-07-22 13:13:28 +02:00
snowleo
b76f5c71a3 Fix StoredLocation 2012-07-22 13:11:00 +02:00
snowleo
a181e6d7b2 Compile on save all enabled in Netbeans 2012-07-22 12:42:19 +02:00
snowleo
ca928e42ed Removing /nuke and /antioch 2012-07-22 12:32:04 +02:00
snowleo
ff1ea62a91 Fix interface params to match with the implementation method 2012-07-22 11:40:05 +02:00
snowleo
a10b76e9e4 Update of Lombok to 0.11.2 2012-07-22 11:28:32 +02:00
snowleo
dd8ddd15a1 Fix more stuff in 3.0 2012-07-22 11:28:14 +02:00
samschaap
7dffd607a6 Fixed small typo 2012-07-20 21:57:27 +03:00
ementalo
ff39c63f83 Be careful with getUser vs matchUser 2012-07-20 16:39:45 +01:00
ementalo
af80208ac5 Clear up merge leftovers 2012-07-20 16:32:58 +01:00
ementalo
c395997272 mail player matching update 2012-07-20 12:19:56 +01:00
ementalo
26e5b52c26 Some user matching updates 2012-07-20 12:12:21 +01:00
oggehej
fe66727366 "gameMode" message, if you're choosing creative is it grammatically incorrect.
Ex: Satte kreativs spelläge till oggehej.
It should then be "kreativt", but you can't choose to have both "{0}s" and "{0}t".
2012-07-19 18:04:23 +03:00
ementalo
ea1cce76f9 Revert "more replacing. fix getUser();"
This reverts commit ab9545624c.
2012-07-17 20:48:05 +01:00
Iaccidentally
ab9545624c more replacing. fix getUser(); 2012-07-17 15:42:15 -04:00
Iaccidentally
90ba0c91ca fix permission.default in afk 2012-07-17 14:44:13 -04:00
Iaccidentally
3c28300b03 round 2 of import fixing 2012-07-17 14:25:40 -04:00
Iaccidentally
3575428d6b Use IServer not bukkit server 2012-07-17 12:03:02 -04:00
Iaccidentally
b297a22b55 Fixing imports and removing bukkit in commands 2012-07-17 11:55:59 -04:00
ementalo
9db8dac2e3 Some more fixes 2012-07-17 14:46:35 +01:00
ementalo
ed00fb9d39 Command perms fix 2012-07-17 14:25:49 +01:00
ementalo
a661bce7b3 Merge of server-layer branch 2012-07-17 14:21:03 +01:00
ementalo
3c385e6927 Package Renames 2012-07-16 15:01:16 +01:00
ementalo
9d41899b97 Package Renames 2012-07-16 15:01:00 +01:00
snowleo
fff9f07994 server-layer part 2 2012-07-15 19:58:08 +02:00
Alexander Schepp
9f05e43ecf Update master 2012-07-15 19:56:44 +03:00
Alexander Schepp
6f53ec8165 Merge pull request #102 from gravypod/master
NecroDoom's CVS fix
2012-07-15 09:49:23 -07:00
gravypod
51c2c43c14 Made by Necrodoom. [He just asked me to push this] 2012-07-15 09:41:05 -07:00
Alexander Schepp
e6195ec452 Merge pull request #98 from xGhOsTkiLLeRx/master
Updated German language file
2012-07-15 02:21:22 -07:00
xGhOsTkiLLeRx
29bc2e2dfd Done 2012-07-15 04:34:33 +03:00
xGhOsTkiLLeRx
f93a136324 Rev 3 - final? 2012-07-13 02:05:48 +03:00
Paul A.
0d57815e8b Update readme about 3.0 2012-07-12 17:21:38 +02:00
xGhOsTkiLLeRx
47abce70bb Fixed "muted" messages - wasn't my fault ;) 2012-07-12 16:14:32 +03:00
xGhOsTkiLLeRx
d5dbf80d97 Last line translated 2012-07-12 15:31:14 +03:00
xGhOsTkiLLeRx
14a7e4c84a Update master 2012-07-12 15:26:26 +03:00
xGhOsTkiLLeRx
5cd5a654c8 Rev 2 - spell fixes and grammar correction 2012-07-12 15:25:50 +03:00
snowleo
210f7fe749 Keep orientation while teleporting up 2012-07-12 12:30:25 +02:00
snowleo
c3e261d60a Fix /time command 2012-07-12 12:30:25 +02:00
snowleo
cfb93e97f0 Ignore players without IP 2012-07-12 12:30:25 +02:00
snowleo
a0b59fd58e Another NPE fix for bots 2012-07-12 12:30:24 +02:00
snowleo
2670d641b1 Ignore folder, that should not be published 2012-07-12 12:30:24 +02:00
snowleo
b4b90874f6 Organize Imports 2012-07-12 12:30:23 +02:00
snowleo
3f9c29bf8c Move NULL check to the top 2012-07-12 12:30:23 +02:00
snowleo
fe572db6bb Drop dependency of craftbukkit on main project, we don't need it anymore. 2012-07-12 12:30:22 +02:00
snowleo
3060a7b259 Using the new methods in Essentials to getUser 2012-07-12 12:30:22 +02:00
snowleo
719e1a861f Organize imports 2012-07-12 12:30:22 +02:00
snowleo
c434bb7f50 Removed /essentials nya and /essentials moo 2012-07-12 12:30:21 +02:00
xGhOsTkiLLeRx
f0e7483f56 Updated German language file. 2012-07-12 02:25:28 +03:00
Alexander Schepp
2fc896532f Fix version in messages_se.properties 2012-07-11 14:20:11 +03:00
Alexander Schepp
15a4e94eb7 Merge pull request #94 from DMarby/master
Swedish translation
2012-07-11 04:17:04 -07:00
Alexander Schepp
3cace07d90 Merge pull request #97 from JamieSinn/patch-1
Added the ability to stop fire with /heal
2012-07-11 04:14:58 -07:00
JamieSinn
95b12f0f42 Added the ability to stop fire 2012-07-11 00:04:03 -03:00
David Marby
e3da60d6e4 Added swedish translation 2012-07-07 02:10:14 +02:00
ementalo
120f1c73e7 Move creaturespawn options to worldoptions 2012-07-06 16:42:49 +01:00
ementalo
06e6749ca3 Move creature spawn prevention to core 2012-07-06 15:57:54 +01:00
ementalo
30600295a6 Enabled signs within the if 2012-07-06 14:11:31 +01:00
ementalo
a5c2dcc33b Fix enabling signs 2012-07-06 13:49:29 +01:00
ementalo
9f7214a97f Improve the newlines in the yml files. (All ymls kits, etc need testing) 2012-07-05 16:10:36 +01:00
ementalo
d78c4930c1 Cleanup getHome(s) 2012-07-03 14:46:38 +01:00
ementalo
a4dea20292 Implement getHome(s) 2012-07-03 13:44:55 +01:00
Iaccidentally
3deda1952d Update master 2012-07-03 04:51:54 -03:00
ementalo
9579917efa Commandcost fix 2012-06-29 01:05:17 +01:00
ementalo
7ed07dedba Merge branch 'master' of https://github.com/essentials/Essentials 2012-06-28 14:00:14 +01:00
ementalo
93e80d7459 Fill out default spawn prevent values in protect 2012-06-28 13:59:38 +01:00
Iaccidentally
20908c5b5f Merge pull request #93 from necrodoom/patch-8
ID 97 fix, pointed out by branicyeti
2012-06-28 01:31:35 -07:00
necrodoom
5cdfa7681d ID 97 fix, pointed out by branicyeti 2012-06-28 10:57:17 +03:00
snowleo
4540b7144d Fix pattern in update, to read the version info correctly 2012-06-27 14:56:52 +02:00
ementalo
3a94057c4e Fix IDE cleverness with I18n 2012-06-27 13:44:36 +01:00
ementalo
4a80f704fe .com -> .net in test package of Update 2012-06-27 13:38:33 +01:00
ementalo
ac9c0cb0fc Merge branch 'master' of https://github.com/essentials/Essentials 2012-06-27 13:36:07 +01:00
ementalo
16d0b5c228 package name change to net.ess3 2012-06-27 13:35:39 +01:00
snowleo
5724f0b542 And another one 2012-06-27 14:32:02 +02:00
snowleo
653864da35 Missed files during rename 2012-06-27 14:24:05 +02:00
snowleo
c1230bd6ae Remove obsolete version output 2012-06-27 14:06:49 +02:00
snowleo
d88211bdf6 Fix EssentialsUpdate 2012-06-27 14:06:49 +02:00
snowleo
6123f17ef4 Renamed plugin from Essentials3 to Essentials-3 2012-06-27 14:06:49 +02:00
md_5
06f54fdbac That just leaves the big ol' core. Largely ignore Compat as it is very temporary. 2012-06-27 20:27:27 +10:00
md_5
4561a7f010 Fairly expansive cleanup of ess protect. 2012-06-27 20:23:06 +10:00
md_5
7bef2d3817 Cleanup signs, update and xmpp, more to come. 2012-06-27 20:03:26 +10:00
ementalo
3d96c9caaf Use essentials data folder location for protect db 2012-06-27 10:15:20 +01:00
ementalo
c5d93a7e54 Fix Colours 2012-06-27 00:29:50 +01:00
ementalo
44e71dcbb9 Import sappin mah sentry 2012-06-26 23:34:31 +01:00
ementalo
68463b4af8 Add some default values to protect config.
Figure out a better way to do this for HashMaps....
2012-06-26 23:31:38 +01:00
ementalo
1596ea1335 Fix GeoIP config 2012-06-26 23:08:33 +01:00
Iaccidentally
99a2ddee6f Merge branch 'master' of https://github.com/essentials/Essentials 2012-06-26 15:15:48 -04:00
Iaccidentally
ce740d6bd2 add fixed keepxp. 2012-06-26 15:15:11 -04:00
ementalo
a46f194832 Assign EssentialsTimer to the declared variable. Fixes gc 2012-06-26 14:40:54 +01:00
ementalo
39c8355ed7 implement request teleport 2012-06-26 14:23:37 +01:00
ementalo
88d8a9cee2 remove deprecated code 2012-06-26 13:37:38 +01:00
ementalo
845fa00856 fix some encoding issues for §
Don't attempt to close on null objects
2012-06-26 13:21:48 +01:00
ementalo
d1dad4fca5 change pattern match for essentials update 2012-06-26 11:36:54 +01:00
md_5
451abd2bec Bogus class reference to leave in jmx extensions 2012-06-26 19:18:18 +10:00
md_5
93f4713f8b Bit of maven magic, no more huge EssProtect jar. 2012-06-26 18:19:29 +10:00
Paul A.
e31008d1eb Fix build format on spanish properties file. 3.0 uses ${build.number} instead of TeamCity 2012-06-26 10:13:43 +02:00
md_5
459f1b70cb Compile time fixes. 2012-06-26 18:07:11 +10:00
Iaccidentally
ba82ff0f4e fixes to the spainish translation thanks to dx 2012-06-26 00:22:33 -04:00
ementalo
01f2b93abc @khobbits Add optional 2n'd param to temp ban reason TL key. 2012-06-26 00:07:33 +01:00
ementalo
a9fae0faad .properties updates 2012-06-26 00:01:09 +01:00
ementalo
61ac58bb2d Merge branch '3.0'
Conflicts:
	Essentials/src/com/earth2me/essentials/utils/textreader/KeywordReplacer.java
	Essentials/src/items.csv
2012-06-25 23:51:14 +01:00
ementalo
09ef49cbaf @SyntaxBlitz Fix /vanish with no arguments doing nothing 2012-06-25 23:47:51 +01:00
ementalo
5604231367 @necrodoom major slab alias expansion for items.csv
d0a8dc4812
2012-06-25 23:44:06 +01:00
ementalo
49465358f9 snowleo Prevent NPEs in KeywordReplacer
2c6a81a916
2012-06-25 23:38:20 +01:00
ementalo
da968c60a2 3.0 is now master 2012-06-25 23:15:38 +01:00
ementalo
6488882e1a Merge branch 'master' into 3.0
Conflicts:
	Essentials/src/com/earth2me/essentials/Essentials.java
	Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
	Essentials/src/com/earth2me/essentials/ISettings.java
	Essentials/src/com/earth2me/essentials/Settings.java
	Essentials/src/com/earth2me/essentials/Teleport.java
	Essentials/src/com/earth2me/essentials/User.java
	Essentials/src/com/earth2me/essentials/UserData.java
	Essentials/src/com/earth2me/essentials/bukkit/Enchantments.java
	Essentials/src/com/earth2me/essentials/commands/Commandban.java
	Essentials/src/com/earth2me/essentials/commands/Commandbroadcast.java
	Essentials/src/com/earth2me/essentials/commands/Commandessentials.java
	Essentials/src/com/earth2me/essentials/commands/Commandexp.java
	Essentials/src/com/earth2me/essentials/commands/Commandhat.java
	Essentials/src/com/earth2me/essentials/commands/Commandignore.java
	Essentials/src/com/earth2me/essentials/commands/Commandlightning.java
	Essentials/src/com/earth2me/essentials/commands/Commandmail.java
	Essentials/src/com/earth2me/essentials/commands/Commandmsg.java
	Essentials/src/com/earth2me/essentials/commands/Commandpay.java
	Essentials/src/com/earth2me/essentials/commands/Commandr.java
	Essentials/src/com/earth2me/essentials/commands/Commandtempban.java
	Essentials/src/com/earth2me/essentials/commands/Commandtpa.java
	Essentials/src/com/earth2me/essentials/commands/Commandunlimited.java
	Essentials/src/com/earth2me/essentials/commands/Commandvanish.java
	Essentials/src/com/earth2me/essentials/commands/Commandwhois.java
	Essentials/src/com/earth2me/essentials/utils/textreader/KeywordReplacer.java
	Essentials/src/items.csv
	EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java
	EssentialsChat/src/plugin.yml
	EssentialsSigns/src/com/earth2me/essentials/signs/EssentialsSign.java
	EssentialsSpawn/src/plugin.yml
	lib/bukkit.jar
	lib/craftbukkit.jar
2012-06-25 23:07:37 +01:00
ementalo
f8bb4d058d Merge fixes 2012-06-25 22:24:10 +01:00
ementalo
283a9ce9fa Merge branch 'master' into 3.0
More to follow

Conflicts:
	Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
	Essentials/src/com/earth2me/essentials/Kit.java
	Essentials/src/com/earth2me/essentials/Teleport.java
	Essentials/src/com/earth2me/essentials/User.java
	Essentials/src/com/earth2me/essentials/UserData.java
	Essentials/src/com/earth2me/essentials/commands/Commandfly.java
	Essentials/src/com/earth2me/essentials/commands/Commandgod.java
	Essentials/src/com/earth2me/essentials/commands/Commanditemdb.java
	Essentials/src/com/earth2me/essentials/commands/Commandkit.java
	Essentials/src/com/earth2me/essentials/commands/Commandmute.java
	Essentials/src/items.csv
	Essentials/src/messages.properties
	Essentials/src/messages_cs.properties
	Essentials/src/messages_da.properties
	Essentials/src/messages_de.properties
	Essentials/src/messages_en.properties
	Essentials/src/messages_es.properties
	Essentials/src/messages_fr.properties
	Essentials/src/messages_it.properties
	Essentials/src/messages_nl.properties
	Essentials/src/messages_pl.properties
	Essentials/src/messages_pt.properties
	EssentialsSigns/src/com/earth2me/essentials/signs/SignBlockListener.java
	EssentialsSigns/src/com/earth2me/essentials/signs/SignEntityListener.java
	EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java
2012-06-25 22:01:59 +01:00
ementalo
0395b5d222 Revert "add essentials.keepxp to allow a player to keep their level after death."
This reverts commit 3b25235755.
2012-06-25 21:40:22 +01:00
Iaccidentally
3b25235755 add essentials.keepxp to allow a player to keep their level after death. 2012-06-24 23:27:30 -04:00
KHobbits
4d17b73291 Revert "fix /back resetting on logout"
This is desired behavior, and required for other features.
This reverts commit 329f93a4f6.
2012-06-23 13:33:36 +01:00
md-5
f7a34c49fb Merge pull request #89 from necrodoom/patch-7
major slab alias expansion for items.csv
2012-06-23 02:07:34 -07:00
necrodoom
d0a8dc4812 major slab alias expansion for items.csv 2012-06-23 12:02:28 +03:00
Alexander Schepp
0466a60093 Too much space :D 2012-06-22 20:12:56 +03:00
Alexander Schepp
2c6a81a916 Prevent NPEs in KeywordReplacer 2012-06-22 19:16:40 +03:00
Iaccidentally
329f93a4f6 fix /back resetting on logout 2012-06-22 03:44:19 -04:00
ementalo
7ce9e42f35 Missing user methods 2012-06-21 19:35:48 +01:00
md-5
b70f950479 Merge pull request #88 from SyntaxBlitz/master
Fix /vanish with no arguments doing nothing
2012-06-21 04:31:18 -07:00
Timothy Aveni
38a2e2bcfd Fix /vanish with no arguments doing nothing 2012-06-21 06:17:26 -04:00
md-5
d9b91e0c34 Merge pull request #87 from necrodoom/patch-5
updated items.csv, 43:4, 43:5, 44:4, 44:5
2012-06-21 03:03:39 -07:00
necrodoom
4ae5579068 while enraged at mibbit and esper failing to work, updated items.csv 2012-06-21 12:18:14 +03:00
md_5
f1a7be09c2 Merge remote-tracking branch 'origin/groupmanager' 2012-06-21 18:27:21 +10:00
md_5
0742ca23c1 Update Czech translation. 2012-06-21 18:18:57 +10:00
Iaccidentally
8823ce070e change some default values 2012-06-21 05:05:22 -03:00
Iaccidentally
d77f6cbbf1 fixxy fixxy 2012-06-19 18:13:47 -04:00
Iaccidentally
909c8b3cb5 Add Finnish translation 2012-06-19 18:02:05 -04:00
Iaccidentally
5b7d29fa55 Merge branch 'master' of https://github.com/essentials/Essentials 2012-06-19 17:56:43 -04:00
KHobbits
8dfb3c03c7 *borrows snowleo's strainer* 2012-06-19 20:57:40 +01:00
Iaccidentally
6e8031f477 Merge branch 'master' of https://github.com/essentials/Essentials 2012-06-19 12:48:55 -04:00
Paul A.
81c545f45b Merge pull request #86 from necrodoom/patch-4
adding beef and steak to items.csv - thanks @necrodoom
2012-06-19 07:13:37 -07:00
KHobbits
65025d47c5 Little safety check for bad plugins. 2012-06-19 09:03:37 +01:00
KHobbits
4f23e8aaeb Patch to allow plugins to use ignore lookup, without updating their own code. 2012-06-19 08:59:26 +01:00
KHobbits
aea2c00a95 Add optional 2n'd param to temp ban reason TL key. 2012-06-19 08:46:33 +01:00
necrodoom
eafe0380e1 hotfix before 2.9.2 release 2012-06-19 10:04:13 +03:00
ementalo
bfbec1c46c Remove fake explosion.
Missing bits of commandr
2012-06-18 15:51:48 +01:00
ementalo
3975ceb2a0 Fixing vanish on off arguments 2012-06-18 15:35:21 +01:00
ementalo
89eca7d991 2.9 Merges
Make /vanish follow the same rules as /fly, /god and /gamemode
Add espawn to plugin.yml
Allow your hat to be removed with /hat remove
void silent command failures on /hat (ie typing /hat fish will no longer silently return as if broken)
Fix /exp so it can be used in the console
Using /exp, show can't find player message, if no matching player is found

Replace op ignore exempt with ignore exempt chat permission:
essentials.chat.ignoreexempt
This permission won't prevent a player from ignoring the player, but the player will see the chat messages anyway.
Fix chat showing [spy] prefix when social spy was not required to see the message
Players should not be able to ignore Console
Also implement chat exempt permission in other commands.
Prevent joinbots from triggering join code, unless they are actually connected to the server and online.
2012-06-18 13:55:25 +01:00
ementalo
88e7e684af Messing around with whois syntax (TL's probably need some love) 2012-06-18 13:06:32 +01:00
ementalo
faea8af22e Adding mute status to /whois 2012-06-18 12:57:56 +01:00
ementalo
6db7de9c4d Enchantments update 2012-06-18 12:53:53 +01:00
ementalo
16f9163c45 Fix vanish 2012-06-18 12:52:36 +01:00
ementalo
8bdcec9072 Big boolean cleanup 2012-06-18 12:16:21 +01:00
ementalo
933d648ef6 3 char min length on /pay and /msg
Make /whois throw an error if no matching players are found.
2012-06-18 12:13:58 +01:00
ementalo
93246f020f Pass the actual player object to Bukkit.
Add the list that hides vanished players
2012-06-18 12:05:41 +01:00
ementalo
492239724c Broadcast command allows colour formatting. 2012-06-18 12:01:17 +01:00
ementalo
8cc61d3b33 Fix /lightning <player> <damage> to actually deal the proper set damage (5 or 25% by default) 2012-06-18 12:00:16 +01:00
ementalo
6677f75c52 Fix /essentials command to not show command debugging if there were no conflicts 2012-06-18 11:58:14 +01:00
ementalo
cfbfd5ee46 Try to be a little more sensible with stored cooldowns. 2012-06-18 11:54:40 +01:00
ementalo
ca21b92762 Fix /mute to follow same convention as /tjail
Fixed #2056
2012-06-18 11:39:27 +01:00
ementalo
962d49517b Missing event aborts in sign code. 2012-06-18 11:25:51 +01:00
ementalo
5545553345 Fix bug with /remove and minecarts 2012-06-18 11:22:39 +01:00
ementalo
dd8a3cfa4f Allow syntax: /god <player> <on/off> 2012-06-18 11:21:28 +01:00
ementalo
3a38e4102a Allow syntax: /fly <player> <on/off> 2012-06-18 10:58:44 +01:00
ementalo
dc4fc46c4b Latest translations and items.csv 2012-06-18 10:36:56 +01:00
ementalo
b9f529e53d Play a bit less greedy with events 2012-06-18 10:33:52 +01:00
ementalo
0a3ecbcd0e Use the assigned variable when looking at durability in itemdb 2012-06-18 10:28:37 +01:00
ementalo
cc02df0f78 Itemdb shows durability of item in hand 2012-06-18 10:22:28 +01:00
KHobbits
9679a90d88 Add sign throttle config option.
Allows you to limit how often an Essentials sign can be spammed per player.
2012-06-17 19:28:59 +01:00
ementalo
330c7271a7 Fix xmpp format stripping 2012-06-17 18:43:01 +01:00
Iaccidentally
c4a704b1a2 The French are weird : they use colons like this. 2012-06-17 11:50:52 -04:00
Iaccidentally
776900bd7b fix spacing issue in messages.properties 2012-06-17 11:41:00 -04:00
ElgarL
5683ea35fc Better update for the User object player reference. 2012-06-16 19:12:54 +01:00
ElgarL
78d4987d5d Clear the player reference on logout so it's refreshed upon a reconnect. 2012-06-16 19:04:40 +01:00
KHobbits
9f852b3a41 Using /exp, show can't find player message, if no matching player is found. 2012-06-16 18:22:31 +01:00
KHobbits
edca2cbdff Added missing syntax to plugin.yml 2012-06-16 17:56:12 +01:00
KHobbits
c578302d7c Fix playerlistname update when prefix/suffix option is disabled.
Fixes #2216
2012-06-16 17:42:42 +01:00
KHobbits
dfce4b31f3 Adjust kit delay description.
Fixes #1580
2012-06-16 17:37:42 +01:00
KHobbits
669edfc048 Prevent joinbots from triggering join code, unless they are actually connected to the server and online. 2012-06-16 17:31:33 +01:00
KHobbits
0a9c88a990 Added TL key for ban syntax,
Default message: "Banned: <reason>"
Default reason: The Ban Hammer has spoken!
Optional 2nd param to banReason, {1}, will contain user who made the ban.
Example use: "banReason=Banned for {0} by {1}"
2012-06-16 17:10:47 +01:00
KHobbits
4e5e5a9684 Fix teleport cooldowns - thanks @basicsensei
Fixes #2260
2012-06-16 16:46:40 +01:00
KHobbits
97eada7dd6 Players should not be able to ignore Console
Also implement chat exempt permission in other commands.
2012-06-16 16:22:51 +01:00
KHobbits
a764f8c929 Fix chat showing [spy] prefix when social spy was not required to see the message.
Fixes #2263
2012-06-16 16:05:48 +01:00
KHobbits
5da886593b Replace op ignore exempt with ignore exempt chat permission:
essentials.chat.ignoreexempt
This permission won't prevent a player from ignoring the player, but the player will see the chat messages anyway.
2012-06-16 16:01:27 +01:00
KHobbits
4c5a88929c Fix /exp so it can be used in the console 2012-06-16 14:26:29 +01:00
KHobbits
af7e427545 Avoid silent command failures on /hat (ie typing /hat fish will no longer silently return as if broken) 2012-06-16 14:02:13 +01:00
KHobbits
4638c5ab55 Added missing TL key 'hatRemoved' 2012-06-16 13:56:36 +01:00
KHobbits
0c2e63baad Make /vanish follow the same rules as /fly, /god and /gamemode 2012-06-16 13:53:46 +01:00
Iaccidentally
ee61ce35c8 Merge pull request #85 from kukelekuuk00/master
Updated dutch translation and fixed many grammar and spelling mistakes.
2012-06-15 15:06:38 -07:00
kukelekuuk00
6ec5b4a5da Updated dutch translation and fixed many grammar and spelling mistakes. 2012-06-16 00:02:19 +02:00
Iaccidentally
d63ad6fc0c Merge pull request #82 from kukelekuuk00/master
Allow your hat to be removed with /hat remove
2012-06-15 13:44:51 -07:00
kukelekuuk00
641a4b9dff Allow your hat to be removed with /hat remove 2012-06-15 22:36:26 +02:00
Paul A.
31001d6b1a Merge pull request #81 from kukelekuuk00/master
/vanish [on|off] - thanks kukelekuuk00
2012-06-15 03:05:13 -07:00
kukelekuuk00
d1a1559dca args[0] instead of args[1]
derp
2012-06-15 11:41:06 +02:00
kukelekuuk00
0d56b700bf /vanish [on|off] 2012-06-15 11:02:04 +02:00
Iaccidentally
cafdb919e4 Merge branch 'master' of https://github.com/essentials/Essentials 2012-06-12 22:33:12 -04:00
Iaccidentally
808f448399 add /e<command> aliases to essentials spawn 2012-06-12 22:28:10 -04:00
KHobbits
10d902e730 Revert "Invert teleport timer."
This reverts commit 0436962ee7.
2012-06-13 03:06:42 +01:00
KHobbits
0436962ee7 Invert teleport timer. 2012-06-13 02:51:47 +01:00
KHobbits
2bebb0bd61 3 char min length on /pay and /msg 2012-06-13 00:49:36 +01:00
Iaccidentally
1e04e3f80d This is broken for some reason. Removing until fixed. 2012-06-12 01:41:39 -04:00
Iaccidentally
c32e10caac oops. forgot this. 2012-06-12 01:13:12 -04:00
Iaccidentally
120440d45b add admin chat 2012-06-12 00:59:53 -04:00
Iaccidentally
61b85901a3 Merge pull request #79 from Iaccidentally/master
update messages_pt.properties
2012-06-11 19:40:42 -07:00
Iaccidentally
f0b3acf491 fix Portuguese translation with new messages 2012-06-11 22:34:40 -04:00
Alexander Schepp
f2d624a795 Merge pull request #78 from Iaccidentally/master
fix some tl keys
2012-06-11 19:17:44 -07:00
Iaccidentally
9e1d7aca92 fix some tl keys 2012-06-11 22:05:30 -04:00
KHobbits
3b43f7bf03 Messing around with whois syntax
(TL's probably need some love)
2012-06-12 01:43:20 +01:00
KHobbits
2f18c6edf1 Fix spacing issue in /list 2012-06-12 00:27:21 +01:00
KHobbits
79f8699174 Fixing messed enchantment. 2012-06-12 00:18:53 +01:00
KHobbits
602681dcc2 Merge pull request #76 from necrodoom/patch-2
pull request for expanding enchant database
2012-06-11 16:17:53 -07:00
KHobbits
3e63047c38 Merge pull request #77 from necrodoom/patch-3
woodenslab fix, pointed out by branicyeti
2012-06-11 16:17:21 -07:00
KHobbits
4f2f166824 Adding mute status to /whois 2012-06-12 00:16:09 +01:00
necrodoom
fc782f286d woodenslab fix, pointed out by branicyeti 2012-06-11 16:39:18 +03:00
necrodoom
425c548611 pull request for expanding enchant database 2012-06-11 15:08:12 +03:00
KHobbits
593f1dd67f Update Bukkit to 1.2.5-R4
Bukkit: #1473 CB: #2222
2012-06-11 00:40:45 +01:00
md_5
8cff4348a6 Fix the vanish command for good. 2012-06-11 09:18:06 +10:00
KHobbits
40271f2ddf I spied some more big Booleans. 2012-06-11 00:14:19 +01:00
KHobbits
aa1205f42d i should prefer boolean to Boolean. 2012-06-11 00:08:31 +01:00
KHobbits
2e15de483d Make /whois throw an error if no matching players are found. 2012-06-11 00:07:22 +01:00
md_5
77b0415c1b Pass the actual player object to Bukkit. 2012-06-11 08:45:24 +10:00
KHobbits
43b3a9df23 /vanish command sets players invisible to essentials commands. 2012-06-10 23:36:10 +01:00
KHobbits
8b47b80b0b Broadcast command allows colour formatting. 2012-06-10 23:35:50 +01:00
KHobbits
13da8c3adc Fix /lightning <player> <damage> to actually deal the proper set damage (5 or 25% by default). 2012-06-10 23:00:49 +01:00
KHobbits
a10190df51 Fix /essentials command to not show command debugging if there were no conflicts. 2012-06-10 22:46:56 +01:00
KHobbits
ecfa745484 Try to be a little more sensible with stored cooldowns. 2012-06-10 21:55:48 +01:00
KHobbits
20d439578b Fix /mute to follow same convention as /tjail
Fixed #2056
2012-06-10 19:56:24 +01:00
KHobbits
dd7f1bcf25 Missing event aborts in sign code. 2012-06-10 19:40:09 +01:00
KHobbits
3b855255cf Fix bug with /remove and minecarts 2012-06-10 19:36:31 +01:00
KHobbits
23283426e0 Allow syntax: /god <player> <on/off> 2012-06-10 19:20:43 +01:00
KHobbits
c958bc78dd Allow syntax: /fly <player> <on/off> 2012-06-10 19:11:45 +01:00
KHobbits
24ec242ecf Fixing up some TL mistakes 2012-06-10 18:38:55 +01:00
KHobbits
9068c13e39 Play a bit less greedy with events 2012-06-10 18:33:07 +01:00
KHobbits
024aff0af5 Remove dura command and merge into itemdb. 2012-06-10 18:31:28 +01:00
KHobbits
57c1d75779 Fix kits to only show to people who can use them. 2012-06-10 18:27:55 +01:00
KHobbits
8c434783a2 Merge pull request #72 from kukelekuuk00/master
Durability command
2012-06-10 10:22:42 -07:00
KHobbits
85ae839211 Merge pull request #75 from necrodoom/patch-1
updating items.csv with newest pastebin, fixes duplicates and wrong alia...
2012-06-10 10:21:40 -07:00
necrodoom
b218d33a24 file indented for unknown reason 2012-06-10 18:06:26 +03:00
necrodoom
6e0f4674d5 updating items.csv with newest pastebin, fixes duplicates and wrong aliases. 2012-06-10 15:29:34 +03:00
kukelekuuk00
62812e1e3a DERP #2 2012-06-10 14:19:03 +02:00
kukelekuuk00
63680b4911 DERP 2012-06-09 23:06:09 +02:00
snowleo
071254ed8d Fix xmpp format stripping 2012-06-08 00:34:25 +03:00
Paul A.
cbe64fb1de Remove duplicate kittycannon in plugin.yml 2012-06-06 13:37:25 +02:00
ementalo
72b4ac257d Missing gm changes 2012-06-06 10:01:27 +01:00
Paul A.
9f3b3d5873 Merge pull request #73 from ementalo/3.0
2.9 -> 3.0 merge

Metrics has been disable atm.
Everything eeds a thorough going over, settings are prob in wrong place etc.
2012-06-05 18:20:06 -07:00
ementalo
5c0f944b2b 2.9 -> 3.0
Missing inventory events.
Updated polish translations
2012-06-06 02:12:23 +01:00
ementalo
ff5a82a14c 2.9 -> 3.0 merge 2012-06-06 01:53:34 +01:00
KHobbits
93980629d3 Merge branch 'master' of github.com:essentials/Essentials 2012-06-03 16:35:12 +01:00
KHobbits
f299771044 Fix broken preventmodify permissions check in invsee (*scowls at ementalo*)
Also added check to prevent duping items
2012-06-03 16:34:27 +01:00
md-5
8c013b7680 Merge pull request #74 from Rutr/master
Edit the polish translation, thanks Rutr.
2012-06-02 14:36:00 -07:00
Rutr
78fe659677 translation some new messages and edit some existing 2012-06-02 17:46:26 +03:00
kukelekuuk00
98de950ae2 some more aliases for /durability 2012-06-02 00:36:27 +02:00
ementalo
9b7a40736e 2.9 -> 3.0 merge
Commented out a load of metrics code for the time being
2012-05-31 01:27:24 +01:00
ementalo
03a52cd070 2.9 -> 3.0
Permissions and command fixes
Kit cleanup (needs timestamp work still)
2012-05-31 00:40:35 +01:00
ementalo
cea3113df4 2.9 -> 3.0
Adding world pems to the various commands (this should be seperated out to its own method)
2012-05-30 13:12:50 +01:00
kukelekuuk00
96eb9c5db7 added /dura a durability check 2012-05-30 13:42:38 +02:00
ementalo
53d54146d6 2.9 to 3.0
Trade file fixes
2012-05-29 22:51:15 +01:00
ementalo
0af4103b92 2.9 3.0 merge
Fix permissions checks
2012-05-29 22:20:52 +01:00
ementalo
a8af0a9259 2.9 to 3.0 merge 2012-05-29 22:06:04 +01:00
ementalo
373a48da54 Master -> 3.0 2012-05-28 00:37:28 +01:00
md_5
45c1e347b0 Don't allow armor to be used as a hat. 2012-05-27 17:36:04 +10:00
md_5
0559b935e9 Add new command /hat and update translate keys as well as fix colour codes. 2012-05-27 17:24:49 +10:00
md_5
409f337973 Client side note blocks don't play it seems (reverse-merged from commit 0b60d4efe2) 2012-05-26 14:47:30 +10:00
KHobbits
7f5f6b6ac9 Tidy up PVP attack delay. 2012-05-22 21:02:28 +01:00
KHobbits
dc36a50d85 Merge branch 'master' of github.com:essentials/Essentials 2012-05-22 17:54:39 +01:00
KHobbits
74f0babc7d Separate toggle for world teleports using homes. 2012-05-22 17:54:19 +01:00
ementalo
5eeaeaee5d Adding new config setting login-attack-delay. Set this in seconds for a delay before players can attack each other after logging on.
Use permission "essentials.pvpdelay.exempt" to bypass this restriction
2012-05-22 01:29:47 +01:00
KHobbits
fa58503c9f Code tidy. 2012-05-22 00:41:03 +01:00
KHobbits
9fca3728c3 Merge branch 'master' of github.com:essentials/Essentials 2012-05-22 00:39:44 +01:00
KHobbits
56fccb9645 Patch null error in /home after recent update. 2012-05-22 00:39:23 +01:00
md_5
cab40d7893 Keep track of vanished players and tweak lag meter. 2012-05-21 15:13:24 +10:00
KHobbits
faa3a5e027 Make /home and /back obey the world perm system.
This will prevent players from moving between words using virtually all essentials commands.
ATM /warp is excepted, because we already have per warp permissions.
Ess3 may see warp permissions altered to: essentials.warp.<world>.<warpname>
2012-05-20 23:58:03 +01:00
KHobbits
1c0838aa5d Fixing unit tests. 2012-05-19 22:19:24 +01:00
KHobbits
32fa834f3f Forgot to update plugin syntax.
Added missing perm checks.
2012-05-19 22:02:42 +01:00
KHobbits
051af644a7 Exp command cleanup 2012-05-19 21:52:54 +01:00
KHobbits
9b9a6a3148 Merge pull request #70 from kukelekuuk00/master
/exp [set|give|player] [player] [amount]
2012-05-19 12:42:33 -07:00
KHobbits
711426fe69 Update CraftBukkit: 1.2.5-R2.0 - 2190
Update Bukkit: 1.2.5-R2.0 - 1459
2012-05-19 20:35:36 +01:00
KHobbits
18c9c812d7 Merge branch 'master' of github.com:essentials/Essentials 2012-05-19 17:45:09 +01:00
KHobbits
bc798977b5 Strip invalid chars from kit names
This may possibly block some kits from working that previous worked, if the kit name contained unusual letters
2012-05-19 17:44:47 +01:00
kukelekuuk00
853d7cb668 Fixes made, added /exp fix [playername] this fixes negative exp. 2012-05-17 14:39:40 +02:00
md_5
3eac027ddb There is no need to start a second task to measure lag, it can in fact be measured with enough precision from the exisitng one. 2012-05-17 20:33:40 +10:00
md_5
1247401a5f Add a LagMeter (ticks per second) to the /gc command. This command can now be accessed with /lag as well. Also added a simple /vanish command, with the extra node essentials.vanish.see
If you require a more advanced vanish solution checkout VanishNoPacket from mbaxter.
2012-05-17 20:25:02 +10:00
kukelekuuk00
9846362836 small description change 2012-05-14 11:43:57 +02:00
kukelekuuk00
16fc88b50c new command /exp [set|give|player] [player] [amount]
perms are essentials.exp,  essentials.exp.others,  essentials.exp.set,  essentials.exp.set.others,  essentials.exp.give and  essentials.exp.give.others
2012-05-14 11:36:44 +02:00
KHobbits
fee3d7c0d3 Try to trim long displaynicks instead of blankly refusing to show them.
Will try trimming prefixes and dropping suffixes before trimming nicknames.
2012-05-13 18:58:50 +01:00
kukelekuuk00
5020f6b990 Added an /exp command that shows the amount of exp you have and how much you need for the next level.
Permissions are essentials.exp and essentials.exp.needed
2012-05-13 13:44:41 +02:00
KHobbits
a48f6c8c30 Force 3 letters before matching players for /god /gamemode and /fly 2012-05-07 00:30:09 +01:00
KHobbits
8d6b864b5b Revert "Update home count..." This reverts commit 9b731cc39c.
On second thought, this would just lead to inconsistency....
2012-05-07 00:16:45 +01:00
KHobbits
deca5e5e73 Home confirmation when using a bed. 2012-05-07 00:08:01 +01:00
KHobbits
9b731cc39c Update home count to include the bed home if set, this does not prevent people from setting a bed home if they are at max. 2012-05-07 00:05:02 +01:00
KHobbits
78cd64c388 Revert "Revert "New config option 'cancel-afk-on-move' - Set to false you don't use afk." -- This should fix afk mode."
This reverts commit 95e6db6797.

Another attempt at adding 'cancel-afk-on-move' toggle.
2012-05-06 23:38:04 +01:00
KHobbits
d9e15729fd Revert "/me crashes ementalo's face for making the client crash."
This reverts commit 6d1e2dd10e.

And fix the original bug.
2012-05-06 23:30:55 +01:00
KHobbits
0fbe2da9cb Add whisper to social spy trigger list. 2012-05-06 16:11:16 +01:00
KHobbits
d3397279f6 Revert "We can't damage and kill, so we will just kill to make everyone happy, and the event pointless."
This reverts commit 705efc6002.

Also fix kill to do the same.
2012-05-06 16:09:47 +01:00
md_5
705efc6002 We can't damage and kill, so we will just kill to make everyone happy, and the event pointless. 2012-05-05 20:01:18 +10:00
snowleo
3a60191a9d Merge branch 'refs/heads/groupmanager' 2012-04-26 10:42:48 +02:00
snowleo
95e6db6797 Revert "New config option 'cancel-afk-on-move' - Set to false you don't use afk." -- This should fix afk mode.
This reverts commit d927d04765.

Conflicts:

	Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
2012-04-26 10:41:24 +02:00
ementalo
e37b1946f5 Latest items.csv by necrodoom 2012-04-25 11:27:18 +01:00
md_5
6d1e2dd10e /me crashes ementalo's face for making the client crash. 2012-04-25 17:02:15 +10:00
snowleo
0668c4214e Fix items.csv 2012-04-24 21:48:28 +03:00
snowleo
1b4c803ce3 Merge pull request #66 from Iaccidentally/patch-8
Necrodoom's update to items.csv
2012-04-24 11:42:50 -07:00
Iaccidentally
8d00da9e98 Necrodoom's update to items.csv 2012-04-24 14:57:56 -03:00
ementalo
1524a06ac6 Updated czech language, thanks tommymortago 2012-04-24 12:29:24 +01:00
md_5
9ca820d45e Small cleanup of things 2012-04-24 20:31:19 +10:00
ementalo
27102d1c38 Adding the kickedAll TL key the the rest of the files 2012-04-24 10:24:08 +01:00
md_5
18b5405c76 Add message to sender when all players kicked, addresses issue #1968 2012-04-24 17:47:27 +10:00
md_5
de541f6654 Use a quick (and working comparer) 2012-04-24 17:44:49 +10:00
ementalo
9d398b1d2e New permission essentials.invsee.preventmodify. People with this permission cannot have their inventories modified by invsee 2012-04-23 23:51:10 +01:00
snowleo
caeb3279cb Merge pull request #64 from mdojcar/patch-1
0.2 version of Czech translate: optimized by mdojcar
2012-04-23 14:42:55 -07:00
ElgarL
06247732da Allow 'manucheckp' to notify when superperms reports false but it is
really negated.
2012-04-22 12:12:50 +01:00
ElgarL
fc7689354f Fix forgetting sub groups on a manload. 2012-04-21 16:58:22 +01:00
mdojcar
a50b74bb36 0.2 version: optimized by mdojcar (modojcar@seznam.cz) - mirne fixy a trochu jsem preklad vylepsil 2012-04-21 09:35:59 +03:00
ElgarL
a21b5fac76 updated classpath (eclipse) for teh whole project 2012-04-21 02:33:13 +01:00
ElgarL
3d9022d8fa remove unneeded dependency of craftbukkit 2012-04-21 02:32:37 +01:00
ElgarL
4e10470acd Remove unneeded dependency of craftbukkit (Eclipse building) 2012-04-21 02:32:02 +01:00
KHobbits
3cc1a462f5 Remove stack trace cleaning, didn't actually remove unwanted elements. 2012-04-20 22:31:25 +01:00
ElgarL
cd7bf5eff2 Prevent null perms getting past the GlobalGroups loader. 2012-04-18 22:22:35 +01:00
KHobbits
8da3b490d9 Slightly widen block break protection on protected signs (still does not block chain breaks). 2012-04-18 01:30:14 +01:00
KHobbits
00c87c0e60 Merge remote branch 'remotes/origin/groupmanager' 2012-04-18 00:39:14 +01:00
KHobbits
507ecc47b6 Switch the order of the alt give syntax to follow vanilla order. 2012-04-18 00:37:44 +01:00
ElgarL
6ac8abdac8 Fix a couple of perms in GlobalGroups 2012-04-17 18:57:11 +01:00
KHobbits
4a29dd4c9c Don't get the Essentials user object when we don't need it. 2012-04-17 01:14:07 +01:00
KHobbits
6d06636bc2 Wrong default value for AFK disable pickup. 2012-04-17 00:53:57 +01:00
ElgarL
da857895fc Re-initialize the WorldsHolder on a reload, as un-registering and
re-registering a new holder means all plugins have to check for the new
service on every quiery.
2012-04-16 23:54:33 +01:00
KHobbits
425a2184c6 Merge branch 'master' of github.com:essentials/Essentials 2012-04-16 21:43:19 +01:00
KHobbits
6919b52f61 Null check, for quick exit. 2012-04-16 21:42:53 +01:00
md_5
8eb7428ad1 Do we have to remind @khobbits not to code while drunk. Again. 2012-04-16 19:43:53 +10:00
KHobbits
327a57de3c Fixing a few TL issues. 2012-04-16 10:33:51 +01:00
KHobbits
01ba8dbc3f Don't fire entity powertool commands, with our user object. 2012-04-16 10:19:19 +01:00
md_5
b69a16bcf0 Remove EssentialsAntiCheat pending the release of a better alternative in 2.0 by @neatmonster 2012-04-16 16:51:29 +10:00
KHobbits
a97b3abca3 Minor perf tweak. 2012-04-15 23:13:34 +01:00
KHobbits
d927d04765 New config option 'cancel-afk-on-move' - Set to false you don't use afk. 2012-04-15 22:50:55 +01:00
KHobbits
6dc2e96509 Few missing default permissions. 2012-04-15 22:02:08 +01:00
KHobbits
26a0cd0761 Merge remote branch 'remotes/origin/groupmanager' 2012-04-15 19:41:06 +01:00
KHobbits
75b7f7ac22 Fix metrics errors to be... descriptive. 2012-04-15 15:12:42 +01:00
KHobbits
d08ea5a650 Revert "Add option to disable jails entirely."
This reverts commit 34f5c19f99.
2012-04-14 23:18:20 +01:00
KHobbits
1bd1665faa Throw syntax error on /item, if syntax is wrong. 2012-04-14 17:53:33 +01:00
KHobbits
b3847270fa Merge branch 'master' of github.com:essentials/Essentials 2012-04-14 15:58:12 +01:00
KHobbits
055603b09e Fix null locations in /seen 2012-04-14 15:57:47 +01:00
md_5
34f5c19f99 Add option to disable jails entirely. 2012-04-14 15:21:42 +10:00
md_5
602bd5b0d4 Change some ordering and clean pmd warnings 2012-04-14 15:07:10 +10:00
KHobbits
45de85dae2 Optimize sign interacts. 2012-04-14 04:54:01 +01:00
KHobbits
8b9ff2c58a Try to speed up teleport events. 2012-04-14 04:13:37 +01:00
ElgarL
1599a36642 Correct formatting in command list. 2012-04-13 23:56:50 +01:00
ElgarL
1e30f23ca6 Finally remove all deprecated methods. 2012-04-13 15:16:08 +01:00
ElgarL
2f74510cce Code tidy 2012-04-13 15:00:55 +01:00
ElgarL
08bff3ea5f Stop using our own deprecated methods as we tell others to do. 2012-04-13 14:57:23 +01:00
ementalo
90d2451ce2 Merge branch 'master' of https://github.com/essentials/Essentials 2012-04-13 14:52:25 +01:00
ementalo
5b5df254d5 Don't kill tamed ocelots with killall Test #1921 2012-04-13 14:49:15 +01:00
ElgarL
a028abe036 Update all code formatting to use tabs for indentation. 2012-04-13 14:40:26 +01:00
ElgarL
677534c0b7 Fixed the 'last' nested throw/catch and rework all user and group
reading to be certain to trap all errors.
2012-04-13 13:58:05 +01:00
snowleo
2d319fe5aa Fix double charge in /jump 2012-04-12 23:57:19 +03:00
ementalo
bbd2c53dd8 Merge branch 'master' of github.com:essentials/Essentials 2012-04-12 21:26:34 +01:00
ementalo
d1eb7e5614 Display name of new world on world change 2012-04-12 21:26:19 +01:00
snowleo
d9ee666770 Merge branch 'refs/heads/groupmanager' 2012-04-12 04:27:04 +02:00
ElgarL
9f744beb13 Unregister the worldsHolder as a service on a reload/shutdown instead of
the whole plugin.
2012-04-12 03:21:38 +01:00
ElgarL
62a297ec6d Fix silly nested throw/catch statements. Errors are now correctly
generated when reading yml's.
2012-04-12 01:21:22 +01:00
snowleo
3f9e19d279 Merge branch 'refs/heads/groupmanager'
Conflicts:
	EssentialsGroupManager/src/globalgroups.yml
2012-04-11 21:57:58 +02:00
snowleo
c9e64d9e46 Prevent that a config file is loaded/saved by more than one thread. 2012-04-11 22:51:34 +03:00
ElgarL
25759064ff Expand GlobalGroups.yml and groups.yml to cover the VanishNoPacket
plugin. Demonstrating how to negate and add nodes when using the '*'
permission with inheritance.
2012-04-11 19:10:28 +01:00
ElgarL
cd24ffbada Fix 'manuadd' to use the default or selected world (via 'manselect'), if
the world is not specified in the command.
2012-04-10 20:48:34 +01:00
ElgarL
cdae0898c7 Stop the error on shutdown if GM failed to load at startup.
GroupManager will now generate it's own log (in the GM folder) to
keep things tidy, but also to account of those players unable to
find/access their server.log.
Startup errors will now lock out ALL commands other than '/manload'
2012-04-10 20:40:04 +01:00
ElgarL
f02691863b Properly fix concurrent modification when removing all attachments. 2012-04-10 17:02:50 +01:00
md_5
3ac7823678 Bump Bukkit version and hopefully fix building! 2012-04-10 13:24:28 +10:00
snowleo
4c8d0ea2d9 Should fix some exp math issues 2012-04-09 17:52:46 +03:00
snowleo
711d42d604 Server-Layer Part 1 2012-04-08 00:07:53 +02:00
ElgarL
ec4f5cc34d Added missing confirmation message on '/manload'. 2012-04-07 21:30:49 +01:00
ElgarL
e8a42e3947 Better handling of errors in user and group yml's. 2012-04-07 19:24:46 +01:00
ElgarL
e8dd963545 Fix a concurrent modification error when removing all attachments. 2012-04-07 17:21:48 +01:00
md_5
fe8fb70db2 Fix artifacts (reverse-merged from commit a8d8adbefc) 2012-04-07 21:23:58 +10:00
md_5
d8f158ed71 Finish up the speed check. 2012-04-07 21:06:51 +10:00
ElgarL
1c0a5c49a5 Expand 'manwhois' to also list a users subgroups. 2012-04-07 11:47:07 +01:00
KHobbits
bb83dcc828 Allow vanilla syntax of /give 2012-04-07 04:39:12 +01:00
KHobbits
0eefb7f5a1 Remove 'set' and 'add' from /time command args, to allow use of original syntax. 2012-04-07 04:22:17 +01:00
KHobbits
fe95cfe03b New ingame command syntax: /kit <kit> <playername>
New Permission: essentials.kit.others - allows giving kits to other people.
New console commands: /kit & /kit <kit> <playername>
2012-04-07 03:34:01 +01:00
KHobbits
7a6368a980 Console should be able to kick everyone. 2012-04-07 03:07:07 +01:00
KHobbits
9e86681722 Move player loading and updates to new thread, to reduce on join lag. 2012-04-06 19:19:08 +01:00
ElgarL
25bd91eb80 Remove all permission attachments when performing a manload or restart. 2012-04-06 12:53:36 +01:00
KHobbits
6504c88bf7 Chat spy, should show otherworld chat. 2012-04-06 02:36:27 +01:00
KHobbits
6a75d6fe86 Merge branch 'master' of github.com:essentials/Essentials 2012-04-05 23:37:33 +01:00
KHobbits
bc876611d0 Fix /time not working with the '##pm' syntax. 2012-04-05 23:36:57 +01:00
md_5
798ea77736 Add version tag 2012-04-06 07:39:25 +10:00
md_5
21ef83c0ff Add polish translation, thanks losdamianos 2012-04-06 07:33:10 +10:00
ElgarL
bd7af593e7 Don't throw errors when attempting to remove permission attachments
(bukkit will have already removed it).
2012-04-05 21:06:48 +01:00
snowleo
f73a5d0e8d Merge remote-tracking branch 'origin/groupmanager' 2012-04-05 17:05:43 +02:00
ElgarL
f7bc04bc34 Fix an error I caused trying to modify an unmodifiable list when parsing
'*' permissions.
2012-04-05 15:02:08 +01:00
KHobbits
aa43703094 Fixing up NPE bug in jails (implemented in Dev2.9.163) 2012-04-05 13:28:23 +01:00
ElgarL
381886245b Update to 2.0
Fix GM reporting of permission inheritance to retain the correct order.
Lower inheritance groups can no longer negate a higher groups
permissions.
2012-04-05 12:54:26 +01:00
md_5
ea50813107 Negate some 1 class packages 2012-04-05 20:52:31 +10:00
md_5
501e510cb3 But EvenPrime Bukkit does it for you! 2012-04-05 20:48:51 +10:00
md_5
2ce7f5726f Why are all these static methods final? Also what black magic is an enum set :O 2012-04-05 20:47:09 +10:00
md_5
3d3b57cb1b Hopefully get the basis of a speed check. This whole idea of checks needs to be cleaned up. 2012-04-05 20:37:20 +10:00
md_5
530c2c4c11 Add config option for disabling of cheats. Off by default 2012-04-05 20:24:56 +10:00
md_5
0bded50f5f Boost to an incredibly bulky config 2012-04-05 20:18:47 +10:00
md_5
a8d8adbefc Update Bukkit version 2012-04-05 19:38:29 +10:00
KHobbits
08642ada20 Added wiki names for enchantments. 2012-04-05 05:46:36 +01:00
KHobbits
10cb4c03b7 Jail update, jailed people can't attack other players. 2012-04-05 03:22:49 +01:00
KHobbits
e7d1cb8bb6 Updating plugin.yml to add sendall syntax. 2012-04-04 23:02:13 +01:00
KHobbits
5a7d733cbf Added extra params to setHome TL key {0} world {1} x {2} y {3} z 2012-04-04 18:19:39 +01:00
ementalo
e23f491500 1.2.5 Update Craftbukkit #2149 Bukkit ??? 2012-04-04 15:33:11 +01:00
KHobbits
98b716dfbf Fix unit tests. 2012-04-04 03:21:14 +01:00
KHobbits
2ddd31a37d Report invalid enchantments in kits.
Improve error logging
2012-04-04 03:09:27 +01:00
KHobbits
2b99ed9a2a Catch all values greater than 10 years to avoid exploits. 2012-04-04 02:07:01 +01:00
KHobbits
eeea16a99a Cap mute/ban/jail to 10 years (any more is silly).
Cap time descriptions to 3 significant notions.
2012-04-04 01:55:06 +01:00
KHobbits
e52996609a Update seen to show better data for vanished users:
New Perm: essentials.seen.extra - Shows some extra information for staff
2012-04-04 01:20:57 +01:00
KHobbits
932de33349 Little bit of powertools code cleanup. 2012-04-04 00:40:58 +01:00
KHobbits
195604997b Enable powertools if they are disabled when setting a new tool. 2012-04-04 00:39:59 +01:00
KHobbits
a3a3f81e11 Better hide vanished players. 2012-04-03 16:12:49 +01:00
KHobbits
d0f3fb4417 Command cost api update: Can now set fallback costs.
Repair command addition: ontop of 'repair' and 'repair-<itemname>' you can now charge for 'repair-all' to charge more for /repair all or 'repair-item' to charge per item repaired.
2012-04-03 15:35:13 +01:00
ElgarL
183602ac28 Prevent Null entries in group inheritance from throwing errors. 2012-04-03 14:30:27 +01:00
KHobbits
37370f722c Switch sign listeners back to compare block id, rather than materials. 2012-04-02 22:58:07 +01:00
ElgarL
e2e51c9c95 Added a new permission node 'groupmanager.op'. This will cause players
with this node to be treated as op's when using GroupManager commands
(they will still require each commands
permission node to use them).
2012-04-02 21:12:19 +01:00
KHobbits
bf1e073ef4 Allow tppos to be used in console. 2012-04-02 02:47:44 +01:00
KHobbits
767703bfc9 Optional second param to /gm to force gamemode on other players. 2012-04-02 02:31:31 +01:00
KHobbits
0e0a96b6d8 Listener Cleanup 2012-04-02 02:22:30 +01:00
ElgarL
3f73272524 Force remove player attachments on disconnect, and tidyup during player
join in case of any errors. Fixes a bug of losing permissions.
2012-04-01 03:44:37 +01:00
KHobbits
d72f831519 Make sure can build checks in permbukkit/privileges work for admins/owners. 2012-04-01 02:44:11 +01:00
KHobbits
c6f25c0df6 Minor cleanup to player events. 2012-03-30 21:44:14 +01:00
KHobbits
17058c220c Add newish signs to default enabled commands config. 2012-03-30 21:04:15 +01:00
KHobbits
0e99b35ab2 Formatting. 2012-03-30 13:29:58 +01:00
KHobbits
e795c6ed0b Don't push vault version to metrics. 2012-03-30 13:27:57 +01:00
KHobbits
f3345247ed Reset ban reason to null on /ban <player>, if no reason is set. 2012-03-30 11:40:44 +01:00
KHobbits
1101a3243d Fix tpo syntax error. 2012-03-29 22:32:16 +01:00
KHobbits
c7638efc7e Iaccidentally's changes to pt TL. 2012-03-29 21:17:50 +01:00
KHobbits
d90053c8c4 Update TL header. 2012-03-29 18:49:56 +01:00
KHobbits
6235983ddd New translation messages 2012-03-29 18:37:22 +01:00
KHobbits
7a249abc67 Update default permissions. 2012-03-29 18:14:24 +01:00
KHobbits
c2c613b652 Missing air materials. 2012-03-29 16:41:13 +01:00
ElgarL
590357004d Merge branch 'groupmanager' of https://elgarl@github.com/essentials/Essentials.git into groupmanager 2012-03-29 14:09:07 +01:00
ElgarL
9dbeb1407c Catch errors caused by bad indentation in yml's. 2012-03-29 14:02:53 +01:00
ElgarL
1ef8ab70d1 Stop attempting to push empty permissions when players edit the yml's
incorrectly.
2012-03-29 13:41:59 +01:00
KHobbits
c09ada201c Interact event cleanup 2012-03-29 03:06:52 +01:00
KHobbits
d7139cb16c Update to CB #2126 B #1425
Min CB version changed to 2122
2012-03-29 02:00:51 +01:00
KHobbits
10f82a6723 Fix using /setworth <price> 2012-03-29 00:13:56 +01:00
KHobbits
2aed3af3c4 Merge branch 'groupmanager' of github.com:essentials/Essentials 2012-03-28 17:37:03 +01:00
KHobbits
c45d38ca69 Implement all abstract methods. 2012-03-28 15:12:25 +01:00
KHobbits
576642a573 Merge branch 'master' of github.com:essentials/Essentials 2012-03-28 15:03:45 +01:00
KHobbits
9d545dcbf1 Don't register jail listeners, if no jails are set. 2012-03-28 15:03:18 +01:00
snowleo
71d8744840 Fix for the fix 2012-03-28 11:21:31 +02:00
snowleo
32c689e0f5 Fix isAffordableFor in Trade class
This fixes buy signs giving out items, when the player has essentials.eco.loan permission, but min-money in config is set to 0.
2012-03-28 10:36:10 +02:00
KHobbits
5b62661404 Pull example perm files out of the ess jar. 2012-03-28 00:59:51 +01:00
KHobbits
a7df8a1a0a Try to reduce lag caused by join spam. 2012-03-27 21:08:06 +01:00
snowleo
b14e7c197f Adds pvp protection after teleport 2012-03-27 21:15:11 +02:00
KHobbits
97eed50ccc Adding world permission checks to:
tpaall tpall tpahere tphere tpohere
User is required to have the permission for the world he is in, before he can teleport users outside this world, to it.
2012-03-27 15:28:40 +01:00
ElgarL
b8453ac792 Update GlobalGroups.yml for new/changed Towny permission nodes. 2012-03-27 10:14:53 +01:00
ElgarL
fe7f479e63 Auto rename all case sensitive world folders to lower case (if
possible).
2012-03-26 20:06:59 +01:00
ElgarL
50ea442bf0 Treat all world names as lower case for file handling (please check in
your worlds folder. You should have no folders with upper case letters
from now).
2012-03-26 19:18:19 +01:00
KHobbits
5d45495371 Fix kit enchants for people without oversized stack permission.
Add permissions lookup to debug mode.
2012-03-26 13:28:32 +01:00
KHobbits
e30d900289 Clarify how backup works.
Add option for auto save-all.
2012-03-26 00:49:53 +01:00
KHobbits
2cc96e995b Update tp to check if target player has tptoggle disabled.
Update tpo to allow player to player tp.
2012-03-25 23:32:04 +01:00
KHobbits
47cf1289d7 Don't show 'backup started' on /backup if it hasn't been configured. 2012-03-25 19:10:39 +01:00
KHobbits
d2506cd928 Reorder login/join event calls. 2012-03-25 17:27:06 +01:00
KHobbits
1dbb11ea55 Don't override other plugins which allow joining over capacity. 2012-03-25 16:46:36 +01:00
KHobbits
b60363b6bd Reduce amount of move event calls being processed. 2012-03-25 16:30:22 +01:00
KHobbits
00033c11bc Update [balance] sign to use currency formatting. 2012-03-25 14:26:08 +01:00
KHobbits
c588b78adb Merge branch 'master' of github.com:essentials/Essentials 2012-03-25 14:20:53 +01:00
KHobbits
7bd7992b24 Fix chat format regex. 2012-03-25 14:20:26 +01:00
snowleo
6f86b7400a CopyPaste-Fail 2012-03-25 11:47:26 +02:00
snowleo
e13a2c371d Wrong url 2012-03-25 11:45:50 +02:00
snowleo
0cbded9fca This is no longer stored in file, so it's not part of UserData anymore. 2012-03-25 11:44:33 +02:00
snowleo
3e6e71ca41 Optimize metrics 2012-03-25 11:39:19 +02:00
snowleo
1b2e3b1951 AntiCheat has different version numbers, so don't check. 2012-03-25 11:09:13 +02:00
KHobbits
e53a480c22 Should probably cancel this at lowest. 2012-03-25 02:55:19 +01:00
KHobbits
7280c1c468 Merge branch 'master' of github.com:essentials/Essentials 2012-03-25 02:34:19 +01:00
KHobbits
b7221516dc Invsee now shows a live player inventory in a window, rather than cloning players inventory.
New Permission: essentials.invsee.modify - Player with this permission will be able to add/remove items from the other players inventory.
2012-03-25 02:33:52 +01:00
KHobbits
71aaf81bba Update Essentials/src/config.yml 2012-03-24 23:28:56 +00:00
KHobbits
160c3f428c Mysql is bad. 2012-03-24 23:25:43 +00:00
KHobbits
3c3e8d167f Better English. 2012-03-24 21:12:15 +00:00
KHobbits
7ca2b65c4f New permission check: essentials.list.hidden is now required to /getpos hidden players. 2012-03-24 21:08:45 +00:00
md_5
2566d8a0db Fix flying when not in creative mode 2012-03-24 10:37:11 +11:00
KHobbits
a8cbb5c8f5 Extra itemcsv. 2012-03-23 23:13:04 +00:00
KHobbits
72028086c0 'Enabled' looks better than 'true'. 2012-03-23 22:38:01 +00:00
KHobbits
dddf529ff5 Make sure items don't stack wrong in [free] signs. 2012-03-23 20:15:03 +00:00
KHobbits
b3de0aabae Fix for showing plugins when user has no permission. 2012-03-23 18:26:19 +00:00
KHobbits
77c6a3b730 Wrong colour code symbol. 2012-03-23 17:50:15 +00:00
KHobbits
bb54dbb688 Merge remote branch 'remotes/origin/groupmanager' 2012-03-23 17:44:00 +00:00
KHobbits
0a74da88d6 Help command refresh. 2012-03-23 17:16:09 +00:00
KHobbits
d0b94938e0 Merge branch 'master' of github.com:essentials/Essentials 2012-03-23 13:53:08 +00:00
snowleo
a0cba8e63d Spaaaaaace! So much space! Gotta see it all! 2012-03-23 14:30:00 +01:00
KHobbits
a4d7b5dcf8 Merge branch 'master' of github.com:essentials/Essentials 2012-03-23 13:26:12 +00:00
KHobbits
c503adabc5 Fix url matching. 2012-03-23 13:26:03 +00:00
snowleo
8a22258945 Fix utf-8 decoding problems. 2012-03-23 14:22:10 +01:00
snowleo
29a190f93a http://youtu.be/8DdeLUA0Fms 2012-03-23 12:11:01 +01:00
KHobbits
5c0b522026 Merge branch 'master' of github.com:essentials/Essentials 2012-03-23 10:18:16 +00:00
KHobbits
c46f14665c Adding missing entities to Protect Spawn Blacklist 2012-03-23 10:16:38 +00:00
snowleo
20c973dab2 Fix UTF8 handling in Configuration class 2012-03-23 11:13:44 +01:00
KHobbits
49cb482ca5 Update Essentials/src/config.yml 2012-03-23 10:03:15 +00:00
KHobbits
033c2e22cd Remove white user prefix, if prefix is blank. Messes with EssentialsChat colouring. 2012-03-23 07:56:44 +00:00
KHobbits
2f434291cb Fixing chat color formatting. 2012-03-23 00:19:27 +00:00
KHobbits
42d01471d3 Disabling player list updates by default (can mess with tab completion)
Hopefully this will be reverted if/when patch is found.
2012-03-23 00:15:22 +00:00
KHobbits
c5eb1bb105 Improve kit matching, and add enchantments.
Enchanted kit example in config.yml
2012-03-22 23:47:35 +00:00
KHobbits
3c9057f68e Fix jar building. 2012-03-22 23:10:59 +00:00
KHobbits
96f0dd5824 Update CB to 2105 2012-03-22 23:07:23 +00:00
KHobbits
71358629f4 New command: /fly
New perm: essentials.fly.others
2012-03-22 22:59:52 +00:00
KHobbits
284fef00e7 Split formatting perms for signs as well. 2012-03-22 22:26:04 +00:00
KHobbits
d20519ef8b New Permission: essentials.chat.url
Without this perm, URLs will be modified not to be links.
2012-03-22 22:19:58 +00:00
KHobbits
0dc1270aed Split colour permissions into 3: color/magic/format 2012-03-22 22:07:13 +00:00
KHobbits
cd0d37f73c Update to 1.2.4 (R0.1)
New Minimum CB version: 2100
2012-03-22 20:55:56 +00:00
KHobbits
56fce34539 Extra items in 1.2.4 2012-03-22 20:48:27 +00:00
KHobbits
165a76d492 Add villager professions to /spawnmob 2012-03-22 20:03:52 +00:00
ElgarL
9570e5cfd9 Correct Grammar 2012-03-22 17:54:59 +00:00
ElgarL
c6bb10489e Merge pull request #62 from bonney12/groupmanager
Update language and commenting
2012-03-22 10:53:25 -07:00
KHobbits
3d7d4a47d9 Bukkit R0.3 api updates. 2012-03-22 17:26:05 +00:00
KHobbits
968c849b13 Update missing 1.2.3 items in items.csv 2012-03-22 17:25:42 +00:00
KHobbits
1746569e1a Extra Trees 2012-03-22 17:25:13 +00:00
KHobbits
209c91d3de Fixed again. 2012-03-22 12:02:19 +00:00
KHobbits
7d7c1d34cf Fix typo. 2012-03-22 11:57:30 +00:00
KHobbits
c3ad486f65 Merge branch 'master' of github.com:essentials/Essentials 2012-03-21 23:55:19 +00:00
KHobbits
7bcec32134 Cleaning up displaynames 2012-03-21 23:54:57 +00:00
KHobbits
b19b08dc6e Merge pull request #63 from Iaccidentally/patch-6
update default player-commands to support new and missed commands
2012-03-21 09:25:05 -07:00
Iaccidentally
264e175d6c update default player-commands to support new and missed commands 2012-03-21 13:23:36 -03:00
Michael Bonney
bcd4fd9bff Removed Portuguese text, and added English replacements. Made more sense of the sentences, and also changed an incorrect message to it's proper form. 2012-03-21 16:13:34 +00:00
KHobbits
3e88fb44f4 Split if tree for readability. 2012-03-20 15:03:53 +00:00
KHobbits
518b013a63 Teleport check cleanup 2012-03-20 13:26:49 +00:00
KHobbits
e752538568 Fix per world teleport permission checking. 2012-03-20 11:53:05 +00:00
KHobbits
970364886c Add 'color' sign type to config file.
Enforce colour permission on signs when essentials signs are enabled.
2012-03-19 08:21:39 +00:00
KHobbits
07f859e38b Missing kit time check from [kit] signs. 2012-03-18 17:15:46 +00:00
md_5
dc4ca6386f Fix all other references 2012-03-18 14:58:19 +11:00
snowleo
a79da0418d Fix ant copy 2012-03-18 04:54:26 +01:00
md_5
5014b93e16 Use maven for versioning. Note GroupManager versioning is broken. 2012-03-18 14:33:16 +11:00
KHobbits
c806059958 Only show nickname update message in debug mode. 2012-03-18 03:29:49 +00:00
md_5
b643f2c1d6 Add the maven compile plugin to ensure consistant builds 2012-03-18 14:21:17 +11:00
KHobbits
14bce8fd82 Shorten help messages. 2012-03-18 03:01:44 +00:00
KHobbits
17be04cd99 Error and info cleanup. 2012-03-17 20:23:46 +00:00
KHobbits
b93847f077 Merge remote branch 'remotes/origin/groupmanager' 2012-03-17 18:20:33 +00:00
ElgarL
6476158462 Don't remove an attachment on a player leaving as Bukkit never forgets
it. This fixes non mirrored permissions being messed up if a player
relogs.
2012-03-17 15:56:40 +00:00
snowleo
6dd73ff9d0 Merge branch 'refs/heads/groupmanager' 2012-03-17 13:38:51 +01:00
ElgarL
b72083fb18 Removed some debug spam. 2012-03-17 12:37:23 +00:00
snowleo
ca11d4d98b Fix bukkit download url 2012-03-17 11:15:28 +01:00
snowleo
12cb4fd5f8 Fix bukkit download url 2012-03-17 11:12:32 +01:00
md_5
97530fd15d Disable soft deterrents for now (reverse-merged from commit ec5de33274)
Everyone in #essentials can burn andrewkm
2012-03-17 20:39:58 +11:00
md_5
ec5de33274 Disable soft deterrents for now 2012-03-17 20:19:03 +11:00
md_5
1d08e1ccda Last ditch attempt at making work properly 2012-03-17 20:13:38 +11:00
md_5
9ea91790e1 Fix the permissions 2012-03-17 19:53:15 +11:00
KHobbits
4df4eba2a5 Merge remote branch 'remotes/origin/groupmanager' 2012-03-17 08:01:19 +00:00
KHobbits
762105d692 New permission: essentials.tp.others - Allows players to /tp <p1> <p2> replaces old reused permission.
New permission usage: if world-teleport-permissions is true in the config, TP commands will now check for essentials.world.<worldname> when a tp would switch worlds.
2012-03-17 06:10:02 +00:00
md_5
0075613223 [EAC] small cleanup regarding events 2012-03-17 17:02:19 +11:00
KHobbits
e4ce814c2f Comments to SetExpFix. 2012-03-17 03:38:32 +00:00
KHobbits
87cd693020 Adding Exp to /whois, shows total exp and ingame level.
Due to the way minecraft calculates levels (flawed formula), its possible to not match calculated level.
2012-03-17 01:43:49 +00:00
KHobbits
baadd4b1cb Adding reference to &k in MOTD. 2012-03-16 23:03:22 +00:00
KHobbits
adf3755abb Handle permission check failures better. 2012-03-15 23:15:19 +00:00
KHobbits
5c280e7cb7 Add missing methods. 2012-03-15 22:23:26 +00:00
KHobbits
4a149855ab Updating Bukkit/CraftBukkit to match minimum ver. 2012-03-15 22:15:17 +00:00
md_5
cf000b04e4 Fill the entire sign with free goodness 2012-03-15 20:55:56 +11:00
md_5
79cd8d6065 Update minimum CraftBukkit version 2012-03-15 20:51:51 +11:00
md_5
5b930cdc3b Restore [free] and [disposal] signs back to their intended behaviour 2012-03-15 20:48:55 +11:00
snowleo
c09329e5be :P 2012-03-15 09:15:28 +01:00
KHobbits
c513014732 Graph a little bit extra information. 2012-03-15 08:08:25 +00:00
KHobbits
bada36be68 Fix fake explosions. 2012-03-15 06:42:58 +00:00
KHobbits
e5e81eda72 Make /nuke drop tnt from a more reasonable height. 2012-03-15 05:09:34 +00:00
md_5
60ae0559bc Add craftbukkit.jar to the output, allowing for easy upload 2012-03-15 16:07:57 +11:00
KHobbits
45cf2ae960 Make /spawner errors more descriptive. 2012-03-15 04:41:56 +00:00
KHobbits
d0d0117411 Add metric opt out toggle ingame. 2012-03-15 03:49:17 +00:00
KHobbits
5d79863cfc Fixing setwarp command. 2012-03-15 02:12:43 +00:00
KHobbits
b85756f8b1 Adding some simple feature metrics. 2012-03-15 02:12:27 +00:00
KHobbits
8776f4c1c0 Metrics errors aren't important. 2012-03-15 01:32:08 +00:00
KHobbits
5e8fd3993d Basic module graph. 2012-03-15 01:17:12 +00:00
KHobbits
d3033716ca Add Griefcraft metrics to Essentials
Warns on first start, and first staff join, and 5 minute warning before logging starts.
2012-03-15 00:49:22 +00:00
ementalo
6cf2bb5cd9 Adding permissions for overwriting exisitng warps
essentials.warp.overwrite.[warpname] will allow overwrting of exsiting warps
essentials.warp.overwrite.* for all warps
Adding WarpNotFoundException class
2012-03-14 21:16:22 +00:00
md_5
7e3a9f85bf Why was that even there in the first place 2012-03-14 20:16:40 +11:00
md_5
95a1e2ca93 Some simple checks to get rid of those annoying, casual trouble makers 2012-03-14 20:15:26 +11:00
md_5
06068212c9 Move even further away from ant 2012-03-14 17:59:49 +11:00
snowleo
f9668be20e Enchantments are part of bukkit 2012-03-14 04:32:40 +01:00
snowleo
8880873759 Prototype for an abstraction layer for bukkit/mc/spout... 2012-03-14 04:25:40 +01:00
snowleo
90acb796f4 Trade is part of Economy 2012-03-14 03:58:53 +01:00
snowleo
e20f47ab3b Register is part of Economy 2012-03-14 03:57:29 +01:00
snowleo
c7a4d37f6e Moved CommandsHandler to commands package 2012-03-14 03:53:30 +01:00
snowleo
86c85ae92b ExecuteTimer is a Util 2012-03-14 03:50:49 +01:00
snowleo
822ad7ee29 New package bukkit for future use
Since the underlying apis will change (MC, Bukkit, Spout, …) and we probably want to reuse our code, we should start building an abstraction layer.
2012-03-14 03:48:19 +01:00
snowleo
43a933eef7 This belongs to utils 2012-03-14 03:38:27 +01:00
snowleo
67281efac1 The textreader classes are utils, so they should be under the utils package 2012-03-14 03:36:13 +01:00
snowleo
30c7a3af16 Move Economy API, MoneyHolder and WorthHolder to Economy package 2012-03-14 03:33:41 +01:00
snowleo
d0d71283cd Moving location code out of Util class 2012-03-14 03:26:21 +01:00
snowleo
df2abbf50b Missing files from the last commit 2012-03-14 03:24:19 +01:00
snowleo
4d452cfaef Moving the date code out of Util class 2012-03-14 03:18:53 +01:00
snowleo
1f8cf1935f Move utils to new package 2012-03-14 03:10:22 +01:00
snowleo
14a421f870 Moving backup to subpackage 2012-03-14 03:05:12 +01:00
snowleo
1bfe63da96 Splitting permissions and ranks (renamed from groups)
Deleted all old permissions handlers, since we fully use superperms now
2012-03-14 03:01:23 +01:00
KHobbits
267495a406 Fixing warp command costs. 2012-03-13 16:15:01 +00:00
snowleo
b571076915 Fix broken utf8 characters 2012-03-13 03:24:30 +01:00
snowleo
6ea02b53de Merging of master into 3.0
Squashed commit of the following:

commit dfd63a81ac
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 12 16:50:32 2012 +0000

    Missed a TL key.

commit dfbc1956c9
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 12 15:35:20 2012 +0000

    Fixing a few TL Keys

commit c0490c0890
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 12 15:21:37 2012 +0000

    New TL Key, allow formatting/colouring of help output.

commit 2da802d4b7
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 12 15:00:44 2012 +0000

    New permission: essentials.seen.banreason
    With this permission players can see why a user was banned, in /seen.

commit adffbab678
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 12 01:15:10 2012 +0000

    Adding jail time to /whois.

commit e11525ab64
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 12 01:00:57 2012 +0000

    Update offline user check.
    Add ban reason to /seen

commit 8dcd591beb
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 11 23:59:59 2012 +0000

    Update setworth to allow /setworth <price> ingame
    Allow /setworth to be used from console.

commit a40c936bcf
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 11 20:58:54 2012 +0000

    New Permission: essentials.lightning.others
    With this permission you can use /lightning <player>, without only strike based on direction.

commit 5c2622b390
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 11 01:46:01 2012 +0000

    Add Enderman check to EntityChangeEvent (Should fix sheep eating grass).

commit c7046b696a
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Mar 10 21:42:46 2012 +0000

    Use ignoreCancelled on event registration.

commit 9ac5ce8a75
Author: KHobbits <rob@khobbits.co.uk>
Date:   Wed Mar 7 12:14:32 2012 +0000

    Update info.txt to hint at /einfo.

commit 5c55e18d33
Author: KHobbits <rob@khobbits.co.uk>
Date:   Tue Mar 6 23:17:10 2012 +0000

    Fixing typo in config.yml

commit 1db5d61945
Merge: 0b60d4e 1e34a39
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 5 16:25:35 2012 +0000

    Merge branch 'release'

    Conflicts:
    	lib/bukkit.jar
    	lib/craftbukkit.jar

commit 1e34a396cd
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 5 15:51:15 2012 +0000

    Change starter kit to default to stone tools

commit ba96117f55
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 5 14:17:09 2012 +0000

    Temp fix to disable version check on R7

commit 96b217cbe8
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 5 08:41:19 2012 +0000

    Craftbukkit/Bukkit R7

commit 0dd5c0370e
Author: md_5 <md_5@bigpond.com>
Date:   Mon Mar 5 18:40:18 2012 +1100

    I dont think free noteblocks are a good idea

commit bdf32cde9e
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 5 00:39:37 2012 +0000

    Missed one.

commit e91ed60441
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 5 00:22:31 2012 +0000

    Fixing spawnmob count.

commit 8577202f48
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 5 00:19:40 2012 +0000

    Add listgroups as TL key

commit 7819b9d2f0
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 5 00:08:37 2012 +0000

    Apply colors to group tags.

commit 15c0565923
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 4 21:54:51 2012 +0000

    Build custom mob list /spawnmob

commit 2b25ca2932
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 4 21:43:24 2012 +0000

    CME

commit c7a6677d52
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 4 20:06:50 2012 +0000

    Adding starter/newbie kit to EssentialsSpawn
    Optimization to EssentialsSpawn join event.

commit c3d5b32986
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 4 16:17:16 2012 +0000

    Extra command alias.

commit cbfb524195
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 4 10:11:58 2012 +0000

    Allow more currency customization.
    Added currency key to messages.

commit b16a1f7237
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 4 09:20:03 2012 +0000

    Adding option to modify all users balances (including offline) /eco reset ** <amount>

commit e28f1b1be3
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 4 08:18:25 2012 +0000

    Half-revert double backflip. 10 points.
    (op prefix changes that md-5 broke, thinking I broke op prefixes)

commit b512a243e7
Author: md_5 <md_5@bigpond.com>
Date:   Sun Mar 4 15:43:00 2012 +1100

    Fix op colours, which KHobbits broke!

commit 873c9880dd
Author: Chris Ward <chris@chrisgward.com>
Date:   Sat Mar 3 19:21:27 2012 +1100

    Cleanup

    Signed-off-by: Chris Ward <chris@chrisgward.com>

commit e6736e48a5
Author: Chris Ward <chris@chrisgward.com>
Date:   Sat Mar 3 18:07:43 2012 +1100

    Cleanup

    Signed-off-by: Chris Ward <chris@chrisgward.com>

commit caf598f55b
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Mar 3 07:09:41 2012 +0000

    Capital case for formatting.

commit 619e099a04
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Mar 3 07:03:54 2012 +0000

    Force all kits to lowercase.

commit faba1e3604
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Mar 3 05:27:02 2012 +0000

    *make it look like i'm doing something*

commit 7cb728b15f
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Mar 3 05:09:03 2012 +0000

    I think switches are better.

commit 3e3c7f0d54
Author: KHobbits <rob@khobbits.co.uk>
Date:   Fri Mar 2 19:05:30 2012 +0000

    Only update displayname on world change, not every teleport.

commit a45c19a08b
Author: KHobbits <rob@khobbits.co.uk>
Date:   Fri Mar 2 17:05:55 2012 +0000

    Extra command aliases

commit eb74a1de9c
Author: KHobbits <rob@khobbits.co.uk>
Date:   Fri Mar 2 17:03:34 2012 +0000

    Make the antioch message optional.

commit 8450734cf1
Author: KHobbits <rob@khobbits.co.uk>
Date:   Fri Mar 2 16:54:12 2012 +0000

    Entity event cleanup

commit 016299a1dd
Author: KHobbits <rob@khobbits.co.uk>
Date:   Fri Mar 2 16:33:20 2012 +0000

    Shouldn't really be canceling events at priority monitor, oops.

commit d27ff9abb6
Author: KHobbits <rob@khobbits.co.uk>
Date:   Fri Mar 2 16:29:06 2012 +0000

    Don't think we need animation event anymore.

commit cdf5d45483
Author: Iaccidentally <coryhuckaby@gmail.com>
Date:   Thu Mar 1 23:10:32 2012 -0500

    update messages.properties for the new bukkit download link (ci.bukkit,org no longer works)

commit 0b60d4efe2
Author: md_5 <md_5@bigpond.com>
Date:   Mon Mar 5 18:40:18 2012 +1100

    I dont think free noteblocks are a good idea

commit d31e434e4d
Author: md_5 <md_5@bigpond.com>
Date:   Mon Mar 5 18:28:04 2012 +1100

    Allow spamming of this, by reducing explosion damage to 0, same effect, no mess

commit fabc1c3dd9
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 5 00:39:37 2012 +0000

    Missed one.

commit 68fbc40605
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 5 00:22:31 2012 +0000

    Fixing spawnmob count.

commit 8b7c5cf2ed
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 5 00:19:40 2012 +0000

    Add listgroups as TL key

commit 1811631b93
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Mar 5 00:08:37 2012 +0000

    Apply colors to group tags.

commit 7cec1564b9
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 4 21:54:51 2012 +0000

    Build custom mob list /spawnmob

commit a75eefcdd4
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 4 21:43:24 2012 +0000

    CME

commit 6a9027da6d
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 4 20:06:50 2012 +0000

    Adding starter/newbie kit to EssentialsSpawn
    Optimization to EssentialsSpawn join event.

commit e55aa3cea7
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 4 16:17:16 2012 +0000

    Extra command alias.

commit 1ce2c60bf4
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 4 16:01:49 2012 +0000

    Updating Craftbukkit #2034 Bukkit #1378

commit 6da705c86f
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 4 10:11:58 2012 +0000

    Allow more currency customization.
    Added currency key to messages.

commit c3fa56322b
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 4 09:20:03 2012 +0000

    Adding option to modify all users balances (including offline) /eco reset ** <amount>

commit 53cfab229b
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 4 08:18:25 2012 +0000

    Half-revert double backflip. 10 points.
    (op prefix changes that md-5 broke, thinking I broke op prefixes)

commit b62217f301
Merge: 860f6a4 d9a8453
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Mar 4 08:13:29 2012 +0000

    Merge branch 'master' of github.com:essentials/Essentials

commit d9a8453995
Author: md_5 <md_5@bigpond.com>
Date:   Sun Mar 4 15:43:00 2012 +1100

    Fix op colours, which KHobbits broke!

commit e6181928e8
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Mar 3 17:01:53 2012 +0100

    Cleanup of /spawnmob

commit 860f6a41ac
Merge: 8aa7b1f cea5c81
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Mar 3 13:49:26 2012 +0000

    Merge branch 'master' of github.com:essentials/Essentials

commit 8aa7b1f301
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Mar 3 13:48:58 2012 +0000

    Update CB #2032 B #1377
    Min CB #2015

commit cea5c81d44
Merge: 504f28d 35576ab
Author: md-5 <md_5@bigpond.com>
Date:   Sat Mar 3 00:34:00 2012 -0800

    Merge pull request #56 from Iaccidentally/patch-4

    Allow spawning baby villagers and ocelots

commit 504f28df1a
Merge: 3360551 74a5755
Author: md-5 <md_5@bigpond.com>
Date:   Sat Mar 3 00:31:48 2012 -0800

    Merge pull request #55 from chrisward/master

    Just a really small cleanup

commit 74a57553f6
Author: Chris Ward <chris@chrisgward.com>
Date:   Sat Mar 3 19:21:27 2012 +1100

    Cleanup

    Signed-off-by: Chris Ward <chris@chrisgward.com>

commit 35576ab64a
Author: Iaccidentally <coryhuckaby@gmail.com>
Date:   Sat Mar 3 03:04:54 2012 -0500

    add little babbys

commit 33605517ff
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Mar 3 07:09:41 2012 +0000

    Capital case for formatting.

commit 6da6e4d2e8
Author: Chris Ward <chris@chrisgward.com>
Date:   Sat Mar 3 18:07:43 2012 +1100

    Cleanup

    Signed-off-by: Chris Ward <chris@chrisgward.com>

commit c0fa03ede2
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Mar 3 07:03:54 2012 +0000

    Force all kits to lowercase.

commit 301b609e93
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Mar 3 05:27:02 2012 +0000

    *make it look like i'm doing something*

commit b6bbe237ea
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Mar 3 05:09:03 2012 +0000

    I think switches are better.

commit de7ab13c03
Author: KHobbits <rob@khobbits.co.uk>
Date:   Fri Mar 2 19:05:30 2012 +0000

    Only update displayname on world change, not every teleport.

commit 7a0f4da860
Author: KHobbits <rob@khobbits.co.uk>
Date:   Fri Mar 2 17:05:55 2012 +0000

    Extra command aliases

commit 1bbbfe1c96
Author: KHobbits <rob@khobbits.co.uk>
Date:   Fri Mar 2 17:03:34 2012 +0000

    Make the antioch message optional.

commit 25ebe68389
Author: KHobbits <rob@khobbits.co.uk>
Date:   Fri Mar 2 16:54:12 2012 +0000

    Entity event cleanup

commit 7737d19c5a
Author: KHobbits <rob@khobbits.co.uk>
Date:   Fri Mar 2 16:33:20 2012 +0000

    Shouldn't really be canceling events at priority monitor, oops.

commit 622ca4bf8a
Author: KHobbits <rob@khobbits.co.uk>
Date:   Fri Mar 2 16:29:06 2012 +0000

    Don't think we need animation event anymore.

commit b090afbeb3
Merge: 21a248e dce1495
Author: KHobbits <rob@khobbits.co.uk>
Date:   Thu Mar 1 20:15:16 2012 -0800

    Merge pull request #54 from Iaccidentally/patch-3

    update messages.properties for the new bukkit download link (ci.bukkit,o...

commit dce149511e
Author: Iaccidentally <coryhuckaby@gmail.com>
Date:   Thu Mar 1 23:10:32 2012 -0500

    update messages.properties for the new bukkit download link (ci.bukkit,org no longer works)

commit 21a248e94d
Author: snowleo <schneeleo@gmail.com>
Date:   Fri Mar 2 01:30:52 2012 +0100

    Will be removed until the next release XD

commit f1aed4b521
Author: snowleo <schneeleo@gmail.com>
Date:   Fri Mar 2 00:40:50 2012 +0100

    Better cats

commit 7564ebf79e
Author: snowleo <schneeleo@gmail.com>
Date:   Fri Mar 2 00:18:31 2012 +0100

    Fix world heights

commit b9aecbe1d4
Author: snowleo <schneeleo@gmail.com>
Date:   Fri Mar 2 00:12:22 2012 +0100

    Min version CB# 2004

commit 49eb451a76
Author: snowleo <schneeleo@gmail.com>
Date:   Fri Mar 2 00:09:50 2012 +0100

    New eggs

commit 64d866a77d
Author: snowleo <schneeleo@gmail.com>
Date:   Fri Mar 2 00:06:57 2012 +0100

    New Entities and Items for 1.2

commit f75779aa7a
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Mar 1 23:57:34 2012 +0100

    CB#2004 B#1368

commit 5622882602
Merge: b3d3928 6df3b90
Author: KHobbits <rob@khobbits.co.uk>
Date:   Thu Mar 1 22:37:15 2012 +0000

    Merge branch 'master' of github.com:essentials/Essentials

commit b3d3928db8
Author: KHobbits <rob@khobbits.co.uk>
Date:   Thu Mar 1 22:36:51 2012 +0000

    Kit sign cleanup

commit 6df3b9008a
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Mar 1 23:23:23 2012 +0100

    update inventory

commit c36ca65e09
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Mar 1 23:09:48 2012 +0100

    Bukkit broke this sign :(

commit 2e788802fe
Author: KHobbits <rob@khobbits.co.uk>
Date:   Thu Mar 1 22:04:50 2012 +0000

    Fix kit timers resetting on server restart.

commit b0552019f5
Author: KHobbits <rob@khobbits.co.uk>
Date:   Thu Mar 1 21:47:01 2012 +0000

    Fix version matching.

commit dae69622a5
Merge: 696b930 a8da3ee
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Mar 1 19:08:52 2012 +0100

    Merge branch 'refs/heads/master' into release

commit 696b930fb2
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Mar 1 17:33:09 2012 +0100

    EntityType instead of CreatureType

commit e43a62f992
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Mar 1 16:17:40 2012 +0100

    Requires #1988 because of the new Inventory stuff

commit 02c1cb05c7
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Mar 1 16:15:37 2012 +0100

    Updated to R6

commit b44d738867
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Mar 1 15:56:17 2012 +0100

    CB# 1988 B# 1360

commit e1818f7e62
Author: md_5 <md_5@bigpond.com>
Date:   Thu Mar 1 14:40:57 2012 +1100

    Separate config sections evenly

commit e5081db7e4
Author: md_5 <md_5@bigpond.com>
Date:   Thu Mar 1 12:27:59 2012 +1100

    Remove old, unwanted manifest.mf files

commit ba346bd797
Author: ElgarL <ElgarL@palmergames.com>
Date:   Tue Feb 28 10:46:10 2012 +0000

    Make 'manload' reload the config correctly.

commit 0670ece7f3
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Feb 25 17:57:26 2012 +0000

    Updating Bukkit: CB #1858, B #1334

commit a8da3eebd7
Merge: 056303b 3823e7a
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Mar 1 17:33:25 2012 +0100

    Merge remote-tracking branch 'origin/groupmanager'

commit 056303b53c
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Mar 1 17:33:09 2012 +0100

    EntityType instead of CreatureType

commit 454f7d30de
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Mar 1 16:17:40 2012 +0100

    Requires #1988 because of the new Inventory stuff

commit 6d1c270976
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Mar 1 16:15:37 2012 +0100

    Updated to R6

commit d1001274bb
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Mar 1 15:56:17 2012 +0100

    CB# 1988 B# 1360

commit 3099855562
Merge: 3f26d4a 833a5b2
Author: md_5 <md_5@bigpond.com>
Date:   Thu Mar 1 16:23:21 2012 +1100

    Merge remote-tracking branch 'origin/master'

commit 3f26d4ad98
Author: md_5 <md_5@bigpond.com>
Date:   Thu Mar 1 14:40:57 2012 +1100

    Separate config sections evenly

commit bae337cc49
Author: md_5 <md_5@bigpond.com>
Date:   Thu Mar 1 12:27:59 2012 +1100

    Remove old, unwanted manifest.mf files

commit 3823e7a108
Author: ElgarL <ElgarL@palmergames.com>
Date:   Tue Feb 28 10:46:10 2012 +0000

    Make 'manload' reload the config correctly.

commit 1c2221f52f
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Feb 27 15:31:43 2012 +0000

    Adding option to log all eco api transactions.

commit 1b780a4364
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Feb 27 03:40:18 2012 +0000

    Prevent EssSpawn trying to handle spawning of jailed players.

commit ac3e65a829
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Feb 27 03:24:58 2012 +0000

    Change jail listener to catch respawn at Highest

commit 332f19177e
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Feb 26 05:10:04 2012 +0000

    Allow people to hit exactly 'min money'.

commit 6ab57b9abe
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Feb 26 05:06:03 2012 +0000

    Cleanup.

commit 862f3aad59
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Feb 26 05:01:40 2012 +0000

    Adjustments to negative eco give/take.

commit e277acf80e
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Feb 26 04:27:13 2012 +0000

    Display users new balance on /eco give/take.

commit 9f893e68e9
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Feb 26 04:15:14 2012 +0000

    Add Minimum Balance, to allow people to manage overdrafts.

commit 833a5b2b55
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Feb 27 15:31:43 2012 +0000

    Adding option to log all eco api transactions.

commit 340f0c68eb
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Feb 27 03:40:18 2012 +0000

    Prevent EssSpawn trying to handle spawning of jailed players.

commit a5e3182dad
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Feb 27 03:24:58 2012 +0000

    Change jail listener to catch respawn at Highest

commit 10ae9c3aa2
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Feb 26 05:10:04 2012 +0000

    Allow people to hit exactly 'min money'.

commit bcf903de92
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Feb 26 05:06:03 2012 +0000

    Cleanup.

commit ad08d27504
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Feb 26 05:01:40 2012 +0000

    Adjustments to negative eco give/take.

commit d24f77dbd5
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Feb 26 04:27:13 2012 +0000

    Display users new balance on /eco give/take.

commit a5b38ce1a4
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Feb 26 04:15:14 2012 +0000

    Add Minimum Balance, to allow people to manage overdrafts.

commit 5d048d2c1d
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Feb 25 17:57:26 2012 +0000

    Updating Bukkit: CB #1858, B #1334

commit 13d3cc3306
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Feb 25 17:40:00 2012 +0000

    Lowering min bukkit to r4 - 1838, this build should still be compatible.

commit 9f02fb4dd4
Merge: 8042cef 07baa6e
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Feb 25 17:22:39 2012 +0000

    Merge branch 'master' into release

commit 07baa6e611
Merge: 28f478d 50bd586
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Feb 25 17:22:01 2012 +0000

    Merge remote branch 'remotes/origin/groupmanager'

commit 50bd5869bf
Author: ElgarL <ElgarL@palmergames.com>
Date:   Sat Feb 25 09:29:54 2012 +0000

    Prevent promoting players to, and demoting to GlobalGroups.

commit fa49fc91d2
Author: ElgarL <ElgarL@palmergames.com>
Date:   Sat Feb 25 09:22:54 2012 +0000

    Prevent adding inheritances to globalgroups. These are permissions
    collections, not player groups.

commit 28f478dd04
Author: KHobbits <rob@khobbits.co.uk>
Date:   Thu Feb 23 17:25:00 2012 +0000

    Write to user files less, on money update.

commit 6fb8dad0ec
Author: KHobbits <rob@khobbits.co.uk>
Date:   Thu Feb 23 15:17:23 2012 +0000

    Balance top now has server total on first line.
    Balance top will update ess balance backup if using register/vault eco.

commit 9f605e9a88
Author: KHobbits <rob@khobbits.co.uk>
Date:   Thu Feb 23 14:49:23 2012 +0000

    Fixing upgrade script to allow powertool upgrade.

commit e5b91dae73
Author: KHobbits <rob@khobbits.co.uk>
Date:   Wed Feb 22 12:32:51 2012 +0000

    Fixing kits for new config classes.

commit e1749fecd1
Author: KHobbits <rob@khobbits.co.uk>
Date:   Wed Feb 22 01:29:37 2012 +0000

    Extra command aliases.

commit 358edff798
Author: KHobbits <rob@khobbits.co.uk>
Date:   Wed Feb 22 00:22:22 2012 +0000

    Powertools dispatch commands as delayed tasks (should reduce any conflict issues).

commit 34f13ba89c
Author: KHobbits <rob@khobbits.co.uk>
Date:   Wed Feb 22 00:11:21 2012 +0000

    Switch powertools to use different event.
    Reduce multiple triggering of powertool events.
    Abort event when used with powertool.

commit 945ba6f8ab
Author: KHobbits <rob@khobbits.co.uk>
Date:   Wed Feb 22 00:10:13 2012 +0000

    Fix powertools with new config format.

commit 46f05ee92f
Author: KHobbits <rob@khobbits.co.uk>
Date:   Tue Feb 21 22:14:11 2012 +0000

    Check to see if home section exists.

commit 6d46fc66ce
Author: KHobbits <rob@khobbits.co.uk>
Date:   Tue Feb 21 22:12:37 2012 +0000

    Fixing home list.

commit ed7fe9213f
Author: KHobbits <rob@khobbits.co.uk>
Date:   Tue Feb 21 21:39:25 2012 +0000

    Fix /sudo message display.

commit 9c68cbae72
Author: ElgarL <ElgarL@palmergames.com>
Date:   Tue Feb 21 18:40:54 2012 +0000

    Removed BukkitPermsOverride as this is now the default with bukkit
    handling child nodes.

commit c0df771539
Author: ElgarL <ElgarL@palmergames.com>
Date:   Tue Feb 21 18:38:08 2012 +0000

    Update for Bukkit R5 compatability.
    Removed some unused variables.

commit 9bd0c33fef
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Feb 21 18:41:27 2012 +0100

    Never give our user object to other plugins!

commit 8042cefd3d
Merge: 16a0f44 514f07c
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Feb 19 01:20:50 2012 +0000

    Merge branch 'master' into release

commit 16a0f44b4d
Merge: 1a2acb4 7633b13
Author: KHobbits <rob@khobbits.co.uk>
Date:   Wed Feb 15 19:09:02 2012 +0000

    Merge remote branch 'remotes/origin/master' into release

commit 1a2acb43ae
Merge: 36d07cb f0c0ee1
Author: KHobbits <rob@khobbits.co.uk>
Date:   Tue Feb 14 23:56:02 2012 +0000

    Merge branch 'master' into release

commit 36d07cb539
Merge: 6ca1cde effe0d5
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Feb 13 17:35:05 2012 +0000

    Merge branch 'master' into release

commit 6ca1cdec4f
Merge: e2abf05 86a1dda
Author: KHobbits <rob@khobbits.co.uk>
Date:   Thu Feb 2 11:41:18 2012 +0000

    Merge branch 'master' into release

commit e2abf05a27
Merge: d9e6f29 8500542
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Jan 30 05:36:03 2012 +0000

    Merge branch 'master' into release

commit d9e6f2975a
Merge: d8ac358 2f1d9ad
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Jan 29 21:44:30 2012 +0000

    Merge branch 'master' into release

commit d8ac3587ac
Merge: 85c4fbd a2418a6
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Jan 29 21:39:05 2012 +0000

    Merge branch 'master' into release

commit 85c4fbdf4f
Merge: 5a7f38f dff8f54
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Jan 29 21:20:56 2012 +0000

    Merge branch 'master' into release

commit 5a7f38fa29
Merge: 417148f 6a5fefb
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Jan 29 05:00:04 2012 +0000

    Merge branch 'master' into release

commit 417148f5da
Merge: a85cbdd 8f03505
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sun Jan 29 01:45:40 2012 +0000

    Merge branch 'master' into release

commit a85cbdd505
Merge: b4d9197 c6aa340
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Jan 28 12:59:15 2012 +0000

    Merge branch 'master' into release

commit b4d91978c7
Merge: 16bde87 8aa260e
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Jan 26 04:51:10 2012 +0100

    Merge branch 'refs/heads/master' into release

commit 16bde87982
Merge: 2705336 b8944d0
Author: KHobbits <rob@khobbits.co.uk>
Date:   Thu Jan 26 00:31:05 2012 +0000

    Merge branch 'master' into release

commit 270533652b
Merge: 03d6402 324dd05
Author: ementalo <suror@gmx.co.uk>
Date:   Wed Jan 25 14:29:05 2012 +0000

    Merge branch 'master' into release

commit 03d640260d
Merge: f27b229 da3a6af
Author: KHobbits <rob@khobbits.co.uk>
Date:   Wed Jan 25 00:04:08 2012 +0000

    Merge branch 'master' into release

commit f27b2290dc
Merge: efda9be 0ea41d9
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Jan 24 03:43:49 2012 +0100

    Merge branch 'refs/heads/master' into release

commit efda9beece
Merge: c7c7e5e 4b61ac9
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Jan 21 17:19:12 2012 +0000

    Merge branch 'master' into release

commit c7c7e5e4ce
Merge: f61f801 f26cccb
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Jan 16 12:43:09 2012 +0000

    Merge remote branch 'remotes/origin/master' into release

commit f61f80164d
Merge: d16fef9 f0def90
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Jan 14 15:52:55 2012 +0000

    Merge branch 'master' into release

commit d16fef9f7f
Merge: 4425d53 43f1c0f
Author: KHobbits <rob@khobbits.co.uk>
Date:   Sat Jan 14 13:16:33 2012 +0000

    Merge branch 'master' into release
    ~ GM needs testing before release ~

commit 4425d53664
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Dec 20 12:24:59 2011 +0100

    Only info not a warning if a file is missing

commit ee5e015a63
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Dec 20 12:20:12 2011 +0100

    Correctly match release and non release versions of bukkit.

commit 839ce3d526
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Dec 20 11:57:22 2011 +0100

    Fix sending our player object to other plugins.

commit cc06117210
Merge: cbd5b6c 5a092f0
Author: snowleo <schneeleo@gmail.com>
Date:   Mon Dec 19 12:07:28 2011 +0100

    Merge branch 'refs/heads/master' into release

commit cbd5b6c0f4
Merge: 867e66e fec3b61
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Dec 19 05:04:15 2011 +0000

    Merge remote branch 'remotes/origin/master' into release

commit 867e66e774
Merge: 45ffeaf 9eaebad
Author: snowleo <schneeleo@gmail.com>
Date:   Wed Dec 14 11:56:09 2011 +0100

    Merge branch 'refs/heads/master' into release

commit 45ffeaffec
Merge: f91b622 79861b1
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Dec 13 23:52:58 2011 +0100

    Merge branch 'refs/heads/master' into release

commit f91b622646
Merge: 40a9c28 70bd9bd
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Dec 13 10:32:59 2011 +0100

    Merge branch 'refs/heads/master' into release

commit 40a9c28699
Merge: 081491d e37ab86
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Dec 12 23:15:48 2011 +0000

    Merge branch 'master' into release

commit 081491d0a1
Merge: 8d0230d f936cd5
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Dec 12 23:06:40 2011 +0000

    Merge branch 'master' into release

commit 8d0230d6a8
Merge: 37e5260 e379ac5
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Dec 8 05:41:00 2011 +0100

    Merge branch 'refs/heads/master' into release

commit 37e5260cda
Merge: 19b8031 e169e95
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Nov 29 21:55:09 2011 +0100

    Merge branch 'refs/heads/master' into release

commit 19b8031933
Merge: 99211fd 91cdff9
Author: snowleo <schneeleo@gmail.com>
Date:   Mon Nov 28 22:42:17 2011 +0100

    Merge branch 'refs/heads/master' into release

commit 99211fd407
Merge: 3d839c2 5e24584
Author: snowleo <schneeleo@gmail.com>
Date:   Mon Nov 28 20:28:05 2011 +0100

    Merge branch 'refs/heads/master' into release

commit 3d839c2b21
Merge: e1e7a1c 9acc7db
Author: snowleo <schneeleo@gmail.com>
Date:   Mon Nov 28 20:03:09 2011 +0100

    Merge branch 'refs/heads/master' into release

commit e1e7a1cfdb
Merge: 0ed7f87 b637e49
Author: snowleo <schneeleo@gmail.com>
Date:   Mon Nov 28 04:23:38 2011 +0100

    Merge branch 'refs/heads/master' into release

commit 0ed7f87ee0
Merge: 579bbc9 aceda4c
Author: snowleo <schneeleo@gmail.com>
Date:   Sun Nov 27 20:59:19 2011 +0100

    Merge branch 'refs/heads/master' into release

commit 579bbc9f2c
Merge: e672de9 af456a7
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Nov 24 04:26:05 2011 +0100

    Merge branch 'refs/heads/master' into release

commit e672de949c
Merge: f72762b 19f5a23
Author: snowleo <schneeleo@gmail.com>
Date:   Sun Nov 20 21:46:02 2011 +0100

    Merge branch 'refs/heads/master' into release

commit f72762bcb2
Merge: 7ecc3c2 4f8319b
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Nov 19 16:04:00 2011 +0100

    Merge branch 'refs/heads/master' into release

commit 7ecc3c25b0
Merge: adcffba 41c0385
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Nov 17 19:06:44 2011 +0100

    Merge branch 'refs/heads/master' into release

commit adcffba7cf
Merge: e271e60 2a4c26e
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Nov 17 16:34:39 2011 +0100

    Merge branch 'refs/heads/master' into release

commit e271e60144
Merge: 16be869 c5c29ae
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Nov 17 15:34:27 2011 +0100

    Merge branch 'refs/heads/master' into release

commit 16be86953f
Merge: 1f527cd eda827b
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Nov 15 22:52:42 2011 +0100

    Merge branch 'refs/heads/master' into release

commit 1f527cdb9e
Merge: 11e8240 90c9fe7
Author: KHobbits <rob@khobbits.co.uk>
Date:   Tue Nov 8 05:17:42 2011 +0000

    Merge branch 'essmaster' into essrelease

commit 11e8240c5c
Merge: 4aecc03 aa922c5
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Oct 22 11:55:01 2011 +0200

    Merge branch 'refs/heads/master' into release

    Conflicts:
    	EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java

commit 4aecc034c2
Author: KHobbits <rob@khobbits.co.uk>
Date:   Tue Oct 11 22:51:30 2011 +0100

    Fixing typo in release build.

commit a111a07bca
Merge: eb71097 9ec398b
Author: KHobbits <rob@khobbits.co.uk>
Date:   Tue Oct 11 20:06:23 2011 +0100

    Merge branch 'essmaster' into essrelease

commit eb71097546
Merge: c7fcb72 1bb3eb0
Author: KHobbits <rob@khobbits.co.uk>
Date:   Tue Oct 11 17:52:56 2011 +0100

    Merge remote branch 'remotes/ess/master' into essrelease

commit c7fcb72d6c
Merge: 04af8ef 02ee314
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Oct 10 17:21:48 2011 +0100

    Merge remote branch 'remotes/ess/master' into essrelease

commit 04af8ef329
Merge: 4cdf803 a34c92d
Author: snowleo <schneeleo@gmail.com>
Date:   Mon Oct 10 00:30:47 2011 +0200

    Merge branch 'master' into release

commit 4cdf803ab7
Merge: 4595c15 6012086
Author: snowleo <schneeleo@gmail.com>
Date:   Sun Oct 9 23:52:15 2011 +0200

    Merge branch 'master' into release

commit 4595c15bee
Merge: 1e3d2fb 8199416
Author: snowleo <schneeleo@gmail.com>
Date:   Sun Oct 9 17:54:59 2011 +0200

    Merge branch 'master' into release

commit 1e3d2fbfd2
Merge: 57c25bf 313df99
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Oct 8 19:43:07 2011 +0200

    Merge branch 'master' into release

commit 57c25bf151
Merge: ae030b2 55fc8bd
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Oct 4 23:07:30 2011 +0200

    Merge branch 'master' into release

commit ae030b227a
Merge: 4f85751 0645d58
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Oct 4 22:20:10 2011 +0200

    Merge branch 'master' into release

commit 4f85751694
Merge: 6b0d0da 65a78a6
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Oct 4 21:34:28 2011 +0200

    Merge branch 'master' into release

commit 6b0d0daa2e
Merge: 401498a 9718e65
Author: KHobbits <rob@khobbits.co.uk>
Date:   Tue Oct 4 14:40:12 2011 +0100

    Merge branch 'essmaster' into essrelease

commit 401498a4f7
Merge: 8bb5018 acdad5c
Author: KHobbits <rob@khobbits.co.uk>
Date:   Tue Oct 4 09:51:51 2011 +0100

    Merge branch 'essmaster' into essrelease

commit 8bb50189bc
Merge: eb665a0 f2407bc
Author: KHobbits <rob@khobbits.co.uk>
Date:   Thu Sep 29 00:43:42 2011 +0100

    Merge remote branch 'remotes/ess/master' into essrelease

commit eb665a059a
Merge: 3dc29be a8cfbe1
Author: KHobbits <rob@khobbits.co.uk>
Date:   Thu Sep 29 00:40:16 2011 +0100

    Merge branch 'essmaster' into essrelease

commit 3dc29be083
Merge: 82e5447 ee00fb7
Author: KHobbits <rob@khobbits.co.uk>
Date:   Tue Sep 27 02:01:52 2011 +0100

    Merge branch 'essmaster' into essrelease

commit 82e5447526
Merge: 066f3fd 8b23f86
Author: KHobbits <rob@khobbits.co.uk>
Date:   Mon Sep 26 23:06:02 2011 +0100

    Merge branch 'essmaster' into essrelease

commit 066f3fd726
Merge: f0acf73 e9c0bb2
Author: KHobbits <rob@khobbits.co.uk>
Date:   Thu Sep 22 15:29:47 2011 +0100

    Merge branch 'essmaster' into essrelease

commit f0acf733a5
Merge: 96c4dd2 33c6fc1
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Sep 22 10:47:58 2011 +0200

    Merge branch 'master' into release

commit 96c4dd2ab9
Merge: df3b9a7 998d097
Author: snowleo <schneeleo@gmail.com>
Date:   Mon Sep 5 14:15:07 2011 +0200

    Merge branch 'master' into release

commit df3b9a7ef9
Merge: 70a3a59 fd6f768
Author: snowleo <schneeleo@gmail.com>
Date:   Sun Sep 4 20:47:46 2011 +0200

    Merge branch 'master' into release

commit 70a3a5919e
Merge: 688d37e fc7a3e0
Author: snowleo <schneeleo@gmail.com>
Date:   Fri Sep 2 00:05:05 2011 +0200

    Merge branch 'master' into release

commit 688d37ee60
Merge: 3dcf8bc 382bd24
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Sep 1 16:35:47 2011 +0200

    Merge branch 'master' into release

commit 3dcf8bc8fc
Merge: 7039d61 ecc1a0a
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Aug 30 09:46:49 2011 +0200

    Merge branch 'master' into release

commit 7039d613ee
Merge: 256c963 12e3eb1
Author: snowleo <schneeleo@gmail.com>
Date:   Mon Aug 29 20:43:49 2011 +0200

    Merge branch 'master' into release

commit 256c963370
Merge: 7b8c2a4 d818f70
Author: snowleo <schneeleo@gmail.com>
Date:   Sun Aug 21 21:44:58 2011 +0200

    Merge branch 'master' into release

commit 7b8c2a4575
Merge: 7f1ba0d 040e2be
Author: snowleo <schneeleo@gmail.com>
Date:   Sun Aug 21 20:22:28 2011 +0200

    Merge branch 'master' into release

commit 7f1ba0d6ae
Merge: 7e5b79a 2b48045
Author: snowleo <schneeleo@gmail.com>
Date:   Fri Aug 19 02:32:56 2011 +0200

    Merge branch 'master' into release

commit 7e5b79aa14
Merge: 086343e a53d8dd
Author: snowleo <schneeleo@gmail.com>
Date:   Fri Aug 19 02:10:36 2011 +0200

    Merge branch 'master' into release

commit 086343ee48
Merge: a1ad512 c79ac59
Author: snowleo <schneeleo@gmail.com>
Date:   Fri Aug 19 01:06:52 2011 +0200

    Merge branch 'master' into release

commit a1ad512a80
Merge: 9bb2ef9 6a9865c
Author: snowleo <schneeleo@gmail.com>
Date:   Fri Aug 19 00:42:26 2011 +0200

    Merge branch 'master' into release

commit 9bb2ef9cbe
Merge: 832910d beb34a7
Author: snowleo <schneeleo@gmail.com>
Date:   Wed Jul 27 01:04:37 2011 +0200

    Merge branch 'master' into release

commit 832910d480
Merge: 13da2b2 1645417
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Jul 23 22:34:43 2011 +0200

    Merge branch 'master' into release

commit 13da2b2924
Merge: 84ac520 7aea9e7
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Jul 23 20:06:00 2011 +0200

    Merge branch 'master' into release

commit 84ac520353
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Jul 23 20:05:44 2011 +0200

    Master and Release branch are now identical again.

    Removed warning for an older bukkit version.

commit 5613975314
Merge: 662d30a dc0ca35
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Jul 23 03:11:14 2011 +0200

    Merge branch 'master' into release

commit 662d30ae45
Merge: 57bee44 4099755
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Jul 23 03:07:38 2011 +0200

    Merge branch 'master' into release

commit 57bee443b1
Merge: 621618e 0f3c0e8
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Jul 23 02:39:37 2011 +0200

    Merge branch 'master' into release

commit 621618e41f
Merge: 6ccb608 5455917
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Jul 21 02:58:39 2011 +0200

    Merge branch 'master' into release

commit 6ccb60813a
Merge: b341199 2067bb8
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Jul 21 02:52:25 2011 +0200

    Merge branch 'master' into release

commit b34119901e
Merge: b317aef 4f31d27
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Jul 21 02:29:45 2011 +0200

    Merge branch 'master' into release

commit b317aef8c9
Merge: fdbc6fa 8b41219
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Jul 21 00:31:39 2011 +0200

    Merge branch 'master' into release

commit fdbc6fa94f
Merge: 0ffe249 28dd14d
Author: snowleo <schneeleo@gmail.com>
Date:   Wed Jul 20 23:18:34 2011 +0200

    Merge branch 'master' into release

commit 0ffe24903a
Merge: e550a7c f6e6e00
Author: snowleo <schneeleo@gmail.com>
Date:   Wed Jul 20 23:09:40 2011 +0200

    Merge branch 'master' into release

commit e550a7cc44
Merge: 82165a2 9efc084
Author: snowleo <schneeleo@gmail.com>
Date:   Wed Jul 20 22:37:43 2011 +0200

    Merge branch 'master' into release

commit 82165a2af6
Merge: 63a4fe3 815b700
Author: snowleo <schneeleo@gmail.com>
Date:   Wed Jul 20 22:22:02 2011 +0200

    Merge branch 'master' into release

commit 63a4fe32c1
Merge: 1c44a25 06dc9c2
Author: snowleo <schneeleo@gmail.com>
Date:   Wed Jul 20 18:40:04 2011 +0200

    Merge branch 'master' into release

commit 1c44a25a4a
Merge: cf21ece 0483635
Author: snowleo <schneeleo@gmail.com>
Date:   Wed Jul 20 12:13:24 2011 +0200

    Merge branch 'master' into release

commit cf21ecee2e
Merge: 5467e50 3b59dd0
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Jul 19 12:09:48 2011 +0200

    Merge branch 'master' into release

commit 5467e502a5
Merge: 6af9ec2 e805d10
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Jul 19 11:42:18 2011 +0200

    Merge branch 'master' into release

commit 6af9ec266b
Merge: faa7e0e 150a0e0
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Jul 19 01:52:44 2011 +0200

    Merge branch 'master' into release

commit faa7e0e7a9
Merge: aa36060 fdbb651
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Jul 19 00:47:14 2011 +0200

    Merge branch 'master' into release

commit aa3606007a
Merge: db59749 d0bf190
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Jul 19 00:42:10 2011 +0200

    Merge branch 'master' into release

commit db5974970d
Merge: ba2539d d2bc7e0
Author: snowleo <schneeleo@gmail.com>
Date:   Mon Jul 18 20:55:31 2011 +0200

    Merge branch 'master' into release

commit ba2539db67
Merge: 21d0661 e3a470e
Author: snowleo <schneeleo@gmail.com>
Date:   Mon Jul 18 02:30:16 2011 +0200

    Merge branch 'master' into release

commit 21d0661d79
Merge: 9f3eb46 1556801
Author: snowleo <schneeleo@gmail.com>
Date:   Mon Jul 18 01:49:45 2011 +0200

    Merge branch 'master' into release

commit 9f3eb461a9
Merge: 34b0deb 48230f6
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Jul 16 17:04:46 2011 +0200

    Merge branch 'master' into release

commit 34b0deba29
Merge: d9a93d8 088f50c
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Jul 16 16:53:13 2011 +0200

    Merge branch 'master' into release

commit d9a93d8dff
Merge: 7477763 5ad12b5
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Jul 16 14:04:49 2011 +0200

    Merge branch 'master' into release

commit 747776344b
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Jul 16 13:32:10 2011 +0200

    Fixing merge error

commit f979a79081
Merge: 367e984 e6685ab
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Jul 16 13:25:12 2011 +0200

    Merge branch 'master' into release

    Conflicts:
    	Essentials/src/com/earth2me/essentials/Essentials.java
    	Essentials/src/com/earth2me/essentials/EssentialsBlockListener.java
    	Essentials/src/com/earth2me/essentials/commands/Commandspawner.java
    	Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java
    	Essentials/src/com/earth2me/essentials/register/payment/Methods.java
    	Essentials/src/items.csv
    	EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
    	lib/bukkit-0.0.1-SNAPSHOT.jar
    	lib/craftbukkit-0.0.1-SNAPSHOT.jar

commit 367e9840cc
Author: snowleo <schneeleo@gmail.com>
Date:   Tue Jun 7 22:18:57 2011 +0200

    Fix save inventory after logout for new players.

commit ea590c2ed1
Author: snowleo <snowleo@e251c2fe-e539-e718-e476-b85c1f46cddb>
Date:   Sun Jun 5 00:00:41 2011 +0000

    NPE fix for offline users in UserData

    git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1583 e251c2fe-e539-e718-e476-b85c1f46cddb

commit d93120257b
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Jul 2 01:10:48 2011 +0200

    Update of bukkit version number in essentials class

commit e763b362d9
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Jul 2 01:09:19 2011 +0200

    CB# 953
    B# 754

commit e5eb1ca0cb
Author: snowleo <schneeleo@gmail.com>
Date:   Fri Jul 1 10:52:59 2011 +0200

    More names for pistons (items.csv)
    Fix for /unlimited and pistons

commit ea2649db5e
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Jun 30 19:16:50 2011 +0200

    Updated items.csv

commit b53fc9cadc
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Jun 30 18:54:05 2011 +0200

    Renamed functions

commit 4b35e1b729
Author: snowleo <schneeleo@gmail.com>
Date:   Thu Jun 30 18:43:23 2011 +0200

    CB #946
    B #750

commit 40e106db13
Author: snowleo <schneeleo@gmail.com>
Date:   Mon Jun 27 11:57:03 2011 +0200

    Fix /spawner command

    The name had to be first letter uppercase, the rest lowercase

commit 3dc0659f66
Author: snowleo <schneeleo@gmail.com>
Date:   Mon Jun 27 11:53:57 2011 +0200

    Another fix to /spawnmob

    Merged for release

commit e652ed2981
Author: snowleo <schneeleo@gmail.com>
Date:   Sun Jun 26 02:00:57 2011 +0200

    Copy&Paste is bad.

commit 28db891aa5
Author: snowleo <schneeleo@gmail.com>
Date:   Sun Jun 26 01:43:59 2011 +0200

    Fix for Register inside Essentials

commit b63ae9b771
Author: snowleo <schneeleo@gmail.com>
Date:   Sun Jun 26 01:43:19 2011 +0200

    SEVERE error messages for other plugins, that try to manually enable Essentials, FakePermissions or GroupManager

commit 27c84ceaac
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Jun 25 15:34:33 2011 +0200

    Remove the restriction of EssEcoApi to not use iConomy or BOSE

commit d67ccd03ca
Merge: 96b0f27 5e2f4bc
Author: snowleo <schneeleo@gmail.com>
Date:   Sat Jun 25 14:27:30 2011 +0200

    Merge branch 'bukkitupdate' into release

commit 96b0f27c51
Author: snowleo <schneeleo@gmail.com>
Date:   Sun Jun 12 02:47:50 2011 +0200

    Fix for Craftbukkit Bug 912
2012-03-13 03:14:24 +01:00
ElgarL
a8937f7bf0 Fix a globalgroup inheritance in groups.yml 2012-03-12 22:18:25 +00:00
KHobbits
dfd63a81ac Missed a TL key. 2012-03-12 16:50:32 +00:00
KHobbits
dfbc1956c9 Fixing a few TL Keys 2012-03-12 15:35:20 +00:00
KHobbits
c0490c0890 New TL Key, allow formatting/colouring of help output. 2012-03-12 15:21:37 +00:00
KHobbits
2da802d4b7 New permission: essentials.seen.banreason
With this permission players can see why a user was banned, in /seen.
2012-03-12 15:00:44 +00:00
KHobbits
adffbab678 Adding jail time to /whois. 2012-03-12 01:15:10 +00:00
KHobbits
e11525ab64 Update offline user check.
Add ban reason to /seen
2012-03-12 01:00:57 +00:00
KHobbits
8dcd591beb Update setworth to allow /setworth <price> ingame
Allow /setworth to be used from console.
2012-03-11 23:59:59 +00:00
md_5
78f4820876 Initial formatted and slightly tweaked version of @evenprime 's NoCheat. Will be intergrated into the main Essentials as soon as possible 2012-03-12 10:39:36 +11:00
KHobbits
a40c936bcf New Permission: essentials.lightning.others
With this permission you can use /lightning <player>, without only strike based on direction.
2012-03-11 20:58:54 +00:00
KHobbits
5c2622b390 Add Enderman check to EntityChangeEvent (Should fix sheep eating grass). 2012-03-11 01:46:01 +00:00
KHobbits
c7046b696a Use ignoreCancelled on event registration. 2012-03-10 21:42:46 +00:00
KHobbits
9ac5ce8a75 Update info.txt to hint at /einfo. 2012-03-07 12:14:32 +00:00
KHobbits
5c55e18d33 Fixing typo in config.yml 2012-03-06 23:17:10 +00:00
ElgarL
19d233454e change []<> for optional command components 2012-03-06 16:23:57 +00:00
ElgarL
1f761ee1cb Expanded '/manuadd'to accept an optional variable for the world (eg
'/manuadd <player> <group> <world>').
2012-03-06 11:02:48 +00:00
KHobbits
1db5d61945 Merge branch 'release'
Conflicts:
	lib/bukkit.jar
	lib/craftbukkit.jar
2012-03-05 16:25:35 +00:00
KHobbits
1e34a396cd Change starter kit to default to stone tools 2012-03-05 15:51:15 +00:00
KHobbits
ba96117f55 Temp fix to disable version check on R7 2012-03-05 14:17:09 +00:00
KHobbits
96b217cbe8 Craftbukkit/Bukkit R7 2012-03-05 08:41:19 +00:00
md_5
0dd5c0370e I dont think free noteblocks are a good idea 2012-03-05 08:37:16 +00:00
KHobbits
bdf32cde9e Missed one. 2012-03-05 08:37:15 +00:00
KHobbits
e91ed60441 Fixing spawnmob count. 2012-03-05 08:37:15 +00:00
KHobbits
8577202f48 Add listgroups as TL key 2012-03-05 08:37:15 +00:00
KHobbits
7819b9d2f0 Apply colors to group tags. 2012-03-05 08:37:15 +00:00
KHobbits
15c0565923 Build custom mob list /spawnmob 2012-03-05 08:37:14 +00:00
KHobbits
2b25ca2932 CME 2012-03-05 08:37:14 +00:00
KHobbits
c7a6677d52 Adding starter/newbie kit to EssentialsSpawn
Optimization to EssentialsSpawn join event.
2012-03-05 08:37:14 +00:00
KHobbits
c3d5b32986 Extra command alias. 2012-03-05 08:37:14 +00:00
KHobbits
cbfb524195 Allow more currency customization.
Added currency key to messages.
2012-03-05 08:37:14 +00:00
KHobbits
b16a1f7237 Adding option to modify all users balances (including offline) /eco reset ** <amount> 2012-03-05 08:37:14 +00:00
KHobbits
e28f1b1be3 Half-revert double backflip. 10 points.
(op prefix changes that md-5 broke, thinking I broke op prefixes)
2012-03-05 08:37:14 +00:00
md_5
b512a243e7 Fix op colours, which KHobbits broke! 2012-03-05 08:37:13 +00:00
Chris Ward
873c9880dd Cleanup
Signed-off-by: Chris Ward <chris@chrisgward.com>
2012-03-05 08:35:48 +00:00
Chris Ward
e6736e48a5 Cleanup
Signed-off-by: Chris Ward <chris@chrisgward.com>
2012-03-05 08:35:48 +00:00
KHobbits
caf598f55b Capital case for formatting. 2012-03-05 08:35:48 +00:00
KHobbits
619e099a04 Force all kits to lowercase. 2012-03-05 08:35:48 +00:00
KHobbits
faba1e3604 *make it look like i'm doing something* 2012-03-05 08:35:48 +00:00
KHobbits
7cb728b15f I think switches are better. 2012-03-05 08:35:48 +00:00
KHobbits
3e3c7f0d54 Only update displayname on world change, not every teleport. 2012-03-05 08:35:48 +00:00
KHobbits
a45c19a08b Extra command aliases 2012-03-05 08:35:47 +00:00
KHobbits
eb74a1de9c Make the antioch message optional. 2012-03-05 08:35:47 +00:00
KHobbits
8450734cf1 Entity event cleanup 2012-03-05 08:35:47 +00:00
KHobbits
016299a1dd Shouldn't really be canceling events at priority monitor, oops. 2012-03-05 08:35:47 +00:00
KHobbits
d27ff9abb6 Don't think we need animation event anymore. 2012-03-05 08:35:47 +00:00
Iaccidentally
cdf5d45483 update messages.properties for the new bukkit download link (ci.bukkit,org no longer works) 2012-03-05 08:35:46 +00:00
md_5
0b60d4efe2 I dont think free noteblocks are a good idea 2012-03-05 18:40:18 +11:00
md_5
d31e434e4d Allow spamming of this, by reducing explosion damage to 0, same effect, no mess 2012-03-05 18:28:04 +11:00
KHobbits
fabc1c3dd9 Missed one. 2012-03-05 00:39:37 +00:00
KHobbits
68fbc40605 Fixing spawnmob count. 2012-03-05 00:22:31 +00:00
KHobbits
8b7c5cf2ed Add listgroups as TL key 2012-03-05 00:19:40 +00:00
KHobbits
1811631b93 Apply colors to group tags. 2012-03-05 00:08:37 +00:00
KHobbits
7cec1564b9 Build custom mob list /spawnmob 2012-03-04 21:54:51 +00:00
KHobbits
a75eefcdd4 CME 2012-03-04 21:43:24 +00:00
KHobbits
6a9027da6d Adding starter/newbie kit to EssentialsSpawn
Optimization to EssentialsSpawn join event.
2012-03-04 20:09:25 +00:00
KHobbits
e55aa3cea7 Extra command alias. 2012-03-04 16:17:16 +00:00
KHobbits
1ce2c60bf4 Updating Craftbukkit #2034 Bukkit #1378 2012-03-04 16:01:49 +00:00
ElgarL
7ba49afa0b Better reporting when a users.yml is failing to load. 2012-03-04 10:39:39 +00:00
KHobbits
6da705c86f Allow more currency customization.
Added currency key to messages.
2012-03-04 10:11:58 +00:00
KHobbits
c3fa56322b Adding option to modify all users balances (including offline) /eco reset ** <amount> 2012-03-04 09:20:03 +00:00
KHobbits
53cfab229b Half-revert double backflip. 10 points.
(op prefix changes that md-5 broke, thinking I broke op prefixes)
2012-03-04 08:18:25 +00:00
KHobbits
b62217f301 Merge branch 'master' of github.com:essentials/Essentials 2012-03-04 08:13:29 +00:00
md_5
d9a8453995 Fix op colours, which KHobbits broke! 2012-03-04 15:43:00 +11:00
md_5
2640905846 It is important to get things right the fist time. Especially when you will be staring at them for a while to come. 2012-03-04 12:34:14 +11:00
md_5
6b7e9de5f2 Thanks to @ementalo we now have a repo 2012-03-04 12:22:30 +11:00
snowleo
57daa09e9a Serious bug is serious 2012-03-04 01:39:22 +01:00
ementalo
cd5ae6a167 ant files from teamcity - gathering artifacts and versioning files. 2012-03-03 23:57:13 +00:00
md_5
7e8ca05203 Complete the transition to maven :D 2012-03-04 10:37:05 +11:00
snowleo
e6181928e8 Cleanup of /spawnmob 2012-03-03 17:01:53 +01:00
ElgarL
c33499797e Minor change to globalgroups 2012-03-03 14:03:52 +00:00
KHobbits
860f6a41ac Merge branch 'master' of github.com:essentials/Essentials 2012-03-03 13:49:26 +00:00
KHobbits
8aa7b1f301 Update CB #2032 B #1377
Min CB #2015
2012-03-03 13:48:58 +00:00
ElgarL
6efd3eaa27 Fix a silly logic error when testing bukkit perms 2012-03-03 13:47:59 +00:00
ElgarL
d2d8d191da Minor optimization when checking bukkit permissions. 2012-03-03 13:00:17 +00:00
md-5
cea5c81d44 Merge pull request #56 from Iaccidentally/patch-4
Allow spawning baby villagers and ocelots
2012-03-03 00:34:00 -08:00
md-5
504f28df1a Merge pull request #55 from chrisward/master
Just a really small cleanup
2012-03-03 00:31:48 -08:00
Chris Ward
74a57553f6 Cleanup
Signed-off-by: Chris Ward <chris@chrisgward.com>
2012-03-03 19:21:27 +11:00
Iaccidentally
35576ab64a add little babbys 2012-03-03 03:04:54 -05:00
KHobbits
33605517ff Capital case for formatting. 2012-03-03 07:09:41 +00:00
Chris Ward
6da6e4d2e8 Cleanup
Signed-off-by: Chris Ward <chris@chrisgward.com>
2012-03-03 18:07:43 +11:00
KHobbits
c0fa03ede2 Force all kits to lowercase. 2012-03-03 07:03:54 +00:00
KHobbits
301b609e93 *make it look like i'm doing something* 2012-03-03 05:27:02 +00:00
KHobbits
b6bbe237ea I think switches are better. 2012-03-03 05:09:03 +00:00
md_5
3ed78c0520 Move EssentialsSpawn into the main plugin, going to make it a component in the near future 2012-03-03 13:19:10 +11:00
snowleo
22a37a0c1b Revert "I honestly have no idea if this works, but on paper it does. Will be great, now to figure out how to test." until there is a real alternative.
This reverts commit 7b8a9d60d7.
2012-03-03 02:40:22 +01:00
KHobbits
de7ab13c03 Only update displayname on world change, not every teleport. 2012-03-02 19:05:30 +00:00
KHobbits
7a0f4da860 Extra command aliases 2012-03-02 17:05:55 +00:00
KHobbits
1bbbfe1c96 Make the antioch message optional. 2012-03-02 17:03:34 +00:00
KHobbits
25ebe68389 Entity event cleanup 2012-03-02 16:54:12 +00:00
KHobbits
7737d19c5a Shouldn't really be canceling events at priority monitor, oops. 2012-03-02 16:33:20 +00:00
KHobbits
622ca4bf8a Don't think we need animation event anymore. 2012-03-02 16:29:06 +00:00
md_5
7b8a9d60d7 I honestly have no idea if this works, but on paper it does. Will be great, now to figure out how to test. 2012-03-02 21:48:03 +11:00
md_5
3b76bbfe78 Put test classes where they belong 2012-03-02 16:29:04 +11:00
KHobbits
b090afbeb3 Merge pull request #54 from Iaccidentally/patch-3
update messages.properties for the new bukkit download link (ci.bukkit,o...
2012-03-01 20:15:16 -08:00
Iaccidentally
dce149511e update messages.properties for the new bukkit download link (ci.bukkit,org no longer works) 2012-03-01 23:10:32 -05:00
snowleo
21a248e94d Will be removed until the next release XD 2012-03-02 01:30:52 +01:00
snowleo
f1aed4b521 Better cats 2012-03-02 00:40:50 +01:00
snowleo
7564ebf79e Fix world heights 2012-03-02 00:18:31 +01:00
snowleo
b9aecbe1d4 Min version CB# 2004 2012-03-02 00:12:22 +01:00
snowleo
49eb451a76 New eggs 2012-03-02 00:09:50 +01:00
snowleo
64d866a77d New Entities and Items for 1.2 2012-03-02 00:06:57 +01:00
snowleo
f75779aa7a CB#2004 B#1368 2012-03-01 23:57:34 +01:00
KHobbits
5622882602 Merge branch 'master' of github.com:essentials/Essentials 2012-03-01 22:37:15 +00:00
KHobbits
b3d3928db8 Kit sign cleanup 2012-03-01 22:36:51 +00:00
snowleo
6df3b9008a update inventory 2012-03-01 23:23:23 +01:00
snowleo
c36ca65e09 Bukkit broke this sign :( 2012-03-01 23:10:12 +01:00
KHobbits
2e788802fe Fix kit timers resetting on server restart. 2012-03-01 22:04:50 +00:00
KHobbits
b0552019f5 Fix version matching. 2012-03-01 21:47:01 +00:00
snowleo
dae69622a5 Merge branch 'refs/heads/master' into release 2012-03-01 19:08:52 +01:00
snowleo
696b930fb2 EntityType instead of CreatureType 2012-03-01 19:05:50 +01:00
snowleo
e43a62f992 Requires #1988 because of the new Inventory stuff 2012-03-01 19:05:50 +01:00
snowleo
02c1cb05c7 Updated to R6 2012-03-01 19:05:50 +01:00
snowleo
b44d738867 CB# 1988 B# 1360 2012-03-01 19:05:49 +01:00
md_5
e1818f7e62 Separate config sections evenly 2012-03-01 19:05:47 +01:00
md_5
e5081db7e4 Remove old, unwanted manifest.mf files 2012-03-01 19:05:47 +01:00
ElgarL
ba346bd797 Make 'manload' reload the config correctly. 2012-03-01 19:05:47 +01:00
KHobbits
0670ece7f3 Updating Bukkit: CB #1858, B #1334 2012-03-01 19:05:47 +01:00
snowleo
a8da3eebd7 Merge remote-tracking branch 'origin/groupmanager' 2012-03-01 17:33:25 +01:00
snowleo
056303b53c EntityType instead of CreatureType 2012-03-01 17:33:09 +01:00
snowleo
454f7d30de Requires #1988 because of the new Inventory stuff 2012-03-01 16:17:40 +01:00
snowleo
6d1c270976 Updated to R6 2012-03-01 16:16:05 +01:00
snowleo
d1001274bb CB# 1988 B# 1360 2012-03-01 16:16:05 +01:00
md_5
3099855562 Merge remote-tracking branch 'origin/master' 2012-03-01 16:23:21 +11:00
md_5
3f26d4ad98 Separate config sections evenly 2012-03-01 14:40:57 +11:00
md_5
bae337cc49 Remove old, unwanted manifest.mf files 2012-03-01 12:27:59 +11:00
ElgarL
3823e7a108 Make 'manload' reload the config correctly. 2012-02-28 10:46:10 +00:00
KHobbits
1c2221f52f Adding option to log all eco api transactions. 2012-02-28 02:45:03 +00:00
KHobbits
1b780a4364 Prevent EssSpawn trying to handle spawning of jailed players. 2012-02-28 02:45:03 +00:00
KHobbits
ac3e65a829 Change jail listener to catch respawn at Highest 2012-02-28 02:45:03 +00:00
KHobbits
332f19177e Allow people to hit exactly 'min money'. 2012-02-28 02:45:03 +00:00
KHobbits
6ab57b9abe Cleanup. 2012-02-28 02:45:03 +00:00
KHobbits
862f3aad59 Adjustments to negative eco give/take. 2012-02-28 02:45:03 +00:00
KHobbits
e277acf80e Display users new balance on /eco give/take. 2012-02-28 02:45:02 +00:00
KHobbits
9f893e68e9 Add Minimum Balance, to allow people to manage overdrafts. 2012-02-28 02:45:02 +00:00
KHobbits
833a5b2b55 Adding option to log all eco api transactions. 2012-02-27 15:31:43 +00:00
KHobbits
340f0c68eb Prevent EssSpawn trying to handle spawning of jailed players. 2012-02-27 03:40:18 +00:00
KHobbits
a5e3182dad Change jail listener to catch respawn at Highest 2012-02-27 03:24:58 +00:00
KHobbits
10ae9c3aa2 Allow people to hit exactly 'min money'. 2012-02-26 05:10:04 +00:00
KHobbits
bcf903de92 Cleanup. 2012-02-26 05:06:03 +00:00
KHobbits
ad08d27504 Adjustments to negative eco give/take. 2012-02-26 05:01:40 +00:00
KHobbits
d24f77dbd5 Display users new balance on /eco give/take. 2012-02-26 04:27:29 +00:00
KHobbits
a5b38ce1a4 Add Minimum Balance, to allow people to manage overdrafts. 2012-02-26 04:15:14 +00:00
KHobbits
5d048d2c1d Updating Bukkit: CB #1858, B #1334 2012-02-25 17:57:26 +00:00
KHobbits
13d3cc3306 Lowering min bukkit to r4 - 1838, this build should still be compatible. 2012-02-25 17:40:00 +00:00
KHobbits
9f02fb4dd4 Merge branch 'master' into release 2012-02-25 17:22:39 +00:00
KHobbits
07baa6e611 Merge remote branch 'remotes/origin/groupmanager' 2012-02-25 17:22:01 +00:00
ElgarL
50bd5869bf Prevent promoting players to, and demoting to GlobalGroups. 2012-02-25 09:29:54 +00:00
ElgarL
fa49fc91d2 Prevent adding inheritances to globalgroups. These are permissions
collections, not player groups.
2012-02-25 09:22:54 +00:00
KHobbits
6d4d0ef2c1 Merge pull request #52 from Zenexer/3.0
Misc Cleaning
2012-02-23 11:47:01 -08:00
Paul Buonopane
d06fc84e41 Changed s to dropStack for verbosity, and organized imports.
Signed-off-by: Paul Buonopane <techsoftadvanced@gmail.com>
2012-02-23 12:46:57 -05:00
Paul Buonopane
1cbb6f1617 ManagedFile was in the correct folder, but had the wrong package header.
Signed-off-by: Paul Buonopane <techsoftadvanced@gmail.com>
2012-02-23 12:29:49 -05:00
Paul Buonopane
0039f73fb3 Better use of logger.
Signed-off-by: Paul Buonopane <techsoftadvanced@gmail.com>
2012-02-23 12:27:23 -05:00
Paul Buonopane
a865c9ad01 Formatting.
Signed-off-by: Paul Buonopane <techsoftadvanced@gmail.com>
2012-02-23 12:26:55 -05:00
Paul Buonopane
8c5d4d83f1 Avoided shadowing.
Signed-off-by: Paul Buonopane <techsoftadvanced@gmail.com>
2012-02-23 12:26:10 -05:00
KHobbits
28f478dd04 Write to user files less, on money update. 2012-02-23 17:25:00 +00:00
Paul Buonopane
53c9265800 Formatting.
Signed-off-by: Paul Buonopane <techsoftadvanced@gmail.com>
2012-02-23 12:24:46 -05:00
Paul Buonopane
9b25a25e91 Methods' applicable members are now static.
Signed-off-by: Paul Buonopane <techsoftadvanced@gmail.com>
2012-02-23 12:21:26 -05:00
Paul Buonopane
a2fdf66de4 Renamed TNT explosion listener to be more consistent with naming scheme.
Signed-off-by: Paul Buonopane <techsoftadvanced@gmail.com>
2012-02-23 12:18:29 -05:00
Paul Buonopane
224e5f129e ChargeException was in the correct folder, but had the wrong package header.
Signed-off-by: Paul Buonopane <techsoftadvanced@gmail.com>
2012-02-23 12:14:33 -05:00
Paul Buonopane
146599ae4b Formatting.
Signed-off-by: Paul Buonopane <techsoftadvanced@gmail.com>
2012-02-23 12:11:09 -05:00
Paul Buonopane
4203119e9a Removed poor use of shadowing.
Signed-off-by: Paul Buonopane <techsoftadvanced@gmail.com>
2012-02-23 12:02:55 -05:00
Paul Buonopane
aefe79bbe7 Added @Override annotation in I18n.
Signed-off-by: Paul Buonopane <techsoftadvanced@gmail.com>
2012-02-23 12:00:27 -05:00
Paul Buonopane
5da1e9a220 Increased logger efficiency in Essentials.
Signed-off-by: Paul Buonopane <techsoftadvanced@gmail.com>
2012-02-23 11:58:43 -05:00
Paul Buonopane
a0df79cc06 Removed unused imports in Essentials.
Signed-off-by: Paul Buonopane <techsoftadvanced@gmail.com>
2012-02-23 11:56:48 -05:00
KHobbits
6fb8dad0ec Balance top now has server total on first line.
Balance top will update ess balance backup if using register/vault eco.
2012-02-23 15:17:23 +00:00
KHobbits
9f605e9a88 Fixing upgrade script to allow powertool upgrade. 2012-02-23 14:49:23 +00:00
KHobbits
e5b91dae73 Fixing kits for new config classes. 2012-02-22 12:32:51 +00:00
KHobbits
e1749fecd1 Extra command aliases. 2012-02-22 01:29:37 +00:00
KHobbits
358edff798 Powertools dispatch commands as delayed tasks (should reduce any conflict issues). 2012-02-22 00:23:04 +00:00
KHobbits
34f13ba89c Switch powertools to use different event.
Reduce multiple triggering of powertool events.
Abort event when used with powertool.
2012-02-22 00:11:21 +00:00
KHobbits
945ba6f8ab Fix powertools with new config format. 2012-02-22 00:10:13 +00:00
KHobbits
46f05ee92f Check to see if home section exists. 2012-02-21 22:19:56 +00:00
KHobbits
6d46fc66ce Fixing home list. 2012-02-21 22:12:37 +00:00
KHobbits
ed7fe9213f Fix /sudo message display. 2012-02-21 21:39:25 +00:00
ElgarL
9c68cbae72 Removed BukkitPermsOverride as this is now the default with bukkit
handling child nodes.
2012-02-21 18:40:54 +00:00
ElgarL
c0df771539 Update for Bukkit R5 compatability.
Removed some unused variables.
2012-02-21 18:38:08 +00:00
snowleo
32840e68f3 Sign settings 2012-02-21 19:17:22 +01:00
snowleo
9bd0c33fef Never give our user object to other plugins! 2012-02-21 18:41:27 +01:00
snowleo
4da3f52164 Merge branch 'refs/heads/master' into 3.0
Conflicts:
	.gitignore
	Essentials/src/com/earth2me/essentials/Essentials.java
	Essentials/src/com/earth2me/essentials/EssentialsTimer.java
	Essentials/src/com/earth2me/essentials/ISettings.java
	Essentials/src/com/earth2me/essentials/Jails.java
	Essentials/src/com/earth2me/essentials/OfflinePlayer.java
	Essentials/src/com/earth2me/essentials/Settings.java
	Essentials/src/com/earth2me/essentials/User.java
	Essentials/src/com/earth2me/essentials/UserData.java
	Essentials/src/com/earth2me/essentials/UserMap.java
	Essentials/src/com/earth2me/essentials/Util.java
	Essentials/src/com/earth2me/essentials/commands/Commandnear.java
	Essentials/src/com/earth2me/essentials/commands/Commandping.java
	Essentials/src/com/earth2me/essentials/commands/Commandspawner.java
	Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java
	Essentials/src/com/earth2me/essentials/commands/Commandsuicide.java
	Essentials/src/com/earth2me/essentials/commands/Commandtpaccept.java
	Essentials/src/com/earth2me/essentials/commands/Commandwarp.java
	Essentials/src/messages_en.properties
	Essentials2Compat/src/com/earth2me/essentials/EssentialsConf.java
	Essentials2Compat/src/com/earth2me/essentials/EssentialsUpgrade.java
	EssentialsChat/src/plugin.yml
	EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java
	EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
	EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java
2012-02-21 18:34:53 +01:00
snowleo
cf7da7a83f Merge branch 'refs/heads/groupmanager' 2012-02-21 17:34:45 +01:00
snowleo
f46948249e Updated Essentials to work with R5 2012-02-21 17:33:46 +01:00
snowleo
3b81593ebb CB#1952
B#1330
2012-02-21 16:47:25 +01:00
KHobbits
8042cefd3d Merge branch 'master' into release 2012-02-19 01:20:50 +00:00
KHobbits
514f07ce57 Add bPerm2 support for chat prefixes. 2012-02-18 22:47:38 +00:00
KHobbits
4f4d9f6209 Little bit of extra info in the default /einfo file 2012-02-18 22:08:18 +00:00
KHobbits
3077ea4ef1 Re-allow colours in newb welcome messages. 2012-02-18 21:34:05 +00:00
KHobbits
945ae71480 Adding full keyword support for newb join message.
Also adding {ADDRESS} and {USERNAME} as new keywords.
2012-02-18 21:09:18 +00:00
ElgarL
3d1c0fd157 A command of '/manload' with no world arguments now performs a full
reload of GM.
2012-02-18 09:05:28 +00:00
KHobbits
fab9688abb Don't try to use old bPerms API if it is not available. 2012-02-16 23:44:13 +00:00
KHobbits
b2dbb3f9e3 Fixing being charged twice for /back. 2012-02-16 16:57:50 +00:00
KHobbits
16a0f44b4d Merge remote branch 'remotes/origin/master' into release 2012-02-15 19:09:02 +00:00
md_5
7633b136e3 Its a good idea to actually register the listeners 2012-02-15 19:55:41 +11:00
md_5
0252d756f6 Make Essentials Update use new Listener system, and fix a few general mistakes, including that of the config 2012-02-15 19:34:46 +11:00
md_5
ad05516fd5 Fix formatting in the config.yml and plugin.yml files. Add a new author. 2012-02-15 17:57:53 +11:00
md_5
6d127012d8 Add all the new R4 methods 2012-02-15 17:53:47 +11:00
md_5
c064da9af8 Update to 1.1-R4 2012-02-15 17:44:35 +11:00
md_5
d05f2d7a32 Remove dropItems from the inventory work around 2012-02-15 17:21:28 +11:00
ElgarL
3fc6bb4e4f comment name change 2012-02-15 06:16:33 +00:00
ElgarL
59679e0423 Depreciate PlayerTeleportEvent, PlayerRespawnEvent and PlayerPortalEvent
as it's all handled in PlayerChangedWorldEvent.
This also means we no longer update permissions before we change
worlds.
2012-02-15 06:15:31 +00:00
KHobbits
1a2acb43ae Merge branch 'master' into release 2012-02-14 23:56:02 +00:00
KHobbits
f0c0ee1a8d /spawnmob - Only list mobs you have permission to spawn. 2012-02-14 23:55:29 +00:00
snowleo
3c98718387 Don't return null, throw an exception 2012-02-14 20:30:06 +01:00
snowleo
cfdb2a36c1 Merge pull request #49 from Iaccidentally/patch-2
fix typo in config.yml (another one)
2012-02-14 11:21:52 -08:00
Iaccidentally
3b7d194902 fix typo in config.yml (another one) 2012-02-14 14:21:07 -05:00
snowleo
72d514d52f Merge pull request #48 from Iaccidentally/patch-1
fix typo in config.yml
2012-02-14 11:18:03 -08:00
Iaccidentally
9fe119e720 fix typo in config.yml 2012-02-14 14:16:34 -05:00
ElgarL
4a5c431163 Depreciate PlayerTeleportEvent as it's all handled in
PlayerChangedWorldEvent.
2012-02-14 13:01:39 +00:00
snowleo
a6ac333a74 Less sanitizing for more performance 2012-02-13 21:32:05 +01:00
KHobbits
bc2578b788 Caching regex return in user cleanup.
(Pushing this for testing purposes).
2012-02-13 19:40:33 +00:00
KHobbits
36d07cb539 Merge branch 'master' into release 2012-02-13 17:35:05 +00:00
KHobbits
effe0d5ec5 Merge remote branch 'remotes/origin/groupmanager' 2012-02-13 17:24:32 +00:00
KHobbits
0ab2e745cf Merge branch 'master' of github.com:essentials/Essentials 2012-02-13 17:17:14 +00:00
KHobbits
57a2ef08d4 Allow charges for different mob types in /spawner 2012-02-13 17:16:27 +00:00
KHobbits
2699e02f96 Add per warp command costs
Make warp other commands charge the commander, not the warped.
2012-02-13 17:09:07 +00:00
snowleo
cae3c5a03e We don't need to get OfflinePlayer again. 2012-02-13 11:22:49 +01:00
md_5
13206b3418 Its a good idea to remove imports when you remove a class 2012-02-13 18:11:01 +11:00
md_5
c713be8c82 No need for that CraftBukkit hack anymore 2012-02-13 18:05:59 +11:00
md_5
62cd219b4e Clean up the CommandException stack traces so they appear as if Essentials was never there. 2012-02-12 08:19:24 +11:00
KHobbits
2d56de1483 Update trade signs properly, and visibly handle full signs. 2012-02-11 21:15:26 +00:00
KHobbits
bbc6da5106 Merge pull request #46 from krinsdeath/master
Added Privileges to known Permissions plugins
2012-02-11 12:12:59 -08:00
KHobbits
b0d06ce6ed Refactoring tpaccept perm check to include tpaall. 2012-02-11 20:10:19 +00:00
KHobbits
de1554cb68 Merge pull request #45 from Wolvereness/master
Fix /tpaccept permission check
Refactoring to follow.
2012-02-11 12:06:42 -08:00
Jeff Wardian
c890ea8f87 Added PrivilegesHandler.java;
Implemented privileges in PermissionsHandler.java;

Fixed PrivilegesHandler.canBuild();
2012-02-11 10:06:18 -08:00
ElgarL
c0517c1203 Change Service registration to register WorldsHolder instead of
AnjoPermissionsHandler. This is the correct entry point for all data.
2012-02-11 10:36:55 +00:00
Wolvereness
9efd0eb6f9 Fix exploit with /tpaccept if sender no longer has permission 2012-02-09 23:14:57 -06:00
KHobbits
f0ee026fb9 Allow colour codes in /ping 2012-02-09 22:13:00 +00:00
KHobbits
b3fc790000 New Permission: essentials.sudo.exempt
If a user has this perm, they cannot be controlled.
2012-02-09 22:11:46 +00:00
KHobbits
83f9209bcc Optional argument to /ping [message]- Message to be echo'd.
Possible use in scripts, checking for lag, /sudo, etc.
2012-02-09 22:02:24 +00:00
KHobbits
691a0ef4ce Fixing silly typo - Fixes shout costs. 2012-02-09 02:11:36 +00:00
snowleo
a3c67e23c8 Organize Imports 2012-02-06 22:26:52 +01:00
snowleo
ffcdd99ad0 Cleanup 2012-02-06 22:22:05 +01:00
snowleo
539700cb21 New Groups code, supports groups.yml file, gm and vault, new economy api. 2012-02-06 22:13:39 +01:00
snowleo
1078b7b5f2 copy&paste fail 2012-02-05 18:29:37 +01:00
snowleo
f908eee76c New permissions for signs 2012-02-05 18:26:21 +01:00
snowleo
b95c662ed5 Finally fix tests 2012-02-05 18:02:45 +01:00
ElgarL
97bd49e598 Add some commenting 2012-02-05 16:41:34 +00:00
snowleo
a60f280a1c Fixing the Testcases 2012-02-05 17:35:47 +01:00
ElgarL
e93e50f6d2 Fix world mirroring so it correctly creates data files and data sources
for partially mirrored worlds.
Fixed world mirroring so it returns the correct data for the
requested world
2012-02-05 16:30:58 +00:00
snowleo
8ab5bad988 Modified BetterLocation, and new Permission-System 2012-02-05 17:19:32 +01:00
ElgarL
76ba5caeec Prevent getAllPlayersPermissions() processing a group more than once.
Improves performance when using complex inheritance structures.
2012-02-02 18:10:35 +00:00
KHobbits
6ca1cdec4f Merge branch 'master' into release 2012-02-02 11:41:18 +00:00
KHobbits
86a1dda46c Make it so ops can build, even if they don't have the matching permission. 2012-02-02 10:43:17 +00:00
KHobbits
4326ce0d4a Force minimum CB version to 1846, don't want people on #1840 due to big bugs. 2012-02-02 10:32:18 +00:00
KHobbits
3ff1f4adbb Fixing repair to not repair items with datavalues, unless they actually have a durability. 2012-02-02 10:27:35 +00:00
KHobbits
492c4e8521 Craftbukkit #1846 Bukkit #1211 2012-02-02 10:27:09 +00:00
KHobbits
e3f3fe84ea Recover from broken config files, but keep a backup of the old one for purpose of data recovery. 2012-02-02 09:48:56 +00:00
KHobbits
6e2ac3b56e Extend valid characters to be a little less strict. 2012-02-02 09:37:30 +00:00
KHobbits
5c19e71858 Sanitize mail for untoward characters.
Prevent a user error from terminating essentials timer task.
2012-02-02 09:26:36 +00:00
ElgarL
a0103afde3 fix setGroup to only block superperms update if update is false. 2012-02-02 02:41:10 +00:00
ElgarL
dbf30740fb Fix a bug with getWorldData return the main world data for all mirrors,
instead of the worlds parent data.
2012-02-02 02:01:04 +00:00
KHobbits
92fa415848 More info, and less severe warning on jail error. 2012-01-31 08:33:14 +00:00
KHobbits
2942ef40f3 Update jails to new event system. 2012-01-31 08:06:50 +00:00
ElgarL
3f02bcd702 Catch all errors in badly formatted groups. 2012-01-31 03:16:34 +00:00
ElgarL
fe050dd725 Track the 'onPlayerChangeWorld' event as some teleports seem to not be
triggering a world move.
2012-01-30 17:08:55 +00:00
ElgarL
5b4966c888 Auto sort permissions on load to speed up population of superperms.
Negating a parent node after adding all nodes with * will now
correctly remove all child nodes of that parent before populating
superperms.
	  eg.
	      - '*'
	      - -vanish.*
	      - vanish.standard
2012-01-30 14:41:19 +00:00
KHobbits
e2abf05a27 Merge branch 'master' into release 2012-01-30 05:36:03 +00:00
KHobbits
8500542e93 Remove invalid item spawn blacklist warning during startup. 2012-01-29 23:36:27 +00:00
KHobbits
d9e6f2975a Merge branch 'master' into release 2012-01-29 21:44:30 +00:00
KHobbits
2f1d9ad82c Prevent /home bed, if the bed was later destroyed. 2012-01-29 21:44:15 +00:00
KHobbits
d8ac3587ac Merge branch 'master' into release 2012-01-29 21:39:05 +00:00
ElgarL
2c8aa20542 .project change for Eclipse Build tool 2012-01-29 21:37:50 +00:00
KHobbits
a2418a68d9 Fixing Kill/suicide in creative mode. 2012-01-29 21:37:38 +00:00
KHobbits
85c4fbdf4f Merge branch 'master' into release 2012-01-29 21:20:56 +00:00
KHobbits
dff8f541fe New craftbukkit
CB 1840, B 1208
2012-01-29 21:06:55 +00:00
KHobbits
d0a5656fa4 Merge remote branch 'remotes/origin/groupmanager' 2012-01-29 20:57:54 +00:00
KHobbits
bc76e87366 Fix boolean fail in /r offline checking. 2012-01-29 20:57:17 +00:00
ElgarL
bf9a67a2e4 updating .gitignore 2012-01-29 11:04:52 +00:00
ElgarL
95885e46c9 Fix players retaining permissions when demoted. 2012-01-29 10:54:24 +00:00
KHobbits
5a7f38fa29 Merge branch 'master' into release 2012-01-29 05:00:04 +00:00
KHobbits
6a5fefb102 Optional second argument to /tpaccept, it will only accept the request if the sender matched that string. 2012-01-29 04:59:30 +00:00
KHobbits
c47c008871 Added kit note.
Fixes #1276
2012-01-29 03:26:44 +00:00
KHobbits
a31f5e219d Kill people the proper way.
Test #1410
2012-01-29 03:23:38 +00:00
KHobbits
9ee78bdaec Switch /near priority to check for int first.
Test #1269
2012-01-29 03:09:59 +00:00
KHobbits
735f9ce212 Make sure player is online when sending a /reply. 2012-01-29 02:57:52 +00:00
KHobbits
417148f5da Merge branch 'master' into release 2012-01-29 01:45:40 +00:00
KHobbits
8f0350570e Merge remote branch 'remotes/origin/groupmanager' 2012-01-29 01:45:03 +00:00
KHobbits
27365d1f1b Prevent disabled sign creation (if any of essentials signs are enabled) 2012-01-29 01:42:55 +00:00
KHobbits
ebb3a77430 Fix sign list format. 2012-01-29 01:38:24 +00:00
KHobbits
b3252168f6 Disable all signs by default. 2012-01-29 01:27:04 +00:00
KHobbits
e1abdbdd37 Added options to enable each sign type 2012-01-29 01:12:38 +00:00
ElgarL
3deff2afe7 silly formatting change to test gitbot 2012-01-28 18:01:17 +00:00
KHobbits
8080abacd6 More general cleanup. 2012-01-28 14:17:27 +00:00
KHobbits
e960078e1a Random Cleanup 2012-01-28 14:05:50 +00:00
KHobbits
f4413633b8 Clean more imports. 2012-01-28 13:48:30 +00:00
KHobbits
5c44877c4c Organize Imports 2012-01-28 13:44:06 +00:00
KHobbits
36d7907987 Fix missing import. 2012-01-28 13:40:10 +00:00
KHobbits
047f373631 Merge branch 'master' into 3.0
Conflicts:
	Essentials/src/com/earth2me/essentials/commands/Commanddelhome.java
	Essentials/src/com/earth2me/essentials/commands/Commandhome.java
	Essentials/src/com/earth2me/essentials/commands/Commandsethome.java
	Essentials/src/messages_fr.properties
	EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java
2012-01-28 13:33:09 +00:00
KHobbits
a85cbdd505 Merge branch 'master' into release 2012-01-28 12:59:15 +00:00
KHobbits
c6aa34076a Merge remote branch 'remotes/origin/groupmanager' 2012-01-28 12:58:37 +00:00
ElgarL
92f83dfe73 fix for an iterator error if there is only one element in the array. 2012-01-28 11:59:54 +00:00
ElgarL
00057eaca4 Fixed a bug when pushing superperms in the wrong order. 2012-01-28 11:47:39 +00:00
KHobbits
2f96c9763f Only list bed home if it is set. 2012-01-28 01:39:51 +00:00
KHobbits
137b60c5f2 Allow space as well as : in /delhome 2012-01-28 01:32:15 +00:00
KHobbits
292b7b0546 Stop users from using /sethome bed 2012-01-28 01:09:02 +00:00
KHobbits
d1d31e9769 If bed home is set, give priority when spawning. 2012-01-28 00:57:08 +00:00
KHobbits
f7c6759433 Check bed still exist, for bed homes. 2012-01-28 00:49:22 +00:00
KHobbits
5137502646 Switch website URL's to point at wiki. 2012-01-28 00:20:46 +00:00
ElgarL
9ff8b69282 Properly fix inherited negated nodes. 2012-01-27 13:09:11 +00:00
ElgarL
7f269187c5 do not allow inherited permissions to negate higher perms. 2012-01-27 12:38:00 +00:00
KHobbits
6d34a2aa17 Merge branch 'master' of github.com:essentials/Essentials 2012-01-26 21:21:35 +00:00
KHobbits
9b58b2b9c0 Revert emergency listener to old style
Stops peoples world world burning down if they throw in 2.8, on a 1.0 server.
2012-01-26 21:21:13 +00:00
snowleo
b4d91978c7 Merge branch 'refs/heads/master' into release 2012-01-26 04:51:10 +01:00
snowleo
8aa260ee34 Minor fix to french translation 2012-01-26 04:49:26 +01:00
Léa Gris
25976edc2b i18n added to command nuke 2012-01-26 04:46:00 +01:00
Léa Gris
8e9094a3ef Updated translations to Essentials Dev2.7.191 2012-01-26 04:45:16 +01:00
KHobbits
16bde87982 Merge branch 'master' into release 2012-01-26 00:31:05 +00:00
KHobbits
b8944d0b25 Set min bukkit to 1818 - RB 2012-01-26 00:30:33 +00:00
KHobbits
69209eeb2f Merge remote branch 'remotes/origin/groupmanager' 2012-01-26 00:28:10 +00:00
KHobbits
72ed86e0dd Tidy chat. 2012-01-26 00:01:49 +00:00
KHobbits
c689b55c4d Fix depends 2012-01-25 23:56:54 +00:00
ElgarL
746eb353a2 Fixed an infinite loop error when using '/manudel' on a logged in
player. It caused setDefaultGroup to trigger a bukkit update when no GM
User existed yet.
2012-01-25 23:44:14 +00:00
ElgarL
3708f2b3bb Trap errors in fetching the mirrors map. 2012-01-25 22:43:07 +00:00
ElgarL
e563405a7d Check for a null player object in the PlayerTeleportEvent. 2012-01-25 22:35:24 +00:00
ElgarL
ae2cf3d95c Fixed subgroups (I broke earlier). 2012-01-25 22:33:22 +00:00
ementalo
270533652b Merge branch 'master' into release 2012-01-25 14:29:05 +00:00
paul.aston
324dd05c97 CB #1818
RB #1200
2012-01-25 14:23:46 +00:00
Paul A.
2a0c3eebbc Merge pull request #43 from essentials/groupmanager
Fix trying to modify an unmodifiable collection breaking superperms.
2012-01-24 17:29:08 -08:00
ElgarL
e1660d47ba Fix trying to modify an unmodifiable collection breaking superperms. 2012-01-25 01:20:44 +00:00
ementalo
cbee61093e Fix exception when getting displayname
Fix exception if null values are in settings groups.yml
2012-01-25 01:09:32 +00:00
KHobbits
03d640260d Merge branch 'master' into release 2012-01-25 00:04:08 +00:00
KHobbits
da3a6af92d Merge remote branch 'remotes/origin/groupmanager' 2012-01-25 00:02:15 +00:00
KHobbits
df061749dd 2nd sweep over Essentials Chat, to implement 2.8 changes.
Formatting cache still needs reimplemented.
2012-01-24 23:20:00 +00:00
KHobbits
38a9327284 Merge branch '3.0' of github.com:essentials/Essentials into 3.0
Conflicts:
	Essentials/src/messages_en.properties
2012-01-24 22:56:53 +00:00
ementalo
307c6c7bf0 remove merge leftovers
Don't try to spawn users who have disconnected before we have a chance to spawn them
2012-01-24 22:50:34 +00:00
ementalo
593cb8d56e Don't try to spawn users who have disconnected before we have a chance to spawn them 2012-01-24 22:43:33 +00:00
KHobbits
bdc695c85b First sweep over Essentials Chat, to implement 2.8 changes.
Formatting cache still needs reimplemented.
2012-01-24 22:08:20 +00:00
KHobbits
8c54f37092 Fix messages file 2012-01-24 20:47:11 +00:00
ElgarL
f40f5f880b Fix typo/wording in changelog
Allow negation to the * permission node when populating superperms.
2012-01-24 19:41:22 +00:00
ElgarL
8390594682 Allow negations with the * permission node when population superperms. 2012-01-24 19:38:22 +00:00
ElgarL
a13740f638 Fix hasOwnData to return a correct result with new mirroring system 2012-01-24 15:37:21 +00:00
ElgarL
5f19cbf17b Fixed isInList 2012-01-24 15:35:20 +00:00
ElgarL
145b0be2f3 addSubGroup now returns a boolean for success/failure.
'/manuaddsub' now correctly reports if it was able to add the sub
group.
2012-01-24 14:21:07 +00:00
ElgarL
1dab4f95dd Added recursive loop detection for World mirroring (you may not set the
main world as a mirror of another).
Fixed fetching world data so it no longer returns the mirrored world
for groups. Each world data holder now points to the correct data set,
so can be returned as an object.
2012-01-24 14:08:53 +00:00
snowleo
f27b2290dc Merge branch 'refs/heads/master' into release 2012-01-24 03:43:49 +01:00
snowleo
0ea41d9169 Merge branch 'refs/heads/groupmanager' 2012-01-24 03:43:17 +01:00
snowleo
cc0e9aa84b Merge branch 'refs/heads/master' into 3.0
The changes to EssChat have not been merged

Conflicts:
	Essentials/src/com/earth2me/essentials/Essentials.java
	Essentials/src/com/earth2me/essentials/EssentialsEntityListener.java
	Essentials/src/com/earth2me/essentials/ISettings.java
	Essentials/src/com/earth2me/essentials/OfflinePlayer.java
	Essentials/src/com/earth2me/essentials/Settings.java
	Essentials/src/com/earth2me/essentials/Util.java
	Essentials/src/com/earth2me/essentials/listener/EssentialsBlockListener.java
	Essentials/src/com/earth2me/essentials/listener/EssentialsPlayerListener.java
	Essentials/src/com/earth2me/essentials/listener/EssentialsPluginListener.java
	Essentials/src/messages.properties
	Essentials/src/messages_da.properties
	Essentials/src/messages_de.properties
	Essentials/src/messages_en.properties
	Essentials/src/messages_es.properties
	Essentials/src/messages_fr.properties
	Essentials/src/messages_nl.properties
	EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java
	EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java
	EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerHighest.java
	EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java
	EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerNormal.java
	EssentialsGeoIP/src/com/earth2me/essentials/geoip/EssentialsGeoIP.java
	EssentialsGeoIP/src/com/earth2me/essentials/geoip/EssentialsGeoIPPlayerListener.java
	EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
	EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java
	EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectPlayerListener.java
	EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawn.java
	EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPP.java
	EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPPPlayerListener.java
2012-01-24 00:52:08 +01:00
snowleo
6af054631f More work on 3.0 branch 2012-01-24 00:01:31 +01:00
ementalo
01a37df700 Add new permission essentials.protect.alerts.notrigger
If user has this permisson they do not trigger EssProtect block alerts
Fix spawnmob sign command args
2012-01-23 16:00:23 +00:00
ementalo
f93769dd1d Add new permission essentials.protect.alerts.notrigger
If user has this permisson they do not trigger EssProtect block alerts
2012-01-23 15:48:56 +00:00
ElgarL
125ea7c701 Fixed infinite loop error on player join.
Optimized code to only update the player logging in instead of all
players online.
2012-01-22 23:46:26 +00:00
ElgarL
6e03ea7b7d Separated all events to be independent classes. 2012-01-21 20:18:40 +00:00
ElgarL
9041596384 Fixed a random null error upon a player portaling. 2012-01-21 19:09:08 +00:00
KHobbits
efda9beece Merge branch 'master' into release 2012-01-21 17:19:12 +00:00
ElgarL
4b61ac9043 Update to new Bukkit Event system.
Update GroupManagerBridge for new event system.
2012-01-21 11:47:08 +00:00
KHobbits
72edfacfb8 Catching throwable leads to madness, lets do this safely. 2012-01-21 00:19:13 +00:00
KHobbits
aa88205d95 Catch errors too, incase the class doesn't exist. 2012-01-21 00:01:43 +00:00
KHobbits
8d441a4cc7 Messages Cleanup 2012-01-20 23:13:37 +00:00
KHobbits
766935871f If vault throws an exception, it should not be enabled. 2012-01-20 23:04:43 +00:00
KHobbits
f5d65371b2 Adding translation keys for [L] and [Spy] 2012-01-20 22:57:35 +00:00
KHobbits
662749be8b Check shout/question messages are longer than 1 character. 2012-01-20 22:54:47 +00:00
snowleo
e46fe381b4 Removing load info, bucket displays that now. 2012-01-20 05:52:35 +01:00
snowleo
04a43eb5d0 New Event code for EssentialsSpawn 2012-01-20 05:34:28 +01:00
snowleo
792f70efa5 Update for new CraftBukkit Event Code
EssentialsSpawn can't be updated yet, because the new event system lacks dynamic priorities.
2012-01-20 05:20:37 +01:00
snowleo
46298ae858 CB#1791 2012-01-20 04:09:35 +01:00
KHobbits
d08b1a5089 Fix EssChat displayname error. 2012-01-19 15:51:55 +00:00
KHobbits
e015cad131 Merge remote branch 'remotes/origin/groupmanager' 2012-01-19 15:34:00 +00:00
KHobbits
008f0d595f Fix Lombok include. 2012-01-19 15:08:37 +00:00
ElgarL
7ee3919175 Fixed text when adding a subgroup to not say the player was moved. 2012-01-19 13:08:57 +00:00
snowleo
2560bdca4a Update of Lombok, fixes memory leak in Netbeans 2012-01-19 13:17:05 +01:00
ElgarL
16d537bd6c Remove debug spam 2012-01-19 12:08:39 +00:00
snowleo
5f04d1867c Cache MessageFormats for Chat 2012-01-19 02:03:20 +01:00
KHobbits
a10f6850e5 Compiled regex is faster. 2012-01-18 23:35:30 +00:00
KHobbits
36bc1adf83 Make sure to clean the chatStore. 2012-01-18 23:08:40 +00:00
KHobbits
cd8cc63113 Reduce duplicate calls in EssentialsChat
Should cut the time down a little.
2012-01-18 22:53:39 +00:00
KHobbits
947bee98a0 Merge remote branch 'remotes/origin/groupmanager' 2012-01-18 20:04:50 +00:00
ElgarL
9c052b5178 Better optimize assembling of a players permissions and allow the * node
to populate all registered superperms.
2012-01-18 16:39:12 +00:00
snowleo
f0dd81ee00 Merge branch 'refs/heads/master' into 3.0
Did some tweaks, so that it actually works.

Conflicts:
	Essentials/src/com/earth2me/essentials/Essentials.java
	Essentials/src/com/earth2me/essentials/User.java
	Essentials/src/com/earth2me/essentials/Util.java
	Essentials/src/com/earth2me/essentials/commands/Commandhelpop.java
	Essentials/src/com/earth2me/essentials/commands/Commanditemdb.java
	Essentials/src/com/earth2me/essentials/commands/Commandmail.java
	Essentials/src/com/earth2me/essentials/commands/Commandme.java
	Essentials/src/com/earth2me/essentials/commands/Commandmsg.java
	Essentials/src/com/earth2me/essentials/commands/Commandnick.java
	Essentials/src/com/earth2me/essentials/commands/Commandr.java
	Essentials/src/com/earth2me/essentials/listener/EssentialsPlayerListener.java
	EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java
	EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java
	EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
	EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawn.java
	EssentialsSpawn/src/com/earth2me/essentials/spawn/EssentialsSpawnPlayerListener.java
	build.xml
2012-01-18 04:01:01 +01:00
ElgarL
64af5b465d Added a tidy error message for invalid permission entries in
GlobalGroups.
2012-01-18 01:25:25 +00:00
KHobbits
5c1d49fd0e Merge remote branch 'remotes/origin/groupmanager' 2012-01-17 23:50:05 +00:00
KHobbits
79a13e97a2 Merge remote branch 'remotes/origin/groupmanager' 2012-01-17 23:49:38 +00:00
KHobbits
27b0cc86de Don't charge a user if warp already exists (and they can't set it). 2012-01-17 19:25:56 +00:00
ElgarL
89c41b0508 v 1.9:
Optimize populating Bukkit perms so we no longer calculate the
child
nodes (Bukkit already does this).
2012-01-17 18:03:16 +00:00
KHobbits
ee88abafcf Merge branch '3.0' of github.com:essentials/Essentials into 3.0 2012-01-17 17:41:16 +00:00
KHobbits
e7fd26ee64 Merge branch 'master' of github.com:essentials/Essentials 2012-01-17 17:40:22 +00:00
KHobbits
8fc6684290 Auto Update GM Version 2012-01-17 17:24:22 +00:00
KHobbits
a1cf08d6ab Auto update gm version. 2012-01-17 17:23:27 +00:00
ementalo
42e9e105cb Adding permissions for overwriting exisitng warps
essentials.warp.overwrite.[warpname] will allow overwrting of exsiting warps
Adding WarpNotFoundException class
For ticket #
2012-01-17 16:19:53 +00:00
KHobbits
ec0d6651b0 Removing 2 dead classes. 2012-01-17 03:13:44 +00:00
snowleo
a66ffd8921 Shorter names for enchantment signs. 2012-01-17 01:45:03 +01:00
KHobbits
1f2c669eca Stripping vanilla colour from /helpop and /mail
Adding support for &k in EssChat
Adding support for colour in /msg and /r - New perm: essentials.msg.color
2012-01-16 20:25:36 +00:00
KHobbits
1d5a09a03e Merge branch 'master' of github.com:essentials/Essentials 2012-01-16 19:42:37 +00:00
KHobbits
4435121c84 Stripping vanilla colours from /msg 2012-01-16 19:42:15 +00:00
snowleo
813e66b4f2 Fix /nick command colors 2012-01-16 20:38:53 +01:00
snowleo
26d63f3666 Strip colors from chat, if the user does not have the permission. 2012-01-16 20:29:55 +01:00
KHobbits
0fb07d4cc1 Removing debugging message from player login. 2012-01-16 18:58:44 +00:00
snowleo
cd2f819c29 Cleanup 2012-01-16 19:11:41 +01:00
KHobbits
149ce7d74d Adding support for Vault as a fallback economy method. 2012-01-16 18:00:43 +00:00
KHobbits
c7c7e5e4ce Merge remote branch 'remotes/origin/master' into release 2012-01-16 12:43:09 +00:00
snowleo
f26cccb663 Optimize TextInput to cache motd and info textfiles. 2012-01-16 04:51:27 +01:00
snowleo
81ec87d893 Revert changes to Usermap 2012-01-16 02:12:20 +01:00
snowleo
91563e9dca Optimize Break in Protect 2012-01-16 01:55:04 +01:00
snowleo
359ea194b8 Speed improvements for Move and Interact Event. 2012-01-16 00:50:52 +01:00
ElgarL
1a0b03db4d Removed '- bukkit.command' form the globalgroups permission nodes. 2012-01-15 01:43:42 +00:00
snowleo
c860b1c668 Reload less 2012-01-14 23:25:52 +01:00
snowleo
c584d74852 Temporary fix for Spawns and Jails when Worlds are loaded after Essentials.
This will be replaced by BetterLocation fix in 3.0 branch.
2012-01-14 23:13:58 +01:00
KHobbits
6e82419c15 Allowing use of aliases in help/info/motd, for command suggestions.
Test #1441
2012-01-14 16:53:18 +00:00
KHobbits
3f6b9586b4 Fixing double charges on /home
Test #1426
2012-01-14 16:42:53 +00:00
KHobbits
29d4e09983 Fixing {WorldDate}
Test #1353
2012-01-14 16:36:19 +00:00
KHobbits
f61f80164d Merge branch 'master' into release 2012-01-14 15:52:55 +00:00
KHobbits
f0def90301 Merge remote branch 'remotes/origin/groupmanager' 2012-01-14 15:52:22 +00:00
ElgarL
d0e5685ac0 Catch NullPointerErrors generated by blank permission nodes. 2012-01-14 15:48:55 +00:00
KHobbits
856cef3286 Update Essentials/src/com/earth2me/essentials/commands/Commanditemdb.java 2012-01-14 15:04:16 +00:00
KHobbits
d16fef9f7f Merge branch 'master' into release
~ GM needs testing before release ~
2012-01-14 13:16:33 +00:00
KHobbits
43f1c0f89d Removing debugging messages. 2012-01-13 22:50:48 +00:00
KHobbits
256d202d50 Adjusting default spawn behavior.
Moving option in config file.
2012-01-13 22:41:47 +00:00
snowleo
4884bed117 Merge branch 'refs/heads/groupmanager' 2012-01-13 01:38:54 +01:00
snowleo
348bb6d0a3 Merge branch 'refs/heads/master' into 3.0 2012-01-13 00:23:39 +01:00
snowleo
3fdde2f764 Add new eggs to items.csv 2012-01-12 23:56:39 +01:00
snowleo
390b17f0d8 Min Bukkit version is 1713 now 2012-01-12 23:43:11 +01:00
snowleo
fe9d5645f6 Added the new Enchantments 2012-01-12 23:42:04 +01:00
snowleo
eb5c88ef08 Netbeans 7.1 stuff 2012-01-12 23:37:39 +01:00
snowleo
6eea852b1d CB#1713 B#1136 2012-01-12 23:36:45 +01:00
snowleo
64904cdcfd Create Files, if they don't exist 2012-01-12 16:34:52 +01:00
snowleo
69d57b04d9 ItemDb now loads in half the time, uses 72KB less memory. 2012-01-12 16:33:55 +01:00
ElgarL
768c92e5bf Major, MAJOR changes to support partial/full world mirroring.
You can now mirror groups.yml, users.yml or both files between
different worlds.
2012-01-11 05:51:40 +00:00
snowleo
ef659d5f26 Better Location code for lazy loading worlds
This fixes problems with worlds that are loaded after the Location object is created and should prevent memory leaks when a world is unloaded.
2012-01-11 04:36:57 +01:00
ElgarL
2a478fe03d Optimize fetching of Mirrored world data. 2012-01-10 18:40:34 +00:00
snowleo
703c5741bd Essentials should run now... 2012-01-10 01:02:23 +01:00
snowleo
d64c73fc51 Finished Protect, Essentials should build now. 2012-01-10 00:36:09 +01:00
snowleo
92abba0f25 All tests should work now 2012-01-09 23:27:52 +01:00
ElgarL
58057a771d Changed over to a reflection method for populating superperms as Bukkit
lags when you handle permissions one at a time.
2012-01-09 02:00:58 +00:00
snowleo
cc3cd5e89c Cleanup of Console class 2012-01-06 01:55:41 +01:00
ElgarL
4c485f3147 Fix 'manucheckp' to correctly report if a permission is available from
GroupManager or Bukkit.
2012-01-05 19:43:30 +00:00
KHobbits
3513d72a7b Fixing Warp, Spawnmob signs
Fix Imports
2012-01-04 21:41:05 +00:00
KHobbits
8432e1fc7d Fixing kit and protect signs (inGroup)
Fix imports
2012-01-04 21:37:00 +00:00
KHobbits
a46f6fd73d Revert "Possible sign refactor?"
This reverts commit 897571db7d.
2012-01-04 18:56:36 +00:00
KHobbits
897571db7d Possible sign refactor? 2012-01-04 18:34:37 +00:00
KHobbits
de0a419476 Cleaning up item spawning and kits. 2012-01-04 17:51:14 +00:00
ementalo
6dd73f5247 ReadLock for realname
Remove unneeded overrides
Redo Khobbits messages_de changes
2012-01-04 15:53:59 +00:00
ementalo
a50cfb3efb 3.0 updates - Main jar should build now 2012-01-04 15:06:10 +00:00
ementalo
bbcf2ecce3 Fix a few things for 3.0
Test #843 - new config option added cancelTpRequestsOnWorldChange
Test # 1255 - essentials.nogod.override permission added
Test #1311 - added ban reason in /seen
2012-01-04 11:57:00 +00:00
snowleo
86ea654a5d Cleanup of Backup class 2012-01-04 05:45:32 +01:00
KHobbits
d2bbbd14fc Organize Imports 2012-01-04 03:45:26 +00:00
KHobbits
a5398e938c final is cleaner. 2012-01-04 03:37:47 +00:00
KHobbits
7b01bc894d Readlocks maybe... 2012-01-04 03:27:25 +00:00
KHobbits
2678be90e3 Fixing up kits. 2012-01-04 03:12:21 +00:00
snowleo
781f42fba1 More fixes for commands 2012-01-03 21:43:57 +01:00
ElgarL
7726fd0081 Reload GlobalGroups when you perform a world load.
Changed GlobalGroups to save/load before local groups in the
scheduled data saving/loading
2012-01-03 02:04:48 +00:00
snowleo
481749b119 New names 2012-01-03 02:57:44 +01:00
snowleo
a552b88172 I always forget these 2012-01-03 02:53:57 +01:00
snowleo
801562ac2c More work on Protect 2012-01-03 02:51:19 +01:00
snowleo
869d79ae73 This feels so good D: 2012-01-03 01:53:38 +01:00
snowleo
7153676137 Starting to break Protect 2012-01-03 00:07:44 +01:00
snowleo
d2c1b24e4b Prototype for grouping permissions into an enum 2012-01-02 23:45:50 +01:00
snowleo
b3de4276bc Those are permission based now 2012-01-02 23:35:36 +01:00
snowleo
cb31939a7a New Protect config 2012-01-02 23:25:17 +01:00
snowleo
41e0e64a5f EssentialsSpawn and EssentialsChat should build now again 2012-01-02 22:38:47 +01:00
snowleo
a20e96af4e Netbeans 7.1 RC2 project stuff 2012-01-02 22:37:44 +01:00
snowleo
cedf363557 Merge branch 'refs/heads/master' into 3.0 2012-01-02 20:29:00 +01:00
snowleo
9a568992f1 Merge pull request #42 from jjkoletar/patch-1
No sending to all players, must specify target.
2012-01-01 16:38:05 -08:00
Jeremy
283dc9b3c1 No sending to all players, must specify target. 2012-01-01 18:18:29 -06:00
ElgarL
3aba996e97 Changed the way events are raised to prevent variable corruption. 2011-12-29 14:52:42 +00:00
snowleo
9bb6d77bdb More work done on the 3.0 branch 2011-12-23 12:57:26 +01:00
snowleo
03171616fa Merge branch 'refs/heads/master' into 3.0
Conflicts:
	Essentials/src/com/earth2me/essentials/Essentials.java
2011-12-22 23:37:12 +01:00
ElgarL
69847af08a Decreased ranks of default users so idiots who don't remove them can't
get 'hacked' when in offline mode.
2011-12-22 17:01:10 +00:00
ElgarL
debcf4714a Delayed GroupManager events so Superperms will be fully updated before
plugins receive the events.
2011-12-20 17:21:55 +00:00
snowleo
4425d53664 Only info not a warning if a file is missing 2011-12-20 12:25:30 +01:00
snowleo
791e8f2d14 Only info not a warning if a file is missing 2011-12-20 12:24:59 +01:00
snowleo
ee5e015a63 Correctly match release and non release versions of bukkit. 2011-12-20 12:20:41 +01:00
snowleo
5d4f22ad84 Correctly match release and non release versions of bukkit. 2011-12-20 12:20:12 +01:00
snowleo
839ce3d526 Fix sending our player object to other plugins. 2011-12-20 11:57:51 +01:00
snowleo
31e80ba698 Fix sending our player object to other plugins. 2011-12-20 11:57:22 +01:00
ElgarL
a2202439bb Expanded GlobalGroups.yml and Groups.yml to include Towny permissions. 2011-12-19 19:22:04 +00:00
ElgarL
7c8c40c790 manpromote and mandemote now correctly sent the notification to the
console if the command was issued there.
2011-12-19 15:44:27 +00:00
snowleo
abd86347c7 Always return an offlineplayer object with the name, that the user wants. 2011-12-19 12:57:09 +01:00
snowleo
5bb7d82fca Fix double names in /balancetop and show display name in balancetop 2011-12-19 12:39:23 +01:00
snowleo
cc06117210 Merge branch 'refs/heads/master' into release 2011-12-19 12:07:28 +01:00
KHobbits
5a092f0e99 Merge branch 'master' of github.com:essentials/Essentials 2011-12-19 10:57:44 +00:00
KHobbits
98cd03ac57 Prevent future warps being named as numbers. 2011-12-19 10:57:18 +00:00
snowleo
8761feb93f More null checks for Jails 2011-12-19 11:53:52 +01:00
KHobbits
cbd5b6c0f4 Merge remote branch 'remotes/origin/master' into release 2011-12-19 05:04:15 +00:00
ElgarL
afe8ecd3df Fixed a typo 2011-12-18 15:21:56 +00:00
ElgarL
244673e1fb Fixed manucheckp on group (missed it in last commit) 2011-12-18 14:35:14 +00:00
ElgarL
de40f7f556 Fixed 'manucheckp' returning a null for the searched node when it's a
group/subgroup.
2011-12-18 14:26:00 +00:00
KHobbits
087a594449 Removing duplicate messages file
This causes confusion when trying to override messages in the ess folder.
2011-12-18 11:52:49 +00:00
KHobbits
c0b78cc3d5 Adding /join as alias to /tpa, and /come as alias to /tpahere 2011-12-18 04:30:00 +00:00
ElgarL
ac77bbb0b4 Changed ServicesManager registration to lowest from normal. 2011-12-18 04:25:54 +00:00
KHobbits
b05e4079d9 Essentials now throws a custom event, to handle local chat.
(Changing event name, so we don't get custom event conflicts.)
2011-12-17 17:57:57 +00:00
KHobbits
556c990eff EssentialsChat cleaning. 2011-12-17 17:40:47 +00:00
KHobbits
618f58c3f3 Merge branch 'master' into 3.0 2011-12-15 20:47:59 +00:00
KHobbits
fec3b61039 Merge branch 'master' of github.com:essentials/Essentials 2011-12-15 20:47:24 +00:00
KHobbits
01530192cf Make powertool use a chat event, instead of just messaging each user. 2011-12-15 20:47:06 +00:00
snowleo
a7e71488c6 Merge branch 'refs/heads/master' into 3.0 2011-12-15 10:32:56 +01:00
snowleo
64bc8d1133 Corrected version match for 1597 build version 2011-12-15 10:32:04 +01:00
ElgarL
815a9dcca2 Removed op permissions from admins in the default GloblaGroups.yml. 2011-12-14 16:24:47 +00:00
snowleo
0155bcedb7 Updated all modules to new api, some settings are still missing 2011-12-14 16:31:08 +01:00
snowleo
9ab2fe54fc Added EssentialsSigns to build.xml 2011-12-14 16:05:35 +01:00
snowleo
0f1eb9b4f9 Moved signs code to a new module 2011-12-14 16:04:15 +01:00
snowleo
503e837cfd Fail merge :D 2011-12-14 15:22:29 +01:00
snowleo
0a98b8f662 Merge branch 'refs/heads/master' into 3.0
Conflicts:
	Essentials/src/com/earth2me/essentials/Essentials.java
	Essentials/src/com/earth2me/essentials/IUser.java
	Essentials/src/com/earth2me/essentials/Trade.java
	Essentials/src/com/earth2me/essentials/User.java
2011-12-14 15:20:22 +01:00
snowleo
58bebd851c Fix failing override for /enchant /eco /ext 2011-12-14 15:07:08 +01:00
snowleo
867e66e774 Merge branch 'refs/heads/master' into release 2011-12-14 11:56:09 +01:00
snowleo
9eaebadaaa Merge branch 'refs/heads/groupmanager' 2011-12-14 10:03:32 +01:00
ElgarL
8d29a2c578 deleting the contents of GlobalGroups.yml will no longer thrown a
NullPointerException.
2011-12-14 04:26:02 +00:00
KHobbits
2202448cee Read current exp, instead of stored exp.
This means that exp used in enchanting is subtracted from total exp.
2011-12-14 03:41:24 +00:00
snowleo
45ffeaffec Merge branch 'refs/heads/master' into release 2011-12-13 23:52:58 +01:00
snowleo
79861b1f10 Merge branch 'refs/heads/groupmanager' 2011-12-13 23:52:25 +01:00
ElgarL
559400c606 GM now registers with Bukkits ServicesManager. 2011-12-13 18:20:02 +00:00
ElgarL
5b195299ba Update event Action names to be unique 2011-12-13 17:32:39 +00:00
ElgarL
759892078a Added custom events so plugins can now be notified of changes within
GroupManager.
2011-12-13 17:13:53 +00:00
KHobbits
505460349f Fixing killall command definition. 2011-12-13 09:38:20 +00:00
snowleo
f91b622646 Merge branch 'refs/heads/master' into release 2011-12-13 10:32:59 +01:00
snowleo
70bd9bd1f3 Renamed /butcher to /killall and fixes to the code. 2011-12-13 10:28:15 +01:00
snowleo
32564fb4f7 Netbeans 7.1 changes for EssentialsUpdate 2011-12-13 08:46:50 +01:00
snowleo
af4dde2086 Tiny fix to the last commit. 2011-12-13 08:41:28 +01:00
snowleo
15ce04b539 Better exp fix and allow exp on buy and sell signs. 2011-12-13 08:38:15 +01:00
snowleo
907f6c6116 Disabling exp as currency. Normal money will be used. 2011-12-13 07:35:46 +01:00
KHobbits
fc1ccda0fe Update exp trade signs on purchase. 2011-12-13 04:52:09 +00:00
KHobbits
d3dd8208ef Fixing Sell/Buy Signs which use EXP as a currency. 2011-12-13 04:29:16 +00:00
KHobbits
a00f070400 Merge branch 'master' of github.com:essentials/Essentials 2011-12-13 03:12:09 +00:00
KHobbits
faddbd09a4 Update copylibs. 2011-12-13 03:11:11 +00:00
KHobbits
dfa4ecbe4f Inform user that they were healed. 2011-12-13 01:47:58 +00:00
KHobbits
40a9c28699 Merge branch 'master' into release 2011-12-12 23:15:48 +00:00
KHobbits
e37ab86c9b Updating min Bukkit version. 2011-12-12 23:13:39 +00:00
KHobbits
081491d0a1 Merge branch 'master' into release 2011-12-12 23:06:40 +00:00
KHobbits
f936cd5f27 Updating to RB
CraftBukkit #1597 Bukkit #1073
2011-12-12 23:00:21 +00:00
KHobbits
46840a686d Merge remote branch 'remotes/origin/groupmanager'
Adjusting bukkit paths to remove version number.
2011-12-12 22:51:18 +00:00
KHobbits
5f3d783e21 Update Bukkit jars and paths. 2011-12-12 22:45:59 +00:00
snowleo
6e79302908 More work done. 2011-12-12 22:31:19 +01:00
ElgarL
0e0b441168 Offline player checks now support partial name matches. 2011-12-12 16:39:15 +00:00
ElgarL
aaf08150e6 Fix classpath for Eclipse 2011-12-12 15:59:34 +00:00
ElgarL
50f215adda Dev Jar files for GM 2011-12-12 15:56:00 +00:00
ElgarL
4b43453a74 Update GM version to 1.7
GM now supports offline players without having to mantogglevalidate
Added craftbukkit-1.0.0-SNAPSHOT.jar to lib (version 1587)
Added bukkit-1.0.0-R1-SNAPSHOT.jar to lib (version 1065)
Updated GM XML's to build using dev bukkit/CB build jars.
2011-12-12 15:53:33 +00:00
KHobbits
3eff598791 Merge branch 'master' of github.com:essentials/Essentials 2011-12-12 00:49:33 +00:00
KHobbits
a7b1c3d534 Switching the item value of brewing stands 2011-12-12 00:48:39 +00:00
snowleo
ecf72e27bb More work done 2011-12-11 13:16:36 +01:00
snowleo
d1aea7dd35 Merge branch 'refs/heads/master' into 3.0
Conflicts:
	Essentials/src/com/earth2me/essentials/Util.java
2011-12-11 09:25:33 +01:00
snowleo
f8e1f02523 Fix sorting of users in /who 2011-12-11 09:22:27 +01:00
snowleo
b2a307ec23 Merge branch 'refs/heads/master' into 3.0 2011-12-11 08:56:53 +01:00
KHobbits
a63c116590 Temp Fix wildcard permissions in bperms. 2011-12-11 06:00:29 +00:00
KHobbits
fad38170a8 Make the version error messages stand out a little more... 2011-12-11 05:49:25 +00:00
KHobbits
aa5f819d7b Added cleanup note
Minecraft server usually shows players around 140-180 range, so changing default /near to 200.
2011-12-10 04:12:22 +00:00
snowleo
f0dabdd4b1 Re-Implemented User class 2011-12-10 03:04:10 +01:00
KHobbits
f9905f9953 Make the alt command message, sound less negative/broken. 2011-12-09 22:53:36 +00:00
KHobbits
06c2453941 Update plugin information. 2011-12-09 21:51:31 +00:00
KHobbits
c0e903c1f3 New permissions: essentials.powertool.append. 2011-12-09 21:42:36 +00:00
KHobbits
f99867dd0a Simplify the protect config file examples. 2011-12-09 04:07:53 +00:00
snowleo
de12c5c6d1 Fix broken charge for shout and question 2011-12-09 02:48:57 +01:00
ementalo
95d5217f58 Allow timeout of /tpa /tpahere requests
Adds new config setting tpa-accept-cancellation
Test #781
2011-12-08 23:43:09 +00:00
KHobbits
52b1017bda Merge branch 'master' of github.com:essentials/Essentials 2011-12-08 04:44:34 +00:00
KHobbits
b102c5f3d8 First Refactor of Kits
New sign: [Kit] / <kit name> / [group] / [charge]
2011-12-08 04:44:18 +00:00
snowleo
8d0230d6a8 Merge branch 'refs/heads/master' into release 2011-12-08 05:41:00 +01:00
snowleo
e379ac5d77 Merge branch 'refs/heads/groupmanager' 2011-12-08 04:14:27 +01:00
ElgarL
789a6b9540 Fix manload to properly clone user variables. 2011-12-08 02:28:12 +00:00
KHobbits
221e1d3bb2 Merge branch 'master' of github.com:essentials/Essentials 2011-12-08 02:23:18 +00:00
KHobbits
9410a25cce Adjusting /spawn to not trigger respawn event. 2011-12-08 02:21:10 +00:00
snowleo
ae7d968f5c Fix for Towny using an old method. 2011-12-08 02:23:44 +01:00
snowleo
5002e7a6ad Prevent blockdamage by enderdragon (default true) in EssentialsProtect CB#1566 B#1058 2011-12-08 00:48:53 +01:00
snowleo
13a42d1937 Fix Jails not loaded after server start. 2011-12-07 16:50:16 +01:00
snowleo
46c99e5c6f /home sends the player to bed again before it tries to respawn. 2011-12-07 15:18:50 +01:00
snowleo
02b25120e8 Allow to set the Respawn priority in config. 2011-12-07 15:09:22 +01:00
snowleo
435219bab6 Fix Enchant sign, the user has to hold the item in hand now. A * or "any" in the second line allows to enchant all possible items. 2011-12-07 14:23:56 +01:00
snowleo
766f0a9f13 Use of our Inventory code in enchant sign to be reliable. 2011-12-07 13:44:51 +01:00
snowleo
d60de76d87 New config option disable-item-pickup-while-afk, defaults to true. 2011-12-07 12:10:41 +01:00
snowleo
324cd74826 Banned moved from /whois to /seen 2011-12-07 12:00:01 +01:00
snowleo
e7ebc94a9e SnakeYaml now ignores additional mapping values in files, so it throws less errors. 2011-12-07 11:57:31 +01:00
snowleo
5c02346f85 Fix I18n file not loading from Essentials folder, when the locale is not defined in config. 2011-12-07 11:22:02 +01:00
snowleo
5b539bf034 Fix /mail sendall, fixes #1209 2011-12-07 11:02:10 +01:00
snowleo
879d4913dc /balancetop now has pages instead of max argument
Test #1210
2011-12-07 10:53:06 +01:00
snowleo
ef49d92c49 Null check in new player teleport, fixes #1212 2011-12-07 10:37:34 +01:00
snowleo
719539d63b Missing translation for last commit 2011-12-07 10:35:06 +01:00
snowleo
fdd8fffbb3 Support for experience as trading goods on signs. This will not work until experience is fixed in Bukkit. 2011-12-07 10:31:18 +01:00
snowleo
67a3a55f5a Updated /near and /getpos command, added new argument playername
Test #1214
2011-12-07 10:03:23 +01:00
Khyperia
e8eb1974b8 New feature: IsBanned to /whois 2011-12-07 09:36:11 +08:00
Khyperia
a82d8d1d44 Added new player argument: /spawnmob <mob> [amount] [player]
Test: #821
2011-12-07 09:36:11 +08:00
ementalo
9ca0e51dac Merge branch 'master' of github.com:essentials/Essentials 2011-12-07 01:13:08 +00:00
ementalo
10597cec2f Catch TeleportClause.COMMAND in the teleport listener.
Changed Teleport methods to pass a TeleportClause param
2011-12-07 01:12:36 +00:00
Khyperia
b49a9ef165 New feature: /mail sendall <message>
Test: #649
2011-12-07 08:53:15 +08:00
Khyperia
d573671933 Renamed /find to /itemdb 2011-12-07 08:53:14 +08:00
Khyperia
a0d66ce230 New command: /find <item>
Test #278
Test #293
Test #348
2011-12-07 08:53:14 +08:00
snowleo
854fc05c5b Fix serious bug in Dev2.7.137 - Dev2.7.144: if spawn.yml is not present, the server will run into a deadlock. 2011-12-07 00:08:45 +01:00
ementalo
b9077d91a5 Adding ability to save /back location from teleport events outside essentilals
New config setting to turn this on "register-back-in-listener"
Test #1200
CB#1560 / B#1055
2011-12-06 22:56:38 +00:00
snowleo
ff13279e6c Fixing color in announce-format 2011-12-06 22:02:19 +01:00
snowleo
ce3a7c8719 This is no longer needed 2011-12-06 17:44:02 +01:00
snowleo
9e1571a8e5 More cleanup 2011-12-06 17:42:55 +01:00
snowleo
d2953c99ef Added /jail /ejail alias to plugin.yml 2011-12-06 17:31:35 +01:00
snowleo
72e187cd5c Updated Jails to use the new config classes 2011-12-06 17:28:48 +01:00
snowleo
2851a4634c cleanup 2011-12-06 16:35:30 +01:00
snowleo
58237a796a New Interfaces in api package (WIP) 2011-12-06 16:32:06 +01:00
snowleo
5433a68502 UserBase is abstract 2011-12-06 15:40:35 +01:00
snowleo
a7097df231 Refactoring to create less redundant code 2011-12-06 15:38:14 +01:00
snowleo
51390a9698 Prevent some rare cases of NPE and Deadlocks, better error handling on yaml load 2011-12-06 14:39:52 +01:00
snowleo
019b49ef11 Updated EssentialsSpawn to use the new config code
/spawn and /home now call the PlayerRespawnEvent to make it more compatible with other plugins.
2011-12-06 13:41:29 +01:00
snowleo
f3b278eac2 More work done on config code 2011-12-06 10:37:17 +01:00
snowleo
6fe8e603af Using the correct type of Set in UserMap. 2011-12-06 08:28:41 +01:00
snowleo
6b06adfc23 Check if the item can be enchanted. 2011-12-05 00:20:46 +01:00
Khyperia
2b919faa7b Added {VERSION} to motd
Test #1198
2011-12-05 06:56:20 +08:00
snowleo
b2ffdc9774 utf8 encoding 2011-12-04 23:39:08 +01:00
snowleo
e5aa7f496b Merge remote-tracking branch 'dysp/patch-1'
Conflicts:
	Essentials/src/messages_da.properties
2011-12-04 23:37:01 +01:00
snowleo
cb89fe5358 Readded because of popular demand: default-stack-size for /give and /item, values below 1 return max stack size (or oversized stack size). 2011-12-04 23:21:30 +01:00
snowleo
ad60eb538e Ignore teleport cooldown on /tjail 2011-12-04 22:57:40 +01:00
snowleo
cbc744c85a Added missing steps to items.csv (by andrewkm from ecocitycraft.com) 2011-12-04 22:53:29 +01:00
snowleo
6371a59819 Fix some rare cases, where adding an item to inventory could result in an infinite loop. 2011-12-04 22:45:47 +01:00
snowleo
20bc8840d6 Allow oversized stacks in kits. 2011-12-04 22:33:49 +01:00
snowleo
f12e9f6dfb Enchantements are now stored in one class 2011-12-04 22:28:29 +01:00
snowleo
c8814bd70e Added missing [player] to plugin.yml 2011-12-04 22:10:20 +01:00
snowleo
8417c5e1f0 New permission essentials.spawn.others 2011-12-04 22:09:36 +01:00
snowleo
ec3586c08c Added null check to /break 2011-12-04 22:06:03 +01:00
snowleo
d9c773270b Less use of sqrt 2011-12-04 22:01:50 +01:00
snowleo
dd84f5c331 Merge pull request #35 from khyperia/master
Multiple commits from khyperia
2011-12-04 12:49:52 -08:00
Khyperia
2c2f956068 Added [enchant] sign
Test #1177
2011-12-04 14:58:00 -05:00
Khyperia
ba3ccf7a2c Added /spawn <player>
Test #607
2011-12-03 20:24:35 -05:00
KHobbits
90f87804b1 Show command conflict in debug mode. 2011-12-03 23:38:28 +00:00
KHobbits
ea21e402ec Sort translation files properly. 2011-12-03 21:18:15 +00:00
KHobbits
1066f7a478 New Permission: essentials.world.<worldname>
~ Unsure about the future of this feature, its recommended you don't rely on /world to switch worlds ~
Test #1178
2011-12-03 21:15:53 +00:00
KHobbits
1c03cdb4d0 New command /remove
Test #1193
2011-12-03 21:14:03 +00:00
KHobbits
6d3e1b862e New command: /feed New permission: essentials.feed.others
Test #1191
2011-12-03 20:54:53 +00:00
KHobbits
d4c2443b5f New command: /more
Test #1189
2011-12-03 20:44:44 +00:00
KHobbits
8ce8764f6a New Command /break, and new Permission: essentials.break.bedrock
Test #1188
2011-12-03 20:41:24 +00:00
KHobbits
343618642b Merge pull request #34 from khyperia/master 2011-12-03 12:36:38 -08:00
Khyperia
1cb593dba3 Added per-world permissions for /world 2011-12-03 12:13:42 -05:00
Khyperia
85d743dce5 Merge commit 2011-12-03 11:14:53 -05:00
KHobbits
118b3638eb Small cleanup to checkActivity 2011-12-03 13:50:32 +00:00
Khyperia
dc74239edc Fixed accedental typo 2011-12-02 20:55:43 -05:00
Dysp
647eac32fc The last translation was so poorly done (I suspect the use of google-translate) that I decided to translate it myself. There may be errors due to lack of insigt for the context of the individual sentence. I can easily correct these, if I am notified. 2011-12-03 01:05:12 +01:00
Khyperia
91be153474 Added some commands from request 946 2011-12-02 19:02:12 -05:00
KHobbits
b03a327f9b Patching gamemode and god toggles to not match on ' ' 2011-12-02 21:32:32 +00:00
KHobbits
3b2403b686 items.csv update for crackedstonebrick (id98,2) 2011-12-02 09:28:57 +00:00
KHobbits
16e3830f9e Remove invalid dupe permission from permbukkit example. 2011-12-02 09:23:23 +00:00
KHobbits
73ec9978fb Make the chat formatting config file link to the wiki. 2011-12-02 09:17:20 +00:00
snowleo
055f11c89e Missing language files for last commit 2011-12-02 08:34:28 +01:00
snowleo
1489203aca New config options repair-enchanted (default true) and permission essentials.repair.enchanted 2011-12-02 08:30:52 +01:00
snowleo
1f1b6aff54 Allows to be teleported to bed location of offline players.
Also adds missing return in /home command
2011-12-02 08:19:55 +01:00
snowleo
8d4d8effa0 Null check 2011-12-02 03:27:37 +01:00
snowleo
8591023ad5 Moved block to item conversion to Util class 2011-12-02 03:25:22 +01:00
snowleo
42f4bba320 Added new tags to info.txt 2011-12-02 02:01:48 +01:00
Khyperia
746c80b0d6 Added many new MOTD possibilities + getI18n() to Essentials.java 2011-12-02 08:42:48 +08:00
Khyperia
bbb47fe6d3 Added {DATE} and {TIME} to motd 2011-12-02 08:42:48 +08:00
Khyperia
4c1c3e4852 Added many new MOTD possibilities + getI18n() to Essentials.java 2011-12-01 19:37:12 -05:00
KHobbits
3b0c604de0 Missing command aliases. 2011-12-01 17:32:48 +00:00
KHobbits
7a80a36eab Missing aliases 2011-12-01 17:25:46 +00:00
KHobbits
83a4431bd7 CB#1538 b#1050 2011-12-01 16:20:53 +00:00
KHobbits
c0eec02f0a Show how far away each player is. 2011-12-01 15:58:25 +00:00
KHobbits
c97d069783 Fixing near output. 2011-12-01 15:31:53 +00:00
KHobbits
b0377498f7 Better distance checking. 2011-12-01 15:15:45 +00:00
KHobbits
00d44873ca Command: /near 2011-12-01 14:43:16 +00:00
KHobbits
2a8ccb43ae Fixing spawnmob errors to say the right thing. 2011-12-01 14:43:00 +00:00
KHobbits
f006932639 Merge branch 'master' of github.com:essentials/Essentials
Conflicts:
	Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java
	Essentials/src/com/earth2me/essentials/commands/Commandenchant.java
2011-12-01 13:47:06 +00:00
KHobbits
2dc6f8c202 Command Cleanup 2011-12-01 13:42:39 +00:00
snowleo
39851694ad minor changes to items.csv 2011-12-01 04:46:43 +01:00
snowleo
737f7799fc Updated items.csv by michaelwm from ecocitycraft.com 2011-12-01 04:39:51 +01:00
Khyperia
8356624479 Added {DATE} and {TIME} to motd 2011-11-30 21:02:57 -05:00
Khyperia
dde8595c51 Updating to latest 2011-11-30 20:30:21 -05:00
snowleo
909e5bd3f8 Update of Smack to 3.2.1 2011-12-01 02:11:40 +01:00
snowleo
e6e1c7d160 We don't need them anymore. 2011-12-01 01:56:39 +01:00
snowleo
a5f4ada85d This is obsolete too. 2011-12-01 01:41:09 +01:00
snowleo
4f8be31343 Cleanup of the library folder
Also: we don't use the mysql.jar/sqlite.jar anymore, since it is included in craftbukkit. I don't know why this reference in config.yml still exists.
2011-12-01 01:35:48 +01:00
snowleo
40220960f5 We don't need that anymore. 2011-11-30 23:51:41 +01:00
snowleo
3c9f0db3d4 CB#1534 B#1048 2011-11-30 22:59:50 +01:00
snowleo
bd7bd86e62 Allow EssentialsProtect to go into emergency mode, if Essentials core is not present at all. 2011-11-30 21:25:11 +01:00
snowleo
5e2123c91e If Essentials core fails to read one of the configs now, it will disable itself. If other modules detect that Essentials is not enabled, they will be disabled too. EssentialsProtect will go into emergency mode, canceling all events that could hurt your world. Fix the file and either restart or reload the server. 2011-11-30 20:49:11 +01:00
snowleo
15d8ec6026 Removed EnchantmentFix, because it's fixed in CB#1526 2011-11-30 20:49:11 +01:00
KHobbits
a8a9fc3dd6 /spawnmob sheep:<colour> + /spawnmob sheep:baby = /spawnmob sheep:<colour>baby.
And as a nice extra, random: /spawnmob sheep:randombaby 10
2011-11-30 03:58:20 +00:00
KHobbits
1de4a40bf6 Missing an Animal. 2011-11-30 03:44:33 +00:00
snowleo
35f5578436 New config option update-bed-at-daytime that allows players to always set their bed location 2011-11-30 02:51:02 +01:00
snowleo
b8d60674cb Updated readme about format guidelines. 2011-11-30 00:54:44 +01:00
snowleo
a30a28265a Removing old settings.zip 2011-11-30 00:52:55 +01:00
snowleo
f5344b65d3 Fix /balancetop, cache was not cleared 2011-11-30 00:48:51 +01:00
snowleo
37e5260cda Merge branch 'refs/heads/master' into release 2011-11-29 21:55:09 +01:00
snowleo
e169e954ba Merge branch 'refs/heads/groupmanager' 2011-11-29 21:38:00 +01:00
snowleo
5f0936cf44 mirror world_the_end in default config.yml 2011-11-29 21:34:31 +01:00
snowleo
aed160b5fc Using this code until Bukkit fixes spawnCreature() 2011-11-29 19:24:54 +01:00
snowleo
0b2a3fcf7f Output the redirected plugin too. 2011-11-29 18:48:52 +01:00
snowleo
57a0ec9912 Allow joinList to understand Collections. 2011-11-29 18:40:13 +01:00
KHobbits
e5435f24db Merge branch 'master' of github.com:essentials/Essentials 2011-11-29 17:21:46 +00:00
KHobbits
af7eae6201 Adding some debug info to /essentials 2011-11-29 17:21:18 +00:00
snowleo
60067964be Fix NPE in getUser() 2011-11-29 17:39:22 +01:00
KHobbits
cdbae1631d Settings Cleanup. 2011-11-29 16:16:45 +00:00
KHobbits
414d6b79e9 GC: Never force reclaiming RAM on user logout, it will be done automatically, when the time is right.
~ Should reduce player event lag a little bit ~
2011-11-29 16:06:39 +00:00
KHobbits
dd3b1e97b6 Merge branch 'master' of github.com:essentials/Essentials 2011-11-29 13:10:19 +00:00
KHobbits
0c81a68c7b Handle a null handler (GM) 2011-11-29 13:10:00 +00:00
snowleo
183343c388 1TBS? Nope, Allman
This reverts commit a36b755248.
2011-11-29 05:06:07 +01:00
snowleo
a36b755248 New format guidelines? 2011-11-29 04:51:29 +01:00
ElgarL
1838dbc931 globalgroups prefix 'g:' is now not case sensitive. 2011-11-29 02:32:09 +00:00
snowleo
525fefc484 UserMap.getUser() will return null on failure. 2011-11-29 00:36:36 +01:00
snowleo
4bacdb327a Fix NPE when reading old player files 2011-11-29 00:30:06 +01:00
snowleo
19b8031933 Merge branch 'refs/heads/master' into release 2011-11-28 22:42:17 +01:00
snowleo
91cdff955a Fix another bug in /sell 2011-11-28 22:41:26 +01:00
snowleo
8c06b13a77 Allow to set size of MagmaCubes in /spawnmob 2011-11-28 22:06:59 +01:00
snowleo
7db7fd4136 Added info how to read the next page to /info /help /motd /rules 2011-11-28 20:52:15 +01:00
snowleo
99211fd407 Merge branch 'refs/heads/master' into release 2011-11-28 20:28:05 +01:00
snowleo
5e24584bf7 Fix bug in /sell command 2011-11-28 20:24:13 +01:00
snowleo
3d839c2b21 Merge branch 'refs/heads/master' into release 2011-11-28 20:03:09 +01:00
snowleo
9acc7db06f Changes to /sell /give and /item
Material.getMaxStackSize() will now be used in /give and /item
The config option default-stack-size has been removed
New config option oversized-stacksize and permission essentials.oversizedstacks
Fixes bug giving out too many items on /give and /item when a stacksize > 64 is given.
Fixes bug in /sell that ignores enchantments
/sell now uses Material.getMaxStackSize() for /sell egg 2s (will sell 32 instead of 128 now)
2011-11-28 19:55:51 +01:00
snowleo
0354b8d019 Translation of /balancetop 2011-11-28 18:59:33 +01:00
snowleo
eea7785b7f Calculation of /balancetop is now async to prevent slowdown of the server 2011-11-28 18:53:38 +01:00
snowleo
7268e1965d Ignore defaultstacksize from config, just use 64 2011-11-28 17:58:26 +01:00
KHobbits
4614d6d0dd Merge branch 'master' of github.com:essentials/Essentials 2011-11-28 12:56:20 +00:00
KHobbits
4a83d17fec Adding extra mobs to essentials protect, changing some default settings. 2011-11-28 12:55:54 +00:00
snowleo
e8d64aca5e New option for EssProtect: Prevent villager death. 2011-11-28 06:15:51 +01:00
snowleo
e1e7a1cfdb Merge branch 'refs/heads/master' into release 2011-11-28 04:23:38 +01:00
snowleo
b637e494c2 Forgot this again. :D 2011-11-28 04:15:09 +01:00
KHobbits
ccfc3b8d78 Someone said something about wanting Snowmen.
... and MagmaCubes.
Bukkit #1045 CraftBukkit #1522
2011-11-28 03:12:37 +00:00
KHobbits
05c90af1ee Fix empty argument in delhome. 2011-11-28 02:54:19 +00:00
snowleo
6603d0997e Fix broken trade/buy signs because of a wrong cast 2011-11-27 22:36:32 +01:00
snowleo
0ed7f87ee0 Merge branch 'refs/heads/master' into release 2011-11-27 20:59:19 +01:00
snowleo
aceda4c680 Allow enchantments to be removed using /enchant enchantmentname 0 2011-11-27 20:40:39 +01:00
snowleo
67be976d90 New permissions:
essentials.spawnmob.[mobname] and essentials.spawner.[mobname]
2011-11-27 19:59:06 +01:00
snowleo
ec6baa3621 Catch exception instead of checking for null 2011-11-27 19:13:55 +01:00
snowleo
82f864a7f9 Update Essentials/src/messages_fr.properties 2011-11-27 18:56:04 +01:00
snowleo
2a22c04688 Merge pull request #32 from leagris/patch-1
Up to date, more accurate french translation.
2011-11-27 09:55:33 -08:00
Léa Gris
1c6c460a09 Up to date, more accurate french translation. 2011-11-27 17:52:12 +01:00
snowleo
c5251591de Allow /unbanip playername, not just ips 2011-11-27 16:58:47 +01:00
snowleo
ccb4d3a7e8 Don't add the internal bukkit names to the enchantment list, to make it shorter. 2011-11-27 11:43:42 +01:00
snowleo
d5db9d404a Revert to the old behavior of oversized stacks. We might remove or change this in the future. 2011-11-27 10:59:28 +01:00
snowleo
0c0c9573be Updated the enchantment names to match those of the game 2011-11-27 10:48:10 +01:00
snowleo
76a8f794ef Enchantments in CraftBukkit are still broken, but it works with Essentials :) 2011-11-27 10:02:41 +01:00
snowleo
cbba3639b9 Fix Typo 2011-11-27 09:09:04 +01:00
snowleo
8791a8dbb7 Only print stack trace of motd.txt not found, if debug is on. 2011-11-27 09:07:15 +01:00
snowleo
098072517a Added enchantment to /give and /item
Updated plugin.yml
2011-11-27 08:57:21 +01:00
snowleo
b8f9a4b96f Implement correct hashCode() and equals() in EnchantmentLevel 2011-11-27 08:26:52 +01:00
snowleo
9c56b147ee Enchantment Multiplier in future Worth config 2011-11-27 08:18:41 +01:00
snowleo
41e8c4c7b8 Enchantments on Trade signs? Fixes check, so we won't add items that are enchanted. 2011-11-27 07:47:16 +01:00
snowleo
a8a72da15e Added 1.9 material where you can stand 2011-11-27 07:33:03 +01:00
snowleo
9b6c01d071 /spawner without mobname outputs available mobs 2011-11-27 07:32:42 +01:00
snowleo
3c71ae4cd9 Locale.ENGLISH!!1! 2011-11-27 06:23:07 +01:00
snowleo
34edf34ba3 Using the ItemStack.clone() method 2011-11-27 06:10:11 +01:00
snowleo
f250a107e4 CB#1518 B#1042
Support for Enchantments & Removed broken BedFix (in cb now)
2011-11-27 06:01:41 +01:00
KHobbits
d5c852b79d URL went nowhere. 2011-11-27 04:54:48 +00:00
snowleo
65776d6ed2 BedLocationFix for CraftBukkit 2011-11-27 04:46:33 +01:00
snowleo
0234c55ce3 New command /enchant
Permissions for each enchantment: essentials.enchant.[enchantmentname]
For all use *
2011-11-27 04:36:42 +01:00
KHobbits
ee42030307 Merge remote branch 'remotes/origin/groupmanager' 2011-11-27 03:16:32 +00:00
ElgarL
263a3fc80b Added file details in error messages for loading groups/users. 2011-11-27 03:12:28 +00:00
snowleo
a714e39bf4 CB#1512 B#1039 2011-11-27 03:22:39 +01:00
KHobbits
68297b5cf8 Merge branch 'master' of github.com:essentials/Essentials 2011-11-27 01:15:39 +00:00
KHobbits
ae4c10ced6 Fixing optional argument on tppos to use the correct yaw value. 2011-11-27 01:15:14 +00:00
snowleo
b5e9ad02ae arrrgggss 2011-11-27 00:31:14 +01:00
snowleo
c70700f7b8 Fix banning random player (and all other commands where a empty player is given) 2011-11-27 00:23:40 +01:00
snowleo
b21b7b7e15 New behavior of the /home command and beds
- The behavior has been altered to match the vanilla server.
 - Using a bed will no longer create a home in the users file, if config option bed-sethome is set
 - The config option bed-sethome has been removed
 - It's now possible to go to /home bed or /home playername:bed
 - Bed locations stored before installing Essentials will be used
 - Players respawn at their bed location (if set) instead of the spawn, if respawn-at-home is set to false
 - The default value of spawn-if-no-home is set to true
 - If spawn-if-no-home is set and the player has not set a home, he will be either teleported to his bed location (if set) or the spawn, when he uses the /home command
2011-11-26 22:30:40 +01:00
snowleo
f9d14697b6 Forgot to save this file before commit 2011-11-26 17:37:07 +01:00
snowleo
8ed4418d5f Translated /list command 2011-11-26 15:26:48 +01:00
snowleo
4ad19b6fad Cleanup 2011-11-26 00:34:36 +01:00
snowleo
d4685d1d10 Fix ItemDupe bug in bukkit 2011-11-25 22:26:06 +01:00
snowleo
fa73394113 Merge branch 'refs/heads/groupmanager' 2011-11-25 21:12:38 +01:00
ElgarL
b25a8f059b Optimizations include changing the return of comparePermissionString. 2011-11-25 19:33:32 +00:00
ElgarL
0cb77d8a03 Minor optimization for groups 2011-11-25 16:34:34 +00:00
ElgarL
b41c3709ba Raised bukkit perms priority 2011-11-25 16:01:46 +00:00
ElgarL
24a6073488 Fix superperms to pass all tests
http://dev.bukkit.org/server-mods/superpermstest/
2011-11-25 15:49:35 +00:00
snowleo
3daf56c8be Another safety check 2011-11-25 14:02:40 +01:00
snowleo
223028f306 Fix another NPE in AlternativeCommandsHandler 2011-11-25 13:55:09 +01:00
snowleo
7afbad3218 This config option is never read 2011-11-25 13:03:07 +01:00
snowleo
871c0e6b6a Disable god mode automatically in worlds defined by config 2011-11-25 07:12:21 +01:00
snowleo
73d13f5748 Oh no! Angry wolf babies D: 2011-11-25 06:04:19 +01:00
snowleo
03452bda68 Baby wolfs, awwwwh 2011-11-25 05:54:32 +01:00
snowleo
613cb57fdb CB#1501 B#1037
New spawnmob options: cow:baby sheep:baby chicken:baby pig:baby
2011-11-25 05:49:57 +01:00
snowleo
31b9e792bd Fix NPE in AlternativeCommandsHandler on shutdown 2011-11-25 00:22:57 +01:00
ElgarL
cd8ef9361b minimal optimizations 2011-11-24 16:45:57 +00:00
ElgarL
eea381e714 optimize getPermissionList 2011-11-24 16:34:05 +00:00
ElgarL
5a9b573309 More optimization (charAt(0)) 2011-11-24 16:05:41 +00:00
ElgarL
70c235d4f0 remove unused imports. 2011-11-24 16:00:46 +00:00
ElgarL
127681736d rewrite of comparePermissionString (snowleo) 2011-11-24 15:57:21 +00:00
ElgarL
73a7a6a1dd Optimize comparePermissionString 2011-11-24 15:28:32 +00:00
ElgarL
dec7ea1926 remove bukkit perms check from checkUserPermission as it's performed in
checkFullUserPermission
2011-11-24 14:05:25 +00:00
ElgarL
94983c3ca7 Optimize sorting to speedup permission tests. 2011-11-24 13:26:30 +00:00
snowleo
32e43bf167 Show more then 9 lines of motd on login 2011-11-24 05:57:01 +01:00
snowleo
579bbc9f2c Merge branch 'refs/heads/master' into release 2011-11-24 04:26:05 +01:00
KHobbits
af456a73dd New permission essentials.nick.color
Allows control over who can use colour codes in nicknames.
2011-11-23 22:24:31 +00:00
snowleo
b35d5f30f9 Invert pattern 2011-11-23 02:52:08 +01:00
snowleo
8aaaed2ef8 More work on the config code 2011-11-23 02:43:38 +01:00
snowleo
e683ce5751 Merge branch 'refs/heads/groupmanager' 2011-11-22 15:12:20 +01:00
snowleo
b0aaafd08d GM does not need CraftBukkit 2011-11-22 06:02:47 +01:00
KHobbits
212442ab1c Fixing inventory method calls.
Bug report: http://pastie.org/2901587
2011-11-22 04:55:21 +00:00
KHobbits
bf244fff80 Switching priority on help permissions
Bukkit #1488
2011-11-22 04:41:34 +00:00
KHobbits
2620e2ae08 Merge branch 'master' of github.com:essentials/Essentials 2011-11-22 04:00:26 +00:00
KHobbits
d59e2834d1 Rewriting help, to use new classes. 2011-11-22 04:00:04 +00:00
snowleo
63991cb38d Moved all dependency on craftbukkit to one package in the main jar. The rest is now clean bukkit code. Also cleaned PlayerExtension class. 2011-11-22 03:02:08 +01:00
snowleo
94b70e1ee9 Corrected name in items.csv: whitestone => enderstone 2011-11-22 02:25:56 +01:00
ElgarL
fd1c2824ce Stop throwing errors on an empty users file. 2011-11-21 09:51:31 +00:00
snowleo
a5853baf4c Set shooter of Fireball or it will die instantly. 2011-11-21 03:50:31 +01:00
snowleo
90694b15cc Added new creatures to EssProtect prevent spawning
Ghast and Slime default value changed
2011-11-21 03:21:02 +01:00
snowleo
5e4b7f85c8 Cleanup 2011-11-21 03:07:44 +01:00
snowleo
b5bc83e714 Fixing the tests 2011-11-21 03:05:18 +01:00
snowleo
220d68f375 Switch to the new I18n class and format cleanup of all classes 2011-11-21 02:55:26 +01:00
snowleo
e672de949c Merge branch 'refs/heads/master' into release 2011-11-20 21:46:02 +01:00
snowleo
19f5a2340d Fix timeWorldCurrent translation key in /time command 2011-11-20 19:12:20 +01:00
snowleo
1e4a54baca Prevent NPE with creatures that are not added to bucket yet. 2011-11-20 16:50:08 +01:00
snowleo
14cc499421 Fix long prefix breaking setPlayerListName(), because they are too long.
If Essentials detects, that the player name would be too long with prefix and suffix to fit in the player list, it will only update the name without prefix and suffix but with nickname and opcolor.
2011-11-20 16:43:38 +01:00
snowleo
6633b39954 Fix Bukkit version pattern 2011-11-20 16:40:18 +01:00
snowleo
a886645afa Add SmallFireball to EssProtect 2011-11-20 15:43:39 +01:00
snowleo
8c478c76a5 Added option to /fireball command: /fireball small 2011-11-20 14:34:03 +01:00
snowleo
293f2f7cd2 Added new mobs 2011-11-20 14:33:17 +01:00
snowleo
1f6b1f4a2c Added new methods to Fake classes 2011-11-20 14:30:54 +01:00
snowleo
765ec51b32 Added the new items to items.csv 2011-11-20 14:30:21 +01:00
snowleo
c132a75c1a CB# 1467 B#1022 2011-11-20 14:03:00 +01:00
ElgarL
000d060ea6 better groups match checking for globalgroups 2011-11-20 02:27:25 +00:00
ElgarL
317b0833ef Prevent Group.equals tests throwing a NullPointerException for
GlobalGroups.
2011-11-19 20:46:34 +00:00
snowleo
f72762bcb2 Merge branch 'refs/heads/master' into release 2011-11-19 16:04:00 +01:00
KHobbits
4f8319bbb9 Warn in the console if group prefixes are too long.
People using displayname prefixes can set longer chat prefixes in the chat config.
2011-11-18 23:08:16 +00:00
KHobbits
cd9ea163e4 Continuing code cleanup 2011-11-18 22:09:26 +00:00
KHobbits
fc00ff471d Merge branch 'master' of github.com:essentials/Essentials into essmaster 2011-11-18 19:18:06 +00:00
snowleo
85ef892f0e Null checks 2011-11-18 20:15:26 +01:00
KHobbits
2e0fb15952 More code cleanup. 2011-11-18 18:33:22 +00:00
KHobbits
11f02fb947 Code cleanup continues... 2011-11-18 18:11:49 +00:00
KHobbits
e5a8cd88f0 Code cleanup continued. 2011-11-18 17:48:49 +00:00
snowleo
9987568ae8 New I18n code, not used yet 2011-11-18 15:04:22 +01:00
KHobbits
a05f730e76 Little more command cleanup. 2011-11-18 13:48:31 +00:00
KHobbits
5655509c62 Updating gitignore to ignore private files. 2011-11-18 12:10:36 +00:00
KHobbits
a9b77b3486 Updating gamemode to allow essentials.gamemode.other. 2011-11-18 12:08:27 +00:00
KHobbits
37bd9bc9b5 Merge branch 'master' of github.com:essentials/Essentials into essmaster 2011-11-18 12:07:11 +00:00
KHobbits
e54d73704e Command cleanup 2011-11-18 12:06:59 +00:00
KHobbits
e5c77c1aeb Updating web push to just push the zip files. 2011-11-18 12:06:19 +00:00
snowleo
edf0ab756c Updated UserMap to newest Guava-API 2011-11-18 05:29:27 +01:00
snowleo
c96b14a34c Remove useless import 2011-11-18 05:23:38 +01:00
snowleo
3841648eba Update ExecuteTimer to use ns instead of ms for calculations, output is still in ms 2011-11-18 05:13:38 +01:00
snowleo
ffc1640308 Java 1.5 clients will never reach that point, so we can remove it. 2011-11-18 04:22:09 +01:00
snowleo
0bbc1e540b motd and rules are now configured in the files motd.txt and rules.txt, values from config.yml are copied automatically
New features:
Info command now understands the tags from motd and rules
motd and rules are now multipage
On join, only the first page of motd is shown.
2011-11-18 04:18:03 +01:00
snowleo
2a98734d22 Better solution for the alternative commands 2011-11-18 01:43:58 +01:00
snowleo
603d23659b Check for other plugin aliases and run them instead. 2011-11-18 01:01:05 +01:00
snowleo
7ecc3c25b0 Merge branch 'refs/heads/master' into release 2011-11-17 19:06:44 +01:00
snowleo
41c03853ab General fix against overwriting already existing protections 2011-11-17 17:06:06 +01:00
snowleo
adcffba7cf Merge branch 'refs/heads/master' into release 2011-11-17 16:34:39 +01:00
snowleo
2a4c26ee69 Prevent that sign protection in EssProtect can be circumvented by placing signs. 2011-11-17 16:20:31 +01:00
snowleo
8143154826 The data value of leaves changed by 4
0 -> 4, 1 -> 5, 2 -> 6 to make them permanent, items.csv should be updated automatically
2011-11-17 16:14:56 +01:00
snowleo
e271e60144 Merge branch 'refs/heads/master' into release 2011-11-17 15:34:27 +01:00
snowleo
c5c29aef4e Merge branch 'refs/heads/groupmanager' 2011-11-17 15:34:05 +01:00
ElgarL
7b7d1f557f Fixed a crash on reload due to bukkit not unloading plugins before
reloading.
2011-11-17 14:28:33 +00:00
snowleo
af5a86c48c Fix water/lava bucket bug with mobs 2011-11-17 14:23:35 +01:00
ElgarL
022f7ab1d4 Fixed GM holding files open and causing the time stamp to be incorrect.
This caused GM to require a '/mansave force' when it shouldn't be
needed.
2011-11-17 05:46:01 +00:00
snowleo
b9daf6aaa5 Sudo: This would break horrible for offline players and the original player object has to be used. 2011-11-16 04:26:24 +01:00
KHobbits
4be1797592 Sudo Command
This might never make it to release, needs tidying first at least.
2011-11-16 03:00:31 +00:00
KHobbits
c0d046841f Gamemode sign, standard sign permissions. 2011-11-16 00:21:55 +00:00
KHobbits
e4c3f7b115 New permission: essentials.repair.armor
If a player has this permission '/repair all' will also repair equipped armor.
2011-11-15 23:54:26 +00:00
KHobbits
f51b92c99e Updating banip to support offline players. 2011-11-15 23:01:15 +00:00
snowleo
16be86953f Merge branch 'refs/heads/master' into release 2011-11-15 22:52:42 +01:00
snowleo
eda827b244 Merge branch 'refs/heads/groupmanager' 2011-11-15 22:52:05 +01:00
snowleo
27ee7efde5 Cleanup of the /tree commands 2011-11-15 22:51:14 +01:00
snowleo
cccebdd62e null the Essentials object in static EcoApi, so it doesn't leak on /reload.
TODO: Make the eco api non-static
2011-11-15 22:51:14 +01:00
snowleo
d2f3bf94ae Prevent that players are teleported to offline players using /tpa and players that lost their tpahere permission 2011-11-15 22:51:14 +01:00
ElgarL
f4e22a17db Added comments to groups.yml for global groups 2011-11-15 18:17:18 +00:00
KHobbits
b619a54105 Prevent client crash on 'Free air' 2011-11-14 10:11:23 +00:00
snowleo
cd897890be Fix #1106 GeoIP announces players who are hidden, on join. 2011-11-11 03:27:09 +01:00
ElgarL
437d3b41b8 Remove bperms nodes which shouldn't be in globalGroups 2011-11-08 13:03:32 +00:00
KHobbits
1f527cdb9e Merge branch 'essmaster' into essrelease 2011-11-08 05:17:42 +00:00
KHobbits
90c9fe7e65 Merge remote branch 'remotes/ess/groupmanager' into essmaster 2011-11-08 05:16:15 +00:00
ElgarL
e9f942e802 Change to default users as examples 2011-11-07 22:15:58 +00:00
ElgarL
f40260acef Minor optimization for Group loading/clone 2011-11-07 15:33:15 +00:00
ElgarL
ab2e8f94f0 Fix for Users file being flagged as updated when it wasn't. 2011-11-07 01:59:12 +00:00
ElgarL
cf9ef46182 Fixed Group/User reloading
Fixed Group.clone(dataholder)
2011-11-05 15:41:40 +00:00
KHobbits
cc5062828a Extra translation keys. 2011-11-05 00:12:07 +00:00
KHobbits
165d499ef3 Adding op/god mode to whois. 2011-11-04 23:41:39 +00:00
ElgarL
1c7e0e5b9f Fix for file date conflict causing memory data to be wiped. 2011-11-04 23:13:42 +00:00
KHobbits
f0c49019dd Only pull/push data on valid player data. 2011-11-04 23:13:21 +00:00
ElgarL
e7234e621d Optimize notify test so it's not run as often 2011-11-04 18:20:09 +00:00
ElgarL
269947bdae Fix string compares 2011-11-04 18:12:37 +00:00
ElgarL
4ac5551c6b Notification of being moved to the default group only happens if it's a
demotion/promotion (not on join).
2011-11-04 17:51:29 +00:00
KHobbits
05242a7e8f Force displayname update on /list.
Tidy duplicate displayname call.
2011-11-04 16:51:00 +00:00
KHobbits
fd2ec22919 Clear all powertools - /powertool c: 2011-11-04 16:42:03 +00:00
KHobbits
7618754b89 Removing Reloadall Command
Tidy plugin.yml
2011-11-04 16:20:09 +00:00
KHobbits
d8f7c82e2d Start logging players last login address. 2011-11-04 15:28:51 +00:00
KHobbits
fd4c82b0eb Merge remote branch 'remotes/ess/groupmanager' into essmaster 2011-11-04 11:40:33 +00:00
KHobbits
70d1c7d7d7 Merge branch 'master' of github.com:essentials/Essentials into essmaster 2011-11-04 11:40:18 +00:00
KHobbits
894d956ba1 Extra command alias's. 2011-11-04 11:39:31 +00:00
ElgarL
52c2110a2b Fixed up javadoc comment errors 2011-11-04 09:36:11 +00:00
snowleo
8890284b3e Temporary debug mode using /essentials debug 2011-11-04 02:44:00 +01:00
KHobbits
02cc1b9fe9 Merge branch 'master' of github.com:essentials/Essentials into essmaster 2011-11-04 00:45:03 +00:00
KHobbits
6d6a29a99d Alias for 'Everyone' on warp signs. 2011-11-04 00:44:41 +00:00
snowleo
1d95f1c6d2 Fix bug in sign state loop 2011-11-04 01:24:01 +01:00
KHobbits
6e4bf932ec Adding game mode command for quick toggling (/gm /creative /gamemode) 2011-11-03 23:39:13 +00:00
KHobbits
a9a8216f4d Spanish translation 2011-11-03 23:11:04 +00:00
KHobbits
f98eb4a40d Adding gamemode to whois
Fixing exception in unban
2011-11-03 23:10:42 +00:00
KHobbits
51920420ce Allow proper escaping and use of & symbol in nicks (&& = &). 2011-11-03 22:19:33 +00:00
KHobbits
d171cce45d Trim long nicknames for use in tab list
Colour Nicknames
Refactor /nick Command
Fix nickother validity checks.
2011-11-03 22:13:50 +00:00
ElgarL
5560ab4294 Fix for an error in checkFullUserPermission caused by players
disconnecting mid perms update.
2011-11-03 20:42:34 +00:00
ElgarL
87ccd7bf46 Fix for an error in checkFullUserPermission caused by silly requests for
a null perm.
2011-11-03 20:29:30 +00:00
KHobbits
d264c26310 Allow the use of the warp command from the console 2011-11-03 16:17:39 +00:00
ElgarL
e873ebd67d GM will now check to see if it's data files have been changed at each
scheduled save.
	  If the files have been altered (on disc) it will reload, so long as
the in-memory data hasn't changed.
	  If the files on Disc have changed AND there have been changes to it's
in-memory data it will show a warning.
	  You then MUST issue a '/mansave force' to overwrite the disc files,
or a '/manload' to overwrite the memory data.
2011-11-02 22:33:29 +00:00
KHobbits
375636cd36 Code tidy, trigger build id update. 2011-11-01 16:54:36 +00:00
ElgarL
57f9bc06b0 Prevent setting 'minutes' in the config to zero causing an error. 2011-11-01 12:12:32 +00:00
ElgarL
97cae6c0cb Added a config.yml setting of 'validate_toggle' for those who prefer
'mantogglevalidate' to always be off.
2011-10-31 20:41:50 +00:00
ElgarL
1fd02b8a4a Expanded 'canUserBuild()' to include inheritance and subgroups. 2011-10-31 20:20:57 +00:00
ElgarL
9734274ed1 Fixed an error on 'manucheckv'. If the users doesn't have the variable
it fell through causing an exception.
Added checking of subgroups for Info nodes.
2011-10-31 20:07:21 +00:00
ElgarL
3f2916967d Added Info node support to Global Groups. 2011-10-31 17:23:24 +00:00
ElgarL
0731de53b4 Typo's and formatting 2011-10-31 09:14:58 +00:00
ElgarL
0f67d42c99 Global Groups yml and class 2011-10-31 08:34:57 +00:00
ElgarL
34ba8e89bc Added Global Groups
Defined in groupmanager/globalgroups.yml.
Create groups in the yml with a g: prefix, then inherit in the worlds
groups files.
2011-10-31 08:34:07 +00:00
ElgarL
b1c6173995 Fixed GM loading world data files twice at startup.
Improved error reporting for invalid groups.yml
2011-10-31 02:06:25 +00:00
okamosy
dd87dcdd3d Merge branch 'master' of github.com:essentials/Essentials into ess 2011-10-30 21:30:21 +00:00
okamosy
ffd7ba7d5f EssChat update part 1. 2011-10-30 21:29:56 +00:00
KHobbits
4ac03ef15a Debug messages: Execution time on reload/enable.
~ Probably needs removed later?
2011-10-30 05:38:17 +00:00
KHobbits
8daa0e7a9b Removing translations for portal actions. 2011-10-30 01:26:05 +00:00
KHobbits
982c3fef0d Merge branch 'master' of github.com:essentials/Essentials into essmaster 2011-10-30 01:37:40 +01:00
KHobbits
1757badf64 Cleanup last references to portal management in Essentials. 2011-10-30 01:37:18 +01:00
snowleo
5196237c46 XMPP: Don't send messages from spy users back to them. 2011-10-30 00:18:55 +02:00
KHobbits
094a747db3 More message, in /me 2011-10-29 10:36:30 +01:00
KHobbits
284f48f631 Updating actions to allow translations, and colour. 2011-10-29 09:38:32 +01:00
KHobbits
c2c889cab9 Tidy the XML a little and test a library property. 2011-10-29 04:31:56 +01:00
KHobbits
a2619a6e2b More teamcity fixes. 2011-10-29 02:50:57 +01:00
KHobbits
6e16e4724d Merge branch 'master' of github.com:essentials/Essentials into essmaster 2011-10-29 02:49:03 +01:00
KHobbits
9afcba4739 Will teamcity like this change? 2011-10-29 02:48:42 +01:00
KHobbits
c05e8085ed Lets try a adding a few dependencies. 2011-10-29 02:31:05 +01:00
KHobbits
6d86f40ca3 Updating build order. 2011-10-29 02:23:13 +01:00
KHobbits
cc9e7130e8 Adding the handler to the (painful) list of permissions systems we support. 2011-10-29 02:16:29 +01:00
KHobbits
809d18575d File formatting. 2011-10-29 02:09:11 +01:00
KHobbits
56b5a128f5 GM permission handler...
Look mum, no bridge.
2011-10-29 02:06:27 +01:00
KHobbits
8915c29b31 Merge remote branch 'remotes/ess/groupmanager' into essmaster 2011-10-28 22:07:43 +01:00
ElgarL
819c8f3aa9 Fixed GM to recognize Superperm child nodes.
If you add a node like Towny.admin GM will now correctly report on
all child nodes.
2011-10-28 18:43:29 +01:00
snowleo
6c479fceed Removing never used ErrorHandler and UpdateTimer from Essentials Core, they are now in EssentialsUpdate 2011-10-27 18:45:27 +02:00
KHobbits
04de66bc8a Sneaking in an option to disable prefix/suffix selectively.
(This will probably be removed during ess chat rewrite).
2011-10-27 06:17:18 +01:00
KHobbits
32cc1b66a4 Merge branch 'master' of github.com:essentials/Essentials into essmaster 2011-10-27 05:48:45 +01:00
KHobbits
65a588ea20 Altering PEX prefix/suffix. 2011-10-27 05:47:55 +01:00
snowleo
e0a29ed6a0 Don't block /essentialsupdate command after selfupdate 2011-10-27 01:18:59 +02:00
ElgarL
fadfc490a7 v 1.5:
- Fixed opOverrides and bukkit_perms_override to read the correct
entries.
	- Better commenting in config.yml
2011-10-27 00:04:54 +01:00
snowleo
fd7894caae After the selfupdate, check for the bukkit version. We will not automatically update bukkit, so the player is displayed a message, if he tries to update or install. 2011-10-27 00:41:12 +02:00
snowleo
8200fc2a98 Close file input on exception 2011-10-27 00:08:48 +02:00
snowleo
4b6fc99a62 Crop after 15KB and add a note, that it's cropped by the upload. 2011-10-27 00:06:15 +02:00
snowleo
60b9d4fc80 Some cleanup, refactoring of EssentialsHelp class 2011-10-27 00:03:16 +02:00
snowleo
7622c5c510 Abort update text 2011-10-26 22:27:43 +02:00
snowleo
76f8cb96ca Reload after installation 2011-10-26 22:23:30 +02:00
snowleo
f6e56ce0f4 Removing automatic updates
It's a bad idea to automatically overwrite files, without asking the player first.

This would be triggered by the selfupdate after the reload.
2011-10-26 22:17:27 +02:00
snowleo
72596decba The state machine now handles both manual updating and installation. 2011-10-26 22:14:24 +02:00
snowleo
e8b8d26bdb Basic automatic updates downloader 2011-10-26 20:25:09 +02:00
snowleo
d5cb9ab965 Cleanup 2011-10-26 20:24:46 +02:00
snowleo
9914e187e2 Cleanup 2011-10-26 20:23:28 +02:00
snowleo
36fa05f3a6 The work process is done async to the server loop. 2011-10-26 19:54:38 +02:00
snowleo
5641b1173c Abort the installation wizard if a runtime exception happens 2011-10-26 19:46:40 +02:00
snowleo
48f8eb9788 Cleanly resume the installation, if the player quits the game and reconnects
If the installation is already running in background after the wizard, it will not stop, if the player quits the game.
2011-10-26 19:39:01 +02:00
snowleo
7f825750f0 Advanced mode 2011-10-26 18:18:58 +02:00
snowleo
102570958e Allow states to be automatically added to the state map.
They have to have a Constructor that accept the StateMap as argument, otherwise a RuntimeException is thrown.
2011-10-26 17:42:39 +02:00
KHobbits
38b6d79f49 Few more states in EssentialsUpdate 2011-10-26 16:26:26 +01:00
KHobbits
d064c68875 Fixing invsee error. 2011-10-26 06:02:54 +01:00
KHobbits
2bb45022d6 Extra triggers for /sell inventory 2011-10-26 03:32:38 +01:00
KHobbits
dc2e23c85a Improved readability of /sell
~translations need checking~
2011-10-26 03:05:09 +01:00
KHobbits
5a54ef355f Cleanup debug message, code tidy. 2011-10-25 22:18:28 +01:00
KHobbits
9af6bdb1d6 Only prevent AFK heal, if freeze player is enabled. 2011-10-25 16:21:56 +01:00
KHobbits
dca88382ab Fix health event name. 2011-10-24 17:46:53 +01:00
KHobbits
d4a495fb52 Merge branch 'master' of github.com:essentials/Essentials into essmaster 2011-10-24 17:00:05 +01:00
KHobbits
a4556e8cf0 AFK users shouldn't heal from full hunger. 2011-10-24 15:37:44 +01:00
snowleo
c79bb03d5e Cleanup 2011-10-23 23:22:04 +02:00
snowleo
9c793208ad Minor changes because we use a map instead of a list 2011-10-23 23:20:18 +02:00
snowleo
b07b3fc373 Another state added 2011-10-23 23:13:30 +02:00
snowleo
ff92e0bf6f Less chance for C&P error 2011-10-23 23:11:47 +02:00
snowleo
8854b3f565 Moving the link between the states from the constructor of the state machine to the states classes. 2011-10-23 23:08:42 +02:00
KHobbits
6974abea28 Automatically unAFK on interaction. 2011-10-23 21:51:38 +01:00
snowleo
9433acf689 Statemachine for installation wizard (WIP) 2011-10-23 21:45:01 +02:00
snowleo
11e8240c5c Merge branch 'refs/heads/master' into release
Conflicts:
	EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java
2011-10-22 11:55:01 +02:00
snowleo
aa922c5b67 Fix Test 2011-10-21 01:36:13 +02:00
snowleo
1a020698d1 Use of lomboks delegate on player wrapping 2011-10-21 01:23:35 +02:00
snowleo
022b8caa18 CB#1337
B#953
2011-10-21 00:12:03 +02:00
snowleo
14c406f7fb Merge branch 'refs/heads/groupmanager' 2011-10-21 00:04:40 +02:00
snowleo
4d877741d4 Cleanup 2011-10-19 18:17:19 +02:00
snowleo
1cbd10a38e Moved all config options to new Settings classes 2011-10-19 17:52:07 +02:00
snowleo
358456c8ea Cleanup 2011-10-19 14:47:32 +02:00
snowleo
1c7dcfc63d Merge pull request #30 from tustin2121/master
Porting Some Player-Only Commands to the Console
2011-10-19 05:38:56 -07:00
Tim P
82b225a261 Minor fixes. Basic testing shows all works. 2011-10-18 23:08:06 -04:00
Tim P
6ab30159fa Made a concerted effort to change the messages.properties in the various languages
to the new format for weather.
- Incidently, there was an error in the _da translation - the message for the key
  weatherSun did not have a "in your world" clause. This is added with the "your
  world" clause changed, like it is everywhere.
2011-10-18 22:01:23 -04:00
Tim P
a86a1990cd Made a couple commands available for the console (ones that make sense to be able to
access from the command line).
2011-10-18 12:12:41 -04:00
KHobbits
625c7d0302 Save the ban reason, not the command name. 2011-10-18 05:35:21 +01:00
KHobbits
27a0552c2a Removing debugging. 2011-10-18 02:21:26 +01:00
KHobbits
7c5674c294 More debugging 2011-10-18 02:11:22 +01:00
KHobbits
f5c442aa5c Adding a debug note. 2011-10-18 01:55:35 +01:00
ElgarL
569af0bcf0 Added data.save.hours setting to config. This allow control over how
long backups are retained.
2011-10-16 08:58:45 +01:00
snowleo
238748f360 Updated german translation by HDS 2011-10-16 09:39:06 +02:00
ElgarL
e049364557 Simplified config.yml while retaining backwards compatibility. 2011-10-16 03:35:55 +01:00
ElgarL
121966436e Fixed reading world mirrors from the config. 2011-10-16 01:23:25 +01:00
snowleo
d3afd7a670 Revert bed fix, because it's fixed in Bukkit now. Thanks to feildmaster 2011-10-15 10:49:51 +02:00
snowleo
9d121af860 Test if objects can be read from yaml in the original sort 2011-10-15 01:15:01 +02:00
snowleo
200ef0c8e2 Correctly fix the N/S direction 2011-10-15 01:15:01 +02:00
KHobbits
6f77a2ba07 Moving apikey outside main file.
Keep the actual key in local repo ;)
2011-10-13 20:45:57 +01:00
KHobbits
db97ce99ef Merge branch 'master' of github.com:essentials/Essentials into essmaster 2011-10-13 17:20:03 +01:00
KHobbits
e7b790861f Made a silly little upload script, for uploading things to dev bukkit. 2011-10-13 17:19:25 +01:00
snowleo
d3aaf3c14a New storage system for settings (WIP) 2011-10-13 01:40:11 +02:00
KHobbits
d732821e06 Merge remote branch 'remotes/ess/groupmanager' into essmaster 2011-10-12 17:10:31 +01:00
snowleo
e628c36172 Cleanup 2011-10-12 12:20:02 +02:00
snowleo
9312871250 Replacing martyr with Pircbot 1.5 2011-10-12 05:00:36 +02:00
snowleo
860d446d28 EssentialsUpdate WIP 2011-10-12 03:14:26 +02:00
ElgarL
03adb56d25 Added a config setting - bukkit_perms_override: false
Enable to allow default Bukkit based permissions to remain enabled,
unless directly negated within GroupManager.
2011-10-12 00:16:53 +01:00
ElgarL
1543bfd550 v 1.4:
- Updated for Bukkits new YamlConfiguration.
	- Cleared remaining Cast errors cause by object cloning.
2011-10-11 22:05:21 +01:00
811 changed files with 62128 additions and 62516 deletions

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/bukkit-0.0.1-SNAPSHOT.jar"/>
<classpathentry kind="lib" path="lib/craftbukkit-0.0.1-SNAPSHOT.jar"/>
<classpathentry kind="lib" path="lib/Permissions3.jar"/>
</classpath>

68
.gitignore vendored
View File

@@ -1,35 +1,37 @@
# Eclipse stuff
.classpath
.project
.settings
# netbeans
nbproject
# we use maven!
build.xml
# maven
target
jars
dependency-reduced-pom.xml
# vim
.*.sw[a-p]
# various other potential build files
build
bin
dist
manifest.mf
# Mac filesystem dust
.DS_Store
/BuildAll/nbproject/private/
/EssentialsProtect/nbproject/private/
/EssentialsChat/nbproject/private/
/EssentialsGroupBridge/nbproject/private/
/EssentialsGeoIP/nbproject/private/
/EssentialsSpawn/nbproject/private/
/EssentialsXMPP/nbproject/private/
/EssentialsGroupManager/nbproject/private/
/BuildAll/build/
/EssentialsGroupBridge/dist/
/EssentialsGroupBridge/build/
/EssentialsGeoIP/dist/
/EssentialsGeoIP/build/
/EssentialsGroupManager/build/
/EssentialsGroupManager/dist/
/BuildAll/dist/
/EssentialsChat/build/
/EssentialsChat/dist/
/EssentialsSpawn/build/
/EssentialsSpawn/dist/
/EssentialsXMPP/dist/
/EssentialsXMPP/build/
/EssentialsProtect/dist/
/EssentialsProtect/build/
/EssentialsPermissionsCommands/nbproject/private/
/EssentialsPermissionsCommands/build/
/EssentialsPermissionsCommands/dist/
/Essentials/nbproject/private/
/Essentials/dist/
/Essentials/build/
/YamlAnnotations/
/EssentialsUpdate/nbproject/private/
# intellij
*.iml
*.ipr
*.iws
.idea/
/EssentialsRelease/
/EssentialsUpdate/
*.mo
*.po.~*~

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Essentials</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

17
.travis.yml Normal file
View File

@@ -0,0 +1,17 @@
language: java
jdk:
- oraclejdk7
- openjdk7
- openjdk6
script: mvn clean test
notifications:
irc:
channels:
- "irc.esper.net#lain"
on_success: change
on_failure: always
email:
recipients:
- "team@ess3.net"
on_success: change
on_failure: always

View File

@@ -1,74 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="BuildAll" default="default" basedir=".">
<description>Builds, tests, and runs the project BuildAll.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar-with-manifest: JAR building (if you are using a manifest)
-do-jar-without-manifest: JAR building (if you are not using a manifest)
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="BuildAll-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
</project>

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +0,0 @@
build.xml.data.CRC32=51b33957
build.xml.script.CRC32=7a797370
build.xml.stylesheet.CRC32=28e38971@1.44.1.45
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=51b33957
nbproject/build-impl.xml.script.CRC32=66b89647
nbproject/build-impl.xml.stylesheet.CRC32=0ae3a408@1.44.1.45

View File

@@ -1,131 +0,0 @@
annotation.processing.enabled=true
annotation.processing.enabled.in.editor=false
annotation.processing.run.all.processors=true
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
application.title=BuildAll
application.vendor=
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.expand-tabs=true
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.indent-shift-width=2
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.spaces-per-tab=2
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.tab-size=2
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.text-limit-width=120
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.text-line-wrap=none
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.usedProfile=project
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineAnnotationArgs=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineArrayInit=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineAssignment=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineBinaryOp=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineCallArgs=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineDisjunctiveCatchTypes=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineFor=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineImplements=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineMethodParams=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineParenthesized=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineTernaryOp=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineThrows=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineTryResources=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.blankLinesAfterClassHeader=0
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.blankLinesBeforeClass=2
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.classDeclBracePlacement=NEW_LINE
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.expand-tabs=false
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.indent-shift-width=4
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.indentCasesFromSwitch=false
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.methodDeclBracePlacement=NEW_LINE
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.otherBracePlacement=NEW_LINE
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.placeCatchOnNewLine=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.placeElseOnNewLine=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.placeFinallyOnNewLine=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.placeWhileOnNewLine=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.spaceAfterTypeCast=false
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.spaces-per-tab=4
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.tab-size=4
build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
build.generated.sources.dir=${build.dir}/generated-sources
# Only compile against the classpath explicitly listed here:
build.sysclasspath=ignore
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
# Uncomment to specify the preferred debugger connection transport:
#debug.transport=dt_socket
debug.classpath=\
${run.classpath}
debug.test.classpath=\
${run.test.classpath}
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/BuildAll.jar
dist.javadoc.dir=${dist.dir}/javadoc
endorsed.classpath=
excludes=
includes=**
jar.compress=true
javac.classpath=\
${reference.Essentials.jar}:\
${reference.EssentialsChat.jar}:\
${reference.EssentialsProtect.jar}:\
${reference.EssentialsSpawn.jar}:\
${reference.EssentialsGeoIP.jar}:\
${reference.EssentialsGroupBridge.jar}:\
${reference.EssentialsXMPP.jar}:\
${reference.EssentialsGroupManager.jar}
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false
javac.processorpath=\
${javac.classpath}
javac.source=1.6
javac.target=1.6
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}:\
${libs.junit.classpath}:\
${libs.junit_4.classpath}
javac.test.processorpath=\
${javac.test.classpath}
javadoc.additionalparam=
javadoc.author=false
javadoc.encoding=${source.encoding}
javadoc.noindex=false
javadoc.nonavbar=false
javadoc.notree=false
javadoc.private=false
javadoc.splitindex=true
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
meta.inf.dir=${src.dir}/META-INF
mkdist.disabled=false
platform.active=default_platform
project.Essentials=../Essentials
project.EssentialsChat=../EssentialsChat
project.EssentialsGeoIP=../EssentialsGeoIP
project.EssentialsGroupBridge=../EssentialsGroupBridge
project.EssentialsGroupManager=../EssentialsGroupManager
project.EssentialsProtect=../EssentialsProtect
project.EssentialsSpawn=../EssentialsSpawn
project.EssentialsXMPP=../EssentialsXMPP
reference.Essentials.jar=${project.Essentials}/dist/Essentials.jar
reference.EssentialsChat.jar=${project.EssentialsChat}/dist/EssentialsChat.jar
reference.EssentialsGeoIP.jar=${project.EssentialsGeoIP}/dist/EssentialsGeoIP.jar
reference.EssentialsGroupBridge.jar=${project.EssentialsGroupBridge}/dist/EssentialsGroupBridge.jar
reference.EssentialsGroupManager.jar=${project.EssentialsGroupManager}/dist/EssentialsGroupManager.jar
reference.EssentialsProtect.jar=${project.EssentialsProtect}/dist/EssentialsProtect.jar
reference.EssentialsSpawn.jar=${project.EssentialsSpawn}/dist/EssentialsSpawn.jar
reference.EssentialsXMPP.jar=${project.EssentialsXMPP}/dist/EssentialsXMPP.jar
run.classpath=\
${javac.classpath}:\
${build.classes.dir}
# Space-separated list of JVM arguments used when running the project
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
# or test-sys-prop.name=value to set system properties for unit tests):
run.jvmargs=
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
source.encoding=UTF-8
src.dir=src
test.src.dir=test

View File

@@ -1,84 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>BuildAll</name>
<source-roots>
<root id="src.dir"/>
</source-roots>
<test-roots>
<root id="test.src.dir"/>
</test-roots>
</data>
<libraries xmlns="http://www.netbeans.org/ns/ant-project-libraries/1">
<definitions>..\lib\nblibraries.properties</definitions>
</libraries>
<references xmlns="http://www.netbeans.org/ns/ant-project-references/1">
<reference>
<foreign-project>Essentials</foreign-project>
<artifact-type>jar</artifact-type>
<script>build.xml</script>
<target>jar</target>
<clean-target>clean</clean-target>
<id>jar</id>
</reference>
<reference>
<foreign-project>EssentialsChat</foreign-project>
<artifact-type>jar</artifact-type>
<script>build.xml</script>
<target>jar</target>
<clean-target>clean</clean-target>
<id>jar</id>
</reference>
<reference>
<foreign-project>EssentialsGeoIP</foreign-project>
<artifact-type>jar</artifact-type>
<script>build.xml</script>
<target>jar</target>
<clean-target>clean</clean-target>
<id>jar</id>
</reference>
<reference>
<foreign-project>EssentialsGroupBridge</foreign-project>
<artifact-type>jar</artifact-type>
<script>build.xml</script>
<target>jar</target>
<clean-target>clean</clean-target>
<id>jar</id>
</reference>
<reference>
<foreign-project>EssentialsGroupManager</foreign-project>
<artifact-type>jar</artifact-type>
<script>build.xml</script>
<target>jar</target>
<clean-target>clean</clean-target>
<id>jar</id>
</reference>
<reference>
<foreign-project>EssentialsProtect</foreign-project>
<artifact-type>jar</artifact-type>
<script>build.xml</script>
<target>jar</target>
<clean-target>clean</clean-target>
<id>jar</id>
</reference>
<reference>
<foreign-project>EssentialsSpawn</foreign-project>
<artifact-type>jar</artifact-type>
<script>build.xml</script>
<target>jar</target>
<clean-target>clean</clean-target>
<id>jar</id>
</reference>
<reference>
<foreign-project>EssentialsXMPP</foreign-project>
<artifact-type>jar</artifact-type>
<script>build.xml</script>
<target>jar</target>
<clean-target>clean</clean-target>
<id>jar</id>
</reference>
</references>
</configuration>
</project>

View File

@@ -1,84 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="Essentials" default="default" basedir=".">
<description>Builds, tests, and runs the project Essentials.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar-with-manifest: JAR building (if you are using a manifest)
-do-jar-without-manifest: JAR building (if you are not using a manifest)
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="Essentials-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
<!--target name="-post-jar">
<jar jarfile="${dist.dir}/Essentials.jar">
<zipfileset src="${dist.jar}" excludes="META-INF/*" />
<zipfileset src="${dist.dir}/lib/Register.jar" excludes="META-INF/*" />
<manifest>
<attribute name="Classpath" value="Essentials.jar"/>
</manifest>
</jar>
</target-->
</project>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-shared-configuration>
<!--
This file contains additional configuration written by modules in the NetBeans IDE.
The configuration is intended to be shared among all the users of project and
therefore it is assumed to be part of version control checkout.
Without this configuration present, some functionality in the IDE may be limited or fail altogether.
-->
<properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
<!--
Properties that influence various parts of the IDE, especially code formatting and the like.
You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
That way multiple projects can share the same settings (useful for formatting rules for example).
Any value defined here will override the pom.xml file value but is only applicable to the current project.
-->
<netbeans.compile.on.save>all</netbeans.compile.on.save>
</properties>
</project-shared-configuration>

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +0,0 @@
build.xml.data.CRC32=7d758acf
build.xml.script.CRC32=3233ee78
build.xml.stylesheet.CRC32=28e38971@1.38.2.45
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=4b596d89
nbproject/build-impl.xml.script.CRC32=dbc81ee1
nbproject/build-impl.xml.stylesheet.CRC32=0ae3a408@1.44.1.45
nbproject/profiler-build-impl.xml.data.CRC32=ab78ce15
nbproject/profiler-build-impl.xml.script.CRC32=abda56ed
nbproject/profiler-build-impl.xml.stylesheet.CRC32=f10cf54c@1.11.1

View File

@@ -1,2 +0,0 @@
DoNotUseThreads
SignatureDeclareThrowsException

View File

@@ -1,138 +0,0 @@
annotation.processing.enabled=true
annotation.processing.enabled.in.editor=false
annotation.processing.run.all.processors=true
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
application.title=Essentials
application.vendor=
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.expand-tabs=true
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.indent-shift-width=2
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.spaces-per-tab=2
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.tab-size=2
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.text-limit-width=120
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.text-line-wrap=none
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.usedProfile=project
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineAnnotationArgs=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineArrayInit=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineAssignment=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineBinaryOp=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineCallArgs=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineDisjunctiveCatchTypes=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineFor=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineImplements=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineMethodParams=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineParenthesized=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineTernaryOp=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineThrows=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.alignMultilineTryResources=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.blankLinesAfterClassHeader=0
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.blankLinesBeforeClass=2
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.classDeclBracePlacement=NEW_LINE
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.expand-tabs=false
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.indent-shift-width=4
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.indentCasesFromSwitch=false
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.methodDeclBracePlacement=NEW_LINE
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.otherBracePlacement=NEW_LINE
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.placeCatchOnNewLine=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.placeElseOnNewLine=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.placeFinallyOnNewLine=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.placeWhileOnNewLine=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.spaceAfterTypeCast=false
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.spaces-per-tab=4
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.tab-size=4
build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
build.generated.sources.dir=${build.dir}/generated-sources
# Only compile against the classpath explicitly listed here:
build.sysclasspath=ignore
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
# Uncomment to specify the preferred debugger connection transport:
#debug.transport=dt_socket
debug.classpath=\
${run.classpath}
debug.test.classpath=\
${run.test.classpath}
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/Essentials.jar
dist.javadoc.dir=${dist.dir}/javadoc
endorsed.classpath=
excludes=
file.reference.BOSEconomy7.jar=../lib/BOSEconomy7.jar
file.reference.bPermissions.jar=../lib/bPermissions.jar
file.reference.craftbukkit-0.0.1-SNAPSHOT.jar=..\\lib\\craftbukkit-0.0.1-SNAPSHOT.jar
file.reference.iCo4.jar=../lib/iCo4.jar
file.reference.iCo5.jar=../lib/iCo5.jar
file.reference.iCo6.jar=../lib/iCo6.jar
file.reference.junit-4.5.jar=..\\lib\\junit_4\\junit-4.5.jar
file.reference.MultiCurrency.jar=../lib/MultiCurrency.jar
file.reference.Permissions3.jar=../lib/Permissions3.jar
file.reference.PermissionsBukkit-1.2.jar=../lib/PermissionsBukkit-1.2.jar
file.reference.PermissionsEx.jar=../lib/PermissionsEx.jar
includes=**
jar.archive.disabled=${jnlp.enabled}
jar.compress=true
jar.index=${jnlp.enabled}
javac.classpath=\
${file.reference.Permissions3.jar}:\
${file.reference.craftbukkit-0.0.1-SNAPSHOT.jar}:\
${file.reference.iCo4.jar}:\
${file.reference.iCo5.jar}:\
${file.reference.iCo6.jar}:\
${file.reference.MultiCurrency.jar}:\
${file.reference.BOSEconomy7.jar}:\
${file.reference.PermissionsEx.jar}:\
${file.reference.bPermissions.jar}:\
${file.reference.PermissionsBukkit-1.2.jar}
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false
javac.processorpath=\
${javac.classpath}
javac.source=1.6
javac.target=1.6
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}:\
${file.reference.junit-4.5.jar}
javac.test.processorpath=\
${javac.test.classpath}
javadoc.additionalparam=
javadoc.author=false
javadoc.encoding=${source.encoding}
javadoc.noindex=false
javadoc.nonavbar=false
javadoc.notree=false
javadoc.private=false
javadoc.splitindex=true
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
jnlp.codebase.type=no.codebase
jnlp.descriptor=application
jnlp.enabled=false
jnlp.mixed.code=default
jnlp.offline-allowed=false
jnlp.signed=false
jnlp.signing=
jnlp.signing.alias=
jnlp.signing.keystore=
meta.inf.dir=${src.dir}/META-INF
mkdist.disabled=true
platform.active=default_platform
run.classpath=\
${javac.classpath}:\
${build.classes.dir}
# Space-separated list of JVM arguments used when running the project
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
# or test-sys-prop.name=value to set system properties for unit tests):
run.jvmargs=-Djline.terminal=jline.UnsupportedTerminal
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
source.encoding=UTF-8
src.dir=src
test.src.dir=test

View File

@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>Essentials</name>
<source-roots>
<root id="src.dir"/>
</source-roots>
<test-roots>
<root id="test.src.dir"/>
</test-roots>
</data>
<libraries xmlns="http://www.netbeans.org/ns/ant-project-libraries/1">
<definitions>../lib/nblibraries.properties</definitions>
</libraries>
<references xmlns="http://www.netbeans.org/ns/ant-project-references/1"/>
</configuration>
</project>

3677
Essentials/po/en.po Normal file

File diff suppressed because it is too large Load Diff

3674
Essentials/po/keys.pot Normal file

File diff suppressed because it is too large Load Diff

119
Essentials/pom.xml Normal file
View File

@@ -0,0 +1,119 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>net.essentials3</groupId>
<artifactId>EssentialsParent</artifactId>
<version>3.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>Essentials</artifactId>
<dependencies>
<!-- Internal Depends -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>EssentialsGroupManager</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>0.11.6</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.4.1</version>
</dependency>
<!-- Test Depends -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.9.5</version>
<scope>test</scope>
</dependency>
<!-- External Plugin Depends -->
<dependency>
<groupId>cosine</groupId>
<artifactId>BOSEconomy</artifactId>
<version>0.7</version>
</dependency>
<dependency>
<groupId>com.iConomy</groupId>
<artifactId>iConomy</artifactId>
<version>5.0</version>
</dependency>
<dependency>
<groupId>com.iCo6</groupId>
<artifactId>iConomy</artifactId>
<version>6.0</version>
</dependency>
<dependency>
<groupId>me.ashtheking</groupId>
<artifactId>MultiCurrency</artifactId>
<version>0.05</version>
</dependency>
<dependency>
<groupId>net.milkbowl</groupId>
<artifactId>Vault</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<includes>
<include>commons-io:*</include>
<include>org.apache.commons:commons-compress</include>
</includes>
</artifactSet>
<minimizeJar>true</minimizeJar>
<relocations>
<relocation>
<pattern>org.apache.commons</pattern>
<shadedPattern>net.ess3.commons</shadedPattern>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.xnap.commons</groupId>
<artifactId>maven-gettext-plugin</artifactId>
<configuration>
<poDirectory>${basedir}/po/</poDirectory>
<targetBundle>messages2</targetBundle>
<keywords>-k_ -kComment -k -s --package-name=Essentials --package-version=${project.version} --copyright-holder="Essentials Team"</keywords>
<outputFormat>properties</outputFormat>
<sourceDirectory>${basedir}/../</sourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>

18
Essentials/src/book.txt Normal file
View File

@@ -0,0 +1,18 @@
This is the book file.
This file format works similar to the info.txt, motd.txt and rules.txt
Place content in here that you would like to be used by books ingame.
You can use this content by using the book:<section> meta option in kits or item spawning.
#Colors
Minecraft colors:
&0 &&0 &1 &&1 &2 &&2 &3 &&3
&4 &&4 &5 &&5 &6 &&6 &7 &&7
&8 &&8 &9 &&9 &a &&a &b &&b
&c &&c &d &&d &e &&e &f &&f
&0
&&k &kMagic&r &&l &lBold
&&m &mStrike&r &&n &nUline
&&o &oItalic&r &&r &rReset

View File

@@ -1,131 +0,0 @@
package com.earth2me.essentials;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.craftbukkit.CraftServer;
public class Backup implements Runnable
{
private static final Logger LOGGER = Logger.getLogger("Minecraft");
private transient final Server server;
private transient final IEssentials ess;
private transient boolean running = false;
private transient int taskId = -1;
private transient boolean active = false;
public Backup(final IEssentials ess)
{
this.ess = ess;
server = ess.getServer();
if (server.getOnlinePlayers().length > 0)
{
startTask();
}
}
void onPlayerJoin()
{
startTask();
}
private void startTask()
{
if (!running)
{
final long interval = ess.getSettings().getBackupInterval() * 1200; // minutes -> ticks
if (interval < 1200)
{
return;
}
taskId = ess.scheduleSyncRepeatingTask(this, interval, interval);
running = true;
}
}
public void run()
{
if (active)
{
return;
}
active = true;
final String command = ess.getSettings().getBackupCommand();
if (command == null || "".equals(command))
{
return;
}
LOGGER.log(Level.INFO, Util.i18n("backupStarted"));
final CommandSender cs = server.getConsoleSender();
server.dispatchCommand(cs, "save-all");
server.dispatchCommand(cs, "save-off");
ess.scheduleAsyncDelayedTask(
new Runnable()
{
public void run()
{
try
{
final ProcessBuilder childBuilder = new ProcessBuilder(command);
childBuilder.redirectErrorStream(true);
childBuilder.directory(ess.getDataFolder().getParentFile().getParentFile());
final Process child = childBuilder.start();
final BufferedReader reader = new BufferedReader(new InputStreamReader(child.getInputStream()));
try
{
child.waitFor();
String line;
do
{
line = reader.readLine();
if (line != null)
{
LOGGER.log(Level.INFO, line);
}
}
while (line != null);
}
finally
{
reader.close();
}
}
catch (InterruptedException ex)
{
LOGGER.log(Level.SEVERE, null, ex);
}
catch (IOException ex)
{
LOGGER.log(Level.SEVERE, null, ex);
}
finally
{
ess.scheduleSyncDelayedTask(
new Runnable()
{
public void run()
{
server.dispatchCommand(cs, "save-on");
if (server.getOnlinePlayers().length == 0)
{
running = false;
if (taskId != -1)
{
server.getScheduler().cancelTask(taskId);
}
}
active = false;
LOGGER.log(Level.INFO, Util.i18n("backupFinished"));
}
});
}
}
});
}
}

View File

@@ -1,15 +0,0 @@
package com.earth2me.essentials;
public class ChargeException extends Exception
{
public ChargeException(final String message)
{
super(message);
}
public ChargeException(final String message, final Throwable throwable)
{
super(message, throwable);
}
}

View File

@@ -1,684 +0,0 @@
/*
* Essentials - a bukkit plugin
* Copyright (C) 2011 Essentials Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.earth2me.essentials;
import com.earth2me.essentials.api.Economy;
import com.earth2me.essentials.commands.EssentialsCommand;
import java.io.*;
import java.util.*;
import java.util.logging.*;
import org.bukkit.*;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import com.earth2me.essentials.commands.IEssentialsCommand;
import com.earth2me.essentials.commands.NoChargeException;
import com.earth2me.essentials.commands.NotEnoughArgumentsException;
import com.earth2me.essentials.perm.PermissionsHandler;
import com.earth2me.essentials.register.payment.Methods;
import com.earth2me.essentials.signs.SignBlockListener;
import com.earth2me.essentials.signs.SignEntityListener;
import com.earth2me.essentials.signs.SignPlayerListener;
import java.math.BigInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.bukkit.command.PluginCommand;
import org.bukkit.entity.Player;
import org.bukkit.event.Event.Priority;
import org.bukkit.event.Event.Type;
import org.bukkit.plugin.*;
import org.bukkit.plugin.java.*;
import org.bukkit.scheduler.BukkitScheduler;
public class Essentials extends JavaPlugin implements IEssentials
{
public static final int BUKKIT_VERSION = 1060;
private static final Logger LOGGER = Logger.getLogger("Minecraft");
private transient ISettings settings;
private final transient TNTExplodeListener tntListener = new TNTExplodeListener(this);
private transient Spawn spawn;
private transient Jail jail;
private transient Warps warps;
private transient Worth worth;
private transient List<IConf> confList;
private transient Backup backup;
private transient ItemDb itemDb;
private transient EssentialsUpdateTimer updateTimer;
private transient final Methods paymentMethod = new Methods();
private transient final static boolean enableErrorLogging = false;
private transient final EssentialsErrorHandler errorHandler = new EssentialsErrorHandler();
private transient PermissionsHandler permissionsHandler;
private transient UserMap userMap;
@Override
public ISettings getSettings()
{
return settings;
}
public void setupForTesting(final Server server) throws IOException, InvalidDescriptionException
{
final File dataFolder = File.createTempFile("essentialstest", "");
if (!dataFolder.delete())
{
throw new IOException();
}
if (!dataFolder.mkdir())
{
throw new IOException();
}
LOGGER.log(Level.INFO, Util.i18n("usingTempFolderForTesting"));
LOGGER.log(Level.INFO, dataFolder.toString());
this.initialize(null, server, new PluginDescriptionFile(new FileReader(new File("src" + File.separator + "plugin.yml"))), dataFolder, null, null);
settings = new Settings(this);
userMap = new UserMap(this);
permissionsHandler = new PermissionsHandler(this, false);
Economy.setEss(this);
}
@Override
public void onEnable()
{
final String[] javaversion = System.getProperty("java.version").split("\\.", 3);
if (javaversion == null || javaversion.length < 2 || Integer.parseInt(javaversion[1]) < 6)
{
LOGGER.log(Level.SEVERE, "Java version not supported! Please install Java 1.6. You have " + System.getProperty("java.version"));
}
if (enableErrorLogging)
{
LOGGER.addHandler(errorHandler);
}
final EssentialsUpgrade upgrade = new EssentialsUpgrade(this);
upgrade.beforeSettings();
confList = new ArrayList<IConf>();
settings = new Settings(this);
confList.add(settings);
upgrade.afterSettings();
Util.updateLocale(settings.getLocale(), this);
userMap = new UserMap(this);
confList.add(userMap);
spawn = new Spawn(getServer(), this.getDataFolder());
confList.add(spawn);
warps = new Warps(getServer(), this.getDataFolder());
confList.add(warps);
worth = new Worth(this.getDataFolder());
confList.add(worth);
itemDb = new ItemDb(this);
confList.add(itemDb);
reload();
backup = new Backup(this);
final PluginManager pm = getServer().getPluginManager();
for (Plugin plugin : pm.getPlugins())
{
if (plugin.getDescription().getName().startsWith("Essentials")
&& !plugin.getDescription().getVersion().equals(this.getDescription().getVersion()))
{
LOGGER.log(Level.WARNING, Util.format("versionMismatch", plugin.getDescription().getName()));
}
}
final Matcher versionMatch = Pattern.compile("git-Bukkit-([0-9]+).([0-9]+).([0-9]+)-[0-9]+-[0-9a-z]+-b([0-9]+)jnks.*").matcher(getServer().getVersion());
if (versionMatch.matches())
{
final int versionNumber = Integer.parseInt(versionMatch.group(4));
if (versionNumber < BUKKIT_VERSION)
{
LOGGER.log(Level.WARNING, Util.i18n("notRecommendedBukkit"));
}
}
else
{
LOGGER.log(Level.INFO, Util.i18n("bukkitFormatChanged"));
}
permissionsHandler = new PermissionsHandler(this, settings.useBukkitPermissions());
final EssentialsPluginListener serverListener = new EssentialsPluginListener(this);
pm.registerEvent(Type.PLUGIN_ENABLE, serverListener, Priority.Low, this);
pm.registerEvent(Type.PLUGIN_DISABLE, serverListener, Priority.Low, this);
confList.add(serverListener);
final EssentialsPlayerListener playerListener = new EssentialsPlayerListener(this);
pm.registerEvent(Type.PLAYER_JOIN, playerListener, Priority.Monitor, this);
pm.registerEvent(Type.PLAYER_QUIT, playerListener, Priority.Monitor, this);
pm.registerEvent(Type.PLAYER_CHAT, playerListener, Priority.Lowest, this);
pm.registerEvent(Type.PLAYER_COMMAND_PREPROCESS, playerListener, Priority.Lowest, this);
pm.registerEvent(Type.PLAYER_MOVE, playerListener, Priority.High, this);
pm.registerEvent(Type.PLAYER_LOGIN, playerListener, Priority.High, this);
pm.registerEvent(Type.PLAYER_TELEPORT, playerListener, Priority.High, this);
pm.registerEvent(Type.PLAYER_INTERACT, playerListener, Priority.High, this);
pm.registerEvent(Type.PLAYER_EGG_THROW, playerListener, Priority.High, this);
pm.registerEvent(Type.PLAYER_BUCKET_EMPTY, playerListener, Priority.High, this);
pm.registerEvent(Type.PLAYER_ANIMATION, playerListener, Priority.High, this);
pm.registerEvent(Type.PLAYER_BED_ENTER, playerListener, Priority.Lowest, this);
final EssentialsBlockListener blockListener = new EssentialsBlockListener(this);
pm.registerEvent(Type.BLOCK_PLACE, blockListener, Priority.Lowest, this);
final SignBlockListener signBlockListener = new SignBlockListener(this);
pm.registerEvent(Type.SIGN_CHANGE, signBlockListener, Priority.Highest, this);
pm.registerEvent(Type.BLOCK_PLACE, signBlockListener, Priority.Low, this);
pm.registerEvent(Type.BLOCK_BREAK, signBlockListener, Priority.Highest, this);
pm.registerEvent(Type.BLOCK_IGNITE, signBlockListener, Priority.Low, this);
pm.registerEvent(Type.BLOCK_BURN, signBlockListener, Priority.Low, this);
pm.registerEvent(Type.BLOCK_PISTON_EXTEND, signBlockListener, Priority.Low, this);
pm.registerEvent(Type.BLOCK_PISTON_RETRACT, signBlockListener, Priority.Low, this);
final SignPlayerListener signPlayerListener = new SignPlayerListener(this);
pm.registerEvent(Type.PLAYER_INTERACT, signPlayerListener, Priority.Low, this);
final SignEntityListener signEntityListener = new SignEntityListener(this);
pm.registerEvent(Type.ENTITY_EXPLODE, signEntityListener, Priority.Low, this);
pm.registerEvent(Type.ENDERMAN_PICKUP, signEntityListener, Priority.Low, this);
final EssentialsEntityListener entityListener = new EssentialsEntityListener(this);
pm.registerEvent(Type.ENTITY_DAMAGE, entityListener, Priority.Lowest, this);
pm.registerEvent(Type.ENTITY_COMBUST, entityListener, Priority.Lowest, this);
pm.registerEvent(Type.ENTITY_DEATH, entityListener, Priority.Lowest, this);
pm.registerEvent(Type.FOOD_LEVEL_CHANGE, entityListener, Priority.Lowest, this);
jail = new Jail(this);
final JailPlayerListener jailPlayerListener = new JailPlayerListener(this);
confList.add(jail);
pm.registerEvent(Type.BLOCK_BREAK, jail, Priority.Low, this);
pm.registerEvent(Type.BLOCK_DAMAGE, jail, Priority.Low, this);
pm.registerEvent(Type.BLOCK_PLACE, jail, Priority.Low, this);
pm.registerEvent(Type.PLAYER_INTERACT, jailPlayerListener, Priority.Low, this);
pm.registerEvent(Type.PLAYER_RESPAWN, jailPlayerListener, Priority.High, this);
pm.registerEvent(Type.PLAYER_TELEPORT, jailPlayerListener, Priority.High, this);
pm.registerEvent(Type.PLAYER_JOIN, jailPlayerListener, Priority.High, this);
pm.registerEvent(Type.ENTITY_EXPLODE, tntListener, Priority.High, this);
final EssentialsTimer timer = new EssentialsTimer(this);
getScheduler().scheduleSyncRepeatingTask(this, timer, 1, 100);
Economy.setEss(this);
if (getSettings().isUpdateEnabled())
{
updateTimer = new EssentialsUpdateTimer(this);
getScheduler().scheduleAsyncRepeatingTask(this, updateTimer, 20 * 60 * 10, 20 * 3600 * 6);
}
LOGGER.info(Util.format("loadinfo", this.getDescription().getName(), this.getDescription().getVersion(), Util.joinList(this.getDescription().getAuthors())));
}
@Override
public void onDisable()
{
Trade.closeLog();
LOGGER.removeHandler(errorHandler);
}
@Override
public void reload()
{
Trade.closeLog();
for (IConf iConf : confList)
{
iConf.reloadConfig();
}
Util.updateLocale(settings.getLocale(), this);
// for motd
getConfiguration().load();
}
@Override
public String[] getMotd(final CommandSender sender, final String def)
{
return getLines(sender, "motd", def);
}
@Override
public String[] getLines(final CommandSender sender, final String node, final String def)
{
List<String> lines = (List<String>)getConfiguration().getProperty(node);
if (lines == null)
{
return new String[0];
}
String[] retval = new String[lines.size()];
if (lines.isEmpty() || lines.get(0) == null)
{
try
{
lines = new ArrayList<String>();
// "[]" in YaML indicates empty array, so respect that
if (!getConfiguration().getString(node, def).equals("[]"))
{
lines.add(getConfiguration().getString(node, def));
retval = new String[lines.size()];
}
}
catch (Throwable ex2)
{
LOGGER.log(Level.WARNING, Util.format("corruptNodeInConfig", node));
return new String[0];
}
}
// if still empty, call it a day
if (lines == null || lines.isEmpty() || lines.get(0) == null)
{
return new String[0];
}
for (int i = 0; i < lines.size(); i++)
{
String m = lines.get(i);
if (m == null)
{
continue;
}
m = m.replace('&', '§').replace("§§", "&");
if (sender instanceof User || sender instanceof Player)
{
User user = getUser(sender);
m = m.replace("{PLAYER}", user.getDisplayName());
m = m.replace("{IP}", user.getAddress().toString());
m = m.replace("{BALANCE}", Double.toString(user.getMoney()));
m = m.replace("{MAILS}", Integer.toString(user.getMails().size()));
m = m.replace("{WORLD}", user.getLocation().getWorld().getName());
}
int playerHidden = 0;
for (Player p : getServer().getOnlinePlayers())
{
if (getUser(p).isHidden())
{
playerHidden++;
}
}
m = m.replace("{ONLINE}", Integer.toString(getServer().getOnlinePlayers().length - playerHidden));
m = m.replace("{UNIQUE}", Integer.toString(userMap.getUniqueUsers()));
if (m.matches(".*\\{PLAYERLIST\\}.*"))
{
StringBuilder online = new StringBuilder();
for (Player p : getServer().getOnlinePlayers())
{
if (getUser(p).isHidden())
{
continue;
}
if (online.length() > 0)
{
online.append(", ");
}
online.append(p.getDisplayName());
}
m = m.replace("{PLAYERLIST}", online.toString());
}
if (sender instanceof Player)
{
try
{
Class User = getClassLoader().loadClass("bukkit.Vandolis.User");
Object vuser = User.getConstructor(User.class).newInstance((Player)sender);
m = m.replace("{RED:BALANCE}", User.getMethod("getMoney").invoke(vuser).toString());
m = m.replace("{RED:BUYS}", User.getMethod("getNumTransactionsBuy").invoke(vuser).toString());
m = m.replace("{RED:SELLS}", User.getMethod("getNumTransactionsSell").invoke(vuser).toString());
}
catch (Throwable ex)
{
m = m.replace("{RED:BALANCE}", "N/A");
m = m.replace("{RED:BUYS}", "N/A");
m = m.replace("{RED:SELLS}", "N/A");
}
}
retval[i] = m + " ";
}
return retval;
}
@Override
public boolean onCommand(final CommandSender sender, final Command command, final String commandLabel, final String[] args)
{
return onCommandEssentials(sender, command, commandLabel, args, Essentials.class.getClassLoader(), "com.earth2me.essentials.commands.Command", "essentials.");
}
@Override
public boolean onCommandEssentials(final CommandSender sender, final Command command, final String commandLabel, final String[] args, final ClassLoader classLoader, final String commandPath, final String permissionPrefix)
{
// Allow plugins to override the command via onCommand
if (!getSettings().isCommandOverridden(command.getName()) && !commandLabel.startsWith("e"))
{
for (Plugin p : getServer().getPluginManager().getPlugins())
{
if (p.getDescription().getMain().contains("com.earth2me.essentials"))
{
continue;
}
final PluginDescriptionFile desc = p.getDescription();
if (desc == null)
{
continue;
}
if (desc.getName() == null)
{
continue;
}
final PluginCommand pc = getServer().getPluginCommand(desc.getName() + ":" + commandLabel);
if (pc != null)
{
return pc.execute(sender, commandLabel, args);
}
}
}
try
{
User user = null;
if (sender instanceof Player)
{
user = getUser(sender);
LOGGER.log(Level.INFO, String.format("[PLAYER_COMMAND] %s: /%s %s ", ((Player)sender).getName(), commandLabel, EssentialsCommand.getFinalArg(args, 0)));
}
// New mail notification
if (user != null && !getSettings().isCommandDisabled("mail") && !commandLabel.equals("mail") && user.isAuthorized("essentials.mail"))
{
final List<String> mail = user.getMails();
if (mail != null && !mail.isEmpty())
{
user.sendMessage(Util.format("youHaveNewMail", mail.size()));
}
}
// Check for disabled commands
if (getSettings().isCommandDisabled(commandLabel))
{
return true;
}
IEssentialsCommand cmd;
try
{
cmd = (IEssentialsCommand)classLoader.loadClass(commandPath + command.getName()).newInstance();
cmd.setEssentials(this);
}
catch (Exception ex)
{
sender.sendMessage(Util.format("commandNotLoaded", commandLabel));
LOGGER.log(Level.SEVERE, Util.format("commandNotLoaded", commandLabel), ex);
return true;
}
// Check authorization
if (user != null && !user.isAuthorized(cmd, permissionPrefix))
{
LOGGER.log(Level.WARNING, Util.format("deniedAccessCommand", user.getName()));
user.sendMessage(Util.i18n("noAccessCommand"));
return true;
}
// Run the command
try
{
if (user == null)
{
cmd.run(getServer(), sender, commandLabel, command, args);
}
else
{
cmd.run(getServer(), user, commandLabel, command, args);
}
return true;
}
catch (NoChargeException ex)
{
return true;
}
catch (NotEnoughArgumentsException ex)
{
sender.sendMessage(command.getDescription());
sender.sendMessage(command.getUsage().replaceAll("<command>", commandLabel));
return true;
}
catch (Throwable ex)
{
showError(sender, ex, commandLabel);
return true;
}
}
catch (Throwable ex)
{
LOGGER.log(Level.SEVERE, Util.format("commandFailed", commandLabel), ex);
return true;
}
}
@Override
public void showError(final CommandSender sender, final Throwable exception, final String commandLabel)
{
sender.sendMessage(Util.format("errorWithMessage", exception.getMessage()));
final LogRecord logRecord = new LogRecord(Level.WARNING, Util.format("errorCallingCommand", commandLabel));
logRecord.setThrown(exception);
if (getSettings().isDebug())
{
LOGGER.log(logRecord);
}
else
{
if (enableErrorLogging)
{
errorHandler.publish(logRecord);
errorHandler.flush();
}
}
}
@Override
public BukkitScheduler getScheduler()
{
return this.getServer().getScheduler();
}
@Override
public Jail getJail()
{
return jail;
}
@Override
public Warps getWarps()
{
return warps;
}
@Override
public Worth getWorth()
{
return worth;
}
@Override
public Backup getBackup()
{
return backup;
}
@Override
public Spawn getSpawn()
{
return spawn;
}
@Override
public User getUser(final Object base)
{
if (base instanceof Player)
{
return getUser((Player)base);
}
if (base instanceof String)
{
try
{
return userMap.getUser((String)base);
}
catch (NullPointerException ex)
{
return null;
}
}
return null;
}
private <T extends Player> User getUser(final T base)
{
if (base == null)
{
return null;
}
if (base instanceof User)
{
return (User)base;
}
try
{
return userMap.getUser(base.getName()).update(base);
}
catch (NullPointerException ex)
{
return new User(base, this);
}
}
@Override
public User getOfflineUser(final String name)
{
try
{
return userMap.getUser(name);
}
catch (NullPointerException ex)
{
return null;
}
}
@Override
public World getWorld(final String name)
{
if (name.matches("[0-9]+"))
{
final int worldId = Integer.parseInt(name);
if (worldId < getServer().getWorlds().size())
{
return getServer().getWorlds().get(worldId);
}
}
return getServer().getWorld(name);
}
@Override
public void addReloadListener(final IConf listener)
{
confList.add(listener);
}
@Override
public Methods getPaymentMethod()
{
return paymentMethod;
}
@Override
public int broadcastMessage(final IUser sender, final String message)
{
if (sender == null) {
return getServer().broadcastMessage(message);
}
if (sender.isHidden()) {
return 0;
}
final Player[] players = getServer().getOnlinePlayers();
for (Player player : players)
{
final User user = getUser(player);
if (!user.isIgnoredPlayer(sender.getName()))
{
player.sendMessage(message);
}
}
return players.length;
}
public Map<BigInteger, String> getErrors()
{
return errorHandler.getErrors();
}
@Override
public int scheduleAsyncDelayedTask(final Runnable run)
{
return this.getScheduler().scheduleAsyncDelayedTask(this, run);
}
@Override
public int scheduleSyncDelayedTask(final Runnable run)
{
return this.getScheduler().scheduleSyncDelayedTask(this, run);
}
@Override
public int scheduleSyncDelayedTask(final Runnable run, final long delay)
{
return this.getScheduler().scheduleSyncDelayedTask(this, run, delay);
}
@Override
public int scheduleSyncRepeatingTask(final Runnable run, final long delay, final long period)
{
return this.getScheduler().scheduleSyncRepeatingTask(this, run, delay, period);
}
@Override
public TNTExplodeListener getTNTListener()
{
return tntListener;
}
@Override
public PermissionsHandler getPermissionsHandler()
{
return permissionsHandler;
}
@Override
public ItemDb getItemDb()
{
return itemDb;
}
@Override
public UserMap getUserMap()
{
return userMap;
}
}

View File

@@ -1,110 +0,0 @@
package com.earth2me.essentials;
import java.util.logging.Logger;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.event.block.BlockListener;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.inventory.ItemStack;
public class EssentialsBlockListener extends BlockListener
{
private final IEssentials ess;
private static final Logger logger = Logger.getLogger("Minecraft");
public EssentialsBlockListener(IEssentials ess)
{
this.ess = ess;
}
@Override
public void onBlockPlace(BlockPlaceEvent event)
{
if (event.isCancelled())
{
return;
}
final User user = ess.getUser(event.getPlayer());
// Do not rely on getItemInHand();
// http://leaky.bukkit.org/issues/663
final ItemStack is = new ItemStack(event.getBlockPlaced().getType(), 1, (short)0, event.getBlockPlaced().getData());
switch (is.getType())
{
case WOODEN_DOOR:
is.setType(Material.WOOD_DOOR);
is.setDurability((short)0);
break;
case IRON_DOOR_BLOCK:
is.setType(Material.IRON_DOOR);
is.setDurability((short)0);
break;
case SIGN_POST:
case WALL_SIGN:
is.setType(Material.SIGN);
is.setDurability((short)0);
break;
case CROPS:
is.setType(Material.SEEDS);
is.setDurability((short)0);
break;
case CAKE_BLOCK:
is.setType(Material.CAKE);
is.setDurability((short)0);
break;
case BED_BLOCK:
is.setType(Material.BED);
is.setDurability((short)0);
break;
case REDSTONE_WIRE:
is.setType(Material.REDSTONE);
is.setDurability((short)0);
break;
case REDSTONE_TORCH_OFF:
case REDSTONE_TORCH_ON:
is.setType(Material.REDSTONE_TORCH_ON);
is.setDurability((short)0);
break;
case DIODE_BLOCK_OFF:
case DIODE_BLOCK_ON:
is.setType(Material.DIODE);
is.setDurability((short)0);
break;
case DOUBLE_STEP:
is.setType(Material.STEP);
break;
case TORCH:
case RAILS:
case LADDER:
case WOOD_STAIRS:
case COBBLESTONE_STAIRS:
case LEVER:
case STONE_BUTTON:
case FURNACE:
case DISPENSER:
case PUMPKIN:
case JACK_O_LANTERN:
case WOOD_PLATE:
case STONE_PLATE:
case PISTON_STICKY_BASE:
case PISTON_BASE:
is.setDurability((short)0);
break;
case FIRE:
return;
}
boolean unlimitedForUser = user.hasUnlimited(is);
if (unlimitedForUser && user.getGameMode() == GameMode.SURVIVAL)
{
ess.scheduleSyncDelayedTask(
new Runnable()
{
public void run()
{
user.getInventory().addItem(is);
user.updateInventory();
}
});
}
}
}

View File

@@ -1,277 +0,0 @@
package com.earth2me.essentials;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.config.Configuration;
public class EssentialsConf extends Configuration
{
private static final Logger LOGGER = Logger.getLogger("Minecraft");
private transient File configFile;
private transient String templateName = null;
private transient Class<?> resourceClass = EssentialsConf.class;
public EssentialsConf(final File configFile)
{
super(configFile);
this.configFile = configFile;
if (this.root == null)
{
this.root = new HashMap<String, Object>();
}
}
@Override
public void load()
{
configFile = configFile.getAbsoluteFile();
if (!configFile.getParentFile().exists())
{
if (!configFile.getParentFile().mkdirs())
{
LOGGER.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()));
}
}
// This will delete files where the first character is 0. In most cases they are broken.
if (configFile.exists() && configFile.length() != 0)
{
try
{
final InputStream input = new FileInputStream(configFile);
try
{
if (input.read() == 0)
{
input.close();
configFile.delete();
}
}
catch (IOException ex)
{
LOGGER.log(Level.SEVERE, null, ex);
}
finally
{
try
{
input.close();
}
catch (IOException ex)
{
LOGGER.log(Level.SEVERE, null, ex);
}
}
}
catch (FileNotFoundException ex)
{
LOGGER.log(Level.SEVERE, null, ex);
}
}
if (!configFile.exists())
{
if (templateName != null)
{
LOGGER.log(Level.INFO, Util.format("creatingConfigFromTemplate", configFile.toString()));
createFromTemplate();
}
else
{
try
{
LOGGER.log(Level.INFO, Util.format("creatingEmptyConfig", configFile.toString()));
if (!configFile.createNewFile())
{
LOGGER.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()));
}
}
catch (IOException ex)
{
LOGGER.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()), ex);
}
}
}
try
{
super.load();
}
catch (RuntimeException e)
{
LOGGER.log(Level.INFO, "File: " + configFile.toString());
throw e;
}
if (this.root == null)
{
this.root = new HashMap<String, Object>();
}
}
private void createFromTemplate()
{
InputStream istr = null;
OutputStream ostr = null;
try
{
istr = resourceClass.getResourceAsStream(templateName);
if (istr == null)
{
LOGGER.log(Level.SEVERE, Util.format("couldNotFindTemplate", templateName));
return;
}
ostr = new FileOutputStream(configFile);
byte[] buffer = new byte[1024];
int length = 0;
length = istr.read(buffer);
while (length > 0)
{
ostr.write(buffer, 0, length);
length = istr.read(buffer);
}
}
catch (IOException ex)
{
LOGGER.log(Level.SEVERE, Util.format("failedToWriteConfig", configFile.toString()), ex);
return;
}
finally
{
try
{
if (istr != null)
{
istr.close();
}
}
catch (IOException ex)
{
Logger.getLogger(EssentialsConf.class.getName()).log(Level.SEVERE, null, ex);
}
try
{
if (ostr != null)
{
ostr.close();
}
}
catch (IOException ex)
{
LOGGER.log(Level.SEVERE, Util.format("failedToCloseConfig", configFile.toString()), ex);
}
}
}
public void setTemplateName(final String templateName)
{
this.templateName = templateName;
}
public File getFile()
{
return configFile;
}
public void setTemplateName(final String templateName, final Class<?> resClass)
{
this.templateName = templateName;
this.resourceClass = resClass;
}
public boolean hasProperty(final String path)
{
return getProperty(path) != null;
}
public Location getLocation(final String path, final Server server) throws Exception
{
final String worldName = getString((path == null ? "" : path + ".") + "world");
if (worldName == null || worldName.isEmpty())
{
return null;
}
final World world = server.getWorld(worldName);
if (world == null)
{
throw new Exception(Util.i18n("invalidWorld"));
}
return new Location(world,
getDouble((path == null ? "" : path + ".") + "x", 0),
getDouble((path == null ? "" : path + ".") + "y", 0),
getDouble((path == null ? "" : path + ".") + "z", 0),
(float)getDouble((path == null ? "" : path + ".") + "yaw", 0),
(float)getDouble((path == null ? "" : path + ".") + "pitch", 0));
}
public void setProperty(final String path, final Location loc)
{
setProperty((path == null ? "" : path + ".") + "world", loc.getWorld().getName());
setProperty((path == null ? "" : path + ".") + "x", loc.getX());
setProperty((path == null ? "" : path + ".") + "y", loc.getY());
setProperty((path == null ? "" : path + ".") + "z", loc.getZ());
setProperty((path == null ? "" : path + ".") + "yaw", loc.getYaw());
setProperty((path == null ? "" : path + ".") + "pitch", loc.getPitch());
}
public ItemStack getItemStack(final String path)
{
return new ItemStack(
Material.valueOf(getString(path + ".type", "AIR")),
getInt(path + ".amount", 1),
(short)getInt(path + ".damage", 0)/*,
(byte)getInt(path + ".data", 0)*/);
}
public void setProperty(final String path, final ItemStack stack)
{
final Map<String, Object> map = new HashMap<String, Object>();
map.put("type", stack.getType().toString());
map.put("amount", stack.getAmount());
map.put("damage", stack.getDurability());
// getData().getData() is broken
//map.put("data", stack.getDurability());
setProperty(path, map);
}
public long getLong(final String path, final long def)
{
try
{
final Number num = (Number)getProperty(path);
return num == null ? def : num.longValue();
}
catch (ClassCastException ex)
{
return def;
}
}
@Override
public double getDouble(final String path, final double def)
{
try
{
Number num = (Number)getProperty(path);
return num == null ? def : num.doubleValue();
}
catch (ClassCastException ex)
{
return def;
}
}
}

View File

@@ -1,101 +0,0 @@
package com.earth2me.essentials;
import java.util.List;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityCombustEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityListener;
import org.bukkit.event.entity.FoodLevelChangeEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.inventory.ItemStack;
public class EssentialsEntityListener extends EntityListener
{
private final IEssentials ess;
public EssentialsEntityListener(IEssentials ess)
{
this.ess = ess;
}
@Override
public void onEntityDamage(EntityDamageEvent event)
{
if (event instanceof EntityDamageByEntityEvent)
{
EntityDamageByEntityEvent edEvent = (EntityDamageByEntityEvent)event;
Entity eAttack = edEvent.getDamager();
Entity eDefend = edEvent.getEntity();
if (eDefend instanceof Player && eAttack instanceof Player)
{
User defender = ess.getUser(eDefend);
User attacker = ess.getUser(eAttack);
ItemStack is = attacker.getItemInHand();
List<String> commandList = attacker.getPowertool(is);
if (commandList != null && !commandList.isEmpty())
{
for (String command : commandList)
{
if (command != null && !command.isEmpty())
{
attacker.getServer().dispatchCommand(attacker, command.replaceAll("\\{player\\}", defender.getName()));
event.setCancelled(true);
return;
}
}
}
}
}
if (event.getEntity() instanceof Player && ess.getUser(event.getEntity()).isGodModeEnabled())
{
final Player player = (Player)event.getEntity();
player.setFireTicks(0);
player.setRemainingAir(player.getMaximumAir());
event.setCancelled(true);
}
}
@Override
public void onEntityCombust(EntityCombustEvent event)
{
if (event.getEntity() instanceof Player && ess.getUser(event.getEntity()).isGodModeEnabled())
{
event.setCancelled(true);
}
}
@Override
public void onEntityDeath(final EntityDeathEvent event)
{
if (event instanceof PlayerDeathEvent)
{
final PlayerDeathEvent pdevent = (PlayerDeathEvent)event;
final User user = ess.getUser(pdevent.getEntity());
if (user.isAuthorized("essentials.back.ondeath") && !ess.getSettings().isCommandDisabled("back"))
{
user.setLastLocation();
user.sendMessage(Util.i18n("backAfterDeath"));
}
if (!ess.getSettings().areDeathMessagesEnabled())
{
pdevent.setDeathMessage("");
}
}
}
@Override
public void onFoodLevelChange(FoodLevelChangeEvent event)
{
if (event.getEntity() instanceof Player && ess.getUser(event.getEntity()).isGodModeEnabled())
{
//TODO: Remove the following line, when we're happy to remove backwards compatability with 1185.
event.setFoodLevel(20);
event.setCancelled(true);
}
}
}

View File

@@ -1,128 +0,0 @@
package com.earth2me.essentials;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogRecord;
class EssentialsErrorHandler extends Handler
{
private final Map<BigInteger, String> errors = new HashMap<BigInteger, String>();
private final List<LogRecord> records = new LinkedList<LogRecord>();
public EssentialsErrorHandler()
{
}
@Override
public void publish(LogRecord lr)
{
if (lr.getThrown() == null || lr.getLevel().intValue() < Level.WARNING.intValue())
{
return;
}
synchronized (records)
{
records.add(lr);
}
}
@Override
public void flush()
{
synchronized (records)
{
sortRecords();
}
}
@Override
public void close() throws SecurityException
{
synchronized (records)
{
sortRecords();
}
}
private void sortRecords()
{
for (LogRecord lr : records)
{
try
{
if (lr.getThrown() == null)
{
return;
}
Throwable tr = lr.getThrown();
StackTraceElement[] elements = tr.getStackTrace();
if (elements == null || elements.length <= 0)
{
return;
}
boolean essentialsFound = false;
for (StackTraceElement stackTraceElement : elements)
{
if (stackTraceElement.getClassName().contains("com.earth2me.essentials"))
{
essentialsFound = true;
break;
}
}
if (!essentialsFound && tr.getCause() != null)
{
Throwable cause = tr.getCause();
StackTraceElement[] elements2 = cause.getStackTrace();
if (elements2 != null)
{
for (StackTraceElement stackTraceElement : elements2)
{
if (stackTraceElement.getClassName().contains("com.earth2me.essentials"))
{
essentialsFound = true;
break;
}
}
}
}
StringBuilder sb = new StringBuilder();
sb.append("[").append(lr.getLevel().getName()).append("] ").append(lr.getMessage()).append("\n");
sb.append(tr.getMessage()).append("\n");
for (StackTraceElement stackTraceElement : tr.getStackTrace())
{
sb.append(stackTraceElement.toString()).append("\n");
}
if (tr.getCause() != null && tr.getCause().getStackTrace() != null)
{
sb.append(tr.getCause().getMessage()).append("\n");
for (StackTraceElement stackTraceElement : tr.getCause().getStackTrace())
{
sb.append(stackTraceElement.toString()).append("\n");
}
}
String errorReport = sb.toString();
byte[] bytesOfMessage = errorReport.getBytes("UTF-8");
MessageDigest md = MessageDigest.getInstance("MD5");
BigInteger bi = new BigInteger(md.digest(bytesOfMessage));
errors.put(bi, errorReport);
}
catch (Throwable t)
{
//Ignore all exceptions inside the exception handler
}
}
records.clear();
}
Map<BigInteger, String> getErrors()
{
return errors;
}
}

View File

@@ -1,403 +0,0 @@
package com.earth2me.essentials;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerAnimationEvent;
import org.bukkit.event.player.PlayerAnimationType;
import org.bukkit.event.player.PlayerBedEnterEvent;
import org.bukkit.event.player.PlayerBucketEmptyEvent;
import org.bukkit.event.player.PlayerChatEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerEggThrowEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerListener;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerLoginEvent.Result;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.inventory.ItemStack;
public class EssentialsPlayerListener extends PlayerListener
{
private static final Logger LOGGER = Logger.getLogger("Minecraft");
private final transient Server server;
private final transient IEssentials ess;
public EssentialsPlayerListener(final IEssentials parent)
{
this.ess = parent;
this.server = parent.getServer();
}
@Override
public void onPlayerRespawn(final PlayerRespawnEvent event)
{
final User user = ess.getUser(event.getPlayer());
user.setDisplayNick(user.getNick());
updateCompass(user);
if (ess.getSettings().changeDisplayName())
{
user.setDisplayNick(user.getNick());
}
}
@Override
public void onPlayerChat(final PlayerChatEvent event)
{
final User user = ess.getUser(event.getPlayer());
if (user.isMuted())
{
event.setCancelled(true);
user.sendMessage(Util.i18n("playerMuted"));
LOGGER.info(Util.format("mutedUserSpeaks", user.getName()));
}
final Iterator<Player> it = event.getRecipients().iterator();
while (it.hasNext())
{
final User u = ess.getUser(it.next());
if (u.isIgnoredPlayer(user.getName()))
{
it.remove();
}
}
user.updateActivity(true);
if (ess.getSettings().changeDisplayName())
{
user.setDisplayNick(user.getNick());
}
}
@Override
public void onPlayerMove(final PlayerMoveEvent event)
{
if (event.isCancelled())
{
return;
}
final User user = ess.getUser(event.getPlayer());
if (user.isAfk() && ess.getSettings().getFreezeAfkPlayers())
{
final Location from = event.getFrom();
final Location to = event.getTo().clone();
to.setX(from.getX());
to.setY(from.getY());
to.setZ(from.getZ());
try
{
event.setTo(Util.getSafeDestination(to));
}
catch (Exception ex)
{
event.setTo(to);
}
return;
}
final Location afk = user.getAfkPosition();
if (afk == null || !event.getTo().getWorld().equals(afk.getWorld()) || afk.distanceSquared(event.getTo()) > 9)
{
user.updateActivity(true);
}
}
@Override
public void onPlayerQuit(final PlayerQuitEvent event)
{
final User user = ess.getUser(event.getPlayer());
if (ess.getSettings().removeGodOnDisconnect() && user.isGodModeEnabled())
{
user.toggleGodModeEnabled();
}
if (user.getSavedInventory() != null)
{
user.getInventory().setContents(user.getSavedInventory());
user.setSavedInventory(null);
}
user.updateActivity(false);
user.dispose();
if (!ess.getSettings().getReclaimSetting())
{
return;
}
final Thread thread = new Thread(new Runnable()
{
public void run()
{
try
{
Thread.sleep(1000);
Runtime rt = Runtime.getRuntime();
double mem = rt.freeMemory();
rt.runFinalization();
rt.gc();
mem = rt.freeMemory() - mem;
mem /= 1024 * 1024;
LOGGER.log(Level.INFO, Util.format("freedMemory", mem));
}
catch (InterruptedException ex)
{
return;
}
}
});
thread.setPriority(Thread.MIN_PRIORITY);
thread.start();
}
@Override
public void onPlayerJoin(final PlayerJoinEvent event)
{
ess.getBackup().onPlayerJoin();
final User user = ess.getUser(event.getPlayer());
if (ess.getSettings().changeDisplayName())
{
user.setDisplayNick(user.getNick());
}
user.updateActivity(false);
if (user.isAuthorized("essentials.sleepingignored"))
{
user.setSleepingIgnored(true);
}
if (!ess.getSettings().isCommandDisabled("motd") && user.isAuthorized("essentials.motd"))
{
for (String m : ess.getMotd(user, null))
{
if (m == null)
{
continue;
}
user.sendMessage(m);
}
}
if (!ess.getSettings().isCommandDisabled("mail") && user.isAuthorized("essentials.mail"))
{
final List<String> mail = user.getMails();
if (mail.isEmpty())
{
user.sendMessage(Util.i18n("noNewMail"));
}
else
{
user.sendMessage(Util.format("youHaveNewMail", mail.size()));
}
}
}
@Override
public void onPlayerLogin(final PlayerLoginEvent event)
{
if (event.getResult() != Result.ALLOWED && event.getResult() != Result.KICK_FULL && event.getResult() != Result.KICK_BANNED)
{
LOGGER.log(Level.INFO, "Disconnecting user " + event.getPlayer().toString() + " due to " + event.getResult().toString());
return;
}
User user = ess.getUser(event.getPlayer());
user.setNPC(false);
final long currentTime = System.currentTimeMillis();
boolean banExpired = user.checkBanTimeout(currentTime);
user.checkMuteTimeout(currentTime);
user.checkJailTimeout(currentTime);
if (banExpired == false && (user.isBanned() || event.getResult() == Result.KICK_BANNED))
{
final String banReason = user.getBanReason();
event.disallow(Result.KICK_BANNED, banReason != null && !banReason.isEmpty() && !banReason.equalsIgnoreCase("ban") ? banReason : Util.i18n("defaultBanReason"));
return;
}
if (server.getOnlinePlayers().length >= server.getMaxPlayers() && !user.isAuthorized("essentials.joinfullserver"))
{
event.disallow(Result.KICK_FULL, Util.i18n("serverFull"));
return;
}
event.allow();
user.setLastLogin(System.currentTimeMillis());
updateCompass(user);
}
private void updateCompass(final User user)
{
try
{
user.setCompassTarget(user.getHome(user.getLocation()));
}
catch (Exception ex)
{
}
}
@Override
public void onPlayerTeleport(PlayerTeleportEvent event)
{
if (event.isCancelled())
{
return;
}
final User user = ess.getUser(event.getPlayer());
if (ess.getSettings().changeDisplayName())
{
user.setDisplayNick(user.getNick());
}
updateCompass(user);
}
@Override
public void onPlayerInteract(final PlayerInteractEvent event)
{
if (event.isCancelled())
{
return;
}
if (event.getAction() != Action.RIGHT_CLICK_BLOCK)
{
return;
}
if (ess.getSettings().getBedSetsHome() && event.getClickedBlock().getType() == Material.BED_BLOCK)
{
try
{
final User user = ess.getUser(event.getPlayer());
user.setHome();
user.sendMessage(Util.i18n("homeSetToBed"));
}
catch (Throwable ex)
{
}
}
}
@Override
public void onPlayerEggThrow(final PlayerEggThrowEvent event)
{
final User user = ess.getUser(event.getPlayer());
final ItemStack is = new ItemStack(Material.EGG, 1);
if (user.hasUnlimited(is))
{
user.getInventory().addItem(is);
user.updateInventory();
}
}
@Override
public void onPlayerBucketEmpty(final PlayerBucketEmptyEvent event)
{
final User user = ess.getUser(event.getPlayer());
if (user.hasUnlimited(new ItemStack(event.getBucket())))
{
event.getItemStack().setType(event.getBucket());
ess.scheduleSyncDelayedTask(new Runnable()
{
public void run()
{
user.updateInventory();
}
});
}
}
@Override
public void onPlayerAnimation(final PlayerAnimationEvent event)
{
usePowertools(event);
}
private void usePowertools(final PlayerAnimationEvent event)
{
if (event.getAnimationType() != PlayerAnimationType.ARM_SWING)
{
return;
}
final User user = ess.getUser(event.getPlayer());
final ItemStack is = user.getItemInHand();
if (is == null || is.getType() == Material.AIR || !user.arePowerToolsEnabled())
{
return;
}
final List<String> commandList = user.getPowertool(is);
if (commandList == null || commandList.isEmpty())
{
return;
}
// We need to loop through each command and execute
for (String command : commandList)
{
if (command.matches(".*\\{player\\}.*"))
{
//user.sendMessage("Click a player to use this command");
continue;
}
else if (command.startsWith("c:"))
{
for (Player p : server.getOnlinePlayers())
{
p.sendMessage(user.getDisplayName() + ":" + command.substring(2));
}
}
else
{
user.getServer().dispatchCommand(event.getPlayer(), command);
}
}
}
@Override
public void onPlayerCommandPreprocess(final PlayerCommandPreprocessEvent event)
{
if (event.isCancelled())
{
return;
}
final User user = ess.getUser(event.getPlayer());
final String cmd = event.getMessage().toLowerCase().split(" ")[0].replace("/", "").toLowerCase();
final List<String> commands = Arrays.asList("msg", "r", "mail", "m", "t", "emsg", "tell", "er", "reply", "ereply", "email");
if (commands.contains(cmd))
{
for (Player player : ess.getServer().getOnlinePlayers())
{
User spyer = ess.getUser(player);
if (spyer.isSocialSpyEnabled() && !user.equals(spyer))
{
player.sendMessage(user.getDisplayName() + " : " + event.getMessage());
}
}
}
if (!cmd.equalsIgnoreCase("afk"))
{
user.updateActivity(true);
}
}
@Override
public void onPlayerBedEnter(PlayerBedEnterEvent event)
{
if (event.isCancelled()) {
return;
}
if (event.getPlayer().isSleepingIgnored()) {
event.setCancelled(true);
event.getPlayer().sendMessage("You can't go to bed, your sleep is ignored.");
}
}
}

View File

@@ -1,48 +0,0 @@
package com.earth2me.essentials;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.event.server.PluginDisableEvent;
import org.bukkit.event.server.PluginEnableEvent;
import org.bukkit.event.server.ServerListener;
public class EssentialsPluginListener extends ServerListener implements IConf
{
private final transient IEssentials ess;
private static final Logger LOGGER = Logger.getLogger("Minecraft");
public EssentialsPluginListener(final IEssentials ess)
{
this.ess = ess;
}
@Override
public void onPluginEnable(final PluginEnableEvent event)
{
ess.getPermissionsHandler().checkPermissions();
if (!ess.getPaymentMethod().hasMethod() && ess.getPaymentMethod().setMethod(ess.getServer().getPluginManager()))
{
LOGGER.log(Level.INFO, "[Essentials] Payment method found (" + ess.getPaymentMethod().getMethod().getName() + " version: " + ess.getPaymentMethod().getMethod().getVersion() + ")");
}
}
@Override
public void onPluginDisable(final PluginDisableEvent event)
{
ess.getPermissionsHandler().checkPermissions();
// Check to see if the plugin thats being disabled is the one we are using
if (ess.getPaymentMethod() != null && ess.getPaymentMethod().hasMethod() && ess.getPaymentMethod().checkDisabled(event.getPlugin()))
{
ess.getPaymentMethod().reset();
LOGGER.log(Level.INFO, "[Essentials] Payment method was disabled. No longer accepting payments.");
}
}
@Override
public void reloadConfig()
{
ess.getPermissionsHandler().setUseSuperperms(ess.getSettings().useBukkitPermissions());
ess.getPermissionsHandler().checkPermissions();
}
}

View File

@@ -1,45 +0,0 @@
package com.earth2me.essentials;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import org.bukkit.entity.Player;
public class EssentialsTimer implements Runnable
{
private final transient IEssentials ess;
private final transient Set<User> onlineUsers = new HashSet<User>();
EssentialsTimer(final IEssentials ess)
{
this.ess = ess;
}
@Override
public void run()
{
final long currentTime = System.currentTimeMillis();
for (Player player : ess.getServer().getOnlinePlayers())
{
final User user = ess.getUser(player);
onlineUsers.add(user);
user.setLastOnlineActivity(currentTime);
user.checkActivity();
}
final Iterator<User> iterator = onlineUsers.iterator();
while (iterator.hasNext())
{
final User user = iterator.next();
if (user.getLastOnlineActivity() < currentTime && user.getLastOnlineActivity() > user.getLastLogout())
{
user.setLastLogout(user.getLastOnlineActivity());
iterator.remove();
continue;
}
user.checkMuteTimeout(currentTime);
user.checkJailTimeout(currentTime);
}
}
}

View File

@@ -1,84 +0,0 @@
package com.earth2me.essentials;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.bukkit.entity.Player;
class EssentialsUpdateTimer implements Runnable
{
private transient URL url;
private final transient IEssentials ess;
private static final Logger LOGGER = Logger.getLogger("Minecraft");
private final transient Pattern pattern = Pattern.compile("git-Bukkit-([0-9]+).([0-9]+).([0-9]+)-[0-9]+-[0-9a-z]+-b([0-9]+)jnks.*");
public EssentialsUpdateTimer(final IEssentials ess)
{
this.ess = ess;
try
{
url = new URL("http://essentialsupdate.appspot.com/check");
}
catch (MalformedURLException ex)
{
LOGGER.log(Level.SEVERE, "Invalid url!", ex);
}
}
@Override
public void run()
{
try
{
final StringBuilder builder = new StringBuilder();
String bukkitVersion = ess.getServer().getVersion();
final Matcher versionMatch = pattern.matcher(bukkitVersion);
if (versionMatch.matches())
{
bukkitVersion = versionMatch.group(4);
}
builder.append("v=").append(URLEncoder.encode(ess.getDescription().getVersion(), "UTF-8"));
builder.append("&b=").append(URLEncoder.encode(bukkitVersion, "UTF-8"));
final URLConnection conn = url.openConnection();
conn.setConnectTimeout(10000);
conn.setDoOutput(true);
conn.connect();
final OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
writer.write(builder.toString());
writer.flush();
final BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
final String ret = reader.readLine();
writer.close();
reader.close();
if (!ret.isEmpty() && !ret.equalsIgnoreCase("OK"))
{
LOGGER.log(Level.INFO, "Essentials Update-Check: " + ret);
if (ret.startsWith("New Version"))
{
for (Player player : ess.getServer().getOnlinePlayers())
{
final User user = ess.getUser(player);
if (user.isAuthorized("essentials.admin.notices.update"))
{
user.sendMessage(ret);
}
}
}
}
}
catch (IOException ex)
{
LOGGER.log(Level.SEVERE, "Failed to open connection", ex);
}
}
}

View File

@@ -1,669 +0,0 @@
package com.earth2me.essentials;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigInteger;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.inventory.ItemStack;
public class EssentialsUpgrade
{
private final static Logger LOGGER = Logger.getLogger("Minecraft");
private final transient IEssentials ess;
private final transient EssentialsConf doneFile;
EssentialsUpgrade(final IEssentials essentials)
{
ess = essentials;
if (!ess.getDataFolder().exists())
{
ess.getDataFolder().mkdirs();
}
doneFile = new EssentialsConf(new File(ess.getDataFolder(), "upgrades-done.yml"));
doneFile.load();
}
private void moveWorthValuesToWorthYml()
{
if (doneFile.getBoolean("moveWorthValuesToWorthYml", false))
{
return;
}
try
{
final File configFile = new File(ess.getDataFolder(), "config.yml");
if (!configFile.exists())
{
return;
}
final EssentialsConf conf = new EssentialsConf(configFile);
conf.load();
final Worth worth = new Worth(ess.getDataFolder());
boolean found = false;
for (Material mat : Material.values())
{
final int id = mat.getId();
final double value = conf.getDouble("worth-" + id, Double.NaN);
if (!Double.isNaN(value))
{
found = true;
worth.setPrice(new ItemStack(mat, 1, (short)0, (byte)0), value);
}
}
if (found)
{
removeLinesFromConfig(configFile, "\\s*#?\\s*worth-[0-9]+.*", "# Worth values have been moved to worth.yml");
}
doneFile.setProperty("moveWorthValuesToWorthYml", true);
doneFile.save();
}
catch (Throwable e)
{
LOGGER.log(Level.SEVERE, Util.i18n("upgradingFilesError"), e);
}
}
private void removeLinesFromConfig(File file, String regex, String info) throws Exception
{
boolean needUpdate = false;
final BufferedReader bReader = new BufferedReader(new FileReader(file));
final File tempFile = File.createTempFile("essentialsupgrade", ".tmp.yml", ess.getDataFolder());
final BufferedWriter bWriter = new BufferedWriter(new FileWriter(tempFile));
do
{
final String line = bReader.readLine();
if (line == null)
{
break;
}
if (line.matches(regex))
{
if (!needUpdate && info != null)
{
bWriter.write(info, 0, info.length());
bWriter.newLine();
}
needUpdate = true;
}
else
{
if (line.endsWith("\r\n"))
{
bWriter.write(line, 0, line.length() - 2);
}
else if (line.endsWith("\r") || line.endsWith("\n"))
{
bWriter.write(line, 0, line.length() - 1);
}
else
{
bWriter.write(line, 0, line.length());
}
bWriter.newLine();
}
}
while (true);
bReader.close();
bWriter.close();
if (needUpdate)
{
if (!file.renameTo(new File(file.getParentFile(), file.getName().concat("." + System.currentTimeMillis() + ".upgradebackup"))))
{
throw new Exception(Util.i18n("configFileMoveError"));
}
if (!tempFile.renameTo(file))
{
throw new Exception(Util.i18n("configFileRenameError"));
}
}
else
{
tempFile.delete();
}
}
private void updateUsersToNewDefaultHome()
{
if (doneFile.getBoolean("updateUsersToNewDefaultHome", false))
{
return;
}
final File userdataFolder = new File(ess.getDataFolder(), "userdata");
if (!userdataFolder.exists() || !userdataFolder.isDirectory())
{
return;
}
final File[] userFiles = userdataFolder.listFiles();
for (File file : userFiles)
{
if (!file.isFile() || !file.getName().endsWith(".yml"))
{
continue;
}
final EssentialsConf config = new EssentialsConf(file);
try
{
config.load();
if (config.hasProperty("home") && !config.hasProperty("home.default"))
{
@SuppressWarnings("unchecked")
final List<Object> vals = (List<Object>)config.getProperty("home");
if (vals == null)
{
continue;
}
World world = ess.getServer().getWorlds().get(0);
if (vals.size() > 5)
{
world = ess.getServer().getWorld((String)vals.get(5));
}
if (world != null)
{
final Location loc = new Location(
world,
((Number)vals.get(0)).doubleValue(),
((Number)vals.get(1)).doubleValue(),
((Number)vals.get(2)).doubleValue(),
((Number)vals.get(3)).floatValue(),
((Number)vals.get(4)).floatValue());
final String worldName = world.getName().toLowerCase();
if (worldName != null && !worldName.isEmpty())
{
config.removeProperty("home");
config.setProperty("home.default", worldName);
config.setProperty("home.worlds." + worldName, loc);
config.save();
}
}
}
}
catch (RuntimeException ex)
{
LOGGER.log(Level.INFO, "File: " + file.toString());
throw ex;
}
}
doneFile.setProperty("updateUsersToNewDefaultHome", true);
doneFile.save();
}
private void updateUsersPowerToolsFormat()
{
if (doneFile.getBoolean("updateUsersPowerToolsFormat", false))
{
return;
}
final File userdataFolder = new File(ess.getDataFolder(), "userdata");
if (!userdataFolder.exists() || !userdataFolder.isDirectory())
{
return;
}
final File[] userFiles = userdataFolder.listFiles();
for (File file : userFiles)
{
if (!file.isFile() || !file.getName().endsWith(".yml"))
{
continue;
}
final EssentialsConf config = new EssentialsConf(file);
try
{
config.load();
if (config.hasProperty("powertools"))
{
@SuppressWarnings("unchecked")
final Map<Integer, Object> powertools = (Map<Integer, Object>)config.getProperty("powertools");
if (powertools == null)
{
continue;
}
for (Map.Entry<Integer, Object> entry : powertools.entrySet())
{
if (entry.getValue() instanceof String)
{
List<String> temp = new ArrayList<String>();
temp.add((String)entry.getValue());
((Map<Integer, Object>)powertools).put(entry.getKey(), temp);
}
}
config.save();
}
}
catch (RuntimeException ex)
{
LOGGER.log(Level.INFO, "File: " + file.toString());
throw ex;
}
}
doneFile.setProperty("updateUsersPowerToolsFormat", true);
doneFile.save();
}
private void updateUsersHomesFormat()
{
if (doneFile.getBoolean("updateUsersHomesFormat", false))
{
return;
}
final File userdataFolder = new File(ess.getDataFolder(), "userdata");
if (!userdataFolder.exists() || !userdataFolder.isDirectory())
{
return;
}
final File[] userFiles = userdataFolder.listFiles();
for (File file : userFiles)
{
if (!file.isFile() || !file.getName().endsWith(".yml"))
{
continue;
}
final EssentialsConf config = new EssentialsConf(file);
try
{
config.load();
if (config.hasProperty("home") && config.hasProperty("home.default"))
{
@SuppressWarnings("unchecked")
final String defworld = (String)config.getProperty("home.default");
final Location defloc = getFakeLocation(config, "home.worlds." + defworld);
if (defloc != null)
{
config.setProperty("homes.home", defloc);
}
List<String> worlds = config.getKeys("home.worlds");
Location loc;
String worldName;
if (worlds == null)
{
continue;
}
for (String world : worlds)
{
if (defworld.equalsIgnoreCase(world))
{
continue;
}
loc = getFakeLocation(config, "home.worlds." + world);
if (loc == null)
{
continue;
}
worldName = loc.getWorld().getName().toLowerCase();
if (worldName != null && !worldName.isEmpty())
{
config.setProperty("homes." + worldName, loc);
}
}
config.removeProperty("home");
config.save();
}
}
catch (RuntimeException ex)
{
LOGGER.log(Level.INFO, "File: " + file.toString());
throw ex;
}
}
doneFile.setProperty("updateUsersHomesFormat", true);
doneFile.save();
}
private void moveUsersDataToUserdataFolder()
{
final File usersFile = new File(ess.getDataFolder(), "users.yml");
if (!usersFile.exists())
{
return;
}
final EssentialsConf usersConfig = new EssentialsConf(usersFile);
usersConfig.load();
for (String username : usersConfig.getKeys(null))
{
final User user = new User(new OfflinePlayer(username, ess), ess);
final String nickname = usersConfig.getString(username + ".nickname");
if (nickname != null && !nickname.isEmpty() && !nickname.equals(username))
{
user.setNickname(nickname);
}
final List<String> mails = usersConfig.getStringList(username + ".mail", null);
if (mails != null && !mails.isEmpty())
{
user.setMails(mails);
}
if (!user.hasHome())
{
@SuppressWarnings("unchecked")
final List<Object> vals = (List<Object>)usersConfig.getProperty(username + ".home");
if (vals != null)
{
World world = ess.getServer().getWorlds().get(0);
if (vals.size() > 5)
{
world = getFakeWorld((String)vals.get(5));
}
if (world != null)
{
user.setHome("home", new Location(world,
((Number)vals.get(0)).doubleValue(),
((Number)vals.get(1)).doubleValue(),
((Number)vals.get(2)).doubleValue(),
((Number)vals.get(3)).floatValue(),
((Number)vals.get(4)).floatValue()));
}
}
}
}
usersFile.renameTo(new File(usersFile.getAbsolutePath() + ".old"));
}
private void convertWarps()
{
final File warpsFolder = new File(ess.getDataFolder(), "warps");
if (!warpsFolder.exists())
{
warpsFolder.mkdirs();
}
final File[] listOfFiles = warpsFolder.listFiles();
if (listOfFiles.length >= 1)
{
for (int i = 0; i < listOfFiles.length; i++)
{
final String filename = listOfFiles[i].getName();
if (listOfFiles[i].isFile() && filename.endsWith(".dat"))
{
try
{
final BufferedReader rx = new BufferedReader(new FileReader(listOfFiles[i]));
double x, y, z;
float yaw, pitch;
String worldName;
try
{
if (!rx.ready())
{
continue;
}
x = Double.parseDouble(rx.readLine().trim());
if (!rx.ready())
{
continue;
}
y = Double.parseDouble(rx.readLine().trim());
if (!rx.ready())
{
continue;
}
z = Double.parseDouble(rx.readLine().trim());
if (!rx.ready())
{
continue;
}
yaw = Float.parseFloat(rx.readLine().trim());
if (!rx.ready())
{
continue;
}
pitch = Float.parseFloat(rx.readLine().trim());
worldName = rx.readLine();
}
finally
{
rx.close();
}
World w = null;
for (World world : ess.getServer().getWorlds())
{
if (world.getEnvironment() != World.Environment.NETHER)
{
w = world;
break;
}
}
if (worldName != null)
{
worldName = worldName.trim();
World w1 = null;
w1 = getFakeWorld(worldName);
if (w1 != null)
{
w = w1;
}
}
final Location loc = new Location(w, x, y, z, yaw, pitch);
ess.getWarps().setWarp(filename.substring(0, filename.length() - 4), loc);
if (!listOfFiles[i].renameTo(new File(warpsFolder, filename + ".old")))
{
throw new Exception(Util.format("fileRenameError", filename));
}
}
catch (Exception ex)
{
LOGGER.log(Level.SEVERE, null, ex);
}
}
}
}
final File warpFile = new File(ess.getDataFolder(), "warps.txt");
if (warpFile.exists())
{
try
{
final BufferedReader rx = new BufferedReader(new FileReader(warpFile));
try
{
for (String[] parts = new String[0]; rx.ready(); parts = rx.readLine().split(":"))
{
if (parts.length < 6)
{
continue;
}
final String name = parts[0];
final double x = Double.parseDouble(parts[1].trim());
final double y = Double.parseDouble(parts[2].trim());
final double z = Double.parseDouble(parts[3].trim());
final float yaw = Float.parseFloat(parts[4].trim());
final float pitch = Float.parseFloat(parts[5].trim());
if (name.isEmpty())
{
continue;
}
World w = null;
for (World world : ess.getServer().getWorlds())
{
if (world.getEnvironment() != World.Environment.NETHER)
{
w = world;
break;
}
}
final Location loc = new Location(w, x, y, z, yaw, pitch);
ess.getWarps().setWarp(name, loc);
if (!warpFile.renameTo(new File(ess.getDataFolder(), "warps.txt.old")))
{
throw new Exception(Util.format("fileRenameError", "warps.txt"));
}
}
}
finally
{
rx.close();
}
}
catch (Exception ex)
{
LOGGER.log(Level.SEVERE, null, ex);
}
}
}
private void sanitizeAllUserFilenames()
{
if (doneFile.getBoolean("sanitizeAllUserFilenames", false))
{
return;
}
final File usersFolder = new File(ess.getDataFolder(), "userdata");
if (!usersFolder.exists())
{
return;
}
final File[] listOfFiles = usersFolder.listFiles();
for (int i = 0; i < listOfFiles.length; i++)
{
final String filename = listOfFiles[i].getName();
if (!listOfFiles[i].isFile() || !filename.endsWith(".yml"))
{
continue;
}
final String sanitizedFilename = Util.sanitizeFileName(filename.substring(0, filename.length() - 4)) + ".yml";
if (sanitizedFilename.equals(filename))
{
continue;
}
final File tmpFile = new File(listOfFiles[i].getParentFile(), sanitizedFilename + ".tmp");
final File newFile = new File(listOfFiles[i].getParentFile(), sanitizedFilename);
if (!listOfFiles[i].renameTo(tmpFile))
{
LOGGER.log(Level.WARNING, Util.format("userdataMoveError", filename, sanitizedFilename));
continue;
}
if (newFile.exists())
{
LOGGER.log(Level.WARNING, Util.format("duplicatedUserdata", filename, sanitizedFilename));
continue;
}
if (!tmpFile.renameTo(newFile))
{
LOGGER.log(Level.WARNING, Util.format("userdataMoveBackError", sanitizedFilename, sanitizedFilename));
}
}
doneFile.setProperty("sanitizeAllUserFilenames", true);
doneFile.save();
}
private World getFakeWorld(final String name)
{
final File bukkitDirectory = ess.getDataFolder().getParentFile().getParentFile();
final File worldDirectory = new File(bukkitDirectory, name);
if (worldDirectory.exists() && worldDirectory.isDirectory())
{
return new FakeWorld(worldDirectory.getName(), World.Environment.NORMAL);
}
return null;
}
public Location getFakeLocation(EssentialsConf config, String path)
{
String worldName = config.getString((path != null ? path + "." : "") + "world");
if (worldName == null || worldName.isEmpty())
{
return null;
}
World world = getFakeWorld(worldName);
if (world == null)
{
return null;
}
return new Location(world,
config.getDouble((path != null ? path + "." : "") + "x", 0),
config.getDouble((path != null ? path + "." : "") + "y", 0),
config.getDouble((path != null ? path + "." : "") + "z", 0),
(float)config.getDouble((path != null ? path + "." : "") + "yaw", 0),
(float)config.getDouble((path != null ? path + "." : "") + "pitch", 0));
}
private void deleteOldItemsCsv()
{
if (doneFile.getBoolean("deleteOldItemsCsv", false))
{
return;
}
final File file = new File(ess.getDataFolder(), "items.csv");
if (file.exists())
{
try
{
final Set<BigInteger> oldconfigs = new HashSet<BigInteger>();
oldconfigs.add(new BigInteger("66ec40b09ac167079f558d1099e39f10", 16)); // sep 1
oldconfigs.add(new BigInteger("34284de1ead43b0bee2aae85e75c041d", 16)); // crlf
oldconfigs.add(new BigInteger("c33bc9b8ee003861611bbc2f48eb6f4f", 16)); // jul 24
oldconfigs.add(new BigInteger("6ff17925430735129fc2a02f830c1daa", 16)); // crlf
MessageDigest digest = ManagedFile.getDigest();
final BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
final DigestInputStream dis = new DigestInputStream(bis, digest);
final byte[] buffer = new byte[1024];
try
{
while (dis.read(buffer) != -1)
{
}
}
finally
{
dis.close();
}
BigInteger hash = new BigInteger(1, digest.digest());
if (oldconfigs.contains(hash) && !file.delete())
{
throw new IOException("Could not delete file " + file.toString());
}
doneFile.setProperty("deleteOldItemsCsv", true);
doneFile.save();
}
catch (IOException ex)
{
Bukkit.getLogger().log(Level.SEVERE, ex.getMessage(), ex);
}
}
}
public void beforeSettings()
{
if (!ess.getDataFolder().exists())
{
ess.getDataFolder().mkdirs();
}
moveWorthValuesToWorthYml();
}
public void afterSettings()
{
sanitizeAllUserFilenames();
updateUsersToNewDefaultHome();
moveUsersDataToUserdataFolder();
convertWarps();
updateUsersPowerToolsFormat();
updateUsersHomesFormat();
deleteOldItemsCsv();
}
}

View File

@@ -1,190 +0,0 @@
package com.earth2me.essentials;
import java.util.HashMap;
import org.bukkit.Material;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
public class FakeInventory implements Inventory
{
ItemStack[] items;
public FakeInventory(ItemStack[] items)
{
this.items = new ItemStack[items.length];
for (int i = 0; i < items.length; i++)
{
if (items[i] == null)
{
continue;
}
this.items[i] = new ItemStack(items[i].getTypeId(), items[i].getAmount(), items[i].getDurability());
}
}
@Override
public int getSize()
{
return items.length;
}
@Override
public String getName()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public ItemStack getItem(int i)
{
return items[i];
}
@Override
public void setItem(int i, ItemStack is)
{
items[i] = is;
}
@Override
public HashMap<Integer, ItemStack> addItem(ItemStack... iss)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public HashMap<Integer, ItemStack> removeItem(ItemStack... iss)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public ItemStack[] getContents()
{
return items;
}
@Override
public void setContents(ItemStack[] iss)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean contains(int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean contains(Material mtrl)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean contains(ItemStack is)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean contains(int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean contains(Material mtrl, int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean contains(ItemStack is, int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public HashMap<Integer, ? extends ItemStack> all(int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public HashMap<Integer, ? extends ItemStack> all(Material mtrl)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public HashMap<Integer, ? extends ItemStack> all(ItemStack is)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int first(int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int first(Material mtrl)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int first(ItemStack is)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int firstEmpty()
{
for (int i = 0; i < items.length; i++)
{
if (items[i] == null || items[i].getTypeId() == 0) {
return i;
}
}
return -1;
}
@Override
public void remove(int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void remove(Material mtrl)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void remove(ItemStack is)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void clear(int i)
{
items[i] = null;
}
@Override
public void clear()
{
for (int i = 0; i < items.length; i++)
{
items[i] = null;
}
}
}

View File

@@ -1,458 +0,0 @@
package com.earth2me.essentials;
import java.util.List;
import java.util.UUID;
import org.bukkit.BlockChangeDelegate;
import org.bukkit.Chunk;
import org.bukkit.ChunkSnapshot;
import org.bukkit.Difficulty;
import org.bukkit.Effect;
import org.bukkit.Location;
import org.bukkit.TreeType;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.block.Block;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.CreatureType;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Item;
import org.bukkit.entity.LightningStrike;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.generator.BlockPopulator;
import org.bukkit.generator.ChunkGenerator;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
public class FakeWorld implements World
{
private final String name;
private final Environment env;
FakeWorld(String string, Environment environment)
{
this.name = string;
this.env = environment;
}
public Block getBlockAt(int i, int i1, int i2)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Block getBlockAt(Location lctn)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public int getBlockTypeIdAt(int i, int i1, int i2)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public int getBlockTypeIdAt(Location lctn)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public int getHighestBlockYAt(int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public int getHighestBlockYAt(Location lctn)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Chunk getChunkAt(int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Chunk getChunkAt(Location lctn)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Chunk getChunkAt(Block block)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean isChunkLoaded(Chunk chunk)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Chunk[] getLoadedChunks()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void loadChunk(Chunk chunk)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean isChunkLoaded(int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void loadChunk(int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean loadChunk(int i, int i1, boolean bln)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean unloadChunk(int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean unloadChunk(int i, int i1, boolean bln)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean unloadChunk(int i, int i1, boolean bln, boolean bln1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean unloadChunkRequest(int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean unloadChunkRequest(int i, int i1, boolean bln)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean regenerateChunk(int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean refreshChunk(int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Item dropItem(Location lctn, ItemStack is)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Item dropItemNaturally(Location lctn, ItemStack is)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Arrow spawnArrow(Location lctn, Vector vector, float f, float f1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean generateTree(Location lctn, TreeType tt)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean generateTree(Location lctn, TreeType tt, BlockChangeDelegate bcd)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public LivingEntity spawnCreature(Location lctn, CreatureType ct)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public LightningStrike strikeLightning(Location lctn)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public LightningStrike strikeLightningEffect(Location lctn)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public List<Entity> getEntities()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public List<LivingEntity> getLivingEntities()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public List<Player> getPlayers()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public String getName()
{
return name;
}
public long getId()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Location getSpawnLocation()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean setSpawnLocation(int i, int i1, int i2)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public long getTime()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void setTime(long l)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public long getFullTime()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void setFullTime(long l)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean hasStorm()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void setStorm(boolean bln)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public int getWeatherDuration()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void setWeatherDuration(int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean isThundering()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void setThundering(boolean bln)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public int getThunderDuration()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void setThunderDuration(int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Environment getEnvironment()
{
return env;
}
public long getSeed()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean getPVP()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void setPVP(boolean bln)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void save()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean createExplosion(double d, double d1, double d2, float f)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean createExplosion(Location lctn, float f)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public ChunkGenerator getGenerator()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public List<BlockPopulator> getPopulators()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void playEffect(Location lctn, Effect effect, int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void playEffect(Location lctn, Effect effect, int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean createExplosion(double d, double d1, double d2, float f, boolean bln)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean createExplosion(Location lctn, float f, boolean bln)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public <T extends Entity> T spawn(Location lctn, Class<T> type) throws IllegalArgumentException
{
throw new UnsupportedOperationException("Not supported yet.");
}
public ChunkSnapshot getEmptyChunkSnapshot(int i, int i1, boolean bln, boolean bln1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void setSpawnFlags(boolean bln, boolean bln1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean getAllowAnimals()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean getAllowMonsters()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public UUID getUID()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Block getHighestBlockAt(int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Block getHighestBlockAt(Location lctn)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Biome getBiome(int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public double getTemperature(int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public double getHumidity(int i, int i1)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean unloadChunk(Chunk chunk)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getMaxHeight()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean getKeepSpawnInMemory()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setKeepSpawnInMemory(boolean bln)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean isAutoSave()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setAutoSave(boolean bln)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Difficulty getDifficulty()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setDifficulty(Difficulty difficulty)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getSeaLevel()
{
throw new UnsupportedOperationException("Not supported yet.");
}
}

View File

@@ -1,5 +0,0 @@
package com.earth2me.essentials;
public interface IConf {
public void reloadConfig();
}

View File

@@ -1,65 +0,0 @@
package com.earth2me.essentials;
import com.earth2me.essentials.perm.PermissionsHandler;
import com.earth2me.essentials.register.payment.Methods;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitScheduler;
public interface IEssentials extends Plugin
{
void addReloadListener(IConf listener);
void reload();
boolean onCommandEssentials(CommandSender sender, Command command, String commandLabel, String[] args, ClassLoader classLoader, String commandPath, String permissionPrefix);
User getUser(Object base);
User getOfflineUser(String name);
World getWorld(String name);
int broadcastMessage(IUser sender, String message);
ISettings getSettings();
BukkitScheduler getScheduler();
String[] getMotd(CommandSender sender, String def);
String[] getLines(CommandSender sender, String node, String def);
Jail getJail();
Warps getWarps();
Worth getWorth();
Backup getBackup();
Spawn getSpawn();
Methods getPaymentMethod();
int scheduleAsyncDelayedTask(Runnable run);
int scheduleSyncDelayedTask(Runnable run);
int scheduleSyncDelayedTask(Runnable run, long delay);
int scheduleSyncRepeatingTask(final Runnable run, long delay, long period);
TNTExplodeListener getTNTListener();
PermissionsHandler getPermissionsHandler();
void showError(final CommandSender sender, final Throwable exception, final String commandLabel);
ItemDb getItemDb();
UserMap getUserMap();
}

View File

@@ -1,9 +0,0 @@
package com.earth2me.essentials;
import org.bukkit.command.CommandSender;
public interface IReplyTo {
public void setReplyTo(CommandSender user);
public CommandSender getReplyTo();
}

View File

@@ -1,59 +0,0 @@
package com.earth2me.essentials;
import com.earth2me.essentials.commands.IEssentialsCommand;
import java.net.InetSocketAddress;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.inventory.PlayerInventory;
public interface IUser
{
int getHealth();
Location getLocation();
boolean isOnline();
void sendMessage(String string);
long getLastTeleportTimestamp();
boolean isAuthorized(String node);
boolean isAuthorized(IEssentialsCommand cmd);
boolean isAuthorized(IEssentialsCommand cmd, String permissionPrefix);
void setLastTeleportTimestamp(long time);
Location getLastLocation();
Player getBase();
double getMoney();
void takeMoney(double value);
void giveMoney(double value);
PlayerInventory getInventory();
void updateInventory();
String getGroup();
void setLastLocation();
Location getHome(String name) throws Exception;
Location getHome(Location loc) throws Exception;
String getName();
InetSocketAddress getAddress();
String getDisplayName();
boolean isHidden();
}

View File

@@ -1,332 +0,0 @@
package com.earth2me.essentials;
import java.util.HashMap;
import java.util.Map;
import org.bukkit.Location;
import org.bukkit.entity.Item;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
/*
* This class can be removed when
* https://github.com/Bukkit/CraftBukkit/pull/193
* is accepted to CraftBukkit
*/
public final class InventoryWorkaround
{
private InventoryWorkaround()
{
}
public static int first(final Inventory inventory, final ItemStack item, final boolean forceDurability, final boolean forceAmount)
{
return next(inventory, item, 0, forceDurability, forceAmount);
}
public static int next(final Inventory cinventory, final ItemStack item, final int start, final boolean forceDurability, final boolean forceAmount)
{
final ItemStack[] inventory = cinventory.getContents();
for (int i = start; i < inventory.length; i++)
{
final ItemStack cItem = inventory[i];
if (cItem == null)
{
continue;
}
if (item.getTypeId() == cItem.getTypeId() && (!forceAmount || item.getAmount() == cItem.getAmount()) && (!forceDurability || cItem.getDurability() == item.getDurability()))
{
return i;
}
}
return -1;
}
public static int firstPartial(final Inventory cinventory, final ItemStack item, final boolean forceDurability)
{
if (item == null)
{
return -1;
}
final ItemStack[] inventory = cinventory.getContents();
for (int i = 0; i < inventory.length; i++)
{
final ItemStack cItem = inventory[i];
if (cItem == null)
{
continue;
}
if (item.getTypeId() == cItem.getTypeId() && cItem.getAmount() < cItem.getType().getMaxStackSize() && (!forceDurability || cItem.getDurability() == item.getDurability()))
{
return i;
}
}
return -1;
}
public static boolean addAllItems(final Inventory cinventory, final boolean forceDurability, final ItemStack... items)
{
final Inventory fake = new FakeInventory(cinventory.getContents());
if (addItem(fake, forceDurability, items).isEmpty())
{
addItem(cinventory, forceDurability, items);
return true;
}
else
{
return false;
}
}
public static Map<Integer, ItemStack> addItem(final Inventory cinventory, final boolean forceDurability, final ItemStack... items)
{
final Map<Integer, ItemStack> leftover = new HashMap<Integer, ItemStack>();
/* TODO: some optimization
* - Create a 'firstPartial' with a 'fromIndex'
* - Record the lastPartial per Material
* - Cache firstEmpty result
*/
// combine items
ItemStack[] combined = new ItemStack[items.length];
for (int i = 0; i < items.length; i++)
{
if (items[i] == null || items[i].getAmount() < 1)
{
continue;
}
for (int j = 0; j < combined.length; j++)
{
if (combined[j] == null)
{
combined[j] = new ItemStack(items[i].getType(), items[i].getAmount(), items[i].getDurability());
break;
}
if (combined[j].getTypeId() == items[i].getTypeId() && (!forceDurability || combined[j].getDurability() == items[i].getDurability()))
{
combined[j].setAmount(combined[j].getAmount() + items[i].getAmount());
break;
}
}
}
for (int i = 0; i < combined.length; i++)
{
final ItemStack item = combined[i];
if (item == null)
{
continue;
}
while (true)
{
// Do we already have a stack of it?
final int firstPartial = firstPartial(cinventory, item, forceDurability);
// Drat! no partial stack
if (firstPartial == -1)
{
// Find a free spot!
final int firstFree = cinventory.firstEmpty();
if (firstFree == -1)
{
// No space at all!
leftover.put(i, item);
break;
}
else
{
// More than a single stack!
if (item.getAmount() > item.getType().getMaxStackSize())
{
cinventory.setItem(firstFree, new ItemStack(item.getTypeId(), item.getType().getMaxStackSize(), item.getDurability()));
item.setAmount(item.getAmount() - item.getType().getMaxStackSize());
}
else
{
// Just store it
cinventory.setItem(firstFree, item);
break;
}
}
}
else
{
// So, apparently it might only partially fit, well lets do just that
final ItemStack partialItem = cinventory.getItem(firstPartial);
final int amount = item.getAmount();
final int partialAmount = partialItem.getAmount();
final int maxAmount = partialItem.getType().getMaxStackSize();
// Check if it fully fits
if (amount + partialAmount <= maxAmount)
{
partialItem.setAmount(amount + partialAmount);
break;
}
// It fits partially
partialItem.setAmount(maxAmount);
item.setAmount(amount + partialAmount - maxAmount);
}
}
}
return leftover;
}
public static Map<Integer, ItemStack> removeItem(final Inventory cinventory, final boolean forceDurability, final ItemStack... items)
{
final Map<Integer, ItemStack> leftover = new HashMap<Integer, ItemStack>();
// TODO: optimization
for (int i = 0; i < items.length; i++)
{
final ItemStack item = items[i];
if (item == null)
{
continue;
}
int toDelete = item.getAmount();
while (true)
{
// Bail when done
if (toDelete <= 0)
{
break;
}
// get first Item, ignore the amount
final int first = first(cinventory, item, forceDurability, false);
// Drat! we don't have this type in the inventory
if (first == -1)
{
item.setAmount(toDelete);
leftover.put(i, item);
break;
}
else
{
final ItemStack itemStack = cinventory.getItem(first);
final int amount = itemStack.getAmount();
if (amount <= toDelete)
{
toDelete -= amount;
// clear the slot, all used up
cinventory.clear(first);
}
else
{
// split the stack and store
itemStack.setAmount(amount - toDelete);
cinventory.setItem(first, itemStack);
toDelete = 0;
}
}
}
}
return leftover;
}
public static boolean containsItem(final Inventory cinventory, final boolean forceDurability, final ItemStack... items)
{
final Map<Integer, ItemStack> leftover = new HashMap<Integer, ItemStack>();
// TODO: optimization
// combine items
ItemStack[] combined = new ItemStack[items.length];
for (int i = 0; i < items.length; i++)
{
if (items[i] == null)
{
continue;
}
for (int j = 0; j < combined.length; j++)
{
if (combined[j] == null)
{
combined[j] = new ItemStack(items[i].getType(), items[i].getAmount(), items[i].getDurability());
break;
}
if (combined[j].getTypeId() == items[i].getTypeId() && (!forceDurability || combined[j].getDurability() == items[i].getDurability()))
{
combined[j].setAmount(combined[j].getAmount() + items[i].getAmount());
break;
}
}
}
for (int i = 0; i < combined.length; i++)
{
final ItemStack item = combined[i];
if (item == null)
{
continue;
}
int mustHave = item.getAmount();
int position = 0;
while (true)
{
// Bail when done
if (mustHave <= 0)
{
break;
}
final int slot = next(cinventory, item, position, forceDurability, false);
// Drat! we don't have this type in the inventory
if (slot == -1)
{
leftover.put(i, item);
break;
}
else
{
final ItemStack itemStack = cinventory.getItem(slot);
final int amount = itemStack.getAmount();
if (amount <= mustHave)
{
mustHave -= amount;
}
else
{
mustHave = 0;
}
position = slot + 1;
}
}
}
return leftover.isEmpty();
}
public static Item[] dropItem(final Location loc, final ItemStack itm)
{
final int maxStackSize = itm.getType().getMaxStackSize();
final int stacks = itm.getAmount() / maxStackSize;
final int leftover = itm.getAmount() % maxStackSize;
Item[] itemStacks = new Item[stacks + (leftover > 0 ? 1 : 0)];
for (int i = 0; i < stacks; i++)
{
itemStacks[i] = loc.getWorld().dropItem(loc, new ItemStack(itm.getType(), maxStackSize, itm.getDurability()));
}
if (leftover > 0)
{
itemStacks[stacks] = loc.getWorld().dropItem(loc, new ItemStack(itm.getType(), leftover, itm.getDurability()));
}
return itemStacks;
}
}

View File

@@ -1,118 +0,0 @@
package com.earth2me.essentials;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
public class ItemDb implements IConf
{
private final transient IEssentials ess;
public ItemDb(final IEssentials ess)
{
this.ess = ess;
file = new ManagedFile("items.csv", ess);
}
private final transient Map<String, Integer> items = new HashMap<String, Integer>();
private final transient Map<String, Short> durabilities = new HashMap<String, Short>();
private final transient ManagedFile file;
@Override
public void reloadConfig()
{
final List<String> lines = file.getLines();
if (lines.isEmpty()) {
return;
}
durabilities.clear();
items.clear();
for (String line : lines)
{
line = line.trim().toLowerCase();
if (line.length() > 0 && line.charAt(0) == '#')
{
continue;
}
final String[] parts = line.split("[^a-z0-9]");
if (parts.length < 2)
{
continue;
}
final int numeric = Integer.parseInt(parts[1]);
durabilities.put(parts[0].toLowerCase(), parts.length > 2 && !parts[2].equals("0") ? Short.parseShort(parts[2]) : 0);
items.put(parts[0].toLowerCase(), numeric);
}
}
public ItemStack get(final String id, final int quantity) throws Exception
{
final ItemStack retval = get(id.toLowerCase());
retval.setAmount(quantity);
return retval;
}
public ItemStack get(final String id) throws Exception
{
int itemid = 0;
String itemname = null;
short metaData = 0;
if (id.matches("^\\d+[:+',;.]\\d+$"))
{
itemid = Integer.parseInt(id.split("[:+',;.]")[0]);
metaData = Short.parseShort(id.split("[:+',;.]")[1]);
}
else if (id.matches("^\\d+$"))
{
itemid = Integer.parseInt(id);
}
else if (id.matches("^[^:+',;.]+[:+',;.]\\d+$"))
{
itemname = id.split("[:+',;.]")[0].toLowerCase();
metaData = Short.parseShort(id.split("[:+',;.]")[1]);
}
else
{
itemname = id.toLowerCase();
}
if (itemname != null)
{
if (items.containsKey(itemname))
{
itemid = items.get(itemname);
if (durabilities.containsKey(itemname) && metaData == 0)
{
metaData = durabilities.get(itemname);
}
}
else if (Material.getMaterial(itemname) != null)
{
itemid = Material.getMaterial(itemname).getId();
metaData = 0;
}
else
{
throw new Exception(Util.format("unknownItemName", id));
}
}
final Material mat = Material.getMaterial(itemid);
if (mat == null)
{
throw new Exception(Util.format("unknownItemId", itemid));
}
final ItemStack retval = new ItemStack(mat);
retval.setAmount(ess.getSettings().getDefaultStackSize());
retval.setDurability(metaData);
return retval;
}
}

View File

@@ -1,97 +0,0 @@
package com.earth2me.essentials;
import java.io.File;
import java.util.List;
import java.util.logging.Logger;
import org.bukkit.Location;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockDamageEvent;
import org.bukkit.event.block.BlockListener;
import org.bukkit.event.block.BlockPlaceEvent;
public class Jail extends BlockListener implements IConf
{
private static final Logger logger = Logger.getLogger("Minecraft");
private final EssentialsConf config;
private final IEssentials ess;
public Jail(IEssentials ess)
{
this.ess = ess;
config = new EssentialsConf(new File(ess.getDataFolder(), "jail.yml"));
config.load();
}
public void setJail(Location loc, String jailName) throws Exception
{
config.setProperty(jailName.toLowerCase(), loc);
config.save();
}
public Location getJail(String jailName) throws Exception
{
if (jailName == null || config.getProperty(jailName.toLowerCase()) == null)
{
throw new Exception(Util.i18n("jailNotExist"));
}
Location loc = config.getLocation(jailName.toLowerCase(), ess.getServer());
return loc;
}
public void sendToJail(User user, String jail) throws Exception
{
if (!(user.getBase() instanceof OfflinePlayer))
{
user.getTeleport().now(getJail(jail));
}
user.setJail(jail);
}
public void delJail(String jail) throws Exception
{
config.removeProperty(jail.toLowerCase());
config.save();
}
public List<String> getJails() throws Exception
{
return config.getKeys(null);
}
public void reloadConfig()
{
config.load();
}
@Override
public void onBlockBreak(BlockBreakEvent event)
{
User user = ess.getUser(event.getPlayer());
if (user.isJailed())
{
event.setCancelled(true);
}
}
@Override
public void onBlockPlace(BlockPlaceEvent event)
{
User user = ess.getUser(event.getPlayer());
if (user.isJailed())
{
event.setCancelled(true);
}
}
@Override
public void onBlockDamage(BlockDamageEvent event)
{
User user = ess.getUser(event.getPlayer());
if (user.isJailed())
{
event.setCancelled(true);
}
}
}

View File

@@ -1,84 +0,0 @@
package com.earth2me.essentials;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerListener;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
public class JailPlayerListener extends PlayerListener
{
private static final Logger LOGGER = Logger.getLogger("Minecraft");
private final IEssentials ess;
public JailPlayerListener(IEssentials parent)
{
this.ess = parent;
}
@Override
public void onPlayerInteract(PlayerInteractEvent event)
{
final User user = ess.getUser(event.getPlayer());
if (user.isJailed())
{
event.setCancelled(true);
}
}
@Override
public void onPlayerRespawn(PlayerRespawnEvent event)
{
final User user = ess.getUser(event.getPlayer());
if (user.isJailed() && user.getJail() != null && !user.getJail().isEmpty())
{
try
{
event.setRespawnLocation(ess.getJail().getJail(user.getJail()));
}
catch (Exception ex)
{
}
}
}
@Override
public void onPlayerTeleport(PlayerTeleportEvent event)
{
final User user = ess.getUser(event.getPlayer());
if (!user.isJailed() || user.getJail() == null || user.getJail().isEmpty())
{
return;
}
try
{
event.setTo(ess.getJail().getJail(user.getJail()));
}
catch (Exception ex)
{
LOGGER.log(Level.WARNING, Util.i18n("returnPlayerToJailError"), ex);
}
user.sendMessage(Util.i18n("jailMessage"));
}
@Override
public void onPlayerJoin(final PlayerJoinEvent event)
{
User u = ess.getUser(event.getPlayer());
if (u.isJailed())
{
try
{
ess.getJail().sendToJail(u, u.getJail());
}
catch (Exception ex)
{
LOGGER.log(Level.WARNING, Util.i18n("returnPlayerToJailError"), ex);
}
u.sendMessage(Util.i18n("jailMessage"));
}
}
}

View File

@@ -1,104 +0,0 @@
package com.earth2me.essentials;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.entity.CreatureType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
public enum Mob
{
CHICKEN("Chicken", Enemies.FRIENDLY, CreatureType.CHICKEN),
COW("Cow", Enemies.FRIENDLY, CreatureType.COW),
CREEPER("Creeper", Enemies.ENEMY, CreatureType.CREEPER),
GHAST("Ghast", Enemies.ENEMY, CreatureType.GHAST),
GIANT("Giant", Enemies.ENEMY, CreatureType.GIANT),
PIG("Pig", Enemies.FRIENDLY, CreatureType.PIG),
PIGZOMB("PigZombie", Enemies.NEUTRAL, CreatureType.PIG_ZOMBIE),
SHEEP("Sheep", Enemies.FRIENDLY, "", CreatureType.SHEEP),
SKELETON("Skeleton", Enemies.ENEMY, CreatureType.SKELETON),
SLIME("Slime", Enemies.ENEMY, CreatureType.SLIME),
SPIDER("Spider", Enemies.ENEMY, CreatureType.SPIDER),
SQUID("Squid", Enemies.FRIENDLY, CreatureType.SQUID),
ZOMBIE("Zombie", Enemies.ENEMY, CreatureType.ZOMBIE),
WOLF("Wolf", Enemies.NEUTRAL, CreatureType.WOLF),
CAVESPIDER("CaveSpider", Enemies.ENEMY, CreatureType.CAVE_SPIDER),
ENDERMAN("Enderman", Enemies.ENEMY, "", CreatureType.ENDERMAN),
SILVERFISH("Silverfish", Enemies.ENEMY, "", CreatureType.SILVERFISH);
public static final Logger logger = Logger.getLogger("Minecraft");
private Mob(String n, Enemies en, String s, CreatureType type)
{
this.suffix = s;
this.name = n;
this.type = en;
this.bukkitType = type;
}
private Mob(String n, Enemies en, CreatureType type)
{
this.name = n;
this.type = en;
this.bukkitType = type;
}
public String suffix = "s";
final public String name;
final public Enemies type;
final private CreatureType bukkitType;
private static final Map<String, Mob> hashMap = new HashMap<String, Mob>();
static
{
for (Mob mob : Mob.values())
{
hashMap.put(mob.name, mob);
}
}
public LivingEntity spawn(final Player player, final Server server, final Location loc) throws MobException
{
final LivingEntity entity = player.getWorld().spawnCreature(loc, this.bukkitType);
if (entity == null)
{
logger.log(Level.WARNING, Util.i18n("unableToSpawnMob"));
throw new MobException();
}
return entity;
}
public enum Enemies
{
FRIENDLY("friendly"),
NEUTRAL("neutral"),
ENEMY("enemy");
private Enemies(final String t)
{
this.type = t;
}
final protected String type;
}
public CreatureType getType () {
return bukkitType;
}
public static class MobException extends Exception
{
private static final long serialVersionUID = 1L;
}
public static Mob fromName(String n)
{
return hashMap.get(n);
}
}

View File

@@ -1,747 +0,0 @@
package com.earth2me.essentials;
import java.net.InetSocketAddress;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.bukkit.Achievement;
import org.bukkit.Effect;
import org.bukkit.GameMode;
import org.bukkit.Instrument;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Note;
import org.bukkit.Server;
import org.bukkit.Statistic;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Egg;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Snowball;
import org.bukkit.entity.Vehicle;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.map.MapView;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionAttachment;
import org.bukkit.permissions.PermissionAttachmentInfo;
import org.bukkit.plugin.Plugin;
import org.bukkit.util.Vector;
public class OfflinePlayer implements Player
{
private final String name;
final transient IEssentials ess;
private Location location = new Location(null, 0, 0, 0, 0, 0);
private World world;
private UUID uniqueId = UUID.randomUUID();
private org.bukkit.OfflinePlayer base;
public OfflinePlayer(String name, IEssentials ess)
{
this.name = name;
this.ess = ess;
this.world = ess.getServer().getWorlds().get(0);
this.base = ess.getServer().getOfflinePlayer(name);
}
public boolean isOnline()
{
return base.isOnline();
}
public boolean isOp()
{
return base.isOp();
}
public void sendMessage(String string)
{
}
public String getDisplayName()
{
return name;
}
public void setDisplayName(String string)
{
}
public void setCompassTarget(Location lctn)
{
}
public InetSocketAddress getAddress()
{
return null;
}
public void kickPlayer(String string)
{
}
public String getName()
{
return name;
}
public PlayerInventory getInventory()
{
return null;
}
public ItemStack getItemInHand()
{
return null;
}
public void setItemInHand(ItemStack is)
{
}
public int getHealth()
{
return 0;
}
public void setHealth(int i)
{
}
public Egg throwEgg()
{
return null;
}
public Snowball throwSnowball()
{
return null;
}
public Arrow shootArrow()
{
return null;
}
public boolean isInsideVehicle()
{
return false;
}
public boolean leaveVehicle()
{
return false;
}
public Vehicle getVehicle()
{
return null;
}
public Location getLocation()
{
return location;
}
public World getWorld()
{
return world;
}
public void setLocation(Location loc)
{
location = loc;
world = loc.getWorld();
}
public void teleportTo(Location lctn)
{
}
public void teleportTo(Entity entity)
{
}
public int getEntityId()
{
return -1;
}
public boolean performCommand(String string)
{
return false;
}
public boolean isPlayer()
{
return false;
}
public int getRemainingAir()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void setRemainingAir(int i)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public int getMaximumAir()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void setMaximumAir(int i)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public boolean isSneaking()
{
return false;
}
public void setSneaking(boolean bln)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void updateInventory()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void chat(String string)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public double getEyeHeight()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public double getEyeHeight(boolean bln)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public List<Block> getLineOfSight(HashSet<Byte> hs, int i)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public Block getTargetBlock(HashSet<Byte> hs, int i)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public List<Block> getLastTwoTargetBlocks(HashSet<Byte> hs, int i)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public int getFireTicks()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public int getMaxFireTicks()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void setFireTicks(int i)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void remove()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public Server getServer()
{
return ess == null ? null : ess.getServer();
}
public Vector getMomentum()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void setMomentum(Vector vector)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void setVelocity(Vector vector)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public Vector getVelocity()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void damage(int i)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void damage(int i, Entity entity)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public Location getEyeLocation()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void sendRawMessage(String string)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public Location getCompassTarget()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public int getMaximumNoDamageTicks()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void setMaximumNoDamageTicks(int i)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public int getLastDamage()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void setLastDamage(int i)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public int getNoDamageTicks()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void setNoDamageTicks(int i)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public boolean teleport(Location lctn)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public boolean teleport(Entity entity)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public Entity getPassenger()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public boolean setPassenger(Entity entity)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public boolean isEmpty()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public boolean eject()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void saveData()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void loadData()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public boolean isSleeping()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public int getSleepTicks()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public List<Entity> getNearbyEntities(double d, double d1, double d2)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public boolean isDead()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public float getFallDistance()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void setFallDistance(float f)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void setSleepingIgnored(boolean bln)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public boolean isSleepingIgnored()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void awardAchievement(Achievement a)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void incrementStatistic(Statistic ststc)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void incrementStatistic(Statistic ststc, int i)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void incrementStatistic(Statistic ststc, Material mtrl)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void incrementStatistic(Statistic ststc, Material mtrl, int i)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void playNote(Location lctn, byte b, byte b1)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void sendBlockChange(Location lctn, Material mtrl, byte b)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void sendBlockChange(Location lctn, int i, byte b)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void setLastDamageCause(EntityDamageEvent ede)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public EntityDamageEvent getLastDamageCause()
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public void playEffect(Location lctn, Effect effect, int i)
{
throw new UnsupportedOperationException(Util.i18n("notSupportedYet"));
}
public boolean sendChunkChange(Location lctn, int i, int i1, int i2, byte[] bytes)
{
return true;
}
public UUID getUniqueId()
{
return uniqueId;
}
public void playNote(Location lctn, Instrument i, Note note)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void setPlayerTime(long l, boolean bln)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public long getPlayerTime()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public long getPlayerTimeOffset()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean isPlayerTimeRelative()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void resetPlayerTime()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean isPermissionSet(String string)
{
return false;
}
public boolean isPermissionSet(Permission prmsn)
{
return false;
}
public boolean hasPermission(String string)
{
return false;
}
public boolean hasPermission(Permission prmsn)
{
return false;
}
public PermissionAttachment addAttachment(Plugin plugin, String string, boolean bln)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public PermissionAttachment addAttachment(Plugin plugin)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public PermissionAttachment addAttachment(Plugin plugin, String string, boolean bln, int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public PermissionAttachment addAttachment(Plugin plugin, int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void removeAttachment(PermissionAttachment pa)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void recalculatePermissions()
{
}
public Set<PermissionAttachmentInfo> getEffectivePermissions()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void setOp(boolean bln)
{
base.setOp(bln);
}
@Override
public void sendMap(MapView mv)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean isBanned()
{
return base.isBanned();
}
@Override
public void setBanned(boolean bln)
{
base.setBanned(bln);
}
@Override
public boolean isWhitelisted()
{
return base.isWhitelisted();
}
@Override
public void setWhitelisted(boolean bln)
{
base.setWhitelisted(bln);
}
@Override
public GameMode getGameMode()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setGameMode(GameMode gm)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getExperience()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setExperience(int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getLevel()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setLevel(int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getTotalExperience()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setTotalExperience(int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public float getExhaustion()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setExhaustion(float f)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public float getSaturation()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setSaturation(float f)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getFoodLevel()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setFoodLevel(int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Location getBedSpawnLocation()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean isSprinting()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setSprinting(boolean bln)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setPlayerListName(String name)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public String getPlayerListName()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getTicksLived()
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setTicksLived(int i)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Map<String, Object> serialize()
{
throw new UnsupportedOperationException("Not supported yet.");
}
}

View File

@@ -1,59 +0,0 @@
package com.earth2me.essentials;
import org.bukkit.craftbukkit.entity.CraftPlayer;
import net.minecraft.server.EntityPlayer;
import net.minecraft.server.IInventory;
import org.bukkit.craftbukkit.inventory.CraftInventoryPlayer;
import org.bukkit.entity.Player;
public class PlayerExtension extends PlayerWrapper
{
protected final IEssentials ess;
public PlayerExtension(Player base, IEssentials ess)
{
super(base);
this.ess = ess;
}
public void showInventory(IInventory inventory)
{
getHandle().a(inventory);
}
public void showInventory(CraftInventoryPlayer inventory)
{
showInventory((IInventory)inventory.getInventory());
}
public TargetBlock getTarget()
{
return new TargetBlock(getBase());
}
public String getGroup()
{
return ess.getPermissionsHandler().getGroup(base);
}
public boolean inGroup(String group)
{
return ess.getPermissionsHandler().inGroup(base, group);
}
public boolean canBuild()
{
return ess.getPermissionsHandler().canBuild(base, getGroup());
}
public EntityPlayer getHandle()
{
return getCraftPlayer().getHandle();
}
public CraftPlayer getCraftPlayer()
{
return (CraftPlayer)base;
}
}

View File

@@ -1,777 +0,0 @@
package com.earth2me.essentials;
import java.net.InetSocketAddress;
import java.util.*;
import org.bukkit.*;
import org.bukkit.block.Block;
import org.bukkit.entity.*;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.inventory.*;
import org.bukkit.map.MapView;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionAttachment;
import org.bukkit.permissions.PermissionAttachmentInfo;
import org.bukkit.plugin.Plugin;
import org.bukkit.util.Vector;
public class PlayerWrapper implements Player
{
protected Player base;
public PlayerWrapper(Player base)
{
this.base = base;
}
public final Player getBase()
{
return base;
}
public final Player setBase(Player base)
{
return this.base = base;
}
@Override
public void setDisplayName(String string)
{
base.setDisplayName(string);
}
@Override
public void setCompassTarget(Location lctn)
{
base.setCompassTarget(lctn);
}
@Override
public InetSocketAddress getAddress()
{
return base.getAddress();
}
@Override
public void kickPlayer(String string)
{
base.kickPlayer(string);
}
@Override
public String getName()
{
return base.getName();
}
@Override
public PlayerInventory getInventory()
{
return base.getInventory();
}
@Override
public ItemStack getItemInHand()
{
return base.getItemInHand();
}
@Override
public void setItemInHand(ItemStack is)
{
base.setItemInHand(is);
}
@Override
public int getHealth()
{
return base.getHealth();
}
@Override
public void setHealth(int i)
{
base.setHealth(i);
}
@Override
public Egg throwEgg()
{
return base.throwEgg();
}
@Override
public Snowball throwSnowball()
{
return base.throwSnowball();
}
@Override
public Arrow shootArrow()
{
return base.shootArrow();
}
@Override
public boolean isInsideVehicle()
{
return base.isInsideVehicle();
}
@Override
public boolean leaveVehicle()
{
return base.leaveVehicle();
}
@Override
public Vehicle getVehicle()
{
return base.getVehicle();
}
@Override
public Location getLocation()
{
return base.getLocation();
}
@Override
public World getWorld()
{
return base.getWorld();
}
@Override
public Server getServer()
{
return base.getServer();
}
@Override
public boolean isOnline()
{
return base.isOnline();
}
@Override
public boolean isOp()
{
return base.isOp();
}
@Override
public boolean teleport(Location lctn)
{
return base.teleport(lctn);
}
@Override
public boolean teleport(Entity entity)
{
return base.teleport(entity);
}
@Override
public void sendMessage(String string)
{
base.sendMessage(string);
}
@Override
public void setVelocity(Vector vector)
{
base.setVelocity(vector);
}
@Override
public Vector getVelocity()
{
return base.getVelocity();
}
@Override
public double getEyeHeight()
{
return base.getEyeHeight();
}
@Override
public double getEyeHeight(boolean bln)
{
return base.getEyeHeight(bln);
}
@Override
public List<Block> getLineOfSight(HashSet<Byte> hs, int i)
{
return base.getLineOfSight(hs, i);
}
@Override
public Block getTargetBlock(HashSet<Byte> hs, int i)
{
return base.getTargetBlock(hs, i);
}
@Override
public List<Block> getLastTwoTargetBlocks(HashSet<Byte> hs, int i)
{
return base.getLastTwoTargetBlocks(hs, i);
}
@Override
public int getFireTicks()
{
return base.getFireTicks();
}
@Override
public int getMaxFireTicks()
{
return base.getMaxFireTicks();
}
@Override
public void setFireTicks(int i)
{
base.setFireTicks(i);
}
@Override
public void remove()
{
base.remove();
}
/**
* This is not deprecated because the underlying method isn't really deprecated; rather, it's just "imperfect". By
* We will continue to use this method even after the underlying CraftBukkit method is changed, so do not deprecate
* it. Chances are Bukkit will also choose to un-deprecate this method at some point.
*/
@Override
public void updateInventory()
{
base.updateInventory();
}
@Override
public void chat(String string)
{
base.chat(string);
}
@Override
public boolean isSneaking()
{
return base.isSneaking();
}
@Override
public void setSneaking(boolean bln)
{
base.setSneaking(bln);
}
@Override
public int getEntityId()
{
return base.getEntityId();
}
@Override
public boolean performCommand(String string)
{
return base.performCommand(string);
}
@Override
public int getRemainingAir()
{
return base.getRemainingAir();
}
@Override
public void setRemainingAir(int i)
{
base.setRemainingAir(i);
}
@Override
public int getMaximumAir()
{
return base.getMaximumAir();
}
@Override
public void setMaximumAir(int i)
{
base.setMaximumAir(i);
}
@Override
public String getDisplayName()
{
if (base.getDisplayName() != null)
return base.getDisplayName();
else
return base.getName();
}
@Override
public void damage(int i)
{
base.damage(i);
}
@Override
public void damage(int i, Entity entity)
{
base.damage(i, entity);
}
@Override
public Location getEyeLocation()
{
return base.getEyeLocation();
}
@Override
public void sendRawMessage(String string) {
base.sendRawMessage(string);
}
@Override
public Location getCompassTarget()
{
return base.getCompassTarget();
}
@Override
public int getMaximumNoDamageTicks()
{
return base.getMaximumNoDamageTicks();
}
@Override
public void setMaximumNoDamageTicks(int i)
{
base.setMaximumNoDamageTicks(i);
}
@Override
public int getLastDamage()
{
return base.getLastDamage();
}
@Override
public void setLastDamage(int i)
{
base.setLastDamage(i);
}
@Override
public int getNoDamageTicks()
{
return base.getNoDamageTicks();
}
@Override
public void setNoDamageTicks(int i)
{
base.setNoDamageTicks(i);
}
@Override
public Entity getPassenger()
{
return base.getPassenger();
}
@Override
public boolean setPassenger(Entity entity)
{
return base.setPassenger(entity);
}
@Override
public boolean isEmpty()
{
return base.isEmpty();
}
@Override
public boolean eject()
{
return base.eject();
}
public void saveData()
{
base.saveData();
}
public void loadData()
{
base.loadData();
}
public boolean isSleeping()
{
return base.isSleeping();
}
public int getSleepTicks()
{
return base.getSleepTicks();
}
public List<Entity> getNearbyEntities(double d, double d1, double d2)
{
return base.getNearbyEntities(d, d1, d2);
}
public boolean isDead()
{
return base.isDead();
}
public float getFallDistance()
{
return base.getFallDistance();
}
public void setFallDistance(float f)
{
base.setFallDistance(f);
}
public void setSleepingIgnored(boolean bln)
{
base.setSleepingIgnored(bln);
}
public boolean isSleepingIgnored()
{
return base.isSleepingIgnored();
}
public void awardAchievement(Achievement a)
{
base.awardAchievement(a);
}
public void incrementStatistic(Statistic ststc)
{
base.incrementStatistic(ststc);
}
public void incrementStatistic(Statistic ststc, int i)
{
base.incrementStatistic(ststc, i);
}
public void incrementStatistic(Statistic ststc, Material mtrl)
{
base.incrementStatistic(ststc, mtrl);
}
public void incrementStatistic(Statistic ststc, Material mtrl, int i)
{
base.incrementStatistic(ststc, mtrl, i);
}
public void playNote(Location lctn, byte b, byte b1)
{
base.playNote(lctn, b, b1);
}
public void sendBlockChange(Location lctn, Material mtrl, byte b)
{
base.sendBlockChange(lctn, mtrl, b);
}
public void sendBlockChange(Location lctn, int i, byte b)
{
base.sendBlockChange(lctn, i, b);
}
public void setLastDamageCause(EntityDamageEvent ede)
{
base.setLastDamageCause(ede);
}
public EntityDamageEvent getLastDamageCause()
{
return base.getLastDamageCause();
}
public void playEffect(Location lctn, Effect effect, int i)
{
base.playEffect(lctn, effect, i);
}
public boolean sendChunkChange(Location lctn, int i, int i1, int i2, byte[] bytes)
{
return base.sendChunkChange(lctn, i, i1, i2, bytes);
}
public UUID getUniqueId()
{
return base.getUniqueId();
}
public void playNote(Location lctn, Instrument i, Note note)
{
base.playNote(lctn, i, note);
}
public void setPlayerTime(long l, boolean bln)
{
base.setPlayerTime(l, bln);
}
public long getPlayerTime()
{
return base.getPlayerTime();
}
public long getPlayerTimeOffset()
{
return base.getPlayerTimeOffset();
}
public boolean isPlayerTimeRelative()
{
return base.isPlayerTimeRelative();
}
public void resetPlayerTime()
{
base.resetPlayerTime();
}
public boolean isPermissionSet(String string)
{
return base.isPermissionSet(string);
}
public boolean isPermissionSet(Permission prmsn)
{
return base.isPermissionSet(prmsn);
}
public boolean hasPermission(String string)
{
return base.hasPermission(string);
}
public boolean hasPermission(Permission prmsn)
{
return base.hasPermission(prmsn);
}
public PermissionAttachment addAttachment(Plugin plugin, String string, boolean bln)
{
return base.addAttachment(plugin, string, bln);
}
public PermissionAttachment addAttachment(Plugin plugin)
{
return base.addAttachment(plugin);
}
public PermissionAttachment addAttachment(Plugin plugin, String string, boolean bln, int i)
{
return base.addAttachment(plugin, string, bln, i);
}
public PermissionAttachment addAttachment(Plugin plugin, int i)
{
return base.addAttachment(plugin, i);
}
public void removeAttachment(PermissionAttachment pa)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void recalculatePermissions()
{
base.recalculatePermissions();
}
public Set<PermissionAttachmentInfo> getEffectivePermissions()
{
return base.getEffectivePermissions();
}
public void setOp(boolean bln)
{
base.setOp(bln);
}
@Override
public void sendMap(MapView mv)
{
base.sendMap(mv);
}
@Override
public boolean isBanned()
{
return base.isBanned();
}
@Override
public void setBanned(boolean bln)
{
base.setBanned(bln);
}
@Override
public boolean isWhitelisted()
{
return base.isWhitelisted();
}
@Override
public void setWhitelisted(boolean bln)
{
base.setWhitelisted(bln);
}
@Override
public GameMode getGameMode()
{
return base.getGameMode();
}
@Override
public void setGameMode(GameMode gm)
{
base.setGameMode(gm);
}
@Override
public int getExperience()
{
return base.getExperience();
}
@Override
public void setExperience(int i)
{
base.setExperience(i);
}
@Override
public int getLevel()
{
return base.getLevel();
}
@Override
public void setLevel(int i)
{
base.setLevel(i);
}
@Override
public int getTotalExperience()
{
return base.getTotalExperience();
}
@Override
public void setTotalExperience(int i)
{
base.setTotalExperience(i);
}
@Override
public float getExhaustion()
{
return base.getExhaustion();
}
@Override
public void setExhaustion(float f)
{
base.setExhaustion(f);
}
@Override
public float getSaturation()
{
return base.getSaturation();
}
@Override
public void setSaturation(float f)
{
base.setSaturation(f);
}
@Override
public int getFoodLevel()
{
return base.getFoodLevel();
}
@Override
public void setFoodLevel(int i)
{
base.setFoodLevel(i);
}
@Override
public Location getBedSpawnLocation()
{
return base.getBedSpawnLocation();
}
@Override
public boolean isSprinting()
{
return base.isSprinting();
}
@Override
public void setSprinting(boolean bln)
{
base.setSprinting(bln);
}
@Override
public void setPlayerListName(String name)
{
base.setPlayerListName(name);
}
@Override
public String getPlayerListName()
{
return base.getPlayerListName();
}
@Override
public int getTicksLived()
{
return base.getTicksLived();
}
@Override
public void setTicksLived(int i)
{
base.setTicksLived(i);
}
@Override
public Map<String, Object> serialize()
{
return base.serialize();
}
}

View File

@@ -1,532 +0,0 @@
package com.earth2me.essentials;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.ChatColor;
import com.earth2me.essentials.commands.IEssentialsCommand;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.bukkit.inventory.ItemStack;
public class Settings implements ISettings
{
private final transient EssentialsConf config;
private final static Logger logger = Logger.getLogger("Minecraft");
private final transient IEssentials ess;
public Settings(IEssentials ess)
{
this.ess = ess;
config = new EssentialsConf(new File(ess.getDataFolder(), "config.yml"));
config.setTemplateName("/config.yml");
reloadConfig();
}
@Override
public boolean getRespawnAtHome()
{
return config.getBoolean("respawn-at-home", false);
}
@Override
public boolean getBedSetsHome()
{
return config.getBoolean("bed-sethome", false);
}
@Override
public List<String> getMultipleHomes()
{
return config.getKeys("sethome-multiple");
}
@Override
public int getHomeLimit(final User user)
{
final List<String> homeList = getMultipleHomes();
if (homeList == null)
{
//TODO: Replace this code to remove backwards compat, after settings are automatically updated
// return getHomeLimit("default");
return config.getInt("multiple-homes", 5);
}
int limit = getHomeLimit("default");
for (String set : homeList)
{
logger.log(Level.INFO, "Found home set: " + set);
if (user.hasPermission("essentials.sethome.multiple." + set) && limit < getHomeLimit(set))
{
limit = getHomeLimit(set);
}
}
return limit;
}
@Override
public int getHomeLimit(final String set)
{
return config.getInt("sethome-multiple." + set, config.getInt("sethome-multiple.default", 3));
}
@Override
public int getChatRadius()
{
return config.getInt("chat.radius", config.getInt("chat-radius", 0));
}
@Override
public double getTeleportDelay()
{
return config.getDouble("teleport-delay", 0);
}
@Override
public int getDefaultStackSize()
{
return config.getInt("default-stack-size", 64);
}
@Override
public int getStartingBalance()
{
return config.getInt("starting-balance", 0);
}
@Override
public boolean isCommandDisabled(final IEssentialsCommand cmd)
{
return isCommandDisabled(cmd.getName());
}
@Override
public boolean isCommandDisabled(String label)
{
for (String c : config.getStringList("disabled-commands", new ArrayList<String>(0)))
{
if (!c.equalsIgnoreCase(label))
{
continue;
}
return true;
}
return config.getBoolean("disable-" + label.toLowerCase(), false);
}
@Override
public boolean isCommandRestricted(IEssentialsCommand cmd)
{
return isCommandRestricted(cmd.getName());
}
@Override
public boolean isCommandRestricted(String label)
{
for (String c : config.getStringList("restricted-commands", new ArrayList<String>(0)))
{
if (!c.equalsIgnoreCase(label))
{
continue;
}
return true;
}
return config.getBoolean("restrict-" + label.toLowerCase(), false);
}
@Override
public boolean isPlayerCommand(String label)
{
for (String c : config.getStringList("player-commands", new ArrayList<String>(0)))
{
if (!c.equalsIgnoreCase(label))
{
continue;
}
return true;
}
return false;
}
@Override
public boolean isCommandOverridden(String name)
{
List<String> defaultList = new ArrayList<String>(1);
defaultList.add("god");
for (String c : config.getStringList("overridden-commands", defaultList))
{
if (!c.equalsIgnoreCase(name))
{
continue;
}
return true;
}
return config.getBoolean("override-" + name.toLowerCase(), false);
}
@Override
public double getCommandCost(IEssentialsCommand cmd)
{
return getCommandCost(cmd.getName());
}
@Override
public double getCommandCost(String label)
{
double cost = config.getDouble("command-costs." + label, 0.0);
if (cost == 0.0)
{
cost = config.getDouble("cost-" + label, 0.0);
}
return cost;
}
@Override
public String getNicknamePrefix()
{
return config.getString("nickname-prefix", "~");
}
@Override
public double getTeleportCooldown()
{
return config.getDouble("teleport-cooldown", 60);
}
@Override
public double getHealCooldown()
{
return config.getDouble("heal-cooldown", 60);
}
@Override
public Object getKit(String name)
{
Map<String, Object> kits = (Map<String, Object>)config.getProperty("kits");
for (Map.Entry<String, Object> entry : kits.entrySet())
{
if (entry.getKey().equalsIgnoreCase(name.replace('.', '_').replace('/', '_')))
{
return entry.getValue();
}
}
return null;
}
@Override
public Map<String, Object> getKits()
{
return (Map<String, Object>)config.getProperty("kits");
}
@Override
public ChatColor getOperatorColor() throws Exception
{
String colorName = config.getString("ops-name-color", null);
if (colorName == null)
{
return ChatColor.RED;
}
if ("none".equalsIgnoreCase(colorName) || colorName.isEmpty())
{
throw new Exception();
}
try
{
return ChatColor.valueOf(colorName.toUpperCase());
}
catch (IllegalArgumentException ex)
{
}
return ChatColor.getByCode(Integer.parseInt(colorName, 16));
}
@Override
public boolean getReclaimSetting()
{
return config.getBoolean("reclaim-onlogout", true);
}
@Override
public int getSpawnMobLimit()
{
return config.getInt("spawnmob-limit", 10);
}
@Override
public boolean showNonEssCommandsInHelp()
{
return config.getBoolean("non-ess-in-help", true);
}
@Override
public boolean hidePermissionlessHelp()
{
return config.getBoolean("hide-permissionless-help", true);
}
@Override
public int getProtectCreeperMaxHeight()
{
return config.getInt("protect.creeper.max-height", -1);
}
@Override
public boolean areSignsDisabled()
{
return config.getBoolean("signs-disabled", false);
}
@Override
public long getBackupInterval()
{
return config.getInt("backup.interval", 1440); // 1440 = 24 * 60
}
@Override
public String getBackupCommand()
{
return config.getString("backup.command", null);
}
@Override
public String getChatFormat(String group)
{
return config.getString("chat.group-formats." + (group == null ? "Default" : group),
config.getString("chat.format", "&7[{GROUP}]&f {DISPLAYNAME}&7:&f {MESSAGE}"));
}
@Override
public boolean getAnnounceNewPlayers()
{
return !config.getString("newbies.announce-format", "-").isEmpty();
}
@Override
public String getAnnounceNewPlayerFormat(IUser user)
{
return format(config.getString("newbies.announce-format", "&dWelcome {DISPLAYNAME} to the server!"), user);
}
@Override
public String format(String format, IUser user)
{
return format.replace('&', '§').replace("§§", "&").replace("{PLAYER}", user.getDisplayName()).replace("{DISPLAYNAME}", user.getDisplayName()).replace("{GROUP}", user.getGroup()).replace("{USERNAME}", user.getName()).replace("{ADDRESS}", user.getAddress().toString());
}
@Override
public String getNewbieSpawn()
{
return config.getString("newbies.spawnpoint", "default");
}
@Override
public boolean getPerWarpPermission()
{
return config.getBoolean("per-warp-permission", false);
}
@Override
public boolean getSortListByGroups()
{
return config.getBoolean("sort-list-by-groups", true);
}
@Override
public void reloadConfig()
{
config.load();
}
@Override
public List<Integer> itemSpawnBlacklist()
{
final List<Integer> epItemSpwn = new ArrayList<Integer>();
for (String itemName : config.getString("item-spawn-blacklist", "").split(","))
{
itemName = itemName.trim();
if (itemName.isEmpty())
{
continue;
}
ItemStack is;
try
{
is = ess.getItemDb().get(itemName);
epItemSpwn.add(is.getTypeId());
}
catch (Exception ex)
{
logger.log(Level.SEVERE, Util.format("unknownItemInList", itemName, "item-spawn-blacklist"));
}
}
return epItemSpwn;
}
@Override
public boolean spawnIfNoHome()
{
return config.getBoolean("spawn-if-no-home", false);
}
@Override
public boolean warnOnBuildDisallow()
{
return config.getBoolean("protect.disable.warn-on-build-disallow", false);
}
@Override
public boolean isDebug()
{
return config.getBoolean("debug", false);
}
@Override
public boolean warnOnSmite()
{
return config.getBoolean("warn-on-smite", true);
}
@Override
public boolean permissionBasedItemSpawn()
{
return config.getBoolean("permission-based-item-spawn", false);
}
@Override
public String getLocale()
{
return config.getString("locale", "");
}
@Override
public String getCurrencySymbol()
{
return config.getString("currency-symbol", "$").substring(0, 1).replaceAll("[0-9]", "$");
}
@Override
public boolean isTradeInStacks(int id)
{
return config.getBoolean("trade-in-stacks-" + id, false);
}
@Override
public boolean isEcoDisabled()
{
return config.getBoolean("disable-eco", false);
}
@Override
public boolean getProtectPreventSpawn(final String creatureName)
{
return config.getBoolean("protect.prevent.spawn." + creatureName, false);
}
@Override
public List<Integer> getProtectList(final String configName)
{
final List<Integer> list = new ArrayList<Integer>();
for (String itemName : config.getString(configName, "").split(","))
{
itemName = itemName.trim();
if (itemName.isEmpty())
{
continue;
}
ItemStack itemStack;
try
{
itemStack = ess.getItemDb().get(itemName);
list.add(itemStack.getTypeId());
}
catch (Exception ex)
{
logger.log(Level.SEVERE, Util.format("unknownItemInList", itemName, configName));
}
}
return list;
}
@Override
public String getProtectString(final String configName)
{
return config.getString(configName, null);
}
@Override
public boolean getProtectBoolean(final String configName, boolean def)
{
return config.getBoolean(configName, def);
}
private final static double MAXMONEY = 10000000000000.0;
public double getMaxMoney()
{
double max = config.getDouble("max-money", MAXMONEY);
if (Math.abs(max) > MAXMONEY)
{
max = max < 0 ? -MAXMONEY : MAXMONEY;
}
return max;
}
public boolean isEcoLogEnabled()
{
return config.getBoolean("economy-log-enabled", false);
}
public boolean removeGodOnDisconnect()
{
return config.getBoolean("remove-god-on-disconnect", false);
}
public boolean changeDisplayName()
{
return config.getBoolean("change-displayname", true);
}
public boolean useBukkitPermissions()
{
return config.getBoolean("use-bukkit-permissions", false);
}
public boolean addPrefixSuffix()
{
return config.getBoolean("add-prefix-suffix", ess.getServer().getPluginManager().isPluginEnabled("EssentialsChat"));
}
@Override
public boolean isUpdateEnabled()
{
return config.getBoolean("update-check", false);
}
@Override
public long getAutoAfk()
{
return config.getLong("auto-afk", 300);
}
@Override
public long getAutoAfkKick()
{
return config.getLong("auto-afk-kick", -1);
}
@Override
public boolean getFreezeAfkPlayers()
{
return config.getBoolean("freeze-afk-players", false);
}
@Override
public boolean areDeathMessagesEnabled()
{
return config.getBoolean("death-messages", true);
}
}

View File

@@ -1,87 +0,0 @@
package com.earth2me.essentials;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.World.Environment;
public class Spawn implements IConf {
private static final Logger logger = Logger.getLogger("Minecraft");
private final EssentialsConf config;
private final Server server;
public Spawn(Server server, File dataFolder) {
File configFile = new File(dataFolder, "spawn.yml");
this.server = server;
config = new EssentialsConf(configFile);
config.load();
}
public void setSpawn(Location loc, String group) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("world", loc.getWorld().getName());
map.put("x", loc.getX());
map.put("y", loc.getY());
map.put("z", loc.getZ());
map.put("yaw", loc.getYaw());
map.put("pitch", loc.getPitch());
config.setProperty(group, map);
config.save();
if ("default".equals(group)) {
loc.getWorld().setSpawnLocation(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
}
}
public Location getSpawn(String group) {
if (config.getProperty(group) == null) {
group = "default";
}
if (config.getProperty(group) == null) {
for (World w : server.getWorlds()) {
if (w.getEnvironment() != Environment.NORMAL) {
continue;
}
return w.getSpawnLocation();
}
}
String worldId = config.getString(group + ".world", "");
World world = server.getWorlds().get(server.getWorlds().size() > 1 ? 1 : 0);
for (World w : server.getWorlds()) {
if (w.getEnvironment() != Environment.NORMAL) {
continue;
}
world = w;
break;
}
for (World w : server.getWorlds()) {
if (!w.getName().equals(worldId)) {
continue;
}
world = w;
break;
}
double x = config.getDouble(group + ".x", config.getDouble("default.x", 0));
double y = config.getDouble(group + ".y", config.getDouble("default.y", 0));
double z = config.getDouble(group + ".z", config.getDouble("default.z", 0));
float yaw = (float) config.getDouble(group + ".yaw", config.getDouble("default.yaw", 0));
float pitch = (float) config.getDouble(group + ".pitch", config.getDouble("default.pitch", 0));
Location retval = new Location(world, x, y, z, yaw, pitch);
if (y < 1) {
retval.setY(world.getHighestBlockYAt(retval));
}
return retval;
}
public void reloadConfig() {
config.load();
}
}

View File

@@ -1,88 +0,0 @@
package com.earth2me.essentials;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.minecraft.server.ChunkPosition;
import net.minecraft.server.Packet60Explosion;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityListener;
public class TNTExplodeListener extends EntityListener implements Runnable
{
private final IEssentials ess;
private boolean enabled = false;
private int timer = -1;
public TNTExplodeListener(IEssentials ess)
{
this.ess = ess;
}
public void enable()
{
if (!enabled)
{
enabled = true;
timer = ess.scheduleSyncDelayedTask(this, 1000);
return;
}
if (timer != -1) {
ess.getScheduler().cancelTask(timer);
timer = ess.scheduleSyncDelayedTask(this, 1000);
}
}
@Override
public void onEntityExplode(final EntityExplodeEvent event)
{
if (!enabled)
{
return;
}
if (event.getEntity() instanceof LivingEntity)
{
return;
}
try {
final Set<ChunkPosition> set = new HashSet<ChunkPosition>(event.blockList().size());
final Player[] players = ess.getServer().getOnlinePlayers();
final List<ChunkPosition> blocksUnderPlayers = new ArrayList<ChunkPosition>(players.length);
final Location loc = event.getLocation();
for (Player player : players)
{
if (player.getWorld().equals(loc.getWorld()))
{
blocksUnderPlayers.add(new ChunkPosition(player.getLocation().getBlockX(), player.getLocation().getBlockY() - 1, player.getLocation().getBlockZ()));
}
}
for (Block block : event.blockList())
{
final ChunkPosition cp = new ChunkPosition(block.getX(), block.getY(), block.getZ());
if (!blocksUnderPlayers.contains(cp))
{
set.add(cp);
}
}
((CraftServer)ess.getServer()).getHandle().sendPacketNearby(loc.getX(), loc.getY(), loc.getZ(), 64.0, ((CraftWorld)loc.getWorld()).getHandle().worldProvider.dimension, new Packet60Explosion(loc.getX(), loc.getY(), loc.getZ(), 3.0F, set));
} catch (Throwable ex) {
Logger.getLogger("Minecraft").log(Level.SEVERE, null, ex);
}
event.setCancelled(true);
}
public void run()
{
enabled = false;
}
}

View File

@@ -1,527 +0,0 @@
package com.earth2me.essentials;
import java.util.List;
import org.bukkit.block.Block;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
/**
* Original authors: toi & Raphfrk
*/
@Deprecated
public class TargetBlock
{
private transient final Location location;
private transient final double viewHeight;
private transient final int maxDistance;
private transient final int[] blockToIgnore;
private transient final double checkDistance;
private transient double curDistance;
private transient double targetPositionX;
private transient double targetPositionY;
private transient double targetPositionZ;
private transient int itargetPositionX;
private transient int itargetPositionY;
private transient int itargetPositionZ;
private transient int prevPositionX;
private transient int prevPositionY;
private transient int prevPositionZ;
private transient final double offsetX;
private transient final double offsetY;
private transient final double offsetZ;
/**
* Constructor requiring a player, uses default values
*
* @param player Player to work with
*/
public TargetBlock(final Player player)
{
this(player.getLocation(), 300, 1.65, 0.2, null);
}
/**
* Constructor requiring a location, uses default values
*
* @param loc Location to work with
*/
public TargetBlock(final Location loc)
{
this(loc, 300, 0, 0.2, null);
}
/**
* Constructor requiring a player, max distance and a checking distance
*
* @param player Player to work with
* @param maxDistance How far it checks for blocks
* @param checkDistance How often to check for blocks, the smaller the more precise
*/
public TargetBlock(final Player player, final int maxDistance, final double checkDistance)
{
this(player.getLocation(), maxDistance, 1.65, checkDistance, null);
}
/**
* Constructor requiring a location, max distance and a checking distance
*
* @param loc What location to work with
* @param maxDistance How far it checks for blocks
* @param checkDistance How often to check for blocks, the smaller the more precise
*/
public TargetBlock(final Location loc, final int maxDistance, final double checkDistance)
{
this(loc, maxDistance, 0, checkDistance, null);
}
/**
* Constructor requiring a player, max distance, checking distance and an array of blocks to ignore
*
* @param player What player to work with
* @param maxDistance How far it checks for blocks
* @param checkDistance How often to check for blocks, the smaller the more precise
* @param blocksToIgnore Integer array of what block ids to ignore while checking for viable targets
*/
public TargetBlock(final Player player, final int maxDistance, final double checkDistance, final int[] blocksToIgnore)
{
this(player.getLocation(), maxDistance, 1.65, checkDistance, blocksToIgnore);
}
/**
* Constructor requiring a location, max distance, checking distance and an array of blocks to ignore
*
* @param loc What location to work with
* @param maxDistance How far it checks for blocks
* @param checkDistance How often to check for blocks, the smaller the more precise
* @param blocksToIgnore Array of what block ids to ignore while checking for viable targets
*/
public TargetBlock(final Location loc, final int maxDistance, final double checkDistance, final int[] blocksToIgnore)
{
this(loc, maxDistance, 0, checkDistance, blocksToIgnore);
}
/**
* Constructor requiring a player, max distance, checking distance and an array of blocks to ignore
*
* @param player What player to work with
* @param maxDistance How far it checks for blocks
* @param checkDistance How often to check for blocks, the smaller the more precise
* @param blocksToIgnore String ArrayList of what block ids to ignore while checking for viable targets
*/
public TargetBlock(final Player player, final int maxDistance, final double checkDistance, final List<String> blocksToIgnore)
{
this(player.getLocation(), maxDistance, 1.65, checkDistance, TargetBlock.convertStringArraytoIntArray(blocksToIgnore));
}
/**
* Constructor requiring a location, max distance, checking distance and an array of blocks to ignore
*
* @param loc What location to work with
* @param maxDistance How far it checks for blocks
* @param checkDistance How often to check for blocks, the smaller the more precise
* @param blocksToIgnore String ArrayList of what block ids to ignore while checking for viable targets
*/
public TargetBlock(final Location loc, final int maxDistance, final double checkDistance, final List<String> blocksToIgnore)
{
this(loc, maxDistance, 0, checkDistance, TargetBlock.convertStringArraytoIntArray(blocksToIgnore));
}
/**
* Set the values, all constructors uses this function
*
* @param loc Location of the view
* @param maxDistance How far it checks for blocks
* @param viewPos Where the view is positioned in y-axis
* @param checkDistance How often to check for blocks, the smaller the more precise
* @param blocksToIgnore Ids of blocks to ignore while checking for viable targets
*/
private TargetBlock(final Location loc, final int maxDistance, final double viewHeight, final double checkDistance, final int[] blocksToIgnore)
{
this.location = loc;
this.maxDistance = maxDistance;
this.viewHeight = viewHeight;
this.checkDistance = checkDistance;
if (blocksToIgnore == null || blocksToIgnore.length == 0)
{
this.blockToIgnore = new int[0];
}
else
{
this.blockToIgnore = new int[blocksToIgnore.length];
System.arraycopy(blocksToIgnore, 0, this.blockToIgnore, 0, this.blockToIgnore.length);
}
final double xRotation = (loc.getYaw() + 90) % 360;
final double yRotation = loc.getPitch() * -1;
final double hypotenuse = (checkDistance * Math.cos(Math.toRadians(yRotation)));
offsetX = hypotenuse * Math.cos(Math.toRadians(xRotation));
offsetY = checkDistance * Math.sin(Math.toRadians(yRotation));
offsetZ = hypotenuse * Math.sin(Math.toRadians(xRotation));
reset();
}
/**
* Call this to reset checking position to allow you to check for a new target with the same TargetBlock instance.
*/
public final void reset()
{
targetPositionX = location.getX();
targetPositionY = location.getY() + viewHeight;
targetPositionZ = location.getZ();
itargetPositionX = (int)Math.floor(targetPositionX);
itargetPositionY = (int)Math.floor(targetPositionY);
itargetPositionZ = (int)Math.floor(targetPositionZ);
prevPositionX = itargetPositionX;
prevPositionY = itargetPositionY;
prevPositionZ = itargetPositionZ;
this.curDistance = 0;
}
/**
* Gets the distance to a block. Measures from the block underneath the player to the targetblock
* Should only be used when passing player as an constructor parameter
*
* @return double
*/
public double getDistanceToBlock()
{
final double blockUnderPlayerX = Math.floor(location.getX() + 0.5);
final double blockUnderPlayerY = Math.floor(location.getY() - 0.5);
final double blockUnderPlayerZ = Math.floor(location.getZ() + 0.5);
final Block block = getTargetBlock();
final double distX = block.getX() - blockUnderPlayerX;
final double distY = block.getY() - blockUnderPlayerY;
final double distZ = block.getZ() - blockUnderPlayerZ;
return Math.sqrt(distX*distX + distY*distY + distZ*distZ);
}
/**
* Gets the rounded distance to a block. Measures from the block underneath the player to the targetblock
* Should only be used when passing player as an constructor parameter
*
* @return int
*/
public int getDistanceToBlockRounded()
{
return (int)Math.round(getDistanceToBlock());
}
/**
* Gets the floored x distance to a block.
*
* @return int
*/
public int getXDistanceToBlock()
{
return (int)Math.floor(getTargetBlock().getX() - location.getBlockX() + 0.5);
}
/**
* Gets the floored y distance to a block
*
* @return int
*/
public int getYDistanceToBlock()
{
return (int)Math.floor(getTargetBlock().getY() - location.getBlockY() + viewHeight);
}
/**
* Gets the floored z distance to a block
*
* @return int
*/
public int getZDistanceToBlock()
{
return (int)Math.floor(getTargetBlock().getZ() - location.getBlockZ() + 0.5);
}
/**
* Returns the block at the sight. Returns null if out of range or if no viable target was found
*
* @return Block
*/
public Block getTargetBlock()
{
this.reset();
Block block;
do
{
block = getNextBlock();
}
while (block != null && ((block.getTypeId() == 0) || this.blockIsIgnored(block.getTypeId())));
return block;
}
/**
* Sets the type of the block at the sight. Returns false if the block wasn't set.
*
* @param typeID ID of type to set the block to
* @return boolean
*/
public boolean setTargetBlock(final int typeID)
{
return setTargetBlock(Material.getMaterial(typeID));
}
/**
* Sets the type of the block at the sight. Returns false if the block wasn't set.
*
* @param type Material to set the block to
* @return boolean
*/
@SuppressWarnings("empty-statement")
public boolean setTargetBlock(final Material type)
{
if (type == null)
{
return false;
}
final Block block = getTargetBlock();
if (block != null)
{
block.setType(type);
return true;
}
return false;
}
/**
* Sets the type of the block at the sight. Returns false if the block wasn't set.
* Observe! At the moment this function is using the built-in enumerator function .valueOf(String) but would preferably be changed to smarter function, when implemented
*
* @param type Name of type to set the block to
* @return boolean
*/
public boolean setTargetBlock(final String type)
{
return setTargetBlock(Material.valueOf(type));
}
/**
* Returns the block attached to the face at the sight. Returns null if out of range or if no viable target was found
*
* @return Block
*/
public Block getFaceBlock()
{
final Block block = getTargetBlock();
if (block == null)
{
return null;
}
return getPreviousBlock();
}
/**
* Sets the type of the block attached to the face at the sight. Returns false if the block wasn't set.
*
* @param typeID
* @return boolean
*/
public boolean setFaceBlock(final int typeID)
{
return setFaceBlock(Material.getMaterial(typeID));
}
/**
* Sets the type of the block attached to the face at the sight. Returns false if the block wasn't set.
*
* @param type
* @return boolean
*/
public boolean setFaceBlock(final Material type)
{
if (type == null)
{
return false;
}
if (getCurrentBlock() != null)
{
final Block blk = location.getWorld().getBlockAt(prevPositionX, prevPositionY, prevPositionZ);
blk.setType(type);
return true;
}
return false;
}
/**
* Sets the type of the block attached to the face at the sight. Returns false if the block wasn't set.
* Observe! At the moment this function is using the built-in enumerator function .valueOf(String) but would preferably be changed to smarter function, when implemented
*
* @param type
* @return boolean
*/
public boolean setFaceBlock(final String type)
{
return setFaceBlock(Material.valueOf(type));
}
/**
* Get next block
*
* @return Block
*/
public Block getNextBlock()
{
prevPositionX = itargetPositionX;
prevPositionY = itargetPositionY;
prevPositionZ = itargetPositionZ;
do
{
curDistance += checkDistance;
targetPositionX += offsetX;
targetPositionY += offsetY;
targetPositionZ += offsetZ;
itargetPositionX = (int)Math.floor(targetPositionX);
itargetPositionY = (int)Math.floor(targetPositionY);
itargetPositionZ = (int)Math.floor(targetPositionZ);
}
while (curDistance <= maxDistance && itargetPositionX == prevPositionX && itargetPositionY == prevPositionY && itargetPositionZ == prevPositionZ);
if (curDistance > maxDistance)
{
return null;
}
return this.location.getWorld().getBlockAt(itargetPositionX, itargetPositionY, itargetPositionZ);
}
/**
* Returns the current block along the line of vision
*
* @return Block
*/
public Block getCurrentBlock()
{
Block block;
if (curDistance <= maxDistance)
{
block = this.location.getWorld().getBlockAt(itargetPositionX, itargetPositionY, itargetPositionZ);
}
else
{
block = null;
}
return block;
}
/**
* Sets current block type. Returns false if the block wasn't set.
*
* @param typeID
*/
public boolean setCurrentBlock(final int typeID)
{
return setCurrentBlock(Material.getMaterial(typeID));
}
/**
* Sets current block type. Returns false if the block wasn't set.
*
* @param type
*/
public boolean setCurrentBlock(final Material type)
{
final Block blk = getCurrentBlock();
if (blk != null && type != null)
{
blk.setType(type);
return true;
}
return false;
}
/**
* Sets current block type. Returns false if the block wasn't set.
* Observe! At the moment this function is using the built-in enumerator function .valueOf(String) but would preferably be changed to smarter function, when implemented
*
* @param type
*/
public boolean setCurrentBlock(final String type)
{
return setCurrentBlock(Material.valueOf(type));
}
/**
* Returns the previous block in the aimed path
*
* @return Block
*/
public Block getPreviousBlock()
{
return this.location.getWorld().getBlockAt(prevPositionX, prevPositionY, prevPositionZ);
}
/**
* Sets previous block type id. Returns false if the block wasn't set.
*
* @param typeID
*/
public boolean setPreviousBlock(final int typeID)
{
return setPreviousBlock(Material.getMaterial(typeID));
}
/**
* Sets previous block type id. Returns false if the block wasn't set.
*
* @param type
*/
public boolean setPreviousBlock(final Material type)
{
final Block blk = getPreviousBlock();
if (blk != null && type != null)
{
blk.setType(type);
return true;
}
return false;
}
/**
* Sets previous block type id. Returns false if the block wasn't set.
* Observe! At the moment this function is using the built-in enumerator function .valueOf(String) but would preferably be changed to smarter function, when implemented
*
* @param type
*/
public boolean setPreviousBlock(final String type)
{
return setPreviousBlock(Material.valueOf(type));
}
private static int[] convertStringArraytoIntArray(final List<String> array)
{
final int intarray[] = new int[array == null ? 0 : array.size()];
for (int i = 0; i < intarray.length; i++)
{
try
{
intarray[i] = Integer.parseInt(array.get(i));
}
catch (NumberFormatException nfe)
{
}
}
return intarray;
}
private boolean blockIsIgnored(final int value)
{
for (int i : this.blockToIgnore)
{
if (i == value)
{
return true;
}
}
return false;
}
}

View File

@@ -1,271 +0,0 @@
package com.earth2me.essentials;
import com.earth2me.essentials.commands.NotEnoughArgumentsException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.logging.Logger;
import org.bukkit.Location;
import org.bukkit.entity.Entity;
public class Teleport implements Runnable
{
private static final double MOVE_CONSTANT = 0.3;
private static class Target
{
private final Location location;
private final Entity entity;
public Target(Location location)
{
this.location = location;
this.entity = null;
}
public Target(Entity entity)
{
this.entity = entity;
this.location = null;
}
public Location getLocation()
{
if (this.entity != null)
{
return this.entity.getLocation();
}
return location;
}
}
private IUser user;
private int teleTimer = -1;
private long started; // time this task was initiated
private long delay; // how long to delay the teleport
private int health;
// note that I initially stored a clone of the location for reference, but...
// when comparing locations, I got incorrect mismatches (rounding errors, looked like)
// so, the X/Y/Z values are stored instead and rounded off
private long initX;
private long initY;
private long initZ;
private Target teleportTarget;
private Trade chargeFor;
private final IEssentials ess;
private static final Logger logger = Logger.getLogger("Minecraft");
private void initTimer(long delay, Target target, Trade chargeFor)
{
this.started = System.currentTimeMillis();
this.delay = delay;
this.health = user.getHealth();
this.initX = Math.round(user.getLocation().getX() * MOVE_CONSTANT);
this.initY = Math.round(user.getLocation().getY() * MOVE_CONSTANT);
this.initZ = Math.round(user.getLocation().getZ() * MOVE_CONSTANT);
this.teleportTarget = target;
this.chargeFor = chargeFor;
}
public void run()
{
if (user == null || !user.isOnline() || user.getLocation() == null)
{
cancel();
return;
}
if (Math.round(user.getLocation().getX() * MOVE_CONSTANT) != initX
|| Math.round(user.getLocation().getY() * MOVE_CONSTANT) != initY
|| Math.round(user.getLocation().getZ() * MOVE_CONSTANT) != initZ
|| user.getHealth() < health)
{ // user moved, cancel teleport
cancel(true);
return;
}
health = user.getHealth(); // in case user healed, then later gets injured
long now = System.currentTimeMillis();
if (now > started + delay)
{
try
{
cooldown(false);
user.sendMessage(Util.i18n("teleportationCommencing"));
try
{
now(teleportTarget);
if (chargeFor != null)
{
chargeFor.charge(user);
}
}
catch (Throwable ex)
{
ess.showError(user.getBase(), ex, "teleport");
}
return;
}
catch (Exception ex)
{
user.sendMessage(Util.format("cooldownWithMessage", ex.getMessage()));
}
}
}
public Teleport(IUser user, IEssentials ess)
{
this.user = user;
this.ess = ess;
}
public void respawn(Spawn spawn, Trade chargeFor) throws Exception
{
teleport(new Target(spawn.getSpawn(user.getGroup())), chargeFor);
}
public void warp(String warp, Trade chargeFor) throws Exception
{
Location loc = ess.getWarps().getWarp(warp);
teleport(new Target(loc), chargeFor);
user.sendMessage(Util.format("warpingTo", warp));
}
public void cooldown(boolean check) throws Exception
{
Calendar now = new GregorianCalendar();
if (user.getLastTeleportTimestamp() > 0)
{
double cooldown = ess.getSettings().getTeleportCooldown();
Calendar cooldownTime = new GregorianCalendar();
cooldownTime.setTimeInMillis(user.getLastTeleportTimestamp());
cooldownTime.add(Calendar.SECOND, (int)cooldown);
cooldownTime.add(Calendar.MILLISECOND, (int)((cooldown * 1000.0) % 1000.0));
if (cooldownTime.after(now) && !user.isAuthorized("essentials.teleport.cooldown.bypass"))
{
throw new Exception(Util.format("timeBeforeTeleport", Util.formatDateDiff(cooldownTime.getTimeInMillis())));
}
}
// if justCheck is set, don't update lastTeleport; we're just checking
if (!check)
{
user.setLastTeleportTimestamp(now.getTimeInMillis());
}
}
public void cancel(boolean notifyUser)
{
if (teleTimer == -1)
{
return;
}
try
{
ess.getServer().getScheduler().cancelTask(teleTimer);
if (notifyUser)
{
user.sendMessage(Util.i18n("pendingTeleportCancelled"));
}
}
finally
{
teleTimer = -1;
}
}
public void cancel()
{
cancel(false);
}
public void teleport(Location loc, Trade chargeFor) throws Exception
{
teleport(new Target(loc), chargeFor);
}
public void teleport(Entity entity, Trade chargeFor) throws Exception
{
teleport(new Target(entity), chargeFor);
}
private void teleport(Target target, Trade chargeFor) throws Exception
{
double delay = ess.getSettings().getTeleportDelay();
if (chargeFor != null)
{
chargeFor.isAffordableFor(user);
}
cooldown(true);
if (delay <= 0 || user.isAuthorized("essentials.teleport.timer.bypass"))
{
cooldown(false);
now(target);
if (chargeFor != null)
{
chargeFor.charge(user);
}
return;
}
cancel();
Calendar c = new GregorianCalendar();
c.add(Calendar.SECOND, (int)delay);
c.add(Calendar.MILLISECOND, (int)((delay * 1000.0) % 1000.0));
user.sendMessage(Util.format("dontMoveMessage", Util.formatDateDiff(c.getTimeInMillis())));
initTimer((long)(delay * 1000.0), target, chargeFor);
teleTimer = ess.scheduleSyncRepeatingTask(this, 10, 10);
}
private void now(Target target) throws Exception
{
cancel();
user.setLastLocation();
user.getBase().teleport(Util.getSafeDestination(target.getLocation()));
}
public void now(Location loc) throws Exception
{
cooldown(false);
now(new Target(loc));
}
public void now(Location loc, Trade chargeFor) throws Exception
{
cooldown(false);
chargeFor.charge(user);
now(new Target(loc));
}
public void now(Entity entity, boolean cooldown) throws Exception
{
if (cooldown)
{
cooldown(false);
}
now(new Target(entity));
}
public void back(Trade chargeFor) throws Exception
{
teleport(new Target(user.getLastLocation()), chargeFor);
}
public void back() throws Exception
{
now(new Target(user.getLastLocation()));
}
public void home(IUser user, String home, Trade chargeFor) throws Exception
{
final Location loc = user.getHome(home);
if (loc == null)
{
throw new NotEnoughArgumentsException();
}
teleport(new Target(loc), chargeFor);
}
}

View File

@@ -1,258 +0,0 @@
package com.earth2me.essentials;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.Location;
import org.bukkit.inventory.ItemStack;
public class Trade
{
private final transient String command;
private final transient Double money;
private final transient ItemStack itemStack;
private final transient IEssentials ess;
public Trade(final String command, final IEssentials ess)
{
this(command, null, null, ess);
}
public Trade(final double money, final IEssentials ess)
{
this(null, money, null, ess);
}
public Trade(final ItemStack items, final IEssentials ess)
{
this(null, null, items, ess);
}
private Trade(final String command, final Double money, final ItemStack item, final IEssentials ess)
{
this.command = command;
this.money = money;
this.itemStack = item;
this.ess = ess;
}
public void isAffordableFor(final IUser user) throws ChargeException
{
final double mon = user.getMoney();
if (getMoney() != null
&& mon < getMoney()
&& getMoney() > 0
&& !user.isAuthorized("essentials.eco.loan"))
{
throw new ChargeException(Util.i18n("notEnoughMoney"));
}
if (getItemStack() != null
&& !InventoryWorkaround.containsItem(user.getInventory(), true, itemStack))
{
throw new ChargeException(Util.format("missingItems", getItemStack().getAmount(), getItemStack().getType().toString().toLowerCase().replace("_", " ")));
}
if (command != null && !command.isEmpty()
&& !user.isAuthorized("essentials.nocommandcost.all")
&& !user.isAuthorized("essentials.nocommandcost." + command)
&& mon < ess.getSettings().getCommandCost(command.charAt(0) == '/' ? command.substring(1) : command)
&& 0 < ess.getSettings().getCommandCost(command.charAt(0) == '/' ? command.substring(1) : command)
&& !user.isAuthorized("essentials.eco.loan"))
{
throw new ChargeException(Util.i18n("notEnoughMoney"));
}
}
public void pay(final IUser user)
{
pay(user, true);
}
public boolean pay(final IUser user, final boolean dropItems)
{
boolean success = true;
if (getMoney() != null && getMoney() > 0)
{
user.giveMoney(getMoney());
}
if (getItemStack() != null)
{
if (dropItems)
{
final Map<Integer, ItemStack> leftOver = InventoryWorkaround.addItem(user.getInventory(), true, getItemStack());
for (ItemStack itemStack : leftOver.values())
{
InventoryWorkaround.dropItem(user.getLocation(), itemStack);
}
}
else
{
success = InventoryWorkaround.addAllItems(user.getInventory(), true, getItemStack());
}
user.updateInventory();
}
return success;
}
public void charge(final IUser user) throws ChargeException
{
if (getMoney() != null)
{
final double mon = user.getMoney();
if (mon < getMoney() && getMoney() > 0 && !user.isAuthorized("essentials.eco.loan"))
{
throw new ChargeException(Util.i18n("notEnoughMoney"));
}
user.takeMoney(getMoney());
}
if (getItemStack() != null)
{
if (!InventoryWorkaround.containsItem(user.getInventory(), true, itemStack))
{
throw new ChargeException(Util.format("missingItems", getItemStack().getAmount(), getItemStack().getType().toString().toLowerCase().replace("_", " ")));
}
InventoryWorkaround.removeItem(user.getInventory(), true, getItemStack());
user.updateInventory();
}
if (command != null && !command.isEmpty()
&& !user.isAuthorized("essentials.nocommandcost.all")
&& !user.isAuthorized("essentials.nocommandcost." + command))
{
final double mon = user.getMoney();
final double cost = ess.getSettings().getCommandCost(command.charAt(0) == '/' ? command.substring(1) : command);
if (mon < cost && cost > 0 && !user.isAuthorized("essentials.eco.loan"))
{
throw new ChargeException(Util.i18n("notEnoughMoney"));
}
user.takeMoney(cost);
}
}
public Double getMoney()
{
return money;
}
public ItemStack getItemStack()
{
return itemStack;
}
private static FileWriter fw = null;
public static void log(String type, String subtype, String event, String sender, Trade charge, String receiver, Trade pay, Location loc, IEssentials ess)
{
if (!ess.getSettings().isEcoLogEnabled())
{
return;
}
if (fw == null)
{
try
{
fw = new FileWriter(new File(ess.getDataFolder(), "trade.log"), true);
}
catch (IOException ex)
{
Logger.getLogger("Minecraft").log(Level.SEVERE, null, ex);
}
}
StringBuilder sb = new StringBuilder();
sb.append(type).append(",").append(subtype).append(",").append(event).append(",\"");
sb.append(DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL).format(new Date()));
sb.append("\",\"");
if (sender != null)
{
sb.append(sender);
}
sb.append("\",");
if (charge == null)
{
sb.append("\"\",\"\",\"\"");
}
else
{
if (charge.getItemStack() != null)
{
sb.append(charge.getItemStack().getAmount()).append(",");
sb.append(charge.getItemStack().getType().toString()).append(",");
sb.append(charge.getItemStack().getDurability());
}
if (charge.getMoney() != null)
{
sb.append(charge.getMoney()).append(",");
sb.append("money").append(",");
sb.append(ess.getSettings().getCurrencySymbol());
}
}
sb.append(",\"");
if (receiver != null)
{
sb.append(receiver);
}
sb.append("\",");
if (pay == null)
{
sb.append("\"\",\"\",\"\"");
}
else
{
if (pay.getItemStack() != null)
{
sb.append(pay.getItemStack().getAmount()).append(",");
sb.append(pay.getItemStack().getType().toString()).append(",");
sb.append(pay.getItemStack().getDurability());
}
if (pay.getMoney() != null)
{
sb.append(pay.getMoney()).append(",");
sb.append("money").append(",");
sb.append(ess.getSettings().getCurrencySymbol());
}
}
if (loc == null)
{
sb.append(",\"\",\"\",\"\",\"\"");
}
else
{
sb.append(",\"");
sb.append(loc.getWorld().getName()).append("\",");
sb.append(loc.getBlockX()).append(",");
sb.append(loc.getBlockY()).append(",");
sb.append(loc.getBlockZ()).append(",");
}
sb.append("\n");
try
{
fw.write(sb.toString());
fw.flush();
}
catch (IOException ex)
{
Logger.getLogger("Minecraft").log(Level.SEVERE, null, ex);
}
}
public static void closeLog()
{
if (fw != null)
{
try
{
fw.close();
}
catch (IOException ex)
{
Logger.getLogger("Minecraft").log(Level.SEVERE, null, ex);
}
fw = null;
}
}
}

View File

@@ -1,489 +0,0 @@
package com.earth2me.essentials;
import com.earth2me.essentials.commands.IEssentialsCommand;
import com.earth2me.essentials.register.payment.Method;
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class User extends UserData implements Comparable<User>, IReplyTo, IUser
{
private boolean justPortaled = false;
private CommandSender replyTo = null;
private transient User teleportRequester;
private transient boolean teleportRequestHere;
private transient final Teleport teleport;
private transient long lastOnlineActivity;
private transient long lastActivity = System.currentTimeMillis();
private boolean hidden = false;
private transient Location afkPosition;
User(final Player base, final IEssentials ess)
{
super(base, ess);
teleport = new Teleport(this, ess);
afkPosition = getLocation();
}
User update(final Player base)
{
setBase(base);
return this;
}
@Override
public boolean isAuthorized(final IEssentialsCommand cmd)
{
return isAuthorized(cmd, "essentials.");
}
@Override
public boolean isAuthorized(final IEssentialsCommand cmd, final String permissionPrefix)
{
return isAuthorized(permissionPrefix + (cmd.getName().equals("r") ? "msg" : cmd.getName()));
}
@Override
public boolean isAuthorized(final String node)
{
if (base instanceof OfflinePlayer)
{
return false;
}
if (isOp())
{
return true;
}
if (isJailed())
{
return false;
}
return ess.getPermissionsHandler().hasPermission(base, node);
}
public void healCooldown() throws Exception
{
final Calendar now = new GregorianCalendar();
if (getLastHealTimestamp() > 0)
{
final double cooldown = ess.getSettings().getHealCooldown();
final Calendar cooldownTime = new GregorianCalendar();
cooldownTime.setTimeInMillis(getLastHealTimestamp());
cooldownTime.add(Calendar.SECOND, (int)cooldown);
cooldownTime.add(Calendar.MILLISECOND, (int)((cooldown * 1000.0) % 1000.0));
if (cooldownTime.after(now) && !isAuthorized("essentials.heal.cooldown.bypass"))
{
throw new Exception(Util.format("timeBeforeHeal", Util.formatDateDiff(cooldownTime.getTimeInMillis())));
}
}
setLastHealTimestamp(now.getTimeInMillis());
}
@Override
public void giveMoney(final double value)
{
giveMoney(value, null);
}
public void giveMoney(final double value, final CommandSender initiator)
{
if (value == 0)
{
return;
}
setMoney(getMoney() + value);
sendMessage(Util.format("addedToAccount", Util.formatCurrency(value, ess)));
if (initiator != null)
{
initiator.sendMessage(Util.format("addedToOthersAccount", Util.formatCurrency(value, ess), this.getDisplayName()));
}
}
public void payUser(final User reciever, final double value) throws Exception
{
if (value == 0)
{
return;
}
if (canAfford(value))
{
setMoney(getMoney() - value);
reciever.setMoney(reciever.getMoney() + value);
sendMessage(Util.format("moneySentTo", Util.formatCurrency(value, ess), reciever.getDisplayName()));
reciever.sendMessage(Util.format("moneyRecievedFrom", Util.formatCurrency(value, ess), getDisplayName()));
}
else
{
throw new Exception(Util.i18n("notEnoughMoney"));
}
}
@Override
public void takeMoney(final double value)
{
takeMoney(value, null);
}
public void takeMoney(final double value, final CommandSender initiator)
{
if (value == 0)
{
return;
}
setMoney(getMoney() - value);
sendMessage(Util.format("takenFromAccount", Util.formatCurrency(value, ess)));
if (initiator != null)
{
initiator.sendMessage(Util.format("takenFromOthersAccount", Util.formatCurrency(value, ess), this.getDisplayName()));
}
}
public boolean canAfford(final double cost)
{
final double mon = getMoney();
return mon >= cost || isAuthorized("essentials.eco.loan");
}
public void dispose()
{
this.base = new OfflinePlayer(getName(), ess);
}
public boolean getJustPortaled()
{
return justPortaled;
}
public void setJustPortaled(final boolean value)
{
justPortaled = value;
}
@Override
public void setReplyTo(final CommandSender user)
{
replyTo = user;
}
@Override
public CommandSender getReplyTo()
{
return replyTo;
}
@Override
public int compareTo(final User other)
{
return ChatColor.stripColor(this.getDisplayName()).compareToIgnoreCase(ChatColor.stripColor(other.getDisplayName()));
}
@Override
public boolean equals(final Object object)
{
if (!(object instanceof User))
{
return false;
}
return ChatColor.stripColor(this.getDisplayName()).equalsIgnoreCase(ChatColor.stripColor(((User)object).getDisplayName()));
}
@Override
public int hashCode()
{
return ChatColor.stripColor(this.getDisplayName()).hashCode();
}
public Boolean canSpawnItem(final int itemId)
{
return !ess.getSettings().itemSpawnBlacklist().contains(itemId);
}
public Location getHome() throws Exception
{
return getHome(getHomes().get(0));
}
public void setHome()
{
setHome("home", getLocation());
}
public void setHome(final String name)
{
setHome(name, getLocation());
}
@Override
public void setLastLocation()
{
setLastLocation(getLocation());
}
public void requestTeleport(final User player, final boolean here)
{
teleportRequester = player;
teleportRequestHere = here;
}
public User getTeleportRequest()
{
return teleportRequester;
}
public boolean isTeleportRequestHere()
{
return teleportRequestHere;
}
public String getNick()
{
final StringBuilder nickname = new StringBuilder();
final String nick = getNickname();
if (ess.getSettings().isCommandDisabled("nick") || nick == null || nick.isEmpty() || nick.equals(getName()))
{
nickname.append(getName());
}
else
{
nickname.append(ess.getSettings().getNicknamePrefix()).append(nick);
}
if (isOp())
{
try
{
nickname.insert(0, ess.getSettings().getOperatorColor().toString());
nickname.append("§f");
}
catch (Exception e)
{
}
}
if (ess.getSettings().addPrefixSuffix())
{
final String prefix = ess.getPermissionsHandler().getPrefix(base).replace('&', '§').replace("{WORLDNAME}", this.getWorld().getName());
final String suffix = ess.getPermissionsHandler().getSuffix(base).replace('&', '§').replace("{WORLDNAME}", this.getWorld().getName());
nickname.insert(0, prefix);
nickname.append(suffix);
if (suffix.length() < 2 || !suffix.substring(suffix.length() - 2, suffix.length() - 1).equals("§"))
{
nickname.append("§f");
}
}
return nickname.toString();
}
public void setDisplayNick(String name)
{
setDisplayName(name);
//TODO: Maybe we need to limit nick length, or try use a string trim.
if (name.length() <= 16) {
setPlayerListName(name);
}
}
public Teleport getTeleport()
{
return teleport;
}
public long getLastOnlineActivity()
{
return lastOnlineActivity;
}
public void setLastOnlineActivity(final long timestamp)
{
lastOnlineActivity = timestamp;
}
@Override
public double getMoney()
{
if (ess.getPaymentMethod().hasMethod())
{
try
{
final Method method = ess.getPaymentMethod().getMethod();
if (!method.hasAccount(this.getName()))
{
throw new Exception();
}
final Method.MethodAccount account = ess.getPaymentMethod().getMethod().getAccount(this.getName());
return account.balance();
}
catch (Throwable ex)
{
}
}
return super.getMoney();
}
@Override
public void setMoney(final double value)
{
if (ess.getPaymentMethod().hasMethod())
{
try
{
final Method method = ess.getPaymentMethod().getMethod();
if (!method.hasAccount(this.getName()))
{
throw new Exception();
}
final Method.MethodAccount account = ess.getPaymentMethod().getMethod().getAccount(this.getName());
account.set(value);
}
catch (Throwable ex)
{
}
}
super.setMoney(value);
}
@Override
public void setAfk(final boolean set)
{
this.setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") ? true : set);
if (set && !isAfk()) {
afkPosition = getLocation();
}
super.setAfk(set);
}
@Override
public boolean toggleAfk()
{
final boolean now = super.toggleAfk();
this.setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") ? true : now);
return now;
}
public boolean isHidden()
{
return hidden;
}
public void setHidden(final boolean hidden)
{
this.hidden = hidden;
}
//Returns true if status expired during this check
public boolean checkJailTimeout(final long currentTime)
{
if (getJailTimeout() > 0 && getJailTimeout() < currentTime && isJailed())
{
setJailTimeout(0);
setJailed(false);
sendMessage(Util.i18n("haveBeenReleased"));
setJail(null);
try
{
getTeleport().back();
}
catch (Exception ex)
{
}
return true;
}
return false;
}
//Returns true if status expired during this check
public boolean checkMuteTimeout(final long currentTime)
{
if (getMuteTimeout() > 0 && getMuteTimeout() < currentTime && isMuted())
{
setMuteTimeout(0);
sendMessage(Util.i18n("canTalkAgain"));
setMuted(false);
return true;
}
return false;
}
//Returns true if status expired during this check
public boolean checkBanTimeout(final long currentTime)
{
if (getBanTimeout() > 0 && getBanTimeout() < currentTime && isBanned())
{
setBanTimeout(0);
setBanned(false);
return true;
}
return false;
}
public void updateActivity(final boolean broadcast)
{
if (isAfk())
{
setAfk(false);
if (broadcast && !isHidden())
{
ess.broadcastMessage(this, Util.format("userIsNotAway", getDisplayName()));
}
}
lastActivity = System.currentTimeMillis();
}
public void checkActivity()
{
final long autoafkkick = ess.getSettings().getAutoAfkKick();
if (autoafkkick > 0 && lastActivity + autoafkkick * 1000 < System.currentTimeMillis()
&& !isHidden() && !isAuthorized("essentials.kick.exempt") && !isAuthorized("essentials.afk.kickexempt"))
{
final String kickReason = Util.format("autoAfkKickReason", autoafkkick / 60.0);
kickPlayer(kickReason);
for (Player player : ess.getServer().getOnlinePlayers())
{
final User user = ess.getUser(player);
if (user.isAuthorized("essentials.kick.notify"))
{
player.sendMessage(Util.format("playerKicked", Console.NAME, getName(), kickReason));
}
}
}
final long autoafk = ess.getSettings().getAutoAfk();
if (!isAfk() && autoafk > 0 && lastActivity + autoafk * 1000 < System.currentTimeMillis() && isAuthorized("essentials.afk"))
{
setAfk(true);
if (!isHidden()) {
ess.broadcastMessage(this, Util.format("userIsAway", getDisplayName()));
}
}
}
public Location getAfkPosition()
{
return afkPosition;
}
@Override
public boolean toggleGodModeEnabled()
{
if (!isGodModeEnabled()) {
setFoodLevel(20);
}
return super.toggleGodModeEnabled();
}
@Override
public boolean isGodModeEnabled()
{
return super.isGodModeEnabled() || (isAfk() && ess.getSettings().getFreezeAfkPlayers());
}
}

View File

@@ -1,119 +0,0 @@
package com.earth2me.essentials;
import com.google.common.base.Function;
import com.google.common.collect.ComputationException;
import com.google.common.collect.MapMaker;
import java.io.File;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.ConcurrentMap;
import java.util.logging.Level;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
public class UserMap implements Function<String, User>, IConf
{
private final transient IEssentials ess;
private final transient ConcurrentMap<String, User> users = new MapMaker().softValues().makeComputingMap(this);
public UserMap(final IEssentials ess)
{
this.ess = ess;
loadAllUsersAsync(ess);
}
private void loadAllUsersAsync(final IEssentials ess)
{
ess.scheduleAsyncDelayedTask(new Runnable()
{
@Override
public void run()
{
final File userdir = new File(ess.getDataFolder(), "userdata");
if (!userdir.exists())
{
return;
}
for (String string : userdir.list())
{
if (!string.endsWith(".yml"))
{
continue;
}
final String name = string.substring(0, string.length() - 4);
try
{
users.get(name.toLowerCase());
}
catch (NullPointerException ex)
{
// Ignore these
}
catch (ComputationException ex)
{
Bukkit.getLogger().log(Level.INFO, "Failed to preload user "+name, ex);
}
}
}
});
}
public boolean userExists(final String name)
{
return users.containsKey(name.toLowerCase());
}
public User getUser(final String name) throws NullPointerException
{
return users.get(name.toLowerCase());
}
@Override
public User apply(final String name)
{
for (Player player : ess.getServer().getOnlinePlayers())
{
if (player.getName().equalsIgnoreCase(name))
{
return new User(player, ess);
}
}
final File userFolder = new File(ess.getDataFolder(), "userdata");
final File userFile = new File(userFolder, Util.sanitizeFileName(name) + ".yml");
if (userFile.exists())
{
return new User(new OfflinePlayer(name, ess), ess);
}
return null;
}
@Override
public void reloadConfig()
{
for (User user : users.values())
{
user.reloadConfig();
}
}
public void removeUser(final String name)
{
users.remove(name.toLowerCase());
}
public Set<User> getAllUsers()
{
final Set<User> userSet = new HashSet<User>();
for (String name : users.keySet())
{
userSet.add(users.get(name));
}
return userSet;
}
public int getUniqueUsers()
{
return users.size();
}
}

View File

@@ -1,551 +0,0 @@
package com.earth2me.essentials;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.MessageFormat;
import java.util.Calendar;
import java.util.Enumeration;
import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
public class Util
{
private Util()
{
}
private final static Logger logger = Logger.getLogger("Minecraft");
public static String sanitizeFileName(String name)
{
return name.toLowerCase().replaceAll("[^a-z0-9]", "_");
}
public static String formatDateDiff(long date)
{
Calendar c = new GregorianCalendar();
c.setTimeInMillis(date);
Calendar now = new GregorianCalendar();
return Util.formatDateDiff(now, c);
}
public static String formatDateDiff(Calendar fromDate, Calendar toDate)
{
boolean future = false;
if (toDate.equals(fromDate))
{
return Util.i18n("now");
}
if (toDate.after(fromDate))
{
future = true;
}
StringBuilder sb = new StringBuilder();
int[] types = new int[]
{
Calendar.YEAR,
Calendar.MONTH,
Calendar.DAY_OF_MONTH,
Calendar.HOUR_OF_DAY,
Calendar.MINUTE,
Calendar.SECOND
};
String[] names = new String[]
{
Util.i18n("year"),
Util.i18n("years"),
Util.i18n("month"),
Util.i18n("months"),
Util.i18n("day"),
Util.i18n("days"),
Util.i18n("hour"),
Util.i18n("hours"),
Util.i18n("minute"),
Util.i18n("minutes"),
Util.i18n("second"),
Util.i18n("seconds")
};
for (int i = 0; i < types.length; i++)
{
int diff = dateDiff(types[i], fromDate, toDate, future);
if (diff > 0)
{
sb.append(" ").append(diff).append(" ").append(names[i * 2 + (diff > 1 ? 1 : 0)]);
}
}
if (sb.length() == 0)
{
return "now";
}
return sb.toString();
}
private static int dateDiff(int type, Calendar fromDate, Calendar toDate, boolean future)
{
int diff = 0;
long savedDate = fromDate.getTimeInMillis();
while ((future && !fromDate.after(toDate)) || (!future && !fromDate.before(toDate)))
{
savedDate = fromDate.getTimeInMillis();
fromDate.add(type, future ? 1 : -1);
diff++;
}
diff--;
fromDate.setTimeInMillis(savedDate);
return diff;
}
public static long parseDateDiff(String time, boolean future) throws Exception
{
Pattern timePattern = Pattern.compile(
"(?:([0-9]+)\\s*y[a-z]*[,\\s]*)?"
+ "(?:([0-9]+)\\s*mo[a-z]*[,\\s]*)?"
+ "(?:([0-9]+)\\s*w[a-z]*[,\\s]*)?"
+ "(?:([0-9]+)\\s*d[a-z]*[,\\s]*)?"
+ "(?:([0-9]+)\\s*h[a-z]*[,\\s]*)?"
+ "(?:([0-9]+)\\s*m[a-z]*[,\\s]*)?"
+ "(?:([0-9]+)\\s*(?:s[a-z]*)?)?", Pattern.CASE_INSENSITIVE);
Matcher m = timePattern.matcher(time);
int years = 0;
int months = 0;
int weeks = 0;
int days = 0;
int hours = 0;
int minutes = 0;
int seconds = 0;
boolean found = false;
while (m.find())
{
if (m.group() == null || m.group().isEmpty())
{
continue;
}
for (int i = 0; i < m.groupCount(); i++)
{
if (m.group(i) != null && !m.group(i).isEmpty())
{
found = true;
break;
}
}
if (found)
{
if (m.group(1) != null && !m.group(1).isEmpty())
{
years = Integer.parseInt(m.group(1));
}
if (m.group(2) != null && !m.group(2).isEmpty())
{
months = Integer.parseInt(m.group(2));
}
if (m.group(3) != null && !m.group(3).isEmpty())
{
weeks = Integer.parseInt(m.group(3));
}
if (m.group(4) != null && !m.group(4).isEmpty())
{
days = Integer.parseInt(m.group(4));
}
if (m.group(5) != null && !m.group(5).isEmpty())
{
hours = Integer.parseInt(m.group(5));
}
if (m.group(6) != null && !m.group(6).isEmpty())
{
minutes = Integer.parseInt(m.group(6));
}
if (m.group(7) != null && !m.group(7).isEmpty())
{
seconds = Integer.parseInt(m.group(7));
}
break;
}
}
if (!found)
{
throw new Exception(Util.i18n("illegalDate"));
}
Calendar c = new GregorianCalendar();
if (years > 0)
{
c.add(Calendar.YEAR, years * (future ? 1 : -1));
}
if (months > 0)
{
c.add(Calendar.MONTH, months * (future ? 1 : -1));
}
if (weeks > 0)
{
c.add(Calendar.WEEK_OF_YEAR, weeks * (future ? 1 : -1));
}
if (days > 0)
{
c.add(Calendar.DAY_OF_MONTH, days * (future ? 1 : -1));
}
if (hours > 0)
{
c.add(Calendar.HOUR_OF_DAY, hours * (future ? 1 : -1));
}
if (minutes > 0)
{
c.add(Calendar.MINUTE, minutes * (future ? 1 : -1));
}
if (seconds > 0)
{
c.add(Calendar.SECOND, seconds * (future ? 1 : -1));
}
return c.getTimeInMillis();
}
// The player can stand inside these materials
private static final Set<Integer> AIR_MATERIALS = new HashSet<Integer>();
static {
AIR_MATERIALS.add(Material.AIR.getId());
AIR_MATERIALS.add(Material.SAPLING.getId());
AIR_MATERIALS.add(Material.POWERED_RAIL.getId());
AIR_MATERIALS.add(Material.DETECTOR_RAIL.getId());
AIR_MATERIALS.add(Material.LONG_GRASS.getId());
AIR_MATERIALS.add(Material.DEAD_BUSH.getId());
AIR_MATERIALS.add(Material.YELLOW_FLOWER.getId());
AIR_MATERIALS.add(Material.RED_ROSE.getId());
AIR_MATERIALS.add(Material.BROWN_MUSHROOM.getId());
AIR_MATERIALS.add(Material.RED_MUSHROOM.getId());
AIR_MATERIALS.add(Material.TORCH.getId());
AIR_MATERIALS.add(Material.REDSTONE_WIRE.getId());
AIR_MATERIALS.add(Material.SEEDS.getId());
AIR_MATERIALS.add(Material.SIGN_POST.getId());
AIR_MATERIALS.add(Material.WOODEN_DOOR.getId());
AIR_MATERIALS.add(Material.LADDER.getId());
AIR_MATERIALS.add(Material.RAILS.getId());
AIR_MATERIALS.add(Material.WALL_SIGN.getId());
AIR_MATERIALS.add(Material.LEVER.getId());
AIR_MATERIALS.add(Material.STONE_PLATE.getId());
AIR_MATERIALS.add(Material.IRON_DOOR_BLOCK.getId());
AIR_MATERIALS.add(Material.WOOD_PLATE.getId());
AIR_MATERIALS.add(Material.REDSTONE_TORCH_OFF.getId());
AIR_MATERIALS.add(Material.REDSTONE_TORCH_ON.getId());
AIR_MATERIALS.add(Material.STONE_BUTTON.getId());
AIR_MATERIALS.add(Material.SUGAR_CANE_BLOCK.getId());
AIR_MATERIALS.add(Material.DIODE_BLOCK_OFF.getId());
AIR_MATERIALS.add(Material.DIODE_BLOCK_ON.getId());
AIR_MATERIALS.add(Material.TRAP_DOOR.getId());
AIR_MATERIALS.add(Material.PUMPKIN_STEM.getId());
AIR_MATERIALS.add(Material.MELON_STEM.getId());
AIR_MATERIALS.add(Material.VINE.getId());
//TODO: Add 1.9 materials
}
public static Location getSafeDestination(final Location loc) throws Exception
{
if (loc == null || loc.getWorld() == null)
{
throw new Exception(Util.i18n("destinationNotSet"));
}
final World world = loc.getWorld();
int x = loc.getBlockX();
int y = (int)Math.round(loc.getY());
int z = loc.getBlockZ();
while (isBlockAboveAir(world, x, y, z))
{
y -= 1;
if (y < 0)
{
break;
}
}
while (isBlockUnsafe(world, x, y, z))
{
y += 1;
if (y >= 127)
{
x += 1;
break;
}
}
while (isBlockUnsafe(world, x, y, z))
{
y -= 1;
if (y <= 1)
{
y = 127;
x += 1;
if (x - 32 > loc.getBlockX())
{
throw new Exception(Util.i18n("holeInFloor"));
}
}
}
return new Location(world, x + 0.5D, y, z + 0.5D, loc.getYaw(), loc.getPitch());
}
private static boolean isBlockAboveAir(final World world, final int x, final int y, final int z)
{
return AIR_MATERIALS.contains(world.getBlockAt(x, y - 1, z).getType().getId());
}
public static boolean isBlockUnsafe(final World world, final int x, final int y, final int z)
{
final Block below = world.getBlockAt(x, y - 1, z);
if (below.getType() == Material.LAVA || below.getType() == Material.STATIONARY_LAVA)
{
return true;
}
if (below.getType() == Material.FIRE)
{
return true;
}
if ((!AIR_MATERIALS.contains(world.getBlockAt(x, y, z).getType().getId()))
|| (!AIR_MATERIALS.contains(world.getBlockAt(x, y + 1, z).getType().getId())))
{
return true;
}
return isBlockAboveAir(world, x, y, z);
}
private static DecimalFormat df = new DecimalFormat("#0.00", DecimalFormatSymbols.getInstance(Locale.US));
public static String formatCurrency(final double value, final IEssentials ess)
{
String str = ess.getSettings().getCurrencySymbol() + df.format(value);
if (str.endsWith(".00"))
{
str = str.substring(0, str.length() - 3);
}
return str;
}
public static double roundDouble(final double d)
{
return Math.round(d * 100.0) / 100.0;
}
public static Locale getCurrentLocale()
{
return currentLocale;
}
private static class ConfigClassLoader extends ClassLoader
{
private final transient File dataFolder;
private final transient ClassLoader cl;
private final transient IEssentials ess;
public ConfigClassLoader(final ClassLoader cl, final IEssentials ess)
{
this.ess = ess;
this.dataFolder = ess.getDataFolder();
this.cl = cl;
}
@Override
public URL getResource(final String string)
{
final File file = new File(dataFolder, string);
if (file.exists())
{
try
{
return file.toURI().toURL();
}
catch (MalformedURLException ex)
{
return cl.getResource(string);
}
}
return cl.getResource(string);
}
@Override
public synchronized void clearAssertionStatus()
{
cl.clearAssertionStatus();
}
@Override
public InputStream getResourceAsStream(final String string)
{
final File file = new File(dataFolder, string);
if (file.exists())
{
BufferedReader br = null;
try
{
br = new BufferedReader(new FileReader(file));
final String version = br.readLine();
if (version == null || !version.equals("#version: " + ess.getDescription().getVersion()))
{
logger.log(Level.WARNING, String.format("Translation file %s is not updated for Essentials version. Will use default.", file));
return cl.getResourceAsStream(string);
}
return new FileInputStream(file);
}
catch (IOException ex)
{
return cl.getResourceAsStream(string);
}
finally
{
if (br != null)
{
try
{
br.close();
}
catch (IOException ex)
{
}
}
}
}
return cl.getResourceAsStream(string);
}
@Override
public Enumeration<URL> getResources(final String string) throws IOException
{
return cl.getResources(string);
}
@Override
public Class<?> loadClass(final String string) throws ClassNotFoundException
{
return cl.loadClass(string);
}
@Override
public synchronized void setClassAssertionStatus(final String string, final boolean bln)
{
cl.setClassAssertionStatus(string, bln);
}
@Override
public synchronized void setDefaultAssertionStatus(final boolean bln)
{
cl.setDefaultAssertionStatus(bln);
}
@Override
public synchronized void setPackageAssertionStatus(final String string, final boolean bln)
{
cl.setPackageAssertionStatus(string, bln);
}
}
private static final Locale defaultLocale = Locale.getDefault();
private static Locale currentLocale = defaultLocale;
private static ResourceBundle bundle = ResourceBundle.getBundle("messages", defaultLocale);
private static ResourceBundle defaultBundle = ResourceBundle.getBundle("messages", Locale.US);
public static String i18n(String string)
{
try
{
return bundle.getString(string);
}
catch (MissingResourceException ex)
{
logger.log(Level.WARNING, String.format("Missing translation key \"%s\" in translation file %s", ex.getKey(), bundle.getLocale().toString()), ex);
return defaultBundle.getString(string);
}
}
public static String format(String string, Object... objects)
{
MessageFormat mf = new MessageFormat(i18n(string));
return mf.format(objects);
}
public static void updateLocale(String loc, IEssentials ess)
{
if (loc == null || loc.isEmpty())
{
return;
}
String[] parts = loc.split("[_\\.]");
if (parts.length == 1)
{
currentLocale = new Locale(parts[0]);
}
if (parts.length == 2)
{
currentLocale = new Locale(parts[0], parts[1]);
}
if (parts.length == 3)
{
currentLocale = new Locale(parts[0], parts[1], parts[2]);
}
logger.log(Level.INFO, String.format("Using locale %s", currentLocale.toString()));
bundle = ResourceBundle.getBundle("messages", currentLocale, new ConfigClassLoader(Util.class.getClassLoader(), ess));
if (!bundle.keySet().containsAll(defaultBundle.keySet()))
{
logger.log(Level.WARNING, String.format("Translation file %s does not contain all translation keys.", currentLocale.toString()));
}
}
public static String joinList(Object... list)
{
return joinList(", ", list);
}
public static String joinList(String seperator, Object... list)
{
StringBuilder buf = new StringBuilder();
for (Object each : list)
{
if (buf.length() > 0)
{
buf.append(seperator);
}
if(each instanceof List)
{
buf.append(joinList(seperator, ((List)each).toArray()));
}
else
{
try
{
buf.append(each.toString());
}
catch (Exception e)
{
buf.append(each.toString());
}
}
}
return buf.toString();
}
public static String capitalCase(String s)
{
return s.toUpperCase().charAt(0) + s.toLowerCase().substring(1);
}
}

View File

@@ -1,154 +0,0 @@
package com.earth2me.essentials;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.Location;
import org.bukkit.Server;
public class Warps implements IConf
{
private static final Logger logger = Logger.getLogger("Minecraft");
private final Map<StringIgnoreCase, EssentialsConf> warpPoints = new HashMap<StringIgnoreCase, EssentialsConf>();
private final File warpsFolder;
private final Server server;
public Warps(Server server, File dataFolder)
{
this.server = server;
warpsFolder = new File(dataFolder, "warps");
if (!warpsFolder.exists())
{
warpsFolder.mkdirs();
}
reloadConfig();
}
public boolean isEmpty()
{
return warpPoints.isEmpty();
}
public Collection<String> getWarpNames()
{
final List<String> keys = new ArrayList<String>();
for (StringIgnoreCase stringIgnoreCase : warpPoints.keySet())
{
keys.add(stringIgnoreCase.getString());
}
Collections.sort(keys, String.CASE_INSENSITIVE_ORDER);
return keys;
}
public Location getWarp(String warp) throws Exception
{
EssentialsConf conf = warpPoints.get(new StringIgnoreCase(warp));
if (conf == null)
{
throw new Exception(Util.i18n("warpNotExist"));
}
return conf.getLocation(null, server);
}
public void setWarp(String name, Location loc) throws Exception
{
String filename = Util.sanitizeFileName(name);
EssentialsConf conf = warpPoints.get(new StringIgnoreCase(name));
if (conf == null)
{
File confFile = new File(warpsFolder, filename + ".yml");
if (confFile.exists())
{
throw new Exception(Util.i18n("similarWarpExist"));
}
conf = new EssentialsConf(confFile);
warpPoints.put(new StringIgnoreCase(name), conf);
}
conf.setProperty(null, loc);
conf.setProperty("name", name);
conf.save();
}
public void delWarp(String name) throws Exception
{
EssentialsConf conf = warpPoints.get(new StringIgnoreCase(name));
if (conf == null)
{
throw new Exception(Util.i18n("warpNotExist"));
}
if (!conf.getFile().delete())
{
throw new Exception(Util.i18n("warpDeleteError"));
}
warpPoints.remove(new StringIgnoreCase(name));
}
public final void reloadConfig()
{
warpPoints.clear();
File[] listOfFiles = warpsFolder.listFiles();
if (listOfFiles.length >= 1)
{
for (int i = 0; i < listOfFiles.length; i++)
{
String filename = listOfFiles[i].getName();
if (listOfFiles[i].isFile() && filename.endsWith(".yml"))
{
try
{
EssentialsConf conf = new EssentialsConf(listOfFiles[i]);
conf.load();
String name = conf.getString("name");
if (name != null)
{
warpPoints.put(new StringIgnoreCase(name), conf);
}
}
catch (Exception ex)
{
logger.log(Level.WARNING, Util.format("loadWarpError", filename), ex);
}
}
}
}
}
private static class StringIgnoreCase
{
private final String string;
public StringIgnoreCase(String string)
{
this.string = string;
}
@Override
public int hashCode()
{
return getString().toLowerCase().hashCode();
}
@Override
public boolean equals(Object o)
{
if (o instanceof StringIgnoreCase)
{
return getString().equalsIgnoreCase(((StringIgnoreCase)o).getString());
}
return false;
}
public String getString()
{
return string;
}
}
}

View File

@@ -1,54 +0,0 @@
package com.earth2me.essentials;
import java.io.File;
import java.util.logging.Logger;
import org.bukkit.inventory.ItemStack;
public class Worth implements IConf
{
private static final Logger logger = Logger.getLogger("Minecraft");
private final EssentialsConf config;
public Worth(File dataFolder)
{
config = new EssentialsConf(new File(dataFolder, "worth.yml"));
config.setTemplateName("/worth.yml");
config.load();
}
public double getPrice(ItemStack itemStack)
{
String itemname = itemStack.getType().toString().toLowerCase().replace("_", "");
double result;
result = config.getDouble("worth."+itemname+"."+itemStack.getDurability(), Double.NaN);
if (Double.isNaN(result)) {
result = config.getDouble("worth."+itemname+".0", Double.NaN);
}
if (Double.isNaN(result)) {
result = config.getDouble("worth."+itemname, Double.NaN);
}
if (Double.isNaN(result)) {
result = config.getDouble("worth-"+itemStack.getTypeId(), Double.NaN);
}
return result;
}
public void setPrice(ItemStack itemStack, double price)
{
if (itemStack.getType().getData() == null) {
config.setProperty("worth." + itemStack.getType().toString().toLowerCase().replace("_", ""), price);
} else {
// Bukkit-bug: getDurability still contains the correct value, while getData().getData() is 0.
config.setProperty("worth." + itemStack.getType().toString().toLowerCase().replace("_", "")+"."+itemStack.getDurability(), price);
}
config.removeProperty("worth-"+itemStack.getTypeId());
config.save();
}
public void reloadConfig()
{
config.load();
}
}

View File

@@ -1,13 +0,0 @@
package com.earth2me.essentials.api;
import com.earth2me.essentials.Util;
public class NoLoanPermittedException extends Exception
{
public NoLoanPermittedException()
{
super(Util.i18n("negativeBalanceError"));
}
}

View File

@@ -1,13 +0,0 @@
package com.earth2me.essentials.api;
import com.earth2me.essentials.Util;
public class UserDoesNotExistException extends Exception
{
public UserDoesNotExistException(String name)
{
super(Util.format("userDoesNotExist", name));
}
}

View File

@@ -1,52 +0,0 @@
package com.earth2me.essentials.commands;
import org.bukkit.Server;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
public class Commandafk extends EssentialsCommand
{
public Commandafk()
{
super("afk");
}
@Override
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
if (args.length > 0 && user.isAuthorized("essentials.afk.others"))
{
User afkUser = ess.getUser(ess.getServer().matchPlayer(args[0]));
if (afkUser != null)
{
toggleAfk(afkUser);
}
}
else
{
toggleAfk(user);
}
}
private final void toggleAfk(User user)
{
if (!user.toggleAfk())
{
//user.sendMessage(Util.i18n("markedAsNotAway"));
if (!user.isHidden())
{
ess.broadcastMessage(user, Util.format("userIsNotAway", user.getDisplayName()));
}
user.updateActivity(false);
}
else
{
//user.sendMessage(Util.i18n("markedAsAway"));
if (!user.isHidden())
{
ess.broadcastMessage(user, Util.format("userIsAway", user.getDisplayName()));
}
}
}
}

View File

@@ -1,26 +0,0 @@
package com.earth2me.essentials.commands;
import org.bukkit.Location;
import org.bukkit.Server;
import com.earth2me.essentials.User;
import com.earth2me.essentials.TargetBlock;
import org.bukkit.entity.TNTPrimed;
public class Commandantioch extends EssentialsCommand
{
public Commandantioch()
{
super("antioch");
}
@Override
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
{
ess.broadcastMessage(user, "...lobbest thou thy Holy Hand Grenade of Antioch towards thy foe,");
ess.broadcastMessage(user, "who being naughty in My sight, shall snuff it.");
final Location loc = new TargetBlock(user).getTargetBlock().getLocation();
loc.getWorld().spawn(loc, TNTPrimed.class);
}
}

View File

@@ -1,24 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.Trade;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import org.bukkit.Server;
public class Commandback extends EssentialsCommand
{
public Commandback()
{
super("back");
}
@Override
protected void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
Trade charge = new Trade(this.getName(), ess);
charge.isAffordableFor(user);
user.sendMessage(Util.i18n("backUsageMsg"));
user.getTeleport().back(charge);
}
}

View File

@@ -1,27 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.Backup;
import com.earth2me.essentials.Util;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
public class Commandbackup extends EssentialsCommand
{
public Commandbackup()
{
super("backup");
}
@Override
protected void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
Backup backup = ess.getBackup();
if (backup == null)
{
throw new Exception();
}
backup.run();
sender.sendMessage(Util.i18n("backupStarted"));
}
}

View File

@@ -1,36 +0,0 @@
package com.earth2me.essentials.commands;
import org.bukkit.Server;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import org.bukkit.command.CommandSender;
public class Commandbalance extends EssentialsCommand
{
public Commandbalance()
{
super("balance");
}
@Override
protected void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
sender.sendMessage(Util.format("balance", Util.formatCurrency(getPlayer(server, args, 0, true).getMoney(), ess)));
}
@Override
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
double bal = (args.length < 1
|| !(user.isAuthorized("essentials.balance.others")
|| user.isAuthorized("essentials.balance.other"))
? user
: getPlayer(server, args, 0, true)).getMoney();
user.sendMessage(Util.format("balance", Util.formatCurrency(bal, ess)));
}
}

View File

@@ -1,67 +0,0 @@
package com.earth2me.essentials.commands;
import java.util.Map.Entry;
import org.bukkit.Server;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.command.CommandSender;
public class Commandbalancetop extends EssentialsCommand
{
public Commandbalancetop()
{
super("balancetop");
}
@Override
protected void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
int max = 10;
if (args.length > 0)
{
try
{
if (Integer.parseInt(args[0]) < 10)
{
max = Integer.parseInt(args[0]);
}
}
catch (NumberFormatException ex)
{
//catch it because they tried to enter a string not number.
}
}
final Map<User, Double> balances = new HashMap<User, Double>();
for (User u : ess.getUserMap().getAllUsers())
{
balances.put(u, u.getMoney());
}
final List<Map.Entry<User, Double>> sortedEntries = new ArrayList<Map.Entry<User, Double>>(balances.entrySet());
Collections.sort(sortedEntries, new Comparator<Map.Entry<User, Double>>()
{
public int compare(final Entry<User, Double> entry1, final Entry<User, Double> entry2)
{
return -entry1.getValue().compareTo(entry2.getValue());
}
});
int count = 0;
sender.sendMessage(Util.format("balanceTop", max));
for (Map.Entry<User, Double> entry : sortedEntries)
{
if (count == max)
{
break;
}
sender.sendMessage(entry.getKey().getDisplayName() + ", " + Util.formatCurrency(entry.getValue(), ess));
count++;
}
}
}

View File

@@ -1,68 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.Console;
import com.earth2me.essentials.OfflinePlayer;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import org.bukkit.entity.Player;
public class Commandban extends EssentialsCommand
{
public Commandban()
{
super("ban");
}
@Override
public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
final User player = getPlayer(server, args, 0, true);
if (player.getBase() instanceof OfflinePlayer)
{
if (sender instanceof Player
&& !ess.getUser(sender).isAuthorized("essentials.ban.offline"))
{
sender.sendMessage(Util.i18n("banExempt"));
return;
}
}
else
{
if (player.isAuthorized("essentials.ban.exempt"))
{
sender.sendMessage(Util.i18n("banExempt"));
return;
}
}
String banReason;
if (args.length > 1)
{
banReason = getFinalArg(args, 1);
player.setBanReason(commandLabel);
}
else
{
banReason = Util.i18n("defaultBanReason");
}
player.setBanned(true);
player.kickPlayer(banReason);
String senderName = sender instanceof Player ? ((Player)sender).getDisplayName() : Console.NAME;
for(Player p : server.getOnlinePlayers())
{
User u = ess.getUser(p);
if(u.isAuthorized("essentials.ban.notify"))
{
p.sendMessage(Util.format("playerBanned", senderName, player.getName(), banReason));
}
}
}
}

View File

@@ -1,37 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
public class Commandbanip extends EssentialsCommand
{
public Commandbanip()
{
super("banip");
}
@Override
public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
final User u = ess.getUser(args[0]);
if (u == null)
{
ess.getServer().banIP(args[0]);
sender.sendMessage(Util.i18n("banIpAddress"));
}
else
{
ess.getServer().banIP(u.getAddress().getAddress().getHostAddress());
sender.sendMessage(Util.i18n("banIpAddress"));
}
}
}

View File

@@ -1,51 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.TargetBlock;
import org.bukkit.Server;
import org.bukkit.TreeType;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import org.bukkit.Location;
public class Commandbigtree extends EssentialsCommand
{
public Commandbigtree()
{
super("bigtree");
}
@Override
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
TreeType tree;
if (args.length > 0 && args[0].equalsIgnoreCase("redwood"))
{
tree = TreeType.TALL_REDWOOD;
}
else if (args.length > 0 && args[0].equalsIgnoreCase("tree"))
{
tree = TreeType.BIG_TREE;
}
else
{
throw new NotEnoughArgumentsException();
}
final int[] ignore =
{
8, 9
};
final Location loc = (new TargetBlock(user, 300, 0.2, ignore)).getTargetBlock().getLocation();
final Location safeLocation = Util.getSafeDestination(loc);
final boolean success = user.getWorld().generateTree(safeLocation, (TreeType)tree);
if (success)
{
user.sendMessage(Util.i18n("bigTreeSuccess"));
}
else
{
throw new Exception(Util.i18n("bigTreeFailure"));
}
}
}

View File

@@ -1,27 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.Util;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class Commandbroadcast extends EssentialsCommand
{
public Commandbroadcast()
{
super("broadcast");
}
@Override
public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
ess.broadcastMessage(null,
Util.format("broadcast", getFinalArg(args, 0)));
}
}

View File

@@ -1,30 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.Util;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class Commandburn extends EssentialsCommand
{
public Commandburn()
{
super("burn");
}
@Override
protected void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
if (args.length < 2)
{
throw new NotEnoughArgumentsException();
}
for (Player p : server.matchPlayer(args[0]))
{
p.setFireTicks(Integer.parseInt(args[1]) * 20);
sender.sendMessage(Util.format("burnMsg", p.getDisplayName(), Integer.parseInt(args[1])));
}
}
}

View File

@@ -1,97 +0,0 @@
package com.earth2me.essentials.commands;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.List;
public class Commandclearinventory extends EssentialsCommand
{
public Commandclearinventory()
{
super("clearinventory");
}
@Override
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
if (args.length > 0 && user.isAuthorized("essentials.clearinventory.others"))
{
//TODO: Fix fringe user match case.
if (args[0].length() >= 3)
{
List<Player> online = server.matchPlayer(args[0]);
if (!online.isEmpty())
{
for (Player p : online)
{
p.getInventory().clear();
user.sendMessage(Util.format("inventoryClearedOthers", p.getDisplayName()));
}
return;
}
throw new Exception(Util.i18n("playerNotFound"));
}
else
{
Player p = server.getPlayer(args[0]);
if (p != null)
{
p.getInventory().clear();
user.sendMessage(Util.format("inventoryClearedOthers", p.getDisplayName()));
}
else
{
throw new Exception(Util.i18n("playerNotFound"));
}
}
}
else
{
user.getInventory().clear();
user.sendMessage(Util.i18n("inventoryCleared"));
}
}
@Override
protected void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
if (args[0].length() >= 3)
{
List<Player> online = server.matchPlayer(args[0]);
if (!online.isEmpty())
{
for (Player p : online)
{
p.getInventory().clear();
sender.sendMessage(Util.format("inventoryClearedOthers", p.getDisplayName()));
}
return;
}
throw new Exception(Util.i18n("playerNotFound"));
}
else
{
Player u = server.getPlayer(args[0]);
if (u != null)
{
u.getInventory().clear();
sender.sendMessage(Util.format("inventoryClearedOthers", u.getDisplayName()));
}
else
{
throw new Exception(Util.i18n("playerNotFound"));
}
}
}
}

View File

@@ -1,31 +0,0 @@
package com.earth2me.essentials.commands;
import org.bukkit.Server;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
public class Commandcompass extends EssentialsCommand
{
public Commandcompass()
{
super("compass");
}
@Override
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
int r = (int)user.getLocation().getYaw();
String dir;
if (r < 23) dir = "N";
else if (r < 68) dir = "NE";
else if (r < 113) dir = "E";
else if (r < 158) dir = "SE";
else if (r < 203) dir = "S";
else if (r < 248) dir = "SW";
else if (r < 293) dir = "W";
else if (r < 338) dir = "NW";
else dir = "N";
user.sendMessage(Util.format("compassBearing", dir, r));
}
}

View File

@@ -1,48 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.User;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import com.earth2me.essentials.Util;
public class Commanddelhome extends EssentialsCommand
{
public Commanddelhome()
{
super("delhome");
}
@Override
public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
//Allowing both formats /delhome khobbits house | /delhome khobbits:house
final String[] nameParts = args[0].split(":");
if (nameParts[0].length() != args[0].length())
{
args = nameParts;
}
User user = ess.getUser(sender);
String name;
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
else if (args.length > 1 && (user == null || user.isAuthorized("essentials.delhome.others")))
{
user = getPlayer(server, args, 0, true);
name = args[1];
}
else
{
if (user == null)
{
throw new NotEnoughArgumentsException();
}
name = args[0];
}
user.delHome(name.toLowerCase());
sender.sendMessage(Util.format("deleteHome", name));
}
}

View File

@@ -1,22 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.Util;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
public class Commanddeljail extends EssentialsCommand {
public Commanddeljail() {
super("deljail");
}
@Override
protected void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception {
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
ess.getJail().delJail(args[0]);
sender.sendMessage(Util.format("deleteJail", args[0]));
}
}

View File

@@ -1,25 +0,0 @@
package com.earth2me.essentials.commands;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import com.earth2me.essentials.Util;
public class Commanddelwarp extends EssentialsCommand
{
public Commanddelwarp()
{
super("delwarp");
}
@Override
public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
ess.getWarps().delWarp(args[0]);
sender.sendMessage(Util.format("deleteWarp", args[0]));
}
}

View File

@@ -1,32 +0,0 @@
package com.earth2me.essentials.commands;
import org.bukkit.Server;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
public class Commanddepth extends EssentialsCommand
{
public Commanddepth()
{
super("depth");
}
@Override
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
int y = user.getLocation().getBlockY() - 63;
if (y > 0)
{
user.sendMessage(Util.format("depthAboveSea", y));
}
else if (y < 0)
{
user.sendMessage(Util.format("depthBelowSea", (-y)));
}
else
{
user.sendMessage(Util.i18n("depth"));
}
}
}

View File

@@ -1,80 +0,0 @@
package com.earth2me.essentials.commands;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import com.earth2me.essentials.User;
public class Commandeco extends EssentialsCommand
{
public Commandeco()
{
super("eco");
}
@Override
public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
if (args.length < 2)
{
throw new NotEnoughArgumentsException();
}
EcoCommands cmd;
double amount;
try
{
cmd = EcoCommands.valueOf(args[0].toUpperCase());
amount = Double.parseDouble(args[2].replaceAll("[^0-9\\.]", ""));
}
catch (Exception ex)
{
throw new NotEnoughArgumentsException(ex);
}
if (args[1].contentEquals("*"))
{
for (Player p : server.getOnlinePlayers())
{
User u = ess.getUser(p);
switch (cmd)
{
case GIVE:
u.giveMoney(amount);
break;
case TAKE:
u.takeMoney(amount);
break;
case RESET:
u.setMoney(amount == 0 ? ess.getSettings().getStartingBalance() : amount);
break;
}
}
}
else
{
User u = getPlayer(server, args, 1, true);
switch (cmd)
{
case GIVE:
u.giveMoney(amount, sender);
break;
case TAKE:
u.takeMoney(amount, sender);
break;
case RESET:
u.setMoney(amount == 0 ? ess.getSettings().getStartingBalance() : amount);
break;
}
}
}
private enum EcoCommands
{
GIVE, TAKE, RESET
}
}

View File

@@ -1,119 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.Util;
import java.util.HashMap;
import java.util.Map;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.block.Block;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class Commandessentials extends EssentialsCommand
{
public Commandessentials()
{
super("essentials");
}
private transient int taskid;
private final transient Map<Player, Block> noteBlocks = new HashMap<Player, Block>();
@Override
public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{
final Map<String, Byte> noteMap = new HashMap<String, Byte>();
noteMap.put("1F#", (byte)0x0);
noteMap.put("1G", (byte)0x1);
noteMap.put("1G#", (byte)0x2);
noteMap.put("1A", (byte)0x3);
noteMap.put("1A#", (byte)0x4);
noteMap.put("1B", (byte)0x5);
noteMap.put("1C", (byte)0x6);
noteMap.put("1C#", (byte)0x7);
noteMap.put("1D", (byte)0x8);
noteMap.put("1D#", (byte)0x9);
noteMap.put("1E", (byte)0xA);
noteMap.put("1F", (byte)0xB);
noteMap.put("2F#", (byte)(0x0 + 0xC));
noteMap.put("2G", (byte)(0x1 + 0xC));
noteMap.put("2G#", (byte)(0x2 + 0xC));
noteMap.put("2A", (byte)(0x3 + 0xC));
noteMap.put("2A#", (byte)(0x4 + 0xC));
noteMap.put("2B", (byte)(0x5 + 0xC));
noteMap.put("2C", (byte)(0x6 + 0xC));
noteMap.put("2C#", (byte)(0x7 + 0xC));
noteMap.put("2D", (byte)(0x8 + 0xC));
noteMap.put("2D#", (byte)(0x9 + 0xC));
noteMap.put("2E", (byte)(0xA + 0xC));
noteMap.put("2F", (byte)(0xB + 0xC));
if (args.length > 0 && args[0].equalsIgnoreCase("nya"))
{
if (!noteBlocks.isEmpty())
{
return;
}
final String tuneStr = "1D#,1E,2F#,,2A#,1E,1D#,1E,2F#,2B,2D#,2E,2D#,2A#,2B,,2F#,,1D#,1E,2F#,2B,2C#,2A#,2B,2C#,2E,2D#,2E,2C#,,2F#,,2G#,,1D,1D#,,1C#,1D,1C#,1B,,1B,,1C#,,1D,,1D,1C#,1B,1C#,1D#,2F#,2G#,1D#,2F#,1C#,1D#,1B,1C#,1B,1D#,,2F#,,2G#,1D#,2F#,1C#,1D#,1B,1D,1D#,1D,1C#,1B,1C#,1D,,1B,1C#,1D#,2F#,1C#,1D,1C#,1B,1C#,,1B,,1C#,,2F#,,2G#,,1D,1D#,,1C#,1D,1C#,1B,,1B,,1C#,,1D,,1D,1C#,1B,1C#,1D#,2F#,2G#,1D#,2F#,1C#,1D#,1B,1C#,1B,1D#,,2F#,,2G#,1D#,2F#,1C#,1D#,1B,1D,1D#,1D,1C#,1B,1C#,1D,,1B,1C#,1D#,2F#,1C#,1D,1C#,1B,1C#,,1B,,1B,,1B,,1F#,1G#,1B,,1F#,1G#,1B,1C#,1D#,1B,1E,1D#,1E,2F#,1B,,1B,,1F#,1G#,1B,1E,1D#,1C#,1B,,,,1F#,1B,,1F#,1G#,1B,,1F#,1G#,1B,1B,1C#,1D#,1B,1F#,1G#,1F#,1B,,1B,1A#,1B,1F#,1G#,1B,1E,1D#,1E,2F#,1B,,1A#,,1B,,1F#,1G#,1B,,1F#,1G#,1B,1C#,1D#,1B,1E,1D#,1E,2F#,1B,,1B,,1F#,1G#,1B,1F#,1E,1D#,1C#,1B,,,,1F#,1B,,1F#,1G#,1B,,1F#,1G#,1B,1B,1C#,1D#,1B,1F#,1G#,1F#,1B,,1B,1A#,1B,1F#,1G#,1B,1E,1D#,1E,2F#,1B,,1A#,,1B,,1F#,1G#,1B,,1F#,1G#,1B,1C#,1D#,1B,1E,1D#,1E,2F#,1B,,1B,,1F#,1G#,1B,1F#,1E,1D#,1C#,1B,,,,1F#,1B,,1F#,1G#,1B,,1F#,1G#,1B,1B,1C#,1D#,1B,1F#,1G#,1F#,1B,,1B,1A#,1B,1F#,1G#,1B,1E,1D#,1E,2F#,1B,,1A#,,1B,,1F#,1G#,1B,,1F#,1G#,1B,1C#,1D#,1B,1E,1D#,1E,2F#,1B,,1B,,1F#,1G#,1B,1F#,1E,1D#,1C#,1B,,,,1F#,1B,,1F#,1G#,1B,,1F#,1G#,1B,1B,1C#,1D#,1B,1F#,1G#,1F#,1B,,1B,1A#,1B,1F#,1G#,1B,1E,1D#,1E,2F#,1B,,1A#,,1B,,1F#,1G#,1B,,1F#,1G#,1B,1C#,1D#,1B,1E,1D#,1E,2F#,1B,,1B,,1F#,1G#,1B,1F#,1E,1D#,1C#,1B,,,,1F#,1B,,1F#,1G#,1B,,1F#,1G#,1B,1B,1C#,1D#,1B,1F#,1G#,1F#,1B,,1B,1A#,1B,1F#,1G#,1B,1E,1D#,1E,2F#,1B,,1B,,";
final String[] tune = tuneStr.split(",");
for (Player player : server.getOnlinePlayers())
{
final Location loc = player.getLocation();
loc.add(0, 3, 0);
while (loc.getBlockY() < player.getLocation().getBlockY() + 10 && loc.getBlock().getTypeId() != 0)
{
loc.add(0, 1, 0);
}
if (loc.getBlock().getTypeId() == 0)
{
noteBlocks.put(player, loc.getBlock());
loc.getBlock().setType(Material.NOTE_BLOCK);
}
}
taskid = ess.scheduleSyncRepeatingTask(new Runnable()
{
int i = 0;
public void run()
{
final String note = tune[i];
i++;
if (i >= tune.length)
{
Commandessentials.this.stopTune();
}
if (note.isEmpty())
{
return;
}
Map<Player, Block> noteBlocks = Commandessentials.this.noteBlocks;
for (Player player : server.getOnlinePlayers())
{
Block block = noteBlocks.get(player);
if (block == null || block.getType() != Material.NOTE_BLOCK)
{
continue;
}
player.playNote(block.getLocation(), (byte)0, noteMap.get(note));
}
}
}, 20, 2);
return;
}
ess.reload();
sender.sendMessage(Util.format("essentialsReload", ess.getDescription().getVersion()));
}
private void stopTune()
{
ess.getScheduler().cancelTask(taskid);
for (Block block : noteBlocks.values())
{
if (block.getType() == Material.NOTE_BLOCK)
{
block.setType(Material.AIR);
}
}
noteBlocks.clear();
}
}

View File

@@ -1,49 +0,0 @@
package com.earth2me.essentials.commands;
import org.bukkit.Server;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class Commandext extends EssentialsCommand
{
public Commandext()
{
super("ext");
}
@Override
protected void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
extinguishPlayers(server, sender, args[0]);
}
@Override
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
if (args.length < 1)
{
user.setFireTicks(0);
user.sendMessage(Util.i18n("extinguish"));
return;
}
extinguishPlayers(server, user, commandLabel);
}
private void extinguishPlayers(Server server, CommandSender sender, String name) throws Exception
{
for (Player p : server.matchPlayer(name))
{
p.setFireTicks(0);
sender.sendMessage(Util.format("extinguishOthers", p.getDisplayName()));
}
}
}

View File

@@ -1,23 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.User;
import org.bukkit.Server;
import org.bukkit.entity.Fireball;
import org.bukkit.util.Vector;
public class Commandfireball extends EssentialsCommand
{
public Commandfireball()
{
super("fireball");
}
@Override
protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
{
final Vector direction = user.getEyeLocation().getDirection().multiply(2);
user.getWorld().spawn(user.getEyeLocation().add(direction.getX(), direction.getY(), direction.getZ()), Fireball.class);
}
}

View File

@@ -1,30 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.Util;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
public class Commandgc extends EssentialsCommand
{
public Commandgc()
{
super("gc");
}
@Override
protected void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
sender.sendMessage(Util.format("gcmax", (Runtime.getRuntime().maxMemory() / 1024 / 1024)));
sender.sendMessage(Util.format("gcfree", (Runtime.getRuntime().freeMemory() / 1024 / 1024)));
sender.sendMessage(Util.format("gctotal", (Runtime.getRuntime().totalMemory() / 1024 / 1024)));
for (World w : server.getWorlds())
{
sender.sendMessage(
(w.getEnvironment() == World.Environment.NETHER ? "Nether" : "World") + " \"" + w.getName() + "\": "
+ w.getLoadedChunks().length + Util.i18n("gcchunks")
+ w.getEntities().size() + Util.i18n("gcentities"));
}
}
}

View File

@@ -1,25 +0,0 @@
package com.earth2me.essentials.commands;
import org.bukkit.Location;
import org.bukkit.Server;
import com.earth2me.essentials.User;
public class Commandgetpos extends EssentialsCommand
{
public Commandgetpos()
{
super("getpos");
}
@Override
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
Location coords = user.getLocation();
user.sendMessage("§7X: " + coords.getBlockX() + " (-North <-> +South)");
user.sendMessage("§7Y: " + coords.getBlockY() + " (+Up <-> -Down)");
user.sendMessage("§7Z: " + coords.getBlockZ() + " (+East <-> -West)");
user.sendMessage("§7Yaw: " + coords.getYaw() + " (Rotation)");
user.sendMessage("§7Pitch: " + coords.getPitch() + " (Head angle)");
}
}

View File

@@ -1,57 +0,0 @@
package com.earth2me.essentials.commands;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import com.earth2me.essentials.User;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public class Commandgive extends EssentialsCommand
{
public Commandgive()
{
super("give");
}
//TODO: move these messages to message file
@Override
public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
if (args.length < 2)
{
throw new NotEnoughArgumentsException();
}
ItemStack stack = ess.getItemDb().get(args[1]);
String itemname = stack.getType().toString().toLowerCase().replace("_", "");
if (sender instanceof Player
&& (ess.getSettings().permissionBasedItemSpawn()
? (!ess.getUser(sender).isAuthorized("essentials.give.item-all")
&& !ess.getUser(sender).isAuthorized("essentials.give.item-" + itemname)
&& !ess.getUser(sender).isAuthorized("essentials.give.item-" + stack.getTypeId()))
: (!ess.getUser(sender).isAuthorized("essentials.itemspawn.exempt")
&& !ess.getUser(sender).canSpawnItem(stack.getTypeId()))))
{
throw new Exception(ChatColor.RED + "You are not allowed to spawn the item " + itemname);
}
if (args.length > 2 && Integer.parseInt(args[2]) > 0)
{
stack.setAmount(Integer.parseInt(args[2]));
}
if (stack.getType() == Material.AIR)
{
throw new Exception(ChatColor.RED + "You can't give air.");
}
User giveTo = getPlayer(server, args, 0);
String itemName = stack.getType().toString().toLowerCase().replace('_', ' ');
sender.sendMessage(ChatColor.BLUE + "Giving " + stack.getAmount() + " of " + itemName + " to " + giveTo.getDisplayName() + ".");
giveTo.getInventory().addItem(stack);
giveTo.updateInventory();
}
}

View File

@@ -1,54 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class Commandgod extends EssentialsCommand
{
public Commandgod()
{
super("god");
}
@Override
protected void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
godOtherPlayers(server, sender, args[0]);
}
@Override
protected void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
if (args.length > 0 && user.isAuthorized("essentials.god.others"))
{
godOtherPlayers(server, user, args[0]);
return;
}
user.sendMessage(Util.format("godMode", (user.toggleGodModeEnabled()? Util.i18n("enabled") : Util.i18n("disabled"))));
}
private void godOtherPlayers(Server server, CommandSender sender, String name)
{
for (Player p : server.matchPlayer(name))
{
User u = ess.getUser(p);
if (u.isHidden())
{
continue;
}
boolean enabled = u.toggleGodModeEnabled();
u.sendMessage(Util.format("godMode", (enabled ? Util.i18n("enabled") : Util.i18n("disabled"))));
sender.sendMessage(Util.format("godMode",Util.format(enabled ? "godEnabledFor": "godDisabledFor", p.getDisplayName())));
}
}
}

View File

@@ -1,70 +0,0 @@
package com.earth2me.essentials.commands;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.List;
public class Commandheal extends EssentialsCommand
{
public Commandheal()
{
super("heal");
}
@Override
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
if (args.length > 0 && user.isAuthorized("essentials.heal.others"))
{
if (!user.isAuthorized("essentials.heal.cooldown.bypass"))
{
user.healCooldown();
}
healOtherPlayers(server, user, args[0]);
return;
}
if (!user.isAuthorized("essentials.heal.cooldown.bypass"))
{
user.healCooldown();
}
user.setHealth(20);
user.setFoodLevel(20);
user.sendMessage(Util.i18n("heal"));
}
@Override
public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
healOtherPlayers(server, sender, args[0]);
}
private void healOtherPlayers(Server server, CommandSender sender, String name)
{
List<Player> players = server.matchPlayer(name);
if (players.isEmpty())
{
sender.sendMessage(Util.i18n("playerNotFound"));
return;
}
for (Player p : players)
{
if (ess.getUser(p).isHidden())
{
continue;
}
p.setHealth(20);
sender.sendMessage(Util.format("healOther", p.getDisplayName()));
}
}
}

View File

@@ -1,230 +0,0 @@
package com.earth2me.essentials.commands;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.SafeConstructor;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.Map.Entry;
import java.util.logging.Level;
public class Commandhelp extends EssentialsCommand
{
private static final String DESCRIPTION = "description";
private static final String PERMISSION = "permission";
private static final String PERMISSIONS = "permissions";
public final Yaml yaml = new Yaml(new SafeConstructor());
public Commandhelp()
{
super("help");
}
@Override
protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
{
int page = 1;
String match = "";
try
{
if (args.length > 0)
{
match = args[0].toLowerCase();
page = Integer.parseInt(args[args.length - 1]);
if (args.length == 1)
{
match = "";
}
}
}
catch (Exception ex)
{
if (args.length == 1)
{
match = args[0].toLowerCase();
}
}
final List<String> lines = getHelpLines(user, match);
if (lines.isEmpty())
{
throw new Exception(Util.i18n("noHelpFound"));
}
final int start = (page - 1) * 9;
final int pages = lines.size() / 9 + (lines.size() % 9 > 0 ? 1 : 0);
user.sendMessage(Util.format("helpPages", page, pages));
for (int i = start; i < lines.size() && i < start + 9; i++)
{
user.sendMessage(lines.get(i));
}
}
@Override
protected void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{
sender.sendMessage(Util.i18n("helpConsole"));
}
@SuppressWarnings("CallToThreadDumpStack")
private List<String> getHelpLines(final User user, final String match) throws Exception
{
final List<String> retval = new ArrayList<String>();
File helpFile = new File(ess.getDataFolder(), "help_" + Util.sanitizeFileName(user.getName()) + ".txt");
if (!helpFile.exists())
{
helpFile = new File(ess.getDataFolder(), "help_" + Util.sanitizeFileName(user.getGroup()) + ".txt");
}
if (!helpFile.exists())
{
helpFile = new File(ess.getDataFolder(), "help.txt");
}
if (helpFile.exists())
{
final BufferedReader bufferedReader = new BufferedReader(new FileReader(helpFile));
try
{
while (bufferedReader.ready())
{
final String line = bufferedReader.readLine();
retval.add(line.replace('&', '§'));
}
}
finally
{
bufferedReader.close();
}
return retval;
}
boolean reported = false;
String pluginName = "";
for (Plugin p : ess.getServer().getPluginManager().getPlugins())
{
try
{
final PluginDescriptionFile desc = p.getDescription();
final HashMap<String, HashMap<String, Object>> cmds = (HashMap<String, HashMap<String, Object>>)desc.getCommands();
pluginName = p.getDescription().getName().toLowerCase();
for (Entry<String, HashMap<String, Object>> k : cmds.entrySet())
{
try
{
if ((!match.equalsIgnoreCase(""))
&& (!k.getKey().toLowerCase().contains(match))
&& (!(k.getValue().get(DESCRIPTION) instanceof String
&& ((String)k.getValue().get(DESCRIPTION)).toLowerCase().contains(match)))
&& (!pluginName.contains(match)))
{
continue;
}
if (pluginName.contains("essentials"))
{
final String node = "essentials." + k.getKey();
if (!ess.getSettings().isCommandDisabled(k.getKey()) && user.isAuthorized(node))
{
retval.add("§c" + k.getKey() + "§7: " + k.getValue().get(DESCRIPTION));
}
}
else
{
if (ess.getSettings().showNonEssCommandsInHelp())
{
final HashMap<String, Object> value = k.getValue();
if (value.containsKey(PERMISSION) && value.get(PERMISSION) instanceof String && !(value.get(PERMISSION).equals("")))
{
if (user.isAuthorized((String)value.get(PERMISSION)))
{
retval.add("§c" + k.getKey() + "§7: " + value.get(DESCRIPTION));
}
}
else if (value.containsKey(PERMISSION) && value.get(PERMISSION) instanceof List && !((List<Object>)value.get(PERMISSION)).isEmpty())
{
boolean enabled = false;
for (Object o : (List<Object>)value.get(PERMISSION))
{
if (o instanceof String && user.isAuthorized((String)o))
{
enabled = true;
break;
}
}
if (enabled)
{
retval.add("§c" + k.getKey() + "§7: " + value.get(DESCRIPTION));
}
}
else if (value.containsKey(PERMISSIONS) && value.get(PERMISSIONS) instanceof String && !(value.get(PERMISSIONS).equals("")))
{
if (user.isAuthorized((String)value.get(PERMISSIONS)))
{
retval.add("§c" + k.getKey() + "§7: " + value.get(DESCRIPTION));
}
}
else if (value.containsKey(PERMISSIONS) && value.get(PERMISSIONS) instanceof List && !((List<Object>)value.get(PERMISSIONS)).isEmpty())
{
boolean enabled = false;
for (Object o : (List<Object>)value.get(PERMISSIONS))
{
if (o instanceof String && user.isAuthorized((String)o))
{
enabled = true;
break;
}
}
if (enabled)
{
retval.add("§c" + k.getKey() + "§7: " + value.get(DESCRIPTION));
}
}
else if (user.isAuthorized("essentials.help." + pluginName))
{
retval.add("§c" + k.getKey() + "§7: " + value.get(DESCRIPTION));
}
else
{
if (!ess.getSettings().hidePermissionlessHelp())
{
retval.add("§c" + k.getKey() + "§7: " + value.get(DESCRIPTION));
}
}
}
}
}
catch (NullPointerException ex)
{
continue;
}
}
}
catch (NullPointerException ex)
{
continue;
}
catch (Exception ex)
{
if (!reported)
{
logger.log(Level.WARNING, Util.format("commandHelpFailedForPlugin", pluginName), ex);
}
reported = true;
continue;
}
}
return retval;
}
}

View File

@@ -1,37 +0,0 @@
package com.earth2me.essentials.commands;
import org.bukkit.Server;
import org.bukkit.entity.Player;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.logging.Level;
public class Commandhelpop extends EssentialsCommand
{
public Commandhelpop()
{
super("helpop");
}
@Override
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
final String message = Util.format("helpOp", user.getDisplayName(), getFinalArg(args, 0));
logger.log(Level.INFO, message);
for (Player p : server.getOnlinePlayers())
{
User u = ess.getUser(p);
if (!u.isAuthorized("essentials.helpop.receive"))
{
continue;
}
u.sendMessage(message);
}
}
}

View File

@@ -1,67 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.Trade;
import org.bukkit.Server;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.List;
public class Commandhome extends EssentialsCommand
{
public Commandhome()
{
super("home");
}
@Override
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
Trade charge = new Trade(this.getName(), ess);
charge.isAffordableFor(user);
User u = user;
String homeName = "";
String[] nameParts;
if (args.length > 0)
{
nameParts = args[0].split(":");
if (nameParts[0].length() == args[0].length() || !user.isAuthorized("essentials.home.others"))
{
homeName = nameParts[0];
}
else
{
u = getPlayer(server, nameParts[0].split(" "), 0, true);
if (nameParts.length > 1)
{
homeName = nameParts[1];
}
}
}
try
{
user.getTeleport().home(u, homeName.toLowerCase(), charge);
}
catch (NotEnoughArgumentsException e)
{
List<String> homes = u.getHomes();
if (homes.isEmpty() && u.equals(user) && ess.getSettings().spawnIfNoHome())
{
user.getTeleport().respawn(ess.getSpawn(), charge);
}
else if (homes.isEmpty())
{
throw new Exception(u == user ? Util.i18n("noHomeSet") : Util.i18n("noHomeSetPlayer"));
}
else if (homes.size() == 1 && u.equals(user))
{
user.getTeleport().home(u, homes.get(0), charge);
}
else
{
user.sendMessage(Util.format("homes", Util.joinList(homes)));
}
}
throw new NoChargeException();
}
}

View File

@@ -1,49 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import org.bukkit.Server;
public class Commandignore extends EssentialsCommand
{
public Commandignore()
{
super("ignore");
}
@Override
protected void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
User u;
try
{
u = getPlayer(server, args, 0);
}
catch(NoSuchFieldException ex)
{
u = ess.getOfflineUser(args[0]);
}
if (u == null)
{
throw new Exception(Util.i18n("playerNotFound"));
}
String name = u.getName();
if (user.isIgnoredPlayer(name)) {
user.setIgnoredPlayer(name, false);
user.sendMessage(Util.format("unignorePlayer", u.getName()));
}
else
{
user.setIgnoredPlayer(name, true);
user.sendMessage(Util.format("ignorePlayer", u.getName()));
}
}
}

View File

@@ -1,188 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class Commandinfo extends EssentialsCommand
{
public Commandinfo()
{
super("info");
}
@Override
protected void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
String pageStr = args.length > 0 ? args[0].trim() : null;
List<String> lines = new ArrayList<String>();
List<String> chapters = new ArrayList<String>();
Map<String, Integer> bookmarks = new HashMap<String, Integer>();
File file = null;
if (sender instanceof Player)
{
User user = ess.getUser(sender);
file = new File(ess.getDataFolder(), "info_"+Util.sanitizeFileName(user.getName()) +".txt");
if (!file.exists())
{
file = new File(ess.getDataFolder(), "info_"+Util.sanitizeFileName(user.getGroup()) +".txt");
}
}
if (file == null || !file.exists())
{
file = new File(ess.getDataFolder(), "info.txt");
}
if (file.exists())
{
final BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
try
{
int lineNumber = 0;
while (bufferedReader.ready())
{
final String line = bufferedReader.readLine();
if (line.length() > 0 && line.charAt(0) == '#')
{
bookmarks.put(line.substring(1).toLowerCase().replaceAll("&[0-9a-f]", ""), lineNumber);
chapters.add(line.substring(1).replace('&', '§'));
}
lines.add(line.replace('&', '§'));
lineNumber++;
}
}
finally
{
bufferedReader.close();
}
}
else
{
file.createNewFile();
throw new Exception(Util.i18n("infoFileDoesNotExist"));
}
if (bookmarks.isEmpty())
{
int page = 1;
try
{
page = Integer.parseInt(pageStr);
}
catch (Exception ex)
{
page = 1;
}
int start = (page - 1) * 9;
int pages = lines.size() / 9 + (lines.size() % 9 > 0 ? 1 : 0);
sender.sendMessage(Util.format("infoPages", page, pages ));
for (int i = start; i < lines.size() && i < start + 9; i++)
{
sender.sendMessage(lines.get(i));
}
return;
}
if (pageStr == null || pageStr.isEmpty() || pageStr.matches("[0-9]+"))
{
if (lines.get(0).startsWith("#"))
{
sender.sendMessage(Util.i18n("infoChapter"));
StringBuilder sb = new StringBuilder();
boolean first = true;
for (String string : chapters)
{
if (!first)
{
sb.append(", ");
}
first = false;
sb.append(string);
}
sender.sendMessage(sb.toString());
return;
}
else
{
int page = 1;
try
{
page = Integer.parseInt(pageStr);
}
catch (Exception ex)
{
page = 1;
}
int start = (page - 1) * 9;
int end;
for (end = 0; end < lines.size(); end++)
{
String line = lines.get(end);
if (line.startsWith("#"))
{
break;
}
}
int pages = end / 9 + (end % 9 > 0 ? 1 : 0);
sender.sendMessage(Util.format("infoPages", page, pages ));
for (int i = start; i < end && i < start + 9; i++)
{
sender.sendMessage(lines.get(i));
}
return;
}
}
int chapterpage = 0;
if (args.length >= 2)
{
try
{
chapterpage = Integer.parseInt(args[1]) - 1;
}
catch (Exception ex)
{
chapterpage = 0;
}
}
if (!bookmarks.containsKey(pageStr.toLowerCase()))
{
sender.sendMessage(Util.i18n("infoUnknownChapter"));
return;
}
int chapterstart = bookmarks.get(pageStr.toLowerCase()) + 1;
int chapterend;
for (chapterend = chapterstart; chapterend < lines.size(); chapterend++)
{
String line = lines.get(chapterend);
if (line.startsWith("#"))
{
break;
}
}
int start = chapterstart + chapterpage * 9;
int page = chapterpage + 1;
int pages = (chapterend - chapterstart) / 9 + ((chapterend - chapterstart) % 9 > 0 ? 1 : 0);
sender.sendMessage(Util.format("infoChapterPages", pageStr, page , pages));
for (int i = start; i < chapterend && i < start + 9; i++)
{
sender.sendMessage(lines.get(i));
}
}
}

View File

@@ -1,54 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.Arrays;
import org.bukkit.Server;
import org.bukkit.inventory.ItemStack;
public class Commandinvsee extends EssentialsCommand
{
public Commandinvsee()
{
super("invsee");
}
@Override
protected void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
if (args.length < 1 && user.getSavedInventory() == null)
{
throw new NotEnoughArgumentsException();
}
User invUser = user;
if (args.length == 1)
{
invUser = getPlayer(server, args, 0);
}
if (invUser == user && user.getSavedInventory() != null)
{
invUser.getInventory().setContents(user.getSavedInventory());
user.setSavedInventory(null);
throw new Exception(Util.i18n("invRestored"));
}
if (user.getSavedInventory() == null)
{
user.setSavedInventory(user.getInventory().getContents());
}
ItemStack[] invUserStack = invUser.getInventory().getContents();
int userStackLength = user.getInventory().getContents().length;
if (invUserStack.length < userStackLength) {
invUserStack = Arrays.copyOf(invUserStack, userStackLength);
}
if (invUserStack.length > userStackLength) {
throw new Exception(Util.i18n("invBigger"));
}
user.getInventory().setContents(invUserStack);
user.sendMessage(Util.format("invSee", invUser.getDisplayName()));
user.sendMessage(Util.i18n("invSeeHelp"));
throw new NoChargeException();
}
}

View File

@@ -1,52 +0,0 @@
package com.earth2me.essentials.commands;
import org.bukkit.Server;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
public class Commanditem extends EssentialsCommand
{
public Commanditem()
{
super("item");
}
@Override
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
ItemStack stack = ess.getItemDb().get(args[0]);
String itemname = stack.getType().toString().toLowerCase().replace("_", "");
if (ess.getSettings().permissionBasedItemSpawn()
? (!user.isAuthorized("essentials.itemspawn.item-all")
&& !user.isAuthorized("essentials.itemspawn.item-" + itemname)
&& !user.isAuthorized("essentials.itemspawn.item-" + stack.getTypeId()))
: (!user.isAuthorized("essentials.itemspawn.exempt")
&& !user.canSpawnItem(stack.getTypeId())))
{
throw new Exception(Util.format("cantSpawnItem", itemname));
}
if (args.length > 1 && Integer.parseInt(args[1]) > 0)
{
stack.setAmount(Integer.parseInt(args[1]));
}
if (stack.getType() == Material.AIR)
{
throw new Exception(Util.format("cantSpawnItem", "Air"));
}
String itemName = stack.getType().toString().toLowerCase().replace('_', ' ');
user.sendMessage(Util.format("itemSpawn", stack.getAmount(), itemName));
user.getInventory().addItem(stack);
user.updateInventory();
}
}

View File

@@ -1,20 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.Util;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
public class Commandjails extends EssentialsCommand
{
public Commandjails()
{
super("jails");
}
@Override
protected void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
sender.sendMessage("§7" + Util.joinList(" ", ess.getJail().getJails()));
}
}

View File

@@ -1,43 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.Trade;
import org.bukkit.Location;
import org.bukkit.Server;
import com.earth2me.essentials.TargetBlock;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
public class Commandjump extends EssentialsCommand
{
public Commandjump()
{
super("jump");
}
@Override
public void run(Server server, User user, String commandLabel, String[] args) throws Exception
{
Location loc;
Location cloc = user.getLocation();
try
{
loc = new TargetBlock(user, 100, 2.65).getTargetBlock().getLocation();
loc.setYaw(cloc.getYaw());
loc.setPitch(cloc.getPitch());
loc = new TargetBlock(loc).getPreviousBlock().getLocation();
loc.setYaw(cloc.getYaw());
loc.setPitch(cloc.getPitch());
loc.setY(loc.getY() + 1);
}
catch (NullPointerException ex)
{
throw new Exception(Util.i18n("jumpError"), ex);
}
Trade charge = new Trade(this.getName(), ess);
charge.isAffordableFor(user);
user.getTeleport().teleport(loc, charge);
}
}

View File

@@ -1,44 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.Console;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import org.bukkit.entity.Player;
public class Commandkick extends EssentialsCommand
{
public Commandkick()
{
super("kick");
}
@Override
public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
User player = getPlayer(server, args, 0);
if (player.isAuthorized("essentials.kick.exempt"))
{
throw new Exception(Util.i18n("kickExempt"));
}
final String kickReason = args.length > 1 ? getFinalArg(args, 1) : Util.i18n("kickDefault");
player.kickPlayer(kickReason);
String senderName = sender instanceof Player ? ((Player)sender).getDisplayName() : Console.NAME;
for(Player p : server.getOnlinePlayers())
{
User u = ess.getUser(p);
if(u.isAuthorized("essentials.kick.notify"))
{
p.sendMessage(Util.format("playerKicked", senderName, player.getName(), kickReason));
}
}
}
}

View File

@@ -1,31 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.Util;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class Commandkickall extends EssentialsCommand
{
public Commandkickall()
{
super("kickall");
}
@Override
public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
for (Player p : server.getOnlinePlayers())
{
if (sender instanceof Player && p.getName().equalsIgnoreCase(((Player)sender).getName()))
{
continue;
}
else
{
p.kickPlayer(args.length > 0 ? getFinalArg(args, 0) : Util.i18n("kickDefault"));
}
}
}
}

View File

@@ -1,38 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.Util;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageEvent;
public class Commandkill extends EssentialsCommand
{
public Commandkill()
{
super("kill");
}
@Override
public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
if (args.length < 1)
{
throw new NotEnoughArgumentsException();
}
for (Player p : server.matchPlayer(args[0]))
{
final EntityDamageEvent ede = new EntityDamageEvent(p, sender instanceof Player && ((Player)sender).getName().equals(p.getName()) ? EntityDamageEvent.DamageCause.SUICIDE : EntityDamageEvent.DamageCause.CUSTOM, 1000);
server.getPluginManager().callEvent(ede);
if (ede.isCancelled() && !sender.hasPermission("essentials.kill.force"))
{
continue;
}
p.setHealth(0);
sender.sendMessage(Util.format("kill", p.getDisplayName()));
}
}
}

View File

@@ -1,144 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.Trade;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.Server;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.GregorianCalendar;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
public class Commandkit extends EssentialsCommand
{
public Commandkit()
{
super("kit");
}
@Override
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
{
if (args.length < 1)
{
try
{
final Map<String, Object> kits = ess.getSettings().getKits();
final StringBuilder list = new StringBuilder();
for (String k : kits.keySet())
{
if (user.isAuthorized("essentials.kit." + k.toLowerCase()))
{
list.append(" ").append(k);
}
}
if (list.length() > 0)
{
user.sendMessage(Util.format("kits", list.toString()));
}
else
{
user.sendMessage(Util.i18n("noKits"));
}
}
catch (Exception ex)
{
user.sendMessage(Util.i18n("kitError"));
}
}
else
{
try
{
final String kitName = args[0].toLowerCase();
final Object kit = ess.getSettings().getKit(kitName);
List<String> items;
if (!user.isAuthorized("essentials.kit." + kitName))
{
user.sendMessage(Util.format("noKitPermission", "essentials.kit." + kitName));
return;
}
try
{
//System.out.println("Kit is timed");
final Map<String, Object> els = (Map<String, Object>)kit;
items = (List<String>)els.get("items");
final double delay = els.containsKey("delay") ? ((Number)els.get("delay")).doubleValue() : 0L;
final Calendar c = new GregorianCalendar();
c.add(Calendar.SECOND, -(int)delay);
c.add(Calendar.MILLISECOND, -(int)((delay*1000.0)%1000.0));
final long mintime = c.getTimeInMillis();
final Long lastTime = user.getKitTimestamp(kitName);
if (lastTime == null || lastTime < mintime) {
final Calendar now = new GregorianCalendar();
user.setKitTimestamp(kitName, now.getTimeInMillis());
} else {
final Calendar future = new GregorianCalendar();
future.setTimeInMillis(lastTime);
future.add(Calendar.SECOND, (int)delay);
future.add(Calendar.MILLISECOND, (int)((delay*1000.0)%1000.0));
user.sendMessage(Util.format("kitTimed", Util.formatDateDiff(future.getTimeInMillis())));
return;
}
}
catch (Exception ex)
{
items = (List<String>)kit;
}
final Trade charge = new Trade("kit-" + kitName, ess);
try
{
charge.isAffordableFor(user);
}
catch (Exception ex)
{
user.sendMessage(ex.getMessage());
return;
}
boolean spew = false;
for (String d : items)
{
final String[] parts = d.split("[^0-9]+", 3);
final int id = Material.getMaterial(Integer.parseInt(parts[0])).getId();
final int amount = parts.length > 1 ? Integer.parseInt(parts[parts.length > 2 ? 2 : 1]) : 1;
final short data = parts.length > 2 ? Short.parseShort(parts[1]) : 0;
final HashMap<Integer,ItemStack> overfilled = user.getInventory().addItem(new ItemStack(id, amount, data));
for (ItemStack itemStack : overfilled.values())
{
user.getWorld().dropItemNaturally(user.getLocation(), itemStack);
spew = true;
}
}
if (spew)
{
user.sendMessage(Util.i18n("kitInvFull"));
}
try
{
charge.charge(user);
}
catch (Exception ex)
{
user.sendMessage(ex.getMessage());
}
user.sendMessage(Util.format("kitGive", kitName));
}
catch (Exception ex)
{
user.sendMessage(Util.i18n("kitError2"));
user.sendMessage(Util.i18n("kitErrorHelp"));
}
}
}
}

View File

@@ -1,50 +0,0 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class Commandlightning extends EssentialsCommand
{
public Commandlightning()
{
super("lightning");
}
@Override
public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
User user = null;
if (sender instanceof Player)
{
user = ess.getUser(((Player)sender));
}
if (args.length < 1 & user != null)
{
user.getWorld().strikeLightning(user.getTargetBlock(null, 600).getLocation());
return;
}
if (server.matchPlayer(args[0]).isEmpty())
{
throw new Exception(Util.i18n("playerNotFound"));
}
for (Player p : server.matchPlayer(args[0]))
{
sender.sendMessage(Util.format("lightningUse", p.getDisplayName()));
p.getWorld().strikeLightning(p.getLocation());
if (!ess.getUser(p).isGodModeEnabled()) {
p.setHealth(p.getHealth() < 5 ? 0 : p.getHealth() - 5);
}
if (ess.getSettings().warnOnSmite())
{
p.sendMessage(Util.i18n("lightningSmited"));
}
}
}
}

View File

@@ -1,151 +0,0 @@
package com.earth2me.essentials.commands;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.ChatColor;
public class Commandlist extends EssentialsCommand
{
public Commandlist()
{
super("list");
}
@Override
public void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception
{
boolean showhidden = false;
if (sender instanceof Player)
{
if (ess.getUser(sender).isAuthorized("essentials.list.hidden"))
{
showhidden = true;
}
}
else
{
showhidden = true;
}
int playerHidden = 0;
for (Player p : server.getOnlinePlayers())
{
if (ess.getUser(p).isHidden())
{
playerHidden++;
}
}
//TODO: move these to messages file
StringBuilder online = new StringBuilder();
online.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(server.getOnlinePlayers().length - playerHidden);
if (showhidden && playerHidden > 0)
{
online.append(ChatColor.GRAY).append("/").append(playerHidden);
}
online.append(ChatColor.BLUE).append(" out of a maximum ").append(ChatColor.RED).append(server.getMaxPlayers());
online.append(ChatColor.BLUE).append(" players online.");
sender.sendMessage(online.toString());
if (ess.getSettings().getSortListByGroups())
{
Map<String, List<User>> sort = new HashMap<String, List<User>>();
for (Player p : server.getOnlinePlayers())
{
User u = ess.getUser(p);
if (u.isHidden() && !showhidden)
{
continue;
}
String group = u.getGroup();
List<User> list = sort.get(group);
if (list == null)
{
list = new ArrayList<User>();
sort.put(group, list);
}
list.add(u);
}
String[] groups = sort.keySet().toArray(new String[0]);
Arrays.sort(groups, String.CASE_INSENSITIVE_ORDER);
for (String group : groups)
{
StringBuilder groupString = new StringBuilder();
groupString.append(group).append(": ");
List<User> users = sort.get(group);
Collections.sort(users);
boolean first = true;
for (User user : users)
{
if (!first)
{
groupString.append(", ");
}
else
{
first = false;
}
if (user.isAfk())
{
groupString.append("§7[AFK]§f");
}
if (user.isHidden())
{
groupString.append("§7[HIDDEN]§f");
}
groupString.append(user.getDisplayName());
groupString.append("§f");
}
sender.sendMessage(groupString.toString());
}
}
else
{
List<User> users = new ArrayList<User>();
for (Player p : server.getOnlinePlayers())
{
final User u = ess.getUser(p);
if (u.isHidden() && !showhidden)
{
continue;
}
users.add(u);
}
Collections.sort(users);
StringBuilder onlineUsers = new StringBuilder();
onlineUsers.append(Util.i18n("connectedPlayers"));
boolean first = true;
for (User user : users)
{
if (!first)
{
onlineUsers.append(", ");
}
else
{
first = false;
}
if (user.isAfk())
{
onlineUsers.append("§7[AFK]§f");
}
if (user.isHidden())
{
onlineUsers.append("§7[HIDDEN]§f");
}
onlineUsers.append(user.getDisplayName());
onlineUsers.append("§f");
}
sender.sendMessage(onlineUsers.toString());
}
}
}

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