Compare commits

...
95 Commits
Author SHA1 Message Date
MD 3348bd9129 Release 2.19.3 2022-03-04 11:41:56 +00:00
Josh Roy 1a5526867c Fix IllegalAccessException with advancement listener on 1.12.2 (#4826)
Fixes #4809.
2022-03-03 20:38:39 +00:00
MD c5253bc5e2 Update to Minecraft 1.18.2 (#4821)
This PR updates the build setup to Gradle 7.4 and updates EssentialsX to Minecraft 1.18.2.
2022-02-28 20:51:26 +00:00
Flask Bot 29a2a865c5 New Crowdin updates (#4744) 2022-02-28 20:31:02 +00:00
MD c3b994808f Use GitHub proxy fallback for update checker (#4818) 2022-02-26 17:09:54 -05:00
triagonal bc2da98703 Make OfflinePlayer#setName protected for CMI Importer (#4805) 2022-02-14 07:40:48 -05:00
Josh Roy cbb012853c Fix toggleshout causing issues with question/local chat 2022-02-13 22:44:37 -05:00
Josh Roy 4bf4bd432a Add some color to the local prefix by default 2022-02-13 22:44:37 -05:00
Josh Roy 83d0e0d9a0 Add permissions to receive certain channel channels 2022-02-13 22:44:37 -05:00
Josh Roy 2f5c24d114 Add permission for local channel chat 2022-02-13 22:44:37 -05:00
Josh Roy 88c8ccd29b Add config for default shout state and for persisting shout state 2022-02-13 22:44:37 -05:00
Josh Roy 94edbcfeb1 Add chat question config option 2022-02-13 22:44:37 -05:00
Josh RoyandMD d5822e9a41 Add config for max /tree and /bigtree range (#4728)
Co-authored-by: MD <1917406+mdcfe@users.noreply.github.com>
2022-02-13 16:46:18 -05:00
Josh Roy debf09437e Add UUID support to trade and protection signs (#4713) 2022-02-13 15:54:19 -05:00
Josh Roy a9e5f079a9 Fix trade sign length validation issues (#4748) 2022-02-13 15:50:43 -05:00
Josh Roy f00c2dcf92 Fix keepinv policies ignoring offhand (#4725) 2022-02-13 20:37:25 +00:00
Josh Roy 63cbf7e2da Prevent legacy material support from being initiated (#4697) 2022-02-13 15:33:51 -05:00
Josh Roy 19837f9309 Add some more dump files (#4785)
Adds worth, tpr, and spawns configs.

See also https://github.com/EssentialsX/Website/pull/68
2022-02-08 09:26:05 +00:00
Josh Roy 4b8b770c30 Allow /nick without change-displayname (#4758)
Closes #4709.
2022-02-06 18:23:17 +00:00
Josh Roy ddc258ed11 Fix teleport request queue being reversed order (#4755)
Fix #4753
2022-02-06 18:18:40 +00:00
Josh Roy d23796dade Support doubles in /tppos (#4729)
Closes #1785
2022-02-06 18:01:51 +00:00
Josh Roy 41f5cc3175 Use Paper command forwarding API (#4794)
Uses API added in PaperMC/Paper@9940bca, when available.
2022-02-06 17:56:13 +00:00
Josh Roy c6fe160b47 Fix Paper command executor on modern Paper versions (#4791) 2022-02-01 22:13:16 +00:00
sxphirus 5c46bea2ca Add translation key for /near entries (#4740) 2022-01-20 10:05:31 -05:00
Flask Bot a9585bb525 New Crowdin updates (#4668) 2022-01-09 16:27:25 +00:00
Josh Roy bb88a6a749 Fix rate limit exception in update checker (#4731) 2022-01-02 17:24:32 +00:00
Pierre Dedrie 739600eb05 Fix safelogin for 1.18 and above by using worldProvider minHeight (#4715) 2021-12-26 23:56:03 +00:00
Josh Roy 5f98d3fac5 Add mitigation for JDK-8274349 (#4711) 2021-12-24 21:40:41 -05:00
Josh Roy 84326cf13e Fix LocationUtil#getSafeDestination NSME on older versions (#4708)
Fixes a NoSuchMethodError from old guava versions in old MC versions.

Fixes #4703
2021-12-23 11:55:31 +00:00
Josh Roy 685084219e Use futureproof Paper component serializer when available (#4706)
#plainSerializer will be removed when adventure 5.0.0 releases. This PR prevents this from breaking in the future.

Closes #4705
2021-12-23 10:57:41 +00:00
Josh Roy c4e62ae22b Remove usused configuration classes (#4707)
These were not used since configurate, no plugin should be using this, and it causes compile errors on the latest spigot version.
2021-12-23 01:18:02 +00:00
MD 05ce11f657 Bump to 2.19.3 dev 2021-12-15 21:29:45 +00:00
MD bcb0fb5825 Bump to 2.19.2 release 2021-12-15 20:58:38 +00:00
MD 91f4493fe0 Run Actions builds for dev branches (#4691) 2021-12-15 20:55:37 +00:00
MD d53ff36a2a Prevent IndexOutOfBoundsException in interaction replies (#4690) 2021-12-15 20:55:37 +00:00
MD 98917d97c8 Bump down to 2.19.2-dev 2021-12-15 20:55:37 +00:00
Josh Roy 7e1d18fee4 Prepare for 2.20.0 dev builds 2021-12-14 21:26:44 +00:00
Josh Roy 0b7e7801d0 Release 2.19.1 (#4681) 2021-12-14 19:16:08 +00:00
Josh Roy 840035944a Truncate Discord interaction messages to proper length (#4686) 2021-12-14 18:46:59 +00:00
Josh RoyandMD 20a7d1c7ee Add DiscordRelayEvent to edit relayed Discord->MC messages (#4656)
Implements the event suggested in #4580.

Co-authored-by: MD <1917406+mdcfe@users.noreply.github.com>
2021-12-14 16:26:57 +00:00
pop4959 253185bd0e Remove ignore teleport metadata 2021-12-12 22:23:56 +00:00
Josh Roy dae519494e Fix stack overflow when disabling commands from other addons (#4680) 2021-12-11 19:16:23 -08:00
Josh Roy dc27af78bf Update to MC 1.18.1 2021-12-11 12:13:50 +00:00
Flask Bot 41861a8551 New Crowdin updates (#4467) 2021-12-04 14:53:26 +00:00
Josh Roy 9b629e42d8 Bump JDA + discord-webhooks dependencies (#4655) 2021-12-04 14:47:40 +00:00
7794634d37 Add support for multiple queued TPA requests (#3801)
This PR adds support for players to receive multiple teleport requests, which are queued and can be managed independently of one another.

All commands should retain their current behavior but have some new additions;
* `/tpaccept`: now allows you to specify a player or `*` to accept a specific player's or all players' teleport request(s) respectively.
  - Using a wildcard will only accept all tpahere requests, as players can't teleport to multiple places simultaneously.
* `/tpdeny`: now allows you to specify a player or `*` to deny a specific player's or all players' teleport request(s) respectively.

This PR also adds a new setting for the maximum amount of pending TPA requests a user can have at once.
```yml
# The maximum amount of simultaneous tpa requests that can be pending for any given user.
# Once at this threshold, any new tpa requests will bump the oldest tpa requests out of queue.
# Defaults to 5.
tpa-max-amount: 5
```

Closes #3769
Closes #1550

Co-authored-by: Mariell Hoversholm <proximyst@proximy.st>
Co-authored-by: MD <1917406+mdcfe@users.noreply.github.com>
2021-12-04 14:40:06 +00:00
Josh Roy d091d6902c Fix safelogin support with 1.18 world heights (#4667)
Fixes #4665.
2021-12-03 20:31:36 +00:00
MD c45c741210 Bump supported version to 1.18 release 2021-11-30 16:33:05 +00:00
MD e35c65b976 Refactor world info provider; only clamp to logical height when already below
Fixes #4657.
2021-11-30 16:33:05 +00:00
MDandJason 0983167740 Port remaining groovy build logic to kotlin
Co-authored-by: Jason <11360596+jpenilla@users.noreply.github.com>
2021-11-30 16:33:05 +00:00
1509cf8978 Support 0>y>256 for safe/random teleports (#4641)
Co-authored-by: pop4959 <pop4959@gmail.com>
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2021-11-30 16:33:05 +00:00
MD c0082ee734 Update to Gradle 7.3 and toolchain to JDK 17 2021-11-30 16:33:05 +00:00
Flask Bot db2ec1b436 Update items.json for Minecraft 1.18 2021-11-30 16:33:05 +00:00
Josh Roy 7a1e50d10f Fix reflection mappings for the ServerStateProvider in 1.18 2021-11-30 16:33:05 +00:00
Josh Roy b6ba1768a1 Mark 1.18 as a supported version 2021-11-30 16:33:05 +00:00
Josh Roy c38dd997d2 Update Spigot to 1.18 2021-11-30 16:33:05 +00:00
Josh Roy f8ca1bae5d Fix offline player error in /playtime for versions < 1.15.2 (#4649) 2021-11-25 19:50:49 +00:00
Josh Roy 3c60bcf2de Allow unsafe homes when force-disable-teleport-safety is enabled (#4650) 2021-11-25 19:47:42 +00:00
Josh Roy 3f857e3183 Fix DiscordUtil#getOrCreateWebhook using webhooks without tokens 2021-11-25 14:03:56 -05:00
Josh Roy 668c9634ca Ensure JDA is started before allowing calls to the JDA object 2021-11-25 14:03:56 -05:00
nik2143andJosh Roy 51c49b0de6 Set a metadata value for vanished players (#4646)
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2021-11-24 09:57:55 -05:00
Lax 5723dac6ba Send discord config in dump even when plugin is disabled 2021-11-17 19:15:02 -05:00
Josh Roy 680d3230ea Add /discord command to display invite code (#4620) 2021-11-06 19:18:37 -04:00
Josh Roy 8f679de352 Add offline user support to /playtime (#4619) 2021-11-06 15:41:38 -07:00
Josh Roy 86d435eee1 Move UUID below alts in /seen (#4615) 2021-11-06 13:50:56 -07:00
Bobcat00andBobcat00 e4cf965bae Add translation for /list real name (#4614)
Co-authored-by: Bobcat00 <Bobcat00@users.noreply.github.com>
2021-11-05 22:24:21 +00:00
Andre_601 78c846a0a8 Minor typo corrections for EssentialsXDiscord (#4603) 2021-11-01 21:41:58 -04:00
pop4959andJosh Roy c466c9c370 Add metadata value to bypass last location setting on teleport (#4597)
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2021-10-31 17:25:18 -04:00
Josh Roy 6994005a5f Fix light blocks being considering solid (#4601) 2021-10-30 22:25:03 -07:00
Josh Roy e43f06bfa6 Add /mail sendtempall (#4561)
Implements #4558
2021-10-24 16:45:01 +00:00
Josh Roy 9601687190 Add console regex filter for discord module (#4534) 2021-10-24 12:12:42 -04:00
Josh Roy 2ed94f1048 Add provider to use new Paper advancement API (#4588)
Paper added in PaperMC/Paper@40ee634
2021-10-24 14:27:07 +00:00
Josh Roy 70045c30f3 Migrate reflection in MetaItemStack to a provider (#4592) 2021-10-24 15:17:06 +01:00
Josh Roy ce88c0e1e4 Fix kit issues with potions in 1.8 (#4591)
Fixes #2867
2021-10-24 14:12:20 +00:00
Josh Roy 494e82e581 Fix ability to delete warps in unloaded worlds (#4590)
Fixes #4584.
2021-10-24 15:05:10 +01:00
MelluhandJosh Roy edd15132fd Add playtime command (#4562)
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2021-10-23 15:29:37 -04:00
Tadhg BoyleandJosh Roy add664441e Add notify messages to jail command (#4576)
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2021-10-23 15:18:51 -04:00
Josh Roy 58b0fb089f Improve error message when primary channel is improperly defined (#4586)
* Improve message verboseness when primary channel is improperly defined

* Clarify primary channel behavior
2021-10-20 13:09:56 +01:00
Josh Roy 90e4845627 Remove config reloads on world load/unload (#4573)
Since the Configurate rewrite, we hold locations using `LazyLocation`, which is converted to a `Location` with world lookups on demand; as such we no longer need to reload configs on each world load since invalid locations will now softly fail.
2021-10-13 18:41:48 +01:00
Josh RoyandMD 43f4d306be Add discordbroadcast command (#4541)
* Add discordbroadcast command

* Update EssentialsDiscord/src/main/resources/plugin.yml

Co-authored-by: MD <1917406+mdcfe@users.noreply.github.com>

* Add emoji parsing/tab complete for discordbroadcast command

Co-authored-by: MD <1917406+mdcfe@users.noreply.github.com>
2021-10-11 15:54:55 -04:00
Josh Roy cb7d9baf7a Fix exception while running vanilla commands for chat command relay (#4552)
Fixes #4545
2021-10-11 19:32:41 +00:00
Josh Roy f3aea5e6ec Improve error message for updater checker rate limit (#4560)
Fixes #4556
2021-10-11 20:06:18 +01:00
Josh Roy a7a1fcd98c Fix Discord token regex censor pattern (#4563)
Discord changed their token format again
2021-10-07 09:22:41 +01:00
ef8bcc8bc4 Add kits subfolder to allow for multiple kit files (#4407)
Co-authored-by: MD <1917406+mdcfe@users.noreply.github.com>
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2021-10-02 19:14:41 -04:00
MDandJosh Roy b3692d18b0 Update plugin.yml authors to reflect EssentialsX contributions (#4551)
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2021-09-28 15:49:55 -04:00
Josh Roy a7b2b675d5 Add essentials.seen.uuid permission to show uuids in seen (#4531)
Adds `essentials.seen.uuid` permission requirement to show uuids in `/seen`. People were complaining this cluttered it so whatever. Also adds said permission to the `essentials.seen.extra` permission group.

Closes #4499.
2021-09-28 13:13:50 +00:00
Josh RoyandMD 7d7a8e47ac Fix verbose command usages not being disabled properly (#4530)
Co-authored-by: MD <1917406+mdcfe@users.noreply.github.com>
2021-09-28 13:09:04 +00:00
MDandJosh Roy f0da17b75c Asynchronously filter commands on Paper when possible (#4460)
Co-authored-by: MD <1917406+mdcfe@users.noreply.github.com>
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2021-09-15 17:23:31 -04:00
Josh Roy d86b471402 Add action message type (#4520)
Adds a message type which will show when a player runs the /action (/me) command.

Message Type:
```yml
# Configure which Discord channels different messages will be sent to.
# You can either use the names of the channels listed above or just the id of a channel.
# If an invalid channel is used, the primary channel will be used instead.
#
# To disable a message from showing, use 'none' as the channel name.
message-types:
  ...
  # Action messages sent when a player runs the /me or /action commands.
  action: primary
```

Message Format:
```yml
# The following entries allow you to customize the formatting of messages sent by the plugin.
# Each message has a description of how it is used along with placeholders that can be used.
messages:
  ...
  # This is the message sent to Discord when a player runs the /me or /action command.
  # The following placeholders can be used here:
  # - {username}: The name of the user who ran the command
  # - {displayname}: The display name of the user who ran the command
  # - {action}: The action (message) the user used in the command.
  # ... PlaceholderAPI placeholders are also supported here too!
  action: ":person_biking: {displayname} *{action}*"
```
2021-09-15 14:52:14 +00:00
Josh Roy 767508fb87 Fix bed spawn setting when waking up villagers (#4524)
Fixes #4461.
2021-09-15 15:40:23 +01:00
LaxandJosh Roy c85d772e1b Add /ess dump all as alias for /ess dump * (#4517)
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2021-09-08 17:48:47 -04:00
MDandJosh Roy fde6524e46 Fix error with commands ending in single colon (#4508)
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2021-09-01 13:37:46 -04:00
b2886969f0 Update to bStats v2 (#4350)
Co-authored-by: MD <1917406+mdcfe@users.noreply.github.com>
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2021-09-01 13:33:43 -04:00
Josh RoyandMD 19ca5186e4 Replace unneeded inputs with new /ess dump in issue template (#4479)
Co-authored-by: MD <1917406+mdcfe@users.noreply.github.com>
2021-09-01 13:26:54 +01:00
Josh Roy b86a34c909 Prepare for 2.19.1 dev builds (#4505) 2021-09-01 12:55:37 +01:00
189 changed files with 8031 additions and 2599 deletions

No files matched your search

+2 -16
View File
@@ -22,24 +22,10 @@ body:
validations:
required: true
- type: textarea
attributes:
label: "`/ess version` output"
description: Run `/ess version` in the console, then copy and paste the full output of the command into this box.
validations:
required: true
- type: input
attributes:
label: Server startup log
description: Upload your server startup log (from the start of `latest.log` up to where it says "Done!") to either https://paste.gg or https://gist.github.com, save and then paste the link in this box.
placeholder: "Example: https://paste.gg/p/anonymous/109dd6a10a734a3aa430d5a351ea5210"
validations:
required: true
- type: input
attributes:
label: EssentialsX config files
description: Upload your EssentialsX `config.yml` (and any other relevant files like `kits.yml`) to either https://paste.gg or https://gist.github.com, save and then paste the link in this box. If you included those files in the same paste as your startup log, paste the same link here.
placeholder: "Example: https://paste.gg/p/anonymous/109dd6a10a734a3aa430d5a351ea5210"
label: "`/ess dump all` output"
description: Run `/ess dump all` in the console, then copy and paste the link from the output of the command into this box. (If this command doesn't work, you should [update EssentialsX](https://essentialsx.net/downloads.html) and try again.)
validations:
required: true
- type: input
+1
View File
@@ -4,6 +4,7 @@ on:
push:
branches:
- 2.x
- dev/*
jobs:
build:
+1
View File
@@ -9,6 +9,7 @@ on:
branches:
- 2.x
- mc/*
- dev/*
jobs:
build:
+8 -1
View File
@@ -10,6 +10,8 @@ dependencies {
api 'io.papermc:paperlib:1.0.6'
api 'org.bstats:bstats-bukkit:2.2.1'
implementation 'org.spongepowered:configurate-yaml:4.1.2'
implementation 'org.checkerframework:checker-qual:3.14.0'
@@ -20,6 +22,9 @@ dependencies {
exclude group: "org.bukkit", module: "bukkit"
}
api(project(':providers:1_8Provider')) {
exclude group: "org.spigotmc", module: "spigot"
}
api(project(':providers:1_12Provider')) {
exclude group: "org.bukkit", module: "bukkit"
}
}
@@ -28,6 +33,7 @@ shadowJar {
dependencies {
include (dependency('io.papermc:paperlib'))
include (dependency('org.bstats:bstats-bukkit'))
include (dependency('org.bstats:bstats-base'))
include (dependency('org.spongepowered:configurate-yaml'))
include (dependency('org.spongepowered:configurate-core'))
include (dependency('org.yaml:snakeyaml'))
@@ -37,9 +43,10 @@ shadowJar {
include (project(':providers:PaperProvider'))
include (project(':providers:NMSReflectionProvider'))
include (project(':providers:1_8Provider'))
include (project(':providers:1_12Provider'))
}
relocate 'io.papermc.lib', 'com.earth2me.essentials.paperlib'
relocate 'org.bstats.bukkit', 'com.earth2me.essentials.metrics'
relocate 'org.bstats', 'com.earth2me.essentials.libs.bstats'
relocate 'org.spongepowered.configurate', 'com.earth2me.essentials.libs.configurate'
relocate 'org.yaml.snakeyaml', 'com.earth2me.essentials.libs.snakeyaml'
relocate 'io.leangen.geantyref', 'com.earth2me.essentials.libs.geantyref'
@@ -29,11 +29,12 @@ public class AlternativeCommandsHandler {
}
public final void addPlugin(final Plugin plugin) {
if (plugin.getDescription().getMain().contains("com.earth2me.essentials")) {
if (plugin.getDescription().getMain().contains("com.earth2me.essentials") || plugin.getDescription().getMain().contains("net.essentialsx")) {
return;
}
for (final Map.Entry<String, Command> entry : getPluginCommands(plugin).entrySet()) {
final String commandName = entry.getKey().contains(":") ? entry.getKey().split(":")[1] : entry.getKey();
final String[] commandSplit = entry.getKey().split(":", 2);
final String commandName = commandSplit.length > 1 ? commandSplit[1] : entry.getKey();
final Command command = entry.getValue();
final List<Command> pluginCommands = altcommands.computeIfAbsent(commandName.toLowerCase(Locale.ENGLISH), k -> new ArrayList<>());
@@ -189,7 +189,7 @@ public class AsyncTeleport implements IAsyncTeleport {
}
PaperLib.getChunkAtAsync(targetLoc.getWorld(), targetLoc.getBlockX() >> 4, targetLoc.getBlockZ() >> 4, true, true).thenAccept(chunk -> {
Location loc = targetLoc;
if (LocationUtil.isBlockUnsafeForUser(teleportee, chunk.getWorld(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())) {
if (LocationUtil.isBlockUnsafeForUser(ess, teleportee, chunk.getWorld(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())) {
if (ess.getSettings().isTeleportSafetyEnabled()) {
if (ess.getSettings().isForceDisableTeleportSafety()) {
//The chunk we're teleporting to is 100% going to be loaded here, no need to teleport async.
@@ -47,6 +47,7 @@ import net.ess3.api.IEssentials;
import net.ess3.api.IItemDb;
import net.ess3.api.IJails;
import net.ess3.api.ISettings;
import net.ess3.nms.refl.providers.ReflDataWorldInfoProvider;
import net.ess3.nms.refl.providers.ReflFormattedCommandAliasProvider;
import net.ess3.nms.refl.providers.ReflKnownCommandsProvider;
import net.ess3.nms.refl.providers.ReflOnlineModeProvider;
@@ -57,25 +58,33 @@ import net.ess3.nms.refl.providers.ReflSpawnerBlockProvider;
import net.ess3.nms.refl.providers.ReflSyncCommandsProvider;
import net.ess3.provider.ContainerProvider;
import net.ess3.provider.FormattedCommandAliasProvider;
import net.ess3.provider.ItemUnbreakableProvider;
import net.ess3.provider.KnownCommandsProvider;
import net.ess3.provider.MaterialTagProvider;
import net.ess3.provider.PersistentDataProvider;
import net.ess3.provider.PotionMetaProvider;
import net.ess3.provider.SerializationProvider;
import net.ess3.provider.ProviderListener;
import net.ess3.provider.SerializationProvider;
import net.ess3.provider.ServerStateProvider;
import net.ess3.provider.SignDataProvider;
import net.ess3.provider.SpawnEggProvider;
import net.ess3.provider.SpawnerBlockProvider;
import net.ess3.provider.SpawnerItemProvider;
import net.ess3.provider.SyncCommandsProvider;
import net.ess3.provider.WorldInfoProvider;
import net.ess3.provider.providers.BasePotionDataProvider;
import net.ess3.provider.providers.BlockMetaSpawnerItemProvider;
import net.ess3.provider.providers.BukkitMaterialTagProvider;
import net.ess3.provider.providers.BukkitSpawnerBlockProvider;
import net.ess3.provider.providers.FixedHeightWorldInfoProvider;
import net.ess3.provider.providers.FlatSpawnEggProvider;
import net.ess3.provider.providers.LegacyItemUnbreakableProvider;
import net.ess3.provider.providers.LegacyPotionMetaProvider;
import net.ess3.provider.providers.LegacySpawnEggProvider;
import net.ess3.provider.providers.ModernDataWorldInfoProvider;
import net.ess3.provider.providers.ModernItemUnbreakableProvider;
import net.ess3.provider.providers.ModernPersistentDataProvider;
import net.ess3.provider.providers.ModernSignDataProvider;
import net.ess3.provider.providers.PaperContainerProvider;
import net.ess3.provider.providers.PaperKnownCommandsProvider;
import net.ess3.provider.providers.PaperMaterialTagProvider;
@@ -103,7 +112,6 @@ import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.world.WorldLoadEvent;
import org.bukkit.event.world.WorldUnloadEvent;
import org.bukkit.plugin.InvalidDescriptionException;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
@@ -167,6 +175,9 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
private transient SyncCommandsProvider syncCommandsProvider;
private transient PersistentDataProvider persistentDataProvider;
private transient ReflOnlineModeProvider onlineModeProvider;
private transient ItemUnbreakableProvider unbreakableProvider;
private transient WorldInfoProvider worldInfoProvider;
private transient SignDataProvider signDataProvider;
private transient Kits kits;
private transient RandomTeleport randomTeleport;
private transient UpdateChecker updateChecker;
@@ -410,6 +421,24 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
onlineModeProvider = new ReflOnlineModeProvider();
if (VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_11_2_R01)) {
unbreakableProvider = new ModernItemUnbreakableProvider();
} else {
unbreakableProvider = new LegacyItemUnbreakableProvider();
}
if (VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_17_1_R01)) {
worldInfoProvider = new ModernDataWorldInfoProvider();
} else if (VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_16_5_R01)) {
worldInfoProvider = new ReflDataWorldInfoProvider();
} else {
worldInfoProvider = new FixedHeightWorldInfoProvider();
}
if (VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_14_4_R01)) {
signDataProvider = new ModernSignDataProvider(this);
}
execTimer.mark("Init(Providers)");
reload();
@@ -727,7 +756,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
if (getSettings().isCommandDisabled(commandLabel)) {
if (getKnownCommandsProvider().getKnownCommands().containsKey(commandLabel)) {
final Command newCmd = getKnownCommandsProvider().getKnownCommands().get(commandLabel);
if (!(newCmd instanceof PluginIdentifiableCommand) || ((PluginIdentifiableCommand) newCmd).getPlugin() != this) {
if (!(newCmd instanceof PluginIdentifiableCommand) || !isEssentialsPlugin(((PluginIdentifiableCommand) newCmd).getPlugin())) {
return newCmd.execute(cSender, commandLabel, args);
}
}
@@ -771,14 +800,15 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
} catch (final NoChargeException | QuietAbortException ex) {
return true;
} catch (final NotEnoughArgumentsException ex) {
sender.sendMessage(tl("commandHelpLine1", commandLabel));
sender.sendMessage(tl("commandHelpLine2", command.getDescription()));
sender.sendMessage(tl("commandHelpLine3"));
if (getSettings().isVerboseCommandUsages() && !cmd.getUsageStrings().isEmpty()) {
sender.sendMessage(tl("commandHelpLine1", commandLabel));
sender.sendMessage(tl("commandHelpLine2", command.getDescription()));
sender.sendMessage(tl("commandHelpLine3"));
for (Map.Entry<String, String> usage : cmd.getUsageStrings().entrySet()) {
sender.sendMessage(tl("commandHelpLineUsage", usage.getKey().replace("<command>", commandLabel), usage.getValue()));
}
} else {
sender.sendMessage(command.getDescription());
sender.sendMessage(command.getUsage().replace("<command>", commandLabel));
}
if (!ex.getMessage().isEmpty()) {
@@ -801,6 +831,10 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
}
}
private boolean isEssentialsPlugin(Plugin plugin) {
return plugin.getDescription().getMain().contains("com.earth2me.essentials") || plugin.getDescription().getMain().contains("net.essentialsx");
}
public void cleanupOpenInventories() {
for (final User user : getOnlineUsers()) {
if (user.isRecipeSee()) {
@@ -1269,6 +1303,21 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
return onlineModeProvider;
}
@Override
public ItemUnbreakableProvider getItemUnbreakableProvider() {
return unbreakableProvider;
}
@Override
public WorldInfoProvider getWorldInfoProvider() {
return worldInfoProvider;
}
@Override
public SignDataProvider getSignDataProvider() {
return signDataProvider;
}
@Override
public PluginCommand getPluginCommand(final String cmd) {
return this.getCommand(cmd);
@@ -1302,25 +1351,6 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
@EventHandler(priority = EventPriority.LOW)
public void onWorldLoad(final WorldLoadEvent event) {
PermissionsDefaults.registerBackDefaultFor(event.getWorld());
ess.getJails().reloadConfig();
ess.getWarps().reloadConfig();
for (final IConf iConf : ((Essentials) ess).confList) {
if (iConf instanceof IEssentialsModule) {
iConf.reloadConfig();
}
}
}
@EventHandler(priority = EventPriority.LOW)
public void onWorldUnload(final WorldUnloadEvent event) {
ess.getJails().reloadConfig();
ess.getWarps().reloadConfig();
for (final IConf iConf : ((Essentials) ess).confList) {
if (iConf instanceof IEssentialsModule) {
iConf.reloadConfig();
}
}
}
@Override
@@ -1,674 +0,0 @@
package com.earth2me.essentials;
import com.google.common.io.Files;
import net.ess3.api.InvalidWorldException;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.math.BigDecimal;
import java.math.MathContext;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CoderResult;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
import static com.earth2me.essentials.I18n.tl;
public class EssentialsConf extends YamlConfiguration {
protected static final Logger LOGGER = Logger.getLogger("Essentials");
protected static final Charset UTF8 = StandardCharsets.UTF_8;
private static final ExecutorService EXECUTOR_SERVICE = Executors.newSingleThreadExecutor();
protected final File configFile;
private final AtomicInteger pendingDiskWrites = new AtomicInteger(0);
private final AtomicBoolean transaction = new AtomicBoolean(false);
private final byte[] bytebuffer = new byte[1024];
protected String templateName = null;
private Class<?> resourceClass = EssentialsConf.class;
public EssentialsConf(final File configFile) {
super();
this.configFile = configFile.getAbsoluteFile();
}
public static BigDecimal toBigDecimal(final String input, final BigDecimal def) {
if (input == null || input.isEmpty()) {
return def;
} else {
try {
return new BigDecimal(input, MathContext.DECIMAL128);
} catch (final NumberFormatException | ArithmeticException e) {
return def;
}
}
}
public synchronized void load() {
if (pendingDiskWrites.get() != 0) {
LOGGER.log(Level.INFO, "File {0} not read, because it''s not yet written to disk.", configFile);
return;
}
if (!configFile.getParentFile().exists()) {
if (!configFile.getParentFile().mkdirs()) {
LOGGER.log(Level.SEVERE, tl("failedToCreateConfig", configFile.toString()));
}
}
// This will delete files where the first character is 0. In most cases they are broken.
if (configFile.exists() && configFile.length() != 0) {
try {
final InputStream input = new FileInputStream(configFile);
try {
if (input.read() == 0) {
input.close();
configFile.delete();
}
} catch (final IOException ex) {
LOGGER.log(Level.SEVERE, null, ex);
} finally {
try {
input.close();
} catch (final IOException ex) {
LOGGER.log(Level.SEVERE, null, ex);
}
}
} catch (final FileNotFoundException ex) {
LOGGER.log(Level.SEVERE, null, ex);
}
}
if (!configFile.exists()) {
if (legacyFileExists()) {
convertLegacyFile();
} else if (altFileExists()) {
convertAltFile();
} else if (templateName != null) {
LOGGER.log(Level.INFO, tl("creatingConfigFromTemplate", configFile.toString()));
createFromTemplate();
} else {
return;
}
}
try {
try (final FileInputStream inputStream = new FileInputStream(configFile)) {
final long startSize = configFile.length();
if (startSize > Integer.MAX_VALUE) {
throw new InvalidConfigurationException("File too big");
}
ByteBuffer buffer = ByteBuffer.allocate((int) startSize);
int length;
while ((length = inputStream.read(bytebuffer)) != -1) {
if (length > buffer.remaining()) {
final ByteBuffer resize = ByteBuffer.allocate(buffer.capacity() + length - buffer.remaining());
final int resizePosition = buffer.position();
// Fix builds compiled against Java 9+ breaking on Java 8
((Buffer) buffer).rewind();
resize.put(buffer);
resize.position(resizePosition);
buffer = resize;
}
buffer.put(bytebuffer, 0, length);
}
((Buffer) buffer).rewind();
final CharBuffer data = CharBuffer.allocate(buffer.capacity());
CharsetDecoder decoder = UTF8.newDecoder();
CoderResult result = decoder.decode(buffer, data, true);
if (result.isError()) {
((Buffer) buffer).rewind();
((Buffer) data).clear();
LOGGER.log(Level.INFO, "File " + configFile.getAbsolutePath() + " is not utf-8 encoded, trying " + Charset.defaultCharset().displayName());
decoder = Charset.defaultCharset().newDecoder();
result = decoder.decode(buffer, data, true);
if (result.isError()) {
throw new InvalidConfigurationException("Invalid Characters in file " + configFile.getAbsolutePath());
} else {
decoder.flush(data);
}
} else {
decoder.flush(data);
}
final int end = data.position();
((Buffer) data).rewind();
super.loadFromString(data.subSequence(0, end).toString());
}
} catch (final IOException ex) {
LOGGER.log(Level.SEVERE, ex.getMessage(), ex);
} catch (final InvalidConfigurationException ex) {
final File broken = new File(configFile.getAbsolutePath() + ".broken." + System.currentTimeMillis());
configFile.renameTo(broken);
LOGGER.log(Level.SEVERE, "The file " + configFile.toString() + " is broken, it has been renamed to " + broken.toString(), ex.getCause());
}
}
public boolean legacyFileExists() {
return false;
}
public void convertLegacyFile() {
LOGGER.log(Level.SEVERE, "Unable to import legacy config file.");
}
public boolean altFileExists() {
return false;
}
public void convertAltFile() {
LOGGER.log(Level.SEVERE, "Unable to import alt config file.");
}
private void createFromTemplate() {
InputStream istr = null;
OutputStream ostr = null;
try {
istr = resourceClass.getResourceAsStream(templateName);
if (istr == null) {
LOGGER.log(Level.SEVERE, tl("couldNotFindTemplate", templateName));
return;
}
ostr = new FileOutputStream(configFile);
final byte[] buffer = new byte[1024];
int length = 0;
length = istr.read(buffer);
while (length > 0) {
ostr.write(buffer, 0, length);
length = istr.read(buffer);
}
} catch (final IOException ex) {
LOGGER.log(Level.SEVERE, tl("failedToWriteConfig", configFile.toString()), ex);
} finally {
try {
if (istr != null) {
istr.close();
}
} catch (final IOException ex) {
Logger.getLogger(EssentialsConf.class.getName()).log(Level.SEVERE, null, ex);
}
try {
if (ostr != null) {
ostr.close();
}
} catch (final IOException ex) {
LOGGER.log(Level.SEVERE, tl("failedToCloseConfig", configFile.toString()), ex);
}
}
}
public void setTemplateName(final String templateName) {
this.templateName = templateName;
}
public File getFile() {
return configFile;
}
public void setTemplateName(final String templateName, final Class<?> resClass) {
this.templateName = templateName;
this.resourceClass = resClass;
}
public void startTransaction() {
transaction.set(true);
}
public void stopTransaction() {
transaction.set(false);
save();
}
public void save() {
try {
save(configFile);
} catch (final IOException ex) {
LOGGER.log(Level.SEVERE, ex.getMessage(), ex);
}
}
public void saveWithError() throws IOException {
save(configFile);
}
@Override
public synchronized void save(final File file) throws IOException {
if (!transaction.get()) {
delayedSave(file);
}
}
//This may be aborted if there are stagnant requests sitting in queue.
//This needs fixed to discard outstanding save requests.
public synchronized void forceSave() {
try {
final Future<?> future = delayedSave(configFile);
if (future != null) {
future.get();
}
} catch (final InterruptedException | ExecutionException ex) {
LOGGER.log(Level.SEVERE, ex.getMessage(), ex);
}
}
public synchronized void cleanup() {
forceSave();
}
private Future<?> delayedSave(final File file) {
if (file == null) {
throw new IllegalArgumentException("File cannot be null");
}
final String data = saveToString();
if (data.length() == 0) {
return null;
}
pendingDiskWrites.incrementAndGet();
return EXECUTOR_SERVICE.submit(new WriteRunner(configFile, data, pendingDiskWrites));
}
public boolean hasProperty(final String path) {
return isSet(path);
}
public Location getLocation(final String path, final Server server) throws InvalidWorldException {
final String worldString = (path == null ? "" : path + ".") + "world";
final String worldName = getString(worldString);
if (worldName == null || worldName.isEmpty()) {
return null;
}
final World world = server.getWorld(worldName);
if (world == null) {
throw new InvalidWorldException(worldName);
}
return new Location(world, getDouble((path == null ? "" : path + ".") + "x", 0), getDouble((path == null ? "" : path + ".") + "y", 0), getDouble((path == null ? "" : path + ".") + "z", 0), (float) getDouble((path == null ? "" : path + ".") + "yaw", 0), (float) getDouble((path == null ? "" : path + ".") + "pitch", 0));
}
public void setProperty(final String path, final Location loc) {
set((path == null ? "" : path + ".") + "world", loc.getWorld().getName());
set((path == null ? "" : path + ".") + "x", loc.getX());
set((path == null ? "" : path + ".") + "y", loc.getY());
set((path == null ? "" : path + ".") + "z", loc.getZ());
set((path == null ? "" : path + ".") + "yaw", loc.getYaw());
set((path == null ? "" : path + ".") + "pitch", loc.getPitch());
}
@Override
public ItemStack getItemStack(final String path) {
final ItemStack stack = new ItemStack(Material.valueOf(getString(path + ".type", "AIR")), getInt(path + ".amount", 1), (short) getInt(path + ".damage", 0));
final ConfigurationSection enchants = getConfigurationSection(path + ".enchant");
if (enchants != null) {
for (final String enchant : enchants.getKeys(false)) {
final Enchantment enchantment = Enchantment.getByName(enchant.toUpperCase(Locale.ENGLISH));
if (enchantment == null) {
continue;
}
final int level = getInt(path + ".enchant." + enchant, enchantment.getStartLevel());
stack.addUnsafeEnchantment(enchantment, level);
}
}
return stack;
/*
* ,
* (byte)getInt(path + ".data", 0)
*/
}
public void setProperty(final String path, final ItemStack stack) {
final Map<String, Object> map = new HashMap<>();
map.put("type", stack.getType().toString());
map.put("amount", stack.getAmount());
map.put("damage", stack.getDurability());
final Map<Enchantment, Integer> enchantments = stack.getEnchantments();
if (!enchantments.isEmpty()) {
final Map<String, Integer> enchant = new HashMap<>();
for (final Map.Entry<Enchantment, Integer> entry : enchantments.entrySet()) {
enchant.put(entry.getKey().getName().toLowerCase(Locale.ENGLISH), entry.getValue());
}
map.put("enchant", enchant);
}
// getData().getData() is broken
//map.put("data", stack.getDurability());
set(path, map);
}
public void setProperty(final String path, final List object) {
set(path, new ArrayList(object));
}
public void setProperty(final String path, final Map object) {
set(path, new LinkedHashMap(object));
}
public Object getProperty(final String path) {
return get(path);
}
public void setProperty(final String path, final BigDecimal bigDecimal) {
set(path, bigDecimal.toString());
}
public void setProperty(final String path, final Object object) {
set(path, object);
}
public void removeProperty(final String path) {
set(path, null);
}
@Override
public synchronized Object get(final String path) {
return super.get(path);
}
@Override
public synchronized Object get(final String path, final Object def) {
return super.get(path, def);
}
public synchronized BigDecimal getBigDecimal(final String path, final BigDecimal def) {
final String input = super.getString(path);
return toBigDecimal(input, def);
}
@Override
public synchronized boolean getBoolean(final String path) {
return super.getBoolean(path);
}
@Override
public synchronized boolean getBoolean(final String path, final boolean def) {
return super.getBoolean(path, def);
}
@Override
public synchronized List<Boolean> getBooleanList(final String path) {
return super.getBooleanList(path);
}
@Override
public synchronized List<Byte> getByteList(final String path) {
return super.getByteList(path);
}
@Override
public synchronized List<Character> getCharacterList(final String path) {
return super.getCharacterList(path);
}
@Override
public synchronized ConfigurationSection getConfigurationSection(final String path) {
return super.getConfigurationSection(path);
}
@Override
public synchronized double getDouble(final String path) {
return super.getDouble(path);
}
@Override
public synchronized double getDouble(final String path, final double def) {
return super.getDouble(path, def);
}
@Override
public synchronized List<Double> getDoubleList(final String path) {
return super.getDoubleList(path);
}
@Override
public synchronized List<Float> getFloatList(final String path) {
return super.getFloatList(path);
}
@Override
public synchronized int getInt(final String path) {
return super.getInt(path);
}
@Override
public synchronized int getInt(final String path, final int def) {
return super.getInt(path, def);
}
@Override
public synchronized List<Integer> getIntegerList(final String path) {
return super.getIntegerList(path);
}
@Override
public synchronized ItemStack getItemStack(final String path, final ItemStack def) {
return super.getItemStack(path, def);
}
@Override
public synchronized Set<String> getKeys(final boolean deep) {
return super.getKeys(deep);
}
@Override
public synchronized List<?> getList(final String path) {
return super.getList(path);
}
@Override
public synchronized List<?> getList(final String path, final List<?> def) {
return super.getList(path, def);
}
@Override
public synchronized long getLong(final String path) {
return super.getLong(path);
}
@Override
public synchronized long getLong(final String path, final long def) {
return super.getLong(path, def);
}
@Override
public synchronized List<Long> getLongList(final String path) {
return super.getLongList(path);
}
public synchronized Map<String, Object> getMap() {
return map;
}
@Override
public synchronized List<Map<?, ?>> getMapList(final String path) {
return super.getMapList(path);
}
@Override
public synchronized OfflinePlayer getOfflinePlayer(final String path) {
return super.getOfflinePlayer(path);
}
@Override
public synchronized OfflinePlayer getOfflinePlayer(final String path, final OfflinePlayer def) {
return super.getOfflinePlayer(path, def);
}
@Override
public synchronized List<Short> getShortList(final String path) {
return super.getShortList(path);
}
@Override
public synchronized String getString(final String path) {
return super.getString(path);
}
@Override
public synchronized String getString(final String path, final String def) {
return super.getString(path, def);
}
@Override
public synchronized List<String> getStringList(final String path) {
return super.getStringList(path);
}
@Override
public synchronized Map<String, Object> getValues(final boolean deep) {
return super.getValues(deep);
}
@Override
public synchronized Vector getVector(final String path) {
return super.getVector(path);
}
@Override
public synchronized Vector getVector(final String path, final Vector def) {
return super.getVector(path, def);
}
@Override
public synchronized boolean isBoolean(final String path) {
return super.isBoolean(path);
}
@Override
public synchronized boolean isConfigurationSection(final String path) {
return super.isConfigurationSection(path);
}
@Override
public synchronized boolean isDouble(final String path) {
return super.isDouble(path);
}
@Override
public synchronized boolean isInt(final String path) {
return super.isInt(path);
}
@Override
public synchronized boolean isItemStack(final String path) {
return super.isItemStack(path);
}
@Override
public synchronized boolean isList(final String path) {
return super.isList(path);
}
@Override
public synchronized boolean isLong(final String path) {
return super.isLong(path);
}
@Override
public synchronized boolean isOfflinePlayer(final String path) {
return super.isOfflinePlayer(path);
}
@Override
public synchronized boolean isSet(final String path) {
return super.isSet(path);
}
@Override
public synchronized boolean isString(final String path) {
return super.isString(path);
}
@Override
public synchronized boolean isVector(final String path) {
return super.isVector(path);
}
@Override
public synchronized void set(final String path, final Object value) {
super.set(path, value);
}
private static final class WriteRunner implements Runnable {
private final File configFile;
private final String data;
private final AtomicInteger pendingDiskWrites;
private WriteRunner(final File configFile, final String data, final AtomicInteger pendingDiskWrites) {
this.configFile = configFile;
this.data = data;
this.pendingDiskWrites = pendingDiskWrites;
}
@Override
public void run() {
//long startTime = System.nanoTime();
synchronized (configFile) {
if (pendingDiskWrites.get() > 1) {
// Writes can be skipped, because they are stored in a queue (in the executor).
// Only the last is actually written.
pendingDiskWrites.decrementAndGet();
//LOGGER.log(Level.INFO, configFile + " skipped writing in " + (System.nanoTime() - startTime) + " nsec.");
return;
}
try {
Files.createParentDirs(configFile);
if (!configFile.exists()) {
try {
LOGGER.log(Level.INFO, tl("creatingEmptyConfig", configFile.toString()));
if (!configFile.createNewFile()) {
LOGGER.log(Level.SEVERE, tl("failedToCreateConfig", configFile.toString()));
return;
}
} catch (final IOException ex) {
LOGGER.log(Level.SEVERE, tl("failedToCreateConfig", configFile.toString()), ex);
return;
}
}
try (final FileOutputStream fos = new FileOutputStream(configFile)) {
try (final OutputStreamWriter writer = new OutputStreamWriter(fos, UTF8)) {
writer.write(data);
}
}
} catch (final IOException e) {
LOGGER.log(Level.SEVERE, e.getMessage(), e);
} finally {
//LOGGER.log(Level.INFO, configFile + " written to disk in " + (System.nanoTime() - startTime) + " nsec.");
pendingDiskWrites.decrementAndGet();
}
}
}
}
}
@@ -1,5 +1,6 @@
package com.earth2me.essentials;
import com.earth2me.essentials.utils.MaterialUtil;
import com.earth2me.essentials.utils.VersionUtil;
import net.ess3.api.IEssentials;
import org.bukkit.Location;
@@ -198,7 +199,7 @@ public class EssentialsEntityListener implements Listener {
final ISettings.KeepInvPolicy bind = ess.getSettings().getBindingItemsPolicy();
if (VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_11_2_R01) && (vanish != ISettings.KeepInvPolicy.KEEP || bind != ISettings.KeepInvPolicy.KEEP)) {
for (final ItemStack stack : event.getEntity().getInventory()) {
if (stack != null) {
if (stack != null && !MaterialUtil.isAir(stack.getType())) {
if (stack.getEnchantments().containsKey(Enchantment.VANISHING_CURSE)) {
if (vanish == ISettings.KeepInvPolicy.DELETE) {
event.getEntity().getInventory().remove(stack);
@@ -217,10 +218,12 @@ public class EssentialsEntityListener implements Listener {
}
}
}
// Now check armor
final ItemStack[] armor = event.getEntity().getInventory().getArmorContents();
for (int i = 0; i < armor.length; i++) {
final ItemStack stack = armor[i];
if (stack != null) {
if (stack != null && !MaterialUtil.isAir(stack.getType())) {
if (stack.getEnchantments().containsKey(Enchantment.VANISHING_CURSE)) {
if (vanish == ISettings.KeepInvPolicy.DELETE) {
armor[i] = null;
@@ -244,6 +247,24 @@ public class EssentialsEntityListener implements Listener {
}
}
event.getEntity().getInventory().setArmorContents(armor);
// Now check offhand
if (VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_9_R01)) {
final ItemStack stack = event.getEntity().getInventory().getItemInOffHand();
//noinspection ConstantConditions
if (stack != null && !MaterialUtil.isAir(stack.getType())) {
final boolean isVanish = stack.getEnchantments().containsKey(Enchantment.VANISHING_CURSE);
final boolean isBind = stack.getEnchantments().containsKey(Enchantment.BINDING_CURSE);
if (isVanish || isBind) {
event.getEntity().getInventory().setItemInOffHand(null);
if ((isVanish && vanish == ISettings.KeepInvPolicy.DROP) || (isBind && bind == ISettings.KeepInvPolicy.DROP)) {
if (!event.getDrops().contains(stack)) {
event.getDrops().add(stack);
}
}
}
}
}
}
}
}
@@ -13,6 +13,9 @@ import com.earth2me.essentials.utils.VersionUtil;
import io.papermc.lib.PaperLib;
import net.ess3.api.IEssentials;
import net.ess3.api.events.AfkStatusChangeEvent;
import net.ess3.provider.CommandSendListenerProvider;
import net.ess3.provider.providers.BukkitCommandSendListenerProvider;
import net.ess3.provider.providers.PaperCommandSendListenerProvider;
import net.essentialsx.api.v2.events.AsyncUserDataLoadEvent;
import org.bukkit.BanEntry;
import org.bukkit.BanList;
@@ -37,7 +40,6 @@ import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerBucketEmptyEvent;
import org.bukkit.event.player.PlayerChangedWorldEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerCommandSendEvent;
import org.bukkit.event.player.PlayerEggThrowEvent;
import org.bukkit.event.player.PlayerFishEvent;
import org.bukkit.event.player.PlayerInteractEvent;
@@ -68,6 +70,7 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Predicate;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
@@ -101,6 +104,15 @@ public class EssentialsPlayerListener implements Listener, FakeAccessor {
}
}
private static boolean isPaperCommandSendEvent() {
try {
Class.forName("com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent");
return true;
} catch (final ClassNotFoundException ignored) {
return false;
}
}
private static boolean isArrowPickupEvent() {
try {
Class.forName("org.bukkit.event.player.PlayerPickupArrowEvent");
@@ -123,8 +135,10 @@ public class EssentialsPlayerListener implements Listener, FakeAccessor {
ess.getServer().getPluginManager().registerEvents(new PickupListenerPre1_12(), ess);
}
if (isCommandSendEvent()) {
ess.getServer().getPluginManager().registerEvents(new CommandSendListener(), ess);
if (isPaperCommandSendEvent()) {
ess.getServer().getPluginManager().registerEvents(new PaperCommandSendListenerProvider(new CommandSendFilter()), ess);
} else if (isCommandSendEvent()) {
ess.getServer().getPluginManager().registerEvents(new BukkitCommandSendListenerProvider(new CommandSendFilter()), ess);
}
}
@@ -203,7 +217,7 @@ public class EssentialsPlayerListener implements Listener, FakeAccessor {
to.setY(from.getY());
to.setZ(from.getZ());
try {
event.setTo(LocationUtil.getSafeDestination(to));
event.setTo(LocationUtil.getSafeDestination(ess, to));
} catch (final Exception ex) {
event.setTo(to);
}
@@ -398,7 +412,7 @@ public class EssentialsPlayerListener implements Listener, FakeAccessor {
if (user.isAuthorized("essentials.fly.safelogin")) {
user.getBase().setFallDistance(0);
if (LocationUtil.shouldFly(user.getLocation())) {
if (LocationUtil.shouldFly(ess, user.getLocation())) {
user.getBase().setAllowFlight(true);
user.getBase().setFlying(true);
if (ess.getSettings().isSendFlyEnableOnJoin()) {
@@ -521,21 +535,16 @@ public class EssentialsPlayerListener implements Listener, FakeAccessor {
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onPlayerTeleport(final PlayerTeleportEvent event) {
final boolean backListener = ess.getSettings().registerBackInListener();
final boolean teleportInvulnerability = ess.getSettings().isTeleportInvulnerability();
if (backListener || teleportInvulnerability) {
final Player player = event.getPlayer();
if (player.hasMetadata("NPC")) {
return;
}
final User user = ess.getUser(player);
//There is TeleportCause.COMMMAND but plugins have to actively pass the cause in on their teleports.
if (user.isAuthorized("essentials.back.onteleport") && backListener && (event.getCause() == TeleportCause.PLUGIN || event.getCause() == TeleportCause.COMMAND)) {
user.setLastLocation();
}
if (teleportInvulnerability && (event.getCause() == TeleportCause.PLUGIN || event.getCause() == TeleportCause.COMMAND)) {
user.enableInvulnerabilityAfterTeleport();
}
final Player player = event.getPlayer();
if (player.hasMetadata("NPC") || !(event.getCause() == TeleportCause.PLUGIN || event.getCause() == TeleportCause.COMMAND)) {
return;
}
final User user = ess.getUser(player);
if (ess.getSettings().registerBackInListener() && user.isAuthorized("essentials.back.onteleport")) {
user.setLastLocation();
}
if (ess.getSettings().isTeleportInvulnerability()) {
user.enableInvulnerabilityAfterTeleport();
}
}
@@ -738,6 +747,9 @@ public class EssentialsPlayerListener implements Listener, FakeAccessor {
switch (event.getAction()) {
case RIGHT_CLICK_BLOCK:
if (!event.isCancelled() && MaterialUtil.isBed(event.getClickedBlock().getType()) && ess.getSettings().getUpdateBedAtDaytime()) {
if (VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_13_2_R01) && ((org.bukkit.block.data.type.Bed) event.getClickedBlock().getBlockData()).isOccupied()) {
break;
}
final User player = ess.getUser(event.getPlayer());
if (player.isAuthorized("essentials.sethome.bed") && player.getWorld().getEnvironment().equals(World.Environment.NORMAL)) {
player.getBase().setBedSpawnLocation(event.getClickedBlock().getLocation());
@@ -972,15 +984,14 @@ public class EssentialsPlayerListener implements Listener, FakeAccessor {
}
}
private final class CommandSendListener implements Listener {
@EventHandler(priority = EventPriority.NORMAL)
public void onCommandSend(final PlayerCommandSendEvent event) {
final User user = ess.getUser(event.getPlayer());
private final class CommandSendFilter implements CommandSendListenerProvider.Filter {
@Override
public Predicate<String> apply(Player player) {
final User user = ess.getUser(player);
final Set<PluginCommand> checked = new HashSet<>();
final Set<PluginCommand> toRemove = new HashSet<>();
event.getCommands().removeIf(label -> {
return label -> {
if (isEssentialsCommand(label)) {
final PluginCommand command = ess.getServer().getPluginCommand(label);
if (!checked.contains(command)) {
@@ -992,25 +1003,21 @@ public class EssentialsPlayerListener implements Listener, FakeAccessor {
return toRemove.contains(command);
}
return false;
});
if (ess.getSettings().isDebug()) {
ess.getLogger().info("Removed commands: " + toRemove.toString());
}
};
}
/**
* Returns true if all of the following are true:
* - The command is a plugin command
* - The plugin command is from a plugin in an essentials-controlled package
* - The plugin command is from an official EssentialsX plugin or addon
* - There is no known alternative OR the alternative is overridden by Essentials
*/
private boolean isEssentialsCommand(final String label) {
final PluginCommand command = ess.getServer().getPluginCommand(label);
return command != null
&& (command.getPlugin() == ess || command.getPlugin().getClass().getName().startsWith("com.earth2me.essentials"))
&& (ess.getSettings().isCommandOverridden(label) || (ess.getAlternativeCommandsHandler().getAlternative(label) == null));
&& (command.getPlugin() == ess || command.getPlugin().getClass().getName().startsWith("com.earth2me.essentials") || command.getPlugin().getClass().getName().startsWith("net.essentialsx"))
&& (ess.getSettings().isCommandOverridden(label) || (ess.getAlternativeCommandsHandler().getAlternative(label) == null));
}
}
@@ -438,7 +438,7 @@ public class EssentialsUpgrade {
public void convertKits() {
final Kits kits = ess.getKits();
final EssentialsConfiguration config = kits.getConfig();
final EssentialsConfiguration config = kits.getRootConfig();
if (doneFile.getBoolean("kitsyml", false)) {
return;
}
@@ -1,66 +0,0 @@
package com.earth2me.essentials;
import com.google.common.base.Charsets;
import com.google.common.io.Files;
import org.bukkit.Bukkit;
import java.io.File;
import java.io.IOException;
import java.util.Locale;
import java.util.UUID;
import java.util.logging.Level;
public class EssentialsUserConf extends EssentialsConf {
public String username;
public final UUID uuid;
public EssentialsUserConf(final String username, final UUID uuid, final File configFile) {
super(configFile);
this.username = username;
this.uuid = uuid;
}
public void setUsername(String username) {
this.username = username;
}
@Override
public boolean legacyFileExists() {
final File file = new File(configFile.getParentFile(), username + ".yml");
return file.exists();
}
@Override
public void convertLegacyFile() {
final File file = new File(configFile.getParentFile(), username + ".yml");
try {
Files.move(file, new File(configFile.getParentFile(), uuid + ".yml"));
} catch (final IOException ex) {
Bukkit.getLogger().log(Level.WARNING, "Failed to migrate user: " + username, ex);
}
setProperty("lastAccountName", username);
}
private File getAltFile() {
final UUID fn = UUID.nameUUIDFromBytes(("OfflinePlayer:" + username.toLowerCase(Locale.ENGLISH)).getBytes(Charsets.UTF_8));
return new File(configFile.getParentFile(), fn.toString() + ".yml");
}
@Override
public boolean altFileExists() {
if (username.equals(username.toLowerCase())) {
return false;
}
return getAltFile().exists();
}
@Override
public void convertAltFile() {
try {
Files.move(getAltFile(), new File(configFile.getParentFile(), uuid + ".yml"));
} catch (final IOException ex) {
Bukkit.getLogger().log(Level.WARNING, "Failed to migrate user: " + username, ex);
}
}
}
@@ -10,14 +10,17 @@ import com.earth2me.essentials.updatecheck.UpdateChecker;
import net.ess3.nms.refl.providers.ReflOnlineModeProvider;
import net.ess3.provider.ContainerProvider;
import net.ess3.provider.FormattedCommandAliasProvider;
import net.ess3.provider.ItemUnbreakableProvider;
import net.ess3.provider.KnownCommandsProvider;
import net.ess3.provider.MaterialTagProvider;
import net.ess3.provider.PersistentDataProvider;
import net.ess3.provider.ServerStateProvider;
import net.ess3.provider.SerializationProvider;
import net.ess3.provider.ServerStateProvider;
import net.ess3.provider.SignDataProvider;
import net.ess3.provider.SpawnerBlockProvider;
import net.ess3.provider.SpawnerItemProvider;
import net.ess3.provider.SyncCommandsProvider;
import net.ess3.provider.WorldInfoProvider;
import net.essentialsx.api.v2.services.BalanceTop;
import net.essentialsx.api.v2.services.mail.MailService;
import org.bukkit.Server;
@@ -159,5 +162,11 @@ public interface IEssentials extends Plugin {
ReflOnlineModeProvider getOnlineModeProvider();
ItemUnbreakableProvider getItemUnbreakableProvider();
WorldInfoProvider getWorldInfoProvider();
SignDataProvider getSignDataProvider();
PluginCommand getPluginCommand(String cmd);
}
@@ -46,6 +46,12 @@ public interface ISettings extends IConf {
char getChatQuestion();
boolean isShoutDefault();
boolean isPersistShout();
boolean isChatQuestionEnabled();
BigDecimal getCommandCost(IEssentialsCommand cmd);
BigDecimal getCommandCost(String label);
@@ -228,6 +234,8 @@ public interface ISettings extends IConf {
boolean isWorldHomePermissions();
int getMaxTreeCommandRange();
boolean registerBackInListener();
boolean getDisableItemPickupWhileAfk();
@@ -238,6 +246,8 @@ public interface ISettings extends IConf {
long getTpaAcceptCancellation();
int getTpaMaxRequests();
long getTeleportInvulnerability();
boolean isTeleportInvulnerability();
@@ -12,13 +12,16 @@ import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.checkerframework.checker.nullness.qual.Nullable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.regex.Pattern;
/**
@@ -61,8 +64,11 @@ public interface IUser {
/**
* Returns whether this user has an outstanding teleport request to deal with.
*
* @deprecated The teleport request system has been moved into a multi-user teleport request queue.
* @see IUser#hasPendingTpaRequests(boolean, boolean)
* @return whether there is a teleport request
*/
@Deprecated
boolean hasOutstandingTeleportRequest();
/**
@@ -98,6 +104,11 @@ public interface IUser {
boolean canBuild();
/**
* @deprecated The teleport request system has been moved into a multi-user teleport request queue.
* @see IUser#getNextTpaRequest(boolean, boolean, boolean)
*/
@Deprecated
long getTeleportRequestTime();
void enableInvulnerabilityAfterTeleport();
@@ -205,6 +216,8 @@ public interface IUser {
String getName();
UUID getUUID();
String getDisplayName();
String getFormattedNickname();
@@ -238,4 +251,74 @@ public interface IUser {
void setToggleShout(boolean toggleShout);
boolean isToggleShout();
/**
* Gets information about the most-recently-made, non-expired TPA request in the tpa queue of this {@link IUser}.
* <p>
* The TPA Queue is Last-In-First-Out queue which stores all the active pending teleport
* requests of this {@link IUser}. Timeout calculations are also done during the
* iteration process of this method, ensuring that teleport requests made past the timeout
* period are removed from queue and therefore not returned here. The maximum size of this
* queue is determined by {@link ISettings#getTpaMaxRequests()}.
*
* @param inform true if the underlying {@link IUser} should be informed if a request expires during iteration.
* @param ignoreExpirations true if this method should not process expirations for the entire queue and stop execution on the first unexpired request.
* @param excludeHere true if /tphere requests should be ignored in fetching the next tpa request.
* @return A {@link TpaRequest} corresponding to the next available request or null if no valid request is present.
*/
@Nullable TpaRequest getNextTpaRequest(boolean inform, boolean ignoreExpirations, boolean excludeHere);
/**
* Whether or not this {@link IUser} has any valid TPA requests in queue.
*
* @param inform true if the user should be informed if a request expires during iteration.
* @param excludeHere true if /tpahere requests should be ignored in checking if a tpa request is available.
* @return true if the user has an available pending request in queue.
*/
boolean hasPendingTpaRequests(boolean inform, boolean excludeHere);
class TpaRequest {
private final String name;
private final UUID requesterUuid;
private boolean here;
private Location location;
private long time;
public TpaRequest(String name, UUID requesterUuid) {
this.name = name;
this.requesterUuid = requesterUuid;
}
public String getName() {
return name;
}
public UUID getRequesterUuid() {
return requesterUuid;
}
public boolean isHere() {
return here;
}
public void setHere(boolean here) {
this.here = here;
}
public Location getLocation() {
return location;
}
public void setLocation(Location location) {
this.location = location;
}
public long getTime() {
return time;
}
public void setTime(long time) {
this.time = time;
}
}
}
@@ -4,84 +4,106 @@ import com.earth2me.essentials.config.ConfigurateUtil;
import com.earth2me.essentials.config.EssentialsConfiguration;
import com.earth2me.essentials.utils.NumberUtil;
import org.spongepowered.configurate.CommentedConfigurationNode;
import org.spongepowered.configurate.serialize.SerializationException;
import java.io.File;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import static com.earth2me.essentials.I18n.capitalCase;
import static com.earth2me.essentials.I18n.tl;
public class Kits implements IConf {
private final EssentialsConfiguration config;
private CommentedConfigurationNode kits;
private final IEssentials ess;
private final EssentialsConfiguration rootConfig;
private final Map<String, EssentialsConfiguration> kitToConfigMap = new HashMap<>();
private final Map<String, Map<String, Object>> kitMap = new HashMap<>();
public Kits(final IEssentials essentials) {
config = new EssentialsConfiguration(new File(essentials.getDataFolder(), "kits.yml"), "/kits.yml");
this.ess = essentials;
this.rootConfig = new EssentialsConfiguration(new File(essentials.getDataFolder(), "kits.yml"), "/kits.yml");
reloadConfig();
}
@Override
public void reloadConfig() {
config.load();
kits = _getKits();
rootConfig.load();
parseKits();
}
public File getFile() {
return config.getFile();
return rootConfig.getFile();
}
private CommentedConfigurationNode _getKits() {
final CommentedConfigurationNode section = config.getSection("kits");
if (section != null) {
final CommentedConfigurationNode newSection = config.newSection();
for (final String kitItem : ConfigurateUtil.getKeys(section)) {
final CommentedConfigurationNode kitSection = section.node(kitItem);
if (kitSection.isMap()) {
try {
newSection.node(kitItem.toLowerCase(Locale.ENGLISH)).set(kitSection);
} catch (SerializationException e) {
e.printStackTrace();
private void parseKit(final String kitName, final CommentedConfigurationNode kitSection, final EssentialsConfiguration parentConfig) {
if (kitSection.isMap()) {
final String effectiveKitName = kitName.toLowerCase(Locale.ENGLISH);
kitToConfigMap.put(effectiveKitName, parentConfig);
kitMap.put(effectiveKitName, ConfigurateUtil.getRawMap(kitSection));
}
}
private void parseKits() {
kitToConfigMap.clear();
kitMap.clear();
// Kits from kits.yml file
final CommentedConfigurationNode fileKits = rootConfig.getSection("kits");
if (fileKits != null) {
for (final Map.Entry<String, CommentedConfigurationNode> kitEntry : ConfigurateUtil.getMap(fileKits).entrySet()) {
parseKit(kitEntry.getKey(), kitEntry.getValue(), rootConfig);
}
}
// Kits from kits subdirectory
final File kitsFolder = new File(this.ess.getDataFolder(), "kits");
if (!kitsFolder.exists() || !kitsFolder.isDirectory()) {
return;
}
final File[] kitsFiles = kitsFolder.listFiles();
//noinspection ConstantConditions - will not be null, conditions checked above.
for (final File kitFile : kitsFiles) {
if (kitFile.getName().endsWith(".yml")) {
final EssentialsConfiguration kitConfig = new EssentialsConfiguration(kitFile);
kitConfig.load();
final CommentedConfigurationNode kits = kitConfig.getSection("kits");
if (kits != null) {
for (final Map.Entry<String, CommentedConfigurationNode> kitEntry : ConfigurateUtil.getMap(kits).entrySet()) {
parseKit(kitEntry.getKey(), kitEntry.getValue(), kitConfig);
}
}
}
return newSection;
}
return null;
}
public EssentialsConfiguration getConfig() {
return config;
/**
* Should be used for EssentialsUpgrade conversions <b>only</b>.
*/
public EssentialsConfiguration getRootConfig() {
return rootConfig;
}
public CommentedConfigurationNode getKits() {
return kits;
public Set<String> getKitKeys() {
return kitMap.keySet();
}
public Map<String, Object> getKit(String name) {
name = name.replace('.', '_').replace('/', '_');
if (getKits() != null) {
final CommentedConfigurationNode kits = getKits();
// Other parts of the codebase/3rd party plugins expect us to lowercase kit names here.
// This isn't strictly needed for the future of Essentials, but for compatibility it's here.
final CommentedConfigurationNode kitSection = kits.node(name.toLowerCase());
if (!kitSection.virtual() && kitSection.isMap()) {
return ConfigurateUtil.getRawMap(kitSection);
}
public Map<String, Object> getKit(final String name) {
if (name != null) {
return kitMap.get(name.replace('.', '_').replace('/', '_'));
}
return null;
}
// Tries to find an existing kit name that matches the given name, ignoring case. Returns null if no match.
public String matchKit(final String name) {
final CommentedConfigurationNode section = config.getSection("kits");
if (section != null) {
for (final String kitName : ConfigurateUtil.getKeys(section)) {
if (name != null) {
for (final String kitName : kitMap.keySet()) {
if (kitName.equalsIgnoreCase(name)) {
return kitName;
}
@@ -90,25 +112,32 @@ public class Kits implements IConf {
return null;
}
public void addKit(final String name, final List<String> lines, final long delay) {
public void addKit(String name, final List<String> lines, final long delay) {
name = name.replace('.', '_').replace('/', '_').toLowerCase(Locale.ENGLISH);
// Will overwrite but w/e
config.setProperty("kits." + name + ".delay", delay);
config.setProperty("kits." + name + ".items", lines);
kits = _getKits();
config.save();
rootConfig.setProperty("kits." + name + ".delay", delay);
rootConfig.setProperty("kits." + name + ".items", lines);
parseKits();
rootConfig.save();
}
public void removeKit(final String name) {
public void removeKit(String name) {
name = name.replace('.', '_').replace('/', '_').toLowerCase(Locale.ENGLISH);
if (!kitToConfigMap.containsKey(name) || !kitMap.containsKey(name)) {
return;
}
final EssentialsConfiguration config = kitToConfigMap.get(name);
config.removeProperty("kits." + name);
kits = _getKits();
config.save();
config.blockingSave();
parseKits();
}
public String listKits(final net.ess3.api.IEssentials ess, final User user) throws Exception {
try {
final CommentedConfigurationNode kits = config.getSection("kits");
final StringBuilder list = new StringBuilder();
for (final String kitItem : ConfigurateUtil.getKeys(kits)) {
for (final String kitItem : kitMap.keySet()) {
if (user == null) {
list.append(" ").append(capitalCase(kitItem));
} else if (user.isAuthorized("essentials.kits." + kitItem.toLowerCase(Locale.ENGLISH))) {
@@ -7,9 +7,9 @@ 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.earth2me.essentials.utils.VersionUtil;
import com.google.common.base.Joiner;
import net.ess3.api.IEssentials;
import net.ess3.nms.refl.ReflUtil;
import org.bukkit.Color;
import org.bukkit.DyeColor;
import org.bukkit.FireworkEffect;
@@ -33,7 +33,6 @@ import org.bukkit.potion.Potion;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -48,9 +47,6 @@ import static com.earth2me.essentials.I18n.tl;
public class MetaItemStack {
private static final Map<String, DyeColor> colorMap = new HashMap<>();
private static final Map<String, FireworkEffect.Type> fireworkShape = new HashMap<>();
private static int bukkitUnbreakableSupport = -1;
private static Method spigotMethod;
private static Method setUnbreakableMethod;
private static boolean useNewSkullMethod = true;
static {
@@ -212,9 +208,9 @@ public class MetaItemStack {
stack.setItemMeta(meta);
} else if (split[0].equalsIgnoreCase("unbreakable") && hasMetaPermission(sender, "unbreakable", false, true, ess)) {
final boolean value = split.length <= 1 || Boolean.parseBoolean(split[1]);
setUnbreakable(stack, value);
setUnbreakable(ess, stack, value);
} 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())) {
if (MaterialUtil.isPlayerHead(stack)) {
final String owner = split[1];
setSkullOwner(ess, stack, owner);
} else {
@@ -529,14 +525,14 @@ public class MetaItemStack {
}
pmeta.addCustomEffect(pEffect, true);
stack.setItemMeta(pmeta);
if (ReflUtil.getNmsVersionObject().isHigherThanOrEqualTo(ReflUtil.V1_9_R1)) {
if (VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_9_R01)) {
if (isSplashPotion && stack.getType() != Material.SPLASH_POTION) {
stack.setType(Material.SPLASH_POTION);
} else if (!isSplashPotion && stack.getType() != Material.POTION) {
stack.setType(Material.POTION);
}
} else {
final Potion potion = Potion.fromItemStack(stack);
final Potion potion = Potion.fromDamage(stack.getDurability());
potion.setSplash(isSplashPotion);
potion.apply(stack);
}
@@ -686,35 +682,9 @@ public class MetaItemStack {
}
}
private void setUnbreakable(final ItemStack is, final boolean unbreakable) {
private void setUnbreakable(final IEssentials ess, final ItemStack is, final boolean unbreakable) {
final ItemMeta meta = is.getItemMeta();
try {
if (bukkitUnbreakableSupport == -1) {
try {
ItemMeta.class.getDeclaredMethod("setUnbreakable", boolean.class);
bukkitUnbreakableSupport = 1;
} catch (final NoSuchMethodException | SecurityException ex) {
bukkitUnbreakableSupport = 0;
}
}
if (bukkitUnbreakableSupport == 1) {
meta.setUnbreakable(unbreakable);
} else {
if (spigotMethod == null) {
spigotMethod = meta.getClass().getDeclaredMethod("spigot");
spigotMethod.setAccessible(true);
}
final Object itemStackSpigot = spigotMethod.invoke(meta);
if (setUnbreakableMethod == null) {
setUnbreakableMethod = itemStackSpigot.getClass().getDeclaredMethod("setUnbreakable", Boolean.TYPE);
setUnbreakableMethod.setAccessible(true);
}
setUnbreakableMethod.invoke(itemStackSpigot, unbreakable);
}
is.setItemMeta(meta);
} catch (final Throwable t) {
t.printStackTrace();
}
ess.getItemUnbreakableProvider().setUnbreakable(meta, unbreakable);
is.setItemMeta(meta);
}
}
@@ -42,7 +42,7 @@ public final class PlayerList {
final String strippedNick = FormatUtil.stripFormat(user.getNickname());
if (ess.getSettings().realNamesOnList() && strippedNick != null && !strippedNick.equals(user.getName())) {
groupString.append(" (").append(user.getName()).append(")");
groupString.append(" ").append(tl("listRealName",user.getName()));
}
groupString.append(ChatColor.WHITE.toString());
}
@@ -22,12 +22,12 @@ import java.util.concurrent.ConcurrentLinkedQueue;
public class RandomTeleport implements IConf {
private static final Random RANDOM = new Random();
private static final int HIGHEST_BLOCK_Y_OFFSET = VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_15_R01) ? 1 : 0;
private final IEssentials essentials;
private final IEssentials ess;
private final EssentialsConfiguration config;
private final ConcurrentLinkedQueue<Location> cachedLocations = new ConcurrentLinkedQueue<>();
public RandomTeleport(final IEssentials essentials) {
this.essentials = essentials;
this.ess = essentials;
config = new EssentialsConfiguration(new File(essentials.getDataFolder(), "tpr.yml"), "/tpr.yml",
"Configuration for the random teleport command.\nSome settings may be defaulted, and can be changed via the /settpr command in-game.");
reloadConfig();
@@ -47,8 +47,8 @@ public class RandomTeleport implements IConf {
}
} catch (final InvalidWorldException ignored) {
}
final Location center = essentials.getServer().getWorlds().get(0).getWorldBorder().getCenter();
center.setY(center.getWorld().getHighestBlockYAt(center) + 1);
final Location center = ess.getServer().getWorlds().get(0).getWorldBorder().getCenter();
center.setY(center.getWorld().getHighestBlockYAt(center) + HIGHEST_BLOCK_Y_OFFSET);
setCenter(center);
return center;
}
@@ -124,7 +124,7 @@ public class RandomTeleport implements IConf {
// Prompts caching random valid locations, up to a maximum number of attempts
public void cacheRandomLocations(final Location center, final double minRange, final double maxRange) {
essentials.getServer().getScheduler().scheduleSyncDelayedTask(essentials, () -> {
ess.getServer().getScheduler().scheduleSyncDelayedTask(ess, () -> {
for (int i = 0; i < this.getFindAttempts(); ++i) {
calculateRandomLocation(center, minRange, maxRange).thenAccept(location -> {
if (isValidRandomLocation(location)) {
@@ -177,7 +177,7 @@ public class RandomTeleport implements IConf {
final Location location = new Location(
center.getWorld(),
center.getX() + offsetX,
center.getWorld().getMaxHeight(),
ess.getWorldInfoProvider().getMaxHeight(center.getWorld()),
center.getZ() + offsetZ,
360 * RANDOM.nextFloat() - 180,
0
@@ -195,8 +195,8 @@ public class RandomTeleport implements IConf {
// Returns an appropriate elevation for a given location in the nether, or -1 if none is found
private double getNetherYAt(final Location location) {
for (int y = 32; y < location.getWorld().getMaxHeight() / 2; ++y) {
if (!LocationUtil.isBlockUnsafe(location.getWorld(), location.getBlockX(), y, location.getBlockZ())) {
for (int y = 32; y < ess.getWorldInfoProvider().getMaxHeight(location.getWorld()); ++y) {
if (!LocationUtil.isBlockUnsafe(ess, location.getWorld(), location.getBlockX(), y, location.getBlockZ())) {
return y;
}
}
@@ -204,6 +204,10 @@ public class RandomTeleport implements IConf {
}
private boolean isValidRandomLocation(final Location location) {
return location.getBlockY() > 0 && !this.getExcludedBiomes().contains(location.getBlock().getBiome());
return location.getBlockY() > ess.getWorldInfoProvider().getMinHeight(location.getWorld()) && !this.getExcludedBiomes().contains(location.getBlock().getBiome());
}
public File getFile() {
return config.getFile();
}
}
@@ -226,6 +226,21 @@ public class Settings implements net.ess3.api.ISettings {
return chatQuestion;
}
@Override
public boolean isShoutDefault() {
return config.getBoolean("chat.shout-default", false);
}
@Override
public boolean isPersistShout() {
return config.getBoolean("chat.persist-shout", false);
}
@Override
public boolean isChatQuestionEnabled() {
return config.getBoolean("chat.question-enabled", true);
}
public boolean _isTeleportSafetyEnabled() {
return config.getBoolean("teleport-safety", true);
}
@@ -1212,6 +1227,11 @@ public class Settings implements net.ess3.api.ISettings {
return registerBackInListener;
}
@Override
public int getMaxTreeCommandRange() {
return config.getInt("tree-command-range-limit", 300);
}
private boolean _registerBackInListener() {
return config.getBoolean("register-back-in-listener", false);
}
@@ -1264,6 +1284,11 @@ public class Settings implements net.ess3.api.ISettings {
return config.getLong("tpa-accept-cancellation", 120);
}
@Override
public int getTpaMaxRequests() {
return config.getInt("tpa-max-requests", 5);
}
private long _getTeleportInvulnerability() {
return config.getLong("teleport-invulnerability", 0) * 1000;
}
@@ -103,7 +103,7 @@ public final class SpawnMob {
// This method spawns a mob at loc, owned by target
public static void spawnmob(final IEssentials ess, final Server server, final CommandSource sender, final User target, final Location loc, final List<String> parts, final List<String> data, int mobCount) throws Exception {
final Location sloc = LocationUtil.getSafeDestination(loc);
final Location sloc = LocationUtil.getSafeDestination(ess, loc);
for (final String part : parts) {
final Mob mob = Mob.fromName(part);
@@ -145,7 +145,7 @@ public class Teleport implements ITeleport {
teleportee.getBase().eject();
}
if (LocationUtil.isBlockUnsafeForUser(teleportee, loc.getWorld(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())) {
if (LocationUtil.isBlockUnsafeForUser(ess, teleportee, loc.getWorld(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())) {
if (ess.getSettings().isTeleportSafetyEnabled()) {
if (ess.getSettings().isForceDisableTeleportSafety()) {
PaperLib.teleportAsync(teleportee.getBase(), loc, cause);
@@ -3,6 +3,7 @@ package com.earth2me.essentials;
import com.earth2me.essentials.craftbukkit.InventoryWorkaround;
import com.earth2me.essentials.craftbukkit.SetExpFix;
import com.earth2me.essentials.utils.NumberUtil;
import com.earth2me.essentials.utils.VersionUtil;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.api.MaxMoneyException;
@@ -95,8 +96,10 @@ public class Trade {
} else {
if (charge.getItemStack() != null) {
sb.append(charge.getItemStack().getAmount()).append(",");
sb.append(charge.getItemStack().getType().toString()).append(",");
sb.append(charge.getItemStack().getDurability());
sb.append(charge.getItemStack().getType()).append(",");
if (VersionUtil.PRE_FLATTENING) {
sb.append(charge.getItemStack().getDurability());
}
}
if (charge.getMoney() != null) {
sb.append(charge.getMoney()).append(",");
@@ -119,8 +122,10 @@ public class Trade {
} else {
if (pay.getItemStack() != null) {
sb.append(pay.getItemStack().getAmount()).append(",");
sb.append(pay.getItemStack().getType().toString()).append(",");
sb.append(pay.getItemStack().getDurability());
sb.append(pay.getItemStack().getType()).append(",");
if (VersionUtil.PRE_FLATTENING) {
sb.append(pay.getItemStack().getDurability());
}
}
if (pay.getMoney() != null) {
sb.append(pay.getMoney()).append(",");
@@ -28,18 +28,25 @@ import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.checkerframework.checker.nullness.qual.Nullable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.UUID;
import java.util.WeakHashMap;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -48,33 +55,42 @@ import static com.earth2me.essentials.I18n.tl;
public class User extends UserData implements Comparable<User>, IMessageRecipient, net.ess3.api.IUser {
private static final Statistic PLAY_ONE_TICK = EnumUtil.getStatistic("PLAY_ONE_MINUTE", "PLAY_ONE_TICK");
private static final Logger logger = Logger.getLogger("Essentials");
// User modules
private final IMessageRecipient messageRecipient;
private transient final AsyncTeleport teleport;
private transient final Teleport legacyTeleport;
// User command confirmation strings
private final Map<User, BigDecimal> confirmingPayments = new WeakHashMap<>();
private transient UUID teleportRequester;
private transient boolean teleportRequestHere;
private transient Location teleportLocation;
// User teleport variables
private final transient LinkedHashMap<String, TpaRequest> teleportRequestQueue = new LinkedHashMap<>();
// User properties
private transient boolean vanished;
private transient long teleportRequestTime;
private transient long lastOnlineActivity;
private transient long lastThrottledAction;
private transient long lastActivity = System.currentTimeMillis();
private boolean hidden = false;
private boolean rightClickJump = false;
private transient Location afkPosition = null;
private boolean invSee = false;
private boolean recipeSee = false;
private boolean enderSee = false;
private transient long teleportInvulnerabilityTimestamp = 0;
private boolean ignoreMsg = false;
// User afk variables
private String afkMessage;
private long afkSince;
private transient Location afkPosition = null;
// Misc
private transient long lastOnlineActivity;
private transient long lastThrottledAction;
private transient long lastActivity = System.currentTimeMillis();
private transient long teleportInvulnerabilityTimestamp = 0;
private String confirmingClearCommand;
private long lastNotifiedAboutMailsMs;
private String lastHomeConfirmation;
private long lastHomeConfirmationTimestamp;
private boolean toggleShout = false;
private Boolean toggleShout;
private transient final List<String> signCopy = Lists.newArrayList("", "", "", "");
public User(final Player base, final IEssentials ess) {
@@ -90,9 +106,12 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
this.messageRecipient = new SimpleMessageRecipient(ess, this);
}
User update(final Player base) {
void update(final Player base) {
setBase(base);
return this;
}
public IEssentials getEssentials() {
return ess;
}
@Override
@@ -304,7 +323,7 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
if (isAuthorized("essentials.itemspawn.item-all") || isAuthorized("essentials.itemspawn.item-" + name))
return true;
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) {
if (VersionUtil.PRE_FLATTENING) {
final int id = material.getId();
if (isAuthorized("essentials.itemspawn.item-" + id)) return true;
}
@@ -327,44 +346,94 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
@Override
public void requestTeleport(final User player, final boolean here) {
teleportRequestTime = System.currentTimeMillis();
teleportRequester = player == null ? null : player.getBase().getUniqueId();
teleportRequestHere = here;
if (player == null) {
teleportLocation = null;
} else {
teleportLocation = here ? player.getLocation() : this.getLocation();
final TpaRequest request = teleportRequestQueue.getOrDefault(player.getName(), new TpaRequest(player.getName(), player.getUUID()));
request.setTime(System.currentTimeMillis());
request.setHere(here);
request.setLocation(here ? player.getLocation() : this.getLocation());
// Handle max queue size
teleportRequestQueue.remove(request.getName());
if (teleportRequestQueue.size() >= ess.getSettings().getTpaMaxRequests()) {
final List<String> keys = new ArrayList<>(teleportRequestQueue.keySet());
teleportRequestQueue.remove(keys.get(keys.size() - 1));
}
// Add request to queue
teleportRequestQueue.put(request.getName(), request);
}
@Override
@Deprecated
public boolean hasOutstandingTeleportRequest() {
if (getTeleportRequest() != null) { // Player has outstanding teleport request.
final long timeout = ess.getSettings().getTpaAcceptCancellation();
if (timeout != 0) {
if ((System.currentTimeMillis() - getTeleportRequestTime()) / 1000 <= timeout) { // Player has outstanding request
return true;
} else { // outstanding request expired.
requestTeleport(null, false);
return false;
return getNextTpaRequest(false, false, false) != null;
}
public Collection<String> getPendingTpaKeys() {
return teleportRequestQueue.keySet();
}
@Override
public boolean hasPendingTpaRequests(boolean inform, boolean excludeHere) {
return getNextTpaRequest(inform, false, excludeHere) != null;
}
public boolean hasOutstandingTpaRequest(String playerUsername, boolean here) {
final TpaRequest request = getOutstandingTpaRequest(playerUsername, false);
return request != null && request.isHere() == here;
}
public @Nullable TpaRequest getOutstandingTpaRequest(String playerUsername, boolean inform) {
if (!teleportRequestQueue.containsKey(playerUsername)) {
return null;
}
final long timeout = ess.getSettings().getTpaAcceptCancellation();
final TpaRequest request = teleportRequestQueue.get(playerUsername);
if (timeout < 1 || System.currentTimeMillis() - request.getTime() <= timeout * 1000) {
return request;
}
teleportRequestQueue.remove(playerUsername);
if (inform) {
sendMessage(tl("requestTimedOutFrom", ess.getUser(request.getRequesterUuid()).getDisplayName()));
}
return null;
}
public TpaRequest removeTpaRequest(String playerUsername) {
return teleportRequestQueue.remove(playerUsername);
}
@Override
public TpaRequest getNextTpaRequest(boolean inform, boolean ignoreExpirations, boolean excludeHere) {
if (teleportRequestQueue.isEmpty()) {
return null;
}
final long timeout = ess.getSettings().getTpaAcceptCancellation();
final List<String> keys = new ArrayList<>(teleportRequestQueue.keySet());
Collections.reverse(keys);
TpaRequest nextRequest = null;
for (final String key : keys) {
final TpaRequest request = teleportRequestQueue.get(key);
if (timeout < 1 || (System.currentTimeMillis() - request.getTime()) <= TimeUnit.SECONDS.toMillis(timeout)) {
if (excludeHere && request.isHere()) {
continue;
}
} else { // outstanding request does not expire
return true;
if (ignoreExpirations) {
return request;
} else if (nextRequest == null) {
nextRequest = request;
}
} else {
if (inform) {
sendMessage(tl("requestTimedOutFrom", ess.getUser(request.getRequesterUuid()).getDisplayName()));
}
teleportRequestQueue.remove(key);
}
}
return false;
}
public UUID getTeleportRequest() {
return teleportRequester;
}
public boolean isTpRequestHere() {
return teleportRequestHere;
}
public Location getTpRequestLocation() {
return teleportLocation;
return nextRequest;
}
public String getNick() {
@@ -823,8 +892,11 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
return ess.getPermissionsHandler().canBuild(base, getGroup());
}
@Override
@Deprecated
public long getTeleportRequestTime() {
return teleportRequestTime;
final TpaRequest request = getNextTpaRequest(false, false, false);
return request == null ? 0L : request.getTime();
}
public boolean isInvSee() {
@@ -893,6 +965,7 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
}
setHidden(true);
ess.getVanishedPlayersNew().add(getName());
this.getBase().setMetadata("vanished", new FixedMetadataValue(ess, true));
if (isAuthorized("essentials.vanish.effect")) {
this.getBase().addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 1, false));
}
@@ -905,6 +978,7 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
}
setHidden(false);
ess.getVanishedPlayersNew().remove(getName());
this.getBase().setMetadata("vanished", new FixedMetadataValue(ess, false));
if (isAuthorized("essentials.vanish.effect")) {
this.getBase().removePotionEffect(PotionEffectType.INVISIBILITY);
}
@@ -990,7 +1064,7 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
@Override
public UUID getUUID() {
return getBase().getUniqueId();
return this.getBase().getUniqueId();
}
@Override
@@ -1128,10 +1202,16 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
@Override
public void setToggleShout(boolean toggleShout) {
this.toggleShout = toggleShout;
if (ess.getSettings().isPersistShout()) {
setShouting(toggleShout);
}
}
@Override
public boolean isToggleShout() {
return toggleShout;
if (ess.getSettings().isPersistShout()) {
return toggleShout = isShouting();
}
return toggleShout == null ? toggleShout = ess.getSettings().isShoutDefault() : toggleShout;
}
}
@@ -722,6 +722,18 @@ public abstract class UserData extends PlayerExtension implements IConf {
config.save();
}
public boolean isShouting() {
if (holder.shouting() == null) {
holder.shouting(ess.getSettings().isShoutDefault());
}
return holder.shouting();
}
public void setShouting(boolean shouting) {
holder.shouting(shouting);
config.save();
}
public UUID getConfigUUID() {
return config.getUuid();
}
@@ -38,6 +38,11 @@ public class Warps implements IConf, net.ess3.api.IWarps {
return warpPoints.isEmpty();
}
@Override
public boolean isWarp(String name) {
return warpPoints.containsKey(new StringIgnoreCase(name));
}
@Override
public Collection<String> getList() {
final List<String> keys = new ArrayList<>();
@@ -30,13 +30,15 @@ public class Worth implements IConf {
* @return The price from the config.
*/
public BigDecimal getPrice(final IEssentials ess, final ItemStack itemStack) {
BigDecimal result;
BigDecimal result = BigDecimal.ONE.negate();
final 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());
if (VersionUtil.PRE_FLATTENING) {
// 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) {
@@ -140,7 +142,7 @@ public class Worth implements IConf {
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) {
if (VersionUtil.PRE_FLATTENING && itemStack.getType().getData() == null) {
// Bukkit-bug: getDurability still contains the correct value, while getData().getData() is 0.
path = path + "." + itemStack.getDurability();
}
@@ -149,6 +151,10 @@ public class Worth implements IConf {
config.save();
}
public File getFile() {
return config.getFile();
}
@Override
public void reloadConfig() {
config.load();
@@ -26,6 +26,14 @@ public interface IWarps extends IConf {
*/
Location getWarp(String warp) throws WarpNotFoundException, net.ess3.api.InvalidWorldException;
/**
* Checks if the provided name is a warp.
*
* @param name The warp name.
* @return true if a warp by that name exists.
*/
boolean isWarp(String name);
/**
* Gets a list of warps
*
@@ -32,7 +32,7 @@ public class Commandbigtree extends EssentialsCommand {
throw new NotEnoughArgumentsException();
}
final Location loc = LocationUtil.getTarget(user.getBase()).add(0, 1, 0);
final Location loc = LocationUtil.getTarget(user.getBase(), ess.getSettings().getMaxTreeCommandRange()).add(0, 1, 0);
if (loc.getBlock().getType().isSolid()) {
throw new Exception(tl("bigTreeFailure"));
}
@@ -130,7 +130,7 @@ public class Commandclearinventory extends EssentialsCommand {
} else {
for (final Item item : items) {
final ItemStack stack = new ItemStack(item.getMaterial());
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) {
if (VersionUtil.PRE_FLATTENING) {
stack.setDurability(item.getData());
}
// amount -1 means all items will be cleared
@@ -4,6 +4,7 @@ import com.earth2me.essentials.ChargeException;
import com.earth2me.essentials.Trade;
import com.earth2me.essentials.Trade.OverflowType;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.VersionUtil;
import net.ess3.api.MaxMoneyException;
import org.bukkit.Material;
import org.bukkit.Server;
@@ -161,8 +162,7 @@ public class Commandcondense extends EssentialsCommand {
iter.remove();
continue;
}
if (inputSlot.getDurability() == Short.MAX_VALUE) {
if (VersionUtil.PRE_FLATTENING && inputSlot.getDurability() == Short.MAX_VALUE) {
inputSlot.setDurability((short) 0);
}
if (!inputSlot.isSimilar(stack)) {
@@ -2,7 +2,6 @@ package com.earth2me.essentials.commands;
import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.Kit;
import com.earth2me.essentials.config.ConfigurateUtil;
import com.google.common.collect.Lists;
import org.bukkit.Server;
@@ -38,7 +37,7 @@ public class Commanddelkit extends EssentialsCommand {
@Override
protected List<String> getTabCompleteOptions(final Server server, final CommandSource sender, final String commandLabel, final String[] args) {
if (args.length == 1) {
return Lists.newArrayList(ConfigurateUtil.getKeys(ess.getKits().getKits()));
return Lists.newArrayList(ess.getKits().getKitKeys());
}
return Collections.emptyList();
}
@@ -23,8 +23,14 @@ public class Commanddelwarp extends EssentialsCommand {
throw new NotEnoughArgumentsException();
}
//Check if warp exists before calling the event
final Location location = ess.getWarps().getWarp(args[0]);
if (location != null) {
if (ess.getWarps().isWarp(args[0])) {
Location location;
try {
location = ess.getWarps().getWarp(args[0]);
} catch (Exception ignored) {
// World is unloaded/deleted
location = null;
}
final WarpModifyEvent event = new WarpModifyEvent(sender.getUser(this.ess), args[0], location, null, WarpModifyEvent.WarpModifyCause.DELETE);
Bukkit.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
@@ -258,6 +258,7 @@ public class Commandessentials extends EssentialsCommand {
files.add(new PasteUtil.PasteFile("dump.json", dump.toString()));
final Plugin essDiscord = Bukkit.getPluginManager().getPlugin("EssentialsDiscord");
final Plugin essSpawn = Bukkit.getPluginManager().getPlugin("EssentialsSpawn");
// Further operations will be heavy IO
ess.runTaskAsynchronously(() -> {
@@ -265,12 +266,18 @@ public class Commandessentials extends EssentialsCommand {
boolean discord = false;
boolean kits = false;
boolean log = false;
boolean worth = false;
boolean tpr = false;
boolean spawns = false;
for (final String arg : args) {
if (arg.equals("*")) {
if (arg.equals("*") || arg.equalsIgnoreCase("all")) {
config = true;
discord = true;
kits = true;
log = true;
worth = true;
tpr = true;
spawns = true;
break;
} else if (arg.equalsIgnoreCase("config")) {
config = true;
@@ -280,6 +287,12 @@ public class Commandessentials extends EssentialsCommand {
kits = true;
} else if (arg.equalsIgnoreCase("log")) {
log = true;
} else if (arg.equalsIgnoreCase("worth")) {
worth = true;
} else if (arg.equalsIgnoreCase("tpr")) {
tpr = true;
} else if (arg.equalsIgnoreCase("spawns")) {
spawns = true;
}
}
@@ -291,11 +304,11 @@ public class Commandessentials extends EssentialsCommand {
}
}
if (discord && essDiscord != null && essDiscord.isEnabled()) {
if (discord && essDiscord != null) {
try {
files.add(new PasteUtil.PasteFile("discord-config.yml",
new String(Files.readAllBytes(essDiscord.getDataFolder().toPath().resolve("config.yml")), StandardCharsets.UTF_8)
.replaceAll("[MN][A-Za-z\\d]{23}\\.[\\w-]{6}\\.[\\w-]{27}", "<censored token>")));
.replaceAll("[A-Za-z\\d]{24}\\.[\\w-]{6}\\.[\\w-]{27}", "<censored token>")));
} catch (IOException e) {
sender.sendMessage(tl("dumpErrorUpload", "discord-config.yml", e.getMessage()));
}
@@ -319,6 +332,30 @@ public class Commandessentials extends EssentialsCommand {
}
}
if (worth) {
try {
files.add(new PasteUtil.PasteFile("worth.yml", new String(Files.readAllBytes(ess.getWorth().getFile().toPath()), StandardCharsets.UTF_8)));
} catch (IOException e) {
sender.sendMessage(tl("dumpErrorUpload", "worth.yml", e.getMessage()));
}
}
if (tpr) {
try {
files.add(new PasteUtil.PasteFile("tpr.yml", new String(Files.readAllBytes(ess.getRandomTeleport().getFile().toPath()), StandardCharsets.UTF_8)));
} catch (IOException e) {
sender.sendMessage(tl("dumpErrorUpload", "tpr.yml", e.getMessage()));
}
}
if (spawns && essSpawn != null) {
try {
files.add(new PasteUtil.PasteFile("spawn.yml", new String(Files.readAllBytes(ess.getDataFolder().toPath().resolve("spawn.yml")), StandardCharsets.UTF_8)));
} catch (IOException e) {
sender.sendMessage(tl("dumpErrorUpload", "spawn.yml", e.getMessage()));
}
}
final CompletableFuture<PasteUtil.PasteResult> future = PasteUtil.createPaste(files);
future.thenAccept(result -> {
if (result != null) {
@@ -719,9 +756,9 @@ public class Commandessentials extends EssentialsCommand {
}
break;
case "dump":
final List<String> list = Lists.newArrayList("config", "kits", "log", "discord", "*");
final List<String> list = Lists.newArrayList("config", "kits", "log", "discord", "worth", "tpr", "spawns", "all");
for (String arg : args) {
if (arg.equals("*")) {
if (arg.equals("*") || arg.equalsIgnoreCase("all")) {
list.clear();
return list;
}
@@ -5,6 +5,7 @@ import com.earth2me.essentials.MetaItemStack;
import com.earth2me.essentials.User;
import com.earth2me.essentials.craftbukkit.InventoryWorkaround;
import com.earth2me.essentials.utils.NumberUtil;
import com.earth2me.essentials.utils.VersionUtil;
import com.google.common.collect.Lists;
import org.bukkit.Material;
import org.bukkit.Server;
@@ -37,7 +38,7 @@ public class Commandgive extends EssentialsLoopCommand {
}
try {
if (args.length > 3 && NumberUtil.isInt(args[2]) && NumberUtil.isInt(args[3])) {
if (args.length > 3 && VersionUtil.PRE_FLATTENING && NumberUtil.isInt(args[2]) && NumberUtil.isInt(args[3])) {
stack.setAmount(Integer.parseInt(args[2]));
stack.setDurability(Short.parseShort(args[3]));
} else if (args.length > 2 && Integer.parseInt(args[2]) > 0) {
@@ -1,6 +1,7 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.utils.MaterialUtil;
import com.earth2me.essentials.utils.StringUtil;
import com.earth2me.essentials.utils.VersionUtil;
import org.bukkit.Material;
@@ -36,7 +37,7 @@ public class Commanditemdb extends EssentialsCommand {
String itemId = "none";
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) {
if (VersionUtil.PRE_FLATTENING) {
itemId = itemStack.getType().getId() + ":" + itemStack.getDurability();
}
@@ -49,7 +50,7 @@ public class Commanditemdb extends EssentialsCommand {
if (itemHeld && itemStack.getType() != Material.AIR) {
final int maxuses = itemStack.getType().getMaxDurability();
final int durability = (maxuses + 1) - itemStack.getDurability();
final int durability = (maxuses + 1) - MaterialUtil.getDamage(itemStack);
if (maxuses != 0) {
sender.sendMessage(tl("durability", Integer.toString(durability)));
}
@@ -3,7 +3,6 @@ package com.earth2me.essentials.commands;
import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.Kit;
import com.earth2me.essentials.User;
import com.earth2me.essentials.config.ConfigurateUtil;
import com.earth2me.essentials.utils.StringUtil;
import org.bukkit.Server;
@@ -101,7 +100,7 @@ public class Commandkit extends EssentialsCommand {
if (args.length == 1) {
final List<String> options = new ArrayList<>();
// TODO: Move all of this to its own method
for (final String kitName : ConfigurateUtil.getKeys(ess.getKits().getKits())) {
for (final String kitName : ess.getKits().getKitKeys()) {
if (!user.isAuthorized("essentials.kits." + kitName)) { // Only check perm, not time or money
continue;
}
@@ -118,7 +117,7 @@ public class Commandkit extends EssentialsCommand {
@Override
protected List<String> getTabCompleteOptions(final Server server, final CommandSource sender, final String commandLabel, final String[] args) {
if (args.length == 1) {
return new ArrayList<>(ConfigurateUtil.getKeys(ess.getKits().getKits())); // TODO: Move this to its own method
return new ArrayList<>(ess.getKits().getKitKeys()); // TODO: Move this to its own method
} else if (args.length == 2) {
return getPlayers(server, sender);
} else {
@@ -2,7 +2,6 @@ package com.earth2me.essentials.commands;
import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.User;
import com.earth2me.essentials.config.ConfigurateUtil;
import org.bukkit.Server;
import java.util.ArrayList;
@@ -59,7 +58,7 @@ public class Commandkitreset extends EssentialsCommand {
@Override
protected List<String> getTabCompleteOptions(Server server, CommandSource sender, String commandLabel, String[] args) {
if (args.length == 1) {
return new ArrayList<>(ConfigurateUtil.getKeys(ess.getKits().getKits()));
return new ArrayList<>(ess.getKits().getKitKeys());
} else if (args.length == 2 && sender.isAuthorized("essentials.kitreset.others", ess)) {
return getPlayers(server, sender);
} else {
@@ -152,7 +152,19 @@ public class Commandmail extends EssentialsCommand {
if (!user.isAuthorized("essentials.mail.sendall")) {
throw new Exception(tl("noPerm", "essentials.mail.sendall"));
}
ess.runTaskAsynchronously(new SendAll(user, FormatUtil.formatMessage(user, "essentials.mail", StringUtil.sanitizeString(FormatUtil.stripFormat(getFinalArg(args, 1))))));
ess.runTaskAsynchronously(new SendAll(user,
FormatUtil.formatMessage(user, "essentials.mail",
StringUtil.sanitizeString(FormatUtil.stripFormat(getFinalArg(args, 1)))), 0));
user.sendMessage(tl("mailSent"));
return;
}
if (args.length >= 3 && "sendtempall".equalsIgnoreCase(args[0])) {
if (!user.isAuthorized("essentials.mail.sendtempall")) {
throw new Exception(tl("noPerm", "essentials.mail.sendtempall"));
}
ess.runTaskAsynchronously(new SendAll(user,
FormatUtil.formatMessage(user, "essentials.mail",
StringUtil.sanitizeString(FormatUtil.stripFormat(getFinalArg(args, 2)))), DateUtil.parseDateDiff(args[1], true)));
user.sendMessage(tl("mailSent"));
return;
}
@@ -213,7 +225,12 @@ public class Commandmail extends EssentialsCommand {
sender.sendMessage(tl("mailSent"));
return;
} else if (args.length >= 2 && "sendall".equalsIgnoreCase(args[0])) {
ess.runTaskAsynchronously(new SendAll(Console.getInstance(), FormatUtil.replaceFormat(getFinalArg(args, 1))));
ess.runTaskAsynchronously(new SendAll(Console.getInstance(), FormatUtil.replaceFormat(getFinalArg(args, 1)), 0));
sender.sendMessage(tl("mailSent"));
return;
} else if (args.length >= 3 && "sendtempall".equalsIgnoreCase(args[0])) {
final long dateDiff = DateUtil.parseDateDiff(args[1], true);
ess.runTaskAsynchronously(new SendAll(Console.getInstance(), FormatUtil.replaceFormat(getFinalArg(args, 2)), dateDiff));
sender.sendMessage(tl("mailSent"));
return;
} else if (args.length >= 2) {
@@ -232,12 +249,14 @@ public class Commandmail extends EssentialsCommand {
}
private class SendAll implements Runnable {
IMessageRecipient messageRecipient;
String message;
private final IMessageRecipient messageRecipient;
private final String message;
private final long dateDiff;
SendAll(IMessageRecipient messageRecipient, String message) {
SendAll(IMessageRecipient messageRecipient, String message, long dateDiff) {
this.messageRecipient = messageRecipient;
this.message = message;
this.dateDiff = dateDiff;
}
@Override
@@ -245,7 +264,7 @@ public class Commandmail extends EssentialsCommand {
for (UUID userid : ess.getUserMap().getAllUniqueUsers()) {
final User user = ess.getUserMap().getUser(userid);
if (user != null) {
user.sendMail(messageRecipient, message);
user.sendMail(messageRecipient, message, dateDiff);
}
}
}
@@ -264,38 +283,47 @@ public class Commandmail extends EssentialsCommand {
if (user.isAuthorized("essentials.mail.sendall")) {
options.add("sendall");
}
if (user.isAuthorized("essentials.mail.sendtempall")) {
options.add("sendtempall");
}
return options;
} else if (args.length == 2 && ((args[0].equalsIgnoreCase("send") && user.isAuthorized("essentials.mail.send")) || (args[0].equalsIgnoreCase("sendtemp") && user.isAuthorized("essentials.mail.sendtemp")))) {
return getPlayers(server, user);
} else if (args.length == 2 && args[0].equalsIgnoreCase("read")) {
final ArrayList<MailMessage> mail = user.getMailMessages();
final int pages = mail != null ? (mail.size() / 9 + (mail.size() % 9 > 0 ? 1 : 0)) : 0;
if (pages == 0) {
return Lists.newArrayList("0");
} else {
final List<String> options = Lists.newArrayList("1");
if (pages > 1) {
options.add(String.valueOf(pages));
} else if (args.length == 2) {
if ((args[0].equalsIgnoreCase("send") && user.isAuthorized("essentials.mail.send")) || (args[0].equalsIgnoreCase("sendtemp") && user.isAuthorized("essentials.mail.sendtemp"))) {
return getPlayers(server, user);
} else if (args[0].equalsIgnoreCase("sendtempall") && user.isAuthorized("essentials.mail.sendtempall")) {
return COMMON_DATE_DIFFS;
} else if (args[0].equalsIgnoreCase("read")) {
final ArrayList<MailMessage> mail = user.getMailMessages();
final int pages = mail != null ? (mail.size() / 9 + (mail.size() % 9 > 0 ? 1 : 0)) : 0;
if (pages == 0) {
return Lists.newArrayList("0");
} else {
final List<String> options = Lists.newArrayList("1");
if (pages > 1) {
options.add(String.valueOf(pages));
}
return options;
}
return options;
}
} else if (args.length == 3 && args[0].equalsIgnoreCase("sendtemp") && user.isAuthorized("essentials.mail.sendtemp")) {
return COMMON_DATE_DIFFS;
} else {
return Collections.emptyList();
}
return Collections.emptyList();
}
@Override
protected List<String> getTabCompleteOptions(final Server server, final CommandSource sender, final String commandLabel, final String[] args) {
if (args.length == 1) {
return Lists.newArrayList("send", "sendall");
} else if (args.length == 2 && (args[0].equalsIgnoreCase("send") || args[0].equalsIgnoreCase("sendtemp"))) {
return getPlayers(server, sender);
return Lists.newArrayList("send", "sendall", "sendtemp", "sendtempall");
} else if (args.length == 2) {
if (args[0].equalsIgnoreCase("send") || args[0].equalsIgnoreCase("sendtemp")) {
return getPlayers(server, sender);
} else if (args[0].equalsIgnoreCase("sendtempall")) {
return COMMON_DATE_DIFFS;
}
} else if (args.length == 3 && args[0].equalsIgnoreCase("sendtemp")) {
return COMMON_DATE_DIFFS;
} else {
return Collections.emptyList();
}
return Collections.emptyList();
}
}
@@ -4,6 +4,7 @@ import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.DateUtil;
import com.earth2me.essentials.utils.FormatUtil;
import net.essentialsx.api.v2.events.UserActionEvent;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Server;
@@ -44,6 +45,7 @@ public class Commandme extends EssentialsCommand {
final String toSend = tl("action", user.getDisplayName(), message);
if (radius < 1) {
ess.broadcastMessage(user, toSend);
ess.getServer().getPluginManager().callEvent(new UserActionEvent(user, message, Collections.unmodifiableCollection(ess.getServer().getOnlinePlayers())));
return;
}
radius *= radius;
@@ -86,6 +88,7 @@ public class Commandme extends EssentialsCommand {
for (final Player onlinePlayer : outList) {
onlinePlayer.sendMessage(toSend);
}
ess.getServer().getPluginManager().callEvent(new UserActionEvent(user, message, Collections.unmodifiableCollection(outList)));
}
@Override
@@ -3,7 +3,6 @@ package com.earth2me.essentials.commands;
import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.User;
import com.google.common.collect.Lists;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.World;
@@ -109,7 +108,7 @@ public class Commandnear extends EssentialsCommand {
if (nearbyPlayer == null) {
continue;
}
output.append(nearbyPlayer.getDisplayName()).append(ChatColor.WHITE + "(" + ChatColor.RED).append((long) nearbyPlayer.getLocation().distance(loc)).append("m" + ChatColor.WHITE + ")");
output.append(tl("nearbyPlayersList", nearbyPlayer.getDisplayName(), (long)nearbyPlayer.getLocation().distance(loc)));
}
return output.length() > 1 ? output.toString() : tl("none");
@@ -24,9 +24,6 @@ public class Commandnick extends EssentialsLoopCommand {
if (args.length < 1) {
throw new NotEnoughArgumentsException();
}
if (!ess.getSettings().changeDisplayName()) {
throw new Exception(tl("nickDisplayName"));
}
if (args.length > 1 && user.isAuthorized("essentials.nick.others")) {
loopOfflinePlayers(server, user.getSource(), false, true, args[0], formatNickname(user, args[1]).split(" "));
@@ -41,9 +38,6 @@ public class Commandnick extends EssentialsLoopCommand {
if (args.length < 2) {
throw new NotEnoughArgumentsException();
}
if (!ess.getSettings().changeDisplayName()) {
throw new Exception(tl("nickDisplayName"));
}
loopOfflinePlayers(server, sender, false, true, args[0], formatNickname(null, args[1]).split(" "));
sender.sendMessage(tl("nickChanged"));
}
@@ -0,0 +1,69 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.utils.DateUtil;
import com.earth2me.essentials.utils.EnumUtil;
import com.earth2me.essentials.utils.VersionUtil;
import net.ess3.api.IUser;
import org.bukkit.Bukkit;
import org.bukkit.Server;
import org.bukkit.Statistic;
import java.util.Collections;
import java.util.List;
import static com.earth2me.essentials.I18n.tl;
public class Commandplaytime extends EssentialsCommand {
// For some reason, in 1.13 PLAY_ONE_MINUTE = ticks played = what used to be PLAY_ONE_TICK
// https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/commits/b848d8ce633871b52115247b089029749c02f579
private static final Statistic PLAY_ONE_TICK = EnumUtil.getStatistic("PLAY_ONE_MINUTE", "PLAY_ONE_TICK");
public Commandplaytime() {
super("playtime");
}
@Override
protected void run(Server server, CommandSource sender, String commandLabel, String[] args) throws Exception {
String displayName;
long playtime;
final String key;
if (args.length > 0 && sender.isAuthorized("essentials.playtime.others", ess)) {
try {
final IUser user = getPlayer(server, sender, args, 0);
displayName = user.getDisplayName();
playtime = user.getBase().getStatistic(PLAY_ONE_TICK);
} catch (PlayerNotFoundException e) {
// The ability to get the statistics of offline players is only available in 1.15.2+
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_15_2_R01)) {
throw e;
}
final IUser user = getPlayer(server, sender, args, 0, true);
displayName = user.getName();
playtime = Bukkit.getOfflinePlayer(user.getBase().getUniqueId()).getStatistic(PLAY_ONE_TICK);
}
key = "playtimeOther";
} else if (sender.isPlayer()) {
//noinspection ConstantConditions
displayName = sender.getPlayer().getDisplayName();
playtime = sender.getPlayer().getStatistic(PLAY_ONE_TICK);
key = "playtime";
} else {
throw new NotEnoughArgumentsException();
}
final long playtimeMs = System.currentTimeMillis() - (playtime * 50L);
sender.sendMessage(tl(key, DateUtil.formatDateDiff(playtimeMs), displayName));
}
@Override
protected List<String> getTabCompleteOptions(final Server server, final CommandSource sender, final String commandLabel, final String[] args) {
if (args.length == 1 && sender.isAuthorized("essentials.playtime.others", ess)) {
return getPlayers(server, sender);
} else {
return Collections.emptyList();
}
}
}
@@ -4,8 +4,8 @@ import com.earth2me.essentials.MetaItemStack;
import com.earth2me.essentials.Potions;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.StringUtil;
import com.earth2me.essentials.utils.VersionUtil;
import com.google.common.collect.Lists;
import net.ess3.nms.refl.ReflUtil;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.inventory.ItemStack;
@@ -42,7 +42,7 @@ public class Commandpotion extends EssentialsCommand {
}
boolean holdingPotion = stack.getType() == Material.POTION;
if (!holdingPotion && ReflUtil.getNmsVersionObject().isHigherThanOrEqualTo(ReflUtil.V1_9_R1)) {
if (!holdingPotion && VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_9_R01)) {
holdingPotion = stack.getType() == Material.SPLASH_POTION || stack.getType() == Material.LINGERING_POTION;
}
if (holdingPotion) {
@@ -117,7 +117,7 @@ public class Commandrecipe extends EssentialsCommand {
if (item == null) {
continue;
}
if (item.getDurability() == Short.MAX_VALUE) {
if (VersionUtil.PRE_FLATTENING && item.getDurability() == Short.MAX_VALUE) {
item.setDurability((short) 0);
}
view.getTopInventory().setItem(j * 3 + k + 1, item);
@@ -159,7 +159,7 @@ public class Commandrecipe extends EssentialsCommand {
final InventoryView view = user.getBase().openWorkbench(null, true);
for (int i = 0; i < ingredients.size(); i++) {
final ItemStack item = ingredients.get(i);
if (item.getDurability() == Short.MAX_VALUE) {
if (VersionUtil.PRE_FLATTENING && item.getDurability() == Short.MAX_VALUE) {
item.setDurability((short) 0);
}
view.setItem(i + 1, item);
@@ -3,6 +3,7 @@ package com.earth2me.essentials.commands;
import com.earth2me.essentials.ChargeException;
import com.earth2me.essentials.Trade;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.MaterialUtil;
import com.earth2me.essentials.utils.StringUtil;
import com.earth2me.essentials.utils.VersionUtil;
import com.google.common.collect.Lists;
@@ -39,7 +40,7 @@ public class Commandrepair extends EssentialsCommand {
public void repairHand(final User user) throws Exception {
final ItemStack item = user.getItemInHand();
if (item == null || item.getType().isBlock() || item.getDurability() == 0) {
if (item == null || item.getType().isBlock() || MaterialUtil.getDamage(item) == 0) {
throw new Exception(tl("repairInvalidType"));
}
@@ -81,16 +82,16 @@ public class Commandrepair extends EssentialsCommand {
throw new Exception(tl("repairInvalidType"));
}
if (item.getDurability() == 0) {
if (MaterialUtil.getDamage(item) == 0) {
throw new Exception(tl("repairAlreadyFixed"));
}
item.setDurability((short) 0);
MaterialUtil.setDamage(item, 0);
}
private void repairItems(final ItemStack[] items, final IUser user, final List<String> repaired) throws Exception {
private void repairItems(final ItemStack[] items, final IUser user, final List<String> repaired) {
for (final ItemStack item : items) {
if (item == null || item.getType().isBlock() || item.getDurability() == 0) {
if (item == null || item.getType().isBlock() || MaterialUtil.getDamage(item) == 0) {
continue;
}
@@ -123,7 +124,7 @@ public class Commandrepair extends EssentialsCommand {
private Trade getCharge(final Material material) {
final String itemName = material.toString().toLowerCase(Locale.ENGLISH);
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) {
if (VersionUtil.PRE_FLATTENING) {
final int itemId = material.getId();
return new Trade("repair-" + itemName.replace('_', '-'), new Trade("repair-" + itemId, new Trade("repair-item", ess), ess), ess);
} else {
@@ -19,7 +19,7 @@ public class Commandrest extends EssentialsLoopCommand {
@Override
public void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception {
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) {
if (VersionUtil.PRE_FLATTENING) {
sender.sendMessage(tl("unsupportedFeature"));
return;
}
@@ -102,13 +102,16 @@ public class Commandseen extends EssentialsCommand {
user.setDisplayNick();
sender.sendMessage(tl("seenOnline", user.getDisplayName(), DateUtil.formatDateDiff(user.getLastLogin())));
sender.sendMessage(tl("whoisUuid", user.getBase().getUniqueId().toString()));
final List<String> history = ess.getUserMap().getUserHistory(user.getBase().getUniqueId());
if (history != null && history.size() > 1) {
sender.sendMessage(tl("seenAccounts", StringUtil.joinListSkip(", ", user.getName(), history)));
}
if (sender.isAuthorized("essentials.seen.uuid", ess)) {
sender.sendMessage(tl("whoisUuid", user.getBase().getUniqueId().toString()));
}
if (user.isAfk()) {
sender.sendMessage(tl("whoisAFK", tl("true")));
}
@@ -136,16 +139,18 @@ public class Commandseen extends EssentialsCommand {
user.setDisplayNick();
if (user.getLastLogout() > 0) {
sender.sendMessage(tl("seenOffline", user.getName(), DateUtil.formatDateDiff(user.getLastLogout())));
sender.sendMessage(tl("whoisUuid", user.getBase().getUniqueId()));
final List<String> history = ess.getUserMap().getUserHistory(user.getBase().getUniqueId());
if (history != null && history.size() > 1) {
sender.sendMessage(tl("seenAccounts", StringUtil.joinListSkip(", ", user.getName(), history)));
}
if (sender.isAuthorized("essentials.seen.uuid", ess)) {
sender.sendMessage(tl("whoisUuid", user.getBase().getUniqueId()));
}
} else {
sender.sendMessage(tl("userUnknown", user.getName()));
}
final List<String> history = ess.getUserMap().getUserHistory(user.getBase().getUniqueId());
if (history != null && history.size() > 1) {
sender.sendMessage(tl("seenAccounts", StringUtil.joinListSkip(", ", user.getName(), history)));
}
if (BanLookup.isBanned(ess, user)) {
final BanEntry banEntry = BanLookup.getBanEntry(ess, user.getName());
final String reason = showBan ? banEntry.getReason() : tl("true");
@@ -51,7 +51,7 @@ public class Commandsethome extends EssentialsCommand {
}
final Location location = user.getLocation();
if (!ess.getSettings().isTeleportSafetyEnabled() && LocationUtil.isBlockUnsafeForUser(usersHome, location.getWorld(), location.getBlockX(), location.getBlockY(), location.getBlockZ())) {
if ((!ess.getSettings().isTeleportSafetyEnabled() || !ess.getSettings().isForceDisableTeleportSafety()) && LocationUtil.isBlockUnsafeForUser(ess, usersHome, location.getWorld(), location.getBlockX(), location.getBlockY(), location.getBlockZ())) {
throw new Exception(tl("unsafeTeleportDestination", location.getWorld().getName(), location.getBlockX(), location.getBlockY(), location.getBlockZ()));
}
@@ -2,7 +2,6 @@ package com.earth2me.essentials.commands;
import com.earth2me.essentials.Kit;
import com.earth2me.essentials.User;
import com.earth2me.essentials.config.ConfigurateUtil;
import org.bukkit.Server;
import java.util.ArrayList;
@@ -34,7 +33,7 @@ public class Commandshowkit extends EssentialsCommand {
@Override
protected List<String> getTabCompleteOptions(final Server server, final User user, final String commandLabel, final String[] args) {
if (args.length == 1) {
return new ArrayList<>(ConfigurateUtil.getKeys(ess.getKits().getKits())); // TODO: Move this to its own method
return new ArrayList<>(ess.getKits().getKitKeys()); // TODO: Move this to its own method
} else {
return Collections.emptyList();
}
@@ -42,7 +42,7 @@ public class Commandskull extends EssentialsCommand {
final SkullMeta metaSkull;
boolean spawn = false;
if (itemSkull != null && MaterialUtil.isPlayerHead(itemSkull.getType(), itemSkull.getDurability())) {
if (itemSkull != null && MaterialUtil.isPlayerHead(itemSkull)) {
metaSkull = (SkullMeta) itemSkull.getItemMeta();
} else if (user.isAuthorized("essentials.skull.spawn")) {
itemSkull = new ItemStack(SKULL_ITEM, 1, (byte) 3);
@@ -15,6 +15,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.logging.Level;
import static com.earth2me.essentials.I18n.tl;
@@ -84,6 +85,10 @@ public class Commandtogglejail extends EssentialsCommand {
player.setOnlineJailedTime(ess.getSettings().isJailOnlineTime() ? ((player.getBase().getStatistic(PLAY_ONE_TICK)) + (timeDiff / 50)) : 0);
}
sender.sendMessage(timeDiff > 0 ? tl("playerJailedFor", player.getName(), DateUtil.formatDateDiff(finalDisplayTime)) : tl("playerJailed", player.getName()));
final String notifyMessage = timeDiff > 0 ? tl("jailNotifyJailedFor", player.getName(), DateUtil.formatDateDiff(finalDisplayTime), sender.getSender().getName()) : tl("jailNotifyJailed", player.getName(), sender.getSender().getName());
server.getLogger().log(Level.INFO, notifyMessage);
ess.broadcastMessage("essentials.jail.notify", notifyMessage);
}
});
if (player.getBase().isOnline()) {
@@ -107,6 +112,10 @@ public class Commandtogglejail extends EssentialsCommand {
player.setJailTimeout(timeDiff);
player.setOnlineJailedTime(ess.getSettings().isJailOnlineTime() ? ((player.getBase().getStatistic(PLAY_ONE_TICK)) + (timeDiff / 50)) : 0);
sender.sendMessage(tl("jailSentenceExtended", DateUtil.formatDateDiff(displayTimeDiff)));
final String notifyMessage = tl("jailNotifySentenceExtended", player.getName(), DateUtil.formatDateDiff(displayTimeDiff), sender.getSender().getName());
server.getLogger().log(Level.INFO, notifyMessage);
ess.broadcastMessage("essentials.jail.notify", notifyMessage);
return;
}
@@ -22,13 +22,14 @@ public class Commandtop extends EssentialsCommand {
final int topZ = user.getLocation().getBlockZ();
final float pitch = user.getLocation().getPitch();
final float yaw = user.getLocation().getYaw();
final Location loc = LocationUtil.getSafeDestination(new Location(user.getWorld(), topX, user.getWorld().getMaxHeight(), topZ, yaw, pitch));
final Location unsafe = new Location(user.getWorld(), topX, ess.getWorldInfoProvider().getMaxHeight(user.getWorld()), topZ, yaw, pitch);
final Location safe = LocationUtil.getSafeDestination(ess, unsafe);
final CompletableFuture<Boolean> future = new CompletableFuture<>();
future.thenAccept(success -> {
if (success) {
user.sendMessage(tl("teleportTop", loc.getWorld().getName(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
user.sendMessage(tl("teleportTop", safe.getWorld().getName(), safe.getBlockX(), safe.getBlockY(), safe.getBlockZ()));
}
});
user.getAsyncTeleport().teleport(loc, new Trade(this.getName(), ess), TeleportCause.COMMAND, getNewExceptionFuture(user.getSource(), commandLabel));
user.getAsyncTeleport().teleport(safe, new Trade(this.getName(), ess), TeleportCause.COMMAND, getNewExceptionFuture(user.getSource(), commandLabel));
}
}
@@ -37,11 +37,12 @@ public class Commandtpa extends EssentialsCommand {
if (user.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions() && !user.isAuthorized("essentials.worlds." + player.getWorld().getName())) {
throw new Exception(tl("noPerm", "essentials.worlds." + player.getWorld().getName()));
}
// Don't let sender request teleport twice to the same player.
if (user.getConfigUUID().equals(player.getTeleportRequest()) && player.hasOutstandingTeleportRequest() // Check timeout
&& !player.isTpRequestHere()) { // Make sure the last teleport request was actually tpa and not tpahere
if (player.hasOutstandingTpaRequest(user.getName(), false)) {
throw new Exception(tl("requestSentAlready", player.getDisplayName()));
}
if (player.isAutoTeleportEnabled() && !player.isIgnoredPlayer(user)) {
final Trade charge = new Trade(this.getName(), ess);
final AsyncTeleport teleport = user.getAsyncTeleport();
@@ -71,6 +72,7 @@ public class Commandtpa extends EssentialsCommand {
player.sendMessage(tl("teleportRequestTimeoutInfo", ess.getSettings().getTpaAcceptCancellation()));
}
}
user.sendMessage(tl("requestSent", player.getDisplayName()));
if (user.isAuthorized("essentials.tpacancel")) {
user.sendMessage(tl("typeTpacancel"));
@@ -19,17 +19,17 @@ public class Commandtpaall extends EssentialsCommand {
public void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception {
if (args.length < 1) {
if (sender.isPlayer()) {
teleportAAllPlayers(server, sender, ess.getUser(sender.getPlayer()));
tpaAll(sender, ess.getUser(sender.getPlayer()));
return;
}
throw new NotEnoughArgumentsException();
}
final User target = getPlayer(server, sender, args, 0);
teleportAAllPlayers(server, sender, target);
tpaAll(sender, target);
}
private void teleportAAllPlayers(final Server server, final CommandSource sender, final User target) {
private void tpaAll(final CommandSource sender, final User target) {
sender.sendMessage(tl("teleportAAll"));
for (final User player : ess.getOnlineUsers()) {
if (target == player) {
@@ -41,6 +41,7 @@ public class Commandtpaall extends EssentialsCommand {
if (sender.getSender().equals(target.getBase()) && target.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions() && !target.isAuthorized("essentials.worlds." + target.getWorld().getName())) {
continue;
}
try {
final TPARequestEvent tpaEvent = new TPARequestEvent(sender, player, true);
ess.getServer().getPluginManager().callEvent(tpaEvent);
@@ -1,7 +1,6 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.User;
import net.ess3.api.IEssentials;
import org.bukkit.Server;
import static com.earth2me.essentials.I18n.tl;
@@ -15,20 +14,12 @@ public class Commandtpacancel extends EssentialsCommand {
/**
* Cancel {@link User}'s tp request if its {@code requester} is equal to the given {@code requester}.
*
* @param ess ess instance
* @param user user holding tp request
* @param requester tp requester
* @return whether tp was cancelled
*/
public static boolean cancelTeleportRequest(final IEssentials ess, final User user, final User requester) throws Exception {
if (user.getTeleportRequest() != null) {
final User userRequester = ess.getUser(user.getTeleportRequest());
if (requester.equals(userRequester)) {
user.requestTeleport(null, false);
return true;
}
}
return false;
public static boolean cancelTeleportRequest(final User user, final User requester) {
return user.removeTpaRequest(requester.getName()) != null;
}
@Override
@@ -37,7 +28,7 @@ public class Commandtpacancel extends EssentialsCommand {
int cancellations = 0;
for (final User onlineUser : ess.getOnlineUsers()) {
if (onlineUser == user) continue;
if (cancelTeleportRequest(ess, onlineUser, user)) {
if (cancelTeleportRequest(onlineUser, user)) {
cancellations++;
}
}
@@ -48,7 +39,7 @@ public class Commandtpacancel extends EssentialsCommand {
}
} else {
final User targetPlayer = getPlayer(server, user, args, 0);
if (cancelTeleportRequest(ess, targetPlayer, user)) {
if (cancelTeleportRequest(targetPlayer, user)) {
user.sendMessage(tl("teleportRequestSpecificCancelled", targetPlayer.getName()));
}
}
@@ -1,12 +1,18 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.AsyncTeleport;
import com.earth2me.essentials.IUser;
import com.earth2me.essentials.Trade;
import com.earth2me.essentials.User;
import net.essentialsx.api.v2.events.TeleportRequestResponseEvent;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import static com.earth2me.essentials.I18n.tl;
@@ -18,36 +24,87 @@ public class Commandtpaccept extends EssentialsCommand {
@Override
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
final User requester;
try {
requester = ess.getUser(user.getTeleportRequest());
} catch (final Exception ex) {
final boolean acceptAll;
if (args.length > 0) {
acceptAll = args[0].equals("*") || args[0].equalsIgnoreCase("all");
} else {
acceptAll = false;
}
if (!user.hasPendingTpaRequests(true, acceptAll)) {
throw new Exception(tl("noPendingRequest"));
}
if (args.length > 0) {
if (acceptAll) {
acceptAllRequests(user, commandLabel);
throw new NoChargeException();
}
user.sendMessage(tl("requestAccepted"));
handleTeleport(user, user.getOutstandingTpaRequest(getPlayer(server, user, args, 0).getName(), true), commandLabel);
} else {
user.sendMessage(tl("requestAccepted"));
handleTeleport(user, user.getNextTpaRequest(true, false, false), commandLabel);
}
throw new NoChargeException();
}
private void acceptAllRequests(final User user, final String commandLabel) throws Exception {
IUser.TpaRequest request;
int count = 0;
while ((request = user.getNextTpaRequest(true, true, true)) != null) {
try {
handleTeleport(user, request, commandLabel);
count++;
} catch (Exception e) {
ess.showError(user.getSource(), e, commandLabel);
} finally {
user.removeTpaRequest(request.getName());
}
}
user.sendMessage(tl("requestAcceptedAll", count));
}
@Override
protected List<String> getTabCompleteOptions(Server server, User user, String commandLabel, String[] args) {
if (args.length == 1) {
final List<String> options = new ArrayList<>(user.getPendingTpaKeys());
options.add("*");
return options;
} else {
return Collections.emptyList();
}
}
private void handleTeleport(final User user, final IUser.TpaRequest request, String commandLabel) throws Exception {
if (request == null) {
throw new Exception(tl("noPendingRequest"));
}
final User requester = ess.getUser(request.getRequesterUuid());
if (!requester.getBase().isOnline()) {
user.removeTpaRequest(request.getName());
throw new Exception(tl("noPendingRequest"));
}
if (user.isTpRequestHere() && ((!requester.isAuthorized("essentials.tpahere") && !requester.isAuthorized("essentials.tpaall")) || (user.getWorld() != requester.getWorld() && ess.getSettings().isWorldTeleportPermissions() && !user.isAuthorized("essentials.worlds." + user.getWorld().getName())))) {
if (request.isHere() && ((!requester.isAuthorized("essentials.tpahere") && !requester.isAuthorized("essentials.tpaall")) || (user.getWorld() != requester.getWorld() && ess.getSettings().isWorldTeleportPermissions() && !user.isAuthorized("essentials.worlds." + user.getWorld().getName())))) {
throw new Exception(tl("noPendingRequest"));
}
if (!user.isTpRequestHere() && (!requester.isAuthorized("essentials.tpa") || (user.getWorld() != requester.getWorld() && ess.getSettings().isWorldTeleportPermissions() && !user.isAuthorized("essentials.worlds." + requester.getWorld().getName())))) {
if (!request.isHere() && (!requester.isAuthorized("essentials.tpa") || (user.getWorld() != requester.getWorld() && ess.getSettings().isWorldTeleportPermissions() && !user.isAuthorized("essentials.worlds." + requester.getWorld().getName())))) {
throw new Exception(tl("noPendingRequest"));
}
if (args.length > 0 && !requester.getName().contains(args[0])) {
throw new Exception(tl("noPendingRequest"));
}
if (!user.hasOutstandingTeleportRequest()) {
user.requestTeleport(null, false);
throw new Exception(tl("requestTimedOut"));
final TeleportRequestResponseEvent event = new TeleportRequestResponseEvent(user, requester, request, true);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
if (ess.getSettings().isDebug()) {
logger.info("TPA accept cancelled by API for " + user.getName() + " (requested by " + requester.getName() + ")");
}
return;
}
final Trade charge = new Trade(this.getName(), ess);
user.sendMessage(tl("requestAccepted"));
requester.sendMessage(tl("requestAcceptedFrom", user.getDisplayName()));
final CompletableFuture<Boolean> future = getNewExceptionFuture(requester.getSource(), commandLabel);
@@ -55,8 +112,8 @@ public class Commandtpaccept extends EssentialsCommand {
user.sendMessage(tl("pendingTeleportCancelled"));
return false;
});
if (user.isTpRequestHere()) {
final Location loc = user.getTpRequestLocation();
if (request.isHere()) {
final Location loc = request.getLocation();
final AsyncTeleport teleport = requester.getAsyncTeleport();
teleport.setTpType(AsyncTeleport.TeleportType.TPA);
future.thenAccept(success -> {
@@ -64,14 +121,12 @@ public class Commandtpaccept extends EssentialsCommand {
requester.sendMessage(tl("teleporting", loc.getWorld().getName(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
}
});
teleport.teleportPlayer(user, user.getTpRequestLocation(), charge, TeleportCause.COMMAND, future);
teleport.teleportPlayer(user, loc, charge, TeleportCause.COMMAND, future);
} else {
final AsyncTeleport teleport = requester.getAsyncTeleport();
teleport.setTpType(AsyncTeleport.TeleportType.TPA);
teleport.teleport(user.getBase(), charge, TeleportCause.COMMAND, future);
}
user.requestTeleport(null, false);
throw new NoChargeException();
user.removeTpaRequest(request.getName());
}
}
@@ -33,11 +33,12 @@ public class Commandtpahere extends EssentialsCommand {
if (user.getWorld() != player.getWorld() && ess.getSettings().isWorldTeleportPermissions() && !user.isAuthorized("essentials.worlds." + user.getWorld().getName())) {
throw new Exception(tl("noPerm", "essentials.worlds." + user.getWorld().getName()));
}
// Don't let sender request teleport twice to the same player.
if (user.getConfigUUID().equals(player.getTeleportRequest()) && player.hasOutstandingTeleportRequest() // Check timeout
&& player.isTpRequestHere()) { // Make sure the last teleport request was actually tpahere and not tpa
if (player.hasOutstandingTpaRequest(user.getName(), true)) {
throw new Exception(tl("requestSentAlready", player.getDisplayName()));
}
if (!player.isIgnoredPlayer(user)) {
final TPARequestEvent tpaEvent = new TPARequestEvent(user.getSource(), player, true);
ess.getServer().getPluginManager().callEvent(tpaEvent);
@@ -1,8 +1,15 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.IUser;
import com.earth2me.essentials.User;
import net.essentialsx.api.v2.events.TeleportRequestResponseEvent;
import org.bukkit.Bukkit;
import org.bukkit.Server;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static com.earth2me.essentials.I18n.tl;
public class Commandtpdeny extends EssentialsCommand {
@@ -12,16 +19,84 @@ public class Commandtpdeny extends EssentialsCommand {
@Override
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
if (user.getTeleportRequest() == null) {
final boolean denyAll;
if (args.length > 0) {
denyAll = args[0].equals("*") || args[0].equalsIgnoreCase("all");
} else {
denyAll = false;
}
if (!user.hasPendingTpaRequests(false, false)) {
throw new Exception(tl("noPendingRequest"));
}
final User player = ess.getUser(user.getTeleportRequest());
if (player == null) {
final IUser.TpaRequest denyRequest;
if (args.length > 0) {
if (denyAll) {
denyAllRequests(user);
return;
}
denyRequest = user.getOutstandingTpaRequest(getPlayer(server, user, args, 0).getName(), false);
} else {
denyRequest = user.getNextTpaRequest(false, true, false);
}
if (denyRequest == null) {
throw new Exception(tl("noPendingRequest"));
}
final User player = ess.getUser(denyRequest.getRequesterUuid());
if (player == null || !player.getBase().isOnline()) {
throw new Exception(tl("noPendingRequest"));
}
if (sendEvent(user, player, denyRequest)) {
return;
}
user.sendMessage(tl("requestDenied"));
player.sendMessage(tl("requestDeniedFrom", user.getDisplayName()));
user.requestTeleport(null, false);
user.removeTpaRequest(denyRequest.getName());
}
private void denyAllRequests(User user) {
IUser.TpaRequest request;
int count = 0;
while ((request = user.getNextTpaRequest(false, true, false)) != null) {
final User player = ess.getUser(request.getRequesterUuid());
if (sendEvent(user, player, request)) {
continue;
}
if (player != null && player.getBase().isOnline()) {
player.sendMessage(tl("requestDeniedFrom", user.getDisplayName()));
}
user.removeTpaRequest(request.getName());
count++;
}
user.sendMessage(tl("requestDeniedAll", count));
}
private boolean sendEvent(User user, User player, IUser.TpaRequest request) {
final TeleportRequestResponseEvent event = new TeleportRequestResponseEvent(user, player, request, false);
Bukkit.getPluginManager().callEvent(event);
final boolean cancelled = event.isCancelled();
if (cancelled && ess.getSettings().isDebug()) {
logger.info("TPA deny cancelled by API for " + user.getName() + " (requested by " + player.getName() + ")");
}
return event.isCancelled();
}
@Override
protected List<String> getTabCompleteOptions(Server server, User user, String commandLabel, String[] args) {
if (args.length == 1) {
final List<String> options = new ArrayList<>(user.getPendingTpaKeys());
options.add("*");
return options;
} else {
return Collections.emptyList();
}
}
}
@@ -26,9 +26,9 @@ public class Commandtppos extends EssentialsCommand {
throw new NotEnoughArgumentsException();
}
final double x = args[0].startsWith("~") ? user.getLocation().getX() + (args[0].length() > 1 ? Integer.parseInt(args[0].substring(1)) : 0) : Integer.parseInt(args[0]);
final double y = args[1].startsWith("~") ? user.getLocation().getY() + (args[1].length() > 1 ? Integer.parseInt(args[1].substring(1)) : 0) : Integer.parseInt(args[1]);
final double z = args[2].startsWith("~") ? user.getLocation().getZ() + (args[2].length() > 1 ? Integer.parseInt(args[2].substring(1)) : 0) : Integer.parseInt(args[2]);
final double x = args[0].startsWith("~") ? user.getLocation().getX() + (args[0].length() > 1 ? Double.parseDouble(args[0].substring(1)) : 0) : Double.parseDouble(args[0]);
final double y = args[1].startsWith("~") ? user.getLocation().getY() + (args[1].length() > 1 ? Double.parseDouble(args[1].substring(1)) : 0) : Double.parseDouble(args[1]);
final double z = args[2].startsWith("~") ? user.getLocation().getZ() + (args[2].length() > 1 ? Double.parseDouble(args[2].substring(1)) : 0) : Double.parseDouble(args[2]);
final Location loc = new Location(user.getWorld(), x, y, z, user.getLocation().getYaw(), user.getLocation().getPitch());
if (args.length == 4) {
final World w = ess.getWorld(args[3]);
@@ -38,7 +38,7 @@ public class Commandtree extends EssentialsCommand {
}
}
final Location loc = LocationUtil.getTarget(user.getBase()).add(0, 1, 0);
final Location loc = LocationUtil.getTarget(user.getBase(), ess.getSettings().getMaxTreeCommandRange()).add(0, 1, 0);
if (loc.getBlock().getType().isSolid()) {
throw new Exception(tl("treeFailure"));
}
@@ -2,6 +2,7 @@ package com.earth2me.essentials.commands;
import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.MaterialUtil;
import com.earth2me.essentials.utils.NumberUtil;
import com.google.common.collect.Lists;
import org.bukkit.Server;
@@ -87,7 +88,7 @@ public class Commandworth extends EssentialsCommand {
}
final BigDecimal result = worth.multiply(BigDecimal.valueOf(amount));
sender.sendMessage(is.getDurability() != 0 ? tl("worthMeta", is.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""), is.getDurability(), NumberUtil.displayCurrency(result, ess), amount, NumberUtil.displayCurrency(worth, ess)) : tl("worth", is.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""), NumberUtil.displayCurrency(result, ess), amount, NumberUtil.displayCurrency(worth, ess)));
sender.sendMessage(MaterialUtil.getDamage(is) != 0 ? tl("worthMeta", is.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""), MaterialUtil.getDamage(is), NumberUtil.displayCurrency(result, ess), amount, NumberUtil.displayCurrency(worth, ess)) : tl("worth", is.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""), NumberUtil.displayCurrency(result, ess), amount, NumberUtil.displayCurrency(worth, ess)));
return result;
}
@@ -112,11 +112,15 @@ public abstract class EssentialsCommand implements IEssentialsCommand {
// Get online players - only show vanished if source has permission
protected User getPlayer(final Server server, final CommandSource sender, final String[] args, final int pos) throws PlayerNotFoundException, NotEnoughArgumentsException {
return getPlayer(server, sender, args, pos, false);
}
protected User getPlayer(final Server server, final CommandSource sender, final String[] args, final int pos, final boolean getOffline) throws PlayerNotFoundException, NotEnoughArgumentsException {
if (sender.isPlayer()) {
final User user = ess.getUser(sender.getPlayer());
return getPlayer(server, user, args, pos);
return getPlayer(server, user, args, pos, getOffline);
}
return getPlayer(server, args, pos, true, false);
return getPlayer(server, args, pos, true, getOffline);
}
// Get online players - only show vanished if source has permission
@@ -130,7 +134,11 @@ public abstract class EssentialsCommand implements IEssentialsCommand {
// Get online players - only show vanished if source has permission
protected User getPlayer(final Server server, final User user, final String[] args, final int pos) throws PlayerNotFoundException, NotEnoughArgumentsException {
return getPlayer(server, user, args, pos, user.canInteractVanished(), false);
return getPlayer(server, user, args, pos, false);
}
protected User getPlayer(final Server server, final User user, final String[] args, final int pos, final boolean getOffline) throws PlayerNotFoundException, NotEnoughArgumentsException {
return getPlayer(server, user, args, pos, user.canInteractVanished(), getOffline);
}
// Get online or offline players, this method allows for raw access
@@ -322,6 +322,16 @@ public class UserConfigHolder {
this.baltopExempt = value;
}
private @MonotonicNonNull Boolean shouting;
public Boolean shouting() {
return shouting;
}
public void shouting(final Boolean value) {
this.shouting = value;
}
private @NonNull Timestamps timestamps = new Timestamps();
public Timestamps timestamps() {
@@ -1,5 +1,6 @@
package com.earth2me.essentials.craftbukkit;
import com.earth2me.essentials.utils.VersionUtil;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
@@ -15,15 +16,13 @@ import java.util.Map;
/*
* This class can be removed when https://github.com/Bukkit/CraftBukkit/pull/193 is accepted to CraftBukkit
*/
public final class InventoryWorkaround {
/*
Spigot 1.9, for whatever reason, decided to merge the armor and main player inventories without providing a way
to access the main inventory. There's lots of ugly code in here to work around that.
*/
private static final int USABLE_PLAYER_INV_SIZE = 36;
// Hot-ish code so cache
private static Boolean hasMainHandSupport = null;
private static final boolean IS_OFFHAND = VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_9_R01);
private InventoryWorkaround() {
}
@@ -201,87 +200,45 @@ public final class InventoryWorkaround {
@SuppressWarnings("deprecation")
public static void setItemInMainHand(final Player p, final ItemStack item) {
if (hasMainHandSupport == null) {
try {
p.getInventory().setItemInMainHand(item);
hasMainHandSupport = true;
} catch (final Throwable e) {
p.setItemInHand(item);
hasMainHandSupport = false;
}
if (IS_OFFHAND) {
p.getInventory().setItemInMainHand(item);
} else {
if (hasMainHandSupport) {
p.getInventory().setItemInMainHand(item);
} else {
p.setItemInHand(item);
}
p.setItemInHand(item);
}
}
@SuppressWarnings("deprecation")
public static void setItemInMainHand(final EntityEquipment invent, final ItemStack item) {
if (hasMainHandSupport == null) {
try {
invent.setItemInMainHand(item);
hasMainHandSupport = true;
} catch (final Throwable e) {
invent.setItemInHand(item);
hasMainHandSupport = false;
}
if (IS_OFFHAND) {
invent.setItemInMainHand(item);
} else {
if (hasMainHandSupport) {
invent.setItemInMainHand(item);
} else {
invent.setItemInHand(item);
}
invent.setItemInHand(item);
}
}
@SuppressWarnings("deprecation")
public static void setItemInMainHandDropChance(final EntityEquipment invent, final float chance) {
if (hasMainHandSupport == null) {
try {
invent.setItemInMainHandDropChance(chance);
hasMainHandSupport = true;
} catch (final Throwable e) {
invent.setItemInHandDropChance(chance);
hasMainHandSupport = false;
}
if (IS_OFFHAND) {
invent.setItemInMainHandDropChance(chance);
} else {
if (hasMainHandSupport) {
invent.setItemInMainHandDropChance(chance);
} else {
invent.setItemInHandDropChance(chance);
}
invent.setItemInHandDropChance(chance);
}
}
public static void setItemInOffHand(final Player p, final ItemStack item) {
// This assumes that all builds that support a main hand also support an off hand.
if (hasMainHandSupport == null || hasMainHandSupport) {
try {
p.getInventory().setItemInOffHand(item);
hasMainHandSupport = true;
} catch (final Throwable e) {
hasMainHandSupport = false;
}
if (IS_OFFHAND) {
p.getInventory().setItemInOffHand(item);
}
}
public static int clearItemInOffHand(final Player p, final ItemStack item) {
// This should be added because if `/clear` itself is not initilized it will return an Error: null.
if (hasMainHandSupport == null || hasMainHandSupport) {
try {
int removedAmount = 0;
if (p.getInventory().getItemInOffHand().getType().equals(item.getType())) {
removedAmount = p.getInventory().getItemInOffHand().getAmount();
p.getInventory().setItemInOffHand(null);
}
hasMainHandSupport = true;
return removedAmount;
} catch (final Throwable e) {
hasMainHandSupport = false;
if (IS_OFFHAND) {
int removedAmount = 0;
if (p.getInventory().getItemInOffHand().getType().equals(item.getType())) {
removedAmount = p.getInventory().getItemInOffHand().getAmount();
p.getInventory().setItemInOffHand(null);
}
return removedAmount;
}
return 0;
}
@@ -23,6 +23,7 @@ import org.bukkit.inventory.meta.FireworkEffectMeta;
import org.bukkit.inventory.meta.FireworkMeta;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import org.bukkit.inventory.meta.PotionMeta;
import org.bukkit.inventory.meta.SkullMeta;
import org.bukkit.plugin.Plugin;
import org.bukkit.potion.Potion;
@@ -279,12 +280,22 @@ public abstract class AbstractItemDb implements IConf, net.ess3.api.IItemDb {
serializeEffectMeta(sb, fireworkEffectMeta.getEffect());
}
} else if (MaterialUtil.isPotion(material)) {
final Potion potion = Potion.fromItemStack(is);
for (final PotionEffect e : potion.getEffects()) {
// long but needs to be effect:speed power:2 duration:120 in that order.
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(" ");
final boolean splash;
final Collection<PotionEffect> effects;
if (VersionUtil.PRE_FLATTENING) {
final Potion potion = Potion.fromDamage(is.getDurability());
splash = potion.isSplash();
effects = potion.getEffects();
} else {
splash = is.getType() == Material.SPLASH_POTION;
effects = ((PotionMeta) is.getItemMeta()).getCustomEffects();
}
} else if (MaterialUtil.isPlayerHead(material, is.getData().getData())) {
for (final PotionEffect e : effects) {
// long but needs to be effect:speed power:2 duration:120 in that order.
sb.append("splash:").append(splash).append(" ").append("effect:").append(e.getType().getName().toLowerCase()).append(" ").append("power:").append(e.getAmplifier()).append(" ").append("duration:").append(e.getDuration() / 20).append(" ");
}
} else if (MaterialUtil.isPlayerHead(is)) {
// item stack with meta
final SkullMeta skullMeta = (SkullMeta) is.getItemMeta();
if (skullMeta != null && skullMeta.hasOwner()) {
@@ -3,8 +3,8 @@ package com.earth2me.essentials.items;
import com.earth2me.essentials.ManagedFile;
import com.earth2me.essentials.utils.EnumUtil;
import com.earth2me.essentials.utils.NumberUtil;
import com.earth2me.essentials.utils.VersionUtil;
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;
@@ -204,7 +204,7 @@ public class LegacyItemDb extends AbstractItemDb {
}
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
&& VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_11_R01)) { // 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);
@@ -3,40 +3,32 @@ package com.earth2me.essentials.metrics;
import com.earth2me.essentials.Essentials;
import com.earth2me.essentials.economy.EconomyLayer;
import com.earth2me.essentials.economy.EconomyLayers;
import com.google.common.collect.ImmutableList;
import org.bstats.bukkit.Metrics;
import org.bstats.charts.AdvancedBarChart;
import org.bstats.charts.CustomChart;
import org.bstats.charts.DrilldownPie;
import org.bstats.charts.MultiLineChart;
import org.bstats.charts.SimplePie;
import org.bukkit.Bukkit;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MetricsWrapper {
private static final List<String> KNOWN_FORCED_METRICS = ImmutableList.of(
"ChatControl",
"catserver.server.Metrics");
private static boolean hasWarned = false;
private final Essentials ess;
private final Metrics metrics;
private final JavaPlugin plugin;
private final Map<String, Boolean> commands = new HashMap<>();
private final Plugin plugin;
public MetricsWrapper(final Plugin plugin, final int pluginId, final boolean includeCommands) {
public MetricsWrapper(final JavaPlugin plugin, final int pluginId, final boolean includeCommands) {
this.plugin = plugin;
this.ess = (Essentials) Bukkit.getPluginManager().getPlugin("Essentials");
this.metrics = new Metrics(plugin, pluginId);
if (metrics.isEnabled()) {
plugin.getLogger().info("Starting Metrics. Opt-out using the global bStats config.");
} else {
plugin.getLogger().info("Metrics disabled per bStats config.");
}
plugin.getLogger().info("Starting Metrics. Opt-out using the global bStats config.");
checkForcedMetrics();
addPermsChart();
addEconomyChart();
addReleaseBranchChart();
@@ -51,12 +43,12 @@ public class MetricsWrapper {
commands.put(command, state);
}
public void addCustomChart(final Metrics.CustomChart chart) {
public void addCustomChart(final CustomChart chart) {
metrics.addCustomChart(chart);
}
private void addPermsChart() {
metrics.addCustomChart(new Metrics.DrilldownPie("permsPlugin", () -> {
metrics.addCustomChart(new DrilldownPie("permsPlugin", () -> {
final Map<String, Map<String, Integer>> result = new HashMap<>();
final String handler = ess.getPermissionsHandler().getName();
final Map<String, Integer> backend = new HashMap<>();
@@ -67,7 +59,7 @@ public class MetricsWrapper {
}
private void addEconomyChart() {
metrics.addCustomChart(new Metrics.DrilldownPie("econPlugin", () -> {
metrics.addCustomChart(new DrilldownPie("econPlugin", () -> {
final Map<String, Map<String, Integer>> result = new HashMap<>();
final Map<String, Integer> backend = new HashMap<>();
final EconomyLayer layer = EconomyLayers.getSelectedLayer();
@@ -83,7 +75,7 @@ public class MetricsWrapper {
}
private void addVersionHistoryChart() {
metrics.addCustomChart(new Metrics.MultiLineChart("versionHistory", () -> {
metrics.addCustomChart(new MultiLineChart("versionHistory", () -> {
final HashMap<String, Integer> result = new HashMap<>();
result.put(plugin.getDescription().getVersion(), 1);
return result;
@@ -91,7 +83,7 @@ public class MetricsWrapper {
}
private void addReleaseBranchChart() {
metrics.addCustomChart(new Metrics.SimplePie("releaseBranch", ess.getUpdateChecker()::getVersionBranch));
metrics.addCustomChart(new SimplePie("releaseBranch", ess.getUpdateChecker()::getVersionBranch));
}
private void addCommandsChart() {
@@ -99,7 +91,7 @@ public class MetricsWrapper {
markCommand(command, false);
}
metrics.addCustomChart(new Metrics.AdvancedBarChart("commands", () -> {
metrics.addCustomChart(new AdvancedBarChart("commands", () -> {
final Map<String, int[]> result = new HashMap<>();
for (final Map.Entry<String, Boolean> entry : commands.entrySet()) {
if (entry.getValue()) {
@@ -112,75 +104,4 @@ public class MetricsWrapper {
}));
}
private boolean isForcedMetricsClass(Class<?> bStatsService) {
for (String identifier : KNOWN_FORCED_METRICS) {
if (bStatsService.getCanonicalName().contains(identifier)) {
return true;
}
}
final JavaPlugin owningPlugin = getProvidingPlugin(bStatsService);
if (owningPlugin != null && KNOWN_FORCED_METRICS.contains(owningPlugin.getName())) {
return true;
}
return false;
}
private void checkForcedMetrics() {
if (hasWarned) return;
hasWarned = true;
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> {
for (final Class<?> service : Bukkit.getServicesManager().getKnownServices()) {
try {
service.getField("B_STATS_VERSION"); // Identifies bStats classes
if (isForcedMetricsClass(service)) {
warnForcedMetrics(service);
} else {
try {
service.getDeclaredField("pluginId"); // Only present in recent bStats classes, which should also have the enabled field unless modified
} catch (final NoSuchFieldException e) {
// Old bStats class found so "enabled" field detection is unreliable.
break;
}
try {
service.getDeclaredField("enabled"); // In some modified forced metrics classes, this will fail
} catch (final NoSuchFieldException e) {
warnForcedMetrics(service);
}
}
} catch (final NoSuchFieldException ignored) {
}
}
});
}
private void warnForcedMetrics(final Class<?> service) {
final Plugin servicePlugin = JavaPlugin.getProvidingPlugin(service);
plugin.getLogger().severe("WARNING: Potential forced metrics collection by plugin '" + servicePlugin.getName() + "' v" + servicePlugin.getDescription().getVersion());
plugin.getLogger().severe("Your server is running a plugin that may not respect bStats' opt-out settings.");
plugin.getLogger().severe("This may cause data to be uploaded to bStats.org for plugins that use bStats, even if you've opted out in the bStats config.");
plugin.getLogger().severe("Please report this to bStats and to the authors of '" + servicePlugin.getName() + "'. (Offending class: " + service.getName() + ")");
}
private JavaPlugin getProvidingPlugin(final Class<?> clazz) {
try {
return JavaPlugin.getProvidingPlugin(clazz);
} catch (final Exception ignored) {
}
final ClassLoader parent = clazz.getClassLoader().getParent();
if (parent.getClass().getName().equals("org.bukkit.plugin.java.PluginClassLoader")) {
try {
final Field pluginField = parent.getClass().getDeclaredField("plugin");
pluginField.setAccessible(true);
return (JavaPlugin) pluginField.get(parent);
} catch (final Exception ignored) {
}
}
return null;
}
}
@@ -5,6 +5,7 @@ import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.MetaItemStack;
import com.earth2me.essentials.Trade;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.FormatUtil;
import com.earth2me.essentials.utils.MaterialUtil;
import com.earth2me.essentials.utils.NumberUtil;
import net.ess3.api.IEssentials;
@@ -60,15 +61,15 @@ public class EssentialsSign {
}
/**
* @deprecated, use {@link #isValidSign(IEssentials, ISign)} if possible
* @deprecated use {@link #isValidSign(IEssentials, ISign)} if possible
*/
@Deprecated
public static boolean isValidSign(final ISign sign) {
return sign.getLine(0).matches("§1\\[.*\\]");
return sign.getLine(0).matches("§1\\[.*]");
}
public static boolean isValidSign(final IEssentials ess, final ISign sign) {
if (!sign.getLine(0).matches("§1\\[.*\\]"))
if (!sign.getLine(0).matches("§1\\[.*]"))
return false;
// Validate that the sign is actually an essentials sign
@@ -119,6 +120,7 @@ public class EssentialsSign {
} catch (final ChargeException | SignException ex) {
showError(ess, user.getSource(), ex, signName);
}
setOwnerData(ess, user, sign);
// Return true, so the player sees the wrong sign.
return true;
}
@@ -154,6 +156,35 @@ public class EssentialsSign {
return user.getName().substring(0, Math.min(user.getName().length(), 13));
}
public void setOwner(final IEssentials ess, final User user, final ISign signProvider, final int nameIndex, final String namePrefix) {
setOwnerData(ess, user, signProvider);
signProvider.setLine(nameIndex, namePrefix + getUsername(user));
}
public void setOwnerData(final IEssentials ess, final User user, final ISign signProvider) {
if (ess.getSignDataProvider() == null) {
return;
}
final Sign sign = (Sign) signProvider.getBlock().getState();
ess.getSignDataProvider().setSignData(sign, "owner", user.getUUID().toString());
}
public boolean isOwner(final IEssentials ess, final User user, final ISign signProvider, final int nameIndex, final String namePrefix) {
final Sign sign = (Sign) signProvider.getBlock().getState();
if (ess.getSignDataProvider() == null || ess.getSignDataProvider().getSignData(sign, "owner") == null) {
if (ess.getSignDataProvider() != null) {
ess.getSignDataProvider().setSignData(sign, "owner", user.getUUID().toString());
}
return FormatUtil.stripFormat(signProvider.getLine(nameIndex)).equalsIgnoreCase(getUsername(user));
}
if (user.getUUID().toString().equals(ess.getSignDataProvider().getSignData(sign, "owner"))) {
signProvider.setLine(nameIndex, namePrefix + getUsername(user));
return true;
}
return false;
}
protected final boolean onSignInteract(final Block block, final Player player, final IEssentials ess) {
final ISign sign = new BlockSign(block);
final User user = ess.getUser(player);
@@ -392,7 +423,7 @@ public class EssentialsSign {
}
protected final BigDecimal getMoney(final String line, final IEssentials ess) throws SignException {
final boolean isMoney = line.matches("^[^0-9-\\.]?[\\.0-9]+[^0-9-\\.]?$");
final boolean isMoney = line.matches("^[^0-9-.]?[.0-9]+[^0-9-.]?$");
return isMoney ? getBigDecimalPositive(line, ess) : null;
}
@@ -531,6 +562,7 @@ public class EssentialsSign {
@Override
public final void setLine(final int index, final String text) {
sign.setLine(index, text);
updateSign();
}
@Override
@@ -5,7 +5,6 @@ import com.earth2me.essentials.Trade;
import com.earth2me.essentials.Trade.OverflowType;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.EnumUtil;
import com.earth2me.essentials.utils.FormatUtil;
import com.earth2me.essentials.utils.MaterialUtil;
import net.ess3.api.IEssentials;
import net.ess3.api.MaxMoneyException;
@@ -123,7 +122,7 @@ public class SignProtection extends EssentialsSign {
if (user.isAuthorized("essentials.signs.protection.override")) {
return SignProtectionState.OWNER;
}
if (FormatUtil.stripFormat(sign.getLine(3)).equalsIgnoreCase(username)) {
if (isOwner(user.getEssentials(), user, sign, 3, "§1")) {
return SignProtectionState.OWNER;
}
for (int i = 1; i <= 2; i++) {
@@ -5,6 +5,7 @@ import com.earth2me.essentials.Trade;
import com.earth2me.essentials.Trade.OverflowType;
import com.earth2me.essentials.Trade.TradeType;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.MaterialUtil;
import com.earth2me.essentials.utils.NumberUtil;
import net.ess3.api.IEssentials;
import net.ess3.api.MaxMoneyException;
@@ -18,7 +19,7 @@ import static com.earth2me.essentials.I18n.tl;
//TODO: TL exceptions
public class SignTrade extends EssentialsSign {
private static int MAX_STOCK_LINE_LENGTH = 15;
private static final int MAX_STOCK_LINE_LENGTH = 15;
public SignTrade() {
super("Trade");
@@ -34,7 +35,7 @@ public class SignTrade extends EssentialsSign {
throw new SignException("You cannot trade for the same item type.");
}
trade.isAffordableFor(player);
sign.setLine(3, "§8" + username);
setOwner(ess, player, sign, 3, "§8");
trade.charge(player);
Trade.log("Sign", "Trade", "Create", username, trade, username, null, sign.getBlock().getLocation(), player.getMoney(), ess);
return true;
@@ -42,7 +43,7 @@ public class SignTrade extends EssentialsSign {
@Override
protected boolean onSignInteract(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException, MaxMoneyException {
if (sign.getLine(3).substring(2).equalsIgnoreCase(username)) {
if (isOwner(ess, player, sign, 3, "§8")) {
final Trade store = rechargeSign(sign, ess, player);
final Trade stored;
try {
@@ -83,7 +84,7 @@ public class SignTrade extends EssentialsSign {
private Trade rechargeSign(final ISign sign, final IEssentials ess, final User player) throws SignException, ChargeException {
final Trade trade = getTrade(sign, 2, AmountType.COST, false, true, ess);
if (trade.getItemStack() != null && player.getBase().getItemInHand() != null && trade.getItemStack().getType() == player.getBase().getItemInHand().getType() && trade.getItemStack().getDurability() == player.getBase().getItemInHand().getDurability() && trade.getItemStack().getEnchantments().equals(player.getBase().getItemInHand().getEnchantments())) {
if (trade.getItemStack() != null && player.getBase().getItemInHand() != null && trade.getItemStack().getType() == player.getBase().getItemInHand().getType() && MaterialUtil.getDamage(trade.getItemStack()) == MaterialUtil.getDamage(player.getBase().getItemInHand()) && trade.getItemStack().getEnchantments().equals(player.getBase().getItemInHand().getEnchantments())) {
final int amount = trade.getItemStack().getAmount();
if (player.getBase().getInventory().containsAtLeast(trade.getItemStack(), amount)) {
final ItemStack stack = player.getBase().getItemInHand().clone();
@@ -101,7 +102,7 @@ public class SignTrade extends EssentialsSign {
protected boolean onSignBreak(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, MaxMoneyException {
final String signOwner = sign.getLine(3);
final boolean isOwner = signOwner.length() > 3 && signOwner.substring(2).equalsIgnoreCase(username);
final boolean isOwner = isOwner(ess, player, sign, 3, "§8");
final boolean canBreak = isOwner || player.isAuthorized("essentials.signs.trade.override");
final boolean canCollect = isOwner || player.isAuthorized("essentials.signs.trade.override.collect");
@@ -115,8 +116,8 @@ public class SignTrade extends EssentialsSign {
return true;
}
final Map<Integer, ItemStack> withdraw1 = stored1.pay(player, OverflowType.RETURN);
final Map<Integer, ItemStack> withdraw2 = stored2.pay(player, OverflowType.RETURN);
final Map<Integer, ItemStack> withdraw1 = stored1.pay(player, OverflowType.DROP);
final Map<Integer, ItemStack> withdraw2 = stored2.pay(player, OverflowType.DROP);
if (withdraw1 == null && withdraw2 == null) {
Trade.log("Sign", "Trade", "Break", signOwner.substring(2), stored2, username, stored1, sign.getBlock().getLocation(), player.getMoney(), ess);
@@ -205,7 +206,9 @@ public class SignTrade extends EssentialsSign {
if (!(split[1].equalsIgnoreCase("exp") || split[1].equalsIgnoreCase("xp")) && getItemStack(split[1], stackamount, ess).getType() == Material.AIR) {
throw new SignException(tl("moreThanZero"));
}
sign.setLine(index, stackamount + " " + split[1] + ":" + amount);
final String newline = stackamount + " " + split[1] + ":" + amount;
validateSignLength(newline);
sign.setLine(index, newline);
return;
}
throw new SignException(tl("invalidSignLine", index + 1));
@@ -235,27 +238,26 @@ public class SignTrade extends EssentialsSign {
}
if (split.length == 3) {
final int stackAmount = getIntegerPositive(split[0]);
if (split[1].equalsIgnoreCase("exp") || split[1].equalsIgnoreCase("xp")) {
final int stackamount = getIntegerPositive(split[0]);
int amount = getInteger(split[2]);
if (amountType == AmountType.ROUNDED) {
amount -= amount % stackamount;
amount -= amount % stackAmount;
}
if (notEmpty && (amount < 1 || stackamount < 1)) {
if (notEmpty && (amount < 1 || stackAmount < 1)) {
throw new SignException(tl("tradeSignEmpty"));
}
return new Trade(amountType == AmountType.COST ? stackamount : amount, ess);
return new Trade(amountType == AmountType.COST ? stackAmount : amount, ess);
} else {
final int stackamount = getIntegerPositive(split[0]);
final ItemStack item = getItemStack(split[1], stackamount, allowId, ess);
final ItemStack item = getItemStack(split[1], stackAmount, allowId, ess);
int amount = getInteger(split[2]);
if (amountType == AmountType.ROUNDED) {
amount -= amount % stackamount;
amount -= amount % stackAmount;
}
if (notEmpty && (amount < 1 || stackamount < 1 || item.getType() == Material.AIR || amount < stackamount)) {
if (notEmpty && (amount < 1 || stackAmount < 1 || item.getType() == Material.AIR || amount < stackAmount)) {
throw new SignException(tl("tradeSignEmpty"));
}
item.setAmount(amountType == AmountType.COST ? stackamount : amount);
item.setAmount(amountType == AmountType.COST ? stackAmount : amount);
return new Trade(item, ess);
}
}
@@ -334,20 +336,18 @@ public class SignTrade extends EssentialsSign {
}
if (split.length == 3) {
final int stackAmount = getIntegerPositive(split[0]);
if (split[1].equalsIgnoreCase("exp") || split[1].equalsIgnoreCase("xp")) {
final int stackamount = getIntegerPositive(split[0]);
final String newline = stackamount + " " + split[1] + ":" + value.intValueExact();
final String newline = stackAmount + " " + split[1] + ":" + value.intValueExact();
validateSignLength(newline);
sign.setLine(index, newline);
return;
} else {
final int stackamount = getIntegerPositive(split[0]);
getItemStack(split[1], stackamount, ess);
final String newline = stackamount + " " + split[1] + ":" + value.intValueExact();
getItemStack(split[1], stackAmount, ess);
final String newline = stackAmount + " " + split[1] + ":" + value.intValueExact();
validateSignLength(newline);
sign.setLine(index, newline);
return;
}
return;
}
throw new SignException(tl("invalidSignLine", index + 1));
}
@@ -1,7 +1,6 @@
package com.earth2me.essentials.updatecheck;
import com.earth2me.essentials.Essentials;
import com.google.common.base.Charsets;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonSyntaxException;
@@ -13,6 +12,7 @@ import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.text.MessageFormat;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
@@ -23,6 +23,12 @@ public final class UpdateChecker {
private static final String REPO = "EssentialsX/Essentials";
private static final String BRANCH = "2.x";
private static final String LATEST_RELEASE_URL = "https://api.github.com/repos/" + REPO + "/releases/latest";
private static final String LATEST_RELEASE_PROXY_URL = "https://webapi.essentialsx.net/api/v1/github/essx-v2/releases/latest";
// 0 = base for comparison, 1 = head for comparison - *not* the same as what this class calls them
private static final String DISTANCE_URL = "https://api.github.com/repos/EssentialsX/Essentials/compare/{0}...{1}";
private static final String DISTANCE_PROXY_URL = "https://webapi.essentialsx.net/api/v1/github/essx-v2/compare/{0}/{1}";
private final Essentials ess;
private final String versionIdentifier;
private final String versionBranch;
@@ -89,21 +95,19 @@ public final class UpdateChecker {
new Thread(() -> {
catchBlock:
try {
final HttpURLConnection connection = (HttpURLConnection) new URL("https://api.github.com/repos/" + REPO + "/releases/latest").openConnection();
connection.connect();
final HttpURLConnection connection = tryRequestWithFallback(LATEST_RELEASE_URL, LATEST_RELEASE_PROXY_URL);
if (connection.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) {
// Locally built?
pendingReleaseFuture.complete(cachedRelease = new RemoteVersion(BranchStatus.UNKNOWN));
break catchBlock;
}
if (connection.getResponseCode() == HttpURLConnection.HTTP_INTERNAL_ERROR) {
// Github is down
} else if (connection.getResponseCode() == HttpURLConnection.HTTP_INTERNAL_ERROR || connection.getResponseCode() == HttpURLConnection.HTTP_FORBIDDEN) {
// GitHub is down or rate limit exceeded
pendingReleaseFuture.complete(new RemoteVersion(BranchStatus.ERROR));
break catchBlock;
}
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charsets.UTF_8))) {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
latestRelease = new Gson().fromJson(reader, JsonObject.class).get("tag_name").getAsString();
pendingReleaseFuture.complete(cachedRelease = fetchDistance(latestRelease, getVersionIdentifier()));
} catch (JsonSyntaxException | NumberFormatException e) {
@@ -138,43 +142,64 @@ public final class UpdateChecker {
return latestRelease;
}
private HttpURLConnection tryRequestWithFallback(final String githubUrl, final String fallbackUrl) throws IOException {
HttpURLConnection connection = (HttpURLConnection) new URL(githubUrl).openConnection();
try {
connection.connect();
if (connection.getResponseCode() != HttpURLConnection.HTTP_INTERNAL_ERROR && connection.getResponseCode() != HttpURLConnection.HTTP_FORBIDDEN) {
// Connection succeeded without any errors from GitHub's side.
return connection;
}
} catch (IOException ignored) {
}
// Connection failed, GitHub's down or we hit a ratelimit, so use the fallback URL
// If the fallback fails, let the exception or error status bubble up
connection = (HttpURLConnection) new URL(fallbackUrl).openConnection();
connection.connect();
return connection;
}
private RemoteVersion tryProcessDistance(final HttpURLConnection connection) throws IOException {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
final JsonObject obj = new Gson().fromJson(reader, JsonObject.class);
switch (obj.get("status").getAsString()) {
case "identical": {
return new RemoteVersion(BranchStatus.IDENTICAL, 0);
}
case "ahead": {
return new RemoteVersion(BranchStatus.AHEAD, 0);
}
case "behind": {
return new RemoteVersion(BranchStatus.BEHIND, obj.get("behind_by").getAsInt());
}
case "diverged": {
return new RemoteVersion(BranchStatus.DIVERGED, obj.get("behind_by").getAsInt());
}
default: {
return new RemoteVersion(BranchStatus.UNKNOWN);
}
}
} catch (JsonSyntaxException | NumberFormatException e) {
e.printStackTrace();
return new RemoteVersion(BranchStatus.ERROR);
}
}
private RemoteVersion fetchDistance(final String head, final String hash) {
try {
final HttpURLConnection connection = (HttpURLConnection) new URL("https://api.github.com/repos/" + REPO + "/compare/" + head + "..." + hash).openConnection();
connection.connect();
final HttpURLConnection connection = tryRequestWithFallback(MessageFormat.format(DISTANCE_URL, head, hash), MessageFormat.format(DISTANCE_PROXY_URL, head, hash));
if (connection.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) {
// Locally built?
return new RemoteVersion(BranchStatus.UNKNOWN);
}
if (connection.getResponseCode() == HttpURLConnection.HTTP_INTERNAL_ERROR) {
// Github is down
} else if (connection.getResponseCode() == HttpURLConnection.HTTP_INTERNAL_ERROR || connection.getResponseCode() == HttpURLConnection.HTTP_FORBIDDEN) {
// GitHub is down or we hit a local rate limit
return new RemoteVersion(BranchStatus.ERROR);
}
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charsets.UTF_8))) {
final JsonObject obj = new Gson().fromJson(reader, JsonObject.class);
switch (obj.get("status").getAsString()) {
case "identical": {
return new RemoteVersion(BranchStatus.IDENTICAL, 0);
}
case "ahead": {
return new RemoteVersion(BranchStatus.AHEAD, 0);
}
case "behind": {
return new RemoteVersion(BranchStatus.BEHIND, obj.get("behind_by").getAsInt());
}
case "diverged": {
return new RemoteVersion(BranchStatus.DIVERGED, obj.get("behind_by").getAsInt());
}
default: {
return new RemoteVersion(BranchStatus.UNKNOWN);
}
}
} catch (JsonSyntaxException | NumberFormatException e) {
e.printStackTrace();
return new RemoteVersion(BranchStatus.ERROR);
}
return tryProcessDistance(connection);
} catch (IOException e) {
e.printStackTrace();
return new RemoteVersion(BranchStatus.ERROR);
@@ -30,6 +30,7 @@ public final class LocationUtil {
private static final Set<Material> LAVA_TYPES = EnumUtil.getAllMatching(Material.class,
"FLOWING_LAVA", "LAVA", "STATIONARY_LAVA");
private static final Material PORTAL = EnumUtil.getMaterial("NETHER_PORTAL", "PORTAL");
private static final Material LIGHT = EnumUtil.getMaterial("LIGHT");
// The player can stand inside these materials
private static final Set<Material> HOLLOW_MATERIALS = EnumSet.noneOf(Material.class);
private static final Set<Material> TRANSPARENT_MATERIALS = EnumSet.noneOf(Material.class);
@@ -47,6 +48,11 @@ public final class LocationUtil {
// Barrier is transparent, but solid
HOLLOW_MATERIALS.remove(Material.BARRIER);
// Light blocks can be passed through and are not considered transparent for some reason
if (LIGHT != null) {
HOLLOW_MATERIALS.add(LIGHT);
}
}
static {
@@ -78,9 +84,13 @@ public final class LocationUtil {
}
public static Location getTarget(final LivingEntity entity) throws Exception {
return getTarget(entity, 300);
}
public static Location getTarget(final LivingEntity entity, final int maxDistance) throws Exception {
Block block = null;
try {
block = entity.getTargetBlock(TRANSPARENT_MATERIALS, 300);
block = entity.getTargetBlock(TRANSPARENT_MATERIALS, maxDistance);
} catch (final NoSuchMethodError ignored) {
} // failing now :(
if (block == null) {
@@ -89,8 +99,8 @@ public final class LocationUtil {
return block.getLocation();
}
public static boolean isBlockAboveAir(final World world, final int x, final int y, final int z) {
return y > world.getMaxHeight() || HOLLOW_MATERIALS.contains(world.getBlockAt(x, y - 1, z).getType());
public static boolean isBlockAboveAir(IEssentials ess, final World world, final int x, final int y, final int z) {
return y > ess.getWorldInfoProvider().getMaxHeight(world) || HOLLOW_MATERIALS.contains(world.getBlockAt(x, y - 1, z).getType());
}
public static boolean isBlockOutsideWorldBorder(final World world, final int x, final int z) {
@@ -125,7 +135,7 @@ public final class LocationUtil {
return z;
}
public static boolean isBlockUnsafeForUser(final IUser user, final World world, final int x, final int y, final int z) {
public static boolean isBlockUnsafeForUser(IEssentials ess, 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.getBase().getGameMode() == GameMode.SPECTATOR || user.isGodModeEnabled()) && user.getBase().getAllowFlight()) {
return false;
}
@@ -133,14 +143,14 @@ public final class LocationUtil {
if (isBlockDamaging(world, x, y, z)) {
return true;
}
if (isBlockAboveAir(world, x, y, z)) {
if (isBlockAboveAir(ess, world, x, y, z)) {
return true;
}
return isBlockOutsideWorldBorder(world, x, z);
}
public static boolean isBlockUnsafe(final World world, final int x, final int y, final int z) {
return isBlockDamaging(world, x, y, z) || isBlockAboveAir(world, x, y, z);
public static boolean isBlockUnsafe(IEssentials ess, final World world, final int x, final int y, final int z) {
return isBlockDamaging(world, x, y, z) || isBlockAboveAir(ess, world, x, y, z);
}
public static boolean isBlockDamaging(final World world, final int x, final int y, final int z) {
@@ -178,7 +188,7 @@ public final class LocationUtil {
public static Location getSafeDestination(final IEssentials ess, final IUser user, final Location loc) throws Exception {
if (user.getBase().isOnline() && (ess == null || !ess.getSettings().isAlwaysTeleportSafety()) && (user.getBase().getGameMode() == GameMode.CREATIVE || user.getBase().getGameMode() == GameMode.SPECTATOR || user.isGodModeEnabled())) {
if (shouldFly(loc) && user.getBase().getAllowFlight()) {
if (shouldFly(ess, loc) && user.getBase().getAllowFlight()) {
user.getBase().setFlying(true);
}
// ess can be null if old deprecated method is calling it.
@@ -188,14 +198,17 @@ public final class LocationUtil {
return loc;
}
}
return getSafeDestination(loc);
return getSafeDestination(ess, loc);
}
public static Location getSafeDestination(final Location loc) throws Exception {
public static Location getSafeDestination(IEssentials ess, final Location loc) throws Exception {
if (loc == null || loc.getWorld() == null) {
throw new Exception(tl("destinationNotSet"));
}
final World world = loc.getWorld();
final int worldMinY = ess.getWorldInfoProvider().getMinHeight(world);
final int worldLogicalY = ess.getWorldInfoProvider().getLogicalHeight(world);
final int worldMaxY = loc.getBlockY() < worldLogicalY ? worldLogicalY : ess.getWorldInfoProvider().getMaxHeight(world);
int x = loc.getBlockX();
int y = (int) Math.round(loc.getY());
int z = loc.getBlockZ();
@@ -206,42 +219,43 @@ public final class LocationUtil {
final int origX = x;
final int origY = y;
final int origZ = z;
while (isBlockAboveAir(world, x, y, z)) {
while (isBlockAboveAir(ess, world, x, y, z)) {
y -= 1;
if (y < 0) {
y = origY;
break;
}
}
if (isBlockUnsafe(world, x, y, z)) {
if (isBlockUnsafe(ess, world, x, y, z)) {
x = Math.round(loc.getX()) == origX ? x - 1 : x + 1;
z = Math.round(loc.getZ()) == origZ ? z - 1 : z + 1;
}
int i = 0;
while (isBlockUnsafe(world, x, y, z)) {
while (isBlockUnsafe(ess, world, x, y, z)) {
i++;
if (i >= VOLUME.length) {
x = origX;
y = origY + RADIUS;
y = NumberUtil.constrainToRange(origY + RADIUS, worldMinY, worldMaxY);
z = origZ;
break;
}
x = origX + VOLUME[i].x;
y = origY + VOLUME[i].y;
y = NumberUtil.constrainToRange(origY + VOLUME[i].y, worldMinY, worldMaxY);
z = origZ + VOLUME[i].z;
}
while (isBlockUnsafe(world, x, y, z)) {
while (isBlockUnsafe(ess, world, x, y, z)) {
y += 1;
if (y >= world.getMaxHeight()) {
if (y >= worldMaxY) {
x += 1;
break;
}
}
while (isBlockUnsafe(world, x, y, z)) {
while (isBlockUnsafe(ess, world, x, y, z)) {
y -= 1;
if (y <= 1) {
if (y <= worldMinY + 1) {
x += 1;
y = world.getHighestBlockYAt(x, z);
// Allow spawning at the top of the world, but not above the nether roof
y = Math.min(world.getHighestBlockYAt(x, z) + 1, worldMaxY);
if (x - 48 > loc.getBlockX()) {
throw new Exception(tl("holeInFloor"));
}
@@ -250,13 +264,14 @@ public final class LocationUtil {
return new Location(world, x + 0.5, y, z + 0.5, loc.getYaw(), loc.getPitch());
}
public static boolean shouldFly(final Location loc) {
public static boolean shouldFly(IEssentials ess, final Location loc) {
final World world = loc.getWorld();
final int x = loc.getBlockX();
int y = (int) Math.round(loc.getY());
final int z = loc.getBlockZ();
int count = 0;
while (LocationUtil.isBlockUnsafe(world, x, y, z) && y > -1) {
// Check whether more than 2 unsafe block are below player.
while (LocationUtil.isBlockUnsafe(ess, world, x, y, z) && y >= ess.getWorldInfoProvider().getMinHeight(world)) {
y--;
count++;
if (count > 2) {
@@ -264,7 +279,8 @@ public final class LocationUtil {
}
}
return y < 0;
// If not then check if player is in the void
return y < ess.getWorldInfoProvider().getMinHeight(world);
}
public static class Vector3D {
@@ -3,6 +3,8 @@ package com.earth2me.essentials.utils;
import org.bukkit.Bukkit;
import org.bukkit.DyeColor;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.Damageable;
import org.bukkit.material.MaterialData;
import java.lang.reflect.InvocationTargetException;
@@ -11,7 +13,6 @@ import java.util.EnumSet;
import java.util.Set;
public final class MaterialUtil {
public static final Material SPAWNER = EnumUtil.getMaterial("MOB_SPAWNER", "SPAWNER");
private static final Set<Material> BEDS;
private static final Set<Material> BANNERS;
@@ -129,20 +130,12 @@ public final class MaterialUtil {
return LEATHER_ARMOR.contains(material);
}
public static boolean isMobHead(final Material material, final int durability) {
if (MOB_HEADS.contains(material)) {
public static boolean isPlayerHead(final ItemStack stack) {
if (PLAYER_HEADS.contains(stack.getType())) {
return true;
}
return LEGACY_SKULLS.contains(material) && (durability != 3);
}
public static boolean isPlayerHead(final Material material, final int durability) {
if (PLAYER_HEADS.contains(material)) {
return true;
}
return LEGACY_SKULLS.contains(material) && durability == 3;
return VersionUtil.PRE_FLATTENING && LEGACY_SKULLS.contains(stack.getType()) && stack.getDurability() == 3;
}
public static boolean isPotion(final Material material) {
@@ -166,13 +159,35 @@ public final class MaterialUtil {
}
public static boolean isSkull(final Material material) {
return isPlayerHead(material, -1) || isMobHead(material, -1);
return PLAYER_HEADS.contains(material) || LEGACY_SKULLS.contains(material);
}
public static boolean isAir(final Material material) {
return material == Material.AIR || (VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_14_4_R01) && material.isAir());
}
public static int getDamage(final ItemStack stack) {
if (VersionUtil.PRE_FLATTENING) {
return stack.getDurability();
}
if (stack.getItemMeta() instanceof Damageable) {
return ((Damageable) stack.getItemMeta()).getDamage();
}
return 0;
}
public static void setDamage(final ItemStack stack, final int damage) {
if (VersionUtil.PRE_FLATTENING) {
stack.setDurability((short) damage);
} else {
if (stack.getItemMeta() instanceof Damageable) {
final Damageable damageable = (Damageable) stack.getItemMeta();
damageable.setDamage(damage);
stack.setItemMeta(damageable);
}
}
}
public static Material convertFromLegacy(final int id, final byte damage) {
for (final Material material : EnumSet.allOf(Material.class)) {
if (material.getId() == id) {
@@ -104,10 +104,26 @@ public final class NumberUtil {
return true;
}
public static boolean isLong(final String sLong) {
try {
Long.parseLong(sLong);
} catch (final NumberFormatException e) {
return false;
}
return true;
}
public static boolean isPositiveInt(final String sInt) {
if (!isInt(sInt)) {
return false;
}
return Integer.parseInt(sInt) > 0;
}
/**
* Backport from Guava.
*/
public static int constrainToRange(int value, int min, int max) {
return Math.min(Math.max(value, min), max);
}
}
@@ -34,8 +34,11 @@ public final class VersionUtil {
public static final BukkitVersion v1_16_5_R01 = BukkitVersion.fromString("1.16.5-R0.1-SNAPSHOT");
public static final BukkitVersion v1_17_R01 = BukkitVersion.fromString("1.17-R0.1-SNAPSHOT");
public static final BukkitVersion v1_17_1_R01 = BukkitVersion.fromString("1.17.1-R0.1-SNAPSHOT");
public static final BukkitVersion v1_18_2_R01 = BukkitVersion.fromString("1.18.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, v1_14_4_R01, v1_15_2_R01, v1_16_5_R01, v1_17_1_R01);
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, v1_14_4_R01, v1_15_2_R01, v1_16_5_R01, v1_17_1_R01, v1_18_2_R01);
public static final boolean PRE_FLATTENING = VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01);
private static final Map<String, SupportStatus> unsupportedServerClasses;
@@ -158,20 +161,22 @@ public final class VersionUtil {
}
public static final class BukkitVersion implements Comparable<BukkitVersion> {
private static final Pattern VERSION_PATTERN = Pattern.compile("^(\\d+)\\.(\\d+)\\.?([0-9]*)?(?:-pre(\\d))?(?:-?R?([\\d.]+))?(?:-SNAPSHOT)?");
private static final Pattern VERSION_PATTERN = Pattern.compile("^(\\d+)\\.(\\d+)\\.?([0-9]*)?(?:-pre(\\d))?(?:-rc(\\d+))?(?:-?R?([\\d.]+))?(?:-SNAPSHOT)?");
private final int major;
private final int minor;
private final int prerelease;
private final int preRelease;
private final int releaseCandidate;
private final int patch;
private final double revision;
private BukkitVersion(final int major, final int minor, final int patch, final double revision, final int prerelease) {
private BukkitVersion(final int major, final int minor, final int patch, final double revision, final int preRelease, final int releaseCandidate) {
this.major = major;
this.minor = minor;
this.patch = patch;
this.revision = revision;
this.prerelease = prerelease;
this.preRelease = preRelease;
this.releaseCandidate = releaseCandidate;
}
public static BukkitVersion fromString(final String string) {
@@ -185,18 +190,20 @@ public final class VersionUtil {
Preconditions.checkArgument(matcher.matches(), string + " is not in valid version format. e.g. 1.8.8-R0.1");
}
return from(matcher.group(1), matcher.group(2), matcher.group(3), matcher.groupCount() < 5 ? "" : matcher.group(5), matcher.group(4));
return from(matcher.group(1), matcher.group(2), matcher.group(3), matcher.group(6), matcher.group(4), matcher.group(5));
}
private static BukkitVersion from(final String major, final String minor, String patch, String revision, String prerelease) {
private static BukkitVersion from(final String major, final String minor, String patch, String revision, String preRelease, String releaseCandidate) {
if (patch == null || patch.isEmpty()) patch = "0";
if (revision == null || revision.isEmpty()) revision = "0";
if (prerelease == null || prerelease.isEmpty()) prerelease = "-1";
if (preRelease == null || preRelease.isEmpty()) preRelease = "-1";
if (releaseCandidate == null || releaseCandidate.isEmpty()) releaseCandidate = "-1";
return new BukkitVersion(Integer.parseInt(major),
Integer.parseInt(minor),
Integer.parseInt(patch),
Double.parseDouble(revision),
Integer.parseInt(prerelease));
Integer.parseInt(preRelease),
Integer.parseInt(releaseCandidate));
}
public boolean isHigherThan(final BukkitVersion o) {
@@ -232,7 +239,11 @@ public final class VersionUtil {
}
public int getPrerelease() {
return prerelease;
return preRelease;
}
public int getReleaseCandidate() {
return releaseCandidate;
}
@Override
@@ -248,12 +259,12 @@ public final class VersionUtil {
minor == that.minor &&
patch == that.patch &&
revision == that.revision &&
prerelease == that.prerelease;
preRelease == that.preRelease;
}
@Override
public int hashCode() {
return Objects.hashCode(major, minor, patch, revision, prerelease);
return Objects.hashCode(major, minor, patch, revision, preRelease, releaseCandidate);
}
@Override
@@ -262,8 +273,11 @@ public final class VersionUtil {
if (patch != 0) {
sb.append(".").append(patch);
}
if (prerelease != -1) {
sb.append("-pre").append(prerelease);
if (preRelease != -1) {
sb.append("-pre").append(preRelease);
}
if (releaseCandidate != -1) {
sb.append("-rc").append(releaseCandidate);
}
return sb.append("-R").append(revision).toString();
}
@@ -285,12 +299,18 @@ public final class VersionUtil {
} else if (patch > o.patch) {
return 1;
} else { // equal patch
if (prerelease < o.prerelease) {
if (preRelease < o.preRelease) {
return -1;
} else if (prerelease > o.prerelease) {
} else if (preRelease > o.preRelease) {
return 1;
} else { // equal prerelease
return Double.compare(revision, o.revision);
if (releaseCandidate < o.releaseCandidate) {
return -1;
} else if (releaseCandidate > o.releaseCandidate) {
return 1;
} else { // equal release candidate
return Double.compare(revision, o.revision);
}
}
}
}
@@ -0,0 +1,90 @@
package net.essentialsx.api.v2.events;
import com.earth2me.essentials.IUser;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
/**
* Called when a player accepts or denies a teleport.
*/
public class TeleportRequestResponseEvent extends Event implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private final net.ess3.api.IUser requestee;
private final net.ess3.api.IUser requester;
private final IUser.TpaRequest tpaRequest;
private final boolean accept;
private boolean canceled = false;
public TeleportRequestResponseEvent(net.ess3.api.IUser requestee, net.ess3.api.IUser requester, IUser.TpaRequest tpaRequest, boolean accept) {
this.requestee = requestee;
this.requester = requester;
this.tpaRequest = tpaRequest;
this.accept = accept;
}
/**
* Gets the user who is accepting/denying this teleport request.
* @return the user accepting/denying the request.
*/
public net.ess3.api.IUser getRequestee() {
return requestee;
}
/**
* Gets the user who submitted this teleport request.
* @return the user who sent the request.
*/
public net.ess3.api.IUser getRequester() {
return requester;
}
/**
* Gets information about this teleport request.
* @return the {@link com.earth2me.essentials.IUser.TpaRequest} object of this event.
*/
public IUser.TpaRequest getTpaRequest() {
return tpaRequest;
}
/**
* Whether or not the request has been accepted.
* @return true if accepted, false if denied.
*/
public boolean isAccept() {
return accept;
}
/**
* Whether or not the request has been denied.
* @return true if denied, false if accepted.
*/
public boolean isDeny() {
return !isAccept();
}
@Override
public boolean isCancelled() {
return canceled;
}
/**
* Sets whether or not to cancel this teleport request.
* Note that cancelling this event will not show a message to users about the cancellation.
* @param cancel whether or not to cancel this teleport request.
*/
@Override
public void setCancelled(boolean cancel) {
this.canceled = cancel;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
}
@@ -0,0 +1,46 @@
package net.essentialsx.api.v2.events;
import net.ess3.api.IUser;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import java.util.Collection;
/**
* Called when a user runs the /me command.
*/
public class UserActionEvent extends Event {
private static final HandlerList handlers = new HandlerList();
private final IUser user;
private final String message;
private final Collection<Player> recipients;
public UserActionEvent(IUser user, String message, Collection<Player> recipients) {
this.user = user;
this.message = message;
this.recipients = recipients;
}
public IUser getUser() {
return user;
}
public String getMessage() {
return message;
}
public Collection<Player> getRecipients() {
return recipients;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
}
@@ -23,7 +23,7 @@ public class WarpModifyEvent extends Event implements Cancellable {
/**
* @param user the {@link IUser} who is modifing the warp.
* @param warpName the name of the warp that's being altered.
* @param oldLocation the old location before being modified. Null if {@link WarpModifyCause#CREATE}.
* @param oldLocation the old location before being modified. Null if {@link WarpModifyCause#CREATE} or if the previous location's world is not loaded.
* @param newLocation the new location after being modified. Null if {@link WarpModifyCause#DELETE}.
* @param cause the cause of change.
*/
@@ -58,7 +58,7 @@ public class WarpModifyEvent extends Event implements Cancellable {
}
/**
* Gets the current location of the warp or null if it's being created.
* Gets the current location of the warp or null if it's being created or if the previous location's world is not loaded.
* @return The warps new location or null.
*/
public Location getOldLocation() {
+17
View File
@@ -593,6 +593,9 @@ repair-enchanted: true
# Warning: Mixing and overleveling some enchantments can cause issues with clients, servers and plugins.
unsafe-enchantments: false
# The maximum range from the player that the /tree and /bigtree commands can spawn trees.
tree-command-range-limit: 300
#Do you want Essentials to keep track of previous location for /back in the teleport listener?
#If you set this to true any plugin that uses teleport will have the previous location registered.
register-back-in-listener: false
@@ -698,6 +701,11 @@ jail-online-time: false
# Set to 0 for no timeout.
tpa-accept-cancellation: 120
# The maximum number of simultaneous tpa requests that can be pending for any player.
# Once past this threshold, old requests will instantly time out.
# Defaults to 5.
tpa-max-requests: 5
# Allow players to set hats by clicking on their helmet slot.
allow-direct-hat: true
@@ -913,6 +921,15 @@ chat:
# plots: "&dP&r"
# creative: "&eC&r"
# Whether players should be placed into shout mode by default.
shout-default: false
# Whether a player's shout mode should persist restarts.
persist-shout: false
# Whether chat questions should be enabled or not.
question-enabled: true
############################################################
# +------------------------------------------------------+ #
# | EssentialsX Protect | #
+91
View File
@@ -19293,6 +19293,96 @@
"pinkrecord": "music_disc_mellohi",
"pirecord": "music_disc_mellohi",
"record7": "music_disc_mellohi",
"music_disc_otherside": {
"material": "MUSIC_DISC_OTHERSIDE"
},
"15cd": "music_disc_otherside",
"15disc": "music_disc_otherside",
"15disk": "music_disc_otherside",
"15mcd": "music_disc_otherside",
"15mdisc": "music_disc_otherside",
"15mdisk": "music_disc_otherside",
"15mrecord": "music_disc_otherside",
"15musiccd": "music_disc_otherside",
"15musicdisc": "music_disc_otherside",
"15musicdisk": "music_disc_otherside",
"15musicrecord": "music_disc_otherside",
"15record": "music_disc_otherside",
"cavecd": "music_disc_otherside",
"cavedisc": "music_disc_otherside",
"cavedisk": "music_disc_otherside",
"cavemcd": "music_disc_otherside",
"cavemdisc": "music_disc_otherside",
"cavemdisk": "music_disc_otherside",
"cavemrecord": "music_disc_otherside",
"cavemusiccd": "music_disc_otherside",
"cavemusicdisc": "music_disc_otherside",
"cavemusicdisk": "music_disc_otherside",
"cavemusicrecord": "music_disc_otherside",
"caverecord": "music_disc_otherside",
"cd15": "music_disc_otherside",
"deepcd2": "music_disc_otherside",
"deepdisc2": "music_disc_otherside",
"deepdisk2": "music_disc_otherside",
"deepmcd2": "music_disc_otherside",
"deepmdisc2": "music_disc_otherside",
"deepmdisk2": "music_disc_otherside",
"deepmrecord2": "music_disc_otherside",
"deepmusiccd2": "music_disc_otherside",
"deepmusicdisc2": "music_disc_otherside",
"deepmusicdisk2": "music_disc_otherside",
"deepmusicrecord2": "music_disc_otherside",
"deeprecord2": "music_disc_otherside",
"disc15": "music_disc_otherside",
"disk15": "music_disc_otherside",
"lenaraineisstillawesome": "music_disc_otherside",
"mcd15": "music_disc_otherside",
"mdisc15": "music_disc_otherside",
"mdisk15": "music_disc_otherside",
"minecraft:music_disc_otherside": "music_disc_otherside",
"mrecord15": "music_disc_otherside",
"musiccd15": "music_disc_otherside",
"musicdisc15": "music_disc_otherside",
"musicdiscotherside": "music_disc_otherside",
"musicdisk15": "music_disc_otherside",
"musicrecord15": "music_disc_otherside",
"othercd": "music_disc_otherside",
"otherdisc": "music_disc_otherside",
"otherdisk": "music_disc_otherside",
"othermcd": "music_disc_otherside",
"othermdisc": "music_disc_otherside",
"othermdisk": "music_disc_otherside",
"othermrecord": "music_disc_otherside",
"othermusiccd": "music_disc_otherside",
"othermusicdisc": "music_disc_otherside",
"othermusicdisk": "music_disc_otherside",
"othermusicrecord": "music_disc_otherside",
"otherrecord": "music_disc_otherside",
"othersidecd": "music_disc_otherside",
"othersidedisc": "music_disc_otherside",
"othersidedisk": "music_disc_otherside",
"othersidemcd": "music_disc_otherside",
"othersidemdisc": "music_disc_otherside",
"othersidemdisk": "music_disc_otherside",
"othersidemrecord": "music_disc_otherside",
"othersidemusiccd": "music_disc_otherside",
"othersidemusicdisc": "music_disc_otherside",
"othersidemusicdisk": "music_disc_otherside",
"othersidemusicrecord": "music_disc_otherside",
"othersiderecord": "music_disc_otherside",
"record15": "music_disc_otherside",
"undercd": "music_disc_otherside",
"underdisc": "music_disc_otherside",
"underdisk": "music_disc_otherside",
"undermcd": "music_disc_otherside",
"undermdisc": "music_disc_otherside",
"undermdisk": "music_disc_otherside",
"undermrecord": "music_disc_otherside",
"undermusiccd": "music_disc_otherside",
"undermusicdisc": "music_disc_otherside",
"undermusicdisk": "music_disc_otherside",
"undermusicrecord": "music_disc_otherside",
"underrecord": "music_disc_otherside",
"music_disc_pigstep": {
"material": "MUSIC_DISC_PIGSTEP"
},
@@ -19323,6 +19413,7 @@
"darkrecord": "music_disc_pigstep",
"disc14": "music_disc_pigstep",
"disk14": "music_disc_pigstep",
"lenaraineisawesome": "music_disc_pigstep",
"mcd14": "music_disc_pigstep",
"mdisc14": "music_disc_pigstep",
"mdisk14": "music_disc_pigstep",
+4
View File
@@ -9,6 +9,10 @@
# {PLAYER} will show the player's displayname instead of username.
# '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.
#
# In addition, you can also organize your kits into separate files under the `kits` subdirectory.
# Essentials will treat all .yml files in the `kits` subdirectory as kits files, and will add any kits from those files along with the kits in `kits.yml`.
# Any file in the `kits` subdirectory must be formatted in the same way as this file. This allows you to define multiple kits in each file.
# For more information, visit http://wiki.ess3.net/wiki/Kits
kits:
tools:
@@ -126,7 +126,7 @@ cantReadGeoIpDB=Failed to read GeoIP database\!
cantSpawnItem=\u00a74You are not allowed to spawn the item\u00a7c {0}\u00a74.
cartographytableCommandDescription=Opens up a cartography table.
cartographytableCommandUsage=/<command>
chatTypeLocal=[L]
chatTypeLocal=\u00a73[L]
chatTypeSpy=[Spy]
cleaned=Userfiles Cleaned.
cleaning=Cleaning userfiles.
@@ -233,6 +233,18 @@ destinationNotSet=Destination not set\!
disabled=disabled
disabledToSpawnMob=\u00a74Spawning this mob was disabled in the config file.
disableUnlimited=\u00a76Disabled unlimited placing of\u00a7c {0} \u00a76for\u00a7c {1}\u00a76.
discordbroadcastCommandDescription=Broadcasts a message to the specified Discord channel.
discordbroadcastCommandUsage=/<command> <channel> <msg>
discordbroadcastCommandUsage1=/<command> <channel> <msg>
discordbroadcastCommandUsage1Description=Sends the given message to the specified Discord channel
discordbroadcastInvalidChannel=\u00a74Discord channel \u00a7c{0}\u00a74 does not exist.
discordbroadcastPermission=\u00a74You do not have permission to send messages to the \u00a7c{0}\u00a74 channel.
discordbroadcastSent=\u00a76Message sent to \u00a7c{0}\u00a76!
discordCommandDescription=Sends the discord invite link to the player.
discordCommandLink=\u00a76Join our Discord server at \u00a7c{0}\u00a76!
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
discordCommandUsage1Description=Sends the discord invite link to the player
discordCommandExecuteDescription=Executes a console command on the Minecraft server.
discordCommandExecuteArgumentCommand=The command to be executed
discordCommandExecuteReply=Executing command: "/{0}"
@@ -249,6 +261,8 @@ discordErrorLoggerNoPerms=Discord console logger has been disabled due to insuff
discordErrorNoGuild=Invalid or missing server ID! Please follow the tutorial in the config in order to setup the plugin.
discordErrorNoGuildSize=Your bot is not in any servers! Please follow the tutorial in the config in order to setup the plugin.
discordErrorNoPerms=Your bot cannot see or talk in any channel! Please make sure your bot has read and write permissions in all channels you wish to use.
discordErrorNoPrimary=You did not define a primary channel or your defined primary channel is invalid. Falling back to the default channel: #{0}.
discordErrorNoPrimaryPerms=Your bot cannot speak in your primary channel, #{0}. Please make sure your bot has read and write permissions in all channels you wish to use.
discordErrorNoToken=No token provided! Please follow the tutorial in the config in order to setup the plugin.
discordErrorWebhook=An error occurred while sending messages to your console channel\! This was likely caused by accidentally deleting your console webhook. This can usually by fixed by ensuring your bot has the "Manage Webhooks" permission and running "/ess reload".
discordLoggingIn=Attempting to login to Discord...
@@ -316,7 +330,7 @@ essentialsCommandUsage6=/<command> cleanup
essentialsCommandUsage6Description=Cleans up old userdata
essentialsCommandUsage7=/<command> homes
essentialsCommandUsage7Description=Manages user homes
essentialsCommandUsage8=/<command> dump [*] [config] [discord] [kits] [log]
essentialsCommandUsage8=/<command> dump [all] [config] [discord] [kits] [log]
essentialsCommandUsage8Description=Generates a server dump with the requested information
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
@@ -574,6 +588,9 @@ 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.
jailNotifyJailed=\u00a76Player\u00a7c {0} \u00a76jailed by \u00a7c{1}.
jailNotifyJailedFor=\u00a76Player\u00a7c {0} \u00a76jailed for\u00a7c {1}\u00a76by \u00a7c{2}\u00a76.
jailNotifySentenceExtended=\u00a76Player\u00a7c{0} \u00a76jail's time extended to \u00a7c{1} \u00a76by \u00a7c{2}\u00a76.
jailReleased=\u00a76Player \u00a7c{0}\u00a76 unjailed.
jailReleasedPlayerNotify=\u00a76You have been released\!
jailSentenceExtended=\u00a76Jail time extended to \u00a7c{0}\u00a76.
@@ -650,8 +667,9 @@ listCommandUsage1=/<command> [group]
listCommandUsage1Description=Lists all players on the server, or the given group if specified
listGroupTag=\u00a76{0}\u00a7r\:
listHiddenTag=\u00a77[HIDDEN]\u00a7r
listRealName=({0})
loadWarpError=\u00a74Failed to load warp {0}.
localFormat=[L]<{0}> {1}
localFormat=\u00a73[L] \u00a7r<{0}> {1}
localNoOne=
loomCommandDescription=Opens up a loom.
loomCommandUsage=/<command>
@@ -670,6 +688,8 @@ mailCommandUsage4=/<command> sendall <message>
mailCommandUsage4Description=Sends all players the given message
mailCommandUsage5=/<command> sendtemp <player> <expire time> <message>
mailCommandUsage5Description=Sends the specified player the given message which will expire in the specified time
mailCommandUsage6=/<command> sendtempall <expire time> <message>
mailCommandUsage6Description=Sends all players the given message which will expire in the specified time
mailDelay=Too many mails have been sent within the last minute. Maximum\: {0}
mailFormatNew=\u00a76[\u00a7r{0}\u00a76] \u00a76[\u00a7r{1}\u00a76] \u00a7r{2}
mailFormatNewTimed=\u00a76[\u00a7e\u26a0\u00a76] \u00a76[\u00a7r{0}\u00a76] \u00a76[\u00a7r{1}\u00a76] \u00a7r{2}
@@ -759,6 +779,7 @@ nearCommandUsage3Description=Lists all players within the default near radius of
nearCommandUsage4=/<command> <player> <radius>
nearCommandUsage4Description=Lists all players within the given radius of the specified player
nearbyPlayers=\u00a76Players nearby\:\u00a7r {0}
nearbyPlayersList={0}\u00a7f(\u00a7c{1}m\u00a7f)
negativeBalanceError=\u00a74User is not allowed to have a negative balance.
nickChanged=\u00a76Nickname changed.
nickCommandDescription=Change your nickname or that of another player.
@@ -812,8 +833,9 @@ noPlacePermission=\u00a74You do not have permission to place a block near that s
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 authorized to use question.
notAllowedToShout=\u00a74You are not authorized to shout.
notAllowedToLocal=\u00a74You don't have permission to speak in local chat.
notAllowedToQuestion=\u00a74You don't have permission to use question.
notAllowedToShout=\u00a74You don't have permission to shout.
notEnoughExperience=\u00a74You do not have enough experience.
notEnoughMoney=\u00a74You do not have sufficient funds.
notFlying=not flying
@@ -872,6 +894,14 @@ playerTempBanned=\u00a76Player \u00a7c{0}\u00a76 temporarily banned \u00a7c{1}\u
playerUnbanIpAddress=\u00a76Player\u00a7c {0} \u00a76unbanned IP\:\u00a7c {1}
playerUnbanned=\u00a76Player\u00a7c {0} \u00a76unbanned\u00a7c {1}
playerUnmuted=\u00a76You have been unmuted.
playtimeCommandDescription=Shows a player''s time played in game
playtimeCommandUsage=/<command> [player]
playtimeCommandUsage1=/<command>
playtimeCommandUsage1Description=Shows your time played in game
playtimeCommandUsage2=/<command> <player>
playtimeCommandUsage2Description=Shows the specified player''s time played in game
playtime=\u00a76Playtime\:\u00a7c {0}
playtimeOther=\u00a76Playtime of {1}\u00a76\:\u00a7c {0}
pong=Pong\!
posPitch=\u00a76Pitch\: {0} (Head angle)
possibleWorlds=\u00a76Possible worlds are the numbers \u00a7c0\u00a76 through \u00a7c{0}\u00a76.
@@ -995,14 +1025,17 @@ replyLastRecipientDisabledFor=\u00a76Replying to last message recipient \u00a7cd
replyLastRecipientEnabled=\u00a76Replying to last message recipient \u00a7cenabled\u00a76.
replyLastRecipientEnabledFor=\u00a76Replying to last message recipient \u00a7cenabled \u00a76for \u00a7c{0}\u00a76.
requestAccepted=\u00a76Teleport request accepted.
requestAcceptedAll=\u00a76Accepted \u00a7c{0} \u00a76pending teleport request(s).
requestAcceptedAuto=\u00a76Automatically accepted a teleport request from {0}.
requestAcceptedFrom=\u00a7c{0} \u00a76accepted your teleport request.
requestAcceptedFromAuto=\u00a7c{0} \u00a76accepted your teleport request automatically.
requestDenied=\u00a76Teleport request denied.
requestDeniedAll=\u00a76Denied \u00a7c{0} \u00a76pending teleport request(s).
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.
requestTimedOutFrom=\u00a74Teleport request from \u00a7c{0} \u00a74has timed out.
resetBal=\u00a76Balance has been reset to \u00a7c{0} \u00a76for all online players.
resetBalAll=\u00a76Balance has been reset to \u00a7c{0} \u00a76for all players.
rest=\u00a76You feel well rested.
@@ -1262,10 +1295,14 @@ tpacancelCommandUsage1=/<command>
tpacancelCommandUsage1Description=Cancels all your outstanding teleport requests
tpacancelCommandUsage2=/<command> <player>
tpacancelCommandUsage2Description=Cancels all your outstanding teleport request with the specified player
tpacceptCommandDescription=Accepts a teleport request.
tpacceptCommandDescription=Accepts teleport requests.
tpacceptCommandUsage=/<command> [otherplayer]
tpacceptCommandUsage1=/<command>
tpacceptCommandUsage1Description=Accepts an incoming teleport request
tpacceptCommandUsage1Description=Accepts the most recent teleport request
tpacceptCommandUsage2=/<command> <player>
tpacceptCommandUsage2Description=Accepts a teleport request from the specified player
tpacceptCommandUsage3=/<command> *
tpacceptCommandUsage3Description=Accepts all teleport requests
tpahereCommandDescription=Request that the specified player teleport to you.
tpahereCommandUsage=/<command> <player>
tpahereCommandUsage1=/<command> <player>
@@ -1278,10 +1315,14 @@ tpautoCommandDescription=Automatically accept teleportation requests.
tpautoCommandUsage=/<command> [player]
tpautoCommandUsage1=/<command> [player]
tpautoCommandUsage1Description=Toggles if tpa requests are auto accepted for yourself or another player if specified
tpdenyCommandDescription=Reject a teleport request.
tpdenyCommandDescription=Rejects teleport requests.
tpdenyCommandUsage=/<command>
tpdenyCommandUsage1=/<command>
tpdenyCommandUsage1Description=Rejects an incoming teleport request
tpdenyCommandUsage1Description=Rejects the most recent teleport request
tpdenyCommandUsage2=/<command> <player>
tpdenyCommandUsage2Description=Rejects a teleport request from the specified player
tpdenyCommandUsage3=/<command> *
tpdenyCommandUsage3Description=Rejects all teleport requests
tphereCommandDescription=Teleport a player to you.
tphereCommandUsage=/<command> <player>
tphereCommandUsage1=/<command> <player>
@@ -6,9 +6,12 @@ action=§5* {0} §5{1}
addedToAccount=§a{0} бяха добавени към вашият акаунт.
addedToOthersAccount=§a{0} бяха добавени към акаунта на {1}. Нов баланс\: {2}
adventure=приключенски
afkCommandDescription=Маркира ви като далеч-от-клавиятурата.
afkCommandDescription=Маркира ви като далеч-от-клавиатурата.
afkCommandUsage=/<command> [player/message...]
afkCommandUsage1=/<command> [message]
afkCommandUsage1Description=Активира вашия афк статус с опционална причина
afkCommandUsage2=/<command> <player> [message]
afkCommandUsage2Description=Активира афк статуса на специфичен играч с опционална причина
alertBroke=счупени\:
alertFormat=§3[{0}] §r {1} §6 {2} at\: {3}
alertPlaced=поставени\:
@@ -22,6 +25,7 @@ antiBuildPlace=§4Нямате право да поставяте§c {0} §4ту
antiBuildUse=§4Нямате право да използвате§c {0}§4.
antiochCommandDescription=Малка изненада за операторите.
antiochCommandUsage=/<command> [message]
anvilCommandDescription=Отваря наковалня.
anvilCommandUsage=/<command>
autoAfkKickReason=Вие бяхте изгонени поради повече от {0} минути бездействие.
autoTeleportDisabled=§6Вече не приемате заявки за телепортиране автоматично.
@@ -32,7 +36,9 @@ backAfterDeath=§6Използвайте командата /back, за да с
backCommandDescription=Телепортира ви до вашата локация преди tp/spawn/warp.
backCommandUsage=/<command> [player]
backCommandUsage1=/<command>
backCommandUsage1Description=Телепортира Ви до предишната локация
backCommandUsage2=/<command> <player>
backCommandUsage2Description=Телепортира специфичен играч до тяхната предишна локация
backOther=§6Върнахте§c {0}§6 до предишното им местоположение.
backupCommandDescription=Прави резервно копие, ако е конфигурирано.
backupCommandUsage=/<command>
@@ -45,22 +51,33 @@ balance=§aБаланс\:§c {0}
balanceCommandDescription=Показва текущия баланс на играч.
balanceCommandUsage=/<command> [player]
balanceCommandUsage1=/<command>
balanceCommandUsage1Description=Показва вашия текущ баланс
balanceCommandUsage2=/<command> <player>
balanceCommandUsage2Description=Показва баланса на специфичен играч
balanceOther=§aБалансът на {0}§a\:§c {1}
balanceTop=§6Топ богаташи ({0})
balanceTopLine={0}. {1}, {2}
balancetopCommandDescription=Показва топ играчите по баланс.
balancetopCommandUsage=/<command> [page]
balancetopCommandUsage1=/<command> [page]
balancetopCommandUsage1Description=Показва първата (или специфична) страница на играчите с най-висок баланс
banCommandDescription=Ограничава играч.
banCommandUsage=/<command> <player> [reason]
banCommandUsage1=/<command> <player> [reason]
banCommandUsage1Description=Ограничава специфичен играч с опционална причина
banExempt=§4Не можете да ограничите този играч.
banExemptOffline=§4Не можете да ограничавате офлайн играчи.
banFormat=§cВие бяхте ограничени\:\n§r{0}
banIpJoin=Вашият IP адрес е ограничен от този сървър. Причина\: {0}
banJoin=Вие сте ограничени от този сървър. Причина\: {0}
banipCommandDescription=Ограничава IP адрес.
banipCommandUsage=/<command> <address> [reason]
banipCommandUsage1=/<command> <address> [reason]
banipCommandUsage1Description=Ограничава специфичен ИП адрес с опционална причина
bed=§oлегло§r
bedMissing=§4Вашето легло е незададено, липсващо или блокирано.
bedNull=§mлегло§r
bedOffline=§4Не може да се телепортирате до леглата на офлйан играчи.
bedOffline=§4Не може да се телепортирате до леглата на офлайн играчи.
bedSet=§6Локация на легло е зададена\!
beezookaCommandDescription=Хвърля експлодираща пчела към твоя опонент.
beezookaCommandUsage=/<command>
@@ -69,12 +86,18 @@ bigTreeSuccess=§6Създадено е голямо дърво.
bigtreeCommandDescription=Създава голямо дърво към мястото, което гледате.
bigtreeCommandUsage=/<command> <tree|redwood|jungle|darkoak>
bigtreeCommandUsage1=/<command> <tree|redwood|jungle|darkoak>
bigtreeCommandUsage1Description=Създава голямо дърво със специфичен тип
blockList=§6EssentialsX предаде следните команди на други плъгини\:
blockListEmpty=§6EssentialsX не предава никакви команди на други плъгини.
bookAuthorSet=§6Авторът на книгата е зададен на {0}.
bookCommandDescription=Позволява отварянето и редактирането на запечатани книги.
bookCommandUsage=/<command> [title|author [name]]
bookCommandUsage1=/<command>
bookCommandUsage1Description=Заключва/Отключва книга с перо/подписана книга
bookCommandUsage2=/<command> author <author>
bookCommandUsage2Description=Задава автора на подписана книга
bookCommandUsage3=/<command> title <title>
bookCommandUsage3Description=Задава заглавието на подписана книга
bookLocked=§6Книгата е заключена.
bookTitleSet=§6Заглавието на книгата е зададено на {0}.
breakCommandDescription=Чупи блока към, който гледате.
@@ -83,12 +106,15 @@ broadcast=§r§6[§4Съобщение§6]§a {0}
broadcastCommandDescription=Изпраща съобщения до всички в сървъра.
broadcastCommandUsage=/<command> <msg>
broadcastCommandUsage1=/<command> <message>
broadcastCommandUsage1Description=Изпраща съобщение до всички в сървър
broadcastworldCommandDescription=Изпраща съобщение до всички в определен свят.
broadcastworldCommandUsage=/<command> <world> <msg>
broadcastworldCommandUsage1=/<command> <world> <msg>
broadcastworldCommandUsage1Description=Изпраща съобщение до всички в специфичния свят
burnCommandDescription=Запалва играч.
burnCommandUsage=/<command> <player> <seconds>
burnCommandUsage1=/<command> <player> <seconds>
burnCommandUsage1Description=Запалва специфициран играч за определено време секунди
burnMsg=§6Подпалихте§c {0} §6за§c {1} секунди§6.
cannotSellNamedItem=§6Не може да продавате надписани предмети.
cannotSellTheseNamedItems=§6Не може да продавате тези надписани предмети\: §4{0}
@@ -98,8 +124,8 @@ cantFindGeoIpDB=Няма намерена GeoIP база данни\!
cantGamemode=§4Нямате право да променяте режима си на {0}
cantReadGeoIpDB=Грешка при прочитането на GeoIP базата данни\!
cantSpawnItem=§4Нямате право да създадете предмета§c {0}§4.
cartographytableCommandDescription=Отваря картографска маса.
cartographytableCommandUsage=/<command>
chatTypeLocal=[L]
chatTypeSpy=[Шпионин]
cleaned=Потребителските файлове са изчистени.
cleaning=Изчистване на потребителските файлове.
@@ -108,25 +134,41 @@ clearInventoryConfirmToggleOn=§6Вече ще да бъдете помолен
clearinventoryCommandDescription=Изчиства всички предмети от инвентара ви.
clearinventoryCommandUsage=/<command> [player|*] [item[\:<data>]|*|**] [amount]
clearinventoryCommandUsage1=/<command>
clearinventoryCommandUsage1Description=Изчиства всички предмети от вашия инвентар
clearinventoryCommandUsage2=/<command> <player>
clearinventoryCommandUsage2Description=Изчиства всички предмети от инвентара на специфичен играч
clearinventoryCommandUsage3=/<command> <player> <item> [amount]
clearinventoryCommandUsage3Description=Изчиства всички (или специфичен брой) от даден предмет от инвентара на специфичен играч
clearinventoryconfirmtoggleCommandDescription=Включва дали да бъдете питани преди изтриването на ивентар.
clearinventoryconfirmtoggleCommandUsage=/<command>
commandArgumentOptional=§7
commandArgumentOr=§c
commandArgumentRequired=§e
commandCooldown=§cНе можете да пишете тази команда за {0}.
commandDisabled=§cКомандата§6 {0}§c е изключена.
commandFailed=Командата {0} беше неуспешна\:
commandHelpFailedForPlugin=Грешка при получаването на помощ за плъгина\: {0}
commandHelpLine1=§6Командна Помощ\: §f/{0}
commandHelpLine2=§6Описание\: §f{0}
commandHelpLine3=§6Употреба(и);
commandHelpLine4=§6Алиас(и)\: §f{0}
commandHelpLineUsage={0} §6- {1}
commandNotLoaded=§4Командата {0} е грешно заредена.
compassBearing=§6Посока\: {0} ({1} градуса).
compassCommandDescription=Описва текущото ви държание.
compassCommandUsage=/<command>
condenseCommandDescription=Кондензира предметите в по-компактни блокове.
condenseCommandUsage=/<command> [item]
condenseCommandUsage1=/<command>
condenseCommandUsage1Description=Кондензира всички предмети от вашия инвентар
condenseCommandUsage2Description=Кондензира специфицирания предмет от вашия инвентар
configFileMoveError=Грешка при прехвърлянето на config.yml в архива.
configFileRenameError=Грешка при преименуването на временния файл към config.yml.
confirmClear=§7За да §lпотвърдите§7 изчистването на инвентара, повторете командата\: §6{0}
confirmPayment=§7За да §lПОТВЪРДИТЕ§7 заплащането на §6{0}§7, моля повторете командата\: §6{1}
connectedPlayers=§6Свързани играчи§r
connectionFailed=Неуспешно отваряне на връзка.
consoleName=Конзола
cooldownWithMessage=§4Изчакване\: {0}
coordsKeyword={0}, {1}, {2}
couldNotFindTemplate=§4Не може да се намери шаблон {0}
@@ -134,9 +176,11 @@ createdKit=§6Създадохте kit §c{0} §6с §c{1} §6употреби
createkitCommandDescription=Създава кит от играта\!
createkitCommandUsage=/<command> <kitname> <delay>
createkitCommandUsage1=/<command> <kitname> <delay>
createkitCommandUsage1Description=Създава кит с дадено име и интервал
createKitFailed=§4Грешка при създаването на kit {0}.
createKitSeparator=§m-----------------------
createKitSuccess=§6Създаден кит\: §f{0}\n§6Интервал\: §f{1}\n§6Връзка\: §f{2}\n§6Копирайте съдържанието от връзката отгоре във вашият kits.yml.
createKitUnsupported=§4Предметна NBT сериализация е включена, но този сървър не използва Paper 1.15.2+. Връщане към стандартна предметна сериализация.
creatingConfigFromTemplate=Създаване на конфигурация от шаблон\: {0}
creatingEmptyConfig=Създаване на празна конфигурация\: {0}
creative=творчески
@@ -147,22 +191,33 @@ customtextCommandUsage=/<alias> - Определете в bukkit.yml
day=ден
days=дни
defaultBanReason=Вие бяхте ограничени от този сървър\!
deletedHomes=Всички домове са изтрити.
deletedHomesWorld=Всички домове в {0} са изтрити.
deleteFileError=Не може да бъде изтрит файлът\: {0}
deleteHome=§6Домът§c {0} §6беше премахнат.
deleteJail=§6Затворът§c {0} §6беше премахнат.
deleteKit=§6Комплектът§c {0} §6беше премахнат.
deleteWarp=§6Точката за телепортиране§c {0} §6беше премахната.
deletingHomes=Изтриване на всички домове...
deletingHomesWorld=Изтриване на всички домове в {0}...
delhomeCommandDescription=Премахва дом.
delhomeCommandUsage=/<command> [player\:]<name>
delhomeCommandUsage1=/<command> <name>
delhomeCommandUsage1Description=Изтрива ваш дом с определено име
delhomeCommandUsage2=/<command> <player>\:<name>
delhomeCommandUsage2Description=Изтрива дом с определено име на специфичен играч
deljailCommandDescription=Премахва затвор.
deljailCommandUsage=/<command> <jailname>
deljailCommandUsage1=/<command> <jailname>
deljailCommandUsage1Description=Изтрива затвор с дадено име
delkitCommandDescription=Изтрива посочен кит.
delkitCommandUsage=/<command> <kit>
delkitCommandUsage1=/<command> <kit>
delkitCommandUsage1Description=Изтрива кит с дадено име
delwarpCommandDescription=Изтрива посочен warp.
delwarpCommandUsage=/<command> <warp>
delwarpCommandUsage1=/<command> <warp>
delwarpCommandUsage1Description=Изтрива уарп с дадено име
deniedAccessCommand=§c{0} §4беше отказан достъп до командата.
denyBookEdit=§4Не можете да отключите тази книга.
denyChangeAuthor=§4Не можете да промените авторът на тази книга.
@@ -176,6 +231,24 @@ destinationNotSet=Дестинацията не е зададена\!
disabled=изключен
disabledToSpawnMob=§4Размножаването на това същество е изключено в конфигурационния файл.
disableUnlimited=§6Изключихте безбройното слагане на §c {0} §6за {1}.
discordbroadcastCommandDescription=Изпраща съобщение до посочен канал в Дискорд.
discordbroadcastCommandUsage=/<command> <channel> <msg>
discordbroadcastCommandUsage1=/<command> <channel> <msg>
discordbroadcastCommandUsage1Description=Изпраща дадено съобщение до посочен канал в Дискорд
discordbroadcastInvalidChannel=§4Дискорд канала §c{0}§4 не съществува.
discordbroadcastPermission=§4Нямаш право да изпраща съобщения до канала §c{0}§4.
discordbroadcastSent=§6Съобщението е изпратно до §c{0}§6\!
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
discordCommandExecuteDescription=Изпълнява конзолна команда в Minecraft сървъра.
discordCommandExecuteArgumentCommand=Командата, която трябва да бъде изпълнена
discordCommandExecuteReply=Изпълнява се команда\: "/{0}"
discordCommandListDescription=Показва списък с онлайн потребителите.
discordCommandListArgumentGroup=Конкретна група, чрез която да се намали лимита на търсенето
discordCommandMessageDescription=Изпраща съобщение до играч в Minecraft сървъра.
discordCommandMessageArgumentUsername=Играча, до който да се изпрати съобщението
discordErrorCommandDisabled=Тази команда е изключена\!
discordLoggingInDone=Успешно сте влезли като {0}
disposal=Кошче
disposalCommandDescription=Отваря преносимо меню за изхвърляне.
disposalCommandUsage=/<command>
@@ -205,14 +278,28 @@ errorCallingCommand=Грешка при изпълняването на кома
errorWithMessage=§cГрешка\:§4 {0}
essentialsCommandDescription=Презарежда essentials.
essentialsCommandUsage=/<command>
essentialsCommandUsage7=/<command> homes
essentialsCommandUsage7Description=Управлява домовете на потребители
essentialsCommandUsage8=/<command> dump [all] [config] [discord] [kits] [log]
essentialsCommandUsage8Description=Генерира сървърен дъмп с поисканата информация
essentialsHelp1=Файлът е повреден и Essentials не може да го отвори. Essentials се изключва. Ако не можете да поправите сами, отидете на http\://tiny.cc/EssentialsChat
essentialsHelp2=Файлът е повреден и Essentials не може да го отвори. Essentials се изключва. Ако не можете да поправите сами или напишете /essentialshelp в играта, или отидете на http\://tiny.cc/EssentialsChat
essentialsReload=§6Essentials е презареден§c {0}.
exp=§c{0} §6има§c {1} §6опит (ниво§c {2}§6) и им трябва§c {3} §6опит за да вдигнат ниво.
expCommandDescription=Дай, сложи, ресетни, или виж опита на определен играч.
expCommandUsage=/<command> [reset|show|set|give] [playername [amount]]
expCommandUsage1Description=Дава на определен играч специфичен брой опит
expCommandUsage2=/<command> set <playername> <amount>
expCommandUsage2Description=Задава опита на определен играч до специфичен брой
expCommandUsage3=/<command> show <playername>
expCommandUsage4Description=Показва броя опит на определен играч
expCommandUsage5=/<command> reset <playername>
expCommandUsage5Description=Ресетва опита на определен играч на 0
expSet=§c{0} §6сега има§c {1} §6опит.
extCommandDescription=Изгасява играчи.
extCommandUsage=/<command> [player]
extCommandUsage1=/<command> [player]
extCommandUsage1Description=Угасете се (от огън) или друг специфичен играч
extinguish=§6Вие се изгасихте.
extinguishOthers=§6Изгасихте {0}§6.
failedToCloseConfig=Грешка при затварянето на конфигурация {0}.
@@ -223,14 +310,23 @@ feed=§6Вашият апетит беше заситен.
feedCommandDescription=Засища глада.
feedCommandUsage=/<command> [player]
feedCommandUsage1=/<command> [player]
feedCommandUsage1Description=Напълно засища апетита ви или този на друг специфичен играч
feedOther=§6Заситихте апетита на §c{0}§6.
fileRenameError=Грешка при реименуването на файла {0}\!
fireballCommandDescription=Хвърля огнено кълбо или друг снаряд.
fireballCommandUsage=/<command> [fireball|small|large|arrow|skull|egg|snowball|expbottle|dragon|splashpotion|lingeringpotion|trident] [speed]
fireballCommandUsage1=/<command>
fireballCommandUsage1Description=Хвърля нормално огнено кълбо от вашата локация
fireballCommandUsage2=/<command> <fireball|small|large|arrow|skull|egg|snowball|expbottle|dragon|splashpotion|lingeringpotion|trident> [speed]
fireballCommandUsage2Description=Хвърля специфичен снаряд от вашата локация, с опционална скорост
fireworkColor=§4Бяха въведени невалидни параметри на заряд, първо трябва да се въведе цвят.
fireworkCommandDescription=Позволява ви да модифицирате стак от фойерверки.
fireworkCommandUsage=/<command> <<meta param>|power [amount]|clear|fire [amount]>
fireworkCommandUsage1=/<command> clear
fireworkCommandUsage1Description=Изчиства всички ефекти от фойерверката, която държите
fireworkCommandUsage2=/<command> power <amount>
fireworkCommandUsage2Description=Задава силата на фойерверката, която държите
fireworkCommandUsage3=/<command> fire [amount]
fireworkEffectsCleared=§6Бяха премахнати всички ефекти от това което държите.
fireworkSyntax=§6Параметри за фойерверк\:§c color\:<color> [fade\:<цвят>] [shape\:<форма>] [effect\:<ефект>]\n§6За да използвате няколко цвята/ефекта, разделете стойностите със запетая\: §cred,blue,pink\n§6Форми\:§c star, ball, large, creeper, burst §6Ефекти\:§c trail, twinkle.
flyCommandUsage=/<command> [player] [on|off]
@@ -257,6 +353,7 @@ getposCommandUsage=/<command> [player]
getposCommandUsage1=/<command> [player]
giveCommandDescription=Дава предмет на играч.
giveCommandUsage=/<command> <player> <item|numeric> [amount [itemmeta...]]
giveCommandUsage1=/<command> <player> <item> [amount]
geoipCantFind=§6Играчът §c{0} §6идва от §aнеизвестна държава§6.
geoIpUrlEmpty=Линкът за изтегляне на GeoIP е празен.
geoIpUrlInvalid=Линкът за изтегляне на GeoIP е невалиден.
@@ -302,16 +399,20 @@ holdBook=§4Не държите книга в която може да се пи
holdFirework=§4Трябва да държите фойерверк, за да му добавите ефект.
holdPotion=§4Трябва да държите отвара, за да и приложите ефект.
holeInFloor=§4Има дупка в пода\!
homeCommandDescription=Телепортира ви до вашият дом.
homeCommandDescription=Телепортира ви до вашия дом.
homeCommandUsage=/<command> [player\:][name]
homeCommandUsage1=/<command> <name>
homeCommandUsage2=/<command> <player>\:<name>
homes=§6Домове\:§r {0}
homeConfirmation=§6Вече имате дом на име §c{0}§6\!\nЗа да пренапишете вашият съществуващ дом, моля напишете командата отново.
homeConfirmation=§6Вече имате дом на име §c{0}§6\!\nЗа да пренапишете вашия съществуващ дом, моля напишете командата отново.
homeSet=§6Вече имате дом на тази локация.
hour=час
hours=часа
iceCommandUsage=/<command> [player]
iceCommandUsage1=/<command>
iceCommandUsage1Description=Изтудява ви
iceCommandUsage2=/<command> <player>
iceCommandUsage3Description=Изтудява всички онлайн играчи
ignoreCommandDescription=Игнорирайте или не игнорирайте други играчи.
ignoreCommandUsage=/<command> <player>
ignoreCommandUsage1=/<command> <player>
@@ -357,6 +458,7 @@ itemId=§6Номер\:§c {0}
itemloreClear=§6Изчистихте значението на този предмет.
itemloreCommandDescription=Редактирайте значението на предмет.
itemloreCommandUsage=/<command> <add/set/clear> [text/line] [text]
itemloreCommandUsage3=/<command> clear
itemloreInvalidItem=§4Трябва да държите предмет, за да редактирате неговото значение.
itemloreNoLine=§4Предмета, който държите няма текст със значение на линия §c{0}§4.
itemloreNoLore=§4Предмета, който държите няма никакви тестове със значение.
@@ -364,6 +466,7 @@ itemMustBeStacked=§4Предметите трябва да бъдат търг
itemNames=§6Кратки имена на предметите\:§r {0}
itemnameClear=§6Изчистихте името на предмета, който държите.
itemnameCommandUsage1=/<command>
itemnameCommandUsage2=/<command> <name>
itemnameInvalidItem=§cТрябва да държите предмет, за да го преименувате.
itemnameSuccess=§6Преименувахте предмета, който държите на "§c{0}§6".
itemNotEnough1=§4Нямате достатъчно от този предмет, за да продавате.
@@ -420,10 +523,10 @@ lightningUse=§6Ударихте§c {0}§6 с мълния.
listAfkTag=§7[Неактивен]§r
listAmount=§6Има §c{0}§6 от максимум §c{1}§6 играчи онлайн.
listAmountHidden=§6Има §c{0}§6/§c{1}§6 от максимум §c{2}§6 онлайн играча.
listCommandDescription=Показва всички онлайн играчи.
listGroupTag=§6{0}§r\:
listHiddenTag=§7[СКРИТ]§r
loadWarpError=§4Грешка при зареждането на уарп {0}.
localFormat=[L]<{0}> {1}
loomCommandUsage=/<command>
mailClear=§6За да изчистите пощата си, напишете§c /mail clear§6.
mailCleared=§6Пощата ви е почистена\!
@@ -439,6 +542,9 @@ maxHomes=§4Не можете да имате повече от§c {0} §4дом
maxMoney=§4Тази транзакция ще надвиши лимитът на сметката за този акаунт.
mayNotJail=§4Не можете да затворите този играч\!
mayNotJailOffline=§4Не може да затворите играчи извън линия.
meCommandUsage1Description=Описва действие
meSender=мен
meRecipient=мен
minimumPayAmount=§cМинималната сума която може да платите е {0}.
minute=минута
minutes=минути
@@ -477,7 +583,9 @@ muteNotify=§c{0} §6заглуши §c{1}§6.
muteNotifyFor=§c{0} §6заглуши §c{1}§6 за§c {2}§6.
muteNotifyForReason=§c{0} §6заглуши играча §c{1}§6 за§c {2}§6. §6Причина\: §c{3}
muteNotifyReason=§c{0} §6заглуши играча§c{1}§6. §6Причина\: §c{2}
nearCommandDescription=Показва играчите наблизко или около играчът.
nearCommandUsage1=/<command>
nearCommandUsage2Description=Показва всички играчи с даденият радиус от вас
nearCommandUsage3=/<command> <player>
nearbyPlayers=§6Играчи наблизо\:§r {0}
negativeBalanceError=§4Играчът няма право да има негативен баланс.
@@ -521,8 +629,6 @@ noPlacePermission=§4Нямате права да поставяте блокч
noPotionEffectPerm=§4Нямате право да прилагате ефект §c{0} §4на тази отвара.
noPowerTools=§6Нямате предмети със зададени команди.
notAcceptingPay=§4{0} §4не приема плащания.
notAllowedToQuestion=§4Нямате право да използвате въпросителен знак.
notAllowedToShout=§4Нямате право да крещите.
notEnoughExperience=§4Нямате достатъчно опит.
notEnoughMoney=§4Нямате достатъчно средства.
notFlying=не лети
@@ -567,9 +673,13 @@ playerTempBanned=§6Играчът §c{0}§6 беше временно банн
playerUnbanIpAddress=§6Играчът§c {0} §6премахна ограничението на IP адрес\: {1}
playerUnbanned=§6Играчът§c {0} §6премахна ограничението на§c {1}
playerUnmuted=§6Вие бяхте отглушени.
playtimeCommandUsage=/<command> [player]
playtimeCommandUsage1=/<command>
playtimeCommandUsage2=/<command> <player>
pong=Понг\!
posPitch=§6Височина\: {0} (Посока на главата)
possibleWorlds=§6Възможни светове са номерата §c0§6 през §c{0}§6.
potionCommandUsage1=/<command> clear
posX=§6X\: {0} (+Изток <-> -Запад)
posY=§6Y\: {0} (+Нагоре <-> -Надолу)
posYaw=§6Yaw\: {0} (Въртене)
@@ -623,6 +733,7 @@ removed=§6Премахнати§c {0} §6същества.
repair=§6Вие успешно поправихте вашите\: §c{0}§6.
repairAlreadyFixed=§4Не е нужна поправка за този предмет.
repairCommandUsage1=/<command>
repairCommandUsage1Description=Поправя държаният предмет
repairEnchanted=§4Не можете да поправяте енчантати предмети.
repairInvalidType=§4Този предмет не може да бъде поправен.
repairNone=§4Няма предмети които се нуждаят от поправка.
@@ -660,6 +771,8 @@ serverUnsupported=Имате неподдържана версия на сърв
setBal=§aВашият баланс беше зададен на {0}.
setBalOthers=§aЗададохте баланса на {0}§a на {1}.
setSpawner=§6Променихте вида на размножителя на§c {0}§6.
sethomeCommandUsage1=/<command> <name>
sethomeCommandUsage2=/<command> <player>\:<name>
setjailCommandUsage=/<command> <jailname>
setjailCommandUsage1=/<command> <jailname>
setwarpCommandUsage=/<command> <warp>
@@ -676,6 +789,7 @@ south=Ю
southWest=ЮЗ
skullChanged=§6Черепът е променен на §c{0}§6.
skullCommandUsage1=/<command>
skullCommandUsage1Description=Вземи собствената си глава
skullCommandUsage2=/<command> <player>
slimeMalformedSize=§4Неправилна големина.
smithingtableCommandUsage=/<command>
@@ -751,6 +865,7 @@ tpacancelCommandUsage=/<command> [player]
tpacancelCommandUsage1=/<command>
tpacancelCommandUsage2=/<command> <player>
tpacceptCommandUsage1=/<command>
tpacceptCommandUsage2=/<command> <player>
tpahereCommandUsage=/<command> <player>
tpahereCommandUsage1=/<command> <player>
tpallCommandUsage=/<command> [player]
@@ -759,6 +874,7 @@ tpautoCommandUsage=/<command> [player]
tpautoCommandUsage1=/<command> [player]
tpdenyCommandUsage=/<command>
tpdenyCommandUsage1=/<command>
tpdenyCommandUsage2=/<command> <player>
tphereCommandUsage=/<command> <player>
tphereCommandUsage1=/<command> <player>
tpoCommandUsage1=/<command> <player>
@@ -814,6 +930,7 @@ userJailed=§6Вие бяхте затворени\!
userUnknown=§4Внимание\: Играчът ''§c{0}§4'' никога не е влизал в сървъра.
usingTempFolderForTesting=Използване на временна папка за тестване\:
vanish=§6Невидимост за {0}§6\: {1}
vanishCommandDescription=Скрий себе си от другите играчи.
vanishCommandUsage=/<command> [player] [on|off]
vanishCommandUsage1=/<command> [player]
vanished=§6Сега сте напълно невидим за нормалните играчи и скрит от командите в сървъра.
@@ -824,10 +941,14 @@ versionOutputUnsupported=§d{0} §6версия\: §d{1}
versionOutputUnsupportedPlugins=§6Имате §dнеподдържани плъгини§6\!
versionMismatch=§4Несъвпадение на версията\! Моля обновете {0} на същата версия.
versionMismatchAll=§4Несъвпадение на версията\! Моля обновете всички Essentials.jar файлове {0} на същата версия.
versionReleaseNewLink=§4Свали го от тук\:§c {0}
voiceSilenced=§6Вие бяхте заглушени\!
voiceSilencedTime=§6Вие бяхте заглушени за {0}\!
voiceSilencedReason=§6Вие бяхте заглушени\! §6Причина\: §c{0}
voiceSilencedReasonTime=§6Вие бяхте заглушени за {0}\! Причина\: §c{1}
walking=вървене
warpCommandUsage=/<command> <pagenumber|warp> [player]
warpCommandUsage1=/<command> [page]
warpDeleteError=§4Проблем при изтриването на файла на уарпа.
warpinfoCommandUsage=/<command> <warp>
warpinfoCommandUsage1=/<command> <warp>
@@ -853,6 +974,7 @@ whoisAFKSince=§6 - Неактивен/на\:§r {0} (От {1})
whoisBanned=§6 - Ограничен/а\:§r {0}
whoisCommandDescription=Определя потребителското име зад псевдоним.
whoisCommandUsage1=/<command> <player>
whoisCommandUsage1Description=Дава основна информация за указаният потребител
whoisExp=§6 - Опит\:§r {0} (Ниво {1})
whoisFly=§6 - Летателен режим\:§r {0} ({1})
whoisSpeed=Скорост
@@ -878,6 +1000,7 @@ workbenchCommandUsage=/<command>
worldCommandDescription=Превключвате между светове.
worldCommandUsage=/<command> [world]
worldCommandUsage1=/<command>
worldCommandUsage2Description=Телепортира на твойта локация в даден свят
worth=§aСтак от {0} струва §c{1}§a ({2} предмет(а) по {3} всеки)
worthMeta=§aСтак от {0} с метаданни на {1} струва §c{2}§a ({3} предмет(а) по {4} всеки)
worthSet=§6Цената е зададена
@@ -126,7 +126,7 @@ cantReadGeoIpDB=Nepodařilo se načíst GeoIP databázi\!
cantSpawnItem=§4Nemáš dovoleno vytvořit předmět§c {0}§4.
cartographytableCommandDescription=Otevře kartografický stůl.
cartographytableCommandUsage=/<command>
chatTypeLocal=[L]
chatTypeLocal=§3[L]
chatTypeSpy=[Špeh]
cleaned=Uživatelské soubory vyčištěny.
cleaning=Čištění uživatelských souborů.
@@ -143,6 +143,7 @@ clearinventoryCommandUsage3Description=Vymaže všechny zadané předměty (nebo
clearinventoryconfirmtoggleCommandDescription=Přepíná, zda je třeba potvrzovat vyprázdnění inventáře.
clearinventoryconfirmtoggleCommandUsage=/<command>
commandArgumentOptional=§7
commandArgumentOr=§c
commandArgumentRequired=§e
commandCooldown=§cTento příkaz můžete použít až za {0}.
commandDisabled=§cPříkaz§6 {0}§cje vypnut.
@@ -205,7 +206,7 @@ delhomeCommandDescription=Odstraní domov.
delhomeCommandUsage=/<command> [hráč\:]<název>
delhomeCommandUsage1=/<command> <název>
delhomeCommandUsage1Description=Odstraní domov se zadaným jménem
delhomeCommandUsage2=/<command> <player>\:<name>
delhomeCommandUsage2=/<command> <hráč>\:<název>
delhomeCommandUsage2Description=Odstraní uvedený domov zadaného hráče
deljailCommandDescription=Odstraní vězení.
deljailCommandUsage=/<command> <název_vězení>
@@ -214,11 +215,11 @@ deljailCommandUsage1Description=Odstraní vězení se zadaným jménem
delkitCommandDescription=Odstraní zadanou sadu.
delkitCommandUsage=/<command> <sada>
delkitCommandUsage1=/<command> <sada>
delkitCommandUsage1Description=Smaže kit s daným názvem
delkitCommandUsage1Description=Smaže sadu se zadaným názvem
delwarpCommandDescription=Odstraní zadaný warp.
delwarpCommandUsage=/<command> <warp>
delwarpCommandUsage1=/<command> <warp>
delwarpCommandUsage1Description=Smaže warp s daným názvem
delwarpCommandUsage1Description=Smaže warp se zadaným názvem
deniedAccessCommand=§4Hráči§c {0} §4byl odepřen přístup k příkazu.
denyBookEdit=§4Tuto knihu nemůžeš odemknout.
denyChangeAuthor=§4Autora této knihy nemůžeš změnit.
@@ -232,6 +233,18 @@ destinationNotSet=Cíl není nastaven\!
disabled=vypnuto
disabledToSpawnMob=§4Vyvolání tohoto stvoření je zakázáno v konfiguračním souboru.
disableUnlimited=§6Neomezené pokládání§c {0} §6bylo vypnuto pro hráče §c{1}§6.
discordbroadcastCommandDescription=Vyšle oznámení na zadaný kanál Discordu.
discordbroadcastCommandUsage=/<command> <kanál> <zpráva>
discordbroadcastCommandUsage1=/<command> <kanál> <zpráva>
discordbroadcastCommandUsage1Description=Odešle zprávu na zadaný kanál na Discordu
discordbroadcastInvalidChannel=§4Kanál na Discordu§c{0}§4 neexistuje.
discordbroadcastPermission=§4Nemáš oprávnění posílat zprávy na kanál §c{0}§4.
discordbroadcastSent=§6Zpráva odeslána na kanál §c{0}§6\!
discordCommandDescription=Zašle hráči pozvánku na Discord.
discordCommandLink=§6Připoj se k našemu Discord serveru na §c{0}§6\!
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
discordCommandUsage1Description=Zašle hráči odkaz s pozvánkou na Discord
discordCommandExecuteDescription=Provede příkaz konzole na Minecraft serveru.
discordCommandExecuteArgumentCommand=Příkaz, který se má provést
discordCommandExecuteReply=Provádění příkazu\: „/{0}“
@@ -248,6 +261,8 @@ discordErrorLoggerNoPerms=Protokolování konzole na Discord bylo zakázáno z d
discordErrorNoGuild=Neplatné nebo chybějící ID serveru\! Při nastavení zásuvného modulu postupujte podle návodu v konfiguraci.
discordErrorNoGuildSize=Tvůj bot není na žádném serveru\! Při nastavení zásuvného modulu postupujte dle návodu v konfiguraci.
discordErrorNoPerms=Váš bot nemůže vidět žádný kanál ani na žádném kanálu mluvit\! Ujistěte se, že váš bot má oprávnění ke čtení a zápisu ve všech kanálech, které chcete používat.
discordErrorNoPrimary=Nedefinovali jste primární kanál nebo definovaný primární kanál je neplatný. Návrat zpět na výchozí kanál\: \#{0}.
discordErrorNoPrimaryPerms=Váš bot nemůže mluvit ve vašem primárním kanálu \#{0}. Ujistěte se, že váš bot má oprávnění ke čtení a zápisu ve všech kanálech, které chcete používat.
discordErrorNoToken=Nebyl zadán žádný token\! Chcete-li nastavit zásuvný modul, postupujte podle návodu v konfiguraci.
discordErrorWebhook=Došlo k chybě při odesílání zpráv do kanálu konzole\! To bylo pravděpodobně způsobeno omylem smazáným webovým háčkem konzole. To lze obvykle opravit tak, že zajistíte, aby váš bot měl oprávnění „Správa háčků webhook“ a pak proveďte „/ess reload“.
discordLoggingIn=Pokouším se přihlásit do Discordu...
@@ -260,25 +275,31 @@ disposalCommandUsage=/<command>
distance=§6Vzdálenost\: {0}
dontMoveMessage=§6Teleport bude zahájen za§c {0}§6. Nehýbej se.
downloadingGeoIp=Stahuje se GeoIP databáze... může to chvilku trvat (země\: 1,7 MB, město\: 30 MB)
dumpConsoleUrl=Byl vytvořen výpis serveru\: §c{0}
dumpCreating=§6Vytváří se výpis serveru...
dumpDeleteKey=§6Pokud chceš odstranit tento výpis později, použij pro odstranění následující klíč\: §c{0}
dumpError=§4Chyba při vytváření výpisu §c{0}§4.
dumpErrorUpload=§4Chyba při nahrávání §c{0}§4\: §c{1}
dumpUrl=§6Vytvořen výpis serveru\: §c{0}
duplicatedUserdata=Duplicitní uživatelská data\: {0} a {1}.
durability=§6U tohoto nástroje zbývá ještě §c{0}§6 použití.
east=V
ecoCommandDescription=Spravuje ekonomiku serveru.
ecoCommandUsage=/<command> <give|take|set|reset> <hráč> <částka>
ecoCommandUsage1=/<command> give <player> <amount>
ecoCommandUsage1Description=Dá specifikovanému hráči daný počet peněz
ecoCommandUsage2=/<command> take <player> <amount>
ecoCommandUsage2Description=Vezme specifikovanému hráči daný počet peněz
ecoCommandUsage3=/<command> set <player> <amount>
ecoCommandUsage3Description=Nastaví specifikovanému hráči daný počet peněz
ecoCommandUsage4=/<command> reset <player> <amount>
ecoCommandUsage4Description=Resetuje specifikovanému hráči peníze na startovní částku
ecoCommandUsage1=/<command> give <hráč> <množství>
ecoCommandUsage1Description=Dá zadanému hráči uvedený počet peněz
ecoCommandUsage2=/<command> take <hráč> <množství>
ecoCommandUsage2Description=Vezme zadanému hráči uvedený počet peněz
ecoCommandUsage3=/<command> set <hráč> <množství>
ecoCommandUsage3Description=Nastaví zadanému hráči uvedený počet peněz
ecoCommandUsage4=/<command> reset <hráč> <množství>
ecoCommandUsage4Description=Nastaví zadanému hráči zůstatek na počáteční částku
editBookContents=§eNyní můžeš upravovat obsah této knihy.
enabled=povoleno
enchantCommandDescription=Očaruje předmět, který uživatel drží.
enchantCommandUsage=/<command> <název_očarování> [úroveň]
enchantCommandUsage1=/<command> <enchantment name> [level]
enchantCommandUsage1Description=Očaruje předmět držený v ruce s daným očarováním na volitelnou úroveň
enchantCommandUsage1=/<command> <název_očarování> [úroveň]
enchantCommandUsage1Description=Očaruje předmět držený v ruce daným očarováním na volitelnou úroveň
enableUnlimited=§6Hráč §c{1}§6 dostává neomezené množství §c{0}§6.
enchantmentApplied=§6Na předmět, který držíš v ruce, bylo sesláno očarování§c {0}§6.
enchantmentNotFound=§4Očarování nebylo nalezeno\!
@@ -288,46 +309,48 @@ enchantments=§6Očarováni\:§r {0}
enderchestCommandDescription=Otevře enderitovou truhlu.
enderchestCommandUsage=/<command> [hráč]
enderchestCommandUsage1=/<command>
enderchestCommandUsage1Description=Otevře vaši ender chestu
enderchestCommandUsage1Description=Otevře tvou enderitovou truhlu
enderchestCommandUsage2=/<command> <hráč>
enderchestCommandUsage2Description=Otevře ender chestu daného hráče
enderchestCommandUsage2Description=Otevře enderitovou truhlu daného hráče
errorCallingCommand=Chyba příkazu /{0}
errorWithMessage=§cChyba\:§4 {0}
essentialsCommandDescription=Znovu načte EssentialsX.
essentialsCommandUsage=/<command>
essentialsCommandUsage1=/<command> reload
essentialsCommandUsage1Description=Obnoví config Essentials
essentialsCommandUsage1Description=Znovu načte konfiguraci Essentials
essentialsCommandUsage2=/<command> version
essentialsCommandUsage2Description=Dá informace o verzi Essentials
essentialsCommandUsage2Description=Poskytuje informace o verzi Essentials
essentialsCommandUsage3=/<command> commands
essentialsCommandUsage3Description=Dá informace o příkazech, které Essentials ovlivňuje
essentialsCommandUsage3Description=Informuje, které příkazy Essentials předává dál
essentialsCommandUsage4=/<command> debug
essentialsCommandUsage4Description=Zapne Essentials "debug mod"
essentialsCommandUsage5=/<command> reset <player>
essentialsCommandUsage4Description=Přepíná Essentials do režimu ladění
essentialsCommandUsage5=/<command> reset <hráč>
essentialsCommandUsage5Description=Resetuje hráčská data daného hráče
essentialsCommandUsage6=/<command> cleanup
essentialsCommandUsage6Description=Vyčistí stará uživatelská data
essentialsCommandUsage7=/<command> homes
essentialsCommandUsage7Description=Spravuje uživatelské domovy
essentialsCommandUsage8=/<command> dump [all] [config] [discord] [kits] [log]
essentialsCommandUsage8Description=Vygeneruje výpis serveru s požadovanými informacemi
essentialsHelp1=Soubor je poškozen a Essentials jej nemůže otevřít. Essentials byl vypnut. Pokud nedokážete soubor opravit sami, navštivte http\://tiny.cc/EssentialsChat
essentialsHelp2=Soubor je poškozen a Essentials jej nemůže otevřít. Essentials byl vypnut. Pokud nedokážete soubor opravit sami, napište ve hře /essentialshelp nebo navštivte http\://tiny.cc/EssentialsChat
essentialsReload=§6Essentials byl znovu načten§c {0}.
exp=§c{0} §6má§c {1} §6zkušeností (úroveň§c {2}§6) a potřebuje ještě§c {3} §6 zkušeností na další úroveň.
expCommandDescription=Přidává, nastavuje, obnovuje nebo zobrazuje hráčovy zkušenosti.
expCommandUsage=/<command> [reset|show|set|give] [jméno_hráče [množství]]
expCommandUsage1=/<command> give <player> <amount>
expCommandUsage1Description=Dá danému hráči specifikovaný počet zkušeností
expCommandUsage2=/<command> set <playername> <amount>
expCommandUsage2Description=Nastaví danému hráči specifikovaný počet
expCommandUsage3=/<command> show <playername>
expCommandUsage1=/<command> give <hráč> <množství>
expCommandUsage1Description=Dá zadanému hráči uvedené množství zkušeností
expCommandUsage2=/<command> set <název_hráče> <množství>
expCommandUsage2Description=Nastaví danému hráči uvedené množství zkušeností
expCommandUsage3=/<command> show <hráč>
expCommandUsage4Description=Zobrazí počet zkušeností daného hráče
expCommandUsage5=/<command> reset <playername>
expCommandUsage5Description=Resetuje zkušenosti daného hráče na 0
expCommandUsage5=/<command> reset <hráč>
expCommandUsage5Description=Vynuluje zkušenosti daného hráče
expSet=§c{0} §6má nyní§c {1} §6zkušeností.
extCommandDescription=Uhasit hráče.
extCommandUsage=/<command> [hráč]
extCommandUsage1=/<command> [hráč]
extCommandUsage1Description=Uhasí vás či jiného hráče, pokud je zadáno jméno
extCommandUsage1Description=Uhasí tebe či jiného hráče, je-li zadán
extinguish=§6Uhasil ses.
extinguishOthers=§6Uhasil jsi hráče {0}§6.
failedToCloseConfig=Nepodařilo se uzavřít konfiguraci {0}.
@@ -338,7 +361,7 @@ feed=§6Tvůj hlad byl zahnán.
feedCommandDescription=Zažene hlad.
feedCommandUsage=/<command> [hráč]
feedCommandUsage1=/<command> [hráč]
feedCommandUsage1Description=Nakrmí vás či jiného hráče, pokud je zadáno jméno
feedCommandUsage1Description=Nakrmí tebe či jiného hráče, je-li zadán
feedOther=§6Nasytil jsi hráče§c{0}§6.
fileRenameError=Přejmenováni souboru {0} selhalo\!
fireballCommandDescription=Vrhá ohnivou kouli nebo jiné rozmanité projektily.
@@ -419,8 +442,8 @@ hatCommandDescription=Získej nějaké nové úžasné pokrývky hlavy.
hatCommandUsage=/<command> [remove]
hatCommandUsage1=/<command>
hatCommandUsage1Description=Předmět v ruce se použije jako klobouk
hatCommandUsage2=/<command> [remove]
hatCommandUsage2Description=Odstraní tvůj aktuální klobouk
hatCommandUsage2=/<command> remove
hatCommandUsage2Description=Odstraní tvůj momentální klobouk
hatCurse=§4Nemůžeš odstranit klobouk s kletbou spoutání\!
hatEmpty=§4Momentálně nemáš nasazen žádný klobouk.
hatFail=§4Co chceš mít nasazeno na hlavě, musíš držet v ruce.
@@ -454,7 +477,7 @@ homeCommandDescription=Teleportace k tobě domů.
homeCommandUsage=/<command> [hráč\:]<název>
homeCommandUsage1=/<command> <název>
homeCommandUsage1Description=Teleportuje do domova se zadaným jménem
homeCommandUsage2=/<command> <player>\:<name>
homeCommandUsage2=/<command> <hráč>\:<název>
homeCommandUsage2Description=Teleportuje tě do domova zadaného hráče se zadaným jménem
homes=§6Domovy\:§r {0}
homeConfirmation=§6Již máš domov s názvem §c{0}§6\!\nChceš-li přepsat svůj existující domov, napiš příkaz znovu.
@@ -517,7 +540,7 @@ itemCannotBeSold=§4Tento předmět nelze prodat serveru.
itemCommandDescription=Vyvolá předmět.
itemCommandUsage=/<command> <předmět|číselně> [počet [meta_předmětu...]]
itemCommandUsage1=/<command> <předmět> [počet]
itemCommandUsage1Description=Dá cílovému hráči celý stack (nebo uvedené množství) zadaného předmětu
itemCommandUsage1Description=Dá hráči celý stack (nebo uvedené množství) zadaného předmětu
itemCommandUsage2=/<command> <předmět> <počet> <meta>
itemCommandUsage2Description=Dá ti zadané množství určitého předmětu s uvedenými metadaty
itemId=§6ID\:§c {0}
@@ -525,10 +548,11 @@ itemloreClear=§6Odstranil jsi moudro tohoto předmětu.
itemloreCommandDescription=Upravit moudro předmětu.
itemloreCommandUsage=/<command> <add/set/clear> [text/řádek] [text]
itemloreCommandUsage1=/<command> add [text]
itemloreCommandUsage1Description=Přidá zadaný text na konec moudra předmětu v ruce
itemloreCommandUsage2Description=Nastaví zadaný řádek moudra drženého předmětu na daný text
itemloreCommandUsage1Description=Přidá daný text na konec lore předmětu drženého v ruce
itemloreCommandUsage2=/<command> set <číslo řádku> <text>
itemloreCommandUsage2Description=Nastaví daný řádek lore předmětu v ruce na daný text
itemloreCommandUsage3=/<command> clear
itemloreCommandUsage3Description=Vymaže moudro drženého předmětu
itemloreCommandUsage3Description=Vymaže lore předmětu v ruce
itemloreInvalidItem=§4Předmět, u něhož chceš upravit moudro, musíš držet v ruce.
itemloreNoLine=§4Předmět ve tvé ruce nemá žádné moudro na řádce §c{0}§4.
itemloreNoLore=§4Předmět ve tvé ruce nemá žádné moudro.
@@ -564,6 +588,9 @@ jailAlreadyIncarcerated=§4Tento hráč již úpí ve vězení\:§c {0}
jailList=§6Vězení\:§r {0}
jailMessage=§4Provinil ses, tak teď musíš pykat.
jailNotExist=§4Toto vězení neexistuje.
jailNotifyJailed=§6Hráč§c{0} §6uvězněn hráčem §c{1}§6.
jailNotifyJailedFor=§6Hráč§c {0} §6uvězněn za§c {1}§6 hráčem §c{2}§6.
jailNotifySentenceExtended=§6Uvěznění hráče§c{0} §6bylo hráčem §c{2}§6 prodlouženo na §c{1} §6.
jailReleased=§6Hráč §c{0}§6 byl propuštěn na svobodu.
jailReleasedPlayerNotify=§6Byl jsi propuštěn na svobodu\!
jailSentenceExtended=§6Uvěznění bylo prodlouženo na §c{0}§6.
@@ -640,12 +667,14 @@ listCommandUsage1=/<command> [skupina]
listCommandUsage1Description=Zobrazí seznam všech hráčů na serveru nebo v dané skupině, byla-li zadána
listGroupTag=§6/{0}§r\:
listHiddenTag=§7[SKRYTÝ]§r
listRealName=({0})
loadWarpError=§4Nepodařilo se načíst warp {0}.
localFormat=[L]<{0}> {1}
localFormat=§3[L] §r<{0}> {1}
loomCommandDescription=Otevře tkalcovský stav.
loomCommandUsage=/<command>
mailClear=§6Zprávy vymažeš příkazem §c/mail clear§6.
mailCleared=§6Zpráva smazána\!
mailClearIndex=§4Musíš zadat číslo mezi 1 a {0}.
mailCommandDescription=Spravuje vnitroserverovou poštu mezi hráči.
mailCommandUsage=/<command> [read|clear|clear [počet]|send [adresát] [zpráva]|sendtemp [adresát] [čas vypršení] [zpráva]|sendall [zpráva]]
mailCommandUsage1=/<command> read [strana]
@@ -657,11 +686,19 @@ mailCommandUsage3Description=Odešle zadanému hráči danou zprávu
mailCommandUsage4=/<command> sendall <zpráva>
mailCommandUsage4Description=Odešle všem hráčům danou zprávu
mailCommandUsage5=/<command> sendtemp <hráč> <čas vypršení> <zpráva>
mailCommandUsage5Description=Odešle uvedenému hráči zprávu, která vyprší v zadaném čase
mailCommandUsage6=/<command> sendtempall <čas vypršení> <zpráva>
mailCommandUsage6Description=Zašle všem hráčům danou zprávu, jejíž platnost vyprší za zadanou dobu
mailDelay=Za poslední minutu bylo odesláno příliš mnoho zpráv. Maximum\: {0}
mailFormatNew=§6[§r{0}§6] §6[§r{1}§6] §r{2}
mailFormatNewTimed=§6[§e⚠§6] §6[§r{0}§6] §6[§r{1}§6] §r{2}
mailFormatNewRead=§6[§r{0}§6] §6[§r{1}§6] §7§o{2}
mailFormatNewReadTimed=§6[§e⚠§6] §6[§r{0}§6] §6[§r{1}§6] §7§o{2}
mailFormat=§6[§r{0}§6] §r{1}
mailMessage={0}
mailSent=§6Zpráva odeslána\!
mailSentTo=§6Hráči §c{0}§6 byla odeslána tato zpráva\:
mailSentToExpire=§6Hráči §c{0}§6 byl odeslán následující e-mail, který vyprší za §c{1}§6\:
mailTooLong=§4Zpráva je příliš dlouhá, může obsahovat nejvýše 1000 znaků.
markMailAsRead=§6Příkazem§c /mail clear§6 označíš poštu jako přečtenou.
matchingIPAddress=§6Z této IP adresy se v minulosti připojili následující hráči\:
@@ -692,6 +729,7 @@ months=měsíců
moreCommandDescription=Vyplní stack v ruce na stanovené množství nebo na maximum, není-li množství uvedeno.
moreCommandUsage=/<command> [množství]
moreCommandUsage1=/<command> [množství]
moreCommandUsage1Description=Změní množství předmětu v ruce na uvedené množství, nebo pokud není uvedeno, na maximální množství
moreThanZero=§4Množtví musí být větší než 0.
motdCommandDescription=Zobrazí zprávu dne.
motdCommandUsage=/<command> [kapitola] [strana]
@@ -699,6 +737,7 @@ moveSpeed=§6Hráči §c{2}§6 byla nastavena rychlost §c{0} na §c{1}§6.
msgCommandDescription=Pošle soukromou zprávu zadanému hráči.
msgCommandUsage=/<command> <komu> [zpráva]
msgCommandUsage1=/<command> <komu> [zpráva]
msgCommandUsage1Description=Soukromě pošle danou zprávu určitému hráči
msgDisabled=§6Přijímání zpráv §cvypnuto§6.
msgDisabledFor=§6Přijímání zpráv §cvypnuto §6pro §c{0}§6.
msgEnabled=§6Přijímání zpráv §cpovoleno§6.
@@ -714,6 +753,9 @@ multiplePotionEffects=§4Na tento lektvar nelze použít více než jeden efekt.
muteCommandDescription=Umlčí hráče nebo mu povolí mluvit.
muteCommandUsage=/<command> <hráč> [trvání] [důvod]
muteCommandUsage1=/<command> <hráč>
muteCommandUsage1Description=Trvale umlčí specifického hráče, nebo ho odmlčí, pokud už byl umlčen
muteCommandUsage2=/<command> <hráč> <trvání> [důvod]
muteCommandUsage2Description=Umlčí specifického hráče na danou dobu s volitelným důvodem
mutedPlayer=§6Hráč§c {0} §6byl umlčen.
mutedPlayerFor=§6Hráč§c {0} §6byl umlčen na§c {1}§6.
mutedPlayerForReason=§6Hráč§c {0} §6byl umlčen na §c{1}§6. Důvod\: §c{2}
@@ -728,13 +770,27 @@ muteNotifyReason=§c{0} §6umlčel hráče §c{1}§6. Důvod\: §c{2}
nearCommandDescription=Vypíše hráče v okolí hráče.
nearCommandUsage=/<command> [jméno_hráče] [vzdálenost]
nearCommandUsage1=/<command>
nearCommandUsage1Description=Vypíše všechny hráče kolem tebe ve výchozím poloměru
nearCommandUsage2=/<command> <poloměr>
nearCommandUsage2Description=Vypíše všechny hráče kolem tebe v daném poloměru
nearCommandUsage3=/<command> <hráč>
nearCommandUsage3Description=Vypíše všechny hráče nebo specifického hráče kolem tebe ve výchozím poloměru
nearCommandUsage4=/<command> <hráč> <poloměr>
nearCommandUsage4Description=Vypíše všechny hráče nebo specifického hráče kolem tebe v daném poloměru
nearbyPlayers=§6Hráči v okolí\:§r {0}
nearbyPlayersList={0}§f(§c{1} m§f)
negativeBalanceError=§4Hráč nemůže mít záporný zůstatek.
nickChanged=§6Přezdívka změněna.
nickCommandDescription=Změní tvou přezdívku nebo přezdívku jiného hráče.
nickCommandUsage=/<command> [hráč] <přezdívka|off>
nickCommandUsage1=/<command> <přezdívka>
nickCommandUsage1Description=Změní tvou přezdívku na daný text
nickCommandUsage2=/<command> off
nickCommandUsage2Description=Odstraní tvou přezdívku
nickCommandUsage3=/<command> <hráč> <přezdívka>
nickCommandUsage3Description=Změní přezdívku specifikovaného hráče na daný text
nickCommandUsage4=/<command> <hráč> off
nickCommandUsage4Description=Odstraní přezdívku daného hráče
nickDisplayName=§4V konfiguraci Essentials musíš povolit change-displayname.
nickInUse=§4Toto jméno již někdo používá.
nickNameBlacklist=§4Tato přezdívka není dovolena.
@@ -776,8 +832,9 @@ noPlacePermission=§4Nemáš oprávnění pokládat bloky poblíž této cedule.
noPotionEffectPerm=§4Nemáš oprávnění používat u tohoto lektvaru účinek §c{0}§4.
noPowerTools=§6Nemáš přiřazen žádný výkonný nástroj.
notAcceptingPay=§4{0} §4nepřijímá platby.
notAllowedToQuestion=§4Nemáš oprávnění používat funkci otázky.
notAllowedToShout=§4Nemáš oprávnění používat funkci halekání.
notAllowedToLocal=§4Nemáš oprávnění mluvit v místním chatu.
notAllowedToQuestion=§4Nemáš oprávnění položit dotaz.
notAllowedToShout=§4Nemáš oprávnění k hlučnému módu.
notEnoughExperience=§4Nemáš dostatek zkušeností.
notEnoughMoney=§4Nemáš dost prostředků.
notFlying=nelétá
@@ -787,6 +844,8 @@ noWarpsDefined=§6Žádné warpy nejsou nastaveny.
nuke=§5Nechť oheň a síra pohltí svět.
nukeCommandDescription=Nechť oheň a síra pohltí svět.
nukeCommandUsage=/<command> [hráč]
nukeCommandUsage1=/<command> [hráči...]
nukeCommandUsage1Description=Pošle atomovku na všechny hráče, nebo na určité(ho) hráče, pokud je specifikováno
numberRequired=Tam přece musí být číslo.
onlyDayNight=/time podporuje pouze day/night.
onlyPlayers=§4Pouze hráči ve hře mohou použít §c{0}§4.
@@ -800,6 +859,7 @@ passengerTeleportFail=§4Nemůžeš být teleportován během přepravy cestují
payCommandDescription=Převede peníze jinému hráči z tvého zůstatku.
payCommandUsage=/<command> <hráč> [částka]
payCommandUsage1=/<command> <hráč> [částka]
payCommandUsage1Description=Zaplatí zadanému hráči uvedený počet peněz
payConfirmToggleOff=§6Od této chvíle se nebude požadovat potvrzení platby.
payConfirmToggleOn=§6Od této chvíle se bude požadovat potvrzení platby.
payDisabledFor=§6Přijímání plateb bylo pro §c{0}§6 vypnuto.
@@ -813,6 +873,7 @@ payconfirmtoggleCommandUsage=/<command>
paytoggleCommandDescription=Přepíná, zda přijímáš platby.
paytoggleCommandUsage=/<command> [hráč]
paytoggleCommandUsage1=/<command> [hráč]
paytoggleCommandUsage1Description=Přepíná, zda ty nebo případný zadaný hráč, přijímáte platby
pendingTeleportCancelled=§4Nevyřízená žádost o teleportování byla zrušena.
pingCommandDescription=Pong\!
pingCommandUsage=/<command>
@@ -832,12 +893,25 @@ playerTempBanned=§6Hráč §c{0}§6 dočasně zablokoval hráče §c{1}§6 na
playerUnbanIpAddress=§6Hráč§c {0} §6odblokoval IP adresu\:§c {1}
playerUnbanned=§6Hráč§c {0} §6odblokoval hráče§c {1}
playerUnmuted=§6Můžeš opět hovořit.
playtimeCommandDescription=Zobrazí hráčův čas strávený ve hře
playtimeCommandUsage=/<command> [hráč]
playtimeCommandUsage1=/<command>
playtimeCommandUsage1Description=Zobrazí tvůj čas strávený ve hře
playtimeCommandUsage2=/<command> <hráč>
playtimeCommandUsage2Description=Zobrazí pro zadaného hráče čas strávený ve hře
playtime=§6Odehráno\:§c {0}
playtimeOther=§6Hráč {1} odehrál§6\:§c {0}
pong=Pong\!
posPitch=§6Sklon\: {0} (Úhel náklonu hlavy)
possibleWorlds=§6Možné světy jsou očíslované v rozmezí §c0§6 až §c{0}§6.
potionCommandDescription=Přidá do lektvaru vlastní účinky.
potionCommandUsage=/<command> <clear|apply|effect\:<účinek> power\:<síla> duration\:<trvání>>
potionCommandUsage1=/<command> clear
potionCommandUsage1Description=Odstraní z lektvaru v ruce všechny efekty
potionCommandUsage2=/<command> apply
potionCommandUsage2Description=Aplikuje na tebe všechny efekty lektvaru v ruce, aniž by jsi lektvar vypil
potionCommandUsage3=/<command> effect\:<efekt> power\:<síla> duration\:<trvání>
potionCommandUsage3Description=Aplikuje metadata daného lektvaru na lektvar v ruce
posX=§6X\: {0} (+Východ <-> -Západ)
posY=§6Y\: {0} (+Nahoru <-> -Dolů)
posYaw=§6Odchýlení\: {0} (Natočení)
@@ -856,12 +930,34 @@ powerToolsDisabled=§6Všechny tvé výkonné nástroje byly vypnuty.
powerToolsEnabled=§6Věechny tvé výkonné nástroje byly povoleny.
powertoolCommandDescription=Přiřadí příkaz k předmětu v ruce.
powertoolCommandUsage=/<command> [l\:|a\:|r\:|c\:|d\:][příkaz] [parametry] - {hráč} může být nahrazeno jménem kliknutého hráče.
powertoolCommandUsage1=/<command> l\:
powertoolCommandUsage1Description=Vypíše všechny příkazy, které budou vykonány po kliknutí předmětem v ruce
powertoolCommandUsage2=/<command> d\:
powertoolCommandUsage2Description=Smaže z předmětu v ruce všechny příkazy, které budou vykonány po kliknutí s ním
powertoolCommandUsage3=/<command> r\:<vykonaný příkaz>
powertoolCommandUsage3Description=Odstraní daný příkaz z předmětu v ruce
powertoolCommandUsage4=/<command> <vykonaný příkaz>
powertoolCommandUsage4Description=Nastaví příkaz předmětu v ruce, který bude vykonán po kliknutí s ním na daný příkaz
powertoolCommandUsage5=/<command> a\:<vykonaný příkaz>
powertoolCommandUsage5Description=Přidá na předmět v ruce příkaz, který bude vykonán po kliknutí s ním
powertooltoggleCommandDescription=Povolí nebo zakáže všechny aktuální mocné nástroje.
powertooltoggleCommandUsage=/<command>
ptimeCommandDescription=Upraví čas klienta hráče. Přidej @ prefix pro opravu.
ptimeCommandUsage=/<command> [list|reset|day|night|dawn|17\:30|4pm|4000ticks] [hráč|*]
ptimeCommandUsage1=/<command> list [hráč|*]
ptimeCommandUsage1Description=Vypíše buď tvůj čas, nebo čas jiného hráče(ů), pokud je specifikováno
ptimeCommandUsage2=/<command> <čas> [hráč|*]
ptimeCommandUsage2Description=Nastaví tvůj čas nebo čas jiného hráče(ů), pokud je specifikováno, na daný čas
ptimeCommandUsage3=/<command> reset [hráč|*]
ptimeCommandUsage3Description=Resetuje tvůj čas, nebo čas jiného hráče(ů), pokud je specifikováno
pweatherCommandDescription=Upraví počasí hráče
pweatherCommandUsage=/<command> [list|reset|storm|sun|clear] [hráč|*]
pweatherCommandUsage1=/<command> list [hráč|*]
pweatherCommandUsage1Description=Uvede počasí, které vidíš ty, nebo jiný(í) hráč(i), pokud je specifikován
pweatherCommandUsage2=/<command> <storm|sun> [hráč|*]
pweatherCommandUsage2Description=Nastaví počasí, které vidíš ty, nebo jiný(í) hráč(i), pokud je specifikován(i), na dané počasí
pweatherCommandUsage3=/<command> reset [hráč|*]
pweatherCommandUsage3Description=Resetuje počasí, které vidíš ty, nebo jiný(í) hráč(i), pokud je specifikováno
pTimeCurrent=§6Čas hráče §c{0}§6 je §c{1}§6.
pTimeCurrentFixed=§6Čas hráče §c{0}§6 byl zastaven na §c{1}§6.
pTimeNormal=§6Čas hráče §c{0}§6 souhlasí s časem serveru.
@@ -881,17 +977,21 @@ questionFormat=§2[Otázka]§r {0}
rCommandDescription=Rychle odpovědět poslednímu hráči, který ti poslal zprávu.
rCommandUsage=/<command> <zpráva>
rCommandUsage1=/<command> <zpráva>
rCommandUsage1Description=Odpoví daným textem poslednímu hráči, který ti poslal zprávu
radiusTooBig=§4Poloměr je příliš veliký\! Maximální poloměr je§c {0}§4.
readNextPage=§6Další stránku zobrazíš příkazem§c /{0} {1}§6.
realName=§f{0}§r§6 je §f{1}
realnameCommandDescription=Zobrazí uživatelské jméno uživatele na základě přezdívky.
realnameCommandUsage=/<command> <přezdívka>
realnameCommandUsage1=/<command> <přezdívka>
realnameCommandUsage1Description=Ukáže pravé jméno hráče s danou přezdívkou
recentlyForeverAlone=§4{0} se nedávno odpojil.
recipe=§6Recept pro §c{0}§6 (§c{1}§6 x §c{2}§6)
recipeBadIndex=Recept s takovýmto číslem neexistuje.
recipeCommandDescription=Zobrazuje, jak vyrábět předměty.
recipeCommandUsage=/<command> <předmět> [počet]
recipeCommandUsage1=/<příkaz> <předmět> [strana]
recipeCommandUsage1Description=Ukáže, jak vyrobit daný předmět
recipeFurnace=§6Vypal\: §c{0}§6.
recipeGrid=§c{0}X §6| §{1}X §6| §{2}X
recipeGridItem=§c{0}X §6je §c{1}
@@ -902,12 +1002,19 @@ recipeShapeless=§6Zkombinuj §c{0}
recipeWhere=§6Kde\: {0}
removeCommandDescription=Odstraní entity v aktuálním světě.
removeCommandUsage=/<command> <all|tamed|named|drops|arrows|boats|minecarts|xp|paintings|itemframes|endercrystals|monsters|animals|ambient|mobs|[typ_stvoření]> [vzdálenost|svět]
removeCommandUsage1=/<příkaz> <mob> [svět]
removeCommandUsage1Description=Odstraní všechny dané moby ze současného světa, nebo z jiného, pokud je specifikován
removeCommandUsage2=/<příkaz> <mob> <poloměr> [svět]
removeCommandUsage2Description=Odstraní všechny dané moby v daném poloměru ze současného světa, nebo z jiného, pokud je specifikován
removed=§6Odstraněno§c {0} §6entit.
repair=§6Úspěšně jsi opravil §c{0}§6.
repairAlreadyFixed=§4Tento předmět nepotřebuje opravu.
repairCommandDescription=Opraví životnost jednoho nebo všech předmětů.
repairCommandUsage=/<command> [hand|all]
repairCommandUsage1=/<command>
repairCommandUsage1Description=Opraví předmět v ruce
repairCommandUsage2=/<příkaz> all
repairCommandUsage2Description=Opraví všechny předměty v inventáři
repairEnchanted=§4Nemáš oprávnění opravovat očarované předměty.
repairInvalidType=§4Tento předmět nelze opravit.
repairNone=§4Nemáš žádné předměty, které potřebují opravit.
@@ -917,20 +1024,24 @@ replyLastRecipientDisabledFor=§6Odpovídání poslednímu příjemci §cvypnuto
replyLastRecipientEnabled=§6Odpovídání poslednímu příjemci §czapnuto§6.
replyLastRecipientEnabledFor=§6Odpovídání poslednímu příjemci §czapnuto §6proa §c{0}§6.
requestAccepted=§6Zadost o teleport prijata.
requestAcceptedAll=§6Přijato §c{0} §6žádostí o teleportování.
requestAcceptedAuto=§6Automaticky přijata žádost o teleportování od {0}.
requestAcceptedFrom=§6Hráč §c{0} §6přijal tvou žádost o teleportování.
requestAcceptedFromAuto=§6Hráč §c{0} §6automaticky přijal tvou žádost o teleportování.
requestDenied=§6Žádost o teleportování odmítnuta.
requestDeniedAll=§6Odmítnuto §c{0} §6žádostí o teleportování.
requestDeniedFrom=§6Hráč §c{0} §6odmítl tvou žádost o teleportování.
requestSent=§6Žádost odeslána hráči §c{0}§6.
requestSentAlready=§4Žádost o teleportování byla hráči §c{0}§4 už poslána.
requestTimedOut=§4Žádost o teleportování vypršela.
requestTimedOutFrom=§4Žádost o teleportování od §c{0} §4vypršela.
resetBal=§6Stav účtu všech připojených hráčů byl obnoven na §c{0}§6.
resetBalAll=§6Stav účtu všech hráčů byl obnoven na §c{0}§6.
rest=§6Cítíš se dobře odpočatý.
restCommandDescription=Poskytne odpočinek tobě nebo zadanému hráči.
restCommandUsage=/<command> [hráč]
restCommandUsage1=/<command> [hráč]
restCommandUsage1Description=Resetuje čas od vás ostatních nebo jiného hráče, pokud je uveden
restOther=§6Poskytnutí odpočinku hráči§c {0}§6.
returnPlayerToJailError=§4Při pokusu vrátit hráče §c{0}§4 do vězení došlo k chybě\: §c{1}§4\!
rtoggleCommandDescription=Změní, zda je příjemcem odpovědi poslední příjemce, nebo poslední odesílatel
@@ -944,10 +1055,20 @@ seenAccounts=§6Hráč je známý také jako\:§c {0}
seenCommandDescription=Zobrazí čas posledního odhlášení hráče.
seenCommandUsage=/<command> <hráč>
seenCommandUsage1=/<command> <hráč>
seenCommandUsage1Description=Ukáže informace o času odpojení, banu, umlčení a UUID specifikovaného hráče
seenOffline=§6Hráč §c{0} §6je §4odpojen§6 od §c{1}§6.
seenOnline=§6Hráč §c{0} §6je §apřipojen§6 od §c{1}§6.
sellBulkPermission=§6Nemáš oprávnění prodávat ve velkém.
sellCommandDescription=Prodá předmět, který je právě v ruce.
sellCommandUsage=/<příkaz> <<jméno předmětu>|<id>|hand|inventory|blocks> [množství]
sellCommandUsage1=/<command> <jméno předmětu> [množství]
sellCommandUsage1Description=Prodá všechny (nebo daný počet, pokud je specifikován) dané předměty z tvého inventáře
sellCommandUsage2=/<command> hand [množství]
sellCommandUsage2Description=Prodá všechny (nebo daný počet, pokud je specifikován) předměty, které máš v ruce
sellCommandUsage3=/<příkaz> all
sellCommandUsage3Description=Prodá úplně všechny předměty ve tvém inventáři
sellCommandUsage4=/<command> blocks [množství]
sellCommandUsage4Description=Prodá všechny (nebo daný počet, pokud je specifikován) bloky z tvého inventáře
sellHandPermission=§6Nemáš oprávnění prodávat z ruky.
serverFull=Server je plný\!
serverReloading=Je zde značná pravděpodobnost, že právě opětovně načítáte server. Pokud je tomu tak, tak proč se nenávidíte? Při používání /reload neočekávejte od týmu EssentialsX žádnou podporu.
@@ -964,19 +1085,33 @@ setSpawner=§6Typ líhně změněn na§c {0}§6.
sethomeCommandDescription=Nastaví tvůj domov na aktuální polohu.
sethomeCommandUsage=/<command> [[hráč\:]název]
sethomeCommandUsage1=/<command> <název>
sethomeCommandUsage2=/<command> <player>\:<name>
sethomeCommandUsage1Description=Nastaví domov s daným jménem na místo, kde stojíš
sethomeCommandUsage2=/<command> <hráč>\:<název>
sethomeCommandUsage2Description=Nastaví domov určitého hráče s daným jménem na místo, kde stojíš
setjailCommandDescription=Vytvoří vězení se zadaným názvem [název_vězení].
setjailCommandUsage=/<command> <název_vězení>
setjailCommandUsage1=/<command> <název_vězení>
setjailCommandUsage1Description=Nastaví vězení s určitým jménem tam, kde stojíš
settprCommandDescription=Nastaví teleportaci na náhodné místo a parametry.
settprCommandUsage=/<command> [center|minrange|maxrange] [hodnota]
settprCommandUsage1=/<command> center
settprCommandUsage1Description=Nastaví střed náhodného teleportu tam, kde stojíš
settprCommandUsage2=/<command> minrange <poloměr>
settprCommandUsage2Description=Nastaví minimální poloměr náhodného teleportu na danou hodnotu
settprCommandUsage3=/<command> maxrange <poloměr>
settprCommandUsage3Description=Nastaví maximální poloměr náhodného teleportu na danou hodnotu
settpr=§6Nastaven střed náhodné teleportace.
settprValue=§6Nastavena náhodná teleportace §c{0}§6 na §c{1}§6.
setwarpCommandDescription=Vytvoří nový warp.
setwarpCommandUsage=/<command> <warp>
setwarpCommandUsage1=/<command> <warp>
setwarpCommandUsage1Description=Vytvoří warp s určitým jménem tam, kde stojíš
setworthCommandDescription=Nastaví prodejní cenu předmětu.
setworthCommandUsage=/<command> [předmět|id] <cena>
setworthCommandUsage1=/<command> <cena>
setworthCommandUsage1Description=Nastaví hodnotu předmětu, který máš v ruce na danou cenu
setworthCommandUsage2=/<command> <jméno předmětu> <cena>
setworthCommandUsage2Description=Nastaví hodnotu určitého předmětu na danou cenu
sheepMalformedColor=§4Neplatná barva.
shoutDisabled=§6Hlučný mód §cvypnut§6.
shoutDisabledFor=§6Hlučný mód §cvypnut §6 pro hráče §c{0}§6.
@@ -988,6 +1123,7 @@ editsignCommandClearLine=§6Vymazán řádek§c {0}§6.
showkitCommandDescription=Zobrazí obsah sady.
showkitCommandUsage=/<command> <sada>
showkitCommandUsage1=/<command> <sada>
showkitCommandUsage1Description=Vypíše seznam všech předmětů v určitém kitu
editsignCommandDescription=Upravuje danou ceduli.
editsignCommandLimit=§4Zadaný text je příliš dlouhý, než aby se vešel na ceduli.
editsignCommandNoLine=§4Musíš zadat číslo řádku §c1 až 4§4.
@@ -998,6 +1134,14 @@ editsignCopyLine=§6Řádek §c{0} §6cedule zkopírován\! Vlož jej příkazem
editsignPaste=§6Cedule vložena\!
editsignPasteLine=§6Řádka §c{0} §6cedule vložena\!
editsignCommandUsage=/<command> <set/clear/copy/paste> [číslo řádku] [text]
editsignCommandUsage1=/<command> set <číslo řádku> <text>
editsignCommandUsage1Description=Nastaví určitý řádek cílené cedule na daný text
editsignCommandUsage2=/<command> clear <číslo řádku>
editsignCommandUsage2Description=Vymaže určitý řádek cílené cedule
editsignCommandUsage3=/<command> copy [číslo řádku]
editsignCommandUsage3Description=Zkopíruje do schránky všechny (nebo uvedený řádek) cílené cedule
editsignCommandUsage4=/<command> paste [číslo řádku]
editsignCommandUsage4Description=Vloží tvojí schránku na celou (nebo na určitý řádek) cílené cedule
signFormatFail=§4[{0}]
signFormatSuccess=§1[{0}]
signFormatTemplate=[{0}]
@@ -1010,7 +1154,9 @@ skullChanged=§6Hlava změněna na §c{0}§6.
skullCommandDescription=Nastaví vlastníka lebky hráče
skullCommandUsage=/<command> [vlastník]
skullCommandUsage1=/<command>
skullCommandUsage1Description=Dá ti tvojí hlavu
skullCommandUsage2=/<command> <hráč>
skullCommandUsage2Description=Dá ti hlavu určitého hráče
slimeMalformedSize=§4Neplatná velikost.
smithingtableCommandDescription=Otevře kovářský stůl.
smithingtableCommandUsage=/<command>
@@ -1020,22 +1166,34 @@ socialSpyMutedPrefix=§f[§6SS§f] §7(umlčený) §r
socialspyCommandDescription=Přepíná, zda můžeš v chatu vidět příkazy msg/mail.
socialspyCommandUsage=/<command> [hráč] [on|off]
socialspyCommandUsage1=/<command> [hráč]
socialspyCommandUsage1Description=Přepíná Social Spy pro tebe nebo pro jiného hráče, pokud je uveden
socialSpyPrefix=§f[§6SS§f] §r
soloMob=§4Toto stvoření je rádo samo.
spawned=vyvolán
spawnerCommandDescription=Změní typ stvoření v líhni.
spawnerCommandUsage=/<command> <stvoření> [prodlení]
spawnerCommandUsage1=/<command> <stvoření> [prodlení]
spawnerCommandUsage1Description=Mění, jakého moba spawnuje spawner, na který se díváš (a volitelně dobu, jak dlouho trvá, než se mobové spawnou)
spawnmobCommandDescription=Vylíhne stvoření.
spawnmobCommandUsage=/<command> <stvoření>[\:data][,<mount>[\:data]] [počet] [hráč]
spawnmobCommandUsage1=/<command> <mob>[\:data] [množství] [hráč]
spawnmobCommandUsage1Description=Spawne jednoho (nebo určité množství) daných mobů tam, kde stojíš (nebo kde stojí jiný hráč, pokud je uveden)
spawnmobCommandUsage2=/<command> <mob>[\:data],<mount>[\:data] [množství] [hráč]
spawnmobCommandUsage2Description=Spawne tam, kde stojíš (nebo kde stojí jiný hráč, pokud je uveden) jednoho (nebo určitý počet) daného moba jedoucího na daném mobovi
spawnSet=§6Poloha výchozího místa pro skupinu§c {0}§6 byla nastavena.
spectator=divák
speedCommandDescription=Změní tvou rychlost, typ může být walk (chůze), nebo fly (létání).
speedCommandUsage=/<command> [typ] <rychlost> [hráč]
speedCommandUsage1=/<command> <rychlost>
speedCommandUsage1Description=Nastaví rychlost tvého létání, nebo chození na danou rychlost
speedCommandUsage2=/<command> <typ> <rychlost> [hráč]
speedCommandUsage2Description=Nastaví určitý typ rychlosti dané rychlosti buď pro tebe, nebo pro určitého hráče, pokud je uveden
stonecutterCommandDescription=Otevře řezačku kamene.
stonecutterCommandUsage=/<command>
sudoCommandDescription=Provede příkaz jménem jiného uživatele.
sudoCommandUsage=/<command> <hráč> <příkaz [parametry]>
sudoCommandUsage1=/<command> <hráč> <příkaz> [argumenty]
sudoCommandUsage1Description=Udělá, aby určitý hráč použil daný příkaz
sudoExempt=§4Nemůžeš použít sudo na hráče §c{0}§4.
sudoRun=§6Vynucení spuštění§r /{1} §6hráčem§c {0}
suicideCommandDescription=Způsobí tvou smrt.
@@ -1074,16 +1232,29 @@ tempbanExemptOffline=§4Nemůžeš dočasně zablokovat nepřipojeného hráče.
tempbanJoin=Na tomto serveru jsi zablokován na {0}. Důvod\: {1}
tempBanned=§cByl jsi dočasně zablokován na§r {0}\: \n§r{2}
tempbanCommandDescription=Dočasně zablokuje hráče.
tempbanCommandUsage=/<command> <jméno_hráče> <trvání> [důvod]
tempbanCommandUsage1=/<command> <hráč> <trvání> [důvod]
tempbanCommandUsage1Description=Zabanuje daného hráče na určitou dobu s nepovinným důvodem
tempbanipCommandDescription=Dočasně zablokuje IP adresu.
tempbanipCommandUsage=/<command> <jméno_hráče> <trvání> [důvod]
tempbanipCommandUsage1=/<command> <player|ip-address> <trvání> [důvod]
tempbanipCommandUsage1Description=Zabanuje danou IP adresu na určitý čas s nepovinným důvodem
thunder=§6Nastavil jsi bouřku v tomto světě na §c{0}§6.
thunderCommandDescription=Zapne/vypne bouřku.
thunderCommandUsage=/<command> <true/false> [trvání]
thunderCommandUsage1=/<command> <true|false> [trvání]
thunderCommandUsage1Description=Zapne/vypne bouřku na nepovinnou dobu
thunderDuration=§6Nastavil jsi bouřku v tomto světě na §c{0}§6 na §c{1}§6 sekund.
timeBeforeHeal=§4Čas do dalšího uzdravení\:§c {0}§4.
timeBeforeTeleport=§4Čas do dalšího teleportování\:§c {0}§4.
timeCommandDescription=Zobrazí/změní čas světa. Bez specifikace platí pro aktuální svět.
timeCommandUsage=/<command> [set|add] [day|night|dawn|17\:30|4pm|4000ticks] [svět|all]
timeCommandUsage1=/<command>
timeCommandUsage1Description=Ukáže čas ve všech světech
timeCommandUsage2=/<command> set <čas> [world|all]
timeCommandUsage2Description=Nastaví čas v současném (nebo určitém) světě na daný čas
timeCommandUsage3=/<command> add <čas> [world|all]
timeCommandUsage3Description=Přidá daný čas k času současného (nebo určitého) světa
timeFormat=§c{0}§6 nebo §c{1}§6 nebo §c{2}§6
timeSetPermission=§4Nemáš oprávnění nastavovat čas.
timeSetWorldPermission=§4Nemáš oprávnění nastavovat čas ve světě §c{0}§4.
@@ -1096,6 +1267,7 @@ togglejailCommandUsage=/<command> <hráč> <název_vězení> [trvání]
toggleshoutCommandDescription=Určuje, zda mluvíš v hlučném módu
toggleshoutCommandUsage=/<command> [hráč] [on|off]
toggleshoutCommandUsage1=/<command> [hráč]
toggleshoutCommandUsage1Description=Přepne hlučný mód tobě, nebo jinému hráči, pokud je uveden
topCommandDescription=Teleportuje na nejvyšší blok na tvé aktuální pozici.
topCommandUsage=/<command>
totalSellableAll=§aCelková cena všech prodejných předmětů a bloků je §c{1}§a.
@@ -1105,59 +1277,89 @@ totalWorthBlocks=§aProdány všechny bloky za celkovou částku §c{1}§a.
tpCommandDescription=Teleportace k hráči.
tpCommandUsage=/<command> <hráč> [jiný_hráč]
tpCommandUsage1=/<command> <hráč>
tpCommandUsage1Description=Teleportuje tě na určitého hráče
tpCommandUsage2=/<command> <hráč> <jiný hráč>
tpCommandUsage2Description=Teleportuje prvního uvedeného hráče k druhému
tpaCommandDescription=Požádá o teleportaci k danému hráči.
tpaCommandUsage=/<command> <hráč>
tpaCommandUsage1=/<command> <hráč>
tpaCommandUsage1Description=Požádá o teleportaci na určitého hráče
tpaallCommandDescription=Požádá všechny připojené hráče, aby se teleportovali k tobě.
tpaallCommandUsage=/<command> <hráč>
tpaallCommandUsage1=/<command> <hráč>
tpaallCommandUsage1Description=Požádá všechny hráče, aby se na tebe teleportovali
tpacancelCommandDescription=Zruší všechny nevyřízené žádosti o teleportování. Při zadání [hráč] se zruší jeho požadavky.
tpacancelCommandUsage=/<command> [hráč]
tpacancelCommandUsage1=/<command>
tpacancelCommandUsage1Description=Zruší všechny tvoje nevyřízené žádosti o teleportaci
tpacancelCommandUsage2=/<command> <hráč>
tpacceptCommandDescription=Přijímá žádost o teleportování.
tpacancelCommandUsage2Description=Zruší všechny tvoje nevyřízené žádosti o teleportaci na určitého hráče
tpacceptCommandDescription=Přijme žádost o teleportování.
tpacceptCommandUsage=/<command> [jiný_hráč]
tpacceptCommandUsage1=/<command>
tpacceptCommandUsage1Description=Přijme nejnovější žádost o teleportování
tpacceptCommandUsage2=/<command> <hráč>
tpacceptCommandUsage2Description=Přijme žádost o teleportování od zadaného hráče
tpacceptCommandUsage3=/<command> *
tpacceptCommandUsage3Description=Přijme všechny žádosti o teleportování
tpahereCommandDescription=Požádej, aby se hráč teleportoval k tobě.
tpahereCommandUsage=/<command> <hráč>
tpahereCommandUsage1=/<command> <hráč>
tpahereCommandUsage1Description=Požádá určitého hráče, aby se na tebe teleportoval
tpallCommandDescription=Teleportuje všechny připojené hráče k jinému hráči.
tpallCommandUsage=/<command> [hráč]
tpallCommandUsage1=/<command> [hráč]
tpallCommandUsage1Description=Teleportuje na tebe všechny hráče, nebo jiného hráče, pokud je uveden
tpautoCommandDescription=Automaticky přijímat žádosti o teleportaci.
tpautoCommandUsage=/<command> [hráč]
tpautoCommandUsage1=/<command> [hráč]
tpdenyCommandDescription=Odmítnout žádost o teleportování.
tpautoCommandUsage1Description=Přepne automatický příjem tpa žádostí pro tebe nebo jiného hráče, pokud je uveden
tpdenyCommandDescription=Odmítne žádost o teleportování.
tpdenyCommandUsage=/<command>
tpdenyCommandUsage1=/<command>
tpdenyCommandUsage1Description=Odmítne nejnovější žádost o teleportování
tpdenyCommandUsage2=/<command> <hráč>
tpdenyCommandUsage2Description=Odmítne žádost o teleportování od určeného hráče
tpdenyCommandUsage3=/<command> *
tpdenyCommandUsage3Description=Odmítne všechny žádosti o teleportování
tphereCommandDescription=Teleportuje hráče k tobě.
tphereCommandUsage=/<command> <hráč>
tphereCommandUsage1=/<command> <hráč>
tphereCommandUsage1Description=Teleportuje na tebe určitého hráče
tpoCommandDescription=Teleportovat a přitom nebrat ohled na tptoggle.
tpoCommandUsage=/<command> <hráč> [jiný_hráč]
tpoCommandUsage1=/<command> <hráč>
tpoCommandUsage1Description=Teleportuje na tebe určitého hráče a ignoruje jeho předvolby
tpoCommandUsage2=/<command> <hráč> <jiný hráč>
tpoCommandUsage2Description=Teleportuje prvního určitého hráče na druhého a ignoruje jeho předvolby
tpofflineCommandDescription=Teleportovat na poslední známé místo odhlášení hráče
tpofflineCommandUsage=/<command> <hráč>
tpofflineCommandUsage1=/<command> <hráč>
tpofflineCommandUsage1Description=Teleportuje tě na místo, kde se určitý hráč odpojil
tpohereCommandDescription=Teleportovat sem bez ohledu na tptoggle.
tpohereCommandUsage=/<command> <hráč>
tpohereCommandUsage1=/<command> <hráč>
tpohereCommandUsage1Description=Teleportuje na tebe určitého hráče a ignoruje jeho předvolby
tpposCommandDescription=Teleportace na souřadnice.
tpposCommandUsage=/<command> <x> <y> <z> [natočení] [náklon_hlavy] [svět]
tpposCommandUsage1=/<command> <x> <y> <z> [natočení] [náklon_hlavy] [svět]
tpposCommandUsage1Description=Teleportuje tě na určité místo a na nepovinné otočení, výšku pohledu a/nebo svět
tprCommandDescription=Náhodná teleportace.
tprCommandUsage=/<command>
tprCommandUsage1=/<command>
tprCommandUsage1Description=Teleportuje tě na náhodné místo
tprSuccess=§6Teleportace na náhodnou polohu...
tps=§6Aktuální TPS \= {0}
tptoggleCommandDescription=Blokuje všechny druhy teleportace.
tptoggleCommandUsage=/<command> [hráč] [on|off]
tptoggleCommandUsage1=/<command> [hráč]
tptoggleCommandUsageDescription=Přepne, jestli jsou pro tebe, nebo pro jiného hráče, pokud je uveden, povoleny teleporty
tradeSignEmpty=§4Tato obchodní cedule již nemá pro tebe nic dostupného.
tradeSignEmptyOwner=§4Z této obchodní cedule už není co brát.
treeCommandDescription=Vytvoří strom na místě, kam se díváš.
treeCommandUsage=/<command> <tree|birch|redwood|redmushroom|brownmushroom|jungle|junglebush|swamp>
treeCommandUsage1=/<command> <tree|birch|redwood|redmushroom|brownmushroom|jungle|junglebush|swamp>
treeCommandUsage1Description=Vytvoří strom určitého typu na bloku, na který se díváš
treeFailure=§4Vytváření stromu selhalo. Zkus to znovu na trávě nebo na hlíně.
treeSpawned=§6Strom vytvořen.
true=§aano§r
@@ -1170,15 +1372,23 @@ unableToSpawnMob=§4Nelze vyvolat stvoření.
unbanCommandDescription=Odblokuje daného hráče.
unbanCommandUsage=/<command> <hráč>
unbanCommandUsage1=/<command> <hráč>
unbanCommandUsage1Description=Odbanuje určitého hráče
unbanipCommandDescription=Odblokuje danou IP adresu.
unbanipCommandUsage=/<command> [adresa]
unbanipCommandUsage1=/<command> [adresa]
unbanipCommandUsage1Description=Odbanuje určitou IP adresu
unignorePlayer=§6Přestal jsi ignorovat hráče§c {0}§6.
unknownItemId=§4Neznámé ID předmětu\:§r {0}§4.
unknownItemInList=§4Neznámý předmět {0} v seznamu {1}.
unknownItemName=§4Neznámý název předmětu\:§r {0}§4.
unlimitedCommandDescription=Umožňuje neomezené umisťování předmětů.
unlimitedCommandUsage=/<command> <list|item|clear> [hráč]
unlimitedCommandUsage1=/<command> list [hráč]
unlimitedCommandUsage1Description=Zobrazí seznam neomezených předmětů pro tebe nebo jiného hráče, pokud je uveden
unlimitedCommandUsage2=/<command> <předmět> [hráč]
unlimitedCommandUsage2Description=Přepíná, jestli je daný předmět pro tebe nebo jiného hráče, pokud je uveden, neomezený
unlimitedCommandUsage3=/<command> clear [hráč]
unlimitedCommandUsage3Description=Vymaže všechny neomezené předměty pro tebe, nebo jiného hráče, pokud je uveden
unlimitedItemPermission=§4Nemáš oprávnění na neomezené množství předmětu §c{0}§4.
unlimitedItems=§6Neomezené předměty\:§r
unmutedPlayer=§6Hráč §c{0}§6 může znovu hovořit.
@@ -1207,6 +1417,7 @@ vanish=§6Neviditelnost pro hráče §c{0}§6\: {1}
vanishCommandDescription=Skrýt se před ostatními hráči.
vanishCommandUsage=/<command> [hráč] [on|off]
vanishCommandUsage1=/<command> [hráč]
vanishCommandUsage1Description=Přepne vanish tobě, nebo jinému hráči, pokud je uveden
vanished=§6Nyní jsi zcela neviditelný pro běžné hráče a skrytý z herních příkazů.
versionCheckDisabled=§6Kontrola aktualizací je v konfiguračním souboru vypnuta.
versionCustom=§6Nelze zkontrolovat tvou verzi\! Vlastní sestavení? Informace o sestavení\: §c{0}§6.
@@ -1237,11 +1448,15 @@ walking=chůze
warpCommandDescription=Seznam všech warpů nebo warp na zadané místo.
warpCommandUsage=/<command> <číslo_stránky|warp> [hráč]
warpCommandUsage1=/<command> [strana]
warpCommandUsage1Description=Vypíše seznam všech warpů na první, nebo uvedené stránce
warpCommandUsage2=/<command> <warp> [hráč]
warpCommandUsage2Description=Teleportuje na warp tebe, nebo určitého hráče
warpDeleteError=§4Vyskytl se problém s mazáním souboru warpu.
warpInfo=§6Informace o warpu§c {0}§6\:
warpinfoCommandDescription=Najde informace o poloze pro zadaný warp.
warpinfoCommandUsage=/<command> <warp>
warpinfoCommandUsage1=/<command> <warp>
warpinfoCommandUsage1Description=Poskytne informace o daném warpu
warpingTo=§6Přenášení na§c {0}§6.
warpList={0}
warpListPermission=§4Nemáš oprávnění vypsat seznam warpů.
@@ -1251,6 +1466,8 @@ warps=§6Warpy\:§r {0}
warpsCount=§6Existuje §c{0} §6warpů. Zobrazuje se strana §c{1} §6z §c{2}§6.
weatherCommandDescription=Nastaví počasí.
weatherCommandUsage=/<command> <storm/sun> [trvání]
weatherCommandUsage1=/<command> <storm|sun> [trvání]
weatherCommandUsage1Description=Nastaví daný typ počasí na nepovinnou dobu
warpSet=§6Warp§c {0} §6vytvořen.
warpUsePermission=§4Nemáš oprávnění používat tento warp.
weatherInvalidWorld=Svět s názvem {0} nebyl nalezen\!
@@ -1267,6 +1484,7 @@ whoisBanned=§6 - Zablokován\:§r {0}
whoisCommandDescription=Zjistí uživatelské jméno ukryté pod přezdívkou.
whoisCommandUsage=/<command> <přezdívka>
whoisCommandUsage1=/<command> <hráč>
whoisCommandUsage1Description=Poskytne základní informace o určitém hráči
whoisExp=§6 - Zkušenosti\:§r {0} (Úroveň {1})
whoisFly=§6 - Létání\:§r {0} ({1})
whoisSpeed=§6 - Rychlost\:§r {0}
@@ -1292,9 +1510,20 @@ workbenchCommandUsage=/<command>
worldCommandDescription=Přepínání mezi světy.
worldCommandUsage=/<command> <svět>
worldCommandUsage1=/<command>
worldCommandUsage1Description=Teleportuje tě na odpovídající umístění v netheru nebo v overworldu
worldCommandUsage2=/<command> <svět>
worldCommandUsage2Description=Teleportuje tě na umístění v daném světě
worth=§aStack {0} ceny §c{1}§a ({2} kus(u) za {3} kus)
worthCommandDescription=Vypočte hodnotu předmětů v ruce nebo předmětů zadaných.
worthCommandUsage=/<command> <<název_předmětu>|<id>|hand|inventory|blocks> [-][počet]
worthCommandUsage1=/<command> <jméno předmětu> [množství]
worthCommandUsage1Description=Spočítá hodnotu všech (nebo daného množství, pokud je uvedeno) daných předmětů ve tvém inventáři
worthCommandUsage2=/<command> hand [množství]
worthCommandUsage2Description=Spočítá hodnotu všech (nebo daného množství, pokud je uvedeno) držených předmětů
worthCommandUsage3=/<příkaz> all
worthCommandUsage3Description=Spočítá hodnotu úplně všech předmětů ve tvém inventáři
worthCommandUsage4=/<command> blocks [množství]
worthCommandUsage4Description=Spočítá hodnotu všech (nebo daného množství, pokud je uvedeno) bloků ve tvém inventáři
worthMeta=§aStack {0} s metadaty {1} ceny §c{2}§a ({3} kus(u) za {4} kus)
worthSet=§6Cena nastavena
year=rok
@@ -75,7 +75,6 @@ cantGamemode=§4You do not have permission to change to gamemode {0}
cantReadGeoIpDB=Fejl ved læsning af GeoIP databasen\!
cantSpawnItem=§4Du har ikke tilladelse til at spawne denne ting§c {0}§4.
cartographytableCommandDescription=Åbner en kartografisk tabel.
chatTypeLocal=[L]
chatTypeSpy=[Spion]
cleaned=Brugerfiler blev renset.
cleaning=Renser brugerfiler.
@@ -298,7 +297,6 @@ listAmountHidden=§6Der er §c{0}§6/§c{1}§6 ud af maksimum §c{2}§6 spillere
listGroupTag=§6{0}§r\:
listHiddenTag=§7[SKJULT]§r
loadWarpError=§4Kunne ikke indlæse warp {0}.
localFormat=[L]<{0}> {1}
mailClear=§6For at markere alt post som læst, skriv§c /mail clear§6.
mailCleared=§6Mail Ryddet\!
mailDelay=For mange mails er blevet sendt inden for det sidste minut. Maksimum\: {0}
@@ -391,8 +389,6 @@ noPlacePermission=§4Du har ikke tilladelse til at placere en blok i nærheden a
noPotionEffectPerm=§4Du har ikke tilladelse til at tilføje effekten §c{0} §4til denne eliksir.
noPowerTools=§6Du har ingen magtværktøjer tildelt.
notAcceptingPay=§4{0} §4is not accepting payment.
notAllowedToQuestion=§4Du er ikke autoriseret til at bruge spørgsmål.
notAllowedToShout=§4Du er ikke autoriseret til at råbe.
notEnoughExperience=§4Du har ikke nok experience.
notEnoughMoney=§4Du har ikke tilstrækkelige midler.
notFlying=flyver ikke
@@ -9,9 +9,9 @@ adventure=Abenteuermodus
afkCommandDescription=Markiert dich als abwesend.
afkCommandUsage=/<command> [spieler/nachricht...]
afkCommandUsage1=/<command> [nachricht]
afkCommandUsage1Description=Schaltet deinen AFK Status mit einem optionalen Grund ein
afkCommandUsage1Description=Schaltet deinen AFK-Status mit einem optionalen Grund um
afkCommandUsage2=/<command> <player> [message]
afkCommandUsage2Description=Schaltet den AFK Status eines angegebenen Spieler mit einem optionalen Grund ein
afkCommandUsage2Description=Schaltet den AFK Status des angegebenen Spielers mit einem optionalen Grund ein
alertBroke=zerstört\:
alertFormat=§3[{0}] §r {1} §6 {2} bei\: {3}
alertPlaced=platziert\:
@@ -126,7 +126,6 @@ cantReadGeoIpDB=Fehler beim Einlesen der GeoIP-Datenbank\!
cantSpawnItem=§4Du darfst Gegenstand§c {0}§4 nicht erzeugen.
cartographytableCommandDescription=Öffnet einen Kartentisch.
cartographytableCommandUsage=/<command>
chatTypeLocal=[L]
chatTypeSpy=[Spion]
cleaned=Spielerdateien geleert.
cleaning=Säubere Spielerdateien.
@@ -143,6 +142,7 @@ clearinventoryCommandUsage3Description=Löscht alles (oder die angegebene Anzahl
clearinventoryconfirmtoggleCommandDescription=Bestimmt, ob du Inventarleerungen bestätigen musst.
clearinventoryconfirmtoggleCommandUsage=/<command>
commandArgumentOptional=§7
commandArgumentOr=§c
commandArgumentRequired=§e
commandCooldown=§cDu kannst diesen Command nicht ausführen für {0}.
commandDisabled=§cDer Befehl§6 {0}§c ist deaktiviert.
@@ -181,6 +181,7 @@ createkitCommandUsage1Description=Erstellt ein Kit mit angegebenen Namen und Abk
createKitFailed=§4Beim Erstellen des Kits ist ein Fehler aufgetreten {0}.
createKitSeparator=§m-----------------------
createKitSuccess=§6Kit erstellt\: §f{0}\n§6Verzögerung\: §f{1}\n§6Link\: §f{2}\n§6Es werden Inhalte aus dem oben stehenden Link in deine kits.yml kopiert.
createKitUnsupported=§4NBT-Item-Serialisierung wurde aktiviert, aber dieser Server läuft nicht unter Paper 1.15.2+. Gehe zurück zur Standardserialisierung.
creatingConfigFromTemplate=Erstelle Konfiguration aus der Vorlage\: {0}
creatingEmptyConfig=Erstelle eine leere Konfiguration\: {0}
creative=Kreativmodus
@@ -231,6 +232,18 @@ destinationNotSet=Ziel nicht gesetzt\!
disabled=deaktiviert
disabledToSpawnMob=§4Das Spawnen dieses Mobs ist in der Config deaktiviert.
disableUnlimited=Unbegrenztes Platzieren von§c {0}§6 für§c {1}§6 deaktiviert.
discordbroadcastCommandDescription=Sendet eine Nachricht an den angegebenen Discord-Kanal.
discordbroadcastCommandUsage=/<command> <channel> <msg>
discordbroadcastCommandUsage1=/<command> <channel> <msg>
discordbroadcastCommandUsage1Description=Sendet eine Nachricht an den angegebenen Discord-Kanal
discordbroadcastInvalidChannel=§4Discord Kanal §c{0}§4 existiert nicht.
discordbroadcastPermission=§4Du hast keine Berechtigung, Nachrichten an den angegebenen §c{0}§4 Kanal zu senden.
discordbroadcastSent=§6Nachricht gesendet an §c{0}§6\!
discordCommandDescription=Sendet die Discord Einladungslink an den Spieler.
discordCommandLink=§6Trete unserem Discord Server bei §c{0}§\!
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
discordCommandUsage1Description=Sendet die Discord Einladungslink an den Spieler
discordCommandExecuteDescription=Führt einen Konsolen-Befehl auf dem Minecraft-Server aus.
discordCommandExecuteArgumentCommand=Der auszuführende Befehl
discordCommandExecuteReply=Führe Befehl aus\: "/{0}"
@@ -243,22 +256,49 @@ discordErrorCommand=Du hast deinen Bot falsch zu deinem Server hinzugefügt. Bit
discordErrorCommandDisabled=Dieser Befehl ist deaktiviert\!
discordErrorLogin=Beim Anmelden in Discord ist ein Fehler aufgetreten, was dazu geführt hat, dass das Plugin sich selbst deaktiviert hat\: \n{0}
discordErrorLoggerInvalidChannel=Discord Konsolen-Protokollierung wurde aufgrund einer ungültigen Kanaldbeschreibung deaktiviert\! Wenn du vorhast sie zu deaktivieren, setze die Kanal-ID auf "none". Andernfalls überprüfe, ob deine Kanal-ID korrekt ist.
discordErrorLoggerNoPerms=Discord Konsolen-Logger wurde aufgrund unzureichenden Berechtigungen deaktiviert\! Bitte stelle sicher, dass dein Bot die "Manage Webhooks"-Berechtigung auf dem Server hat. Nach dem Beheben führen Sie "/ess reload" aus.
discordErrorNoGuild=Ungültige oder fehlende Server-ID\! Bitte folgen Sie dem Tutorial in der Konfiguration, um das Plugin einzurichten.
discordErrorNoGuildSize=Ihr Bot ist in keinem Server\! Bitte folgen Sie dem Tutorial in der Konfiguration, um das Plugin einzurichten.
discordErrorNoPerms=Dein Bot kann in keinem Kanal sehen oder sprechen\! Bitte stelle sicher, dass dein Bot Lese- und Schreibrechte in allen Kanälen besitzt, die du verwenden möchtest.
discordErrorNoPrimary=Sie haben keinen Primärkanal definiert oder Ihr Primärkanal ist ungültig. Zurückgesetzt auf den Standardkanal\: \#{0}.
discordErrorNoPrimaryPerms=Dein Bot kann nicht in deinem Primärkanal \#{0} sprechen. Bitte stelle sicher, dass dein Bot Lese- und Schreibrechte in allen Kanälen besitzt, die du verwenden möchtest.
discordErrorNoToken=Kein Token bereitgestellt\! Bitte folgen Sie dem Tutorial in der Konfiguration, um das Plugin einzurichten.
discordErrorWebhook=Beim Senden von Nachrichten an Ihren Konsolenkanal ist ein Fehler aufgetreten\! Dies wurde wahrscheinlich durch das versehentliche Löschen Ihres Webhook der Konsole verursacht. Dies kann üblicherweise durch das Überprüfen der "Manage Webhooks"-Berechtigung und dem Ausführen von "/ess reload" behoben werden.
discordLoggingIn=Versuche sich bei Discord anzumelden...
discordLoggingInDone=Erfolgreich angemeldet als {0}
discordNoSendPermission=Kann keine Nachricht im Kanal senden\: \#{0} Bitte stellen Sie sicher, dass der Bot die Berechtigung "Send Messages" in diesem Kanal hat\!
discordReloadInvalid=Versucht die EssentialsX Discord Konfiguration neu zu laden, während das Plugin in einem ungültigen Zustand ist\! Wenn du deine Konfiguration geändert hast, starte deinen Server neu.
disposal=Beseitigung
disposalCommandDescription=Öffnet ein portables Entsorgungsmenü.
disposalCommandUsage=/<command>
distance=§6Entfernung\: {0}
dontMoveMessage=§6Teleportvorgang startet in §c{0}§6. Eine Bewegung bricht die Teleportation ab.
downloadingGeoIp=GeoIP-Datenbank wird geladen... Das kann einen Moment in Anspruch nehmen. (country\: 1.7 MB, city\: 30MB)
dumpConsoleUrl=Ein Server Dump wurde erstellt\: §c{0}
dumpCreating=§6Erstelle Serverdump...
dumpDeleteKey=§6Wenn du diesen Speicherstand zu einem späteren Zeitpunkt löschen möchtest, benutze folgende Lösch-Taste\: §c{0}
dumpError=§4Fehler beim Erstellen des Speicherstands §c{0}§4.
dumpErrorUpload=§4Fehler beim Hochladen §c{0}§4\: §c{1}
dumpUrl=§6Serverdump\: §c{0} erstellt
duplicatedUserdata=Duplizierte Benutzerdaten\: {0} und {1}.
durability=§6Dieses Werkzeug kann noch §c{0}§6 mal benutzt werden.
east=O
ecoCommandDescription=Verwaltet die Sever-Wirtschaft.
ecoCommandUsage=/<command> <give|take|set|reset> <spieler> <anzahl>
ecoCommandUsage1=/<command> give <player> <amount>
ecoCommandUsage1Description=Gibt dem angegebenen Spieler den angegebenen Betrag an Geld
ecoCommandUsage2=/<command> take <player> <amount>
ecoCommandUsage2Description=Nimmt den angegebenen Geldbetrag vom angegebenen Spieler
ecoCommandUsage3=<command> set <player><amount>
ecoCommandUsage3Description=Setzt den angegebenen Spieler für die angegebene Anzahl von Sekunden in Brand
ecoCommandUsage4=<command> set <player><amount>
ecoCommandUsage4Description=Setzt den Guthaben des angegebenen Spielers auf den Startsaldo des Servers zurück
editBookContents=§eDu darfst den Inhalt dieses Buches jetzt bearbeiten.
enabled=aktiviert
enchantCommandDescription=Verzaubert den Gegenstand, den ein Benutzer hält.
enchantCommandUsage=/<command> <verzauberungsname> [level]
enchantCommandUsage1=/<command> <enchantment name> [level]
enchantCommandUsage1Description=Verzaubert deinen gehaltenen Gegenstand mit der angegebenen Verzauberung auf eine optionale Stufe
enableUnlimited=§6Du gibst §c{1}§6 eine unbegrenzte Menge an§c {0} §6.
enchantmentApplied=§6Der Gegenstand in deiner Hand wurde mit§c {0} §6verzaubert.
enchantmentNotFound=§4Verzauberung nicht gefunden\!
@@ -270,22 +310,35 @@ enderchestCommandUsage=/<command> [spieler]
enderchestCommandUsage1=/<command>
enderchestCommandUsage1Description=Öffnet deine Enderkiste
enderchestCommandUsage2=/<command> <spieler>
enderchestCommandUsage2Description=Öffnet die Enderkiste des Spielers deiner Wahl
errorCallingCommand=Beim Aufrufen des Befehls {0} ist ein Fehler aufgetreten.
errorWithMessage=§cFehler\:§4 {0}
essentialsCommandDescription=Lädt Essentials neu.
essentialsCommandUsage=/<command>
essentialsCommandUsage1=/<command> reload
essentialsCommandUsage1Description=Lädt die Konfiguration von Essentials neu
essentialsCommandUsage2=/<command> version
essentialsCommandUsage2Description=Gibt Informationen über die Essentials Version
essentialsCommandUsage3=/<command> commands
essentialsCommandUsage3Description=Gibt Informationen darüber, welche Befehle von Essentials weitergeleitet werden
essentialsCommandUsage4=/<command> debug
essentialsCommandUsage4Description=Schaltet in den Essentials "Debug-Modus" um
essentialsCommandUsage5=/<command> reset <player>
essentialsCommandUsage5Description=Setzt die Benutzerdaten des angegebenen Spielers zurück
essentialsCommandUsage6=/<command> cleanup
essentialsCommandUsage6Description=Löscht alte Benutzerdaten
essentialsCommandUsage7=/<command> homes
essentialsCommandUsage8=/<command> dump [all] [config] [discord] [kits] [log]
essentialsHelp1=Die Datei ist beschädigt und Essentials kann sie nicht öffnen. Essentials ist jetzt deaktiviert. Wenn du die Datei selbst nicht reparieren kannst, gehe auf http\://tiny.cc/EssentialsChat
essentialsHelp2=Die Datei ist beschädigt und Essentials kann sie nicht öffnen. Essentials ist jetzt deaktiviert. Wenn du die Datei selbst nicht reparieren kannst, versuche /essentialshelp oder gehe auf http\://tiny.cc/EssentialsChat
essentialsReload=§6Essentials wurde neu geladen§c {0}.
exp=§c{0} §6hat§c {1} §6Exp (Level§c {2}§6) und braucht§c {3} §6Punkte für das nächste Level.
expCommandDescription=Gebe, setze, setze zurück, oder schaue die Erfahrung eines Spielers an.
expCommandUsage=/<command> [reset|show|set|give] [spielername [anzahl]]
expCommandUsage1=/<command> give <player> <amount>
expCommandUsage2=/<command> set <playername> <amount>
expCommandUsage3=/<command> show <playername>
expCommandUsage5=/<command> reset <playername>
expCommandUsage5Description=Setzt die XP des Zielspielers auf 0 zurück
expSet=§c{0} §6hat jetzt§c {1} §6Exp.
extCommandDescription=Spieler auslöschen.
@@ -308,11 +361,18 @@ fireballCommandDescription=Werfe einen Feuerball oder andere verschiedene Projek
fireballCommandUsage=/<command> [fireball|small|large|arrow|skull|egg|snowball|expbottle|dragon|splashpotion|lingeringpotion|trident] [Geschwindigkeit]
fireballCommandUsage1=/<command>
fireballCommandUsage1Description=Wirft einen regulären Feuerball von deinem Standort aus
fireballCommandUsage2=/<command> <fireball|small|large|arrow|skull|egg|snowball|expbottle|dragon|splashpotion|lingeringpotion|trident> [speed]
fireworkColor=§4Ungültige Feuerwerksparameter angegeben. Du musst zuerst eine Farbe festlegen.
fireworkCommandDescription=Erlaubt dir, einen Feuerwerks-Stapel zu modifizieren.
fireworkCommandUsage=/<command> <<meta parameter>|power [anzahl]|clear|fire [anzahl]>
fireworkCommandUsage1=/<command> clear
fireworkCommandUsage1Description=Löscht alle Effekte von deinem gehaltenen Feuerwerk
fireworkCommandUsage2=/<command> power <amount>
fireworkCommandUsage3=/<command> fire [amount]
fireworkCommandUsage4=/<command> <meta>
fireworkEffectsCleared=§6Alle Effekte wurden vom Stapel, den du in der Hand hast, entfernt.
fireworkSyntax=§6Feuerwerk-Parameter\:§c color\:<Farbe> [fade\:<Farbe>] [shape\:<Form>] [effect\:<Effekt>]\n§6Um mehrere Farben/Effekte zu benutzen, musst du sie mit Komma trennen\: §cred,blue,pink\n§6Formen\:§c star, ball, large, creeper, burst §6Effekte\:§c trail, twinkle.
fixedHomes=Ungültige Homes gelöscht.
flyCommandDescription=Abheben, in die Höhe\!
flyCommandUsage=/<command> [spieler] [on|off]
flyCommandUsage1=/<command> [spieler]
@@ -340,6 +400,7 @@ getposCommandUsage1=/<command> [spieler]
giveCommandDescription=Gebe einem Spieler einen Gegenstand.
giveCommandUsage=/<command> <spieler> <gegenstand|numerisch> [anzahl [gegenstandsmeta...]]
giveCommandUsage1=/<command> <player> <item> [amount]
giveCommandUsage2=/<command> <player> <item> <amount> <meta>
geoipCantFind=§6Spieler§c {0}§6 kommt aus§a einem unbekannten Land§6.
geoIpErrorOnJoin=GeoIP-Daten für {0} konnten nicht abgerufen werden. Bitte stelle sicher, dass der Lizenzschlüssel und die Konfiguration korrekt sind.
geoIpLicenseMissing=Kein Lizenzschlüssel gefunden\! Bitte besuche https\://essentialsx.net/geoip für Ersteinrichtungsanweisungen.
@@ -362,6 +423,7 @@ hatArmor=§4Du kannst diesen Gegenstand nicht als Hut verwenden\!
hatCommandDescription=Erhalte cooles neues Kopfgerät.
hatCommandUsage=/<command> [remove]
hatCommandUsage1=/<command>
hatCommandUsage2=/<command> remove
hatCurse=§4Du kannst keinen Hut mit dem Fluch der Bindung entfernen\!
hatEmpty=§4Du trägst keinen Hut.
hatFail=§4Du musst einen Gegenstand in der Hand halten.
@@ -401,6 +463,7 @@ hours=Stunden
iceCommandUsage=/<command> [spieler]
iceCommandUsage1=/<command>
iceCommandUsage2=/<command> <spieler>
iceCommandUsage3=/<command> *
ignoreCommandDescription=Andere Spieler nicht ignorieren oder ignorieren.
ignoreCommandUsage=/<command> <spieler>
ignoreCommandUsage1=/<command> <spieler>
@@ -448,6 +511,7 @@ itemId=§6ID\:§c {0}
itemloreClear=§6Du hast die Beschreibung dieses Gegenstands geleert.
itemloreCommandDescription=Die Beschreibung eines Gegenstand bearbeiten.
itemloreCommandUsage=/<command> <add/set/clear> [text/zeile] [text]
itemloreCommandUsage3=/<command> clear
itemloreInvalidItem=§4Du must einen Gegenstand halten um seine Beschreibung zu bearbeiten.
itemloreNoLine=§4Dein gehaltener Gegenstand hat keinen Beschreibungstect in Zeile §c{0}§4.
itemloreNoLore=§4Dein gehaltener Gegenstand hat keinen Beschreibungstext.
@@ -459,7 +523,9 @@ itemnameClear=§6Du hast den Namen dieses Gegenstands entfernt.
itemnameCommandDescription=Bennent einen Gegenstand.
itemnameCommandUsage=/<command> [Name]
itemnameCommandUsage1=/<command>
itemnameCommandUsage1Description=Löscht den Namen des gehaltenen Gegenstands
itemnameCommandUsage2=/<command> <name>
itemnameCommandUsage2Description=Setzt den Namen des gehaltenen Gegenstands zu dem gegebenen Text
itemnameInvalidItem=§cDu musst ein Item halten, um es umzubenennen.
itemnameSuccess=§Du hast dein gehaltenes Item zu "§c{0}§6" umbenannt.
itemNotEnough1=§4Du hast nicht genug Gegenstände zu verkaufen.
@@ -533,6 +599,7 @@ leatherSyntax=§6Lederfarben-Syntax\:§c color\:<rot>,<grün>,<blau>, z.B.\: col
lightningCommandDescription=Die Kraft von Thor. Schlag auf den Cursor oder Spieler.
lightningCommandUsage=/<command> [spieler] [kraft]
lightningCommandUsage1=/<command> [spieler]
lightningCommandUsage2=/<command> <player> <power>
lightningSmited=§6Du wurdest gepeinigt.
lightningUse=§6Peinige §c{0}
listAfkTag=§7[Abwesend]§r
@@ -544,12 +611,18 @@ listCommandUsage1=/<command> [Gruppe]
listGroupTag=§6{0}§r\:
listHiddenTag=§7[Versteckt]§r
loadWarpError=§4Beim Laden von Warp-Punkt §c{0}§6 ist ein Fehler aufgetreten.
localFormat=[L]<{0}> {1}
loomCommandDescription=Öffnet einen Webstuhl.
loomCommandUsage=/<command>
mailClear=§6Um deine Nachrichten zu löschen, schreibe§c /mail clear.
mailCleared=§6Nachrichten wurden gelöscht\!
mailCommandDescription=Verwaltet inter-spieler, intra-server Nachrichten.
mailCommandUsage=/<command> [read|clear|clear [number]|send [to] [message]|sendtemp [to] [expire time] [message]|sendall [message]]
mailCommandUsage1=/<command> read [page]
mailCommandUsage2=/<command> clear [number]
mailCommandUsage3=/<command> send <player> <message>
mailCommandUsage4=/<command> sendall <message>
mailCommandUsage5=/<command> sendtemp <player> <expire time> <message>
mailCommandUsage6=/<command> sendtempall <expire time> <message>
mailDelay=In der letzten Minute wurden zu viele Nachrichten gesendet. Maximum\: {0}
mailFormat=§6[§r{0}§6] §r{1}
mailMessage={0}
@@ -667,8 +740,6 @@ noPlacePermission=§cDu bist nicht berechtigt, einen Block in der Nähe des Schi
noPotionEffectPerm=§4Du darfst den Zaubertrankeffekt §c{0} §4diesem Trank nicht hinzufügen.
noPowerTools=§6Du hast keine Powertools zugewiesen.
notAcceptingPay=§4{0} §4akzeptiert keine Zahlungen.
notAllowedToQuestion=§4Du bist nicht berechtigt zu fragen.
notAllowedToShout=§4Du bist nicht berechtigt zu schreien.
notEnoughExperience=§4Du hast nicht genug Erfahrung.
notEnoughMoney=§4Du hast nicht genug Guthaben.
notFlying=fliegt nicht
@@ -709,7 +780,7 @@ pingCommandDescription=§b..\:\:§4Pông§b\:\:..\!
pingCommandUsage=/<command>
playerBanIpAddress=§6Spieler§c {0} §6hat die IP-Adresse§c {1} §6für\: §c{2} §6gesperrt.
playerTempBanIpAddress=§6Spieler§c {0} §6sperrte IP-Adresse §c{1}§6 temporär für §c{2}§6\: §c{3}§6.
playerBanned=\\u00a76Spieler\\u00a7c {0}\\u00a76 hat\\u00a7c {1}\\u00a76 wegen\\u00a7c {2}\\u00a76 gebannt.
playerBanned=§6Spieler§c {0} §6hat§c {1} §6wegen§c {2} §6gebannt.
playerJailed=§6Spieler§c {0} §6eingesperrt.
playerJailedFor=§6Spieler§c {0}§6für§c {1}§6 eingesperrt.
playerKicked=§6Spieler§c {0}§6 hat§c {1}§6 für§c {2}§6 gekickt.
@@ -723,11 +794,15 @@ playerTempBanned=§6Spieler§c {0}§6 hat§c {1}§6 temporär für§c {2}§6 ges
playerUnbanIpAddress=§6Spieler§c {0}§6 hat IP entsperrt\:§c {1}
playerUnbanned=§6Spieler§c {0} §6hat§c {1}§6 entsperrt
playerUnmuted=§6Du bist nicht mehr gemutet.
playtimeCommandUsage=/<command> [spieler]
playtimeCommandUsage1=/<command>
playtimeCommandUsage2=/<command> <spieler>
pong=§b..\:\:§4Pông§b\:\:..\!
posPitch=§6Pitch\: {0} (Neigewinkel)
possibleWorlds=§6Mögliche Welten sind die Nummern §c0§6 bis §c{0}§6.
potionCommandDescription=Fügt einem Trank benutzerdefinierte Effekte hinzu.
potionCommandUsage=/<command> <clear|apply|effect\:<Effekt> power\:<Stärke> duration\:<Dauer>>
potionCommandUsage1=/<command> clear
posX=§6X\: {0} (+Ost <-> -West)
posY=§6Y\: {0} (+Hoch <-> -Runter)
posYaw=§6Yaw\: {0} (Drehung)
@@ -999,9 +1074,10 @@ tpacancelCommandDescription=Alle ausstehenden Teleportierungsanfragen abbrechen.
tpacancelCommandUsage=/<command> [spieler]
tpacancelCommandUsage1=/<command>
tpacancelCommandUsage2=/<command> <spieler>
tpacceptCommandDescription=Anzeptiert eine Teleportationsanfrage.
tpacceptCommandUsage=/<command> [andererspieler]
tpacceptCommandUsage1=/<command>
tpacceptCommandUsage2=/<command> <spieler>
tpacceptCommandUsage3=/<command> *
tpahereCommandDescription=Bittet den angegebenen Spieler, sich zu dir zu teleportieren.
tpahereCommandUsage=/<command> <spieler>
tpahereCommandUsage1=/<command> <spieler>
@@ -1011,9 +1087,10 @@ tpallCommandUsage1=/<command> [spieler]
tpautoCommandDescription=Akzeptiere Teleportationsanfragen automatisch.
tpautoCommandUsage=/<command> [spieler]
tpautoCommandUsage1=/<command> [spieler]
tpdenyCommandDescription=Eine Teleportationsanfrage ablehnen.
tpdenyCommandUsage=/<command>
tpdenyCommandUsage1=/<command>
tpdenyCommandUsage2=/<command> <spieler>
tpdenyCommandUsage3=/<command> *
tphereCommandDescription=Teleportiere einen Spieler zu dir.
tphereCommandUsage=/<command> <spieler>
tphereCommandUsage1=/<command> <spieler>
@@ -106,7 +106,6 @@ cantReadGeoIpDB=Απέτυχε η ανάγνωση της GeoIP βάσης δε
cantSpawnItem=§4Δεν επιτρέπεται η εμφάνιση του αντικειμένου§c {0}§4.
cartographytableCommandDescription=Ανοίγει ένα τραπέζι χαρτογραφίας.
cartographytableCommandUsage=/<command>
chatTypeLocal=[L]
chatTypeSpy=[Spy]
cleaned=Τα Αρχεία Χρήστη Διαγράφτηκαν.
cleaning=Διαγραφή των αρχείων χρήστη.
@@ -168,6 +167,8 @@ depthAboveSea=§6Βρίσκεσται§c {0} §6κύβο(ους) πάνω από
depthBelowSea=§6Βρίσκεσται§c {0} §6κύβο(ους) κάτω από το επίπεδο της θάλασσας.
destinationNotSet=Προορισμός δεν ορίστηκε\!
disabled=απενεργοποιημένο
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
disposalCommandUsage=/<command>
distance=§6Απόσταση\: {0}
dontMoveMessage=§6Η τηλεμεταφορά θα ξεκινήσει σε§c {0}§6. Μην κουνηθείτε.
@@ -289,6 +290,8 @@ payconfirmtoggleCommandUsage=/<command>
paytoggleCommandUsage=/<command> [παίκτης]
paytoggleCommandUsage1=/<command> [παίκτης]
pingCommandUsage=/<command>
playtimeCommandUsage=/<command> [παίκτης]
playtimeCommandUsage1=/<command>
powertooltoggleCommandUsage=/<command>
recipeNothing=τίποτα
repairCommandUsage1=/<command>
@@ -126,7 +126,7 @@ cantReadGeoIpDB=Failed to read GeoIP database\!
cantSpawnItem=§4You are not allowed to spawn the item§c {0}§4.
cartographytableCommandDescription=Opens up a cartography table.
cartographytableCommandUsage=/<command>
chatTypeLocal=[L]
chatTypeLocal=§3[L]
chatTypeSpy=[Spy]
cleaned=Userfiles Cleaned.
cleaning=Cleaning userfiles.
@@ -143,6 +143,7 @@ clearinventoryCommandUsage3Description=Clears all (or the specified amount) of t
clearinventoryconfirmtoggleCommandDescription=Toggles whether you are prompted to confirm inventory clears.
clearinventoryconfirmtoggleCommandUsage=/<command>
commandArgumentOptional=§7
commandArgumentOr=§c
commandArgumentRequired=§e
commandCooldown=§cYou cannot type that command for {0}.
commandDisabled=§cThe command§6 {0}§c is disabled.
@@ -232,6 +233,18 @@ destinationNotSet=Destination not set\!
disabled=disabled
disabledToSpawnMob=§4Spawning this mob was disabled in the config file.
disableUnlimited=§6Disabled unlimited placing of§c {0} §6for§c {1}§6.
discordbroadcastCommandDescription=Broadcasts a message to the specified Discord channel.
discordbroadcastCommandUsage=/<command> <channel> <msg>
discordbroadcastCommandUsage1=/<command> <channel> <msg>
discordbroadcastCommandUsage1Description=Sends the given message to the specified Discord channel
discordbroadcastInvalidChannel=§4Discord channel §c{0}§4 does not exist.
discordbroadcastPermission=§4You do not have permission to send messages to the §c{0}§4 channel.
discordbroadcastSent=§6Message sent to §c{0}§6\!
discordCommandDescription=Sends the Discord invite link to the player.
discordCommandLink=§6Join our Discord server at §c{0}§6\!
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
discordCommandUsage1Description=Sends the Discord invite link to the player
discordCommandExecuteDescription=Executes a console command on the Minecraft server.
discordCommandExecuteArgumentCommand=The command to be executed
discordCommandExecuteReply=Executing command\: "/{0}"
@@ -248,6 +261,8 @@ discordErrorLoggerNoPerms=Discord console logger has been disabled due to insuff
discordErrorNoGuild=Invalid or missing server ID\! Please follow the tutorial in the config in order to setup the plugin.
discordErrorNoGuildSize=Your bot is not in any servers\! Please follow the tutorial in the config in order to setup the plugin.
discordErrorNoPerms=Your bot cannot see or talk in any channel\! Please make sure your bot has read and write permissions in all channels you wish to use.
discordErrorNoPrimary=You did not define a primary channel or your defined primary channel is invalid. Falling back to the default channel\: \#{0}.
discordErrorNoPrimaryPerms=Your bot cannot speak in your primary channel, \#{0}. Please make sure your bot has read and write permissions in all channels you wish to use.
discordErrorNoToken=No token provided\! Please follow the tutorial in the config in order to setup the plugin.
discordErrorWebhook=An error occurred while sending messages to your console channel\! This was likely caused by accidentally deleting your console webhook. This can usually by fixed by ensuring your bot has the "Manage Webhooks" permission and running "/ess reload".
discordLoggingIn=Attempting to login to Discord...
@@ -260,6 +275,12 @@ disposalCommandUsage=/<command>
distance=§6Distance\: {0}
dontMoveMessage=§6Teleportation will commence in§c {0}§6. Don''t move.
downloadingGeoIp=Downloading GeoIP database... this might take a while (country\: 1.7 MB, city\: 30MB)
dumpConsoleUrl=A server dump was created\: §c{0}
dumpCreating=§6Creating server dump...
dumpDeleteKey=§6If you want to delete this dump at a later date, use the following deletion key\: §c{0}
dumpError=§4Error while creating dump §c{0}§4.
dumpErrorUpload=§4Error while uploading §c{0}§4\: §c{1}
dumpUrl=§6Created server dump\: §c{0}
duplicatedUserdata=Duplicated userdata\: {0} and {1}.
durability=§6This tool has §c{0}§6 uses left.
east=E
@@ -309,6 +330,8 @@ essentialsCommandUsage6=/<command> cleanup
essentialsCommandUsage6Description=Cleans up old userdata
essentialsCommandUsage7=/<command> homes
essentialsCommandUsage7Description=Manages user homes
essentialsCommandUsage8=/<command> dump [all] [config] [discord] [kits] [log]
essentialsCommandUsage8Description=Generates a server dump with the requested information
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=§6Essentials reloaded§c {0}.
@@ -565,6 +588,9 @@ jailAlreadyIncarcerated=§4Person is already in jail\:§c {0}
jailList=§6Jails\:§r {0}
jailMessage=§4You do the crime, you do the time.
jailNotExist=§4That jail does not exist.
jailNotifyJailed=§6Player§c {0} §6jailed by §c{1}.
jailNotifyJailedFor=§6Player§c {0} §6jailed for§c {1}§6by §c{2}§6.
jailNotifySentenceExtended=§6Player§c{0}§6''s jail time extended to §c{1} §6by §c{2}§6.
jailReleased=§6Player §c{0}§6 unjailed.
jailReleasedPlayerNotify=§6You have been released\!
jailSentenceExtended=§6Jail time extended to §c{0}§6.
@@ -641,8 +667,9 @@ listCommandUsage1=/<command> [group]
listCommandUsage1Description=Lists all players on the server, or the given group if specified
listGroupTag=§6{0}§r\:
listHiddenTag=§7[HIDDEN]§r
listRealName=({0})
loadWarpError=§4Failed to load warp {0}.
localFormat=[L]<{0}> {1}
localFormat=§3[L] §r<{0}> {1}
loomCommandDescription=Opens up a loom.
loomCommandUsage=/<command>
mailClear=§6To clear your mail, type§c /mail clear§6.
@@ -660,6 +687,8 @@ mailCommandUsage4=/<command> sendall <message>
mailCommandUsage4Description=Sends all players the given message
mailCommandUsage5=/<command> sendtemp <player> <expire time> <message>
mailCommandUsage5Description=Sends the specified player the given message which will expire in the specified time
mailCommandUsage6=/<command> sendtempall <expire time> <message>
mailCommandUsage6Description=Sends all players the given message which will expire in the specified time
mailDelay=Too many mails have been sent within the last minute. Maximum\: {0}
mailFormatNew=§6[§r{0}§6] §6[§r{1}§6] §r{2}
mailFormatNewTimed=§6[§e⚠§6] §6[§r{0}§6] §6[§r{1}§6] §r{2}
@@ -749,6 +778,7 @@ nearCommandUsage3Description=Lists all players within the default near radius of
nearCommandUsage4=/<command> <player> <radius>
nearCommandUsage4Description=Lists all players within the given radius of the specified player
nearbyPlayers=§6Players nearby\:§r {0}
nearbyPlayersList={0}§f(§c{1}m§f)
negativeBalanceError=§4User is not allowed to have a negative balance.
nickChanged=§6Nickname changed.
nickCommandDescription=Change your nickname or that of another player.
@@ -802,8 +832,9 @@ noPlacePermission=§4You do not have permission to place a block near that sign.
noPotionEffectPerm=§4You do not have permission to apply potion effect §c{0} §4to this potion.
noPowerTools=§6You have no power tools assigned.
notAcceptingPay=§4{0} §4is not accepting payment.
notAllowedToQuestion=§4You are not authorized to use question.
notAllowedToShout=§4You are not authorized to shout.
notAllowedToLocal=§4You don''t have permission to speak in local chat.
notAllowedToQuestion=§4You don''t have permission to ask a question.
notAllowedToShout=§4You don''t have permission to shout.
notEnoughExperience=§4You do not have enough experience.
notEnoughMoney=§4You do not have sufficient funds.
notFlying=not flying
@@ -862,6 +893,14 @@ playerTempBanned=§6Player §c{0}§6 temporarily banned §c{1}§6 for §c{2}§6\
playerUnbanIpAddress=§6Player§c {0} §6unbanned IP\:§c {1}
playerUnbanned=§6Player§c {0} §6unbanned§c {1}
playerUnmuted=§6You have been unmuted.
playtimeCommandDescription=Shows a player''s time played in game
playtimeCommandUsage=/<command> [player]
playtimeCommandUsage1=/<command>
playtimeCommandUsage1Description=Shows your time played in game
playtimeCommandUsage2=/<command> <player>
playtimeCommandUsage2Description=Shows the specified player''s time played in game
playtime=§6Playtime\:§c {0}
playtimeOther=§6Playtime of {1}§6\:§c {0}
pong=Pong\!
posPitch=§6Pitch\: {0} (Head angle)
possibleWorlds=§6Possible worlds are the numbers §c0§6 through §c{0}§6.
@@ -985,14 +1024,17 @@ replyLastRecipientDisabledFor=§6Replying to last message recipient §cdisabled
replyLastRecipientEnabled=§6Replying to last message recipient §cenabled§6.
replyLastRecipientEnabledFor=§6Replying to last message recipient §cenabled §6for §c{0}§6.
requestAccepted=§6Teleport request accepted.
requestAcceptedAll=§6Accepted §c{0} §6pending teleport request(s).
requestAcceptedAuto=§6Automatically accepted a teleport request from {0}.
requestAcceptedFrom=§c{0} §6accepted your teleport request.
requestAcceptedFromAuto=§c{0} §6accepted your teleport request automatically.
requestDenied=§6Teleport request denied.
requestDeniedAll=§6Denied §c{0} §6pending teleport request(s).
requestDeniedFrom=§c{0} §6denied your teleport request.
requestSent=§6Request sent to§c {0}§6.
requestSentAlready=§4You have already sent {0}§4 a teleport request.
requestTimedOut=§4Teleport request has timed out.
requestTimedOutFrom=§4Teleport request from §c{0} §4has timed out.
resetBal=§6Balance has been reset to §c{0} §6for all online players.
resetBalAll=§6Balance has been reset to §c{0} §6for all players.
rest=§6You feel well rested.
@@ -1252,10 +1294,14 @@ tpacancelCommandUsage1=/<command>
tpacancelCommandUsage1Description=Cancels all your outstanding teleport requests
tpacancelCommandUsage2=/<command> <player>
tpacancelCommandUsage2Description=Cancels all your outstanding teleport request with the specified player
tpacceptCommandDescription=Accepts a teleport request.
tpacceptCommandDescription=Accepts teleport requests.
tpacceptCommandUsage=/<command> [otherplayer]
tpacceptCommandUsage1=/<command>
tpacceptCommandUsage1Description=Accepts an incoming teleport request
tpacceptCommandUsage1Description=Accepts the most recent teleport request
tpacceptCommandUsage2=/<command> <player>
tpacceptCommandUsage2Description=Accepts a teleport request from the specified player
tpacceptCommandUsage3=/<command> *
tpacceptCommandUsage3Description=Accepts all teleport requests
tpahereCommandDescription=Request that the specified player teleport to you.
tpahereCommandUsage=/<command> <player>
tpahereCommandUsage1=/<command> <player>
@@ -1268,10 +1314,14 @@ tpautoCommandDescription=Automatically accept teleportation requests.
tpautoCommandUsage=/<command> [player]
tpautoCommandUsage1=/<command> [player]
tpautoCommandUsage1Description=Toggles if tpa requests are auto accepted for yourself or another player if specified
tpdenyCommandDescription=Reject a teleport request.
tpdenyCommandDescription=Rejects teleport requests.
tpdenyCommandUsage=/<command>
tpdenyCommandUsage1=/<command>
tpdenyCommandUsage1Description=Rejects an incoming teleport request
tpdenyCommandUsage1Description=Rejects the most recent teleport request
tpdenyCommandUsage2=/<command> <player>
tpdenyCommandUsage2Description=Rejects a teleport request from the specified player
tpdenyCommandUsage3=/<command> *
tpdenyCommandUsage3Description=Rejects all teleport requests
tphereCommandDescription=Teleport a player to you.
tphereCommandUsage=/<command> <player>
tphereCommandUsage1=/<command> <player>
@@ -126,7 +126,7 @@ cantReadGeoIpDB=Failed to read GeoIP database\!
cantSpawnItem=§4You are not allowed to spawn the item§c {0}§4.
cartographytableCommandDescription=Opens up a cartography table.
cartographytableCommandUsage=/<command>
chatTypeLocal=[L]
chatTypeLocal=§3[L]
chatTypeSpy=[Spy]
cleaned=Userfiles Cleaned.
cleaning=Cleaning userfiles.
@@ -143,6 +143,7 @@ clearinventoryCommandUsage3Description=Clears all (or the specified amount) of t
clearinventoryconfirmtoggleCommandDescription=Toggles whether you are prompted to confirm inventory clears.
clearinventoryconfirmtoggleCommandUsage=/<command>
commandArgumentOptional=§7
commandArgumentOr=§c
commandArgumentRequired=§e
commandCooldown=§cYou cannot type that command for {0}.
commandDisabled=§cThe command§6 {0}§c is disabled.
@@ -150,7 +151,7 @@ commandFailed=Command {0} failed\:
commandHelpFailedForPlugin=Error getting help for plugin\: {0}
commandHelpLine1=§6Command Help\: §f/{0}
commandHelpLine2=§6Description\: §f{0}
commandHelpLine3=§6Usage(s);
commandHelpLine3=§6Usage(s)\:
commandHelpLine4=§6Aliases(s)\: §f{0}
commandHelpLineUsage={0} §6- {1}
commandNotLoaded=§4Command {0} is improperly loaded.
@@ -232,6 +233,18 @@ destinationNotSet=Destination not set\!
disabled=disabled
disabledToSpawnMob=§4Spawning this mob was disabled in the config file.
disableUnlimited=§6Disabled unlimited placing of§c {0} §6for§c {1}§6.
discordbroadcastCommandDescription=Broadcasts a message to the specified Discord channel.
discordbroadcastCommandUsage=/<command> <channel> <msg>
discordbroadcastCommandUsage1=/<command> <channel> <msg>
discordbroadcastCommandUsage1Description=Sends the given message to the specified Discord channel
discordbroadcastInvalidChannel=§4Discord channel §c{0}§4 does not exist.
discordbroadcastPermission=§4You do not have permission to send messages to the §c{0}§4 channel.
discordbroadcastSent=§6Message sent to §c{0}§6\!
discordCommandDescription=Sends the Discord invite link to the player.
discordCommandLink=§6Join our Discord server at §c{0}§6\!
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
discordCommandUsage1Description=Sends the Discord invite link to the player
discordCommandExecuteDescription=Executes a console command on the Minecraft server.
discordCommandExecuteArgumentCommand=The command to be executed
discordCommandExecuteReply=Executing command\: "/{0}"
@@ -248,6 +261,8 @@ discordErrorLoggerNoPerms=Discord console logger has been disabled due to insuff
discordErrorNoGuild=Invalid or missing server ID\! Please follow the tutorial in the config in order to setup the plugin.
discordErrorNoGuildSize=Your bot is not in any servers\! Please follow the tutorial in the config in order to setup the plugin.
discordErrorNoPerms=Your bot cannot see or talk in any channel\! Please make sure your bot has read and write permissions in all channels you wish to use.
discordErrorNoPrimary=You did not define a primary channel or your defined primary channel is invalid. Falling back to the default channel\: \#{0}.
discordErrorNoPrimaryPerms=Your bot cannot speak in your primary channel, \#{0}. Please make sure your bot has read and write permissions in all channels you wish to use.
discordErrorNoToken=No token provided\! Please follow the tutorial in the config in order to setup the plugin.
discordErrorWebhook=An error occurred while sending messages to your console channel\! This was likely caused by accidentally deleting your console webhook. This can usually by fixed by ensuring your bot has the "Manage Webhooks" permission and running "/ess reload".
discordLoggingIn=Attempting to login to Discord...
@@ -260,6 +275,12 @@ disposalCommandUsage=/<command>
distance=§6Distance\: {0}
dontMoveMessage=§6Teleportation will commence in§c {0}§6. Don''t move.
downloadingGeoIp=Downloading GeoIP database... this might take a while (country\: 1.7 MB, city\: 30MB)
dumpConsoleUrl=A server dump was created\: §c{0}
dumpCreating=§6Creating server dump...
dumpDeleteKey=§6If you want to delete this dump at a later date, use the following deletion key\: §c{0}
dumpError=§4Error while creating dump §c{0}§4.
dumpErrorUpload=§4Error while uploading §c{0}§4\: §c{1}
dumpUrl=§6Created server dump\: §c{0}
duplicatedUserdata=Duplicated userdata\: {0} and {1}.
durability=§6This tool has §c{0}§6 uses left.
east=E
@@ -309,6 +330,8 @@ essentialsCommandUsage6=/<command> cleanup
essentialsCommandUsage6Description=Cleans up old userdata
essentialsCommandUsage7=/<command> homes
essentialsCommandUsage7Description=Manages user homes
essentialsCommandUsage8=/<command> dump [all] [config] [discord] [kits] [log]
essentialsCommandUsage8Description=Generates a server dump with the requested information
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=§6Essentials reloaded§c {0}.
@@ -565,6 +588,9 @@ jailAlreadyIncarcerated=§4Person is already in jail\:§c {0}
jailList=§6Jails\:§r {0}
jailMessage=§4You do the crime, you do the time.
jailNotExist=§4That jail does not exist.
jailNotifyJailed=§6Player§c {0} §6jailed by §c{1}.
jailNotifyJailedFor=§6Player§c {0} §6jailed for§c {1}§6by §c{2}§6.
jailNotifySentenceExtended=§6Player§c{0}§6''s jail time extended to §c{1} §6by §c{2}§6.
jailReleased=§6Player §c{0}§6 unjailed.
jailReleasedPlayerNotify=§6You have been released\!
jailSentenceExtended=§6Jail time extended to §c{0}§6.
@@ -641,8 +667,9 @@ listCommandUsage1=/<command> [group]
listCommandUsage1Description=Lists all players on the server, or the given group if specified
listGroupTag=§6{0}§r\:
listHiddenTag=§7[HIDDEN]§r
listRealName=({0})
loadWarpError=§4Failed to load warp {0}.
localFormat=[L]<{0}> {1}
localFormat=§3[L] §r<{0}> {1}
loomCommandDescription=Opens up a loom.
loomCommandUsage=/<command>
mailClear=§6To mark your mail as read, type§c /mail clear§6.
@@ -660,6 +687,8 @@ mailCommandUsage4=/<command> sendall <message>
mailCommandUsage4Description=Sends all players the given message
mailCommandUsage5=/<command> sendtemp <player> <expire time> <message>
mailCommandUsage5Description=Sends the specified player the given message which will expire in the specified time
mailCommandUsage6=/<command> sendtempall <expire time> <message>
mailCommandUsage6Description=Sends all players the given message which will expire in the specified time
mailDelay=Too many mails have been sent within the last minute. Maximum\: {0}
mailFormatNew=§6[§r{0}§6] §6[§r{1}§6] §r{2}
mailFormatNewTimed=§6[§e⚠§6] §6[§r{0}§6] §6[§r{1}§6] §r{2}
@@ -749,6 +778,7 @@ nearCommandUsage3Description=Lists all players within the default near radius of
nearCommandUsage4=/<command> <player> <radius>
nearCommandUsage4Description=Lists all players within the given radius of the specified player
nearbyPlayers=§6Players nearby\:§r {0}
nearbyPlayersList={0}§f(§c{1}m§f)
negativeBalanceError=§4User is not allowed to have a negative balance.
nickChanged=§6Nickname changed.
nickCommandDescription=Change your nickname or that of another player.
@@ -802,8 +832,9 @@ noPlacePermission=§4You do not have permission to place a block near that sign.
noPotionEffectPerm=§4You do not have permission to apply potion effect §c{0} §4to this potion.
noPowerTools=§6You have no power tools assigned.
notAcceptingPay=§4{0} §4is not accepting payment.
notAllowedToQuestion=§4You are not authorised to use question.
notAllowedToShout=§4You are not authorised to shout.
notAllowedToLocal=§4You don''t have permission to speak in local chat.
notAllowedToQuestion=§4You don''t have permission to ask a question.
notAllowedToShout=§4You don''t have permission to shout.
notEnoughExperience=§4You do not have enough experience.
notEnoughMoney=§4You do not have sufficient funds.
notFlying=not flying
@@ -862,6 +893,14 @@ playerTempBanned=§6Player §c{0}§6 temporarily banned §c{1}§6 for §c{2}§6\
playerUnbanIpAddress=§6Player§c {0} §6unbanned IP\:§c {1}
playerUnbanned=§6Player§c {0} §6unbanned§c {1}
playerUnmuted=§6You have been unmuted.
playtimeCommandDescription=Shows a player''s time played in game
playtimeCommandUsage=/<command> [player]
playtimeCommandUsage1=/<command>
playtimeCommandUsage1Description=Shows your time played in game
playtimeCommandUsage2=/<command> <player>
playtimeCommandUsage2Description=Shows the specified player''s time played in game
playtime=§6Playtime\:§c {0}
playtimeOther=§6Playtime of {1}§6\:§c {0}
pong=Pong\!
posPitch=§6Pitch\: {0} (Head angle)
possibleWorlds=§6Possible worlds are the numbers §c0§6 through §c{0}§6.
@@ -985,14 +1024,17 @@ replyLastRecipientDisabledFor=§6Replying to last message recipient §cdisabled
replyLastRecipientEnabled=§6Replying to last message recipient §cenabled§6.
replyLastRecipientEnabledFor=§6Replying to last message recipient §cenabled §6for §c{0}§6.
requestAccepted=§6Teleport request accepted.
requestAcceptedAll=§6Accepted §c{0} §6pending teleport request(s).
requestAcceptedAuto=§6Automatically accepted a teleport request from {0}.
requestAcceptedFrom=§c{0} §6accepted your teleport request.
requestAcceptedFromAuto=§c{0} §6accepted your teleport request automatically.
requestDenied=§6Teleport request denied.
requestDeniedAll=§6Denied §c{0} §6pending teleport request(s).
requestDeniedFrom=§c{0} §6denied your teleport request.
requestSent=§6Request sent to§c {0}§6.
requestSentAlready=§4You have already sent {0}§4 a teleport request.
requestTimedOut=§4Teleport request has timed out.
requestTimedOutFrom=§4Teleport request from §c{0} §4has timed out.
resetBal=§6Balance has been reset to §c{0} §6for all online players.
resetBalAll=§6Balance has been reset to §c{0} §6for all players.
rest=§6You feel well rested.
@@ -1252,10 +1294,14 @@ tpacancelCommandUsage1=/<command>
tpacancelCommandUsage1Description=Cancels all your outstanding teleport requests
tpacancelCommandUsage2=/<command> <player>
tpacancelCommandUsage2Description=Cancels all your outstanding teleport request with the specified player
tpacceptCommandDescription=Accepts a teleport request.
tpacceptCommandDescription=Accepts teleport requests.
tpacceptCommandUsage=/<command> [otherplayer]
tpacceptCommandUsage1=/<command>
tpacceptCommandUsage1Description=Accepts an incoming teleport request
tpacceptCommandUsage1Description=Accepts the most recent teleport request
tpacceptCommandUsage2=/<command> <player>
tpacceptCommandUsage2Description=Accepts a teleport request from the specified player
tpacceptCommandUsage3=/<command> *
tpacceptCommandUsage3Description=Accepts all teleport requests
tpahereCommandDescription=Request that the specified player teleport to you.
tpahereCommandUsage=/<command> <player>
tpahereCommandUsage1=/<command> <player>
@@ -1268,10 +1314,14 @@ tpautoCommandDescription=Automatically accept teleportation requests.
tpautoCommandUsage=/<command> [player]
tpautoCommandUsage1=/<command> [player]
tpautoCommandUsage1Description=Toggles if tpa requests are auto accepted for yourself or another player if specified
tpdenyCommandDescription=Reject a teleport request.
tpdenyCommandDescription=Rejects teleport requests.
tpdenyCommandUsage=/<command>
tpdenyCommandUsage1=/<command>
tpdenyCommandUsage1Description=Rejects an incoming teleport request
tpdenyCommandUsage1Description=Rejects the most recent teleport request
tpdenyCommandUsage2=/<command> <player>
tpdenyCommandUsage2Description=Rejects a teleport request from the specified player
tpdenyCommandUsage3=/<command> *
tpdenyCommandUsage3Description=Rejects all teleport requests
tphereCommandDescription=Teleport a player to you.
tphereCommandUsage=/<command> <player>
tphereCommandUsage1=/<command> <player>
@@ -126,7 +126,7 @@ cantReadGeoIpDB=¡Error al leer la base de datos de GeoIP\!
cantSpawnItem=§4No tienes acceso para producir el ítem§c {0}§4.
cartographytableCommandDescription=Abre una mesa de cartografía.
cartographytableCommandUsage=/<command>
chatTypeLocal=[L]
chatTypeLocal=§3[L]
chatTypeSpy=[Espía]
cleaned=Archivos de usuarios limpiados.
cleaning=Limpiando archivos de usuario.
@@ -135,11 +135,15 @@ clearInventoryConfirmToggleOn=§6You will now be prompted to confirm inventory c
clearinventoryCommandDescription=Desecha todos los objetos de tu inventario.
clearinventoryCommandUsage=/<command> [jugador|*] [item[\:<data>]|*|**] [cantidad]
clearinventoryCommandUsage1=/<command>
clearinventoryCommandUsage1Description=Elimina todos los objetos de tu inventario
clearinventoryCommandUsage2=/<command> <jugador>
clearinventoryCommandUsage2Description=Elimina todo los objetos del inventario del jugador especificado
clearinventoryCommandUsage3=/<comando> <jugador> <objeto> [cantidad]
clearinventoryCommandUsage3Description=Elimina todos (o la cantidad especificada) los objetos del inventario especificado del jugador
clearinventoryconfirmtoggleCommandDescription=Alterna la configuración de confirmación al eliminar el inventario.
clearinventoryconfirmtoggleCommandUsage=/<command>
commandArgumentOptional=§7
commandArgumentOr=§c
commandArgumentRequired=§e
commandCooldown=§cNo puedes usar ese comando durante {0}.
commandDisabled=§cEl comando§6 {0}§c está desactivado.
@@ -157,7 +161,9 @@ compassCommandUsage=/<command>
condenseCommandDescription=Condensa ítems en bloques más compactos.
condenseCommandUsage=/<comando> [objeto]
condenseCommandUsage1=/<command>
condenseCommandUsage1Description=Condensa todos los objetos en tu inventario
condenseCommandUsage2=/<command> <item>
condenseCommandUsage2Description=Condensa el objeto especificado en tu inventario
configFileMoveError=Error al mover config.yml a la carpeta de la copia de seguridad.
configFileRenameError=Error al renombrar archivo temp a config.yml.
confirmClear=§7To §lCONFIRM§7 inventory clear, please repeat command\: §6{0}
@@ -176,6 +182,7 @@ createkitCommandUsage1Description=Crea un kit con el nombre y tiempo de espera d
createKitFailed=§4Ocurrio un error durante la creacion del kit {0}.
createKitSeparator=§m-----------------------
createKitSuccess=§6Kit creado\: §f{0}\n§6Tiempo de espera\: §f{1}\n§6Link\: §f{2}\n§6Copia el contenido del link de arriba en tu archivo kits.yml.
createKitUnsupported=§4La serialización de objetos NBT ha sido activada, pero este servidor no está ejecutando Paper 1.15.2+. Regresando a la serialización estándar.
creatingConfigFromTemplate=Creando configuración desde la plantilla\: {0}
creatingEmptyConfig=Creando configuración vacía\: {0}
creative=creativo
@@ -226,6 +233,18 @@ destinationNotSet=¡Destino no establecido\!
disabled=desactivado
disabledToSpawnMob=§4El spawn de este mob está deshabilitado en la configuración.
disableUnlimited=Desactivada colocación ilimitada de §c {0} §6para§c {1}§6.
discordbroadcastCommandDescription=Anuncia un mensaje al canal especificado de Discord.
discordbroadcastCommandUsage=/<command> <channel> <msg>
discordbroadcastCommandUsage1=/<command> <channel> <msg>
discordbroadcastCommandUsage1Description=Envía el mensaje dado al canal de Discord especificado
discordbroadcastInvalidChannel=§4El canal de Discord §c{0}§4 no existe.
discordbroadcastPermission=§4No tienes permiso para enviar mensajes al canal §c{0}§4.
discordbroadcastSent=§6Mensaje enviado a §c{0}§6
discordCommandDescription=Envía el enlace de invitación a Discord al jugador.
discordCommandLink=§6¡Únete a nuestro servidor de Discord en §c{0}§6\!
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
discordCommandUsage1Description=Envía el enlace de invitación a Discord al jugador
discordCommandExecuteDescription=Ejecuta un comando de consola en el servidor de Minecraft.
discordCommandExecuteArgumentCommand=El comando a ejecutar
discordCommandExecuteReply=Ejecutando comando\: «/{0}»
@@ -242,6 +261,8 @@ discordErrorLoggerNoPerms=¡El identificador de la consola de Discord se ha desa
discordErrorNoGuild=¡La id. del servidor no se encuentra o no es válida\! Sigue el tutorial de configuración para poner en marcha el plugin.
discordErrorNoGuildSize=¡Tu bot no está en ningún servidor\! Sigue el tutorial de configuración para poner en marcha el plugin.
discordErrorNoPerms=¡Tu bot no puede ver ni hablar en ningún canal\! Asegúrate de que tu bot tiene permisos de lectura y escritura en todos los canales que quieras usar.
discordErrorNoPrimary=No has definido un canal principal o el que has definido no es válido. Volviendo al canal por defecto\: \#{0}.
discordErrorNoPrimaryPerms=Tu bot no puede hablar en tu canal principal, \#{0}. Asegúrate de que tu bot tiene permisos de lectura y escritura en todos los canales que quieras que use.
discordErrorNoToken=¡No hay token\! Sigue el tutorial de configuración para poner en marcha el plugin.
discordErrorWebhook=¡Se ha producido un error al enviar mensajes al canal de la consola\! Esto puede deberse a que se haya eliminado accidentalmente tu webhook de consola. Esto se puede corregir asegurándote de que tu bot tiene permiso para «Administrar webhooks» y ejecutar «/ess reload».
discordLoggingIn=Intentando iniciar sesión en Discord...
@@ -254,6 +275,12 @@ disposalCommandUsage=/<command>
distance=§6Distancia\: {0}
dontMoveMessage=§6El teletransporte comenzará en§c {0}§6. Por favor, no te muevas.
downloadingGeoIp=Descargando base de datos de GeoIP... Puede tardar unos minutos (países\: 1.7 MB, ciudades\: 30 MB)
dumpConsoleUrl=Se ha creado un volcado del servidor\: §c{0}
dumpCreating=§6Creando volcado del servidor...
dumpDeleteKey=§6Si quieres eliminar este volcado más adelante, usa la siguiente tecla de eliminación\: §c{0}
dumpError=§4Error al crear el volcado §c{0}§4.
dumpErrorUpload=§4Error al subir §c{0}§4\: §c{1}
dumpUrl=§6Se ha creado el volcado del servidor\: §c{0}
duplicatedUserdata=Datos de usuario duplicados\: {0} y {1}
durability=§7Esta herramienta tiene §c{0}§7 usos restantes.
east=E
@@ -303,6 +330,8 @@ essentialsCommandUsage6=/<comando> cleanup
essentialsCommandUsage6Description=Limpia los datos de usuario antiguos
essentialsCommandUsage7=/<comando> homes
essentialsCommandUsage7Description=Administra casas de usuarios
essentialsCommandUsage8=/<command> dump [all] [config] [discord] [kits] [log]
essentialsCommandUsage8Description=Genera un volcado del servidor con la información solicitada
essentialsHelp1=Archivo corrupto, no es posible abrirlo. Essentials está ahora desactivado. Si no puedes arreglar el archivo, ve a http\://tiny.cc/EssentialsChat
essentialsHelp2=Archivo corrupto, no es posible abrirlo. Essentials está ahora desactivado. Si no puedes arreglar el archivo, escribe /essentialshelp dentro del juego o ve a http\://tiny.cc/EssentialsChat
essentialsReload=§6Essentials ha sido recargado. La versión es§c {0}.
@@ -316,10 +345,12 @@ expCommandUsage2Description=Establece el xp del jugador mencionado a la cantidad
expCommandUsage3=/<command> show <jugador>
expCommandUsage4Description=Muestra la cantidad de xp que el jugador mencionado tiene
expCommandUsage5=/<command> reset <jugador>
expCommandUsage5Description=Restablece la experiencia del jugador a 0
expSet=§c{0} §6ahora tiene§c {1} §6de exp.
extCommandDescription=Extingue el fuego de un jugador.
extCommandUsage=/<command> [jugador]
extCommandUsage1=/<command> [jugador]
extCommandUsage1Description=Extingue el fuego de ti mismo o de otro jugador si se especifica
extinguish=§6Te has suicidado.
extinguishOthers=§7Has matado a {0}.
failedToCloseConfig=Error al cerrar configuración {0}.
@@ -330,6 +361,7 @@ feed=§6Tu apetito está satisfecho.
feedCommandDescription=Satisface el hambre.
feedCommandUsage=/<command> [jugador]
feedCommandUsage1=/<command> [jugador]
feedCommandUsage1Description=Completamente te alimentas a ti mismo o a otro jugador si se especifica
feedOther=§6Satisficiste el apetito de §c{0}§6.
fileRenameError=Error al renombrar el archivo {0}
fireballCommandDescription=Lanza una bola de fuego u otros proyectiles variados.
@@ -342,9 +374,13 @@ fireworkColor=§4Parámetros inválidos. Inserta primero el color.
fireworkCommandDescription=Te permite modificar un stack de fuegos artificiales.
fireworkCommandUsage=/<command> <<meta param>|power [cantidad]|clear|fire [cantidad]>
fireworkCommandUsage1=/<command> clear
fireworkCommandUsage1Description=Limpia todos los efectos de tus fuegos artificiales
fireworkCommandUsage2=/<command> power <cantidad>
fireworkCommandUsage2Description=Establece el poder de los fuegos artificiales
fireworkCommandUsage3=/<command> fire [cantidad]
fireworkCommandUsage3Description=Lanza una, o la cantidad especificada, copias de los fuegos artificiales
fireworkCommandUsage4=/<command> <meta>
fireworkCommandUsage4Description=Añade el efecto dado a los fuegos artificiales
fireworkEffectsCleared=§7Borrados todos los efectos.
fireworkSyntax=§7Parametros de firework\:§c color\:<color> [color\:<color>] [forma\:<shape>] [efecto de explosión\:<effect>]\n§7Para usar múltiples colores/efectos, separa los nombres mediante comas\: §cred,blue,pink\n§7Formas\:§c star, ball, large, creeper, burst §6Efectos\:§c trail, twinkle.
fixedHomes=Se han eliminado las casas no válidas.
@@ -352,6 +388,7 @@ fixingHomes=Eliminando casas no válidas...
flyCommandDescription=¡Despega, y a volar\!
flyCommandUsage=/<command> [jugador] [on|off]
flyCommandUsage1=/<command> [jugador]
flyCommandUsage1Description=Alterna el vuelo de ti mismo o de otro jugador si se especifica
flying=volando
flyMode=§6Modo de vuelo§c {0} §6para§c {1}§6.
foreverAlone=§cNo tienes nadie a quien puedas responder.
@@ -363,6 +400,7 @@ gameModeInvalid=§4Necesitas especificar un jugador/modo válido.
gamemodeCommandDescription=Cambia el modo de juego de un jugador.
gamemodeCommandUsage=/<command> <survival|creative|adventure|spectator> [jugador]
gamemodeCommandUsage1=/<command> <survival|creative|adventure|spectator> [jugador]
gamemodeCommandUsage1Description=Establece el modo de juego de ti mismo o de otro jugador si se especifica
gcCommandDescription=Reporta memoria, tiempo de actividad e información de tick.
gcCommandUsage=/<command>
gcfree=§6Memoria libre\:§c {0} MB.
@@ -373,18 +411,23 @@ geoipJoinFormat=§6El jugador §c{0} §6viene de §c{1}§6.
getposCommandDescription=Obtiene tus coordenadas actuales o las de un jugador.
getposCommandUsage=/<command> [jugador]
getposCommandUsage1=/<command> [jugador]
getposCommandUsage1Description=Obtiene las coordenadas de ti mismo o de otro jugador si se especifica
giveCommandDescription=Da un item a un jugador.
giveCommandUsage=/<command> <jugador> <item|numeric> [cantidad [itemmeta...]]
giveCommandUsage1=/<comando> <jugador> <objeto> [cantidad]
giveCommandUsage1Description=Da al jugador mencionado 64 (o la cantidad especificada) del objeto especificado
giveCommandUsage2=/<comando> <jugador> <objeto> <cantidad> <metadatos>
giveCommandUsage2Description=Da al jugador mencionado la cantidad especificada del item especificado con los metadatos especificados
geoipCantFind=§c{0} §6viene de §aun país desconocido§6.
geoIpErrorOnJoin=No se pudo obtener información GeoIP de {0}. Por favor, asegúrese que su llave de licencia y configuración son correctos.
geoIpLicenseMissing=No se encontró una llave de licencia\! Por favor, visita https\://essentialsx.net/geoip para instrucciones de configuración.
geoIpUrlEmpty=El link para descargar GeoIP esta vacio.
geoIpUrlInvalid=El link para descargar GeoIP es inválido.
givenSkull=§6Se te ha dado el cráneo de §c{0}§6.
godCommandDescription=Activa tus poderes místicos.
godCommandDescription=Activa tus poderes de Dios.
godCommandUsage=/<command> [jugador] [on|off]
godCommandUsage1=/<command> [jugador]
godCommandUsage1Description=Activa el modo dios para ti o a otro jugador si se especifica
giveSpawn=§6Entregado§c {0} §6de§c {1} §6a§c {2}§6.
giveSpawnFailure=§4Sin espacio, §c{0} {1} §4se perdieron.
godDisabledFor=§cdeshabilitado§6 para§c {0}
@@ -398,6 +441,9 @@ hatArmor=§c¡No puedes usar este ítem como sombrero\!
hatCommandDescription=Obtén un nuevo y genial accesorio de cabeza.
hatCommandUsage=/<command> [remove]
hatCommandUsage1=/<command>
hatCommandUsage1Description=Coloca como sombrero el objeto que estés sosteniendo
hatCommandUsage2=/<command> remove
hatCommandUsage2Description=Elimina tu sombrero actual
hatCurse=§4No puedes quitar un sombrero con maldición de ligamento\!
hatEmpty=§4No estás usando sombrero.
hatFail=§4Necesitas tener un ítem en tu mano para poder usarlo de sombrero.
@@ -408,6 +454,7 @@ heal=§6Has sido curado.
healCommandDescription=Te cura o al jugador especificado.
healCommandUsage=/<command> [jugador]
healCommandUsage1=/<command> [jugador]
healCommandUsage1Description=Te curas a ti o a otro jugador si se especifica
healDead=§4¡Está muerto, no puedes curarlo\!
healOther=§7Has curado a {0}.
helpCommandDescription=Mira la lista de comandos disponibles.
@@ -421,6 +468,7 @@ helpPlugin=§4{0}§r\: Ayuda para el plugin\: /help {1}
helpopCommandDescription=Contacta administradores conectados.
helpopCommandUsage=/<command> <mensaje>
helpopCommandUsage1=/<command> <mensaje>
helpopCommandUsage1Description=Envía el mensaje a todos los administradores en línea
holdBook=§4No tienes un libro para escribir.
holdFirework=§4No tienes algun cohete al que agregar efectos.
holdPotion=§4No tienes pociones a las que agregar efectos.
@@ -428,7 +476,9 @@ holeInFloor=§4¡No hay suelo en el punto de aparición\!
homeCommandDescription=Teletransportarte a tu casa.
homeCommandUsage=/<command> [player\:][nombre]
homeCommandUsage1=/<comando> <nombre>
homeCommandUsage1Description=Te teletransporta a tu casa con el nombre dado
homeCommandUsage2=/<comando> <jugador>\:<nombre>
homeCommandUsage2Description=Te teletransporta a la casa del jugador especificado con el nombre dado
homes=§6Hogares\:§r {0}
homeConfirmation=§6Ya tienes una casa llamada §c{0}§6\!\nPara sobrescribir tu casa existente, escribe el comando de nuevo.
homeSet=§7Hogar establecido.
@@ -440,10 +490,14 @@ iceCommandUsage=/<command> [jugador]
iceCommandUsage1=/<command>
iceCommandUsage1Description=Te enfría
iceCommandUsage2=/<command> <jugador>
iceCommandUsage2Description=Congela al jugador seleccionado
iceCommandUsage3=/<comando> *
iceCommandUsage3Description=Congela a todos los jugadores en línea
iceOther=§6De tranquis§c {0}§6.
ignoreCommandDescription=Ignorar o dejar de ignorar a otros jugadores.
ignoreCommandUsage=/<command> <jugador>
ignoreCommandUsage1=/<command> <jugador>
ignoreCommandUsage1Description=Desactiva o activa al jugador dado
ignoredList=§6Ignorado\:§r {0}
ignoreExempt=§4No puedes ignorar a este jugador.
ignorePlayer=A partir de ahora ignoras al jugador {0}.
@@ -478,18 +532,27 @@ inventoryClearingStack=§6Eliminado§c {0} §6de§c {1} §6de {2}§6.
invseeCommandDescription=Ver el inventario de otros jugadores.
invseeCommandUsage=/<command> <jugador>
invseeCommandUsage1=/<command> <jugador>
invseeCommandUsage1Description=Abre el inventario del jugador especificado
is=es
isIpBanned=§6IP §c{0} §6está baneada.
internalError=§cAn internal error occurred while attempting to perform this command.
itemCannotBeSold=§4¡Ese objeto no puede ser vendido al servidor\!
itemCommandDescription=Generar un elemento.
itemCommandUsage=/<command> <item|numeric> [cantidad [itemmeta...]]
itemCommandUsage1=/<command> <item> [cantidad]
itemCommandUsage1Description=Te da un stack completo (o una cantidad especificada) del item especificado
itemCommandUsage2=/<command> <item> <amount> <meta>
itemCommandUsage2Description=Te da la cantidad especificada del item especificado con los metadatos especificados
itemId=§6ID\:§c {0}
itemloreClear=§6Has eliminado el lore de este objeto.
itemloreCommandDescription=Editar el lore de un elemento.
itemloreCommandUsage=/<command> <add/set/clear> [texto/línea] [texto]
itemloreCommandUsage1=/<comando> add [texto]
itemloreCommandUsage1Description=Añade el texto dado al final del lore del objeto sostenido
itemloreCommandUsage2=/<comando> poner <número de línea> <texto>
itemloreCommandUsage2Description=Establece la línea especificada del lore del item sostenido al texto dado
itemloreCommandUsage3=/<command> clear
itemloreCommandUsage3Description=Elimina el lore del item sostenido
itemloreInvalidItem=§4Necesitas un item en la mano para editar su lore.
itemloreNoLine=§4El objeto sostenido no tiene un texto de lore en línea §c{0}§4.
itemloreNoLore=§4El item sostenido no contiene ningún lore.
@@ -501,7 +564,9 @@ itemnameClear=§6Has eliminado el nombre de este objeto.
itemnameCommandDescription=Nombra un item.
itemnameCommandUsage=/<command> [nombre]
itemnameCommandUsage1=/<command>
itemnameCommandUsage1Description=Elimina el nombre del item sostenido
itemnameCommandUsage2=/<comando> <nombre>
itemnameCommandUsage2Description=Establece el nombre del item sostenido al texto dado
itemnameInvalidItem=§cNecesitas tener un objeto en la mano para renombrarlo.
itemnameSuccess=§6Has renombrado el objeto de tu mano a "§c{0}§6".
itemNotEnough1=§4No tienes la suficiente cantidad del ítem para venderlo.
@@ -518,10 +583,14 @@ itemType=§6Objeto\:§c {0}
itemdbCommandDescription=Busca un item.
itemdbCommandUsage=/<command> <item>
itemdbCommandUsage1=/<command> <item>
itemdbCommandUsage1Description=Busca el item dado en la base de datos de items
jailAlreadyIncarcerated=§4Ese jugador ya está en la cárcel\:§c {0}
jailList=§6Jails\:§r {0}
jailMessage=§c¡Por el crimen hacer, a la cárcel irás\!
jailNotExist=§4Esa cárcel no existe.
jailNotifyJailed=§6El jugador§c {0} §6ha sido encarcelado por §c{1}.
jailNotifyJailedFor=§6El jugador§c {0} §6ha sido encarcelado por§c {1}§6por §c{2}§6.
jailNotifySentenceExtended=§6El tiempo en cárcel §6del jugador§c{0} §6ha sido extendido a §c{1} §6por §c{2}§6.
jailReleased=§6El jugador §c{0}§6 ha salido de la cárcel.
jailReleasedPlayerNotify=§7¡Has sido liberado\!
jailSentenceExtended=Tiempo en la cárcel extendido a {0}
@@ -537,26 +606,32 @@ jumpError=§4Eso dañaría el cerebro de tu ordenador.
kickCommandDescription=Expulsa al jugador especificado con una razón.
kickCommandUsage=/<command> <jugador> [razón]
kickCommandUsage1=/<command> <jugador> [razón]
kickCommandUsage1Description=Expulsa al jugador especificado con una razón opcional
kickDefault=Has sido expulsado del servidor\! Nota\: Revisa tu comportamiento
kickedAll=§4Todos los jugadores han sido expulsados.
kickExempt=§4No puedes expulsar a ese jugador.
kickallCommandDescription=Expulsa a todos los jugadores del servidor excepto al emisor.
kickallCommandUsage=/<command> [razón]
kickallCommandUsage1=/<command> [razón]
kickallCommandUsage1Description=Expulsa a todos los jugadores con una razón opcional
kill=§7Has matado a§c {0}§7.
killCommandDescription=Mata al jugador especificado.
killCommandUsage=/<command> <jugador>
killCommandUsage1=/<command> <jugador>
killCommandUsage1Description=Mata al jugador especificado
killExempt=§4No puedes matar a §c{0}§4.
kitCommandDescription=Obtiene el kit especificado o ve todos los kits disponibles.
kitCommandUsage=/<command> [kit] [jugador]
kitCommandUsage1=/<command>
kitCommandUsage1Description=Lista de todos los kits disponibles
kitCommandUsage2=/<command> <kit> [jugador]
kitCommandUsage2Description=Entrega el kit especificado a ti o a otro jugador si se especifica
kitContains=§6El kit §c{0} §6contiene\:
kitCost=\ §7§o({0})§r
kitDelay=§m{0}§r
kitError=§cNo hay ningún kit válido.
kitError2=§4Este kit está mal creado. Por favor, contacta con un administrador.
kitError3=No se pudo dar el objeto en el kit del kit "{0}" al usuario {1} ya que ese objeto requiere Paper 1\n15.2+ para deserializar.
kitGiveTo=§6Dando kit§c {0}§6 a §c{1}§6.
kitInvFull=§4Tu inventario no tiene espacio para este kit. El kit se lanzará al suelo.
kitInvFullNoDrop=§4No hay suficiente espacio en tu inventario para ese kit.
@@ -568,6 +643,7 @@ kitReset=§6Restablecer el tiempo de reutilización del kit §c {0} §6.
kitresetCommandDescription=Restablece el tiempo de reutilización del kit especificado.
kitresetCommandUsage=/<command> <kit> [jugador]
kitresetCommandUsage1=/<command> <kit> [jugador]
kitresetCommandUsage1Description=Reinicia el enfriamiento del kit especificado para ti o para otro jugador si se específica
kitResetOther=§6Restableciendo el tiempo de espera del kit §c{0} §6durante §c{1}§6.
kits=§7Kits disponibles\: {0}
kittycannonCommandDescription=Tira un gato explosivo a tu oponente.
@@ -577,6 +653,9 @@ leatherSyntax=§6Sintaxis color del cuero\:§c color\:<red>,<green>,<blue> ejemp
lightningCommandDescription=El poder de Thor. Lanza un rayo al cursor o al jugador.
lightningCommandUsage=/<command> [jugador] [poder]
lightningCommandUsage1=/<command> [jugador]
lightningCommandUsage1Description=Golpea con un rayo ya sea donde estás mirando o a otro jugador si se especifica
lightningCommandUsage2=/<command> <jugador> <poder>
lightningCommandUsage2Description=Lanza un rayo al jugador objetivo con el poder elegido
lightningSmited=§6¡Has sido golpeado mágicamente\!
lightningUse=§6Golpeando al jugador§c {0}
listAfkTag=§8[Ausente]§r
@@ -585,10 +664,12 @@ listAmountHidden=§6Hay§c{0}§6/§c{1}§6 de un máximo de §c{2}§6 jugadondo
listCommandDescription=Lista todos los jugadores en línea.
listCommandUsage=/<command> [grupo]
listCommandUsage1=/<command> [grupo]
listCommandUsage1Description=Lista todos los jugadores del servvidor, o del grupo si se ha especificado
listGroupTag=§6{0}§r\:
listHiddenTag=§8[Oculto]§r
listRealName=({0})
loadWarpError=§4Error al cargar el Warp {0}.
localFormat=[L]<{0}> {1}
localFormat=§3[L] §r<{0}> {1}
loomCommandDescription=Abre un telar.
loomCommandUsage=/<command>
mailClear=§6Para marcar tu correo como leído, escribe§c /mail clear§6.
@@ -596,10 +677,18 @@ mailCleared=§6¡El correo ha sido limpiado\!
mailClearIndex=§Debes especificar un número entre 1 y {0}.
mailCommandDescription=Administra el correo inter-jugador e intra-servidor.
mailCommandUsage=/<comando> [read|clear|clear [número]|send [to] [mensaje]|sendtemp [to] [fecha de caducidad] [mensaje]|sendall [mensaje]]
mailCommandUsage1=/<command> read [página]
mailCommandUsage1Description=Lee la primera (o especificada) página de tu correo
mailCommandUsage2=/<comando> clear [número]
mailCommandUsage2Description=Limpia todos los correos especificados
mailCommandUsage3=/<command> send <jugador> <mensaje>
mailCommandUsage3Description=Envía al jugador especificado el mensaje dado
mailCommandUsage4=/<command> sendall <mensaje>
mailCommandUsage4Description=Envía a todos los jugadores el mensaje proporcionado
mailCommandUsage5=/<comando> sendtemp <jugador> <fecha de caducidad> <mensaje>
mailCommandUsage5Description=Envía al jugador especificado el mensaje, el cual expirará en el tiempo de caducidad establecido
mailCommandUsage6=/<comando> sendtempall <caducidad> <mensaje>
mailCommandUsage6Description=Envía a todos los jugadores el mensaje escrito y caducará cuando se especifique.
mailDelay=Demasiados correos han sido enviados en el último minuto. Máximo\: {0}
mailFormatNew=§6[§r{0}§6] §6[§r{1}§6] §r{2}
mailFormatNewTimed=§6[§e⚠§6] §6[§r{0}§6] §6[§r{1}§6] §r{2}
@@ -620,6 +709,7 @@ mayNotJailOffline=§4No puedes encarcelar a jugadores que no están conectados.
meCommandDescription=Describe una acción en el contexto del jugador.
meCommandUsage=/<command> <descripción>
meCommandUsage1=/<command> <descripción>
meCommandUsage1Description=Describe una acción
meSender=yo
meRecipient=mi
minimumBalanceError=§4El balance mínimo que un jugador puede tener es {0}.
@@ -639,6 +729,7 @@ months=meses
moreCommandDescription=Rellena el stack de items en tu mano con la cantidad especificada, o al máximo si ninguna cantidad es especificada.
moreCommandUsage=/<command> [cantidad]
moreCommandUsage1=/<command> [cantidad]
moreCommandUsage1Description=Llena el ítem retenido hasta el monto establecido, o su tamaño máximo si no está especificado
moreThanZero=Las cantidades deben ser mayores que 0.
motdCommandDescription=Mira el Mensaje del Día.
motdCommandUsage=/<command> [capítulo] [página]
@@ -646,6 +737,7 @@ moveSpeed=§6Establecida velocidad de {0} a§c {1} §6durante §c{2}§6.
msgCommandDescription=Envía un mensaje privado al jugador especificado.
msgCommandUsage=/<command> <hacia> <mensaje>
msgCommandUsage1=/<command> <hacia> <mensaje>
msgCommandUsage1Description=Envía el mensaje privado al jugador especificado
msgDisabled=§6Receiving messages §cdisabled§6.
msgDisabledFor=§6Receiving messages §cdisabled §6for §c{0}§6.
msgEnabled=§6Receiving messages §cenabled§6.
@@ -655,11 +747,15 @@ msgIgnore=§c{0} §4has messages disabled.
msgtoggleCommandDescription=Bloquea la recepción de mensajes privados.
msgtoggleCommandUsage=/<command> [jugador] [on|off]
msgtoggleCommandUsage1=/<command> [jugador]
msgtoggleCommandUsage1Description=Alterna el vuelo de ti mismo o de otro jugador si se especifica
multipleCharges=§4Solo puedes aplicar una carga a este cohete.
multiplePotionEffects=§4No puedes aplicarle más de un efecto a esta poción.
muteCommandDescription=Silencia o deja de silenciar a un jugador.
muteCommandUsage=/<command> <jugador> [tiempo] [razón]
muteCommandUsage1=/<command> <jugador>
muteCommandUsage1Description=Silenciar permanentemente al jugador especificado o de-silenciarlos si ya estaban silenciados
muteCommandUsage2=/<comando> <jugador> <duración> [razón]
muteCommandUsage2Description=Silencia al jugador especificado durante el tiempo dado con una razón opcional
mutedPlayer=§6El jugador§c {0} §6está silenciado.
mutedPlayerFor=§6Jugador§c {0} §6silenciado por§c {1}§6.
mutedPlayerForReason=§c {0} §6silenciado por§c {1}§6. Motivo\: §c{2}
@@ -674,13 +770,27 @@ muteNotifyReason=§c{0} §6ha silenciado a §c{1}§6. §6Motivo\: §c{2}
nearCommandDescription=Lista los jugadores cerca o alrededor de un jugador.
nearCommandUsage=/<command> [jugador] [radio]
nearCommandUsage1=/<command>
nearCommandUsage1Description=Enumera a todos los jugadores cerca de ti dentro del radio por defecto
nearCommandUsage2=/<command> <radius>
nearCommandUsage2Description=Enumera a todos los jugadores cerca de ti dentro del radio dado
nearCommandUsage3=/<command> <jugador>
nearCommandUsage3Description=Enumera a todos los jugadores cerca del jugador especificado dentro del radio por defecto
nearCommandUsage4=/<comando> <jugador> <radio>
nearCommandUsage4Description=Enumera a todos los jugadores cerca del jugador especificado dentro del radio dado
nearbyPlayers=§6Jugadores cercanos\:§r {0}
nearbyPlayersList={0}§f(§c{1}m§f)
negativeBalanceError=§4El jugador no tiene permitido tener dinero por debajo de 0$.
nickChanged=§6Nick cambiado.
nickCommandDescription=Cambia tu apodo o el de otro jugador.
nickCommandUsage=/<command> [jugador] <apodo|off>
nickCommandUsage1=/<command> <apodo>
nickCommandUsage1Description=Cambia tu apodo al texto dado
nickCommandUsage2=/<comando> apagado
nickCommandUsage2Description=Elimina tu nick
nickCommandUsage3=/<comando> <jugador> <apodo>
nickCommandUsage3Description=Cambia el apodo del jugador especificado al texto dado
nickCommandUsage4=/<comando> <jugador> apagado
nickCommandUsage4Description=Elimina el nick del jugador proporcionado
nickDisplayName=§4Tienes que activar el cambio de nick en la configuración del plugin Essentials.
nickInUse=§4Ese nick ya está en uso. Prueba a usar otro.
nickNameBlacklist=§4Ese apodo no está permitido.
@@ -722,8 +832,9 @@ noPlacePermission=§4No tienes permiso para colocar un bloque junto a eso.
noPotionEffectPerm=§4No tienes permiso para aplicar el efecto§c {0} §4a esta poción.
noPowerTools=§6No tienes ninguna herramienta eléctrica asignada.
notAcceptingPay=§4{0} §4no esta aceptando pagos.
notAllowedToQuestion=§4No estás autorizado para hacer una pregunta.
notAllowedToShout=§4No estás autorizado para gritar.
notAllowedToLocal=§4No tienes permiso para hablar en el chat local.
notAllowedToQuestion=§4No tienes permiso para usar la pregunta.
notAllowedToShout=§4No tienes permiso para gritar.
notEnoughExperience=§4No tienes la experiencia necesaria.
notEnoughMoney=§4No tienes dinero suficiente.
notFlying=no esta volando
@@ -733,6 +844,8 @@ noWarpsDefined=§6No hay warps disponibles.
nuke=§5¡Que la lluvia de la muerte caiga sobre ellos\!.
nukeCommandDescription=Que la muerte llueva sobre ellos.
nukeCommandUsage=/<command> [jugador]
nukeCommandUsage1=/<comando> [jugadores...]
nukeCommandUsage1Description=Envía una bomba sobre todos los jugadores u otro(s) jugador(es), si se especifica
numberRequired=Se requiere un número.
onlyDayNight=§6/time §4únicamente funciona con los valores §6Day§4 o §6Night§4 (día/noche).
onlyPlayers=§4Solo jugadores dentro del juego pueden usar §c{0}§4.
@@ -746,6 +859,7 @@ passengerTeleportFail=§2♣§d§kii§a§lSkyblock§d§kii§2♣ No puedes telet
payCommandDescription=Paga a otro jugador con tu dinero.
payCommandUsage=/<command> <jugador> <cantidad>
payCommandUsage1=/<command> <jugador> <cantidad>
payCommandUsage1Description=Paga al jugador especificado la cantidad de dinero dada
payConfirmToggleOff=§6You will no longer be prompted to confirm payments.
payConfirmToggleOn=§6You will now be prompted to confirm payments.
payDisabledFor=§6Aceptación de pagos desactivado para §c{0}§6.
@@ -759,6 +873,7 @@ payconfirmtoggleCommandUsage=/<command>
paytoggleCommandDescription=Alterna si puedes aceptar pagos.
paytoggleCommandUsage=/<command> [jugador]
paytoggleCommandUsage1=/<command> [jugador]
paytoggleCommandUsage1Description=Activa o desactiva si tú, u otro jugador si se especifica, acepta pagos
pendingTeleportCancelled=§4Petición de teletransporte cancelada.
pingCommandDescription=¡PONG\!
pingCommandUsage=/<command>
@@ -778,12 +893,25 @@ playerTempBanned=§6El jugador §c{0}§6 ha baneado temporalmente a §c{1}§6 po
playerUnbanIpAddress=§6La IP {1} ha sido desbaneada por§c {0}
playerUnbanned=§c{0} §6ha desbaneado a§c {1}
playerUnmuted=§6Ya no estás silenciado.
playtimeCommandDescription=Muestra el tiempo jugado de alguien
playtimeCommandUsage=/<command> [jugador]
playtimeCommandUsage1=/<command>
playtimeCommandUsage1Description=Muestra tu tiempo jugado
playtimeCommandUsage2=/<command> <jugador>
playtimeCommandUsage2Description=Muestra el tiempo jugado del jugador específico
playtime=§6Tiempo de juego\:§c {0}
playtimeOther=§6Tiempo de juego de {1}§6\:§c {0}
pong=¡PONG\!
posPitch=§7Giro\: {0} (Ángulo de cabeza)
possibleWorlds=§6Posibles mundos son los números desde el §c0§6 hasta el §c{0}§6.
potionCommandDescription=Añade efectos personalizados a una poción.
potionCommandUsage=/<command> <clear|apply|effect\:<efecto> power\:<poder> duration\:<duración>>
potionCommandUsage1=/<command> clear
potionCommandUsage1Description=Elimina todos los efectos de la poción sostenida
potionCommandUsage2=/<command> aplicar
potionCommandUsage2Description=Te aplica todos los efectos de la poción sostenida sin consumir la poción
potionCommandUsage3=/<comando> efecto\:<efecto> poder\:<poder> duración\:<duración>
potionCommandUsage3Description=Aplica el meta de la poción dada a la poción sostenida
posX=§7X\: {0} (+Este <-> -Oeste)
posY=§7Y\: {0} (+Arriba <-> -Abajo)
posYaw=§7Yaw\: {0} (Rotación)
@@ -802,12 +930,34 @@ powerToolsDisabled=§7Todas tus herramientas de poder han sido desactivadas.
powerToolsEnabled=§7Todas tus herramientas de poder han sido activadas.
powertoolCommandDescription=Asigna un comando al item en mano.
powertoolCommandUsage=/<command> [l\:|a\:|r\:|c\:|d\:][comando] [argumentos] - {jugador} puede ser reemplazado por un jugador clickeado.
powertoolCommandUsage1=/<comando> l\:
powertoolCommandUsage1Description=Enumera todos los powertools del objeto sostenido
powertoolCommandUsage2=/<comando> d\:
powertoolCommandUsage2Description=Elimina todos los powertools del objeto sostenido
powertoolCommandUsage3=/<comando> r\:<cmd>
powertoolCommandUsage3Description=Elimina el comando dado del elemento sostenido
powertoolCommandUsage4=/<comando> <cmd>
powertoolCommandUsage4Description=Establece el comando powertool del objeto sostenido al comando dado
powertoolCommandUsage5=/<comando> a\:<cmd>
powertoolCommandUsage5Description=Añade el comando powertool dado al elemento sostenido
powertooltoggleCommandDescription=Activa o desactiva todas las herramientas de poder actuales.
powertooltoggleCommandUsage=/<command>
ptimeCommandDescription=Ajustar la hora del cliente del jugador. Añadir prefijo @ para arreglar.
ptimeCommandUsage=/<command> [list|reset|day|night|dawn|17\:30|4pm|4000ticks] [jugador|*]
ptimeCommandUsage1=/<comando> lista [jugador|*]
ptimeCommandUsage1Description=Enumera el tiempo de juego de ti u otro(s) jugador(es) si se especifica
ptimeCommandUsage2=/<comando> <tiempo> [jugador|*]
ptimeCommandUsage2Description=Cambia la hora del día a la hora dada para ti u otro(s) jugador(es) si se especifica
ptimeCommandUsage3=/<comando> reset [jugador|*]
ptimeCommandUsage3Description=Resetea la hora del día para ti u otro(s) jugador(es) si se especifica
pweatherCommandDescription=Ajusta el clima de un jugador
pweatherCommandUsage=/<command> [list|reset|storm|sun|clear] [jugador|*]
pweatherCommandUsage1=/<comando> lista [jugador|*]
pweatherCommandUsage1Description=Enumera el clima personal para ti u otro(s) jugador(es) si se especifica
pweatherCommandUsage2=/<command> <storm|sun> [jugador|*]
pweatherCommandUsage2Description=Cambia el clima personal para ti u otro(s) jugador(es) si se especifica al clima dado
pweatherCommandUsage3=/<comando> reset [jugador|*]
pweatherCommandUsage3Description=Resetea el clima para ti u otro(s) jugador(es) si se especifica
pTimeCurrent=§6La hora de §c{0} es§c {1}§6.
pTimeCurrentFixed=§c{0}§6 la hora ha sido corregida a§c {1}§6.
pTimeNormal=§c{0} §7\: el tiempo es normal (coincide con el del servidor).
@@ -827,17 +977,21 @@ questionFormat=§2[Pregunta]§r {0}
rCommandDescription=Responde rápidamente al último jugador que te habló.
rCommandUsage=/<command> <mensaje>
rCommandUsage1=/<command> <mensaje>
rCommandUsage1Description=Responde con el texto dado al último jugador que te ha mandado un mensaje
radiusTooBig=§4Radidemasiado grande\! El máximo es§c {0}§4.
readNextPage=§7Escribe§c /{0} {1} §7para leer la página siguiente.
realName=§f{0}§r§6 es §f{1}
realnameCommandDescription=Muestra el nombre de usuario de alguien basado en su apodo.
realnameCommandUsage=/<command> <apodo>
realnameCommandUsage1=/<command> <apodo>
realnameCommandUsage1Description=Muestra el nombre de usuario de un jugador basado en el apodo dado
recentlyForeverAlone=§4{0} recently went offline.
recipe=§6Receta para §c{0}§6 (§c{1}§6 de §c{2}§6)
recipeBadIndex=No hay ningún crafteo con ese número.
recipeCommandDescription=Muestra como craftear items.
recipeCommandUsage=/<command> <item> [número]
recipeCommandUsage1=/<command> <item> [page]
recipeCommandUsage1Description=Muestra como crear el objeto dado
recipeFurnace=§6Fundir\: §c{0}§6.
recipeGrid=§c{0}X §6| §{1}X §6| §{2}X
recipeGridItem=§c{0}X §6es §c{1}
@@ -848,12 +1002,19 @@ recipeShapeless=§7Combinar §c{0}
recipeWhere=§7Donde\: {0}
removeCommandDescription=Elimina entidades de tu mundo.
removeCommandUsage=/<command> <all|tamed|named|drops|arrows|boats|minecarts|xp|paintings|itemframes|endercrystals|monsters|animals|ambient|mobs|[tipoDeMob]> [radio|mundo]
removeCommandUsage1=/<command> <mob type> [world]
removeCommandUsage1Description=Elimina todos los mobs del tipo dado en el mundo actual u otro si especificado
removeCommandUsage2=/<comando> <tipo de mob> <radio> [mundo]
removeCommandUsage2Description=Elimina el tipo de mob dado dentro del radio dado en el mundo actual u otro si se especifica
removed=§6Eliminadas§c {0} §6entidades.
repair=§6Has reparado exitósamente tu\: §c{0}§6.
repairAlreadyFixed=§4Este ítem no necesita reparación.
repairCommandDescription=Repara la durabilidad de uno o todos tus objetos.
repairCommandUsage=/<command> [hand|all]
repairCommandUsage1=/<command>
repairCommandUsage1Description=Repara el objeto sostenido
repairCommandUsage2=/<comando> todos
repairCommandUsage2Description=Repara todos los objetos en tu inventario
repairEnchanted=§4No tienes permiso para reparar un ítem encantado.
repairInvalidType=§4Ese ítem no puede ser reparado.
repairNone=§4No hay ítems que necesiten ser reparados.
@@ -863,20 +1024,24 @@ replyLastRecipientDisabledFor=§6Respuesta al último mensaje recibido/enviado
replyLastRecipientEnabled=§6Respuesta al último mensaje recibido/enviado §cactivado§6.
replyLastRecipientEnabledFor=§6Respuesta al último mensaje recibido/enviado §cdesactivado §6por §c{0}§6.
requestAccepted=§6Petición de teletransporte aceptada.
requestAcceptedAll=§6Aceptada(s) §c{0} §6peticion(es) de teletransporte pendiente(s).
requestAcceptedAuto=§6Se aceptó automáticamente una solicitud de teletransporte de {0}.
requestAcceptedFrom=§c{0} §6ha aceptado tu teletransportación.
requestAcceptedFromAuto=§c{0} §6aceptó tu solicitud de teletransporte automáticamente.
requestDenied=§6Petición de teletransporte denegada.
requestDeniedAll=§6Denegada(s) §c{0} §6peticion(es) de teletransporte pendiente(s).
requestDeniedFrom=§c{0} §6ha denegado tu teletransportación.
requestSent=§6La petición ha sido enviada a§c {0}§6.
requestSentAlready=§4Ya has enviado una peticion de teletransporte a {0}§4.
requestTimedOut=§4El tiempo de la solicitud de teletransporte se ha agotado.
requestTimedOutFrom=§4La petición de teletransporte de §c{0} §4ha caducado.
resetBal=§6Dinero reestablecido a §c{0} §6a todos los jugadores conectados.
resetBalAll=§6Dinero reestablecido a §c{0} §6a todos los jugadores.
rest=§6Te sientes descansado.
restCommandDescription=Te descansa o al jugador especificado.
restCommandUsage=/<command> [jugador]
restCommandUsage1=/<command> [jugador]
restCommandUsage1Description=Resetea el tiempo desde el último reposo para ti u otro(s) jugador(es) si se especifica
restOther=§6Descansando§c {0}§6.
returnPlayerToJailError=§4¡Ha ocurrido un error al intentar enviar al jugador§c {0} §4a la cárcel\: §c{1}§4\!
rtoggleCommandDescription=Cambia si el destinatario de la respuesta es del último mensaje enviado o último mensaje recibido
@@ -890,10 +1055,20 @@ seenAccounts=§6El jugador ha sido también conocido como\:§c {0}
seenCommandDescription=Muestra la última hora de desconexión de un jugador.
seenCommandUsage=/<command> <jugador>
seenCommandUsage1=/<command> <jugador>
seenCommandUsage1Description=Muestra la información sobre el tiempo desconectado, bans, silencios y UUID del jugador especificado
seenOffline=§6El jugador§c {0} §6ha estado §4desconectado§6 desde §c{1}§6.
seenOnline=§6El jugador§c {0} §6ha estado §aconectado§6 desde §c{1}§6.
sellBulkPermission=§6You do not have permission to bulk sell.
sellCommandDescription=Vende el item en tu mano.
sellCommandUsage=/<comando> <<nombredeitem>|<id>|mano|inventario|bloques> [cantidad]
sellCommandUsage1=/<comando> <nombredeitem> [cantidad]
sellCommandUsage1Description=Vende todo (o la cantidad dada, si se especifica) del objeto dado que haya en tu inventario
sellCommandUsage2=/<comando> mano [cantidad]
sellCommandUsage2Description=Vende todo (o la cantidad dada, si se especifica) del objeto sostenido
sellCommandUsage3=/<comando> todos
sellCommandUsage3Description=Vende todos los objetos posibles en tu inventario
sellCommandUsage4=/<comando> bloques [cantidad]
sellCommandUsage4Description=Vende todos (o la cantidad dada, si se especifica) los bloques en tu inventario
sellHandPermission=§6You do not have permission to hand sell.
serverFull=¡El servidor está lleno\!
serverReloading=Hay una buena probabilidad de que estés recargando tu servidor en este momento. Si ese es el caso, ¿por qué te odias? No esperes soporte del equipo de EssentialsX al usar /reload.
@@ -910,19 +1085,33 @@ setSpawner=§Cambiado tipo de generador a§c {0}§6.
sethomeCommandDescription=Establece tu hogar en tu posición actual.
sethomeCommandUsage=/<command> [[jugador\:]nombre]
sethomeCommandUsage1=/<comando> <nombre>
sethomeCommandUsage1Description=Establece tu hogar con el nombre dado en tu ubicación
sethomeCommandUsage2=/<comando> <jugador>\:<nombre>
sethomeCommandUsage2Description=Establece el hogar con el nombre dado el jugador especificado en tu ubicación
setjailCommandDescription=Crea una cárcel donde especificaste, llamada [jailname].
setjailCommandUsage=/<command> <cárcel>
setjailCommandUsage1=/<command> <cárcel>
setjailCommandUsage1Description=Establece la cárcel con el nombre dado en tu ubicación
settprCommandDescription=Establece la ubicación y parámetros de teletransporte aleatorio.
settprCommandUsage=/<command> [center|minrange|maxrange] [valor]
settprCommandUsage1=/<command> centro
settprCommandUsage1Description=Establece el centro del teletransporte aleatorio en tu ubicación
settprCommandUsage2=/<comando> rangomin <radio>
settprCommandUsage2Description=Establece el radio mínimo de teletransporte aleatorio al valor dado
settprCommandUsage3=/<comando> rangomax <radio>
settprCommandUsage3Description=Establece el radio de teletransporte aleatorio máximo al valor dado
settpr=§6Establece un centro de teletransporte aleatorio.
settprValue=§6Establece un teletransporte aleatorio desde §c{0}§6 a §c{1}§6.
setwarpCommandDescription=Crea un nuevo warp.
setwarpCommandUsage=/<command> <warp>
setwarpCommandUsage1=/<command> <warp>
setwarpCommandUsage1Description=Establece el warp con el nombre especificado en tu ubicación
setworthCommandDescription=Establece el valor de venta de un item.
setworthCommandUsage=/<command> [item|id] <precio>
setworthCommandUsage1=/<command> <price>
setworthCommandUsage1Description=Establece el valor del objeto sostenido al precio dado
setworthCommandUsage2=/<command> <itemname> <price>
setworthCommandUsage2Description=Establece el valor del objeto especificado al precio dado
sheepMalformedColor=§4Color malformado.
shoutDisabled=§6Modo gritar §cdesactivado§6.
shoutDisabledFor=§6Modo gritar §cdesactivado §6para §c{0}§6.
@@ -934,6 +1123,7 @@ editsignCommandClearLine=§6Borrada linea§c {0}§6.
showkitCommandDescription=Muestra los contenidos de un kit.
showkitCommandUsage=/<command> <kit>
showkitCommandUsage1=/<command> <kit>
showkitCommandUsage1Description=Muestra un resumen de los objetos en el kit especificado
editsignCommandDescription=Edita un cartel en el mundo.
editsignCommandLimit=§4El texto proporcionado es demasiado largo para que quepa en el cartel de destino.
editsignCommandNoLine=§4Debes indicar un número de línea entre §c1-4§4.
@@ -944,6 +1134,14 @@ editsignCopyLine=§6¡Línea §c{0} §6de firma copiada\! Pégala con §c/{1}{0}
editsignPaste=§6¡Firma pegada\!
editsignPasteLine=§6¡Línea de firma §c{0} §6pegada\!
editsignCommandUsage=/<comando> <set/clear/copy/paste> [número de línea] [texto]
editsignCommandUsage1=/<comando> poner <número de línea> <texto>
editsignCommandUsage1Description=Pone el texto dado en la línea especificada del cartel
editsignCommandUsage2=/<comando> borrar <número de línea>
editsignCommandUsage2Description=Borra la línea especificada del cartel señalado
editsignCommandUsage3=/<comando> copiar [número de línea]
editsignCommandUsage3Description=Copia todo (o la línea especificada) el cartel señalado al portapapeles
editsignCommandUsage4=/<comando> pegar [número de línea]
editsignCommandUsage4Description=Pega el portapapeles a todo (o a la línea especificada) del cartel señalado
signFormatFail=§4[{0}]
signFormatSuccess=§1[{0}]
signFormatTemplate=[{0}]
@@ -956,7 +1154,9 @@ skullChanged=§6Calavera cambiada a §c{0}§6.
skullCommandDescription=Establece el dueño de un cráneo
skullCommandUsage=/<command> [dueño]
skullCommandUsage1=/<command>
skullCommandUsage1Description=Obtienes tu propia cabeza
skullCommandUsage2=/<command> <jugador>
skullCommandUsage2Description=Obtiene la cabeza del jugador especificado
slimeMalformedSize=§4Medidas malformadas.
smithingtableCommandDescription=Abre una mesa de herrería.
smithingtableCommandUsage=/<command>
@@ -966,22 +1166,34 @@ socialSpyMutedPrefix=§f[§6SS§f] §7(muted) §r
socialspyCommandDescription=Cambia si puedes ver msg/mail en chat.
socialspyCommandUsage=/<command> [jugador] [on|off]
socialspyCommandUsage1=/<command> [jugador]
socialspyCommandUsage1Description=Activa o desactiva el espía social para ti u otro jugador si se especifica
socialSpyPrefix=§f[§6SS§f] §r
soloMob=§4A este mob le gusta estar solo.
spawned=nacido
spawnerCommandDescription=Cambia el tipo de mob de un generador.
spawnerCommandUsage=/<command> <mob> [retraso]
spawnerCommandUsage1=/<command> <mob> [retraso]
spawnerCommandUsage1Description=Cambia el tipo de mob (y opcionalmente, la demora) del spawner que estés mirando
spawnmobCommandDescription=Invoca a un mob.
spawnmobCommandUsage=<command> <mob>[\:data][,<mount>[\:data]] [cantidad] [jugador]
spawnmobCommandUsage1=/<comando> <mob>[\:data] [cantidad] [jugador]
spawnmobCommandUsage1Description=Genera uno (o la cantidad especificada) del mob dado en tu ubicación (o la de otro jugador si se especifica)
spawnmobCommandUsage2=/<comando> <mob>[\:data],<motura>[\:data] [cantidad] [jugador]
spawnmobCommandUsage2Description=Genera uno (o la cantidad especificada) del mob dado montado en el mob dado en tu ubicación (o la de otro jugador si se especifica)
spawnSet=§6El lugar de aparición o el sitio del comando /spawn ha sido colocado para el grupo§c {0}§6.
spectator=espectador
speedCommandDescription=Cambia tus límites de velocidad.
speedCommandUsage=/<command> [tipo] <velocidad> [jugador]
speedCommandUsage1=/<command> <speed>
speedCommandUsage1Description=Establece tu velocidad de volar o de andar a la velocidad dada
speedCommandUsage2=/<command> <type> <speed> [player]
speedCommandUsage2Description=Establece el tipo de velocidad especificado a la velocidad dada para ti u otro jugador si se especifica
stonecutterCommandDescription=Abre un cortapiedras.
stonecutterCommandUsage=/<command>
sudoCommandDescription=Fuerza a otro usuario ejecutar un comando.
sudoCommandUsage=/<command> <jugador> <comando [argumentos]>
sudoCommandUsage1=/<command> <player> <command> [args]
sudoCommandUsage1Description=Hace que el jugador especificado ejecute el comando dado
sudoExempt=§4No puedes usar el comando sudo con este jugador.
sudoRun=§6Forcing§c {0} §6to run\:§r /{1}
suicideCommandDescription=Te hace perecer.
@@ -1020,16 +1232,29 @@ tempbanExemptOffline=§4No puedes banear temporalmente a jugadores que no están
tempbanJoin=You are banned from this server for {0}. Reason\: {1}
tempBanned=§cSe te ha baneado temporalmente por §r {0}\:\n§r{2}
tempbanCommandDescription=Banea temporalmente un usuario.
tempbanCommandUsage=/<command> <playername> <datediff> [reason]
tempbanCommandUsage1=/<comando> <jugador> <duración> [razón]
tempbanCommandUsage1Description=Banea al jugador dado durante la cantidad especificada de tiempo por una razón opcional
tempbanipCommandDescription=Banea temporalmente una dirección IP.
tempbanipCommandUsage=/<command> <playername> <datediff> [reason]
tempbanipCommandUsage1=/<comando> <jugador|dirección-ip> <duración> [razón]
tempbanipCommandUsage1Description=Banea la dirección IP dado durante la cantidad especificada de tiempo por una razón opcional
thunder=§6Has cambiado los truenos a§c {0} §6en tu mundo.
thunderCommandDescription=Activa/desactiva las tormentas.
thunderCommandUsage=/<command> <true/false> [duración]
thunderCommandUsage1=/<command> <true|false> [duration]
thunderCommandUsage1Description=Activa/desactiva los truenos durante una duración opcional
thunderDuration=§6Has§c {0} §6una tormenta en tu mundo durante§c {1} §6segundos.
timeBeforeHeal=Tiempo antes de la siguiente curacion\: {0}
timeBeforeTeleport=§4Tiempo antes del próximo teletransporte\:§c {0}§4.
timeCommandDescription=Muestra/Cambia la hora del mundo. Por defecto es el mundo actual.
timeCommandUsage=/<command> [set|add] [day|night|dawn|17\:30|4pm|4000ticks] [mundo|all]
timeCommandUsage1=/<command>
timeCommandUsage1Description=Muestra las horas de todos los mundos
timeCommandUsage2=/<comando> ajustar <tiempo> [mundo|todo]
timeCommandUsage2Description=Establece la hora del mundo actual (o el especificado) a la hora dada
timeCommandUsage3=/<comando> añadir <tiempo> [mundo|todo]
timeCommandUsage3Description=Añade la hora dada a la hora del mundo actual (o del especificado)
timeFormat=§c{0}§6 o §c{1}§6 o §c{2}§6
timeSetPermission=§4No tienes permitido cambiar la hora.
timeSetWorldPermission=§4You are not authorized to set the time in world ''{0}''.
@@ -1042,6 +1267,7 @@ togglejailCommandUsage=/<command> <jugador> <jail> [tiempo]
toggleshoutCommandDescription=Alterna si estás hablando en modo grito
toggleshoutCommandUsage=/<command> [jugador] [on|off]
toggleshoutCommandUsage1=/<command> [jugador]
toggleshoutCommandUsage1Description=Activa o desactiva el modo grito para ti u otro jugador si se especifica
topCommandDescription=Teletransporta al bloque más alto en tu posición actual.
topCommandUsage=/<command>
totalSellableAll=§aEl precio total de todos los objetos vendibles es de §c {1}.
@@ -1051,59 +1277,89 @@ totalWorthBlocks=§aVendidos todos los bloques por un total de §c{1}§a.
tpCommandDescription=Teletransporta a un jugador.
tpCommandUsage=/<command> <jugador> [otroJugador]
tpCommandUsage1=/<command> <jugador>
tpCommandUsage1Description=Te teletransporta al jugador especificado
tpCommandUsage2=/<comando> <jugador> <otro jugador>
tpCommandUsage2Description=Teletransporta el primer al segundo jugador especificado
tpaCommandDescription=Envía solicitud de teletransporte al jugador especificado.
tpaCommandUsage=/<command> <jugador>
tpaCommandUsage1=/<command> <jugador>
tpaCommandUsage1Description=Solicita teletransportarse al jugador especificado
tpaallCommandDescription=Solicita a todos los jugadores en línea a teletransportarse hacia ti.
tpaallCommandUsage=/<command> <jugador>
tpaallCommandUsage1=/<command> <jugador>
tpaallCommandUsage1Description=Solicita a todos los jugadores que se teletransporten a ti
tpacancelCommandDescription=Cancela todas las solicitudes de teletransporte pendientes. Especifica [player] para cancelar las solicitudes con aquel jugador.
tpacancelCommandUsage=/<command> [jugador]
tpacancelCommandUsage1=/<command>
tpacancelCommandUsage1Description=Cancela todas tus solicitudes de teletransporte pendientes
tpacancelCommandUsage2=/<command> <jugador>
tpacceptCommandDescription=Acepta una solicitud de teletransporte.
tpacancelCommandUsage2Description=Cancela todas tus solicitudes de teletransporte pendientes con el jugador especificado
tpacceptCommandDescription=Acepta solicitudes de teletransporte.
tpacceptCommandUsage=/<command> [otrojugador]
tpacceptCommandUsage1=/<command>
tpacceptCommandUsage1Description=Acepta la solicitud de teletransporte más reciente
tpacceptCommandUsage2=/<command> <jugador>
tpacceptCommandUsage2Description=Acepta la solicitud de teletransporte del jugador especificado
tpacceptCommandUsage3=/<comando> *
tpacceptCommandUsage3Description=Acepta todas las solicitudes de teletransporte
tpahereCommandDescription=Solicita que el jugador especificado se teletransporte hacia ti.
tpahereCommandUsage=/<command> <jugador>
tpahereCommandUsage1=/<command> <jugador>
tpahereCommandUsage1Description=Solicita que el jugador especificado se teletransporte a ti
tpallCommandDescription=Teletransporta todos los jugadores en línea a otro jugador.
tpallCommandUsage=/<command> [jugador]
tpallCommandUsage1=/<command> [jugador]
tpallCommandUsage1Description=Teletransporta a todos los jugadores a ti, u otro jugador si se especifica
tpautoCommandDescription=Automáticamente acepta solicitudes de teletransporte.
tpautoCommandUsage=/<command> [jugador]
tpautoCommandUsage1=/<command> [jugador]
tpdenyCommandDescription=Rechaza una solicitud de teletransporte.
tpautoCommandUsage1Description=Activa o desactiva si las solicitudes de teletransporte se aceptan automáticamente para ti u otro jugador si se especifica
tpdenyCommandDescription=Rechaza las solicitudes de teletransporte.
tpdenyCommandUsage=/<command>
tpdenyCommandUsage1=/<command>
tpdenyCommandUsage1Description=Rechaza la solicitud de teletransporte más reciente
tpdenyCommandUsage2=/<command> <jugador>
tpdenyCommandUsage2Description=Rechaza la solicitud de teletransporte del jugador especificado
tpdenyCommandUsage3=/<comando> *
tpdenyCommandUsage3Description=Rechaza todas las solicitudes de teletransporte
tphereCommandDescription=Teletransporta un jugador hacia ti.
tphereCommandUsage=/<command> <jugador>
tphereCommandUsage1=/<command> <jugador>
tphereCommandUsage1Description=Teletransporta al jugador especificado a ti
tpoCommandDescription=Teletransporte anulado en tptoggle.
tpoCommandUsage=/<command> <jugador> [otroJugador]
tpoCommandUsage1=/<command> <jugador>
tpoCommandUsage1Description=Teletransporta al jugador especificado a ti sobrescribiendo sus preferencias
tpoCommandUsage2=/<comando> <jugador> <otro jugador>
tpoCommandUsage2Description=Teletransporta el primer jugador especificado al segundo sobrescribiendo sus preferencias
tpofflineCommandDescription=Teletransporta a la última ubicación de desconexión de un jugador
tpofflineCommandUsage=/<command> <jugador>
tpofflineCommandUsage1=/<command> <jugador>
tpofflineCommandUsage1Description=Te teletransporta al lugar de desconexión del jugador especificado
tpohereCommandDescription=Teletransporte aquí anulado en tptoggle.
tpohereCommandUsage=/<command> <jugador>
tpohereCommandUsage1=/<command> <jugador>
tpohereCommandUsage1Description=Teletransporta al jugador especificado a ti sobrescribiendo sus preferencias
tpposCommandDescription=Teletransportar a coordenadas.
tpposCommandUsage=/<command> <x> <y> <z> [yaw] [pitch] [world]
tpposCommandUsage1=/<command> <x> <y> <z> [yaw] [pitch] [world]
tpposCommandUsage1Description=Te teletransporta al lugar especificado con un cabeceo, balanceo, y/o mundo opcional
tprCommandDescription=Teletransporta al azar.
tprCommandUsage=/<command>
tprCommandUsage1=/<command>
tprCommandUsage1Description=Te teletransporta a una ubicación aleatoria
tprSuccess=§6Teletransportando a una ubicación aleatoria...
tps=§6Ticks por segundo \= {0}
tptoggleCommandDescription=Bloquea todas las formas de teletransportación.
tptoggleCommandUsage=/<command> [jugador] [on|off]
tptoggleCommandUsage1=/<command> [jugador]
tptoggleCommandUsageDescription=Activa o desactiva el teletransporte para ti u otro jugador si se especifica
tradeSignEmpty=Esta tienda no tiene nada disponible para ti.
tradeSignEmptyOwner=No hay nada que recojer de esta tienda.
treeCommandDescription=Genera un árbol donde miras.
treeCommandUsage=/<command> <tree|birch|redwood|redmushroom|brownmushroom|jungle|junglebush|swamp>
treeCommandUsage1=/<command> <tree|birch|redwood|redmushroom|brownmushroom|jungle|junglebush|swamp>
treeCommandUsage1Description=Genera un árbol del tipo especificado donde estés mirando
treeFailure=§cError al generar el árbol. Prueba de nuevo en tierra, tierra húmeda o hierba.
treeSpawned=§7Árbol generado.
true=§así§f
@@ -1116,15 +1372,23 @@ unableToSpawnMob=§4No puedes generar criaturas.
unbanCommandDescription=Desbanea el jugador especificado.
unbanCommandUsage=/<command> <jugador>
unbanCommandUsage1=/<command> <jugador>
unbanCommandUsage1Description=Desbanea el jugador especificado
unbanipCommandDescription=Desbanea la dirección IP especificada.
unbanipCommandUsage=/<command> <dirección IP>
unbanipCommandUsage1=/<command> <dirección IP>
unbanipCommandUsage1Description=Desbanea la dirección IP especificada
unignorePlayer=§6Ya no ignoras al jugador§c {0}§6.
unknownItemId=§4ID de ítem desconocido\:§r {0}§4.
unknownItemInList=§4Ítem desconocido {0} en {1} lista.
unknownItemName=§4Nombre de ítem desconocido\: {0}.
unlimitedCommandDescription=Permite la colocación infinita de items.
unlimitedCommandUsage=/<command> <list|item|clear> [jugador]
unlimitedCommandUsage1=/<comando> lista [jugador]
unlimitedCommandUsage1Description=Muestra una lista de elementos ilimitados para ti u otro jugador si se especifica
unlimitedCommandUsage2=/<comando> <objeto> [jugador]
unlimitedCommandUsage2Description=Activa o desactiva si el objeto dado es ilimitado para ti u otro jugador si se especifica
unlimitedCommandUsage3=/<comando> limpiar [jugador]
unlimitedCommandUsage3Description=Limpia todos los objetos ilimitados para ti u otro jugador si se especifica
unlimitedItemPermission=§4Sin permiso para artículo ilimitado §c{0}§4.
unlimitedItems=§6Ítems ilimitados\:§r
unmutedPlayer=§6El jugador§c {0} §6ya no está silenciado.
@@ -1153,6 +1417,7 @@ vanish=§6Invisibilidad mágica para {0}§6\:§c {1}
vanishCommandDescription=Te oculta de otros jugadores.
vanishCommandUsage=/<command> [jugador] [on|off]
vanishCommandUsage1=/<command> [jugador]
vanishCommandUsage1Description=Activa o desactiva el modo invisible para ti u otro jugador si se especifica
vanished=§6Ahora eres invisible para los usuarios normales, ellos no podrán detectarte ni con comandos.
versionCheckDisabled=§6Comprobación de actualización desactivada en config.
versionCustom=§6¡Error al comprobar tu versión\! ¿Autocompilar? Info. de compilación\: §c{0}§6.
@@ -1183,11 +1448,15 @@ walking=caminando
warpCommandDescription=Lista todos los warp o teletransporta al warp especificado.
warpCommandUsage=/<command> <página|warp> [jugador]
warpCommandUsage1=/<comando> [página]
warpCommandUsage1Description=Enumera todos los warps en la primera página, o en la especificada
warpCommandUsage2=/<comando> <warp> [jugador]
warpCommandUsage2Description=Teletransporta a ti o a un jugador especificado al warp dado
warpDeleteError=Problema al borrar el archivo de teletransporte.
warpInfo=§6Información del warp§c {0}§6\:
warpinfoCommandDescription=Encuentra información de ubicación de un warp específico.
warpinfoCommandUsage=/<command> <warp>
warpinfoCommandUsage1=/<command> <warp>
warpinfoCommandUsage1Description=Proporciona información sobre el warp dado
warpingTo=§6Teletransportando a§c {0}§6...
warpList={0}
warpListPermission=§cNo tienes permiso para listar esos teletransportes.
@@ -1197,6 +1466,8 @@ warps=§6Warps\:§r {0}
warpsCount=§6Hay§c {0} §6puntos de teletransporte. Mostrando página §c{1} §6de §c{2}§6.
weatherCommandDescription=Establece el clima.
weatherCommandUsage=/<command> <storm/sun> [duración]
weatherCommandUsage1=/<comando> <tormenta|sol> [duración]
weatherCommandUsage1Description=Establece el clima del tipo dado durante una duración opcional
warpSet=§6El Warp§c {0} §6ha sido establecido.
warpUsePermission=§4No tienes permisos para usar ese Warp.
weatherInvalidWorld=¡No se ha podido encontrar el mundo llamado "{0}"\!
@@ -1213,6 +1484,7 @@ whoisBanned=§7 - Baneado\:§f {0}
whoisCommandDescription=Determina el usuario real detrás de un apodo.
whoisCommandUsage=/<command> <apodo>
whoisCommandUsage1=/<command> <jugador>
whoisCommandUsage1Description=Proporciona información básica sobre el jugador especificado
whoisExp=§7 - Exp\:§f {0} (Nivel {1})
whoisFly=§7 - Modo volar\:§f {0} ({1})
whoisSpeed=§6 - Velocidad\:§r {0}
@@ -1238,9 +1510,20 @@ workbenchCommandUsage=/<command>
worldCommandDescription=Alterna entre mundos.
worldCommandUsage=/<command> [mundo]
worldCommandUsage1=/<command>
worldCommandUsage1Description=Te teletransporta a tu ubicación actual en el nether o en el mundo normal
worldCommandUsage2=/<comando> <mundo>
worldCommandUsage2Description=Te teletransporta a tu ubicación en el mundo dado
worth=§7Pila de {0} con valor de §c{1}§7 ({2} objeto(s) a {3} cada uno)
worthCommandDescription=Calcula el valor de los items en la mano o especificados.
worthCommandUsage=/<command> <<item>|<id>|hand|inventory|blocks> [-][cantidad]
worthCommandUsage1=/<comando> <nombredeitem> [cantidad]
worthCommandUsage1Description=Comprueba el valor de todo (o la cantidad dada, si se especifica) del objeto dado en tu inventario
worthCommandUsage2=/<comando> mano [cantidad]
worthCommandUsage2Description=Comprueba el valor de todo (o la cantidad dada, si se especifica) del objeto sostenido
worthCommandUsage3=/<comando> todos
worthCommandUsage3Description=Comprueba el valor de todos los objetos posibles en tu inventario
worthCommandUsage4=/<comando> bloques [cantidad]
worthCommandUsage4Description=Comprueba el valor de todos (o la cantidad dada, si se especifica) los bloques en tu inventario
worthMeta=§7Pila de {0} con metadata de {1} , con valor de §c{2}§7 ({3} objeto(s) a {4} cada uno)
worthSet=Establecer valor
year=año
@@ -126,7 +126,6 @@ cantReadGeoIpDB=GeoIP andmebaasi lugemisel esines viga\!
cantSpawnItem=§4Sul puudub eseme§c {0}§4 tekitamiseks luba.
cartographytableCommandDescription=Avab kartograafialaua.
cartographytableCommandUsage=/<käsklus>
chatTypeLocal=[K]
chatTypeSpy=[Spioon]
cleaned=Kasutajafailid puhastatud.
cleaning=Kasutajafailide puhastamine.
@@ -143,6 +142,7 @@ clearinventoryCommandUsage3Description=Tühjendab kõik (või määratud koguse)
clearinventoryconfirmtoggleCommandDescription=Lülitab seljakoti puhastamise kinnituse küsimise sisse/välja.
clearinventoryconfirmtoggleCommandUsage=/<käsklus>
commandArgumentOptional=§7
commandArgumentOr=§c
commandArgumentRequired=§e
commandCooldown=§cSa ei saa veel {0} seda käsklust kirjutada.
commandDisabled=§cKäsklus§6 {0}§c on keelatud.
@@ -232,6 +232,21 @@ destinationNotSet=Sihtkoht on määramata\!
disabled=keelatud
disabledToSpawnMob=§4Selle eluka tekitamine on seadistustes keelatud.
disableUnlimited=§6Mängijale§c {1}§6 on keelatud ploki§c {0} §6lõpmatu asetamine.
discordbroadcastCommandUsage=/<käsklus> <kanal> <sõnum>
discordbroadcastCommandUsage1=/<käsklus> <kanal> <sõnum>
discordbroadcastInvalidChannel=§4Discordi kanalit §c{0}§4 ei eksisteeri.
discordbroadcastSent=§6Sõnum saadetud kanalisse §c{0}§6\!
discordCommandDescription=Saadab discordi kutse lingi mängijale.
discordCommandLink=§6Liitu meie Discordi serveriga §c{0}§6\!
discordCommandUsage=/<käsklus>
discordCommandUsage1=/<käsklus>
discordCommandUsage1Description=Saadab discordi kutse lingi mängijale
discordCommandExecuteArgumentCommand=Käivitatav käsklus
discordCommandExecuteReply=Käskluse käivitamine\: "/{0}"
discordCommandListDescription=Hangib võrgumängijate nimekirja.
discordErrorCommandDisabled=See käsklus on keelatud\!
discordLoggingIn=Proovin logida Discordi...
discordLoggingInDone=Edukalt sisse logitud kui {0}
disposal=Prügišaht
disposalCommandDescription=Avab kaasaskantava hävitusmenüü.
disposalCommandUsage=/<käsklus>
@@ -245,11 +260,11 @@ ecoCommandDescription=Haldab serveri ökonoomiat.
ecoCommandUsage=/<käsklus> <give|take|set|reset> <mängija> <kogus>
ecoCommandUsage1=/<käsklus> give <mängija> <summa>
ecoCommandUsage1Description=Annab määratud mängijale valitud hulgal raha
ecoCommandUsage2=/<käsklus> take <mängija> <kogus>
ecoCommandUsage2=/<käsklus> take <mängija> <summa>
ecoCommandUsage2Description=Võtab määratud mängijalt valitud hulga raha
ecoCommandUsage3=/<käsklus> set <mängija> <kogus>
ecoCommandUsage3=/<käsklus> set <mängija> <summa>
ecoCommandUsage3Description=Määrab määratud mängija rahasummaks valitud hulga raha
ecoCommandUsage4=/<käsklus> reset <mängija> <kogus>
ecoCommandUsage4=/<käsklus> reset <mängija> <summa>
ecoCommandUsage4Description=Lähtestab määratud mängija rahasumma serveri algussummale
editBookContents=§eSa võid nüüd muuta selle raamatu sisu.
enabled=lubatud
@@ -287,6 +302,7 @@ essentialsCommandUsage6=/<käsklus> cleanup
essentialsCommandUsage6Description=Kustutab vanad kasutajate andmed
essentialsCommandUsage7=/<käsklus> homes
essentialsCommandUsage7Description=Haldab kasutaja kodusid
essentialsCommandUsage8=/<käsklus> dump [all] [config] [discord] [kits] [log]
essentialsHelp1=Fail on vigane ning Essentials ei saa seda avada. Essentials on nüüd keelatud. Kui sa ei suuda seda faili ise parandada, mine aadressile http\://tiny.cc/EssentialsChat
essentialsHelp2=Fail on vigane ning Essentials ei saa seda avada. Essentials on nüüd keelatud. Kui sa ei suuda seda faili ise parandada, kirjuta mängus /essentialshelp või mine aadressile http\://tiny.cc/EssentialsChat
essentialsReload=§6Essentials taaslaetud§c {0}.
@@ -439,7 +455,7 @@ homeConfirmation=§6Sul juba on kodu nimega §c{0}§6\!\nOlemasoleva kodu üleki
homeSet=§6Kodu määratud.
hour=tund
hours=tundi
ice=§Sa tunned end jahedana...
ice=§Sa tunned end tunduvalt jahedamana...
iceCommandDescription=Jahutab mängija maha.
iceCommandUsage=/<käsklus> [mängija]
iceCommandUsage1=/<käsklus>
@@ -447,8 +463,8 @@ iceCommandUsage1Description=Jahutab sind maha
iceCommandUsage2=/<käsklus> <mängija>
iceCommandUsage2Description=Jahutab antud mängija maha
iceCommandUsage3=/<käsklus> *
iceCommandUsage3Description=Jahutab kõik aktiivsed mängijad maha
iceOther=§6Jahtumine§c {0}§6.
iceCommandUsage3Description=Jahutab kõik võrgus olevad mängijad maha
iceOther=§6Mängija§c {0}§6 jahutamine.
ignoreCommandDescription=Ignoreeri või ära ignoreeri teisi mängijaid.
ignoreCommandUsage=/<käsklus> <mängija>
ignoreCommandUsage1=/<käsklus> <mängija>
@@ -496,12 +512,13 @@ itemCommandDescription=Tekita ese.
itemCommandUsage=/<käsklus> <ese|number> [kogus [esememeta...]]
itemCommandUsage1=/<käsklus> <ese> [kogus]
itemCommandUsage1Description=Annab sulle terve kuhja (või määratud koguses) esemeid
itemCommandUsage2=/<käsklus> <mängija> <ese> <kogus> <metaandmed>
itemCommandUsage2=/<käsklus> <ese> <kogus> <metaandmed>
itemCommandUsage2Description=Annab mängijale määratud koguse määratud koguse esemeid koos antud metaandmetega
itemId=§6ID\:§c {0}
itemloreClear=§6Sa oled tühjendanud selle eseme vihjeteksti.
itemloreCommandDescription=Muuda eseme vihjeteksti.
itemloreCommandUsage=/<käsklus> <add/set/clear> [text/line] [tekst]
itemloreCommandUsage1=/<käsklus> add [tekst]
itemloreCommandUsage1Description=Lisatud antud teksti käes hoitava eseme vihjeteksti
itemloreCommandUsage2=/<käsklus> set <reanumber> <tekst>
itemloreCommandUsage2Description=Määrab kindlaks etteantud eseme vihjeteksti rea
@@ -542,6 +559,9 @@ jailAlreadyIncarcerated=§4Mängija on juba vanglas\:§c {0}
jailList=§6Vanglad\:§r {0}
jailMessage=§4Sooritasid kuriteo, istud oma aja ära.
jailNotExist=§4Sellist vanglat pole olemas.
jailNotifyJailed=§6Mängija§c {0} §6on §c{1}§6 poolt vangistatud.
jailNotifyJailedFor=§6Mängija§c {0} §6on §c{2}§6 poolt vangistatud põhjusega§c {1}§6.
jailNotifySentenceExtended=§6Mängija§c {0} §6vangistusaega on §c{2}§6 poolt pikendatud ajani §c{1}§6.
jailReleased=§6Mängija §c{0}§6 on vanglast vabastatud.
jailReleasedPlayerNotify=§6Sind vabastati vanglast\!
jailSentenceExtended=§6Vangi aega pikendati järgnevalt\: {0}
@@ -618,24 +638,34 @@ listCommandUsage1=/<käsklus> [grupp]
listCommandUsage1Description=Loetleb kõik mängijad serveris või antud rühmas, kui see on määratletud
listGroupTag=§6{0}§r\:
listHiddenTag=§7[PEIDETUD]§r
listRealName=({0})
loadWarpError=§4Koolu {0} laadimisel esines viga.
localFormat=[K]<{0}> {1}
loomCommandDescription=Avab kangasteljed.
loomCommandUsage=/<käsklus>
mailClear=§6Postkasti tühjendamiseks kirjuta§c /mail clear§6.
mailCleared=§6Postkast tühjendatud\!
mailClearIndex=§4Sa pead valima numbri 1-{0} vahel.
mailCommandDescription=Haldab üle-mängija, üle-serverilist postkastisüsteemi.
mailCommandUsage=/<käsklus> [read|clear|clear [arv]|send [mängijale] [sõnum]|sendtemp [mängijale] [aegumisaeg] [sõnum]|sendall [sõnum]]
mailCommandUsage1=/<käsklus> read [lk]
mailCommandUsage1Description=Loeb teie kirja esimest (või täpsustatud) lehte
mailCommandUsage2=/<käsklus> clear [arv]
mailCommandUsage3=/<käsklus> send <mängija> <sõnum>
mailCommandUsage3Description=Saadab määratud mängijale antud sõnumi
mailCommandUsage4=/<käsklus> sendall <sõnum>
mailCommandUsage4Description=Saadab kõikidele mängijatele antud sõnumi
mailCommandUsage5=/<käsklus> sendtemp <mängija> <aegumisaeg> <sõnum>
mailCommandUsage6=/<käsklus> sendtempall <aegumisaeg> <sõnum>
mailDelay=Saatsid viimase minuti jooksul liiga palju kirju. Maksimaalne kirjade saatmise arv\: {0}
mailFormatNew=§6[§r{0}§6] §6[§r{1}§6] §r{2}
mailFormatNewTimed=§6[§e⚠§6] §6[§r{0}§6] §6[§r{1}§6] §r{2}
mailFormatNewRead=§6[§r{0}§6] §6[§r{1}§6] §7§o{2}
mailFormatNewReadTimed=§6[§e⚠§6] §6[§r{0}§6] §6[§r{1}§6] §7§o{2}
mailFormat=§6[§r{0}§6] §r{1}
mailMessage={0}
mailSent=§6Kiri saadetud\!
mailSentTo=§6Mängijale §c{0}§6 saadeti järgnev kiri\:
mailSentToExpire=§6Mängijale §c{0}§6 saadeti järgnev kiri, mis aegub §c{1}§6\:
mailTooLong=§4Kiri on liiga pikk. Püüa see hoida alla 1000 tähemärgi.
markMailAsRead=§6Kirjade loetuks märkimiseks kirjuta §c /mail clear§6.
matchingIPAddress=§6Sellelt IP-aadressilt on eelnevalt sisse loginud järgnevad mängijad\:
@@ -715,6 +745,7 @@ nearCommandUsage3Description=Loetleb kõik mängijad, kes asuvad täpsustatud m
nearCommandUsage4=/<käsklus> <mängija> <raadius>
nearCommandUsage4Description=Loetleb kõik mängijad, kes asuvad täpsustatud mängija antud raadiuses
nearbyPlayers=§6Läheduses olevad mängijad\:§r {0}
nearbyPlayersList={0}§f(§c{1}m§f)
negativeBalanceError=§4Kasutajal ei tohi olla negatiivne rahasumma.
nickChanged=§6Hüüdnimi on muudetud.
nickCommandDescription=Muuda enda või teise mängija hüüdnime.
@@ -768,8 +799,6 @@ noPlacePermission=§4Sul puudub luba selle sildi juurde ploki asetamiseks.
noPotionEffectPerm=§4Sul puudub luba sellele võlujoogile efekti §c{0} §4 rakendamiseks.
noPowerTools=§6Sul puuduvad võimutööriistad.
notAcceptingPay=§4Mängija §4{0} §4ei võta makseid vastu.
notAllowedToQuestion=§4Sul puudub küsimuse kasutamiseks luba.
notAllowedToShout=§4Sul puudub hüüdmiseks luba.
notEnoughExperience=§4Sul pole piisavalt kogemuspunkte.
notEnoughMoney=§4Sul pole piisavalt raha.
notFlying=ei lenda
@@ -828,6 +857,11 @@ playerTempBanned=§6Mängija §c{0}§6 blokeeris ajutiselt mängija §c{1}§6 p
playerUnbanIpAddress=§6Mängija§c {0} §6eemaldas IP§c {1} §6blokeeringu
playerUnbanned=§6Mängija§c {0} §6eemaldas mängija§c {1} §6blokeeringu
playerUnmuted=§6Sa ei ole enam vaigistatud.
playtimeCommandUsage=/<käsklus> [mängija]
playtimeCommandUsage1=/<käsklus>
playtimeCommandUsage2=/<käsklus> <mängija>
playtime=§6Mänguaeg\:§c {0}
playtimeOther=§6Mängija {1}§6 mänguaeg\:§c {0}
pong=Pong\!
posPitch=§6Vert. pööre\: {0} (pea nurk)
possibleWorlds=§6Võimalikud maailmad on arvud vahemikus §c0§6-§c{0}§6.
@@ -863,7 +897,7 @@ powertoolCommandUsage2=/<käsklus> d\:
powertoolCommandUsage2Description=Kustutab kõik käes oleva eseme tööriistad
powertoolCommandUsage3=/<käsklus> r\:<käsklus>
powertoolCommandUsage3Description=Eemaldab antud käskluse käeshoitavalt esemelt
powertoolCommandUsage4=/<käsklus> <cmd>
powertoolCommandUsage4=/<käsklus> <käsklus>
powertoolCommandUsage4Description=Määrab tööriista käskluse käeshoitavale eseme antud käskluse
powertoolCommandUsage5=/<käsklus> a\:<käsklus>
powertoolCommandUsage5Description=Lisab antud tööriista käskluse käeshoitavale esemele
@@ -881,7 +915,7 @@ pweatherCommandDescription=Määra mängija ilma
pweatherCommandUsage=/<käsklus> [list|reset|storm|sun|clear] [mängija|*]
pweatherCommandUsage1=/<käsklus> list [mängija]|*]
pweatherCommandUsage1Description=Loetleb mängija ilma sinu jaoks või teise mängija, kui on täpsustatud
pweatherCommandUsage2=/<käsklus> <torm|päikesepaisteline> [mängija]|*]
pweatherCommandUsage2=/<käsklus> <storm|sun> [mängija]|*]
pweatherCommandUsage2Description=Määrab ilma sinule või teistele mängijale kui on etteantud ilm
pweatherCommandUsage3=/<käsklus> reset [mängija|*]
pweatherCommandUsage3Description=Lähtestab ilma sinu või teisele mängijale, kui on täpsustatud
@@ -917,7 +951,7 @@ recipe=§6Retsept esemele §c{0}§6 (§c{1}§6/§c{2}§6)
recipeBadIndex=Selle arvuga retsepti ei leitud.
recipeCommandDescription=Kuvab, kuidas esemeid meisterdada.
recipeCommandUsage=/<käsklus> <ese> [number]
recipeCommandUsage1=/<käsklus> <ese> [lehekülg]
recipeCommandUsage1=/<käsklus> <ese> [lk]
recipeCommandUsage1Description=Näitab kuidas meisterdada antud eset
recipeFurnace=§6Sulata\: §c{0}§6.
recipeGrid=§c{0}X §6| §{1}X §6| §{2}X
@@ -929,9 +963,9 @@ recipeShapeless=§6Kombineeri §c{0}
recipeWhere=§6Kus\: {0}
removeCommandDescription=Eemaldab sinu maailmast olemid.
removeCommandUsage=/<käsklus> <all|tamed|named|drops|arrows|boats|minecarts|xp|paintings|itemframes|endercrystals|monsters|animals|ambient|mobs|[elukaliik]> [raadius|maailm]
removeCommandUsage1=/<käsklus> <eluka tüüp> [maailm]
removeCommandUsage1=/<käsklus> <elukatüüp> [maailm]
removeCommandUsage1Description=Eemaldab kõik eluka tüübid selles maailmas või teises, kui on täpsustatud
removeCommandUsage2=/<käsklus> <eluka tüüp> <raadius> [maailm]
removeCommandUsage2=/<käsklus> <elukatüüp> <raadius> [maailm]
removeCommandUsage2Description=Eemaldab antud eluka tüübi antud raadiuses praeguses maailmas või teises, kui on täpsustatud
removed=§c {0} §6 olemit on eemaldatud.
repair=§6Parandasid edukalt oma §c{0}§6.
@@ -945,6 +979,7 @@ repairCommandUsage2Description=Parandab sinu seljakotis kõik esemed
repairEnchanted=§4Sul puudub loitsitud esemete parandamiseks luba.
repairInvalidType=§4Seda eset ei saa parandada.
repairNone=§4Polnud ühtegi eset, mis vajaksid parandamist.
replyFromDiscord=**Vastus mängijalt {0}\:** `{1}`
replyLastRecipientDisabled=§6Viimasele sõnumisaatjale vastamine on §ckeelatud§6.
replyLastRecipientDisabledFor=§6Viimasele sõnumisaatjale vastamine on §ckeelatud §6mängijale §c{0}§6.
replyLastRecipientEnabled=§6Viimasele sõnumisaatjale vastamine on §clubatud§6.
@@ -958,6 +993,7 @@ requestDeniedFrom=§6Mängija §c{0} §6hülgas su teleporteerumiskutse.
requestSent=§6Kutse saadetud mängijale§c {0}§6.
requestSentAlready=§4Sa juba saatsid teleporteerumiskutse mängijale {0}.
requestTimedOut=§4Teleporteerumiskutse aegus.
requestTimedOutFrom=§4Teleporteerumiskutse mängijalt §c{0} §4on aegunud.
resetBal=§6Rahasumma on taastatud väärtuseks §c{0} §6kõikidel võrgus olevatel mängijatel.
resetBalAll=§6Rahasumma on taastatud väärtuseks §c{0} §6kõikidel mängijatel.
rest=§6Tunned end puhanuna.
@@ -1060,7 +1096,7 @@ editsignCommandUsage1=/<käsklus> set <reanumber> <tekst>
editsignCommandUsage1Description=Seadistab määratud rea teksti sihitud märgile
editsignCommandUsage2=/<käsklus> clear <reanumber>
editsignCommandUsage2Description=Puhastab määratud rea sihitud sildilt
editsignCommandUsage3=/<käsklus> copy <reanumber>]
editsignCommandUsage3=/<käsklus> copy [reanumber]
editsignCommandUsage3Description=Kopeerib kõik(või määratud realt) teksti sildilt sinu lõikelauale
editsignCommandUsage4=/<käsklus> paste [reanumber]
editsignCommandUsage4Description=Kleebib sinu lõikelaua sildile või määratud reale sildil
@@ -1095,14 +1131,19 @@ spawnerCommandUsage=/<käsklus> <elukas> [viivitus]
spawnerCommandUsage1=/<käsklus> <elukas> [viivitus]
spawnmobCommandDescription=Tekitab eluka.
spawnmobCommandUsage=/<käsklus> <elukas>[\:andmed][,<seljas>[\:andmed]] [kogus] [mängija]
spawnmobCommandUsage1=/<käsklus> <elukas>[\:andmed] [kogus] [mängija]
spawnmobCommandUsage2=/<käsklus> <elukas>[\:andmed],<seljas>[\:andmed] [kogus] [mängija]
spawnSet=§6Grupi §c {0}§6 tekkekoht on määratud.
spectator=vaatlus
speedCommandDescription=Muuda oma kiirusepiiranguid.
speedCommandUsage=/<käsklus> [fly|walk] <kiirus> [mängija]
speedCommandUsage1=/<käsklus> <kiirus>
speedCommandUsage2=/<käsklus> <tüüp> <kiirus> [mängija]
stonecutterCommandDescription=Avab kivilõikuri.
stonecutterCommandUsage=/<käsklus>
sudoCommandDescription=Sunni teine kasutaja käsklust teostama.
sudoCommandUsage=/<käsklus> <mängija> <käsklus [param.]>
sudoCommandUsage1=/<käsklus> <mängija> <käsklus> [param.]
sudoExempt=§4Sa ei saa mängijat §c{0}§4 sundida.
sudoRun=§6Sunnin mängijat§c {0} §6käivitama käsklust §r /{1}
suicideCommandDescription=Hukatab sind.
@@ -1111,7 +1152,7 @@ suicideMessage=§6Head aega, julm maailm...
suicideSuccess=§6Mängija §c{0} §6võttis endalt elu.
survival=ellujäämine
takenFromAccount=§aSinu kontolt on §e{0}§a maha võetud.
takenFromOthersAccount=§aMängija§e {1}§akontolt on §e{0}§a maha võetud. Uus rahasumma\:§e {2}
takenFromOthersAccount=§aMängija§e {1}§a kontolt on §e{0}§a maha võetud. Uus rahasumma\:§e {2}
teleportAAll=§6Teleporteerumiskutse saadetud kõikidele mängijatele...
teleportAll=§6Teleporteerin kõik mängijad...
teleportationCommencing=§6Teleporteerumine algab...
@@ -1141,17 +1182,23 @@ tempbanExemptOffline=§4Sa ei tohi ajutiselt blokeerida võrgust väljas olevaid
tempbanJoin=Sa oled sellest serverist {0} blokeeritud. Põhjus\: {1}
tempBanned=§cSind blokeeriti sellest serverist ajutiselt§r {0}\:\n§r{2}
tempbanCommandDescription=Blokeerib mängija ajutiselt.
tempbanCommandUsage=/<käsklus> <mängijanimi> <kestus> [põhjus]
tempbanCommandUsage1=/<käsklus> <mängija> <kestus> [põhjus]
tempbanipCommandDescription=Blokeerib IP-aadressi ajutiselt.
tempbanipCommandUsage=/<käsklus> <mängijanimi> <kestus> [põhjus]
tempbanipCommandUsage1=/<käsklus> <mängija|ip-aadress> <kestus> [põhjus]
thunder=§6Sa§c {0} §6äikeseliseks oma maailmas.
thunderCommandDescription=Luba/keela äike.
thunderCommandUsage=/<käsklus> <true/false> [kestus]
thunderCommandUsage1=/<käsklus> <true|false> [kestus]
thunderDuration=§6Sa§c {0} §6oma maailmas kõu§c {1} §6sekundiks.
timeBeforeHeal=§4Aeg enne järgmist elustamist\:§c {0}§4.
timeBeforeTeleport=§4Aeg enne järgmist teleporteerumist\:§c {0}§4.
timeCommandDescription=Kuva/muuda maailma aega. Vaikimisi kehtib praeguse maailma jaoks.
timeCommandUsage=/<käsklus> [set|add] [day|night|dawn|17\:30|4pm|4000ticks] [worldname|all]
timeCommandUsage1=/<käsklus>
timeCommandUsage2=/<käsklus> set <aeg> [world|all]
timeCommandUsage3=/<käsklus> add <aeg> [world|all]
timeFormat=§c{0}§6, §c{1}§6 või §c{2}§6
timeSetPermission=§4Sul puudub aja määramiseks luba.
timeSetWorldPermission=§4Sul puudub maailma "{0}" aja määramiseks luba.
@@ -1173,20 +1220,28 @@ totalWorthBlocks=§aMüüsid kõik plokid koguväärtusega §c{1}§a.
tpCommandDescription=Teleporteeru mängija juurde.
tpCommandUsage=/<käsklus> <mängija> [teinemängija]
tpCommandUsage1=/<käsklus> <mängija>
tpCommandUsage1Description=Teleporteerib sind kindla mängija juurde
tpCommandUsage2=/<käsklus> <mängija> <teine mängija>
tpCommandUsage2Description=Teleporteerib esimese kindla mängija teise juurde
tpaCommandDescription=Taotle valitud mängija juurde teleporteerumist.
tpaCommandUsage=/<käsklus> <mängija>
tpaCommandUsage1=/<käsklus> <mängija>
tpaallCommandDescription=Taotleb kõiki võrgus olevaid mängijaid sinu juurde teleporteeruma.
tpaallCommandUsage=/<käsklus> <mängija>
tpaallCommandUsage1=/<käsklus> <mängija>
tpaallCommandUsage1Description=Taotleb kõiki mängijaid sinu juurde teleporteeruma
tpacancelCommandDescription=Tühista kõik käimasolevad teleporteerumiskutsed. Määra [mängija], et tühistada vaid selle mängija taotlused.
tpacancelCommandUsage=/<käsklus> [mängija]
tpacancelCommandUsage1=/<käsklus>
tpacancelCommandUsage2=/<käsklus> <mängija>
tpacceptCommandDescription=Võtab teleporteerumiskutse vastu.
tpacceptCommandDescription=Võtab teleporteerumiskutsed vastu.
tpacceptCommandUsage=/<käsklus> [teinemängija]
tpacceptCommandUsage1=/<käsklus>
tpacceptCommandUsage1Description=Võtab teleporteerumiskutse vastu
tpacceptCommandUsage1Description=Võtab vastu kõige viimase Teleporteerimis kutse
tpacceptCommandUsage2=/<käsklus> <mängija>
tpacceptCommandUsage2Description=Võtab vastu teleporteerimis kutse kindlalt inimeselt
tpacceptCommandUsage3=/<käsklus> *
tpacceptCommandUsage3Description=Võtab kõik teleporteerumiskutsed vastu
tpahereCommandDescription=Taotle valitud mängijal sinu juurde teleporteerumist.
tpahereCommandUsage=/<käsklus> <mängija>
tpahereCommandUsage1=/<käsklus> <mängija>
@@ -1199,10 +1254,14 @@ tpautoCommandDescription=Võta automaatselt teleporteerumiskutsed vastu.
tpautoCommandUsage=/<käsklus> [mängija]
tpautoCommandUsage1=/<käsklus> [mängija]
tpautoCommandUsage1Description=Lülitab teleporteerumise kutsete automaatse vastuvõtmise sinule või teisele mängijale, kui on täpsustatud
tpdenyCommandDescription=Keeldub teleporteerumiskutsest.
tpdenyCommandDescription=Keeldub teleporteerumiskutsetest.
tpdenyCommandUsage=/<käsklus>
tpdenyCommandUsage1=/<käsklus>
tpdenyCommandUsage1Description=Eirab teleporteerumiskutset
tpdenyCommandUsage1Description=Tühistab kõige viimase teleporteerimis kutse
tpdenyCommandUsage2=/<käsklus> <mängija>
tpdenyCommandUsage2Description=Tühistab kõige viimase teleporteerimis kutse kindlalt inimeselt
tpdenyCommandUsage3=/<käsklus> *
tpdenyCommandUsage3Description=Keeldub kõigist teleporteerumiskutsetest
tphereCommandDescription=Teleporteeri mängija enda juurde.
tphereCommandUsage=/<käsklus> <mängija>
tphereCommandUsage1=/<käsklus> <mängija>
@@ -1211,6 +1270,7 @@ tpoCommandDescription=Teleporteerumise sundimine /tptoggle jaoks.
tpoCommandUsage=/<käsklus> <mängija> [teinemängija]
tpoCommandUsage1=/<käsklus> <mängija>
tpoCommandUsage1Description=Teleporteerib valitud mängija sinu juurde, eirates tema seadistust
tpoCommandUsage2=/<käsklus> <mängija> <teine mängija>
tpoCommandUsage2Description=Teleporteerib esimesena määratud mängija teise juurde, eirates nende seadistusi
tpofflineCommandDescription=Teleporteeru mängija viimase teadaoleva asukoha juurde enne välja logimist
tpofflineCommandUsage=/<käsklus> <mängija>
@@ -1314,6 +1374,7 @@ versionOutputFine=§6{0} versioon\: §a{1}
versionOutputWarn=§6{0} versioon\: §c{1}
versionOutputUnsupported=§d{0} §6versioon\: §d{1}
versionOutputUnsupportedPlugins=§6Sa käitad §dmittetoetatud pluginaid§6\!
versionOutputEconLayer=§6Ökonoomiakiht\: §r{0}
versionMismatch=§4Versioon ei kattu\! Palun uuenda {0} samale versioonile.
versionMismatchAll=§4Versioon ei kattu\! Palun uuenda kõik Essentialsi jarid samale versioonile.
versionReleaseLatest=§6Käitad viimatist EssentialsX''i stabiilset versiooni\!
@@ -1328,7 +1389,7 @@ warpCommandDescription=Loetleb kõik koolud või kooldub valitud asukohta.
warpCommandUsage=/<käsklus> <lehenr|koold> [mängija]
warpCommandUsage1=/<käsklus> [lk]
warpCommandUsage1Description=Annab nimekirja kõikidest lõimudest esimesel või täpsustatud leheküljel
warpCommandUsage2=/<käsklus> <warp> [mängija]
warpCommandUsage2=/<käsklus> <koold> [mängija]
warpCommandUsage2Description=Telepordib teid või määratud nimega mängija antud lõimu
warpDeleteError=§4Koolufaili kustutamisel esines probleem.
warpInfo=§6Koolu§c {0}§6 teave\:
@@ -22,6 +22,7 @@ antiBuildInteract=§4Ez duzu §c {0}§4-rekin interaktzioa jartzeko permisiorik.
antiBuildPlace=§4Ez daukazu hemen §c {0} §4 blokerik jartzeko baimenik.
antiBuildUse=§4Ez daukazu§c {0}§4 erabiltzeko baimenik.
antiochCommandUsage=/<command> [Mezua]
autoAfkKickReason=Byl jsi vyhozen za neaktivitu delší než {0} minut.
backupFinished=§6Segurtasun kopia ondo burutu da.
backupStarted=§6Segurtasun kopia burutzea hasi da.
backUsageMsg=§6Aurreko kokalekura itzultzen.
@@ -67,6 +68,7 @@ deleteFileError=Ezin izan da fitxategia ezabatu\: {0}
deleteHome=§c {0} §6etxea ezabatua.
deleteJail=§c {0} §6kartzela ezabatua.
deleteWarp=§c {0} §4telegarraiatze puntua ezabatu duzu.
deljailCommandDescription=Kartzela bat borratzen du.
deniedAccessCommand=§c{0} §4-(e) ri komandoaren erabilera ukatu zaio.
denyBookEdit=§4Ezin duzu liburu hau editatu.
denyChangeAuthor=§4Ezin duzu liburu honen idazlea aldatu.
@@ -232,8 +234,6 @@ noPerm=§4Ez daukazu §c{0} §4 baimena.
noPermissionSkull=§4Ez daukazu buru hori editatzeko baimenik.
noPermToSpawnMob=§4Ez daukazu munstro hori sortzeko baimenik.
noPlacePermission=§4Ez daukazu kartelaren ondoan blokerik jartzeko baimenik.
notAllowedToQuestion=§4Ez daukazu galderarik egiteko baimenik.
notAllowedToShout=§4Ez daukazu garrasi egiteko baimenik.
notEnoughExperience=§4Ez daukazu nahikoa esperientziarik.
notEnoughMoney=§4Ez daukazu nahikoa dirurik.
notFlying=ez da hegan ari
@@ -126,7 +126,6 @@ cantReadGeoIpDB=Ei pystytty lukemaan GeoIP tietokantaa\!
cantSpawnItem=§4Sinulla ei ole oikeutta luoda tavaraa§c {0}§4.
cartographytableCommandDescription=Avaa karttapöydän.
cartographytableCommandUsage=/<command>
chatTypeLocal=[L]
chatTypeSpy=[Vakoilu]
cleaned=Käyttäjätiedot on poistettu.
cleaning=Poistetaan käyttäjätietoja.
@@ -214,6 +213,8 @@ destinationNotSet=Sijaintia ei ole määritetty\!
disabled=poistettu käytöstä
disabledToSpawnMob=§4Tämän mobin luominen on poistettu käytöstä config tiedostossa.
disableUnlimited=§6Poistettiin käytöstä loputon asettaminen tavaralle§c {0} §6pelaajalta§c {1}§6.
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
discordCommandExecuteReply=Suoritetaan komento\: "/{0}"
disposal=Hävittäminen
disposalCommandDescription=Avaa kannettavan hävitysvalikon.
@@ -503,7 +504,6 @@ listCommandUsage1=/<command> [group]
listGroupTag=§6{0}§r\:
listHiddenTag=§7[HIDDEN]§f
loadWarpError=§4Virhe ladattaessa warppia {0}.
localFormat=[L]<{0}> {1}
loomCommandDescription=Avaa kangaspuut.
loomCommandUsage=/<command>
mailClear=§6Merkataksesi viestin luetuksi, kirjoita§c /mail clear§6.
@@ -626,8 +626,6 @@ noPlacePermission=§4Sinulla ei ole lupaa laittaa palikoita lähelle tuota kyltt
noPotionEffectPerm=§4Sinulla ei ole lupaa soveltaa juomavaikutusta §c{0} §4tähän juomaan.
noPowerTools=§6Sinulla ei ole määritetty voimatyökaluja.
notAcceptingPay=§4{0} §4ei hyväksy maksua.
notAllowedToQuestion=§4Sinulla ei ole lupaa käyttää kysymystä.
notAllowedToShout=§4Sinulla ei ole lupaa huutaa.
notEnoughExperience=§4Sinulla ei ole tarpeeksi kokemusta.
notEnoughMoney=§4Sinulla ei ole riittävästi rahaa.
notFlying=ei lennä
@@ -682,6 +680,9 @@ playerTempBanned=§6Pelaaja §c{0}§6 bannasi väliaikaisesti pelaajan §c{1}§6
playerUnbanIpAddress=§6Pelaaja§c {0} §6poisti porttikiellon IP-osoitteelta\:§c {1}
playerUnbanned=§6Pelaaja§c {0} §6poisti pelaajan§c {1}§6 porttikiellon
playerUnmuted=§6Sinulta poistettiin mykistys.
playtimeCommandUsage=/<command> [pelaaja]
playtimeCommandUsage1=/<command>
playtimeCommandUsage2=/<command> <player>
pong=Pong\!
posPitch=§6Kaltevuus\: {0} (Pään kulma)
possibleWorlds=§6Mahdolliset maailmat ovat numeroiden §c0§6 ja §c{0}§6 välillä.
@@ -960,9 +961,9 @@ tpacancelCommandDescription=Peruuttaa kaikki avoimet teleporttipyynnöt. Kirjoit
tpacancelCommandUsage=/<command> [pelaaja]
tpacancelCommandUsage1=/<command>
tpacancelCommandUsage2=/<command> <player>
tpacceptCommandDescription=Hyväksyy teleporttauspyynnnön.
tpacceptCommandUsage=/<command> [otherplayer]
tpacceptCommandUsage1=/<command>
tpacceptCommandUsage2=/<command> <player>
tpahereCommandDescription=Pyytää tiettyä pelaajaa teleporttaamaan luoksesi.
tpahereCommandUsage=/<command> <player>
tpahereCommandUsage1=/<command> <player>
@@ -972,9 +973,9 @@ tpallCommandUsage1=/<command> [pelaaja]
tpautoCommandDescription=Hyväksyy automaattisesti teleporttipyynnöt.
tpautoCommandUsage=/<command> [pelaaja]
tpautoCommandUsage1=/<command> [pelaaja]
tpdenyCommandDescription=Hylkää teleporttauspyynnön.
tpdenyCommandUsage=/<command>
tpdenyCommandUsage1=/<command>
tpdenyCommandUsage2=/<command> <player>
tphereCommandDescription=Teleporttaa pelaajan luoksesi.
tphereCommandUsage=/<command> <player>
tphereCommandUsage1=/<command> <player>
@@ -9,6 +9,7 @@ adventure=panglakbayan
afkCommandDescription=Mamarkahan ka na nakaalis-mula-sa-keyboard.
afkCommandUsage=/<command> [manlalaro/mensahe...]
afkCommandUsage1=/<command> [mensahe]
afkCommandUsage2=/<command> <manlalaro> [message]
alertBroke=sinira\:
alertFormat=§3[{0}] §r {1} §6 {2} sa\: {3}
alertPlaced=linagay\:
@@ -33,7 +34,9 @@ backAfterDeath=§6Gamitin ang§c /back§6 na utos upang bumalik sa iyong punto n
backCommandDescription=Lilipatin ka sa iyong locasyon bago sa tp/spawn/kiwal.
backCommandUsage=/<command> [manlalaro]
backCommandUsage1=/<command>
backCommandUsage1Description=Lilipatin ka sa iyong kaninang locasyon
backCommandUsage2=/<command> <manlalaro>
backCommandUsage2Description=Lilipatin ang tinutukoy na manlalaro sa kanilang kaninang locasyon
backOther=§6Binalik si§c {0}§6 sa nakaraang locasyon.
backupCommandDescription=Itatakbo ang backup kung kinongfigure.
backupCommandUsage=/<command>
@@ -46,11 +49,14 @@ balance=§aPitaka\:§c {0}
balanceCommandDescription=Sinasabi ang kasalukuyang pitaka ng manlalaro.
balanceCommandUsage=/<command> [manlalaro]
balanceCommandUsage1=/<command>
balanceCommandUsage1Description=Sinasabi ang kasalukuyang pitaka
balanceCommandUsage2=/<command> <manlalaro>
balanceOther=§aPitaka ni {0}§a\:§c {1}
balanceTop=§6Pinakamataas na pitaka ({0})
balanceTopLine={0}. {1}, {2}
balancetopCommandDescription=Kinukuha ang halaga ng mga pinakamataas na pitaka.
balancetopCommandUsage=/<command> [pahina]
balancetopCommandUsage1=/<command> [pahina]
banCommandDescription=Nagpapagbawal ng manlalaro.
banCommandUsage=/<command> <manlalaro> [dahilan]
banCommandUsage1=/<command> <manlalaro> [dahilan]
@@ -60,12 +66,14 @@ banFormat=§cPinagbawalan ka\:\n§r{0}
banIpJoin=Pinagbawalan ang iyong IP address mula sa server na ito. Dahilan\: {0}
banJoin=Pinagbawalan ka mula sa server na ito. Dahilan\: {0}
banipCommandDescription=Magpapagbawal ng IP address.
banipCommandUsage=/<command> <address> <dahilan>
banipCommandUsage1=/<command> <address> <dahilan>
bed=§okama§r
bedMissing=§4Ang iyong kama ay alinmang di-nakalagay, nawala o binawal.
bedNull=§mkama§r
bedOffline=§4Bawal ka lumipat sa mga kama ng mga manlalaro na offline.
bedSet=§6Inilagay ang spawn ng iyong kama\!
beezookaCommandDescription=Tumapon ng sumasabog na bubuyog sa iyong kalaban.
beezookaCommandDescription=Magtapon ng sumasabog na bubuyog sa iyong kalaban.
beezookaCommandUsage=/<command>
bigTreeFailure=§4Nabigong malaking puno na henerasyon. Gawin ulit sa damo o sa lupa.
bigTreeSuccess=§6Nalagay ang malaking puno.
@@ -76,6 +84,8 @@ bookAuthorSet=§6Itinakda ang gumawa ng libro sa {0}.
bookCommandDescription=Pumapayag ng pagbuksan at ng pagbago ng mga tinatakang libro.
bookCommandUsage=/<command> [pamagat|gumawa [pangalan]]
bookCommandUsage1=/<command>
bookCommandUsage2=/<command> may-akda <may-akda>
bookCommandUsage3=/<command> titulo <titulo>
bookLocked=§6Naka-lock na ang libro na ito.
bookTitleSet=§6Itinakda ang pamagat ng libro sa {0}.
breakCommandDescription=Sisirain yung bloke kung saan ka nakatingin.
@@ -101,7 +111,6 @@ cantReadGeoIpDB=Nabigo sa pagkabasa ng GeoIP database\!
cantSpawnItem=§6Hindi ka pinapayagang maglagay ng bagay na §c {0}§4.
cartographytableCommandDescription=Magbubukas ng mesa ng kartograpiya.
cartographytableCommandUsage=/<command>
chatTypeLocal=[L]
chatTypeSpy=[Ispiya]
cleaned=Binura na ang mga files ng user.
cleaning=Binubura ang mga files ng user.
@@ -111,16 +120,25 @@ clearinventoryCommandDescription=Buburahin ang lahat ng mga gamit sa iyong imben
clearinventoryCommandUsage=/<command> [manlalaro|*] [gamit[\:<data>]|*|**] [halaga]
clearinventoryCommandUsage1=/<command>
clearinventoryCommandUsage2=/<command> <manlalaro>
clearinventoryCommandUsage3=/<command> <manlalaro> <bagay> [halaga]
clearinventoryconfirmtoggleCommandUsage=/<command>
commandArgumentOptional=§7
commandArgumentOr=§c
commandArgumentRequired=§e
commandCooldown=§4Hindi maaaring sulatin ang utos na iyon para sa {0}.
commandDisabled=§cAng utos na§6 {0}§c ay di-napagana.
commandFailed=Ang utos na {0} ay nabigo\:
commandHelpFailedForPlugin=May pagkakamali sa pagkuha ng tulong para sa plugin\: {0}
commandHelpLine1=§6Tulong sa Command\: §f/{0}
commandHelpLine2=§6Description\: §f{0}
commandHelpLine3=§6Pagkakagamit;
commandHelpLineUsage={0} §6- {1}
commandNotLoaded=§4Hindi maayos ang pagka-load ng utos na {0}.
compassBearing=§6Kinalalaman\: {0} ({1} digri).
compassCommandDescription=Sinasabi ang iyong kasalakuyang kinalalaman.
compassCommandUsage=/<command>
condenseCommandDescription=Pinapaikliin ang mga bagay sa mga mas masiksik na bloke.
condenseCommandUsage=/<command> [bagay]
condenseCommandUsage1=/<command>
condenseCommandUsage2=/<command> <bagay>
configFileMoveError=Nabigo ang paglipat ng config.yml na file sa backup na locasyon.
@@ -150,22 +168,33 @@ customtextCommandUsage=/<alias> - I-kahulugan sa bukkit.yml
day=araw
days=mga araw
defaultBanReason=Nagsalita ang Pagbabawalang Martilyo\!
deletedHomes=Lahat ng mga bahay ay binura.
deletedHomesWorld=Lahat ng mga bahay sa {0} ay binura.
deleteFileError=Hindi mabura ang file\: {0}
deleteHome=§6Ang tahanan na§c {0} §6ay binura.
deleteJail=§6Ang kulungan na§c {0} §6ay binura.
deleteKit=§6Ang kit na§c {0} §6ay binura.
deleteWarp=§6Ang pagkiwal na§c {0} §6ay binura.
deletingHomes=Binubura ang lahat ng mga bahay...
deletingHomesWorld=Binubura ang lahat ng mga bahay sa {0}...
delhomeCommandDescription=Nagbubura ng tahanan.
delhomeCommandUsage=/<command> [manlalaro\:]<pangalan>
delhomeCommandUsage1=/<command> <pangalan>
delhomeCommandUsage1Description=Ibubura ang iyong bahay gamit ang pangalan na binigay
delhomeCommandUsage2=/<command> <manlalaro>\:<pangalan>
delhomeCommandUsage2Description=Ibubura ang bahay ng manlalarong tinutukoy gamit ang pangalan na binigay
deljailCommandDescription=Nagbubura ng kulungan.
deljailCommandUsage=/<command> <pangalan-ng-kulungan>
deljailCommandUsage1=/<command> <pangalan-ng-kulungan>
deljailCommandUsage1Description=Ibubura ang kulungan gamit ang pangalan na binigay
delkitCommandDescription=Magbubura ng tinukoy na kit.
delkitCommandUsage=/<command> <kit>
delkitCommandUsage1=/<command> <kit>
delkitCommandUsage1Description=Ibubura ang kit gamit ang pangalan na binigay
delwarpCommandDescription=Magbubura ng tinukoy na pagkiwal.
delwarpCommandUsage=/<command> <pagkiwal>
delwarpCommandUsage1=/<command> <pagkiwal>
delwarpCommandUsage1Description=Ibubura ang pagkiwal gamit ang pangalan na binigay
deniedAccessCommand=§4Si §c{0} §4ay hindi pinayagan upang mag-utos.
denyBookEdit=§4Hindi maaaring i-unlock ang librong ito.
denyChangeAuthor=§4Hindi maaaring baguhin ang gumawa ng librong ito.
@@ -179,21 +208,56 @@ destinationNotSet=Hindi nakatakda ang destinasyon\!
disabled=di-pinagana
disabledToSpawnMob=§4Di-pinagana ang pagka-likha ng itong mob sa config file.
disableUnlimited=§6Di-pinagana ang pagkalagay na walang-limitasyon ng§c {0} §6para§c {1}§6.
discordbroadcastCommandDescription=Mag-bo-brodkast ng mensahe sa tinutukoy na Discord channel.
discordbroadcastCommandUsage=/<command> <channel> <mensahe>
discordbroadcastCommandUsage1=/<command> <channel> <mensahe>
discordbroadcastCommandUsage1Description=Ipapadala ang mensaheng tinutukoy sa tinutukoy na Discord channel
discordbroadcastInvalidChannel=§4Yung discord channel na §c{0}§4 does not exist.
discordbroadcastPermission=§4Hindi ka pinapayagang magdala ng mga mensahe sa §c{0}§4 channel.
discordbroadcastSent=§6Dinala ang mensahe kay §c{0}§6\!
discordCommandDescription=Ipapadala ang Discord invite link sa manlalaro.
discordCommandLink=§6Sumali ka sa aming Discord server sa §c{0}§6\!
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
discordCommandUsage1Description=Ipapadala ang Discord invite link sa manlalaro
discordCommandExecuteDescription=Itatakbo ang console command sa Minecraft server.
discordCommandExecuteArgumentCommand=Yung command na itatakbo
discordCommandExecuteReply=Itatakbo ang command na\: "/{0}"
discordCommandListDescription=Ililista ang mga manlalaro na online.
discordCommandListArgumentGroup=Isang grupong tinutukoy upang ililimit ang iyong search na
discordCommandMessageDescription=Mag-me-mensahe ng manlalaro sa Minecraft server.
discordCommandMessageArgumentUsername=Yung manlalarong ipapadala ang iyong mensahe kay
discordCommandMessageArgumentMessage=Yung mensaheng ipapadala sa manlalaro
discordErrorCommandDisabled=Ang iyang command ay di-napagana\!
discordErrorLogin=May nangyaring mali habang naglologin sa Discord, na binigay ang plugin ng sanhi upang ipatay ang sarili\: {0}
discordLoggingIn=Sinusubukang mag-login sa Discord...
discordLoggingInDone=Matagumpay na nakalogin bilang si {0}
discordNoSendPermission=Hindi mai-padala ng mensahe sa channel\: \#{0} Mangyaring ipatunayan na ang bot ay mayroong "Magdala ng Mensahe" na pahintulot sa iyang channel\!
disposal=Basura
disposalCommandDescription=Magbubukas ng pwedeng-galawin na basurang lalagyan.
disposalCommandUsage=/<command>
distance=§6Distansya\: {0}
dontMoveMessage=§6Mangyayari ang paglipat sa§c {0}§6. Huwag ka gumalaw.
downloadingGeoIp=Dina-download ang GeoIP database... maaaring matagal ang pagka-download na ito (bansa\: 1.7MB, lungsod\: 30MB)
dumpConsoleUrl=May ginawang server dump\: §c{0}
dumpCreating=§6Gumagawa ng server dump...
dumpError=§4Error habang gumagawa ng dump na §c{0}§4.
dumpErrorUpload=§4Error habang ina-upload ang §c{0}§4\: §c{1}
duplicatedUserdata=Duplikadong manlalarong-datos\: {0} at {1}.
durability=§6Pwede mo pa gamitin ito ng §c{0}§6 pang beses.
east=E
ecoCommandDescription=Kino-kontrol ang ekonomiya na server.
ecoCommandUsage=/<command> <give|take|set|reset> <manlalaro> <halaga>
ecoCommandUsage1=/<command> give <manlalaro> <halaga>
ecoCommandUsage1Description=Ibibigay yung manlalarong tinutukoy ng tinutukoy na halaga ng pera
ecoCommandUsage2=/<command> take <manlalaro> <halaga>
ecoCommandUsage3=/<command> set <manlalaro> <halaga>
ecoCommandUsage4=/<command> reset <manlalaro> <halaga>
editBookContents=§ePwede mo na baguhin ang nilalaman ng itong libro.
enabled=pinagana
enchantCommandDescription=Minamalika ang bagay na kinakapit ng manlalaro.
enchantCommandUsage=/<command> <gayumang-pangalan> [lebel]
enchantCommandUsage1=/<command> <pangalan ng gayuma> [lebel]
enableUnlimited=§6Binibigay ng walang-limitasyong halaga ngf§c {0} §6kay §c{1}§6.
enchantmentApplied=§6Ang gayuma na§c {0} §6ay linagay sa iyong bagay sa kamay.
enchantmentNotFound=§4Hindi nahanap ang gayuma\!
@@ -203,17 +267,40 @@ enchantments=§6Mga Gayuma\:§r {0}
enderchestCommandDescription=Pinapayagan ka tumingin sa loob ng baul ng ender.
enderchestCommandUsage=/<command> [manlalaro]
enderchestCommandUsage1=/<command>
enderchestCommandUsage1Description=Ibubukas ang iyong ender chest
enderchestCommandUsage2=/<command> <manlalaro>
enderchestCommandUsage2Description=Ibubukas ang ender chest ng manlalarong tinutukoy
errorCallingCommand=May pagkakamali sa pagsabi ng utos na /{0}
errorWithMessage=§cMali\:§4 {0}
essentialsCommandDescription=Ini-re-reload ang EssentialsX.
essentialsCommandUsage=/<command>
essentialsCommandUsage1=/<command> reload
essentialsCommandUsage1Description=I-ri-reload ang config ng Essentials
essentialsCommandUsage2=/<command> version
essentialsCommandUsage2Description=Magbi-bigay ng impormasyon tungkol sa bersyon ng Essentials
essentialsCommandUsage3=/<command> commands
essentialsCommandUsage4=/<command> debug
essentialsCommandUsage5=/<command> reset <manlalaro>
essentialsCommandUsage5Description=I-ri-reset ang userdata ng manlalarong tinutukoy
essentialsCommandUsage6=/<command> cleanup
essentialsCommandUsage6Description=I-lilinis yung lumang userdata
essentialsCommandUsage7=/<command> homes
essentialsCommandUsage8=/<command> dump [all] [config] [discord] [kits] [log]
essentialsCommandUsage8Description=Nag-li-likha ng server dump gamit ang hinilingan na impormasyon
essentialsHelp1=Sira ang file at hindi mabukas ng Essentials ito. Di-pinagana ang Essentials. Kung hindi mo kayang maayos ang file, punta ka sa http\://tiny.cc/EssentialsChat
essentialsHelp2=Sira ang file at hindi mabukas ng Essentials ito. Di-pinagana ang Essentials. Kung hindi mo kayang maayos ang file, sulatin mo ang /essentialshelp sa laro o punta ka sa http\://tiny.cc/EssentialsChat
essentialsReload=§6Ni-load muli ang Essentials. Bersyon\: §c {0}.
exp=§6Si §c{0} §6ay mayroong§c {1} §6XP (lebel na§c {2}§6) at kinakailangan ng §c {3} §6pang XP upang tumaas ng lebel.
expCommandDescription=Magbigay, magtakda, mag-reset o tumingin sa isang manlalarong karanasan.
expCommandUsage=/<command> [reset|show|set|give] [pangalan-ng-manlalaro [halaga]]
expCommandUsage1=/<command> give <manlalaro> <halaga>
expCommandUsage1Description=Ibibigay ang manlalarong tinutukoy yung tinutukoy na halaga ng XP
expCommandUsage2=/<command> set <pangalan ng manlalaro> <halaga>
expCommandUsage2Description=Itatakda ang XP ng manlalarong tinutukoy yung tinutukoy na halaga
expCommandUsage3=/<command> show <pangalan ng manlalaro>
expCommandUsage4Description=Ipapakita ang halaga ng XP nang manlalarong tinutukoy ay meron
expCommandUsage5=/<command> reset <pangalan ng manlalaro>
expCommandUsage5Description=I-ri-reset ang XP ng manlalarong tinutukoy sa 0
expSet=§6Si §c{0} §6ay mayroong§c {1} §6XP.
extCommandDescription=Tinatanggal yung apoy mula sa mga manlalaro.
extCommandUsage=/<command> [manlalaro]
@@ -235,6 +322,10 @@ fireballCommandUsage=/<command> [fireball|small|large|arrow|skull|egg|snowball|e
fireballCommandUsage1=/<command>
fireworkCommandDescription=Pinapayagan ka upang bumago ng isang stack ng pagkaputok.
fireworkCommandUsage=/<command> <<meta param>|lpower [halaga]|clear|fire [halaga]>
fireworkCommandUsage1=/<command> clear
fireworkCommandUsage2=/<command> power <halaga>
fireworkCommandUsage3=/<command> fire [halaga]
fireworkCommandUsage4=/<command> <meta>
fireworkEffectsCleared=§6Tinanggal ang lahat ng mga epekto mula sa hinahawakan na stack.
flyCommandDescription=Umalis, at lumipad\!
flyCommandUsage=/<command> [manlalaro] [ON|OFF]
@@ -262,6 +353,8 @@ getposCommandUsage=/<command> [manlalaro]
getposCommandUsage1=/<command> [manlalaro]
giveCommandDescription=Magbigay ng bagay sa isang manlalaro.
giveCommandUsage=/<command> <manlalaro> <bagay|numerong> [halaga [kodigo-sa-bagay...]]
giveCommandUsage1=/<command> <manlalaro> <bagay> [halaga]
giveCommandUsage2=/<command> <manlalaro> <bagay> <halaga> <meta>
geoipCantFind=§6Si §c{0} §6ay nanggagaling mula sa §ahindi malamang bansa§6.
geoIpErrorOnJoin=Hindi makuha ang GeoIP na datos para sa {0}. Mangyaring siguraduhin na tama ang iyong lisensya para sa susi at tama ang iyong configuration.
geoIpLicenseMissing=Walang lisensya para sa susi na nahanap\! Mangyaring basahin ang https\://essentialsx.net/geoip para sa unang pagkakataon na pagka-simulan na mga instruksiyon.
@@ -284,6 +377,8 @@ hatArmor=§4Bawal mo tong gamitin na sumbrero ang bagay na ito\!
hatCommandDescription=Magkaroon ng bagong kabigha-bighani na bagay sa iyong ulo.
hatCommandUsage=/<command> [remove]
hatCommandUsage1=/<command>
hatCommandUsage2=/<command> remove
hatCommandUsage2Description=Tinatanggal ang iyong kasalukuyang sumbrero
hatCurse=§4Bawal kang magbura ng sumbrero na may mahikang "Curse of Binding"\!
hatEmpty=§4Hindi ka nagsusuot ng sumbrero.
hatFail=§4Kailangan mo ng pwedeng masuot sa iyong kamay.
@@ -307,20 +402,27 @@ helpPlugin=§4{0}§r\: Tulong ng Plugin\: /help {1}
helpopCommandDescription=Mag-mensahe ng mga admin dito na online.
helpopCommandUsage=/<command> <mensahe>
helpopCommandUsage1=/<command> <mensahe>
helpopCommandUsage1Description=Idadala ang mensaheng binigay sa lahat ng admins na online
holdBook=§4Wala kang hinahawakang libro na pwedeng masulat.
holdFirework=§4Kailangan mong maghawak ng paputok upang dumagdag ng epekto.
holdPotion=§4Kailangan mong maghawak ng gayuma upang magdagdag ng epekto sa ito.
holeInFloor=§4Butas sa sahig\!
homeCommandDescription=Lumipat sa iyong bahay.
homeCommandUsage=/<command> [player\:][pangalan]
homeCommandUsage1=/<command> <pangalan>
homeCommandUsage1Description=Ililipat ka sa iyong bahay gamit ang pangalan na binigay
homeCommandUsage2=/<command> <manlalaro>\:<pangalan>
homeCommandUsage2Description=Ililipat ka sa bahay ng manlalarong tinutukoy gamit ang pangalan na binigay
homes=§6Mga bahay mo\:§r {0}
homeConfirmation=§6Mayroon ka nang bahay na tawag §c{0}§6\!\nKung gusto mong baguhin ang iyong kasalukuyang bagay, mangyaring sulatin ang utos ulit.
homeSet=§6Itinakda ang iyong bagong bahay sa kasalukuyang locasyon.
hour=oras
hours=oras
ice=§6Lumalamig ang iyong pakiramdam...
iceCommandUsage=/<command> [manlalaro]
iceCommandUsage1=/<command>
iceCommandUsage2=/<command> <manlalaro>
iceCommandUsage3=/<command> *
ignoreCommandDescription=Pwede mong hindi i-pansin mo mag-pansin ng mga iba pang manlalaro dito gamit ang utos na ito.\n\n§4§lPaalala\: §r§4Magbabawal ka ng mga manlalaro ng tinutukoy sa pamamagitan ng chat gamit ang utos na ito. Ibig sabihin noon hindi ka makakasalita sa kanila.
ignoreCommandUsage=/<command> <manlalaro>
ignoreCommandUsage1=/<command> <manlalaro>
@@ -368,6 +470,7 @@ itemId=§6ID\:§c {0}
itemloreClear=§6Binura mo ang lore ng bagay na ito.
itemloreCommandDescription=Magbago ng lore ng isang bagay.
itemloreCommandUsage=/<command> <add/set/clear> [teksto/linya] [teksto]
itemloreCommandUsage3=/<command> clear
itemloreInvalidItem=§cKailangan mong hawakan ang bagay upang baguhin ang lore niya.
itemloreNoLine=§4Yung bagay na hinawakan mo ay walang teksto ng lore sa linyang §c{0}§4.
itemloreNoLore=§4Yung bagay na hinawakan mo ay walang anumang teksto ng lore.
@@ -378,6 +481,7 @@ itemnameClear=§6Binura mo ang pangalan ng bagay na ito.
itemnameCommandDescription=Binibagay ang bagay ng pangalan.
itemnameCommandUsage=/<command> [pangalan]
itemnameCommandUsage1=/<command>
itemnameCommandUsage2=/<command> <pangalan>
itemnameInvalidItem=§cKailangan mong hawakan ang bagay upang baguhin ang pangalan niya.
itemnameSuccess=§6Binago mo ang pangalan ng hinawakang bagay sa "§c{0}§6".
itemNotEnough1=§4Hindi sapat ang bagay na sinusubukan mong ibenta.
@@ -463,7 +567,6 @@ listCommandUsage1=/<command> <grupo>
listGroupTag=§6{0}§r\:
listHiddenTag=§7[NAKATAGO]§r
loadWarpError=§4Nabigong mag-load ng pagkiwal na {0}.
localFormat=[L]<{0}> {1}
loomCommandDescription=Magbubukas ng habihan.
loomCommandUsage=/<command>
mailClear=§6Upang ibura ang iyong mail, sulatin mo ang§c /mail clear§6.
@@ -535,8 +638,6 @@ nickCommandUsage=/<command> [manlalaro] <nickname|OFF>
nickCommandUsage1=/<command> <nickname>
noBreakBedrock=§6Hindi ka pinapayagang magsira ng batong matigas.
noGodWorldWarning=§4Babala\! Ang diyos na kapangyarihan sa ditong mundo ay di-napagana.
notAllowedToQuestion=§6Hindi ka pinapayagang maggamit ng tanong.
notAllowedToShout=§6Hindi ka pinapayagang sumigaw.
nukeCommandUsage=/<command> [manlalaro]
passengerTeleportFail=§4Ikaw ay hindi maaaring malipat habang dumadala ka ng mga tao.
payCommandUsage=/<command> <manlalaro> <halaga>
@@ -545,7 +646,11 @@ payconfirmtoggleCommandUsage=/<command>
paytoggleCommandUsage=/<command> [manlalaro]
paytoggleCommandUsage1=/<command> [manlalaro]
pingCommandUsage=/<command>
playtimeCommandUsage=/<command> [manlalaro]
playtimeCommandUsage1=/<command>
playtimeCommandUsage2=/<command> <manlalaro>
potionCommandUsage=/<command> <clear|apply|effect\:<epekto> power\:<lakas> duration\:<durasyon>>
potionCommandUsage1=/<command> clear
powertoolCommandUsage=/<command> [l\:|a\:|r\:|c\:|d\:][utos] [mga argumento] - {player} maaaring palitan ng pangalan ng manlalarong pumindot
powertooltoggleCommandUsage=/<command>
ptimeCommandUsage=/<command> [list|reset|day|night|dawn|17\:30|4pm|4000ticks] [manlalaro|*]
@@ -567,6 +672,8 @@ rulesCommandUsage=/<command> [kabanata] [pahina]
seenCommandUsage=/<command> <pangalan-ng-manlalaro>
seenCommandUsage1=/<command> <pangalan-ng-manlalaro>
sethomeCommandUsage=/<command> [[player\:]pangalan]
sethomeCommandUsage1=/<command> <pangalan>
sethomeCommandUsage2=/<command> <manlalaro>\:<pangalan>
setjailCommandDescription=Mag-gagawa ng kulungan sa tinutukoy na locasyon na may pangalan na [pangalan-ng-kulungan]
setjailCommandUsage=/<command> <pangalan-ng-kulungan>
setjailCommandUsage1=/<command> <pangalan-ng-kulungan>
@@ -614,6 +721,8 @@ tpacancelCommandUsage1=/<command>
tpacancelCommandUsage2=/<command> <manlalaro>
tpacceptCommandUsage=/<command> [iba-pang-manlalaro]
tpacceptCommandUsage1=/<command>
tpacceptCommandUsage2=/<command> <manlalaro>
tpacceptCommandUsage3=/<command> *
tpahereCommandUsage=/<command> <manlalaro>
tpahereCommandUsage1=/<command> <manlalaro>
tpallCommandUsage=/<command> [manlalaro]
@@ -622,6 +731,8 @@ tpautoCommandUsage=/<command> [manlalaro]
tpautoCommandUsage1=/<command> [manlalaro]
tpdenyCommandUsage=/<command>
tpdenyCommandUsage1=/<command>
tpdenyCommandUsage2=/<command> <manlalaro>
tpdenyCommandUsage3=/<command> *
tphereCommandUsage=/<command> <manlalaro>
tphereCommandUsage1=/<command> <manlalaro>
tpoCommandUsage=/<command> <manlalaro> [iba-pang-manlalaro]
@@ -650,6 +761,7 @@ userdataMoveError=Nabigong maglipat mula sa userdata/{0} sa userdata{1}.tmp\!
vanishCommandUsage=/<command> [manlalaro] [ON|OFF]
vanishCommandUsage1=/<command> [manlalaro]
warpCommandUsage=/<command> <numero-ng-pahina|pagkiwal> [manlalaro]
warpCommandUsage1=/<command> [pahina]
warpinfoCommandUsage=/<command> <pagkiwal>
warpinfoCommandUsage1=/<command> <pagkiwal>
warpList={0}
@@ -126,7 +126,6 @@ cantReadGeoIpDB=Échec de la lecture de la base de données GeoIP \!
cantSpawnItem=§4Vous n''êtes pas autorisé(e) à faire apparaître l''objet§c {0}§4.
cartographytableCommandDescription=Ouvre une table de cartographie.
cartographytableCommandUsage=/<command>
chatTypeLocal=[L]
chatTypeSpy=[Espion]
cleaned=Fichiers joueurs nettoyés.
cleaning=Nettoyage des fichiers joueurs.
@@ -143,6 +142,7 @@ clearinventoryCommandUsage3Description=Supprime tous les objets (ou la quantité
clearinventoryconfirmtoggleCommandDescription=Activer/désactiver la confirmation pour le nettoyage de l''inventaire.
clearinventoryconfirmtoggleCommandUsage=/<command>
commandArgumentOptional=§7
commandArgumentOr=§c
commandArgumentRequired=§e
commandCooldown=§cVous ne pouvez pas exécuter cette commande pendant {0}.
commandDisabled=§cLa commande§6 {0}§c est désactivée.
@@ -181,6 +181,7 @@ createkitCommandUsage1Description=Crée un kit avec le nom donné et le délai i
createKitFailed=§4Erreur lors de la création du kit {0}.
createKitSeparator=§m-----------------------
createKitSuccess=§6Kit créé \: §f{0}\n§6Délai \: §f{1}\n§6Lien \: §f{2}\n§6Copiez le contenu du lien ci-dessus dans votre fichier kits.yml.
createKitUnsupported=§4La sérialisation d''item NBT a été activée, mais ce serveur n''exécute pas Paper 1.15.2+. Retour à la sérialisation d''item standard.
creatingConfigFromTemplate=Création de la configuration à partir du modèle \: {0}
creatingEmptyConfig=Création d''une configuration vierge \: {0}
creative=créatif
@@ -231,12 +232,54 @@ destinationNotSet=Destination non définie \!
disabled=désactivé
disabledToSpawnMob=L''invocation de ce monstre a été désactivée depuis le fichier de configuration.
disableUnlimited=§6Le placement illimité de§c {0} §6pour§c {1} §6a été désactivé.
discordbroadcastCommandDescription=Diffuse un message au salon Discord spécifié.
discordbroadcastCommandUsage=/<command> <channel> <msg>
discordbroadcastCommandUsage1=/<command> <channel> <msg>
discordbroadcastCommandUsage1Description=Envoie le message donné au salon Discord spécifié
discordbroadcastInvalidChannel=§4Le salon Discord §c{0}§4 n''existe pas.
discordbroadcastPermission=§4Vous n''avez pas la permission d''envoyer des messages dans le salon §c{0}§4.
discordbroadcastSent=§6Message envoyé à §c{0}§6\!
discordCommandDescription=Envoie le lien d''invitation discord au joueur.
discordCommandLink=§6Rejoignez notre serveur Discord à §c{0}§6\!
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
discordCommandUsage1Description=Envoie le lien d''invitation Discord au joueur
discordCommandExecuteDescription=Exécute une commande console depuis le serveur Minecraft.
discordCommandExecuteArgumentCommand=La commande qui doit être exécutée
discordCommandExecuteReply=Exécution de la commande\: "/{0}"
discordCommandListDescription=Obtenir la liste des joueurs connectés.
discordCommandListArgumentGroup=Un groupe spécifique auquel limiter vos recherches
discordCommandMessageDescription=Envoie un message à un joueur sur le serveur Minecraft.
discordCommandMessageArgumentUsername=Le joueur à qui envoyer le message
discordCommandMessageArgumentMessage=Le message à envoyer au joueur
discordErrorCommand=Vous avez incorrectement ajouté votre bot à votre serveur. Veuillez suivre le tutoriel dans la configuration et ajouter votre bot en utilisant https\://essentialsx.net/discord.html \!
discordErrorCommandDisabled=Cette commande est désactivée \!
discordErrorLogin=Une erreur s''est produite lors de la connexion à Discord, ce qui a causé la désactivation du plugin \: \n{0}
discordErrorLoggerInvalidChannel=La connexion à la console Discord a été désactivée en raison d''une définition de canal invalide \! Si vous avez l''intention de le désactiver, définissez l''ID du canal à "none", sinon vérifiez que votre ID de canal est correct.
discordErrorLoggerNoPerms=L''enregistreur de console Discord a été désactivé en raison de permissions insuffisantes \! Assurez-vous que votre bot a les permissions "Gérer les Webhooks" sur le serveur. Après avoir corrigé cela, exécutez "/ess reload".
discordErrorNoGuild=ID de serveur invalide ou manquant\! Veuillez suivre le tutoriel dans la configuration afin de configurer le plugin.
discordErrorNoGuildSize=Votre bot n''est dans aucun serveur\! Veuillez suivre le tutoriel dans la configuration afin de configurer le plugin.
discordErrorNoPerms=Votre bot ne peut voir ou parler dans aucun canal \! Assurez-vous que votre bot a les permissions en lecture et en écriture dans tous les canaux que vous souhaitez utiliser.
discordErrorNoPrimary=Vous n''avez pas défini de salon principal ou votre salon principal est invalide. Retour au salon par défaut \: \#{0}.
discordErrorNoPrimaryPerms=Votre bot ne peut pas parler dans votre salon principal, \#{0}. Assurez-vous que votre bot a les permissions de lecture et d''écriture dans tous les salons que vous souhaitez utiliser.
discordErrorNoToken=Aucun jeton fourni\! Veuillez suivre le tutoriel dans la configuration afin de configurer le plugin.
discordErrorWebhook=Une erreur s''est produite lors de l''envoi de messages à votre canal console \! Cela a probablement été causé par la suppression accidentelle de votre webhook console. Cela peut généralement être corrigé en s''assurant que votre bot a la permission "Gérer les Webhooks" et en exécutant "/ess reload".
discordLoggingIn=Tentative de connexion à Discord...
discordLoggingInDone=Connexion réussie en tant que {0}
discordNoSendPermission=Impossible d''envoyer un message dans le salon \: \#{0} Veuillez vous assurer que le bot a la permission "Envoyer des Messages" dans ce salon \!
discordReloadInvalid=Tentative de recharger la configuration de Discord EssentialsX alors que le plugin est en état invalide \! Si vous avez modifié votre configuration, redémarrez votre serveur.
disposal=Poubelle
disposalCommandDescription=Ouvrir une poubelle portative.
disposalCommandUsage=/<command>
distance=§6Distance \: {0}
dontMoveMessage=§6La téléportation commence dans§c {0}§6. Ne bougez pas.
downloadingGeoIp=Téléchargement de la base de données GeoIP... Cela peut prendre un moment (pays \: 1.7 Mo, villes \: 30 Mo)
dumpConsoleUrl=Un dump de serveur a été créé \: §c{0}
dumpCreating=§7Création de la sauvegarde du serveur...
dumpDeleteKey=§6Si vous voulez supprimer ce dump à une date ultérieure, utilisez la clé de suppression suivante \: §c{0}
dumpError=§4Erreur lors de la création du dump §c{0}§4.
dumpErrorUpload=§4Erreur lors du téléchargement de §c{0}§4 \: §c{1}
dumpUrl=§7Création d''un dump de serveur \: §c{0}
duplicatedUserdata=Données utilisateurs dupliquées \: {0} et {1}
durability=§6Cet outil a §c{0}§6 utilisation(s) restante(s).
east=E
@@ -286,6 +329,8 @@ essentialsCommandUsage6=/<command> cleanup
essentialsCommandUsage6Description=Nettoie les anciennes données de joueur
essentialsCommandUsage7=/<command> homes
essentialsCommandUsage7Description=Gère les résidences de joueurs
essentialsCommandUsage8=/<command> dump [all] [config] [discord] [kits] [log]
essentialsCommandUsage8Description=Génère un dump serveur avec les informations demandées
essentialsHelp1=Le fichier est corrompu et Essentials ne peut l''ouvrir. Essentials est désormais désactivé. Si vous ne pouvez corriger vous-même le problème, rendez-vous sur https\://essentialsx.net/community.html
essentialsHelp2=Le fichier est corrompu et Essentials ne peut pas l''ouvrir. Essentials est maintenant désactivé. Si vous ne pouvez pas réparer le fichier vous-même, tapez /essentialshelp dans le jeu ou rendez-vous sur http\://tiny.cc/EssentialsChat
essentialsReload=§6Essentials§c {0} §6a été rechargé.
@@ -438,9 +483,16 @@ homeConfirmation=§6Vous avez déjà une résidence nommée §c{0} §6\!\nPour
homeSet=§7Résidence définie.
hour=heure
hours=heures
ice=§7Il fait beaucoup plus froid...
iceCommandDescription=Refroidit un joueur.
iceCommandUsage=/<command> [joueur]
iceCommandUsage1=/<command>
iceCommandUsage1Description=Vous refroidit
iceCommandUsage2=/<command> <joueur>
iceCommandUsage2Description=Refroidit le joueur donné
iceCommandUsage3=/<command> *
iceCommandUsage3Description=Refroidit tous les joueurs en ligne
iceOther=§7Rafraîchissement§c {0}§6.
ignoreCommandDescription=Ignorer ou ne pas ignorer les autres joueurs.
ignoreCommandUsage=/<command> <joueur>
ignoreCommandUsage1=/<command> <joueur>
@@ -494,6 +546,7 @@ itemId=§6ID \:§c {0}
itemloreClear=§7Vous avez effacé la description de cet objet.
itemloreCommandDescription=Modifie la description d''un objet.
itemloreCommandUsage=/<command> <add|set|clear> [texte|ligne] [texte]
itemloreCommandUsage1=/<command> add [text]
itemloreCommandUsage1Description=Ajoute le texte donné à la fin de la description de l''objet tenu en main
itemloreCommandUsage2=/<command> set <numéro de ligne> <texte>
itemloreCommandUsage2Description=Définit la ligne spécifiée de la description de l''objet tenu en main au texte donné
@@ -534,6 +587,9 @@ jailAlreadyIncarcerated=§cJoueur déjà emprisonné \: {0}
jailList=§6Prisons \:§r {0}
jailMessage=§cVous avez commis un crime, vous en payez le prix.
jailNotExist=§4Cette prison n''existe pas.
jailNotifyJailed=§7Joueur§c {0} §6emprisonné par §c{1}.
jailNotifyJailedFor=§6Le joueur§c {0} §6a été emprisonné pour §c {1}§6par §c{2}§6.
jailNotifySentenceExtended=§6Le temps de prison du joueur{0} a été prolongé à §c{1} §6par §c{2}§6.
jailReleased=§6Le joueur §c{0}§6 a été libéré.
jailReleasedPlayerNotify=§6Vous avez été libéré(e) \!
jailSentenceExtended=Durée d''emprisonnement rallongée de \: {0}
@@ -574,6 +630,7 @@ kitCost=\ §7§o({0})§r
kitDelay=§m{0}§r
kitError=§cIl n''y a pas de kits valides.
kitError2=§4Ce kit est mal défini. Contactez un administrateur.
kitError3=Impossible de donner l''article du kit dans le kit "{0}" à l''utilisateur {1} car l''élément du kit nécessite Paper 1.15.2+ pour la désérialiser.
kitGiveTo=§6Don du kit§c {0}§6 à §c{1}§6.
kitInvFull=§cVotre inventaire était plein, le kit est par terre.
kitInvFullNoDrop=§4Il n''y a pas assez de place dans votre inventaire pour ce kit.
@@ -609,24 +666,37 @@ listCommandUsage1=/<command> [groupe]
listCommandUsage1Description=Liste tous les joueurs connectés serveur, ou le groupe donné, si spécifié
listGroupTag=§6{0}§r \:
listHiddenTag=§7[MASQUÉ]§f
listRealName=({0})
loadWarpError=§4Échec du chargement du point de téléportation {0}.
localFormat=[L]<{0}> {1}
loomCommandDescription=Ouvre un métier à tisser.
loomCommandUsage=/<command>
mailClear=§6Pour supprimer votre courrier, tapez§c /mail clear§6.
mailCleared=§6Courrier supprimé \!
mailClearIndex=§4Vous devez spécifier un nombre entre 1 et {0}.
mailCommandDescription=Gère le courrier inter-joueur, intra-serveur.
mailCommandUsage=/<command> [read|clear|clear [number]|send [to] [message]|sendtemp [to] [expire time] [message]|sendall [message]]
mailCommandUsage1=/<command> read [page]
mailCommandUsage1Description=Lit la première page (ou la page spécifiée) de votre courrier
mailCommandUsage2=/<command> clear [number]
mailCommandUsage2Description=Efface tous les mails ou ceux spécifiés
mailCommandUsage3=/<command> send <joueur> <message>
mailCommandUsage3Description=Envoie le message donné au joueur spécifié
mailCommandUsage4=/<command> sendall <message>
mailCommandUsage4Description=Envoie le message donné à tous les joueurs
mailCommandUsage5=/<command> sendtemp <player> <expire time> <message>
mailCommandUsage5Description=Envoie au joueur spécifié le message qui expirera dans la période spécifiée
mailCommandUsage6=/<command> sendtempall <expire time> <message>
mailCommandUsage6Description=Envoie à tous les joueurs le message donné qui expirera dans la période spécifiée
mailDelay=Trop de courriers ont été envoyés au cours de la dernière minute. Maximum \: {0}
mailFormatNew=§6[§r{0}§6] §6[§r{1}§6] §r{2}
mailFormatNewTimed=§6[§e⚠§6] §6[§r{0}§6] §6[§r{1}§6] §r{2}
mailFormatNewRead=§6[§r{0}§6] §6[§r{1}§6] §7§o{2}
mailFormatNewReadTimed=§6[§e⚠§6] §6[§r{0}§6] §6[§r{1}§6] §7§o{2}
mailFormat=§6[§r{0}§6] §r{1}
mailMessage={0}
mailSent=§6Courrier envoyé \!
mailSentTo=§c{0}§6 a reçu le courrier suivant \:
mailSentToExpire=§c{0}§6 a été envoyé le mail suivant qui expirera dans §c{1}§6\:
mailTooLong=§4Votre courrier est trop long. Il doit contenir au maximum 1000 caractères.
markMailAsRead=§6Pour marquer votre courrier comme lu, tapez§c /mail clear§6.
matchingIPAddress=§6Les joueurs suivants se sont déjà connectés avec cette adresse IP \:
@@ -706,6 +776,7 @@ nearCommandUsage3Description=Liste tous les joueurs dans le rayon par défaut au
nearCommandUsage4=/<command> <joueur> <rayon>
nearCommandUsage4Description=Liste tous les joueurs dans le rayon donné autour du joueur spécifié
nearbyPlayers=§6Joueurs aux alentours \:§r {0}
nearbyPlayersList={0}§f(§c{1}m§f)
negativeBalanceError=§4L''utilisateur n''est pas autorisé à avoir un solde négatif.
nickChanged=§6Surnom changé.
nickCommandDescription=Changer votre pseudo ou celui d''un autre joueur.
@@ -759,8 +830,6 @@ noPlacePermission=§cVous n''avez pas la permission de placer un bloc près de c
noPotionEffectPerm=§4Vous n''avez pas la permission d''appliquer l''effet §c{0} §4à cette potion.
noPowerTools=§6Vous n''avez pas d''outil macro associé.
notAcceptingPay=§4{0} §4n''accepte pas le paiement.
notAllowedToQuestion=§cVous n''êtes pas autorisé à poser des questions.
notAllowedToShout=§cVous n''êtes pas autorisé à crier.
notEnoughExperience=§4Vous n''avez pas assez d''expérience.
notEnoughMoney=§4Vous n''avez pas les fonds nécessaires.
notFlying=ne vole pas
@@ -771,6 +840,7 @@ nuke=§5Que la mort s''abatte sur eux \!
nukeCommandDescription=Que la mort s''abatte sur ce joueur.
nukeCommandUsage=/<command> [joueur]
nukeCommandUsage1=/<command> [joueurs...]
nukeCommandUsage1Description=Envoie une nuke sur tous les joueurs ou un autre joueur, si spécifié
numberRequired=Un nombre est requis ici.
onlyDayNight=/time ne supporte que day/night (jour/nuit).
onlyPlayers=§4Seul les joueurs en jeu peuvent utiliser §c{0}§4.
@@ -818,6 +888,14 @@ playerTempBanned=§6Le joueur §c{0}§6 a banni temporairement §c{1}§6 pendant
playerUnbanIpAddress=§6Le joueur§c {0} §6a débanni l''adresse IP \:§c {1}
playerUnbanned=§6Le joueur§c {0} §6a débanni§c {1}
playerUnmuted=§6Vous avez de nouveau la parole.
playtimeCommandDescription=Affiche le temps joué par un joueur
playtimeCommandUsage=/<command> [joueur]
playtimeCommandUsage1=/<command>
playtimeCommandUsage1Description=Affiche votre temps de jeu
playtimeCommandUsage2=/<command> <joueur>
playtimeCommandUsage2Description=Affiche le temps joué par le joueur spécifié
playtime=§7Temps de jeu \:§c {0}
playtimeOther=§7Temps de jeu de {1}\:§c {0}
pong=Pong \!
posPitch=§6Pitch \: {0} (Angle de tête)
possibleWorlds=§6Les mondes possibles sont les nombres de §c0§6 à §c{0}§6.
@@ -848,11 +926,15 @@ powerToolsEnabled=§6Toutes vos commandes assignées sur des outils macros ont
powertoolCommandDescription=Assigne une commande à l''objet en main.
powertoolCommandUsage=/<command> [l\:|a\:|r\:|c\:|d\:][commande] [arguments] - {player} peut être remplacé par le pseudo du joueur sur lequel vous cliquez.
powertoolCommandUsage1=/<command> l\:
powertoolCommandUsage1Description=Liste tous les powertools sur l''élément tenu
powertoolCommandUsage2=/<command> d\:
powertoolCommandUsage2Description=Supprime tous les powertools de l''élément tenu
powertoolCommandUsage3=/<command> r\:<cmd>
powertoolCommandUsage3Description=Supprime la commande donnée de l''objet tenu en main
powertoolCommandUsage4=/<command> <cmd>
powertoolCommandUsage4Description=Définit la commande powertool de l''élément tenu à la commande donnée
powertoolCommandUsage5=/<command> a\:<cmd>
powertoolCommandUsage5Description=Ajoute la commande powertool donnée à l''élément conservé
powertooltoggleCommandDescription=Active ou désactive tous les outils macros actuels.
powertooltoggleCommandUsage=/<command>
ptimeCommandDescription=Ajuster le temps personnel du joueur. Ajouter le préfixe @ pour corriger.
@@ -931,6 +1013,7 @@ repairCommandUsage2Description=Répare tous les objets dans votre inventaire
repairEnchanted=§7Vous n''êtes pas autorisé à réparer les objets enchantés.
repairInvalidType=§4Cet objet ne peut pas être réparé.
repairNone=§4Aucun objet ne nécessite de réparation.
replyFromDiscord=**Réponse de {0}\:** `{1}`
replyLastRecipientDisabled=§6Répondre au dernier destinataire du message \: §cdésactivé§6.
replyLastRecipientDisabledFor=§6Répondre au dernier destinataire du message §cdésactivé §6pour §c{0}§6.
replyLastRecipientEnabled=§6Répondre au dernier destinataire du message \: §cactivé§6.
@@ -1203,10 +1286,10 @@ tpacancelCommandUsage1=/<command>
tpacancelCommandUsage1Description=Annule toutes vos demandes de téléportation en attente
tpacancelCommandUsage2=/<command> <joueur>
tpacancelCommandUsage2Description=Annule toutes vos demandes de téléportation en attente avec le joueur spécifié
tpacceptCommandDescription=Accepte une requête de téléportation.
tpacceptCommandUsage=/<command> [autre joueur]
tpacceptCommandUsage1=/<command>
tpacceptCommandUsage1Description=Accepte une demande de téléportation entrante
tpacceptCommandUsage2=/<command> <joueur>
tpacceptCommandUsage3=/<command> *
tpahereCommandDescription=Envoie une requête au joueur spécifié pour qu''il se téléporte à vous.
tpahereCommandUsage=/<command> <joueur>
tpahereCommandUsage1=/<command> <joueur>
@@ -1219,10 +1302,10 @@ tpautoCommandDescription=Accepte automatiquement les requêtes de téléportatio
tpautoCommandUsage=/<command> [joueur]
tpautoCommandUsage1=/<command> [joueur]
tpautoCommandUsage1Description=Active/désactive l''acceptation automatique des requêtes tpa pour vous ou pour un autre joueur si spécifié
tpdenyCommandDescription=Rejette une requête de téléportation.
tpdenyCommandUsage=/<command>
tpdenyCommandUsage1=/<command>
tpdenyCommandUsage1Description=Rejette une demande de téléportation entrante
tpdenyCommandUsage2=/<command> <joueur>
tpdenyCommandUsage3=/<command> *
tphereCommandDescription=Téléporte un joueur à votre position.
tphereCommandUsage=/<command> <joueur>
tphereCommandUsage1=/<command> <joueur>
@@ -1334,6 +1417,7 @@ versionOutputFine=§6Version {0} \: §a{1}
versionOutputWarn=§6Version {0} \: §c{1}
versionOutputUnsupported=§6Version §d{0} \: §d{1}
versionOutputUnsupportedPlugins=§6Vous utilisez des §dplugins non pris en charge§6 \!
versionOutputEconLayer=§6Économie \: §r{0}
versionMismatch=Versions différentes \! Veuillez mettre {0} à la même version.
versionMismatchAll=§4Versions différentes \! Veuillez mettre à jour tous les jars Essentials à la même version.
versionReleaseLatest=§6Vous utilisez la dernière version stable d''EssentialsX \!
@@ -75,6 +75,7 @@ cleaning=מנקה את פרטי המשתמש.
clearinventoryCommandUsage1=/<command>
clearinventoryconfirmtoggleCommandUsage=/<command>
commandArgumentOptional=§7
commandArgumentOr=§c
commandArgumentRequired=§e
commandFailed=פקודה {0} נכשלה\:
commandHelpFailedForPlugin=שגיאה בקבלת עזרה לפלאגין\: {0}
@@ -87,6 +88,7 @@ connectedPlayers=§6 התחברו שחקנים §r
connectionFailed=נכשל פתיחת חיבור.
cooldownWithMessage=§4 הפסקה\: {0}
couldNotFindTemplate=§4 לא הצליח למצוא template {0}
createKitSeparator=§m-----------------------
creatingConfigFromTemplate=יוצר קונפינג מ template\: {0}
creatingEmptyConfig=יוצר קונפינג ריק\: {0}
creative=יצירתי
@@ -103,8 +105,11 @@ denyBookEdit=\n§4אינך יכול לבטל את הנעילה מספר זה.\n
denyChangeAuthor=\n§4אינך יכול לשנות את מחבר ספר זה.\n
denyChangeTitle=\n§4אינך יכול לשנות את שם ספר זה.\n
depth=§6אתה בגובה הים.
depthCommandUsage=/depth
disabled=מופסק
disabledToSpawnMob=\n§4שיגור mob זה בוטל בקובץ הקונפיג.\n
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
disposalCommandUsage=/<command>
dontMoveMessage=\n§6שיגור יתבצע בעוד§c {0}§6. אל תזוז.\n
durability=\n§6לחפץ זה יש §c{0}§6 שימושים שנותרו.\n
@@ -170,6 +175,7 @@ hour=שעה
hours=שעות
iceCommandUsage=שחקן
iceCommandUsage1=/<command>
iceCommandUsage3=/<command> *
illegalDate=תבנית תאריך לא חוקית.
infoChapter=§6בחר פרק\:
infoUnknownChapter=\n§4נתון לא ידוע.\n
@@ -229,6 +235,7 @@ listHiddenTag=\n§7[מוסתר]§r\n
loadWarpError=\n§4שגיאה בניסיון לטעון שיגור {0}.\n
loomCommandUsage=/<command>
mailCleared=\n§6דואר נוקה\!\n
mailMessage={0}
mailSent=\n§6דואר נשלח\!\n
markMailAsRead=\n§6בשביל לסמן את כל הדואר כנקרא , רשום§c /mail clear§6.\n
matchingIPAddress=\n§6השחקנים הבאים התחברו בפעמים קודמות מכתובת האייפי הבאה\:\n
@@ -265,8 +272,6 @@ noPermToSpawnMob=\n§4אין לך הרשאה לזמן את חיה זו.\n
noPlacePermission=\n§4אין לך הרשאות לבנות ליד שלט זה.\n
noPotionEffectPerm=\n§4אין לך הרשאות להפעיל אפקט זה §c{0} §4לשיקוי זה.\n
noPowerTools=\n§6אין לך כוחות רשומים.\n
notAllowedToQuestion=\n§4אינך רשאי להשתמש בשאלה.\n
notAllowedToShout=\n§4אינך רשאי לפרסם הכרזה.\n
notEnoughExperience=\n§4אין לך מספיק רמות.\n
notEnoughMoney=\n§4אין לך מספיק כסף.\n
notFlying=לא עף
@@ -276,7 +281,7 @@ noWarpsDefined=\n§6אין שיגורים.\n
nuke=\n§5גשם מוות הופעל.\n
nukeCommandUsage=שחקן
numberRequired=מספר הולך לשם, טיפשי
onlyDayNight=\n/זמן תומך רק יום/לילה.\n
onlyDayNight=/time תומך רק יום/לילה.
onlyPlayers=\n§4רק שחקנים במשחק יכולים להשתמש ב §c{0}§4.\n
onlyPlayerSkulls=\n§4אתה יכול רק להגדיר את הבעלים של הראש (§c397\:3§4).\n
onlySunStorm=\n§4/מזג אוויר תומך רק שמש/סופה.\n
@@ -294,6 +299,8 @@ playerJailed=\n§6השחקן§c {0} §6נכנס לכלא.\n
playerMuted=\n§6כעת אתה מושתק\!\n
playerNeverOnServer=\n§4השחקן§c {0} §4אף פעם לא התחבר לשרת זה.\n
playerNotFound=§4שחקן לא נמצא.
playtimeCommandUsage=שחקן
playtimeCommandUsage1=/<command>
pong=פונג\!
powerToolAir=§4פקודה לא יכולה להיות מצורפת לאוויר.
powerToolAlreadySet=§4הפקודה §c{0}§4 כבר רשומה ב §c{1}§4.
@@ -338,6 +345,8 @@ setBalOthers=\n§aשינית לשחקן {0}§a''s את כמות הכסף ל {1}.
setSpawner=\n§6סוג המשגר שונה ל §c {0}§6.\n
sheepMalformedColor=\n§4צבע פגום.\n
shoutFormat=§6[הכרזה]§r {0}
signFormatFail=§4[{0}]
signFormatSuccess=§1[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=\n§4אינך יכול ליצור שלט כאן.\n
similarWarpExist=\n§4השיגור בשם זה כבר קיים.\n
@@ -375,17 +384,20 @@ topCommandUsage=/<command>
tpacancelCommandUsage=שחקן
tpacancelCommandUsage1=/<command>
tpacceptCommandUsage1=/<command>
tpacceptCommandUsage3=/<command> *
tpallCommandUsage=שחקן
tpallCommandUsage1=שחקן
tpautoCommandUsage=שחקן
tpautoCommandUsage1=שחקן
tpdenyCommandUsage=/<command>
tpdenyCommandUsage1=/<command>
tpdenyCommandUsage3=/<command> *
tprCommandUsage=/<command>
tprCommandUsage1=/<command>
tptoggleCommandUsage1=שחקן
treeSpawned=§6עץ זומן.
vanishCommandUsage1=שחקן
warpList={0}
west=מערב
whoisTop=§6 \=\=\=\=\=\= מי זה\:§c {0} §6\=\=\=\=\=\=
workbenchCommandUsage=/<command>
@@ -109,6 +109,8 @@ depthBelowSea=§6Vi ste§c {0} §6blok(ova) ispod razine mora.
destinationNotSet=Destinacija nije postavljena\!
disabled=isključen
disabledToSpawnMob=§4Stvaranje ovoga moba je iskljuceno u konfiguraciji.
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
disposalCommandUsage=/<command>
distance=§6Udaljenost\: {0}
dontMoveMessage=Teleportacija ce zapoceti za {0} sekundi.
@@ -309,8 +311,6 @@ noPermToSpawnMob=&7Nemas dozvolz mrijest ovaj mob.
noPlacePermission=&7Nemas dozvolu da postavis block blizu znaka.
noPotionEffectPerm=§4Nemas dozvolu da pridodas efekt§c{0} §4ovom potionu.
noPowerTools=&7Nemas dovoljnu moc da ovo napravis.
notAllowedToQuestion=%4Niste ovlasteni da koristite pitanje.
notAllowedToShout=&4Niste ovlasteni da vicete.
notEnoughExperience=§4Nemaš dovoljno iskustva.
notEnoughMoney=§4Nemas dovoljno novca.
notFlying=&7ne letis
@@ -336,6 +336,7 @@ playerMuted=§6Mutan si\!
playerNeverOnServer=&7Igrac &3{0} &7nikad nije bio na ovom serveru.
playerNotFound=§4Igrac nije pronađen.
playerUnmuted=§6Unmutan si.
playtimeCommandUsage1=/<command>
pong=&3Strong-Pvperzzz &7<333\!
posPitch=Nagib\: {0} (Kut glave)
possibleWorlds=§6Mogući svjetovi su brojevi §c0§6 kroz §c{0}§6.
@@ -126,7 +126,6 @@ cantReadGeoIpDB=Nem sikerült beolvasni a GeoIP adatbázist\!
cantSpawnItem=§4Nincs engedélyed, hogy lekérd a következő tárgyat\:§c {0}§4.
cartographytableCommandDescription=Megnyit egy térképasztalt.
cartographytableCommandUsage=/<command>
chatTypeLocal=[L]
chatTypeSpy=§2[Kém]§r
cleaned=Játékos fájlok Törölve.
cleaning=Játékos fájlok tisztítása.
@@ -143,6 +142,7 @@ clearinventoryCommandUsage3Description=Törli az összes (vagy a meghatározott
clearinventoryconfirmtoggleCommandDescription=Megváltoztatja, hogy kérjen-e megerősítést az eszköztár törlésekhez.
clearinventoryconfirmtoggleCommandUsage=/<command>
commandArgumentOptional=§7
commandArgumentOr=§c
commandArgumentRequired=§e
commandCooldown=§cEzt a parancsot nem lehet beírni\: {0}.
commandDisabled=§cA(z)§6 {0}§c parancs letiltva.
@@ -181,6 +181,7 @@ createkitCommandUsage1Description=Készít egy csomagot egy megadott névvel és
createKitFailed=§4Hiba történt a csomag létrehozásakor {0}.
createKitSeparator=§m-----------------------
createKitSuccess=§6Csomag létrehozva\: §f{0}\n§6Késleltetés\: §f{1}\n§6Link\: §f{2}\n§6A fenti hivatkozás tartalmának másolása a kits.yml-be.
createKitUnsupported=§4 Az NBT -elemek sorosítása engedélyezve van, de ez a szerver nem futtatja az 1.15.2+ PAPER-t. Visszatérés a szabványos tételek sorba állításához.
creatingConfigFromTemplate=Konfig létrehozása sablonból\: {0}
creatingEmptyConfig=Üres konfig létrehozása\: {0}
creative=kreatív
@@ -231,10 +232,37 @@ destinationNotSet=A cél nem lett beállítva\!
disabled=letiltva
disabledToSpawnMob=§4Ennek az élőlénynek a lehívása jelenleg le van tiltva a konfig fájlban.
disableUnlimited=§6Letiltva korlátlan számú lerakás§c {0} {1}§6.
discordbroadcastCommandDescription=Üzenetet küld a megadott Discord csatornára.
discordbroadcastCommandUsage=/<command> <channel> <msg>
discordbroadcastCommandUsage1=/<command> <channel> <msg>
discordbroadcastCommandUsage1Description=A megadott üzenetet a megadott Discord csatornára küldi
discordbroadcastInvalidChannel=§4Discord csatorna §c{0}§4 nem létezik.
discordbroadcastPermission=§4 Nincs jogod üzenetek küldésére a §c{0}§4 csatornára.
discordbroadcastSent=6. §6Üzenet küldve a §c{0}§6-nak/nek\!
discordCommandLink=§6Csatlakozz a Discord szerverünkhöz itt\: §c{0}§6\!
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
discordCommandExecuteDescription=Végrehajt egy konzol parancsot a Minecraft szerveren.
discordCommandExecuteArgumentCommand=A parancs végrehajtva
discordCommandExecuteReply=Parancs végrehajtása\: "/{0}"
discordCommandListDescription=Lekér egy listát az online játékosokról.
discordCommandListArgumentGroup=Egy adott csoport, amelyre korlátozza a keresést
discordCommandMessageDescription=Üzenetet küld egy játékosnak a Minecraft szerveren.
discordCommandMessageArgumentUsername=A játékos, akinek az üzenetet küldi
discordCommandMessageArgumentMessage=Az üzenet amit a játékosnak küld
discordErrorCommand=Helytelenül adta hozzá BOTját a szerveréhez. Kérjük, kövesse a konfigurációs útmutatót, és adja hozzá BOTját a https\://essentialsx.net/discord.html használatával\!
discordErrorCommandDisabled=Ez a parancs le van tiltva\!
discordErrorLogin=Hiba történt a Discordba való bejelentkezéskor, ami miatt a plugin letiltotta magát\:\n{0}
discordErrorLoggerInvalidChannel=A Discord konzol naplózása érvénytelen csatorna -definíció miatt le van tiltva\! Ha letiltani kívánja, állítsa a csatornaazonosítót "nincs" értékre; Ellenkező esetben ellenőrizze, hogy a csatornaazonosító helyes -e.
discordErrorLoggerNoPerms=A Discord konzol logger le van tiltva elégtelen engedélyek miatt\! Kérjük, győződjön meg arról, hogy BOTja rendelkezik a "Webhooks kezelése" jogosultságokkal a szerveren. A javítás után futtassa az "/ess reload" parancsot.
discordErrorNoGuild=Érvénytelen vagy hiányzó szerver -azonosító\! Kérjük, kövesse a konfigurációs útmutatót a Plugin beállításához.
discordErrorNoGuildSize=A BOTja nincs a szervereken\! Kérjük, kövesse a konfigurációs útmutatót a Plugin beállításához.\n\n
discordErrorNoPerms=A BOTja nem látja vagy nem tud beszélni egyetlen csatornán sem\! Kérjük, győződjön meg arról, hogy a BOT olvasási és írási jogosultsággal rendelkezik minden használni kívánt csatornán.
discordErrorNoToken=Token nincs megadva\! Kérjük, kövesse a konfigurációs útmutatót a Plugin beállításához.
discordErrorWebhook=Hiba történt üzenetek küldése közben a konzol csatornájára\! Ezt valószínűleg a konzol webhookjának véletlen törlése okozta. Ez általában javítható úgy, hogy a BOT rendelkezik a "Webhooks kezelése" jogosultsággal és ez után futtassa le a "/ess reload" parancsot.
discordLoggingIn=Belépés a Discordba...
discordLoggingInDone=Sikeresen belépve mint {0}
discordNoSendPermission=Nem lehet üzenetet küldeni a csatornán\: \#{0} Győződjön meg arról, hogy a BOT rendelkezik az "Üzenetek küldése" engedéllyel az adott csatornán\!
discordReloadInvalid=Megpróbálta újratölteni az EssentialsX Discord konfigurációt, amíg a plugin érvénytelen állapotban van\! Ha módosította a konfigurációt, indítsa újra a szervert.
disposal=Szemetes
disposalCommandDescription=Megnyit egy hordozható szemetes menüt.
@@ -242,6 +270,12 @@ disposalCommandUsage=/<command>
distance=§6Távolság\: {0}
dontMoveMessage=§6A teleportálás elkezdődik§c {0}en§6 belül. Ne mozogj.
downloadingGeoIp=GeoIP adatbázis letöltése folyamatban... Eltarthat egy kis ideig (ország\: 1.7 MB, város\: 30MB)
dumpConsoleUrl=Létrejött egy szerver dump\: §c {0}
dumpCreating=6. §Szerver dump létrehozása ...
dumpDeleteKey=§6Ha később szeretné törölni ezt a dump-ot, használja a következő törlési kulcsot\: §c {0}
dumpError=§4Hiba a dump létrehozásakor §c {0} §4.
dumpErrorUpload=§4Hiba a feltöltés közben\: §c{0}§4\: §c{1}
dumpUrl=§6Létrehozott szerver dump\: §c {0}
duplicatedUserdata=Duplikált felhasználói adatok\: {0} és {1}.
durability=§6Ez az eszköz még §c{0}§6 használatig bírja.
east=K
@@ -277,10 +311,22 @@ errorCallingCommand=Hiba a parancs meghívásakor /{0}
errorWithMessage=§cHiba\:§4 {0}
essentialsCommandDescription=Essentials újratöltése.
essentialsCommandUsage=/<command>
essentialsCommandUsage1=/<command> újratöltés
essentialsCommandUsage1Description=Essentials konfig újratöltve
essentialsCommandUsage2=/<command> verzió
essentialsCommandUsage2Description=Információt ad az Essentials verziójáról
essentialsCommandUsage3=/<command> parancsok
essentialsCommandUsage3Description=Információt ad arról, hogy az Essentials milyen parancsokat továbbít
essentialsCommandUsage4=/<command> debug
essentialsCommandUsage4Description=Átválltja az Essentials'' "debug mode"-ját
essentialsCommandUsage5=/<command> reset <player>
essentialsCommandUsage5Description=Visszaállítja a megadott játékos felhasználói adatait
essentialsCommandUsage6=/<command> cleanup
essentialsCommandUsage6Description=Törli a régi felhasználói adatokat
essentialsCommandUsage7=/<command> homes
essentialsCommandUsage7Description=A felhasználói HOME-ok kezelése
essentialsCommandUsage8=/<command> dump [all] [config] [discord] [kits] [log]
essentialsCommandUsage8Description=Szerver dump-ot generál a kért információkkal
essentialsHelp1=A fájl sérült, és az Essentials nem tudja megnyitni. Az Essentials most le van tiltva. Ha nem tudja megjavítani a fájlt, akkor látogasson el a http\://tiny.cc/EssentialsChat webhelyre
essentialsHelp2=A fájl sérült, és az Essentials nem tudja megnyitni. Az Essentials most le van tiltva. Ha nem tudja megjavítani a fájlt, írja be a /essentialshelp parancsot a játékban, vagy látogassan el a http\://tiny.cc/EssentialsChat webhelyre
essentialsReload=§6Essentials újratöltve§c {0}.
@@ -289,8 +335,11 @@ expCommandDescription=Adj hozzá, állítsd be, állítsd vissza, vagy nézd meg
expCommandUsage=/<command> [reset|show|set|give] [játékosnév [mennyiség]]
expCommandUsage1=/<command> give <játékos> <mennyiség>
expCommandUsage1Description=Ad a megadott játékosnak egy megadott mennyiségű xp-t
expCommandUsage2=/<command> set <playername> <amount>
expCommandUsage2Description=Beállítja a megadott játékosnak a megadott mennyiségű xp-t
expCommandUsage3=/<command> show <playername>
expCommandUsage4Description=Megjeleníti a megadott játékos xp szintjét
expCommandUsage5=/<command> reset <playername>
expCommandUsage5Description=Visszaállítja a megadott játékos xp-jét 0-ra
expSet=§c{0}-nak/nek §6most van§c {1} §6xp-je.
extCommandDescription=Játékosok eloltása.
@@ -314,12 +363,14 @@ fireballCommandDescription=Egy tűzlabdát vagy más válogatott lövedéket dob
fireballCommandUsage=/<command> [fireball|small|large|arrow|skull|egg|snowball|expbottle|dragon|splashpotion|lingeringpotion|trident] [sebesség]
fireballCommandUsage1=/<command>
fireballCommandUsage1Description=Kilősz egy normál tűzgolyót a helyzetedről
fireballCommandUsage2=/<command> <fireball|small|large|arrow|skull|egg|snowball|expbottle|dragon|splashpotion|lingeringpotion|trident> [speed]
fireworkColor=§4Érvénytelen tűzijáték-töltési paramétereket adtál meg, először a színt kell beállítani.
fireworkCommandDescription=Lehetővé teszi a tűzijáték-halom módosítását.
fireworkCommandUsage=/<command> <<meta param>|power [mennyiség]|clear|fire [mennyiség]>
fireworkCommandUsage4Description=A kezedben tartott tüzijátékhoz hozzáadja a megadott effektet
fireworkEffectsCleared=§6Az összes effekt eltávolítva a tartott halomról.
fireworkSyntax=§6Tűzijáték paraméterek\:§c color\:<color> [fade\:<color>] [shape\:<shape>] [effect\:<effect>]\n§6Több szín/effektus használatához vesszővel kell elválasztani az értékeket. pl.\: §cred,blue,pink\n§6Alakzatok\:§c star, ball, large, creeper, burst §6Effektek\:§c trail, twinkle.
fixedHomes=Érvénytelen HOME-ok törölve
flyCommandDescription=Szállj fel, és repülj\!
flyCommandUsage=/<command> [játékos] [on|off]
flyCommandUsage1=/<command> [játékos]
@@ -560,7 +611,6 @@ listCommandUsage1=/<command> [rang]
listGroupTag=§6{0}§r\:
listHiddenTag=§7[REJTETT]§r
loadWarpError=§4Nem sikerült a warp betöltése {0}.
localFormat=[H]<{0}> {1}
loomCommandDescription=Megnyit egy szövőszéket.
loomCommandUsage=/<command>
mailClear=§6Hogy töröld a leveled, írd be§c /mail clear§6.
@@ -684,8 +734,6 @@ noPlacePermission=§4Nincs jogosultságod egy blokknak a tábla közelében elhe
noPotionEffectPerm=§4Nincs jogosultságod a főzet effekt alkalmazására §c{0} §4ennél a főzetnél.
noPowerTools=§6Nincsenek power tools hozzárendeléseid.
notAcceptingPay=§4{0} §4nem fogad el fizetést.
notAllowedToQuestion=§4Nem vagy jogosult a kérdés használatára.
notAllowedToShout=§4Nem vagy jogosult kiáltani.
notEnoughExperience=§4Nincs elég tapasztalatod.
notEnoughMoney=§4Nincs elegendő pénzed.
notFlying=nem repül
@@ -740,6 +788,9 @@ playerTempBanned=§c{0}§6 ideiglenesen kitiltva §c{1} {2}§6-ra/-re\: §c{3}§
playerUnbanIpAddress=§c{0} §6feloldotta a következő IP cím tiltását\:§c {1}
playerUnbanned=§c{0} §6feloldotta§c {1}§6 tiltását
playerUnmuted=§6Fel lett oldva a lenémításod.
playtimeCommandUsage=/<command> [játékos]
playtimeCommandUsage1=/<command>
playtimeCommandUsage2=/<command> <játékos>
pong=Pong\!
posPitch=§6Szög\: {0} (Fej szöge)
possibleWorlds=§6Lehetséges világok a száma §c0§6 keresztül §6§c{0}.
@@ -1021,9 +1072,9 @@ tpacancelCommandDescription=Törölje az összes fennálló teleport-kérést. A
tpacancelCommandUsage=/<command> [játékos]
tpacancelCommandUsage1=/<command>
tpacancelCommandUsage2=/<command> <játékos>
tpacceptCommandDescription=Egy teleport kérés elfogadása.
tpacceptCommandUsage=/<command> [másikjátékos]
tpacceptCommandUsage1=/<command>
tpacceptCommandUsage2=/<command> <játékos>
tpahereCommandDescription=Kérj meg egy megadott játékost, hogy teleportáljon hozzád.
tpahereCommandUsage=/<command> <játékos>
tpahereCommandUsage1=/<command> <játékos>
@@ -1033,9 +1084,9 @@ tpallCommandUsage1=/<command> [játékos]
tpautoCommandDescription=A teleportálás kérelmek automatikus elfogadása.
tpautoCommandUsage=/<command> [játékos]
tpautoCommandUsage1=/<command> [játékos]
tpdenyCommandDescription=Egy teleport kérés elutasítása.
tpdenyCommandUsage=/<command>
tpdenyCommandUsage1=/<command>
tpdenyCommandUsage2=/<command> <játékos>
tphereCommandDescription=Teleportálj egy játékost magadhoz.
tphereCommandUsage=/<command> <játékos>
tphereCommandUsage1=/<command> <játékos>
@@ -126,7 +126,7 @@ cantReadGeoIpDB=Lettura del database GeoIP fallita\!
cantSpawnItem=§4Non hai il permesso di generare l''oggetto§c {0}§4.
cartographytableCommandDescription=Apre una tabella cartografica.
cartographytableCommandUsage=/<command>
chatTypeLocal=[L]
chatTypeLocal=§3[L]
chatTypeSpy=[Spia]
cleaned=File utente puliti.
cleaning=Pulizia dei file utente in corso.
@@ -143,6 +143,7 @@ clearinventoryCommandUsage3Description=Cancella tutto (o l''importo specificato)
clearinventoryconfirmtoggleCommandDescription=Determina se ti viene chiesto di confermare la cancellazione dell''inventario.
clearinventoryconfirmtoggleCommandUsage=/<command>
commandArgumentOptional=§7
commandArgumentOr=§c
commandArgumentRequired=§e
commandCooldown=§cNon puoi digitare questo comando per {0}.
commandDisabled=§cIl comando§6 {0}§c è disabilitato.
@@ -232,6 +233,18 @@ destinationNotSet=Destinazione non impostata\!
disabled=disabilitato
disabledToSpawnMob=§4La creazione di questo mob è stata disabilitata nel file configurazione.
disableUnlimited=§6Disabilitato il posizionamento illimitato di §c {0} §6per§c {1}§6.
discordbroadcastCommandDescription=Trasmette un messaggio al canale Discord specificato.
discordbroadcastCommandUsage=/<command> <channel> <msg>
discordbroadcastCommandUsage1=/<command> <channel> <msg>
discordbroadcastCommandUsage1Description=Invia il messaggio dato al canale Discord specificato
discordbroadcastInvalidChannel=§4Il canale Discord §c{0}§4 non esiste.
discordbroadcastPermission=§4Non hai il permesso di inviare messaggi al canale §c{0}§4.
discordbroadcastSent=§6Messaggio inviato a §c{0}§6\!
discordCommandDescription=Invia link di invito per Discord al giocatore.
discordCommandLink=§6Unisciti al nostro server Discord a §c{0}§6\!
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
discordCommandUsage1Description=Invia link di invito per Discord al giocatore
discordCommandExecuteDescription=Esegue un comando console sul server di Minecraft.
discordCommandExecuteArgumentCommand=Il comando da eseguire
discordCommandExecuteReply=Esecuzione comando\: "/{0}"
@@ -248,6 +261,8 @@ discordErrorLoggerNoPerms=Il logger della console Discord è stato disabilitato
discordErrorNoGuild=ID server non valido o mancante\! Si prega di seguire il tutorial nella configurazione per configurare il plugin.
discordErrorNoGuildSize=Il tuo bot non è presente in nessun server\! Segui il tutorial nella configurazione per configurare il plugin.
discordErrorNoPerms=Il tuo bot non può vedere o parlare in alcun canale\! Assicurati che il tuo bot abbia i permessi di lettura e scrittura in tutti i canali che desideri utilizzare.
discordErrorNoPrimary=Non hai definito un canale primario o il canale primario definito non è valido. Rientro al canale predefinito\: \#{0}.
discordErrorNoPrimaryPerms=Il tuo bot non può parlare nel tuo canale principale, \#{0}. Assicurati che il tuo bot abbia i permessi di lettura e scrittura in tutti i canali che desideri utilizzare.
discordErrorNoToken=Nessun token fornito\! Si prega di seguire il tutorial nella configurazione per configurare il plugin.
discordErrorWebhook=Si è verificato un errore durante l''invio dei messaggi al canale della console\! Probabilmente è stato causato dall''eliminazione accidentale del webhook della console. Questo di solito può essere risolto assicurando che il tuo bot abbia il permesso "Gestisci Webhooks" ed eseguendo "/ess reload".
discordLoggingIn=Tentativo di accedere a Discord...
@@ -260,6 +275,12 @@ disposalCommandUsage=/<command>
distance=§6Distanza\: {0}
dontMoveMessage=§7Il teletrasporto inizierà tra {0}. Non muoverti.
downloadingGeoIp=Download del database GeoIP... potrebbe richiedere del tempo (nazione\: 1.7 MB, città\: 30MB)
dumpConsoleUrl=È stato creato un dump del server\: §c{0}
dumpCreating=§6Creazione di un backup server...
dumpDeleteKey=§6Se vuoi eliminare questo dump in una data successiva, usa la seguente chiave di eliminazione\: §c{0}
dumpError=§4Errore durante la creazione del dump §c{0}§4.
dumpErrorUpload=§4Errore durante il caricamento di §c{0}§4\: §c{1}
dumpUrl=§6Creato server dump\: §c{0}
duplicatedUserdata=Dati dell''utente duplicati\: {0} e {1}
durability=§6Questo attrezzo ha §c{0}§6 utilizzi rimasti
east=E
@@ -309,6 +330,8 @@ essentialsCommandUsage6=/<command> ripulire
essentialsCommandUsage6Description=Pulisce vecchi dati utente
essentialsCommandUsage7=/<command> case
essentialsCommandUsage7Description=Gestisce le case utente
essentialsCommandUsage8=/<command> dump [all] [config] [discord] [kits] [log]
essentialsCommandUsage8Description=Genera un dump server con le informazioni richieste
essentialsHelp1=Il file è corrotto ed Essentials non lo può aprire. Essentials è ora disabilitato. Se non riesci a riparare il file, vai su http\://tiny.cc/EssentialsChat
essentialsHelp2=Il file è corrotto ed Essentials non lo può aprire. Essentials è ora disabilitato. Se non riesci a riparare il file, scrivi /essentialshelp in gioco o vai su http\://tiny.cc/EssentialsChat
essentialsReload=§6Essentials ricaricato§c {0}.
@@ -565,6 +588,9 @@ jailAlreadyIncarcerated=§4Giocatore già in prigione\:§c {0}
jailList=§6Jails\:§r {0}
jailMessage=§4Avrai tempo per riflettere... in prigione.
jailNotExist=§4Quella prigione non esiste.
jailNotifyJailed=§6Giocatore§c {0} §6imprigionato da §c{1}.
jailNotifyJailedFor=§6Giocatore§c {0} §6imprigionato per§c {1}§6da §c{2}§6.
jailNotifySentenceExtended=§6Il giocatore§c{0} §6tempo di prigione esteso a §c{1} §6di §c{2}§6.
jailReleased=§6Il giocatore §c{0}§6 è stato scarcerato.
jailReleasedPlayerNotify=§6Sei stato scarcerato\!
jailSentenceExtended=§6Tempo di prigionia esteso a §c{0}§6.
@@ -641,8 +667,9 @@ listCommandUsage1=/<command> [group]
listCommandUsage1Description=Elenca tutti i giocatori sul server, o il gruppo indicato se specificato
listGroupTag=§6{0}§r\:
listHiddenTag=§7[NASCOSTO]§r
listRealName=({0})
loadWarpError=Fallito il caricamento del warp {0}
localFormat=[L]<{0}> {1}
localFormat=§3[L] §r<{0}> {1}
loomCommandDescription=Apre un telaio.
loomCommandUsage=/<command>
mailClear=§6Per cancellare le mail lette, digita§c /mail clear§6.
@@ -660,6 +687,8 @@ mailCommandUsage4=/<command> invia <message>
mailCommandUsage4Description=Invia a tutti i giocatori il messaggio dato
mailCommandUsage5=/<command> sendtemp <player> <expire time> <message>
mailCommandUsage5Description=Invia al giocatore specificato il messaggio dato che scadrà nell''ora specificata
mailCommandUsage6=/<command> Invio a tempo <expire time> <message>
mailCommandUsage6Description=Invia a tutti i giocatori il messaggio dato che scadrà nell''ora specificata
mailDelay=Hai mandato troppe mail nell''ultimo minuto. Massimo\: {0}
mailFormatNew=§6[§r{0}§6] §6[§r{1}§6] §r{2}
mailFormatNewTimed=§6[§e\: attenzione\:§6] §6[§r{0}§6] §6[§r{1}§6] §r{2}
@@ -749,6 +778,7 @@ nearCommandUsage3Description=Elenca tutti i giocatori nel raggio predefinito vic
nearCommandUsage4=/<command> <player> <radius>
nearCommandUsage4Description=Elenca tutti i giocatori nel raggio indicato dal giocatore specificato
nearbyPlayers=Giocatori nelle vicinanze\: {0}
nearbyPlayersList={0}§f(§c{1}m§f)
negativeBalanceError=§4L''utente non ha il permesso di avere un bilancio negativo.
nickChanged=§6Nickname modificato.
nickCommandDescription=Cambia il tuo soprannome o quello di un altro giocatore.
@@ -802,7 +832,8 @@ noPlacePermission=§4Non hai il permesso di piazzare un blocco accanto a questo
noPotionEffectPerm=§4Non hai il permesso di applicare l''effetto §c{0} §4a questa pozione.
noPowerTools=§6Non hai nessun power tool assegnato.
notAcceptingPay=§4{0} §4non accetta pagamenti.
notAllowedToQuestion=§4Non sei autorizzato a fare domande.
notAllowedToLocal=§4Non hai il permesso di parlare in chat locale.
notAllowedToQuestion=§4Non hai il permesso di usare la domanda.
notAllowedToShout=§4Non hai il permesso di gridare.
notEnoughExperience=§4Non hai abbastanza esperienza.
notEnoughMoney=§4Non hai abbastanza soldi.
@@ -862,6 +893,14 @@ playerTempBanned=§6Il giocatore §c{0}§6 ha temporaneamente bannato §c{1}§6
playerUnbanIpAddress=§6Il giocatore§c {0} §6ha rimosso il ban dall''IP\:§c {1}
playerUnbanned=§6Il giocatore§c {0} §6ha rimosso il ban da§c {1}
playerUnmuted=§7Ti è stato rimosso il muteè.
playtimeCommandDescription=Mostra il tempo di un giocatore giocato in partita
playtimeCommandUsage=/<command> [player]
playtimeCommandUsage1=/<command>
playtimeCommandUsage1Description=Mostra il tuo tempo giocato in partita
playtimeCommandUsage2=/<command> <player>
playtimeCommandUsage2Description=Mostra il tempo del giocatore specificato giocato nella partita
playtime=§6Tempo di gioco\:§c {0}
playtimeOther=§6Tempo di gioco di {1}§6\:§c {0}
pong=Pong\!
posPitch=§6Inclinazione\: {0} (Angolo testa)
possibleWorlds=§6I mondi possibili sono i numeri§c0§6 tra §c{0}§6.
@@ -985,14 +1024,17 @@ replyLastRecipientDisabledFor=§6Risposta all''ultimo destinatario dei messaggi
replyLastRecipientEnabled=§6Risposta all''ultimo destinatario dei messaggi §cabilitata§6.
replyLastRecipientEnabledFor=§6Risposta all''ultimo destinatario del messaggio §abilitato §6per §c {0} §6.
requestAccepted=§6Richiesta di teletrasporto accettata.
requestAcceptedAll=§6Accettate §c{0} §6in attesa di richieste di teletrasporto(s).
requestAcceptedAuto=§6Accettata automaticamente una richiesta di teletrasporto da {0}.
requestAcceptedFrom=§c{0} §6ha accettato la tua richiesta di teletrasporto.
requestAcceptedFromAuto=§c{0} §6accettata automaticamente la tua richiesta di teletrasporto.
requestDenied=§6Richiesta di teletrasporto rifiutata.
requestDeniedAll=§6Hai rifiutato §c{0} §6in attesa di richieste di teletrasporto(s).
requestDeniedFrom=§c{0} §6Ha rifiutato la tua richiesta di teletrasporto.
requestSent=§6Richiesta inviata a§c {0}§6.
requestSentAlready=§4Hai già inviato a {0}§4 una richiesta di teletrasporto.
requestTimedOut=§4Richiesta di telestrasporto scaduta.
requestTimedOutFrom=§4La richiesta di teletrasporto da §c{0} §4è scaduta.
resetBal=§6Il bilancio è stato resettato a §c{0} §6per tutti i giocatori in gioco.
resetBalAll=§6Il bilancio è stato resettato a §c{0} §6per tutti i giocatori.
rest=§6Ti senti ben riposato.
@@ -1252,10 +1294,14 @@ tpacancelCommandUsage1=/<command>
tpacancelCommandUsage1Description=Annulla tutte le tue richieste di teletrasporto in sospeso
tpacancelCommandUsage2=/<command> <player>
tpacancelCommandUsage2Description=Annulla tutta la tua richiesta di teletrasporto con il giocatore specificato
tpacceptCommandDescription=Rifiuta una richiesta di teletrasporto.
tpacceptCommandDescription=Accetta richieste di teletrasporto.
tpacceptCommandUsage=/<command> [otherplayer]
tpacceptCommandUsage1=/<command>
tpacceptCommandUsage1Description=Accetta una richiesta di teletrasporto in arrivo
tpacceptCommandUsage1Description=Accetta la richiesta di teletrasporto più recente
tpacceptCommandUsage2=/<command> <player>
tpacceptCommandUsage2Description=Accetta una richiesta di teletrasporto dal giocatore specificato
tpacceptCommandUsage3=/<command> *
tpacceptCommandUsage3Description=Accetta tutte le richieste di teletrasporto
tpahereCommandDescription=Richiedi che il giocatore specificato ti teletrasporti.
tpahereCommandUsage=/<command> <player>
tpahereCommandUsage1=/<command> <player>
@@ -1268,10 +1314,14 @@ tpautoCommandDescription=Accetta automaticamente le richieste di teletrasporto.
tpautoCommandUsage=/<command> [player]
tpautoCommandUsage1=/<command> [player]
tpautoCommandUsage1Description=Commuta se le richieste di tpa sono accettate automaticamente per te o per un altro giocatore se specificato
tpdenyCommandDescription=Rifiuta una richiesta di teletrasporto.
tpdenyCommandDescription=Rifiuta le richieste di teletrasporto.
tpdenyCommandUsage=/<command>
tpdenyCommandUsage1=/<command>
tpdenyCommandUsage1Description=Rifiuta una richiesta di teletrasporto in arrivo
tpdenyCommandUsage1Description=Rifiuta la richiesta di teletrasporto più recente
tpdenyCommandUsage2=/<command> <player>
tpdenyCommandUsage2Description=Rifiuta una richiesta di teletrasporto dal giocatore specificato
tpdenyCommandUsage3=/<command> *
tpdenyCommandUsage3Description=Rifiuta tutte le richieste di teletrasporto
tphereCommandDescription=Teletrasporta il player verso un warp.
tphereCommandUsage=/<command> <player>
tphereCommandUsage1=/<command> <player>
Loaded 100 of 189 files, more files were not shown because too many files have changed in this diff. Show more