Compare commits

...
198 Commits
Author SHA1 Message Date
md678685 23d92fac63 Bump version to 2.16.0 and release 2.16-pre1 2018-12-09 14:33:53 +00:00
md678685 5922b85290 Move SHIELD to from MetaItemStack to MaterialUtil 2018-12-09 13:47:52 +00:00
md678685 814e5a643e Add SIGNS and SPAWNER to MaterialUtil 2018-12-09 13:47:22 +00:00
md678685 3db3a272d5 Update default kits.yml file
Item IDs are no longer supported in 1.13+, so remove them from the default kits section.
2018-12-09 13:07:11 +00:00
md678685 2d703fbc80 Add damage value support to FlatItemDb
...in case you wanted to give players broken swords, or something?
2018-12-09 13:04:21 +00:00
md678685 b49d3cc21c Remove unnecessary kits file
This is a leftover from dev environments and is *not* the one copied into the jar during build.
2018-12-09 13:02:44 +00:00
md678685 02b5d2357a Add missing FakeServer methods 2018-12-09 12:29:28 +00:00
md678685 1206178eca Use utility methods in MetaItemStack 2018-12-09 12:17:13 +00:00
md678685 3df3f8a812 Add several cross-version item type checks to MaterialUtil 2018-12-09 12:17:13 +00:00
md678685 7049952b07 Load forceEnableRecipe during Settings.reloadConfig 2018-12-09 12:17:13 +00:00
Mark Vadeika a18ce40921 Hiding display names (#2248) @AllTheMegahertz
Prevents a user's nickname from appearing if they are hidden, if `hide-displayname-in-vanish: true` in the config. Closes #2221.

* Does not return display name if user is hidden

* Added hide-displayname-in-vanish field

* Added hideDisplayNameInVanish()

* Changed to only hide display name if specified in config

* Changed hideDisplayNameInVanish to default to false if not specified in config.yml
2018-12-09 11:02:45 +00:00
md678685 6a6383462d Allow admins to force enable /recipe if they want
Add `force-enable-recipe`, which allows server admins to manually enable `/recipe` despite potential duplication exploits. Use this at your own risk!

Related: #1397
2018-12-08 16:41:24 +00:00
md678685 44301fae4f Fix Worth.setPrice on 1.13+; add Javadocs to Worth 2018-12-08 16:32:09 +00:00
md678685 6ee84510ea Update bStats-Metrics 2018-12-06 17:49:08 +00:00
md678685 6ecdc8d7fc Enu-moo-til 2018-12-06 17:44:22 +00:00
md678685 35a2a4d803 Add several version warning messages 2018-12-06 17:41:32 +00:00
md678685 4011810536 Correctly use LegacyItemDb after detecting version < 1.13 2018-11-19 22:51:07 +00:00
md678685 85ea07c97e Fix VersionUtil regex matching and BukkitVersion.toString 2018-11-19 22:48:33 +00:00
md678685 41b2449cdd Change /enchant's default level from -1 to 1 2018-11-19 21:11:25 +00:00
md678685 ec83a5fff2 Add EntityPickupItemEvent listener to AntiBuild 2018-11-19 20:20:10 +00:00
md678685 ded6f06ed2 Merge remote-tracking branch 'origin/2.x' into 1.13 2018-11-19 19:48:38 +00:00
md678685 2605e050a0 Deduplicate ItemDb code 2018-11-19 19:41:01 +00:00
md678685 19b1e19e42 Remove extraneous imports 2018-11-19 19:30:35 +00:00
md678685 f7a1149cac Port old ItemDb back 2018-11-19 14:13:05 +00:00
md678685 7dd52dab32 Add non-NMS VersionUtil
*Should* work on Glowstone. TODO: use this instead of ReflUtil where appropriate.
2018-11-19 14:12:10 +00:00
md678685 937aec600a Implement more FakeServer methods 2018-11-19 12:52:19 +00:00
md678685 4802053da6 Rename en-GB to en_GB for consistency 2018-11-19 12:51:26 +00:00
md678685 0105dff7ac Update AntiBuild default entries to enum names 2018-11-19 12:49:34 +00:00
md678685 8cc448efcf Remove meta/durability checks from AntiBuild 2018-11-19 11:38:50 +00:00
md678685 982b358bf8 Bump AntiBuild and Protect to api-version: 1.13 2018-11-19 11:28:31 +00:00
md678685 ffc80d61af Implement missing FakeWorld and OfflinePlayer methods 2018-11-19 11:26:05 +00:00
md678685 f55956612c Add messages_en-GB.properties (#2206)
Tins what it does on the say.
2018-11-19 08:38:37 +00:00
md678685 cd3b342d74 Target Bukkit 1.13.2 2018-10-31 15:00:54 +00:00
md678685 ba959586e2 Merge remote-tracking branch 'games647/java9' into 1.13 2018-10-31 14:53:49 +00:00
md678685 4c07e584b7 Default to max stack size 2018-10-31 14:47:45 +00:00
Banbeucmas 280d1215de Adding EssentialsWarpEvent (#1921) @Banbeucmas
* Adding EssentialsWarpEvent for checking if player is wrapping

* Spacing

* Adding Trade parameter

* Refactoring

* Adding #setWarp() to the Event

* Spacing

* Documenting the purpose of the Event

* Javadoc?
2018-10-28 18:53:52 +00:00
montlikadani a2a95ed840 Added acacia and dark oak tree types (#2001) @montlikadani
* Update Commandbigtree.java

* Update Commandbigtree.java

* Update Commandtree.java
2018-10-28 18:41:46 +00:00
md678685 4bd9461282 Rename help-.md to help.md 2018-10-28 10:54:01 +00:00
md678685 96adef5269 Update issue templates (#2045)
* Update issue templates

Add new issue templates - I didn't even know GitHub had these now

* Remove duplicate bug template

* Remove duplicate feature template

* Update help-.md

* Update report-a-bug.md

* Update request-a-feature.md

* Delete ISSUE_TEMPLATE.md
2018-10-27 15:42:56 +01:00
md678685 9576ea25a6 Use reflection-based detection for pickup listener in player listener (#2151)
Allows the plugin to start up on Glowstone correctly.

Tested on Spigot 1.12.2, Spigot 1.9.4 and Glowstone 2018.7.0, works correctly on all.
2018-10-27 15:37:29 +01:00
md678685 a7fcafb245 Filter out comment lines when loading items.json 2018-10-27 15:00:04 +01:00
md678685 73bb41d579 Merge branch '1.13-items' into 1.13 2018-10-26 15:59:51 +01:00
md678685 0a90d76493 Remove item IDs from Worth 2018-10-15 13:56:36 +01:00
md678685 010981d3c8 Remove ID-based charges in /repair 2018-10-15 13:51:04 +01:00
md678685 3353061e76 Remove ID-based permission checks in /more 2018-10-15 13:49:16 +01:00
md678685 79bc34047b Allow multiple item names in /clearinventory
Allow a comma-separated list of item names in /clearinventory.
2018-10-15 13:46:12 +01:00
md678685 60c90408e7 Remove ID-based permission checks in /give and /item 2018-10-15 13:16:10 +01:00
md678685 1218c3e226 Merge branch '1.13' into 1.13-items 2018-10-13 18:23:58 +01:00
md678685 a05fc9d08e Remove duplicated OfflinePlayer method 2018-10-13 17:14:10 +01:00
md678685 6906ef2154 Merge branch '1.13' into 1.13-items 2018-10-13 16:59:57 +01:00
md678685 7d25e84ebc Merge branch '2.x' into 1.13 2018-10-13 16:59:44 +01:00
md678685 121d935315 Implement missing FakeServer methods 2018-10-13 16:55:49 +01:00
md678685 2f66a866d8 Implement missing FakeWorld and OfflinePlayer methods 2018-10-13 16:55:42 +01:00
md678685 0e088c17a8 Remove IdProvider dependency 2018-10-13 16:45:20 +01:00
md678685 4cd8a6636b Log invalid JSON entries 2018-10-13 16:44:50 +01:00
md678685 5c7fc763fc Formatting 2018-10-13 16:44:24 +01:00
md678685 1e381a59be Throw meaningful exception when item not found 2018-10-13 16:32:21 +01:00
md678685 85111f25cb Use ItemData#equals when finding item name
Avoids accidentally causing an NPE while comparing potion data.
2018-10-13 16:09:45 +01:00
md678685 f78887a02e Remove item IDs from /itemdb 2018-10-13 15:59:25 +01:00
md678685 feba535637 Actually assign the ManagedFile to file 2018-10-13 15:38:45 +01:00
md678685 3262143c73 Implement missing FakeServer methods 2018-10-13 15:30:27 +01:00
md678685 18feb7967a Implement missing FakeWorld and OfflinePlayer methods 2018-10-13 15:26:58 +01:00
md678685 e9b1511117 Remove item ID support in Worth 2018-10-12 17:26:41 +01:00
md678685 177e5f62f7 Remove providers; move JSON support into ItemDb 2018-10-12 17:26:22 +01:00
md678685 f3f4395da7 Reset BuildTools work directory on Travis 2018-10-09 20:32:40 +01:00
md678685 442e46b012 Return to root after BuildTools on Travis 2018-10-09 20:25:36 +01:00
md678685 37d699d05b mkdir -p in Travis 2018-10-09 19:54:31 +01:00
md678685 77ed1e1d4a Ensure Travis runs BuildTools before mvn install 2018-10-09 19:52:42 +01:00
md678685 50e4cd67b5 Fix typo in Travis config 2018-10-09 19:47:57 +01:00
md678685 83a90eb553 Update .travis.yml 2018-10-09 19:45:28 +01:00
md678685 c29599d39a Create .travis.yml 2018-10-09 19:34:07 +01:00
md678685 692e0adde4 Use MONSTER_EGG in SpawnEggRefl 2018-09-09 16:37:02 +01:00
md678685 cdba518bae Revert "Implement 1.13 item support (#2153)" 2018-09-09 16:35:20 +01:00
md678685 b70b67fa1f Remove unnecessary CraftBukkit dependency 2018-09-09 16:34:15 +01:00
md678685 ff0ca9bc7b Remove unnecessary CraftBukkit dependency 2018-09-05 19:20:18 +01:00
md678685 320bc25d94 Implement 1.13 item support (#2153)
Uses two distinct providers to support items on 1.13 while falling back to `items.csv` for previous versions of Minecraft.
2018-09-05 14:23:16 +01:00
md678685 425e955b5d Update items.json
Add some more aliases to the file
2018-09-05 14:19:09 +01:00
pop4959 33ae9a2597 Fix TropicalFish spawning (#2159)
The name can't have a space in it or it won't be matched by any commands.
2018-09-05 13:26:33 +01:00
pop4959 19913d3612 Implement abstract method Entity::getFacing in OfflinePlayer (#2157) @pop4959
Allows EssentialsX to compile against the latest Spigot version.

Reference: [https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/commits/8ab814cd5c415258aa0ab7617051ee4ea9f4e7bd](https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/commits/8ab814cd5c415258aa0ab7617051ee4ea9f4e7bd)
2018-09-05 11:00:27 +01:00
pop4959 a3eb58724f Add a way to use unsafe nicknames (#2152) @pop4959
Pretty much what the title says. Closes #1630.

This is a fun little feature that I'm sure many people have always wanted. I can understand that the original authors of Essentials were probably concerned about users entering names that cannot display correctly in the chat, and that is understandable.

I have added a new permission "essentials.nick.allowunsafe", which must be given to anyone who is allowed to use characters outside of the alphanumeric set. The name of the permission is inspired from "essentials.enchantments.allowunsafe", which allows unsafe enchantment levels to be applied to items without guaranteed behaviour. Similarly, the permission "essentials.nick.allowunsafe" allows unsafe characters to be entered for the user's nickname without making any guarantee that those characters will show up in chat correctly.
2018-09-02 12:14:26 +01:00
md678685 0afa00779c Add some comments to LegacyItemDbProvider 2018-09-01 19:31:32 +01:00
md678685 17d5545804 Update items.json
Fix incorrect type for Uncraftable Potions
2018-09-01 16:46:55 +01:00
md678685 cd70662f01 Update items.json
Fixes some potions spawning incorrectly where the vanilla name didn't match the Bukkit enum name
2018-09-01 16:27:28 +01:00
md678685 a89c97409b Use potion data when looking up items 2018-09-01 15:48:14 +01:00
md678685 102cb6d949 Merge branch '1.13' into 1.13-items 2018-09-01 10:46:27 +01:00
md678685 6c9c9ad42a Use enum methods throughout plugin for cross-version enum lookups 2018-09-01 10:35:08 +01:00
md678685 acbc96fd55 Add enum utility helpers for Statistic and Material 2018-09-01 10:34:11 +01:00
md678685 ca721c1acb Add V1_13_R2 to ReflUtil 2018-08-27 21:29:30 +01:00
md678685 3bf669c42a ItemDbProvider#resolve returns ItemData
More useful than just returning the Material.
2018-08-27 21:21:06 +01:00
md678685 cdc5f75fcb Remove unnecessary equals method on abstract ItemData 2018-08-27 21:19:36 +01:00
md678685 d74f19970b Strip out legacy ItemDb code, pt 1928371236123897 2018-08-27 21:19:15 +01:00
md678685 2ddde37771 Improve FlatItemData#equals 2018-08-27 21:02:27 +01:00
md678685 c1c422e03d Update items.json 2018-08-27 21:00:57 +01:00
md678685 7608b7d658 Merge branch '1.13' into 1.13-items 2018-08-27 20:01:48 +01:00
md678685 d1d5ae814f Merge branch '2.x' into 1.13 2018-08-27 20:01:01 +01:00
md678685 452fa61717 Change tryProvider test values 2018-08-27 19:58:19 +01:00
md678685 825f697fd2 Update items.json 2018-08-27 19:30:05 +01:00
md678685 4ea71ae88e Implement missing methods in FakeWorld 2018-08-27 14:10:06 +01:00
md678685 bdb32f5878 Bump Bukkit version to 1.13.1 2018-08-27 13:10:15 +01:00
md678685 e3c726b8f6 Log total loaded items on reload 2018-08-27 13:06:27 +01:00
md678685 96c6c7b1ca Add per-provider implementations of ItemData 2018-08-27 11:23:47 +01:00
md678685 634d62f9ef Fix typo in /kickall 2018-08-27 10:30:29 +01:00
md678685 2806156cf4 Add "allow-world-in-broadcastworld" option
Allows players to send broadcasts to a specified world by running `/broadcastworld [world] <message>` if enabled.

This is disabled by default in old configs to avoid confusion between updates.
2018-08-27 10:26:54 +01:00
md678685 e642192461 Kick players in /banip
The four-year-old to-do has finally been done!

Closes #2143.
2018-08-26 22:54:00 +01:00
md678685 959c788f22 Don't kick exempt players when running /kickall 2018-08-26 21:03:17 +01:00
montlikadani cda520589a Revert "Doesn't kick all players if the player has permission (#2145) @montlikadani"
This reverts commit 5c1db129d3.
2018-08-26 20:59:46 +01:00
montlikadani 5c1db129d3 Doesn't kick all players if the player has permission (#2145) @montlikadani
So, if a player has permission (eg, an operator or more), they will not kick them out because of permission.
2018-08-26 20:13:05 +01:00
Leomixer17 c718962426 Update messages_it.properties (#2144) @Leomixer17 2018-08-26 17:07:05 +01:00
Thomas 575a11b645 Updated "createKitSuccess=" (#2133) @DutchUser
* Updated "createKitSuccess="

They have the old one, its now in the "kits.yml" not in "config.yml"

* Update messages_da.properties

* Update messages_de.properties

* Update messages_es.properties

* Update messages_en.properties

* Update messages_et.properties

* Updated "createKitSuccess="

* Updated "createKitSuccess="

* Updated "createKitSuccess=

* Updated "createKitSuccess=

* Updated "createKitSuccess=

* Updated "createKitSuccess=

* Updated "createKitSuccess="

* Updated "createKitSuccess="

* Updated "createKitSuccess="

* Updated "createKitSuccess="

* Updated "createKitSuccess="

* Updated "createKitSuccess="

* Updated "createKitSuccess="

* Updated "createKitSuccess="

* Updated "createKitSuccess="

* Updated "createKitSuccess="

* Update messages_vi.properties

Going add the other later today, 

* invalidItemFlagMeta
* noJailsDefined
* openingDisposal
* socialSpyMsgFormat
* socialSpyMutedPrefix
* tempbanJoin
* whoisUuid

* Update messages_vi.properties

* Update messages_vi.properties @md678685

I have no idea why this whole file is in `\u` codes

* Update messages.properties @md678685
2018-08-26 16:12:13 +01:00
Xeyame f97c5fc1ff Make /realname configurable (#1952) @Xeyame
Closes #1810.

@md678685: I've added colour codes to the `realName` messages by default, which was not originally part of this PR.
2018-08-26 15:39:37 +01:00
montlikadani 81397d98b8 Added editable messages (#2072) @montlikadani
**If it is accepted then I will add it to the other message files.**
2018-08-26 15:17:07 +01:00
Leomixer17 82b2ff0b3f Update messages_it.properties (#2142) @Leomixer17 2018-08-26 15:13:33 +01:00
md678685 05fcb7b1aa Refactor to allow items to be added after first load 2018-08-25 18:38:50 +01:00
md678685 c79db98978 Add more debug logging to Settings (#2140)
Adds debug logging for `getChatFormat` and `getCommandCooldownEntry`, which makes it much easier to track down issues with group formats in EssentialsX Chat and command cooldowns respectively.
2018-08-25 18:09:08 +01:00
md678685 303aa77901 Add missing import 2018-08-25 16:55:12 +01:00
md678685 65a4ef7ee5 Use items that actually exist in tryProvider 2018-08-25 16:54:50 +01:00
md678685 1be7fbd8a6 Remove hash comment when rebuilding JSON database 2018-08-25 16:54:09 +01:00
Max Roncace 935b5cfe0f Fix unbreakable attribute for kits (#2071) @caseif
This PR fixes the `unbreakable` attribute on kit items. Previously, Essentials was exclusively using an internal Spigot method to set this on `ItemMeta` objects; however, this solution seems to be non-functional on more recent Spigot builds (1.12.2).

I have altered the `MetaItemStack#setUnbreakable` method to use the native Bukkit method, available for [some time now](https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/commits/d986a3f), by default. Essentials will still use the old solution as a fallback in case of an older Bukkit version which does not have native support for the attribute.
2018-08-25 11:33:17 +01:00
md678685 bad02729db Allow /eco take to subtract a user's exact balance 2018-08-24 15:42:17 +01:00
md678685 80f7ded687 SPECTATOR mode is safe for teleporting everywhere. (#2049)
Teleporting in spectator mode is as safe as creative mode for every target.
2018-08-24 15:24:26 +01:00
Max Lee f569b89d8f Round down balance when converting to double (#2135) 2018-08-21 23:45:58 +01:00
md678685 fec655a29c Implement ItemDbProviders, pt 7
Implement getStack and resolve for FlatItemDbProvider
2018-08-19 23:12:27 +01:00
md678685 610774b0b9 Remove default getStack implementation 2018-08-19 23:11:30 +01:00
md678685 9487665fae Use Bukkit PotionData instead of our own 2018-08-19 23:10:23 +01:00
md678685 d5b43b7162 Include JSON files in jar at build time 2018-08-19 23:09:02 +01:00
md678685 718d9d9d3a Initialise provider and file during first reload 2018-08-19 21:55:29 +01:00
md678685 3705dbdd2b Add items.json
TODO: should we auto-download from the CI on build?
2018-08-19 21:43:53 +01:00
md678685 c37d516980 Use MONSTER_EGG in SpawnEggRefl 2018-08-19 21:16:16 +01:00
md678685 b27a6b5b8e Add additional timer marks 2018-08-19 21:11:51 +01:00
md678685 98809fafd7 Strip out legacy ItemDb code, pt 4 2018-08-19 21:10:54 +01:00
md678685 dd9a0de98d Implement ItemDbProviders, pt 6 2018-08-19 20:58:45 +01:00
md678685 de2298cf0a Strip out legacy ItemDb code, pt 3 2018-08-19 20:58:23 +01:00
md678685 56fb8b06cd Add listNames to abstract ItemDbProvider 2018-08-19 20:55:56 +01:00
md678685 3b1eb683e1 Merge branch 'patch-20' into 2.x @montlikadani 2018-08-19 20:17:32 +01:00
md678685 1029305382 Implement ItemDbProviders, pt 5 2018-08-19 19:23:20 +01:00
md678685 9b39509e88 Misc changes 2018-08-19 18:30:44 +01:00
md678685 9da58dde5c Strip out legacy ItemDb code, pt 2 2018-08-19 18:04:13 +01:00
md678685 e2507d2ff1 Implement ItemDbProviders, pt 4 2018-08-19 18:03:53 +01:00
md678685 b867f121c9 Implement ItemDbProviders, pt 3 2018-08-19 17:49:34 +01:00
montlikadani 3c6a869336 Fix iron armor bug (#2054) 2018-08-19 16:57:14 +01:00
RikoDEV f357e76980 Small corrections in the Polish translation (#2103) 2018-08-19 16:56:16 +01:00
gb2233 946a1fbb7c Fixed unicode characters in HU locale (#2130) 2018-08-19 16:55:14 +01:00
Oliver Ni 37acdc18f2 Fix Easter egg config typo (#2124) @oliver-ni
Left clicking mobs with a milk bucket turns them into a baby, not right clicking.
2018-08-16 20:24:53 +01:00
Ali Moghnieh 4dc1d2c50e Merge branch '2.x' into 1.13 2018-08-16 17:47:37 +01:00
Aerodog ed72d117a5 Add {ONLINE} variable to custom join message (#2043) 2018-08-16 17:42:14 +01:00
md678685 a302913130 Clean up unused files 2018-08-15 20:08:22 +01:00
md678685 659f1a271a Merge branch '1.13' into 1.13-items 2018-08-15 19:51:35 +01:00
md678685 3fb4b7958d Strip out legacy ItemDb code, pt 1 2018-08-15 19:50:15 +01:00
md678685 3ef0f20b0d Add tipped arrows support on 1.9/1.10
On a side note, need to investigate why the potion provider is only needed on 1.10 and below - I don't remember what changed in 1.11?
2018-08-15 19:42:12 +01:00
md678685 340baa9703 Add IEssentials#getItemDbProvider method 2018-08-15 19:40:35 +01:00
md678685 0e9232ba81 Remove breaking import 2018-08-15 19:40:08 +01:00
md678685 299afdc6a1 Add V1_13_R1 to ReflUtil 2018-08-15 18:05:44 +01:00
md678685 04feed8524 Add 1.13+ spawn egg provider
Not sure how necessary this is, but I've done it anyway
2018-08-15 17:46:55 +01:00
md678685 773979cb37 Provide ItemDb provider with other providers
Provide providers to the provider that needs the providers. Provider provider provider provide provider.
2018-08-15 16:56:46 +01:00
md678685 c27d05fd4b Fix dependency on IdProvider 2018-08-15 16:40:01 +01:00
md678685 52d814f2cc Properly fix inaccurate playtime measurement
https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/commits/b848d8ce633871b52115247b089029749c02f579
2018-08-15 15:26:11 +01:00
md678685 5009b3b545 Revert "Fix playtime calculation"
This reverts commit 4e165d375c.
2018-08-15 15:15:30 +01:00
md678685 4e165d375c Fix playtime calculation 2018-08-14 19:29:28 +01:00
md678685 306f7a7872 Merge pull request #2119 from lagnat/1.13
Add missing methods for OfflinePlayer, FakeWorld, and FakeServer.
2018-08-14 19:20:21 +01:00
md678685 6c11569ac9 Merge branch '2.x' into 1.13 2018-08-14 18:58:06 +01:00
md678685 4be28ba193 Implement ItemDbProviders, pt 2 2018-08-14 18:57:47 +01:00
Steve Green a1e98f898b Add missing methods for OfflinePlayer, FakeWorld, and FakeServer. 2018-08-14 08:35:33 -04:00
md678685 c5376d3088 Implement ItemDbProviders, pt 1 2018-08-10 22:07:02 +01:00
md678685 3e1857b966 Add module for FlattenedProvider 2018-08-08 15:42:29 +01:00
md678685 b8a8232bc3 Wrap all constructScalar calls with reflection
Allows configs to function with both SnakeYAML 1.19 and 1.21.
2018-08-06 18:19:30 +01:00
md678685 504a7aef0f Add 1.13 mobs 2018-08-06 17:09:50 +01:00
md678685 1ddb1822ef Merge branch '2.x' into 1.13 2018-08-05 23:02:11 +01:00
md678685 d3cd4e356d Add missing OfflinePlayer 1.13 methods 2018-08-05 20:51:39 +01:00
md678685 bef440760a Remove deprecated economy libs and support
None of these economy plugins are supported any more, and removing these allows EssentialsX to be used as a dependency without locally `mvn install`ing the plugin.
2018-08-05 20:51:19 +01:00
Ali Moghnieh 768b92749f update bukkit to 1.13-R0.1-SNAPSHOT.
This commit just fixes compilation errors.
2018-07-29 17:39:32 +01:00
DoNotSpamPls 03b25a0f06 Set target to Java 8 (for 1.13) & update Maven plugins (#1922) @DoNotSpamPls
This is the same PR as the last one (PR #1823), but I messed that one up accidently, sorry for that!
2018-07-17 09:38:01 +01:00
md678685 a44775cafb Prevent users being duplicated in the ignore list
Fixes #2064, as well as alleviating the issue encountered in kangarko/ChatControl-Pro#627 for EssentialsX users.
2018-07-17 07:33:14 +01:00
montlikadani 187c4eb371 Update messages_hu.properties 2018-06-28 18:27:02 +02:00
montlikadani 49201b9945 Update messages_hu.properties 2018-06-28 17:48:27 +02:00
montlikadani 6225dc8ed1 Update messages_hu.properties 2018-06-21 14:39:25 +02:00
Brokkonaut aa622f8d27 SPECTATOR mode is safe for teleporting everywhere. 2018-06-18 23:38:54 +02:00
md678685 849efa9756 Merge branch '2.x' of https://github.com/EssentialsX/Essentials into 2.x-upstream 2018-06-15 19:44:45 +01:00
md678685 8aa764f69f Check whether nick equals "off" before formatting
Fixes #1910.
2018-06-15 19:41:56 +01:00
md678685 de57a8c602 Disable EssProtect emergency mode when Ess loads late (#1954)
Related: EssentialsX/Essentials#1951.
2018-06-15 19:21:18 +01:00
md678685 4873beb100 Allow updating the compass target to be optional (#1937)
If `compass-towards-home-perm` is enabled in the EssentialsX config, then the permission `essentials.home.compass` is checked before changing the player's compass target.

Closes #1918.
2018-06-15 19:20:06 +01:00
md678685 27d9f3725a Wrap constructScalar for SnakeYAML 1.21 (#2040)
In theory, fixes #1974, fixes #1975 and fixes #1976, and also means that
Spigot are free to upgrade SnakeYAML to 1.21 again when ready.
2018-06-15 19:18:55 +01:00
md678685 16b2c3dee3 Reset pending confirmations on login (#2033)
On login, resets any pending confirmations for the user. Fixes #2021,
closes #2023.
2018-06-15 19:09:27 +01:00
BaoKunVN 2ced9469d7 Vietnamese Translation (#1824) @BauKunVN 2018-06-13 21:23:00 +01:00
montlikadani 45c806128a Updated the messages_hu.properties file 2018-05-31 20:23:48 +02:00
md678685 3d60aa1747 Fix build errors (#2018)
Fixes build errors caused by the warp owner PRs (#1961 and #2017)
2018-05-28 12:21:23 -07:00
FlashLight34 967bb44d94 Update IWarps.java (#2017) @FlashLight34
Maybe the compilation fails because that :P
2018-05-27 07:33:37 +01:00
Xeyame 7298393ec9 Add permission to bypass other's msgtoggle (#1955) @Xeyame
* Add permission to bypass other's msgtoggle

Also thanks to MD for helping me with the code :)

* Correct comment

* Remove checking for console in favour of the already existing IUser check

* Fix comments, again

* Re add isIgnoreMsg() check

Accidently removed it, sorry

* Combine 2 checks
2018-05-26 20:43:31 +01:00
FlashLight34 817caf299f setwarp owner uuid in yml file (#1961) @FlashLight34
* Update Warps.java

its not a real change i dont know if user.getuuid() exist or onother possible cmd maybe

* Update Warps.java

* Update Commandsetwarp.java

* Update Warps.java

* Update Warps.java

* Update Commandsetwarp.java

* Update Warps.java

* Update Warps.java

* Update Commandsetwarp.java

* Update Warps.java
2018-05-26 20:42:51 +01:00
montlikadani 2ff29dab80 Update Commanddeljail.java (#2002) @montlikadani
When the user entered a word to delete the jail, deleted it, but removed anything because no jail existed.
2018-05-26 20:40:45 +01:00
Brokkonaut 030eb3375b Block ignite only for PvP, not for PvE (#1967) @Brokkonaut
Players with god mode enabled could not ignite mobs with bows while only igniting players should be blocked.
2018-05-26 20:34:31 +01:00
md678685 3237632eb4 Fix versioning of NMS modules (#1971)
Resolves numerous build errors that emerged in 613e852ffd and for some reason didn't cause a build error on ender.zone, but did everywhere else.

Fixes #1970
2018-05-18 01:23:20 -07:00
Joseph Hirschfeld b29f98c525 [Feature] Add world specific /back dest. perms (#1948) @Ichbinjoe
Adds world specific perms for whether a player may use /back to teleport
back to a given world. Adds logic to default
essentials.back.into.<world> permissions for loaded worlds to true to
maintain backwards compatibility.
2018-04-29 15:49:49 +01:00
md678685 b2a5280971 Avoid build version being overridden by Jenkins (#1936) 2018-03-29 14:19:19 -07:00
games647 c7000846cd Replace Reflection with setter implementation 2018-03-21 11:16:27 +01:00
games647 d24fbc9f55 Remove final modifier to fix illegal reflective access warning
Java 9 runtimes report warnings for reflective access on JRE
classes (in this case Field.modifiers). Future versions of Java
may deny the access completely.

Since we access our own code here, we could just remove the final modifier.
With it's current visibility (of private) it's unlikely that it will be
modified from somewhere else except our Settings class.
2018-03-13 16:46:25 +01:00
games647 7e40d13947 Update lombok and remove antrun to fix compiling with JDK9
* Lombok: Older version resulted in NoSuchFieldEx: pid (fixed since 1.16.8)

* JDK9 no longer has a tools.jar because of it's modular system, but ant is
no longer required. It was introduced in 3e9a2377a8
for GroupManager. Now GM is no longer maintained and removed in
    * 5ca02e6596 (calling the build.xml)
    * fa0bbde236 (removing the remaining module)
2018-03-13 16:06:39 +01:00
Trent Hensler ace361af60 Compile against 1.13 preview.
Still a lot of work to do. One thing to note is that I used LEGACY materials in a few spots where I didn't know what the new ones are as I'm not very familiar with the 1.13 update and what it changes.
2018-01-18 17:52:44 -08:00
Trent Hensler 1a820ad9b7 Initial removal of item IDs.
We do not rely on Bukkit's item ids anymore, though we still support them in commands via a mapping built off of the items.csv.
2017-12-12 22:06:25 -08:00
153 changed files with 23113 additions and 4953 deletions

No files matched your search

-41
View File
@@ -1,41 +0,0 @@
<!--
Don't put anything inside this block, as it won't be included in the issue.
If you have a question about using EssentialsX, it may be more helpful to ask
in our Discord server: https://discord.gg/F7gexAQ
If you have a feature suggestion for EssentialsX, please delete the template.
Otherwise, if you are reporting a bug, read on:
1. Fill out the template, running the commands either in the console or
as a player. Don't simply put "latest" or we will ignore it.
2. When linking files, do not attach them to the post! Paste them on
https://gist.github.com/, then paste a link to them in the relevant parts
of the template. Avoid using Hastebin or Pastebin, as files are deleted
after a period of time.
3. If you are reporting an issue with lag, please include a timings report.
4. If you are reporting an issue with messages or in-game behaviour, please
include screenshots detailing the problem.
5. Include a description and any other details that may be helpful under the
Details section.
6. Delete this line and all above lines before posting your issue! -->
### Information
Full output of `/ess version`:
Server log (upload `logs/latest.log` to [Gist](https://gist.github.com/)):
EssentialsX config (upload `plugins/Essentials/config.yml` to [Gist](https://gist.github.com/)):
### Details
Describe your issue here.
+45
View File
@@ -0,0 +1,45 @@
---
name: Help!
about: Encountered a problem with EssentialsX? Not sure how to fix it?
---
<!-- EssentialsX help guide
Don't write inside the arrows as they will be hidden when you post your issue.
Want faster support? Come join our Discord server to get help sooner:
https://discord.gg/F7gexAQ
If you're happy to wait (or you were sent here from Discord), read on:
1. Fill out the template.
This will help us understand what problem you've encountered and help us
find a solution.
2. Check the Common Issues page.
Read through the wiki page to see if you've encountered a regular issue:
https://essentialsx.github.io/#/Common-Issues
3. Delete this line and all above lines before posting your issue! -->
### Information
Full output of `/ess version`:
<!-- Replace this with the command output -->
**Server log:** <!-- Upload `logs/latest.log` to https://gist.github.com/ -->
**EssentialsX config** <!-- Upload `plugins/Essentials/config.yml` to https://gist.github.com/ -->
### Help request
**Problem**
<!-- What problem did you encounter? -->
**What I have tried**
<!-- What have you tried so far? -->
**Screenshots**
<!-- If relevant, include any screenshots here. -->
+58
View File
@@ -0,0 +1,58 @@
---
name: Report a bug
about: Report an EssentialsX bug. Only use this if you're 100% sure there's something wrong with EssentialsX - otherwise, try "Help!".
---
<!-- EssentialsX bug reporting guide
Don't put anything inside this block, as it won't be included in the issue.
If you are reporting a bug, please follow the following steps:
1. Fill out the template in full.
Run the commands in the console. Don't just put "latest" as a version,
or we will ignore it.
2. When linking files, do not attach them to the post!
Copy and paste any logs into https://gist.github.com/, then paste a
link to them in the relevant parts of the template. Avoid using
Hastebin or Pastebin, as this makes providing support more difficult.
**DO NOT drag files into this box!**
3. If you are reporting a performance issue, please include a link to a
Timings and/or profiler report.
4. If you are reporting a bug with commands or something else in-game,
please include screenshots to help us diagnose the problem.
5. Make sure not to write between the arrows, as anything there will be
hidden.
6. Delete this line and all above lines before posting your issue! -->
### Information
**Full output of `/ess version`**:
```
<!-- Run the command in your console, and copy and paste the whole output here -->
```
**Server log**: <!-- Upload `logs/latest.log` to https://gist.github.com/, replace this with link -->
**EssentialsX config**: <!-- Upload `plugins/Essentials/config.yml` to https://gist.github.com/, replace this with link -->
### Details
**Description**
<!-- Replace this with a brief summary of the bug. -->
**Steps to reproduce**
<!-- Replace this with exactly what you did to cause the bug. -->
**Expected behavior**
<!-- Replace this with what you expected to happen. -->
**Screenshots**
<!-- Replace this with screenshots, if necessary. -->
@@ -0,0 +1,45 @@
---
name: Request a feature
about: Suggest a feature you want to see in EssentialsX!
---
<!-- EssentialsX feature request guide
Fill out the template. Don't write inside the arrows as they will be hidden
when you post your issue.
Not sure if your feature fits in EssentialsX? Feel free to ask on our Discord
server: https://discord.gg/F7gexAQ
If you have a feature suggestion for EssentialsX, read the following tips:
1. Fill out the template.
This will help us understand what you're requesting and why you want us
to add it.
2. Keep it simple.
Make sure it's easy to understand what you're requesting. A good way is
to keep it to one request per GitHub issue, as we can then easily track
feature requests.
3. Check whether it has already been asked or added.
You can search the issue tracker to see if your feature has already been
requested at https://github.com/EssentialsX/Essentials/issues. You can
also check the wiki at https://essentialsx.github.io/ to see if the
feature was recently added.
4. Ask yourself: "Does this belong in EssentialsX?"
There are lots of features that we reject because most servers won't
need or use them. If your feature is very specific or already exists in
another plugin, it might not be a good fit for EssentialsX.
5. Delete this line and all above lines before posting your issue! -->
### Feature request
**Feature description**
<!-- What feature are you suggesting? -->
**How the feature is useful**
<!-- How is the feature useful to players, server owners and/or developers? -->
+23
View File
@@ -0,0 +1,23 @@
language: java
branches:
only:
- 2.x
- 1.13
cache:
directories:
- .buildtools
- $HOME/.m2
before_install:
- mkdir -p .buildtools
- cd .buildtools
- wget -O BuildTools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
- rm -r work/
- java -jar BuildTools.jar --rev 1.8
- java -jar BuildTools.jar --rev 1.8.3
- java -jar BuildTools.jar --rev 1.9
- java -jar BuildTools.jar --rev 1.9.4
- java -jar BuildTools.jar --rev 1.13.1
- cd ..
-39
View File
@@ -1,39 +0,0 @@
# EssentialsX new Kit configuration.
# If you don't have any kits defined in this file, the plugin will try to copy them from the config.yml
# Note: All items MUST be followed by a quantity!
# All kit names should be lower case, and will be treated as lower in permissions/costs.
# Syntax: - itemID[:DataValue/Durability] Amount [Enchantment:Level].. [itemmeta:value]...
# For Item Meta information visit http://wiki.ess3.net/wiki/Item_Meta
# 'delay' refers to the cooldown between how often you can use each kit, measured in seconds.
# Set delay to -1 for a one time kit.
# For more information, visit http://wiki.ess3.net/wiki/Kits
kits:
tools:
delay: 10
items:
- 272 1
- 273 1
- 274 1
- 275 1
dtools:
delay: 600
items:
- 278 1 efficiency:1 durability:1 fortune:1 name:&4Gigadrill lore:The_drill_that_&npierces|the_heavens
- 277 1 digspeed:3 name:Dwarf lore:Diggy|Diggy|Hole
- 298 1 color:255,255,255 name:Top_Hat lore:Good_day,_Good_day
- 279:780 1
notch:
delay: 6000
items:
- 397:3 1 player:Notch
color:
delay: 6000
items:
- 387 1 title:&4Book_&9o_&6Colors author:KHobbits lore:Ingame_color_codes book:Colors
firework:
delay: 6000
items:
- 401 1 name:Angry_Creeper color:red fade:green type:creeper power:1
- 401 1 name:Starry_Night color:yellow,orange fade:blue type:star effect:trail,twinkle power:1
- 401 2 name:Solar_Wind color:yellow,orange fade:red shape:large effect:twinkle color:yellow,orange fade:red shape:ball effect:trail color:red,purple fade:pink shape:star effect:trail power:1
+15 -37
View File
@@ -6,7 +6,7 @@
<parent>
<groupId>net.ess3</groupId>
<artifactId>EssentialsXParent</artifactId>
<version>2.15.0</version>
<version>2.16.0</version>
</parent>
<artifactId>EssentialsX</artifactId>
@@ -24,7 +24,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<version>3.7.0</version>
<configuration>
<showDeprecation>false</showDeprecation>
</configuration>
@@ -32,7 +32,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.4</version>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
@@ -46,34 +46,6 @@
</build>
<dependencies>
<dependency>
<groupId>BOSEconomy</groupId>
<artifactId>BOSEconomy</artifactId>
<version>v0.7.8.1</version>
<scope>system</scope>
<systemPath>${project.basedir}/../lib/BOSEconomy.jar</systemPath>
</dependency>
<dependency>
<groupId>iConomy</groupId>
<artifactId>iConomy5</artifactId>
<version>5</version>
<scope>system</scope>
<systemPath>${project.basedir}/../lib/iCo5.jar</systemPath>
</dependency>
<dependency>
<groupId>iConomy</groupId>
<artifactId>iConomy6</artifactId>
<version>6</version>
<scope>system</scope>
<systemPath>${project.basedir}/../lib/iCo6.jar</systemPath>
</dependency>
<dependency>
<groupId>MultiCurrency</groupId>
<artifactId>MultiCurrency</artifactId>
<version>2.2</version>
<scope>system</scope>
<systemPath>${project.basedir}/../lib/MultiCurrency.jar</systemPath>
</dependency>
<dependency>
<groupId>net.milkbowl.vault</groupId>
<artifactId>Vault</artifactId>
@@ -83,19 +55,19 @@
<dependency>
<groupId>net.ess3</groupId>
<artifactId>NMSProvider</artifactId>
<version>2.0.1</version>
<version>2.16.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>net.ess3</groupId>
<artifactId>UpdatedMetaProvider</artifactId>
<version>2.0.1</version>
<version>2.16.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>net.ess3</groupId>
<artifactId>1_8_R1Provider</artifactId>
<version>2.0.1</version>
<version>2.16.0</version>
<scope>compile</scope>
<exclusions>
<exclusion>
@@ -107,7 +79,7 @@
<dependency>
<groupId>net.ess3</groupId>
<artifactId>1_8_R2Provider</artifactId>
<version>2.0.1</version>
<version>2.16.0</version>
<scope>compile</scope>
<exclusions>
<exclusion>
@@ -119,13 +91,13 @@
<dependency>
<groupId>net.ess3</groupId>
<artifactId>LegacyProvider</artifactId>
<version>2.0.1</version>
<version>2.16.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>net.ess3</groupId>
<artifactId>ReflectionProvider</artifactId>
<version>2.0.1</version>
<version>2.16.0</version>
<scope>compile</scope>
<exclusions>
<exclusion>
@@ -134,6 +106,12 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>net.ess3</groupId>
<artifactId>FlattenedProvider</artifactId>
<version>2.16.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<repositories>
<repository>
@@ -1,6 +1,8 @@
package com.earth2me.essentials;
import com.earth2me.essentials.utils.NumberUtil;
import org.bukkit.NamespacedKey;
import org.bukkit.enchantments.Enchantment;
import java.util.HashMap;
@@ -200,11 +202,9 @@ public class Enchantments {
}
public static Enchantment getByName(String name) {
Enchantment enchantment;
if (NumberUtil.isInt(name)) {
enchantment = Enchantment.getById(Integer.parseInt(name));
} else {
enchantment = Enchantment.getByName(name.toUpperCase(Locale.ENGLISH));
Enchantment enchantment = Enchantment.getByKey(NamespacedKey.minecraft(name.toLowerCase()));
if (enchantment == null) {
enchantment = Enchantment.getByName(name.toUpperCase());
}
if (enchantment == null) {
enchantment = ENCHANTMENTS.get(name.toLowerCase(Locale.ENGLISH));
@@ -18,6 +18,9 @@
package com.earth2me.essentials;
import com.earth2me.essentials.commands.*;
import com.earth2me.essentials.items.AbstractItemDb;
import com.earth2me.essentials.items.FlatItemDb;
import com.earth2me.essentials.items.LegacyItemDb;
import com.earth2me.essentials.metrics.Metrics;
import com.earth2me.essentials.perm.PermissionsHandler;
import com.earth2me.essentials.register.payment.Methods;
@@ -28,6 +31,7 @@ import com.earth2me.essentials.textreader.IText;
import com.earth2me.essentials.textreader.KeywordReplacer;
import com.earth2me.essentials.textreader.SimpleTextInput;
import com.earth2me.essentials.utils.DateUtil;
import com.earth2me.essentials.utils.VersionUtil;
import com.google.common.base.Function;
import com.google.common.base.Throwables;
import com.google.common.collect.Iterables;
@@ -37,17 +41,17 @@ import net.ess3.api.ISettings;
import net.ess3.nms.PotionMetaProvider;
import net.ess3.nms.SpawnEggProvider;
import net.ess3.nms.SpawnerProvider;
import net.ess3.nms.flattened.FlatSpawnEggProvider;
import net.ess3.nms.legacy.LegacyPotionMetaProvider;
import net.ess3.nms.legacy.LegacySpawnEggProvider;
import net.ess3.nms.legacy.LegacySpawnerProvider;
import net.ess3.nms.refl.ReflSpawnEggProvider;
import net.ess3.nms.updatedmeta.BasePotionDataProvider;
import net.ess3.nms.updatedmeta.BlockMetaSpawnerProvider;
import net.ess3.nms.legacy.LegacySpawnEggProvider;
import net.ess3.nms.legacy.LegacySpawnerProvider;
import net.ess3.nms.v1_8_R1.v1_8_R1SpawnerProvider;
import net.ess3.nms.v1_8_R2.v1_8_R2SpawnerProvider;
import net.ess3.providers.ProviderFactory;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.block.Block;
@@ -60,6 +64,8 @@ import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.world.WorldLoadEvent;
import org.bukkit.event.world.WorldUnloadEvent;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
import org.bukkit.plugin.InvalidDescriptionException;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
@@ -90,7 +96,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
private transient Worth worth;
private transient List<IConf> confList;
private transient Backup backup;
private transient ItemDb itemDb;
private transient AbstractItemDb itemDb;
private transient final Methods paymentMethod = new Methods();
private transient PermissionsHandler permissionsHandler;
private transient AlternativeCommandsHandler alternativeCommandsHandler;
@@ -166,6 +172,10 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
Console.setInstance(this);
if (!VersionUtil.isServerSupported()) {
getLogger().severe(tl("serverUnsupported"));
}
final PluginManager pm = getServer().getPluginManager();
for (Plugin plugin : pm.getPlugins()) {
if (plugin.getDescription().getName().startsWith("Essentials") && !plugin.getDescription().getVersion().equals(this.getDescription().getVersion()) && !plugin.getDescription().getName().equals("EssentialsAntiCheat")) {
@@ -204,11 +214,13 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
execTimer.mark("Init(Spawn/Warp)");
worth = new Worth(this.getDataFolder());
confList.add(worth);
itemDb = new ItemDb(this);
itemDb = getItemDbFromConfig();
confList.add(itemDb);
execTimer.mark("Init(Worth/ItemDB)");
jails = new Jails(this);
confList.add(jails);
execTimer.mark("Init(Jails)");
spawnerProvider = new ProviderFactory<>(getLogger(),
Arrays.asList(
BlockMetaSpawnerProvider.class,
@@ -218,6 +230,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
), "mob spawner").getProvider();
spawnEggProvider = new ProviderFactory<>(getLogger(),
Arrays.asList(
FlatSpawnEggProvider.class,
ReflSpawnEggProvider.class,
LegacySpawnEggProvider.class
), "spawn egg").getProvider();
@@ -226,6 +239,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
BasePotionDataProvider.class,
LegacyPotionMetaProvider.class
), "potion meta").getProvider();
execTimer.mark("Init(Providers)");
reload();
} catch (YAMLException exception) {
if (pm.getPlugin("EssentialsUpdate") != null) {
@@ -246,8 +260,11 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
Economy.setEss(this);
execTimer.mark("RegHandler");
for (World w : Bukkit.getWorlds())
addDefaultBackPermissionsToWorld(w);
metrics = new Metrics(this);
if (!metrics.isOptOut()) {
if (metrics.isEnabled()) {
getLogger().info("Starting Metrics. Opt-out using the global bStats config.");
} else {
getLogger().info("Metrics disabled per bStats config.");
@@ -441,7 +458,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
return pc.execute(cSender, commandLabel, args);
} catch (final Exception ex) {
Bukkit.getLogger().log(Level.SEVERE, ex.getMessage(), ex);
cSender.sendMessage(ChatColor.RED + "An internal error occurred while attempting to perform this command");
cSender.sendMessage(tl("internalError"));
return true;
}
}
@@ -867,6 +884,18 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
return potionMetaProvider;
}
private static void addDefaultBackPermissionsToWorld(World w) {
String permName = "essentials.back.into." + w.getName();
Permission p = Bukkit.getPluginManager().getPermission(permName);
if (p == null) {
p = new Permission(permName,
"Allows access to /back when the destination location is within world " + w.getName(),
PermissionDefault.TRUE);
Bukkit.getPluginManager().addPermission(p);
}
}
private static class EssentialsWorldListener implements Listener, Runnable {
private transient final IEssentials ess;
@@ -876,6 +905,8 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
@EventHandler(priority = EventPriority.LOW)
public void onWorldLoad(final WorldLoadEvent event) {
addDefaultBackPermissionsToWorld(event.getWorld());
ess.getJails().onReload();
ess.getWarps().reloadConfig();
for (IConf iConf : ((Essentials) ess).confList) {
@@ -901,4 +932,22 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
ess.reload();
}
}
private AbstractItemDb getItemDbFromConfig() {
final String setting = settings.getItemDbType();
if (setting.equalsIgnoreCase("json")) {
return new FlatItemDb(this);
} else if (setting.equalsIgnoreCase("csv")) {
return new LegacyItemDb(this);
} else {
VersionUtil.BukkitVersion version = VersionUtil.getServerBukkitVersion();
if (version.isHigherThanOrEqualTo(VersionUtil.v1_13_0_R01)) {
return new FlatItemDb(this);
} else {
return new LegacyItemDb(this);
}
}
}
}
@@ -1,6 +1,8 @@
package com.earth2me.essentials;
import com.earth2me.essentials.utils.EnumUtil;
import com.earth2me.essentials.utils.LocationUtil;
import com.earth2me.essentials.utils.MaterialUtil;
import net.ess3.api.IEssentials;
import org.bukkit.GameMode;
import org.bukkit.Material;
@@ -28,11 +30,12 @@ public class EssentialsBlockListener implements Listener {
// Do not rely on getItemInHand();
// http://leaky.bukkit.org/issues/663
final ItemStack is = LocationUtil.convertBlockToItem(event.getBlockPlaced());
if (is == null) {
return;
}
if (is.getType() == Material.MOB_SPAWNER && event.getItemInHand() != null && event.getPlayer() != null && event.getItemInHand().getType() == Material.MOB_SPAWNER) {
if (is.getType() == MaterialUtil.SPAWNER && event.getItemInHand() != null && event.getPlayer() != null && event.getItemInHand().getType() == MaterialUtil.SPAWNER) {
final BlockState blockState = event.getBlockPlaced().getState();
if (blockState instanceof CreatureSpawner) {
final CreatureSpawner spawner = (CreatureSpawner) blockState;
@@ -124,7 +124,7 @@ public class EssentialsEntityListener implements Listener {
@EventHandler(priority = EventPriority.MONITOR)
public void onEntityCombustByEntity(final EntityCombustByEntityEvent event) {
if (event.getCombuster() instanceof Arrow) {
if (event.getCombuster() instanceof Arrow && event.getEntity() instanceof Player) {
Arrow combuster = (Arrow) event.getCombuster();
if (combuster.getShooter() instanceof Player) {
final User srcCombuster = ess.getUser(((Player) combuster.getShooter()).getUniqueId());
@@ -6,8 +6,8 @@ import com.earth2me.essentials.textreader.TextInput;
import com.earth2me.essentials.textreader.TextPager;
import com.earth2me.essentials.utils.DateUtil;
import com.earth2me.essentials.utils.LocationUtil;
import com.earth2me.essentials.utils.MaterialUtil;
import net.ess3.api.IEssentials;
import net.ess3.nms.refl.ReflUtil;
import org.bukkit.BanEntry;
import org.bukkit.BanList;
@@ -57,10 +57,10 @@ public class EssentialsPlayerListener implements Listener {
public void registerEvents() {
ess.getServer().getPluginManager().registerEvents(this, ess);
if (ReflUtil.getNmsVersionObject().isLowerThan(ReflUtil.V1_12_R1)) {
ess.getServer().getPluginManager().registerEvents(new PlayerListenerPre1_12(), ess);
} else {
if (isEntityPickupEvent()) {
ess.getServer().getPluginManager().registerEvents(new PlayerListener1_12(), ess);
} else {
ess.getServer().getPluginManager().registerEvents(new PlayerListenerPre1_12(), ess);
}
}
@@ -138,10 +138,10 @@ public class EssentialsPlayerListener implements Listener {
}
return;
}
final Location afk = user.getAfkPosition();
if (afk == null || !event.getTo().getWorld().equals(afk.getWorld()) || afk.distanceSquared(event.getTo()) > 9) {
user.updateActivityOnMove(true);
}
final Location afk = user.getAfkPosition();
if (afk == null || !event.getTo().getWorld().equals(afk.getWorld()) || afk.distanceSquared(event.getTo()) > 9) {
user.updateActivityOnMove(true);
}
}
@EventHandler(priority = EventPriority.HIGHEST)
@@ -152,7 +152,7 @@ public class EssentialsPlayerListener implements Listener {
event.setQuitMessage(null);
} else if (ess.getSettings().isCustomQuitMessage() && event.getQuitMessage() != null) {
final Player player = event.getPlayer();
event.setQuitMessage(ess.getSettings().getCustomQuitMessage().replace("{PLAYER}", player.getDisplayName()).replace("{USERNAME}", player.getName()));
event.setQuitMessage(ess.getSettings().getCustomQuitMessage().replace("{PLAYER}", player.getDisplayName()).replace("{USERNAME}", player.getName()).replace("{ONLINE}", NumberFormat.getInstance().format(ess.getOnlinePlayers().size())));
}
user.startTransaction();
@@ -258,7 +258,8 @@ public class EssentialsPlayerListener implements Listener {
} else if (ess.getSettings().isCustomJoinMessage()) {
String msg = ess.getSettings().getCustomJoinMessage()
.replace("{PLAYER}", player.getDisplayName()).replace("{USERNAME}", player.getName())
.replace("{UNIQUE}", NumberFormat.getInstance().format(ess.getUserMap().getUniqueUsers()));
.replace("{UNIQUE}", NumberFormat.getInstance().format(ess.getUserMap().getUniqueUsers()))
.replace("{ONLINE}", NumberFormat.getInstance().format(ess.getOnlinePlayers().size()));
ess.getServer().broadcastMessage(msg);
} else if (ess.getSettings().allowSilentJoinQuit()) {
ess.getServer().broadcastMessage(message);
@@ -308,6 +309,9 @@ public class EssentialsPlayerListener implements Listener {
user.setGodModeEnabled(false);
ess.getLogger().log(Level.INFO, "Set god mode to false for {0} because they had it enabled without permission.", user.getName());
}
user.setConfirmingClearCommand(null);
user.getConfirmingPayments().clear();
user.stopTransaction();
}
@@ -350,7 +354,10 @@ public class EssentialsPlayerListener implements Listener {
}
// Makes the compass item ingame always point to the first essentials home. #EasterEgg
// EssentialsX: This can now optionally require a permission to enable, if set in the config.
private void updateCompass(final User user) {
if (ess.getSettings().isCompassTowardsHomePerm() && !user.isAuthorized("essentials.home.compass")) return;
Location loc = user.getHome(user.getLocation());
if (loc == null) {
loc = user.getBase().getBedSpawnLocation();
@@ -457,8 +464,7 @@ public class EssentialsPlayerListener implements Listener {
if (spyer.isSocialSpyEnabled() && !player.equals(spyer.getBase())) {
if (user.isMuted() && ess.getSettings().getSocialSpyListenMutedPlayers()) {
spyer.sendMessage(tl("socialSpyMutedPrefix") + player.getDisplayName() + ": " + event.getMessage());
}
else {
} else {
spyer.sendMessage(tl("socialSpyPrefix") + player.getDisplayName() + ": " + event.getMessage());
}
}
@@ -586,7 +592,7 @@ public class EssentialsPlayerListener implements Listener {
public void onPlayerInteract(final PlayerInteractEvent event) {
switch (event.getAction()) {
case RIGHT_CLICK_BLOCK:
if (!event.isCancelled() && event.getClickedBlock().getType() == Material.BED_BLOCK && ess.getSettings().getUpdateBedAtDaytime()) {
if (!event.isCancelled() && MaterialUtil.isBed(event.getClickedBlock().getType()) && ess.getSettings().getUpdateBedAtDaytime()) {
User player = ess.getUser(event.getPlayer());
if (player.isAuthorized("essentials.sethome.bed")) {
player.getBase().setBedSpawnLocation(event.getClickedBlock().getLocation());
@@ -605,7 +611,7 @@ public class EssentialsPlayerListener implements Listener {
case LEFT_CLICK_BLOCK:
if (event.getItem() != null && event.getItem().getType() != Material.AIR) {
final User user = ess.getUser(event.getPlayer());
if (user.hasPowerTools() && user.arePowerToolsEnabled() && usePowertools(user, event.getItem().getTypeId())) {
if (user.hasPowerTools() && user.arePowerToolsEnabled() && usePowertools(user, event.getItem().getType())) {
event.setCancelled(true);
}
}
@@ -639,8 +645,8 @@ public class EssentialsPlayerListener implements Listener {
}
}
private boolean usePowertools(final User user, final int id) {
final List<String> commandList = user.getPowertool(id);
private boolean usePowertools(final User user, final Material material) {
final List<String> commandList = user.getPowertool(material);
if (commandList == null || commandList.isEmpty()) {
return false;
}
@@ -779,7 +785,16 @@ public class EssentialsPlayerListener implements Listener {
final User user = ess.getUser(event.getPlayer());
user.updateActivityOnInteract(true);
}
private static boolean isEntityPickupEvent() {
try {
Class.forName("org.bukkit.event.entity.EntityPickupItemEvent");
return true;
} catch (ClassNotFoundException ignored) {
return false;
}
}
private final class PlayerListenerPre1_12 implements Listener {
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
@@ -791,7 +806,7 @@ public class EssentialsPlayerListener implements Listener {
}
}
}
private final class PlayerListener1_12 implements Listener {
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
@@ -5,6 +5,7 @@ import com.earth2me.essentials.signs.EssentialsSign;
import com.earth2me.essentials.textreader.IText;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.event.EventPriority;
@@ -95,7 +96,7 @@ public interface ISettings extends IConf {
int getProtectCreeperMaxHeight();
List<Integer> getProtectList(final String configName);
List<Material> getProtectList(final String configName);
boolean getProtectPreventSpawn(final String creatureName);
@@ -133,9 +134,12 @@ public interface ISettings extends IConf {
boolean isEcoDisabled();
@Deprecated
boolean isTradeInStacks(int id);
List<Integer> itemSpawnBlacklist();
boolean isTradeInStacks(Material type);
List<Material> itemSpawnBlacklist();
List<EssentialsSign> enabledSigns();
@@ -239,6 +243,8 @@ public interface ISettings extends IConf {
boolean ignoreColorsInMaxLength();
boolean hideDisplayNameInVanish();
int getMaxUserCacheCount();
boolean allowSilentJoinQuit();
@@ -306,4 +312,12 @@ public interface ISettings extends IConf {
List<String> getDefaultEnabledConfirmCommands();
boolean isConfirmCommandEnabledByDefault(String commandName);
boolean isCompassTowardsHomePerm();
boolean isAllowWorldInBroadcastworld();
String getItemDbType();
boolean isForceEnableRecipe();
}
@@ -4,6 +4,7 @@ import com.earth2me.essentials.commands.IEssentialsCommand;
import net.ess3.api.ITeleport;
import net.ess3.api.MaxMoneyException;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import java.math.BigDecimal;
@@ -35,7 +36,7 @@ public interface IUser {
boolean canAfford(BigDecimal value);
Boolean canSpawnItem(final int itemId);
Boolean canSpawnItem(final Material material);
void setLastLocation();
@@ -3,7 +3,9 @@ package com.earth2me.essentials;
import com.earth2me.essentials.textreader.BookInput;
import com.earth2me.essentials.textreader.BookPager;
import com.earth2me.essentials.textreader.IText;
import com.earth2me.essentials.utils.EnumUtil;
import com.earth2me.essentials.utils.FormatUtil;
import com.earth2me.essentials.utils.MaterialUtil;
import com.earth2me.essentials.utils.NumberUtil;
import com.google.common.base.Joiner;
import net.ess3.api.IEssentials;
@@ -33,8 +35,8 @@ import static com.earth2me.essentials.I18n.tl;
public class MetaItemStack {
private static final Map<String, DyeColor> colorMap = new HashMap<String, DyeColor>();
private static final Map<String, FireworkEffect.Type> fireworkShape = new HashMap<String, FireworkEffect.Type>();
private static final Map<String, DyeColor> colorMap = new HashMap<>();
private static final Map<String, FireworkEffect.Type> fireworkShape = new HashMap<>();
static {
for (DyeColor color : DyeColor.values()) {
@@ -97,10 +99,6 @@ public class MetaItemStack {
completePotion = true;
}
private boolean isPotion(Material type) {
return type.name().endsWith("POTION");
}
public boolean canSpawn(final IEssentials ess) {
try {
ess.getServer().getUnsafe().modifyItemStack(stack.clone(), "{}");
@@ -158,16 +156,7 @@ public class MetaItemStack {
return;
}
Material banner = null;
Material shield = null;
try {
// 1.8
banner = Material.valueOf("BANNER");
// 1.9
shield = Material.valueOf("SHIELD");
} catch(IllegalArgumentException ignored){}
Material WRITTEN_BOOK = EnumUtil.getMaterial("WRITTEN_BOOK");
if (split.length > 1 && split[0].equalsIgnoreCase("name") && hasMetaPermission(sender, "name", false, true, ess)) {
final String displayName = FormatUtil.replaceFormat(split[1].replace('_', ' '));
@@ -183,18 +172,18 @@ public class MetaItemStack {
meta.setLore(lore);
stack.setItemMeta(meta);
} else if (split[0].equalsIgnoreCase("unbreakable") && hasMetaPermission(sender, "unbreakable", false, true, ess)) {
boolean value = split.length > 1 ? Boolean.valueOf(split[1]) : true;
boolean value = split.length > 1 ? Boolean.valueOf(split[1]) : true;
setUnbreakable(stack, value);
} else if (split.length > 1 && (split[0].equalsIgnoreCase("player") || split[0].equalsIgnoreCase("owner")) && stack.getType() == Material.SKULL_ITEM && hasMetaPermission(sender, "head", false, true, ess)) {
if (stack.getDurability() == 3) {
} else if (split.length > 1 && (split[0].equalsIgnoreCase("player") || split[0].equalsIgnoreCase("owner")) && hasMetaPermission(sender, "head", false, true, ess)) {
if (MaterialUtil.isPlayerHead(stack.getType(), stack.getDurability())) {
final String owner = split[1];
final SkullMeta meta = (SkullMeta) stack.getItemMeta();
meta.setOwner(owner);
meta.setOwningPlayer(ess.getServer().getOfflinePlayer(owner));
stack.setItemMeta(meta);
} else {
throw new Exception(tl("onlyPlayerSkulls"));
}
} else if (split.length > 1 && split[0].equalsIgnoreCase("book") && stack.getType() == Material.WRITTEN_BOOK && (hasMetaPermission(sender, "book", true, true, ess) || hasMetaPermission(sender, "chapter-" + split[1].toLowerCase(Locale.ENGLISH), true, true, ess))) {
} else if (split.length > 1 && split[0].equalsIgnoreCase("book") && stack.getType() == WRITTEN_BOOK && (hasMetaPermission(sender, "book", true, true, ess) || hasMetaPermission(sender, "chapter-" + split[1].toLowerCase(Locale.ENGLISH), true, true, ess))) {
final BookMeta meta = (BookMeta) stack.getItemMeta();
final IText input = new BookInput("book", true, ess);
final BookPager pager = new BookPager(input);
@@ -202,42 +191,42 @@ public class MetaItemStack {
List<String> pages = pager.getPages(split[1]);
meta.setPages(pages);
stack.setItemMeta(meta);
} else if (split.length > 1 && split[0].equalsIgnoreCase("author") && stack.getType() == Material.WRITTEN_BOOK && hasMetaPermission(sender, "author", false, true, ess)) {
} else if (split.length > 1 && split[0].equalsIgnoreCase("author") && stack.getType() == WRITTEN_BOOK && hasMetaPermission(sender, "author", false, true, ess)) {
final String author = FormatUtil.replaceFormat(split[1]);
final BookMeta meta = (BookMeta) stack.getItemMeta();
meta.setAuthor(author);
stack.setItemMeta(meta);
} else if (split.length > 1 && split[0].equalsIgnoreCase("title") && stack.getType() == Material.WRITTEN_BOOK && hasMetaPermission(sender, "title", false, true, ess)) {
} else if (split.length > 1 && split[0].equalsIgnoreCase("title") && stack.getType() == WRITTEN_BOOK && hasMetaPermission(sender, "title", false, true, ess)) {
final String title = FormatUtil.replaceFormat(split[1].replace('_', ' '));
final BookMeta meta = (BookMeta) stack.getItemMeta();
meta.setTitle(title);
stack.setItemMeta(meta);
} else if (split.length > 1 && split[0].equalsIgnoreCase("power") && stack.getType() == Material.FIREWORK && hasMetaPermission(sender, "firework-power", false, true, ess)) {
} else if (split.length > 1 && split[0].equalsIgnoreCase("power") && (MaterialUtil.isFirework(stack.getType()))&& hasMetaPermission(sender, "firework-power", false, true, ess)) {
final int power = NumberUtil.isInt(split[1]) ? Integer.parseInt(split[1]) : 0;
final FireworkMeta meta = (FireworkMeta) stack.getItemMeta();
meta.setPower(power > 3 ? 4 : power);
stack.setItemMeta(meta);
} else if (split.length > 1 && split[0].equalsIgnoreCase("itemflags") && hasMetaPermission(sender, "itemflags", false, true, ess)) {
addItemFlags(string);
} else if (stack.getType() == Material.FIREWORK) {//WARNING - Meta for fireworks will be ignored after this point.
} else if (MaterialUtil.isFirework(stack.getType())) {//WARNING - Meta for fireworks will be ignored after this point.
addFireworkMeta(sender, false, string, ess);
} else if (isPotion(stack.getType())) { //WARNING - Meta for potions will be ignored after this point.
} else if (MaterialUtil.isPotion(stack.getType())) { //WARNING - Meta for potions will be ignored after this point.
addPotionMeta(sender, false, string, ess);
} else if (banner != null && stack.getType() == banner) { //WARNING - Meta for banners will be ignored after this point.
} else if (MaterialUtil.isBanner(stack.getType())) {
//WARNING - Meta for banners will be ignored after this point.
addBannerMeta(sender, false, string, ess);
} else if (shield != null && stack.getType() == shield) { //WARNING - Meta for shields will be ignored after this point.
addBannerMeta(sender, false, string, ess);
} else if (split.length > 1 && (split[0].equalsIgnoreCase("color") || split[0].equalsIgnoreCase("colour")) && (stack.getType() == Material.LEATHER_BOOTS || stack.getType() == Material.LEATHER_CHESTPLATE || stack.getType() == Material.LEATHER_HELMET || stack.getType() == Material.LEATHER_LEGGINGS)) {
} else if (split.length > 1 && (split[0].equalsIgnoreCase("color") || split[0].equalsIgnoreCase("colour")) && MaterialUtil.isLeatherArmor(stack.getType())) {
final String[] color = split[1].split("(\\||,)");
if(color.length == 1 && (NumberUtil.isInt(color[0]) || color[0].startsWith("#"))) { // int rgb and hex
if (color.length == 1 && (NumberUtil.isInt(color[0]) || color[0].startsWith("#"))) {
// Either integer or hexadecimal
final LeatherArmorMeta meta = (LeatherArmorMeta) stack.getItemMeta();
String input = color[0];
if(input.startsWith("#")) {
if (input.startsWith("#")) { // Hex
meta.setColor(Color.fromRGB(
Integer.valueOf(input.substring(1, 3), 16),
Integer.valueOf(input.substring(3, 5), 16),
Integer.valueOf(input.substring(5, 7), 16)));
} else {
} else { // Int
meta.setColor(Color.fromRGB(Integer.parseInt(input)));
}
stack.setItemMeta(meta);
@@ -281,7 +270,7 @@ public class MetaItemStack {
}
public void addFireworkMeta(final CommandSource sender, final boolean allowShortName, final String string, final IEssentials ess) throws Exception {
if (stack.getType() == Material.FIREWORK) {
if (MaterialUtil.isFirework(stack.getType())) {
final String[] split = splitPattern.split(string, 2);
if (split.length < 2) {
return;
@@ -353,7 +342,7 @@ public class MetaItemStack {
}
public void addPotionMeta(final CommandSource sender, final boolean allowShortName, final String string, final IEssentials ess) throws Exception {
if (isPotion(stack.getType())) {
if (MaterialUtil.isPotion(stack.getType())) {
final String[] split = splitPattern.split(string, 2);
if (split.length < 2) {
@@ -482,13 +471,13 @@ public class MetaItemStack {
}
public void addBannerMeta(final CommandSource sender, final boolean allowShortName, final String string, final IEssentials ess) throws Exception {
if (stack.getType() == Material.BANNER && string != null) {
if (MaterialUtil.isBanner(stack.getType()) && !stack.getType().toString().equals("SHIELD") && string != null) {
final String[] split = splitPattern.split(string, 2);
if (split.length < 2) {
throw new Exception(tl("invalidBanner", split[1]));
}
PatternType patternType = null;
try {
patternType = PatternType.valueOf(split[0]);
@@ -506,7 +495,7 @@ public class MetaItemStack {
}
stack.setItemMeta(meta);
} else if (stack.getType() == Material.SHIELD && string != null) {
} else if (stack.getType().toString().equals("SHIELD") && string != null) {
final String[] split = splitPattern.split(string, 2);
if (split.length < 2) {
@@ -554,22 +543,36 @@ public class MetaItemStack {
}
}
private static int bukkitUnbreakableSupport = -1;
private static Method spigotMethod;
private static Method setUnbreakableMethod;
private void setUnbreakable(ItemStack is, boolean unbreakable) {
ItemMeta meta = is.getItemMeta();
try {
if (spigotMethod == null) {
spigotMethod = meta.getClass().getDeclaredMethod("spigot");
spigotMethod.setAccessible(true);
if (bukkitUnbreakableSupport == -1) {
try {
ItemMeta.class.getDeclaredMethod("setUnbreakable", boolean.class);
bukkitUnbreakableSupport = 1;
} catch (NoSuchMethodException | SecurityException ex) {
bukkitUnbreakableSupport = 0;
}
}
Object itemStackSpigot = spigotMethod.invoke(meta);
if (setUnbreakableMethod == null) {
setUnbreakableMethod = itemStackSpigot.getClass().getDeclaredMethod("setUnbreakable", Boolean.TYPE);
setUnbreakableMethod.setAccessible(true);
if (bukkitUnbreakableSupport == 1) {
meta.setUnbreakable(unbreakable);
} else {
if (spigotMethod == null) {
spigotMethod = meta.getClass().getDeclaredMethod("spigot");
spigotMethod.setAccessible(true);
}
Object itemStackSpigot = spigotMethod.invoke(meta);
if (setUnbreakableMethod == null) {
setUnbreakableMethod = itemStackSpigot.getClass().getDeclaredMethod("setUnbreakable", Boolean.TYPE);
setUnbreakableMethod.setAccessible(true);
}
setUnbreakableMethod.invoke(itemStackSpigot, unbreakable);
}
setUnbreakableMethod.invoke(itemStackSpigot, unbreakable);
is.setItemMeta(meta);
} catch (Throwable t) {
t.printStackTrace();
@@ -75,6 +75,14 @@ public enum Mob {
HUSK("Husk", Enemies.ENEMY, "HUSK"),
ILLUSIONER("Illusioner", Enemies.ENEMY, "ILLUSIONER"),
PARROT("Parrot", Enemies.NEUTRAL, "PARROT"),
TURTLE("Turtle", Enemies.NEUTRAL, "TURTLE"),
PHANTOM("Phantom", Enemies.ENEMY, "PHANTOM"),
COD("Cod", Enemies.NEUTRAL, "COD"),
SALMON("Salmon", Enemies.NEUTRAL, "SALMON"),
PUFFERFISH("Pufferfish", Enemies.NEUTRAL, "PUFFERFISH"),
TROPICAL_FISH("TropicalFish", Enemies.NEUTRAL, "TROPICAL_FISH"),
DROWNED("Drowned", Enemies.ENEMY, "DROWNED"),
DOLPHIN("Dolphin", Enemies.NEUTRAL, "DOLPHIN"),
;
public static final Logger logger = Logger.getLogger("Essentials");
@@ -53,9 +53,9 @@ public enum MobData {
BAY_HORSE("bay", EntityType.HORSE, Horse.Color.BROWN, true),
BROWN_HORSE("brown", EntityType.HORSE, Horse.Color.BROWN, false),
SADDLE_HORSE("saddle", EntityType.HORSE, Data.HORSESADDLE, true),
GOLD_ARMOR_HORSE("goldarmor", EntityType.HORSE, Material.GOLD_BARDING, true),
DIAMOND_ARMOR_HORSE("diamondarmor", EntityType.HORSE, Material.DIAMOND_BARDING, true),
ARMOR_HORSE("armor", EntityType.HORSE, Material.IRON_BARDING, true),
GOLD_ARMOR_HORSE("goldarmor", EntityType.HORSE, Material.GOLDEN_HORSE_ARMOR, true),
DIAMOND_ARMOR_HORSE("diamondarmor", EntityType.HORSE, Material.DIAMOND_HORSE_ARMOR, true),
ARMOR_HORSE("armor", EntityType.HORSE, Material.IRON_HORSE_ARMOR, true),
SIAMESE_CAT("siamese", EntityType.OCELOT, Ocelot.Type.SIAMESE_CAT, true),
WHITE_CAT("white", EntityType.OCELOT, Ocelot.Type.SIAMESE_CAT, false),
RED_CAT("red", EntityType.OCELOT, Ocelot.Type.RED_CAT, true),
@@ -66,12 +66,12 @@ public enum MobData {
BABY_ZOMBIE("baby", EntityType.ZOMBIE.getEntityClass(), Data.BABYZOMBIE, true),
ADULT_ZOMBIE("adult", EntityType.ZOMBIE.getEntityClass(), Data.ADULTZOMBIE, true),
DIAMOND_SWORD_ZOMBIE("diamondsword", EntityType.ZOMBIE.getEntityClass(), Material.DIAMOND_SWORD, true),
GOLD_SWORD_ZOMBIE("goldsword", EntityType.ZOMBIE.getEntityClass(), Material.GOLD_SWORD, true),
GOLD_SWORD_ZOMBIE("goldsword", EntityType.ZOMBIE.getEntityClass(), Material.GOLDEN_SWORD, true),
IRON_SWORD_ZOMBIE("ironsword", EntityType.ZOMBIE.getEntityClass(), Material.IRON_SWORD, true),
STONE_SWORD_ZOMBIE("stonesword", EntityType.ZOMBIE.getEntityClass(), Material.STONE_SWORD, false),
SWORD_ZOMBIE("sword", EntityType.ZOMBIE.getEntityClass(), Material.STONE_SWORD, true),
DIAMOND_SWORD_SKELETON("diamondsword", EntityType.SKELETON, Material.DIAMOND_SWORD, true),
GOLD_SWORD_SKELETON("goldsword", EntityType.SKELETON, Material.GOLD_SWORD, true),
GOLD_SWORD_SKELETON("goldsword", EntityType.SKELETON, Material.GOLDEN_SWORD, true),
IRON_SWORD_SKELETON("ironsword", EntityType.SKELETON, Material.IRON_SWORD, true),
STONE_SWORD_SKELETON("stonesword", EntityType.SKELETON, Material.STONE_SWORD, false),
SWORD_SKELETON("sword", EntityType.SKELETON, Material.STONE_SWORD, true),
@@ -95,6 +95,18 @@ public enum MobData {
BLUE_PARROT("blue", EntityType.PARROT, Parrot.Variant.BLUE, true),
CYAN_PARROT("cyan", EntityType.PARROT, Parrot.Variant.CYAN, true),
GRAY_PARROT("gray", EntityType.PARROT, Parrot.Variant.GRAY, true),
KOB_TROPICAL_FISH("kob", EntityType.TROPICAL_FISH, TropicalFish.Pattern.KOB, true),
SUNSTREAK_TROPICAL_FISH("sunstreak", EntityType.TROPICAL_FISH, TropicalFish.Pattern.SUNSTREAK, true),
SNOOPER_TROPICAL_FISH("snooper", EntityType.TROPICAL_FISH, TropicalFish.Pattern.SNOOPER, true),
DASHER_TROPICAL_FISH("dasher", EntityType.TROPICAL_FISH, TropicalFish.Pattern.DASHER, true),
BRINELY_TROPICAL_FISH("brinely", EntityType.TROPICAL_FISH, TropicalFish.Pattern.BRINELY, true),
SPOTTY_TROPICAL_FISH("spotty", EntityType.TROPICAL_FISH, TropicalFish.Pattern.SPOTTY, true),
FLOPPER_TROPICAL_FISH("flopper", EntityType.TROPICAL_FISH, TropicalFish.Pattern.FLOPPER, true),
STRIPEY_TROPICAL_FISH("stripey", EntityType.TROPICAL_FISH, TropicalFish.Pattern.STRIPEY, true),
GLITTER_TROPICAL_FISH("glitter", EntityType.TROPICAL_FISH, TropicalFish.Pattern.GLITTER, true),
BLOCKFISH_TROPICAL_FISH("blockfish", EntityType.TROPICAL_FISH, TropicalFish.Pattern.BLOCKFISH, true),
BETTY_TROPICAL_FISH("betty", EntityType.TROPICAL_FISH, TropicalFish.Pattern.BETTY, true),
CLAYFISH_TROPICAL_FISH("clayfish", EntityType.TROPICAL_FISH, TropicalFish.Pattern.CLAYFISH, true);
;
@@ -252,6 +264,8 @@ public enum MobData {
}
} else if (this.value instanceof Parrot.Variant) {
((Parrot) spawned).setVariant((Parrot.Variant) this.value);
} else if (this.value instanceof TropicalFish.Pattern) {
((TropicalFish) spawned).setPattern((TropicalFish.Pattern) this.value);
}
}
}
@@ -8,7 +8,9 @@ import org.bukkit.advancement.AdvancementProgress;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeInstance;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.PistonMoveReaction;
import org.bukkit.block.data.BlockData;
import org.bukkit.conversations.Conversation;
import org.bukkit.conversations.ConversationAbandonedEvent;
import org.bukkit.entity.*;
@@ -25,6 +27,8 @@ import org.bukkit.plugin.Plugin;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.util.BoundingBox;
import org.bukkit.util.RayTraceResult;
import org.bukkit.util.Vector;
import java.lang.reflect.InvocationTargetException;
@@ -145,6 +149,10 @@ public class OfflinePlayer implements Player {
return -1;
}
public BlockFace getFacing() {
return null;
}
@Override
public boolean performCommand(String string) {
return false;
@@ -200,24 +208,34 @@ public class OfflinePlayer implements Player {
return Collections.emptyList();
}
@Override
public Block getTargetBlock(HashSet<Byte> hs, int i) {
return null;
}
@Override
public Block getTargetBlock(Set<Material> mat, int i) {
return null;
}
@Override
public List<Block> getLastTwoTargetBlocks(HashSet<Byte> hs, int i) {
public List<Block> getLastTwoTargetBlocks(Set<Material> mat, int i) {
return Collections.emptyList();
}
@Override
public List<Block> getLastTwoTargetBlocks(Set<Material> mat, int i) {
return Collections.emptyList();
public Block getTargetBlockExact(int maxDistance) {
return null;
}
@Override
public Block getTargetBlockExact(int maxDistance, FluidCollisionMode fluidCollisionMode) {
return null;
}
@Override
public RayTraceResult rayTraceBlocks(double maxDistance) {
return null;
}
@Override
public RayTraceResult rayTraceBlocks(double maxDistance, FluidCollisionMode fluidCollisionMode) {
return null;
}
@Override
@@ -243,6 +261,15 @@ public class OfflinePlayer implements Player {
return server;
}
@Override
public boolean isPersistent() {
return false;
}
@Override
public void setPersistent(boolean persistent) {
}
public Vector getMomentum() {
return getVelocity();
}
@@ -481,7 +508,8 @@ public class OfflinePlayer implements Player {
}
@Override
public void sendBlockChange(Location lctn, int i, byte b) {
public void sendBlockChange(Location loc, BlockData block) {
}
@Override
@@ -653,6 +681,31 @@ public class OfflinePlayer implements Player {
public void setPlayerListName(String name) {
}
@Override
public String getPlayerListHeader() {
return null;
}
@Override
public String getPlayerListFooter() {
return null;
}
@Override
public void setPlayerListHeader(String header) {
}
@Override
public void setPlayerListFooter(String footer) {
}
@Override
public void setPlayerListHeaderFooter(String header, String footer) {
}
@Override
public String getPlayerListName() {
return name;
@@ -742,10 +795,20 @@ public class OfflinePlayer implements Player {
public void hidePlayer(Player player) {
}
@Override
public void hidePlayer(Plugin plugin, Player player) {
}
@Override
public void showPlayer(Player player) {
}
@Override
public void showPlayer(Plugin plugin, Player player) {
}
@Override
public boolean canSee(Player player) {
return false;
@@ -920,6 +983,26 @@ public class OfflinePlayer implements Player {
return 0;
}
@Override
public boolean discoverRecipe(NamespacedKey recipe) {
return false;
}
@Override
public int discoverRecipes(Collection<NamespacedKey> recipes) {
return 0;
}
@Override
public boolean undiscoverRecipe(NamespacedKey recipe) {
return false;
}
@Override
public int undiscoverRecipes(Collection<NamespacedKey> recipes) {
return 0;
}
@Override
public boolean hasLineOfSight(Entity entity) {
return false;
@@ -1195,6 +1278,21 @@ public class OfflinePlayer implements Player {
public void setGliding(boolean b) {
}
@Override
public boolean isSwimming() {
return false;
}
@Override
public void setSwimming(boolean swimming) {
}
@Override
public boolean isRiptiding() {
return false;
}
@Override
public void setAI(boolean b) {
}
@@ -1412,6 +1510,11 @@ public class OfflinePlayer implements Player {
return null;
}
@Override
public int getClientViewDistance() {
return 0;
}
@Override
public String getLocale() {
return null;
@@ -1459,6 +1562,11 @@ public class OfflinePlayer implements Player {
return 0;
}
@Override
public BoundingBox getBoundingBox() {
return null;
}
@Override
public List<Entity> getPassengers() {
return null;
@@ -1478,4 +1586,8 @@ public class OfflinePlayer implements Player {
public PistonMoveReaction getPistonMoveReaction() {
return null;
}
@Override
public void updateCommands() {
}
}
@@ -11,8 +11,8 @@ import java.util.Set;
public class Potions {
private static final Map<String, PotionEffectType> POTIONS = new HashMap<String, PotionEffectType>();
private static final Map<String, PotionEffectType> ALIASPOTIONS = new HashMap<String, PotionEffectType>();
private static final Map<String, PotionEffectType> POTIONS = new HashMap<>();
private static final Map<String, PotionEffectType> ALIASPOTIONS = new HashMap<>();
static {
@@ -10,14 +10,13 @@ import com.earth2me.essentials.utils.NumberUtil;
import net.ess3.api.IEssentials;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.MemoryConfiguration;
import org.bukkit.event.EventPriority;
import org.bukkit.inventory.ItemStack;
import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
@@ -432,6 +431,9 @@ public class Settings implements net.ess3.api.ISettings {
mFormat = "§r".concat(mFormat);
chatFormats.put(group, mFormat);
}
if (isDebug()) {
ess.getLogger().info(String.format("Found format '%s' for group '%s'", mFormat, group));
}
return mFormat;
}
@@ -533,17 +535,21 @@ public class Settings implements net.ess3.api.ISettings {
currencyFormat = _getCurrencyFormat();
unprotectedSigns = _getUnprotectedSign();
defaultEnabledConfirmCommands = _getDefaultEnabledConfirmCommands();
isCompassTowardsHomePerm = _isCompassTowardsHomePerm();
isAllowWorldInBroadcastworld = _isAllowWorldInBroadcastworld();
itemDbType = _getItemDbType();
forceEnableRecipe = _isForceEnableRecipe();
}
private List<Integer> itemSpawnBl = new ArrayList<Integer>();
private List<Material> itemSpawnBl = new ArrayList<Material>();
@Override
public List<Integer> itemSpawnBlacklist() {
public List<Material> itemSpawnBlacklist() {
return itemSpawnBl;
}
private List<Integer> _getItemSpawnBlacklist() {
final List<Integer> epItemSpwn = new ArrayList<Integer>();
private List<Material> _getItemSpawnBlacklist() {
final List<Material> epItemSpwn = new ArrayList<>();
if (ess.getItemDb() == null) {
logger.log(Level.FINE, "Aborting ItemSpawnBL read, itemDB not yet loaded.");
return epItemSpwn;
@@ -555,7 +561,7 @@ public class Settings implements net.ess3.api.ISettings {
}
try {
final ItemStack iStack = ess.getItemDb().get(itemName);
epItemSpwn.add(iStack.getTypeId());
epItemSpwn.add(iStack.getType());
} catch (Exception ex) {
logger.log(Level.SEVERE, tl("unknownItemInList", itemName, "item-spawn-blacklist"));
}
@@ -643,10 +649,17 @@ public class Settings implements net.ess3.api.ISettings {
// #easteregg
@Override
@Deprecated
public boolean isTradeInStacks(int id) {
return config.getBoolean("trade-in-stacks-" + id, false);
}
// #easteregg
@Override
public boolean isTradeInStacks(Material type) {
return config.getBoolean("trade-in-stacks." + type.toString().toLowerCase().replace("_", ""), false);
}
// #easteregg
private boolean economyDisabled = false;
@@ -665,8 +678,8 @@ public class Settings implements net.ess3.api.ISettings {
}
@Override
public List<Integer> getProtectList(final String configName) {
final List<Integer> list = new ArrayList<Integer>();
public List<Material> getProtectList(final String configName) {
final List<Material> list = new ArrayList<>();
for (String itemName : config.getString(configName, "").split(",")) {
itemName = itemName.trim();
if (itemName.isEmpty()) {
@@ -675,7 +688,7 @@ public class Settings implements net.ess3.api.ISettings {
ItemStack itemStack;
try {
itemStack = ess.getItemDb().get(itemName);
list.add(itemStack.getTypeId());
list.add(itemStack.getType());
} catch (Exception ex) {
logger.log(Level.SEVERE, tl("unknownItemInList", itemName, configName));
}
@@ -1091,6 +1104,11 @@ public class Settings implements net.ess3.api.ISettings {
return config.getBoolean("ignore-colors-in-max-nick-length", false);
}
@Override
public boolean hideDisplayNameInVanish() {
return config.getBoolean("hide-displayname-in-vanish", false);
}
private boolean allowSilentJoin;
public boolean _allowSilentJoinQuit() {
@@ -1292,7 +1310,12 @@ public class Settings implements net.ess3.api.ISettings {
if (isCommandCooldownsEnabled()) {
for (Entry<Pattern, Long> entry : this.commandCooldowns.entrySet()) {
// Check if label matches current pattern (command-cooldown in config)
if (entry.getKey().matcher(label).matches()) {
boolean matches = entry.getKey().matcher(label).matches();
if (isDebug()) {
ess.getLogger().info(String.format("Checking command '%s' against cooldown '%s': %s", label, entry.getKey(), matches));
}
if (matches) {
return entry;
}
}
@@ -1334,24 +1357,8 @@ public class Settings implements net.ess3.api.ISettings {
DecimalFormat currencyFormat = new DecimalFormat(currencyFormatString, decimalFormatSymbols);
currencyFormat.setRoundingMode(RoundingMode.FLOOR);
// Updates NumberUtil#PRETTY_FORMAT field so that all of Essentials
// can follow a single format.
try {
Field field = NumberUtil.class.getDeclaredField("PRETTY_FORMAT");
field.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(null, currencyFormat);
modifiersField.setAccessible(false);
field.setAccessible(false);
} catch (NoSuchFieldException | IllegalAccessException e) {
ess.getLogger().severe("Failed to apply custom currency format: " + e.getMessage());
if (isDebug()) {
e.printStackTrace();
}
}
// Updates NumberUtil#PRETTY_FORMAT field so that all of Essentials can follow a single format.
NumberUtil.internalSetPrettyFormat(currencyFormat);
return currencyFormat;
}
@@ -1439,4 +1446,48 @@ public class Settings implements net.ess3.api.ISettings {
public boolean isConfirmCommandEnabledByDefault(String commandName) {
return getDefaultEnabledConfirmCommands().contains(commandName.toLowerCase());
}
private boolean isCompassTowardsHomePerm;
private boolean _isCompassTowardsHomePerm() {
return config.getBoolean("compass-towards-home-perm", false);
}
@Override
public boolean isCompassTowardsHomePerm() {
return isCompassTowardsHomePerm;
}
private boolean isAllowWorldInBroadcastworld;
private boolean _isAllowWorldInBroadcastworld() {
return config.getBoolean("allow-world-in-broadcastworld", false);
}
@Override
public boolean isAllowWorldInBroadcastworld() {
return isAllowWorldInBroadcastworld;
}
private String itemDbType; // #EasterEgg - admins can manually switch items provider if they want
private String _getItemDbType() {
return config.getString("item-db-type", "auto");
}
@Override
public String getItemDbType() {
return itemDbType;
}
private boolean forceEnableRecipe; // https://github.com/EssentialsX/Essentials/issues/1397
private boolean _isForceEnableRecipe() {
return config.getBoolean("force-enable-recipe", false);
}
@Override
public boolean isForceEnableRecipe() {
return false;
}
}
@@ -191,16 +191,16 @@ public class SpawnMob {
invent.setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE, 1));
invent.setHelmet(new ItemStack(Material.DIAMOND_HELMET, 1));
} else if (inputData.contains("gold")) {
invent.setBoots(new ItemStack(Material.GOLD_BOOTS, 1));
invent.setLeggings(new ItemStack(Material.GOLD_LEGGINGS, 1));
invent.setChestplate(new ItemStack(Material.GOLD_CHESTPLATE, 1));
invent.setHelmet(new ItemStack(Material.GOLD_HELMET, 1));
invent.setBoots(new ItemStack(Material.GOLDEN_BOOTS, 1));
invent.setLeggings(new ItemStack(Material.GOLDEN_LEGGINGS, 1));
invent.setChestplate(new ItemStack(Material.GOLDEN_CHESTPLATE, 1));
invent.setHelmet(new ItemStack(Material.GOLDEN_HELMET, 1));
} else if (inputData.contains("leather")) {
invent.setBoots(new ItemStack(Material.LEATHER_BOOTS, 1));
invent.setLeggings(new ItemStack(Material.LEATHER_LEGGINGS, 1));
invent.setChestplate(new ItemStack(Material.LEATHER_CHESTPLATE, 1));
invent.setHelmet(new ItemStack(Material.LEATHER_HELMET, 1));
} else {
} else if (inputData.contains("iron")) {
invent.setBoots(new ItemStack(Material.IRON_BOOTS, 1));
invent.setLeggings(new ItemStack(Material.IRON_LEGGINGS, 1));
invent.setChestplate(new ItemStack(Material.IRON_CHESTPLATE, 1));
@@ -228,7 +228,7 @@ public class SpawnMob {
InventoryWorkaround.setItemInMainHand(invent, new ItemStack(Material.BOW, 1));
InventoryWorkaround.setItemInMainHandDropChance(invent, 0.1f);
invent.setBoots(new ItemStack(Material.GOLD_BOOTS, 1));
invent.setBoots(new ItemStack(Material.GOLDEN_BOOTS, 1));
invent.setBootsDropChance(0.0f);
}
@@ -237,10 +237,10 @@ public class SpawnMob {
setVillager(zombie, false);
final EntityEquipment invent = zombie.getEquipment();
InventoryWorkaround.setItemInMainHand(invent, new ItemStack(Material.GOLD_SWORD, 1));
InventoryWorkaround.setItemInMainHand(invent, new ItemStack(Material.GOLDEN_SWORD, 1));
InventoryWorkaround.setItemInMainHandDropChance(invent, 0.1f);
invent.setBoots(new ItemStack(Material.GOLD_BOOTS, 1));
invent.setBoots(new ItemStack(Material.GOLDEN_BOOTS, 1));
invent.setBootsDropChance(0.0f);
}
@@ -249,7 +249,7 @@ public class SpawnMob {
setVillager(zombie, false);
final EntityEquipment invent = zombie.getEquipment();
invent.setBoots(new ItemStack(Material.GOLD_BOOTS, 1));
invent.setBoots(new ItemStack(Material.GOLDEN_BOOTS, 1));
invent.setBootsDropChance(0.0f);
}
@@ -4,6 +4,8 @@ import com.earth2me.essentials.utils.DateUtil;
import com.earth2me.essentials.utils.LocationUtil;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.api.events.UserWarpEvent;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerRespawnEvent;
@@ -247,6 +249,13 @@ public class Teleport implements net.ess3.api.ITeleport {
//The warp function is a wrapper used to teleportPlayer a player to a /warp
@Override
public void warp(IUser teleportee, String warp, Trade chargeFor, TeleportCause cause) throws Exception {
UserWarpEvent event = new UserWarpEvent(teleportee, warp, chargeFor);
Bukkit.getServer().getPluginManager().callEvent(event);
if(event.isCancelled()) {
return;
}
warp = event.getWarp();
Location loc = ess.getWarps().getWarp(warp);
teleportee.sendMessage(tl("warpingTo", warp, loc.getWorld().getName(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
if (!teleportee.equals(teleportOwner)) {
@@ -18,6 +18,7 @@ import net.ess3.nms.refl.ReflUtil;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.inventory.ItemStack;
@@ -222,8 +223,8 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
}
@Override
public Boolean canSpawnItem(final int itemId) {
return !ess.getSettings().itemSpawnBlacklist().contains(itemId);
public Boolean canSpawnItem(final Material material) {
return !ess.getSettings().itemSpawnBlacklist().contains(material);
}
@Override
@@ -359,7 +360,7 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
}
public String getDisplayName() {
return super.getBase().getDisplayName() == null ? super.getBase().getName() : super.getBase().getDisplayName();
return super.getBase().getDisplayName() == null || (ess.getSettings().hideDisplayNameInVanish() && isHidden()) ? super.getBase().getName() : super.getBase().getDisplayName();
}
@Override
@@ -7,6 +7,7 @@ import net.ess3.api.IEssentials;
import net.ess3.api.InvalidWorldException;
import net.ess3.api.MaxMoneyException;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@@ -231,26 +232,35 @@ public abstract class UserData extends PlayerExtension implements IConf {
config.save();
}
private List<Integer> unlimited;
private List<Material> unlimited;
private List<Integer> _getUnlimited() {
return config.getIntegerList("unlimited");
private List<Material> _getUnlimited() {
List<Material> retlist = new ArrayList<>();
List<String> configList = config.getStringList("unlimited");
for(String s : configList) {
Material mat = Material.matchMaterial(s);
if(mat != null) {
retlist.add(mat);
}
}
return retlist;
}
public List<Integer> getUnlimited() {
public List<Material> getUnlimited() {
return unlimited;
}
public boolean hasUnlimited(ItemStack stack) {
return unlimited.contains(stack.getTypeId());
return unlimited.contains(stack.getType());
}
public void setUnlimited(ItemStack stack, boolean state) {
if (unlimited.contains(stack.getTypeId())) {
unlimited.remove(Integer.valueOf(stack.getTypeId()));
if (unlimited.contains(stack.getType())) {
unlimited.remove(stack.getType());
}
if (state) {
unlimited.add(stack.getTypeId());
unlimited.add(stack.getType());
}
config.setProperty("unlimited", unlimited);
config.save();
@@ -262,7 +272,7 @@ public abstract class UserData extends PlayerExtension implements IConf {
if (config.isConfigurationSection("powertools")) {
return config.getConfigurationSection("powertools").getValues(false);
}
return new HashMap<String, Object>();
return new HashMap<>();
}
public void clearAllPowertools() {
@@ -273,19 +283,19 @@ public abstract class UserData extends PlayerExtension implements IConf {
@SuppressWarnings("unchecked")
public List<String> getPowertool(ItemStack stack) {
return (List<String>) powertools.get("" + stack.getTypeId());
return (List<String>) powertools.get(stack.getType().name().toLowerCase(Locale.ENGLISH));
}
@SuppressWarnings("unchecked")
public List<String> getPowertool(int id) {
return (List<String>) powertools.get("" + id);
public List<String> getPowertool(Material material) {
return (List<String>) powertools.get(material.name().toLowerCase(Locale.ENGLISH));
}
public void setPowertool(ItemStack stack, List<String> commandList) {
if (commandList == null || commandList.isEmpty()) {
powertools.remove("" + stack.getTypeId());
powertools.remove(stack.getType().name().toLowerCase(Locale.ENGLISH));
} else {
powertools.put("" + stack.getTypeId(), commandList);
powertools.put(stack.getType().name().toLowerCase(Locale.ENGLISH), commandList);
}
config.setProperty("powertools", powertools);
config.save();
@@ -467,10 +477,11 @@ public abstract class UserData extends PlayerExtension implements IConf {
}
public void setIgnoredPlayer(IUser user, boolean set) {
final String entry = user.getName().toLowerCase(Locale.ENGLISH);
if (set) {
ignoredPlayers.add(user.getName().toLowerCase(Locale.ENGLISH));
if (!ignoredPlayers.contains(entry)) ignoredPlayers.add(entry);
} else {
ignoredPlayers.remove(user.getName().toLowerCase(Locale.ENGLISH));
ignoredPlayers.remove(entry);
}
setIgnoredPlayers(ignoredPlayers);
}
@@ -6,13 +6,11 @@ import net.ess3.api.InvalidNameException;
import net.ess3.api.InvalidWorldException;
import org.bukkit.Location;
import org.bukkit.Server;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import static com.earth2me.essentials.I18n.tl;
@@ -57,6 +55,11 @@ public class Warps implements IConf, net.ess3.api.IWarps {
@Override
public void setWarp(String name, Location loc) throws Exception {
setWarp(null, name, loc);
}
@Override
public void setWarp(IUser user, String name, Location loc) throws Exception {
String filename = StringUtil.sanitizeFileName(name);
EssentialsConf conf = warpPoints.get(new StringIgnoreCase(name));
if (conf == null) {
@@ -69,13 +72,28 @@ public class Warps implements IConf, net.ess3.api.IWarps {
}
conf.setProperty(null, loc);
conf.setProperty("name", name);
if (user != null) conf.setProperty("lastowner", user.getBase().getUniqueId().toString());
try {
conf.saveWithError();
} catch (IOException ex) {
throw new IOException(tl("invalidWarpName"));
}
}
@Override
public UUID getLastOwner(String warp) throws WarpNotFoundException {
EssentialsConf conf = warpPoints.get(new StringIgnoreCase(warp));
if (conf == null) {
throw new WarpNotFoundException();
}
UUID uuid = null;
try {
uuid = UUID.fromString(conf.getString("lastowner"));
}
catch (Exception ex) {}
return uuid;
}
@Override
public void removeWarp(String name) throws Exception {
EssentialsConf conf = warpPoints.get(new StringIgnoreCase(name));
@@ -1,6 +1,7 @@
package com.earth2me.essentials;
import com.earth2me.essentials.commands.NotEnoughArgumentsException;
import com.earth2me.essentials.utils.VersionUtil;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.inventory.ItemStack;
@@ -21,57 +22,62 @@ public class Worth implements IConf {
config.load();
}
public BigDecimal getPrice(ItemStack itemStack) {
String itemname = itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
/**
* Get the value of an item stack from the config.
*
* @param ess The Essentials instance.
* @param itemStack The item stack to look up in the config.
* @return The price from the config.
*/
public BigDecimal getPrice(IEssentials ess, ItemStack itemStack) {
BigDecimal result;
//First check for matches with item name
String itemname = itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
// Check for matches with data value from stack
// Note that we always default to BigDecimal.ONE.negate(), equivalent to -1
result = config.getBigDecimal("worth." + itemname + "." + itemStack.getDurability(), BigDecimal.ONE.negate());
// Check for matches with data value 0
if (result.signum() < 0) {
final ConfigurationSection itemNameMatch = config.getConfigurationSection("worth." + itemname);
if (itemNameMatch != null && itemNameMatch.getKeys(false).size() == 1) {
result = config.getBigDecimal("worth." + itemname + ".0", BigDecimal.ONE.negate());
}
}
// Check for matches with data value wildcard
if (result.signum() < 0) {
result = config.getBigDecimal("worth." + itemname + ".*", BigDecimal.ONE.negate());
}
// Check for matches with item name alone
if (result.signum() < 0) {
result = config.getBigDecimal("worth." + itemname, BigDecimal.ONE.negate());
}
//Now we should check for item ID
if (result.signum() < 0) {
result = config.getBigDecimal("worth." + itemStack.getTypeId() + "." + itemStack.getDurability(), BigDecimal.ONE.negate());
}
if (result.signum() < 0) {
final ConfigurationSection itemNumberMatch = config.getConfigurationSection("worth." + itemStack.getTypeId());
if (itemNumberMatch != null && itemNumberMatch.getKeys(false).size() == 1) {
result = config.getBigDecimal("worth." + itemStack.getTypeId() + ".0", BigDecimal.ONE.negate());
}
}
if (result.signum() < 0) {
result = config.getBigDecimal("worth." + itemStack.getTypeId() + ".*", BigDecimal.ONE.negate());
}
if (result.signum() < 0) {
result = config.getBigDecimal("worth." + itemStack.getTypeId(), BigDecimal.ONE.negate());
}
//This is to match the old worth syntax
if (result.signum() < 0) {
result = config.getBigDecimal("worth-" + itemStack.getTypeId(), BigDecimal.ONE.negate());
}
if (result.signum() < 0) {
return null;
}
return result;
}
/**
* Get the amount of items to be sold from a player's inventory.
*
* @param ess The Essentials instance.
* @param user The user attempting to sell the item.
* @param is A stack of the item to search the inventory for.
* @param args The amount to try to sell.
* @param isBulkSell Whether or not to try and bulk sell all items.
* @return The amount of items to sell from the player's inventory.
* @throws Exception Thrown if trying to sell air or an invalid amount.
*/
public int getAmount(IEssentials ess, User user, ItemStack is, String[] args, boolean isBulkSell) throws Exception {
if (is == null || is.getType() == Material.AIR) {
throw new Exception(tl("itemSellAir"));
}
int id = is.getTypeId();
int amount = 0;
if (args.length > 1) {
@@ -86,7 +92,7 @@ public class Worth implements IConf {
}
boolean stack = args.length > 1 && args[1].endsWith("s");
boolean requireStack = ess.getSettings().isTradeInStacks(id);
boolean requireStack = ess.getSettings().isTradeInStacks(is.getType());
if (requireStack && !stack) {
throw new Exception(tl("itemMustBeStacked"));
@@ -123,14 +129,23 @@ public class Worth implements IConf {
return amount;
}
public void setPrice(ItemStack itemStack, double price) {
if (itemStack.getType().getData() == null) {
config.setProperty("worth." + itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""), price);
} else {
/**
* Set the price of an item and save it to the config.
*
* @param ess The Essentials instance.
* @param itemStack A stack of the item to save.
* @param price The new price of the item.
*/
public void setPrice(IEssentials ess, ItemStack itemStack, double price) {
String path = "worth." + itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
// Spigot 1.13+ throws an exception if a 1.13+ plugin even *attempts* to do set data.
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01) && itemStack.getType().getData() == null) {
// Bukkit-bug: getDurability still contains the correct value, while getData().getData() is 0.
config.setProperty("worth." + itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "") + "." + itemStack.getDurability(), price);
path = path + "." + itemStack.getDurability();
}
config.removeProperty("worth-" + itemStack.getTypeId());
config.setProperty(path, price);
config.save();
}
@@ -78,7 +78,14 @@ public class Economy {
*/
@Deprecated
public static double getMoney(String name) throws UserDoesNotExistException {
return getMoneyExact(name).doubleValue();
BigDecimal exactAmount = getMoneyExact(name);
double amount = exactAmount.doubleValue();
if (new BigDecimal(amount).compareTo(exactAmount) > 0) {
// closest double is bigger than the exact amount
// -> get the previous double value to not return more money than the user has
amount = Math.nextAfter(amount, Double.NEGATIVE_INFINITY);
}
return amount;
}
public static BigDecimal getMoneyExact(String name) throws UserDoesNotExistException {
@@ -178,7 +185,7 @@ public class Economy {
* Divides the balance of a user by a value
*
* @param name Name of the user
* @param value The balance is divided by this value
* @param amount The balance is divided by this value
*
* @throws UserDoesNotExistException If a user by that name does not exists
* @throws NoLoanPermittedException If the user is not allowed to have a negative balance
@@ -202,7 +209,7 @@ public class Economy {
* Multiplies the balance of a user by a value
*
* @param name Name of the user
* @param value The balance is multiplied by this value
* @param amount The balance is multiplied by this value
*
* @throws UserDoesNotExistException If a user by that name does not exists
* @throws NoLoanPermittedException If the user is not allowed to have a negative balance
@@ -1,6 +1,7 @@
package com.earth2me.essentials.api;
import com.earth2me.essentials.User;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import java.util.Collection;
@@ -14,6 +15,8 @@ public interface IItemDb {
String names(ItemStack item);
List<String> nameList(ItemStack item);
String name(ItemStack item);
List<ItemStack> getMatching(User user, String[] args) throws Exception;
@@ -21,4 +24,10 @@ public interface IItemDb {
String serialize(ItemStack is);
Collection<String> listNames();
@Deprecated
Material getFromLegacyId(int id);
@Deprecated
int getLegacyId(Material material) throws Exception;
}
@@ -1,11 +1,13 @@
package com.earth2me.essentials.api;
import com.earth2me.essentials.IConf;
import com.earth2me.essentials.IUser;
import com.earth2me.essentials.commands.WarpNotFoundException;
import org.bukkit.Location;
import java.io.File;
import java.util.Collection;
import java.util.UUID;
public interface IWarps extends IConf {
@@ -54,6 +56,25 @@ public interface IWarps extends IConf {
*/
void setWarp(String name, Location loc) throws Exception;
/**
* Set a warp
*
* @param user - User of warp
* @param name - Name of warp
* @param loc - Location of warp
*
* @throws Exception
*/
void setWarp(IUser user, String name, Location loc) throws Exception;
/**
* Gets Lastowner UUID
*
* @param name - Name of warp
*
* @throws WarpNotFoundException
*/
UUID getLastOwner(String warp) throws WarpNotFoundException;
/**
* Check to see if the file is empty
*
@@ -17,9 +17,17 @@ public class Commandback extends EssentialsCommand {
if (user.getLastLocation() == null) {
throw new Exception(tl("noLocationFound"));
}
if (user.getWorld() != user.getLastLocation().getWorld() && ess.getSettings().isWorldTeleportPermissions() && !user.isAuthorized("essentials.worlds." + user.getLastLocation().getWorld().getName())) {
throw new Exception(tl("noPerm", "essentials.worlds." + user.getLastLocation().getWorld().getName()));
String lastWorldName = user.getLastLocation().getWorld().getName();
if (user.getWorld() != user.getLastLocation().getWorld() && ess.getSettings().isWorldTeleportPermissions() && !user.isAuthorized("essentials.worlds." + lastWorldName)) {
throw new Exception(tl("noPerm", "essentials.worlds." + lastWorldName));
}
if (!user.isAuthorized("essentials.back.into." + lastWorldName)) {
throw new Exception(tl("noPerm", "essentials.back.into." + lastWorldName));
}
final Trade charge = new Trade(this.getName(), ess);
charge.isAffordableFor(user);
user.getTeleport().back(charge);
@@ -6,6 +6,7 @@ import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.FormatUtil;
import org.bukkit.BanList;
import org.bukkit.Server;
import org.bukkit.entity.Player;
import java.util.Collections;
import java.util.List;
@@ -14,7 +15,6 @@ import java.util.logging.Level;
import static com.earth2me.essentials.I18n.tl;
//TODO: Add kick to online players matching ip ban.
public class Commandbanip extends EssentialsCommand {
public Commandbanip() {
super("banip");
@@ -51,9 +51,17 @@ public class Commandbanip extends EssentialsCommand {
banReason = tl("defaultBanReason");
}
String banDisplay = tl("banFormat", banReason, senderName);
ess.getServer().getBanList(BanList.Type.IP).addBan(ipAddress, banReason, null, senderName);
server.getLogger().log(Level.INFO, tl("playerBanIpAddress", senderName, ipAddress, banReason));
for (Player player : ess.getServer().getOnlinePlayers()) {
if (player.getAddress().getAddress().getHostAddress().equalsIgnoreCase(ipAddress)) {
player.kickPlayer(banDisplay);
}
}
ess.broadcastMessage("essentials.banip.notify", tl("playerBanIpAddress", senderName, ipAddress, banReason));
}
@@ -27,6 +27,8 @@ public class Commandbigtree extends EssentialsCommand {
tree = TreeType.BIG_TREE;
} else if (args.length > 0 && args[0].equalsIgnoreCase("jungle")) {
tree = TreeType.JUNGLE;
} else if (args.length > 0 && args[0].equalsIgnoreCase("darkoak")) {
tree = TreeType.DARK_OAK;
} else {
throw new NotEnoughArgumentsException();
}
@@ -44,7 +46,7 @@ public class Commandbigtree extends EssentialsCommand {
@Override
protected List<String> getTabCompleteOptions(Server server, User user, String commandLabel, String[] args) {
if (args.length == 1) {
return Lists.newArrayList("redwood", "tree", "jungle");
return Lists.newArrayList("redwood", "tree", "jungle", "darkoak");
} else {
return Collections.emptyList();
}
@@ -19,7 +19,6 @@ public class Commandbook extends EssentialsCommand {
super("book");
}
//TODO: Translate this
@Override
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
final ItemStack item = user.getItemInHand();
@@ -45,7 +44,7 @@ public class Commandbook extends EssentialsCommand {
}
} else {
if (isAuthor(bmeta, player) || user.isAuthorized("essentials.book.others")) {
ItemStack newItem = new ItemStack(Material.BOOK_AND_QUILL, item.getAmount());
ItemStack newItem = new ItemStack(Material.WRITABLE_BOOK, item.getAmount());
newItem.setItemMeta(bmeta);
InventoryWorkaround.setItemInMainHand(user.getBase(), newItem);
user.sendMessage(tl("editBookContents"));
@@ -53,7 +52,7 @@ public class Commandbook extends EssentialsCommand {
throw new Exception(tl("denyBookEdit"));
}
}
} else if (item.getType() == Material.BOOK_AND_QUILL) {
} else if (item.getType() == Material.WRITABLE_BOOK) {
BookMeta bmeta = (BookMeta) item.getItemMeta();
if (!user.isAuthorized("essentials.book.author")) {
bmeta.setAuthor(player);
@@ -27,7 +27,25 @@ public class Commandbroadcastworld extends EssentialsCommand {
@Override
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
sendBroadcast(user.getWorld().getName(), user.getDisplayName(), getFinalArg(args, 0));
World world = user.getWorld();
String message = getFinalArg(args, 0);
if (args.length < 1) {
throw new NotEnoughArgumentsException();
} else if (args.length > 1 && ess.getSettings().isAllowWorldInBroadcastworld()) {
World argWorld = ess.getWorld(args[0]);
if (argWorld != null) {
world = argWorld;
message = getFinalArg(args, 1);
}
}
if (world == null) {
world = user.getWorld();
message = getFinalArg(args, 0);
}
sendBroadcast(world.getName(), user.getDisplayName(), message);
}
@Override
@@ -43,6 +61,9 @@ public class Commandbroadcastworld extends EssentialsCommand {
if (world == null) {
throw new Exception(tl("invalidWorld"));
}
if (message.isEmpty()) {
throw new NotEnoughArgumentsException();
}
sendToWorld(world, tl("broadcast", FormatUtil.replaceFormat(message).replace("\\n", "\n"), name));
}
@@ -63,7 +84,15 @@ public class Commandbroadcastworld extends EssentialsCommand {
@Override
protected List<String> getTabCompleteOptions(Server server, User user, String commandLabel, String[] args) {
return Collections.emptyList(); // The argument is only for non-players
if (args.length == 1 && ess.getSettings().isAllowWorldInBroadcastworld()) {
List<String> worlds = Lists.newArrayList();
for (World world : server.getWorlds()) {
worlds.add(world.getName());
}
return worlds;
} else {
return Collections.emptyList();
}
}
@Override
@@ -8,15 +8,12 @@ import com.earth2me.essentials.craftbukkit.InventoryWorkaround;
import com.earth2me.essentials.utils.NumberUtil;
import com.earth2me.essentials.utils.StringUtil;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.*;
public class Commandclearinventory extends EssentialsCommand {
@@ -87,6 +84,7 @@ public class Commandclearinventory extends EssentialsCommand {
short data = -1;
int type = -1;
int amount = -1;
final Set<Material> mats = new HashSet<>();
if (args.length > (offset + 1) && NumberUtil.isInt(args[(offset + 1)])) {
amount = Integer.parseInt(args[(offset + 1)]);
@@ -95,15 +93,15 @@ public class Commandclearinventory extends EssentialsCommand {
if (args[offset].equalsIgnoreCase("**")) {
type = -2;
} else if (!args[offset].equalsIgnoreCase("*")) {
final String[] split = args[offset].split(":");
final ItemStack item = ess.getItemDb().get(split[0]);
type = item.getTypeId();
final String[] split = args[offset].split(",");
if (split.length > 1 && NumberUtil.isInt(split[1])) {
data = Short.parseShort(split[1]);
} else {
data = item.getDurability();
for (String name : split) {
try {
mats.add(ess.getItemDb().get(name).getType());
} catch (Exception ignored) {}
}
type = 1;
}
}
@@ -123,32 +121,27 @@ public class Commandclearinventory extends EssentialsCommand {
InventoryWorkaround.setItemInOffHand(player, null);
player.getInventory().setArmorContents(null);
} else {
if (data == -1) // data -1 means that all subtypes will be cleared
{
ItemStack stack = new ItemStack(type);
if (showExtended) {
sender.sendMessage(tl("inventoryClearingAllStack", stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName()));
}
player.getInventory().clear(type, data);
} else if (amount == -1) // amount -1 means all items will be cleared
{
ItemStack stack = new ItemStack(type, BASE_AMOUNT, data);
ItemStack removedStack = player.getInventory().removeItem(stack).get(0);
final int removedAmount = (BASE_AMOUNT - removedStack.getAmount());
if (removedAmount > 0 || showExtended) {
sender.sendMessage(tl("inventoryClearingStack", removedAmount, stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName()));
}
} else {
if (amount < 0) {
amount = 1;
}
ItemStack stack = new ItemStack(type, amount, data);
if (player.getInventory().containsAtLeast(stack, amount)) {
sender.sendMessage(tl("inventoryClearingStack", amount, stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName()));
player.getInventory().removeItem(stack);
for (Material mat : mats) {
if (amount == -1) // amount -1 means all items will be cleared
{
ItemStack stack = new ItemStack(mat, BASE_AMOUNT, data);
ItemStack removedStack = player.getInventory().removeItem(stack).get(0);
final int removedAmount = (BASE_AMOUNT - removedStack.getAmount());
if (removedAmount > 0 || showExtended) {
sender.sendMessage(tl("inventoryClearingStack", removedAmount, stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName()));
}
} else {
if (showExtended) {
sender.sendMessage(tl("inventoryClearFail", player.getDisplayName(), amount, stack.getType().toString().toLowerCase(Locale.ENGLISH)));
if (amount < 0) {
amount = 1;
}
ItemStack stack = new ItemStack(mat, amount);
if (player.getInventory().containsAtLeast(stack, amount)) {
sender.sendMessage(tl("inventoryClearingStack", amount, stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName()));
player.getInventory().removeItem(stack);
} else {
if (showExtended) {
sender.sendMessage(tl("inventoryClearFail", player.getDisplayName(), amount, stack.getType().toString().toLowerCase(Locale.ENGLISH)));
}
}
}
}
@@ -16,23 +16,23 @@ public class Commandcompass extends EssentialsCommand {
final int bearing = (int) (user.getLocation().getYaw() + 180 + 360) % 360;
String dir;
if (bearing < 23) {
dir = "N";
dir = tl("north");
} else if (bearing < 68) {
dir = "NE";
dir = tl("northEast");
} else if (bearing < 113) {
dir = "E";
dir = tl("east");
} else if (bearing < 158) {
dir = "SE";
dir = tl("southEast");
} else if (bearing < 203) {
dir = "S";
dir = tl("south");
} else if (bearing < 248) {
dir = "SW";
dir = tl("southWest");
} else if (bearing < 293) {
dir = "W";
dir = tl("west");
} else if (bearing < 338) {
dir = "NW";
dir = tl("northWest");
} else {
dir = "N";
dir = tl("north");
}
user.sendMessage(tl("compassBearing", dir, bearing));
}
@@ -19,6 +19,10 @@ public class Commanddeljail extends EssentialsCommand {
throw new NotEnoughArgumentsException();
}
if (ess.getJails().getJail(args[0]) == null) {
throw new Exception(tl("jailNotExist"));
}
ess.getJails().removeJail(args[0]);
sender.sendMessage(tl("deleteJail", args[0]));
}
@@ -71,7 +71,7 @@ public class Commandeco extends EssentialsLoopCommand {
private void take(BigDecimal amount, final User player, final CommandSource sender) throws ChargeException {
BigDecimal money = player.getMoney();
BigDecimal minBalance = ess.getSettings().getMinMoney();
if (money.subtract(amount).compareTo(minBalance) > 0) {
if (money.subtract(amount).compareTo(minBalance) >= 0) {
player.takeMoney(amount, sender);
} else if (sender == null) {
try {
@@ -46,7 +46,7 @@ public class Commandenchant extends EssentialsCommand {
throw new NotEnoughArgumentsException(tl("enchantments", StringUtil.joinList(enchantmentslist.toArray())));
}
int level = -1;
int level = 1;
if (args.length > 1) {
try {
level = Integer.parseInt(args[1]);
@@ -5,9 +5,7 @@ import com.earth2me.essentials.EssentialsUpgrade;
import com.earth2me.essentials.User;
import com.earth2me.essentials.UserMap;
import com.earth2me.essentials.metrics.Metrics;
import com.earth2me.essentials.utils.DateUtil;
import com.earth2me.essentials.utils.FloatUtil;
import com.earth2me.essentials.utils.NumberUtil;
import com.earth2me.essentials.utils.*;
import com.google.common.base.Charsets;
import com.google.common.collect.Lists;
import org.bukkit.Material;
@@ -36,7 +34,22 @@ public class Commandessentials extends EssentialsCommand {
private final List<String> versionPlugins = Arrays.asList(
"Vault",
"LuckPerms",
"PermissionsEx"
"PermissionsEx",
"GroupManager"
);
private final List<String> officialPlugins = Arrays.asList(
"EssentialsAntiBuild",
"EssentialsChat",
"EssentialsGeoIP",
"EssentialsProtect",
"EssentialsSpawn",
"EssentialsXMPP"
);
private final List<String> warnPlugins = Arrays.asList(
"PermissionsEx",
"GroupManager"
);
@Override
@@ -51,8 +64,6 @@ public class Commandessentials extends EssentialsCommand {
run_moo(server, sender, commandLabel, args);
} else if (args[0].equalsIgnoreCase("reset")) {
run_reset(server, sender, commandLabel, args);
} else if (args[0].equalsIgnoreCase("opt-out")) {
run_optout(server, sender, commandLabel, args);
} else if (args[0].equalsIgnoreCase("cleanup")) {
run_cleanup(server, sender, commandLabel, args);
} else if (args[0].equalsIgnoreCase("uuidconvert")) {
@@ -171,12 +182,8 @@ public class Commandessentials extends EssentialsCommand {
private final String[] playerMoo = new String[]{" (__)", " (oo)", " /------\\/", " / | | |", " * /\\---/\\", " ~~ ~~", "....\"Have you mooed today?\"..."};
private void run_moo(final Server server, final CommandSource sender, final String command, final String args[]) {
Sound moo;
try {
moo = Sound.valueOf("COW_IDLE"); // pre-1.9
} catch (IllegalArgumentException e) {
moo = Sound.valueOf("ENTITY_COW_MILK"); // 1.9
}
Sound moo = EnumUtil.valueOf(Sound.class, "COW_IDLE", "ENTITY_COW_MILK");
if (args.length == 2 && args[1].equals("moo")) {
for (String s : consoleMoo) {
logger.info(s);
@@ -197,19 +204,6 @@ public class Commandessentials extends EssentialsCommand {
}
}
private void run_optout(final Server server, final CommandSource sender, final String command, final String args[]) {
final Metrics metrics = ess.getMetrics();
sender.sendMessage("Essentials collects simple metrics to highlight which features to concentrate work on in the future.");
if (metrics.isOptOut()) {
metrics.enable();
} else {
metrics.disable();
}
sender.sendMessage("Anonymous Metrics are now " + (metrics.isOptOut() ? "disabled" : "enabled") + " for EssentialsX until server restart.");
sender.sendMessage("To " + (metrics.isOptOut() ? "disable" : "enable") + " them for all plugins permanently, see the bStats config.");
}
private void run_cleanup(final Server server, final CommandSource sender, final String command, final String args[]) throws Exception {
if (args.length < 2 || !NumberUtil.isInt(args[1])) {
sender.sendMessage("This sub-command will delete users who havent logged in in the last <days> days.");
@@ -318,11 +312,13 @@ public class Commandessentials extends EssentialsCommand {
boolean isMismatched = false;
boolean isVaultInstalled = false;
boolean isUnsupported = false;
final boolean isServerSupported = VersionUtil.isServerSupported();
final PluginManager pm = server.getPluginManager();
final String essVer = pm.getPlugin("Essentials").getDescription().getVersion();
sender.sendMessage("Server version: " + server.getBukkitVersion() + " " + server.getVersion());
sender.sendMessage("EssentialsX version: " + essVer);
sender.sendMessage(tl(isServerSupported ? "versionOutputFine" : "versionOutputWarn", "Server", server.getBukkitVersion() + " " + server.getVersion()));
sender.sendMessage(tl("versionOutputFine", "EssentialsX", essVer));
for (Plugin plugin : pm.getPlugins()) {
final PluginDescriptionFile desc = plugin.getDescription();
@@ -330,15 +326,28 @@ public class Commandessentials extends EssentialsCommand {
String version = desc.getVersion();
if (name.startsWith("Essentials") && !name.equalsIgnoreCase("Essentials")) {
if (!version.equalsIgnoreCase(essVer)) {
version = "\u00a7c" + version;
isMismatched = true;
if (officialPlugins.contains(name)) {
name = name.replace("Essentials", "EssentialsX");
if (!version.equalsIgnoreCase(essVer)) {
isMismatched = true;
sender.sendMessage(tl("versionOutputWarn", name, version));
} else {
sender.sendMessage(tl("versionOutputFine", name, version));
}
} else {
sender.sendMessage(tl("versionOutputUnsupported", name, version));
isUnsupported = true;
}
sender.sendMessage(name.replace("Essentials", "EssentialsX") + " version: " + version);
}
if (versionPlugins.contains(name)) {
sender.sendMessage(name + " version: " + version);
if (warnPlugins.contains(name)) {
sender.sendMessage(tl("versionOutputUnsupported", name, version));
isUnsupported = true;
} else {
sender.sendMessage(tl("versionOutputFine", name, version));
}
}
if (name.equals("Vault")) isVaultInstalled = true;
@@ -349,7 +358,15 @@ public class Commandessentials extends EssentialsCommand {
}
if (!isVaultInstalled) {
sender.sendMessage("Vault is not installed - chat and permissions may not work.");
sender.sendMessage(tl("versionOutputVaultMissing"));
}
if (isUnsupported) {
sender.sendMessage(tl("versionOutputUnsupportedPlugins"));
}
if (!VersionUtil.isServerSupported()) {
sender.sendMessage(tl("serverUnsupported"));
}
}
@@ -362,7 +379,6 @@ public class Commandessentials extends EssentialsCommand {
//options.add("nya");
//options.add("moo");
options.add("reset");
options.add("opt-out");
options.add("cleanup");
//options.add("uuidconvert");
//options.add("uuidtest");
@@ -380,8 +396,6 @@ public class Commandessentials extends EssentialsCommand {
if (args.length == 2) {
return getPlayers(server, sender);
}
} else if (args[0].equalsIgnoreCase("opt-out")) {
// No args
} else if (args[0].equalsIgnoreCase("cleanup")) {
if (args.length == 2) {
return COMMON_DURATIONS;
@@ -43,8 +43,8 @@ public class Commandfirework extends EssentialsCommand {
@Override
protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
final ItemStack stack = user.getBase().getItemInHand();
if (stack.getType() == Material.FIREWORK) {
final ItemStack stack = user.getBase().getInventory().getItemInMainHand();
if (stack.getType() == Material.FIREWORK_ROCKET || stack.getType() == Material.FIREWORK_STAR) {
if (args.length > 0) {
if (args[0].equalsIgnoreCase("clear")) {
FireworkMeta fmeta = (FireworkMeta) stack.getItemMeta();
@@ -33,7 +33,7 @@ public class Commandgive extends EssentialsCommand {
ItemStack stack = ess.getItemDb().get(args[1]);
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
if (sender.isPlayer() && (ess.getSettings().permissionBasedItemSpawn() ? (!ess.getUser(sender.getPlayer()).isAuthorized("essentials.itemspawn.item-all") && !ess.getUser(sender.getPlayer()).isAuthorized("essentials.itemspawn.item-" + itemname) && !ess.getUser(sender.getPlayer()).isAuthorized("essentials.itemspawn.item-" + stack.getTypeId())) : (!ess.getUser(sender.getPlayer()).isAuthorized("essentials.itemspawn.exempt") && !ess.getUser(sender.getPlayer()).canSpawnItem(stack.getTypeId())))) {
if (sender.isPlayer() && (ess.getSettings().permissionBasedItemSpawn() ? (!ess.getUser(sender.getPlayer()).isAuthorized("essentials.itemspawn.item-all") && !ess.getUser(sender.getPlayer()).isAuthorized("essentials.itemspawn.item-" + itemname)) : (!ess.getUser(sender.getPlayer()).isAuthorized("essentials.itemspawn.exempt") && !ess.getUser(sender.getPlayer()).canSpawnItem(stack.getType())))) {
throw new Exception(tl("cantSpawnItem", itemname));
}
@@ -33,8 +33,8 @@ public class Commandhat extends EssentialsCommand {
user.sendMessage(tl("hatRemoved"));
}
} else {
if (user.getBase().getItemInHand().getType() != Material.AIR) {
final ItemStack hand = user.getBase().getItemInHand();
if (user.getBase().getInventory().getItemInMainHand().getType() != Material.AIR) {
final ItemStack hand = user.getBase().getInventory().getItemInMainHand();
if (hand.getType().getMaxDurability() == 0) {
final PlayerInventory inv = user.getBase().getInventory();
final ItemStack head = inv.getHelmet();
@@ -25,10 +25,11 @@ public class Commanditem extends EssentialsCommand {
if (args.length < 1) {
throw new NotEnoughArgumentsException();
}
ItemStack stack = ess.getItemDb().get(args[0]);
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).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()))) {
if (ess.getSettings().permissionBasedItemSpawn() ? (!user.isAuthorized("essentials.itemspawn.item-all") && !user.isAuthorized("essentials.itemspawn.item-" + itemname)) : (!user.isAuthorized("essentials.itemspawn.exempt") && !user.canSpawnItem(stack.getType()))) {
throw new Exception(tl("cantSpawnItem", itemname));
}
try {
@@ -21,9 +21,9 @@ public class Commanditemdb extends EssentialsCommand {
ItemStack itemStack = null;
boolean itemHeld = false;
if (args.length < 1) {
if (sender.isPlayer()) {
if (sender.isPlayer() && sender.getPlayer() != null) {
itemHeld = true;
itemStack = sender.getPlayer().getItemInHand();
itemStack = sender.getPlayer().getInventory().getItemInMainHand();
}
if (itemStack == null) {
throw new NotEnoughArgumentsException();
@@ -31,7 +31,8 @@ public class Commanditemdb extends EssentialsCommand {
} else {
itemStack = ess.getItemDb().get(args[0]);
}
sender.sendMessage(tl("itemType", itemStack.getType().toString(), itemStack.getTypeId() + ":" + Integer.toString(itemStack.getDurability())));
sender.sendMessage(tl("itemType", itemStack.getType().toString()));
if (itemHeld && itemStack.getType() != Material.AIR) {
int maxuses = itemStack.getType().getMaxDurability();
@@ -20,7 +20,9 @@ public class Commandkickall extends EssentialsCommand {
for (Player onlinePlayer : ess.getOnlinePlayers()) {
if (!sender.isPlayer() || !onlinePlayer.getName().equalsIgnoreCase(sender.getPlayer().getName())) {
onlinePlayer.kickPlayer(kickReason);
if (!ess.getUser(onlinePlayer).isAuthorized("essentials.kickall.exempt")) {
onlinePlayer.kickPlayer(kickReason);
}
}
}
sender.sendMessage(tl("kickedAll"));
@@ -16,15 +16,16 @@ public class Commandmore extends EssentialsCommand {
@Override
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
final ItemStack stack = user.getBase().getItemInHand();
final ItemStack stack = user.getBase().getInventory().getItemInMainHand();
if (stack == null) {
throw new Exception(tl("cantSpawnItem", "Air"));
}
if (stack.getAmount() >= ((user.isAuthorized("essentials.oversizedstacks")) ? ess.getSettings().getOversizedStackSize() : stack.getMaxStackSize())) {
throw new Exception(tl("fullStack"));
}
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).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()))) {
if (ess.getSettings().permissionBasedItemSpawn() ? (!user.isAuthorized("essentials.itemspawn.item-all") && !user.isAuthorized("essentials.itemspawn.item-" + itemname)) : (!user.isAuthorized("essentials.itemspawn.exempt") && !user.canSpawnItem(stack.getType()))) {
throw new Exception(tl("cantSpawnItem", itemname));
}
if (user.isAuthorized("essentials.oversizedstacks")) {
@@ -55,16 +55,16 @@ public class Commandnick extends EssentialsLoopCommand {
@Override
protected void updatePlayer(final Server server, final CommandSource sender, final User target, final String[] args) throws NotEnoughArgumentsException {
final String nick = args[0];
if (target.getName().equalsIgnoreCase(nick)) {
if ("off".equalsIgnoreCase(nick)) {
setNickname(server, sender, target, null);
target.sendMessage(tl("nickNoMore"));
} else if (target.getName().equalsIgnoreCase(nick)) {
String oldName = target.getDisplayName();
setNickname(server, sender, target, nick);
if (!target.getDisplayName().equalsIgnoreCase(oldName)) {
target.sendMessage(tl("nickNoMore"));
}
target.sendMessage(tl("nickSet", target.getDisplayName()));
} else if ("off".equalsIgnoreCase(nick)) {
setNickname(server, sender, target, null);
target.sendMessage(tl("nickNoMore"));
} else if (nickInUse(server, target, nick)) {
throw new NotEnoughArgumentsException(tl("nickInUse"));
} else {
@@ -75,7 +75,7 @@ public class Commandnick extends EssentialsLoopCommand {
private String formatNickname(final User user, final String nick) throws Exception {
String newNick = user == null ? FormatUtil.replaceFormat(nick) : FormatUtil.formatString(user, "essentials.nick", nick);
if (!newNick.matches("^[a-zA-Z_0-9\u00a7]+$")) {
if (!newNick.matches("^[a-zA-Z_0-9\u00a7]+$") && user != null && !user.isAuthorized("essentials.nick.allowunsafe")) {
throw new Exception(tl("nickNamesAlpha"));
} else if (getNickLength(newNick) > ess.getSettings().getMaxNickLength()) {
throw new Exception(tl("nickTooLong"));
@@ -31,7 +31,7 @@ public class Commandrealname extends EssentialsCommand {
final String displayName = FormatUtil.stripFormat(u.getDisplayName()).toLowerCase(Locale.ENGLISH);
if (displayName.contains(whois)) {
foundUser = true;
sender.sendMessage(u.getDisplayName() + " " + tl("is") + " " + u.getName());
sender.sendMessage(tl("realName", u.getDisplayName(), u.getName()));
}
}
if (!foundUser) {
@@ -3,6 +3,7 @@ package com.earth2me.essentials.commands;
import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.NumberUtil;
import com.earth2me.essentials.utils.VersionUtil;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.inventory.*;
@@ -24,8 +25,10 @@ public class Commandrecipe extends EssentialsCommand {
}
private void disableCommandForVersion1_12() throws Exception {
if (ReflUtil.getNmsVersionObject().equals(ReflUtil.V1_12_R1)) {
throw new Exception("/recipe is temporarily disabled. Please use the recipe book in your inventory.");
VersionUtil.BukkitVersion version = VersionUtil.getServerBukkitVersion();
if (version.isHigherThanOrEqualTo(VersionUtil.v1_12_0_R01)
&& !ess.getSettings().isForceEnableRecipe()) {
throw new Exception("Please use the recipe book in your inventory.");
}
}
@@ -64,11 +67,11 @@ public class Commandrecipe extends EssentialsCommand {
} else if (selectedRecipe instanceof ShapedRecipe) {
shapedRecipe(sender, (ShapedRecipe) selectedRecipe, sender.isPlayer());
} else if (selectedRecipe instanceof ShapelessRecipe) {
if (recipesOfType.size() == 1 && itemType.getType() == Material.FIREWORK) {
if (recipesOfType.size() == 1 && (itemType.getType() == Material.FIREWORK_ROCKET || itemType.getType() == Material.FIREWORK_STAR)) {
ShapelessRecipe shapelessRecipe = new ShapelessRecipe(itemType);
shapelessRecipe.addIngredient(Material.SULPHUR);
shapelessRecipe.addIngredient(Material.LEGACY_SULPHUR);
shapelessRecipe.addIngredient(Material.PAPER);
shapelessRecipe.addIngredient(Material.FIREWORK_CHARGE);
shapelessRecipe.addIngredient(Material.FIREWORK_ROCKET);
shapelessRecipe(sender, shapelessRecipe, sender.isPlayer());
} else {
shapelessRecipe(sender, (ShapelessRecipe) selectedRecipe, sender.isPlayer());
@@ -38,7 +38,7 @@ public class Commandrepair extends EssentialsCommand {
}
public void repairHand(User user) throws Exception {
final ItemStack item = user.getBase().getItemInHand();
final ItemStack item = user.getBase().getInventory().getItemInMainHand();
if (item == null || item.getType().isBlock() || item.getDurability() == 0) {
throw new Exception(tl("repairInvalidType"));
}
@@ -48,7 +48,7 @@ public class Commandrepair extends EssentialsCommand {
}
final String itemName = item.getType().toString().toLowerCase(Locale.ENGLISH);
final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), new Trade("repair-" + item.getTypeId(), new Trade("repair-item", ess), ess), ess);
final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), new Trade("repair-item", ess), ess);
charge.isAffordableFor(user);
@@ -76,7 +76,7 @@ public class Commandrepair extends EssentialsCommand {
}
private void repairItem(final ItemStack item) throws Exception {
final Material material = Material.getMaterial(item.getTypeId());
final Material material = item.getType();
if (material.isBlock() || material.getMaxDurability() < 1) {
throw new Exception(tl("repairInvalidType"));
}
@@ -88,13 +88,14 @@ public class Commandrepair extends EssentialsCommand {
item.setDurability((short) 0);
}
private void repairItems(final ItemStack[] items, final IUser user, final List<String> repaired) {
private void repairItems(final ItemStack[] items, final IUser user, final List<String> repaired) throws Exception {
for (ItemStack item : items) {
if (item == null || item.getType().isBlock() || item.getDurability() == 0) {
continue;
}
final String itemName = item.getType().toString().toLowerCase(Locale.ENGLISH);
final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), new Trade("repair-" + item.getTypeId(), new Trade("repair-item", ess), ess), ess);
final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), new Trade("repair-item", ess), ess);
try {
charge.isAffordableFor(user);
} catch (ChargeException ex) {
@@ -69,7 +69,7 @@ public class Commandsell extends EssentialsCommand {
private BigDecimal sellItem(User user, ItemStack is, String[] args, boolean isBulkSell) throws Exception {
int amount = ess.getWorth().getAmount(ess, user, is, args, isBulkSell);
BigDecimal worth = ess.getWorth().getPrice(is);
BigDecimal worth = ess.getWorth().getPrice(ess, is);
if (worth == null) {
throw new Exception(tl("itemCannotBeSold"));
@@ -36,7 +36,7 @@ public class Commandsetwarp extends EssentialsCommand {
}
if (warpLoc == null || user.isAuthorized("essentials.warp.overwrite." + StringUtil.safeString(args[0]))) {
warps.setWarp(args[0], loc);
warps.setWarp(user, args[0], loc);
} else {
throw new Exception(tl("warpOverwrite"));
}
@@ -31,7 +31,7 @@ public class Commandsetworth extends EssentialsCommand {
price = args[1];
}
ess.getWorth().setPrice(stack, FloatUtil.parseDouble(price));
ess.getWorth().setPrice(ess, stack, FloatUtil.parseDouble(price));
user.sendMessage(tl("worthSet"));
}
@@ -42,7 +42,7 @@ public class Commandsetworth extends EssentialsCommand {
}
ItemStack stack = ess.getItemDb().get(args[0]);
ess.getWorth().setPrice(stack, FloatUtil.parseDouble(args[1]));
ess.getWorth().setPrice(ess, stack, FloatUtil.parseDouble(args[1]));
sender.sendMessage(tl("worthSet"));
}
}
@@ -31,14 +31,14 @@ public class Commandskull extends EssentialsCommand {
owner = user.getName();
}
ItemStack itemSkull = user.getBase().getItemInHand();
ItemStack itemSkull = user.getBase().getInventory().getItemInMainHand();
SkullMeta metaSkull = null;
boolean spawn = false;
if (itemSkull != null && itemSkull.getType() == Material.SKULL_ITEM && itemSkull.getDurability() == 3) {
if (itemSkull != null && itemSkull.getType() == Material.LEGACY_SKULL_ITEM && itemSkull.getDurability() == 3) {
metaSkull = (SkullMeta) itemSkull.getItemMeta();
} else if (user.isAuthorized("essentials.skull.spawn")) {
itemSkull = new ItemStack(Material.SKULL_ITEM, 1, (byte) 3);
itemSkull = new ItemStack(Material.LEGACY_SKULL_ITEM, 1, (byte) 3);
metaSkull = (SkullMeta) itemSkull.getItemMeta();
spawn = true;
} else {
@@ -3,6 +3,7 @@ package com.earth2me.essentials.commands;
import com.earth2me.essentials.Mob;
import com.earth2me.essentials.Trade;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.EnumUtil;
import com.earth2me.essentials.utils.LocationUtil;
import com.earth2me.essentials.utils.NumberUtil;
import com.earth2me.essentials.utils.StringUtil;
@@ -28,7 +29,9 @@ public class Commandspawner extends EssentialsCommand {
}
final Location target = LocationUtil.getTarget(user.getBase());
if (target == null || target.getBlock().getType() != Material.MOB_SPAWNER) {
Material MOB_SPAWNER = EnumUtil.getMaterial("SPAWNER", "MOB_SPAWNER");
if (target == null || target.getBlock().getType() != MOB_SPAWNER) {
throw new Exception(tl("mobSpawnTarget"));
}
@@ -32,6 +32,10 @@ public class Commandtree extends EssentialsCommand {
}
if (args[0].equalsIgnoreCase("jungle")) {
tree = TreeType.SMALL_JUNGLE;
} else if (args[0].equalsIgnoreCase("acacia")) {
tree = TreeType.ACACIA;
} else if (args[0].equalsIgnoreCase("birch")) {
tree = TreeType.BIRCH;
}
if (tree == null) {
throw new NotEnoughArgumentsException();
@@ -32,12 +32,12 @@ public class Commandunlimited extends EssentialsCommand {
final String list = getList(target);
user.sendMessage(list);
} else if (args[0].equalsIgnoreCase("clear")) {
final List<Integer> itemList = target.getUnlimited();
final List<Material> itemList = target.getUnlimited();
int index = 0;
while (itemList.size() > index) {
final Integer item = itemList.get(index);
if (toggleUnlimited(user, target, item.toString()) == false) {
final Material item = itemList.get(index);
if (!toggleUnlimited(user, target, item.toString())) {
index++;
}
}
@@ -50,16 +50,16 @@ public class Commandunlimited extends EssentialsCommand {
final StringBuilder output = new StringBuilder();
output.append(tl("unlimitedItems")).append(" ");
boolean first = true;
final List<Integer> items = target.getUnlimited();
final List<Material> items = target.getUnlimited();
if (items.isEmpty()) {
output.append(tl("none"));
}
for (Integer integer : items) {
for (Material material : items) {
if (!first) {
output.append(", ");
}
first = false;
final String matname = Material.getMaterial(integer).toString().toLowerCase(Locale.ENGLISH).replace("_", "");
final String matname = material.toString().toLowerCase(Locale.ENGLISH).replace("_", "");
output.append(matname);
}
@@ -71,7 +71,7 @@ public class Commandunlimited extends EssentialsCommand {
stack.setAmount(Math.min(stack.getType().getMaxStackSize(), 2));
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
if (ess.getSettings().permissionBasedItemSpawn() && (!user.isAuthorized("essentials.unlimited.item-all") && !user.isAuthorized("essentials.unlimited.item-" + itemname) && !user.isAuthorized("essentials.unlimited.item-" + stack.getTypeId()) && !((stack.getType() == Material.WATER_BUCKET || stack.getType() == Material.LAVA_BUCKET) && user.isAuthorized("essentials.unlimited.item-bucket")))) {
if (ess.getSettings().permissionBasedItemSpawn() && (!user.isAuthorized("essentials.unlimited.item-all") && !user.isAuthorized("essentials.unlimited.item-" + itemname) && !((stack.getType() == Material.WATER_BUCKET || stack.getType() == Material.LAVA_BUCKET) && user.isAuthorized("essentials.unlimited.item-bucket")))) {
throw new Exception(tl("unlimitedItemPermission", itemname));
}
@@ -4,6 +4,7 @@ import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.User;
import com.earth2me.essentials.craftbukkit.SetExpFix;
import com.earth2me.essentials.utils.DateUtil;
import com.earth2me.essentials.utils.EnumUtil;
import com.earth2me.essentials.utils.NumberUtil;
import org.bukkit.Server;
import org.bukkit.Statistic;
@@ -16,8 +17,13 @@ import static com.earth2me.essentials.I18n.tl;
public class Commandwhois extends EssentialsCommand {
private final Statistic playOneTick;
public Commandwhois() {
super("whois");
// For some reason, in 1.13 PLAY_ONE_MINUTE = ticks played
// https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/commits/b848d8ce633871b52115247b089029749c02f579
playOneTick = EnumUtil.getStatistic("PLAY_ONE_MINUTE", "PLAY_ONE_TICK");
}
@Override
@@ -36,7 +42,7 @@ public class Commandwhois extends EssentialsCommand {
sender.sendMessage(tl("whoisHunger", user.getBase().getFoodLevel(), user.getBase().getSaturation()));
sender.sendMessage(tl("whoisExp", SetExpFix.getTotalExperience(user.getBase()), user.getBase().getLevel()));
sender.sendMessage(tl("whoisLocation", user.getLocation().getWorld().getName(), user.getLocation().getBlockX(), user.getLocation().getBlockY(), user.getLocation().getBlockZ()));
long playtimeMs = System.currentTimeMillis() - (user.getBase().getStatistic(Statistic.PLAY_ONE_TICK) * 50);
long playtimeMs = System.currentTimeMillis() - (user.getBase().getStatistic(playOneTick) * 50);
sender.sendMessage(tl("whoisPlaytime", DateUtil.formatDateDiff(playtimeMs)));
if (!ess.getSettings().isEcoDisabled()) {
sender.sendMessage(tl("whoisMoney", NumberUtil.displayCurrency(user.getMoney(), ess)));
@@ -84,7 +84,7 @@ public class Commandworth extends EssentialsCommand {
amount = ess.getWorth().getAmount(ess, user, is, args, true);
}
BigDecimal worth = ess.getWorth().getPrice(is);
BigDecimal worth = ess.getWorth().getPrice(ess, is);
if (worth == null) {
throw new Exception(tl("itemCannotBeSold"));
@@ -3,6 +3,7 @@ package com.earth2me.essentials.craftbukkit;
import org.bukkit.*;
import org.bukkit.block.Biome;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData;
import org.bukkit.entity.*;
import org.bukkit.generator.BlockPopulator;
import org.bukkit.generator.ChunkGenerator;
@@ -10,6 +11,8 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.material.MaterialData;
import org.bukkit.metadata.MetadataValue;
import org.bukkit.plugin.Plugin;
import org.bukkit.util.BoundingBox;
import org.bukkit.util.RayTraceResult;
import org.bukkit.util.Vector;
import java.io.File;
@@ -17,6 +20,7 @@ import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import java.util.function.Predicate;
public class FakeWorld implements World {
@@ -38,16 +42,6 @@ public class FakeWorld implements World {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getBlockTypeIdAt(int i, int i1, int i2) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getBlockTypeIdAt(Location lctn) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getHighestBlockYAt(int i, int i1) {
throw new UnsupportedOperationException("Not supported yet.");
@@ -93,6 +87,11 @@ public class FakeWorld implements World {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean isChunkGenerated(int x, int z) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void loadChunk(int i, int i1) {
throw new UnsupportedOperationException("Not supported yet.");
@@ -164,8 +163,8 @@ public class FakeWorld implements World {
}
@Override
public boolean generateTree(Location lctn, TreeType tt, BlockChangeDelegate bcd) {
throw new UnsupportedOperationException("Not supported yet.");
public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) {
return false;
}
@Override
@@ -203,6 +202,11 @@ public class FakeWorld implements World {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean setSpawnLocation(Location location) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean setSpawnLocation(int i, int i1, int i2) {
throw new UnsupportedOperationException("Not supported yet.");
@@ -348,6 +352,11 @@ public class FakeWorld implements World {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public FallingBlock spawnFallingBlock(Location location, BlockData blockData) throws IllegalArgumentException {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public ChunkSnapshot getEmptyChunkSnapshot(int i, int i1, boolean bln, boolean bln1) {
throw new UnsupportedOperationException("Not supported yet.");
@@ -583,11 +592,6 @@ public class FakeWorld implements World {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public FallingBlock spawnFallingBlock(Location location, int blockId, byte blockData) throws IllegalArgumentException {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void playSound(Location arg0, Sound arg1, float arg2, float arg3) {
throw new UnsupportedOperationException("Not supported yet.");
@@ -600,12 +604,12 @@ public class FakeWorld implements World {
@Override
public void playSound(Location location, Sound sound, SoundCategory soundCategory, float v, float v1) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void playSound(Location location, String s, SoundCategory soundCategory, float v, float v1) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
@@ -650,66 +654,151 @@ public class FakeWorld implements World {
@Override
public void spawnParticle(Particle particle, Location location, int i) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void spawnParticle(Particle particle, double v, double v1, double v2, int i) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> void spawnParticle(Particle particle, Location location, int i, T t) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> void spawnParticle(Particle particle, double v, double v1, double v2, int i, T t) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void spawnParticle(Particle particle, double v, double v1, double v2, int i, double v3, double v4, double v5) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2, T t) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> void spawnParticle(Particle particle, double v, double v1, double v2, int i, double v3, double v4, double v5, T t) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2, double v3) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void spawnParticle(Particle particle, double v, double v1, double v2, int i, double v3, double v4, double v5, double v6) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2, double v3, T t) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> void spawnParticle(Particle particle, double v, double v1, double v2, int i, double v3, double v4, double v5, double v6, T t) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2, double v3, T t, boolean b) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> void spawnParticle(Particle particle, double v, double v1, double v2, int i, double v3, double v4, double v5, double v6, T t, boolean b) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Location locateNearestStructure(Location origin, StructureType structureType, int radius, boolean findUnexplored) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public List<Entity> getNearbyEntities(Location loc, double x, double y, double z) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
@Override
public Collection<Entity> getNearbyEntities(Location location, double x, double y, double z, Predicate<Entity> filter) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Collection<Entity> getNearbyEntities(BoundingBox boundingBox) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Collection<Entity> getNearbyEntities(BoundingBox boundingBox, Predicate<Entity> filter) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public RayTraceResult rayTraceEntities(Location start, Vector direction, double maxDistance) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public RayTraceResult rayTraceEntities(Location start, Vector direction, double maxDistance, double raySize) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public RayTraceResult rayTraceEntities(Location start, Vector direction, double maxDistance, Predicate<Entity> filter) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public RayTraceResult rayTraceEntities(Location start, Vector direction, double maxDistance, double raySize, Predicate<Entity> filter) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public RayTraceResult rayTraceBlocks(Location start, Vector direction, double maxDistance) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public RayTraceResult rayTraceBlocks(Location start, Vector direction, double maxDistance, FluidCollisionMode fluidCollisionMode) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public RayTraceResult rayTraceBlocks(Location start, Vector direction, double maxDistance, FluidCollisionMode fluidCollisionMode, boolean ignorePassableBlocks) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public RayTraceResult rayTrace(Location start, Vector direction, double maxDistance, FluidCollisionMode fluidCollisionMode, boolean ignorePassableBlocks, double raySize, Predicate<Entity> filter) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> T getGameRuleDefault(GameRule<T> arg0) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> T getGameRuleValue(GameRule<T> arg0) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T> boolean setGameRule(GameRule<T> arg0, T arg1) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
@@ -1,121 +1,27 @@
package com.earth2me.essentials;
package com.earth2me.essentials.items;
import com.earth2me.essentials.utils.NumberUtil;
import com.earth2me.essentials.IConf;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.StringUtil;
import net.ess3.api.IEssentials;
import net.ess3.nms.refl.ReflUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.Color;
import org.bukkit.FireworkEffect;
import org.bukkit.Material;
import org.bukkit.block.Banner;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.EntityType;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.*;
import org.bukkit.potion.Potion;
import org.bukkit.potion.PotionEffect;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import static com.earth2me.essentials.I18n.tl;
public class ItemDb implements IConf, net.ess3.api.IItemDb {
private final transient IEssentials ess;
private final transient Map<String, Integer> items = new HashMap<>();
private final transient Map<ItemData, List<String>> names = new HashMap<>();
private final transient Map<ItemData, String> primaryName = new HashMap<>();
private final transient Map<String, Short> durabilities = new HashMap<>();
private final transient Map<String, String> nbtData = new HashMap<>();
private final transient ManagedFile file;
private final transient Pattern splitPattern = Pattern.compile("((.*)[:+',;.](\\d+))");
private final transient Pattern csvSplitPattern = Pattern.compile("(\"([^\"]*)\"|[^,]*)(,|$)");
public ItemDb(final IEssentials ess) {
this.ess = ess;
file = new ManagedFile("items.csv", ess);
}
@Override
public void reloadConfig() {
final List<String> lines = file.getLines();
if (lines.isEmpty()) {
return;
}
durabilities.clear();
items.clear();
names.clear();
primaryName.clear();
for (String line : lines) {
if (line.length() > 0 && line.charAt(0) == '#') {
continue;
}
String itemName = null;
int numeric = -1;
short data = 0;
String nbt = null;
int col = 0;
Matcher matcher = csvSplitPattern.matcher(line);
while (matcher.find()) {
String match = matcher.group(1);
if (StringUtils.stripToNull(match) == null) {
continue;
}
match = StringUtils.strip(match.trim(), "\"");
switch (col) {
case 0:
itemName = match.toLowerCase(Locale.ENGLISH);
break;
case 1:
numeric = Integer.parseInt(match);
break;
case 2:
data = Short.parseShort(match);
break;
case 3:
nbt = StringUtils.stripToNull(match);
break;
default:
continue;
}
col++;
}
// Invalid row
if (itemName == null || numeric < 0) {
continue;
}
durabilities.put(itemName, data);
items.put(itemName, numeric);
if (nbt != null) {
nbtData.put(itemName, nbt);
}
ItemData itemData = new ItemData(numeric, data);
if (names.containsKey(itemData)) {
List<String> nameList = names.get(itemData);
nameList.add(itemName);
} else {
List<String> nameList = new ArrayList<>();
nameList.add(itemName);
names.put(itemData, nameList);
primaryName.put(itemData, itemName);
}
}
for (List<String> nameList : names.values()) {
Collections.sort(nameList, LengthCompare.INSTANCE);
}
}
public abstract class AbstractItemDb implements IConf, net.ess3.api.IItemDb {
@Override
public ItemStack get(final String id, final int quantity) throws Exception {
@@ -124,87 +30,6 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb {
return retval;
}
@Override
public ItemStack get(final String id) throws Exception {
int itemid = 0;
String itemname;
short metaData = 0;
Matcher parts = splitPattern.matcher(id);
if (parts.matches()) {
itemname = parts.group(2);
metaData = Short.parseShort(parts.group(3));
} else {
itemname = id;
}
if (NumberUtil.isInt(itemname)) {
itemid = Integer.parseInt(itemname);
} else if (NumberUtil.isInt(id)) {
itemid = Integer.parseInt(id);
} else {
itemname = itemname.toLowerCase(Locale.ENGLISH);
}
if (itemid < 1) {
if (items.containsKey(itemname)) {
itemid = items.get(itemname);
if (durabilities.containsKey(itemname) && metaData == 0) {
metaData = durabilities.get(itemname);
}
} else if (Material.getMaterial(itemname.toUpperCase(Locale.ENGLISH)) != null) {
Material bMaterial = Material.getMaterial(itemname.toUpperCase(Locale.ENGLISH));
itemid = bMaterial.getId();
} else {
try {
Material bMaterial = Bukkit.getUnsafe().getMaterialFromInternalName(itemname.toLowerCase(Locale.ENGLISH));
itemid = bMaterial.getId();
} catch (Throwable throwable) {
throw new Exception(tl("unknownItemName", itemname), throwable);
}
}
}
if (itemid < 1) {
throw new Exception(tl("unknownItemName", itemname));
}
final Material mat = Material.getMaterial(itemid);
if (mat == null) {
throw new Exception(tl("unknownItemId", itemid));
}
ItemStack retval = new ItemStack(mat);
if (nbtData.containsKey(itemname)) {
String nbt = nbtData.get(itemname);
if (nbt.startsWith("*")) {
nbt = nbtData.get(nbt.substring(1));
}
retval = ess.getServer().getUnsafe().modifyItemStack(retval, nbt);
}
if (mat == Material.MOB_SPAWNER) {
if (metaData == 0) metaData = EntityType.PIG.getTypeId();
try {
retval = ess.getSpawnerProvider().setEntityType(retval, EntityType.fromId(metaData));
} catch (IllegalArgumentException e) {
throw new Exception("Can't spawn entity ID " + metaData + " from mob spawners.");
}
} else if (mat == Material.MONSTER_EGG) {
EntityType type;
try {
type = EntityType.fromId(metaData);
} catch (IllegalArgumentException e) {
throw new Exception("Can't spawn entity ID " + metaData + " from spawn eggs.");
}
retval = ess.getSpawnEggProvider().createEggItem(type);
} else if (mat.name().endsWith("POTION")
&& ReflUtil.getNmsVersionObject().isLowerThan(ReflUtil.V1_11_R1)) { // Only apply this to pre-1.11 as items.csv might only work in 1.11
retval = ess.getPotionMetaProvider().createPotionItem(mat, metaData);
} else {
retval.setDurability(metaData);
}
retval.setAmount(mat.getMaxStackSize());
return retval;
}
@Override
public List<ItemStack> getMatching(User user, String[] args) throws Exception {
List<ItemStack> is = new ArrayList<>();
@@ -222,7 +47,7 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb {
}
} else if (args[0].equalsIgnoreCase("blocks")) {
for (ItemStack stack : user.getBase().getInventory().getContents()) {
if (stack == null || stack.getTypeId() > 255 || stack.getType() == Material.AIR) {
if (stack == null || stack.getType() == Material.AIR) {
continue;
}
is.add(stack.clone());
@@ -240,15 +65,7 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb {
@Override
public String names(ItemStack item) {
ItemData itemData = new ItemData(item.getTypeId(), item.getDurability());
List<String> nameList = names.get(itemData);
if (nameList == null) {
itemData = new ItemData(item.getTypeId(), (short) 0);
nameList = names.get(itemData);
if (nameList == null) {
return null;
}
}
List<String> nameList = nameList(item);
if (nameList.size() > 15) {
nameList = nameList.subList(0, 14);
@@ -256,20 +73,6 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb {
return StringUtil.joinList(", ", nameList);
}
@Override
public String name(ItemStack item) {
ItemData itemData = new ItemData(item.getTypeId(), item.getDurability());
String name = primaryName.get(itemData);
if (name == null) {
itemData = new ItemData(item.getTypeId(), (short) 0);
name = primaryName.get(itemData);
if (name == null) {
return null;
}
}
return name;
}
@Override
public String serialize(ItemStack is) {
String mat = is.getType().name();
@@ -341,7 +144,8 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb {
sb.append(e.getName().toLowerCase()).append(":").append(enchantmentStorageMeta.getStoredEnchantLevel(e)).append(" ");
}
break;
case FIREWORK:
case FIREWORK_ROCKET:
case FIREWORK_STAR:
// Everything from http://wiki.ess3.net/wiki/Item_Meta#Fireworks in that order.
FireworkMeta fireworkMeta = (FireworkMeta) is.getItemMeta();
if (fireworkMeta.hasEffects()) {
@@ -383,7 +187,8 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb {
sb.append("splash:").append(potion.isSplash()).append(" ").append("effect:").append(e.getType().getName().toLowerCase()).append(" ").append("power:").append(e.getAmplifier()).append(" ").append("duration:").append(e.getDuration() / 20).append(" ");
}
break;
case SKULL_ITEM:
case SKELETON_SKULL:
case WITHER_SKELETON_SKULL:
// item stack with meta
SkullMeta skullMeta = (SkullMeta) is.getItemMeta();
if (skullMeta != null && skullMeta.hasOwner()) {
@@ -398,7 +203,22 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb {
int rgb = leatherArmorMeta.getColor().asRGB();
sb.append("color:").append(rgb).append(" ");
break;
case BANNER:
case BLACK_BANNER:
case BLUE_BANNER:
case BROWN_BANNER:
case CYAN_BANNER:
case GRAY_BANNER:
case GREEN_BANNER:
case LIGHT_BLUE_BANNER:
case LIGHT_GRAY_BANNER:
case LIME_BANNER:
case MAGENTA_BANNER:
case ORANGE_BANNER:
case PINK_BANNER:
case PURPLE_BANNER:
case RED_BANNER:
case WHITE_BANNER:
case YELLOW_BANNER:
BannerMeta bannerMeta = (BannerMeta) is.getItemMeta();
if (bannerMeta != null) {
int basecolor = bannerMeta.getBaseColor().getColor().asRGB();
@@ -426,59 +246,4 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb {
return sb.toString().trim().replaceAll("§", "&");
}
@Override
public Collection<String> listNames() {
return primaryName.values();
}
static class ItemData {
final private int itemNo;
final private short itemData;
ItemData(final int itemNo, final short itemData) {
this.itemNo = itemNo;
this.itemData = itemData;
}
public int getItemNo() {
return itemNo;
}
public short getItemData() {
return itemData;
}
@Override
public int hashCode() {
return (31 * itemNo) ^ itemData;
}
@Override
public boolean equals(Object o) {
if (o == null) {
return false;
}
if (!(o instanceof ItemData)) {
return false;
}
ItemData pairo = (ItemData) o;
return this.itemNo == pairo.getItemNo() && this.itemData == pairo.getItemData();
}
}
static class LengthCompare implements java.util.Comparator<String> {
private static final LengthCompare INSTANCE = new LengthCompare();
public LengthCompare() {
super();
}
@Override
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
}
}
@@ -0,0 +1,246 @@
package com.earth2me.essentials.items;
import com.earth2me.essentials.ManagedFile;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import net.ess3.api.IEssentials;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.Damageable;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.PotionMeta;
import org.bukkit.inventory.meta.Repairable;
import org.bukkit.potion.PotionData;
import java.util.*;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import static com.earth2me.essentials.I18n.tl;
public class FlatItemDb extends AbstractItemDb {
protected static final Logger LOGGER = Logger.getLogger("Essentials");
private final transient IEssentials ess;
private static Gson gson = new Gson();
// Maps primary name to ItemData
private final transient Map<String, ItemData> items = new HashMap<>();
// Maps alias to primary name
private final transient Map<String, String> itemAliases = new HashMap<>();
// Every known alias
private final transient Set<String> allAliases = new HashSet<>();
private transient ManagedFile file = null;
public FlatItemDb(final IEssentials ess) {
this.ess = ess;
}
@Override
public void reloadConfig() {
if (file == null) {
file = new ManagedFile("items.json", ess);
}
this.rebuild();
LOGGER.info(String.format("Loaded %s items from items.json.", listNames().size()));
}
private void rebuild() {
this.reset();
String json = file.getLines().stream()
.filter(line -> !line.startsWith("#"))
.collect(Collectors.joining());
this.loadJSON(String.join("\n", json));
}
private void reset() {
items.clear();
itemAliases.clear();
allAliases.clear();
}
public void loadJSON(String source) {
JsonObject map = (new JsonParser()).parse(source).getAsJsonObject();
for (Map.Entry<String, JsonElement> entry : map.entrySet()) {
String key = entry.getKey();
JsonElement element = entry.getValue();
boolean valid = false;
if (element.isJsonObject()) {
ItemData data = gson.fromJson(element, ItemData.class);
items.put(key, data);
valid = true;
} else {
try {
String target = element.getAsString();
itemAliases.put(key, target);
valid = true;
} catch (Exception ignored) {}
}
if (valid) {
allAliases.add(key);
} else {
LOGGER.warning(String.format("Failed to add item: \"%s\": %s", key, element.toString()));
}
}
}
@Override
public ItemStack get(final String id) throws Exception {
final String[] split = id.split(":");
ItemData data = getByName(split[0]);
if (data == null) {
throw new Exception(tl("unknownItemName", id));
}
PotionData potionData = data.getPotionData();
Material material = data.getMaterial();
ItemStack stack = new ItemStack(material);
stack.setAmount(material.getMaxStackSize());
ItemMeta meta = stack.getItemMeta();
if (potionData != null && meta instanceof PotionMeta) {
PotionMeta potionMeta = (PotionMeta) meta;
potionMeta.setBasePotionData(potionData);
}
// For some reason, Damageable doesn't extend ItemMeta but CB implements them in the same
// class. As to why, your guess is as good as mine.
if (split.length > 1 && meta instanceof Damageable) {
Damageable damageMeta = (Damageable) meta;
damageMeta.setDamage(Integer.parseInt(split[1]));
}
stack.setItemMeta(meta);
return stack;
}
private ItemData getByName(String name) {
name = name.toLowerCase();
if (items.containsKey(name)) {
return items.get(name);
} else if (itemAliases.containsKey(name)) {
return items.get(itemAliases.get(name));
}
return null;
}
@Override
public List<String> nameList(ItemStack item) {
List<String> names = new ArrayList<>();
String primaryName = name(item);
names.add(primaryName);
for (Map.Entry<String, String> entry : itemAliases.entrySet()) {
if (entry.getValue().equalsIgnoreCase(primaryName)) {
names.add(entry.getKey());
}
}
return names;
}
@Override
public String name(ItemStack item) {
Material type = item.getType();
PotionData potion = null;
if ((type.name().contains("POTION") || type.name().equals("TIPPED_ARROW")) && item.getItemMeta() instanceof PotionMeta) {
potion = ((PotionMeta) item.getItemMeta()).getBasePotionData();
}
ItemData data = new ItemData(type, potion);
for (Map.Entry<String, ItemData> entry : items.entrySet()) {
if (entry.getValue().equals(data)) {
return entry.getKey();
}
}
return null;
}
@Override
@Deprecated
public Material getFromLegacyId(int id) {
throw new UnsupportedOperationException("Legacy IDs aren't supported on this version of EssentialsX.");
}
@Override
@Deprecated
public int getLegacyId(Material material) throws Exception {
throw new UnsupportedOperationException("Legacy IDs aren't supported on this version of EssentialsX.");
}
@Override
public Collection<String> listNames() {
return Collections.unmodifiableSet(allAliases);
}
public static class ItemData {
private String itemName;
private Material material;
private PotionData potionData;
public ItemData(Material material, PotionData potionData) {
this.material = material;
this.potionData = potionData;
}
@Override
public int hashCode() {
return (31 * material.hashCode()) ^ potionData.hashCode();
}
@Override
public boolean equals(Object o) {
if (o == null) {
return false;
}
if (!(o instanceof ItemData)) {
return false;
}
ItemData that = (ItemData) o;
return this.material == that.getMaterial() && potionDataEquals(that);
}
public String getItemName() {
return itemName;
}
public Material getMaterial() {
return material;
}
public PotionData getPotionData() {
return this.potionData;
}
private boolean potionDataEquals(ItemData o) {
if (this.potionData == null && o.getPotionData() == null) {
return true;
} else if (this.potionData != null && o.getPotionData() != null) {
return this.potionData.equals(o.getPotionData());
} else {
return false;
}
}
}
}
@@ -0,0 +1,316 @@
package com.earth2me.essentials.items;
import com.earth2me.essentials.ManagedFile;
import com.earth2me.essentials.utils.EnumUtil;
import com.earth2me.essentials.utils.NumberUtil;
import net.ess3.api.IEssentials;
import net.ess3.nms.refl.ReflUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.inventory.ItemStack;
import java.util.*;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static com.earth2me.essentials.I18n.tl;
public class LegacyItemDb extends AbstractItemDb {
protected static final Logger LOGGER = Logger.getLogger("Essentials");
private final transient IEssentials ess;
private final transient Map<String, Integer> items = new HashMap<>();
private final transient Map<ItemData, List<String>> names = new HashMap<>();
private final transient Map<ItemData, String> primaryName = new HashMap<>();
private final transient Map<Integer, ItemData> legacyIds = new HashMap<>();
private final transient Map<String, Short> durabilities = new HashMap<>();
private final transient Map<String, String> nbtData = new HashMap<>();
private final transient ManagedFile file;
private final transient Pattern splitPattern = Pattern.compile("((.*)[:+',;.](\\d+))");
private final transient Pattern csvSplitPattern = Pattern.compile("(\"([^\"]*)\"|[^,]*)(,|$)");
public LegacyItemDb(final IEssentials ess) {
this.ess = ess;
file = new ManagedFile("items.csv", ess);
}
@Override
public void reloadConfig() {
final List<String> lines = file.getLines();
if (lines.isEmpty()) {
return;
}
durabilities.clear();
items.clear();
names.clear();
primaryName.clear();
for (String line : lines) {
if (line.length() > 0 && line.charAt(0) == '#') {
continue;
}
String itemName = null;
int numeric = -1;
short data = 0;
String nbt = null;
int col = 0;
Matcher matcher = csvSplitPattern.matcher(line);
while (matcher.find()) {
String match = matcher.group(1);
if (StringUtils.stripToNull(match) == null) {
continue;
}
match = StringUtils.strip(match.trim(), "\"");
switch (col) {
case 0:
itemName = match.toLowerCase(Locale.ENGLISH);
break;
case 1:
numeric = Integer.parseInt(match);
break;
case 2:
data = Short.parseShort(match);
break;
case 3:
nbt = StringUtils.stripToNull(match);
break;
default:
continue;
}
col++;
}
// Invalid row
if (itemName == null || numeric < 0) {
continue;
}
Material material = Material.matchMaterial(itemName);
if (material == null) {
LOGGER.warning(String.format("Failed to find material for %s", itemName));
continue;
}
durabilities.put(itemName, data);
items.put(itemName, numeric);
if (nbt != null) {
nbtData.put(itemName, nbt);
}
ItemData itemData = new ItemData(material, numeric, data);
if (names.containsKey(itemData)) {
List<String> nameList = names.get(itemData);
nameList.add(itemName);
} else {
List<String> nameList = new ArrayList<>();
nameList.add(itemName);
names.put(itemData, nameList);
primaryName.put(itemData, itemName);
}
legacyIds.put(numeric, itemData);
}
for (List<String> nameList : names.values()) {
Collections.sort(nameList, LengthCompare.INSTANCE);
}
LOGGER.info(String.format("Loaded %s items from items.csv.", listNames().size()));
}
@Override
public ItemStack get(final String id) throws Exception {
int itemid = 0;
String itemname;
short metaData = 0;
Matcher parts = splitPattern.matcher(id);
if (parts.matches()) {
itemname = parts.group(2);
metaData = Short.parseShort(parts.group(3));
} else {
itemname = id;
}
if (NumberUtil.isInt(itemname)) {
itemid = Integer.parseInt(itemname);
} else if (NumberUtil.isInt(id)) {
itemid = Integer.parseInt(id);
} else {
itemname = itemname.toLowerCase(Locale.ENGLISH);
}
if (itemid < 1) {
if (items.containsKey(itemname)) {
itemid = items.get(itemname);
if (durabilities.containsKey(itemname) && metaData == 0) {
metaData = durabilities.get(itemname);
}
}
}
if (itemid < 1) {
throw new Exception(tl("unknownItemName", itemname));
}
ItemData data = legacyIds.get(itemid);
if (data == null) {
throw new Exception(tl("unknownItemId", itemid));
}
Material mat = data.getMaterial();
ItemStack retval = new ItemStack(mat);
if (nbtData.containsKey(itemname)) {
String nbt = nbtData.get(itemname);
if (nbt.startsWith("*")) {
nbt = nbtData.get(nbt.substring(1));
}
retval = ess.getServer().getUnsafe().modifyItemStack(retval, nbt);
}
Material MOB_SPAWNER = EnumUtil.getMaterial("SPAWNER", "MOB_SPAWNER");
if (mat == MOB_SPAWNER) {
if (metaData == 0) metaData = EntityType.PIG.getTypeId();
try {
retval = ess.getSpawnerProvider().setEntityType(retval, EntityType.fromId(metaData));
} catch (IllegalArgumentException e) {
throw new Exception("Can't spawn entity ID " + metaData + " from mob spawners.");
}
} else if (mat.name().contains("MONSTER_EGG")) {
EntityType type;
try {
type = EntityType.fromId(metaData);
} catch (IllegalArgumentException e) {
throw new Exception("Can't spawn entity ID " + metaData + " from spawn eggs.");
}
retval = ess.getSpawnEggProvider().createEggItem(type);
} else if (mat.name().endsWith("POTION")
&& ReflUtil.getNmsVersionObject().isLowerThan(ReflUtil.V1_11_R1)) { // Only apply this to pre-1.11 as items.csv might only work in 1.11
retval = ess.getPotionMetaProvider().createPotionItem(mat, metaData);
} else {
retval.setDurability(metaData);
}
retval.setAmount(mat.getMaxStackSize());
return retval;
}
@Override
public List<String> nameList(ItemStack item) {
ItemData itemData = new ItemData(item.getType(), item.getDurability());
List<String> nameList = names.get(itemData);
if (nameList == null) {
itemData = new ItemData(item.getType(), (short) 0);
nameList = names.get(itemData);
if (nameList == null) {
return null;
}
}
return Collections.unmodifiableList(nameList);
}
@Override
public String name(ItemStack item) {
ItemData itemData = new ItemData(item.getType(), item.getDurability());
String name = primaryName.get(itemData);
if (name == null) {
itemData = new ItemData(item.getType(), (short) 0);
name = primaryName.get(itemData);
if (name == null) {
return null;
}
}
return name;
}
@Override
public Material getFromLegacyId(int id) {
ItemData data = this.legacyIds.get(id);
if(data == null) {
return null;
}
return data.getMaterial();
}
@Override
public int getLegacyId(Material material) throws Exception {
for(Map.Entry<String, Integer> entry : items.entrySet()) {
if(material.name().toLowerCase(Locale.ENGLISH).equalsIgnoreCase(entry.getKey())) {
return entry.getValue();
}
}
throw new Exception("Itemid not found for material: " + material.name());
}
@Override
public Collection<String> listNames() {
return primaryName.values();
}
static class ItemData {
final private Material material;
private int legacyId;
final private short itemData;
ItemData(Material material, short itemData) {
this.material = material;
this.itemData = itemData;
}
@Deprecated
ItemData(Material material, final int legacyId, final short itemData) {
this.material = material;
this.legacyId = legacyId;
this.itemData = itemData;
}
public Material getMaterial() {
return material;
}
@Deprecated
public int getItemNo() {
return legacyId;
}
public short getItemData() {
return itemData;
}
@Override
public int hashCode() {
return (31 * material.hashCode()) ^ itemData;
}
@Override
public boolean equals(Object o) {
if (o == null) {
return false;
}
if (!(o instanceof ItemData)) {
return false;
}
ItemData pairo = (ItemData) o;
return this.material == pairo.getMaterial() && this.itemData == pairo.getItemData();
}
}
static class LengthCompare implements java.util.Comparator<String> {
private static final LengthCompare INSTANCE = new LengthCompare();
public LengthCompare() {
super();
}
@Override
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
}
}
@@ -17,7 +17,7 @@ import java.lang.ref.WeakReference;
* <li>{@link IMessageRecipient#getReplyRecipient()}</li>
* <li>{@link IMessageRecipient#setReplyRecipient(IMessageRecipient)}</li>
* </ul>
*
*
* <b>The given {@code parent} must implement the following methods to prevent overflow:</b>
* <ul>
* <li>{@link IMessageRecipient#sendMessage(String)}</li>
@@ -25,14 +25,14 @@ import java.lang.ref.WeakReference;
* <li>{@link IMessageRecipient#getDisplayName()}</li>
* <li>{@link IMessageRecipient#isReachable()}</li>
* </ul>
*
*
* The reply-recipient is wrapped in a {@link WeakReference}.
*/
public class SimpleMessageRecipient implements IMessageRecipient {
private final IEssentials ess;
private final IMessageRecipient parent;
private long lastMessageMs;
private WeakReference<IMessageRecipient> replyRecipient;
@@ -42,7 +42,7 @@ public class SimpleMessageRecipient implements IMessageRecipient {
}
return recipient instanceof User ? (User) recipient : null;
}
public SimpleMessageRecipient(IEssentials ess, IMessageRecipient parent) {
this.ess = ess;
this.parent = parent;
@@ -117,13 +117,12 @@ public class SimpleMessageRecipient implements IMessageRecipient {
if (!isReachable()) {
return MessageResponse.UNREACHABLE;
}
User user = getUser(this);
boolean afk = false;
if (user != null) {
if (user.isIgnoreMsg()
&& !(sender instanceof Console)) { // Console must never be ignored.
return MessageResponse.MESSAGES_IGNORED;
if (user.isIgnoreMsg() && sender instanceof IUser && !((IUser) sender).isAuthorized("essentials.msgtoggle.bypass")) { // Don't ignore console and senders with permission
return MessageResponse.MESSAGES_IGNORED;
}
afk = user.isAfk();
// Check whether this recipient ignores the sender, only if the sender is not the console.
@@ -138,7 +137,7 @@ public class SimpleMessageRecipient implements IMessageRecipient {
// If this recipient doesn't have a reply recipient, initiate by setting the first
// message sender to this recipient's replyRecipient.
long timeout = ess.getSettings().getLastMessageReplyRecipientTimeout() * 1000;
if (getReplyRecipient() == null || !getReplyRecipient().isReachable()
if (getReplyRecipient() == null || !getReplyRecipient().isReachable()
|| System.currentTimeMillis() - this.lastMessageMs > timeout) {
setReplyRecipient(sender);
}
File diff suppressed because it is too large. Load diff
@@ -42,11 +42,6 @@ public class Methods {
* Implement all methods along with their respective name & class.
*/
private static void _init() {
addMethod("iConomy", new com.earth2me.essentials.register.payment.methods.iCo6());
addMethod("iConomy", new com.earth2me.essentials.register.payment.methods.iCo5());
addMethod("BOSEconomy", new com.earth2me.essentials.register.payment.methods.BOSE7());
addMethod("Currency", new com.earth2me.essentials.register.payment.methods.MCUR());
Dependencies.add("MultiCurrency");
addMethod("Vault", new com.earth2me.essentials.register.payment.methods.VaultEco());
}
@@ -1,271 +0,0 @@
package com.earth2me.essentials.register.payment.methods;
import com.earth2me.essentials.register.payment.Method;
import cosine.boseconomy.BOSEconomy;
import org.bukkit.plugin.Plugin;
/**
* BOSEconomy 7 Implementation of Method
*
* @author Acrobot
* @author Nijikokun <nijikokun@shortmail.com> (@nijikokun) @copyright (c) 2011 @license AOL license
* <http://aol.nexua.org>
*/
public class BOSE7 implements Method {
private BOSEconomy BOSEconomy;
@Override
public BOSEconomy getPlugin() {
return this.BOSEconomy;
}
@Override
public String getName() {
return "BOSEconomy";
}
@Override
public String getLongName() {
return getName();
}
@Override
public String getVersion() {
return "0.7.0";
}
@Override
public int fractionalDigits() {
return this.BOSEconomy.getFractionalDigits();
}
@Override
public String format(double amount) {
String currency = this.BOSEconomy.getMoneyNamePlural();
if (amount == 1) {
currency = this.BOSEconomy.getMoneyName();
}
return amount + " " + currency;
}
@Override
public boolean hasBanks() {
return true;
}
@Override
public boolean hasBank(String bank) {
return this.BOSEconomy.bankExists(bank);
}
@Override
public boolean hasAccount(String name) {
return this.BOSEconomy.playerRegistered(name, false);
}
@Override
public boolean hasBankAccount(String bank, String name) {
return this.BOSEconomy.isBankOwner(bank, name) || this.BOSEconomy.isBankMember(bank, name);
}
@Override
public boolean createAccount(String name) {
if (hasAccount(name)) {
return false;
}
this.BOSEconomy.registerPlayer(name);
return true;
}
@Override
public boolean createAccount(String name, Double balance) {
if (hasAccount(name)) {
return false;
}
this.BOSEconomy.registerPlayer(name);
this.BOSEconomy.setPlayerMoney(name, balance, false);
return true;
}
@Override
public MethodAccount getAccount(String name) {
if (!hasAccount(name)) {
return null;
}
return new BOSEAccount(name, this.BOSEconomy);
}
@Override
public MethodBankAccount getBankAccount(String bank, String name) {
if (!hasBankAccount(bank, name)) {
return null;
}
return new BOSEBankAccount(bank, BOSEconomy);
}
@Override
public boolean isCompatible(Plugin plugin) {
return plugin.getDescription().getName().equalsIgnoreCase("boseconomy") && plugin instanceof BOSEconomy && !plugin.getDescription().getVersion().equals("0.6.2");
}
@Override
public void setPlugin(Plugin plugin) {
BOSEconomy = (BOSEconomy) plugin;
}
public class BOSEAccount implements MethodAccount {
private final String name;
private final BOSEconomy BOSEconomy;
public BOSEAccount(String name, BOSEconomy bOSEconomy) {
this.name = name;
this.BOSEconomy = bOSEconomy;
}
@Override
public double balance() {
return this.BOSEconomy.getPlayerMoneyDouble(this.name);
}
@Override
public boolean set(double amount) {
return this.BOSEconomy.setPlayerMoney(this.name, amount, false);
}
@Override
public boolean add(double amount) {
return this.BOSEconomy.addPlayerMoney(this.name, amount, false);
}
@Override
public boolean subtract(double amount) {
double balance = this.balance();
return this.BOSEconomy.setPlayerMoney(this.name, (balance - amount), false);
}
@Override
public boolean multiply(double amount) {
double balance = this.balance();
return this.BOSEconomy.setPlayerMoney(this.name, (balance * amount), false);
}
@Override
public boolean divide(double amount) {
double balance = this.balance();
return this.BOSEconomy.setPlayerMoney(this.name, (balance / amount), false);
}
@Override
public boolean hasEnough(double amount) {
return (this.balance() >= amount);
}
@Override
public boolean hasOver(double amount) {
return (this.balance() > amount);
}
@Override
public boolean hasUnder(double amount) {
return (this.balance() < amount);
}
@Override
public boolean isNegative() {
return (this.balance() < 0);
}
@Override
public boolean remove() {
return false;
}
}
public class BOSEBankAccount implements MethodBankAccount {
private final String bank;
private final BOSEconomy BOSEconomy;
public BOSEBankAccount(String bank, BOSEconomy bOSEconomy) {
this.bank = bank;
this.BOSEconomy = bOSEconomy;
}
@Override
public String getBankName() {
return this.bank;
}
@Override
public int getBankId() {
return -1;
}
@Override
public double balance() {
return this.BOSEconomy.getBankMoneyDouble(bank);
}
@Override
public boolean set(double amount) {
return this.BOSEconomy.setBankMoney(bank, amount, true);
}
@Override
public boolean add(double amount) {
double balance = this.balance();
return this.BOSEconomy.setBankMoney(bank, (balance + amount), false);
}
@Override
public boolean subtract(double amount) {
double balance = this.balance();
return this.BOSEconomy.setBankMoney(bank, (balance - amount), false);
}
@Override
public boolean multiply(double amount) {
double balance = this.balance();
return this.BOSEconomy.setBankMoney(bank, (balance * amount), false);
}
@Override
public boolean divide(double amount) {
double balance = this.balance();
return this.BOSEconomy.setBankMoney(bank, (balance / amount), false);
}
@Override
public boolean hasEnough(double amount) {
return (this.balance() >= amount);
}
@Override
public boolean hasOver(double amount) {
return (this.balance() > amount);
}
@Override
public boolean hasUnder(double amount) {
return (this.balance() < amount);
}
@Override
public boolean isNegative() {
return (this.balance() < 0);
}
@Override
public boolean remove() {
return this.BOSEconomy.removeBank(bank);
}
}
}
@@ -1,163 +0,0 @@
package com.earth2me.essentials.register.payment.methods;
import com.earth2me.essentials.register.payment.Method;
import me.ashtheking.currency.Currency;
import me.ashtheking.currency.CurrencyList;
import org.bukkit.plugin.Plugin;
/**
* MultiCurrency Method implementation.
*
* @author Acrobot @copyright (c) 2011 @license AOL license <http://aol.nexua.org>
*/
public class MCUR implements Method {
private Currency currencyList;
@Override
public Object getPlugin() {
return this.currencyList;
}
@Override
public String getName() {
return "MultiCurrency";
}
@Override
public String getLongName() {
return getName();
}
@Override
public String getVersion() {
return "0.09";
}
@Override
public int fractionalDigits() {
return -1;
}
@Override
public String format(double amount) {
return amount + " Currency";
}
@Override
public boolean hasBanks() {
return false;
}
@Override
public boolean hasBank(String bank) {
return false;
}
@Override
public boolean hasAccount(String name) {
return true;
}
@Override
public boolean hasBankAccount(String bank, String name) {
return false;
}
@Override
public boolean createAccount(String name) {
CurrencyList.setValue((String) CurrencyList.maxCurrency(name)[0], name, 0);
return true;
}
@Override
public boolean createAccount(String name, Double balance) {
CurrencyList.setValue((String) CurrencyList.maxCurrency(name)[0], name, balance);
return true;
}
@Override
public MethodAccount getAccount(String name) {
return new MCurrencyAccount(name);
}
@Override
public MethodBankAccount getBankAccount(String bank, String name) {
return null;
}
@Override
public boolean isCompatible(Plugin plugin) {
return (plugin.getDescription().getName().equalsIgnoreCase("Currency") || plugin.getDescription().getName().equalsIgnoreCase("MultiCurrency")) && plugin instanceof Currency;
}
@Override
public void setPlugin(Plugin plugin) {
currencyList = (Currency) plugin;
}
public class MCurrencyAccount implements MethodAccount {
private final String name;
public MCurrencyAccount(String name) {
this.name = name;
}
@Override
public double balance() {
return CurrencyList.getValue((String) CurrencyList.maxCurrency(name)[0], name);
}
@Override
public boolean set(double amount) {
CurrencyList.setValue((String) CurrencyList.maxCurrency(name)[0], name, amount);
return true;
}
@Override
public boolean add(double amount) {
return CurrencyList.add(name, amount);
}
@Override
public boolean subtract(double amount) {
return CurrencyList.subtract(name, amount);
}
@Override
public boolean multiply(double amount) {
return CurrencyList.multiply(name, amount);
}
@Override
public boolean divide(double amount) {
return CurrencyList.divide(name, amount);
}
@Override
public boolean hasEnough(double amount) {
return CurrencyList.hasEnough(name, amount);
}
@Override
public boolean hasOver(double amount) {
return CurrencyList.hasOver(name, amount);
}
@Override
public boolean hasUnder(double amount) {
return CurrencyList.hasUnder(name, amount);
}
@Override
public boolean isNegative() {
return CurrencyList.isNegative(name);
}
@Override
public boolean remove() {
return CurrencyList.remove(name);
}
}
}
@@ -1,312 +0,0 @@
package com.earth2me.essentials.register.payment.methods;
import com.earth2me.essentials.register.payment.Method;
import com.iConomy.iConomy;
import com.iConomy.system.Account;
import com.iConomy.system.BankAccount;
import com.iConomy.system.Holdings;
import com.iConomy.util.Constants;
import org.bukkit.plugin.Plugin;
/**
* iConomy 5 Implementation of Method
*
* @author Nijikokun <nijikokun@shortmail.com> (@nijikokun) @copyright (c) 2011 @license AOL license
* <http://aol.nexua.org>
*/
public class iCo5 implements Method {
private iConomy iConomy;
@Override
public iConomy getPlugin() {
return this.iConomy;
}
@Override
public String getName() {
return "iConomy";
}
@Override
public String getLongName() {
return getName();
}
@Override
public String getVersion() {
return "5";
}
@Override
public int fractionalDigits() {
return 2;
}
@Override
public String format(double amount) {
return com.iConomy.iConomy.format(amount);
}
@Override
public boolean hasBanks() {
return Constants.Banking;
}
@Override
public boolean hasBank(String bank) {
return (hasBanks()) && com.iConomy.iConomy.Banks.exists(bank);
}
@Override
public boolean hasAccount(String name) {
return com.iConomy.iConomy.hasAccount(name);
}
@Override
public boolean hasBankAccount(String bank, String name) {
return (hasBank(bank)) && com.iConomy.iConomy.getBank(bank).hasAccount(name);
}
@Override
public boolean createAccount(String name) {
if (hasAccount(name)) {
return false;
}
return com.iConomy.iConomy.Accounts.create(name);
}
@Override
public boolean createAccount(String name, Double balance) {
if (hasAccount(name)) {
return false;
}
if (!com.iConomy.iConomy.Accounts.create(name)) {
return false;
}
getAccount(name).set(balance);
return true;
}
@Override
public MethodAccount getAccount(String name) {
return new iCoAccount(com.iConomy.iConomy.getAccount(name));
}
@Override
public MethodBankAccount getBankAccount(String bank, String name) {
return new iCoBankAccount(com.iConomy.iConomy.getBank(bank).getAccount(name));
}
@Override
public boolean isCompatible(Plugin plugin) {
return plugin.getDescription().getName().equalsIgnoreCase("iconomy") && plugin.getClass().getName().equals("com.iConomy.iConomy") && plugin instanceof iConomy;
}
@Override
public void setPlugin(Plugin plugin) {
iConomy = (iConomy) plugin;
}
public class iCoAccount implements MethodAccount {
private final Account account;
private final Holdings holdings;
public iCoAccount(Account account) {
this.account = account;
this.holdings = account.getHoldings();
}
public Account getiCoAccount() {
return account;
}
@Override
public double balance() {
return this.holdings.balance();
}
@Override
public boolean set(double amount) {
if (this.holdings == null) {
return false;
}
this.holdings.set(amount);
return true;
}
@Override
public boolean add(double amount) {
if (this.holdings == null) {
return false;
}
this.holdings.add(amount);
return true;
}
@Override
public boolean subtract(double amount) {
if (this.holdings == null) {
return false;
}
this.holdings.subtract(amount);
return true;
}
@Override
public boolean multiply(double amount) {
if (this.holdings == null) {
return false;
}
this.holdings.multiply(amount);
return true;
}
@Override
public boolean divide(double amount) {
if (this.holdings == null) {
return false;
}
this.holdings.divide(amount);
return true;
}
@Override
public boolean hasEnough(double amount) {
return this.holdings.hasEnough(amount);
}
@Override
public boolean hasOver(double amount) {
return this.holdings.hasOver(amount);
}
@Override
public boolean hasUnder(double amount) {
return this.holdings.hasUnder(amount);
}
@Override
public boolean isNegative() {
return this.holdings.isNegative();
}
@Override
public boolean remove() {
if (this.account == null) {
return false;
}
this.account.remove();
return true;
}
}
public class iCoBankAccount implements MethodBankAccount {
private final BankAccount account;
private final Holdings holdings;
public iCoBankAccount(BankAccount account) {
this.account = account;
this.holdings = account.getHoldings();
}
public BankAccount getiCoBankAccount() {
return account;
}
@Override
public String getBankName() {
return this.account.getBankName();
}
@Override
public int getBankId() {
return this.account.getBankId();
}
@Override
public double balance() {
return this.holdings.balance();
}
@Override
public boolean set(double amount) {
if (this.holdings == null) {
return false;
}
this.holdings.set(amount);
return true;
}
@Override
public boolean add(double amount) {
if (this.holdings == null) {
return false;
}
this.holdings.add(amount);
return true;
}
@Override
public boolean subtract(double amount) {
if (this.holdings == null) {
return false;
}
this.holdings.subtract(amount);
return true;
}
@Override
public boolean multiply(double amount) {
if (this.holdings == null) {
return false;
}
this.holdings.multiply(amount);
return true;
}
@Override
public boolean divide(double amount) {
if (this.holdings == null) {
return false;
}
this.holdings.divide(amount);
return true;
}
@Override
public boolean hasEnough(double amount) {
return this.holdings.hasEnough(amount);
}
@Override
public boolean hasOver(double amount) {
return this.holdings.hasOver(amount);
}
@Override
public boolean hasUnder(double amount) {
return this.holdings.hasUnder(amount);
}
@Override
public boolean isNegative() {
return this.holdings.isNegative();
}
@Override
public boolean remove() {
if (this.account == null) {
return false;
}
this.account.remove();
return true;
}
}
}
@@ -1,201 +0,0 @@
package com.earth2me.essentials.register.payment.methods;
import com.earth2me.essentials.register.payment.Method;
import com.iCo6.iConomy;
import com.iCo6.system.Account;
import com.iCo6.system.Accounts;
import com.iCo6.system.Holdings;
import org.bukkit.plugin.Plugin;
/**
* iConomy 6 Implementation of Method
*
* @author Nijikokun <nijikokun@shortmail.com> (@nijikokun) @copyright (c) 2011 @license AOL license
* <http://aol.nexua.org>
*/
public class iCo6 implements Method {
private iConomy iConomy;
@Override
public iConomy getPlugin() {
return this.iConomy;
}
@Override
public String getName() {
return "iConomy";
}
@Override
public String getLongName() {
return getName();
}
@Override
public String getVersion() {
return "6";
}
@Override
public int fractionalDigits() {
return 2;
}
@Override
public String format(double amount) {
return com.iCo6.iConomy.format(amount);
}
@Override
public boolean hasBanks() {
return false;
}
@Override
public boolean hasBank(String bank) {
return false;
}
@Override
public boolean hasAccount(String name) {
return (new Accounts()).exists(name);
}
@Override
public boolean hasBankAccount(String bank, String name) {
return false;
}
@Override
public boolean createAccount(String name) {
if (hasAccount(name)) {
return false;
}
return (new Accounts()).create(name);
}
@Override
public boolean createAccount(String name, Double balance) {
if (hasAccount(name)) {
return false;
}
return (new Accounts()).create(name, balance);
}
@Override
public MethodAccount getAccount(String name) {
return new iCoAccount((new Accounts()).get(name));
}
@Override
public MethodBankAccount getBankAccount(String bank, String name) {
return null;
}
@Override
public boolean isCompatible(Plugin plugin) {
return plugin.getDescription().getName().equalsIgnoreCase("iconomy") && plugin.getClass().getName().equals("com.iCo6.iConomy") && plugin instanceof iConomy;
}
@Override
public void setPlugin(Plugin plugin) {
iConomy = (iConomy) plugin;
}
public class iCoAccount implements MethodAccount {
private final Account account;
private final Holdings holdings;
public iCoAccount(Account account) {
this.account = account;
this.holdings = account.getHoldings();
}
public Account getiCoAccount() {
return account;
}
@Override
public double balance() {
return this.holdings.getBalance();
}
@Override
public boolean set(double amount) {
if (this.holdings == null) {
return false;
}
this.holdings.setBalance(amount);
return true;
}
@Override
public boolean add(double amount) {
if (this.holdings == null) {
return false;
}
this.holdings.add(amount);
return true;
}
@Override
public boolean subtract(double amount) {
if (this.holdings == null) {
return false;
}
this.holdings.subtract(amount);
return true;
}
@Override
public boolean multiply(double amount) {
if (this.holdings == null) {
return false;
}
this.holdings.multiply(amount);
return true;
}
@Override
public boolean divide(double amount) {
if (this.holdings == null) {
return false;
}
this.holdings.divide(amount);
return true;
}
@Override
public boolean hasEnough(double amount) {
return this.holdings.hasEnough(amount);
}
@Override
public boolean hasOver(double amount) {
return this.holdings.hasOver(amount);
}
@Override
public boolean hasUnder(double amount) {
return this.holdings.hasUnder(amount);
}
@Override
public boolean isNegative() {
return this.holdings.isNegative();
}
@Override
public boolean remove() {
if (this.account == null) {
return false;
}
this.account.remove();
return true;
}
}
}
@@ -9,8 +9,7 @@ import org.bukkit.Location;
import java.util.HashMap;
import java.util.Map;
@Data @EqualsAndHashCode(callSuper = false) public class Spawns implements StorageObject {
@MapValueType(Location.class)
private Map<String, Location> spawns = new HashMap<String, Location>();
private Map<String, Location> spawns = new HashMap<>();
}
@@ -213,7 +213,7 @@ public class EssentialsSign {
protected static boolean checkIfBlockBreaksSigns(final Block block) {
final Block sign = block.getRelative(BlockFace.UP);
if (sign.getType() == Material.SIGN_POST && isValidSign(new BlockSign(sign))) {
if (sign.getType() == Material.SIGN && isValidSign(new BlockSign(sign))) {
return true;
}
final BlockFace[] directions = new BlockFace[]{BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST};
@@ -22,7 +22,7 @@ import java.util.logging.Logger;
public class SignBlockListener implements Listener {
private static final Logger LOGGER = Logger.getLogger("Essentials");
private static final Material WALL_SIGN = Material.WALL_SIGN;
private static final Material SIGN_POST = Material.SIGN_POST;
private static final Material SIGN_POST = Material.SIGN;
private final transient IEssentials ess;
public SignBlockListener(IEssentials ess) {
@@ -25,7 +25,7 @@ public class SignEntityListener implements Listener {
}
for (Block block : event.blockList()) {
if (((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST) && EssentialsSign.isValidSign(ess, new EssentialsSign.BlockSign(block))) || EssentialsSign.checkIfBlockBreaksSigns(block)) {
if (((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN) && EssentialsSign.isValidSign(ess, new EssentialsSign.BlockSign(block))) || EssentialsSign.checkIfBlockBreaksSigns(block)) {
event.setCancelled(true);
return;
}
@@ -46,7 +46,7 @@ public class SignEntityListener implements Listener {
}
final Block block = event.getBlock();
if (((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST) && EssentialsSign.isValidSign(ess, new EssentialsSign.BlockSign(block))) || EssentialsSign.checkIfBlockBreaksSigns(block)) {
if (((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN) && EssentialsSign.isValidSign(ess, new EssentialsSign.BlockSign(block))) || EssentialsSign.checkIfBlockBreaksSigns(block)) {
event.setCancelled(true);
return;
}
@@ -54,7 +54,7 @@ public class SignPlayerListener implements Listener {
}
final Material mat = block.getType();
if (mat == Material.SIGN_POST || mat == Material.WALL_SIGN) {
if (mat == Material.SIGN || mat == Material.WALL_SIGN) {
final String csign = ((Sign) block.getState()).getLine(0);
for (EssentialsSign sign : ess.getSettings().enabledSigns()) {
if (csign.equalsIgnoreCase(sign.getSuccessName(ess))) {
@@ -26,7 +26,6 @@ public class SignProtection extends EssentialsSign {
public SignProtection() {
super("Protection");
protectedBlocks.add(Material.CHEST);
protectedBlocks.add(Material.BURNING_FURNACE);
protectedBlocks.add(Material.FURNACE);
protectedBlocks.add(Material.DISPENSER);
}
@@ -103,7 +102,7 @@ public class SignProtection extends EssentialsSign {
}
private SignProtectionState checkProtectionSign(final Block block, final User user, final String username) {
if (block.getType() == Material.SIGN_POST || block.getType() == Material.WALL_SIGN) {
if (block.getType() == Material.SIGN || block.getType() == Material.WALL_SIGN) {
final BlockSign sign = new BlockSign(block);
if (sign.getLine(0).equals(this.getSuccessName())) { // TODO call getSuccessName(IEssentials)
return checkProtectionSign(sign, user, username);
@@ -160,7 +159,7 @@ public class SignProtection extends EssentialsSign {
public boolean isBlockProtected(final Block block) {
final Block[] faces = getAdjacentBlocks(block);
for (Block b : faces) {
if (b.getType() == Material.SIGN_POST || b.getType() == Material.WALL_SIGN) {
if (b.getType() == Material.SIGN || b.getType() == Material.WALL_SIGN) {
final Sign sign = (Sign) b.getState();
if (sign.getLine(0).equalsIgnoreCase("§1[Protection]")) {
return true;
@@ -170,7 +169,7 @@ public class SignProtection extends EssentialsSign {
final Block[] faceChest = getAdjacentBlocks(b);
for (Block a : faceChest) {
if (a.getType() == Material.SIGN_POST || a.getType() == Material.WALL_SIGN) {
if (a.getType() == Material.SIGN || a.getType() == Material.WALL_SIGN) {
final Sign sign = (Sign) a.getState();
if (sign.getLine(0).equalsIgnoreCase("§1[Protection]")) {
return true;
@@ -1,18 +1,23 @@
package com.earth2me.essentials.storage;
import com.earth2me.essentials.Enchantments;
import com.earth2me.essentials.utils.NumberUtil;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.World;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
import org.bukkit.material.MaterialData;
import org.bukkit.plugin.Plugin;
import org.yaml.snakeyaml.constructor.BaseConstructor;
import org.yaml.snakeyaml.constructor.CustomClassLoaderConstructor;
import org.yaml.snakeyaml.introspector.PropertyUtils;
import org.yaml.snakeyaml.nodes.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Locale;
@@ -30,23 +35,37 @@ public class BukkitConstructor extends CustomClassLoaderConstructor {
setPropertyUtils(propertyUtils);
}
private Method constructScalarMethod = null;
protected String constructScalarRefl(ScalarNode scalarNode) {
try {
if (constructScalarMethod == null) {
constructScalarMethod = BaseConstructor.class.getDeclaredMethod("constructScalar", ScalarNode.class);
}
return (String) constructScalarMethod.invoke(this, scalarNode);
} catch (NoSuchMethodException
| SecurityException
| IllegalAccessException
| IllegalArgumentException
| InvocationTargetException e) {
e.printStackTrace();
}
return null;
}
private class ConstructBukkitScalar extends ConstructScalar {
@Override
public Object construct(final Node node) {
if (node.getType().equals(Material.class)) {
final String val = (String) constructScalar((ScalarNode) node);
Material mat;
if (NumberUtil.isInt(val)) {
final int typeId = Integer.parseInt(val);
mat = Material.getMaterial(typeId);
} else {
mat = Material.matchMaterial(val);
}
return mat;
final String val = constructScalarRefl((ScalarNode) node);
return Material.matchMaterial(val);
}
if (node.getType().equals(MaterialData.class)) {
final String val = (String) constructScalar((ScalarNode) node);
final String val = constructScalarRefl((ScalarNode) node);
if (val.isEmpty()) {
return null;
}
@@ -54,13 +73,9 @@ public class BukkitConstructor extends CustomClassLoaderConstructor {
if (split.length == 0) {
return null;
}
Material mat;
if (NumberUtil.isInt(split[0])) {
final int typeId = Integer.parseInt(split[0]);
mat = Material.getMaterial(typeId);
} else {
mat = Material.matchMaterial(split[0]);
}
Material mat = Material.matchMaterial(split[0]);
if (mat == null) {
return null;
}
@@ -71,7 +86,7 @@ public class BukkitConstructor extends CustomClassLoaderConstructor {
return new MaterialData(mat, data);
}
if (node.getType().equals(ItemStack.class)) {
final String val = (String) constructScalar((ScalarNode) node);
final String val = constructScalarRefl((ScalarNode) node);
if (val.isEmpty()) {
return null;
}
@@ -83,13 +98,9 @@ public class BukkitConstructor extends CustomClassLoaderConstructor {
if (split2.length == 0) {
return null;
}
Material mat;
if (NumberUtil.isInt(split2[0])) {
final int typeId = Integer.parseInt(split2[0]);
mat = Material.getMaterial(typeId);
} else {
mat = Material.matchMaterial(split2[0]);
}
Material mat = Material.matchMaterial(split2[0]);
if (mat == null) {
return null;
}
@@ -108,13 +119,7 @@ public class BukkitConstructor extends CustomClassLoaderConstructor {
if (split3.length < 1) {
continue;
}
Enchantment enchantment;
if (NumberUtil.isInt(split3[0])) {
final int enchantId = Integer.parseInt(split3[0]);
enchantment = Enchantment.getById(enchantId);
} else {
enchantment = Enchantment.getByName(split3[0].toUpperCase(Locale.ENGLISH));
}
Enchantment enchantment = Enchantments.getByName(split3[0]);
if (enchantment == null) {
continue;
}
@@ -134,7 +139,7 @@ public class BukkitConstructor extends CustomClassLoaderConstructor {
return stack;
}
if (node.getType().equals(EnchantmentLevel.class)) {
final String val = (String) constructScalar((ScalarNode) node);
final String val = constructScalarRefl((ScalarNode) node);
if (val.isEmpty()) {
return null;
}
@@ -142,13 +147,7 @@ public class BukkitConstructor extends CustomClassLoaderConstructor {
if (split.length == 0) {
return null;
}
Enchantment enchant;
if (NumberUtil.isInt(split[0])) {
final int typeId = Integer.parseInt(split[0]);
enchant = Enchantment.getById(typeId);
} else {
enchant = Enchantment.getByName(split[0].toUpperCase(Locale.ENGLISH));
}
Enchantment enchant = Enchantments.getByName(split[0]);
if (enchant == null) {
return null;
}
@@ -169,6 +168,7 @@ public class BukkitConstructor extends CustomClassLoaderConstructor {
}
private class ConstructBukkitMapping extends ConstructMapping {
@Override
public Object construct(final Node node) {
if (node.getType().equals(Location.class)) {
@@ -181,25 +181,25 @@ public class BukkitConstructor extends CustomClassLoaderConstructor {
return null;
}
for (NodeTuple nodeTuple : mnode.getValue()) {
final String key = (String) constructScalar((ScalarNode) nodeTuple.getKeyNode());
final String key = constructScalarRefl((ScalarNode) nodeTuple.getKeyNode());
final ScalarNode snode = (ScalarNode) nodeTuple.getValueNode();
if (key.equalsIgnoreCase("world")) {
worldName = (String) constructScalar(snode);
worldName = constructScalarRefl(snode);
}
if (key.equalsIgnoreCase("x")) {
x = Double.parseDouble((String) constructScalar(snode));
x = Double.parseDouble(constructScalarRefl(snode));
}
if (key.equalsIgnoreCase("y")) {
y = Double.parseDouble((String) constructScalar(snode));
y = Double.parseDouble(constructScalarRefl(snode));
}
if (key.equalsIgnoreCase("z")) {
z = Double.parseDouble((String) constructScalar(snode));
z = Double.parseDouble(constructScalarRefl(snode));
}
if (key.equalsIgnoreCase("yaw")) {
yaw = Float.parseFloat((String) constructScalar(snode));
yaw = Float.parseFloat(constructScalarRefl(snode));
}
if (key.equalsIgnoreCase("pitch")) {
pitch = Float.parseFloat((String) constructScalar(snode));
pitch = Float.parseFloat(constructScalarRefl(snode));
}
}
if (worldName == null || worldName.isEmpty()) {
@@ -0,0 +1,81 @@
package com.earth2me.essentials.utils;
import org.bukkit.Material;
import org.bukkit.Statistic;
import java.lang.reflect.Field;
import java.util.HashSet;
import java.util.Set;
public class EnumUtil {
/**
* Returns the field matching the first provided enum name that exists within the given
* enum class.
*
* @param enumClass The class to search through
* @param names The names of the fields to search for
* @param <T> The enum to search through
* @return The first matching enum field
*/
public static <T extends Enum> T valueOf(Class<T> enumClass, String... names) {
for (String name : names) {
try {
Field enumField = enumClass.getDeclaredField(name);
if (enumField.isEnumConstant()) {
return (T) enumField.get(null);
}
} catch (NoSuchFieldException | IllegalAccessException ignored) {}
}
return null;
}
/**
* Return a set containing <b>all</b> fields of the given enum that maths one of the provided
* names.
*
* @param enumClass The class to search through
* @param names The names of the fields to search for
* @param <T> The enum to search through
* @return All matching enum fields
*/
public static <T extends Enum> Set<T> getAllMatching(Class<T> enumClass, String... names) {
Set<T> set = new HashSet<>();
for (String name : names) {
try {
Field enumField = enumClass.getDeclaredField(name);
if (enumField.isEnumConstant()) {
set.add((T) enumField.get(null));
}
} catch (NoSuchFieldException | IllegalAccessException ignored) {}
}
return set;
}
/**
* Gets the first Material field found from the given names.
*
* @param names The names of the fields to search for
* @return The first matching Material
*/
public static Material getMaterial(String... names) {
return valueOf(Material.class, names);
}
/**
* Gets the first Statistic field found from the given names.
*
* @param names The names of the fields to search for
* @return The first matching Statistic
*/
public static Statistic getStatistic(String... names) {
return valueOf(Statistic.class, names);
}
}
@@ -1,5 +1,6 @@
package com.earth2me.essentials.utils;
import com.earth2me.essentials.IEssentials;
import net.ess3.api.IUser;
import org.bukkit.GameMode;
import org.bukkit.Location;
@@ -13,9 +14,6 @@ import java.util.*;
import static com.earth2me.essentials.I18n.tl;
import com.earth2me.essentials.Essentials;
import com.earth2me.essentials.IEssentials;
public class LocationUtil {
// The player can stand inside these materials
@@ -24,147 +22,25 @@ public class LocationUtil {
static {
// Materials from Material.isTransparent()
HOLLOW_MATERIALS.add(Material.AIR);
HOLLOW_MATERIALS.add(Material.SAPLING);
HOLLOW_MATERIALS.add(Material.POWERED_RAIL);
HOLLOW_MATERIALS.add(Material.DETECTOR_RAIL);
HOLLOW_MATERIALS.add(Material.LONG_GRASS);
HOLLOW_MATERIALS.add(Material.DEAD_BUSH);
HOLLOW_MATERIALS.add(Material.YELLOW_FLOWER);
HOLLOW_MATERIALS.add(Material.RED_ROSE);
HOLLOW_MATERIALS.add(Material.BROWN_MUSHROOM);
HOLLOW_MATERIALS.add(Material.RED_MUSHROOM);
HOLLOW_MATERIALS.add(Material.TORCH);
HOLLOW_MATERIALS.add(Material.FIRE);
HOLLOW_MATERIALS.add(Material.REDSTONE_WIRE);
HOLLOW_MATERIALS.add(Material.CROPS);
HOLLOW_MATERIALS.add(Material.LADDER);
HOLLOW_MATERIALS.add(Material.RAILS);
HOLLOW_MATERIALS.add(Material.LEVER);
HOLLOW_MATERIALS.add(Material.REDSTONE_TORCH_OFF);
HOLLOW_MATERIALS.add(Material.REDSTONE_TORCH_ON);
HOLLOW_MATERIALS.add(Material.STONE_BUTTON);
HOLLOW_MATERIALS.add(Material.SNOW);
HOLLOW_MATERIALS.add(Material.SUGAR_CANE_BLOCK);
HOLLOW_MATERIALS.add(Material.PORTAL);
HOLLOW_MATERIALS.add(Material.DIODE_BLOCK_OFF);
HOLLOW_MATERIALS.add(Material.DIODE_BLOCK_ON);
HOLLOW_MATERIALS.add(Material.PUMPKIN_STEM);
HOLLOW_MATERIALS.add(Material.MELON_STEM);
HOLLOW_MATERIALS.add(Material.VINE);
HOLLOW_MATERIALS.add(Material.WATER_LILY);
HOLLOW_MATERIALS.add(Material.NETHER_WARTS);
HOLLOW_MATERIALS.add(Material.ENDER_PORTAL);
HOLLOW_MATERIALS.add(Material.COCOA);
HOLLOW_MATERIALS.add(Material.TRIPWIRE_HOOK);
HOLLOW_MATERIALS.add(Material.TRIPWIRE);
HOLLOW_MATERIALS.add(Material.FLOWER_POT);
HOLLOW_MATERIALS.add(Material.CARROT);
HOLLOW_MATERIALS.add(Material.POTATO);
HOLLOW_MATERIALS.add(Material.WOOD_BUTTON);
HOLLOW_MATERIALS.add(Material.SKULL);
HOLLOW_MATERIALS.add(Material.REDSTONE_COMPARATOR_OFF);
HOLLOW_MATERIALS.add(Material.REDSTONE_COMPARATOR_ON);
HOLLOW_MATERIALS.add(Material.ACTIVATOR_RAIL);
HOLLOW_MATERIALS.add(Material.CARPET);
HOLLOW_MATERIALS.add(Material.DOUBLE_PLANT);
// Additional Materials added in by Essentials
HOLLOW_MATERIALS.add(Material.SEEDS);
HOLLOW_MATERIALS.add(Material.SIGN_POST);
HOLLOW_MATERIALS.add(Material.WOODEN_DOOR);
HOLLOW_MATERIALS.add(Material.WALL_SIGN);
HOLLOW_MATERIALS.add(Material.STONE_PLATE);
HOLLOW_MATERIALS.add(Material.IRON_DOOR_BLOCK);
HOLLOW_MATERIALS.add(Material.WOOD_PLATE);
HOLLOW_MATERIALS.add(Material.FENCE_GATE);
for (Material mat : Material.values()) {
if (mat.isTransparent()) {
HOLLOW_MATERIALS.add(mat);
}
}
TRANSPARENT_MATERIALS.addAll(HOLLOW_MATERIALS);
TRANSPARENT_MATERIALS.add(Material.WATER);
TRANSPARENT_MATERIALS.add(Material.STATIONARY_WATER);
try {
TRANSPARENT_MATERIALS.add(Material.valueOf("FLOWING_WATER"));
} catch (Exception ignored) { // 1.13 WATER uses Levelled
}
}
public static final int RADIUS = 3;
public static final Vector3D[] VOLUME;
public static ItemStack convertBlockToItem(final Block block) {
final ItemStack is = new ItemStack(block.getType(), 1, (short) 0, block.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:
case IRON_FENCE:
case THIN_GLASS:
case TRAP_DOOR:
case FENCE:
case FENCE_GATE:
case NETHER_FENCE:
is.setDurability((short) 0);
break;
case FIRE:
return null;
case PUMPKIN_STEM:
is.setType(Material.PUMPKIN_SEEDS);
break;
case MELON_STEM:
is.setType(Material.MELON_SEEDS);
break;
}
return is;
return new ItemStack(block.getType(), 1);
}
@@ -200,15 +76,11 @@ public class LocationUtil {
@SuppressWarnings("deprecation")
public static Location getTarget(final LivingEntity entity) throws Exception {
Block block;
Block block = null;
try {
block = entity.getTargetBlock(TRANSPARENT_MATERIALS, 300);
} catch (NoSuchMethodError e) {
HashSet<Byte> legacyTransparent = new HashSet<>(); // Bukkit API prevents declaring as Set<Byte>
for (Material m : TRANSPARENT_MATERIALS) {
legacyTransparent.add((byte) m.getId());
}
block = entity.getTargetBlock(legacyTransparent, 300);
// failing now :(
}
if (block == null) {
throw new Exception("Not targeting a block");
@@ -217,14 +89,11 @@ public class LocationUtil {
}
static boolean isBlockAboveAir(final World world, final int x, final int y, final int z) {
if (y > world.getMaxHeight()) {
return true;
}
return HOLLOW_MATERIALS.contains(world.getBlockAt(x, y - 1, z).getType());
return y > world.getMaxHeight() || HOLLOW_MATERIALS.contains(world.getBlockAt(x, y - 1, z).getType());
}
public static boolean isBlockUnsafeForUser(final IUser user, final World world, final int x, final int y, final int z) {
if (user.getBase().isOnline() && world.equals(user.getBase().getWorld()) && (user.getBase().getGameMode() == GameMode.CREATIVE || user.isGodModeEnabled()) && user.getBase().getAllowFlight()) {
if (user.getBase().isOnline() && world.equals(user.getBase().getWorld()) && (user.getBase().getGameMode() == GameMode.CREATIVE || user.getBase().getGameMode() == GameMode.SPECTATOR || user.isGodModeEnabled()) && user.getBase().getAllowFlight()) {
return false;
}
@@ -235,26 +104,35 @@ public class LocationUtil {
}
public static boolean isBlockUnsafe(final World world, final int x, final int y, final int z) {
if (isBlockDamaging(world, x, y, z)) {
return true;
}
return isBlockAboveAir(world, x, y, z);
return isBlockDamaging(world, x, y, z) || isBlockAboveAir(world, x, y, z);
}
public static boolean isBlockDamaging(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) {
switch (below.getType()) {
case LAVA:
case FIRE:
return true;
}
if (MaterialUtil.isBed(below.getType())) {
return true;
}
if (below.getType() == Material.FIRE) {
return true;
}
if (below.getType() == Material.BED_BLOCK) {
return true;
}
if (world.getBlockAt(x, y, z).getType() == Material.PORTAL) {
try {
if (below.getType() == Material.valueOf("FLOWING_LAVA")) {
return true;
}
} catch (Exception ignored) { // 1.13 LAVA uses Levelled
}
Material PORTAL = EnumUtil.getMaterial("NETHER_PORTAL", "PORTAL");
if (world.getBlockAt(x, y, z).getType() == PORTAL) {
return true;
}
return (!HOLLOW_MATERIALS.contains(world.getBlockAt(x, y, z).getType())) || (!HOLLOW_MATERIALS.contains(world.getBlockAt(x, y + 1, z).getType()));
}
@@ -0,0 +1,100 @@
package com.earth2me.essentials.utils;
import org.bukkit.Material;
import java.util.Set;
public class MaterialUtil {
private static final Set<Material> BEDS;
private static final Set<Material> BANNERS;
private static final Set<Material> FIREWORKS;
private static final Set<Material> LEGACY_SKULLS;
private static final Set<Material> LEATHER_ARMOR;
private static final Set<Material> MOB_HEADS;
// includes TIPPED_ARROW which also has potion effects
private static final Set<Material> PLAYER_HEADS;
private static final Set<Material> POTIONS;
private static final Set<Material> SIGNS;
public static final Material SPAWNER = EnumUtil.getMaterial("MOB_SPAWNER", "SPAWNER");
static {
BEDS = EnumUtil.getAllMatching(Material.class, "BED", "WHITE_BED", "ORANGE_BED",
"MAGENTA_BED", "LIGHT_BLUE_BED", "YELLOW_BED", "LIME_BED", "PINK_BED", "GRAY_BED",
"LIGHT_GRAY_BED", "CYAN_BED", "PURPLE_BED", "BLUE_BED", "BROWN_BED", "GREEN_BED",
"RED_BED", "BLACK_BED");
BANNERS = EnumUtil.getAllMatching(Material.class, "BANNER", "WHITE_BANNER",
"ORANGE_BANNER", "MAGENTA_BANNER", "LIGHT_BLUE_BANNER", "YELLOW_BANNER", "LIME_BANNER",
"PINK_BANNER","GRAY_BANNER","LIGHT_GRAY_BANNER", "CYAN_BANNER", "PURPLE_BANNER",
"BLUE_BANNER", "BROWN_BANNER", "GREEN_BANNER", "RED_BANNER", "BLACK_BANNER", "SHIELD");
FIREWORKS = EnumUtil.getAllMatching(Material.class, "FIREWORK", "FIREWORK_ROCKET",
"FIREWORK_CHARGE", "FIREWORK_STAR");
LEATHER_ARMOR = EnumUtil.getAllMatching(Material.class, "LEATHER_HELMET",
"LEATHER_CHESTPLATE", "LEATHER_LEGGINGS", "LEATHER_BOOTS");
LEGACY_SKULLS = EnumUtil.getAllMatching(Material.class,"SKULL", "SKULL_ITEM");
MOB_HEADS = EnumUtil.getAllMatching(Material.class, "SKELETON_SKULL",
"SKELETON_WALL_SKULL", "WITHER_SKELETON_SKULL", "WITHER_SKELETON_WALL_SKULL",
"CREEPER_HEAD", "CREEPER_WALL_HEAD", "ZOMBIE_HEAD", "ZOMBIE_WALL_HEAD", "DRAGON_HEAD"
, "DRAGON_WALL_HEAD");
PLAYER_HEADS = EnumUtil.getAllMatching(Material.class, "PLAYER_HEAD", "PLAYER_WALL_HEAD");
POTIONS = EnumUtil.getAllMatching(Material.class, "POTION", "SPLASH_POTION",
"LINGERING_POTION", "TIPPED_ARROW");
SIGNS = EnumUtil.getAllMatching(Material.class, "SIGN", "SIGN_POST", "WALL_SIGN");
}
public static boolean isBed(Material material) {
return BEDS.contains(material);
}
public static boolean isBanner(Material material) {
return BANNERS.contains(material);
}
public static boolean isFirework(Material material) {
return FIREWORKS.contains(material);
}
public static boolean isLeatherArmor(Material material) {
return LEATHER_ARMOR.contains(material);
}
public static boolean isMobHead(Material material, int durability) {
if (MOB_HEADS.contains(material)) {
return true;
}
return LEGACY_SKULLS.contains(material) && (durability < 0 || durability != 3);
}
public static boolean isPlayerHead(Material material, int durability) {
if (PLAYER_HEADS.contains(material)) {
return true;
}
return LEGACY_SKULLS.contains(material) && durability == 3;
}
public static boolean isPotion(Material material) {
return POTIONS.contains(material);
}
public static boolean isSign(Material material) {
return SIGNS.contains(material);
}
public static boolean isSkull(Material material) {
return isPlayerHead(material, -1) || isMobHead(material, -1);
}
}
@@ -11,14 +11,14 @@ import java.util.Locale;
import static com.earth2me.essentials.I18n.tl;
public class NumberUtil {
static DecimalFormat twoDPlaces = new DecimalFormat("#,###.##");
static DecimalFormat currencyFormat = new DecimalFormat("#0.00", DecimalFormatSymbols.getInstance(Locale.US));
private static DecimalFormat twoDPlaces = new DecimalFormat("#,###.##");
private static DecimalFormat currencyFormat = new DecimalFormat("#0.00", DecimalFormatSymbols.getInstance(Locale.US));
// This field is likely to be modified in com.earth2me.essentials.Settings when loading currency format.
// This ensures that we can supply a constant formatting.
static final NumberFormat PRETTY_FORMAT = NumberFormat.getInstance(Locale.US);
private static NumberFormat PRETTY_FORMAT = NumberFormat.getInstance(Locale.US);
static {
twoDPlaces.setRoundingMode(RoundingMode.HALF_UP);
@@ -30,6 +30,11 @@ public class NumberUtil {
PRETTY_FORMAT.setMaximumFractionDigits(2);
}
// this method should only be called by Essentials
public static void internalSetPrettyFormat(NumberFormat prettyFormat) {
PRETTY_FORMAT = prettyFormat;
}
public static String shortCurrency(final BigDecimal value, final IEssentials ess) {
return ess.getSettings().getCurrencySymbol() + formatAsCurrency(value);
}
@@ -0,0 +1,141 @@
package com.earth2me.essentials.utils;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
import org.bukkit.Bukkit;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class VersionUtil {
public static final BukkitVersion v1_8_8_R01 = BukkitVersion.fromString("1.8.8-R0.1-SNAPSHOT");
public static final BukkitVersion v1_9_4_R01 = BukkitVersion.fromString("1.9.4-R0.1-SNAPSHOT");
public static final BukkitVersion v1_10_2_R01 = BukkitVersion.fromString("1.10.2-R0.1-SNAPSHOT");
public static final BukkitVersion v1_11_2_R01 = BukkitVersion.fromString("1.11.2-R0.1-SNAPSHOT");
public static final BukkitVersion v1_12_0_R01 = BukkitVersion.fromString("1.12.0-R0.1-SNAPSHOT");
public static final BukkitVersion v1_12_2_R01 = BukkitVersion.fromString("1.12.2-R0.1-SNAPSHOT");
public static final BukkitVersion v1_13_0_R01 = BukkitVersion.fromString("1.13.0-R0.1-SNAPSHOT");
public static final BukkitVersion v1_13_2_R01 = BukkitVersion.fromString("1.13.2-R0.1-SNAPSHOT");
private static final Set<BukkitVersion> supportedVersions = ImmutableSet.of(v1_8_8_R01, v1_9_4_R01, v1_10_2_R01, v1_11_2_R01, v1_12_2_R01, v1_13_2_R01);
public static BukkitVersion getServerBukkitVersion() {
return BukkitVersion.fromString(Bukkit.getServer().getBukkitVersion());
}
public static boolean isServerSupported() {
return supportedVersions.contains(getServerBukkitVersion());
}
public static class BukkitVersion implements Comparable<BukkitVersion> {
private static final Pattern VERSION_PATTERN = Pattern.compile("^(\\d+)\\.(\\d+)\\.?([0-9]*)-R([\\d.]+)(?:-SNAPSHOT)?");
private final int major;
private final int minor;
private final int patch;
private final double revision;
public static BukkitVersion fromString(String string) {
Preconditions.checkNotNull(string, "string cannot be null.");
Matcher matcher = VERSION_PATTERN.matcher(string);
if (!matcher.matches()) {
if (!Bukkit.getName().equals("Essentials Fake Server")) {
throw new IllegalArgumentException(string + " is not in valid version format. e.g. 1.8.8-R0.1");
}
matcher = VERSION_PATTERN.matcher(v1_13_2_R01.toString());
Preconditions.checkArgument(matcher.matches(), string + " is not in valid version format. e.g. 1.8.8-R0.1");
}
return new BukkitVersion(Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(2)), Integer.parseInt(matcher.group(3)), Double.parseDouble(matcher.group(4)));
}
private BukkitVersion(int major, int minor, int patch, double revision) {
this.major = major;
this.minor = minor;
this.patch = patch;
this.revision = revision;
}
public boolean isHigherThan(BukkitVersion o) {
return compareTo(o) > 0;
}
public boolean isHigherThanOrEqualTo(BukkitVersion o) {
return compareTo(o) >= 0;
}
public boolean isLowerThan(BukkitVersion o) {
return compareTo(o) < 0;
}
public boolean isLowerThanOrEqualTo(BukkitVersion o) {
return compareTo(o) <= 0;
}
public int getMajor() {
return major;
}
public int getMinor() {
return minor;
}
public int getPatch() {
return patch;
}
public double getRevision() {
return revision;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
BukkitVersion that = (BukkitVersion) o;
return major == that.major &&
minor == that.minor &&
patch == that.patch &&
revision == that.patch;
}
@Override
public int hashCode() {
return Objects.hashCode(major, minor, patch, revision);
}
@Override
public String toString() {
return major + "+" + minor + "+" + patch + "-R" + revision;
}
@Override
public int compareTo(BukkitVersion o) {
if (major < o.major) {
return -1;
} else if (major > o.major) {
return 1;
} else { // equal major
if (minor < o.minor) {
return -1;
} else if (minor > o.minor) {
return 1;
} else { // equal minor
if (patch < o.patch) {
return -1;
} else if (patch > o.patch) {
return 1;
} else { // equal patch
return Double.compare(revision, o.revision);
}
}
}
}
}
}
+28 -13
View File
@@ -36,6 +36,10 @@ max-nick-length: 15
# ie: "&6Notch" has 7 characters (2 are part of a color code), a length of 5 is used when this option is set to true
ignore-colors-in-max-nick-length: false
# When this option is enabled, display names for hidden users will not be shown. This prevents players from being
# able to see that they are online while vanished.
hide-displayname-in-vanish: true
# Disable this if you have any other plugin, that modifies the displayname of a user.
change-displayname: true
@@ -475,7 +479,7 @@ last-message-reply-recipient: true
# Default is 180 (3 minutes)
last-message-reply-recipient-timeout: 180
# Toggles whether or not right clicking mobs with a milk bucket turns them into a baby.
# Toggles whether or not clicking mobs with a milk bucket turns them into a baby.
milk-bucket-easter-egg: true
# Toggles whether or not the fly status message should be sent to players on join
@@ -522,6 +526,18 @@ default-enabled-confirm-commands:
#- pay
#- clearinventory
# Set the timeout, in seconds for players to accept a tpa before the request is cancelled.
# Set to 0 for no timeout.
tpa-accept-cancellation: 120
# Allow players to set hats by clicking on their helmet slot.
allow-direct-hat: true
# Allow in-game players to specify a world when running /broadcastworld.
# If false, running /broadcastworld in-game will always send a message to the player's current world.
# This doesn't affect running the command from the console, where a world is always required.
allow-world-in-broadcastworld: true
############################################################
# +------------------------------------------------------+ #
# | EssentialsHome | #
@@ -551,12 +567,12 @@ sethome-multiple:
# In this example someone with 'essentials.sethome.multiple' and 'essentials.sethome.multiple.vip' will have 5 homes.
# Remember, they MUST have both permission nodes in order to be able to set multiple homes.
# Set the timeout, in seconds for players to accept a tpa before the request is cancelled.
# Set to 0 for no timeout.
tpa-accept-cancellation: 120
# Allow players to set hats by clicking on their helmet slot.
allow-direct-hat: true
# Controls whether players need the permission "essentials.home.compass" in order to point
# the player's compass at their first home.
#
# Leaving this as false will retain Essentials' original behaviour, which is to always
# change the compass' direction to point towards their first home.
compass-towards-home-perm: false
############################################################
# +------------------------------------------------------+ #
@@ -805,20 +821,19 @@ protect:
warn-on-build-disallow: true
# For which block types would you like to be alerted?
# You can find a list of IDs in plugins/Essentials/items.csv after loading Essentials for the first time.
# 10 = lava :: 11 = still lava :: 46 = TNT :: 327 = lava bucket
# You can find a list of items at https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html.
alert:
on-placement: 10,11,46,327
on-use: 327
on-placement: LAVA,TNT,LAVA_BUCKET
on-use: LAVA_BUCKET
on-break:
blacklist:
# Which blocks should people be prevented from placing?
placement: 10,11,46,327
placement: LAVA,TNT,LAVA_BUCKET
# Which items should people be prevented from using?
usage: 327
usage: LAVA_BUCKET
# Which blocks should people be prevented from breaking?
break:
File diff suppressed because it is too large. Load diff
+15 -15
View File
@@ -1,9 +1,9 @@
# EssentialsX new Kit configuration.
# EssentialsX kit configuration.
# If you don't have any kits defined in this file, the plugin will try to copy them from the config.yml
# Note: All items MUST be followed by a quantity!
# All kit names should be lower case, and will be treated as lower in permissions/costs.
# Syntax: - itemID[:DataValue/Durability] Amount [Enchantment:Level].. [itemmeta:value]...
# Syntax: - name[:durability] amount [enchantment:level]... [itemmeta:value]...
# For Item Meta information visit http://wiki.ess3.net/wiki/Item_Meta
# 'delay' refers to the cooldown between how often you can use each kit, measured in seconds.
# Set delay to -1 for a one time kit.
@@ -12,28 +12,28 @@ kits:
tools:
delay: 10
items:
- 272 1
- 273 1
- 274 1
- 275 1
- stonesword 1
- stoneshovel 1
- stonepickaxe 1
- stoneaxe 1
dtools:
delay: 600
items:
- 278 1 efficiency:1 durability:1 fortune:1 name:&4Gigadrill lore:The_drill_that_&npierces|the_heavens
- 277 1 digspeed:3 name:Dwarf lore:Diggy|Diggy|Hole
- 298 1 color:255,255,255 name:Top_Hat lore:Good_day,_Good_day
- 279:780 1
- dpickaxe 1 efficiency:1 durability:1 fortune:1 name:&4Gigadrill lore:The_drill_that_&npierces|the_heavens
- dshovel 1 digspeed:3 name:Dwarf lore:Diggy|Diggy|Hole
- lhelm 1 color:255,255,255 name:Top_Hat lore:Good_day,_Good_day
- daxe:780 1
notch:
delay: 6000
items:
- 397:3 1 player:Notch
- playerhead 1 player:Notch
color:
delay: 6000
items:
- 387 1 title:&4Book_&9o_&6Colors author:KHobbits lore:Ingame_color_codes book:Colors
- writtenbook 1 title:&4Book_&9o_&6Colors author:KHobbits lore:Ingame_color_codes book:Colors
firework:
delay: 6000
items:
- 401 1 name:Angry_Creeper color:red fade:green type:creeper power:1
- 401 1 name:Starry_Night color:yellow,orange fade:blue type:star effect:trail,twinkle power:1
- 401 2 name:Solar_Wind color:yellow,orange fade:red shape:large effect:twinkle color:yellow,orange fade:red shape:ball effect:trail color:red,purple fade:pink shape:star effect:trail power:1
- fireworkrocket 1 name:Angry_Creeper color:red fade:green type:creeper power:1
- fireworkrocket 1 name:Starry_Night color:yellow,orange fade:blue type:star effect:trail,twinkle power:1
- fireworkrocket 2 name:Solar_Wind color:yellow,orange fade:red shape:large effect:twinkle color:yellow,orange fade:red shape:ball effect:trail color:red,purple fade:pink shape:star effect:trail power:1
+18 -2
View File
@@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74Could not find template {0}
createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2}
createKitFailed=\u00a74Error occurred whilst creating kit {0}.
createKitSeparator=\u00a7m-----------------------
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml.
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml.
creatingConfigFromTemplate=Creating config from template\: {0}
creatingEmptyConfig=Creating empty config\: {0}
creative=creative
@@ -106,6 +106,7 @@ dontMoveMessage=\u00a76Teleportation will commence in\u00a7c {0}\u00a76. Don''t
downloadingGeoIp=Downloading GeoIP database... this might take a while (country\: 1.7 MB, city\: 30MB)
duplicatedUserdata=Duplicated userdata\: {0} and {1}.
durability=\u00a76This tool has \u00a7c{0}\u00a76 uses left.
east=E
editBookContents=\u00a7eYou may now edit the contents of this book.
enabled=enabled
enableUnlimited=\u00a76Giving unlimited amount of\u00a7c {0} \u00a76to \u00a7c{1}\u00a76.
@@ -208,6 +209,7 @@ inventoryClearingFromAll=\u00a76Clearing the inventory of all users...
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
is=is
isIpBanned=\u00a76IP \u00a7c{0} \u00a76is banned.
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
itemCannotBeSold=\u00a74That item cannot be sold to the server.
itemMustBeStacked=\u00a74Item must be traded in stacks. A quantity of 2s would be two stacks, etc.
itemNames=\u00a76Item short names\:\u00a7r {0}
@@ -221,7 +223,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
itemSold=\u00a7aSold for \u00a7c{0} \u00a7a({1} {2} at {3} each).
itemSoldConsole=\u00a7a{0} \u00a7asold {1} for \u00a7a{2} \u00a7a({3} items at {4} each).
itemSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1}
itemType=\u00a76Item\:\u00a7c {0} \u00a76-\u00a7c {1}
itemType=\u00a76Item\:\u00a7c {0}
jailAlreadyIncarcerated=\u00a74Person is already in jail\:\u00a7c {0}
jailList=\u00a76Jails\:\u00a7r {0}
jailMessage=\u00a74You do the crime, you do the time.
@@ -322,6 +324,9 @@ noAccessPermission=\u00a74You do not have permission to access that \u00a7c{0}\u
noBreakBedrock=\u00a74You are not allowed to destroy bedrock.
noDestroyPermission=\u00a74You do not have permission to destroy that \u00a7c{0}\u00a74.
noDurability=\u00a74This item does not have a durability.
northEast=NE
north=N
northWest=NW
noGodWorldWarning=\u00a74Warning\! God mode in this world disabled.
noHelpFound=\u00a74No matching commands.
noHomeSetPlayer=\u00a76Player has not set a home.
@@ -423,6 +428,7 @@ pWeatherSet=\u00a76Player weather is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}.
questionFormat=\u00a72[Question]\u00a7r {0}
radiusTooBig=\u00a74Radius is too big\! Maximum radius is {0}.
readNextPage=\u00a76Type\u00a7c /{0} {1} \u00a76to read the next page.
realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1}
recentlyForeverAlone=\u00a74{0} recently went offline.
recipe=\u00a76Recipe for \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 of \u00a7c{2}\u00a76)
recipeBadIndex=There is no recipe by that number.
@@ -461,6 +467,7 @@ sellBulkPermission=\u00a76You do not have permission to bulk sell.
sellHandPermission=\u00a76You do not have permission to hand sell.
serverFull=Server is full\!
serverTotal=\u00a76Server Total\:\u00a7c {0}
serverUnsupported=\u00a7cYou are running an unsupported server version!
setBal=\u00a7aYour balance was set to {0}.
setBalOthers=\u00a7aYou set {0}\u00a7a''s balance to {1}.
setSpawner=\u00a76Changed spawner type to\u00a7c {0}\u00a76.
@@ -471,6 +478,9 @@ signFormatSuccess=\u00a71[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=\u00a74You are not allowed to create sign here.
similarWarpExist=\u00a74A warp with a similar name already exists.
southEast=SE
south=S
southWest=SW
skullChanged=\u00a76Skull changed to \u00a7c{0}\u00a76.
slimeMalformedSize=\u00a74Malformed size.
socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1}
@@ -560,6 +570,11 @@ userUnknown=\u00a74Warning\: The user ''\u00a7c{0}\u00a74'' has never joined thi
usingTempFolderForTesting=Using temp folder for testing\:
vanish=\u00a76Vanish for {0}\u00a76\: {1}
vanished=\u00a76You are now completely invisible to normal users, and hidden from in-game commands.
versionOutputVaultMissing=\u00a74Vault is not installed. Chat and permissions may not work.
versionOutputFine=\u00a76{0} version: \u00a7a{1}
versionOutputWarn=\u00a76{0} version: \u00a7c{1}
versionOutputUnsupported=\u00a7d{0} \u00a76version: \u00a7d{1}
versionOutputUnsupportedPlugins=\u00a76You are running \u00a7dunsupported plugins\u00a76!
versionMismatch=\u00a74Version mismatch\! Please update {0} to the same version.
versionMismatchAll=\u00a74Version mismatch\! Please update all Essentials jars to the same version.
voiceSilenced=\u00a76Your voice has been silenced\!
@@ -579,6 +594,7 @@ weatherStorm=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0}\u00
weatherStormFor=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0} \u00a76for {1} seconds.
weatherSun=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0}\u00a76.
weatherSunFor=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0} \u00a76for {1} seconds.
west=W
whoisAFK=\u00a76 - AFK\:\u00a7r {0}
whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1})
whoisBanned=\u00a76 - Banned\:\u00a7r {0}
+12 -2
View File
@@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74Nelze najit sablonu {0}
createdKit=\u00a76Kit vytvoren \u00a7c{0} \u00a76s \u00a7c{1} \u00a76vecmi a spozdenim \u00a7c{2}
createKitFailed=\u00a74Chyba pri vytvareni kitu {0}.
createKitSeparator=\u00a7m-----------------------
createKitSuccess=\u00a76Kit vytvoren: \u00a7f{0}\n\u00a76Spozdeni: \u00a7f{1}\n\u00a76Odkaz: \u00a7f{2}\n\u00a76Zkopiruj obsah na odkazu do config.yml.
createKitSuccess=\u00a76Kit vytvoren: \u00a7f{0}\n\u00a76Spozdeni: \u00a7f{1}\n\u00a76Odkaz: \u00a7f{2}\n\u00a76Zkopiruj obsah na odkazu do kits.yml.
creatingConfigFromTemplate=Vytvarim config ze sablony\: {0}
creatingEmptyConfig=Vytvarim prazdny config\: {0}
creative=Creative
@@ -106,6 +106,7 @@ dontMoveMessage=\u00a76Teleport bude zahajen za\u00a7c {0}\u00a76. Nehybej se.
downloadingGeoIp=Stahuji GeoIP databazi ... muze to chvilku trvat (staty\: 1.7 MB, mesta\: 30MB)
duplicatedUserdata=Duplicitni uzivatelska data\: {0} a {1}.
durability=\u00a76Tomuto nastroji zbyva \u00a7c{0}\u00a76 pouziti.
east=E
editBookContents=\u00a7eNyni muzes upravovat obsah teto knihy.
enabled=povoleno
enableUnlimited=\u00a76Davam neomezene mnozstvi\u00a7c {0} \u00a76na \u00a7c{1}\u00a76.
@@ -208,6 +209,7 @@ inventoryClearingFromAll=\u00a76Promazavam inventare vsech harcu...
inventoryClearingStack=\u00a76Odstraneno\u00a7c {0}\u00a76z \u00a7c{1} \u00a76od \u00a7c{2}\u00a76.
is=je
isIpBanned=\u00a76IP \u00a7c{0} \u00a76je zabanovana.
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
itemCannotBeSold=\u00a74Tento predmet nelze prodat serveru.
itemMustBeStacked=\u00a74Predmety musi byt vymeneny ve stacku.
itemNames=\u00a76Zkracene nazvy predmetu\:\u00a7r {0}
@@ -221,7 +223,7 @@ itemsNotConverted=\u00a74Nemas zadne predmety ktere lze prevest na bloky.
itemSold=\u00a7aProdano za \u00a7c{0} \u00a7a({1} {2} za cenu {3} kus)
itemSoldConsole=\u00a7a{0} \u00a7aProdano {1} za \u00a7a{2} \u00a7a({3} za cenu {4} kus).
itemSpawn=\u00a76Davam\u00a7c {0}\u00a7c {1}
itemType=\u00a76Predmet\:\u00a7c {0} \u00a76-\u00a7c {1}
itemType=\u00a76Predmet\:\u00a7c {0}
jailAlreadyIncarcerated=\u00a74Tento hrace ja jiz uveznen\:\u00a7c {0}
jailList=\u00a76Jails\:\u00a7r {0}
jailMessage=\u00a74Porusil jsi pravidla, ted si to odsedis\!
@@ -322,6 +324,9 @@ noAccessPermission=\u00a74Nemas opravneni k \u00a7c{0}\u00a74.
noBreakBedrock=\u00a74Nemas opravneni nicit bedrock.
noDestroyPermission=\u00a74Nemas opravneni nicit \u00a7c{0}\u00a74.
noDurability=\u00a74Tento predmet nema zadnou vydrz.
northEast=NE
north=N
northWest=NW
noGodWorldWarning=\u00a74Varovani\! God-mode je v tomto svete zakazan.
noHelpFound=\u00a74Zadne shodne prikazy.
noHomeSetPlayer=\u00a76Hrac nema nastaveny domov.
@@ -423,6 +428,7 @@ pWeatherSet=\u00a76Pocasi hrace\u00a7c {1} \u00a76bylo nastaveno na\u00a7c {0}\u
questionFormat=\u00a72[Otazka]\u00a7f {0}
radiusTooBig=\u00a74Polomer je prilis velky\! Maximalni polomer je \u00a7c{0} bloku\u00a74.
readNextPage=\u00a76Napis\u00a7c /{0} {1} \u00a76pro precteni dalsi stranky.
realName=\u00a7f{0}\u00a7r\u00a76 je \u00a7f{1}
recentlyForeverAlone=\u00a74{0} v posledni dobe offline.
recipe=\u00a76Vypis receptu \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 z \u00a7c{2}\u00a76)
recipeBadIndex=Pro toto cislo neexistuje zadny recept.
@@ -471,6 +477,9 @@ signFormatSuccess=\u00a71[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=\u00a74Nemas opravneni zde vytvaret cedule.
similarWarpExist=\u00a74Warp s podobnym jmenem jiz existuje.
southEast=SE
south=S
southWest=SW
skullChanged=\u00a76Hlava zmenena na \u00a7c{0}\u00a76.
slimeMalformedSize=\u00a74Velikost zmenena.
socialSpy=\u00a76SocialSpy hrace \u00a7c{0}\u00a76\: \u00a7c{1}
@@ -579,6 +588,7 @@ weatherStorm=\u00a76Nastavil jsi \u00a7cbourku\u00a76 v \u00a7c{0}\u00a76.
weatherStormFor=\u00a76Nastavil jsi \u00a7cbourku\u00a76 v \u00a7c{0} \u00a76na \u00a7c{1} sekund\u00a76.
weatherSun=\u00a76Nastavil jsi slunecne pocasi v \u00a7c{0}\u00a76.
weatherSunFor=\u00a76Nastavil jsi slunecne pocasi v \u00a7c{0} \u00a76na \u00a7c{1} sekund\u00a76.
west=W
whoisAFK=\u00a76 - AFK\:\u00a7r {0}
whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Od {1})
whoisBanned=\u00a76 - Zabanovan\:\u00a7r {0}
+13 -3
View File
@@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74Kunne ikke finde skabelon {0}
createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2}
createKitFailed=\u00a74Error occurred whilst creating kit {0}.
createKitSeparator=\u00a7m-----------------------
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml.
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml.
creatingConfigFromTemplate=Opretter konfig fra skabelon\: {0}
creatingEmptyConfig=Opretter tom konfig\: {0}
creative=kreativ
@@ -106,6 +106,7 @@ dontMoveMessage=\u00a76Teleportering vil begynde om\u00a7c {0}\u00a76. Bliv st\u
downloadingGeoIp=Downloader GeoIP database... dette tager m\u00e5ske noget tid (land\: 1.7 MB, by\: 30MB)
duplicatedUserdata=Duplikerede brugerdata\: {0} og {1}.
durability=\u00a76Dette v\u00e6rkt\u00f8j har \u00a7c{0}\u00a76 anvendelser tilbage.
east=E
editBookContents=\u00a7eDu kan nu \u00e6ndre denne bogs indhold.
enabled=aktiveret
enableUnlimited=\u00a76Giver et ubegr\u00e6nset antal af\u00a7c {0} \u00a76til \u00a7c{1}\u00a76.
@@ -201,13 +202,14 @@ invalidSkull=\u00a74Hold venligst et spillerkranie.
invalidWarpName=\u00a74Ugyldigt warp navn.
invalidWorld=\u00a74Ugyldig verden.
inventoryClearFail=\u00a74Spilleren {0} \u00a74har ikke\u00a7c {1} \u00a74af\u00a7c {2}\u00a74.
inventoryClearingAllArmor=\u00a76Rydede alle inventar-elementer og armor fra{0}\u00a76.
inventoryClearingAllArmor=\u00a76Rydede alle inventar-elementer og armor fra{0}\u00a76.
inventoryClearingAllItems=\u00a76Ryddede alle inventar-elementer fra {0}\u00a76.
inventoryClearingAllStack=\u00a76Ryddede alle\u00a7c {0} \u00a76fra {1}\u00a76.
inventoryClearingFromAll=\u00a76Rydder alle spilleres inventar...
inventoryClearingStack=\u00a76Fjernede\u00a7c {0} \u00a76af\u00a7c {1} \u00a76fra {2}\u00a76.
is=er
isIpBanned=\u00a76IP \u00a7c{0} \u00a76er banlyst.
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
itemCannotBeSold=\u00a74Det element kan ikke s\u00e6lges til serveren.
itemMustBeStacked=\u00a74Elementet skal forhandles i form at stakke. En m\u00e6ngde af 2s vil v\u00e6re 2 stakke, osv.
itemNames=\u00a76Elementforkortelser\:\u00a7r {0}
@@ -221,7 +223,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
itemSold=\u00a7aSolgt for \u00a7c{0} \u00a7a({1} {2} for {3} hver).
itemSoldConsole=\u00a7a{0} \u00a7asolgt {1} for \u00a7a{2} \u00a7a({3} elementer for {4} hver).
itemSpawn=\u00a76Giver\u00a7c {0} \u00a76af\u00a7c {1}
itemType=\u00a76Element\:\u00a7c {0} \u00a76-\u00a7c {1}
itemType=\u00a76Element\:\u00a7c {0}
jailAlreadyIncarcerated=\u00a74Spilleren er allerede i f\u00e6ngsel\:\u00a7c {0}
jailList=\u00a76Jails\:\u00a7r {0}
jailMessage=\u00a7cDu bryder reglerne, du tager straffen.
@@ -322,6 +324,9 @@ noAccessPermission=\u00a74Du har ikke tilladelse til at bruge den \u00a7c{0}\u00
noBreakBedrock=\u00a74Du er ikke tilladt at \u00f8del\u00e6gge bedrock.
noDestroyPermission=\u00a74Du har ikke tilladelse til at \u00f8del\u00e6gge den \u00a7c{0}\u00a74.
noDurability=\u00a74Dette element har ingen holdbarhed.
northEast=NE
north=N
northWest=NW
noGodWorldWarning=\u00a74Advarsel\! Gud-tilstand er deaktiveret i denne verden.
noHelpFound=\u00a74Ingen matchende kommandoer.
noHomeSetPlayer=\u00a76Spilleren har ikke sat et hjem.
@@ -435,6 +440,7 @@ recipeNothing=intet
recipeShapeless=\u00a76Kombiner \u00a7c{0}
recipeWhere=\u00a76Hvor\: {0}
removed=\u00a76Fjernede\u00a7c {0} \u00a76enheder.
realName=\u00a7f{0}\u00a7r\u00a76 er \u00a7f{1}
repair=\u00a76Du har succesfuldt repareret din\: \u00a7c{0}\u00a76.
repairAlreadyFixed=\u00a74Dette element beh\u00f8ver ikke reparation.
repairEnchanted=\u00a74Du har ikke tilladelse til at reparere fortryllede elementer.
@@ -471,6 +477,9 @@ signFormatSuccess=\u00a71[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=\u00a74Du har ikke tilladelse til at lave et skilt her.
similarWarpExist=\u00a74Et warp med et lignende navn eksisterer allerede.
southEast=SE
south=S
southWest=SW
skullChanged=\u00a76Kranie \u00e6ndret til \u00a7c{0}\u00a76.
slimeMalformedSize=\u00a74Forkert udformet st\u00f8rrelse.
socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1}
@@ -579,6 +588,7 @@ weatherStorm=\u00a76Du \u00e6ndrede vejret til \u00a7cstorm\u00a76 i\u00a7c {0}\
weatherStormFor=\u00a76Du \u00e6ndrede vejret til \u00a7cstorm\u00a76 i\u00a7c {0} \u00a76i {1} sekunder.
weatherSun=\u00a76Du \u00e6ndrede vejret til \u00a7csolrigt\u00a76 i\u00a7c {0}\u00a76.
weatherSunFor=\u00a76Du \u00e6ndrede vejret til \u00a7csolrigt\u00a76 i\u00a7c {0} \u00a76i {1} sekunder.
west=W
whoisAFK=\u00a76 - AFK\:\u00a7r {0}
whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1})
whoisBanned=\u00a76 - Banlyst\:\u00a7r {0}
+12 -2
View File
@@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74Vorlage {0} konnte nicht gefunden werden.
createdKit=\u00a76Kit \u00a7c{0} \u00a76erstellt mit \u00a7c{1} \u00a76Eintr\u00E4gen und Verz\u00F6gerung \u00a7c{2}
createKitFailed=\u00a74Beim Erstellen des Kits ist ein Fehler aufgetreten {0}.
createKitSeparator=\u00a7m-----------------------
createKitSuccess=\u00a76Erstelltes Kit: \u00a7f{0}\n\u00a76Verz\u00F6gerung: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Kopiere Inhalte aus dem oben stehenden Link in deine config.yml.
createKitSuccess=\u00a76Erstelltes Kit: \u00a7f{0}\n\u00a76Verz\u00F6gerung: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Kopiere Inhalte aus dem oben stehenden Link in deine kits.yml.
creatingConfigFromTemplate=Erstelle Konfiguration aus Vorlage\: {0}
creatingEmptyConfig=Erstelle leere Konfiguration\: {0}
creative=Kreativmodus
@@ -106,6 +106,7 @@ dontMoveMessage=\u00a76Teleportvorgang startet in {0}. Bewege dich nicht.
downloadingGeoIp=Lade GeoIP-Datenbank ... dies kann etwas dauern (country\: 1.7 MB, city\: 30MB)
duplicatedUserdata=Doppelte Datei in userdata\: {0} und {1}.
durability=\u00a76Dieses Werkzeug kann noch \u00a7c{0}\u00a76 mal benutzt werden.
east=E
editBookContents=\u00a7eDu darfst jetzt den Inhalt dieses Buches bearbeiten.
enabled=aktiviert
enableUnlimited=\u00a76Gebe \u00a7c{1}\u00a76. unendlichen einen Stack\u00a7c {0} \u00a76.
@@ -208,6 +209,7 @@ inventoryClearingFromAll=\u00a76Leere das Inventar aller Spieler...
inventoryClearingStack=\u00a7c {0} {1} \u00a76von {2} \u00a76entfernt.
is=ist
isIpBanned=\u00a76IP \u00a7c{0} \u00a76wurde gesperrt.
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
itemCannotBeSold=\u00a74Dieser Gegenstand kann nicht verkauft werden.
itemMustBeStacked=\u00a74Gegenstand muss als Stapel verkauft werden. Eine Anzahl von 2s verkauft 2 Stapel, usw.
itemNames=\u00a76Kurze Gegenstandsnamen\:\u00a7r {0}
@@ -221,7 +223,7 @@ itemsNotConverted=\u00a74Du hast keine Items die in Bl\u00f6cke konvertiert werd
itemSold=\u00a7aVerkauft f\u00fcr \u00a7c{0}\u00a7a ({1} {2} Einheiten je {3})
itemSoldConsole=\u00a7a{0} $averkauft {1} f\u00fcr \u00a7a{2} \u00a7a({3} Einheiten je {4})
itemSpawn=\u00a76Gebe\u00a7c {0}\u00a76x\u00a7c {1}
itemType=\u00a76Gegenstand\:\u00a7c {0} \u00a76-\u00a7c {1}
itemType=\u00a76Gegenstand\:\u00a7c {0}
jailAlreadyIncarcerated=\u00a74Spieler ist bereits im Gef\u00e4ngnis\:\u00a7c {0}
jailList=\u00a76Jails\:\u00a7r {0}
jailMessage=\u00a74Du hast ein Verbrechen begangen, also musst du deine Zeit absitzen.
@@ -322,6 +324,9 @@ noAccessPermission=\u00a74Du hast keine Rechte, um dies zu betreten \u00a7c{0}\u
noBreakBedrock=\u00a74Du darfst Grundgestein nicht zerst\u00f6ren.
noDestroyPermission=\u00a74Du hast keine Rechte, um dies zu zerst\u00f6ren \u00a7c{0}\u00a74.
noDurability=\u00a74Dieser Gegenstand hat keine Haltbarkeit.
northEast=NE
north=N
northWest=NW
noGodWorldWarning=\u00a74Warnung\! Unsterblichkeitsmodus ist in dieser Welt deaktiviert.
noHelpFound=\u00a74Keine \u00fcbereinstimmenden Befehle.
noHomeSetPlayer=\u00a76Spieler hat kein Zuhause gesetzt.
@@ -423,6 +428,7 @@ pWeatherSet=\u00a76Spielerwetter gesetzt auf \u00a7c{0}\u00a76 f\u00fcr\: \u00a7
questionFormat=\u00a72[Frage]\u00a7r {0}
radiusTooBig=\u00a74Radius ist zu gro\u00df\! Maximaler Radius ist {0}.
readNextPage=\u00a76Tippe\u00a7c /{0} {1} \u00a76f\u00fcr die n\u00e4chste Seite.
realName=\u00a7f{0}\u00a7r\u00a76 ist \u00a7f{1}
recentlyForeverAlone=\u00a74{0} ging vor Kurzem offline.
recipe=\u00a76Rezept f\u00fcr \u00a7c{0}\u00a75 (\u00a7c{1}\u00a76 von \u00a7c{2}\u00a76)
recipeBadIndex=Es gibt kein Rezept mit dieser Nummer.
@@ -471,6 +477,9 @@ signFormatSuccess=\u00a71[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=\u00a74Du hast keine Rechte ein Schild hier zu setzen.
similarWarpExist=\u00a74Ein Warp-Punkt mit einem \u00e4hnlichen Namen existiert bereits.
southEast=SE
south=S
southWest=SW
skullChanged=\u00a76Kopf zu \u00a7c{0} \u00a76ge\u00e4ndert.
slimeMalformedSize=\u00a74Ung\u00fcltige Gr\u00f6\u00dfe.
socialSpy=\u00a76SocialSpy f\u00fcr \u00a7c{0}\u00a76\ \u00a7c{1}\u00a76.
@@ -579,6 +588,7 @@ weatherStorm=\u00a76In \u00a7c{0} \u00a76st\u00fcrmt es nun.
weatherStormFor=\u00a76In \u00a7c{0} \u00a76st\u00fcrmt es nun f\u00fcr {1} Sekunden.
weatherSun=\u00a76In \u00a7c{0}\u00a76 scheint nun die \u00a7cSonne\u00a76.
weatherSunFor=\u00a76In \u00a7c{0} \u00a76scheint nun f\u00fcr {1} Sekunden die \u00a7cSonne\u00a76.
west=W
whoisAFK=\u00a76 - Abwesend\:\u00a7r {0}
whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Seit {1})
whoisBanned=\u00a76 - Gebannt\:\u00a7r {0}
+13 -2
View File
@@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74Could not find template {0}
createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2}
createKitFailed=\u00a74Error occurred whilst creating kit {0}.
createKitSeparator=\u00a7m-----------------------
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml.
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml.
creatingConfigFromTemplate=Creating config from template\: {0}
creatingEmptyConfig=Creating empty config\: {0}
creative=creative
@@ -106,6 +106,7 @@ dontMoveMessage=\u00a76Teleportation will commence in\u00a7c {0}\u00a76. Don''t
downloadingGeoIp=Downloading GeoIP database... this might take a while (country\: 1.7 MB, city\: 30MB)
duplicatedUserdata=Duplicated userdata\: {0} and {1}.
durability=\u00a76This tool has \u00a7c{0}\u00a76 uses left.
east=E
editBookContents=\u00a7eYou may now edit the contents of this book.
enabled=enabled
enableUnlimited=\u00a76Giving unlimited amount of\u00a7c {0} \u00a76to \u00a7c{1}\u00a76.
@@ -208,6 +209,7 @@ inventoryClearingFromAll=\u00a76Clearing the inventory of all users...
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
is=is
isIpBanned=\u00a76IP \u00a7c{0} \u00a76is banned.
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
itemCannotBeSold=\u00a74That item cannot be sold to the server.
itemMustBeStacked=\u00a74Item must be traded in stacks. A quantity of 2s would be two stacks, etc.
itemNames=\u00a76Item short names\:\u00a7r {0}
@@ -221,7 +223,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
itemSold=\u00a7aSold for \u00a7c{0} \u00a7a({1} {2} at {3} each).
itemSoldConsole=\u00a7a{0} \u00a7asold {1} for \u00a7a{2} \u00a7a({3} items at {4} each).
itemSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1}
itemType=\u00a76Item\:\u00a7c {0} \u00a76-\u00a7c {1}
itemType=\u00a76Item\:\u00a7c {0}
jailAlreadyIncarcerated=\u00a74Person is already in jail\:\u00a7c {0}
jailList=\u00a76Jails\:\u00a7r {0}
jailMessage=\u00a74You do the crime, you do the time.
@@ -322,6 +324,9 @@ noAccessPermission=\u00a74You do not have permission to access that \u00a7c{0}\u
noBreakBedrock=\u00a74You are not allowed to destroy bedrock.
noDestroyPermission=\u00a74You do not have permission to destroy that \u00a7c{0}\u00a74.
noDurability=\u00a74This item does not have a durability.
northEast=NE
north=N
northWest=NW
noGodWorldWarning=\u00a74Warning\! God mode in this world disabled.
noHelpFound=\u00a74No matching commands.
noHomeSetPlayer=\u00a76Player has not set a home.
@@ -423,6 +428,7 @@ pWeatherSet=\u00a76Player weather is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}.
questionFormat=\u00a72[Question]\u00a7r {0}
radiusTooBig=\u00a74Radius is too big\! Maximum radius is {0}.
readNextPage=\u00a76Type\u00a7c /{0} {1} \u00a76to read the next page.
realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1}
recentlyForeverAlone=\u00a74{0} recently went offline.
recipe=\u00a76Recipe for \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 of \u00a7c{2}\u00a76)
recipeBadIndex=There is no recipe by that number.
@@ -461,6 +467,7 @@ sellBulkPermission=\u00a76You do not have permission to bulk sell.
sellHandPermission=\u00a76You do not have permission to hand sell.
serverFull=Server is full\!
serverTotal=\u00a76Server Total\:\u00a7c {0}
serverUnsupported=\u00a76You are running an \u00a74unsupported server version\u00a76.
setBal=\u00a7aYour balance was set to {0}.
setBalOthers=\u00a7aYou set {0}\u00a7a''s balance to {1}.
setSpawner=\u00a76Changed spawner type to\u00a7c {0}\u00a76.
@@ -471,6 +478,9 @@ signFormatSuccess=\u00a71[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=\u00a74You are not allowed to create sign here.
similarWarpExist=\u00a74A warp with a similar name already exists.
southEast=SE
south=S
southWest=SW
skullChanged=\u00a76Skull changed to \u00a7c{0}\u00a76.
slimeMalformedSize=\u00a74Malformed size.
socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1}
@@ -579,6 +589,7 @@ weatherStorm=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0}\u00
weatherStormFor=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0} \u00a76for {1} seconds.
weatherSun=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0}\u00a76.
weatherSunFor=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0} \u00a76for {1} seconds.
west=W
whoisAFK=\u00a76 - AFK\:\u00a7r {0}
whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1})
whoisBanned=\u00a76 - Banned\:\u00a7r {0}
+619
View File
@@ -0,0 +1,619 @@
#X-Generator: crowdin.net
#version: ${full.version}
# Single quotes have to be doubled: ''
# Translations start here
# by:
action=\u00a75* {0} \u00a75{1}
addedToAccount=\u00a7a{0} has been added to your account.
addedToOthersAccount=\u00a7a{0} added to {1}\u00a7a account. New balance\: {2}
adventure=adventure
alertBroke=broke\:
alertFormat=\u00a73[{0}] \u00a7r {1} \u00a76 {2} at\: {3}
alertPlaced=placed\:
alertUsed=used\:
alphaNames=\u00a74Player names can only contain letters, numbers and underscores.
antiBuildBreak=\u00a74You are not permitted to break\u00a7c {0} \u00a74blocks here.
antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
antiBuildInteract=\u00a74You are not permitted to interact with\u00a7c {0}\u00a74.
antiBuildPlace=\u00a74You are not permitted to place\u00a7c {0} \u00a74here.
antiBuildUse=\u00a74You are not permitted to use\u00a7c {0}\u00a74.
autoAfkKickReason=You have been kicked for idling more than {0} minutes.
backAfterDeath=\u00a76Use the /back command to return to your death point.
backupDisabled=\u00a74An external backup script has not been configured.
backupFinished=\u00a76Backup finished.
backupStarted=\u00a76Backup started.
backUsageMsg=\u00a76Returning to previous location.
balance=\u00a7aBalance\:\u00a7c {0}
balanceOther=\u00a7aBalance of {0}\u00a7a\:\u00a7c {1}
balanceTop=\u00a76Top balances ({0})
banExempt=\u00a74You cannot ban that player.
banExemptOffline=\u00a74You may not ban offline players.
banFormat=\u00a7cYou have been banned\:\n\u00a7r{0}
banIpJoin=Your IP address is banned from this server. Reason: {0}
banJoin=You are banned from this server. Reason: {0}
bed=\u00a7obed\u00a7r
bedMissing=\u00a74Your bed is either unset, missing or blocked.
bedNull=\u00a7mbed\u00a7r
bedSet=\u00a76Bed spawn set\!
bigTreeFailure=\u00a74Big tree generation failure. Try again on grass or dirt.
bigTreeSuccess=\u00a76Big tree spawned.
blockList=\u00a76Essentials relayed the following commands to another plugin\:
bookAuthorSet=\u00a76Author of the book set to {0}.
bookLocked=\u00a76This book is now locked.
bookTitleSet=\u00a76Title of the book set to {0}.
broadcast=\u00a7r\u00a76[\u00a74Broadcast\u00a76]\u00a7a {0}
buildAlert=\u00a74You are not permitted to build.
bukkitFormatChanged=Bukkit version format changed. Version not checked.
burnMsg=\u00a76You set\u00a7c {0} \u00a76on fire for\u00a7c {1} seconds\u00a76.
cannotStackMob=\u00a74You do not have permission to stack multiple mobs.
canTalkAgain=\u00a76You can now talk again.
cantFindGeoIpDB=Can''t find GeoIP database\!
cantGamemode=\u00a74You do not have permission to change to gamemode {0}
cantReadGeoIpDB=Failed to read GeoIP database\!
cantSpawnItem=\u00a74You are not allowed to spawn the item\u00a7c {0}\u00a74.
chatTypeAdmin=[A]
chatTypeLocal=[L]
chatTypeSpy=[Spy]
cleaned=Userfiles Cleaned.
cleaning=Cleaning userfiles.
clearInventoryConfirmToggleOff=\u00a76You will no longer be prompted to confirm inventory clears.
clearInventoryConfirmToggleOn=\u00a76You will now be prompted to confirm inventory clears.
commandCooldown=\u00a7cYou cannot type that command for {0}.
commandFailed=Command {0} failed\:
commandHelpFailedForPlugin=Error getting help for plugin\: {0}
commandNotLoaded=\u00a74Command {0} is improperly loaded.
compassBearing=\u00a76Bearing\: {0} ({1} degrees).
configFileMoveError=Failed to move config.yml to backup location.
configFileRenameError=Failed to rename temp file to config.yml.
confirmClear=\u00a77To \u00a7lCONFIRM\u00a77 inventory clear, please repeat command: \u00a76{0}
confirmPayment=\u00a77To \u00a7lCONFIRM\u00a77 payment of \u00a76{0}\u00a77, please repeat command: \u00a76{1}
connectedPlayers=\u00a76Connected players\u00a7r
connectionFailed=Failed to open connection.
cooldownWithMessage=\u00a74Cooldown\: {0}
coordsKeyword={0}, {1}, {2}
corruptNodeInConfig=\u00a74Notice\: Your configuration file has a corrupt {0} node.
couldNotFindTemplate=\u00a74Could not find template {0}
createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2}
createKitFailed=\u00a74Error occurred whilst creating kit {0}.
createKitSeparator=\u00a7m-----------------------
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml.
creatingConfigFromTemplate=Creating config from template\: {0}
creatingEmptyConfig=Creating empty config\: {0}
creative=creative
currency={0}{1}
currentWorld=\u00a76Current World\:\u00a7c {0}
day=day
days=days
defaultBanReason=The Ban Hammer has spoken\!
deleteFileError=Could not delete file\: {0}
deleteHome=\u00a76Home\u00a7c {0} \u00a76has been removed.
deleteJail=\u00a76Jail\u00a7c {0} \u00a76has been removed.
deleteWarp=\u00a76Warp\u00a7c {0} \u00a76has been removed.
deniedAccessCommand=\u00a7c{0} \u00a74was denied access to command.
denyBookEdit=\u00a74You cannot unlock this book.
denyChangeAuthor=\u00a74You cannot change the author of this book.
denyChangeTitle=\u00a74You cannot change the title of this book.
depth=\u00a76You are at sea level.
depthAboveSea=\u00a76You are\u00a7c {0} \u00a76block(s) above sea level.
depthBelowSea=\u00a76You are\u00a7c {0} \u00a76block(s) below sea level.
destinationNotSet=Destination not set\!
disabled=disabled
disabledToSpawnMob=\u00a74Spawning this mob was disabled in the config file.
disableUnlimited=\u00a76Disabled unlimited placing of\u00a7c {0} \u00a76for {1}.
distance=\u00a76Distance\: {0}
dontMoveMessage=\u00a76Teleportation will commence in\u00a7c {0}\u00a76. Don''t move.
downloadingGeoIp=Downloading GeoIP database... this might take a while (country\: 1.7 MB, city\: 30MB)
duplicatedUserdata=Duplicated userdata\: {0} and {1}.
durability=\u00a76This tool has \u00a7c{0}\u00a76 uses left.
east=E
editBookContents=\u00a7eYou may now edit the contents of this book.
enabled=enabled
enableUnlimited=\u00a76Giving unlimited amount of\u00a7c {0} \u00a76to \u00a7c{1}\u00a76.
enchantmentApplied=\u00a76The enchantment\u00a7c {0} \u00a76has been applied to your item in hand.
enchantmentNotFound=\u00a74Enchantment not found\!
enchantmentPerm=\u00a74You do not have the permission for\u00a7c {0}\u00a74.
enchantmentRemoved=\u00a76The enchantment\u00a7c {0} \u00a76has been removed from your item in hand.
enchantments=\u00a76Enchantments\:\u00a7r {0}
errorCallingCommand=Error calling the command /{0}
errorWithMessage=\u00a7cError\:\u00a74 {0}
essentialsHelp1=The file is broken and Essentials can''t open it. Essentials is now disabled. If you can''t fix the file yourself, go to http\://tiny.cc/EssentialsChat
essentialsHelp2=The file is broken and Essentials can''t open it. Essentials is now disabled. If you can''t fix the file yourself, either type /essentialshelp in game or go to http\://tiny.cc/EssentialsChat
essentialsReload=\u00a76Essentials reloaded\u00a7c {0}.
exp=\u00a7c{0} \u00a76has\u00a7c {1} \u00a76exp (level\u00a7c {2}\u00a76) and needs\u00a7c {3} \u00a76more exp to level up.
expSet=\u00a7c{0} \u00a76now has\u00a7c {1} \u00a76exp.
extinguish=\u00a76You extinguished yourself.
extinguishOthers=\u00a76You extinguished {0}\u00a76.
failedToCloseConfig=Failed to close config {0}.
failedToCreateConfig=Failed to create config {0}.
failedToWriteConfig=Failed to write config {0}.
false=\u00a74false\u00a7r
feed=\u00a76Your appetite was sated.
feedOther=\u00a76You satiated the appetite of \u00a7c{0}\u00a76.
fileRenameError=Renaming file {0} failed\!
fireworkColor=\u00a74Invalid firework charge parameters inserted, must set a colour first.
fireworkEffectsCleared=\u00a76Removed all effects from held stack.
fireworkSyntax=\u00a76Firework parameters\:\u00a7c color\:<colour> [fade\:<colour>] [shape\:<shape>] [effect\:<effect>]\n\u00a76To use multiple colours/effects, separate values with commas\: \u00a7cred,blue,pink\n\u00a76Shapes\:\u00a7c star, ball, large, creeper, burst \u00a76Effects\:\u00a7c trail, twinkle.
flying=flying
flyMode=\u00a76Set fly mode\u00a7c {0} \u00a76for {1}\u00a76.
foreverAlone=\u00a74You have nobody to whom you can reply.
fullStack=\u00a74You already have a full stack.
gameMode=\u00a76Set game mode\u00a7c {0} \u00a76for \u00a7c{1}\u00a76.
gameModeInvalid=\u00a74You need to specify a valid player/mode.
gcfree=\u00a76Free memory\:\u00a7c {0} MB.
gcmax=\u00a76Maximum memory\:\u00a7c {0} MB.
gctotal=\u00a76Allocated memory\:\u00a7c {0} MB.
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76"\: \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities, \u00a7c{4}\u00a76 tiles.
geoipJoinFormat=\u00a76Player \u00a7c{0} \u00a76comes from \u00a7c{1}\u00a76.
geoIpUrlEmpty=GeoIP download url is empty.
geoIpUrlInvalid=GeoIP download url is invalid.
givenSkull=\u00a76You have been given the skull of \u00a7c{0}\u00a76.
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
giveSpawnFailure=\u00a74Not enough space, \u00a7c{0} \u00a7c{1} \u00a74was lost.
godDisabledFor=\u00a7cdisabled\u00a76 for\u00a7c {0}
godEnabledFor=\u00a7aenabled\u00a76 for\u00a7c {0}
godMode=\u00a76God mode\u00a7c {0}\u00a76.
groupDoesNotExist=\u00a74There''s no one online in this group\!
groupNumber=\u00a7c{0}\u00a7f online, for the full list\:\u00a7c /{1} {2}
hatArmor=\u00a74You cannot use this item as a hat\!
hatEmpty=\u00a74You are not wearing a hat.
hatFail=\u00a74You must have something to wear in your hand.
hatPlaced=\u00a76Enjoy your new hat\!
hatRemoved=\u00a76Your hat has been removed.
haveBeenReleased=\u00a76You have been released.
heal=\u00a76You have been healed.
healDead=\u00a74You cannot heal someone who is dead\!
healOther=\u00a76Healed\u00a7c {0}\u00a76.
helpConsole=To view help from the console, type ?.
helpFrom=\u00a76Commands from {0}\:
helpLine=\u00a76/{0}\u00a7r\: {1}
helpMatching=\u00a76Commands matching "\u00a7c{0}\u00a76"\:
helpOp=\u00a74[HelpOp]\u00a7r \u00a76{0}\:\u00a7r {1}
helpPlugin=\u00a74{0}\u00a7r\: Plugin Help\: /help {1}
holdBook=\u00a74You are not holding a writable book.
holdFirework=\u00a74You must be holding a firework to add effects.
holdPotion=\u00a74You must be holding a potion to apply effects to it.
holeInFloor=\u00a74Hole in floor\!
homes=\u00a76Homes\:\u00a7r {0}
homeSet=\u00a76Home set to current location.
hour=hour
hours=hours
ignoredList=\u00a76Ignored\:\u00a7r {0}
ignoreExempt=\u00a74You may not ignore that player.
ignorePlayer=\u00a76You ignore player\u00a7c {0} \u00a76from now on.
illegalDate=Illegal date format.
infoChapter=\u00a76Select chapter\:
infoChapterPages=\u00a7e ---- \u00a76{0} \u00a7e--\u00a76 Page \u00a7c{1}\u00a76 of \u00a7c{2} \u00a7e----
infoPages=\u00a7e ---- \u00a76{2} \u00a7e--\u00a76 Page \u00a7c{0}\u00a76/\u00a7c{1} \u00a7e----
infoUnknownChapter=\u00a74Unknown chapter.
insufficientFunds=\u00a74Insufficient funds available.
invalidBanner=\u00a74Invalid banner syntax.
invalidCharge=\u00a74Invalid charge.
invalidFireworkFormat=\u00a74The option \u00a7c{0} \u00a74is not a valid value for \u00a7c{1}\u00a74.
invalidHome=\u00a74Home\u00a7c {0} \u00a74doesn''t exist\!
invalidHomeName=\u00a74Invalid home name\!
invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74.
invalidMob=\u00a74Invalid mob type.
invalidNumber=Invalid Number.
invalidPotion=\u00a74Invalid Potion.
invalidPotionMeta=\u00a74Invalid potion meta\: \u00a7c{0}\u00a74.
invalidSignLine=\u00a74Line\u00a7c {0} \u00a74on sign is invalid.
invalidSkull=\u00a74Please hold a player skull.
invalidWarpName=\u00a74Invalid warp name\!
invalidWorld=\u00a74Invalid world.
inventoryClearFail=\u00a74Player {0} \u00a74does not have\u00a7c {1} \u00a74of\u00a7c {2}\u00a74.
inventoryClearingAllArmor=\u00a76Cleared all inventory items and armour from {0}\u00a76.
inventoryClearingAllItems=\u00a76Cleared all inventory items from {0}\u00a76.
inventoryClearingAllStack=\u00a76Cleared all\u00a7c {0} \u00a76from {1}\u00a76.
inventoryClearingFromAll=\u00a76Clearing the inventory of all users...
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
is=is
isIpBanned=\u00a76IP \u00a7c{0} \u00a76is banned.
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
itemCannotBeSold=\u00a74That item cannot be sold to the server.
itemMustBeStacked=\u00a74Item must be traded in stacks. A quantity of 2s would be two stacks, etc.
itemNames=\u00a76Item short names\:\u00a7r {0}
itemNotEnough1=\u00a74You do not have enough of that item to sell.
itemNotEnough2=\u00a76If you meant to sell all of your items of that type, use /sell itemname.
itemNotEnough3=\u00a76/sell itemname -1 will sell all but one item, etc.
itemsConverted=\u00a76Converted all items into blocks.
itemsCsvNotLoaded=Could not load items.csv\!
itemSellAir=You really tried to sell Air? Put an item in your hand.
itemsNotConverted=\u00a74You have no items that can be converted into blocks.
itemSold=\u00a7aSold for \u00a7c{0} \u00a7a({1} {2} at {3} each).
itemSoldConsole=\u00a7a{0} \u00a7asold {1} for \u00a7a{2} \u00a7a({3} items at {4} each).
itemSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1}
itemType=\u00a76Item\:\u00a7c {0} \u00a76-\u00a7c {1}
jailAlreadyIncarcerated=\u00a74Person is already in jail\:\u00a7c {0}
jailList=\u00a76Jails\:\u00a7r {0}
jailMessage=\u00a74You do the crime, you do the time.
jailNotExist=\u00a74That jail does not exist.
jailReleased=\u00a76Player \u00a7c{0}\u00a76 unjailed.
jailReleasedPlayerNotify=\u00a76You have been released\!
jailSentenceExtended=\u00a76Jail time extended to \u00a7c{0}\u00a76.
jailSet=\u00a76Jail\u00a7c {0} \u00a76has been set.
jumpError=\u00a74That would hurt your computer''s brain.
kickDefault=Kicked from server.
kickedAll=\u00a74Kicked all players from server.
kickExempt=\u00a74You cannot kick that person.
kill=\u00a76Killed\u00a7c {0}\u00a76.
killExempt=\u00a74You cannot kill \u00a7c{0}\u00a74.
kitContains=\u00a76Kit \u00a7c{0} \u00a76contains:
kitCost=\ \u00a77\u00a7o({0})\u00a7r
kitDelay=\u00a7m{0}\u00a7r
kitError=\u00a74There are no valid kits.
kitError2=\u00a74That kit is improperly defined. Contact an administrator.
kitGiveTo=\u00a76Giving kit\u00a7c {0}\u00a76 to \u00a7c{1}\u00a76.
kitInvFull=\u00a74Your inventory was full, placing kit on the floor.
kitItem=\u00a76- \u00a7f{0}
kitNotFound=\u00a74That kit does not exist.
kitOnce=\u00a74You can''t use that kit again.
kitReceive=\u00a76Received kit\u00a7c {0}\u00a76.
kits=\u00a76Kits\:\u00a7r {0}
kitTimed=\u00a74You can''t use that kit again for another\u00a7c {0}\u00a74.
leatherSyntax=\u00a76Leather colour syntax\: color\:<red>,<green>,<blue> eg\: color\:255,0,0.
lightningSmited=\u00a76Thou hast been smitten\!
lightningUse=\u00a76Smiting\u00a7c {0}
listAfkTag=\u00a77[AFK]\u00a7r
listAmount=\u00a76There are \u00a7c{0}\u00a76 out of maximum \u00a7c{1}\u00a76 players online.
listAmountHidden=\u00a76There are \u00a7c{0}\u00a76/{1}\u00a76 out of maximum \u00a7c{2}\u00a76 players online.
listGroupTag=\u00a76{0}\u00a7r\: \u00a7r
listHiddenTag=\u00a77[HIDDEN]\u00a7r
loadWarpError=\u00a74Failed to load warp {0}.
localFormat=[L]<{0}> {1}
localNoOne=
mailClear=\u00a76To mark your mail as read, type\u00a7c /mail clear\u00a76.
mailCleared=\u00a76Mail cleared\!
mailDelay=Too many mails have been sent within the last minute. Maximum\: {0}
mailFormat=\u00a76[\u00a7r{0}\u00a76] \u00a7r{1}
mailMessage={0}
mailSent=\u00a76Mail sent\!
mailSentTo=\u00a7c{0}\u00a76 has been sent the following mail\:
mailTooLong=\u00a74Mail message too long. Try to keep it below 1000 characters.
markedAsAway=\u00a76You are now marked as away.
markedAsNotAway=\u00a76You are no longer marked as away.
markMailAsRead=\u00a76To mark your mail as read, type\u00a7c /mail clear\u00a76.
matchingIPAddress=\u00a76The following players previously logged in from that IP address\:
maxHomes=\u00a74You cannot set more than\u00a7c {0} \u00a74homes.
maxMoney=\u00a74This transaction would exceed the balance limit for this account.
mayNotJail=\u00a74You may not jail that person\!
mayNotJailOffline=\u00a74You may not jail offline players.
me=me
minimumPayAmount=\u00a7cThe minimum amount you can pay is {0}.
minute=minute
minutes=minutes
missingItems=\u00a74You do not have \u00a7c{0}x {1}\u00a74.
mobDataList=\u00a76Valid mob data\:\u00a7r {0}
mobsAvailable=\u00a76Mobs\:\u00a7r {0}
mobSpawnError=\u00a74Error while changing mob spawner.
mobSpawnLimit=Mob quantity limited to server limit.
mobSpawnTarget=\u00a74Target block must be a mob spawner.
moneyRecievedFrom=\u00a7a{0} has been received from {1}.
moneySentTo=\u00a7a{0} has been sent to {1}.
month=month
months=months
moreThanZero=\u00a74Quantities must be greater than 0.
moveSpeed=\u00a76Set {0} speed to\u00a7c {1} \u00a76for \u00a7c{2}\u00a76.
msgDisabled=\u00a76Receiving messages \u00a7cdisabled\u00a76.
msgDisabledFor=\u00a76Receiving messages \u00a7cdisabled \u00a76for \u00a7c{0}\u00a76.
msgEnabled=\u00a76Receiving messages \u00a7cenabled\u00a76.
msgEnabledFor=\u00a76Receiving messages \u00a7cenabled \u00a76for \u00a7c{0}\u00a76.
msgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a7r{2}
msgIgnore=\u00a7c{0} \u00a74has messages disabled.
multipleCharges=\u00a74You cannot apply more than one charge to this firework.
multiplePotionEffects=\u00a74You cannot apply more than one effect to this potion.
mutedPlayer=\u00a76Player\u00a7c {0} \u00a76muted.
mutedPlayerFor=\u00a76Player\u00a7c {0} \u00a76muted for\u00a7c {1}\u00a76.
mutedUserSpeaks={0} tried to speak, but is muted.
muteExempt=\u00a74You may not mute that player.
muteExemptOffline=\u00a74You may not mute offline players.
muteNotify=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76.
muteNotifyFor=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76 for\u00a7c {2}\u00a76.
nearbyPlayers=\u00a76Players nearby\:\u00a7r {0}
negativeBalanceError=\u00a74User is not allowed to have a negative balance.
nickChanged=\u00a76Nickname changed.
nickDisplayName=\u00a74You have to enable change-displayname in Essentials config.
nickInUse=\u00a74That name is already in use.
nickNamesAlpha=\u00a74Nicknames must be alphanumeric.
nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colours changed.
nickNoMore=\u00a76You no longer have a nickname.
nickSet=\u00a76Your nickname is now \u00a7c{0}\u00a76.
nickTooLong=\u00a74That nickname is too long.
noAccessCommand=\u00a74You do not have access to that command.
noAccessPermission=\u00a74You do not have permission to access that \u00a7c{0}\u00a74.
noBreakBedrock=\u00a74You are not allowed to destroy bedrock.
noDestroyPermission=\u00a74You do not have permission to destroy that \u00a7c{0}\u00a74.
noDurability=\u00a74This item does not have a durability.
northEast=NE
north=N
northWest=NW
noGodWorldWarning=\u00a74Warning\! God mode in this world disabled.
noHelpFound=\u00a74No matching commands.
noHomeSetPlayer=\u00a76Player has not set a home.
noIgnored=\u00a76You are not ignoring anyone.
noJailsDefined=\u00a76No jails defined.
noKitGroup=\u00a74You do not have access to this kit.
noKitPermission=\u00a74You need the \u00a7c{0}\u00a74 permission to use that kit.
noKits=\u00a76There are no kits available yet.
noLocationFound=\u00a74No valid location found.
noMail=\u00a76You do not have any mail.
noMatchingPlayers=\u00a76No matching players found.
noMetaFirework=\u00a74You do not have permission to apply firework meta.
noMetaJson=JSON Metadata is not supported in this version of Bukkit.
noMetaPerm=\u00a74You do not have permission to apply \u00a7c{0}\u00a74 meta to this item.
none=none
noNewMail=\u00a76You have no new mail.
noPendingRequest=\u00a74You do not have a pending request.
noPerm=\u00a74You do not have the \u00a7c{0}\u00a74 permission.
noPermissionSkull=\u00a74You do not have permission to modify that skull.
noPermToAFKMessage=\u00a74You don''t have permission to set an AFK message.
noPermToSpawnMob=\u00a74You don''t have permission to spawn this mob.
noPlacePermission=\u00a74You do not have permission to place a block near that sign.
noPotionEffectPerm=\u00a74You do not have permission to apply potion effect \u00a7c{0} \u00a74to this potion.
noPowerTools=\u00a76You have no power tools assigned.
notAcceptingPay=\u00a74{0} \u00a74is not accepting payment.
notAllowedToQuestion=\u00a74You are not authorised to use question.
notAllowedToShout=\u00a74You are not authorised to shout.
notEnoughExperience=\u00a74You do not have enough experience.
notEnoughMoney=\u00a74You do not have sufficient funds.
notFlying=not flying
nothingInHand=\u00a74You have nothing in your hand.
notRecommendedBukkit=\u00a74* \! * Bukkit version is not the recommended build for Essentials.
notSupportedYet=Not supported yet.
now=now
noWarpsDefined=\u00a76No warps defined.
nuke=\u00a75May death rain upon them.
numberRequired=A number goes there, silly.
onlyDayNight=/time only supports day/night.
onlyPlayers=\u00a74Only in-game players can use \u00a7c{0}\u00a74.
onlyPlayerSkulls=\u00a74You can only set the owner of player skulls (\u00a7c397\:3\u00a74).
onlySunStorm=\u00a74/weather only supports sun/storm.
openingDisposal=\u00a76Opening disposal menu...
orderBalances=\u00a76Ordering balances of\u00a7c {0} \u00a76users, please wait...
oversizedTempban=\u00a74You may not ban a player for this period of time.
payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments.
payConfirmToggleOn=\u00a76You will now be prompted to confirm payments.
payMustBePositive=\u00a74Amount to pay must be positive.
payToggleOff=\u00a76You are no longer accepting payments.
payToggleOn=\u00a76You are now accepting payments.
pendingTeleportCancelled=\u00a74Pending teleportation request cancelled.
playerBanIpAddress=\u00a76Player\u00a7c {0} \u00a76banned IP address\u00a7c {1} \u00a76for\: \u00a7c{2}\u00a76.
playerBanned=\u00a76Player\u00a7c {0} \u00a76banned\u00a7c {1} \u00a76for\: \u00a7c{2}\u00a76.
playerInJail=\u00a74Player is already in jail\u00a7c {0}\u00a74.
playerJailed=\u00a76Player\u00a7c {0} \u00a76jailed.
playerJailedFor=\u00a76Player\u00a7c {0} \u00a76jailed for {1}.
playerKicked=\u00a76Player\u00a7c {0} \u00a76kicked {1} for {2}.
playerMuted=\u00a76You have been muted\!
playerMutedFor=\u00a76You have been muted for\u00a7c {0}.
playerNeverOnServer=\u00a74Player\u00a7c {0} \u00a74was never on this server.
playerNotFound=\u00a74Player not found.
playerTempBanned=\u00a76Player \u00a7c{0}\u00a76 temporarily banned \u00a7c{1}\u00a76 for \u00a7c{2}\u00a76: \u00a7c{3}\u00a76.
playerUnbanIpAddress=\u00a76Player\u00a7c {0} \u00a76unbanned IP\: {1}.
playerUnbanned=\u00a76Player\u00a7c {0} \u00a76unbanned\u00a7c {1}.
playerUnmuted=\u00a76You have been unmuted.
pong=Pong\!
posPitch=\u00a76Pitch\: {0} (Head angle)
possibleWorlds=\u00a76Possible worlds are the numbers \u00a7c0\u00a76 through \u00a7c{0}\u00a76.
posX=\u00a76X\: {0} (+East <-> -West)
posY=\u00a76Y\: {0} (+Up <-> -Down)
posYaw=\u00a76Yaw\: {0} (Rotation)
posZ=\u00a76Z\: {0} (+South <-> -North)
potions=\u00a76Potions\:\u00a7r {0}\u00a76.
powerToolAir=\u00a74Command can''t be attached to air.
powerToolAlreadySet=\u00a74Command \u00a7c{0}\u00a74 is already assigned to \u00a7c{1}\u00a74.
powerToolAttach=\u00a7c{0}\u00a76 command assigned to {1}.
powerToolClearAll=\u00a76All powertool commands have been cleared.
powerToolList=\u00a76Item \u00a7c{1} \u00a76has the following commands\: \u00a7c{0}\u00a76.
powerToolListEmpty=\u00a74Item \u00a7c{0} \u00a74has no commands assigned.
powerToolNoSuchCommandAssigned=\u00a74Command \u00a7c{0}\u00a74 has not been assigned to \u00a7c{1}\u00a74.
powerToolRemove=\u00a76Command \u00a7c{0}\u00a76 removed from \u00a7c{1}\u00a76.
powerToolRemoveAll=\u00a76All commands removed from \u00a7c{0}\u00a76.
powerToolsDisabled=\u00a76All of your power tools have been disabled.
powerToolsEnabled=\u00a76All of your power tools have been enabled.
pTimeCurrent=\u00a7c{0}\u00a76''s time is\u00a7c {1}\u00a76.
pTimeCurrentFixed=\u00a7c{0}\u00a76''s time is fixed to\u00a7c {1}\u00a76.
pTimeNormal=\u00a7c{0}\u00a76''s time is normal and matches the server.
pTimeOthersPermission=\u00a74You are not authorised to set other players'' time.
pTimePlayers=\u00a76These players have their own time\:\u00a7r
pTimeReset=\u00a76Player time has been reset for\: \u00a7c{0}
pTimeSet=\u00a76Player time is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}.
pTimeSetFixed=\u00a76Player time is fixed to \u00a7c{0}\u00a76 for\: \u00a7c{1}.
pWeatherCurrent=\u00a7c{0}\u00a76''s weather is\u00a7c {1}\u00a76.
pWeatherInvalidAlias=\u00a74Invalid weather type
pWeatherNormal=\u00a7c{0}\u00a76''s weather is normal and matches the server.
pWeatherOthersPermission=\u00a74You are not authorised to set other players'' weather.
pWeatherPlayers=\u00a76These players have their own weather\:\u00a7r
pWeatherReset=\u00a76Player weather has been reset for\: \u00a7c{0}
pWeatherSet=\u00a76Player weather is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}.
questionFormat=\u00a72[Question]\u00a7r {0}
radiusTooBig=\u00a74Radius is too big\! Maximum radius is {0}.
readNextPage=\u00a76Type\u00a7c /{0} {1} \u00a76to read the next page.
realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1}
recentlyForeverAlone=\u00a74{0} recently went offline.
recipe=\u00a76Recipe for \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 of \u00a7c{2}\u00a76)
recipeBadIndex=There is no recipe by that number.
recipeFurnace=\u00a76Smelt\: \u00a7c{0}\u00a76.
recipeGrid=\u00a7c{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X
recipeGridItem=\u00a7c{0}X \u00a76is \u00a7c{1}
recipeMore=\u00a76Type /{0} \u00a7c{1}\u00a76 <number> to see other recipes for \u00a7c{2}\u00a76.
recipeNone=No recipes exist for {0}.
recipeNothing=nothing
recipeShapeless=\u00a76Combine \u00a7c{0}
recipeWhere=\u00a76Where\: {0}
removed=\u00a76Removed\u00a7c {0} \u00a76entities.
repair=\u00a76You have successfully repaired your\: \u00a7c{0}\u00a76.
repairAlreadyFixed=\u00a74This item does not need repairing.
repairEnchanted=\u00a74You are not allowed to repair enchanted items.
repairInvalidType=\u00a74This item cannot be repaired.
repairNone=\u00a74There were no items that needed repairing.
requestAccepted=\u00a76Teleport request accepted.
requestAcceptedFrom=\u00a7c{0} \u00a76accepted your teleport request.
requestDenied=\u00a76Teleport request denied.
requestDeniedFrom=\u00a7c{0} \u00a76denied your teleport request.
requestSent=\u00a76Request sent to\u00a7c {0}\u00a76.
requestSentAlready=\u00a74You have already sent {0}\u00a74 a teleport request.
requestTimedOut=\u00a74Teleport request has timed out.
requiredBukkit=\u00a76* \! * You need at least build {0} of CraftBukkit, download it from http\://dl.bukkit.org/downloads/craftbukkit/
resetBal=\u00a76Balance has been reset to \u00a7c{0} \u00a76for all online players.
resetBalAll=\u00a76Balance has been reset to \u00a7c{0} \u00a76for all players.
returnPlayerToJailError=\u00a74Error occurred when trying to return player\u00a7c {0} \u00a74to jail\: \u00a7c{1}\u00a74\!
runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while).
second=second
seconds=seconds
seenAccounts=\u00a76Player has also been known as\:\u00a7c {0}
seenOffline=\u00a76Player\u00a7c {0} \u00a76has been \u00a74offline\u00a76 since \u00a7c{1}\u00a76.
seenOnline=\u00a76Player\u00a7c {0} \u00a76has been \u00a7aonline\u00a76 since \u00a7c{1}\u00a76.
sellBulkPermission=\u00a76You do not have permission to bulk sell.
sellHandPermission=\u00a76You do not have permission to hand sell.
serverFull=Server is full\!
serverTotal=\u00a76Server Total\:\u00a7c {0}
setBal=\u00a7aYour balance was set to {0}.
setBalOthers=\u00a7aYou set {0}\u00a7a''s balance to {1}.
setSpawner=\u00a76Changed spawner type to\u00a7c {0}\u00a76.
sheepMalformedColor=\u00a74Malformed colour.
shoutFormat=\u00a76[Shout]\u00a7r {0}
signFormatFail=\u00a74[{0}]
signFormatSuccess=\u00a71[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=\u00a74You are not allowed to create sign here.
similarWarpExist=\u00a74A warp with a similar name already exists.
southEast=SE
south=S
southWest=SW
skullChanged=\u00a76Skull changed to \u00a7c{0}\u00a76.
slimeMalformedSize=\u00a74Malformed size.
socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1}
socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2}
socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r
socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r
soloMob=\u00a74That mob likes to be alone.
spawned=spawned
spawnSet=\u00a76Spawn location set for group\u00a7c {0}\u00a76.
spectator=spectator
sudoExempt=\u00a74You cannot sudo this user.
sudoRun=\u00a76Forcing\u00a7c {0} \u00a76to run\:\u00a7r /{1}
suicideMessage=\u00a76Goodbye cruel world...
suicideSuccess=\u00a76Player \u00a7c{0} \u00a76took their own life.
survival=survival
takenFromAccount=\u00a7a{0} has been taken from your account.
takenFromOthersAccount=\u00a7a{0} taken from {1}\u00a7a account. New balance\: {2}.
teleportAAll=\u00a76Teleport request sent to all players...
teleportAll=\u00a76Teleporting all players...
teleportationCommencing=\u00a76Teleportation commencing...
teleportationDisabled=\u00a76Teleportation \u00a7cdisabled\u00a76.
teleportationDisabledFor=\u00a76Teleportation \u00a7cdisabled \u00a76for \u00a7c{0}\u00a76.
teleportationEnabled=\u00a76Teleportation \u00a7cenabled\u00a76.
teleportationEnabledFor=\u00a76Teleportation \u00a7cenabled \u00a76for \u00a7c{0}\u00a76.
teleportAtoB=\u00a7c{0}\u00a76 teleported you to \u00a7c{1}\u00a76.
teleportDisabled=\u00a7c{0} \u00a74has teleportation disabled.
teleportHereRequest=\u00a7c{0}\u00a76 has requested that you teleport to them.
teleporting=\u00a76Teleporting...
teleportInvalidLocation=Value of coordinates cannot be over 30000000
teleportNewPlayerError=\u00a74Failed to teleport new player\!
teleportRequest=\u00a7c{0}\u00a76 has requested to teleport to you.
teleportRequestAllCancelled=\u00a76All outstanding teleport requests cancelled.
teleportRequestSpecificCancelled=\u00a76Outstanding teleport request with {0} cancelled.
teleportRequestTimeoutInfo=\u00a76This request will timeout after\u00a7c {0} seconds\u00a76.
teleportTop=\u00a76Teleporting to top.
teleportToPlayer=\u00a76Teleporting to \u00a7c{0}\u00a76.
tempbanExempt=\u00a74You may not tempban that player.
tempbanExemptOffline=\u00a74You may not tempban offline players.
tempbanJoin=You are banned from this server for {0}. Reason: {1}
tempBanned=\u00a7cYou have been temporarily banned for {0}\:\n\u00a7r{2}
thunder=\u00a76You\u00a7c {0} \u00a76thunder in your world.
thunderDuration=\u00a76You\u00a7c {0} \u00a76thunder in your world for\u00a7c {1} \u00a76seconds.
timeBeforeHeal=\u00a74Time before next heal\:\u00a7c {0}\u00a76.
timeBeforeTeleport=\u00a74Time before next teleport\:\u00a7c {0}\u00a76.
timeFormat=\u00a7c{0}\u00a76 or \u00a7c{1}\u00a76 or \u00a7c{2}\u00a76
timeSetPermission=\u00a74You are not authorised to set the time.
timeSetWorldPermission=\u00a74You are not authorised to set the time in world ''{0}''.
timeWorldCurrent=\u00a76The current time in\u00a7c {0} \u00a76is \u00a7c{1}\u00a76.
timeWorldSet=\u00a76The time was set to\u00a7c {0} \u00a76in\: \u00a7c{1}\u00a76.
totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
totalWorthAll=\u00a7aSold all items and blocks for a total worth of \u00a7c{1}\u00a7a.
totalWorthBlocks=\u00a7aSold all blocks for a total worth of \u00a7c{1}\u00a7a.
tps=\u00a76Current TPS \= {0}
tradeSignEmpty=\u00a74The trade sign has nothing available for you.
tradeSignEmptyOwner=\u00a74There is nothing to collect from this trade sign.
treeFailure=\u00a74Tree generation failure. Try again on grass or dirt.
treeSpawned=\u00a76Tree spawned.
true=\u00a7atrue\u00a7r
typeTpacancel=\u00a76To cancel this request, type \u00a7c/tpacancel\u00a76.
typeTpaccept=\u00a76To teleport, type \u00a7c/tpaccept\u00a76.
typeTpdeny=\u00a76To deny this request, type \u00a7c/tpdeny\u00a76.
typeWorldName=\u00a76You can also type the name of a specific world.
unableToSpawnItem=\u00a74Cannot spawn \u00a7c{0}\u00a74, this is not a spawnable item.
unableToSpawnMob=\u00a74Unable to spawn mob.
unignorePlayer=\u00a76You are not ignoring player\u00a7c {0} \u00a76anymore.
unknownItemId=\u00a74Unknown item id\:\u00a7r {0}\u00a74.
unknownItemInList=\u00a74Unknown item {0} in {1} list.
unknownItemName=\u00a74Unknown item name\: {0}.
unlimitedItemPermission=\u00a74No permission for unlimited item \u00a7c{0}\u00a74.
unlimitedItems=\u00a76Unlimited items\:\u00a7r
unmutedPlayer=\u00a76Player\u00a7c {0} \u00a76unmuted.
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
unvanishedReload=\u00a74A reload has forced you to become visible.
upgradingFilesError=Error while upgrading the files.
uptime=\u00a76Uptime\:\u00a7c {0}
userAFK=\u00a77{0} \u00a75is currently AFK and may not respond.
userAFKWithMessage=\u00a77{0} \u00a75is currently AFK and may not respond: {1}
userdataMoveBackError=Failed to move userdata/{0}.tmp to userdata/{1}\!
userdataMoveError=Failed to move userdata/{0} to userdata/{1}.tmp\!
userDoesNotExist=\u00a74The user\u00a7c {0} \u00a74does not exist.
userIsAway=\u00a77* {0} \u00a77is now AFK.
userIsAwayWithMessage=\u00a77* {0} \u00a77is now AFK.
userIsNotAway=\u00a77* {0} \u00a77is no longer AFK.
userJailed=\u00a76You have been jailed\!
userUnknown=\u00a74Warning\: The user ''\u00a7c{0}\u00a74'' has never joined this server.
usingTempFolderForTesting=Using temp folder for testing\:
vanish=\u00a76Vanish for {0}\u00a76\: {1}
vanished=\u00a76You are now completely invisible to normal users, and hidden from in-game commands.
versionMismatch=\u00a74Version mismatch\! Please update {0} to the same version.
versionMismatchAll=\u00a74Version mismatch\! Please update all Essentials jars to the same version.
voiceSilenced=\u00a76Your voice has been silenced\!
walking=walking
warpDeleteError=\u00a74Problem deleting the warp file.
warpingTo=\u00a76Warping to\u00a7c {0}\u00a76.
warpList={0}
warpListPermission=\u00a74You do not have permission to list warps.
warpNotExist=\u00a74That warp does not exist.
warpOverwrite=\u00a74You cannot overwrite that warp.
warps=\u00a76Warps\:\u00a7r {0}
warpsCount=\u00a76There are\u00a7c {0} \u00a76warps. Showing page \u00a7c{1} \u00a76of \u00a7c{2}\u00a76.
warpSet=\u00a76Warp\u00a7c {0} \u00a76set.
warpUsePermission=\u00a74You do not have permission to use that warp.
weatherInvalidWorld=World named {0} not found\!
weatherStorm=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0}\u00a76.
weatherStormFor=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0} \u00a76for {1} seconds.
weatherSun=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0}\u00a76.
weatherSunFor=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0} \u00a76for {1} seconds.
west=W
whoisAFK=\u00a76 - AFK\:\u00a7r {0}
whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1})
whoisBanned=\u00a76 - Banned\:\u00a7r {0}
whoisExp=\u00a76 - Exp\:\u00a7r {0} (Level {1})
whoisFly=\u00a76 - Fly mode\:\u00a7r {0} ({1})
whoisGamemode=\u00a76 - Gamemode\:\u00a7r {0}
whoisGeoLocation=\u00a76 - Location\:\u00a7r {0}
whoisGod=\u00a76 - God mode\:\u00a7r {0}
whoisHealth=\u00a76 - Health\:\u00a7r {0}/20
whoisHunger=\u00a76 - Hunger\:\u00a7r {0}/20 (+{1} saturation)
whoisIPAddress=\u00a76 - IP Address\:\u00a7r {0}
whoisJail=\u00a76 - Jail\:\u00a7r {0}
whoisLocation=\u00a76 - Location\:\u00a7r ({0}, {1}, {2}, {3})
whoisMoney=\u00a76 - Money\:\u00a7r {0}
whoisMuted=\u00a76 - Muted\:\u00a7r {0}
whoisNick=\u00a76 - Nick\:\u00a7r {0}
whoisOp=\u00a76 - OP\:\u00a7r {0}
whoisPlaytime=\u00a76 - Playtime\:\u00a7r {0}
whoisTempBanned=\u00a76 - Ban expires:\u00a7r {0}
whoisTop=\u00a76 \=\=\=\=\=\= WhoIs\:\u00a7c {0} \u00a76\=\=\=\=\=\=
whoisUuid=\u00a76 - UUID\:\u00a7r {0}
worth=\u00a7aStack of {0} worth \u00a7c{1}\u00a7a ({2} item(s) at {3} each)
worthMeta=\u00a7aStack of {0} with metadata of {1} worth \u00a7c{2}\u00a7a ({3} item(s) at {4} each)
worthSet=\u00a76Worth value set
year=year
years=years
youAreHealed=\u00a76You have been healed.
youHaveNewMail=\u00a76You have\u00a7c {0} \u00a76messages\! Type \u00a7c/mail read\u00a76 to view your mail.
+13 -3
View File
@@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74No se puede encontrar la plantilla\u00a76 {0}
createdKit=\u00a76Kit \u00a7c{0} \u00a76creado con \u00a7c{1} \u00a76articulos y un tiempo de espera de \u00a7c{2}
createKitFailed=\u00a74Ocurrio un error durante la creacion del kit {0}.
createKitSeparator=\u00a7m-----------------------
createKitSuccess=\u00a76Kit creado: \u00a7f{0}\n\u00a76Tiempo de espera: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copia el contenido del link de arriba en tu archivo config.yml.
createKitSuccess=\u00a76Kit creado: \u00a7f{0}\n\u00a76Tiempo de espera: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copia el contenido del link de arriba en tu archivo kits.yml.
creatingConfigFromTemplate=Creando configuraci\u00f3n desde la plantilla\: {0}
creatingEmptyConfig=Creando configuraci\u00f3n vac\u00eda\: {0}
creative=creativo
@@ -106,6 +106,7 @@ dontMoveMessage=\u00a76El teletransporte comenzar\u00e1 en\u00a7c {0}\u00a76. Po
downloadingGeoIp=Descargando base de datos de GeoIP... Puede tardar unos minutos (pa\u00edses\: 1.7 MB, ciudades\: 30 MB)
duplicatedUserdata=Datos de usuario duplicados\: {0} y {1}
durability=\u00a77Esta herramienta tiene \u00a7c{0}\u00a77 usos restantes.
east=E
editBookContents=\u00a7eAhora puedes editar los contenidos de este libro.
enabled=activado
enableUnlimited=\u00a76Dando cantidad ilimitada de\u00a7c {0} \u00a76a \u00a7c{1}\u00a76.
@@ -201,7 +202,7 @@ invalidSkull=\u00a74Por favor sost\u00e9n un cr\u00e1neo de un jugador.
invalidWarpName=\u00a74\u00a1Nombre del Warp no reconocido\!
invalidWorld=\u00a74Mundo erroneo o no cargado.
inventoryClearFail=\u00a74El jugador {0} \u00a74no tiene\u00a7c {1} \u00a74de\u00a7c {2}\u00a74.
inventoryClearingAllArmor=\u00a7eLimpiado objetos y armaduras de\u00a7a {0}\u00a7e.
inventoryClearingAllArmor=\u00a7eLimpiado objetos y armaduras de\u00a7a {0}\u00a7e.
inventoryClearingAllItems=\u00a76Limpiado todos los objetos del inventario a\u00a76 {0}.
inventoryClearingAllStack=\u00a76Inventario limpiado completamente a \u00a7c {0} \u00a76de {1}\u00a76.
inventoryClearingFromAll=\u00a77Limpiando el inventario de todos los usuarios...
@@ -209,6 +210,7 @@ inventoryClearingStack=\u00a76Eliminado\u00a7c {0} \u00a76de\u00a7c {1} \u00a76d
is=es
isIpBanned=\u00a76IP \u00a7c{0} \u00a76est\u00e1 baneada.
itemCannotBeSold=\u00a74\u00a1Ese objeto no puede ser vendido al servidor\!
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
itemMustBeStacked=El objeto tiene que ser intercambiado en montones. Una cantidad de 2s ser\u00edan dos montones, etc.
itemNames=\u00a76Nombre corto del \u00edtem\:\u00a7r {0}
itemNotEnough1=\u00a74No tienes la suficiente cantidad del \u00edtem para venderlo.
@@ -221,7 +223,7 @@ itemsNotConverted=\u00a74No tienes items que puedan ser convertidos a bloques.
itemSold=\u00a77Vendido por \u00a7c {0} \u00a77 ({1} {2} a {3} cada uno).
itemSoldConsole={0} Vendio {1} por\u00a77 {2} \u00a77({3} objetos a {4} cada uno)
itemSpawn=\u00a76Dando {0} de {1}
itemType=\u00a76Objeto\:\u00a7c {0} \u00a76-\u00a7c {1}
itemType=\u00a76Objeto\:\u00a7c {0}
jailAlreadyIncarcerated=\u00a74Ese jugador ya est\u00e1 en la c\u00e1rcel\:\u00a7c {0}
jailList=\u00a76Jails\:\u00a7r {0}
jailMessage=\u00a7c\u00a1Por el crimen hacer, a la c\u00e1rcel ir\u00e1s\!
@@ -324,6 +326,9 @@ noDestroyPermission=\u00a74No tienes permiso para destruir ese \u00a7c{0}\u00a74
noDurability=\u00a74Este \u00edtem no tiene durabilidad.
noGodWorldWarning=\u00a74\u00a1Advertencia\! El modo dios ha sido desactivado en este mundo.
noHelpFound=\u00a74No hay comandos relacionados.
northEast=NE
north=N
northWest=NW
noHomeSetPlayer=\u00a76El jugador no ha establecido hogares.
noIgnored=\u00a76No est\u00e1s ignorando a nadie.
noJailsDefined=\u00a76No jails defined.
@@ -423,6 +428,7 @@ pWeatherSet=\u00a76Clima establecido en \u00a7c{0}\u00a76 para\: \u00a7c{1}.
questionFormat=\u00a72[Pregunta]\u00a7r {0}
radiusTooBig=\u00a74\u00a1Radio demasiado grande\! Lo m\u00e1ximo es {0}.
readNextPage=\u00a77Escribe\u00a7c /{0} {1} \u00a77para leer la p\u00e1gina siguiente.
realName=\u00a7f{0}\u00a7r\u00a76 es \u00a7f{1}
recentlyForeverAlone=\u00a74{0} recently went offline.
recipe=\u00a76Receta para \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 de \u00a7c{2}\u00a76)
recipeBadIndex=No hay ning\u00fan crafteo con ese n\u00famero.
@@ -476,6 +482,9 @@ slimeMalformedSize=\u00a74Medidas malformadas.
socialSpy=\u00a76Esp\u00eda de chat para \u00a7c{0}\u00a76\: \u00a7c{1}
socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2}
socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r
southEast=SE
south=S
southWest=SW
socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r
soloMob=\u00a74A este mob le gusta estar solo.
spawned=nacido
@@ -579,6 +588,7 @@ weatherStorm=\u00a77Has establecido el tiempo como tormenta en este mundo.
weatherStormFor=\u00a77Has establecido el tiempo como tormenta en {1} durante {0} segundos.
weatherSun=\u00a77Has establecido el tiempo como sol en este mundo.
weatherSunFor=\u00a77Has establecido el tiempo como sol en {1} durante {0} segundos.
west=W
whoisAFK=\u00a77 - Ausente\:\u00a7r {0}
whoisAFKSince=\u00a76 - Ausente\:\u00a7r {0} (Desde {1})
whoisBanned=\u00a77 - Baneado\:\u00a7f {0}
+13 -3
View File
@@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74Ei leidnud \u0161ablooni {0}
createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2}
createKitFailed=\u00a74Error occurred whilst creating kit {0}.
createKitSeparator=\u00a7m-----------------------
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml.
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml.
creatingConfigFromTemplate=Seadete loomine \u0161abloonist\: {0}
creatingEmptyConfig=Loon t\u00fchja konfiguratsiooni\: {0}
creative=loominguline
@@ -106,6 +106,7 @@ dontMoveMessage=\u00a76Teleportatsioon algab\u00a7c {0}\u00a76 p\u00e4rast. \u00
downloadingGeoIp=GeoIP andmebaasi allalaadimine... see v\u00f5ib v\u00f5tta aega (riik\: 1.7 MB, linn\: 30MB)
duplicatedUserdata=Topelt kasutaja andmed\: {0} ja {1}.
durability=\u00a76Sellel esemel on \u00a7c{0}\u00a76 kasutust j\u00e4rel
east=E
editBookContents=\u00a7eSa v\u00f5id n\u00fc\u00fcd muuta selle raamatu sisu.
enabled=lubatud
enableUnlimited=\u00a76Annan piiramatus koguses\u00a7c {0} \u00a76m\u00e4ngijale \u00a7c{1}\u00a76.
@@ -201,13 +202,14 @@ invalidSkull=\u00a74Palun hoia k\u00e4es m\u00e4ngija koljut.
invalidWarpName=\u00a74Vigane l\u00f5imu nimi\!
invalidWorld=\u00a74Vigane maailm.
inventoryClearFail=\u00a74M\u00e4ngijal {0} \u00a74ei ole\u00a7c {1} \u00a74eset\u00a7c {2}\u00a74.
inventoryClearingAllArmor=\u00a76Puhastati k\u00f5ik seljakoti esemed ja armor\: {0}\u00a76.
inventoryClearingAllArmor=\u00a76Puhastati k\u00f5ik seljakoti esemed ja armor\: {0}\u00a76.
inventoryClearingAllItems=\u00a76Puhastati k\u00f5ik seljakoti esemed\: {0}\u00a76.
inventoryClearingAllStack=\u00a76Eemaldati k\u00f5ik\u00a7c {0} \u00a76m\u00e4ngijalt {1}\u00a76.
inventoryClearingFromAll=\u00a76T\u00fchjendan k\u00f5ikide m\u00e4ngijate seljakoti...
inventoryClearingStack=\u00a76Eemaldati\u00a7c {0} \u00a76eset\u00a7c {1} \u00a76m\u00e4ngijalt {2}\u00a76.
is=on
isIpBanned=\u00a76IP \u00a7c{0} \u00a76on blokeeritud.
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
itemCannotBeSold=\u00a74K\u00e4esolevat eset ei saa serverile m\u00fc\u00fca.
itemMustBeStacked=\u00a74Eset saad vahetada stackina. Kogus 2s oleks kaks stacki, jne.
itemNames=\u00a76Eseme l\u00fchendid\:\u00a7r {0}
@@ -221,7 +223,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
itemSold=\u00a7aM\u00fc\u00fcs hinnaga \u00a7c{0} \u00a7a({1} {2} asukohas {3} \u00fche eest).
itemSoldConsole=\u00a7a{0} \u00a7am\u00fc\u00fcs {1} hinnaga \u00a7a{2} \u00a7a({3} eset asukohas {4} \u00fche eest).
itemSpawn=\u00a76Annan\u00a7c {0}\u00a7c {1}\u00a76-i
itemType=\u00a76Ese\:\u00a7c {0} \u00a76-\u00a7c {1}
itemType=\u00a76Ese\:\u00a7c {0}
jailAlreadyIncarcerated=\u00a74M\u00e4ngija on juba vanglas\:\u00a7c {0}
jailList=\u00a76Jails\:\u00a7r {0}
jailMessage=\u00a74Sooritad kuriteo, oled vangis ka.
@@ -322,6 +324,9 @@ noAccessPermission=\u00a74Sul pole \u00f5igust \u00a7c{0}\u00a74 avamiseks.
noBreakBedrock=\u00a74Teil ei ole lubatud purustada aluskivi.
noDestroyPermission=\u00a74Sul pole \u00f5igust \u00a7c{0}\u00a74 l\u00f5hkumiseks.
noDurability=\u00a74K\u00e4esoleval esemel puudub vastupidavus.
northEast=NE
north=N
northWest=NW
noGodWorldWarning=\u00a74Hoiatus\! Jumalare\u017eiim ei ole selles maailmas lubatud.
noHelpFound=\u00a74Klappivaid k\u00e4ske ei ole.
noHomeSetPlayer=\u00a76M\u00e4ngija ei ole m\u00e4\u00e4ranud kodu.
@@ -423,6 +428,7 @@ pWeatherSet=\u00a76M\u00e4ngija ilm on seatud \u00a7c{0}\u00a76 m\u00e4ngijale\:
questionFormat=\u00a72[K\u00fcsimus]\u00a7r {0}
radiusTooBig=\u00a74Raadius on liiga suur\! Maksimaalne raadius on {0}.
readNextPage=\u00a76Kirjuta\u00a7c /{0} {1}\u00a76, et lugeda j\u00e4rgmist lehte.
realName=\u00a7f{0}\u00a7r\u00a76 on \u00a7f{1}
recentlyForeverAlone=\u00a74{0} recently went offline.
recipe=\u00a76Retsept esemele \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 koguses \u00a7c{2}\u00a76)
recipeBadIndex=Ei leidunud restepti antud numbriga.
@@ -471,6 +477,9 @@ signFormatSuccess=\u00a71[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=\u00a74Teil ei ole lubatud siia m\u00e4rki teha.
similarWarpExist=\u00a74L\u00f5im sarnase nimiga on juba olemas.
southEast=SE
south=S
southWest=SW
skullChanged=\u00a76Kolju muudetud\: \u00a7c{0}\u00a76.
slimeMalformedSize=\u00a74Moondunud suurus.
socialSpy=\u00a76SocialSpy on \u00a7c{1}\u00a76 m\u00e4ngijale \u00a7c{0}
@@ -579,6 +588,7 @@ weatherStorm=\u00a76Te m\u00e4\u00e4rasite ilma \u00a7ctormiseks\u00a76 maailmas
weatherStormFor=\u00a76M\u00e4\u00e4rasite ilma \u00a7ctormiseks\u00a76 maailmas\u00a7c {0}\u00a76 {1} sekundiks.
weatherSun=\u00a76M\u00e4\u00e4rasite ilma \u00a7cp\u00e4ikeselisek\u00a76 maailmas\u00a7c {0}\u00a76.
weatherSunFor=\u00a76M\u00e4\u00e4rasite ilma \u00a7cp\u00e4ikeliseks\u00a76 maailmas\u00a7c {0}\u00a76 {1} sekundiks.
west=W
whoisAFK=\u00a76 - Eemal\:\u00a7r {0}
whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1})
whoisBanned=\u00a76 - Blokeeritud\:\u00a7r {0}
+13 -3
View File
@@ -77,7 +77,7 @@ couldNotFindTemplate=Ei l\u00f6ydetty mallia {0}
createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2}
createKitFailed=\u00a74Error occurred whilst creating kit {0}.
createKitSeparator=\u00a7m-----------------------
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml.
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml.
creatingConfigFromTemplate=Luodaan config tiedostoa mallista\: {0}
creatingEmptyConfig=Luodaan tyhj\u00e4\u00e4 config tiedostoa\: {0}
creative=luova
@@ -106,6 +106,7 @@ dontMoveMessage=\u00a77Teleportataan {0} kuluttua. \u00c4l\u00e4 liiku.
downloadingGeoIp=Ladataan GeoIP tietokantaa ... t\u00e4m\u00e4 voi vied\u00e4 hetken (maa\: 1.7 MB, kaupunki\: 30MB)
duplicatedUserdata=Kopioitu k\u00e4ytt\u00e4j\u00e4n tiedot\: {0} ja {1}
durability=\u00a77T\u00e4ll\u00e4 ty\u00f6kalulla on \u00a7c{0}\u00a77 k\u00e4ytt\u00f6kertaa j\u00e4ljell\u00e4
east=E
editBookContents=\u00a7eVoit nyt muokata t\u00e4m\u00e4n kirjan sis\u00e4lt\u00f6\u00e4.
enabled=k\u00e4yt\u00f6ss\u00e4
enableUnlimited=\u00a76Giving unlimited amount of\u00a7c {0} \u00a76to \u00a7c{1}\u00a76.
@@ -161,7 +162,7 @@ hatPlaced=\u00a7eNauti uudesta hatustasi\!
hatRemoved=\u00a76Hattusi on poistettu.
haveBeenReleased=\u00a77Sinut on vapautettu
heal=\u00a77Sinut on parannettu.
healDead=\u00a74Et voi parantaa pelaajaa, joka on kuollut\!
healDead=\u00a74Et voi parantaa pelaajaa, joka on kuollut\!
healOther=\u00a77Paransit pelaajan {0}.
helpConsole=Katsoaksesi apua konsolista, kirjoita ?.
helpFrom=\u00a77Komennot {0}\:
@@ -209,6 +210,7 @@ inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76fro
is=on
isIpBanned=\u00a76IP \u00a7c {0} \u00a76On karkoitettu.
itemCannotBeSold=Tuota tavaraa ei voi myyd\u00e4 t\u00e4ll\u00e4 palvelimella.
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
itemMustBeStacked=Tavara pit\u00e4\u00e4 vaihtaa pakattuina. M\u00e4\u00e4r\u00e4 2s olisi kaksi pakettia, jne.
itemNames=\u00a76Item short names\:\u00a7r {0}
itemNotEnough1=\u00a7cSinulla ei ole tarpeeksi tavaraa jota myyd\u00e4.
@@ -221,7 +223,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
itemSold=\u00a77Myy \u00a7c{0} \u00a77({1} {2} hintaan {3} kpl)
itemSoldConsole={0} sold {1} for \u00a77{2} \u00a77({3} items at {4} each)
itemSpawn=\u00a77Annetaan {0} kpl {1}
itemType=\u00a76Item\:\u00a7c {0} \u00a76-\u00a7c {1}
itemType=\u00a76Item\:\u00a7c {0}
jailAlreadyIncarcerated=\u00a7cPelaaja on jo vankilassa\: {0}
jailList=\u00a76Jails\:\u00a7r {0}
jailMessage=\u00a7cSin\u00e4 teet rikoksen, istut my\u00f6s sen mukaan.
@@ -324,6 +326,9 @@ noDestroyPermission=\u00a74You do not have permission to destroy that \u00a7c{0}
noDurability=\u00a7cT\u00e4ll\u00e4 tavaralla ei ole kestoa.
noGodWorldWarning=\u00a7cVaroitus\! God muoto ei ole k\u00e4yt\u00f6ss\u00e4 t\u00e4ss\u00e4 maailmassa.
noHelpFound=\u00a7cEi komentoja.
northEast=NE
north=N
northWest=NW
noHomeSetPlayer=Pelaaja ei ole asettanut kotia.
noIgnored=\u00a76You are not ignoring anyone.
noJailsDefined=\u00a76No jails defined.
@@ -423,6 +428,7 @@ pWeatherSet=\u00a76Player weather is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}.
questionFormat=\u00a77[Question]\u00a7f {0}
radiusTooBig=\u00a74Radius is too big\! Maximum radius is {0}.
readNextPage=Kirjoita /{0} {1} lukeaksesi seuraavan sivun
realName=\u00a7f{0}\u00a7r\u00a76 on \u00a7f{1}
recentlyForeverAlone=\u00a74{0} recently went offline.
recipe=\u00a76Recipe for \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 of \u00a7c{2}\u00a76)
recipeBadIndex=There is no recipe by that number.
@@ -476,6 +482,9 @@ slimeMalformedSize=Viallinen koko.
socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1}
socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2}
socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r
southEast=SE
south=S
southWest=SW
socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r
soloMob=Tuo mob tykk\u00e4\u00e4 olevan yksin
spawned=luotu
@@ -579,6 +588,7 @@ weatherStorm=\u00a77Laitoit myrskyn maailmaan {0}
weatherStormFor=\u00a77Laitoit myrskyn maailmaan {0} {1} sekunniksi
weatherSun=\u00a77Laitoit auringon paistamaan maailmaan {0}
weatherSunFor=\u00a77Laitoit auringon paistamaan maailmaan {0} {1} sekunniksi
west=W
whoisAFK=\u00a76 - AFK\:\u00a7f {0}
whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1})
whoisBanned=\u00a76 - Banned\:\u00a7f {0}
+13 -3
View File
@@ -77,7 +77,7 @@ couldNotFindTemplate=Le mod\u00e8le {0} est introuvable
createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2}
createKitFailed=\u00a74Erreur lors de la cr\u00e9ation du kit {0}.
createKitSeparator=\u00a7m-----------------------
createKitSuccess=\u00a76Cr\u00e9ation du kit: \u00a7f{0}\n\u00a76D\u00e9lai: \u00a7f{1}\n\u00a76Lien: \u00a7f{2}\n\u00a76Vous devez copier le contenu dans le fichier config.yml.
createKitSuccess=\u00a76Cr\u00e9ation du kit: \u00a7f{0}\n\u00a76D\u00e9lai: \u00a7f{1}\n\u00a76Lien: \u00a7f{2}\n\u00a76Vous devez copier le contenu dans le fichier kits.yml.
creatingConfigFromTemplate=Cr\u00e9ation de la configuration \u00e0 partir du mod\u00e8le \: {0}
creatingEmptyConfig=Cr\u00e9ation d''une configuration vierge \: {0}
creative=cr\u00e9atif
@@ -106,6 +106,7 @@ dontMoveMessage=\u00a77La t\u00e9l\u00e9portation commence dans {0}. Ne bougez p
downloadingGeoIp=T\u00e9l\u00e9chargement de la base de donn\u00e9es GeoIP... Cela peut prendre un moment (pays \: 1.7 Mo, villes \: 30 MB)
duplicatedUserdata=Donn\u00e9es utilisateurs dupliqu\u00e9es \: {0} et {1}
durability=\u00a77Cet outil a \u00a7c{0}\u00a77 usage(s) restant(s).
east=E
editBookContents=\u00a7eVous pouvez maintenant \u00e9diter le contenu de ce livre.
enabled=activ\u00e9
enableUnlimited=&6Don d''une quantit\u00e9 illimit\u00e9e de\u00a7c {0} \u00a76\u00e0 \u00a7c{1}\u00a76.
@@ -201,13 +202,14 @@ invalidSkull=\u00a74Vous devez tenir une t\u00eate de joueur.
invalidWarpName=\u00a74Nom de warp invalide.
invalidWorld=\u00a7cMonde invalide.
inventoryClearFail=\u00a74Le joueur {0} \u00a74n''a pas\u00a7c {1}\u00a7c {2}\u00a74 sur lui.
inventoryClearingAllArmor=\u00a76Tous les items de l''inventaire et l''armure de {0}\u00a76 ont \u00e9t\u00e9 supprim\u00e9s.
inventoryClearingAllArmor=\u00a76Tous les items de l''inventaire et l''armure de {0}\u00a76 ont \u00e9t\u00e9 supprim\u00e9s.
inventoryClearingAllItems=\u00a76Tous les items de l''inventaire de {0}\u00a76 ont \u00e9t\u00e9 supprim\u00e9s.
inventoryClearingAllStack=\u00a76Tous les\u00a7c {0} \u00a76de l''inventaire de {1}\u00a76 ont \u00e9t\u00e9 supprim\u00e9s.
inventoryClearingFromAll=\u00a76Tous les inventaires sont en train d''\u00ea vid\u00e9s...
inventoryClearingStack=\u00a7c{0} \u00a7c {1} \u00a76ont \u00e9t\u00e9 supprim\u00e9s de l''inventaire de {2}\u00a76.
is=est
isIpBanned=\u00a76L''IP \u00a7c{0} \u00a76est bannie.
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
itemCannotBeSold=Cet objet ne peut \u00eatre vendu au serveur.
itemMustBeStacked=Cet objet doit \u00eatre vendu par 64. Une quantit\u00e9 de 2 serait deux fois 64.
itemNames=Noms d''item courts \: {0}
@@ -221,7 +223,7 @@ itemsNotConverted=\u00a74Vous n''avez pas d''items pouvant \u00eatre convertis e
itemSold=\u00a77Vendu pour \u00a7c{0} \u00a77({1} {2} \u00e0 {3} chacun)
itemSoldConsole={0} vendu {1} pour \u00a77{2} \u00a77({3} objet(s) \u00e0 {4} chacun)
itemSpawn=\u00a77Donne {0} de {1}
itemType=\u00a76Item \:\u00a7c {0} \u00a76-\u00a7c {1}
itemType=\u00a76Item \:\u00a7c {0}
jailAlreadyIncarcerated=\u00a7cJoueur d\u00e9j\u00e0 emprisonn\u00e9 \: {0}
jailList=\u00a76Jails\:\u00a7r {0}
jailMessage=\u00a7cVous avez commis un crime, vous en payez le prix.
@@ -322,6 +324,9 @@ noAccessPermission=\u00a74Vous n''avez pas la permission d\u2019acc\u00e9der \u0
noBreakBedrock=Vous n''\u00eates pas autoris\u00e9s \u00e0 d\u00e9truire la bedrock.
noDestroyPermission=\u00a74Vous n''avez pas la permission de d\u00e9truire ce/cette \u00a7c{0}\u00a74.
noDurability=\u00a7cCet item n''a pas de durabilit\u00e9.
northEast=NE
north=N
northWest=NW
noGodWorldWarning=\u00a7cAttention \! Le mode dieu est d\u00e9sactiv\u00e9 dans ce monde.
noHelpFound=\u00a7cAucune commande correspondante.
noHomeSetPlayer=Le joueur n''a pas d\u00e9fini sa r\u00e9sidence.
@@ -423,6 +428,7 @@ pWeatherSet=La m\u00e9t\u00e9o du joueur a \u00e9t\u00e9 r\u00e9gl\u00e9e \u00e0
questionFormat=\u00a72[Question]\u00a7r {0}
radiusTooBig=\u00a74Le rayon est trop grand \! Le rayon maximum est {0}.
readNextPage=Utilisez /{0} {1} pour lire la page suivante.
realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1}
recentlyForeverAlone=\u00a74{0} vient de se d\u00e9connecter r\u00e9cemment.
recipe=\u00a76Recette pour \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 sur \u00a7c{2}\u00a76)
recipeBadIndex=Il n''y a pas de rec\u00eate pour ce num\u00e9ro.
@@ -471,6 +477,9 @@ signFormatSuccess=\u00a71[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=\u00a74Vous n''avez pas l''autorisation de cr\u00e9er une pancarte ici.
similarWarpExist=Un warp avec un nom similaire existe d\u00e9j\u00e0.
southEast=SE
south=S
southWest=SW
skullChanged=\u00a76T\u00eate chang\u00e9e en celle de \u00a7c{0}\u00a76.
slimeMalformedSize=Taille incorrecte.
socialSpy=\u00a76SocialSpy pour \u00a7c{0}\u00a76 \: \u00a7c{1}
@@ -579,6 +588,7 @@ weatherStorm=\u00a77Vous avez programm\u00e9 l''orage dans {0}.
weatherStormFor=\u00a77Vous avez programm\u00e9 l''orage dans {0} pour {1} seconde(s).
weatherSun=\u00a77Vous avez programm\u00e9 le beau temps dans {0}.
weatherSunFor=\u00a77Vous avez programm\u00e9 le beau temps dans {0} pour {1} seconde(s).
west=W
whoisAFK=\u00a76 - AFK/Absent \:\u00a7f {0}
whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1})
whoisBanned=\u00a76 - Banni \:\u00a7f {0}
+298 -288
View File
@@ -2,7 +2,7 @@
#version: ${full.version}
# Single quotes have to be doubled: ''
# Translations start here
# by: montlikadani
# by: montlikadani, gbalint
action=\u00a75* {0} \u00a75{1}
addedToAccount=\u00a7a{0} hozz\u00e1adva az egyenlegedhez.
addedToOthersAccount=\u00a7a{0} hozz\u00e1dva {1}\u00a7a egyenleg\u00e9hez. \u00daj egyenlege\: {2}
@@ -17,121 +17,122 @@ antiBuildCraft=\u00a74Nincs jogod, hogy a k\u00f6vetkez\u0151t k\u00e9sz\u00edts
antiBuildDrop=\u00a74Nincs jogod, hogy eldobd a k\u00f6vetkez\u0151t\:\u00a7c {0}\u00a74.
antiBuildInteract=\u00a74Nincs jogod, hogy interakci\u00f3ba l\u00e9pj a\u00a7c {0}\u00a74-val/-vel.
antiBuildPlace=\u00a74Nincs jogod, hogy lehelyezed\u00a7c {0} \u00a74ide.
antiBuildUse=\u00a74NIncs jogod, hogy haszn\u00e1ld a k\u00f6vetkez\u0151t\:\u00a7c {0}\u00a74.
antiBuildUse=\u00a74Nincs jogod, hogy haszn\u00e1ld a k\u00f6vetkez\u0151t\:\u00a7c {0}\u00a74.
autoAfkKickReason=Kickelve lett\u00e9l {0} perc AFK miatt\!
backAfterDeath=\u00a76Meghalt\u00e1l\! A \u00a74/back\u00a76 paranccsal visszajuthatsz hal\u00e1lod sz\u00ednhely\u00e9re.
backupDisabled=\u00a74A ment\u00e9s nincs k\u00e9sz
backupFinished=\u00a76Biztons\u00e1gi ment\u00e9s k\u00e9sz.
backupStarted=\u00a76Biztons\u00e1gi ment\u00e9s elkezdve.
backAfterDeath=\u00a76Meghalt\u00e1l\! A \u00a74/back\u00a76 paranccsal visszajuthatsz a hal\u00e1lod sz\u00ednhely\u00e9re.
backupDisabled=\u00a74A ment\u00e9s nincs k\u00e9sz.
backupFinished=\u00a76A biztons\u00e1gi ment\u00e9s k\u00e9sz.
backupStarted=\u00a76A biztons\u00e1gi ment\u00e9s elkezdve.
backUsageMsg=\u00a76Visszat\u00e9r\u00e9s az el\u0151z\u0151 helyre.
balance=\u00a7aEgyenleged\:\u00a7c {0}
balanceOther={0}\u00a7a egyenlege\:\u00a7c {1}
balanceTop=\u00a76Legmagasabb egyenlegek ({0})
banExempt=\u00a74Nem tilthatod ki ezt a j\u00e1t\u00e9kost.
banExemptOffline=\u00a74Nem bannolhatsz Offline j\u00e1t\u00e9kost.
banExemptOffline=\u00a74Nem bannolhatsz offline j\u00e1t\u00e9kost.
banFormat=\u00a74Kitiltva\:\n\u00a7r{0}
banIpJoin=Az IP címed kitiltva a szerverről. Oka: {0}
banJoin=Ki lettél tiltva a szerverről. Oka: {0}
banIpJoin=IP c\u00edmedr\u0151l lett\u00e9l kitiltva a szerverr\u0151l. Oka: {0}
banJoin=Ki lett\u00e9l tiltva a szerverr\u0151l. Oka: {0}
bed=\u00a7o\u00e1gy\u00a7r
bedMissing=\u00a74Az \u00e1gyad nincs be\u00e1ll\u00edtva vagy eltorlaszolt\u00e1k.
bedNull=\u00a7m\u00e1gy\u00a7r
bedSet=\u00a76\u00c1gyi kezd\u00f5hely be\u00e1ll\u00edtva\!
bedSet=\u00a76\u00c1gyi kezd\u0151hely be\u00e1ll\u00edtva\!
bigTreeFailure=\u00a74Nagy fa gener\u00e1l\u00e1si hiba\! Pr\u00f3b\u00e1ld \u00fajra f\u00fcv\u00f6n vagy f\u00f6ld\u00f6n.
bigTreeSuccess=\u00a76Nagy fa legener\u00e1lva.
bigTreeSuccess=\u00a76Nagy fa gener\u00e1lva.
blockList=\u00a76Az Essentials \u00e1tengedte a k\u00f6vetkez\u0151 parancsokat egy m\u00e1sik pluginnak\:
bookAuthorSet=\u00a76Mostant\u00f3l a k\u00f6nyv \u00edr\u00f3ja\: {0}.
bookLocked=\u00a76K\u00f6nyv lez\u00e1rva.
bookTitleSet=\u00a76A k\u00f6nyv c\u00edme mostant\u00f3l\: {0}.
broadcast=\u00a7r\u00a76[\u00a74K\u00f6zvet\u00edt\u00e9s\u00a76]\u00a7a {0}
buildAlert=\u00a74Nincs jogod, hogy \u00e9p\u00edts.
bukkitFormatChanged=A Bukkit verzióformátuma megváltozott. Nem ellenőrzött verzió.
burnMsg=\u00a76Be\u00e1ll\u00edtottad\u00a7c {0}\u00a76-nak/nek a t\u00fczet\u00a7c {1} m\u00e1sodpercre\u00a76.
cannotStackMob=\u00a74Nincs jogod több szörnyet stackelni.
bukkitFormatChanged=A Bukkit verzi\u00f3form\u00e1tuma megv\u00e1ltozott. Nem ellen\u0151rz\u00f6tt verzi\u00f3.
burnMsg=\u00a76Be\u00e1ll\u00edtottad\u00a7c {0}\u00a76-nak/-nek a t\u00fczet\u00a7c {1} m\u00e1sodpercre\u00a76.
cannotStackMob=\u00a74Nincs jogod t\u00f6bb mobot stackelni.
canTalkAgain=\u00a76Besz\u00e9lhetsz \u00fajra.
cantFindGeoIpDB=A GeoIP adatb\u00e1zisa nem tal\u00e1lhat\u00f3\!
cantGamemode=\u00a74Nincs jogod megváltoztani a játék módot {0}
cantGamemode=\u00a74Nincs jogod megv\u00e1ltoztani a j\u00e1t\u00e9k m\u00f3dot {0}
cantReadGeoIpDB=Nem tudom beolvasni a GeoIP adatb\u00e1zist\!
cantSpawnItem=\u00a74Nincs jogod, hogy lek\u00e9rd a k\u00f6vetkez\u0151 cuccot\:\u00a7c {0}\u00a74.
cantSpawnItem=\u00a74Nincs jogod, hogy lek\u00e9rd a k\u00f6vetkez\u0151 t\u00e1rgyat\:\u00a7c {0}\u00a74.
chatTypeAdmin=[A]
chatTypeLocal=[L]
chatTypeSpy=\u00a72[K\u00e9m]\u00a7r
cleaned=J\u00e1t\u00e9kos f\u00e1jlok t\u00f6r\u00f6lve.
cleaning=J\u00e1t\u00e9kos f\u00e1jlok tiszt\u00edt\u00e1sa.
clearInventoryConfirmToggleOff=\u00a76Az eszköztár törlése nem lesz érvényben.
clearInventoryConfirmToggleOn=\u00a76Most meg kell adnod az eszköztár törlését.
commandCooldown=\u00a7cEzt a parancsot nem írhatod {0}.
clearInventoryConfirmToggleOff=\u00a76Az eszk\u00f6zt\u00e1r t\u00f6rl\u00e9se nem lesz \u00e9rv\u00e9nyben.
clearInventoryConfirmToggleOn=\u00a76Most meg kell adnod az eszk\u00f6zt\u00e1r t\u00f6rl\u00e9s\u00e9t.
commandCooldown=\u00a7cEzt a parancsot nem \u00edrhatod {0}.
commandFailed=Parancs {0} sikertelen\:
commandHelpFailedForPlugin=Hiba a seg\u00edts\u00e9g lek\u00e9r\u00e9sben a(z) {0} pluginban
commandNotLoaded=\u00a74Parancs {0} nincs bet\u00f6ltve.
compassBearing=\u00a76Ir\u00e1ny\: {0} ({1} fok).
configFileMoveError=Nem sikerült áthelyezni a config.yml fájlt a mentési helyre.
configFileRenameError=Nem sikerült átnevezni a temp fájlt a config.yml-be.
confirmClear=\u00a77Az eszköztár törléséhez \u00a7lMEGERŐSÍT\u00a77 kérjük, ismételd meg a parancsot: \u00a76{0}
confirmPayment=\u00a77A \u00a7lMEGERŐSÍT\u00a77 fizetés \u00a76{0}\u00a77, kérlek, ismételd meg a prancsot: \u00a76{1}
commandHelpFailedForPlugin=Hiba a seg\u00edts\u00e9g lek\u00e9r\u00e9sben a(z) {0} pluginban.
commandNotLoaded=\u00a74A parancs {0} nincs bet\u00f6ltve.
compassBearing=\u00a76Ir\u00e1ny\: {0} ({1} fok).
configFileMoveError=Nem siker\u00fclt \u00e1thelyezni a config.yml f\u00e1jlt a ment\u00e9si helyre.
configFileRenameError=Nem siker\u00fclt \u00e1tnevezni a temp f\u00e1jlt a config.yml-be.
confirmClear=\u00a77Az eszk\u00f6zt\u00e1r t\u00f6rl\u00e9s\u00e9hez \u00a7lMEGER\u0150S\u00cdT\u00c9S\u00a77 k\u00e9rlek, ism\u00e9teld meg a parancsot: \u00a76{0}
confirmPayment=\u00a77A \u00a7lMEGER\u0150S\u00cdT\u00a77 fizet\u00e9s \u00a76{0}\u00a77, k\u00e9rlek, ism\u00e9teld meg a parancsot: \u00a76{1}
connectedPlayers=\u00a76Csatlakozott j\u00e1t\u00e9kosok\u00a7r
connectionFailed=Nem sikerült megnyitni a kapcsolatot.
cooldownWithMessage=\u00a74Késleltető\: {0}
connectionFailed=Nem siker\u00fclt megnyitni a kapcsolatot.
cooldownWithMessage=\u00a74K\u00e9sleltet\u0151\: {0}
coordsKeyword={0}, {1}, {2}
corruptNodeInConfig=\u00a74Megjegyzés\: A konfigurációs fájlod sérült {0} csomóponttal rendelkezik.
couldNotFindTemplate=\u00a74Nem találtam sablont {0}
createdKit=\u00a76Csomag létrehozva \u00a7c{0} \u00a7c{1} \u00a76bejegyzés és késéssel \u00a7c{2}
createKitFailed=\u00a74Hiba történt a csomag létrehozásakor {0}.
corruptNodeInConfig=\u00a74Megjegyz\u00e9s\: A konfigur\u00e1ci\u00f3s f\u00e1jlod s\u00e9r\u00fclt {0} csom\u00f3ponttal rendelkezik.
couldNotFindTemplate=\u00a74Nem tal\u00e1ltam sablont {0}
createdKit=\u00a76Csomag l\u00e9trehozva \u00a7c{0} \u00a7c{1} \u00a76bejegyz\u00e9s \u00e9s k\u00e9s\u00e9ssel \u00a7c{2}
createKitFailed=\u00a74Hiba t\u00f6rt\u00e9nt a csomag l\u00e9trehoz\u00e1sakor {0}.
createKitSeparator=\u00a7m-----------------------
createKitSuccess=\u00a76Csomag létrehozva: \u00a7f{0}\n\u00a76Késés: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76A fenti hivatkozás tartalmának másolása a config.yml-be.
creatingConfigFromTemplate=Konfigurálás létrehozása sablonból\: {0}
creatingEmptyConfig=Üres config létrehozása\: {0}
createKitSuccess=\u00a76Csomag l\u00e9trehozva: \u00a7f{0}\n\u00a76K\u00e9s\u00e9s: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76A fenti hivatkoz\u00e1s tartalm\u00e1nak m\u00e1sol\u00e1sa a kits.yml.
creatingConfigFromTemplate=Konfigur\u00e1l\u00e1s l\u00e9trehoz\u00e1sa sablonb\u00f3l\: {0}
creatingEmptyConfig=\u00dcres konfig l\u00e9trehoz\u00e1sa\: {0}
creative=kreat\u00edv
currency={0}{1}
currentWorld=\u00a76Jelenlegi világ\:\u00a7c {0}
currentWorld=\u00a76Jelenlegi vil\u00e1g\:\u00a7c {0}
day=nap
days=nap
defaultBanReason=Ki lett\u00e9l tiltva\!
deleteFileError=Nem lehet törölni a fájlt\: {0}
deleteFileError=Nem lehet t\u00f6r\u00f6lni a f\u00e1jlt\: {0}
deleteHome=\u00a76Az otthon\u00a7c {0} \u00a76sikeresen elt\u00e1vol\u00edtva.
deleteJail=\u00a76B\u00f6rt\u00f6n\u00a7c {0} \u00a76sikeresen elt\u00e1vol\u00edtva.
deleteWarp=\u00a76Warp\u00a7c {0} \u00a76sikeresen elt\u00e1vol\u00edtva.
deniedAccessCommand=\u00a7c{0} \u00a74megtagadva a parancs elérését.
denyBookEdit=\u00a74Nem tudod kinyitni ezt a könyvet.
denyChangeAuthor=\u00a74Nem módosíthatod a könyv szerzőjét.
denyChangeTitle=\u00a74Nem módosíthatod a könyv címét.
deniedAccessCommand=\u00a7c{0} \u00a74megtagadva a parancs el\u00e9r\u00e9s\u00e9t.
denyBookEdit=\u00a74Nem tudod kinyitni ezt a k\u00f6nyvet.
denyChangeAuthor=\u00a74Nem m\u00f3dos\u00edthatod a k\u00f6nyv szerz\u0151j\u00e9t.
denyChangeTitle=\u00a74Nem m\u00f3dos\u00edthatod a k\u00f6nyv c\u00edm\u00e9t.
depth=\u00a76Tengeren vagy.
depthAboveSea=\u00a7c {0} \u00a76blokk(ok) tengerszint felett.
depthBelowSea=\u00a7c {0} \u00a76block(ok) tengerszint alatt.
destinationNotSet=A cél nem lett beállítva\!
depthAboveSea=\u00a7c {0} \u00a76blokk(ok) a tengerszint felett.
depthBelowSea=\u00a7c {0} \u00a76blokk(ok) a tengerszint alatt.
destinationNotSet=A c\u00e9l nem lett be\u00e1ll\u00edtva\!
disabled=letiltva
disabledToSpawnMob=\u00a74Ennek a l\u00e9nynek a leh\u00edv\u00e1sa jelenleg le van tiltva a config f\u00e1jlban.
disableUnlimited=\u00a76Letiltva korlátlan számú\u00a7c {0} \u00a76 {1}.
disabledToSpawnMob=\u00a74Ennek a l\u00e9nynek a leh\u00edv\u00e1sa jelenleg le van tiltva a konfig f\u00e1jlban.
disableUnlimited=\u00a76Letiltva korl\u00e1tlan sz\u00e1m\u00fa\u00a7c {0} \u00a76 {1}.
distance=\u00a76T\u00e1vols\u00e1g\: {0}
dontMoveMessage=\u00a76A teleport\u00e1l\u00e1s elkezd\u00f5dik\u00a7c {0}\u00a76 bel\u00fcl. Ne mozogj\!
downloadingGeoIp=GeoIP adatb\u00e1zis let\u00f6lt\u00e9se folyamatban... eltarthat egy kis ideig (ország\: 1.7 MB, város\: 30MB)
dontMoveMessage=\u00a76A teleport\u00e1l\u00e1s elkezd\u0151dik\u00a7c {0}\u00a76 bel\u00fcl. Ne mozogj\!
downloadingGeoIp=GeoIP adatb\u00e1zis let\u00f6lt\u00e9se folyamatban... Eltarthat egy kis ideig (orsz\u00e1g\: 1.7 MB, v\u00e1ros\: 30MB)
duplicatedUserdata=Duplik\u00e1lt felhaszn\u00e1l\u00f3i adatok\: {0} \u00e9s {1}.
durability=\u00a76Ez az eszköz \u00a7c{0}\u00a76 használja balra
east=K
durability=\u00a76Ez az eszk\u00f6z \u00a7c{0}\u00a76 haszn\u00e1ld balra.
editBookContents=\u00a76Mostant\u00f3l tudod szerkeszteni ezt a k\u00f6nyvet.
enabled=bekapcsolva
enabled=enged\u00e9lyezve
enableUnlimited=\u00a76Lek\u00e9rve v\u00e9gtelen mennyis\u00e9g\u0171 \u00a7c {0} \u00a76\u00a7c{1}\u00a76-nak/-nek.
enchantmentApplied=\u00a76A k\u00f6vetkez\u0151 varázs\:\u00a7c {0} \u00a76sikeresen r\u00e1 lett rakva a kezedbe l\u00e9v\u0151 dologra.
enchantmentNotFound=\u00a74A varázslat nem tal\u00e1lhat\u00f3\!
enchantmentPerm=\u00a74Nincs jogod a k\u00f6vetkez\u0151 varázslathoz\:\u00a7c {0}\u00a74.
enchantmentRemoved=\u00a76A k\u00f6vetkez\u0151 enchant\:\u00a7c {0} \u00a76sikeresen le lett v\u00e9ve a kezedbe l\u00e9v\u0151 dologr\u00f3l.
enchantments=\u00a76Varázslatok\:\u00a7r {0}
enchantmentApplied=\u00a76A k\u00f6vetkez\u0151 var\u00e1zs\:\u00a7c {0} \u00a76sikeresen r\u00e1 lett rakva a kezedbe l\u00e9v\u0151 dologra.
enchantmentNotFound=\u00a74A var\u00e1zslat nem tal\u00e1lhat\u00f3\!
enchantmentPerm=\u00a74Nincs jogod a k\u00f6vetkez\u0151 var\u00e1zslathoz\:\u00a7c {0}\u00a74.
enchantmentRemoved=\u00a76A k\u00f6vetkez\u0151 var\u00e1zslat\:\u00a7c {0} \u00a76sikeresen le lett v\u00e9ve a kezedben l\u00e9v\u0151 dologr\u00f3l.
enchantments=\u00a76Var\u00e1zslatok\:\u00a7r {0}
errorCallingCommand=Hiba a parancs h\u00edv\u00e1s\u00e1ban /{0}
errorWithMessage=\u00a7cHiba\:\u00a74 {0}
essentialsHelp1=A fájl törött, és az Essentials nem tudja megnyitni. Az Essentials most le van tiltva. Ha nem tudja kijavítani a fájlt, akkor menjen http\://tiny.cc/EssentialsChat
essentialsHelp2=A fájl törött, és az Essentials nem tudja megnyitni. Az Essentials most le van tiltva. Ha nem tudja kijavítani a fájlt, írja be /essentialshelp a játékba vagy menjen http\://tiny.cc/EssentialsChat
essentialsHelp1=A f\u00e1jl t\u00f6r\u00f6tt, \u00e9s az Essentials nem tudja megnyitni. Az Essentials most le van tiltva. Ha nem tudja kijav\u00edtani a f\u00e1jlt, akkor menjen http\://tiny.cc/EssentialsChat
essentialsHelp2=A f\u00e1jl t\u00f6r\u00f6tt, \u00e9s az Essentials nem tudja megnyitni. Az Essentials most le van tiltva. Ha nem tudja kijav\u00edtani a f\u00e1jlt, \u00edrja be /essentials help a j\u00e1t\u00e9kban vagy menjen http\://tiny.cc/EssentialsChat
essentialsReload=\u00a76Essentials \u00fajrat\u00f6ltve\u00a7c {0}.
exp=\u00a7c{0}\u00a7c {1} \u00a76exp (level\u00a7c {2}\u00a76) és kell\u00a7c {3} \u00a76több xp a szintlépéshez.
expSet=\u00a7c{0} \u00a76most van\u00a7c {1} \u00a76exp.
exp=\u00a7c{0}\u00a7c {1} \u00a76xp (szint\u00a7c {2}\u00a76) \u00e9s kell\u00a7c {3} xp a szintl\u00e9p\u00e9shez.
expSet=\u00a7c{0} \u00a76most van\u00a7c {1} \u00a76xp.
extinguish=\u00a76Eloltottad magad.
extinguishOthers=\u00a76Eloltottad {0}\u00a76-t.
failedToCloseConfig=Nem siker\u00fclt bez\u00e1rni a config f\u00e1jlt {0}.
failedToCreateConfig=Nem siker\u00fclt a config f\u00e1ljt l\u00e1trehozni {0}.
failedToWriteConfig=Nem siker\u00fclt a config f\u00e1jlba \u00edrni {0}.
failedToCloseConfig=Nem siker\u00fclt bez\u00e1rni a konfig f\u00e1jlt {0}.
failedToCreateConfig=Nem siker\u00fclt a konfig f\u00e1ljt l\u00e1trehozni {0}.
failedToWriteConfig=Nem siker\u00fclt a konfig f\u00e1jlba \u00edrni {0}.
false=\u00a74hamis\u00a7r
feed=\u00a76Meg lett\u00e9l etetve.
feedOther=\u00a76Megetetted {0}\u00a76-t.
fileRenameError=A(z) {0} f\u00e1jlt nem siker\u00fclt \u00e1tnevezni\!
fireworkColor=\u00a74Nem val\u00f3s param\u00e9rtert adt\u00e1l meg a t\u00f6ltetnek, el\u0151sz\u00f6r a sz\u00edn kell.
fireworkEffectsCleared=\u00a76Az \u00f6sszes effekt elt\u00e1vol\u00edtva.
fireworkEffectsCleared=\u00a76Az \u00f6sszes hat\u00e1s elt\u00e1vol\u00edtva.
fireworkSyntax=\u00a76T\u00fczij\u00e1t\u00e9k param\u00e9terek\:\u00a7c color\:<color> [fade\:<color>] [shape\:<shape>] [effect\:<effect>]\n\u00a76Ahhoz, hogy t\u00f6bb adatot adj meg, vessz\u0151vel kell elv\u00e1lasztanod. pl\: \u00a7cred,blue,pink\n\u00a76Alakzatok\:\u00a7c star, ball, large, creeper, burst \u00a76Effektek\:\u00a7c trail, twinkle.
flying=rep\u00fcl
flyMode=\u00a76Rep\u00fcl\u0151 m\u00f3d\u00a7c {0} \u00a76{1} \u00a76j\u00e1t\u00e9kosnak.
@@ -142,13 +143,13 @@ gameModeInvalid=\u00a74Meg kell adnod egy \u00e9rv\u00e9nyes j\u00e1t\u00e9kost/
gcfree=\u00a76Szabad mem\u00f3ria\:\u00a7c {0} MB.
gcmax=\u00a76Maximum mem\u00f3ria\:\u00a7c {0} MB.
gctotal=\u00a76Lefoglalt mem\u00f3ria\:\u00a7c {0} MB.
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76"\: \u00a7c{2}\u00a76 chunk, \u00a7c{3}\u00a76 entit\u00e1s, \u00a7c{4}\u00a76 blokkok.
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76"\: \u00a7c{2}\u00a76 darab, \u00a7c{3}\u00a76 entit\u00e1s, \u00a7c{4}\u00a76 blokk.
geoipJoinFormat=\u00a7c{0} \u00a76\u00a7c{1}\u00a76-b\u00f3l/b\u0151l csatlakozott.
geoIpUrlEmpty=GeoIP let\u00f6lt\u00e9si URL hi\u00e1nyzik.
geoIpUrlInvalid=GeoIP let\u00f6lt\u00e9si URL \u00e9rv\u00e9nytelen.
givenSkull=\u00a76Megkaptad \u00a7c{0}\u00a76 fej\u00e9t.
giveSpawn=\u00a7c{0} \u00a76darab\u00a7c {1} adva\u00a7c {2}\u00a76 j\u00e1t\u00e9kosnak.
giveSpawnFailure=\u00a74Nincs elég hely, \u00a7c{0} \u00a7c{1} \u00a74elveszett.
giveSpawnFailure=\u00a74Nincs el\u00e9g hely, \u00a7c{0} \u00a7c{1} \u00a74elveszett.
godDisabledFor=\u00a7cletiltva\u00a76\u00a7c {0}\u00a76-nak/-nek
godEnabledFor=\u00a74enged\u00e9lyezve\u00a7c {0}\u00a76-nak/-nek
godMode=\u00a76Isten m\u00f3d\u00a7c {0}\u00a76.
@@ -170,8 +171,8 @@ helpMatching=\u00a76Egyez\u0151 parancsok "\u00a7c{0}\u00a76"\:
helpOp=\u00a74[Seg\u00edts\u00e9g]\u00a7r \u00a76{0}\:\u00a7r {1}
helpPlugin=\u00a74{0}\u00a7r\: Plugin seg\u00edts\u00e9g\: /help {1}
holdBook=\u00a74Nincs a kezedben \u00edrhat\u00f3 k\u00f6nyv.
holdFirework=\u00a74A kezedben kell tartanod a t\u00fczij\u00e1t\u00e9kot, hogy hozz\u00e1add az effekteket.
holdPotion=\u00a74Egy b\u00e1jitalt kell a kezedben tartanod, hogy effekteket adhass hozz\u00e1.
holdFirework=\u00a74A kezedben kell tartanod a t\u00fczij\u00e1t\u00e9kot, hogy hozz\u00e1add a hat\u00e1st.
holdPotion=\u00a74Egy b\u00e1jitalt kell a kezedben tartanod, hogy hat\u00e1st adhass hozz\u00e1.
holeInFloor=\u00a74Lyuk a padl\u00f3ban\!
homes=\u00a76Otthonok\:\u00a7r {0}
homeSet=\u00a76Az otthon be\u00e1ll\u00edtva.
@@ -179,211 +180,215 @@ hour=\u00f3ra
hours=\u00f3ra
ignoredList=\u00a76Mell\u0151zve\:\u00a7r {0}
ignoreExempt=\u00a74Nem hagyhatod figyelmen k\u00edv\u0171l ezt a j\u00e1t\u00e9kost.
ignorePlayer=\u00a76Figyelmen kívűl hagytad\u00a7c {0} \u00a76mostantól.
illegalDate=Illegális dátumformátum.
ignorePlayer=\u00a76Figyelmen k\u00edv\u0171l hagytad\u00a7c {0} \u00a76mostant\u00f3l.
illegalDate=Illeg\u00e1lis d\u00e1tumform\u00e1tum.
infoChapter=\u00a76V\u00e1lassz fejezetet\:
infoChapterPages=\u00a7e ---- \u00a76{0} \u00a7e--\u00a76 Oldal \u00a7c{1}\u00a76 \u00a7c{2}-b\u00f3l/b\u0151l \u00a7e----
infoPages=\u00a7e ---- \u00a76{2} \u00a7e--\u00a76 Oldal \u00a7c{0}\u00a76/\u00a7c{1} \u00a7e----
infoUnknownChapter=\u00a74Ismeretlen fejezet.
insufficientFunds=\u00a74Nem áll rendelkezésre elegendő forrás.
invalidBanner=\u00a74Érvénytelen banner szintaxis.
invalidCharge=\u00a74Érvénytelen díj.
insufficientFunds=\u00a74Nem \u00e1ll rendelkez\u00e9sre elegend\u0151 forr\u00e1s.
invalidBanner=\u00a74\u00c9rv\u00e9nytelen banner szintaxis.
invalidCharge=\u00a74\u00c9rv\u00e9nytelen d\u00edj.
invalidFireworkFormat=\u00a76Ez az opci\u00f3\: \u00a74{0} \u00a76nem \u00e9rv\u00e9nyes \u00a74{1}\u00a76-ra/-re.
invalidHome=\u00a74Otthon\u00a7c {0} \u00a74nem létezik\!
invalidHomeName=\u00a74Érvénytelen otthon név\!
invalidItemFlagMeta=\u00a74Érvénytelen elem zászló meta\: \u00a7c{0}\u00a74.
invalidMob=\u00a74Hat\u00e1rozatlan szörny t\u00edpus
invalidNumber=Érvénytelen szám.
invalidPotion=\u00a74Érvénytelen főzet.
invalidPotionMeta=\u00a74Érvénytelen főzet meta\: \u00a7c{0}\u00a74.
invalidSignLine=\u00a74Sor\u00a7c {0} \u00a74a táblán érvénytelen.
invalidHome=\u00a74Otthon\u00a7c {0} \u00a74nem l\u00e9tezik\!
invalidHomeName=\u00a74\u00c9rv\u00e9nytelen otthon n\u00e9v\!
invalidItemFlagMeta=\u00a74\u00c9rv\u00e9nytelen elem z\u00e1szl\u00f3 meta\: \u00a7c{0}\u00a74.
invalidMob=\u00a74Hat\u00e1rozatlan l\u00e9ny t\u00edpus.
invalidNumber=\u00c9rv\u00e9nytelen sz\u00e1m.
invalidPotion=\u00a74\u00c9rv\u00e9nytelen f\u0151zet.
invalidPotionMeta=\u00a74\u00c9rv\u00e9nytelen f\u0151zet meta\: \u00a7c{0}\u00a74.
invalidSignLine=\u00a74Sor\u00a7c {0} \u00a74a t\u00e1bl\u00e1n \u00e9rv\u00e9nytelen.
invalidSkull=\u00a74K\u00e9rlek, j\u00e1t\u00e9kos fejet tarts a kezedben.
invalidWarpName=\u00a74Nincs ilyen warp\!
invalidWorld=\u00a74Érvénytelen világ.
invalidWorld=\u00a74\u00c9rv\u00e9nytelen vil\u00e1g.
inventoryClearFail=\u00a74{0}-nak/-nek nincs \u00a7c{1} \u00a74db \u00a7c{2}\u00a74-ja/-je.
inventoryClearingAllArmor=\u00a76Az \u00f6sszes cucc \u00e9s felszerel\u00e9s t\u00f6r\u00f6lve lett {0}\u00a76 eszk\u00f6zt\u00e1r\u00e1b\u00f3l.
inventoryClearingAllArmor=\u00a76Az \u00f6sszes dolog \u00e9s felszerel\u00e9s t\u00f6r\u00f6lve lett {0}\u00a76 eszk\u00f6zt\u00e1r\u00e1b\u00f3l.
inventoryClearingAllItems=\u00a76Az \u00f6sszes dolog t\u00f6r\u00f6lve lett {0} \u00a76eszk\u00f6zt\u00e1r\u00e1b\u00f3l.
inventoryClearingAllStack=\u00a76T\u00f6r\u00f6lve minden \u00a7c{0} {1}\u00a76 eszk\u00f6zt\u00e1r\u00e1b\u00f3l.
inventoryClearingFromAll=\u00a76\u00d6sszes ember eszk\u00f6zt\u00e1r\u00e1nak \u00fcr\u00edt\u00e9se...
inventoryClearingFromAll=\u00a76\u00d6sszes j\u00e1t\u00e9kos eszk\u00f6zt\u00e1r\u00e1nak \u00fcr\u00edt\u00e9se...
inventoryClearingStack=\u00a76Elt\u00e1vol\u00edtva \u00a7c{0} \u00a76db \u00a7c{1} \u00a76{2}\u00a76 eszk\u00f6zt\u00e1r\u00e1b\u00f3l.
is=is
isIpBanned=\u00a76IP \u00a7c{0} \u00a76m\u00e1r ki van bannolva.
is=van
isIpBanned=\u00a76IP \u00a7c{0} \u00a76m\u00e1r ki van tiltva.
internalError=\u00a7cBels\u00f5 hiba t\u00f6rt\u00e9nt a parancs v\u00e9grehajt\u00e1sa k\u00f6zben.
itemCannotBeSold=\u00a74Ezt nem adhatod el a szerveren.
itemMustBeStacked=\u00a74A tárgyat kötegben kell értékesíteni. A 2s mennyisége két stack lenne, stb.
itemMustBeStacked=\u00a74A t\u00e1rgyat k\u00f6tegben kell \u00e9rt\u00e9kes\u00edteni. A 2s mennyis\u00e9ge k\u00e9t stack lenne, stb.
itemNames=\u00a76T\u00e1rgy r\u00f6vid nevei\:\u00a7r {0}
itemNotEnough1=\u00a74Nincs el\u00e9g eladni val\u00f3 t\u00e1rgyad.
itemNotEnough2=\u00a76Ha el akarod adni az \u00f6sszes ilyen t\u00e1rgyat \u00edrd be /sell t\u00e1rgyn\u00e9v.
itemNotEnough3=\u00a76/sell itemname -1 minden elemet elad, de csak egy tételt stb.
itemsConverted=\u00a76Minden elemet blokkokká alakított.
itemsCsvNotLoaded=Nem sikerült betölteni az items.csv\!
itemSellAir=T\u00e9nyleg el akartad adni a Leveg\u00f5t? Vegy\u00e9l a kezedbe valami t\u00e1rgyat.
itemsNotConverted=\u00a74Nincs olyan elem, amely blokkká alakítható.
itemNotEnough2=\u00a76Ha el szeretn\u00e9d adni az \u00f6sszes ilyen t\u00e1rgyat, \u00edrd be a /sell <t\u00e1rgyn\u00e9v> parancsot.
itemNotEnough3=\u00a76/sell itemname -1 mindet elad, de csak egy elemet, stb.
itemsConverted=\u00a76\u00c1talak\u00edtva minden elemet blokkokk\u00e1.
itemsCsvNotLoaded=Nem siker\u00fclt bet\u00f6lteni az items.csv\!
itemSellAir=T\u00e9nyleg el akartad adni a leveg\u0151t? Vegy\u00e9l a kezedbe valami t\u00e1rgyat.
itemsNotConverted=\u00a74Nincs olyan elem, amely blokk\u00e1 alak\u00edthat\u00f3.
itemSold=\u00a7aEladva \u00a7c{0} \u00a7a({1} {2} {3} minden).
itemSoldConsole=\u00a7a{0} \u00a7aeladva {1} \u00a7a{2} \u00a7a({3} elem {4} minden).
itemSpawn=\u00a76Lek\u00e9rt\u00e9l\u00a7c {0} \u00a76db \u00a7c {1}-t
itemType=\u00a76T\u00e1rgy\:\u00a7c {0} \u00a76-\u00a7c {1}
jailAlreadyIncarcerated=\u00a74A személy már börtönben van\:\u00a7c {0}
jailList=\u00a76Börtönök\:\u00a7r {0}
jailMessage=\u00a74A bűncselekményt megteszed, akkor az idő.
itemType=\u00a76T\u00e1rgy\:\u00a7c {0}
jailAlreadyIncarcerated=\u00a74A szem\u00e9ly m\u00e1r b\u00f6rt\u00f6nben van\:\u00a7c {0}
jailList=\u00a76B\u00f6rt\u00f6n\u00f6k\:\u00a7r {0}
jailMessage=\u00a74A b\u0171ncselekm\u00e9nyt megteszed, akkor itt az id\u0151.
jailNotExist=\u00a74Nincs ilyen b\u00f6rt\u00f6n.
jailReleased=\u00a7c{0}\u00a76 kiengedve a b\u00f6rt\u00f6nb\u00f5l.
jailReleased=\u00a7c{0}\u00a76 kiengedve a b\u00f6rt\u00f6nb\u0151l.
jailReleasedPlayerNotify=\u00a76Kiengedtek a b\u00f6rt\u00f6nb\u0151l\!
jailSentenceExtended=\u00a76B\u00f6rt\u00f6n ideje mostant\u00f3l\: {0}
jailSet=\u00a7c{0} \u00a76 b\u00f6rt\u00f6n be\u00e1ll\u00edtva.
jumpError=\u00a74Ez bántani fogja a számítógép agyát.
jumpError=\u00a74Ez b\u00e1ntani fogja a sz\u00e1m\u00edt\u00f3g\u00e9p agy\u00e1t.
kickDefault=Ki lett\u00e9l kickelve.
kickedAll=\u00a74\u00d6sszes j\u00e1t\u00e9kos kickelve a szerverr\u00f5l.
kickExempt=\u00a74\u00d5t nem kickelheted.
kickedAll=\u00a74\u00d6sszes j\u00e1t\u00e9kos kickelve a szerverr\u0151l.
kickExempt=\u00a74\u0151t nem kickelheted.
kill=\u00a7c{0}\u00a76 meg\u00f6lve.
killExempt=\u00a74Nem \u00f6lheted meg \u00a7c{0}\u00a74-t.
kitContains=\u00a76A csomag \u00a7c{0} \u00a76tartalmaz:
kitContains=\u00a76A(z) \u00a7c{0} \u00a76csomag tartalmaz:
kitCost=\ \u00a77\u00a7o({0})\u00a7r
kitDelay=\u00a7m{0}\u00a7r
kitError=\u00a74Nincs érvényes csomag.
kitError2=\u00a74Ez a csomag nem megfelelő. Lépj kapcsolatba egy rendszergazdával.
kitError=\u00a74Nincs el\u00e9rhet\u0151 csomag.
kitError2=\u00a74Ez a csomag nem megfelel\u0151. L\u00e9pj kapcsolatba egy adminisztr\u00e1torral.
kitGiveTo=\u00a76A(z)\u00a7c {0}\u00a76 csomag lek\u00e9rve \u00a7c{1}\u00a76-nak/-nek.
kitInvFull=\u00a74Az eszk\u00f6zt\u00e1rad megtelt, \u00edgy a f\u00f6ldre kapod meg a csomagot.
kitItem=\u00a76- \u00a7f{0}
kitNotFound=\u00a74Nincs ilyen csomag.
kitOnce=\u00a74Nem tudod újra használni a csomagot.
kitOnce=\u00a74Nem tudod \u00fajra haszn\u00e1lni a csomagot.
kitReceive=\u00a76Megkaptad a(z)\u00a7c {0}\u00a76 csomagot.
kits=\u00a76Csomagok\:\u00a7r {0}
kitTimed=\u00a74Ezt a csomagot nem haszn\u00e1hatod m\u00e9g\u00a7c {0}\u00a74-ig.
leatherSyntax=\u00a76Bőrszín szintaxis\: color\:<red>,<green>,<blue> eg\: color\:255,0,0.
leatherSyntax=\u00a76B\u0151rsz\u00edn szintaxis\: color\:<red>,<green>,<blue> pl\: color\:255,0,0.
lightningSmited=\u00a76A vill\u00e1m les\u00fajtott r\u00e1d\!
lightningUse=\u00a76Vill\u00e1m lesujt\u00e1sa\u00a7c {0}\u00a76-ra/re
lightningUse=\u00a76Vill\u00e1m lesujt\u00e1sa\u00a7c {0}\u00a76-ra/re.
listAfkTag=\u00a77[AFK]\u00a7r
listAmount=\u00a76Jelenleg \u00a7c{0}\u00a76 j\u00e1t\u00e9kos van fent a maxim\u00e1lis \u00a7c{1}\u00a76 j\u00e1t\u00e9kosb\u00f3l.
listAmountHidden=\u00a76Jelenleg \u00a7c{0}\u00a76/{1}\u00a76 j\u00e1t\u00e9kos van fent a maxim\u00e1lis \u00a7c{2}\u00a76 j\u00e1t\u00e9kosb\u00f3l.
listGroupTag={0}\u00a7r\:
listGroupTag={0}\u00a7r\:
listHiddenTag=\u00a77[REJTETT]\u00a7r
loadWarpError=\u00a74Nem sikerült a warp betöltése {0}.
localFormat=[L]<{0}> {1}
loadWarpError=\u00a74Nem siker\u00fclt a warp bet\u00f6lt\u00e9se {0}.
localFormat=[H]<{0}> {1}
localNoOne=
mailClear=\u00a76Hogy megjel\u00f6ld olvasottk\u00e9nt \u00edrd be a\u00a7c /mail clear \u00a76parancsot.
mailClear=\u00a76Hogy t\u00f6r\u00f6ld az \u00fczenetet, \u00edrd be a\u00a7c /mail clear \u00a76parancsot.
mailCleared=\u00a76\u00dczenetek t\u00f6r\u00f6lve\!
mailDelay=T\u00fal sok lev\u00e9l lett elk\u00fcldve az utols\u00f3 percben. Maximum\: {0}
mailFormat=\u00a76[\u00a7r{0}\u00a76] \u00a7r{1}
mailMessage={0}
mailSent=\u00a76Lev\u00e9l elk\u00fcldve\!
mailSentTo=\u00a7c{0}\u00a76 elküldtük a következő levelet\:
mailSentTo=\u00a7c{0}\u00a76 elk\u00fcldt\u00fck a k\u00f6vetkez\u0151 levelet\:
mailTooLong=\u00a74Az \u00fczeneted t\u00fal hossz\u00fa. Pr\u00f3b\u00e1ld 1000 karakter alatt.
markedAsAway=\u00a76Már kijelölted, mint távol.
markedAsNotAway=\u00a76Már nem jelölted ki.
markMailAsRead=\u00a76Hogy megjel\u00f6ld olvasottk\u00e9nt \u00edrd be a\u00a7c /mail clear \u00a76parancsot.
markedAsAway=\u00a76M\u00e1r kijel\u00f6lted, mint t\u00e1vol.
markedAsNotAway=\u00a76M\u00e1r nem jel\u00f6lted ki.
markMailAsRead=\u00a76Hogy t\u00f6r\u00f6ld az \u00fczenetet, \u00edrd be a\u00a7c /mail clear \u00a76parancsot.
matchingIPAddress=\u00a76Az al\u00e1bbi j\u00e1t\u00e9kosok csatlakoztak utolj\u00e1ra err\u0151l az IP c\u00edmr\u0151l\:
maxHomes=\u00a74Nem állíthatsz be több\u00a7c {0} \u00a74otthont.
maxHomes=\u00a74Nem \u00e1ll\u00edthatsz be t\u00f6bb\u00a7c {0} \u00a74otthont.
maxMoney=\u00a74Ez a tranzakci\u00f3 meghaladja a be\u00e1ll\u00edtott maxim\u00e1lis tranzakci\u00f3 hat\u00e1r\u00e9rt\u00e9k\u00e9t.
mayNotJail=\u00a74\u00d5t nem rakhatod b\u00f6rt\u00f6nbe\!
mayNotJail=\u00a74\u0151t nem teheted b\u00f6rt\u00f6nbe\!
mayNotJailOffline=\u00a74Nem b\u00f6rt\u00f6n\u00f6zhetsz be Offline j\u00e1t\u00e9kost.
me=\u00e9n
minimumPayAmount=\u00a7cA minimális összeg, amit fizethetsz, {0}}.
minimumPayAmount=\u00a7cA minim\u00e1lis \u00f6sszeg, amit fizethetsz, {0}.
minute=perc
minutes=perc
missingItems=\u00a74Nincs \u00a7c{0} db {1}\u00a74-od.
mobDataList=\u00a76\u00c9rv\u00e9nyes adatok\:\u00a7r {0}
mobsAvailable=\u00a76Szörnek\:\u00a7r {0}
mobSpawnError=\u00a74Hiba a szörny-idéző megváltoztatása közben.
mobSpawnLimit=A kiszolgálói limitre korlátozott szörny mennyiség.
mobSpawnTarget=\u00a74A célblokknak szörny idézőnek kell lennie.
moneyRecievedFrom=\u00a7a{0}-t kapt\u00e1l {1}\u00a7a-t\u00f3l/t\u00f5l.
moneySentTo=\u00a7a{0}-t k\u00fcldt\u00e9l {1}\u00a7a-nak/nek.
mobsAvailable=\u00a76Enit\u00e1sok\:\u00a7r {0}
mobSpawnError=\u00a74Hiba az entit\u00e1s-id\u00e9z\u0151 megv\u00e1ltoztat\u00e1sa k\u00f6zben.
mobSpawnLimit=A kiszolg\u00e1l\u00f3i limitre korl\u00e1tozott entit\u00e1s mennyis\u00e9g meghaladva.
mobSpawnTarget=\u00a74A c\u00e9lblokknak entit\u00e1s id\u00e9z\u0151nek kell lennie.
moneyRecievedFrom=\u00a7a{0}-t kapt\u00e1l {1}\u00a7a-t\u00f3l/t\u0151l.
moneySentTo=\u00a7a{0}-t k\u00fcldt\u00e9l {1}\u00a7a-nak/-nek.
month=h\u00f3nap
months=h\u00f3nap
moreThanZero=\u00a74A mennyiségeknek 0-nál nagyobbnak kell lenniük.
moveSpeed=\u00a76Sebess\u00e9g típus\: {0}, Sebess\u00e9g\:\u00a7c {1}\u00a76-re/ra {2}\u00a76-nak/-nek.
msgDisabled=\u00a76Üzenetek fogadása \u00a7cdisabled\u00a76.
msgDisabledFor=\u00a76Üzenetek fogadása \u00a7cletiltva \u00a76 \u00a7c{0}\u00a76.
msgEnabled=\u00a76Üzenetek fogadása \u00a7cengedélyezve\u00a76.
msgEnabledFor=\u00a76Üzenetek fogadása \u00a7cengedélyezve \u00a76 \u00a7c{0}\u00a76.
moreThanZero=\u00a74A mennyis\u00e9geknek 0-n\u00e1l nagyobbnak kell lenni\u00fck.
moveSpeed=\u00a76Sebess\u00e9g t\u00edpus\: {0}, Sebess\u00e9g\:\u00a7c {1}\u00a76-ra/-re {2}\u00a76-nak/-nek.
msgDisabled=\u00a76\u00dczenetek fogad\u00e1sa \u00a7cletiltva\u00a76.
msgDisabledFor=\u00a76\u00dczenetek fogad\u00e1sa \u00a7cletiltva \u00a76 \u00a7c{0}\u00a76.
msgEnabled=\u00a76\u00dczenetek fogad\u00e1sa \u00a7cenged\u00e9lyezve\u00a76.
msgEnabledFor=\u00a76\u00dczenetek fogad\u00e1sa \u00a7cenged\u00e9lyezve \u00a76 \u00a7c{0}\u00a76.
msgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a7r{2}
msgIgnore=\u00a7c{0} \u00a74az üzenetek letiltva.
msgIgnore=\u00a7c{0} \u00a74az \u00fczenetek letiltva.
multipleCharges=\u00a74Nem alkalmazhatsz t\u00f6bb t\u00f6ltetet enn\u00e9l a t\u00fczij\u00e1t\u00e9kn\u00e1l.
multiplePotionEffects=\u00a74Ezzel a bájitalal több hatás nem alkalmazható.
multiplePotionEffects=\u00a74Ezzel a b\u00e1jitallal t\u00f6bb hat\u00e1s nem alkalmazhat\u00f3.
mutedPlayer=\u00a76\u00a7c{0} \u00a76len\u00e9m\u00edtva.
mutedPlayerFor=\u00a76\u00a7c{0} \u00a76len\u00e9m\u00edtva\u00a7c {1}\u00a76-ra/-re.
mutedUserSpeaks={0} megpróbált beszélni, de elnémítva.
muteExempt=\u00a74Nem n\u00e9m\u00edthatod \u00f5t.
mutedUserSpeaks={0} megpr\u00f3b\u00e1lt besz\u00e9lni, de eln\u00e9m\u00edtva: {1}
muteExempt=\u00a74Nem n\u00e9m\u00edthatod \u0151t.
muteExemptOffline=\u00a74Nem n\u00e9m\u00edthatsz le Offline j\u00e1t\u00e9kost.
muteNotify=\u00a7c{0} \u00a76len\u00e9m\u00edtotta \u00a7c{1}\u00a76-t.
muteNotifyFor=\u00a7c{0} \u00a76játékos elnémítva \u00a7c{1}\u00a76 \u00a7c {2}\u00a76.
muteNotifyFor=\u00a7c{0} \u00a76j\u00e1t\u00e9kos eln\u00e9m\u00edtva \u00a7c{1}\u00a76 \u00a7c {2}\u00a76.
nearbyPlayers=\u00a76J\u00e1t\u00e9kosok k\u00f6zelbe\:\u00a7r {0}
negativeBalanceError=\u00a74A felhasználó nem jogosult negatív egyenlegre.
nickChanged=\u00a76A becenév megv\u00e1ltoztatva.
nickDisplayName=\u00a74Engedélyezned kell a change-displayname az Essentials konfigurációban.
negativeBalanceError=\u00a74A felhaszn\u00e1l\u00f3 nem jogosult negat\u00edv egyenlegre.
nickChanged=\u00a76A becen\u00e9v megv\u00e1ltoztatva.
nickDisplayName=\u00a74Enged\u00e9lyezned kell a change-displayname az Essentials konfigur\u00e1ci\u00f3ban.
nickInUse=\u00a74Ez a n\u00e9v m\u00e1r haszn\u00e1ltban van.
nickNamesAlpha=\u00a74A becenevek alfanumerikus karakterekből kell, hogy álljanak.
nickNamesOnlyColorChanges=\u00a74A beceneveknek csak a színeik változnak.
nickNamesAlpha=\u00a74A becenevek alfanumerikus karakterekb\u0151l kell, hogy \u00e1lljanak.
nickNamesOnlyColorChanges=\u00a74A beceneveknek csak a sz\u00edneik v\u00e1ltoznak.
nickNoMore=\u00a76Nincs t\u00f6bb\u00e9 beceneved.
nickSet=\u00a76A beceneved mostant\u00f3l\: \u00a7c{0}.
nickTooLong=\u00a76Ez a becen\u00e9v t\u00fal hossz\u00fa.
noAccessCommand=\u00a74Nincs jogod ehhez\!.
noAccessCommand=\u00a74Nincs jogod ehhez\!
noAccessPermission=\u00a74Nincs jogod a k\u00f6vetkez\u0151h\u00f6z\: \u00a7c{0}\u00a74.
noBreakBedrock=\u00a74Nincs engedélyed kitröni az alapkőt.
noBreakBedrock=\u00a74Nincs enged\u00e9lyed kit\u00f6rni az alapk\u0151t.
noDestroyPermission=\u00a74Nincs jogod, hogy ki\u00fcsd ezt\: \u00a7c{0}\u00a74.
noDurability=\u00a74Ez a tétel nem rendelkezik tartóssággal.
noGodWorldWarning=\u00a74Vigy\u00e1zat\! Az Isten m\u00f3d ebben a vil\u00e1gba le van tiltva\!
noHelpFound=\u00a74Nincsenek megfelelő parancsok.
noHomeSetPlayer=\u00a76A játékos nem állított be otthont.
noDurability=\u00a74Ez az elem nem rendelkezik tart\u00f3ss\u00e1ggal.
northEast=\u00c9K
north=\u00c9
northWest=\u00c9NY
noGodWorldWarning=\u00a74Vigy\u00e1zat\! Az Isten m\u00f3d ebben a vil\u00e1gban le van tiltva\!
noHelpFound=\u00a74Nincsenek megfelel\u0151 parancsok.
noHomeSetPlayer=\u00a76A j\u00e1t\u00e9kos nem \u00e1ll\u00edtott be otthont.
noIgnored=\u00a76Nem hagysz figyelmen k\u00edv\u00fcl senkit.
noJailsDefined=\u00a76Nincsenek börtönök.
noJailsDefined=\u00a76Nincsenek b\u00f6rt\u00f6n\u00f6k.
noKitGroup=\u00a74Nincs jogod ehhez a csomaghoz.
noKitPermission=\u00a74Szükséged van engedélyre \u00a7c{0}\u00a74 a csomag használatára.
noKits=\u00a76Még nincsenek csomagok.
noKitPermission=\u00a74Sz\u00fcks\u00e9ged van enged\u00e9lyre \u00a7c{0}\u00a74 a csomag haszn\u00e1lat\u00e1ra.
noKits=\u00a76M\u00e9g nincsenek csomagok.
noLocationFound=\u00a74Nincs ilyen \u00e9rv\u00e9nyes hely.
noMail=\u00a76Nincs leveled.
noMatchingPlayers=\u00a76Nincs megfelelő játékos.
noMatchingPlayers=\u00a76Nincs megfelel\u0151 j\u00e1t\u00e9kos.
noMetaFirework=\u00a74Nincs jogod, hogy alkalmazd ezt a t\u00fczij\u00e1t\u00e9k adatot.
noMetaJson=JSON Metadata nem t\u00e1mogatott a Bukkit ezen verzi\u00f3j\u00e1ban.
noMetaPerm=\u00a74Nincs jogod a jelentkezéshez \u00a7c{0}\u00a74 meta erre a tételre.
none=none
noMetaJson=A JSON Metadata nem t\u00e1mogatott a Bukkit ezen verzi\u00f3j\u00e1ban.
noMetaPerm=\u00a74Nincs jogod a jelentkez\u00e9shez \u00a7c{0}\u00a74 meta erre az elemre.
none=senki
noNewMail=\u00a76Nincs \u00faj leveled.
noPendingRequest=\u00a74Nincs folyamatban lévő kérelmed.
noPendingRequest=\u00a74Nincs folyamatban l\u00e9v\u0151 k\u00e9relmed.
noPerm=\u00a74Nincs \u00a7c{0}\u00a74 jog.
noPermissionSkull=\u00a74Nincs jogod megv\u00e1ltoztatni ezt a fejet.
noPermToAFKMessage=\u00a74Nincs jogod AFK üzenet beállítására.
noPermToSpawnMob=\u00a74Nincs jogod leidézni ezt a szörnyet.
noPlacePermission=\u00a74Nincs jogod egy blokknak a tábla melletti elhelyezésére.
noPotionEffectPerm=\u00a74Nincs jogod a főzethatás alkalmazására \u00a7c{0} \u00a74ennél a főzetnél.
noPowerTools=\u00a76Nincsenek hozzárendelve elektromos szerszámok.
notAcceptingPay=\u00a74{0} \u00a74nem fogad el fizetést.
notAllowedToQuestion=\u00a74Nem vagy jogosult a kérdés használatára.
notAllowedToShout=\u00a74Nincs jogosultságod kiabálni.
notEnoughExperience=\u00a74Nincs elég tapasztalatod.
noPermToAFKMessage=\u00a74Nincs jogod AFK \u00fczenet be\u00e1ll\u00edt\u00e1s\u00e1ra.
noPermToSpawnMob=\u00a74Nincs jogod leid\u00e9zni ezt a l\u00e9nyt.
noPlacePermission=\u00a74Nincs jogod egy blokknak a t\u00e1bla melletti elhelyez\u00e9s\u00e9re.
noPotionEffectPerm=\u00a74Nincs jogod a f\u0151zethat\u00e1s alkalmaz\u00e1s\u00e1ra \u00a7c{0} \u00a74enn\u00e9l a f\u0151zetn\u00e9l.
noPowerTools=\u00a76Nincsenek hozz\u00e1rendelve elektromos szersz\u00e1mok.
notAcceptingPay=\u00a74{0} \u00a74nem fogad el fizet\u00e9st.
notAllowedToQuestion=\u00a74Nem vagy jogosult a k\u00e9rd\u00e9s haszn\u00e1lat\u00e1ra.
notAllowedToShout=\u00a74Nincs jogod k\u00f6zvet\u00edteni.
notEnoughExperience=\u00a74Nincs el\u00e9g tapasztalatod.
notEnoughMoney=\u00a74Erre nincs p\u00e9nzed.
notFlying=nem rep\u00fcl
nothingInHand=\u00a74Nincs semmi a kezedben.
notRecommendedBukkit=\u00a74* \! * A Bukkit verzió nem az Essentials ajánlott építése.
notSupportedYet=Még nem támogatott.
notRecommendedBukkit=\u00a74* \! * A Bukkit verzi\u00f3 nem az Essentials aj\u00e1nlott \u00e9p\u00edt\u00e9se.
notSupportedYet=M\u00e9g nem t\u00e1mogatott.
now=most
noWarpsDefined=\u00a76Nincs m\u00e9g egy warp se.
nuke=\u00a75Lehet halál esni rájuk.
numberRequired=Egy szám megy ott, buta.
onlyDayNight=/az idő csak day/night támogat.
nuke=\u00a75Lehet hal\u00e1l esni r\u00e1juk.
numberRequired=Egy sz\u00e1m van ott, buta.
onlyDayNight=/az id\u0151 csak day/night t\u00e1mogat.
onlyPlayers=\u00a74Csak j\u00e1t\u00e9kon bel\u00fcl haszn\u00e1lhat\u00f3 a \u00a7c{0}\u00a74 parancs.
onlyPlayerSkulls=\u00a74Csak j\u00e1t\u00e9kos fejnek tudod be\u00e1ll\u00edtani a tulajdonos\u00e1t (\u00a7c397\:3\u00a74).
onlySunStorm=\u00a74/az időjárás csak a sun/storm támogatja.
openingDisposal=\u00a76Kezelési menü megnyitása...
onlySunStorm=\u00a74/az id\u0151j\u00e1r\u00e1s csak a sun/storm t\u00e1mogatja.
openingDisposal=\u00a76Kezel\u00e9si men\u00fc megnyit\u00e1sa...
orderBalances=\u00a76Egyenlegek \u00f6sszegy\u00fcjt\u00e9se\u00a7c {0} \u00a76j\u00e1t\u00e9kost\u00f3l, k\u00e9rlek, v\u00e1rj...
oversizedTempban=\u00a74Nem tilthatsz ki egy játékost erre az időre.
payConfirmToggleOff=\u00a76A továbbiakban nem kérik a kifizetések megerősítését.
payConfirmToggleOn=\u00a76Most a kifizetések megerősítésére kéri.
payMustBePositive=\u00a74A fizetendő összegnek pozitívnak kell lennie.
payToggleOff=\u00a76Már nem fogadod el a kifizetéseket.
payToggleOn=\u00a76Most elfogadod a kifizetéseket.
oversizedTempban=\u00a74Nem tilthatsz ki egy j\u00e1t\u00e9kost erre az id\u0151re.
payConfirmToggleOff=\u00a76A tov\u00e1bbiakban nem k\u00e9rik a kifizet\u00e9sek meger\u0151s\u00edt\u00e9s\u00e9t.
payConfirmToggleOn=\u00a76Most a kifizet\u00e9sek meger\u0151s\u00edt\u00e9s\u00e9t k\u00e9ri.
payMustBePositive=\u00a74A fizetend\u0151 \u00f6sszegnek pozit\u00edvnak kell lennie.
payToggleOff=\u00a76M\u00e1r nem fogadod el a kifizet\u00e9seket.
payToggleOn=\u00a76Most elfogadod a kifizet\u00e9seket.
pendingTeleportCancelled=\u00a74Folyamatban l\u00e9v\u0151 teleport\u00e1l\u00e1s megszak\u00edtva.
playerBanIpAddress=\u00a76A játékos\u00a7c {0} \u00a76IP-re tiltva\u00a7c {1} \u00a76\: \u00a7c{2}\u00a76.
playerBanIpAddress=\u00a76A j\u00e1t\u00e9kos\u00a7c {0} \u00a76IP-re tiltva\u00a7c {1} \u00a76\: \u00a7c{2}\u00a76.
playerBanned=\u00a7c{0} \u00a76kitiltotta\u00a7c {1}\u00a76-t Indok\: \u00a7c{2}\u00a76.
playerInJail=\u00a74M\u00e1r bent van a(z)\u00a7c {0}\u00a74 b\u00f6rt\u00f6nbe.
playerJailed=\u00a76\u00a7c{0} \u00a76beb\u00f6tr\u00f6n\u00f6zve.
playerJailedFor=\u00a76\u00a7c{0} \u00a76beb\u00f6rt\u00f6n\u00f6zve {1}-re/-ra.
playerJailedFor=\u00a76\u00a7c{0} \u00a76beb\u00f6rt\u00f6n\u00f6zve {1}-ra/-re.
playerKicked=\u00a7c{0} \u00a76 kickelte {1}-t. Indok\: {2}.
playerMuted=\u00a76Ellett\u00e9l n\u00e9m\u00edtva\!
playerMuted=\u00a76El lett\u00e9l n\u00e9m\u00edtva\!
playerMutedFor=\u00a76Le lett\u00e9l n\u00e9m\u00edtva\u00a7c {0}-ra/-re.
playerNeverOnServer=\u00a7c{0} \u00a74 m\u00e9g sose j\u00e1rt a szerveren.
playerNotFound=\u00a74Nincs ilyen nev\u00fb j\u00e1t\u00e9kos.
playerTempBanned=\u00a76Player \u00a7c{0}\u00a76 temporarily banned \u00a7c{1}\u00a76 for \u00a7c{2}\u00a76: \u00a7c{3}\u00a76.
playerUnbanIpAddress=\u00a76\u00a7c{0} \u00a76feloldotta a k\u00f6vetkez\u00f5 IP c\u00edmet\: {1}.
playerNotFound=\u00a74Nincs ilyen nev\u0171 j\u00e1t\u00e9kos.
playerTempBanned=\u00a76A j\u00e1t\u00e9kos \u00a7c{0}\u00a76 ideiglenesen kitiltva \u00a7c{1}\u00a76 \u00a7c{2}\u00a76-ra/-re: \u00a7c{3}\u00a76.
playerUnbanIpAddress=\u00a76\u00a7c{0} \u00a76feloldotta a k\u00f6vetkez\u0151 IP c\u00edmet\: {1}.
playerUnbanned=\u00a76\u00a7c{0} \u00a76feloldotta {1}\u00a76-t.
playerUnmuted=\u00a76Fel lett oldva a n\u00e9m\u00edt\u00e1sod.
pong=Pong\!
@@ -394,36 +399,37 @@ posY=\u00a76Y\: {0} (+Fel <-> -Le)
posYaw=\u00a76Fordul\u00e1s\: {0} (Forg\u00e1s)
posZ=\u00a76Z\: {0} (+D\u00e9l <-> -\u00c9szak)
potions=\u00a76Var\u00e1zsitalok\:\u00a7r {0}\u00a76.
powerToolAir=\u00a74Nem csatolhatsz parancsot a leveg\u00f5h\u00f6z.
powerToolAir=\u00a74Nem csatolhatsz parancsot leveg\u0151h\u00f6z.
powerToolAlreadySet=\u00a74A(z)\u00a7c {0}\u00a74 parancs m\u00e1r bevan \u00e1ll\u00edtva \u00a7c{1}\u00a74-hoz/-hez.
powerToolAttach=\u00a7c{0}\u00a76 berakva PowerToolnak a(z) {1}-ra/-re.
powerToolClearAll=\u00a76\u00d6sszes PowerTool parancs ki\u00fcr\u00edtve.
powerToolList=\u00a76\u00a7c{1}\u00a76-n a k\u00f6vetkez\u0151 parancsok vannak\: \u00a7c{0}\u00a76.
powerToolListEmpty=\u00a74\u00a7c{0}\u00a74-hoz egy parancs sincs csatolva.
powerToolNoSuchCommandAssigned=\u00a74A(z)\u00a7c {0}\u00a74 parancs nincs be\u00e1ll\u00edtva \u00a7c{1}\u00a74-hoz/-hez.
powerToolRemove=\u00a74A(z)\u00a7c {0}\u00a74 parancs lelett szedve \u00a7c{1}\u00a74-r\u00f3l/r\u0151l.
powerToolRemoveAll=\u00a76\u00d6sszes parancs elt\u00e1vol\u00edtva \u00a7c{0}\u00a76-r\u00f3l/r\u0151l.
powerToolRemove=\u00a74A(z)\u00a7c {0}\u00a74 parancs el lett t\u00e1vol\u00edtva \u00a7c{1}\u00a74-r\u00f3l/-r\u0151l.
powerToolRemoveAll=\u00a76\u00d6sszes parancs elt\u00e1vol\u00edtva \u00a7c{0}\u00a76-r\u00f3l/-r\u0151l.
powerToolsDisabled=\u00a76Az \u00f6sszes power tool-os eszk\u00f6z\u00f6d letiltva.
powerToolsEnabled=\u00a76Az \u00f6sszes power tool-os eszk\u00f6z\u00f6d enged\u00e9lyezve.
pTimeCurrent=\u00a7c{0}\u00a76idő\u00a7c {1}\u00a76.
pTimeCurrentFixed=\u00a7c{0}\u00a76 idő rögzítve\u00a7c {1}\u00a76.
pTimeNormal=\u00a7c{0}\u00a76 ideje normális és megfelel a kiszolgálónak.
pTimeOthersPermission=\u00a74Nem vagy jogosult más játékosok időtartamára.
pTimePlayers=\u00a76Ezeknek a játékosoknak saját idejük van\:\u00a7r
pTimeReset=\u00a76A játékos ideje vissza lett állítva\: \u00a7c{0}
pTimeSet=\u00a76A játékos ideje beállítva \u00a7c{0}\u00a76 \: \u00a7c{1}.
pTimeSetFixed=\u00a76A játékos ideje rögzített \u00a7c{0}\u00a76 \: \u00a7c{1}.
pWeatherCurrent=\u00a7c{0}\u00a76 az időjárás\u00a7c {1}\u00a76.
pWeatherInvalidAlias=\u00a74Érvénytelen időjárás típus
pWeatherNormal=\u00a7c{0}\u00a76 az időjárás normális és megfelel a szervernek.
pWeatherOthersPermission=\u00a74Nem vagy jogosult a többi játékos időjárásának beállítására.
pWeatherPlayers=\u00a76Ezek a játékosok saját időjárással rendelkeznek\:\u00a7r
pWeatherReset=\u00a76A játékos időjárása vissza lett állítva\: \u00a7c{0}
pWeatherSet=\u00a76A játékos időjárásának beállítása \u00a7c{0}\u00a76 \: \u00a7c{1}.
pTimeCurrent=\u00a7c{0}\u00a76id\u0151\u00a7c {1}\u00a76.
pTimeCurrentFixed=\u00a7c{0}\u00a76 id\u0151 r\u00f6gz\u00edtve\u00a7c {1}\u00a76.
pTimeNormal=\u00a7c{0}\u00a76 ideje norm\u00e1lis \u00e9s megfelel a kiszolg\u00e1l\u00f3nak.
pTimeOthersPermission=\u00a74Nem vagy jogosult m\u00e1s j\u00e1t\u00e9kosok id\u0151tartam\u00e1ra.
pTimePlayers=\u00a76Ezeknek a j\u00e1t\u00e9kosoknak saj\u00e1t idej\u00fck van\:\u00a7r
pTimeReset=\u00a76A j\u00e1t\u00e9kos ideje vissza lett \u00e1ll\u00edtva\: \u00a7c{0}
pTimeSet=\u00a76A j\u00e1t\u00e9kos ideje be\u00e1ll\u00edtva \u00a7c{0}\u00a76\: \u00a7c{1}.
pTimeSetFixed=\u00a76A j\u00e1t\u00e9kos ideje r\u00f6gz\u00edtett \u00a7c{0}\u00a76\: \u00a7c{1}.
pWeatherCurrent=\u00a7c{0}\u00a76 az id\u0151j\u00e1r\u00e1s\u00a7c {1}\u00a76.
pWeatherInvalidAlias=\u00a74\u00c9rv\u00e9nytelen id\u0151j\u00e1r\u00e1s t\u00edpus.
pWeatherNormal=\u00a7c{0}\u00a76 az id\u0151j\u00e1r\u00e1s norm\u00e1lis \u00e9s megfelel a szervernek.
pWeatherOthersPermission=\u00a74Nem vagy jogosult a t\u00f6bbi j\u00e1t\u00e9kos id\u0151j\u00e1r\u00e1s\u00e1nak be\u00e1ll\u00edt\u00e1s\u00e1ra.
pWeatherPlayers=\u00a76Ezek a j\u00e1t\u00e9kosok saj\u00e1t id\u0151j\u00e1r\u00e1ssal rendelkeznek\:\u00a7r
pWeatherReset=\u00a76A j\u00e1t\u00e9kos id\u0151j\u00e1r\u00e1sa vissza lett \u00e1ll\u00edtva\: \u00a7c{0}
pWeatherSet=\u00a76A j\u00e1t\u00e9kos id\u0151j\u00e1r\u00e1s\u00e1nak be\u00e1ll\u00edt\u00e1sa \u00a7c{0}\u00a76 \: \u00a7c{1}.
questionFormat=\u00a72[K\u00e9rd\u00e9s]\u00a7r {0}
radiusTooBig=\u00a74Ez a sug\u00e1r t\u00fal nagy\! A maximum\: {0}.
readNextPage=\u00a76\u00cdrd be a\u00a7c /{0} {1} \u00a76 parancsot a k\u00f6vetkez\u00f5 oldal elolvas\u00e1s\u00e1hoz.
recentlyForeverAlone=\u00a74{0} a közelmúltban ment.
readNextPage=\u00a76\u00cdrd be a\u00a7c /{0} {1}\u00a76 parancsot a k\u00f6vetkez\u0151 oldal elolvas\u00e1s\u00e1hoz.
realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1}
recentlyForeverAlone=\u00a74{0} a k\u00f6zelm\u00faltban ment.
recipe=\u00a76\u00a7c{0}\u00a76 receptje (\u00a7c{1}\u00a76 az \u00a7c{2}\u00a76-b\u00f3l/b\u0151l)
recipeBadIndex=Nincs recept ennyihez.
recipeFurnace=\u00a76\u00c9gess\: \u00a7c{0}\u00a76-t.
@@ -437,7 +443,7 @@ recipeWhere=\u00a76Hol\: {0}
removed=\u00a76Elt\u00e1vol\u00edtva\u00a7c {0} \u00a76entit\u00e1s.
repair=\u00a76Sikeresen megjav\u00edtottad a az al\u00e1bbi dolgaidat\: \u00a7c{0}.
repairAlreadyFixed=\u00a74Ezt a t\u00e1rgyat m\u00e9g nem kell jav\u00edtanod.
repairEnchanted=\u00a74Nincs jogod, hogy varázsolt t\u00e1rgyakat jav\u00edts.
repairEnchanted=\u00a74Nincs jogod, hogy var\u00e1zsolt t\u00e1rgyakat jav\u00edts.
repairInvalidType=\u00a74Ez a t\u00e1rgy nem jav\u00edthat\u00f3.
repairNone=\u00a74Nincs olyan eszk\u00f6z\u00f6d/felszerel\u00e9sed, amit jav\u00edtani k\u00e9ne.
requestAccepted=\u00a76A teleport\u00e1l\u00e1si k\u00e9relem elfogadva.
@@ -445,165 +451,169 @@ requestAcceptedFrom=\u00a7c{0} \u00a76elfogadta a k\u00e9relmed.
requestDenied=\u00a76Teleport\u00e1l\u00e1si k\u00e9relem elutas\u00edtva.
requestDeniedFrom=\u00a7c{0} \u00a76elutas\u00edtotta a k\u00e9relmed.
requestSent=\u00a76K\u00e9r\u00e9s elk\u00fcldve\u00a7c {0}\u00a76-nak/nek.
requestSentAlready=\u00a74Már elküldted {0}\u00a74 a teleport kérelmet.
requestTimedOut=\u00a74A teleportálás k\u00e9relem kifutott az id\u00f5b\u00f5l.
requiredBukkit=\u00a76* \! * Szükséged van a CraftBukkit építéséhez {0}, letölted innen http\://dl.bukkit.org/downloads/craftbukkit/
resetBal=\u00a76Egyenleg vissza \u00e1ll\u00edtva \u00a7a{0}-ra/-re \u00a76minden fentl\u00e9v\u0151 j\u00e1t\u00e9kosnak.
resetBalAll=\u00a76Egyenleg vissza\u00e1ll\u00edtva \u00a7a{0}\u00a76-ra/re az \u00f6sszes j\u00e1t\u00e9kosnak.
requestSentAlready=\u00a74M\u00e1r elk\u00fcldted {0}\u00a74 a teleport k\u00e9relmet.
requestTimedOut=\u00a74A teleport\u00e1l\u00e1si k\u00e9relem kifutott az id\u0151b\u0151l.
requiredBukkit=\u00a76* \! * Sz\u00fcks\u00e9ged van a CraftBukkit \u00e9p\u00edt\u00e9s\u00e9hez {0}, let\u00f6lt\u00f6d innen http\://dl.bukkit.org/downloads/craftbukkit/
resetBal=\u00a76Egyenleg vissza\u00e1ll\u00edtva \u00a7a{0}-ra/-re \u00a76minden fentl\u00e9v\u0151 j\u00e1t\u00e9kosnak.
resetBalAll=\u00a76Egyenleg vissza\u00e1ll\u00edtva \u00a7a{0}\u00a76-ra/-re az \u00f6sszes j\u00e1t\u00e9kosnak.
returnPlayerToJailError=\u00a74Hiba t\u00f6rt\u00e9nt amikor\u00a7c {0} \u00a74visszapr\u00f3b\u00e1lt t\u00e9rni a(z) \u00a7c{1}\u00a74 b\u00f6rt\u00f6nbe\!
runningPlayerMatch=\u00a76A játékosok megfelelő keresésének futtatása ''\u00a7c{0}\u00a76'' (ez eltarthat egy kicsit)
runningPlayerMatch=\u00a76A j\u00e1t\u00e9kosok megfelel\u0151 keres\u00e9s\u00e9nek futtat\u00e1sa ''\u00a7c{0}\u00a76'' (ez eltarthat egy kicsit)
second=m\u00e1sodperc
seconds=m\u00e1sodperc
seenAccounts=\u00a76J\u00e1t\u00e9kos ismerhet\u0151\u00a7c {0} \u00a76n\u00e9ven is
seenOffline=\u00a76A \u00a7c{0} \u00a76nev\u0171 j\u00e1t\u00e9kos \u00a74nem el\u00e9rhet\u0151 \u00a76ennyi ideje\: \u00a7c{1}\u00a76.
seenOnline=\u00a76A \u00a7c{0} \u00a76nev\u0171 j\u00e1t\u00e9kos \u00a74el\u00e9rhet\u0151 \u00a76ennyi ideje\: \u00a7c{1}\u00a76.
sellBulkPermission=\u00a76Nincs jogod a tömeges értékesítésre.
sellHandPermission=\u00a76Nincs jogod a kezedben lévő tárgy eladására.
sellBulkPermission=\u00a76Nincs jogod a t\u00f6meges \u00e9rt\u00e9kes\u00edt\u00e9sre.
sellHandPermission=\u00a76Nincs jogod a kezedben l\u00e9v\u0151 t\u00e1rgy elad\u00e1s\u00e1ra.
serverFull=A szerver tele van\!
serverTotal=\u00a76Szerver \u00f6sszesen\:\u00a7c {0}
setBal=\u00a7aEgyenleged be\u00e1ll\u00edtva {0}-ra.
setBalOthers=\u00a7aBe\u00e1ll\u00edtottad {0}\u00a7a egyenleg\u00e9t {1}-ra.
setSpawner=\u00a76Idéző \u00faj típusa\:\u00a7c {0}.
sheepMalformedColor=\u00a74Rosszformázott szín.
setBal=\u00a7aEgyenleged be\u00e1ll\u00edtva {0}-ra/-re.
setBalOthers=\u00a7aBe\u00e1ll\u00edtottad {0}\u00a7a egyenleg\u00e9t {1}-ra/-re.
setSpawner=\u00a76Id\u00e9z\u0151 \u00faj t\u00edpusa\:\u00a7c {0}.
sheepMalformedColor=\u00a74Rosszform\u00e1zott sz\u00edn.
shoutFormat=\u00a76[Ki\u00e1lt]\u00a7r {0}
signFormatFail=\u00a74[{0}]
signFormatSuccess=\u00a71[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=\u00a74Nincs engedélyed táblát létrehozni.
similarWarpExist=\u00a74Már létezik hasonló névvel rendelkező lánc.
signProtectInvalidLocation=\u00a74Nincs jogod egy t\u00e1bl\u00e1t l\u00e9trehozni.
similarWarpExist=\u00a74M\u00e1r l\u00e9tezik hasonl\u00f3 n\u00e9vvel rendelkez\u0151 warp.
southEast=DK
south=D
southWest=DNY
skullChanged=\u00a76Fej megv\u00e1ltoztatva \u00a7c{0}\u00a76 fej\u00e9re.
slimeMalformedSize=\u00a74Hibás méret.
slimeMalformedSize=\u00a74Hib\u00e1s m\u00e9ret.
socialSpy=\u00a76SocialSpy \u00a7c{0}\u00a76-nak/-nek\: \u00a7c{1}
socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2}
socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(némítva) \u00a7r
socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(n\u00e9m\u00edtva) \u00a7r
socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r
soloMob=\u00a74A szörny szeretnek egyedül maradni.
spawned=idézve
spawnSet=\u00a76Kezd\u00f5pont be\u00e1ll\u00edtva a \u00a7c{0}\u00a76 csoportnak.
spectator=néző
sudoExempt=\u00a74Nem k\u00e9nyszer\u00edtheted \u00f5t.
sudoRun=\u00a76Erőltetése\u00a7c {0} \u00a76to futtatás\:\u00a7r /{1}
soloMob=\u00a74A mobok szeretnek egyed\u00fcl maradni.
spawned=id\u00e9zve
spawnSet=\u00a76Kezd\u0151pont be\u00e1ll\u00edtva a \u00a7c{0}\u00a76 csoportnak.
spectator=n\u00e9z\u0151
sudoExempt=\u00a74Nem k\u00e9nyszer\u00edtheted \u0151t.
sudoRun=\u00a76Er\u00f6ltet\u00e9se\u00a7c {0} \u00a76futtat\u00e1s\:\u00a7r /{1}
suicideMessage=\u00a76Viszl\u00e1t sz\u00e9p vil\u00e1g...
suicideSuccess=\u00a76{0} \u00a76feladta az \u00e9let\u00e9t.
survival=t\u00fal\u00e9l\u00f5
takenFromAccount=\u00a7a{0} lev\u00e9ve az egyenlegedr\u00f5l.
takenFromOthersAccount=\u00a7a{0} lev\u00e9ve {1}\u00a7a egyenleg\u00e9r\u00f5l. \u00daj egyenleg\: {2}.
teleportAAll=\u00a76Teleport\u00e1l\u00e1si k\u00e9relem mindenkinek elk\u00fcldve...
survival=t\u00fal\u00e9l\u0151
takenFromAccount=\u00a7a{0} lev\u00e9ve az egyenlegedr\u0151l.
takenFromOthersAccount=\u00a7a{0} lev\u00e9ve {1}\u00a7a egyenleg\u00e9r\u0151l. \u00daj egyenleg\: {2}.
teleportAAll=\u00a76A teleport\u00e1l\u00e1si k\u00e9relem mindenkinek elk\u00fcldve...
teleportAll=\u00a76\u00d6sszes j\u00e1t\u00e9kos teleport\u00e1l\u00e1sa...
teleportationCommencing=\u00a76Teleport\u00e1l\u00e1s megkezd\u00e9se...
teleportationDisabled=\u00a76Teleport\u00e1l\u00e1s \u00a7cletiltva\u00a76.
teleportationDisabledFor=\u00a76Teleport\u00e1l\u00e1s \u00a7cletiltva \u00a7c{0} \u00a76sz\u00e1m\u00e1ra\u00a76.
teleportationEnabled=\u00a76Teleport\u00e1l\u00e1s \u00a7cenged\u00e9lyezve\u00a76.
teleportationEnabledFor=\u00a76Teleport\u00e1l\u00e1s \u00a7cenged\u00e9lyezve \u00a7c{0} \u00a76sz\u00e1m\u00e1ra\u00a76.
teleportAtoB=\u00a7c{0}\u00a76 elteleport\u00e1lt t\u00e9ged {1}\u00a76-hoz/hez.
teleportAtoB=\u00a7c{0}\u00a76 elteleport\u00e1lt t\u00e9ged {1}\u00a76-hoz/-hez.
teleportDisabled=\u00a7c{0} \u00a74letiltotta, hogy r\u00e1 teleport\u00e1ljanak.
teleportHereRequest=\u00a7c{0}\u00a76 szeretn\u00e9, hogy hozz\u00e1 teleport\u00e1lj.
teleporting=\u00a76Teleport\u00e1l\u00e1s...
teleportInvalidLocation=A koordin\u00e1t\u00e1k \u00e9rt\u00e9ke nem lehet t\u00f6bb 30000000-n\u00e9l
teleportNewPlayerError=\u00a74Nem sikerült teleportálni az új játékost\!
teleportNewPlayerError=\u00a74Nem siker\u00fclt teleport\u00e1lni az \u00faj j\u00e1t\u00e9kost\!
teleportRequest=\u00a7c{0}\u00a76 hozz\u00e1d szeretne teleport\u00e1lni.
teleportRequestAllCancelled=\u00a76Minden kiemelkedő teleportálás kérés törölve.
teleportRequestSpecificCancelled=\u00a76Kiemelkedő teleportálási kérelem {0} törölve.
teleportRequestAllCancelled=\u00a76Minden kiemelked\u0151 teleport\u00e1l\u00e1s k\u00e9r\u00e9s t\u00f6r\u00f6lve.
teleportRequestSpecificCancelled=\u00a76Kiemelked\u0151 teleport\u00e1l\u00e1si k\u00e9relem {0} t\u00f6r\u00f6lve.
teleportRequestTimeoutInfo=\u00a76\u00a7c{0} m\u00e1sodperced\u00a76 van, hogy ezt elfogadd.
teleportTop=\u00a76Teleport\u00e1l\u00e1s a legmagasabb pontra.
teleportToPlayer=\u00a76Teleport\u00e1l\u00e1s \u00a7c{0}\u00a76-hoz/-hez.
tempbanExempt=\u00a74Nem tempbannolhatod ezt a szem\u00e9lyt.
tempbanExempt=\u00a74Nem tempbannolhatod ezt a j\u00e1t\u00e9kost.
tempbanExemptOffline=\u00a74Nem tempbannolhatsz Offline j\u00e1t\u00e9kost.
tempbanJoin=Ki lettél tiltva a szerverről {0}. Oka: {1}
tempBanned=\u00a7cKi lettél tiltva a szerverről {0}\:\n\u00a7r{2}
thunder=\u00a7c {0} \u00a76mennydörgés a világban.
thunderDuration=\u00a7c {0} \u00a76mennydörgött a világodban\u00a7c {1} \u00a76másodpercre.
timeBeforeHeal=\u00a74A következő élet feltöltés\:\u00a7c {0}\u00a76.
timeBeforeTeleport=\u00a74A következő teleportálás\:\u00a7c {0}\u00a76.
tempbanJoin=Ki lett\u00e9l tiltva a szerverr\u0151l {0}. Oka: {1}
tempBanned=\u00a7cKi lett\u00e9l tiltva a szerverr\u0151l {0}\:\n\u00a7r{2}
thunder=\u00a7c {0} \u00a76mennyd\u00f6rg\u00e9s a vil\u00e1gban.
thunderDuration=\u00a7c {0} \u00a76mennyd\u00f6rg\u00f6tt a vil\u00e1godban\u00a7c {1} \u00a76m\u00e1sodpercre.
timeBeforeHeal=\u00a74A k\u00f6vetkez\u0151 \u00e9let felt\u00f6lt\u00e9s\:\u00a7c {0}\u00a76.
timeBeforeTeleport=\u00a74A k\u00f6vetkez\u0151 teleport\u00e1l\u00e1s\:\u00a7c {0}\u00a76.
timeFormat=\u00a7c{0}\u00a76 vagy \u00a7c{1}\u00a76 vagy \u00a7c{2}\u00a76
timeSetPermission=\u00a74Nincs jogod, hogy \u00e1ll\u00edtsd az id\u00f5t.
timeSetWorldPermission=\u00a74Nincs jogod beállítani az időt a világ ''{0}''.
timeWorldCurrent=\u00a76A jelenlegi idő\u00a7c {0} \u00a7c{1}\u00a76.
timeWorldSet=\u00a76Id\u00f5 be\u00e1ll\u00edtva\u00a7c {0}\u00a76-re a \u00a7c{1}\u00a76 vil\u00e1gban.
timeSetPermission=\u00a74Nincs jogod, hogy \u00e1ll\u00edtsd az id\u0151t.
timeSetWorldPermission=\u00a74Nincs jogod be\u00e1ll\u00edtani az id\u0151t a(z) ''{0}'' vil\u00e1gban.
timeWorldCurrent=\u00a76A jelenlegi id\u0151\u00a7c {0} \u00a7c{1}\u00a76.
timeWorldSet=\u00a76Id\u0151 be\u00e1ll\u00edtva\u00a7c {0}\u00a76-re a(z) \u00a7c{1}\u00a76 vil\u00e1gban.
totalSellableAll=\u00a7aAz \u00f6sszes eladhat\u00f3 dolgod\u00e9rt \u00e9s blockjaid\u00e9rt \u00a7c{1}\u00a7a-t kapsz.
totalSellableBlocks=\u00a7aAz \u00f6sszes eladhat\u00f3 blockjaid\u00e9rt \u00a7c{1}\u00a7a-t kapsz.
totalWorthAll=\u00a7aMinden tárgyat és blokkot eladott egy teljes értékre \u00a7c{1}\u00a7a.
totalWorthBlocks=\u00a7aEladtad az összes blokkot, összesen értékben \u00a7c{1}\u00a7a.
totalWorthAll=\u00a7aMinden t\u00e1rgyat \u00e9s blokkot eladt\u00e1l egy teljes \u00e9rt\u00e9kre \u00a7c{1}\u00a7a.
totalWorthBlocks=\u00a7aEladtad az \u00f6sszes blokkot, \u00f6sszesen \u00e9rt\u00e9kben \u00a7c{1}\u00a7a.
tps=\u00a76Jelenlegi TPS \= {0}
tradeSignEmpty=\u00a74A t\u00e1bla nem tud neked adni \u00e1rut.
tradeSignEmptyOwner=\u00a74A t\u00e1bl\u00e1b\u00f3l m\u00e9g nem v\u00e1s\u00e1rolt senki.
treeFailure=\u00a74Fa termelési hiba. Próbálja újra a füvet vagy a piszkot.
treeSpawned=\u00a76Fa idézve.
treeFailure=\u00a74Fa termel\u00e9si hiba. Pr\u00f3b\u00e1ld \u00fajra a f\u00f6ld\u00f6n.
treeSpawned=\u00a76Fa id\u00e9zve.
true=\u00a7aigaz\u00a7r
typeTpacancel=\u00a76A kérelem törléséhez írd be \u00a7c/tpacancel\u00a76.
typeTpaccept=\u00a76Hogy elfogadd \u00edrd be \u00a7c/tpaccept\u00a76.
typeTpdeny=\u00a76Hogy elutas\u00edtsd \u00edrd be \u00a7c/tpdeny\u00a76.
typeWorldName=\u00a76Beírhatod egy adott világ nevét is.
unableToSpawnItem=\u00a74Nem lehetett leidézni \u00a7c{0}\u00a74-t, mert ez nem idézhető t\u00e1rgy.
unableToSpawnMob=\u00a74Nem lehetett a szörnyet idézni.
unignorePlayer=\u00a76Nem hagyod figyelmen kívül a játékosokat\u00a7c {0} \u00a76többé.
typeTpacancel=\u00a76A k\u00e9relem t\u00f6rl\u00e9s\u00e9hez \u00edrd be a \u00a7c/tpacancel\u00a76.
typeTpaccept=\u00a76Hogy elfogadd \u00edrd be a \u00a7c/tpaccept\u00a76.
typeTpdeny=\u00a76Hogy elutas\u00edtsd \u00edrd be a \u00a7c/tpdeny\u00a76.
typeWorldName=\u00a76Be\u00edrhatod egy adott vil\u00e1g nev\u00e9t is.
unableToSpawnItem=\u00a74Nem lehetett leid\u00e9zni \u00a7c{0}\u00a74-t, mert ez nem id\u00e9zhet\u0151 t\u00e1rgy.
unableToSpawnMob=\u00a74Nem lehetett a mobot leid\u00e9zni.
unignorePlayer=\u00a76Nem hagyod figyelmen k\u00edv\u00fcl a j\u00e1t\u00e9kosokat\u00a7c {0} \u00a76t\u00f6bb\u00e9.
unknownItemId=\u00a74Ismeretlen t\u00e1rgy ID\:\u00a7r {0}\u00a74.
unknownItemInList=\u00a74Ismeretlen {0} elem a {1} listában.
unknownItemInList=\u00a74Ismeretlen {0} elem a {1} list\u00e1ban.
unknownItemName=\u00a74Ismeretlen t\u00e1rgy n\u00e9v\: {0}.
unlimitedItemPermission=\u00a74Nincs jogod a v\u00e9gtelens\u00e9gre a k\u00f6vetkez\u0151 t\u00e1rgyn\u00e1l\: \u00a7c{0}\u00a74.
unlimitedItems=\u00a76V\u00e9gtelen t\u00e1rgyak\:\u00a7r
unmutedPlayer=\u00a7c {0}\u00a76-r\u00f3l fellett oldva a n\u00e9m\u00edt\u00e1s.
unsafeTeleportDestination=\u00a74Ahova teleport\u00e1lni szeretn\u00e9l nem biztons\u00e1gos \u00e9s a bisztons\u00e1gos teleport kikapcsolva.
unvanishedReload=\u00a74A reload k\u00f6vetkezt\u00e9ben mindenki l\u00e1tni fog.
upgradingFilesError=Hiba történt a fájlok frissítése közben.
uptime=\u00a76M\u00fbk\u00f6d\u00e9si id\u00f5\:\u00a7c {0}
userAFK=\u00a75{0} \u00a75most AFK \u00e9s nem bisztos hogy fog v\u00e1laszolni.
userAFKWithMessage=\u00a75{0} \u00a75most AFK \u00e9s nem bisztos, hogy fog v\u00e1laszolni. {1}
userdataMoveBackError=Nem sikerült az userdata/{0}.tmp áthelyezése a userdata/{1}\!
userdataMoveError=Nem sikerült az userdata/{0} áthelyezése a userdata/{1}.tmp\!
userDoesNotExist=\u00a74A felhasználó\u00a7c {0} \u00a74nem létezik.
unmutedPlayer=\u00a7c {0}\u00a76-r\u00f3l fel lett oldva a n\u00e9m\u00edt\u00e1s.
unsafeTeleportDestination=\u00a74Ahova teleport\u00e1lni szeretn\u00e9l nem biztons\u00e1gos \u00e9s a biztons\u00e1gos teleport\u00e1l\u00e1s kikapcsolva.
unvanishedReload=\u00a74Az \u00fajrat\u00f6lt\u00e9s k\u00f6vetkezt\u00e9ben mindenki l\u00e1tni fog.
upgradingFilesError=Hiba t\u00f6rt\u00e9nt a f\u00e1jlok friss\u00edt\u00e9se k\u00f6zben.
uptime=\u00a76M\u0171k\u00f6d\u00e9si id\u0151\:\u00a7c {0}
userAFK=\u00a75{0} \u00a75most AFK \u00e9s nem biztos, hogy v\u00e1laszolni fog.
userAFKWithMessage=\u00a75{0} \u00a75most AFK \u00e9s nem biztos, hogy fog v\u00e1laszolni. {1}
userdataMoveBackError=Nem siker\u00fclt az userdata/{0}.tmp \u00e1thelyez\u00e9se a userdata/{1}\!
userdataMoveError=Nem siker\u00fclt az userdata/{0} \u00e1thelyez\u00e9se a userdata/{1}.tmp\!
userDoesNotExist=\u00a74A felhaszn\u00e1l\u00f3\u00a7c {0} \u00a74nem l\u00e9tezik.
userIsAway=\u00a77* \u00a75{0}\u00a77 elment a g\u00e9pt\u0151l...
userIsAwayWithMessage=\u00a77* \u00a75{0}\u00a77 elment a g\u00e9pt\u0151l...
userIsNotAway=\u00a77* \u00a75{0} \u00a77visszaj\u00f6tt...
userJailed=\u00a76Beb\u00f6rt\u00f6n\u00f6ztek\!
userUnknown=\u00a74Figyelem\: ''\u00a7c{0}\u00a74'' m\u00e9g sose j\u00e1rt a szerveren.
usingTempFolderForTesting=Hőmappák használata a teszteléshez\:
usingTempFolderForTesting=H\u0151mapp\u00e1k haszn\u00e1lata a tesztel\u00e9shez\:
vanish=\u00a76L\u00e1thatatlans\u00e1g {0}\u00a76-nak/-nek\: {1}
vanished=\u00a76Sikeresen elt\u00fcnt\u00e9l a norm\u00e1lis j\u00e1t\u00e9kosok el\u00f5l \u00e9s a j\u00e1t\u00e9kbeli parancsokb\u00f3l.
versionMismatch=\u00a74Verzió eltérés\! Kérjük, frissítse {0} ugyanarra a verzióra.
versionMismatchAll=\u00a74Verzió eltérés\! Kérjük, frissítse az összes Essentials jart ugyanarra a verzióra.
vanished=\u00a76Sikeresen elt\u00fcnt\u00e9l a norm\u00e1lis j\u00e1t\u00e9kosok el\u0151l \u00e9s a j\u00e1t\u00e9kbeli parancsokb\u00f3l.
versionMismatch=\u00a74Verzi\u00f3 elt\u00e9r\u00e9s\! K\u00e9rj\u00fck, friss\u00edtse a(z) {0} a legfrissebb verzi\u00f3ra.
versionMismatchAll=\u00a74Verzi\u00f3 elt\u00e9r\u00e9s\! K\u00e9rj\u00fck, friss\u00edtse az \u00f6sszes Essentials jart a legfrissebb verzi\u00f3ra.
voiceSilenced=\u00a76El vagy n\u00e9m\u00edtva\!
walking=s\u00e9ta
warpDeleteError=\u00a74Probléma a warp fájl törlésével.
warpDeleteError=\u00a74Probl\u00e9ma a warp f\u00e1jl t\u00f6rl\u00e9s\u00e9vel.
warpingTo=\u00a76Warpol\u00e1s a(z)\u00a7c {0}\u00a76 helyre.
warpList={0}
warpListPermission=\u00a74Nincs jogod, hogy ki list\u00e1zd a Warpokat.
warpListPermission=\u00a74Nincs jogod, hogy list\u00e1zd a warpokat.
warpNotExist=\u00a74Nincs ilyen warp.
warpOverwrite=\u00a74Nem lehet felülírni a warpot.
warpOverwrite=\u00a74Nem lehet fel\u00fcl\u00edrni a warpot.
warps=\u00a76Teleportok\:\u00a7r {0}
warpsCount=\u00a76Van\u00a7c {0} \u00a76warp. Ez az \u00a7c{1}.\u00a76 oldal a \u00a7c{2}\u00a76-b\u00f3l/b\u0151l.
warpSet=\u00a76Warp\u00a7c {0} \u00a76be\u00e1ll\u00edtva.
warpUsePermission=\u00a74Nincs jogod oda warpolni.
weatherInvalidWorld=A vil\u00e1g {0} nem tal\u00e1lhat\u00f3\!
weatherStorm=\u00a76Be\u00e1ll\u00edtottad az id\u00f5t \u00a7ces\u00f5sre\u00a76 a(z)\u00a7c {0}\u00a76 vil\u00e1gban.
weatherStormFor=\u00a76Beállítottad az időjárást \u00a7cesősre\u00a7c {0}\u00a76 világban {1} másodpercre.
weatherSun=\u00a76Be\u00e1ll\u00edtottad az id\u00f5t \u00a7cnaposra\u00a76 a(z)\u00a7c {0}\u00a76 vil\u00e1gban.
weatherSunFor=\u00a76Beállítottad az időjárást \u00a7cnaposra\u00a7c {0}\u00a76 világban \u00a76 {1} másodpercre.
weatherStorm=\u00a76Be\u00e1ll\u00edtottad az id\u0151t \u00a7ces\u0151sre\u00a76 a(z)\u00a7c {0}\u00a76 vil\u00e1gban.
weatherStormFor=\u00a76Be\u00e1ll\u00edtottad az id\u0151j\u00e1r\u00e1st \u00a7ces\u0151sre\u00a7c {0}\u00a76 vil\u00e1gban {1} m\u00e1sodpercre.
weatherSun=\u00a76Be\u00e1ll\u00edtottad az id\u0151t \u00a7cnaposra\u00a76 a(z)\u00a7c {0}\u00a76 vil\u00e1gban.
weatherSunFor=\u00a76Be\u00e1ll\u00edtottad az id\u0151j\u00e1r\u00e1st \u00a7cnaposra\u00a7c {0}\u00a76 vil\u00e1gban \u00a76 {1} m\u00e1sodpercre.
west=NY
whoisAFK=\u00a76 - AFK\:\u00a7r {0}
whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1})
whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Mivel {1})
whoisBanned=\u00a76 - Bannolva\:\u00a7r {0}
whoisExp=\u00a76 - Exp\:\u00a7r {0} (Level {1})
whoisExp=\u00a76 - Exp\:\u00a7r {0} (Szint {1})
whoisFly=\u00a76 - Rep\u00fcl\u00e9s\:\u00a7r {0} ({1})
whoisGamemode=\u00a76 - J\u00e1t\u00e9km\u00f3d\:\u00a7r {0}
whoisGeoLocation=\u00a76 - Helyezked\u00e9s\:\u00a7r {0}
whoisGod=\u00a76 - Isten m\u00f3d\:\u00a7r {0}
whoisHealth=\u00a76 - \u00c9let\:\u00a7r {0}/20
whoisHunger=\u00a76 - \u00c9hs\u00e9g\:\u00a7r {0}/20 (+{1} telítettség)
whoisIPAddress=\u00a76 - IP C\u00edm\:\u00a7r {0}
whoisHunger=\u00a76 - \u00c9hs\u00e9g\:\u00a7r {0}/20 (+{1} tel\u00edtetts\u00e9g)
whoisIPAddress=\u00a76 - IP c\u00edm\:\u00a7r {0}
whoisJail=\u00a76 - B\u00f6rt\u00f6n\:\u00a7r {0}
whoisLocation=\u00a76 - Helye\:\u00a7r ({0}, {1}, {2}, {3})
whoisMoney=\u00a76 - P\u00e9nz\:\u00a7r {0}
whoisMuted=\u00a76 - N\u00e9m\u00edtva\:\u00a7r {0}
whoisNick=\u00a76 - Becenév\:\u00a7r {0}
whoisNick=\u00a76 - Becen\u00e9v\:\u00a7r {0}
whoisOp=\u00a76 - OP\:\u00a7r {0}
whoisPlaytime=\u00a76 - Játékidő\:\u00a7r {0}
whoisTempBanned=\u00a76 - Ban lejár:\u00a7r {0}
whoisTop=\u00a76 \=\=\=\=\=\= KiIs\u00d6\:\u00a7c {0} \u00a76\=\=\=\=\=\=
whoisPlaytime=\u00a76 - J\u00e1t\u00e9kid\u0151\:\u00a7r {0}
whoisTempBanned=\u00a76 - Ban lej\u00e1r:\u00a7r {0}
whoisTop=\u00a76 \=\=\=\=\=\= Ki is \u0151:\u00a7c {0} \u00a76\=\=\=\=\=\=
whoisUuid=\u00a76 - UUID\:\u00a7r {0}
worth=\u00a7aStackelés {0} érdemes \u00a7c{1}\u00a7a ({2} elem(ek) {3} minden)
worthMeta=\u00a7aStackelés {0} az {1} értékű metaadatokkal \u00a7c{2}\u00a7a ({3} elem(ek) {4} minden)
worthSet=\u00a76\u00c1r be\u00e1ll\u00edtva
worth=\u00a7aStackel\u00e9s {0} \u00e9rdemes \u00a7c{1}\u00a7a ({2} elem(ek) {3} minden)
worthMeta=\u00a7aStackel\u00e9s {0} az {1} \u00e9rt\u00e9k\u0171 metaadatokkal \u00a7c{2}\u00a7a ({3} elem(ek) {4} minden)
worthSet=\u00a76\u00c1r be\u00e1ll\u00edtva.
year=\u00e9v
years=\u00e9v
youAreHealed=\u00a76\u00c9leted felt\u00f6ltve.
youHaveNewMail=\u00a76Van\u00a7c {0} \u00a76\u00fczeneted\! \u00cdrd be a \u00a7c/mail read\u00a76 parancsot, hogy elolvasd \u00f5ket.
youHaveNewMail=\u00a76Van\u00a7c {0} \u00a76\u00fczeneted\! \u00cdrd be a \u00a7c/mail read\u00a76 parancsot, hogy elolvasd \u0151ket.
+15 -5
View File
@@ -77,7 +77,7 @@ couldNotFindTemplate=Impossibile trovare il template {0}
createdKit=\u00a76Creato il kit \u00a7c{0} \u00a76con \u00a7c{1} \u00a76inserimenti e attesa \u00a7c{2}
createKitFailed=\u00a74Si \u00E8 verificato un errore creando il kit {0}.
createKitSeparator=\u00a7m-----------------------
createKitSuccess=\u00a76Kit Creato: \u00a7f{0}\n\u00a76Attesa: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copia i contenuti nel link sopra nella tua config.yml.
createKitSuccess=\u00a76Kit Creato: \u00a7f{0}\n\u00a76Attesa: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copia i contenuti nel link qui sopra nel tuo kits.yml.
creatingConfigFromTemplate=Creazione della configurazione dal template\: {0}
creatingEmptyConfig=Creazione configurazione vuota\: {0}
creative=creativa
@@ -106,6 +106,7 @@ dontMoveMessage=\u00a77Il teletrasporto inizier\u00E0 tra {0}. Non muoverti.
downloadingGeoIp=Download del database GeoIP... potrebbe richiedere del tempo (nazione\: 1.7 MB, citt\u00E0\: 30MB)
duplicatedUserdata=Dati dell''utente duplicati\: {0} e {1}
durability=\u00a76Questo attrezzo ha \u00a7c{0}\u00a76 utilizzi rimasti
east=E
editBookContents=\u00a7eOra puoi modificare i contenuti di questo libro.
enabled=abilitato
enableUnlimited=\u00a76Data una quantit\u00e0 illimitata di\u00a7c {0} \u00a76a \u00a7c{1}\u00a76.
@@ -207,7 +208,8 @@ inventoryClearingAllStack=\u00a76Cancellati tutti i\u00a7c {0} \u00a76da {1}\u00
inventoryClearingFromAll=\u00a76Cancellamento dell''inventario di tutti gli utenti...
inventoryClearingStack=\u00a76Rimossi\u00a7c {0} \u00a76di\u00a7c {1} \u00a76da {2}\u00a76.
is=\u00E8
isIpBanned=\u00a76L'' IP \u00a7c{0} \u00a76\u00e8 bannato.
isIpBanned=\u00a76L''IP \u00a7c{0} \u00a76\u00e8 bannato.
internalError=\u00a7cSi \u00e8 verificato un errore durante l''esecuzione di questo comando.
itemCannotBeSold=\u00a74Quell''oggetto non pu\u00F2 essere venduto al server.
itemMustBeStacked=\u00a74L''oggetto deve essere scambiato in stack. Una quantit\u00E0 di 2 sarebbero due stack, etc.
itemNames=\u00a76Nomi corti oggetti\:\u00a7r {0}
@@ -221,7 +223,7 @@ itemsNotConverted=\u00a74Non hai oggetti che possono essere convertiti in blocch
itemSold=\u00a7aVenduto per \u00a7c{0} \u00a7a({1} {2} a {3} l''uno).
itemSoldConsole=\u00a7a{0} \u00a7aha venduto {1} per \u00a7a{2} \u00a7a({3} oggetti a {4} l''uno).
itemSpawn=\u00a76Dati\u00a7c {0} \u00a76di\u00a7c {1}
itemType=\u00a76Oggetto\:\u00a7c {0} \u00a76-\u00a7c {1}
itemType=\u00a76Oggetto\:\u00a7c {0}
jailAlreadyIncarcerated=\u00a74Giocatore gi\u00E0 in prigione\:\u00a7c {0}
jailList=\u00a76Jails\:\u00a7r {0}
jailMessage=\u00a74Avrai tempo per riflettere... in prigione.
@@ -322,6 +324,9 @@ noAccessPermission=\u00a74Non hai il permesso di accedere a questo \u00a7c{0}\u0
noBreakBedrock=\u00a74Non hai il permesso di distruggere la roccia di fondo.
noDestroyPermission=\u00a74Non hai il permesso di distruggere questo \u00a7c{0}\u00a74.
noDurability=\u00a74Questo oggetto non ha durabilit\u00e0.
northEast=NE
north=N
northWest=NO
noGodWorldWarning=\u00a74Attenzione\! Modalit\u00E0 Dio disabilitata in questo mondo.
noHelpFound=\u00a74Nessun comando corrispondente trovato.
noHomeSetPlayer=\u00a76Il giocatore non ha impostato una casa.
@@ -372,7 +377,7 @@ payMustBePositive=\u00a74L''importo da pagare deve essere positivo.
payToggleOff=\u00a76Non accetti pi\u00F9 pagamenti.
payToggleOn=\u00a76Ora accetti pagamenti.
pendingTeleportCancelled=\u00a7cRichiesta in sospeso di teletrasporto cancellata.
playerBanIpAddress=\u00a76Il giocatore\u00a7c {0} \u00a76ha bannato l'' IP\u00a7c {1} \u00a76per\: \u00a7c{2}\u00a76.
playerBanIpAddress=\u00a76Il giocatore\u00a7c {0} \u00a76ha bannato l''IP\u00a7c {1} \u00a76per\: \u00a7c{2}\u00a76.
playerBanned=\u00a76Il giocatore\u00a7c {0} \u00a76ha bannato\u00a7c {1} \u00a76per \u00a7c{2}\u00a76.
playerInJail=\u00a74Il giocatore \u00e8 gi\u00e0 nella prigione\u00a7c {0}\u00a74.
playerJailed=\u00a77Il giocatore {0} \u00E8 stato messo in prigione.
@@ -383,7 +388,7 @@ playerMutedFor=\u00a77Sei stato mutato per {0}
playerNeverOnServer=\u00a7cIl giocatore {0} non \u00E8 mai stato in questo server.
playerNotFound=\u00a7cGiocatore non trovato.
playerTempBanned=\u00a76Il giocatore \u00a7c{0}\u00a76 ha temporaneamente bannato \u00a7c{1}\u00a76 per \u00a7c{2}\u00a76: \u00a7c{3}\u00a76.
playerUnbanIpAddress=\u00a76Il giocatore\u00a7c {0} \u00a76ha rimosso il ban dall'' IP\: {1}.
playerUnbanIpAddress=\u00a76Il giocatore\u00a7c {0} \u00a76ha rimosso il ban dall''IP\: {1}.
playerUnbanned=\u00a76Il giocatore\u00a7c {0} \u00a76ha rimosso il ban da \u00a7c {1}.
playerUnmuted=\u00a77Ti \u00e8 stato rimosso il mute\u00e8.
pong=Pong\!
@@ -423,6 +428,7 @@ pWeatherSet=\u00a76Il meteo del giocatore \u00e8 stato impostato a \u00a7c{0}\u0
questionFormat=\u00a72[Domanda]\u00a7r {0}
radiusTooBig=\u00a74Il raggio \u00e8 troppo grande\! Il raggio massimo \u00e8 di {0}.
readNextPage=\u00a76Scrivi\u00a7c /{0} {1} \u00a76per la pagina successiva.
realName=\u00a7f{0}\u00a7r\u00a76 \u00e8 \u00a7f{1}
recentlyForeverAlone=\u00a74{0} recentemente \u00E8 andato offline.
recipe=\u00a76Crafting per \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 di \u00a7c{2}\u00a76)
recipeBadIndex=Non c''\u00E8 nessuna ricetta con quel numero.
@@ -471,6 +477,9 @@ signFormatSuccess=\u00a71[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=\u00a74Non hai il permesso per creare segnaposti qui.
similarWarpExist=Il nome del warp \u00E8 stato gi\u00E0 utilizzato.
southEast=SE
south=S
southWest=SO
skullChanged=\u00a76Testa modificata a \u00a7c{0}\u00a76.
slimeMalformedSize=Dimensione non valida.
socialSpy=\u00a76SocialSpy per \u00a7c{0}\u00a76\: \u00a7c{1}
@@ -579,6 +588,7 @@ weatherStorm=\u00a77Hai impostato il tempo atmosferico a tempesta in {0}.
weatherStormFor=\u00a77Hai impostato il tempo atmosferico a tempesta in {0} per {1} secondi.
weatherSun=\u00a77Hai impostato il tempo atmosferico a soleggiato in {0}.
weatherSunFor=\u00a77Hai impostato il tempo atmosferico a soleggiato in {0} per {1} secondi.
west=O
whoisAFK=\u00a76 - AFK\:\u00a7f {0}
whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Da {1})
whoisBanned=\u00a76 - Bannato\:\u00a7f {0}
+21 -11
View File
@@ -21,7 +21,7 @@ antiBuildUse=\u00a74\ub2f9\uc2e0\uc740 \u00a7c {0}\u00a74\uc744 \uc0ac\uc6a9\ud5
autoAfkKickReason={0}\ubd84 \uc774\uc0c1\uc758 \uc720\ud734\uc0c1\ud0dc\ub85c \uc788\uc5c8\uae30\uc5d0 \ucd94\ubc29\ub2f9\ud558\uc168\uc2b5\ub2c8\ub2e4.
backAfterDeath=\u00a7c/back \u00a76\uba85\ub839\uc5b4\ub85c \uc0ac\ub9dd\ud55c \uc9c0\uc810\uc73c\ub85c \ud154\ub808\ud3ec\ud2b8 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
backupDisabled=\u00a74\uc678\ubd80 \ubc31\uc5c5 \uc2a4\ud06c\ub9bd\ud2b8\uac00 \uc124\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
backupFinished=\u00a76\ubc31\uc5c5\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
backupFinished=\u00a76\ubc31\uc5c5\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
backupStarted=\u00a76\ubc31\uc5c5\uc744 \uc2dc\uc791\ud569\ub2c8\ub2e4.
backUsageMsg=\u00a76\uc774\uc804 \uc7a5\uc18c\ub85c \ub3cc\uc544\uac00\ub294\uc911..
balance=\u00a76\uc794\uace0\:\u00a7c {0}
@@ -37,7 +37,7 @@ bedMissing=\u00a74\ub2f9\uc2e0\uc758 \uce68\ub300\uac00 \ub193\uc5ec\uc9c0\uc9c0
bedNull=\u00a7m\uce68\ub300\u00a7r
bedSet=\u00a76\uce68\ub300 \uc2a4\ud3f0\uc9c0\uc810\uc774 \uc124\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4\!
bigTreeFailure=\u00a7c\ud070 \ub098\ubb34 \uc0dd\uc131\uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4. \uc794\ub514\ub098 \ud759\uc5d0\uc11c \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc138\uc694.
bigTreeSuccess=\u00a76\ud070 \ub098\ubb34\ub97c \uc131\uacf5\uc801\uc73c\ub85c \uc0dd\uc131\ud558\uc600\uc2b5\ub2c8\ub2e4.
bigTreeSuccess=\u00a76\ud070 \ub098\ubb34\ub97c \uc131\uacf5\uc801\uc73c\ub85c \uc0dd\uc131\ud558\uc600\uc2b5\ub2c8\ub2e4.
blockList=\u00a76\uc5d0\uc13c\uc15c\uc740 \ub2e4\uc74c \ud50c\ub7ec\uadf8\uc778\uc5d0 \uc758\ud574 \ucee4\ub9e8\ub4dc\uac00 \uad50\uccb4\ub429\ub2c8\ub2e4\:
bookAuthorSet=\u00a76\ucc45\uc758 \uc800\uc790\ub97c \u00a7c{0}\u00a76\uc73c\ub85c \uc124\uc815\ud569\ub2c8\ub2e4.
bookLocked=\u00a76\uc774 \ucc45\uc740 \uc7a0\uae34\uc0c1\ud0dc\ub85c \uc804\ud658\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
@@ -72,12 +72,12 @@ connectedPlayers=\u00a76\uc811\uc18d \uc911\uc778 \ud50c\ub808\uc774\uc5b4\u00a7
connectionFailed=\uc5f0\uacb0\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
cooldownWithMessage=\u00a7c\uc7ac\uc0ac\uc6a9 \ub300\uae30\: {0}
coordsKeyword={0}, {1}, {2}
corruptNodeInConfig=\u00a7c\uc624\ub958\: \u00a74config.yml \ub0b4 {0} \ub178\ub4dc\uc5d0 \uc624\ub958\uac00 \uc788\uc2b5\ub2c8\ub2e4.
corruptNodeInConfig=\u00a7c\uc624\ub958\: \u00a74config.yml \ub0b4 {0} \ub178\ub4dc\uc5d0 \uc624\ub958\uac00 \uc788\uc2b5\ub2c8\ub2e4.
couldNotFindTemplate=\ud15c\ud50c\ub9bf {0}\ub97c \ucc3e\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4.
createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2}
createKitFailed=\u00a74Error occurred whilst creating kit {0}.
createKitSeparator=\u00a7m-----------------------
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml.
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml.
creatingConfigFromTemplate=\ud15c\ud50c\ub9bf\uc744 \uc124\uc815\ud558\uc5ec \ub9cc\ub4ed\ub2c8\ub2e4 \: {0}
creatingEmptyConfig=\ube48 \uc124\uc815 \ud30c\uc77c\uc744 \uc0dd\uc131\uc911\: {0}
creative=\ud06c\ub9ac\uc5d0\uc774\ud2f0\ube0c
@@ -89,14 +89,14 @@ defaultBanReason=\ub2f9\uc2e0\uc740 \uad00\ub9ac\uc790\uc5d0 \uc758\ud574 \uc11c
deleteFileError={0} \ud30c\uc77c\uc774 \uc0ad\uc81c\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
deleteHome=\u00a76\uc9d1\u00a7c {0} \uc774 \uc81c\uac70\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.
deleteJail=\u00a77{0} \uac10\uc625\uc774 \uc81c\uac70\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
deleteWarp=\u00a76\uc6cc\ud504 {0}\ub294(\uc740) \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
deleteWarp=\u00a76\uc6cc\ud504 {0}\ub294(\uc740) \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
deniedAccessCommand=\u00a7c{0}\ub2d8\uc740 \ud574\ub2f9 \uba85\ub839\uc5b4\uc5d0 \uc811\uadfc\ud560 \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
denyBookEdit=\u00a74\ub2f9\uc2e0\uc740 \uc774 \ucc45\uc758 \uc7a0\uae08\uc744 \ud574\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
denyChangeAuthor=\u00a74\ub2f9\uc2e0\uc740 \uc774 \ucc45\uc758 \uc800\uc790\ub97c \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
denyChangeTitle=\u00a74\ub2f9\uc2e0\uc740 \uc774 \ucc45\uc758 \uc81c\ubaa9\uc744 \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
depth=\u00a77\ub2f9\uc2e0\uc740 \ud574\uc218\uba74\uc5d0 \uc788\uc2b5\ub2c8\ub2e4.
depthAboveSea=\u00a76\ub2f9\uc2e0\uc740 \ud574\uc218\uba74 {0} \u00a76\ube14\ub85d \uc704\uc5d0 \uc788\uc2b5\ub2c8\ub2e4.
depthBelowSea=\u00a76\ub2f9\uc2e0\uc740 \ud574\uc218\uba74 {0} \u00a76\ube14\ub85d \uc544\ub798\uc5d0 \uc788\uc2b5\ub2c8\ub2e4.
depthBelowSea=\u00a76\ub2f9\uc2e0\uc740 \ud574\uc218\uba74 {0} \u00a76\ube14\ub85d \uc544\ub798\uc5d0 \uc788\uc2b5\ub2c8\ub2e4.
destinationNotSet=\ubaa9\uc801\uc9c0\uac00 \uc124\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
disabled=\ube44\ud65c\uc131\ud654\ub428
disabledToSpawnMob=\u00a74\uc774 \ubaac\uc2a4\ud130\uc758 \uc2a4\ud3f0\uc740 \uc124\uc815 \ud30c\uc77c\uc5d0\uc11c \ud574\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
@@ -106,6 +106,7 @@ dontMoveMessage=\u00a76{0}\ucd08 \ub4a4\uc5d0 \uc774\ub3d9\ub429\ub2c8\ub2e4. \u
downloadingGeoIp=GeoIP \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ub2e4\uc6b4\ubc1b\ub294 \uc911\uc785\ub2c8\ub2e4.... \uc57d\uac04\uc758 \uc2dc\uac04\uc774 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. (\uad6d\uac00\: 1.7 MB, \ub3c4\uc2dc\: 30MB)
duplicatedUserdata=\uc911\ubcf5\ub41c \uc720\uc800\ub370\uc774\ud130 \: {0} \uc640/\uacfc {1}
durability=\u00a76\uc774 \ub3c4\uad6c\ub294 \uc0ac\uc6a9 \uac00\ub2a5 \ud69f\uc218\uac00 s \u00a7c{0}\u00a76\ubc88 \ub0a8\uc558\uc2b5\ub2c8\ub2e4
east=E
editBookContents=\u00a7e\uc774\uc81c \uc774 \ucc45\uc758 \ub0b4\uc6a9\uc744 \uc218\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
enabled=\ud65c\uc131\ud654
enableUnlimited=\u00a7c{1} \u00a76\uc544\uc774\ud15c\uc744 \u00a7c{0} \u00a76\uc5d0\uac8c \ubb34\uc81c\ud55c\uc73c\ub85c \uc9c0\uae09\ud588\uc2b5\ub2c8\ub2e4.
@@ -209,6 +210,7 @@ inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76fro
is=\uc740/\ub294
isIpBanned=\u00a76IP \u00a7c{0} \u00a76\ub294 \ucc28\ub2e8 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.
itemCannotBeSold=\uadf8 \uc544\uc774\ud15c\uc740 \uc11c\ubc84\uc5d0 \ud314 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
itemMustBeStacked=\uc544\uc774\ud15c\uc744 \uac70\ub798\ud558\uae30 \uc704\ud574\uc11c 2\uac1c \uc774\uc0c1\uc758 \uac19\uc740\uc544\uc774\ud15c\uc744 \uac00\uc9c0\uace0\uc788\uc5b4\uc57c\ud569\ub2c8\ub2e4.
itemNames=\u00a76\uc9e7\uc740 \uc544\uc774\ud15c \uc774\ub984\:\u00a7r {0}
itemNotEnough1=\u00a7c\ub2f9\uc2e0\uc740 \ud310\ub9e4\ud558\uae30\uc704\ud55c \uc544\uc774\ud15c\uc744 \ucda9\ubd84\ud788 \uac00\uc9c0\uace0\uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
@@ -221,7 +223,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
itemSold=\u00a77 \u00a7c {0} \u00a77 {{1} \uc640 {2} \uc758 \uc544\uc774\ud15c\uc774 \ud314\ub9ac\ub2e4.)
itemSoldConsole={0} \ud310\ub9e4 {1} \uc758 \u00a77 {2} \u00a77 ({3} \uc544\uc774\ud15c\uc758 \ud56d\ubaa9 {4} \uac01\uac01\uc758)
itemSpawn=\u00a77\uc544\uc774\ud15c {1}\uc744/\ub97c {0}\uac1c \uc90d\ub2c8\ub2e4.
itemType=\u00a76\uc544\uc774\ud15c\:\u00a7c {0} \u00a76-\u00a7c {1}
itemType=\u00a76\uc544\uc774\ud15c\:\u00a7c {0}
jailAlreadyIncarcerated=\u00a74\uc0ac\ub78c\uc774 \uc774\ubbf8 \uac10\uc625\uc5d0 \uc788\uc74c\:\u00a7c {0}
jailList=\u00a76Jails\:\u00a7r {0}
jailMessage=\u00a7c\ub2f9\uc2e0\uc740 \ubc94\uc8c4\ub97c \uc800\uc9c0\ub974\uace0\uc788\uc2b5\ub2c8\ub2e4, \ub2f9\uc2e0\uc740 \uc2dc\uac04\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.
@@ -324,6 +326,9 @@ noDestroyPermission=\u00a74\ub2f9\uc2e0\uc740 \u00a7c{0}\u00a74 \ub97c \ud30c\ua
noDurability=\u00a74\uc774 \uc544\uc774\ud15c\uc5d0\ub294 \ub0b4\uad6c\ub3c4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
noGodWorldWarning=\u00a74\uc8fc\uc758\! \uc774 \uc6d4\ub4dc\uc5d0\uc11c \ubb34\uc801 \ubaa8\ub4dc\ub294 \ube44\ud65c\uc131\ud654\ub429\ub2c8\ub2e4.
noHelpFound=\u00a74\uc77c\uce58\ud558\ub294 \uba85\ub839\uc5b4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
northEast=NE
north=N
northWest=NW
noHomeSetPlayer=\ud574\ub2f9 \ud50c\ub808\uc774\uc5b4\ub294 \uc9d1 \uc124\uc815\uc774 \ub418\uc5b4\uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
noIgnored=\u00a76\ub2f9\uc2e0\uc774 \ubb34\uc2dc\ud558\ub294 \uc720\uc800\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
noJailsDefined=\u00a76No jails defined.
@@ -374,7 +379,7 @@ payToggleOn=\u00a76You are now accepting payments.
pendingTeleportCancelled=\u00a74\uc21c\uac04\uc774\ub3d9 \uc694\uccad\uc774 \ucde8\uc18c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
playerBanIpAddress=\u00a76Player\u00a7c {0} \u00a76banned IP address\u00a7c {1} \u00a76for\: \u00a7c{2}\u00a76.
playerBanned=\u00a76\ud50c\ub808\uc774\uc5b4\u00a7c {0} \u00a76\ub2d8\uc774\u00a7c {1} \u00a76\ub2d8\uc744 \ubca4\ud558\uc600\uc2b5\ub2c8\ub2e4. \uc0ac\uc720\: \u00a7c{2}\u00a76.
playerInJail=\u00a74\uadf8 \ud50c\ub808\uc774\uc5b4\ub294 \uc774\ubbf8 {0}\u00a74 \uac10\uc625\uc5d0 \uc218\uac10\ub418\uc5b4\uc788\uc2b5\ub2c8\ub2e4.
playerInJail=\u00a74\uadf8 \ud50c\ub808\uc774\uc5b4\ub294 \uc774\ubbf8 {0}\u00a74 \uac10\uc625\uc5d0 \uc218\uac10\ub418\uc5b4\uc788\uc2b5\ub2c8\ub2e4.
playerJailed=\u00a76{0} \ud50c\ub808\uc774\uc5b4\uac00 \uac10\uae08\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
playerJailedFor=\u00a76\ud50c\ub808\uc774\uc5b4 {0}\uc740 {1}\uc5d0 \uac10\uae08\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
playerKicked=\u00a76Player\u00a7c {0} \u00a76kicked {1} for {2}.
@@ -423,6 +428,7 @@ pWeatherSet=\u00a76Player weather is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}.
questionFormat=\u00a72[\uc9c8\ubb38]\u00a7r {0}
radiusTooBig=\u00a74\ubc94\uc704\uac00 \ub108\ubb34 \ud07d\ub2c8\ub2e4\! \ucd5c\ub300 \ubc94\uc704\ub294 {0}\uc785\ub2c8\ub2e4.
readNextPage=\u00a7c/{0} {1} \u00a76\ub97c \uc785\ub825\ud558\uc5ec \ub2e4\uc74c \ud398\uc774\uc9c0\ub97c \uc77d\uc73c\uc138\uc694.
realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1}
recentlyForeverAlone=\u00a74{0} recently went offline.
recipe=\u00a7c{0}\u00a76 (\u00a7c{2}\u00a76\uc758 \u00a7c{1}\u00a76) \uc758 \uc870\ud569\ubc95
recipeBadIndex=\uadf8 \ubc88\ud638\uc5d0 \ub300\ud55c \ub808\uc2dc\ud53c\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
@@ -471,6 +477,9 @@ signFormatSuccess=\u00a71[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=\u00a74\uc5ec\uae30\uc11c\ub294 \ud45c\uc9c0\ud310\uc744 \ub9cc\ub4e4\uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
similarWarpExist=\uc6cc\ud504\uc758 \uc774\ub984\uc740 \uc774\ubbf8 \ube44\uc2b7\ud55c \uc774\ub984\uc774 \uc874\uc7ac\ud569\ub2c8\ub2e4
southEast=SE
south=S
southWest=SW
skullChanged=\u00a76\uba38\ub9ac\uac00 \u00a7c{0}\u00a76 (\uc73c)\ub85c \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
slimeMalformedSize=\uc798\ubabb\ub41c \ud06c\uae30.
socialSpy=\u00a7c{0}\u00a76\: \u00a7c{1}\uc5d0 \ub300\ud55c \u00a76SocialSpy
@@ -489,7 +498,7 @@ survival=\uc11c\ubc14\uc774\ubc8c
takenFromAccount=\u00a7c{0} \ub9cc\ud07c \uc9c0\ubd88\ud558\uc600\uc2b5\ub2c8\ub2e4.
takenFromOthersAccount=\u00a7a{1}\u00a7a\uc758 \uacc4\uc815\uc5d0\uc11c {0}\u00a7a\uc744 \uac00\uc838\uc640 \uc794\uace0\uac00 {2}\u00a7a\uc774 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.
teleportAAll=\u00a76\ubaa8\ub4e0 \ud50c\ub808\uc774\uc5b4\uc5d0\uac8c \ud154\ub808\ud3ec\ud2b8 \uc694\uccad\uc744 \ubcf4\ub0c8\uc2b5\ub2c8\ub2e4...
teleportAll=\u00a76\ubaa8\ub4e0 \ud50c\ub808\uc774\uc5b4\ub97c \ud154\ub808\ud3ec\ud2b8 \ud558\ub294\uc911..
teleportAll=\u00a76\ubaa8\ub4e0 \ud50c\ub808\uc774\uc5b4\ub97c \ud154\ub808\ud3ec\ud2b8 \ud558\ub294\uc911..
teleportationCommencing=\u00a76\ud154\ub808\ud3ec\ud2b8 \uc911...
teleportationDisabled=\u00a76\ud154\ub808\ud3ec\ud2b8\uac00 \u00a7c\ube44\ud65c\uc131\ud654\u00a76\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
teleportationDisabledFor=\u00a7c{0}\u00a76 \uc5d0 \ub300\ud55c \uc774\ub3d9\uc774 \uc81c\ud55c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
@@ -545,7 +554,7 @@ unlimitedItems=\ubb34\uc81c\ud55c \uc544\uc774\ud15c \ubaa9\ub85d\:
unmutedPlayer=\ud50c\ub808\uc774\uc5b4 \u00a7c{0}\u00a76\ub294 \uc774\uc81c \ub9d0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
unsafeTeleportDestination=\u00a74\ud154\ub808\ud3ec\ud2b8 \ub300\uc0c1\uc774 \uc548\uc804\ud558\uace0 \ud154\ub808\ud3ec\ud2b8\uac00 \uc548\uc804 \ube44\ud65c\uc131\ud654 \ub429\ub2c8\ub2e4.
unvanishedReload=\u00a74A reload has forced you to become visible.
upgradingFilesError=\ud30c\uc77c\uc744 \uc5c5\uadf8\ub808\uc774\ub4dc \ud558\ub358 \ub3c4\uc911, \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4.
upgradingFilesError=\ud30c\uc77c\uc744 \uc5c5\uadf8\ub808\uc774\ub4dc \ud558\ub358 \ub3c4\uc911, \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4.
uptime=\u00a76\uac00\ub3d9 \uc2dc\uac04\:\u00a7c {0}
userAFK=\u00a77{0} \u00a75\uc740 \ud604\uc7ac \uc7a0\uc218 \uc0c1\ud0dc\uc774\ubbc0\ub85c \uc751\ub2f5\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
userAFKWithMessage=\u00a77{0} \u00a75\uc740 \ud604\uc7ac \uc7a0\uc218 \uc0c1\ud0dc\uc774\ubbc0\ub85c \uc751\ub2f5\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. {1}
@@ -561,7 +570,7 @@ usingTempFolderForTesting=\ud14c\uc2a4\ud2b8\ub97c \uc704\ud574 temp \ud3f4\ub35
vanish=\u00a76{0}\u00a76\ub2d8\uc758 \uc0ac\ub77c\uc9c0\uae30\uac00 {1}.
vanished=\u00a76\ub2f9\uc2e0\uc740 \uc774\uc81c \uc77c\ubc18 \ud50c\ub808\uc774\uc5b4\uc5d0\uac8c \ubcf4\uc774\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4, \uadf8\ub9ac\uace0 \uac8c\uc784 \ub0b4 \uba85\ub839\uc5b4\ub85c\ubd80\ud130 \uc228\uaca8\uc9d1\ub2c8\ub2e4.
versionMismatch=\u00a74\ubc84\uc804 \ubd88\uc77c\uce58\! {0}\uc744 \ub3d9\uc77c\ud55c \ubc84\uc804\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8 \ud574 \uc8fc\uc138\uc694
versionMismatchAll=\ubc84\uc804\uc774 \ubd88\uc77c\uce58\ud569\ub2c8\ub2e4\! \ubaa8\ub4e0 Essentials jar \ud30c\uc77c\ub4e4\uc758 \ubc84\uc804\uc744 \uac19\uc740 \ubc84\uc804\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8 \ud574 \uc8fc\uc138\uc694.
versionMismatchAll=\ubc84\uc804\uc774 \ubd88\uc77c\uce58\ud569\ub2c8\ub2e4\! \ubaa8\ub4e0 Essentials jar \ud30c\uc77c\ub4e4\uc758 \ubc84\uc804\uc744 \uac19\uc740 \ubc84\uc804\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8 \ud574 \uc8fc\uc138\uc694.
voiceSilenced=\u00a76\ub2f9\uc2e0\uc758 \ubaa9\uc18c\ub9ac\uac00 \uce68\ubb35\ub418\uc5c8\uc2b5\ub2c8\ub2e4
walking=\uac77\uae30
warpDeleteError=\u00a74\uc6cc\ud504 \ud30c\uc77c \uc0ad\uc81c\uc911 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
@@ -579,6 +588,7 @@ weatherStorm=\u00a76{0}\uc758 \ub0a0\uc528\uac00 \ud3ed\ud48d\uc73c\ub85c \uc124
weatherStormFor=\u00a76{0}\u00a76\uc758 \ub0a0\uc528\uac00 {1}\u00a76\ucd08\uac04 \ucc9c\ub465\ubc88\uac1c\ub85c \uc124\uc815\ub429\ub2c8\ub2e4.
weatherSun=\u00a76{0}\u00a76\uc758 \ub0a0\uc528\uac00 \ub9d1\uc74c\uc73c\ub85c \uc124\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
weatherSunFor=\u00a77{0}\ucd08\uac04 \ub2f9\uc2e0\uc774 \uc788\ub294 \uc6d4\ub4dc\ub294 \ub9d1\uac8c \uc720\uc9c0\ub429\ub2c8\ub2e4.
west=W
whoisAFK=\u00a76 - \uc7a0\uc218\:\u00a7r {0}
whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1})
whoisBanned=\u00a76 - \ucc28\ub2e8\:\u00a7r {0}
+12 -2
View File
@@ -77,7 +77,7 @@ couldNotFindTemplate=\u00a74Could not find template {0}
createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2}
createKitFailed=\u00a74Error occurred whilst creating kit {0}.
createKitSeparator=\u00a7m-----------------------
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml.
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml.
creatingConfigFromTemplate=Creating config from template\: {0}
creatingEmptyConfig=Kuriama tuscia konfiguracija\: {0}
creative=k\u016brybinis
@@ -106,6 +106,7 @@ dontMoveMessage=\u00a76Teleportacija prasid\u0117s po\u00a7c {0}\u00a76. Nejud\u
downloadingGeoIp=Siun\u010diama GeoIP databaze... tai gali \u0161iek tiek u\u017etrukti (Kaime\: 1.7 MB, Mieste\: 30MB)
duplicatedUserdata=Duplicated userdata\: {0} and {1}.
durability=\u00a76This tool has \u00a7c{0}\u00a76 uses left
east=E
editBookContents=\u00a7eTu dabar gali redaguoti \u0161ios knygos turin\u012f.
enabled=\u012fjungtas
enableUnlimited=\u00a76Duodama neribota suma\u00a7c {0} \u00a76\u017eaid\u0117jui \u00a7c{1}\u00a76.
@@ -208,6 +209,7 @@ inventoryClearingFromAll=\u00a76Clearing the inventory of all users...
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
is=is
isIpBanned=\u00a76IP \u00a7c{0} \u00a76yra u\u017eblokuotas.
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
itemCannotBeSold=\u00a74\u0160is daiktas negali b\u016bti parduotas serveryje.
itemMustBeStacked=\u00a74Daiktas turi buti parduotas po 1 stack.
itemNames=\u00a76Daikt\u0173 trumpi pavadinimai\:\u00a7r {0}
@@ -221,7 +223,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
itemSold=\u00a7aParduota po \u00a7c{0} \u00a7a({1} {2} uz {3} kiekviena).
itemSoldConsole=\u00a7a{0} \u00a7asold {1} for \u00a7a{2} \u00a7a({3} items at {4} each).
itemSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1}
itemType=\u00a76Item\:\u00a7c {0} \u00a76-\u00a7c {1}
itemType=\u00a76Item\:\u00a7c {0}
jailAlreadyIncarcerated=\u00a74\u017daid\u0117jas jau yra kal\u0117jime\:\u00a7c {0}
jailList=\u00a76Jails\:\u00a7r {0}
jailMessage=\u00a74Padarei nusikaltim\u0105, laikas atpirkti nuod\u0117mes.
@@ -322,6 +324,9 @@ noAccessPermission=\u00a74J\u016bs neturite leidimo prieiti prie \u00a7c{0}\u00a
noBreakBedrock=\u00a74Tu negali sunaikinti bedrock.
noDestroyPermission=\u00a74J\u016bs neturite teis\u0117s sugriauti \u00a7c{0}\u00a74.
noDurability=\u00a74This item does not have a durability.
northEast=NE
north=N
northWest=NW
noGodWorldWarning=\u00a74Warning\! God mode in this world disabled.
noHelpFound=\u00a74No matching commands.
noHomeSetPlayer=\u00a76\u017daid\u0117jas n\u0117ra nusistat\u0119s nam\u0173.
@@ -423,6 +428,7 @@ pWeatherSet=\u00a76Player weather is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}.
questionFormat=\u00a72[Question]\u00a7r {0}
radiusTooBig=\u00a74Radius is too big\! Maximum radius is {0}.
readNextPage=\u00a76Ra\u0161yk\u00a7c /{0} {1} \u00a76norint per\u017ei\u016br\u0117ti kit\u0105 puslap\u012f.
realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1}
recentlyForeverAlone=\u00a74{0} recently went offline.
recipe=\u00a76Receptas u\u017e \u00a7c {0} \u00a76(\u00a7c{2} \u00a7c{1})
recipeBadIndex=There is no recipe by that number.
@@ -471,6 +477,9 @@ signFormatSuccess=\u00a71[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=\u00a74Tu negali statyti lentel\u0117s \u010dia.
similarWarpExist=\u00a74A warp with a similar name already exists.
southEast=SE
south=S
southWest=SW
skullChanged=\u00a76Galva pakeista \u012f \u017eaid\u0117jo \u00a7c{0}\u00a76 galv\u0105.
slimeMalformedSize=\u00a74Malformed size.
socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1}
@@ -579,6 +588,7 @@ weatherStorm=\u00a76Tu nustatei or\u0105 \u012f \u00a7cstorm\u00a76, pasaulyje\:
weatherStormFor=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0} \u00a76for {1} seconds.
weatherSun=\u00a76Tu nustatei or\u0105 \u012f \u00a7csun\u00a76, pasaulyje\:\u00a7c {0}\u00a76.
weatherSunFor=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0} \u00a76for {1} seconds.
west=W
whoisAFK=\u00a76 - AFK\:\u00a7r {0}
whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1})
whoisBanned=\u00a76 - U\u017eblokuotas\:\u00a7r {0}
Loaded 100 of 153 files, more files were not shown because too many files have changed in this diff. Show more