Compare commits

..
50 Commits
Author SHA1 Message Date
MD 100f575293 Release 2.22.0 (#6550) 2026-05-31 14:16:07 +00:00
c5a25bb79c New Crowdin updates (#6251)
Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
Co-authored-by: MD <1917406+mdcfe@users.noreply.github.com>
2026-05-31 12:28:07 +00:00
Jason 5baf2391b3 Remove unused essentials.jail perm (#6539)
The `/jail` command is just an alias for `/togglejail`. As such, the
`essentials.jail` permission is never used.
2026-05-12 22:31:46 +00:00
Josh Roy c38c9256e9 Fix deposits rejected when account has negative balance (#6515)
Economy.add() delegated to setMoney() which checks minMoney and loan
permission against the resulting balance. Both checks reject negative
results even when the balance is improving from a deposit. Since
deposits can only move the balance upward, route them directly to
user.setMoney() bypassing the floor/loan checks. Withdrawals still
go through setMoney() with full validation.

Fixes #5606
2026-05-04 08:26:42 +00:00
Josh Roy 79d67e98c3 Fix essentials.home.bed permission being ignored (#6516)
Two paths bypassed the permission check:

1. Explicit /home bed: the permission check at line 44 was combined
   with the bed-spawn logic in a single condition. When denied, it
   fell through to goHome("bed") which found the stored bed home
   by name and teleported anyway. Now rejects immediately.

2. Fallback respawn: when a player has no homes and isSpawnIfNoHome
   is true, respawn() was called unconditionally which tries the bed.
   Now checks the permission and falls back to world spawn when denied.

Fixes #5963
2026-05-04 08:24:28 +00:00
Josh Roy 5db483b548 Fix Discord Link RoleSyncManager thread leak (#6512)
Two issues causing unbounded thread growth:

1. The repeating sync task was never cancelled on plugin disable,
   leaking the timer itself.

2. Each sync() call spawns an async task that calls
   acquireUninterruptibly() on a 5-permit semaphore. The timer fires
   up to 50 sync calls per cycle, so 45 threads block indefinitely
   waiting for permits. Before they drain, the next cycle spawns 50
   more. Threads accumulate until OOM.

Fix: cancel the task on disable, and replace acquireUninterruptibly()
with tryAcquire(5s timeout) in both sync() and unSync() so threads
don't block indefinitely — skipped syncs retry on the next cycle.

Fixes https://github.com/EssentialsX/Essentials/issues/6381
2026-05-04 08:23:08 +00:00
HotWaterFlaskandJosh Roy 39bc0fe224 Send geoip join messages to console (#6523)
Not only output to the players who have the "essentials.geoip.show"
permission, but also output to the console.

---------

Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2026-05-04 08:16:42 +00:00
Josh Roy 1a9cba913b Add lunge to /enchant (#6534)
Fixes #6521
2026-05-04 08:15:52 +00:00
Hudson AndrésandJosh Roy 24b7285e42 fix: reset nickname when player changes Minecraft account name (#6470)
Closes #6469

---------

Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2026-05-03 05:43:46 +00:00
Adrián Oliva Del RíoandJosh Roy 5c45ee2169 Add /jailedplayers command to list jailed players (#6517)
<!--

EssentialsX feature submission guide
====================================

NOTE: Failure to fill out this template properly may result in your PR
being
      delayed or ignored without warning.

NOTE: Don't type between any arrows in the template, as this text will
be
hidden. This includes this header block and any other explanation text
      blocks.

Want to discuss your PR before submitting it? Join the EssentialsX
Development
server: https://discord.gg/CUN7qVb


EssentialsX is GPL
------------------

By contributing to EssentialsX, you agree to license your code under the
GNU General Public License version 3, which can be found at the link
below:
https://github.com/EssentialsX/Essentials/blob/2.x/LICENSE


Instructions
------------

If you are submitting a new feature, please follow the following steps:

1.  Fill out the template in full.
This includes providing screenshots and a link to the original feature
      request. If there isn't an existing feature request, we strongly
      recommend opening a new feature request BEFORE opening your PR to
implement it, as this allows us to review whether we're likely to accept
      your feature in advance, and also allows us to discuss possible
      implementations for the feature. If there is no associated feature
      request, your PR may be delayed or rejected without warning.
      
      You can open a new feature request by following this link:
      https://github.com/EssentialsX/Essentials/issues/new/choose

2. If you are fixing a performance issue, please use the "Bug fix" PR
template
instead. The "bug fix" template is better suited to performance issues.

3.  Include a demonstration.
If you are adding commands, please provide screenshots and/or a video
demonstration of the feature. Similarly, if you are adding a new API,
      please include a link to example code that takes advantage of your
proposed API. This will aid us in reviewing PRs and speed up the process
      significantly.

-->

### Information

<!--
Replace #nnnn with the number of the original issue. If this PR
implements
features from multiple issues, you should repeat the phrase "closes
#nnnn"
    for each issue. 
-->

This PR closes #5838. 

### Details

**Proposed feature:**  
<!-- Type a description of your proposed feature below this line. -->
Create a command to query the list of imprisoned players

**Environments tested:**    

<!-- Type the OS you have used below. -->
OS:  Ubuntu 24.04.4 LTS x64 bits

<!-- Type the JDK version (from java -version) you have used below. -->
Java version:  JDK21

<!--
Put an "x" inside the boxes for the server software you have tested this
bug fix on. If this feature does not apply to a server, strike through
the server software using ~~strikethrough~~. If you have tested on other
    environments, add a new line with relevant details.
-->
- [x] Most recent Paper version (1.XX.Y, git-Paper-BUILD)
- [ ] CraftBukkit/Spigot/Paper 1.12.2
- [ ] CraftBukkit 1.8.8


**Demonstration:**  
<!--
Below this block, include screenshots/log snippets from before and after
as
necessary. If you have created or used a test case plugin, please link
to a
download of the plugin, source code and exact version used where
possible.
-->
**Jailed players execution with 2 players jailed who are offline:**
<img width="657" height="96" alt="image"
src="https://github.com/user-attachments/assets/45663c9f-5d87-43f7-94a2-cefca62d6c07"
/>

**Jailed players command execution with no players jailed:**
<img width="657" height="96" alt="image"
src="https://github.com/user-attachments/assets/10813887-b7ef-4291-ab12-8927d50b6a05"
/>

---------

Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2026-05-03 03:32:52 +00:00
Josh Roy 87bde72678 Fix consoleName translation key not working (#6506)
Fixes #6343
2026-04-12 21:15:37 +00:00
Josh Roy 97fd5609b4 Fix {USERNAME} underscore escaping in kit items (#6514)
The underscore-to-backslash escaping in KeywordReplacer is needed for
item names/lores where underscores represent spaces, but Minecraft
usernames never contain spaces and their underscores must stay literal.
Skip the escaping for USERNAME keywords so player:{USERNAME} resolves
correctly for names like Player_Name.

Fixes #6296
2026-04-12 21:10:46 +00:00
Josh Roy 936a2c0c62 Fix SocialSpy local chat color bleeding from player display name (#6507)
The display name converted via legacyToMini() produces open MiniMessage
formatting tags that bleed into the subsequent message text. Append
<reset> after the display name to close any inherited formatting.

Fixes #6504
2026-04-12 21:10:40 +00:00
Josh Roy 3d03cf35df Fix command descriptions not using player's locale (#6508)
Usage descriptions were resolved once at command construction time via
tlLiteral() (server default locale) and cached. Now store the
translation key instead and resolve per-player at display time using
playerTl()/tl().

Fixes #6353
2026-04-12 21:10:37 +00:00
Josh Roy 57a8c596f8 Fix /time overriding player's /ptime setting (#6509)
Fixes #6359
2026-04-12 21:10:34 +00:00
Josh Roy b594358545 Fix VanishStatusChangeEvent NPE and document parameter inversion (#6510)
The affected/controller parameters are swapped in Commandvanish (#2604)
but cannot be fixed without breaking the public API.

Fix BukkitListener to use getController() (the actual vanished player)
instead of getAffected() (the sender, null for console), and add
inversion warning javadoc matching the NickChangeEvent pattern.

Fixes #6388
2026-04-12 21:10:30 +00:00
Josh Roy e9f3677b95 Fix /eco ignoring locale-specific decimal separators (#6511)
Commandeco used raw BigDecimal constructor with hardcoded period as
decimal separator, breaking input like '1.000' for European locales. Use
NumberUtil.parseStringToBDecimal() like /pay already does.

Fixes #6475
2026-04-12 21:10:26 +00:00
Josh Roy 678bacfee5 Suppress advancement broadcast for vanished players on Paper (#6513)
Use Paper's event.message(null) API to hide the advancement chat message
when the player is vanished (checked via Bukkit metadata). The player
still receives the advancement, only the broadcast is suppressed.

Fixes #6350
2026-04-12 21:10:23 +00:00
Josh Roy 7f37b5e0f3 Fix minimessage parsing in playerlist keyword replacement (#6505)
Fixes #6502
2026-04-12 20:25:07 +00:00
Brokkonaut f39bc91ef5 Fix version parsing for local paper builds (#6501)
Fixes #6498
2026-04-12 17:42:15 +00:00
Jason 63e7c4d259 Bump supported versions to 26.1.2 (#6500) 2026-04-11 19:06:18 +00:00
Josh Roy 1038b3a597 Fix incorrect teleport safety message (#6486)
old message seems needlessly technical anyway 

Fixes #5088
2026-04-05 20:55:41 +00:00
Josh Roy fb669aa9fd Remove extractUrls from default legacy serializer (#6492)
extractUrls on the default LegacyComponentSerializer caused
legacyToMini to auto-wrap URLs in <click:open_url> tags. When
translation templates like discordCommandLink already wrapped {0}
in their own click tag, this produced nested click events that
Paper 1.21.11+ rejected.

The default serializer no longer extracts URLs. A new
legacyToMiniWithUrls method is available for cases that explicitly
need clickable URL extraction (chat, broadcast).

Fixes #6463
2026-04-05 20:55:38 +00:00
Josh Roy add5eb7cbf Add permission cache system + permission for vanish item pickup (#6488)
Fixes #6270
2026-04-05 20:55:36 +00:00
Josh Roy ddaadf2099 Add socialSpyCmdFormat message key for command social spy (#6489)
Fixes #6049
2026-04-05 17:41:54 +00:00
Josh Roy 4db09f2a2e Change default max-nick-length to 16 (#6484)
Fixes #6028
2026-04-05 17:41:51 +00:00
Josh Roy 00b4a5b3bd Make /flyspeed and /walkspeed force the correct speed type (#6485)
Fixes #4883
2026-04-05 17:41:47 +00:00
Josh Roy 73aa65733e Reject Windows reserved filenames in /setwarp (#6487)
Fixes #5430

stop gap for before we do #5267
2026-04-05 17:41:34 +00:00
Josh Roy 86621cd90e Don't enable fly mode on login when player is in water (#6490)
Fixes #6198
2026-04-05 17:41:33 +00:00
Josh Roy 236ce8837e Add /unmute command and broadcast on unmute (#6491)
Fixes #6419
2026-04-05 17:41:29 +00:00
TouchieandJRoy f5fc4305c9 fix(fly): persist fly mode and restore on join (#6403)
Persist /fly state in userdata and re-enable allowFlight on login so
flight isn’t lost after relogging on ground (upstream #6344).

<!--

EssentialsX bug fix submission guide
====================================

NOTE: Failure to fill out this template properly may result in your PR
being
      delayed or ignored without warning.

NOTE: Don't type between any arrows in the template, as this text will
be
hidden. This includes this header block and any other explanation text
      blocks.

Want to discuss your PR before submitting it? Join the EssentialsX
Development
server: https://discord.gg/CUN7qVb


EssentialsX is GPL
------------------

By contributing to EssentialsX, you agree to license your code under the
GNU General Public License version 3, which can be found at the link
below:
https://github.com/EssentialsX/Essentials/blob/2.x/LICENSE


Instructions
------------

If you are submitting a bug fix, please follow the following steps:

1.  Fill out the template in full.
This includes providing screenshots and a link to the original bug
report. If there isn't an existing bug report, we recommend opening a
new
detailed bug report BEFORE opening your PR to fix it, else your PR may
be
      delayed or rejected without warning.
      
      You can open a new bug report by following this link:
      https://github.com/EssentialsX/Essentials/issues/new/choose 

2.  When linking logs or config files, do not attach them to the post!
Copy and paste any logs into https://gist.github.com/, then paste a
link to them in the relevant parts of the template. Do not use Hastebin
      or Pastebin, as this can cause issues with future reviews.
      
DO NOT drag logs directly into this text box, as we cannot read these!

3.  If you are fixing a performance issue, please include a link to a
    Timings and/or profiler report, both before and after your PR.

4.  If you are fixing a visual bug, such as in commands, please include
    screenshots so that we can more easily review the proposed fix.
    (You can drag screenshots into the bottom of the editor.)

-->

### Information

<!--
Replace #nnnn with the number of the original issue. If this PR fixes
multiple issues, you should repeat the phrase "fixes #nnnn" for each
issue.
-->

This PR fixes #6344 

### Details

**Proposed fix:**    
<!-- Type a description of your proposed fix below this line. -->
Persist the /fly state to userdata and restore allowFlight on login so
flight isn’t lost after relogging while on the ground.

**Environments tested:**    

<!-- Type the OS you have used below. -->
OS: Ubuntu 24.04

<!-- Type the JDK version (from java -version) you have used below. -->
Java version: 21

<!--
Put an "x" inside the boxes for the server software you have tested this
bug fix on. If this feature does not apply to a server, strike through
the server software using ~~strikethrough~~. If you have tested on other
    environments, add a new line with relevant details.
-->
- [x] Most recent Paper version (1.XX.Y, git-Paper-BUILD)
- [x] Paper 1.21.8
- [ ] CraftBukkit/Spigot/Paper 1.12.2
- [ ] CraftBukkit 1.8.8

---------

Co-authored-by: JRoy <10731363+JRoy@users.noreply.github.com>
2026-04-05 04:49:23 +00:00
Golfing7andJosh Roy 08b7fe3bb8 Add PreTransactionEvent (#6370)
<!--

EssentialsX feature submission guide
====================================

NOTE: Failure to fill out this template properly may result in your PR
being
      delayed or ignored without warning.

NOTE: Don't type between any arrows in the template, as this text will
be
hidden. This includes this header block and any other explanation text
      blocks.

Want to discuss your PR before submitting it? Join the EssentialsX
Development
server: https://discord.gg/CUN7qVb


EssentialsX is GPL
------------------

By contributing to EssentialsX, you agree to license your code under the
GNU General Public License version 3, which can be found at the link
below:
https://github.com/EssentialsX/Essentials/blob/2.x/LICENSE


Instructions
------------

If you are submitting a new feature, please follow the following steps:

1.  Fill out the template in full.
This includes providing screenshots and a link to the original feature
      request. If there isn't an existing feature request, we strongly
      recommend opening a new feature request BEFORE opening your PR to
implement it, as this allows us to review whether we're likely to accept
      your feature in advance, and also allows us to discuss possible
      implementations for the feature. If there is no associated feature
      request, your PR may be delayed or rejected without warning.
      
      You can open a new feature request by following this link:
      https://github.com/EssentialsX/Essentials/issues/new/choose

2. If you are fixing a performance issue, please use the "Bug fix" PR
template
instead. The "bug fix" template is better suited to performance issues.

3.  Include a demonstration.
If you are adding commands, please provide screenshots and/or a video
demonstration of the feature. Similarly, if you are adding a new API,
      please include a link to example code that takes advantage of your
proposed API. This will aid us in reviewing PRs and speed up the process
      significantly.

-->

### Information

<!--
Replace #nnnn with the number of the original issue. If this PR
implements
features from multiple issues, you should repeat the phrase "closes
#nnnn"
    for each issue. 
-->

I added a PreTransactionEvent for cancelling transactions between users.

### Details

**Proposed feature:**  
Adding a PreTransactionEvent.


**Environments tested:**    

<!-- Type the OS you have used below. -->
OS: Linux Mint

<!-- Type the JDK version (from java -version) you have used below. -->
Java version:  23

<!--
Put an "x" inside the boxes for the server software you have tested this
bug fix on. If this feature does not apply to a server, strike through
the server software using ~~strikethrough~~. If you have tested on other
    environments, add a new line with relevant details.
-->
- [x] Most recent Paper version (1.XX.Y, git-Paper-BUILD)
- [ ] CraftBukkit/Spigot/Paper 1.12.2
- [ ] CraftBukkit 1.8.8


**Demonstration:**  
<!--
Below this block, include screenshots/log snippets from before and after
as
necessary. If you have created or used a test case plugin, please link
to a
download of the plugin, source code and exact version used where
possible.
-->
```java
    @EventHandler
    public void onPay(PreTransactionEvent event) {
        // Prevent money from being sent outside their own faction.
        IUser userSource = event.getRequester().getUser();
        if (userSource == null)
            return;

        FPlayer fplayerSource = FPlayers.getInstance().getByPlayer(userSource.getBase());
        if (fplayerSource == null || fplayerSource.isAdminBypassing())
            return;

        Faction faction = fplayerSource.getFaction();
        if (faction == null || !isFactionVoluntaryExcluded(faction.getId()))
            return;

        // Who are they sending it to?
        FPlayer target = FPlayers.getInstance().getById(event.getTarget().getUUID().toString());
        Faction factionTarget = target.getFaction();
        if (faction != factionTarget) {
            event.setCancelled(true);
            msg(userSource.getBase(), cantPayOutsideExcludedFactionMessage);
        }
    }
```
This code prevents transactions between two users when two factions
can't interact.

---------

Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2026-04-05 03:46:06 +00:00
CrystalD5andJosh Roy 0845ea6f08 Fixed NoSuchMethodException Player.getRespawnLocation() (#6460)
Fixes #6459.

Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2026-04-05 02:57:29 +00:00
vbojovicandJosh Roy 5a78df5494 Add option to allow fishing when afk (#6465)
Fixes #6443
Fixes #6323

- Prevent AFK timer reset when fishing rod bobber is idle
- Fix incorrect teleportOfflineUnknown message showing sender instead of
target

---------

Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2026-04-05 02:36:13 +00:00
Josh Roy 716a61eb16 Mitigate Discord 429s (#6461) 2026-04-04 19:17:36 +00:00
Josh Roy 637ac8f4ee Fix version comparison logic for pre-release/snapshot/rc variants (#6483)
Pre-release, snapshot, and RC variants should be considered lower than
the base release version. Updated test assertions and comparison logic
to reflect that release versions are higher than their dev variants
(snapshot < pre < rc < release).
2026-04-04 18:58:55 +00:00
Jason 218e004108 Bump supported versions to 26.1.1 (#6482)
Yay!
2026-04-04 05:28:07 +00:00
Jason c26909e2b8 Add alias "ver" for the "version" subcommand (#6481)
Fixin what u broke :)
2026-04-04 04:48:36 +00:00
5d535dcbe4 Support new PaperMC versioning scheme in VersionUtil (#6480)
ThioJoe is waiting!
Re #6479

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: JRoy <10731363+JRoy@users.noreply.github.com>
2026-04-04 04:11:15 +00:00
Josh Roy 8e3b24fdba Minecraft 26.1 (#6473) 2026-03-23 18:07:48 +00:00
CopilotandJRoy d7452bfcc7 Fix stale shadow include group ID for emoji-java in EssentialsDiscord (#6467)
Commit 297d0e4 migrated `emoji-java` from Jitpack
(`com.github.MinnDevelopment`) to EssentialsX's own Maven repo
(`net.essentialsx.deps`), but the `include(dependency(...))` in the
`shadowJar` block was not updated to match, leaving the shadow JAR
unable to locate and bundle the dependency.

### Details

**Proposed fix:**
- Updated `EssentialsDiscord/build.gradle` shadowJar include to use the
correct group ID:
  ```groovy
  // Before
  include(dependency('com.github.MinnDevelopment:emoji-java'))

  // After
  include(dependency('net.essentialsx.deps:emoji-java'))
  ```

**Environments tested:**    

OS: 

Java version:  

- [ ] Most recent Paper version (1.XX.Y, git-Paper-BUILD)
- [ ] CraftBukkit/Spigot/Paper 1.12.2
- [ ] CraftBukkit 1.8.8


**Demonstration:**

<!-- START COPILOT CODING AGENT SUFFIX -->



<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> never updated the shadow include group id here pls fix
> 
> Reference:
https://github.com/EssentialsX/Essentials/commit/297d0e460605efec9db2ca824ad20945838a1ff3


</details>



<!-- START COPILOT CODING AGENT TIPS -->
---

📱 Kick off Copilot coding agent tasks wherever you are with [GitHub
Mobile](https://gh.io/cca-mobile-docs), available on iOS and Android.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: JRoy <10731363+JRoy@users.noreply.github.com>
2026-03-15 15:49:56 +00:00
482175e6c2 Prevent running recipe command while sleeping (#6455)
<!--

EssentialsX bug fix submission guide
====================================

NOTE: Failure to fill out this template properly may result in your PR
being
      delayed or ignored without warning.

NOTE: Don't type between any arrows in the template, as this text will
be
hidden. This includes this header block and any other explanation text
      blocks.

Want to discuss your PR before submitting it? Join the EssentialsX
Development
server: https://discord.gg/CUN7qVb


EssentialsX is GPL
------------------

By contributing to EssentialsX, you agree to license your code under the
GNU General Public License version 3, which can be found at the link
below:
https://github.com/EssentialsX/Essentials/blob/2.x/LICENSE


Instructions
------------

If you are submitting a bug fix, please follow the following steps:

1.  Fill out the template in full.
This includes providing screenshots and a link to the original bug
report. If there isn't an existing bug report, we recommend opening a
new
detailed bug report BEFORE opening your PR to fix it, else your PR may
be
      delayed or rejected without warning.
      
      You can open a new bug report by following this link:
      https://github.com/EssentialsX/Essentials/issues/new/choose 

2.  When linking logs or config files, do not attach them to the post!
Copy and paste any logs into https://gist.github.com/, then paste a
link to them in the relevant parts of the template. Do not use Hastebin
      or Pastebin, as this can cause issues with future reviews.
      
DO NOT drag logs directly into this text box, as we cannot read these!

3.  If you are fixing a performance issue, please include a link to a
    Timings and/or profiler report, both before and after your PR.

4.  If you are fixing a visual bug, such as in commands, please include
    screenshots so that we can more easily review the proposed fix.
    (You can drag screenshots into the bottom of the editor.)

-->

### Information

<!--
Replace #nnnn with the number of the original issue. If this PR fixes
multiple issues, you should repeat the phrase "fixes #nnnn" for each
issue.
-->

This PR fixes #6450 . 

### Details

**Proposed fix:**    
I added a check to make sure that items are only placed into the
inventory when it successfully opens.


**Environments tested:**    

<!-- Type the OS you have used below. -->
OS: Linux Mint

<!-- Type the JDK version (from java -version) you have used below. -->
Java version:  21

<!--
Put an "x" inside the boxes for the server software you have tested this
bug fix on. If this feature does not apply to a server, strike through
the server software using ~~strikethrough~~. If you have tested on other
    environments, add a new line with relevant details.
-->
- [x] Most recent Paper version (1.XX.Y, git-Paper-BUILD)
- [ ] CraftBukkit/Spigot/Paper 1.12.2
- [ ] CraftBukkit 1.8.8


**Demonstration:**    
<!--
Below this block, include screenshots/log snippets from before and after
as
necessary. If you have created or used a test case plugin, please link
to a
download of the plugin, source code and exact version used where
possible.
-->
In order to replicate the issue, I used the following code to test:
```java
    @EventHandler
    public void onRecipeStop(InventoryOpenEvent event) {
        if (event.getPlayer().isSleeping()) {
            event.setCancelled(true);
        }
    }
```

---------

Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
Co-authored-by: Benedikt Johannes <benedikt.johannes.hofer@gmail.com>
2026-03-14 15:23:54 +00:00
CopilotandJRoy 302653a77c Fix workflow artifact upload paths missing "X" in EssentialsX addon jar names (#6462)
### Information

Workflow artifact upload steps referenced incorrect jar filenames — all
addon jars are built as `EssentialsX{Addon}-*.jar` (e.g.
`EssentialsXChat`, `EssentialsXProtect`) because project names in
`settings.gradle.kts` are all prefixed with `EssentialsX`, and
`archivesName` is set to `project.name`. The upload globs were missing
the `X`, causing every per-module direct upload to fail to find its
target file.

### Details

**Proposed fix:**  
Update all per-module `archive: false` upload step paths in both
`build-pr.yml` and `build-master.yml` to use the correct
`EssentialsX`-prefixed names:

| Before | After |
|---|---|
| `jars/EssentialsAntiBuild-*.jar` | `jars/EssentialsXAntiBuild-*.jar` |
| `jars/EssentialsChat-*.jar` | `jars/EssentialsXChat-*.jar` |
| `jars/EssentialsDiscord-*.jar` | `jars/EssentialsXDiscord-*.jar` |
| `jars/EssentialsDiscordLink-*.jar` |
`jars/EssentialsXDiscordLink-*.jar` |
| `jars/EssentialsGeoIP-*.jar` | `jars/EssentialsXGeoIP-*.jar` |
| `jars/EssentialsProtect-*.jar` | `jars/EssentialsXProtect-*.jar` |
| `jars/EssentialsSpawn-*.jar` | `jars/EssentialsXSpawn-*.jar` |
| `jars/EssentialsXMPP-*.jar` | `jars/EssentialsXXMPP-*.jar` |

The Javadoc `cp` paths in `build-master.yml` reference filesystem
directory names (which don't include `X`) and remain correct as-is.

**Environments tested:**

OS: N/A (CI workflow change only)

Java version: N/A

- ~~Most recent Paper version (1.XX.Y, git-Paper-BUILD)~~
- ~~CraftBukkit/Spigot/Paper 1.12.2~~
- ~~CraftBukkit 1.8.8~~

**Demonstration:**

N/A — the incorrect globs would silently produce no artifact (or an
error) for each addon module on every workflow run using `archive:
false`.

<!-- START COPILOT CODING AGENT SUFFIX -->



<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

>
https://github.blog/changelog/2026-02-26-github-actions-now-supports-uploading-and-downloading-non-zipped-artifacts/
> 
> update our workflows to use this rather than zipping (still provide
the zip but also individually upload


</details>



<!-- START COPILOT CODING AGENT TIPS -->
---

✨ Let Copilot coding agent [set things up for
you](https://github.com/EssentialsX/Essentials/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: JRoy <10731363+JRoy@users.noreply.github.com>
2026-03-10 00:33:35 +00:00
Théo Dufrene 9d70fdb263 Add MiniMessage support for thunder enabled / disabled (#6454)
<!--

EssentialsX bug fix submission guide
====================================

NOTE: Failure to fill out this template properly may result in your PR
being
      delayed or ignored without warning.

NOTE: Don't type between any arrows in the template, as this text will
be
hidden. This includes this header block and any other explanation text
      blocks.

Want to discuss your PR before submitting it? Join the EssentialsX
Development
server: https://discord.gg/CUN7qVb


EssentialsX is GPL
------------------

By contributing to EssentialsX, you agree to license your code under the
GNU General Public License version 3, which can be found at the link
below:
https://github.com/EssentialsX/Essentials/blob/2.x/LICENSE


Instructions
------------

If you are submitting a bug fix, please follow the following steps:

1.  Fill out the template in full.
This includes providing screenshots and a link to the original bug
report. If there isn't an existing bug report, we recommend opening a
new
detailed bug report BEFORE opening your PR to fix it, else your PR may
be
      delayed or rejected without warning.
      
      You can open a new bug report by following this link:
      https://github.com/EssentialsX/Essentials/issues/new/choose 

2.  When linking logs or config files, do not attach them to the post!
Copy and paste any logs into https://gist.github.com/, then paste a
link to them in the relevant parts of the template. Do not use Hastebin
      or Pastebin, as this can cause issues with future reviews.
      
DO NOT drag logs directly into this text box, as we cannot read these!

3.  If you are fixing a performance issue, please include a link to a
    Timings and/or profiler report, both before and after your PR.

4.  If you are fixing a visual bug, such as in commands, please include
    screenshots so that we can more easily review the proposed fix.
    (You can drag screenshots into the bottom of the editor.)

-->

### Information

<!--
Replace #nnnn with the number of the original issue. If this PR fixes
multiple issues, you should repeat the phrase "fixes #nnnn" for each
issue.
-->

This PR fixes missing MiniMessage support for the enabled / disabled
thunder message

### Details

**Proposed fix:**    
<!-- Type a description of your proposed fix below this line. -->
Added parsing

**Environments tested:**    

<!-- Type the OS you have used below. -->
OS: Linux
<!-- Type the JDK version (from java -version) you have used below. -->
Java version:  21

<!--
Put an "x" inside the boxes for the server software you have tested this
bug fix on. If this feature does not apply to a server, strike through
the server software using ~~strikethrough~~. If you have tested on other
    environments, add a new line with relevant details.
-->
- [x] 1.21.8 Paper version 
- [ ] CraftBukkit/Spigot/Paper 1.12.2
- [ ] CraftBukkit 1.8.8


**Demonstration:**    
<!--
Below this block, include screenshots/log snippets from before and after
as
necessary. If you have created or used a test case plugin, please link
to a
download of the plugin, source code and exact version used where
possible.
-->
2026-03-09 15:03:43 +00:00
MD 297d0e4606 Migrate Vault and emoji-java dependencies away from Jitpack (#6458)
Jitpack is down. Move dependencies to our own repo to remove the
build-time dependency on Jitpack.
2026-03-08 21:44:39 +00:00
UDPSendToFailed 9c833336fb Fix integer overflow with /burn + /more & fix % in chat formats (#6452)
Before:

- Using `/burn <player> 107374183` extinguished the player.
- `/burn` accepted negative values.
- Using `/more 2147483647` deleted the held item(s) entirely.

After:

- Using `/burn <player> 107374183` sets the player on fire for 107374183
seconds correctly.
- `/burn` doesn't accept negative values.
- Using `/more 2147483647` correctly increases the held item stack to
64.
2026-03-07 20:09:13 +00:00
UDPSendToFailedandMD 5abe8b61ef Fix server freezing with /give (#6449)
<!--

EssentialsX bug fix submission guide
====================================

NOTE: Failure to fill out this template properly may result in your PR
being
      delayed or ignored without warning.

NOTE: Don't type between any arrows in the template, as this text will
be
hidden. This includes this header block and any other explanation text
      blocks.

Want to discuss your PR before submitting it? Join the EssentialsX
Development
server: https://discord.gg/CUN7qVb


EssentialsX is GPL
------------------

By contributing to EssentialsX, you agree to license your code under the
GNU General Public License version 3, which can be found at the link
below:
https://github.com/EssentialsX/Essentials/blob/2.x/LICENSE


Instructions
------------

If you are submitting a bug fix, please follow the following steps:

1.  Fill out the template in full.
This includes providing screenshots and a link to the original bug
report. If there isn't an existing bug report, we recommend opening a
new
detailed bug report BEFORE opening your PR to fix it, else your PR may
be
      delayed or rejected without warning.
      
      You can open a new bug report by following this link:
      https://github.com/EssentialsX/Essentials/issues/new/choose 

2.  When linking logs or config files, do not attach them to the post!
Copy and paste any logs into https://gist.github.com/, then paste a
link to them in the relevant parts of the template. Do not use Hastebin
      or Pastebin, as this can cause issues with future reviews.
      
DO NOT drag logs directly into this text box, as we cannot read these!

3.  If you are fixing a performance issue, please include a link to a
    Timings and/or profiler report, both before and after your PR.

4.  If you are fixing a visual bug, such as in commands, please include
    screenshots so that we can more easily review the proposed fix.
    (You can drag screenshots into the bottom of the editor.)

-->

### Information

<!--
Replace #nnnn with the number of the original issue. If this PR fixes
multiple issues, you should repeat the phrase "fixes #nnnn" for each
issue.
-->

This PR fixes a bug where anyone with access to the /give command could
freeze the server.

### Details

Currently, if a user has permission to spawn items with metadata, they
can freeze or completely crash the server by supplying a massive integer
for a book's page number (e.g., `/give <player> written_book 1
page2147483647:payload`).

Because there is no upper bound check in `MetaItemStack.java`, the
internal `for` loop tries to allocate an `ArrayList` with billions of
empty strings to reach that requested page index. This instantly
exhausts the JVM heap and triggers an OutOfMemoryError, hard-crashing
the server thread, or at least freezing it entirely for seconds.

This PR fixes the issue by introducing a hard limit of 100 pages for
book metadata parsing. If the requested page exceeds this limit, the
loop doesn't execute and it instead throws a newly added
`pageLimitExceeded` translatable exception.


**Environments tested:**    

<!-- Type the OS you have used below. -->
OS:  Windows 11 25H2 26200.7922

<!-- Type the JDK version (from java -version) you have used below. -->
Java version: Java 21 (OpenJDK 64-Bit Server VM 21.0.10+7-LTS; Eclipse
Adoptium Temurin-21.0.10+7)

<!--
Put an "x" inside the boxes for the server software you have tested this
bug fix on. If this feature does not apply to a server, strike through
the server software using ~~strikethrough~~. If you have tested on other
    environments, add a new line with relevant details.
-->
Purpur version 1.21.11-2545


**Demonstration:**    
<!--
Below this block, include screenshots/log snippets from before and after
as
necessary. If you have created or used a test case plugin, please link
to a
download of the plugin, source code and exact version used where
possible.
-->

Before:

<img width="1401" height="269" alt="image"
src="https://github.com/user-attachments/assets/9453a449-af43-4e77-bdfe-26e63e47b634"
/>

After:

<img width="1104" height="189" alt="image"
src="https://github.com/user-attachments/assets/f1783011-92db-4518-9a4d-a831bb847261"
/>

Co-authored-by: MD <1917406+mdcfe@users.noreply.github.com>
2026-02-28 23:03:48 +00:00
Gavin HeatheringtonandJosh Roy b8acd9c3ab Allow discord console relay to be filtered by logger name (#6448)
Rearranged logger addition to message entry for filtering by logger
name.

---------

Co-authored-by: Josh Roy <10731363+JRoy@users.noreply.github.com>
2026-02-28 21:22:50 +00:00
BestZige f080f815fa fix(commands): propagate Essentials and module to tree nodes (#6445)
### What does this PR do?

Fixes an issue where `EssentialsTreeNode` instances did not receive
updated
`Essentials` and `IEssentialsModule` references after registration.

This could lead to null references during command execution,
especially in test environments.

### Changes made

- Override `setEssentials` in `EssentialsTreeCommand`
- Override `setEssentialsModule` in `EssentialsTreeCommand`
- Propagate updated references to all registered nodes

### Why is this needed?

Nodes only received references during registration.
If the parent command updated its references later,
the nodes would retain outdated (null) values.

### Does this PR break compatibility?

No.
2026-02-23 17:14:49 +00:00
Josh Roy 18549a718a Fix /ess reload (#6444) 2026-02-22 21:36:39 +00:00
162 changed files with 2984 additions and 1835 deletions

No files matched your search

+57 -3
View File
@@ -41,11 +41,65 @@ jobs:
report_paths: '**/build/test-results/test*/TEST-*.xml'
- name: Archive plugin jars on GitHub
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: EssentialsX plugin jars
path: jars/
- name: Upload EssentialsX jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsX-*.jar
archive: false
- name: Upload EssentialsXAntiBuild jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsXAntiBuild-*.jar
archive: false
- name: Upload EssentialsXChat jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsXChat-*.jar
archive: false
- name: Upload EssentialsXDiscord jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsXDiscord-*.jar
archive: false
- name: Upload EssentialsXDiscordLink jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsXDiscordLink-*.jar
archive: false
- name: Upload EssentialsXGeoIP jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsXGeoIP-*.jar
archive: false
- name: Upload EssentialsXProtect jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsXProtect-*.jar
archive: false
- name: Upload EssentialsXSpawn jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsXSpawn-*.jar
archive: false
- name: Upload EssentialsXXMPP jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsXXMPP-*.jar
archive: false
- name: Deploy to Maven repo
if: ${{ success() && github.event_name == 'push' && github.repository == 'EssentialsX/Essentials' && github.ref == 'refs/heads/2.x' }}
env:
@@ -67,7 +121,7 @@ jobs:
cp -r EssentialsXMPP/build/docs/javadoc/ javadocs/EssentialsXMPP/
- name: Archive Javadocs
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: javadocs
path: javadocs/
@@ -85,7 +139,7 @@ jobs:
node-version: 22
- name: Download Javadocs
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: javadocs
path: javadocs/
+55 -1
View File
@@ -48,7 +48,61 @@ jobs:
report_paths: '**/build/test-results/test*/TEST-*.xml'
- name: Archive plugin jars on GitHub
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: EssentialsX plugin jars
path: jars/
- name: Upload EssentialsX jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsX-*.jar
archive: false
- name: Upload EssentialsXAntiBuild jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsXAntiBuild-*.jar
archive: false
- name: Upload EssentialsXChat jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsXChat-*.jar
archive: false
- name: Upload EssentialsXDiscord jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsXDiscord-*.jar
archive: false
- name: Upload EssentialsXDiscordLink jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsXDiscordLink-*.jar
archive: false
- name: Upload EssentialsXGeoIP jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsXGeoIP-*.jar
archive: false
- name: Upload EssentialsXProtect jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsXProtect-*.jar
archive: false
- name: Upload EssentialsXSpawn jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsXSpawn-*.jar
archive: false
- name: Upload EssentialsXXMPP jar
uses: actions/upload-artifact@v7
with:
path: jars/EssentialsXXMPP-*.jar
archive: false
+1 -3
View File
@@ -3,7 +3,7 @@ plugins {
}
dependencies {
compileOnly('com.github.milkbowl:VaultAPI:1.7') {
compileOnly('net.essentialsx.deps:VaultAPI:1.7') {
exclude group: "org.bukkit", module: "bukkit"
}
compileOnly 'net.luckperms:api:5.3'
@@ -25,7 +25,6 @@ dependencies {
api(project(path: ':providers:PaperProvider', configuration: 'shadow')){
exclude(module: 'paper-api')
}
api project(':providers:FoliaProvider')
api(project(':providers:NMSReflectionProvider')) {
exclude(module: 'bukkit')
}
@@ -74,7 +73,6 @@ shadowJar {
include (dependency('net.kyori:adventure-text-minimessage'))
include (project(':providers:BaseProviders'))
include (project(path: ':providers:PaperProvider', configuration: 'shadow'))
include (project(':providers:FoliaProvider'))
include (project(':providers:NMSReflectionProvider'))
include (project(':providers:1_8Provider'))
include (project(':providers:1_12Provider'))
@@ -139,6 +139,19 @@ public class AsyncTeleport implements IAsyncTeleport {
paperFuture.exceptionally(future::completeExceptionally);
}
private void runOnMain(final Runnable runnable) throws ExecutionException, InterruptedException {
if (Bukkit.isPrimaryThread()) {
runnable.run();
return;
}
final CompletableFuture<Object> taskLock = new CompletableFuture<>();
Bukkit.getScheduler().runTask(ess, () -> {
runnable.run();
taskLock.complete(new Object());
});
taskLock.get();
}
protected void nowAsync(final IUser teleportee, final ITarget target, final TeleportCause cause, final CompletableFuture<Boolean> future) {
cancel(false);
@@ -156,8 +169,8 @@ public class AsyncTeleport implements IAsyncTeleport {
}
try {
ess.ensureEntity(teleportee.getBase(), () -> teleportee.getBase().eject()); //EntityDismountEvent requires a sync context.
} catch (final RuntimeException e) {
runOnMain(() -> teleportee.getBase().eject()); //EntityDismountEvent requires a sync context.
} catch (final ExecutionException | InterruptedException e) {
future.completeExceptionally(e);
return;
}
@@ -177,7 +190,8 @@ public class AsyncTeleport implements IAsyncTeleport {
if (LocationUtil.isBlockUnsafeForUser(ess, teleportee, chunk.getWorld(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())) {
if (ess.getSettings().isTeleportSafetyEnabled()) {
if (ess.getSettings().isForceDisableTeleportSafety()) {
PaperLib.teleportAsync(teleportee.getBase(), loc, cause);
//The chunk we're teleporting to is 100% going to be loaded here, no need to teleport async.
teleportee.getBase().teleport(loc, cause);
} else {
try {
//There's a chance the safer location is outside the loaded chunk so still teleport async here.
@@ -193,7 +207,8 @@ public class AsyncTeleport implements IAsyncTeleport {
}
} else {
if (ess.getSettings().isForceDisableTeleportSafety()) {
PaperLib.teleportAsync(teleportee.getBase(), loc, cause);
//The chunk we're teleporting to is 100% going to be loaded here, no need to teleport async.
teleportee.getBase().teleport(loc, cause);
} else {
if (ess.getSettings().isTeleportToCenterLocation()) {
loc = LocationUtil.getRoundedDestination(loc);
@@ -1,14 +1,13 @@
package com.earth2me.essentials;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.ess3.provider.SchedulingProvider;
import org.bukkit.Location;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import org.bukkit.Location;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import net.ess3.api.IEssentials;
import net.ess3.api.IUser;
import net.essentialsx.api.v2.events.TeleportWarmupCancelledEvent;
import net.essentialsx.api.v2.events.TeleportWarmupCancelledEvent.CancelReason;
@@ -32,7 +31,7 @@ public class AsyncTimedTeleport implements Runnable {
private final boolean timer_canMove;
private final Trade timer_chargeFor;
private final TeleportCause timer_cause;
private SchedulingProvider.EssentialsTask timer_task;
private int timer_task;
private double timer_health;
AsyncTimedTeleport(final IUser user, final IEssentials ess, final AsyncTeleport teleport, final long delay, final IUser teleportUser, final ITarget target, final Trade chargeFor, final TeleportCause cause, final boolean respawn) {
@@ -56,7 +55,7 @@ public class AsyncTimedTeleport implements Runnable {
this.timer_respawn = respawn;
this.timer_canMove = user.isAuthorized("essentials.teleport.timer.move");
timer_task = ess.runTaskTimerAsynchronously(this, 20, 20);
timer_task = ess.runTaskTimerAsynchronously(this, 20, 20).getTaskId();
if (future != null) {
this.parentFuture = future;
@@ -143,16 +142,16 @@ public class AsyncTimedTeleport implements Runnable {
}
}
ess.scheduleEntityDelayedTask(teleportOwner.getBase(), new DelayedTeleportTask());
ess.scheduleSyncDelayedTask(new DelayedTeleportTask());
}
//If we need to cancelTimer a pending teleportPlayer call this method
void cancelTimer(final boolean notifyUser) {
if (timer_task == null) {
if (timer_task == -1) {
return;
}
try {
timer_task.cancel();
ess.getServer().getScheduler().cancelTask(timer_task);
final IUser teleportUser = ess.getUser(this.timer_teleportee);
if (teleportUser != null && teleportUser.getBase() != null) {
@@ -168,7 +167,7 @@ public class AsyncTimedTeleport implements Runnable {
}
}
} finally {
timer_task = null;
timer_task = -1;
}
}
}
@@ -1,7 +1,6 @@
package com.earth2me.essentials;
import net.ess3.api.IEssentials;
import net.ess3.provider.SchedulingProvider;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
@@ -19,7 +18,7 @@ public class Backup implements Runnable {
private transient final IEssentials ess;
private final AtomicBoolean pendingShutdown = new AtomicBoolean(false);
private transient boolean running = false;
private transient SchedulingProvider.EssentialsTask task = null;
private transient int taskId = -1;
private transient boolean active = false;
private transient CompletableFuture<Object> taskLock = null;
@@ -37,10 +36,10 @@ public class Backup implements Runnable {
public synchronized void stopTask() {
running = false;
if (task != null) {
task.cancel();
if (taskId != -1) {
server.getScheduler().cancelTask(taskId);
}
task = null;
taskId = -1;
}
private synchronized void startTask() {
@@ -49,7 +48,7 @@ public class Backup implements Runnable {
if (interval < 1200) {
return;
}
task = ess.scheduleGlobalRepeatingTask(this, interval, interval);
taskId = ess.scheduleSyncRepeatingTask(this, interval, interval);
running = true;
}
}
@@ -124,7 +123,7 @@ public class Backup implements Runnable {
}
if (!pendingShutdown.get()) {
ess.scheduleGlobalDelayedTask(new BackupEnableSaveTask());
ess.scheduleSyncDelayedTask(new BackupEnableSaveTask());
}
}
});
@@ -13,7 +13,11 @@ import static com.earth2me.essentials.I18n.tlLiteral;
public final class Console implements IMessageRecipient {
public static final String NAME = "Console";
public static final String DISPLAY_NAME = tlLiteral("consoleName");
public static String displayName() {
return tlLiteral("consoleName");
}
private static Console instance; // Set in essentials
private final IEssentials ess;
@@ -56,7 +60,7 @@ public final class Console implements IMessageRecipient {
@Override
public String getDisplayName() {
return Console.DISPLAY_NAME;
return displayName();
}
@Override
@@ -17,13 +17,13 @@ public final class Enchantments {
static {
final Enchantment SHARPNESS = RegistryUtil.valueOf(Enchantment.class, "DAMAGE_ALL", "SHARPNESS");
ENCHANTMENTS.put("alldamage", SHARPNESS);
ALIASENCHANTMENTS.put("alldmg", SHARPNESS);
ENCHANTMENTS.put("sharpness", SHARPNESS);
ALIASENCHANTMENTS.put("sharp", SHARPNESS);
ALIASENCHANTMENTS.put("dal", SHARPNESS);
final Enchantment BANE_OF_ARTHROPODS = RegistryUtil.valueOf(Enchantment.class, "DAMAGE_ARTHROPODS", "BANE_OF_ARTHROPODS");
ENCHANTMENTS.put("ardmg", BANE_OF_ARTHROPODS);
@@ -31,13 +31,13 @@ public final class Enchantments {
ALIASENCHANTMENTS.put("baneofarthropod", BANE_OF_ARTHROPODS);
ALIASENCHANTMENTS.put("arthropod", BANE_OF_ARTHROPODS);
ALIASENCHANTMENTS.put("dar", BANE_OF_ARTHROPODS);
final Enchantment SMITE = RegistryUtil.valueOf(Enchantment.class, "DAMAGE_UNDEAD", "SMITE");
ENCHANTMENTS.put("undeaddamage", SMITE);
ENCHANTMENTS.put("smite", SMITE);
ALIASENCHANTMENTS.put("du", SMITE);
final Enchantment EFFICIENCY = RegistryUtil.valueOf(Enchantment.class, "DIG_SPEED", "EFFICIENCY");
ENCHANTMENTS.put("digspeed", EFFICIENCY);
@@ -46,7 +46,7 @@ public final class Enchantments {
ALIASENCHANTMENTS.put("cutspeed", EFFICIENCY);
ALIASENCHANTMENTS.put("ds", EFFICIENCY);
ALIASENCHANTMENTS.put("eff", EFFICIENCY);
final Enchantment UNBREAKING = RegistryUtil.valueOf(Enchantment.class, "DURABILITY", "UNBREAKING");
ENCHANTMENTS.put("durability", UNBREAKING);
@@ -70,21 +70,21 @@ public final class Enchantments {
ALIASENCHANTMENTS.put("kback", Enchantment.KNOCKBACK);
ALIASENCHANTMENTS.put("kb", Enchantment.KNOCKBACK);
ALIASENCHANTMENTS.put("k", Enchantment.KNOCKBACK);
final Enchantment FORTUNE = RegistryUtil.valueOf(Enchantment.class, "LOOT_BONUS_BLOCKS", "FORTUNE");
ALIASENCHANTMENTS.put("blockslootbonus", FORTUNE);
ENCHANTMENTS.put("fortune", FORTUNE);
ALIASENCHANTMENTS.put("fort", FORTUNE);
ALIASENCHANTMENTS.put("lbb", FORTUNE);
final Enchantment LOOTING = RegistryUtil.valueOf(Enchantment.class, "LOOT_BONUS_MOBS", "LOOTING");
ALIASENCHANTMENTS.put("mobslootbonus", LOOTING);
ENCHANTMENTS.put("mobloot", LOOTING);
ENCHANTMENTS.put("looting", LOOTING);
ALIASENCHANTMENTS.put("lbm", LOOTING);
final Enchantment RESPIRATION = RegistryUtil.valueOf(Enchantment.class, "OXYGEN", "RESPIRATION");
ALIASENCHANTMENTS.put("oxygen", RESPIRATION);
@@ -92,14 +92,14 @@ public final class Enchantments {
ALIASENCHANTMENTS.put("breathing", RESPIRATION);
ENCHANTMENTS.put("breath", RESPIRATION);
ALIASENCHANTMENTS.put("o", RESPIRATION);
final Enchantment PROTECTION = RegistryUtil.valueOf(Enchantment.class, "PROTECTION_ENVIRONMENTAL", "PROTECTION");
ENCHANTMENTS.put("protection", PROTECTION);
ALIASENCHANTMENTS.put("prot", PROTECTION);
ENCHANTMENTS.put("protect", PROTECTION);
ALIASENCHANTMENTS.put("p", PROTECTION);
final Enchantment BLAST_PROTECTION = RegistryUtil.valueOf(Enchantment.class, "PROTECTION_EXPLOSIONS", "BLAST_PROTECTION");
ALIASENCHANTMENTS.put("explosionsprotection", BLAST_PROTECTION);
@@ -110,7 +110,7 @@ public final class Enchantments {
ALIASENCHANTMENTS.put("bprotect", BLAST_PROTECTION);
ENCHANTMENTS.put("blastprotect", BLAST_PROTECTION);
ALIASENCHANTMENTS.put("pe", BLAST_PROTECTION);
final Enchantment FEATHER_FALLING = RegistryUtil.valueOf(Enchantment.class, "PROTECTION_FALL", "FEATHER_FALLING");
ALIASENCHANTMENTS.put("fallprotection", FEATHER_FALLING);
@@ -118,7 +118,7 @@ public final class Enchantments {
ENCHANTMENTS.put("featherfall", FEATHER_FALLING);
ALIASENCHANTMENTS.put("featherfalling", FEATHER_FALLING);
ALIASENCHANTMENTS.put("pfa", FEATHER_FALLING);
final Enchantment FIRE_PROTECTION = RegistryUtil.valueOf(Enchantment.class, "PROTECTION_FIRE", "FIRE_PROTECTION");
ALIASENCHANTMENTS.put("fireprotection", FIRE_PROTECTION);
@@ -128,7 +128,7 @@ public final class Enchantments {
ENCHANTMENTS.put("fireprot", FIRE_PROTECTION);
ALIASENCHANTMENTS.put("flameprot", FIRE_PROTECTION);
ALIASENCHANTMENTS.put("pf", FIRE_PROTECTION);
final Enchantment PROJECTILE_PROTECTION = RegistryUtil.valueOf(Enchantment.class, "PROTECTION_PROJECTILE", "PROJECTILE_PROTECTION");
ENCHANTMENTS.put("projectileprotection", PROJECTILE_PROTECTION);
@@ -138,28 +138,28 @@ public final class Enchantments {
ENCHANTMENTS.put("silktouch", Enchantment.SILK_TOUCH);
ALIASENCHANTMENTS.put("softtouch", Enchantment.SILK_TOUCH);
ALIASENCHANTMENTS.put("st", Enchantment.SILK_TOUCH);
final Enchantment AQUA_AFFINITY = RegistryUtil.valueOf(Enchantment.class, "WATER_WORKER", "AQUA_AFFINITY");
ENCHANTMENTS.put("waterworker", AQUA_AFFINITY);
ENCHANTMENTS.put("aquaaffinity", AQUA_AFFINITY);
ALIASENCHANTMENTS.put("watermine", AQUA_AFFINITY);
ALIASENCHANTMENTS.put("ww", AQUA_AFFINITY);
final Enchantment FLAME = RegistryUtil.valueOf(Enchantment.class, "ARROW_FIRE", "FLAME");
ALIASENCHANTMENTS.put("firearrow", FLAME);
ENCHANTMENTS.put("flame", FLAME);
ENCHANTMENTS.put("flamearrow", FLAME);
ALIASENCHANTMENTS.put("af", FLAME);
final Enchantment POWER = RegistryUtil.valueOf(Enchantment.class, "ARROW_DAMAGE", "POWER");
ENCHANTMENTS.put("arrowdamage", POWER);
ENCHANTMENTS.put("power", POWER);
ALIASENCHANTMENTS.put("arrowpower", POWER);
ALIASENCHANTMENTS.put("ad", POWER);
final Enchantment PUNCH = RegistryUtil.valueOf(Enchantment.class, "ARROW_KNOCKBACK", "PUNCH");
ENCHANTMENTS.put("arrowknockback", PUNCH);
@@ -167,7 +167,7 @@ public final class Enchantments {
ENCHANTMENTS.put("punch", PUNCH);
ALIASENCHANTMENTS.put("arrowpunch", PUNCH);
ALIASENCHANTMENTS.put("ak", PUNCH);
final Enchantment INFINITY = RegistryUtil.valueOf(Enchantment.class, "ARROW_INFINITE", "INFINITY");
ALIASENCHANTMENTS.put("infinitearrows", INFINITY);
@@ -177,7 +177,7 @@ public final class Enchantments {
ALIASENCHANTMENTS.put("unlimited", INFINITY);
ALIASENCHANTMENTS.put("unlimitedarrows", INFINITY);
ALIASENCHANTMENTS.put("ai", INFINITY);
final Enchantment LUCK_OF_THE_SEA = RegistryUtil.valueOf(Enchantment.class, "LUCK", "LUCK_OF_THE_SEA");
ENCHANTMENTS.put("luck", LUCK_OF_THE_SEA);
@@ -321,6 +321,14 @@ public final class Enchantments {
} catch (final IllegalArgumentException ignored) {
}
try { // 1.21.11
final Enchantment lunge = Enchantment.getByName("LUNGE");
if (lunge != null) {
ENCHANTMENTS.put("lunge", lunge);
}
} catch (final IllegalArgumentException ignored) {
}
try {
final Class<?> namespacedKeyClass = Class.forName("org.bukkit.NamespacedKey");
final Class<?> enchantmentClass = Class.forName("org.bukkit.enchantments.Enchantment");
@@ -28,7 +28,6 @@ import com.earth2me.essentials.commands.NoChargeException;
import com.earth2me.essentials.commands.NotEnoughArgumentsException;
import com.earth2me.essentials.commands.PlayerNotFoundException;
import com.earth2me.essentials.commands.QuietAbortException;
import com.earth2me.essentials.config.EssentialsConfiguration;
import com.earth2me.essentials.economy.EconomyLayers;
import com.earth2me.essentials.economy.vault.VaultEconomyProvider;
import com.earth2me.essentials.items.AbstractItemDb;
@@ -50,6 +49,7 @@ import com.earth2me.essentials.utils.FormatUtil;
import com.earth2me.essentials.utils.VersionUtil;
import io.papermc.lib.PaperLib;
import net.ess3.api.Economy;
import com.earth2me.essentials.config.EssentialsConfiguration;
import net.ess3.api.IEssentials;
import net.ess3.api.IItemDb;
import net.ess3.api.IJails;
@@ -68,19 +68,15 @@ import net.ess3.provider.InventoryViewProvider;
import net.ess3.provider.KnownCommandsProvider;
import net.ess3.provider.PlayerLocaleProvider;
import net.ess3.provider.ProviderListener;
import net.ess3.provider.SchedulingProvider;
import net.ess3.provider.ServerStateProvider;
import net.ess3.provider.providers.BaseBannerDataProvider;
import net.ess3.provider.providers.BaseInventoryViewProvider;
import net.ess3.provider.providers.BlockMetaSpawnerItemProvider;
import net.ess3.provider.providers.BukkitMaterialTagProvider;
import net.ess3.provider.providers.BukkitSchedulingProvider;
import net.ess3.provider.providers.BukkitSpawnerBlockProvider;
import net.ess3.provider.providers.BukkitTileEntityProvider;
import net.ess3.provider.providers.BukkitWorldTileEntityCountProvider;
import net.ess3.provider.providers.FixedHeightWorldInfoProvider;
import net.ess3.provider.providers.FlatSpawnEggProvider;
import net.ess3.provider.providers.FoliaSchedulingProvider;
import net.ess3.provider.providers.LegacyBannerDataProvider;
import net.ess3.provider.providers.LegacyBiomeNameProvider;
import net.ess3.provider.providers.LegacyDamageEventProvider;
@@ -106,12 +102,10 @@ import net.ess3.provider.providers.PaperSerializationProvider;
import net.ess3.provider.providers.PaperServerStateProvider;
import net.ess3.provider.providers.PaperTickCountProvider;
import net.ess3.provider.providers.PaperTileEntityProvider;
import net.ess3.provider.providers.PaperWorldTileEntityCountProvider;
import net.ess3.provider.providers.PrehistoricPotionMetaProvider;
import net.essentialsx.api.v2.services.BalanceTop;
import net.essentialsx.api.v2.services.mail.MailService;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.block.Block;
@@ -121,7 +115,6 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.PluginCommand;
import org.bukkit.command.PluginIdentifiableCommand;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.EventHandler;
@@ -136,6 +129,8 @@ import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.ServicePriority;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
import java.util.ArrayList;
import java.util.Collection;
@@ -148,11 +143,11 @@ import java.util.Map;
import java.util.MissingResourceException;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.function.Predicate;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.Objects;
import java.util.stream.Collectors;
import static com.earth2me.essentials.I18n.tlLiteral;
import static com.earth2me.essentials.I18n.tlLocale;
@@ -329,6 +324,9 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
confList.add(jails);
execTimer.mark("Init(Jails)");
EconomyLayers.onEnable(this);
execTimer.mark("Init(EconomyLayers)");
// Spawner item provider only uses one, but it's here for legacy...
providerFactory.registerProvider(BlockMetaSpawnerItemProvider.class);
@@ -398,16 +396,10 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
// Tile Entity Provider
providerFactory.registerProvider(BukkitTileEntityProvider.class, PaperTileEntityProvider.class);
// World Tile Entity Count Provider
providerFactory.registerProvider(BukkitWorldTileEntityCountProvider.class, PaperWorldTileEntityCountProvider.class);
// Tick Count Provider
providerFactory.registerProvider(PaperTickCountProvider.class);
// Scheduling provider
providerFactory.registerProvider(FoliaSchedulingProvider.class, BukkitSchedulingProvider.class);
if (!TESTING || true) { // FIXME: The scheduling provider is necessary for tests to pass without adding checks for TESTING everywhere
if (!TESTING) {
providerFactory.finalizeRegistration();
}
@@ -428,12 +420,6 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
}
execTimer.mark("Init(Providers)");
EconomyLayers.onEnable(this);
execTimer.mark("Init(EconomyLayers)");
registerListeners(getServer().getPluginManager());
initAdventureFacet();
reload();
// The item spawn blacklist is loaded with all other settings, before the item
@@ -444,7 +430,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
alternativeCommandsHandler = new AlternativeCommandsHandler(this);
timer = new EssentialsTimer(this);
scheduleGlobalRepeatingTask(timer, 1000, 50);
scheduleSyncRepeatingTask(timer, 1000, 50);
Economy.setEss(this);
execTimer.mark("RegHandler");
@@ -497,6 +483,8 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
}
private void registerListeners(final PluginManager pm) {
HandlerList.unregisterAll(this);
if (getSettings().isDebug()) {
LOGGER.log(Level.INFO, "Registering Listeners");
}
@@ -616,6 +604,9 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
}
}
final PluginManager pm = getServer().getPluginManager();
registerListeners(pm);
initAdventureFacet();
}
@@ -848,7 +839,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
sender.sendTl("commandHelpLine2", description);
sender.sendTl("commandHelpLine3");
for (Map.Entry<String, String> usage : cmd.getUsageStrings().entrySet()) {
sender.sendTl("commandHelpLineUsage", AdventureUtil.parsed(usage.getKey().replace("<command>", commandLabel)), AdventureUtil.parsed(usage.getValue()));
sender.sendTl("commandHelpLineUsage", AdventureUtil.parsed(usage.getKey().replace("<command>", commandLabel)), AdventureUtil.parsed(sender.tl(usage.getValue())));
}
} else {
sender.sendMessage(command.getDescription());
@@ -909,6 +900,16 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
}
}
@Override
public BukkitScheduler getScheduler() {
return this.getServer().getScheduler();
}
@Override
public List<Player> getJailedPlayers() {
return getUsers().getAllUserUUIDs().stream().map(this::getUser).filter(Objects::nonNull).filter(User::isJailed).map(User::getBase).filter(Objects::nonNull).collect(Collectors.toList());
}
@Override
public IJails getJails() {
return jails;
@@ -1232,135 +1233,33 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
}
@Override
public void scheduleInitTask(Runnable runnable) {
provider(SchedulingProvider.class).registerInitTask(runnable);
public BukkitTask runTaskAsynchronously(final Runnable run) {
return this.getScheduler().runTaskAsynchronously(this, run);
}
@Override
public void runTaskAsynchronously(final Runnable run) {
provider(SchedulingProvider.class).runAsyncTask(run);
public BukkitTask runTaskLaterAsynchronously(final Runnable run, final long delay) {
return this.getScheduler().runTaskLaterAsynchronously(this, run, delay);
}
@Override
public void runTaskLaterAsynchronously(final Runnable run, final long delay) {
provider(SchedulingProvider.class).runAsyncTaskLater(run, delay);
public BukkitTask runTaskTimerAsynchronously(final Runnable run, final long delay, final long period) {
return this.getScheduler().runTaskTimerAsynchronously(this, run, delay, period);
}
@Override
public SchedulingProvider.EssentialsTask runTaskTimerAsynchronously(final Runnable run, final long delay, final long period) {
return provider(SchedulingProvider.class).runAsyncTaskRepeating(run, delay, period);
public int scheduleSyncDelayedTask(final Runnable run) {
return this.getScheduler().scheduleSyncDelayedTask(this, run);
}
@Override
public void scheduleEntityDelayedTask(Entity entity, Runnable run) {
provider(SchedulingProvider.class).runEntityTask(entity, run);
public int scheduleSyncDelayedTask(final Runnable run, final long delay) {
return this.getScheduler().scheduleSyncDelayedTask(this, run, delay);
}
@Override
public SchedulingProvider.EssentialsTask scheduleEntityDelayedTask(Entity entity, Runnable run, long delay) {
return provider(SchedulingProvider.class).runEntityTask(entity, run, delay);
}
@Override
public SchedulingProvider.EssentialsTask scheduleEntityRepeatingTask(Entity entity, Runnable run, long delay, long period) {
return provider(SchedulingProvider.class).runEntityTaskRepeating(entity, run, delay, period);
}
@Override
public void scheduleLocationDelayedTask(Location location, Runnable run) {
provider(SchedulingProvider.class).runLocationalTask(location, run);
}
@Override
public void scheduleLocationDelayedTask(Location location, Runnable run, long delay) {
provider(SchedulingProvider.class).runLocationalTask(location, run, delay);
}
@Override
public SchedulingProvider.EssentialsTask scheduleLocationRepeatingTask(Location location, Runnable run, long delay, long period) {
return provider(SchedulingProvider.class).runLocationalTaskRepeating(location, run, delay, period);
}
@Override
public void scheduleGlobalDelayedTask(Runnable run, long delay) {
provider(SchedulingProvider.class).runGlobalLocationalTask(run, delay);
}
@Override
public SchedulingProvider.EssentialsTask scheduleGlobalRepeatingTask(Runnable run, long delay, long period) {
return provider(SchedulingProvider.class).runGlobalLocationalTaskRepeating(run, delay, period);
}
@Override
public boolean isEntityThread(Entity entity) {
return provider(SchedulingProvider.class).isEntityThread(entity);
}
@Override
public boolean isRegionThread(Location location) {
return provider(SchedulingProvider.class).isRegionThread(location);
}
@Override
public boolean isGlobalThread() {
return provider(SchedulingProvider.class).isGlobalThread();
}
@Override
public void ensureEntity(Entity entity, Runnable runnable) {
if (isEntityThread(entity)) {
runnable.run();
return;
}
final CompletableFuture<Object> taskLock = new CompletableFuture<>();
scheduleEntityDelayedTask(entity, () -> {
runnable.run();
taskLock.complete(new Object());
});
try {
taskLock.get();
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
}
@Override
public void ensureRegion(Location location, Runnable runnable) {
if (isRegionThread(location)) {
runnable.run();
return;
}
final CompletableFuture<Object> taskLock = new CompletableFuture<>();
scheduleLocationDelayedTask(location, () -> {
runnable.run();
taskLock.complete(new Object());
});
try {
taskLock.get();
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
}
@Override
public void ensureGlobal(Runnable runnable) {
if (isGlobalThread()) {
runnable.run();
return;
}
final CompletableFuture<Object> taskLock = new CompletableFuture<>();
scheduleGlobalDelayedTask(() -> {
runnable.run();
taskLock.complete(new Object());
});
try {
taskLock.get();
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
public int scheduleSyncRepeatingTask(final Runnable run, final long delay, final long period) {
return this.getScheduler().scheduleSyncRepeatingTask(this, run, delay, period);
}
@Override
@@ -44,7 +44,7 @@ public class EssentialsBlockListener implements Listener {
final User user = ess.getUser(event.getPlayer());
if (user.hasUnlimited(is) && user.getBase().getGameMode() == GameMode.SURVIVAL) {
ess.scheduleEntityDelayedTask(user.getBase(), () -> {
ess.scheduleSyncDelayedTask(() -> {
if (is != null && is.getType() != null && !MaterialUtil.isAir(is.getType())) {
final ItemStack cloneIs = is.clone();
cloneIs.setAmount(1);
@@ -110,7 +110,7 @@ public class EssentialsEntityListener implements Listener {
}
}
ess.scheduleEntityDelayedTask(attacker.getBase(), new PowerToolInteractTask());
ess.scheduleSyncDelayedTask(new PowerToolInteractTask());
event.setCancelled(true);
return;
@@ -22,7 +22,6 @@ import io.papermc.paper.event.player.PlayerServerFullCheckEvent;
import net.ess3.api.IEssentials;
import net.ess3.api.events.AfkStatusChangeEvent;
import net.ess3.provider.CommandSendListenerProvider;
import net.ess3.provider.SchedulingProvider;
import net.ess3.provider.FormattedCommandAliasProvider;
import net.ess3.provider.InventoryViewProvider;
import net.ess3.provider.KnownCommandsProvider;
@@ -95,7 +94,7 @@ import static com.earth2me.essentials.I18n.tlLiteral;
public class EssentialsPlayerListener implements Listener {
private final transient IEssentials ess;
private final ConcurrentHashMap<UUID, SchedulingProvider.EssentialsTask> pendingMotdTasks = new ConcurrentHashMap<>();
private final ConcurrentHashMap<UUID, Integer> pendingMotdTasks = new ConcurrentHashMap<>();
public EssentialsPlayerListener(final IEssentials parent) {
this.ess = parent;
@@ -290,9 +289,9 @@ public class EssentialsPlayerListener implements Listener {
public void onPlayerQuit(final PlayerQuitEvent event) {
final User user = ess.getUser(event.getPlayer());
final SchedulingProvider.EssentialsTask pendingTask = pendingMotdTasks.remove(user.getUUID());
if (pendingTask != null) {
pendingTask.cancel();
final Integer pendingId = pendingMotdTasks.remove(user.getUUID());
if (pendingId != null) {
ess.getScheduler().cancelTask(pendingId);
}
if (hideJoinQuitMessages() || ess.getSettings().allowSilentJoinQuit() && user.isAuthorized("essentials.silentquit")) {
@@ -421,14 +420,19 @@ public class EssentialsPlayerListener implements Listener {
final String lastAccountName = user.getLastAccountName(); // For comparison
user.setLastAccountName(user.getBase().getName());
final boolean newUsername = lastAccountName != null && !lastAccountName.equals(user.getBase().getName());
// If the Minecraft account name changed, reset the nickname so the old one doesn't persist
if (ess.getSettings().isResetNickOnNameChange() && newUsername && user.getNickname() != null) {
user.setNickname(null);
}
user.setLastLogin(currentTime);
user.setDisplayNick();
updateCompass(user);
user.setLeavingHidden(false);
// Check for new username. If they don't want the message, let's just say it's false.
final boolean newUsername = ess.getSettings().isCustomNewUsernameMessage() && lastAccountName != null && !lastAccountName.equals(user.getBase().getName());
if (!ess.getVanishedPlayersNew().isEmpty() && !user.isAuthorized("essentials.vanish.see")) {
for (final String p : ess.getVanishedPlayersNew()) {
final Player toVanish = ess.getServer().getPlayerExact(p);
@@ -454,7 +458,7 @@ public class EssentialsPlayerListener implements Listener {
} else if (message == null || hideJoinQuitMessages()) {
effectiveMessage = null;
} else if (ess.getSettings().isCustomJoinMessage()) {
final String msg = (newUsername ? ess.getSettings().getCustomNewUsernameMessage() : ess.getSettings().getCustomJoinMessage())
final String msg = (newUsername && ess.getSettings().isCustomNewUsernameMessage() ? ess.getSettings().getCustomNewUsernameMessage() : ess.getSettings().getCustomJoinMessage())
.replace("{PLAYER}", user.getDisplayName()).replace("{USERNAME}", user.getName())
.replace("{UNIQUE}", NumberFormat.getInstance().format(ess.getUsers().getUserCount()))
.replace("{ONLINE}", NumberFormat.getInstance().format(ess.getOnlinePlayers().size()))
@@ -480,7 +484,7 @@ public class EssentialsPlayerListener implements Listener {
final int motdDelay = ess.getSettings().getMotdDelay() / 50;
final Runnable motdTask = () -> motdFlow(user);
if (motdDelay > 0) {
pendingMotdTasks.put(user.getUUID(), ess.scheduleEntityDelayedTask(user.getBase(), motdTask, motdDelay));
pendingMotdTasks.put(user.getUUID(), ess.scheduleSyncDelayedTask(motdTask, motdDelay));
} else {
motdTask.run();
}
@@ -504,12 +508,21 @@ public class EssentialsPlayerListener implements Listener {
});
}
final boolean restoreFly = user.isFlyModeEnabled() && user.isAuthorized("essentials.fly");
if (restoreFly) {
user.getBase().setAllowFlight(true);
if (ess.getSettings().isSendFlyEnableOnJoin()) {
user.sendTl("flyMode", CommonPlaceholders.enableDisable(user.getSource(), true), user.getDisplayName());
}
}
if (user.isAuthorized("essentials.fly.safelogin")) {
user.getBase().setFallDistance(0);
if (LocationUtil.shouldFly(ess, user.getLocation())) {
final boolean inWater = VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_17_R01) && user.getBase().isInWater();
if (!inWater && LocationUtil.shouldFly(ess, user.getLocation())) {
user.getBase().setAllowFlight(true);
user.getBase().setFlying(true);
if (ess.getSettings().isSendFlyEnableOnJoin()) {
if (!restoreFly && ess.getSettings().isSendFlyEnableOnJoin()) {
user.sendTl("flyMode", CommonPlaceholders.enableDisable(user.getSource(), true), user.getDisplayName());
}
}
@@ -525,6 +538,11 @@ public class EssentialsPlayerListener implements Listener {
ess.getLogger().log(Level.INFO, "Set socialspy to false for {0} because they had it enabled without permission.", user.getName());
}
if (user.isFlyModeEnabled() && !user.isAuthorized("essentials.fly")) {
user.setFlyModeEnabled(false);
ess.getLogger().log(Level.INFO, "Set fly mode to false for {0} because they had it enabled without permission.", user.getName());
}
if (user.isGodModeEnabled() && !user.isAuthorized("essentials.god")) {
user.setGodModeEnabled(false);
ess.getLogger().log(Level.INFO, "Set god mode to false for {0} because they had it enabled without permission.", user.getName());
@@ -582,7 +600,7 @@ public class EssentialsPlayerListener implements Listener {
dUser.updateActivity(false, AfkStatusChangeEvent.Cause.JOIN);
dUser.stopTransaction();
ess.scheduleEntityDelayedTask(player, () -> {
ess.scheduleSyncDelayedTask(() -> {
final User user = ess.getUser(player);
if (!user.getBase().isOnline()) {
@@ -752,7 +770,7 @@ public class EssentialsPlayerListener implements Listener {
final User user = ess.getUser(event.getPlayer());
if (user.hasUnlimited(new ItemStack(event.getBucket()))) {
event.getItemStack().setType(event.getBucket());
ess.scheduleEntityDelayedTask(user.getBase(), user.getBase()::updateInventory);
ess.scheduleSyncDelayedTask(user.getBase()::updateInventory);
}
}
@@ -795,10 +813,9 @@ public class EssentialsPlayerListener implements Listener {
final ComponentHolder base = (user.isMuted() && ess.getSettings().getSocialSpyListenMutedPlayers())
? spyer.tlComponent("socialSpyMutedPrefix")
: spyer.tlComponent("socialSpyPrefix");
final ComponentHolder nameComponent = ess.getAdventureFacet().legacyToAdventure(playerName);
final ComponentHolder messageComponent = ess.getAdventureFacet().text(": " + event.getMessage());
final ComponentHolder formatted = ess.getAdventureFacet().deserializeMiniMessage(spyer.playerTl("socialSpyCmdFormat", playerName, event.getMessage()));
spyer.sendComponent(ess.getAdventureFacet().append(base, nameComponent, messageComponent));
spyer.sendComponent(ess.getAdventureFacet().append(base, formatted));
}
}
}
@@ -1013,7 +1030,7 @@ public class EssentialsPlayerListener implements Listener {
}
}
ess.scheduleEntityDelayedTask(user.getBase(), new DelayedClickJumpTask());
ess.scheduleSyncDelayedTask(new DelayedClickJumpTask());
} catch (final Exception ex) {
if (ess.getSettings().isDebug()) {
ess.getLogger().log(Level.WARNING, ex.getMessage(), ex);
@@ -1044,7 +1061,7 @@ public class EssentialsPlayerListener implements Listener {
}
}
ess.scheduleEntityDelayedTask(user.getBase(), new PowerToolUseTask());
ess.scheduleSyncDelayedTask(new PowerToolUseTask());
}
}
@@ -1106,7 +1123,7 @@ public class EssentialsPlayerListener implements Listener {
}
if (refreshPlayer != null) {
ess.scheduleEntityDelayedTask(refreshPlayer, refreshPlayer::updateInventory, 1);
ess.scheduleSyncDelayedTask(refreshPlayer::updateInventory, 1);
}
}
@@ -1169,12 +1186,16 @@ public class EssentialsPlayerListener implements Listener {
}
if (refreshPlayer != null) {
ess.scheduleEntityDelayedTask(refreshPlayer, refreshPlayer::updateInventory, 1);
ess.scheduleSyncDelayedTask(refreshPlayer::updateInventory, 1);
}
}
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onPlayerFishEvent(final PlayerFishEvent event) {
if (!ess.getSettings().cancelAfkOnFish()) {
return;
}
final User user = ess.getUser(event.getPlayer());
user.updateActivityOnInteract(true);
}
@@ -1193,7 +1214,7 @@ public class EssentialsPlayerListener implements Listener {
final Player player = event.getPlayer();
if (player.isFlying() && player.getAllowFlight() && user.isAuthorized("essentials.fly")) {
// The gamemode change happens after the event, so we need to delay the flight enable
ess.scheduleEntityDelayedTask(player, () -> {
ess.scheduleSyncDelayedTask(() -> {
player.setAllowFlight(true);
player.setFlying(true);
}, 1);
@@ -1214,10 +1235,12 @@ public class EssentialsPlayerListener implements Listener {
public void onPlayerPickupItem(final org.bukkit.event.player.PlayerPickupItemEvent event) {
if (event.getItem().hasMetadata(Commandfireball.FIREBALL_META_KEY)) {
event.setCancelled(true);
} else if (ess.getSettings().getDisableItemPickupWhileAfk()) {
if (ess.getUser(event.getPlayer()).isAfk()) {
event.setCancelled(true);
}
return;
}
final User user = ess.getUser(event.getPlayer());
if ((ess.getSettings().getDisableItemPickupWhileAfk() && user.isAfk())
|| (user.isVanished() && !user.isAuthorizedCached("essentials.vanish.pickup"))) {
event.setCancelled(true);
}
}
}
@@ -1225,8 +1248,10 @@ public class EssentialsPlayerListener implements Listener {
private final class PickupListener1_12 implements Listener {
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onPlayerPickupItem(final org.bukkit.event.entity.EntityPickupItemEvent event) {
if (ess.getSettings().getDisableItemPickupWhileAfk() && event.getEntity() instanceof Player) {
if (ess.getUser((Player) event.getEntity()).isAfk()) {
if (event.getEntity() instanceof Player) {
final User user = ess.getUser((Player) event.getEntity());
if ((ess.getSettings().getDisableItemPickupWhileAfk() && user.isAfk())
|| (user.isVanished() && !user.isAuthorizedCached("essentials.vanish.pickup"))) {
event.setCancelled(true);
}
}
@@ -1245,6 +1270,10 @@ public class EssentialsPlayerListener implements Listener {
private final class CommandSendFilter implements CommandSendListenerProvider.Filter {
@Override
public Predicate<String> apply(Player player) {
// There is no event for op status changes, but the command list is resent when
// a player is opped/deopped, so we invalidate cached permissions here.
ess.getPermissionsHandler().invalidatePermissionCache(player.getUniqueId());
final User user = ess.getUser(player);
final Set<PluginCommand> checked = new HashSet<>();
final Set<PluginCommand> toRemove = new HashSet<>();
@@ -5,6 +5,7 @@ import org.bukkit.entity.Player;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Set;
import java.util.UUID;
import java.util.logging.Level;
@@ -12,19 +13,36 @@ import java.util.logging.Level;
public class EssentialsTimer implements Runnable {
private final transient IEssentials ess;
private final transient Set<UUID> onlineUsers = new HashSet<>(); // Field is necessary for hidden users
private static final long maxTime = 10 * 1000000;
private final LinkedList<Double> history = new LinkedList<>();
@SuppressWarnings("FieldCanBeLocal")
private final long maxTime = 10 * 1000000;
@SuppressWarnings("FieldCanBeLocal")
private final long tickInterval = 50;
private transient long lastPoll = System.nanoTime();
private int skip1 = 0;
private int skip2 = 0;
EssentialsTimer(final IEssentials ess) {
this.ess = ess;
history.add(20d);
}
@Override
public void run() {
final long startTime = System.nanoTime();
final long currentTime = System.currentTimeMillis();
long timeSpent = (startTime - lastPoll) / 1000;
if (timeSpent == 0) {
timeSpent = 1;
}
if (history.size() > 10) {
history.remove();
}
final double tps = tickInterval * 1000000.0 / timeSpent;
if (tps <= 21) {
history.add(tps);
}
lastPoll = startTime;
int count = 0;
onlineUsers.clear();
for (final Player player : ess.getOnlinePlayers()) {
@@ -81,4 +99,14 @@ public class EssentialsTimer implements Runnable {
user.resetInvulnerabilityAfterTeleport();
}
}
public double getAverageTPS() {
double avg = 0;
for (final Double f : history) {
if (f != null) {
avg += f;
}
}
return avg / history.size();
}
}
@@ -9,19 +9,18 @@ import com.earth2me.essentials.commands.PlayerNotFoundException;
import com.earth2me.essentials.perm.PermissionsHandler;
import com.earth2me.essentials.updatecheck.UpdateChecker;
import com.earth2me.essentials.userstorage.IUserMap;
import net.ess3.provider.SchedulingProvider;
import net.ess3.provider.Provider;
import net.essentialsx.api.v2.services.BalanceTop;
import net.essentialsx.api.v2.services.mail.MailService;
import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.PluginCommand;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
import java.util.Collection;
import java.util.List;
@@ -81,6 +80,10 @@ public interface IEssentials extends Plugin {
ISettings getSettings();
BukkitScheduler getScheduler();
List<Player> getJailedPlayers();
IJails getJails();
IWarps getWarps();
@@ -95,45 +98,17 @@ public interface IEssentials extends Plugin {
UpdateChecker getUpdateChecker();
void runTaskAsynchronously(Runnable run);
BukkitTask runTaskAsynchronously(Runnable run);
void runTaskLaterAsynchronously(Runnable run, long delay);
BukkitTask runTaskLaterAsynchronously(Runnable run, long delay);
SchedulingProvider.EssentialsTask runTaskTimerAsynchronously(Runnable run, long delay, long period);
BukkitTask runTaskTimerAsynchronously(Runnable run, long delay, long period);
void scheduleEntityDelayedTask(Entity entity, Runnable run);
int scheduleSyncDelayedTask(Runnable run);
SchedulingProvider.EssentialsTask scheduleEntityDelayedTask(Entity entity, Runnable run, long delay);
int scheduleSyncDelayedTask(Runnable run, long delay);
SchedulingProvider.EssentialsTask scheduleEntityRepeatingTask(Entity entity, Runnable run, long delay, long period);
void scheduleLocationDelayedTask(Location location, Runnable run);
void scheduleLocationDelayedTask(Location location, Runnable run, long delay);
SchedulingProvider.EssentialsTask scheduleLocationRepeatingTask(Location location, Runnable run, long delay, long period);
default void scheduleGlobalDelayedTask(Runnable run) {
scheduleGlobalDelayedTask(run, 1);
}
void scheduleGlobalDelayedTask(Runnable run, long delay);
SchedulingProvider.EssentialsTask scheduleGlobalRepeatingTask(Runnable run, long delay, long period);
void scheduleInitTask(Runnable runnable);
boolean isEntityThread(Entity entity);
boolean isRegionThread(Location location);
boolean isGlobalThread();
void ensureEntity(Entity entity, Runnable runnable);
void ensureRegion(Location location, Runnable runnable);
void ensureGlobal(Runnable runnable);
int scheduleSyncRepeatingTask(Runnable run, long delay, long period);
PermissionsHandler getPermissionsHandler();
@@ -94,6 +94,8 @@ public interface ISettings extends IConf {
String getNicknamePrefix();
boolean isResetNickOnNameChange();
String getOperatorColor() throws Exception;
boolean getPerWarpPermission();
@@ -221,6 +223,8 @@ public interface ISettings extends IConf {
boolean cancelAfkOnChat();
boolean cancelAfkOnFish();
boolean sleepIgnoresAfkPlayers();
boolean sleepIgnoresVanishedPlayers();
@@ -32,6 +32,8 @@ import java.util.regex.Pattern;
public interface IUser {
boolean isAuthorized(String node);
boolean isAuthorizedCached(String node);
boolean isAuthorized(IEssentialsCommand cmd);
boolean isAuthorized(IEssentialsCommand cmd, String permissionPrefix);
@@ -308,8 +308,14 @@ public class MetaItemStack {
final BookMeta meta = (BookMeta) stack.getItemMeta();
meta.setTitle(title);
stack.setItemMeta(meta);
} else if (split.length > 1 && split[0].startsWith("page") && split[0].length() > 4 && MaterialUtil.isEditableBook(stack.getType()) && hasMetaPermission(sender, "page", false, true, ess)) {
final int page = NumberUtil.isInt(split[0].substring(4)) ? (Integer.parseInt(split[0].substring(4)) - 1) : 0;
} else if (split.length > 1 && split[0].startsWith("page") && split[0].length() > 4
&& MaterialUtil.isEditableBook(stack.getType())
&& hasMetaPermission(sender, "page", false, true, ess)) {
final int page = NumberUtil.isInt(split[0].substring(4)) ? (Integer.parseInt(split[0].substring(4)) - 1)
: 0;
if (page > 100) {
throw new TranslatableException("pageLimitExceeded");
}
final BookMeta meta = (BookMeta) stack.getItemMeta();
final List<String> pages = meta.hasPages() ? new ArrayList<>(meta.getPages()) : new ArrayList<>();
final List<String> lines = new ArrayList<>();
@@ -156,7 +156,7 @@ public class RandomTeleport implements IConf {
// Prompts caching random valid locations, up to a maximum number of attempts.
public void cacheRandomLocations(final String name) {
ess.runTaskAsynchronously(() -> {
ess.getServer().getScheduler().scheduleSyncDelayedTask(ess, () -> {
for (int i = 0; i < this.getFindAttempts(); ++i) {
calculateRandomLocation(getCenter(name), getMinRange(name), getMaxRange(name)).thenAccept(location -> {
if (isValidRandomLocation(location)) {
@@ -186,6 +186,7 @@ public class RandomTeleport implements IConf {
// Calculates a random location asynchronously.
private CompletableFuture<Location> calculateRandomLocation(final Location center, final double minRange, final double maxRange) {
final CompletableFuture<Location> future = new CompletableFuture<>();
// Find an equally distributed offset by randomly rotating a point inside a rectangle about the origin
final double rectX = RANDOM.nextDouble() * (maxRange - minRange) + minRange;
final double rectZ = RANDOM.nextDouble() * (maxRange + minRange) - minRange;
@@ -213,14 +214,15 @@ public class RandomTeleport implements IConf {
360 * RANDOM.nextFloat() - 180,
0
);
return PaperLib.getChunkAtAsync(location).thenApply(chunk -> { // FIXME: use thenApplyAsync + an Executor that runs tasks on the correct region thread to be fully safe.
PaperLib.getChunkAtAsync(location).thenAccept(chunk -> {
if (World.Environment.NETHER.equals(center.getWorld().getEnvironment())) {
location.setY(getNetherYAt(location));
} else {
location.setY(center.getWorld().getHighestBlockYAt(location) + HIGHEST_BLOCK_Y_OFFSET);
}
return location;
future.complete(location);
});
return future;
}
// Returns an appropriate elevation for a given location in the nether, or MIN_VALUE if none is found
@@ -147,6 +147,7 @@ public class Settings implements net.ess3.api.ISettings {
private boolean logCommandBlockCommands;
private boolean logConsoleCommands;
private Set<Predicate<String>> nickBlacklist;
private boolean resetNickOnNameChange;
private double maxProjectileSpeed;
private boolean removeEffectsOnHeal;
private Map<String, String> worldAliases;
@@ -508,11 +509,20 @@ public class Settings implements net.ess3.api.ISettings {
return config.getString("nickname-prefix", "~");
}
private boolean _resetNickOnNameChange() {
return config.getBoolean("reset-nick-on-name-change", false);
}
@Override
public String getNicknamePrefix() {
return nicknamePrefix;
}
@Override
public boolean isResetNickOnNameChange() {
return resetNickOnNameChange;
}
@Override
public double getTeleportCooldown() {
return config.getDouble("teleport-cooldown", 0);
@@ -837,7 +847,7 @@ public class Settings implements net.ess3.api.ISettings {
if (reloadCount.get() < 2) {
// on startup: add plugins again in case they registered commands with the new API
// we need to schedule this task before any of the below tasks using _addAlternativeCommand.
ess.scheduleGlobalDelayedTask(() -> {
ess.scheduleSyncDelayedTask(() -> {
for (final Plugin plugin : ess.getServer().getPluginManager().getPlugins()) {
if (plugin.isEnabled()) {
ess.getAlternativeCommandsHandler().addPlugin(plugin);
@@ -863,7 +873,7 @@ public class Settings implements net.ess3.api.ISettings {
// This is 2 because Settings are reloaded twice in the startup lifecycle
if (reloadCount.get() < 2) {
ess.scheduleGlobalDelayedTask(() -> _addAlternativeCommand(effectiveAlias, toDisable));
ess.scheduleSyncDelayedTask(() -> _addAlternativeCommand(effectiveAlias, toDisable));
} else {
_addAlternativeCommand(effectiveAlias, toDisable);
}
@@ -878,7 +888,7 @@ public class Settings implements net.ess3.api.ISettings {
ess.getLogger().log(Level.INFO, "Syncing commands");
}
if (reloadCount.get() < 2) {
ess.scheduleGlobalDelayedTask(syncCommandsProvider::syncCommands);
ess.scheduleSyncDelayedTask(syncCommandsProvider::syncCommands);
} else {
syncCommandsProvider.syncCommands();
}
@@ -886,6 +896,7 @@ public class Settings implements net.ess3.api.ISettings {
}
nicknamePrefix = _getNicknamePrefix();
resetNickOnNameChange = _resetNickOnNameChange();
operatorColor = _getOperatorColor();
changePlayerListName = _changePlayerListName();
configDebug = _isDebug();
@@ -1320,6 +1331,11 @@ public class Settings implements net.ess3.api.ISettings {
return config.getBoolean("cancel-afk-on-chat", true);
}
@Override
public boolean cancelAfkOnFish() {
return config.getBoolean("cancel-afk-on-fish", true);
}
@Override
public boolean sleepIgnoresAfkPlayers() {
return sleepIgnoresAfkPlayers;
@@ -23,6 +23,7 @@ import net.ess3.api.events.JailStatusChangeEvent;
import net.ess3.api.events.MuteStatusChangeEvent;
import net.ess3.api.events.UserBalanceUpdateEvent;
import net.ess3.provider.PlayerLocaleProvider;
import net.essentialsx.api.v2.events.PreTransactionEvent;
import net.essentialsx.api.v2.events.TransactionEvent;
import net.essentialsx.api.v2.services.mail.MailSender;
import org.bukkit.Location;
@@ -146,6 +147,19 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
return result;
}
@Override
public boolean isAuthorizedCached(final String node) {
if (Essentials.TESTING) {
return false;
}
final boolean result = isAuthorizedCachedCheck(node);
if (ess.getSettings().isDebug()) {
ess.getLogger().log(Level.INFO, "checking if " + base.getName() + " has " + node + " (cached) - " + result);
}
return result;
}
@Override
public boolean isPermissionSet(final String node) {
if (Essentials.TESTING) {
@@ -185,6 +199,24 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
}
}
private boolean isAuthorizedCachedCheck(final String node) {
if (base instanceof OfflinePlayerStub) {
return false;
}
try {
return ess.getPermissionsHandler().hasPermissionCached(base, node);
} catch (final Exception ex) {
if (ess.getSettings().isDebug()) {
ess.getLogger().log(Level.SEVERE, "Permission System Error: " + ess.getPermissionsHandler().getName() + " returned: " + ex.getMessage(), ex);
} else {
ess.getLogger().log(Level.SEVERE, "Permission System Error: " + ess.getPermissionsHandler().getName() + " returned: " + ex.getMessage());
}
return false;
}
}
private boolean isPermSetCheck(final String node) {
if (base instanceof OfflinePlayerStub) {
return false;
@@ -263,12 +295,20 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
payUser(reciever, value, UserBalanceUpdateEvent.Cause.UNKNOWN);
}
public void payUser(final User reciever, final BigDecimal value, final UserBalanceUpdateEvent.Cause cause) throws Exception {
public void payUser(final User reciever, BigDecimal value, final UserBalanceUpdateEvent.Cause cause) throws Exception {
if (value.compareTo(BigDecimal.ZERO) < 1) {
throw new Exception(tlLocale(playerLocale, "payMustBePositive"));
}
if (canAfford(value)) {
// Call an event for pre-transaction
final PreTransactionEvent preTransactionEvent = new PreTransactionEvent(this.getSource(), reciever, value);
ess.getServer().getPluginManager().callEvent(preTransactionEvent);
if (preTransactionEvent.isCancelled()) {
return;
}
value = preTransactionEvent.getAmount();
setMoney(getMoney().subtract(value), cause);
reciever.setMoney(reciever.getMoney().add(value), cause);
sendTl("moneySentTo", AdventureUtil.parsed(NumberUtil.displayCurrency(value, ess)), reciever.getDisplayName());
@@ -821,7 +861,7 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
public void updateActivityOnChat(final boolean broadcast) {
if (ess.getSettings().cancelAfkOnChat()) {
//Chat happens async, make sure we have a sync context
ess.scheduleEntityDelayedTask(base, () -> updateActivity(broadcast, AfkStatusChangeEvent.Cause.CHAT));
ess.scheduleSyncDelayedTask(() -> updateActivity(broadcast, AfkStatusChangeEvent.Cause.CHAT));
}
}
@@ -847,7 +887,7 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
for (final User user : ess.getOnlineUsers()) {
if (user.isAuthorized("essentials.kick.notify")) {
user.sendTl("playerKicked", Console.DISPLAY_NAME, getName(), user.playerTl("autoAfkKickReason", kickTime));
user.sendTl("playerKicked", Console.displayName(), getName(), user.playerTl("autoAfkKickReason", kickTime));
}
}
} else {
@@ -863,7 +903,7 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
}
}
final long autoafk = ess.getSettings().getAutoAfk();
if (!isAfk() && autoafk > 0 && lastActivity + autoafk * 1000 < System.currentTimeMillis() && isAuthorized("essentials.afk.auto")) {
if (!isAfk() && autoafk > 0 && lastActivity + autoafk * 1000 < System.currentTimeMillis() && isAuthorizedCached("essentials.afk.auto")) {
setAfk(true, AfkStatusChangeEvent.Cause.ACTIVITY);
if (isAfk() && !isHidden()) {
setDisplayNick();
@@ -469,6 +469,15 @@ public abstract class UserData extends PlayerExtension implements IConf {
config.save();
}
public boolean isFlyModeEnabled() {
return holder.flyMode();
}
public void setFlyModeEnabled(final boolean set) {
holder.flyMode(set);
config.save();
}
public boolean getMuted() {
return holder.muted();
}
@@ -21,17 +21,18 @@ import java.util.Locale;
public class SpigotAdventureFacet implements AdventureFacet {
private static final LegacyComponentSerializer LEGACY_SERIALIZER;
private static final LegacyComponentSerializer LEGACY_SERIALIZER_URLS;
private static final MiniMessage MINI_MESSAGE_NO_TAGS;
static {
final LegacyComponentSerializer.Builder builder = LegacyComponentSerializer.builder()
.flattener(ComponentFlattener.basic())
.extractUrls(AbstractChatEvent.URL_PATTERN)
.useUnusualXRepeatedCharacterHexFormat();
if (VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_16_1_R01)) {
builder.hexColors();
}
LEGACY_SERIALIZER = builder.build();
LEGACY_SERIALIZER_URLS = builder.extractUrls(AbstractChatEvent.URL_PATTERN).build();
MINI_MESSAGE_NO_TAGS = MiniMessage.builder().strict(true).build();
}
@@ -127,6 +128,11 @@ public class SpigotAdventureFacet implements AdventureFacet {
return miniMessageInstance.stripTags(input);
}
@Override
public String legacyToMiniWithUrls(String message) {
return miniMessageInstance.serialize(LEGACY_SERIALIZER_URLS.deserialize(message));
}
@Override
public String escapeTags(String input) {
return miniMessageInstance.escapeTags(input);
@@ -323,7 +323,13 @@ public class Economy {
throw new IllegalArgumentException("Economy user cannot be null");
}
final BigDecimal result = getMoneyExact(user).add(amount, MATH_CONTEXT);
setMoney(user, result);
// Deposits (positive amounts) always improve the balance, so minMoney and
// loan checks don't apply — they exist to prevent the balance from dropping.
if (amount.signum() <= 0) {
setMoney(user, result);
} else {
user.setMoney(result, UserBalanceUpdateEvent.Cause.API);
}
Trade.log("API", "Add", "API", user.getName(), new Trade(amount, ess), null, null, null, result, ess);
}
@@ -44,7 +44,7 @@ public class Commandbalancetop extends EssentialsCommand {
new TextPager(cache).showPage(Integer.toString(page), null, "balancetop", sender);
};
if (sender.getSender() instanceof BlockCommandSender) {
ess.scheduleGlobalDelayedTask(runnable);
ess.scheduleSyncDelayedTask(runnable);
} else {
runnable.run();
}
@@ -42,7 +42,7 @@ public class Commandban extends EssentialsCommand {
}
final String senderName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.NAME;
final String senderDisplayName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.DISPLAY_NAME;
final String senderDisplayName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.displayName();
final String banReason;
if (args.length > 1) {
banReason = FormatUtil.replaceFormat(getFinalArg(args, 1).replace("\\n", "\n").replace("|", "\n"));
@@ -26,7 +26,7 @@ public class Commandbanip extends EssentialsCommand {
}
final String senderName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.NAME;
final String senderDisplayName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.DISPLAY_NAME;
final String senderDisplayName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.displayName();
String ipAddress;
if (FormatUtil.validIP(args[0])) {
@@ -23,7 +23,7 @@ public class Commandbeezooka extends EssentialsCommand {
final Entity bee = Mob.BEE.spawn(user.getWorld(), server, user.getBase().getEyeLocation());
bee.setVelocity(user.getBase().getEyeLocation().getDirection().multiply(2));
ess.scheduleEntityDelayedTask(bee, () -> {
ess.scheduleSyncDelayedTask(() -> {
final Location loc = bee.getLocation();
bee.remove();
loc.getWorld().createExplosion(loc, 0F);
@@ -1,6 +1,7 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.adventure.AdventureUtil;
import com.earth2me.essentials.utils.FormatUtil;
import org.bukkit.Server;
@@ -15,6 +16,9 @@ public class Commandbroadcast extends EssentialsCommand {
throw new NotEnoughArgumentsException();
}
ess.broadcastTl("broadcast", FormatUtil.replaceFormat(getFinalArg(args, 0)).replace("\\n", "\n"), sender.getDisplayName());
final String message = FormatUtil.replaceFormat(getFinalArg(args, 0)).replace("\\n", "\n");
ess.broadcastTl("broadcast",
AdventureUtil.parsed(ess.getAdventureFacet().legacyToMiniWithUrls(ess.getAdventureFacet().escapeTags(message))),
sender.getDisplayName());
}
}
@@ -54,7 +54,11 @@ public class Commandbroadcastworld extends EssentialsCommand {
if (message.isEmpty()) {
throw new NotEnoughArgumentsException();
}
ess.broadcastTl(null, u -> !u.getBase().getWorld().equals(world), true, "broadcast", FormatUtil.replaceFormat(message).replace("\\n", "\n"), AdventureUtil.parsed(ess.getAdventureFacet().legacyToMini(name)));
final String formatted = FormatUtil.replaceFormat(message).replace("\\n", "\n");
ess.broadcastTl(null, u -> !u.getBase().getWorld().equals(world), true, "broadcast",
AdventureUtil.parsed(
ess.getAdventureFacet().legacyToMiniWithUrls(ess.getAdventureFacet().escapeTags(formatted))),
AdventureUtil.parsed(ess.getAdventureFacet().legacyToMini(name)));
}
@Override
@@ -19,8 +19,12 @@ public class Commandburn extends EssentialsCommand {
}
final User user = getPlayer(server, sender, args, 0);
user.getBase().setFireTicks(Integer.parseInt(args[1]) * 20);
sender.sendTl("burnMsg", user.getDisplayName(), Integer.parseInt(args[1]));
final int seconds = Integer.parseInt(args[1]);
final int fireTicks = (int) Math.max(0L, Math.min((long) seconds * 20, Integer.MAX_VALUE));
user.getBase().setFireTicks(fireTicks);
sender.sendTl("burnMsg", user.getDisplayName(), Math.max(0, seconds));
}
@Override
@@ -9,6 +9,7 @@ import com.google.common.collect.Lists;
import net.ess3.api.MaxMoneyException;
import net.ess3.api.TranslatableException;
import net.ess3.api.events.UserBalanceUpdateEvent;
import net.ess3.provider.PlayerLocaleProvider;
import org.bukkit.Server;
import java.math.BigDecimal;
@@ -34,7 +35,14 @@ public class Commandeco extends EssentialsLoopCommand {
try {
cmd = EcoCommands.valueOf(args[0].toUpperCase(Locale.ENGLISH));
isPercent = cmd != EcoCommands.RESET && args[2].endsWith("%");
amount = (cmd == EcoCommands.RESET) ? ess.getSettings().getStartingBalance() : new BigDecimal(args[2].replaceAll("[^0-9\\.]", ""));
if (cmd == EcoCommands.RESET) {
amount = ess.getSettings().getStartingBalance();
} else if (sender.isPlayer() && ess.getSettings().isPerPlayerLocale()) {
final String playerLocale = ess.provider(PlayerLocaleProvider.class).getLocale(sender.getPlayer());
amount = NumberUtil.parseStringToBDecimal(args[2], ess.getUser(sender.getPlayer()).getPlayerLocale(playerLocale));
} else {
amount = NumberUtil.parseStringToBDecimal(args[2]);
}
} catch (final Exception ex) {
throw new NotEnoughArgumentsException(ex);
}
@@ -8,6 +8,7 @@ import com.earth2me.essentials.commands.essentials.HomesCommand;
import com.earth2me.essentials.commands.essentials.ItemTestCommand;
import com.earth2me.essentials.commands.essentials.MooCommand;
import com.earth2me.essentials.commands.essentials.NyanCommand;
import com.earth2me.essentials.commands.essentials.ReloadCommand;
import com.earth2me.essentials.commands.essentials.UsermapCommand;
import com.earth2me.essentials.commands.essentials.VersionCommand;
@@ -19,6 +20,7 @@ public class Commandessentials extends EssentialsTreeCommand {
registerNode(new DebugCommand());
registerNode(new CommandMapCommand());
registerNode(new DumpCommand());
registerNode(new ReloadCommand());
registerNode(new CleanupCommand());
registerNode(new HomesCommand());
registerNode(new UsermapCommand());
@@ -34,6 +34,8 @@ public class Commandfly extends EssentialsToggleCommand {
user.getBase().setFallDistance(0f);
user.getBase().setAllowFlight(enabled);
user.setFlyModeEnabled(enabled);
if (!user.getBase().getAllowFlight()) {
user.getBase().setFlying(false);
}
@@ -3,13 +3,15 @@ package com.earth2me.essentials.commands;
import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.utils.DateUtil;
import com.earth2me.essentials.utils.NumberUtil;
import net.ess3.provider.WorldTileEntityCountProvider;
import net.ess3.provider.TileEntityProvider;
import org.bukkit.ChatColor;
import org.bukkit.Chunk;
import org.bukkit.Server;
import org.bukkit.World;
import java.lang.management.ManagementFactory;
import java.util.List;
import java.util.logging.Level;
public class Commandgc extends EssentialsCommand {
public Commandgc() {
@@ -18,7 +20,7 @@ public class Commandgc extends EssentialsCommand {
@Override
protected void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception {
final double tps = 20d; //TODO
final double tps = ess.getTimer().getAverageTPS();
final ChatColor color;
if (tps >= 18.0) {
color = ChatColor.GREEN;
@@ -35,7 +37,7 @@ public class Commandgc extends EssentialsCommand {
sender.sendTl("gcfree", Runtime.getRuntime().freeMemory() / 1024 / 1024);
final List<World> worlds = server.getWorlds();
final WorldTileEntityCountProvider worldTileEntityCountProvider = ess.provider(WorldTileEntityCountProvider.class);
final TileEntityProvider tileEntityProvider = ess.provider(TileEntityProvider.class);
for (final World w : worlds) {
String worldType = "World";
switch (w.getEnvironment()) {
@@ -47,7 +49,15 @@ public class Commandgc extends EssentialsCommand {
break;
}
final int tileEntities = worldTileEntityCountProvider.getTileEntityCount(w);
int tileEntities = 0;
try {
for (final Chunk chunk : w.getLoadedChunks()) {
tileEntities += tileEntityProvider.getTileEntities(chunk).length;
}
} catch (final java.lang.ClassCastException ex) {
ess.getLogger().log(Level.SEVERE, "Corrupted chunk data on world " + w, ex);
}
sender.sendTl("gcWorld", worldType, w.getName(), w.getLoadedChunks().length, w.getEntities().size(), tileEntities);
}
@@ -54,7 +54,7 @@ public class Commandhelp extends EssentialsCommand {
user.sendTl("commandHelpLine3");
if (essCommand != null && !essCommand.getUsageStrings().isEmpty()) {
for (Map.Entry<String, String> usage : essCommand.getUsageStrings().entrySet()) {
user.sendTl("commandHelpLineUsage", AdventureUtil.parsed(usage.getKey().replace("<command>", cmd)), AdventureUtil.parsed(usage.getValue()));
user.sendTl("commandHelpLineUsage", AdventureUtil.parsed(usage.getKey().replace("<command>", cmd)), AdventureUtil.parsed(user.playerTl(usage.getValue())));
}
} else {
user.sendMessage(bukkit.getUsage());
@@ -41,7 +41,10 @@ public class Commandhome extends EssentialsCommand {
}
}
try {
if ("bed".equalsIgnoreCase(homeName) && user.isAuthorized("essentials.home.bed")) {
if ("bed".equalsIgnoreCase(homeName)) {
if (!user.isAuthorized("essentials.home.bed")) {
throw new TranslatableException("noAccessCommand");
}
if (!player.getBase().isOnline() || player.getBase() instanceof OfflinePlayerStub) {
throw new TranslatableException("bedOffline");
}
@@ -73,10 +76,15 @@ public class Commandhome extends EssentialsCommand {
final List<String> homes = finalPlayer.getHomes();
if (homes.isEmpty() && finalPlayer.equals(user)) {
if (ess.getSettings().isSpawnIfNoHome()) {
final UserTeleportHomeEvent event = new UserTeleportHomeEvent(user, null, bed != null ? bed : finalPlayer.getWorld().getSpawnLocation(), bed != null ? UserTeleportHomeEvent.HomeType.BED : UserTeleportHomeEvent.HomeType.SPAWN);
final boolean useBed = bed != null && user.isAuthorized("essentials.home.bed");
final UserTeleportHomeEvent event = new UserTeleportHomeEvent(user, null, useBed ? bed : finalPlayer.getWorld().getSpawnLocation(), useBed ? UserTeleportHomeEvent.HomeType.BED : UserTeleportHomeEvent.HomeType.SPAWN);
server.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
user.getAsyncTeleport().respawn(charge, TeleportCause.COMMAND, getNewExceptionFuture(user.getSource(), commandLabel));
if (useBed) {
user.getAsyncTeleport().respawn(charge, TeleportCause.COMMAND, getNewExceptionFuture(user.getSource(), commandLabel));
} else {
user.getAsyncTeleport().teleport(finalPlayer.getWorld().getSpawnLocation(), charge, TeleportCause.COMMAND, getNewExceptionFuture(user.getSource(), commandLabel));
}
}
} else {
showError(user.getBase(), new TranslatableException("noHomeSetPlayer"), commandLabel);
@@ -0,0 +1,23 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.utils.StringUtil;
import org.bukkit.Server;
import org.bukkit.entity.Player;
import java.util.stream.Collectors;
public class Commandjailedplayers extends EssentialsCommand {
public Commandjailedplayers() {
super("jailedplayers");
}
@Override
protected void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception {
if (ess.getJailedPlayers() != null && !ess.getJailedPlayers().isEmpty()) {
sender.sendTl("jailedPlayersList", StringUtil.joinList(", ", ess.getJailedPlayers().stream().map(Player::getName).collect(Collectors.toList())));
} else {
sender.sendTl("jailedPlayersEmpty");
}
}
}
@@ -50,7 +50,7 @@ public class Commandkick extends EssentialsCommand {
kickReason = event.getReason();
target.getBase().kickPlayer(kickReason);
final String senderDisplayName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.DISPLAY_NAME;
final String senderDisplayName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.displayName();
final String tlKey = "playerKicked";
final Object[] objects = {senderDisplayName, target.getName(), kickReason};
@@ -32,15 +32,13 @@ public class Commandkill extends EssentialsLoopCommand {
}
final DamageEventProvider provider = ess.provider(DamageEventProvider.class);
ess.scheduleEntityDelayedTask(matchPlayer, () -> {
final EntityDamageEvent ede = provider.callDamageEvent(matchPlayer, sender.isPlayer() && sender.getPlayer().getName().equals(matchPlayer.getName()) ? EntityDamageEvent.DamageCause.SUICIDE : EntityDamageEvent.DamageCause.CUSTOM, Float.MAX_VALUE);
if (ede.isCancelled() && sender.isPlayer() && !ess.getUser(sender.getPlayer()).isAuthorized("essentials.kill.force")) {
return;
}
ede.getEntity().setLastDamageCause(ede);
matchPlayer.setHealth(0);
sender.sendTl("kill", matchPlayer.getDisplayName());
});
final EntityDamageEvent ede = provider.callDamageEvent(matchPlayer, sender.isPlayer() && sender.getPlayer().getName().equals(matchPlayer.getName()) ? EntityDamageEvent.DamageCause.SUICIDE : EntityDamageEvent.DamageCause.CUSTOM, Float.MAX_VALUE);
if (ede.isCancelled() && sender.isPlayer() && !ess.getUser(sender.getPlayer()).isAuthorized("essentials.kill.force")) {
return;
}
ede.getEntity().setLastDamageCause(ede);
matchPlayer.setHealth(0);
sender.sendTl("kill", matchPlayer.getDisplayName());
}
@Override
@@ -49,7 +49,7 @@ public class Commandkittycannon extends EssentialsCommand {
@Override
protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
final Entity ocelot = Mob.CAT.getType() == null ? spawnOcelot(server, user) : spawnCat(server, user);
ess.scheduleEntityDelayedTask(ocelot, () -> {
ess.scheduleSyncDelayedTask(() -> {
final Location loc = ocelot.getLocation();
ocelot.remove();
loc.getWorld().createExplosion(loc, 0F);
@@ -33,17 +33,15 @@ public class Commandlightning extends EssentialsLoopCommand {
}
final int finalPower = power;
loopOnlinePlayersConsumer(server, sender, false, true, args[0], player -> {
ess.scheduleEntityDelayedTask(player.getBase(), () -> {
sender.sendTl("lightningUse", player.getDisplayName());
final LightningStrike strike = player.getBase().getWorld().strikeLightningEffect(player.getBase().getLocation());
sender.sendTl("lightningUse", player.getDisplayName());
final LightningStrike strike = player.getBase().getWorld().strikeLightningEffect(player.getBase().getLocation());
if (!player.isGodModeEnabled()) {
player.getBase().damage(finalPower, strike);
}
if (ess.getSettings().warnOnSmite()) {
player.sendTl("lightningSmited");
}
});
if (!player.isGodModeEnabled()) {
player.getBase().damage(finalPower, strike);
}
if (ess.getSettings().warnOnSmite()) {
player.sendTl("lightningSmited");
}
});
loopOnlinePlayers(server, sender, true, true, args[0], null);
}
@@ -36,11 +36,13 @@ public class Commandmore extends EssentialsCommand {
if (!NumberUtil.isPositiveInt(args[0])) {
throw new TranslatableException("nonZeroPosNumber");
}
newStackSize += Integer.parseInt(args[0]);
if (newStackSize > (canOversized ? ess.getSettings().getOversizedStackSize() : stack.getMaxStackSize())) {
user.sendTl(canOversized ? "fullStackDefaultOversize" : "fullStackDefault", canOversized ? ess.getSettings().getOversizedStackSize() : stack.getMaxStackSize());
newStackSize = canOversized ? ess.getSettings().getOversizedStackSize() : stack.getMaxStackSize();
final int cap = canOversized ? ess.getSettings().getOversizedStackSize() : stack.getMaxStackSize();
final long newSizeLong = (long) stack.getAmount() + Integer.parseInt(args[0]);
if (newSizeLong > cap) {
user.sendTl(canOversized ? "fullStackDefaultOversize" : "fullStackDefault", cap);
newStackSize = cap;
} else {
newStackSize = (int) newSizeLong;
}
} else if (canOversized) {
newStackSize = ess.getSettings().getOversizedStackSize();
@@ -40,7 +40,7 @@ public class Commandmsg extends EssentialsLoopCommand {
}
// Sending messages to console
if (args[0].equalsIgnoreCase(Console.NAME) || args[0].equalsIgnoreCase(Console.DISPLAY_NAME)) {
if (args[0].equalsIgnoreCase(Console.NAME) || args[0].equalsIgnoreCase(Console.displayName())) {
final IMessageRecipient messageSender = sender.isPlayer() ? ess.getUser(sender.getPlayer()) : Console.getInstance();
messageSender.sendMessage(Console.getInstance(), message);
return;
@@ -21,6 +21,7 @@ public class Commandmute extends EssentialsCommand {
@Override
public void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception {
final boolean isUnmute = commandLabel.toLowerCase(java.util.Locale.ENGLISH).contains("unmute");
boolean nomatch = false;
if (args.length < 1) {
throw new NotEnoughArgumentsException();
@@ -32,11 +33,17 @@ public class Commandmute extends EssentialsCommand {
nomatch = true;
user = ess.getUser(new OfflinePlayerStub(args[0], ess.getServer()));
}
if (isUnmute && !user.getMuted()) {
sender.sendTl("playerNotMuted", user.getDisplayName());
return;
}
if (!user.getBase().isOnline() && sender.isPlayer()) {
if (!sender.isAuthorized("essentials.mute.offline")) {
throw new TranslatableException("muteExemptOffline");
}
} else if (user.isAuthorized("essentials.mute.exempt")) {
} else if (!isUnmute && user.isAuthorized("essentials.mute.exempt")) {
throw new TranslatableException("muteExempt");
}
@@ -44,7 +51,7 @@ public class Commandmute extends EssentialsCommand {
final String time;
String muteReason = null;
if (args.length > 1) {
if (!isUnmute && args.length > 1) {
time = args[1];
try {
muteTimestamp = DateUtil.parseDateDiff(time, true);
@@ -59,7 +66,7 @@ public class Commandmute extends EssentialsCommand {
}
}
final boolean willMute = (args.length > 1) || !user.getMuted();
final boolean willMute = !isUnmute && ((args.length > 1) || !user.getMuted());
final User controller = sender.isPlayer() ? ess.getUser(sender.getPlayer()) : null;
final MuteStatusChangeEvent event = new MuteStatusChangeEvent(user, controller, willMute, muteTimestamp, muteReason);
ess.getServer().getPluginManager().callEvent(event);
@@ -121,6 +128,8 @@ public class Commandmute extends EssentialsCommand {
} else {
sender.sendTl("unmutedPlayer", user.getDisplayName());
user.sendTl("playerUnmuted");
ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("unmuteNotify", sender.getSender().getName(), user.getName())));
ess.broadcastTl(null, "essentials.mute.notify", "unmuteNotify", new Object[]{sender.getSender().getName(), user.getName()});
}
}
}
@@ -35,20 +35,17 @@ public class Commandnuke extends EssentialsCommand {
if (user == null) {
continue;
}
ess.scheduleEntityDelayedTask(user.getBase(), () -> {
user.sendTl("nuke");
final Location loc = user.getLocation();
final World world = loc.getWorld();
if (world != null) {
for (int x = -10; x <= 10; x += 5) {
for (int z = -10; z <= 10; z += 5) {
final TNTPrimed entity = world.spawn(new Location(world, loc.getBlockX() + x, world.getHighestBlockYAt(loc) + 64, loc.getBlockZ() + z), TNTPrimed.class);
entity.setMetadata(NUKE_META_KEY, new FixedMetadataValue(ess, true));
}
user.sendTl("nuke");
final Location loc = user.getLocation();
final World world = loc.getWorld();
if (world != null) {
for (int x = -10; x <= 10; x += 5) {
for (int z = -10; z <= 10; z += 5) {
final TNTPrimed entity = world.spawn(new Location(world, loc.getBlockX() + x, world.getHighestBlockYAt(loc) + 64, loc.getBlockZ() + z), TNTPrimed.class);
entity.setMetadata(NUKE_META_KEY, new FixedMetadataValue(ess, true));
}
}
});
}
}
}
@@ -13,8 +13,10 @@ import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.Server;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.FurnaceRecipe;
import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.Recipe;
import org.bukkit.inventory.RecipeChoice;
@@ -158,7 +160,13 @@ public class Commandrecipe extends EssentialsCommand {
final User user = ess.getUser(sender.getPlayer());
user.getBase().closeInventory();
user.setRecipeSee(true);
final InventoryView view = user.getBase().openWorkbench(null, true);
final InventoryView view = openWorkbench(user);
if (view == null) {
user.setRecipeSee(false);
return;
}
final Inventory topInventory = ess.provider(InventoryViewProvider.class).getTopInventory(view);
final String[] recipeShape = recipe.getShape();
final Map<Character, ItemStack> ingredientMap = recipe.getIngredientMap();
for (int j = 0; j < recipeShape.length; j++) {
@@ -170,7 +178,7 @@ public class Commandrecipe extends EssentialsCommand {
if (VersionUtil.PRE_FLATTENING && item.getDurability() == Short.MAX_VALUE) {
item.setDurability((short) 0);
}
ess.provider(InventoryViewProvider.class).getTopInventory(view).setItem(j * 3 + k + 1, item);
topInventory.setItem(j * 3 + k + 1, item);
}
}
} else {
@@ -217,7 +225,11 @@ public class Commandrecipe extends EssentialsCommand {
final User user = ess.getUser(sender.getPlayer());
user.getBase().closeInventory();
user.setRecipeSee(true);
final InventoryView view = user.getBase().openWorkbench(null, true);
final InventoryView view = openWorkbench(user);
if (view == null) {
user.setRecipeSee(false);
return;
}
for (int i = 0; i < ingredients.size(); i++) {
final ItemStack item = ingredients.get(i);
if (VersionUtil.PRE_FLATTENING && item.getDurability() == Short.MAX_VALUE) {
@@ -239,6 +251,17 @@ public class Commandrecipe extends EssentialsCommand {
}
}
private InventoryView openWorkbench(final User user) {
final InventoryView view = user.getBase().openWorkbench(null, true);
// If InventoryOpenEvent is canceled, the items can end up in the player's own crafting grid
// which allows players to extract counterfeit items.
if (view == null)
return null;
final Inventory inventory = ess.provider(InventoryViewProvider.class).getTopInventory(view);
return inventory.getType() == InventoryType.WORKBENCH ? view : null;
}
public String getMaterialName(final CommandSource sender, final ItemStack stack) {
if (stack == null) {
return sender.tl("recipeNothing");
@@ -61,7 +61,7 @@ public class Commandseen extends EssentialsCommand {
return;
}
}
ess.runTaskAsynchronously(new Runnable() {
ess.getScheduler().runTaskAsynchronously(ess, new Runnable() {
@Override
public void run() {
final User userFromBukkit = ess.getUsers().getUser(args[0]);
@@ -25,6 +25,10 @@ public class Commandsetwarp extends EssentialsCommand {
throw new TranslatableException("invalidWarpName");
}
if (StringUtil.isReservedFileName(args[0])) {
throw new TranslatableException("invalidWarpName");
}
final IWarps warps = ess.getWarps();
Location warpLoc = null;
@@ -159,7 +159,7 @@ public class Commandskull extends EssentialsCommand {
final String shortNameFinal = shortOwnerName;
ess.scheduleEntityDelayedTask(user.getBase(), () -> {
ess.scheduleSyncDelayedTask(() -> {
stack.setItemMeta(skullMeta);
if (spawn) {
Inventories.addItem(receive.getBase(), stack);
@@ -37,7 +37,8 @@ public class Commandspeed extends EssentialsCommand {
final float speed;
final boolean isBypass = user.isAuthorized("essentials.speed.bypass");
if (args.length == 1) {
isFly = flyPermCheck(user, user.getBase().isFlying());
final boolean inferredFly = isFlyAlias(commandLabel) ? true : isWalkAlias(commandLabel) ? false : user.getBase().isFlying();
isFly = flyPermCheck(user, inferredFly);
speed = getMoveSpeed(args[0]);
} else {
isFly = flyPermCheck(user, isFlyMode(args[0]));
@@ -91,6 +92,14 @@ public class Commandspeed extends EssentialsCommand {
} else return !canWalk;
}
private boolean isFlyAlias(final String label) {
return label.contains("fly") || label.equalsIgnoreCase("fspeed") || label.equalsIgnoreCase("efspeed");
}
private boolean isWalkAlias(final String label) {
return label.contains("walk") || label.equalsIgnoreCase("wspeed") || label.equalsIgnoreCase("ewspeed");
}
private boolean isFlyMode(final String modeString) throws NotEnoughArgumentsException {
final boolean isFlyMode;
if (modeString.contains("fly") || modeString.equalsIgnoreCase("f")) {
@@ -53,7 +53,7 @@ public class Commandsudo extends EssentialsLoopCommand {
}
}
ess.scheduleEntityDelayedTask(user.getBase(), new SudoCommandTask());
ess.scheduleSyncDelayedTask(new SudoCommandTask());
}
}
}
@@ -49,7 +49,7 @@ public class Commandtempban extends EssentialsCommand {
}
final String senderName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.NAME;
final String senderDisplayName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.DISPLAY_NAME;
final String senderDisplayName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.displayName();
ess.getServer().getBanList(BanList.Type.NAME).addBan(user.getName(), banReason, new Date(banTimestamp), senderName);
final String expiry = DateUtil.formatDateDiff(banTimestamp);
@@ -28,7 +28,7 @@ public class Commandtempbanip extends EssentialsCommand {
}
final String senderName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.NAME;
final String senderDisplayName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.DISPLAY_NAME;
final String senderDisplayName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.displayName();
String ipAddress;
if (FormatUtil.validIP(args[0])) {
@@ -1,6 +1,7 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.User;
import com.earth2me.essentials.utils.CommonPlaceholders;
import com.google.common.collect.Lists;
import org.bukkit.Server;
import org.bukkit.World;
@@ -21,17 +22,16 @@ public class Commandthunder extends EssentialsCommand {
final World world = user.getWorld();
final boolean setThunder = args[0].equalsIgnoreCase("true");
if (args.length == 1) {
ess.scheduleGlobalDelayedTask(() -> world.setThundering(setThunder));
user.sendTl("thunder", setThunder ? user.playerTl("enabled") : user.playerTl("disabled"));
world.setThundering(setThunder);
user.sendTl("thunder", CommonPlaceholders.enableDisable(user.getSource(), setThunder));
return;
}
ess.scheduleGlobalDelayedTask(() -> {
world.setThundering(setThunder);
world.setThunderDuration(Integer.parseInt(args[1]) * 20);
});
user.sendTl("thunderDuration", setThunder ? user.playerTl("enabled") : user.playerTl("disabled"), Integer.parseInt(args[1]));
world.setThundering(setThunder);
world.setThunderDuration(Integer.parseInt(args[1]) * 20);
user.sendTl("thunderDuration", CommonPlaceholders.enableDisable(user.getSource(), setThunder), Integer.parseInt(args[1]));
}
@Override
@@ -8,14 +8,17 @@ import com.google.common.collect.Lists;
import net.ess3.api.TranslatableException;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.entity.Player;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.StringJoiner;
import java.util.TreeSet;
@@ -81,16 +84,28 @@ public class Commandtime extends EssentialsCommand {
}
final StringJoiner joiner = new StringJoiner(", ");
final boolean timeAdd = add;
for (final World world : worlds) {
joiner.add(world.getName());
ess.scheduleGlobalDelayedTask(() -> {
long time = world.getTime();
if (!timeAdd) {
time -= time % 24000;
// Capture intended visible time for players with relative ptime before world time changes
final Map<Player, Long> ptimePlayers = new HashMap<>();
for (final Player player : world.getPlayers()) {
if (player.getPlayerTimeOffset() != 0 && player.isPlayerTimeRelative()) {
ptimePlayers.put(player, player.getPlayerTime());
}
world.setTime(time + (timeAdd ? 0 : 24000) + timeTick);
});
}
long time = world.getTime();
if (!add) {
time -= time % 24000;
}
world.setTime(time + (add ? 0 : 24000) + timeTick);
// Re-apply ptime offsets so players maintain their intended visible time
final long newWorldTime = world.getTime();
for (final Map.Entry<Player, Long> entry : ptimePlayers.entrySet()) {
entry.getKey().setPlayerTime(entry.getValue() - newWorldTime, true);
}
joiner.add(world.getName());
}
sender.sendTl(add ? "timeWorldAdd" : "timeWorldSet", DescParseTickFormat.formatTicks(timeTick), joiner.toString());
@@ -120,7 +120,7 @@ public class Commandtp extends EssentialsCommand {
final User target = getPlayer(server, args, 0, true, false);
if (args.length == 2) {
final User toPlayer = getPlayer(server, args, 1, true, false);
target.sendTl("teleportAtoB", Console.DISPLAY_NAME, toPlayer.getDisplayName());
target.sendTl("teleportAtoB", Console.displayName(), toPlayer.getDisplayName());
target.getAsyncTeleport().now(toPlayer.getBase(), false, TeleportCause.COMMAND, getNewExceptionFuture(sender, commandLabel));
} else if (args.length > 3) {
final double x = args[1].startsWith("~") ? target.getLocation().getX() + (args[1].length() > 1 ? Double.parseDouble(args[1].substring(1)) : 0) : Double.parseDouble(args[1]);
@@ -21,7 +21,7 @@ public class Commandtpoffline extends EssentialsCommand {
final Location logout = target.getLogoutLocation();
if (logout == null) {
user.sendTl("teleportOfflineUnknown", user.getDisplayName());
user.sendTl("teleportOfflineUnknown", target.getDisplayName());
throw new NoChargeException();
}
@@ -38,7 +38,7 @@ public class Commandunban extends EssentialsCommand {
ess.getServer().getBanList(BanList.Type.NAME).pardon(name);
}
final String senderDisplayName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.DISPLAY_NAME;
final String senderDisplayName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.displayName();
ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("playerUnbanned", senderDisplayName, name)));
ess.broadcastTl((IUser) null, "essentials.ban.notify", "playerUnbanned", senderDisplayName, name);
@@ -40,7 +40,7 @@ public class Commandunbanip extends EssentialsCommand {
}
ess.getServer().getBanList(BanList.Type.IP).pardon(ipAddress);
final String senderDisplayName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.DISPLAY_NAME;
final String senderDisplayName = sender.isPlayer() ? sender.getPlayer().getDisplayName() : Console.displayName();
ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("playerUnbanIpAddress", senderDisplayName, ipAddress)));
ess.broadcastTl((IUser) null, "essentials.banip.notify", "playerUnbanIpAddress", senderDisplayName, ipAddress);
@@ -30,18 +30,16 @@ public class Commandweather extends EssentialsCommand {
isStorm = args[0].equalsIgnoreCase("storm");
}
ess.scheduleGlobalDelayedTask(() -> {
final World world = user.getWorld();
final World world = user.getWorld();
if (args.length > 1) {
world.setStorm(isStorm);
world.setWeatherDuration(Integer.parseInt(args[1]) * 20);
user.sendTl(isStorm ? "weatherStormFor" : "weatherSunFor", world.getName(), args[1]);
return;
}
if (args.length > 1) {
world.setStorm(isStorm);
user.sendTl(isStorm ? "weatherStorm" : "weatherSun", world.getName());
});
world.setWeatherDuration(Integer.parseInt(args[1]) * 20);
user.sendTl(isStorm ? "weatherStormFor" : "weatherSunFor", world.getName(), args[1]);
return;
}
world.setStorm(isStorm);
user.sendTl(isStorm ? "weatherStorm" : "weatherSun", world.getName());
}
@Override
@@ -56,16 +54,14 @@ public class Commandweather extends EssentialsCommand {
throw new TranslatableException("weatherInvalidWorld", args[0]);
}
ess.scheduleLocationDelayedTask(world.getSpawnLocation(), () -> {
if (args.length > 2) {
world.setStorm(isStorm);
world.setWeatherDuration(Integer.parseInt(args[2]) * 20);
sender.sendTl(isStorm ? "weatherStormFor" : "weatherSunFor", world.getName(), args[2]);
return;
}
if (args.length > 2) {
world.setStorm(isStorm);
sender.sendTl(isStorm ? "weatherStorm" : "weatherSun", world.getName());
});
world.setWeatherDuration(Integer.parseInt(args[2]) * 20);
sender.sendTl(isStorm ? "weatherStormFor" : "weatherSunFor", world.getName(), args[2]);
return;
}
world.setStorm(isStorm);
sender.sendTl(isStorm ? "weatherStorm" : "weatherSun", world.getName());
}
@Override
@@ -56,7 +56,7 @@ public abstract class EssentialsCommand implements IEssentialsCommand {
//noinspection InfiniteLoopStatement
while (true) {
final String baseKey = name + "CommandUsage" + i;
addUsageString(tlLiteral(baseKey), tlLiteral(baseKey + "Description"));
addUsageString(tlLiteral(baseKey), baseKey + "Description");
i++;
}
} catch (MissingResourceException ignored) {
@@ -1,7 +1,9 @@
package com.earth2me.essentials.commands;
import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.IEssentialsModule;
import com.earth2me.essentials.User;
import net.ess3.api.IEssentials;
import org.bukkit.Server;
import java.util.ArrayList;
@@ -10,6 +12,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.HashSet;
public class EssentialsTreeCommand extends EssentialsCommand {
private final Map<String, EssentialsTreeNode> nodes = new HashMap<>();
@@ -32,6 +35,22 @@ public class EssentialsTreeCommand extends EssentialsCommand {
node.setParent(this);
}
@Override
public void setEssentials(final IEssentials ess) {
super.setEssentials(ess);
for (final EssentialsTreeNode node : new HashSet<>(nodes.values())) {
node.setEssentials(ess);
}
}
@Override
public void setEssentialsModule(final IEssentialsModule module) {
super.setEssentialsModule(module);
for (final EssentialsTreeNode node : new HashSet<>(nodes.values())) {
node.setEssentialsModule(module);
}
}
public void runDefault(final User user, final String commandLabel) throws Exception {
runDefault(user.getSource(), commandLabel);
}
@@ -37,7 +37,7 @@ public class VersionCommand extends EssentialsTreeNode {
);
public VersionCommand() {
super("version");
super("version", "ver");
}
@Override
@@ -171,6 +171,16 @@ public class UserConfigHolder {
this.godmode = value;
}
private boolean flymode = false;
public boolean flyMode() {
return this.flymode;
}
public void flyMode(final boolean value) {
this.flymode = value;
}
private boolean muted = false;
public boolean muted() {
@@ -32,7 +32,7 @@ public final class EconomyLayers {
}
public static void onEnable(final Essentials ess) {
ess.scheduleInitTask(() -> {
ess.scheduleSyncDelayedTask(() -> {
serverStarted = true;
for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
if (!plugin.isEnabled()) {
@@ -28,6 +28,13 @@ public interface IPermissionsHandler {
boolean hasPermission(Player base, String node);
default boolean hasPermissionCached(Player base, String node) {
return hasPermission(base, node);
}
default void invalidatePermissionCache(UUID uuid) {
}
// Does not check for * permissions
boolean isPermissionSet(Player base, String node);
@@ -105,6 +105,16 @@ public class PermissionsHandler implements IPermissionsHandler {
return handler.hasPermission(base, node);
}
@Override
public boolean hasPermissionCached(final Player base, final String node) {
return handler.hasPermissionCached(base, node);
}
@Override
public void invalidatePermissionCache(final UUID uuid) {
handler.invalidatePermissionCache(uuid);
}
@Override
public boolean isPermissionSet(final Player base, final String node) {
return handler.isPermissionSet(base, node);
@@ -7,17 +7,22 @@ import net.luckperms.api.context.ContextCalculator;
import net.luckperms.api.context.ContextConsumer;
import net.luckperms.api.context.ContextSet;
import net.luckperms.api.context.ImmutableContextSet;
import net.luckperms.api.event.EventSubscription;
import net.luckperms.api.event.user.UserDataRecalculateEvent;
import net.luckperms.api.model.group.Group;
import net.luckperms.api.query.QueryOptions;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.plugin.RegisteredServiceProvider;
import java.util.logging.Level;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Supplier;
@@ -25,6 +30,8 @@ public class LuckPermsHandler extends ModernVaultHandler {
private LuckPerms luckPerms;
private Essentials ess;
private CombinedCalculator calculator;
private final Map<UUID, Map<String, Boolean>> permissionCache = new ConcurrentHashMap<>();
private EventSubscription<UserDataRecalculateEvent> recalculateSubscription;
@Override
public void registerContext(final String context, final Function<User, Iterable<String>> calculator, final Supplier<Iterable<String>> suggestions) {
@@ -41,6 +48,30 @@ public class LuckPermsHandler extends ModernVaultHandler {
this.luckPerms.getContextManager().unregisterCalculator(this.calculator);
this.calculator = null;
}
if (this.recalculateSubscription != null) {
this.recalculateSubscription.close();
this.recalculateSubscription = null;
}
this.permissionCache.clear();
}
@Override
public boolean hasPermissionCached(final Player base, final String node) {
final UUID uuid = base.getUniqueId();
final Map<String, Boolean> userCache = permissionCache.computeIfAbsent(uuid, k -> new ConcurrentHashMap<>());
return userCache.computeIfAbsent(node, k -> hasPermission(base, node));
}
@Override
public void invalidatePermissionCache(final UUID uuid) {
invalidateCache(uuid);
}
public void invalidateCache(final UUID uuid) {
if (ess.getSettings().isDebug()) {
ess.getLogger().log(Level.INFO, "Invalidating permission cache for " + uuid);
}
permissionCache.remove(uuid);
}
@Override
@@ -77,6 +108,11 @@ public class LuckPermsHandler extends ModernVaultHandler {
if (provider != null) {
this.luckPerms = provider.getProvider();
this.ess = ess;
this.recalculateSubscription = this.luckPerms.getEventBus().subscribe(
ess,
UserDataRecalculateEvent.class,
event -> invalidateCache(event.getUser().getUniqueId())
);
}
return luckPerms != null && super.tryProvider(ess);
}
@@ -288,7 +288,7 @@ public class KeywordReplacer implements IText {
for (final String groupName : playerList.keySet()) {
final List<User> groupUsers = playerList.get(groupName);
if (groupUsers != null && !groupUsers.isEmpty()) {
outputList.put(groupName, PlayerList.listUsers(ess, groupUsers, " "));
outputList.put(groupName, ess.getAdventureFacet().miniToLegacy(PlayerList.listUsers(ess, groupUsers, " ")));
}
}
@@ -346,7 +346,7 @@ public class KeywordReplacer implements IText {
}
break;
case TPS:
replacer = NumberUtil.formatDouble(20d); //todo
replacer = NumberUtil.formatDouble(ess.getTimer().getAverageTPS());
break;
case UPTIME:
replacer = DateUtil.formatDateDiff(ManagementFactory.getRuntimeMXBean().getStartTime());
@@ -380,8 +380,10 @@ public class KeywordReplacer implements IText {
}
if (this.replaceSpacesWithUnderscores) {
// Don't replace spaces with underscores in command nor escape underscores.
if (!line.startsWith("/")) {
// Don't replace spaces with underscores in commands, and skip escaping
// for USERNAME since Minecraft names never contain spaces but can
// contain underscores that must stay literal (e.g. player:{USERNAME}).
if (!line.startsWith("/") && validKeyword != KeywordType.USERNAME) {
replacer = replacer.replace("_", "\\_").replaceAll("\\s", "_");
}
}
@@ -18,11 +18,21 @@ public final class StringUtil {
private StringUtil() {
}
private static final Pattern WINDOWS_RESERVED = Pattern.compile("^(con|prn|aux|nul|com[0-9]|lpt[0-9])$");
//Used to clean file names before saving to disk
public static String sanitizeFileName(final String name) {
return INVALIDFILECHARS.matcher(name.toLowerCase(Locale.ENGLISH)).replaceAll("_");
}
/**
* Returns true if the given name is a Windows reserved filename (e.g. CON, NUL, AUX).
* Using these as file names on Windows will hang or crash the server.
*/
public static boolean isReservedFileName(final String name) {
return WINDOWS_RESERVED.matcher(name.toLowerCase(Locale.ENGLISH)).matches();
}
//Used to clean strings/names before saving as filenames/permissions
public static String safeString(final String string) {
if (string == null) {
@@ -40,17 +40,18 @@ public final class VersionUtil {
public static final BukkitVersion v1_19_R01 = BukkitVersion.fromString("1.19-R0.1-SNAPSHOT");
public static final BukkitVersion v1_19_4_R01 = BukkitVersion.fromString("1.19.4-R0.1-SNAPSHOT");
public static final BukkitVersion v1_20_1_R01 = BukkitVersion.fromString("1.20.1-R0.1-SNAPSHOT");
public static final BukkitVersion v1_20_4_R01 = BukkitVersion.fromString("1.20.4-R0.1-SNAPSHOT");
public static final BukkitVersion v1_20_6_R01 = BukkitVersion.fromString("1.20.6-R0.1-SNAPSHOT");
public static final BukkitVersion v1_21_R01 = BukkitVersion.fromString("1.21-R0.1-SNAPSHOT");
public static final BukkitVersion v1_21_3_R01 = BukkitVersion.fromString("1.21.3-R0.1-SNAPSHOT");
public static final BukkitVersion v1_21_5_R01 = BukkitVersion.fromString("1.21.5-R0.1-SNAPSHOT");
public static final BukkitVersion v1_21_8_R01 = BukkitVersion.fromString("1.21.8-R0.1-SNAPSHOT");
public static final BukkitVersion v1_21_11_R01 = BukkitVersion.fromString("1.21.11-R0.1-SNAPSHOT");
public static final BukkitVersion v26_1_R01 = BukkitVersion.fromString("26.1.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, v1_18_2_R01, v1_19_4_R01, v1_20_6_R01, v1_21_11_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, v1_19_4_R01, v1_20_6_R01, v1_21_11_R01, v26_1_R01);
public static final boolean PRE_FLATTENING = VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01);
public static final boolean FOLIA;
public static final List<String> officialPlugins = Arrays.asList(
"EssentialsAntiBuild",
@@ -76,15 +77,6 @@ public final class VersionUtil {
private static final String PFX = make("8(;4>`");
static {
boolean isFolia;
try {
Class.forName("io.papermc.paper.threadedregions.RegionizedServer");
isFolia = true;
} catch (Throwable ignored) {
isFolia = false;
}
FOLIA = isFolia;
final ImmutableMap.Builder<String, SupportStatus> builder = new ImmutableMap.Builder<>();
// Leaf, yet another "High Performance" fork of Paper. Not supported by EssentialsX.
@@ -185,7 +177,7 @@ public final class VersionUtil {
}
}
if (!supportedVersions.contains(getServerBukkitVersion())) {
if (!isSupportedVersion(getServerBukkitVersion())) {
return supportStatus = SupportStatus.OUTDATED;
}
@@ -198,14 +190,39 @@ public final class VersionUtil {
return supportStatusClass;
}
/**
* Checks if a version is considered supported, either by exact match in the
* supported versions set, or by matching the base version (major.minor.patch)
* of a supported version. This handles both the new PaperMC versioning scheme
* (which omits the Bukkit revision suffix) and development builds that report
* versions like {@code 26.1-rc-3.build.8-alpha}.
*/
private static boolean isSupportedVersion(final BukkitVersion version) {
if (supportedVersions.contains(version)) {
return true;
}
// Check if this version matches a supported base version.
// This covers Paper versions (no -R0.1-SNAPSHOT suffix) and
// dev variants (snapshot/pre-release/RC/Paper builds).
for (final BukkitVersion supported : supportedVersions) {
if (version.equalsBaseVersion(supported)) {
return true;
}
}
return false;
}
public static final class BukkitVersion implements Comparable<BukkitVersion> {
private static final Pattern VERSION_PATTERN = Pattern.compile("^(\\d+)\\.(\\d+)\\.?([0-9]*)?(?:-pre(\\d))?(?:-rc(\\d+))?(?:-?R?([\\d.]+))?(?:-SNAPSHOT)?");
private static final Pattern SNAPSHOT_PATTERN = Pattern.compile("^(\\d{2})w(\\d{2})([a-z])(?:-?R?([\\d.]+))?(?:-SNAPSHOT)?");
private static final Pattern VERSION_PATTERN = Pattern.compile("^(\\d+)\\.(\\d+)\\.?([0-9]*)?(?:-snapshot-(\\d+))?(?:-pre-?(\\d+))?(?:-rc-?(\\d+))?(?:\\.build\\.(\\d+)(?:-([a-z]+))?)?(?:-?R?([\\d.]+))?(?:(?:\\.local)?-SNAPSHOT)?");
private static final Pattern LEGACY_SNAPSHOT_PATTERN = Pattern.compile("^(\\d{2})w(\\d{2})([a-z])(?:-?R?([\\d.]+))?(?:-SNAPSHOT)?");
private final int major;
private final int minor;
private final int snapshotRelease;
private final int preRelease;
private final int releaseCandidate;
private final int paperBuild;
private final String releaseChannel;
private final int patch;
private final double revision;
@@ -214,27 +231,33 @@ public final class VersionUtil {
private final int snapshotWeek;
private final char snapshotLetter;
private BukkitVersion(final int major, final int minor, final int patch, final double revision, final int preRelease, final int releaseCandidate) {
private BukkitVersion(final int major, final int minor, final int patch, final double revision, final int snapshotRelease, final int preRelease, final int releaseCandidate, final int paperBuild, final String releaseChannel) {
this.major = major;
this.minor = minor;
this.patch = patch;
this.revision = revision;
this.snapshotRelease = snapshotRelease;
this.preRelease = preRelease;
this.releaseCandidate = releaseCandidate;
this.paperBuild = paperBuild;
this.releaseChannel = releaseChannel;
this.snapshot = false;
this.snapshotYear = -1;
this.snapshotWeek = -1;
this.snapshotLetter = '\0';
}
private BukkitVersion(final int major, final int minor, final int patch, final double revision, final int preRelease, final int releaseCandidate,
private BukkitVersion(final int major, final int minor, final int patch, final double revision, final int snapshotRelease, final int preRelease, final int releaseCandidate, final int paperBuild, final String releaseChannel,
final boolean snapshot, final int snapshotYear, final int snapshotWeek, final char snapshotLetter) {
this.major = major;
this.minor = minor;
this.patch = patch;
this.revision = revision;
this.snapshotRelease = snapshotRelease;
this.preRelease = preRelease;
this.releaseCandidate = releaseCandidate;
this.paperBuild = paperBuild;
this.releaseChannel = releaseChannel;
this.snapshot = snapshot;
this.snapshotYear = snapshotYear;
this.snapshotWeek = snapshotWeek;
@@ -247,11 +270,11 @@ public final class VersionUtil {
// Try standard release format first
Matcher matcher = VERSION_PATTERN.matcher(string);
if (matcher.matches()) {
return from(matcher.group(1), matcher.group(2), matcher.group(3), matcher.group(6), matcher.group(4), matcher.group(5));
return from(matcher.group(1), matcher.group(2), matcher.group(3), matcher.group(9), matcher.group(4), matcher.group(5), matcher.group(6), matcher.group(7), matcher.group(8));
}
// Try snapshot format (e.g., 25w32a-R0.1-SNAPSHOT)
final Matcher snapshotMatcher = SNAPSHOT_PATTERN.matcher(string);
final Matcher snapshotMatcher = LEGACY_SNAPSHOT_PATTERN.matcher(string);
if (snapshotMatcher.matches()) {
final int year = Integer.parseInt(snapshotMatcher.group(1));
final int week = Integer.parseInt(snapshotMatcher.group(2));
@@ -269,24 +292,29 @@ public final class VersionUtil {
}
matcher = VERSION_PATTERN.matcher(v1_16_1_R01.toString());
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.group(6), matcher.group(4), matcher.group(5));
return from(matcher.group(1), matcher.group(2), matcher.group(3), matcher.group(9), matcher.group(4), matcher.group(5), matcher.group(6), matcher.group(7), matcher.group(8));
}
private static BukkitVersion from(final String major, final String minor, String patch, String revision, String preRelease, String releaseCandidate) {
private static BukkitVersion from(final String major, final String minor, String patch, String revision, String snapshotRelease, String preRelease, String releaseCandidate, String paperBuild, final String releaseChannel) {
if (patch == null || patch.isEmpty()) patch = "0";
if (revision == null || revision.isEmpty()) revision = "0";
if (snapshotRelease == null || snapshotRelease.isEmpty()) snapshotRelease = "-1";
if (preRelease == null || preRelease.isEmpty()) preRelease = "-1";
if (releaseCandidate == null || releaseCandidate.isEmpty()) releaseCandidate = "-1";
if (paperBuild == null || paperBuild.isEmpty()) paperBuild = "-1";
return new BukkitVersion(Integer.parseInt(major),
Integer.parseInt(minor),
Integer.parseInt(patch),
Double.parseDouble(revision),
Integer.parseInt(snapshotRelease),
Integer.parseInt(preRelease),
Integer.parseInt(releaseCandidate));
Integer.parseInt(releaseCandidate),
Integer.parseInt(paperBuild),
releaseChannel);
}
private static BukkitVersion fromSnapshot(final int year, final int week, final char letter, final double revision) {
return new BukkitVersion(-1, -1, -1, revision, -1, -1, true, year, week, letter);
return new BukkitVersion(-1, -1, -1, revision, -1, -1, -1, -1, null, true, year, week, letter);
}
public boolean isHigherThan(final BukkitVersion o) {
@@ -329,10 +357,37 @@ public final class VersionUtil {
return releaseCandidate;
}
public int getSnapshotRelease() {
return snapshotRelease;
}
public int getPaperBuild() {
return paperBuild;
}
public String getReleaseChannel() {
return releaseChannel;
}
public boolean isSnapshot() {
return snapshot;
}
/**
* Checks if this version has the same base version (major, minor, and patch)
* as the given version, ignoring development specifiers and Bukkit metadata.
* Revision is ignored because Paper versions do not include the Bukkit
* revision suffix (e.g. {@code -R0.1-SNAPSHOT}).
*/
public boolean equalsBaseVersion(final BukkitVersion other) {
if (this.snapshot || other.snapshot) {
return false;
}
return this.major == other.major &&
this.minor == other.minor &&
this.patch == other.patch;
}
@Override
public boolean equals(final Object o) {
if (this == o) {
@@ -353,7 +408,9 @@ public final class VersionUtil {
minor == that.minor &&
patch == that.patch &&
revision == that.revision &&
preRelease == that.preRelease;
snapshotRelease == that.snapshotRelease &&
preRelease == that.preRelease &&
releaseCandidate == that.releaseCandidate;
}
@Override
@@ -361,7 +418,7 @@ public final class VersionUtil {
if (snapshot) {
return Objects.hashCode("snapshot", snapshotYear, snapshotWeek, snapshotLetter, revision);
}
return Objects.hashCode(major, minor, patch, revision, preRelease, releaseCandidate);
return Objects.hashCode(major, minor, patch, revision, snapshotRelease, preRelease, releaseCandidate);
}
@Override
@@ -373,15 +430,31 @@ public final class VersionUtil {
if (patch != 0) {
sb.append(".").append(patch);
}
if (snapshotRelease != -1) {
sb.append("-snapshot-").append(snapshotRelease);
}
if (preRelease != -1) {
sb.append("-pre").append(preRelease);
sb.append("-pre-").append(preRelease);
}
if (releaseCandidate != -1) {
sb.append("-rc").append(releaseCandidate);
sb.append("-rc-").append(releaseCandidate);
}
if (paperBuild != -1) {
sb.append(".build.").append(paperBuild);
if (releaseChannel != null) {
sb.append("-").append(releaseChannel);
}
}
return sb.append("-R").append(revision).toString();
}
private static int compareDevSpecifier(final int a, final int b) {
if (a == b) return 0;
if (a == -1) return 1;
if (b == -1) return -1;
return Integer.compare(a, b);
}
@Override
public int compareTo(final BukkitVersion o) {
// Snapshots are always considered the most recent
@@ -417,18 +490,20 @@ public final class VersionUtil {
} else if (patch > o.patch) {
return 1;
} else { // equal patch
if (preRelease < o.preRelease) {
// For dev specifiers, -1 means absent (final release) and
// sorts HIGHER than any present value: snapshot < pre < rc < release
int cmp = compareDevSpecifier(snapshotRelease, o.snapshotRelease);
if (cmp != 0) return cmp;
cmp = compareDevSpecifier(preRelease, o.preRelease);
if (cmp != 0) return cmp;
cmp = compareDevSpecifier(releaseCandidate, o.releaseCandidate);
if (cmp != 0) return cmp;
if (paperBuild < o.paperBuild) {
return -1;
} else if (preRelease > o.preRelease) {
} else if (paperBuild > o.paperBuild) {
return 1;
} else { // equal prerelease
if (releaseCandidate < o.releaseCandidate) {
return -1;
} else if (releaseCandidate > o.releaseCandidate) {
return 1;
} else { // equal release candidate
return Double.compare(revision, o.revision);
}
} else {
return Double.compare(revision, o.revision);
}
}
}
@@ -8,6 +8,12 @@ import org.bukkit.event.HandlerList;
* <p>
* For other cases where the player's vanish status changes, you should listen on PlayerJoinEvent and
* check with {@link IUser#isVanished()}.
*
* <b>WARNING: The values of {@link #getAffected()} and {@link #getController()} are inverted due to
* a long-standing parameter swap. {@link #getAffected()} returns the command sender (null for console),
* and {@link #getController()} returns the player whose vanish status changed.</b>
*
* @see <a href="https://github.com/EssentialsX/Essentials/issues/2604">#2604</a>
*/
public class VanishStatusChangeEvent extends StatusChangeEvent {
private static final HandlerList handlers = new HandlerList();
@@ -0,0 +1,59 @@
package net.essentialsx.api.v2.events;
import com.earth2me.essentials.CommandSource;
import com.google.common.base.Preconditions;
import net.ess3.api.IUser;
import org.bukkit.Bukkit;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import java.math.BigDecimal;
/**
* Fired when a transaction (e.g. /pay) is about to be handled.
*/
public class PreTransactionEvent extends TransactionEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private boolean cancelled;
public PreTransactionEvent(final CommandSource requester, final IUser target, final BigDecimal amount) {
super(!Bukkit.isPrimaryThread(), requester, target, amount);
}
/**
* Sets the amount to be subtracted from the requester's balance.
* <p>
* Note: Changing this amount will not verify the requester actually has enough balance to complete the transaction.
* @param decimal the new amount
*/
public void setAmount(final BigDecimal decimal) {
Preconditions.checkNotNull(decimal, "decimal cannot be null");
Preconditions.checkArgument(decimal.compareTo(BigDecimal.ZERO) >= 0, "decimal cannot be negative");
this.amount = decimal;
}
@Override
public boolean isCancelled() {
return cancelled;
}
/**
* If this event should be cancelled. If cancelled, no messages will be displayed to the users involved.
* @param cancelled whether this event should be cancelled
*/
@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
}
@@ -16,15 +16,19 @@ public class TransactionEvent extends Event {
private final CommandSource requester;
private final IUser target;
private final BigDecimal amount;
protected BigDecimal amount;
public TransactionEvent(CommandSource requester, IUser target, BigDecimal amount) {
super(!Bukkit.isPrimaryThread());
protected TransactionEvent(boolean async, CommandSource requester, IUser target, BigDecimal amount) {
super(async);
this.requester = requester;
this.target = target;
this.amount = amount;
}
public TransactionEvent(CommandSource requester, IUser target, BigDecimal amount) {
this(!Bukkit.isPrimaryThread(), requester, target, amount);
}
/**
* @return the user who initiated the transaction
*/
+11 -4
View File
@@ -34,7 +34,7 @@ ops-name-color: '4'
nickname-prefix: '~'
# The maximum length allowed in nicknames. The nickname prefix is not included in this.
max-nick-length: 15
max-nick-length: 16
# The regex pattern used to determine if a requested nickname should be allowed for use.
# If the requested nickname does not match this pattern, the nickname will be rejected.
@@ -51,6 +51,10 @@ nick-blacklist:
# For example, if "&6Notch" has 7 characters (2 are part of a color code), a length of 5 is used when this option is set to true.
ignore-colors-in-max-nick-length: false
# When this option is enabled, any nickname set by a player will be reset when their Minecraft account name changes.
# This prevents old nicknames (including RGB-formatted ones) from persisting after a name change.
reset-nick-on-name-change: false
# When this option is enabled, display names for hidden players will not be shown. This prevents players from being
# able to see that they are online while vanished.
hide-displayname-in-vanish: true
@@ -491,7 +495,7 @@ auto-afk: 300
auto-afk-timeout: -1
# A list of commands to be executed instead of kicking the player once the
# threshold defined above in 'afk-auto-timeout' is reached. If this list is empty
# threshold defined above in 'afk-auto-timeout' is reached. If this list is empty
# and 'afk-auto-timeout' is not set to -1, Essentials will default to
# kicking the player once they reach the timeout threshold.
#
@@ -527,6 +531,9 @@ cancel-afk-on-move: true
# Should Essentials automatically remove AFK status when a player sends a chat message?
cancel-afk-on-chat: true
# Should Essentials automatically remove AFK status when a player uses a fishing rod?
cancel-afk-on-fish: true
# Should AFK players be ignored when other players are trying to sleep?
# When this setting is false, players won't be able to skip the night if some players are AFK.
# Players with the permission 'essentials.sleepingignored' will always be ignored.
@@ -897,8 +904,8 @@ baltop-requirements:
minimum-balance: 0
minimum-playtime: 0
# Limit the number of cached balance top entries.
# Recommended for servers with a large number of players, as it reduces memory usage.
# Limit the number of cached balance top entries.
# Recommended for servers with a large number of players, as it reduces memory usage.
# Set to -1 to disable the limit.
baltop-entry-limit: -1
+7 -1
View File
@@ -8620,6 +8620,12 @@
"gshirt": "golden_chestplate",
"gtunic": "golden_chestplate",
"minecraft:golden_chestplate": "golden_chestplate",
"golden_dandelion": {
"name": "golden_dandelion",
"material": "GOLDEN_DANDELION"
},
"goldendandelion": "golden_dandelion",
"minecraft:golden_dandelion": "golden_dandelion",
"golden_helmet": {
"material": "GOLDEN_HELMET"
},
@@ -50980,4 +50986,4 @@
"zpmanmonsterspawner": "zombified_piglin_spawner",
"zpmanmspawner": "zombified_piglin_spawner",
"zpmanspawner": "zombified_piglin_spawner"
}
}
@@ -625,6 +625,8 @@ itemdbCommandUsage=/<command> <item>
itemdbCommandUsage1=/<command> <item>
itemdbCommandUsage1Description=Searches the item database for the given item
jailAlreadyIncarcerated=<dark_red>Person is already in jail\:<secondary> {0}
jailedPlayersList=<primary>Jailed Players\:<reset> {0}
jailedPlayersEmpty=<primary>There are no jailed players.
jailList=<primary>Jails\:<reset> {0}
jailMessage=<dark_red>You do the crime, you do the time.
jailNotExist=<dark_red>That jail does not exist.
@@ -638,6 +640,8 @@ jailSet=<primary>Jail<secondary> {0} <primary>has been set.
jailWorldNotExist=<dark_red>That jail's world does not exist.
jumpEasterDisable=<primary>Flying wizard mode disabled.
jumpEasterEnable=<primary>Flying wizard mode enabled.
jailedplayersCommandDescription=List all jailed players.
jailedplayersCommandUsage=/<command>
jailsCommandDescription=List all jails.
jailsCommandUsage=/<command>
jumpCommandDescription=Jumps to the nearest block in the line of sight.
@@ -909,6 +913,7 @@ openingDisposal=<primary>Opening disposal menu...
orderBalances=<primary>Ordering balances of<secondary> {0} <primary>users, please wait...
oversizedMute=<dark_red>You may not mute a player for this period of time.
oversizedTempban=<dark_red>You may not ban a player for this period of time.
pageLimitExceeded=<dark_red>Page number exceeds the maximum limit (100).
passengerTeleportFail=<dark_red>You cannot be teleported while carrying passengers.
payCommandDescription=Pays another player from your balance.
payCommandUsage=/<command> <player> <amount>
@@ -1233,6 +1238,7 @@ slimeMalformedSize=<dark_red>Malformed size.
smithingtableCommandDescription=Opens up a smithing table.
smithingtableCommandUsage=/<command>
socialSpy=<primary>SocialSpy for <secondary>{0}<primary>\: <secondary>{1}
socialSpyCmdFormat=<gray>{0}\: {1}
socialSpyMsgFormat=<primary>[<secondary>{0}<gray> -> <secondary>{1}<primary>] <gray>{2}
socialSpyMutedPrefix=<white>[<primary>SS<white>] <gray>(muted) <reset>
socialspyCommandDescription=Toggles if you can see msg/mail commands in chat.
@@ -1479,8 +1485,10 @@ unlinkCommandDescription=Unlinks your Minecraft account from the currently linke
unlinkCommandUsage=/<command>
unlinkCommandUsage1=/<command>
unlinkCommandUsage1Description=Unlinks your Minecraft account from the currently linked Discord account.
unmuteNotify=<secondary>{0} <primary>unmuted<secondary> {1}<primary>.
unmutedPlayer=<primary>Player<secondary> {0} <primary>unmuted.
unsafeTeleportDestination=<dark_red>The teleport destination is unsafe and teleport-safety is disabled.
unsafeTeleportDestination=<dark_red>The teleport destination is unsafe.
playerNotMuted=<secondary>{0} <primary>is not muted.
unsupportedBrand=<dark_red>The server platform you are currently running does not provide the capabilities for this feature.
unsupportedFeature=<dark_red>This feature is not supported on the current server version.
unvanishedReload=<dark_red>A reload has forced you to become visible.
@@ -1523,7 +1531,6 @@ versionErrorPlayer=<primary>Error while checking EssentialsX version information
versionFetching=<primary>Fetching version information...
versionOutputVaultMissing=<dark_red>Vault is not installed. Chat and permissions may not work.
versionOutputFine=<primary>{0} version\: <green>{1}
versionOutputFlags=<primary>Feature Flags: <green>{0}
versionOutputWarn=<primary>{0} version\: <secondary>{1}
versionOutputUnsupported=<light_purple>{0} <primary>version\: <light_purple>{1}
versionOutputUnsupportedPlugins=<primary>You are running <light_purple>unsupported plugins<primary>\!
@@ -1,5 +1,6 @@
#Sat Feb 03 17:34:46 GMT 2024
action=<dark_purple>* {0} <dark_purple>{1}
addedToAccount=<yellow>{0}<green> бяха добавени към сметката ти.
adventure=приключенски
afkCommandDescription=Маркира ви като далеч-от-клавиятурата.
afkCommandUsage=/<command> [player/message...]
@@ -675,8 +676,6 @@ sellBulkPermission=<primary>Нямате право да продавате на
sellHandPermission=<primary>Нямате право да продавате предмета в ръката си.
serverFull=Сървърът е пълен\!
serverTotal=<primary>Общо играчи\:<secondary> {0}
serverUnsupported=Имате неподдържана версия на сървъра\!
serverUnsupportedDangerous=Използвате сървърен форк, за който се знае, че е изключително опасен и може да доведе до загуба на данни. Препоръчително е да преминете към по-стабилен сървърен софтуер като Paper.
setBal=<green>Вашият баланс беше зададен на {0}.
setBalOthers=<green>Зададохте баланса на {0}<green> на {1}.
setSpawner=<primary>Променихте вида на размножителя на<secondary> {0}<primary>.
@@ -765,7 +764,6 @@ unknownItemName=<dark_red>Неизвестно име на предмет\: {0}.
unlimitedItemPermission=<dark_red>Нямате право на безброй предмети<secondary> {0}<dark_red>.
unlimitedItems=<primary>Безбройни предмети\:<reset>
unmutedPlayer=<primary>Играчът<secondary> {0}<primary> е отглушен.
unsafeTeleportDestination=<dark_red>Дестинацията е опасна и защитата след телепортиране е изключена.
unsupportedFeature=Тази функция я няма на тази версия на сървъра.
unvanishedReload=<dark_red>Поради презареждане на сървъра сте отново видим.
upgradingFilesError=Грешка при подновяването на файловете.
@@ -16,17 +16,17 @@ alertUsed=použito\:
alphaNames=<dark_red>Jméno hráče může obsahovat pouze písmena, číslice a podtržítka.
antiBuildBreak=<dark_red>Zde nemáš oprávnění ničit<secondary> {0} <dark_red>bloky.
antiBuildCraft=<dark_red>Nemáš oprávnění vytvářet<secondary> {0}<dark_red>.
antiBuildDrop=<dark_red>Nemáš oprávnění vyhazovat<secondary> {0}<dark_red>.
antiBuildInteract=<dark_red>Nemáš oprávnění použít<secondary> {0}<dark_red>.
antiBuildPlace=<dark_red>Zde nemáš oprávnění pokládat<secondary> {0}<dark_red>.
antiBuildUse=<dark_red>Nemáš oprávnění použít<secondary> {0}<dark_red>.
antiBuildDrop=<dark_red>Nemáš oprávnění vyhodit<secondary> {0}<dark_red>.
antiBuildInteract=<dark_red>Nemáš oprávnění pro použití<secondary> {0}<dark_red>.
antiBuildPlace=<dark_red>Nemáš oprávnění zde pokládat<secondary> {0}<dark_red>.
antiBuildUse=<dark_red>Nemáš oprávnění na použití<secondary> {0}<dark_red>.
antiochCommandDescription=Překvapeníčko pro operátory.
antiochCommandUsage=/<command> [zpráva]
anvilCommandDescription=Otevře kovadlinu.
anvilCommandUsage=/<command>
autoAfkKickReason=Byl jsi vyhozen za neaktivitu delší než {0} minut.
autoTeleportDisabled=<primary>Už nepřijímáš automaticky žádosti o teleportování.
autoTeleportDisabledFor=<primary>Hráč <secondary>{0}<primary> už nepřijímá automaticky žádosti o teleportování.
autoTeleportDisabled=<primary>Už nepřijímáš automatické žádosti o teleportování.
autoTeleportDisabledFor=<primary>Hráč <secondary>{0}<primary> už nepřijímá automatické žádosti o teleportování.
autoTeleportEnabled=<primary>Nyní automaticky přijímáš žádosti o teleportování.
autoTeleportEnabledFor=<primary>Hráč <secondary>{0}<primary> nyní automaticky přijímá žádosti o teleportování.
backAfterDeath=<primary>Příkazem <secondary>/back<primary> se vrátíš na místo své smrti.
@@ -42,7 +42,7 @@ backupCommandUsage=/<command>
backupDisabled=<dark_red>Externí zálohovací skript není nastaven.
backupFinished=<primary>Záloha dokončena.
backupStarted=<primary>Začalo zálohování.
backupInProgress=<primary>Probíhá externí zálohovací skript\! Dokud nedoběhne, tak je zastavení zásuvného modulu znemožněno.
backupInProgress=<primary>Probíhá externí zálohovací skript\! Dokud nedoběhne, tak je zastavení pluginu znemožněno.
backUsageMsg=<primary>Návrat na předchozí polohu.
balance=<green>Zůstatek\:<secondary> {0}
balanceCommandDescription=Zobrazí aktuální zůstatek hráče.
@@ -62,30 +62,31 @@ banCommandDescription=Zablokuje hráče.
banCommandUsage=/<command> <hráč> [důvod]
banCommandUsage1=/<command> <player> [důvod]
banCommandUsage1Description=Zablokuje daného hráče s volitelným důvodem
banExempt=<dark_red>Nemůžeš zablokovat tohoto hráče.
banExemptOffline=<dark_red>Nemůžeš zablokovat hráče, který není ve hře.
banFormat=<secondary>Byl jsi zablokován\:\n<reset>{0}
banExempt=<dark_red>Nemůžeš zabanovat tohoto hráče.
banExemptOffline=<dark_red>Nemůžeš zabanovat hráče, který není online.
banFormat=<secondary>Byl jsi zabanován\:\n<reset>{0}
banIpJoin=Tvá IP adresa je na tomto serveru zablokována. Důvod\: {0}
tempbanIpJoin=Tvá IP adresa je na tomto serveru dočasně zablokována na {0}. Důvod\: {1}
banJoin=Na tomto serveru jsi zablokován. Důvod\: {0}
banipCommandDescription=Zablokuje IP adresu.
banipCommandUsage=/<command> <adresa> [důvod]
banipCommandUsage1=/<command> <address> [důvod]
banipCommandUsage1Description=Zablokuje zadanou IP adresu s volitelným důvodem
bed=<i>postel<reset>
bedMissing=<dark_red>Tvá postel nebyla nastavena, chybí nebo je zablokována.
bedMissing=<dark_red>Tvá postel nebyla nastavena, buď chybí nebo je něčím zablokována.
bedNull=<st>postel<reset>
bedOffline=<dark_red>Nelze teleportovat k posteli offline uživatelů.
bedOffline=<dark_red>Nelze teleportovat k posteli offline hráčů.
bedSet=<primary>Postel nastavena\!
beezookaCommandDescription=Mrští po protivníkovi vybuchující včelu.
beezookaCommandUsage=/<command>
bigTreeFailure=<dark_red>Vytváření velkého stromu selhalo. Zkus to znovu na trávě nebo hlíně.
bigTreeSuccess=<primary>Velký strom vytvořen.
bigTreeFailure=<dark_red>Generování velkého stromu selhalo. Zkus to znovu na trávě nebo hlíně.
bigTreeSuccess=<primary>Velký strom vygenerován.
bigtreeCommandDescription=Vytvoří velký strom na místě, kam se díváš.
bigtreeCommandUsage=/<command> <tree|redwood|jungle|darkoak>
bigtreeCommandUsage1=/<command> <tree|redwood|jungle|darkoak>
bigtreeCommandUsage1Description=Vytvoří velký strom zadaného typu
blockList=<primary>EssentialsX předává dalším zásuvným modulům následující příkazy\:
blockListEmpty=<primary>EssentialsX nepředává dalším zásuvným modulům žádné příkazy.
blockList=<primary>EssentialsX předává dalším pluginům následující příkazy\:
blockListEmpty=<primary>EssentialsX nepředává dalším pluginům žádné příkazy.
bookAuthorSet=<primary>{0} byl nastaven jako autor knihy.
bookCommandDescription=Umožňuje znovu otevřít a upravit zapečetěné knihy.
bookCommandUsage=/<příkaz> [title|author [jméno]]
@@ -276,6 +277,7 @@ 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.
discordErrorInvalidPerms=Tvůj bot nebyl nastaven s požadovanými oprávněními\! Chybějící oprávnění jsou\: {0}.
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.
@@ -623,6 +625,8 @@ itemdbCommandUsage=/<command> <předmět>
itemdbCommandUsage1=/<command> <item>
itemdbCommandUsage1Description=Vyhledá daný předmět v databázi předmětů
jailAlreadyIncarcerated=<dark_red>Tento hráč již úpí ve vězení\:<secondary> {0}
jailedPlayersList=<primary>Uvěznění hráči\:<reset> {0}
jailedPlayersEmpty=<primary>Žádní hráči nejsou uvězněni.
jailList=<primary>Vězení\:<reset> {0}
jailMessage=<dark_red>Provinil ses, tak teď musíš pykat.
jailNotExist=<dark_red>Toto vězení neexistuje.
@@ -636,6 +640,7 @@ jailSet=<primary>Vězení<secondary> {0} <primary>bylo zřízeno.
jailWorldNotExist=<dark_red>Svět tohoto vězení neexistuje.
jumpEasterDisable=<primary>Režim létajícího kouzelníka vypnut.
jumpEasterEnable=<primary>Režim létajícího kouzelníka zapnut.
jailedplayersCommandDescription=Seznam všech vězněných hráčů.
jailsCommandDescription=Vypíše seznam všech vězení.
jailsCommandUsage=/<command>
jumpCommandDescription=Skočí na nejbližší blok ve směru pohledu.
@@ -906,6 +911,7 @@ openingDisposal=<primary>Otevírá se odpadkový koš...
orderBalances=<primary>Seřazuji zůstatky<secondary> {0} <primary>hráčů, chvilku strpení...
oversizedMute=<dark_red>Nemůžeš umlčet hráče na tak dlouhou dobu.
oversizedTempban=<dark_red>Nemůžeš potrestat hráče na tak dlouhou dobu.
pageLimitExceeded=<dark_red>Číslo stránky překračuje maximální limit (100).
passengerTeleportFail=<dark_red>Nemůžeš být teleportován během přepravy cestujících.
payCommandDescription=Převede peníze jinému hráči z tvého zůstatku.
payCommandUsage=/<command> <hráč> [částka]
@@ -991,6 +997,8 @@ 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
powertoollistCommandDescription=Vypisuje seznam aktuálních rychlých nástrojů.
powertoollistCommandUsage=/<command>
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.
@@ -1128,15 +1136,17 @@ sellCommandUsage4=/<command> blocks [počet]
sellCommandUsage4Description=Prodá všechny (nebo daný počet, pokud je specifikován) bloky z tvého inventáře
sellHandPermission=<primary>Nemáš oprávnění prodávat z ruky.
serverFull=Server je plný\!
whitelistKick=Bílá listina povolena\!
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.
serverTotal=<primary>Server celkem\:<secondary> {0}
serverUnsupported=Používáte nepodporovanou verzi serveru\!
serverUnsupportedClass=Třída určující stav\: {0}
serverUnsupportedCleanroom=Používáte server, jenž nepodporuje plně Bukkit pluginy spoléhající na interní Mojang kód. Zvažte použití náhrady Essentials podporující váš serverový software.
serverUnsupportedDangerous=Máte verzi serveru, o níž je známo, že je velmi nebezpečná a může vést ke ztrátě dat. Důrazně doporučujeme změnit vaši verzi serveru na stabilnější serverový software, jako například Paper.
serverUnsupportedLimitedApi=Používáte server s omezenou funkčností API. EssentialsX bude stále fungovat, ale některé funkce mohou být zakázány.
serverUnsupportedDumbPlugins=Používáš zásuvné moduly, o nichž je známo, že způsobují vážné problémy s EssentialsX a dalšími zásuvnými moduly.
serverUnsupportedMods=Používáte server, který nepodporuje Bukkit pluginy. Bukkit pluginy by se neměly používat s Forge/Fabric módy\! Pro Forge módy zvažte použití ForgeEssentials nebo SpongeForge + Nucleus.
serverSnapshot=<red>Používáš vývojové sestavení Minecraftu\! EssentialsX nemusí na této verzi fungovat správně a nemá oficiální podporu.
serverUnsupported=<red>Používáš nepodporovanou verzi serveru\!
serverUnsupportedClass=<red>Třída určující stav\: {0}
serverUnsupportedCleanroom=<dark_red>Používáš server, jenž nepodporuje plně Bukkit pluginy spoléhající na interní Mojang kód. Zvaž použití náhrady Essentials podporující tvůj serverový software.
serverUnsupportedDangerous=<dark_red>Máš verzi serveru, o níž je známo, že je velmi nebezpečná a může vést ke ztrátě dat. Důrazně doporučujeme změnit tvou verzi serveru na stabilnější serverový software, jako je například Paper.
serverUnsupportedLimitedApi=<red>Používáš server s omezenou funkčností API. EssentialsX bude stále fungovat, ale některé funkce mohou být nedostupné.
serverUnsupportedDumbPlugins=<dark_red>Používáš zásuvné moduly, o nichž je známo, že způsobují vážné problémy s EssentialsX a dalšími zásuvnými moduly.
serverUnsupportedMods=<dark_red>Používáš server, který nepodporuje správně Bukkit pluginy. Pluginy pro Bukkit by se neměly používat s Forge/Fabric módy\! Odstraň váš hybridní server jar a použij FTB Essentials mód pro podobné funkce jako EssentialsX.
setBal=<green>Stav tvého účtu byl nastaven na {0}.
setBalOthers=<green>Nastavil jsi stav účtu hráče {0}<green> na {1}.
setSpawner=<primary>Typ líhně změněn na<secondary> {0}<primary>.
@@ -1226,13 +1236,14 @@ slimeMalformedSize=<dark_red>Neplatná velikost.
smithingtableCommandDescription=Otevře kovářský stůl.
smithingtableCommandUsage=/<command>
socialSpy=<primary>SocialSpy pro hráče <secondary>{0}<primary>\: <secondary>{1}
socialSpyCmdFormat=<gray>{0}\: {1}
socialSpyMsgFormat=<primary>[<secondary>{0}<gray> -> <secondary>{1}<primary>] <gray>{2}
socialSpyMutedPrefix=<white>[<primary>SS<white>] <gray>(umlčený) <reset>
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=<white>[<primary>SS<white>] <reset>
socialSpyPrefix=§f[§6SS§f] §r
soloMob=<dark_red>Toto stvoření je rádo samo.
spawned=vyvolán
spawnerCommandDescription=Změní typ stvoření v líhni.
@@ -1472,8 +1483,10 @@ unlinkCommandDescription=Odpojí aktuálně propojený Minecraft účet s tvým
unlinkCommandUsage=/<command>
unlinkCommandUsage1=/<command>
unlinkCommandUsage1Description=Odpojí tvůj Minecraft účet od tvého aktuálně propojeného Discord účtu.
unmuteNotify=<secondary>Hráč {0} <primary>zrušil umlčení hráče<secondary> {1}<primary>.
unmutedPlayer=<primary>Hráč <secondary>{0}<primary> může znovu hovořit.
unsafeTeleportDestination=<dark_red>Cíl teleportace je nebezpečný a teleport-safety je vypnuto.
unsafeTeleportDestination=<dark_red>Cíl teleportace není bezpečný.
playerNotMuted=<secondary>Hráč {0} <primary>není umlčen.
unsupportedBrand=<dark_red>Platforma, na které běží tvůj server, momentálně tuto funkci nepodporuje.
unsupportedFeature=<dark_red>Tato funkce není na aktuální verzi serveru podporována.
unvanishedReload=<dark_red>Po opětovném načtení zásuvných modulů jsi zase viditelný.
@@ -1564,7 +1577,7 @@ weatherSun=<primary>Nastavil jsi slunečno ve světě <secondary>{0}<primary>.
weatherSunFor=<primary>Nastavil jsi <secondary>slunečno<primary> ve světě<secondary> {0} <primary>na <secondary>{1} sekund<primary>.
west=Z
whoisAFK=<primary> - mimo počítač\:<reset> {0}
whoisAFKSince=<primary> - mimo počítač\:<reset> {0} (Od {1})
whoisAFKSince=<primary> - Mimo počítač\:<reset> {0} (Od {1})
whoisBanned=<primary> - Zablokován\:<reset> {0}
whoisCommandDescription=Poskytne základní informace o určitém hráči.
whoisCommandUsage=/<command> <nickname>
@@ -1590,6 +1603,7 @@ whoisPlaytime=<primary> - Herní čas\:<reset> {0}
whoisTempBanned=<primary> - Zablokování vyprší\:<reset> {0}
whoisTop=<primary> \=\=\=\=\=\= Kdo je\:<secondary> {0} <primary>\=\=\=\=\=\=
whoisUuid=<primary> - UUID\:<reset> {0}
whoisFirstLogin=<primary> - První přihlášení\:<reset> {0}
whoisWhitelist=<primary> - Bílá listina\:<reset> {0}
workbenchCommandDescription=Otevře pracovní stůl.
workbenchCommandUsage=/<command>
@@ -512,7 +512,6 @@ seenAccounts=<primary>Spilleren er også kendt som\:<secondary> {0}
seenOffline=<primary>Spilleren<secondary> {0} <primary>har været <dark_red>offline<primary> siden <secondary>{1}<primary>.
seenOnline=<primary>Spilleren<secondary> {0} <primary>har været <green>online<primary> siden <secondary>{1}<primary>.
serverFull=Serveren er fyldt op\!
serverUnsupported=Du kører en ikke-understøttet serverversion\!
setBal=<green>Din saldo blev ændret til {0}.
setBalOthers=<green>Du ændrede {0}<green>''s saldo til {1}.
setSpawner=<primary>Ændrede spawner type til<secondary> {0}<primary>.
@@ -592,7 +591,6 @@ unknownItemName=<dark_red>Ukendt elementnavn\: {0}.
unlimitedItemPermission=<dark_red>Ingen tilladelse til ubegrænset element <secondary>{0}<dark_red>.
unlimitedItems=<primary>Ubegrænsede ting\:<reset>
unmutedPlayer=<primary>Spilleren<secondary> {0} <primary>har fået sin stemme tilbage.
unsafeTeleportDestination=<dark_red>Teleport destinationen er usikker og teleport-safety er deaktiveret.
unsupportedFeature=<dark_red>Denne funktionalitet er ikke understøttet på denne server version.
unvanishedReload=<dark_red>En reload har tvunget dig til at blive synlig.
upgradingFilesError=Der opstod en fejl under opgraderingen af filerne.
@@ -66,6 +66,7 @@ banExempt=<dark_red>Du kannst diesen Spieler nicht bannen.
banExemptOffline=<dark_red>Du darfst Spieler, die offline sind, nicht bannen.
banFormat=<dark_red>Gebannt\: <reset>{0}
banIpJoin=Deine IP-Adresse ist auf diesem Server gebannt. Grund\: {0}
tempbanIpJoin=Deine IP-Adresse ist auf diesem Server vorübergehend gesperrt für {0}. Grund\: {1}
banJoin=Du bist von diesem Server gebannt. Grund\: {0}
banipCommandDescription=Sperrt eine IP-Adresse.
banipCommandUsage=/<command> <address> [reason]
@@ -276,6 +277,7 @@ discordErrorLoggerNoPerms=Discord Konsolen-Logger wurde aufgrund unzureichenden
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.
discordErrorInvalidPerms=Dein Bot wurde nicht mit den erforderlichen Berechtigungen eingerichtet\! Fehlende Berechtigungen sind\: {0}.
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.
@@ -623,6 +625,8 @@ itemdbCommandUsage=/<command> <gegenstand>
itemdbCommandUsage1=/<command> <item>
itemdbCommandUsage1Description=Sucht die Item-Datenbank nach gesuchtem Item
jailAlreadyIncarcerated=<dark_red>Spieler ist bereits im Gefängnis\:<secondary> {0}
jailedPlayersList=<primary>Verhaftete Spieler\:<reset> {0}
jailedPlayersEmpty=<primary>Es gibt keine verhafteten Spieler.
jailList=<primary>Gefängnisse\:<reset> {0}
jailMessage=<dark_red>Du hast ein Verbrechen begangen, also musst du deine Zeit absitzen.
jailNotExist=<dark_red>Dieses Gefängnis existiert nicht.
@@ -636,6 +640,8 @@ jailSet=<primary>Gefängnis<secondary> {0} <primary>wurde erstellt.
jailWorldNotExist=<dark_red>Die Welt dieses Gefängnisses existiert nicht.
jumpEasterDisable=<primary>Fliegender Magier-Modus deaktiviert.
jumpEasterEnable=<primary>Fliegender Magier-Modus aktiviert.
jailedplayersCommandDescription=Liste alle verhafteten Spieler auf.
jailedplayersCommandUsage=/<command>
jailsCommandDescription=Alle Gefängnisse auflisten.
jailsCommandUsage=/<command>
jumpCommandDescription=Springt zum nächsten Block in der Sichtlinie.
@@ -906,6 +912,7 @@ openingDisposal=<primary>öffne das Entsorgungsmenü...
orderBalances=<primary>Ordne die Kontostände von<secondary> {0} <primary>Benutzern, bitte warten ...
oversizedMute=<dark_red>Du darfst einen Spieler nicht so lange stummschalten.
oversizedTempban=<dark_red>Du darfst einen Spieler nicht für eine so lange Zeit sperren.
pageLimitExceeded=<dark_red>Seitenzahl überschreitet das Limit (100).
passengerTeleportFail=<dark_red>Du kannst nicht teleportiert werden, während du Passagiere beförderst.
payCommandDescription=Bezahlt einen anderen Spieler von deinem Kontostand.
payCommandUsage=/<command> <Spieler> <Anzahl>
@@ -991,6 +998,8 @@ powertoolCommandUsage4=/<command> <cmd>
powertoolCommandUsage4Description=Setzt den Powertool-Befehl des gehaltenen Items auf den angegebenen Befehl
powertoolCommandUsage5=/<command> a\:<cmd>
powertoolCommandUsage5Description=Fügt den Befehl Powertool zum gehaltenen Item hinzu
powertoollistCommandDescription=Listet alle aktuellen Powertools auf.
powertoollistCommandUsage=/<command>
powertooltoggleCommandDescription=Aktiviert oder deaktiert alle Powertools.
powertooltoggleCommandUsage=/<command>
ptimeCommandDescription=Client-Zeit des Spielers anpassen. @-Präfix zum Korrigieren hinzufügen.
@@ -1128,15 +1137,17 @@ sellCommandUsage4=/<command> blocks [amount]
sellCommandUsage4Description=Verkauft alle (oder die angegebene Zahl, wenn angegeben) Blöcke in deinem Inventar
sellHandPermission=<primary>Du hast keine Berechtigung, einzeln zu verkaufen.
serverFull=Server ist voll\!
whitelistKick=Whitelist aktiviert\!
serverReloading=Es gibt eine gute Chance, dass du den Server gerade reloadest. Falls das der Fall ist, wieso hasst du dich selber? Erwarte keine Unterstützung des EssentialsX-Teams wenn du /reload verwendest.
serverTotal=<primary>Server insgesamt\:<secondary> {0}
serverUnsupported=<secondary>Du verwendest eine Serverversion, die nicht unterstützt wird\!
serverUnsupportedClass=Status-bestimmende Klasse\: {0}
serverUnsupportedCleanroom=Sie betreiben einen Server, der Bukkit-Plugins nicht richtig unterstützt, die auf internen Mojang-Code angewiesen sind. Überlegen Sie sich, einen Essentials Ersatz für Ihre Server-Software zu verwenden.
serverUnsupportedDangerous=Sie betreiben einen Server Fork, der als extrem gefährlich bekannt ist und zu Datenverlust führt. Es wird dringend empfohlen, zu einer stabileren Server-Software wie Papier zu wechseln.
serverUnsupportedLimitedApi=Sie verwenden einen Server mit eingeschränkter API-Funktionalität. EssentialsX wird weiterhin funktionieren, aber bestimmte Funktionen können deaktiviert sein.
serverUnsupportedDumbPlugins=Du verwendest Plugins, wo bekannt ist, dass diese schwerwiegende Probleme mit EssentialsX und anderen Plugins verursachen.
serverUnsupportedMods=Du verwendest einen Server der Bukkit Plugins nicht korrekt unterstützt. Bukkit Plugins sollten nicht mit Forge/Fabric mods verwendet werden. Für Forge\: Überlege ForgeEssentials, oder SpongeForge + Nucleus zu verwenden.
serverSnapshot=<red>Du verwendest eine Entwicklungs-Snapshot-Version von Minecraft\! EssentialsX funktioniert in dieser Version möglicherweise nicht ordnungsgemäß und dies wird nicht unterstützt.
serverUnsupported=<red>Du verwendest eine Serverversion, die nicht unterstützt wird\!
serverUnsupportedClass=<red>Status-bestimmende Klasse\: {0}
serverUnsupportedCleanroom=<dark_red>Du betreibst einen Server, der Bukkit-Plugins nicht richtig unterstützt, die auf internen Mojang-Code angewiesen sind. Überlege dir, einen Essentials Ersatz für deine Server-Software zu verwenden.
serverUnsupportedDangerous=<dark_red>Du betreibst einen Server Fork, der als extrem gefährlich gilt und zu Datenverlust führt. Es wird dringend empfohlen, zu einer stabileren Server-Software wie Paper zu wechseln.
serverUnsupportedLimitedApi=<red>Sie verwenden einen Server mit eingeschränkter API-Funktionalität. EssentialsX wird weiterhin funktionieren, aber bestimmte Funktionen könnten deaktiviert sein.
serverUnsupportedDumbPlugins=<dark_red>Du verwendest Plugins, wo bekannt ist, dass diese schwerwiegende Probleme mit EssentialsX und anderen Plugins verursachen.
serverUnsupportedMods=<dark_red>Du betreibst einen Server, der Bukkit-Plugins nicht korrekt unterstützt. Bukkit Plugins sollten nicht mit Forge/Fabric Mods verwendet werden\! Entferne deine Hybrid Server jar und verwende den FTB Essentials Mod für ähnliche Funktionen wie EssentialsX.
setBal=<green>Dein Kontostand wurde auf <secondary>{0} <green>gesetzt.
setBalOthers=<green>Du hast den Kontostand von <primary>{0}<green> auf <secondary>{1} <green> gesetzt.
setSpawner=<primary>Mob-Spawner-Typ geändert zu <secondary>{0}<primary>.
@@ -1226,6 +1237,7 @@ slimeMalformedSize=<dark_red>Ungültige Größe.
smithingtableCommandDescription=Öffnet einen Schmiedetisch.
smithingtableCommandUsage=/<command>
socialSpy=<primary>SocialSpy für <secondary>{0}<primary> <secondary>{1}<primary>.
socialSpyCmdFormat=<gray>{0}\: {1}
socialSpyMsgFormat=<primary>[<secondary>{0}<gray> -> <secondary>{1}<primary>] <gray>{2}
socialSpyMutedPrefix=<white>[<primary>SS<white>] <gray>(gemutet) <reset>
socialspyCommandDescription=Bestimmt, ob du Nachrichten-Befehle im Chat sehen kannst.
@@ -1472,8 +1484,10 @@ unlinkCommandDescription=Löscht die Verbindung deines Minecraft-Accounts zu dei
unlinkCommandUsage=/<command>
unlinkCommandUsage1=/<command>
unlinkCommandUsage1Description=Trennt deinen Minecraft-Account von dem aktuell verknüpften Discord-Account.
unmuteNotify=<secondary>{0} <primary>Stummschaltung aufgehoben<secondary> {1}<primary>.
unmutedPlayer=<primary>Spieler<secondary> {0}<primary> ist nicht mehr stummgeschaltet.
unsafeTeleportDestination=<dark_red>Das Teleport-Ziel ist nicht sicher und der Teleportschutz ist nicht aktiv.
unsafeTeleportDestination=<dark_red>Das Teleport-Ziel ist unsicher.
playerNotMuted=<secondary>{0} <primary>ist nicht stummgeschaltet.
unsupportedBrand=<dark_red>Die Server-Plattform, die die momentan verwendest, bietet die Möglichkeiten für diese Funktion nicht an.
unsupportedFeature=<dark_red>Diese Funktion wird auf der aktuellen Server-Version nicht unterstützt.
unvanishedReload=<dark_red>Das Neuladen des Servers hat dich sichtbar gemacht.
@@ -1590,6 +1604,7 @@ whoisPlaytime=<primary> - Spielzeit\:<reset> {0}
whoisTempBanned=<primary> - Bann endet\:<reset> {0}
whoisTop=<primary> \=\=\=\=\=\= WhoIs\:<secondary> {0} <primary>\=\=\=\=\=\=
whoisUuid=<primary> - UUID\:<reset> {0}
whoisFirstLogin=<primary> - Erste Anmeldung\:<reset> {0}
whoisWhitelist=<primary> - Gästeliste\:<reset> {0}
workbenchCommandDescription=Öffnet eine Werkbank.
workbenchCommandUsage=/<command>
@@ -439,7 +439,6 @@ tptoggleCommandUsageDescription=Αλλάζει αν οι τηλεμεταφορ
typeTpacancel=<primary>Για να ακυρώσετε αυτό το αίτημα, πληκτρολογήστε <secondary>/tpacancel<primary>.
typeTpaccept=<primary>Για να τηλεμεταφερθείτε, πληκτρολογήστε <secondary>/tpaccept<primary>.
typeTpdeny=<primary>Για να απορρίψετε αυτό το αίτημα, πληκτρολογήστε <secondary>/tpdeny<primary>.
unsafeTeleportDestination=<dark_red>Ο προορισμός τηλεμεταφοράς είναι μη ασφαλής και η ασφάλεια τηλεμεταφοράς είναι ανενεργή.
versionOutputVaultMissing=<dark_red>Το θησαυροφυλάκιο δεν είναι εγκατεστημένο. Η συνομιλία και τα δικαιώματα ενδέχεται να μην λειτουργούν.
versionOutputFine=<primary>{0} version\: <green>{1}
versionOutputWarn=<primary>{0} έκδοση\: <secondary>{1}
@@ -6,6 +6,7 @@ adventure=adventure
afkCommandDescription=Marks you as away-from-keyboard.
afkCommandUsage=/<command> [player/message...]
afkCommandUsage1=/<command> [message]
afkCommandUsage1Description=Toggles your AFK status with an optional reason
afkCommandUsage2=/<command> <player> [message]
afkCommandUsage2Description=Toggles the afk status of the specified player with an optional reason
alertBroke=broke\:
@@ -1126,15 +1127,9 @@ sellCommandUsage4=/<command> blocks [amount]
sellCommandUsage4Description=Sells all (or the given amount, if specified) of blocks in your inventory
sellHandPermission=<primary>You do not have permission to hand sell.
serverFull=Server is full\!
whitelistKick=Whitelist enabled\!
serverReloading=There''s a good chance you''re reloading your server right now. If that''s the case, why do you hate yourself? Expect no support from the EssentialsX team when using /reload.
serverTotal=<primary>Server Total\:<secondary> {0}
serverUnsupported=You are running an unsupported server version\!
serverUnsupportedClass=Status determining class\: {0}
serverUnsupportedCleanroom=You are running a server that does not properly support Bukkit plugins that rely on internal Mojang code. Consider using an Essentials replacement for your server software.
serverUnsupportedDangerous=You are running a server fork that is known to be extremely dangerous and lead to data loss. It is strongly recommended you switch to a more stable server software like Paper.
serverUnsupportedLimitedApi=You are running a server with limited API functionality. EssentialsX will still work, but certain features may be disabled.
serverUnsupportedDumbPlugins=You are using plugins known to cause severe issues with EssentialsX and other plugins.
serverUnsupportedMods=You are running a server that does not properly support Bukkit plugins. Bukkit plugins should not be used with Forge/Fabric mods\! For Forge\: Consider using ForgeEssentials, or SpongeForge + Nucleus.
setBal=<green>Your balance was set to {0}.
setBalOthers=<green>You set {0}<green>''s balance to {1}.
setSpawner=<primary>Changed spawner type to<secondary> {0}<primary>.
@@ -1224,6 +1219,7 @@ slimeMalformedSize=<dark_red>Malformed size.
smithingtableCommandDescription=Opens up a smithing table.
smithingtableCommandUsage=/<command>
socialSpy=<primary>SocialSpy for <secondary>{0}<primary>\: <secondary>{1}
socialSpyCmdFormat=<gray>{0}\: {1}
socialSpyMsgFormat=<primary>[<secondary>{0}<gray> -> <secondary>{1}<primary>] <gray>{2}
socialSpyMutedPrefix=<white>[<primary>SS<white>] <gray>(muted) <reset>
socialspyCommandDescription=Toggles if you can see msg/mail commands in chat.
@@ -1414,7 +1410,14 @@ tprCommandUsage=/<command>
tprCommandUsage1=/<command>
tprCommandUsage1Description=Teleports you to a random location
tprCommandUsage2=/<command> <world>
tprCommandUsage2Description=Teleports you to a random location in the specified world
tprCommandUsage3=/<command> <world> <player>
tprCommandUsage3Description=Teleports the specified player to a random location in the specified world
tprOtherUser=<primary>Teleporting<secondary> {0}<primary> to a random location.
tprSuccess=<primary>Teleporting to a random location...
tprSuccessDone=<primary>You have been teleported to a random location.
tprNoPermission=<dark_red>You do not have permission to use that location.
tprNotExist=<dark_red>That random teleport location does not exist.
tps=<primary>Current TPS \= {0}
tptoggleCommandDescription=Blocks all forms of teleportation.
tptoggleCommandUsage=/<command> [player] [on|off]
@@ -1426,6 +1429,7 @@ tradeSignFull=<dark_red>This sign is full\!
tradeSignSameType=<dark_red>You cannot trade for the same item type.
treeCommandDescription=Spawn a tree where you are looking.
treeCommandUsage=/<command> <tree|birch|redwood|redmushroom|brownmushroom|jungle|junglebush|swamp|paleoak>
treeCommandUsage1=/<command> <tree|birch|redwood|redmushroom|brownmushroom|jungle|junglebush|swamp|paleoak>
treeCommandUsage1Description=Spawns a tree of the specified type where you''re looking
treeFailure=<dark_red>Tree generation failure. Try again on grass or dirt.
treeSpawned=<primary>Tree spawned.
@@ -1462,8 +1466,10 @@ unlinkCommandDescription=Unlinks your Minecraft account from the currently linke
unlinkCommandUsage=/<command>
unlinkCommandUsage1=/<command>
unlinkCommandUsage1Description=Unlinks your Minecraft account from the currently linked Discord account.
unmuteNotify=<secondary>{0} <primary>unmuted<secondary> {1}<primary>.
unmutedPlayer=<primary>Player<secondary> {0} <primary>unmuted.
unsafeTeleportDestination=<dark_red>The teleport destination is unsafe and teleport-safety is disabled.
unsafeTeleportDestination=<dark_red>The teleport destination is unsafe.
playerNotMuted=<secondary>{0} <primary>is not muted.
unsupportedBrand=<dark_red>The server platform you are currently running does not provide the capabilities for this feature.
unsupportedFeature=<dark_red>This feature is not supported on the current server version.
unvanishedReload=<dark_red>A reload has forced you to become visible.
@@ -1556,6 +1562,7 @@ west=W
whoisAFK=<primary> - AFK\:<reset> {0}
whoisAFKSince=<primary> - AFK\:<reset> {0} (Since {1})
whoisBanned=<primary> - Banned\:<reset> {0}
whoisCommandDescription=Determine basic information about the specified player.
whoisCommandUsage=/<command> <nickname>
whoisCommandUsage1=/<command> <player>
whoisCommandUsage1Description=Gives basic information about the specified player
@@ -1579,6 +1586,7 @@ whoisPlaytime=<primary> - Playtime\:<reset> {0}
whoisTempBanned=<primary> - Ban expires\:<reset> {0}
whoisTop=<primary> \=\=\=\=\=\= WhoIs\:<secondary> {0} <primary>\=\=\=\=\=\=
whoisUuid=<primary> - UUID\:<reset> {0}
whoisFirstLogin=<primary> - First login\:<reset> {0}
whoisWhitelist=<primary> - Whitelist\:<reset> {0}
workbenchCommandDescription=Opens up a workbench.
workbenchCommandUsage=/<command>
@@ -1131,13 +1131,6 @@ sellHandPermission=<primary>You do not have permission to hand sell.
serverFull=Server is full\!
serverReloading=There''s a good chance you''re reloading your server right now. If that''s the case, why do you hate yourself? Expect no support from the EssentialsX team when using /reload.
serverTotal=<primary>Server Total\:<secondary> {0}
serverUnsupported=You are running an unsupported server version\!
serverUnsupportedClass=Status determining class\: {0}
serverUnsupportedCleanroom=You are running a server that does not properly support Bukkit plugins that rely on internal Mojang code. Consider using an Essentials replacement for your server software.
serverUnsupportedDangerous=You are running a server fork that is known to be extremely dangerous and lead to data loss. It is strongly recommended you switch to a more stable server software like Paper.
serverUnsupportedLimitedApi=You are running a server with limited API functionality. EssentialsX will still work, but certain features may be disabled.
serverUnsupportedDumbPlugins=You are using plugins known to cause severe issues with EssentialsX and other plugins.
serverUnsupportedMods=You are running a server that does not properly support Bukkit plugins. Bukkit plugins should not be used with Forge/Fabric mods\! For Forge\: Consider using ForgeEssentials, or SpongeForge + Nucleus.
setBal=<green>Your balance was set to {0}.
setBalOthers=<green>You set {0}<green>''s balance to {1}.
setSpawner=<primary>Changed spawner type to<secondary> {0}<primary>.
@@ -1474,7 +1467,7 @@ unlinkCommandUsage=/<command>
unlinkCommandUsage1=/<command>
unlinkCommandUsage1Description=Unlinks your Minecraft account from the currently linked Discord account.
unmutedPlayer=<primary>Player<secondary> {0} <primary>unmuted.
unsafeTeleportDestination=<dark_red>The teleport destination is unsafe and teleport-safety is disabled.
unsafeTeleportDestination=<dark_red>The teleport destination is unsafe.
unsupportedBrand=<dark_red>The server platform you are currently running does not provide the capabilities for this feature.
unsupportedFeature=<dark_red>This feature is not supported on the current server version.
unvanishedReload=<dark_red>A reload has forced you to become visible.
@@ -1591,6 +1584,7 @@ whoisPlaytime=<primary> - Playtime\:<reset> {0}
whoisTempBanned=<primary> - Ban expires\:<reset> {0}
whoisTop=<primary> \=\=\=\=\=\= WhoIs\:<secondary> {0} <primary>\=\=\=\=\=\=
whoisUuid=<primary> - UUID\:<reset> {0}
whoisFirstLogin=<primary> - First login\:<reset> {0}
whoisWhitelist=<primary> - Whitelist\:<reset> {0}
workbenchCommandDescription=Opens up a workbench.
workbenchCommandUsage=/<command>
@@ -10,13 +10,13 @@ afkCommandUsage1Description=Cambia tu estado de ausente con un motivo opcional
afkCommandUsage2=/<command> <player> [mensaje]
afkCommandUsage2Description=Alterna el estado de ausente de el jugador especificado con una razón opcional
alertBroke=roto\:
alertFormat=<dark_aqua>[{0}] <white> {1} <primary> {2} en\: {3}
alertFormat=<dark_aqua>[{0}] <reset> {1} <primary> {2} en\: {3}
alertPlaced=colocado\:
alertUsed=usado\:
alphaNames=<dark_red>Los nombres de jugadores sólo pueden contener letras, números y guión bajo.
alphaNames=<dark_red>Los nombres de jugadores solo pueden contener letras, números y guión bajo.
antiBuildBreak=<dark_red>No puedes romper<secondary> {0} <dark_red>bloques aquí.
antiBuildCraft=\n\n<dark_red>No tienes permiso para crear<secondary> {0}<dark_red>.
antiBuildDrop=<dark_red>No puedes tirar <secondary> {0}<dark_red>.
antiBuildCraft=<dark_red>No tienes permiso para crear<secondary> {0}<dark_red>.
antiBuildDrop=<dark_red>No puedes soltar objetos <secondary> {0}<dark_red>.
antiBuildInteract=<dark_red>No puedes interactuar con<secondary> {0}<dark_red>.
antiBuildPlace=<dark_red>No puedes colocar <secondary>{0} <dark_red>aquí.
antiBuildUse=<dark_red>No puedes usar <secondary>{0}<dark_red>.
@@ -66,6 +66,7 @@ banExempt=<dark_red>No puedes banear a ese jugador.
banExemptOffline=<dark_red>No puedes banear a jugadores que no están conectados.
banFormat=<dark_red>Baneado\: <reset> {0}
banIpJoin=Your IP address is banned from this server. Reason\: {0}
tempbanIpJoin=Tu dirección IP está temporalmente bloqueada de este servidor por {0}. Razón\: {1}
banJoin=Estás baneado de este servidor. Motivo\: {0}
banipCommandDescription=Banea una dirección IP.
banipCommandUsage=/<command> <adress> [motivo]
@@ -153,6 +154,7 @@ commandHelpLine1=<primary>Comando de ayuda\: <white>/{0}
commandHelpLine2=<primary>Descripción\: <white>{0}
commandHelpLine3=<primary>Uso(s);
commandHelpLine4=<primary>Alias\: <white>{0}
commandHelpLineUsage={0} <primary>- {1}
commandNotLoaded=<dark_red>El comando {0} no está cargado correctamente.
consoleCannotUseCommand=Este comando no puede usarse por Consola.
compassBearing=<primary>Orientación\: {0} ({1} grados).
@@ -180,6 +182,7 @@ createkitCommandUsage=/<command> <kitname> <delay>
createkitCommandUsage1=/<comando> <nombre de kit> <demora>
createkitCommandUsage1Description=Crea un kit con el nombre y tiempo de espera dados
createKitFailed=<dark_red>Ocurrio un error durante la creacion del kit {0}.
createKitSeparator=<st>-----------------------
createKitSuccess=<primary>Kit creado\: <white>{0}\n<primary>Tiempo de espera\: <white>{1}\n<primary>Link\: <white>{2}\n<primary>Copia el contenido del link de arriba en tu archivo kits.yml.
createKitUnsupported=<dark_red>La 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}
@@ -249,6 +252,7 @@ discordCommandDescription=Envía el enlace de invitación de Discord a un jugado
discordCommandLink=<primary>¡Únete a nuestro servidor de Discord en <secondary><click\:open_url\:"{0}">{0}</click><primary>\!
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
discordCommandUsage1Description=Envía el enlace de invitación de Discord al jugador
discordCommandExecuteDescription=Ejecuta un comando de consola en el servidor de Minecraft.
discordCommandExecuteArgumentCommand=El comando a ejecutar
discordCommandExecuteReply=Ejecutando comando\: "/{0}"
@@ -273,12 +277,14 @@ 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.
discordErrorInvalidPerms=¡Tu bot no fue configurado con los permisos requeridos\! Los permisos faltantes son\: {0}.
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".
discordLinkInvalidGroup=Grupo inválido {0} proporcionado para el rol {1}. Los siguientes grupos están disponibles\: {2}
discordLinkInvalidRole=Un ID de rol inválido, {0}, ha sido proporcionado para el grupo\: {1}. Puedes ver el ID de los roles con el comando /roleinfo en Discord.
discordLinkInvalidRoleInteract=El rol, {0} ({1}), no se puede usar para la sincronización de roles debido a que está por encima del rol máximo de tu bot. Debes mover el rol del bot por encima de "{0}" o mover "{0}" por debajo del rol del bot.
discordLinkInvalidRoleManaged=El rol, {0} ({1}), no se puede utilizar para sincronizar de roles debido a que está controlado por otro bot o integración.
discordLinkLinked=<primary>Para vincular tu cuenta de Minecraft a Discord, escribe <secondary>{0} <primary>en el servidor de Discord.
discordLinkLinkedAlready=<primary>Ya tienes vinculada tu cuenta de Discord\! Si deseas desvincularla usa <secondary>/unlink<primary>.
@@ -334,9 +340,11 @@ enderchestCommandDescription=Te permite ver dentro de un enderchest.
enderchestCommandUsage=/<command> [jugador]
enderchestCommandUsage1=/<command>
enderchestCommandUsage1Description=Abre tu cofre de ender
enderchestCommandUsage2=/<command> <jugador>
enderchestCommandUsage2Description=Abre el cofre de ender del jugador mencionado
equipped=Equipado
errorCallingCommand=Error al ejecutar el comando /{0}
errorWithMessage=<secondary>Error\:<dark_red> {0}
essChatNoSecureMsg=La versión de chat de EssentialsX {0} no soporta el chat seguro en este software del servidor. Actualiza EssentialsX, y si este problema persiste, informa a los desarrolladores.
essentialsCommandDescription=Recarga Essentials.
essentialsCommandUsage=/<command>
@@ -423,6 +431,7 @@ gameMode=<primary>El modo de juego de<secondary> {1} <primary>ha sido cambiado a
gameModeInvalid=<dark_red>Necesitas 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>
@@ -464,6 +473,7 @@ groupNumber=<secondary>{0}<white> conectados, para ver la lista completa\:<secon
hatArmor=<secondary>¡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
@@ -484,6 +494,7 @@ helpCommandDescription=Mira la lista de comandos disponibles.
helpCommandUsage=/<command> [térmido de búsqueda] [página]
helpConsole=Para obtener ayuda de la consola, escribe ''?''.
helpFrom=<primary>Comandos de {0}\:
helpLine=<primary>/{0}<reset>\: {1}
helpMatching=<gray>Comandos que coinciden con "{0}"\:
helpOp=<dark_red>[Ayuda de Op]<reset> <primary>{0}\:<reset> {1}
helpPlugin=<dark_red>{0}<reset>\: Ayuda para el plugin\: /help {1}
@@ -510,6 +521,7 @@ hours=horas
ice=<primary>Sientes mucho más frío...
iceCommandDescription=Enfría a un jugador.
iceCommandUsage=/<command> [jugador]
iceCommandUsage1=/<command>
iceCommandUsage1Description=Te enfría
iceCommandUsage2=/<command> <jugador>
iceCommandUsage2Description=Congela al jugador seleccionado
@@ -518,6 +530,7 @@ iceCommandUsage3Description=Congela a todos los jugadores en línea
iceOther=<primary>De tranquis<secondary> {0}<primary>.
ignoreCommandDescription=Ignorar o dejar de ignorar a otros jugadores.
ignoreCommandUsage=/<command> <jugador>
ignoreCommandUsage1=/<command> <jugador>
ignoreCommandUsage1Description=Desactiva o activa al jugador dado
ignoredList=<primary>Ignorado\:<reset> {0}
ignoreExempt=<dark_red>No puedes ignorar a este jugador.
@@ -537,7 +550,9 @@ invalidCharge=<dark_red>Carga no válida.
invalidFireworkFormat=<dark_red>La opción <secondary>{0} <dark_red>no es un valor válido para <secondary>{1}<dark_red>.
invalidHome=<dark_red>¡El hogar<secondary> {0} <dark_red>no existe\!
invalidHomeName=<dark_red>¡Nombre de hogar inválido\!
invalidItemFlagMeta=<dark_red>Meta de itemflag no válida\: <secondary>{0}<dark_red>.
invalidMob=<dark_red>Tipo de mob inválido.
invalidModifier=<dark_red>Modificador no válido.
invalidNumber=Número inválido.
invalidPotion=<dark_red>Poción inválida.
invalidPotionMeta=<dark_red>Opciones de poción inválidas\: <secondary>{0}<dark_red>.
@@ -553,10 +568,13 @@ inventoryClearingFromAll=<gray>Limpiando el inventario de todos los usuarios...
inventoryClearingStack=<primary>Eliminado<secondary> {0} <primary>de<secondary> {1} <primary>de {2}<primary>.
inventoryFull=<dark_red>Tu inventario está vacío.
invseeCommandDescription=Ver el inventario de otros jugadores.
invseeCommandUsage=/<command> <player>
invseeCommandUsage1=/<command> <player>
invseeCommandUsage1Description=Abre el inventario del jugador especificado
invseeNoSelf=<secondary>Solo puedes ver los inventarios de otros jugadores.
is=es
isIpBanned=<primary>IP <secondary>{0} <primary>está baneada.
internalError=<secondary>Se ha producido un error interno al intentar ejecutar este comando.
itemCannotBeSold=<dark_red>¡Ese objeto no puede ser vendido al servidor\!
itemCommandDescription=Generar un elemento.
itemCommandUsage=/<command> <item|numeric> [cantidad [itemmeta...]]
@@ -564,12 +582,15 @@ 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=<primary>ID\:<secondary> {0}
itemloreClear=<primary>Has 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=/<command> set <line number> <text>
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=<dark_red>Necesitas un item en la mano para editar su lore.
itemloreMaxLore=<dark_red>No puedes añadir más descripción a este ítem.
@@ -582,7 +603,9 @@ itemNames=<primary>Nombre corto del ítem\:<reset> {0}
itemnameClear=<primary>Has eliminado el nombre de este objeto.
itemnameCommandDescription=Nombra un item.
itemnameCommandUsage=/<command> [nombre]
itemnameCommandUsage1=/<command>
itemnameCommandUsage1Description=Elimina el nombre del item sostenido
itemnameCommandUsage2=/<command> <name>
itemnameCommandUsage2Description=Establece el nombre del item sostenido al texto dado
itemnameInvalidItem=<secondary>Necesitas tener un objeto en la mano para renombrarlo.
itemnameSuccess=<primary>Has renombrado el objeto de tu mano a "<secondary>{0}<primary>".
@@ -599,11 +622,14 @@ itemSpawn=<primary>Dando {0} de {1}
itemType=<primary>Objeto\:<secondary> {0}
itemdbCommandDescription=Busca un item.
itemdbCommandUsage=/<command> <item>
itemdbCommandUsage1=/<command> <item>
itemdbCommandUsage1Description=Busca el item dado en la base de datos de items
jailAlreadyIncarcerated=<dark_red>Ese jugador ya está en la cárcel\:<secondary> {0}
jailList=<primary>Prisiones\:<reset> {0}
jailMessage=<secondary>¡Por el crimen hacer, a la cárcel irás\!
jailNotExist=<dark_red>Esa cárcel no existe.
jailNotifyJailed=<primary>El jugador<secondary> {0} <primary>ha sido encarcelado por <secondary>{1}.
jailNotifyJailedFor=<primary>El jugador<secondary> {0} <primary>ha sido encarcelado durante<secondary> {1} <primary>por <secondary>{2}<primary>.
jailNotifySentenceExtended=<primary>El tiempo en cárcel <primary>del jugador<secondary>{0} <primary>ha sido extendido a <secondary>{1} <primary>por <secondary>{2}<primary>.
jailReleased=<primary>El jugador <secondary>{0}<primary> ha salido de la cárcel.
jailReleasedPlayerNotify=<gray>¡Has sido liberado\!
@@ -613,23 +639,31 @@ jailWorldNotExist=<dark_red>Ese mundo de la cárcel no existe.
jumpEasterDisable=<primary>Modo asistente de vuelo desactivado.
jumpEasterEnable=<primary>Modo asistente de vuelo activado.
jailsCommandDescription=Lista todas las cárceles.
jailsCommandUsage=/<command>
jumpCommandDescription=Salta al bloque más cercano en la línea de visión.
jumpCommandUsage=
jumpError=<dark_red>Eso dañaría el cerebro de tu ordenador.
kickCommandDescription=Expulsa al jugador especificado con una razón.
kickCommandUsage=/<command> <player> [reason]
kickCommandUsage1=/<comando> <jugador> [razón]
kickCommandUsage1Description=Expulsa al jugador especificado con una razón opcional
kickDefault=Has sido expulsado del servidor\! Nota\: Revisa tu comportamiento
kickedAll=<dark_red>Todos los jugadores han sido expulsados.
kickExempt=<dark_red>No puedes expulsar a ese jugador.
kickallCommandDescription=Expulsa a todos los jugadores del servidor excepto al emisor.
kickallCommandUsage=/<command> [razón]
kickallCommandUsage1=/<command> [reason]
kickallCommandUsage1Description=Expulsa a todos los jugadores con una razón opcional
kill=<gray>Has matado a<secondary> {0}<gray>.
killCommandDescription=Mata al jugador especificado.
killCommandUsage=/<command> <player>
killCommandUsage1=/<command> <player>
killCommandUsage1Description=Mata al jugador especificado
killExempt=<dark_red>No puedes matar a <secondary>{0}<dark_red>.
kitCommandDescription=Obtiene el kit especificado o ve todos los kits disponibles.
kitCommandUsage=/<command> [kit] [jugador]
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=<primary>El kit <secondary>{0} <primary>contiene\:
kitError=<secondary>No hay ningún kit válido.
@@ -644,6 +678,7 @@ kitReceive=<primary>Kit<secondary> {0}<primary> recibido.
kitReset=<primary>Reinicia el tiempo de espera del kit <secondary> {0} <primary>.
kitresetCommandDescription=Reinicia el tiempo de espera 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=<primary>Restableciendo el tiempo de espera del kit <secondary>{0} <primary>durante <secondary>{1}<primary>.
kits=<gray>Kits disponibles\: {0}
@@ -693,6 +728,7 @@ mailCommandUsage5=
mailCommandUsage5Description=Envía al jugador especificado el mensaje dado
mailCommandUsage6=/<command> sendall <message>
mailCommandUsage6Description=Envía a todos los jugadores el mensaje proporcionado
mailCommandUsage7=/<command> sendtemp <player> <expire time> <message>
mailCommandUsage7Description=Envía al jugador especificado el mensaje, el cual expirará en el tiempo de caducidad establecido
mailCommandUsage8Description=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}
@@ -703,6 +739,7 @@ mailFormatNewReadTimed=<primary>[<yellow>⚠<primary>] <primary>[<reset>{0}<prim
mailFormat=<primary>[<reset>{0}<primary>] <reset>{1}
mailMessage={0}
mailSent=<primary>¡El correo ha sido enviado\!
mailSentTo=<secondary>{0}<primary> ha sido enviado el siguiente correo\:
mailSentToExpire=<secondary>{0}<primary> se ha enviado el siguiente correo que expirará en <secondary>{1}<primary>\:
mailTooLong=<dark_red>Mensaje muy largo. Intenta menos de 1000 caracteres.
markMailAsRead=<primary>Para marcar tu correo como leído, escribe<secondary> /mail clear<primary>.
@@ -717,6 +754,7 @@ meCommandUsage1Description=Describe una acción
meSender=yo
meRecipient=mi
minimumBalanceError=<dark_red>El balance mínimo que un jugador puede tener es {0}.
minimumPayAmount=<secondary>El monto mínimo que puedes pagar es {0}.
minute=minuto
minutes=minutos
missingItems=<dark_red>No tienes <secondary>{0}x {1}<dark_red>.
@@ -739,6 +777,11 @@ moveSpeed=<primary>Velocidad establecida de<secondary> {0} <primary>a<secondary>
msgCommandDescription=Envía un mensaje privado al jugador especificado.
msgCommandUsage=/<command> <hacia> <mensaje>
msgCommandUsage1Description=Envía el mensaje privado al jugador especificado
msgDisabledFor=<primary>Recibiendo mensajes <secondary>deshabilitados <primary>para <secondary>{0}<primary>.
msgEnabled=<primary>Recibiendo mensajes <secondary>habilitados<primary>.
msgEnabledFor=<primary>Recibiendo mensajes <secondary>habilitados <primary>para <secondary>{0}<primary>.
msgFormat=<primary>[<reset>{0}<primary>] <primary>[<reset>{1}<primary>] <reset>{2}
msgIgnore=<secondary>{0} <dark_red>tiene mensajes desactivados.
msgtoggleCommandDescription=Bloquea la recepción de mensajes privados.
msgtoggleCommandUsage=/<command> [jugador] [on|off]
msgtoggleCommandUsage1=/<command> [jugador]
@@ -747,6 +790,7 @@ multipleCharges=<dark_red>Solo puedes aplicar una carga a este cohete.
multiplePotionEffects=<dark_red>No 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
@@ -758,6 +802,7 @@ mutedUserSpeaks={0} intentó hablar, pero está silenciado.
muteExempt=<secondary>No puedes silenciar a ese jugador.
muteExemptOffline=<dark_red>No puedes silenciar a jugadores que no están conectados.
muteNotify=<secondary>{0} <primary>ha silenciado a <secondary>{1}<primary>.
muteNotifyFor=/<command> <nombre>.
muteNotifyForReason=<secondary>{0} <primary>ha silenciado a <secondary>{1}<primary> durante<secondary> {2}<primary>. <primary>Motivo\: <secondary>{3}
muteNotifyReason=<secondary>{0} <primary>ha silenciado a <secondary>{1}<primary>. <primary>Motivo\: <secondary>{2}
nearCommandDescription=Lista los jugadores cerca o alrededor de un jugador.
@@ -766,14 +811,17 @@ 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=<primary>Jugadores cercanos\:<reset> {0}
nearbyPlayersList={0}<white>(<secondary>{1}m<white>)
negativeBalanceError=<dark_red>El jugador no tiene permitido tener dinero por debajo de 0$.
nickChanged=<primary>Nick cambiado.
nickCommandDescription=Cambia tu apodo o el de otro jugador.
nickCommandUsage=/<command> [jugador] <apodo|off>
nickCommandUsage1=/<command> <nombre>
nickCommandUsage1Description=Cambia tu apodo al texto dado
nickCommandUsage2=/<comando> apagado
nickCommandUsage2Description=Elimina tu nick
@@ -785,6 +833,7 @@ nickDisplayName=<dark_red>Tienes que activar el cambio de nick en la configuraci
nickInUse=<dark_red>Ese nick ya está en uso. Prueba a usar otro.
nickNameBlacklist=<dark_red>Ese apodo no está permitido.
nickNamesAlpha=<dark_red>No puedes usar símbolos raros.
nickNamesOnlyColorChanges=<dark_red>Los apodos solo pueden tener sus colores cambiados.
nickNoMore=<primary>Ya no tienes un nombre personalizado.
nickSet=<primary>Tu nick ahora es <secondary>{0}<primary>.
nickTooLong=<dark_red>Ese nick es demasiado largo.
@@ -799,6 +848,7 @@ northWest=NW
noGodWorldWarning=<dark_red>¡Advertencia\! El modo dios ha sido desactivado en este mundo.
noHomeSetPlayer=<primary>El jugador no ha establecido hogares.
noIgnored=<primary>No estás ignorando a nadie.
noJailsDefined=<primary>No hay cárceles definidas.
noKitGroup=<dark_red>No tienes acceso a este kit.
noKitPermission=<secondary>Necesitas el permiso <dark_red>{0}<secondary> para usar ese kit.
noKits=<gray>No hay kits disponibles aún.
@@ -824,6 +874,7 @@ noPotionEffectPerm=<dark_red>No tienes permiso para aplicar el efecto<secondary>
noPowerTools=<primary>No tienes ninguna herramienta eléctrica asignada.
notAcceptingPay=<dark_red>{0} <dark_red>no esta aceptando pagos.
notAllowedToLocal=<dark_red>No tienes permiso para hablar en el chat local.
notAllowedToQuestion=<dark_red>No tienes permiso para usar la pregunta.
notAllowedToShout=<dark_red>No tienes permiso para gritar.
notEnoughExperience=<dark_red>No tienes la experiencia necesaria.
notEnoughMoney=<dark_red>No tienes dinero suficiente.
@@ -848,7 +899,10 @@ oversizedTempban=<dark_red>No puedes banear por ese periodo de tiempo.
passengerTeleportFail=<dark_green>♣<light_purple><obf>ii<green><b>Skyblock<light_purple><obf>ii<dark_green>♣ No puedes teletransportarte mientras transportas pasajeros.
payCommandDescription=Paga a otro jugador con tu dinero.
payCommandUsage=/<command> <jugador> <cantidad>
payCommandUsage1=/<command> <player> <amount>
payCommandUsage1Description=Paga al jugador especificado la cantidad de dinero dada
payConfirmToggleOff=<primary>Ya no se te pedirá que confirmes los pagos.
payConfirmToggleOn=<primary>Ahora se te pedirá que confirmes los pagos.
payDisabledFor=<primary>Aceptación de pagos desactivado para <secondary>{0}<primary>.
payEnabledFor=<primary>Aceptación de pagos activado para <secondary>{0}<primary>.
payMustBePositive=<dark_red>La cantidad a pagar debe ser positiva.
@@ -884,6 +938,7 @@ 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=<primary>Tiempo de juego\:<secondary> {0}
playtimeOther=<primary>Tiempo de juego de {1}<primary>\:<secondary> {0}
@@ -892,6 +947,7 @@ posPitch=<gray>Giro\: {0} (Ángulo de cabeza)
possibleWorlds=<primary>Posibles mundos son los números desde el <secondary>0<primary> hasta el <secondary>{0}<primary>.
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
@@ -925,6 +981,8 @@ 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
powertoollistCommandDescription=Enumera todas las herramientas de energía actuales.
powertoollistCommandUsage=/<command>
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.
@@ -937,9 +995,11 @@ 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=<primary>La hora de <secondary>{0} es<secondary> {1}<primary>.
pTimeCurrentFixed=<secondary>{0}<primary> la hora ha sido corregida a<secondary> {1}<primary>.
@@ -958,13 +1018,17 @@ pWeatherReset=<primary>Clima reseteado para\: <secondary>{0}
pWeatherSet=<primary>Clima establecido en <secondary>{0}<primary> para\: <secondary>{1}.
questionFormat=<dark_green>[Pregunta]<reset> {0}
rCommandDescription=Responde rápidamente al último jugador que te habló.
rCommandUsage=/<command> <mensajes>
rCommandUsage1=/<comando> <mensaje>
rCommandUsage1Description=Responde con el texto dado al último jugador que te ha mandado un mensaje
radiusTooBig=<dark_red>Radidemasiado grande\! El máximo es<secondary> {0}<dark_red>.
readNextPage=<gray>Escribe<secondary> /{0} {1} <gray>para leer la página siguiente.
realName=<white>{0}<reset><primary> es <white>{1}
realnameCommandDescription=Muestra el nombre de usuario de alguien basado en su apodo.
realnameCommandUsage=/<command> <apodo>
realnameCommandUsage1=/<command> <nombre>
realnameCommandUsage1Description=Muestra el nombre de usuario de un jugador basado en el apodo dado
recentlyForeverAlone=<dark_red>{0} se desconectó recientemente.
recipe=<primary>Receta para <secondary>{0}<primary> (<secondary>{1}<primary> de <secondary>{2}<primary>)
recipeBadIndex=No hay ningún crafteo con ese número.
recipeCommandDescription=Muestra como craftear items.
@@ -972,6 +1036,7 @@ recipeCommandUsage=/<command> <<item>|hand> [number]
recipeCommandUsage1=/<command> <<item>|hand> [page]
recipeCommandUsage1Description=Muestra como crear el objeto dado
recipeFurnace=<primary>Fundir\: <secondary>{0}<primary>.
recipeGrid=<secondary>{0}X <primary>| {1}X <primary>| {2}X
recipeGridItem=<secondary>{0}X <primary>es <secondary>{1}
recipeMore=<primary>Escribe<secondary> /{0} {1} <number><primary> para ver otros crafteos sobre <secondary>{2}<primary>.
recipeNone=No existen crafteos para {0}
@@ -1038,33 +1103,36 @@ seconds=segundos
seenAccounts=<primary>El jugador ha sido también conocido como\:<secondary> {0}
seenCommandDescription=Muestra la última hora de desconexión de un jugador.
seenCommandUsage=/<command> <jugador>
seenCommandUsage1=/<command> <nombre>
seenCommandUsage1Description=Muestra la información sobre el tiempo desconectado, bans, silencios y UUID del jugador especificado
seenOffline=<primary>El jugador<secondary> {0} <primary>ha estado <dark_red>desconectado<primary> desde <secondary>{1}<primary>.
seenOnline=<primary>El jugador<secondary> {0} <primary>ha estado <green>conectado<primary> desde <secondary>{1}<primary>.
sellBulkPermission=<primary>No tienes permiso para vender al por mayor.
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]
sellCommandUsage2=/<command> hand [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=<primary>No tienes permiso para vender a mano.
serverFull=¡El servidor está lleno\!
whitelistKick=Lista blanca habilitada
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.
serverTotal=<primary>Total\:<secondary> {0}
serverUnsupported=Estas ejecutando una version del servidor no soportada\!
serverUnsupportedClass=Estado de clase determinante\: {0}
serverUnsupportedCleanroom=Estás ejecutando un servidor que no es compatible con los plugins de Bukkit que dependen del código interno de Mojang. Si es posible sería conveniente reemplazar Essentials para el software del servidor.
serverUnsupportedDangerous=Está ejecutando un fork de servidor que se sabe que es extremadamente peligroso y que lleva a la pérdida de datos. Se recomienda encarecidamente que cambie a un software de servidor más estable como PaperMC.
serverUnsupportedLimitedApi=Está ejecutando un servidor con una funcionalidad API limitada. EssentialsX seguirá funcionando, pero ciertas características pueden estar desactivadas.
serverUnsupportedDumbPlugins=Estás usando plugins que se sabe que causan graves problemas con EssentialsX y otros plugins.
serverUnsupportedMods=Estás ejecutando un servidor que no es compatible con los plugins de Bukkit. ¡No se deben utilizar con mods de Forge/Fabric\! Para Forge\: es recomendable usar ForgeEssentials o SpongeForge + Nucleus.
serverSnapshot=<red>¡Estás ejecutando una versión de desarrollo de Minecraft\! EssentialsX puede no funcionar correctamente en esta versión y no está soportada.
serverUnsupported=<red>¡Estás ejecutando una versión de servidor no soportada\!
serverUnsupportedCleanroom=<dark_red>Estás ejecutando un servidor que no es compatible con plugins de Bukkit que se basan en el código interno de Mojang. Sería conveniente usar un reemplazo de Essentials para tu software de servidor.
serverUnsupportedDangerous=<dark_red>Estás ejecutando un fork de servidor que se sabe que es extremadamente peligroso y conlleva a pérdida de datos. Se recomienda encarecidamente cambiar el software de servidor a uno más estable como Paper.
setBal=<green>Economía personal establecida en {0}.
setBalOthers=<green>La economia de {0}<green> ha sido establecida a {1}.
setSpawner=<secondary>ambiado tipo de generador a<secondary> {0}<primary>.
sethomeCommandDescription=Establece tu hogar en tu posición actual.
sethomeCommandUsage=/<command> [[jugador\:]nombre]
sethomeCommandUsage1=/<command> <nombre>
sethomeCommandUsage1Description=Establece tu hogar con el nombre dado en tu ubicación
sethomeCommandUsage2Description=Establece el hogar con el nombre dado el jugador especificado en tu ubicación
setjailCommandDescription=Crea una cárcel donde especificaste, llamada [jailname].
@@ -1257,6 +1325,7 @@ 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=/<command> *
tpdenyCommandUsage3Description=Rechaza todas las solicitudes de teletransporte
@@ -1322,7 +1391,6 @@ unlinkCommandUsage=/<command>
unlinkCommandUsage1=/<command>
unlinkCommandUsage1Description=Desvincula tu cuenta de Minecraft de la cuenta de Discord actualmente vinculada.
unmutedPlayer=<primary>El jugador<secondary> {0} <primary>ya no está silenciado.
unsafeTeleportDestination=<dark_red>El destino es inseguro y el teletransporte seguro está desactivado.
unsupportedBrand=<dark_red>La plataforma en la que se ejecuta el servidor no proporciona las capacidades para esta función.
unsupportedFeature=<dark_red>Esta característica no es compatible con la versión actual del servidor.
unvanishedReload=<dark_red>Un reinicio del servidor te ha forzado a perder la invisibilidad.
@@ -1428,6 +1496,7 @@ whoisNick=<gray> - Nick\:<white> {0}
whoisOp=<gray> - OP\:<white> {0}
whoisTempBanned=<primary> - Baneo expira en\:<reset> {0}
whoisTop=<primary> \=\=\= Acerca de\:<secondary> {0} <primary> \=\=\=
whoisFirstLogin=<primary> - Primer inicio de sesión\:<reset> {0}
whoisWhitelist=<primary> - Whitelist\:<reset> {0}
workbenchCommandDescription=Abre una mesa de crafteo.
workbenchCommandUsage=/<command>
@@ -951,11 +951,6 @@ sellHandPermission=<primary>Sul puudub käsimüügi luba.
serverFull=Server on täis\!
serverReloading=On suur tõenäosus, et laadid oma serverit hetkel uuesti. Kui see on tõsi, miks sa end vihkad? EssentialsX meeskond ei paku sulle tuge, kui kasutad käsklust /reload.
serverTotal=<primary>Serveris kokku\:<secondary> {0}
serverUnsupported=Sa käitad mittetoetatud serveriversiooni\!
serverUnsupportedClass=Olekut määrav klass\: {0}
serverUnsupportedCleanroom=Käitad serverit, mis ei toeta korralikult Bukkiti pluginaid, mis kasutavad sisemist Mojangi koodi. Kaalu oma serveri tarkvaraga sobiva Essentialsi alternatiivi kasutamist.
serverUnsupportedLimitedApi=Käitad piiratud rakendusliidesega serverit. EssentialsX töötab siiski, aga mõned funktsioonid võivad olla keelatud.
serverUnsupportedMods=Käitad serverit, mis ei toeta Bukkiti pluginaid korralikult. Bukkiti pluginaid ei peaks koos Forge''i/Fabricu modidega kasutama\! Kaalu Forge''i puhul ForgeEssentialsi või SpongeForge + Nucleuse kasutamist.
setBal=<green>Sinu rahasummaks on määratud\: {0}.
setBalOthers=<green>Määrasid mängija {0}<green> rahasummaks {1}.
setSpawner=<primary>Muutsid elukatekitaja tüübiks <secondary> {0}<primary>.
@@ -1185,7 +1180,6 @@ unlimitedItems=<primary>Lõpmatud esemed\:<reset>
unlinkCommandUsage=/<command>
unlinkCommandUsage1=/<command>
unmutedPlayer=<primary>Mängija<secondary> {0} <primary>vaigistus eemaldatud.
unsafeTeleportDestination=<dark_purple>Teleporteerutav sihtpunkt on ohtlik ning teleporteerimise-ohutus on keelatud.
unsupportedBrand=<dark_red>Käitatav serveriplatvorm ei paku selle funktsiooni jaoks kasutusvõimalusi.
unsupportedFeature=<dark_red>See funktsioon ei ole toetatud antud serveriversioonis.
unvanishedReload=<dark_red>Taaslaadimine sundis sind muutuma nähtavaks.
@@ -3,6 +3,7 @@ adventure=seikkailu
afkCommandDescription=Merkitsee sinut "näppäimistöltä-poistuneeksi".
afkCommandUsage=/<command> [pelaaja/viesti...]
afkCommandUsage1=/<command> [viesti]
afkCommandUsage1Description=
afkCommandUsage2=/<command> <player> [message]
afkCommandUsage2Description=Vaihtaa määritellyn pelaajan AFK-tilan valitulla syyllä
alertBroke=rikkoi\:
@@ -704,11 +705,6 @@ sellHandPermission=<primary>Sinulla ei ole lupaa myydä kädestä.
serverFull=Palvelin on täynnä\!
serverReloading=On hyvin mahdollista, että lataat palvelinta uudelleen juuri nyt. Jos näin on, miksi vihaat itseäsi? Älä odota minkäänlaista tukea EssentialsX-tiimiltä, kun käytät /reload -komentoa.
serverTotal=<primary>Palvelimen kokonaisrahamäärä\:<secondary> {0}
serverUnsupported=Käytössäsi ei ole tuettua palvelinversiota\!
serverUnsupportedClass=Tilan määrittävä luokka\: {0}
serverUnsupportedCleanroom=Käytössäsi on palvelin, joka ei tue oikein Bukkit lisäosia, jotka tukeutuvat sisäiseen Mojang koodiin. Harkitse Essentialsin korvaavan lisäosan käyttöä palvelimellasi.
serverUnsupportedLimitedApi=Käytössäsi on palvelin, jolla on rajallinen API-toiminto. EssentialsX toimii edelleen, mutta tietyt ominaisuudet saattavat olla poissa käytöstä.
serverUnsupportedMods=Käytössäsi on palvelin, joka ei tue oikein Bukkit-plugineita. Bukkit-plugineita ei tule käyttää Forge/Fabric-modien kanssa\! Forgen yhteydessä, harkitse ForgeEssentialsin tai SpongeForgen + Nucleuksen käyttöä.
setBal=<green>Rahatilanteesi on asetettu arvoon {0}.
setBalOthers=<green>Asetit pelaajan {0}<green> rahatilanteen arvoon {1}.
setSpawner=<primary>Vaihdettiin spawnerin tyypiksi<secondary> {0}<primary>.
@@ -870,7 +866,6 @@ unlimitedCommandUsage=/<command> <list|item|clear> [player]
unlimitedItemPermission=<dark_red>Ei lupaa rajoittamattomille tavaroille <secondary>{0}<dark_red>.
unlimitedItems=<primary>Loputtomat tavarat\:<reset>
unmutedPlayer=<primary>Pelaajalta<secondary> {0} <primary>on poistettu hiljennys.
unsafeTeleportDestination=<dark_red>Teleporttikohde ei ole turvallinen ja teleporttiturvallisuus on poistettu käytöstä.
unsupportedBrand=<dark_red>Palvelinalusta joka on parhaillaan käytössä, ei tarjoa ominaisuuksia tälle ominaisuudelle.
unsupportedFeature=<dark_red>Tätä ominaisuutta ei tueta nykyisessä palvelimen versiossa.
unvanishedReload=<dark_red>Sinut on pakotettu näkyväksi uudelleenlatauksen vuoksi.
@@ -2,6 +2,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=<dark_aqua>[{0}] <reset> {1} <primary> {2} sa\: {3}
@@ -17,6 +18,7 @@ antiBuildUse=<dark_red>Hindi ka pinapayagang maggamit ng<secondary> {0}<dark_red
antiochCommandDescription=Isang maliit na kasaya para sa mga admin.
antiochCommandUsage=/<command> [mensahe]
anvilCommandDescription=Magbubuksan ng palihan.
anvilCommandUsage=/<command>
autoAfkKickReason=Inalis ka dahil hindi ka gumagalaw ng mas matagal kaysa sa {0} minuto.
autoTeleportDisabled=<primary>Hindi ka na umo-awtomatikong nag-a-aprub ng mga hiling ng paglilipat.
autoTeleportDisabledFor=Si <secondary>{0}<primary> ay hindi na umo-awtomatikong nag-a-aprub ng mga hiling ng paglilipat.
@@ -25,7 +27,9 @@ autoTeleportEnabledFor=Si <secondary>{0}<primary> ay umo-awtomatikong nag-a-apru
backAfterDeath=<primary>Gamitin ang<secondary> /back<primary> na utos upang bumalik sa iyong punto ng kamatayan.
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=<primary>Binalik si<secondary> {0}<primary> sa nakaraang locasyon.
backupCommandDescription=Itatakbo ang backup kung kinongfigure.
@@ -37,14 +41,19 @@ backupInProgress=<dark_red>Mayroon pang eksternal backup skript sa kasalukuyang
backUsageMsg=<primary>Bumabalik sa nakaraang locasyon.
balance=<green>Pitaka\:<secondary> {0}
balanceCommandDescription=Sinasabi ang kasalukuyang pitaka ng manlalaro.
balanceCommandUsage=/<command> [manlalaro]
balanceCommandUsage1=/<command>
balanceCommandUsage1Description=Sinasabi ang kasalukuyang pitaka
balanceCommandUsage2=/<command> <manlalaro>
balanceOther=<green>Pitaka ni {0}<green>\:<secondary> {1}
balanceTop=<primary>Pinakamataas 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]
banExempt=<dark_red>Hindi mo maaaring mapagbawalan ang manlalaro na iyon.
banExemptOffline=<dark_red>Bawal mo ipagbawalan ang mga manlalaro na offline.
banFormat=<secondary>Pinagbawalan ka\:\n<reset>{0}
@@ -52,12 +61,14 @@ 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=<i>kama<reset>
bedMissing=<dark_red>Ang iyong kama ay alinmang di-nakalagay, nawala o binawal.
bedNull=<st>kama<reset>
bedOffline=<dark_red>Bawal ka lumipat sa mga kama ng mga manlalaro na offline.
bedSet=<primary>Inilagay ang spawn ng iyong kama\!
beezookaCommandDescription=Magtapon ng sumasabog na bubuyog sa iyong kalaban.
beezookaCommandUsage=/<command>
bigTreeFailure=<dark_red>Nabigong malaking puno na henerasyon. Gawin ulit sa damo o sa lupa.
bigTreeSuccess=<primary>Nalagay ang malaking puno.
bigtreeCommandDescription=Maglagay ng malaking puno kung saan ka nakatingin.
@@ -96,6 +107,8 @@ clearinventoryCommandDescription=Buburahin ang lahat ng mga gamit sa iyong imben
clearinventoryCommandUsage=/<command> [manlalaro|*] [gamit[\:\\<data>]|*|**] [halaga]
clearinventoryCommandUsage1Description=Buburahin ang lahat ng mga gamit sa iyong imbentaryo
clearinventoryCommandUsage3=/<command> <manlalaro> <bagay> [halaga]
commandArgumentOptional=<gray>
commandArgumentRequired=<dilaw>
commandCooldown=<dark_red>Hindi maaaring sulatin ang utos na iyon para sa {0}.
commandDisabled=<secondary>Ang utos na<primary> {0}<secondary> ay di-napagana.
commandFailed=Ang utos na {0} ay nabigo\:
@@ -173,9 +186,11 @@ discordbroadcastInvalidChannel=<dark_red>Yung discord channel na <secondary>{0}<
discordbroadcastPermission=<dark_red>Hindi ka pinapayagang magdala ng mga mensahe sa <secondary>{0}<dark_red> channel.
discordbroadcastSent=<primary>Dinala ang mensahe kay <secondary>{0}<primary>\!
discordCommandLink=<primary>Sumali sa aming Discord server sa <secondary><click\:open_url\:"{0}">{0}</click><primary>\!
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}"
discordCommandLinkLinked=Matagumpay na na-link ang iyong account\!
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.
@@ -188,6 +203,7 @@ 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=<primary>Distansya\: {0}
dontMoveMessage=<primary>Mangyayari ang paglipat sa<secondary> {0}<primary>. Huwag ka gumalaw.
downloadingGeoIp=Dina-download ang GeoIP database... maaaring matagal ang pagka-download na ito (bansa\: 1.7MB, lungsod\: 30MB)
@@ -219,6 +235,7 @@ enchantments=<primary>Mga Gayuma\:<reset> {0}
enderchestCommandDescription=Pinapayagan ka tumingin sa loob ng baul ng ender.
enderchestCommandUsage1Description=Ibubukas ang iyong ender chest
enderchestCommandUsage2Description=Ibubukas ang ender chest ng manlalarong tinutukoy
equipped=Sinuot
errorCallingCommand=May pagkakamali sa pagsabi ng utos na /{0}
errorWithMessage=<secondary>Mali\:<dark_red> {0}
essentialsCommandDescription=Ini-re-reload ang EssentialsX.
@@ -262,6 +279,7 @@ feedOther=<primary>Pinuno mo ang pagkagutom ni <secondary>{0}<primary>.
fileRenameError=Nabigo ang pagkabago ng pangalan ng file {0}\!
fireballCommandDescription=Tumapon ng apoy na may bola o ng mga iba pang proyekto.
fireballCommandUsage=/<command> [fireball|small|large|arrow|skull|egg|snowball|expbottle|dragon|splashpotion|lingeringpotion|trident] [kabilisan]
fireballCommandUsage2Description=Magtutukoy at magtatapon ng projectile mula sa iyong location, na may optional na bilis
fireworkCommandDescription=Pinapayagan ka upang bumago ng isang stack ng pagkaputok.
fireworkCommandUsage=/<command> <<meta param>|lpower [halaga]|clear|fire [halaga]>
fireworkCommandUsage1=/<command> clear
@@ -269,6 +287,7 @@ fireworkCommandUsage2=/<command> power <halaga>
fireworkCommandUsage3=/<command> fire [halaga]
fireworkCommandUsage4=/<command> <meta>
fireworkEffectsCleared=<primary>Tinanggal ang lahat ng mga epekto mula sa hinahawakan na stack.
fixingHomes=Binubura ang lahat ng mga imbalidong bahay...
flyCommandDescription=Umalis, at lumipad\!
flyCommandUsage=/<command> [manlalaro] [ON|OFF]
flying=lumilipad
@@ -288,6 +307,7 @@ gctotal=<primary>Binagay na memory\:<secondary> {0} MB.
gcWorld=<primary>{0} "<secondary>{1}<primary>"\: <secondary>{2}<primary> tipak, <secondary>{3}<primary> entity, <secondary>{4}<primary> tiles.
geoipJoinFormat=<primary>Si <secondary>{0} <primary>ay nanggagaling mula sa <secondary>{1}<primary>.
getposCommandDescription=Ikuha ang iyong kasalukuyang posisyon o mga iyon ng manlalaro.
getposCommandUsage1=/<command> [manlalaro]
giveCommandDescription=Magbigay ng bagay sa isang manlalaro.
giveCommandUsage=/<command> <manlalaro> <bagay|numerong> [halaga [kodigo-sa-bagay...]]
giveCommandUsage2=/<command> <manlalaro> <bagay> <halaga> <meta>
@@ -304,11 +324,13 @@ godDisabledFor=<secondary>di-napagana<primary> para kay<secondary> {0}
godEnabledFor=<secondary>pinagana<primary> para kay<secondary> {0}
godMode=<primary>Diyos na kapangyarihan<secondary> {0}<primary>.
grindstoneCommandDescription=Magbubukas ng salapang.
grindstoneCommandUsage=/<command>
groupDoesNotExist=<dark_red>Walang isang manlalaro na online sa ditong grupo\!
groupNumber=<secondary>{0}<white> online, para sa buong listahan\:<secondary> /{1} {2}
hatArmor=<dark_red>Bawal 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=<dark_red>Bawal kang magbura ng sumbrero na may mahikang "Curse of Binding"\!
@@ -388,6 +410,7 @@ itemCommandUsage=/<command> <bagay|numerong> [halaga [kodigo-sa-bagay...]]
itemloreClear=<primary>Binura mo ang lore ng bagay na ito.
itemloreCommandDescription=Magbago ng lore ng isang bagay.
itemloreCommandUsage=/<command> <add/set/clear> [teksto/linya] [teksto]
itemloreCommandUsage3Description=Ibuburahin ang lore ng bagay na hinahawak
itemloreInvalidItem=<secondary>Kailangan mong hawakan ang bagay upang baguhin ang lore niya.
itemloreNoLine=<dark_red>Yung bagay na hinawakan mo ay walang teksto ng lore sa linyang <secondary>{0}<dark_red>.
itemloreNoLore=<dark_red>Yung bagay na hinawakan mo ay walang anumang teksto ng lore.
@@ -425,11 +448,13 @@ jailsCommandDescription=Linilistahan ang lahat ng mga kulungan.
jumpCommandDescription=Magtatalon sa pinakamalapit na bloke mula sa pwedeng makita.
jumpError=<dark_red>Isasaktan ang utak ng iyang kompyuter.
kickCommandDescription=Magaalis ng tinutukoy na manlalaro na may dahilan.
kickCommandUsage1Description=Sipain ang tinutukoy na manlalaro na may ekstrang dahilan
kickDefault=Inalis ka mula sa server.
kickedAll=<dark_red>Inalis ang lahat ng mga manlalaro mula sa server.
kickExempt=<dark_red>Bawal mo ialis ang tao na iyon.
kickallCommandDescription=Iaalis ang lahat ng mga manlalaro sa server liban sa naggawa.
kickallCommandUsage=/<command> [dahilan]
kickallCommandUsage1=/<command> [dahilan]
kill=<primary>Pinatay si<secondary> {0}<primary>.
killCommandDescription=Ipapatay ang tinutukoy na manlalaro.
killCommandUsage1Description=Ipapatay yung tinutukoy na manlalaro
@@ -64,8 +64,9 @@ banCommandUsage1=/<command> <player> [raison]
banCommandUsage1Description=Bannit le joueur spécifié avec une raison facultative
banExempt=<dark_red>Vous ne pouvez pas bannir ce joueur.
banExemptOffline=<dark_red>Vous ne pouvez bannir les joueurs déconnectés.
banFormat=<secondary>Vous avez été banni(e) \:\n<reset>{0}
banFormat=<secondary>Vous êtes banni\:\n<reset>{0}
banIpJoin=Votre adresse IP est bannie de ce serveur. Raison \: {0}
tempbanIpJoin=Votre adresse IP est temporairement bannie de ce serveur pour {0}. Raison \: {1}
banJoin=Vous êtes banni(e) de ce serveur. Raison \: {0}
banipCommandDescription=Bannir une adresse IP.
banipCommandUsage=/<command> <adresse> [raison]
@@ -276,6 +277,7 @@ discordErrorLoggerNoPerms=L''enregistreur de console Discord a été désactivé
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.
discordErrorInvalidPerms=Votre bot n''a pas été configuré avec les permissions requises \! Les permissions manquantes sont \: {0}.
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.
@@ -847,7 +849,7 @@ nickNamesOnlyColorChanges=<dark_red>Seules les couleurs des surnoms peuvent êtr
nickNoMore=<primary>Vous n''avez plus de surnom.
nickSet=<primary>Votre surnom est maintenant <secondary>{0}<primary>.
nickTooLong=<dark_red>Ce surnom est trop long.
noAccessCommand=<dark_red>Vous n''avez pas accès à cette commande.
noAccessCommand=<b><dark_red>Cette commande n''existe pas.</dark_red></b>
noAccessPermission=<dark_red>Vous n''avez pas la permission d’accéder à cette <secondary>{0}<dark_red>.
noAccessSubCommand=<dark_red>Vous n’avez pas accès à <secondary>{0}<dark_red>.
noBreakBedrock=Vous n''êtes pas autorisés à détruire la bedrock.
@@ -906,6 +908,7 @@ openingDisposal=<primary>Ouverture du menu de destruction...
orderBalances=<primary>Classement des soldes de<secondary> {0} joueurs, veuillez patienter...
oversizedMute=<dark_red>Vous ne pouvez pas réduire au silence un joueur pendant autant de temps.
oversizedTempban=<dark_red>Vous ne pouvez pas bannir un joueur pendant autant de temps.
pageLimitExceeded=<dark_red>Le numéro de page dépasse la limite maximale (100).
passengerTeleportFail=<dark_red>Vous ne pouvez pas être téléporté lorsque vous transportez des passagers.
payCommandDescription=Payez un autre joueur avec votre argent.
payCommandUsage=/<commande> <joueur> <quantité>
@@ -991,6 +994,7 @@ 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é
powertoollistCommandDescription=
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.
@@ -1128,15 +1132,14 @@ sellCommandUsage4=/<command> blocks [quantité]
sellCommandUsage4Description=Vend la totalité (ou la quantité spécifiée) de blocs dans votre inventaire
sellHandPermission=<primary>Vous n''avez pas la permission de vendre le contenu de votre main.
serverFull=Le serveur est complet \!
whitelistKick=Liste blanche activée \!
serverReloading=Il y a de bonnes chances que vous soyez entrain de recharger votre serveur en ce moment. Si c''est le cas, pourquoi vous détestez vous-même ? N''attendez aucun support de l''équipe EssentialsX en utilisant /reload.
serverTotal=<primary>Total du serveur \: <secondary>{0}
serverUnsupported=Vous utilisez une version de serveur non prise en charge \!
serverUnsupportedClass=Classe déterminant le statut \: {0}
serverUnsupportedCleanroom=Vous exécutez un serveur qui ne prend pas correctement en charge les plugins Bukkit qui dépendent du code interne de Mojang. Envisagez d''utiliser un équivalant à Essentials compatible avec votre logiciel serveur.
serverUnsupportedDangerous=Vous utilisez un fork de serveur qui est connu pour être extrêmement dangereux et qui entraîne une perte de données. Il est fortement recommandé de passer à un logiciel serveur plus stable comme Paper.
serverUnsupportedLimitedApi=Vous exécutez un serveur avec des fonctionnalités API limitées. EssentialsX continuera de fonctionner, mais certaines fonctionnalités seront désactivées.
serverUnsupportedDumbPlugins=Vous utilisez des plugins connus pour causer de graves problèmes avec EssentialsX et d''autres plugins.
serverUnsupportedMods=Vous exécutez un serveur qui ne prend pas correctement en charge les plugins Bukkit. Les plugins Bukkit ne devraient pas être utilisés avec les mods Forge/Fabric \! Envisagez d''utiliser ForgeEssentials ou SpongeForge + Nucleus.
serverUnsupportedMods=Vous utilisez un serveur qui ne support pas proprement les plugins Bukkit, Bukkit ne doit pas être utilisé avec les mods Fabric/Forge\! Désinstallez votre plugin hybride, et utilisez FTB Essentials mod pour les fonctionnalités similaires.
setBal=<green>Votre solde a été modifié à {0}.
setBalOthers=<green>Vous avez modifià le solde de {0} à {1}.
setSpawner=<primary>Le type de générateur a été changé en<secondary> {0}<primary>.
@@ -1473,7 +1476,6 @@ unlinkCommandUsage=/<command>
unlinkCommandUsage1=/<command>
unlinkCommandUsage1Description=Déconnecte votre compte Minecraft du compte Discord actuellement lié.
unmutedPlayer=<primary>Le joueur<secondary> {0} <primary>a de nouveau la parole.
unsafeTeleportDestination=<dark_red>La destination est dangereuse et la téléportation sans risque est désactivée.
unsupportedBrand=<dark_red>La plateforme de serveur que vous utilisez actuellement ne possède pas les prérequis nécessaires à cette fonctionnalité.
unsupportedFeature=<dark_red>Cette fonctionnalité n''est pas compatible avec la version actuelle du serveur.
unvanishedReload=<secondary>Un reload vous a rendu de nouveau visible.
@@ -1590,6 +1592,7 @@ whoisPlaytime=<primary> - Temps de jeu \:<reset> {0}
whoisTempBanned=<primary> - Expiration du bannissement \:<reset> {0}
whoisTop=<primary>\=\=\=\=\=\= Qui est \: <secondary>{0}<primary>\=\=\=\=\=\=
whoisUuid=<primary> - UUID \:<reset> {0}
whoisFirstLogin=<primary> - Première connexion \:<reset> {0}
whoisWhitelist=<primary> - Liste Blanche \:<reset>{0}
workbenchCommandDescription=Ouvre un établi.
workbenchCommandUsage=/<command>
@@ -1 +1,2 @@
#Sat Feb 03 17:34:46 GMT 2024
addedToOthersAccount=
@@ -6,6 +6,7 @@ adventure=הרפתקה
afkCommandDescription=שם אותך כ-רחוק מהמקלדת.
afkCommandUsage=[שחקן/הודעה...]
afkCommandUsage1=/<command> [הודעה]
afkCommandUsage1Description=5 ytyrty
afkCommandUsage2=[הודעה]
afkCommandUsage2Description=מחליף את מצב ה-רחוק מהמקלדת של השחקן הספציפי עם סיבה אופציונלית
alertBroke=נשבר\:
@@ -23,3 +23,5 @@ autoTeleportDisabledFor=<secondary>{0}<primary> अब टेलीपोर्
autoTeleportEnabled=<primary>अब आप टेलीपोर्ट रिक्येस्टों को ऑटोमैटिक रूप से स्वीकार कर रहे हैं।
autoTeleportEnabledFor=<secondary>{0}<primary> अब टेलीपोर्ट रिक्येस्टों को ऑटोमैटिक रूप से स्वीकार कर रहा।
backAfterDeath=अपने मृत्यु स्थान पर लौटने के लिए /back कमांड का उपयोग करें।
backCommandUsage1Description=Pichle location pe teleport karta hai
backupStarted=<primary>Backup start ho gaya।
@@ -1,45 +1,58 @@
#Sat Feb 03 17:34:46 GMT 2024
action=<dark_purple>*{0}<dark_purple>{1}
addedToAccount=<yellow>{0}<green> je dodano na tvoj račun.
addedToOthersAccount=<yellow>{0}<green> dodano na račun od <yellow>{1}<green>. Sada ima\: <yellow>{2}
adventure=avantura
afkCommandDescription=Označuje te kao afk.
afkCommandUsage=/<command> [igrač/poruka...]
afkCommandUsage1=/<command> [poruka]
afkCommandUsage1Description=Isključuje ili uključuje AFK status s neobaveznim razlogom
afkCommandUsage2=/<command> <player> [poruka]
alertBroke=uništeno\:
alertFormat=<dark_aqua>[{0}] <reset> {1} <primary> {2} na\: {3}
alertPlaced=postavljeno\:
alertUsed=korišteno\:
alphaNames=<dark_red>Ime igrača može sadržavati samo slova, brojeve i donje crte.
antiBuildBreak=<gray>Nemas dozvolu da unistavas<dark_aqua> {0} <gray>blokove ovdje.
antiBuildCraft=<gray>Nemas dozvolu da stvoris<dark_aqua> {0}<gray>.
antiBuildDrop=<gray>Nemas dozvolu da bacas stvari<dark_aqua> {0}<gray>.
antiBuildInteract=<gray>Nesmijes komunicirati sa<dark_aqua> {0}<gray>.
antiBuildBreak=<dark_red>Nemaš dozvolu da uništavaš<secondary> {0} <dark_red> blokove ovdje.
antiBuildCraft=<dark_red>Nemaš dozvolu da stvoriš<secondary> {0}<dark_red>.
antiBuildDrop=<dark_red>Ne smiješ baciti <secondary>{0}<dark_red>.
antiBuildInteract=<dark_red>Ne smiješ interaktirati s <secondary>{0}<dark_red>.
antiBuildPlace=<dark_red>Nemaš dozvolu da postaviš<secondary> {0} <dark_red>ovdje.
antiBuildUse=<gray>Nemas dozvolu da koristis<dark_aqua> {0}<gray>.
antiBuildUse=<dark_red>Ne smiješ koristiti<secondary>{0}<dark_red>.
antiochCommandDescription=Malo iznenađenje za operatore.
antiochCommandUsage=<command> [poruka]
anvilCommandDescription=Otvara nakovanj.
anvilCommandUsage=/<command>
autoAfkKickReason=Izbačen si jer si bio afk više nego {0} minuta.
autoTeleportDisabled=<primary>Sada ne prihvaćaš automatski zahtjeve za teleportaciju.
autoTeleportDisabledFor=<secondary>{0}<primary> više ne prihvaća automatski zahtjeve za teleportaciju.
autoTeleportEnabled=<primary>Sada automatski prihvaćao zahtjeve za teleportaciju.
autoTeleportEnabledFor=<secondary>{0}<primary> sada automatski prihvaća zahtjeve za teleportaciju.
backAfterDeath=<primary>Koristi <secondary>/back <primary>komandu da se vratiš na mjesto smrti.
backCommandUsage1Description=Teleporta te do prošle lokacije
backOther=<primary>Vraćanje<secondary> {0}<primary> na prethodnu lokaciju.
backupCommandUsage=/<command>
backupDisabled=<gray>Jedna vanjska sigurnosna kopija nije konfigurirana.
backupFinished=<gray>Backup je zavrsen.
backupStarted=<gray>Backup je zapoceo.
backUsageMsg=<gray>Vracanje na prethodnu lokaciju.
balance=<green>Stanje na racunu\:<secondary> {0}
balanceOther=<green>Stanje na racunu od {0}<green>\:<secondary> {1}
balanceTop=<primary>Top stanje na racunu ({0})
backupDisabled=<dark_red>Vanjska sigurnosna kopija nije konfigurirana.
backupFinished=<primary>Sigurnosna kopija završena.
backupStarted=<primary>Sigurnosna kopija započeta.
backUsageMsg=<primary>Vraćanje na prethodnu lokaciju.
balance=<green>Stanje\:<secondary> {0}
balanceOther=<green>Stanje na računu od {0}<green>\:<secondary> {1}
balanceTop=<primary>Top stanja({0})
balanceTopLine={0}. {1}, {2}
balancetopCommandUsage=/<command> [page]
banCommandDescription=Zabranjuje pristup igraču.
banCommandUsage=/<command> <player> [reason]
banCommandUsage=/<command> <player> [razlog]
banCommandUsage1Description=Bana određenog igrača s neobaveznim razlogom
banExempt=<dark_red>Nemozes banati tog igraca.
banExemptOffline=<dark_red>Nemožeš banati igrača koji nije u igri.
banFormat=<secondary>Dobio si ban\! Razlog\: \n<reset>{0}
banExempt=<dark_red>Ne možeš banati tog igrača.
banExemptOffline=<dark_red>Ne možeš banati igrača koji nije u igri.
banFormat=<secondary>Banana si\: \n<reset>{0}
banIpJoin=Tvoja IP adresa je banana sa servera. Razlog\: {0}
banJoin=Ti si banan s ovog servera. Razlog\: {0}
banipCommandDescription=Bana IP adresu.
banipCommandUsage=/<command> <address> [reason]
banipCommandUsage=/<command> <address> [razlog]
banipCommandUsage1Description=Bana određenu IP adresu s neobaveznim razlogom
bed=<i>Krevet<reset>
bed=<i>krevet<reset>
bedMissing=<dark_red>Tvoj krevet nije postavljen, nedostaje ili je blokiran.
bedNull=<st>Krevet<reset>
bedSet=<primary>Krevet je postavljen\!
@@ -48,58 +61,60 @@ bigTreeSuccess=<primary>Veliko stablo stvoreno.
bigtreeCommandUsage=/<command> <tree|redwood|jungle|darkoak>
bigtreeCommandUsage1Description=Stvara veliko drvo određene vrste
blockList=<primary>EssentialsX prenosi slijedeće komande drugim pluginima\:
bookAuthorSet=<primary>Author knjige postavljen na {0}.
bookCommandUsage=/<command> [title|author [name]]
bookCommandUsage2=/<command> author <author>
bookAuthorSet=<primary>Autor knjige postavljen na {0}.
bookCommandUsage=/<command> [naslov|autor [ime]]
bookCommandUsage2=/<command> autor <author>
bookLocked=<primary>Ova knjiga je sada zaključana.
bookTitleSet=<primary>Naslov knjige postavljen na {0}.
broadcastCommandDescription=Šalje poruku cijelom poslužitelju.
burnMsg=<primary>Zapaslio si <secondary> {0} <primary>na<secondary> {1} sekundi<primary>.
broadcastCommandUsage1Description=Šalje poruku cijelom serveru
broadcastworldCommandDescription=Šalje poruku jednom svijetu.
burnMsg=<primary>Zapalio si <secondary> {0} <primary>na<secondary> {1} sekundi<primary>.
cannotStackMob=<dark_red>Nemaš dozvolu spajati više bića.
canTalkAgain=<primary>Sada opet možes razgovarati.
cantFindGeoIpDB=Nije moguće pronači GeoIP bazu podataka\!
cantReadGeoIpDB=Nije uspjeo čitanje GeoIP baze podataka\!
cantSpawnItem=Nemas dozvolu za stvaranje <secondary> {0}.
cantFindGeoIpDB=Nije moguće pronaći GeoIP bazu podataka\!
cantReadGeoIpDB=Neuspješno čitanje GeoIP baze podataka\!
cantSpawnItem=<dark_red>Nemaš dozvolu za stvaranje <secondary> {0}<dark_red>.
chatTypeSpy=[Špijun]
cleaned=Baza igrača očišćena.
cleaning=Čišćenje baze igrača.
commandFailed=Naredba {0} nije uspjela\:
commandHelpFailedForPlugin=Pogreska pri dobivanju pomoći za plugin\: {0}
commandNotLoaded=Komanda {0} je uspjesno ucitana.
commandNotLoaded=<dark_red>Komanda {0} se nepravilno učitala.
configFileMoveError=Premjestiti config.yml na mjesto sigurnosne kopije nije uspjelo.
configFileRenameError=Nije prava mjesavina varalica preminenovati u confiog.ym.
connectedPlayers=Povezani igraci
connectionFailed=Neuspjesno povezivanje.
cooldownWithMessage=Cooldown\: {0}
couldNotFindTemplate=Nije moguce naci predlozak {0}
creatingConfigFromTemplate=Stvaranje konfiguracije iz predloska.\: {0}
configFileRenameError=Neuspješno preimenovanje privremene datoteke u config.yml.
connectedPlayers=<primary>Povezani igrači<reset>
connectionFailed=Neuspješno povezivanje.
cooldownWithMessage=<dark_red>Cooldown\: {0}
couldNotFindTemplate=<dark_red>Nije moguće naći predložak {0}
creatingConfigFromTemplate=Stvaranje konfiguracije iz predloška\: {0}
creatingEmptyConfig=Stvaranje prazne konfiguracije\: {0}
creative=Creative
currentWorld=Trenutan svijet\: {0}
day=Dan
days=Dani
currentWorld=<primary>Trenutan svijet\:<secondary> {0}
day=dan
days=dani
defaultBanReason=Banan si sa servera\!
deleteFileError=Nije moguce obrisati dokument\: {0}
deleteHome=Kuca {0} je obrisana.
deleteJail=Jail {0} je uklonjen.
deleteWarp=Warp {0} je obrisan.
deleteFileError=Nije moguće obrisati datoteku\: {0}
deleteHome=<primary>Kuća <secondary>{0}<primary> je obrisana.
deleteJail=<primary>Zatvor <secondary>{0}<primary> je uklonjen.
deleteWarp=<primary>Warp <secondary>{0}<primary> je obrisan.
deniedAccessCommand=<secondary>{0} <dark_red>je bio zabranjen pristup naredbi.
denyBookEdit=<dark_red>You ne mozes otkljucati ovu knjigu.
denyChangeAuthor=<dark_red>Ti ne mozes promijeniti autora ove knjige.
denyChangeTitle=<dark_red>Ti ne mozes promijeniti naslov ove knjige.
denyBookEdit=<dark_red>Ti ne možeš otključati ovu knjigu.
denyChangeAuthor=<dark_red>Ti ne možeš promijeniti autora ove knjige.
denyChangeTitle=<dark_red>Ti ne možeš promijeniti naslov ove knjige.
depth=<primary>Trenutno ste na visini mora.
depthAboveSea=<primary>Vi ste<secondary> {0} <primary>blokova iznad nadmorske visine.
depthAboveSea=<primary>Vi ste<secondary> {0} <primary>blok(ova) iznad nadmorske visine.
depthBelowSea=<primary>Vi ste<secondary> {0} <primary>blok(ova) ispod razine mora.
destinationNotSet=Destinacija nije postavljena\!
disabled=isključen
disabledToSpawnMob=<dark_red>Stvaranje ovoga moba je iskljuceno u konfiguraciji.
disabled=isključen(o)
disabledToSpawnMob=<dark_red>Stvaranje ovoga moba je isključeno u konfiguraciji.
distance=<primary>Udaljenost\: {0}
dontMoveMessage=Teleportacija ce zapoceti za {0} sekundi.
duplicatedUserdata=Duplicirani korisnicki podatci\: {0} i {1}.
durability=<primary>Ovaj alat ima <secondary>{0}<primary> namjena.
dontMoveMessage=<primary>Teleportacija će započeti za <secondary>{0}<primary> sekundi. Nemoj se micati.
duplicatedUserdata=Duplicirani korisnički podatci\: {0} i {1}.
durability=<primary>Ovaj alat ima <secondary>{0}<primary> preostalih korištenja.
editBookContents=<yellow>Sada možete uređivati sadržaj ove knjige.
enabled=ukljucen
enableUnlimited=<primary>Davanje beskonačno<secondary> {0} <primary>igracu <secondary>{1}<primary>.
enabled=uključen(o)
enableUnlimited=<primary>Davanje beskonačno<secondary> {0} <primary>igraču <secondary>{1}<primary>.
enchantmentNotFound=<dark_red>Enchantment nije pronađen\!
enchantmentPerm=<dark_red>Nemaš dozvolu za<secondary> {0}<dark_red>.
enchantmentRemoved=<primary>Enchantment<secondary> {0} <primary>je uklonjen iz vašeg itema u ruci.
@@ -121,29 +136,29 @@ feedOther=<primary>Dao si hranu <secondary>{0}<primary>.
fileRenameError=Preimenovanje datoteke {0} nije uspjelo\!
fireworkColor=<dark_red>Nepoznat vatromet, morate prvo staviti boju.
fireworkEffectsCleared=<primary>Uklonjeni su svi efekti iz itema u ruci.
fireworkSyntax=&7Stvari za vatromet\: &3Boja\: \\<color> [blijede\: \\<color> [oblik <shape>] [efekt\: <effect>] &7To koristiti vise boja/efekti, vrijednosti odvojite zarezima\: &3crvena,plava,roza &7Oblici\: &3zvijezda,lopta,veliko,puzavac.praska &7Efekti\: &3trag, svjetlucati&7.
fireworkSyntax=<primary>Parametri vatrometa\:<secondary> boja\:<color> [blijedi\:<color>] [oblik\:<shape>] [efekt\:<effect>] <primary>Za korištenje više boja/efekata, odvojite vrijednosti zarezima\: <secondary>crvena,plava,roza <primary>Oblici\:<secondary> zvijezda, lopta, veliko, creeper, eksplozija <primary>Efekti\:<secondary> trag, treperenje.
flying=letiš
flyMode=<primary>Letenje je<secondary> {0} <primary>za {1}<primary>.
foreverAlone=<dark_red>Nemate nikoga kome možete odgovoriti.
fullStack=<dark_red>Vec imas puni stack.
fullStack=<dark_red>Već imaš 64.
gameMode=<primary>Postavljen gamemode<secondary> {0} <primary>za <secondary>{1}<primary>.
gcfree=<primary>Slobodno memorije\: <secondary> {0} MB.
gcmax=<primary>Max memorije\: <secondary> {0} MB.
gctotal=<primary>Memorija\:<secondary> {0} MB.
gcmax=<primary>Maksimalmo memorije\: <secondary> {0} MB.
gctotal=<primary>Dostupna memorija\:<secondary> {0} MB.
geoipJoinFormat=<primary>Igrač <secondary>{0} <primary>dolazi iz <secondary>{1}<primary>.
geoIpUrlEmpty=GeoIP preuzimanje datoteka URL adresa je prazna.
geoIpUrlInvalid=GeoIP preuzimanje url nije valjan.
givenSkull=<primary>Dobio si glavu od <secondary>{0}<primary>.
godDisabledFor=<secondary>iskljucen<primary> za<secondary> {0}
godEnabledFor=<green>ukljuceno<primary> za<secondary> {0}
godDisabledFor=<secondary>isključen<primary> za<secondary> {0}
godEnabledFor=<green>uključeno<primary> za<secondary> {0}
godMode=<primary>God mode<secondary> {0}<primary>.
groupDoesNotExist=<dark_red>Nitko nije online u ovoj grupi\!
groupNumber=<secondary>{0}<white> online, za cijeli popis\: <secondary> /{1} {2}
hatArmor=<dark_red>Ne možete koristiti ovaj item kao šešir\!
hatEmpty=<dark_red>Trenutno ne nosis kapu.
hatFail=<dark_red>Moras nesto nositi u ruci.
hatPlaced=<primary>Uzivaj sa novom kapom\!
hatRemoved=<primary>Vasa kapa je uklonjena.
hatEmpty=<dark_red>Trenutno ne nosiš kapu.
hatFail=<dark_red>Moraš nešto nositi u ruci.
hatPlaced=<primary>Uživaj sa novom kapom\!
hatRemoved=<primary> Kapa je uklonjena.
haveBeenReleased=<primary>Pušten si.
heal=<primary>Izlječen si.
healDead=<dark_red>Ne možeš izliječiti nekoga tko je mrtav\!
@@ -151,13 +166,13 @@ healOther=<primary>Izlječio si<secondary> {0}<primary>.
helpFrom=<primary>Komande od {0}\:
helpMatching=<primary>Komande odgovarajući "<secondary>{0}<primary>"\:
helpOp=<dark_red>Pomoć<reset> <primary>{0}\:<reset> {1}
helpPlugin=<dark_red>{0}<reset>\: Plugin pomoc\: /help {1}
holdBook=<dark_red>Nedrzis knjigu u kojoj se moze pisati.
holdFirework=<dark_red>Moras drzati vatromet za dodavanje efekata.
holdPotion=<dark_red>Moras drzati napitak da bi primjenio efekte.
helpPlugin=<dark_red>{0}<reset>\: Plugin pomoć\: /help {1}
holdBook=<dark_red>Ne držiš knjigu u kojoj se može pisati.
holdFirework=<dark_red>Moraš držati vatromet za dodavanje efekata.
holdPotion=<dark_red>Moraš držati napitak da bi stavio efekte.
holeInFloor=<dark_red>Rupa u podu\!
homes=<primary>Domovi\:<reset> {0}
homeSet=<primary>Home postavljen na trenutnu lokaciju.
homeSet=<primary>Dom postavljen na trenutnu lokaciju.
hour=sat
hours=sati
ignoredList=<primary>Ignoriran\:<reset> {0}
@@ -169,67 +184,67 @@ infoChapterPages=<yellow> ---- <primary>{0} <yellow>--<primary> Stranica <second
infoPages=<yellow> ---- <primary>{2} <yellow>--<primary> Stranica <secondary>{0}<primary>/<secondary>{1} <yellow>----
infoUnknownChapter=<dark_red>Nepoznato poglavlje.
insufficientFunds=<dark_red>Nedovoljno sredstava.
invalidCharge=<dark_red>Pogresna primjena.
invalidCharge=<dark_red>Pogrešna primjena.
invalidFireworkFormat=<dark_red>Opcija <secondary>{0} <dark_red>ne važi za <secondary>{1}<dark_red>.
invalidHome=<dark_red>Home<secondary> {0} <dark_red>ne postoji\!
invalidHomeName=<dark_red>Krivo ime home-a\!
invalidMob=<dark_red>Neispravna vrsta cudovista.
invalidNumber=Nevazeci broj.
invalidPotion=<dark_red>Nepostojeci napitak.
invalidHome=<dark_red>Dom<secondary> {0} <dark_red>ne postoji\!
invalidHomeName=<dark_red>Taj dom ne postoji\!
invalidMob=<dark_red>Neispravna vrsta čudovišta.
invalidNumber=Nevažeći broj.
invalidPotion=<dark_red>Nepostojeći napitak.
invalidPotionMeta=<dark_red>Nepoznati napitak\: <secondary>{0}<dark_red>.
invalidSignLine=<dark_red>Red<secondary> {0} <dark_red>na znaku nije valjan.
invalidWarpName=<dark_red>Krivo warp ime\!
invalidWorld=<dark_red>Nepostojeci svijet.
invalidWorld=<dark_red>Nepostojeći svijet.
inventoryClearingAllArmor=<primary>Očišćene inventory stvari i armor od<secondary> {0}<primary>.
inventoryClearingFromAll=<primary>Čiščenje inventorija svih igrača...
is=je
isIpBanned=<primary>IP <secondary>{0} <primary>je banan.
itemCannotBeSold=<dark_red>Ovaj item se nemoze prodati na serveru.
itemCannotBeSold=<dark_red>Ovaj item se ne može prodati serveru.
itemMustBeStacked=&7Stvar mora biti prodana u stekovima. Kolicina 2 steka, itd.
itemNames=<primary>Item kratka imena\: <reset> {0}
itemNotEnough1=<dark_red>Ti nemajs dovoljno tog itema za prodaju.
itemNotEnough1=<dark_red>Ti nemaš dovoljno tog itema za prodaju.
itemSellAir=Stvarno si pokušao prodati zrak? Stavi predmet u ruke.
itemSold=<green>Prodano za <secondary>{0} <green>({1} {2} po {3} svaki).
itemSpawn=<primary>Dajemo<secondary> {0} <primary>itema\:<secondary> {1}
jailAlreadyIncarcerated=<dark_red>Igrac je već u zatvoru\: <secondary> {0}
jailMessage=<dark_red>Pocinio si zlocin, razmisli o tome.
itemSpawn=<primary>Dajemo<secondary> {0}<secondary> {1}
jailAlreadyIncarcerated=<dark_red>Igrač je već u zatvoru\: <secondary> {0}
jailMessage=<dark_red>Počinio si zločin, razmisli o tome.
jailNotExist=<dark_red>Taj zatvor ne postoji.
jailReleased=<primary>Igrac <secondary>{0}<primary> je pusten iz zatvora.
jailReleasedPlayerNotify=<primary>Pusten si\!
jailReleased=<primary>Igrač <secondary>{0}<primary> je pusten iz zatvora.
jailReleasedPlayerNotify=<primary>Pušten si\!
jailSentenceExtended=<primary>Jail vrijeme je produzeno na <secondary>{0}<primary>.
jailSet=<primary>Zatvor<secondary> {0} <primary>je postavljen.
jumpError=<dark_red>To bi štetilo mozgu vašem računalu.
kickDefault=Izbacen si sa servera.
kickedAll=<dark_red>Izbaceni su svi igraci sa servera.
kickExempt=<dark_red>Nemozes izbaciti tog igraca.
kill=<secondary> {0}<primary> je umro.
killExempt=<dark_red>Nemožes ubiti <secondary>{0}<dark_red>.
kitError=<dark_red>Kitovi nepostoje.
kitError2=<primary>Ovaj kit ne postoji, obrati se staff-teamu.
kitGiveTo=Davanje kita {0} igracu {1}.
kitInvFull=Inventar ti je pun, kit je bacen na pod.
kitNotFound=Taj kit ne postoji.
kitOnce=Ne mozes ponovo koristiti taj kit.
kickDefault=Izbačen si sa servera.
kickedAll=<dark_red>Izbačeni su svi igrači sa servera.
kickExempt=<dark_red>Ne možeš izbaciti tog igrača.
kill=<primary>Ubio si <secondary> {0}<primary>.
killExempt=<dark_red>Ne možes ubiti <secondary>{0}<dark_red>.
kitError=<dark_red>Nema kitova.
kitError2=<dark_red>Greška s kitom, obrati se administratorima.
kitGiveTo=<primary>Davanje kita <secondary>{0} {1}<primary>.
kitInvFull=<dark_red>Inventar ti je pun, kit je bačen na pod.
kitNotFound=<dark_red>Taj kit ne postoji.
kitOnce=<dark_red>Taj kit se može koristiti jednom.
kitReceive=<primary>Dobio si kit<secondary> {0}<primary>.
kits=<primary>Kitovi\:<reset> {0}
kitTimed=<dark_red>Ti ne mozes koristiti taj kit ponovno za jos<secondary> {0}<dark_red>.
kitTimed=<dark_red>Moraš sačekati<secondary> {0}<dark_red>da dobiješ taj kit.
lightningSmited=<primary>Thor ga je pogodio grmljavinom\!
lightningUse=<primary>Šaljemo gromove na<secondary> {0}
lightningUse=<primary>Šaljemo gromove <secondary> {0}
listAfkTag=<gray>[AFK]<reset>
listAmount=<primary>Online su <secondary>{0}<primary> od maksimalno <secondary>{1}<primary> igrača online.
listAmount=<primary>Online su <secondary>{0}<primary> od maksimalno <secondary>{1}<primary> igrača.
listHiddenTag=<gray>[SKRIVEN]<reset>
loadWarpError=<dark_red>Ne uspješno učitavanje warpa {0}.
mailCleared=<primary>Mail je obrisan\!
mailMessage={0}
mailSent=<primary>Mail poslan\!
markMailAsRead=<primary>Da markiraš mail kao pročitam, napiši<secondary> /mail clear<primary>.
matchingIPAddress=<primary>Sljedeči igrači su ušli sa tom IP adresom\:
maxHomes=<dark_red>Ti ne mozes postaviti vise od<secondary> {0} <dark_red>homeova.
matchingIPAddress=<primary>Sljedeći igrači su ušli sa tom IP adresom\:
maxHomes=<dark_red>Ti ne možeš postaviti više od<secondary> {0} <dark_red>homeova.
mayNotJail=<dark_red>Ne smijete zatvoriti tu osobu\!
mayNotJailOffline=<dark_red>Nemožeš zatvoriti igača koji nije na serveru.
mayNotJailOffline=<dark_red>Ne možeš zatvoriti igrača koji nije na serveru.
minute=minuta
minutes=minute
missingItems=<dark_red>Ti nemas <secondary>{0}x {1}<dark_red>.
missingItems=<dark_red>Ti nemaš <secondary>{0}x {1}<dark_red>.
mobsAvailable=<primary>Mobovi\:<reset> {0}
mobSpawnError=<dark_red>Greška u promjenjivanju spawnera.
mobSpawnLimit=Količina mobova je ograničena na ovom serveru.
@@ -258,75 +273,75 @@ noAccessCommand=<dark_red>Nemate pristup toj komandi.
noAccessPermission=<dark_red>Nemate dozvolu da pristupite <secondary>{0}<dark_red>.
noBreakBedrock=<dark_red>Ne možeš uništiti taj blok.
noDestroyPermission=<dark_red>Nemate dozvolu da uništite <secondary>{0}<dark_red>.
noGodWorldWarning=<dark_red>Upozorenje\! God mod u je onemogućen u ovom svijetu.
noGodWorldWarning=<dark_red>Upozorenje\! God mod je onemogućen u ovom svijetu.
noHomeSetPlayer=<primary>Igrač nije postavio dom.
noIgnored=<primary>Ne ignoriraš nikoga.
noKitGroup=<dark_red>Nemas pristup ovome kitu.
noKitPermission=<dark_red>Ti trebas <secondary>{0}<dark_red> dozvolu za korištenje tog kita.
noKitGroup=<dark_red>Nemaš pristup ovome kitu.
noKitPermission=<dark_red>Ti trebaš <secondary>{0}<dark_red> dozvolu za korištenje tog kita.
noKits=<primary>Još nema dostupnih kitova.
noMail=<primary>Nemaš mail.
noMatchingPlayers=<primary>Nema tog igraca.
noMatchingPlayers=<primary>Nema tog igrača.
noMetaFirework=<dark_red>Nemate dozvolu za primjenu meta vatrometa.
noMetaPerm=<dark_red>Nemate dozvolu za primjenu <secondary>{0}<dark_red> meta na ovu stavku.
none=nikakav
noNewMail=<primary>Nemaš mail.
noPendingRequest=<dark_red>Ti nemas tpa.
noPendingRequest=<dark_red>Ti nemaš zahtjeva.
noPerm=<dark_red>Nemate <secondary>{0}<dark_red> dozvolu.
noPermToSpawnMob=<dark_red>Nemate dozvolu za stvaranje ovog moba.
noPlacePermission=<dark_red>Nemate dopuštenje za postavljanje bloka blizu tog znaka.
noPotionEffectPerm=<dark_red>Nemas dozvolu da pridodas efekt<secondary>{0} <dark_red>ovom potionu.
noPotionEffectPerm=<dark_red>Nemaš dozvolu da dodaš efekt<secondary>{0} <dark_red>ovom potionu.
noPowerTools=<primary>Nemate dodijeljenih alata.
notEnoughExperience=<dark_red>Nemaš dovoljno iskustva.
notEnoughMoney=<dark_red>Nemas dovoljno novca.
notEnoughMoney=<dark_red>Nemaš dovoljno novca.
notFlying=ne letiš
nothingInHand=<dark_red>Nemaš ništa u ruci.
now=sada
noWarpsDefined=<primary>Nema warpova.
nuke=<dark_purple>Neka smrt pada na njih.
numberRequired=Broj ide tamo, ludice.
onlyDayNight=/Time samo podržava dan/noć.
numberRequired=Broj ide tamo.
onlyDayNight=/time samo podržava dan/noć.
onlyPlayers=<dark_red>Samo igrači u igri mogu koristiti <secondary>{0}<dark_red>.
onlyPlayerSkulls=Možeš postaviti samo igračevu lubanju (<secondary>397\:3<dark_red>).
onlyPlayerSkulls=<dark_red>Možeš postaviti samo igračevu lubanju (<secondary>397\:3<dark_red>).
onlySunStorm=<dark_red>/weather podržava samo sun/storm.
orderBalances=<primary>Učitavamo stanje<secondary> {0} <primary>igrača, molimo sačekajte...
orderBalances=<primary>Učitavamo stanje<secondary> {0} <primary>igrača...
oversizedTempban=<dark_red>Ne možete banati igrača u ovom vremenskom razdoblju.
pendingTeleportCancelled=<dark_red>Zahtjev za teleportaciju otkazan.
playerBanIpAddress=<primary>Igrač<secondary> {0} <primary>je banao IP adresu<secondary> {1} <primary>za\: <secondary>{2}<primary>.
playerBanned=<primary>Igrač<secondary> {0} <primary>banan<secondary> {1} <primary>za\: <secondary>{2}<primary>.
playerJailed=<primary>Igrac<secondary> {0} <primary>zatvoren.
playerJailed=<primary>Igrač<secondary> {0} <primary>zatvoren.
playerMuted=<primary>Mutan si\!
playerNeverOnServer=<dark_red>Igrač<secondary> {0} <dark_red>nikad nije bio na ovom serveru.
playerNotFound=<dark_red>Igrac nije pronađen.
playerNotFound=<dark_red>Igrač nije pronađen.
playerUnmuted=<primary>Unmutan si.
pong=Pong\!
posPitch=Nagib\: {0} (Kut glave)
posPitch=<primary>Nagib\: {0} (Kut glave)
possibleWorlds=<primary>Mogući svjetovi su brojevi <secondary>0<primary> kroz <secondary>{0}<primary>.
powerToolAir=<dark_red>Command ne može biti priložen zraku.
powerToolAlreadySet=<dark_red>Command <secondary>{0}<dark_red> već je dodijeljena <secondary>{1}<dark_red>.
powerToolClearAll=<primary>Sve alatne komande su izbrisane.
powerToolList=<primary>Item <secondary>{1} <primary>ima sljedeće naredbe\: <secondary>{0}<primary>.
powerToolNoSuchCommandAssigned=<dark_red>Command <secondary>{0}<dark_red> već je dodijeljena <secondary>{1}<dark_red>.
pTimeCurrent=&3{0}&7 vrijeme je &3{1}&7.
pTimeCurrentFixed=&3{0}&7vrijeme je popravljeno u &3{1}&7.
pTimeNormal=&3{0}&7 vrijeme je normalno i odgovara na server.
pTimeCurrent=<secondary>{0}<primary> vrijeme je <secondary>{1}<primary>.
pTimeCurrentFixed=<secondary>{0}<primary>vrijeme je zauvijek <secondary>{1}<primary>.
pTimeNormal=<secondary>{0}<primary> vrijeme je normalno i odgovara na server.
pTimeOthersPermission=<dark_red>Niste ovlašteni za postavljanje vremena drugih igrača.
pTimePlayers=&7Ovi igraci imaju svoje vrijeme\: &r
pTimeReset=&7Igracevo vrijeme je vraceno na\: &3{0}
pTimeSet=&7Igracevo vrijeme je stavljeno na &3{0}&7 za\: &3{1}&7.
pTimePlayers=<primary>Ovi igraci imaju svoje vrijeme\: <reset>
pTimeReset=<primary>Igračevo vrijeme je vraćeno na\: <secondary>{0}
pTimeSet=<primary>Igračevo vrijeme je stavljeno na <secondary>{0}<primary> za\: <secondary>{1}<primary>.
pTimeSetFixed=&7Igracevo vrijeme je popravljeno na &3{0}&7 za\: &3{1}&7.
pWeatherCurrent=&3{0}&7 vrijeme je &3{1}&7.
pWeatherInvalidAlias=&7Greska, nemozemo naci ovakav nacim vremena
pWeatherNormal=&3{0}&7 vrijeme je normalno i odgovara na server.
pWeatherCurrent=<secondary>{0}<primary> vrijeme je <secondary>{1}<primary>.
pWeatherInvalidAlias=<dark_red>Nepostojeća vrsta vremena
pWeatherNormal=<secondary>{0}<primary> vrijeme je normalno.
pWeatherOthersPermission=<dark_red>Niste ovlašteni za postavljanje vremena drugih igrača.
pWeatherPlayers=&7Ovi igraci imaju svoje vrijeme\: &r
pWeatherReset=&7Igracevo vrijeme je vraceno na\: &3{0}
pWeatherSet=&7Igracevo vrijeme je stavljeno na &3{0}&7 za\: &3{1}&7.
recipeNothing=&7nista
recipeWhere=&7Gdje\: &3{0}&7
removed=&7Izbrisano &3{0} &7stvari.
repair=<primary>Ti su uspjesno popravili svoje\: <secondary>{0}<primary>.
pWeatherPlayers=<primary>Ovi igrači imaju svoje vrijeme\: <reset>
pWeatherReset=<primary>Igračevo vrijeme je vraćeno na\: <secondary>{0}
pWeatherSet=<primary>Igračevo vrijeme je stavljeno na <secondary>{0}<primary> za\: <secondary>{1}.
recipeNothing=ništa
recipeWhere=<primary>Gdje\: {0}
removed=<primary>Izbrisano <secondary>{0} <primary>stvari.
repair=<primary> Uspješno popravljen <secondary>{0}<primary>.
repairAlreadyFixed=<dark_red>Taj predmet ne treba popravak.
repairEnchanted=<dark_red>Nije dozvoljeno popravljati enčantane iteme.
repairEnchanted=<dark_red>Nije dozvoljeno popravljati enchantane iteme.
repairInvalidType=<dark_red>Taj se predmet ne mose popraviti.
repairNone=<dark_red>Nema stavki koje treba popraviti.
requestAccepted=<primary>Teleport zahtjev prihvaćen.
@@ -6,7 +6,7 @@ adventure=kaland
afkCommandDescription=Beállítja, hogy távol vagy a géptől.
afkCommandUsage=/<command> [játékos/üzenet...]
afkCommandUsage1=/<command> [üzenet]
afkCommandUsage1Description=Az AFK állapot beállítása egy opcionális indokkal
afkCommandUsage1Description=Beállítja az AFK státuszod egy opcionálisan megadható indokkal
afkCommandUsage2=/<command> <játékos> [üzenet]
afkCommandUsage2Description=Az AFK állapot beállítása egy másik játékosnak, egy opcionális indokkal
alertBroke=tör\:
@@ -66,6 +66,7 @@ banExempt=<dark_red>Nem tilthatod ki ezt a játékost.
banExemptOffline=<dark_red>Nem tilthatsz ki offline játékosokat.
banFormat=<dark_red>Ki lettél tiltva\:\n<reset>{0}
banIpJoin=Az IP címed ki lett tiltva. Oka\: {0}
tempbanIpJoin=Az IP-címed ideiglenesen ki lett tiltva a szerverről {0} ideig. Indok\: {1}
banJoin=Ki lettél tiltva a szerverről. Oka\: {0}
banipCommandDescription=Kitilt egy IP címet.
banipCommandUsage=/<command> <cím> [indok]
@@ -176,11 +177,11 @@ cooldownWithMessage=<dark_red>Késleltetés\: {0}
coordsKeyword={0}, {1}, {2}
couldNotFindTemplate=<dark_red>Nem található sablon {0}
createdKit=<secondary>{0} <primary>felszerelés létrehozva <secondary>{1} <primary>bejegyzéssel és <secondary>{2} <primary>késéssel
createkitCommandDescription=Készít egy csomagot a játékban\!
createkitCommandDescription=Készít egy felszereléscsomagot a játékban\!
createkitCommandUsage=/<command> <csomagnév> <késleltetés>
createkitCommandUsage1=/<command> <felszerelésnév> <késleltetés>
createkitCommandUsage1Description=Készít egy csomagot egy megadott névvel és késleltetéssel
createKitFailed=<dark_red>Hiba történt a csomag létrehozásakor {0}.
createkitCommandUsage1Description=Készít egy felszereléscsomagot egy megadott névvel és késleltetéssel
createKitFailed=<dark_red>Hiba történt a felszereléscsomag létrehozásakor {0}.
createKitSeparator=<st>-----------------------
createKitSuccess=<primary>Csomag létrehozva\: <white>{0}\n<primary>Késleltetés\: <white>{1}\n<primary>Link\: <white>{2}\n<primary>A fenti hivatkozás tartalmának másolása a kits.yml-be.
createKitUnsupported=<dark_red> Az NBT elemek sorosítása engedélyezve van, de ez a szerver nem Paper 1.15.2+ -en fut. Visszatérés a szabványos tételek sorba állításához.
@@ -276,6 +277,7 @@ discordErrorLoggerNoPerms=A Discord konzol naplózó le van tiltva hibás enged
discordErrorNoGuild=Érvénytelen vagy hiányzó szerver azonosító\! Kérlek, kövesd a konfigurációs útmutatót a Plugin beállításához.
discordErrorNoGuildSize=A bot nem tartózkodik a szerveren\! Kérlek, kövesd a konfigurációs útmutatót a Plugin beállításához.\n\n
discordErrorNoPerms=A bot nem látja vagy nincs jogosultsága üzenet küldésre\! Kérlek, ellenőrizd, hogy a botnak van-e olvasás és írás joga az összes csatornában, amiben alkalmazni szeretnéd.
discordErrorInvalidPerms=A botod nem rendelkezik a szükséges jogosultságokkal\! Hiányzó jogosultságok\: {0}.
discordErrorNoPrimary=Nem adtál meg elsődleges csatornát, vagy a megadott csatorna érvénytelen. Visszatérés az alapértelmezett csatornára\: \#{0}.
discordErrorNoPrimaryPerms=A bot nem tud beszélni az elsődleges csatornádon, a(z) \#{0} csatornán. Kérlek, bizonyosodj meg róla, hogy a bot rendelkezik olvasási és írási jogosultsággal minden olyan csatornán, amiben használni szeretnéd.
discordErrorNoToken=Token nincs megadva\! Kérlek, kövesd a konfigurációs útmutatót a plugin beállításához.
@@ -766,10 +768,10 @@ minute=perc
minutes=perc
missingItems=<dark_red>Nincs <secondary>{0}x {1}<dark_red>-d.
mobDataList=<primary>Érvényes élőlény adatok\:<reset> {0}
mobsAvailable=<primary>Élőlények\:<reset> {0}
mobSpawnError=<dark_red>Hiba az élőlényidéző megváltoztatása közben.
mobsAvailable=<primary>Szörnyek\:<reset> {0}
mobSpawnError=<dark_red>Hiba az szörnyidéző megváltoztatása közben.
mobSpawnLimit=A kiszolgálói limitre korlátozott élőlény mennyiség meghaladva.
mobSpawnTarget=<dark_red>A célblokknak élőlényidőzőnek kell lennie.
mobSpawnTarget=<dark_red>A célblokknak szörnyidézőnek kell lennie.
moneyRecievedFrom=<green>{0}<primary>-t kaptál<green> {1}<primary>-tól/-től.
moneySentTo=<green>{0}-t küldtél {1}<green>-nak/nek.
month=hónap
@@ -822,7 +824,7 @@ nearCommandUsage1Description=Listázza az összes játékost, aki a közeledben
nearCommandUsage2=/<command> <sugár>
nearCommandUsage2Description=Listázza az összes játékost, aki a közeledben van, a megadott sugárértékkel
nearCommandUsage3=/<command> <játékos>
nearCommandUsage3Description=Listázza az összes játékost a megadott játékos közelében, a megadott sugárértékkel
nearCommandUsage3Description=Listázza az összes játékost a megadott játékos közelében, az alap sugárértékkel
nearCommandUsage4=/<command> <játékos> <sugár>
nearCommandUsage4Description=Listázza az összes játékost a megadott sugárban a megadott játékosnál
nearbyPlayers=<primary>Közeli játékosok\:<reset> {0}
@@ -876,10 +878,10 @@ noNewMail=<primary>Nincs új leveled.
nonZeroPosNumber=<dark_red>Nullától eltérő számra van szükség.
noPendingRequest=<dark_red>Nincs függőben lévő kérésed.
noPerm=<dark_red>Nem rendelkezel a(z) <secondary>{0}<dark_red> jogosultsággal.
noPermissionSkull=<dark_red>Nincs jogosultságod megváltoztatni ezt a fejet.
noPermissionSkull=<dark_red>Nincs jogosultságod megváltoztatni ezt a koponyát.
noPermToAFKMessage=<dark_red>Nincs jogosultságod beállítani, hogy miért mész el a géptől.
noPermToSpawnMob=<dark_red>Nincs jogosultságod leidézni ezt az élőlényt.
noPlacePermission=<dark_red>Nincs jogosultságod egy blokknak a tábla közelében elhelyezésére.
noPermToSpawnMob=<dark_red>Nincs jogosultságod leidézni ezt a szörnyet.
noPlacePermission=<dark_red>Nincs jogosultságod blokkot helyezni a tábla közelében.
noPotionEffectPerm=<dark_red>Nincs jogosultságod a főzet effekt alkalmazására <secondary>{0} <dark_red>ennél a főzetnél.
noPowerTools=<primary>Nincsenek power tools hozzárendeléseid.
notAcceptingPay=<dark_red>{0} <dark_red>nem fogad el fizetést.
@@ -906,6 +908,7 @@ openingDisposal=<primary>Szemetes menü megnyitása...
orderBalances=<primary>Egyenlegek összegyüjtése<secondary> {0} <primary>játékostól, kérlek, várj...
oversizedMute=<dark_red>Nem némíthatsz le egy játékost erre az időtartamra.
oversizedTempban=<dark_red>Nem tilthatsz ki egy játékost erre az időtartamra.
pageLimitExceeded=<dark_red>Elérted az oldalak maximális számát (100).
passengerTeleportFail=<dark_red>Utasok szállítása közben nem lehet teleportálni.
payCommandDescription=Fizetsz egy másik játékosnak az egyenlegedből.
payCommandUsage=/<command> <játékos> <mennyiség>
@@ -967,7 +970,7 @@ posX=<primary>X\: {0} (+Kelet <-> -Nyugat)
posY=<primary>Y\: {0} (+Fel <-> -Le)
posYaw=<primary>Fordulás\: {0} (Forgás)
posZ=<primary>Z\: {0} (+Dél <-> -Észak)
potions=<primary>Varázsitalok\:<reset> {0}<primary>.
potions=<primary>Főzetek\:<reset> {0}<primary>.
powerToolAir=<dark_red>Nem csatolhatsz parancsot a levegőhöz.
powerToolAlreadySet=<dark_red>A(z)<secondary> {0}<dark_red> parancs már be van állítva <secondary>{1}<dark_red>-hoz/-hez.
powerToolAttach=<secondary>{0}<primary> parancs beállítva a(z)<secondary> {1}<primary>-ra/-re.
@@ -991,6 +994,8 @@ powertoolCommandUsage4=/<command> <parancs>
powertoolCommandUsage4Description=Beállítja a powertool paranccsal a kézben tartott tárgyra a megadott parancsot
powertoolCommandUsage5=/<command> a\:<parancs>
powertoolCommandUsage5Description=Hozzáadja a megadott powertool parancsot a kézben tartott tárgyra
powertoollistCommandDescription=Listáz minden jelenlegi powertool-t.
powertoollistCommandUsage=/<command>
powertooltoggleCommandDescription=Engedélyezi vagy letiltja az összes jelenlegi powertool-t.
powertooltoggleCommandUsage=/<command>
ptimeCommandDescription=Beállítja egy játékos idejét. Add hozzá a @ előtagot a javításhoz.
@@ -1009,16 +1014,16 @@ pweatherCommandUsage2=/<command> <storm|sun> [játékos|*]
pweatherCommandUsage2Description=Beállítja az időjárást neked, vagy másnak, amennyiben meg van adva
pweatherCommandUsage3=/<command> reset [játékos|*]
pweatherCommandUsage3Description=Újrarakja az időjárást neked, vagy másnak, amennyiben meg van adva
pTimeCurrent=<secondary>{0}<primary>idője<secondary> {1}<primary>.
pTimeCurrentFixed=<secondary>{0}<primary> idője javítva erre<secondary> {1}<primary>.
pTimeNormal=<secondary>{0}<primary> idője normális és megegyezik a szerverével.
pTimeOthersPermission=<dark_red>Nem vagy jogosult más játékosok időjét állítani.
pTimePlayers=<primary>Ezeknek a játékosoknak saját időjük van\:<reset>
pTimeReset=<primary>A játékos idője vissza lett állítva\: <secondary>{0}<primary>-nak/nek
pTimeSet=<primary>A játékos idője beállítva <secondary>{0}<primary>-re <secondary>{1}<primary>-nak/nek.
pTimeSetFixed=<primary>A játékos idője javítva <secondary>{0}<primary>-re <secondary>{1}-nak/nek.
pTimeCurrent=<secondary>{0}<primary>ideje<secondary> {1}<primary>.
pTimeCurrentFixed=<secondary>{0}<primary> ideje javítva erre<secondary> {1}<primary>.
pTimeNormal=<secondary>{0}<primary> ideje normális és megegyezik a szerverével.
pTimeOthersPermission=<dark_red>Nem vagy jogosult más játékosok idejét állítani.
pTimePlayers=<primary>Ezeknek a játékosoknak saját idejük van\:<reset>
pTimeReset=<primary>A játékos ideje vissza lett állítva\: <secondary>{0}<primary>-nak/nek
pTimeSet=<primary>A játékos ideje beállítva <secondary>{0}<primary>-re <secondary>{1}<primary>-nak/nek.
pTimeSetFixed=<primary>A játékos ideje javítva <secondary>{0}<primary>-ra/re <secondary>{1}-nak/nek.
pWeatherCurrent=<secondary>{0}<primary> időjárása<secondary> {1}<primary>.
pWeatherInvalidAlias=<dark_red>Érvénytelen időjárás típus.
pWeatherInvalidAlias=<dark_red>Érvénytelen időjárás típus
pWeatherNormal=<secondary>{0}<primary> időjárása normális és egyezik a szerverével.
pWeatherOthersPermission=<dark_red>Nem vagy jogosult a többi játékos időjárásának beállítására.
pWeatherPlayers=<primary>Ezek a játékosok saját időjárással rendelkeznek\:<reset>
@@ -1092,8 +1097,8 @@ requestSent=<primary>Kérés elküldve<secondary> {0}<primary>-nak/nek.
requestSentAlready={0}<dark_red>-nek/-nak már küldtél teleport kérést.
requestTimedOut=<dark_red>A teleport kérés kifutott az időből.
requestTimedOutFrom=<dark_red>Teleportálási kérelem <secondary>{0} <dark_red>-tól/től kifutott az időből.
resetBal=<primary>Egyenleg visszaállítva <green>{0}-ra/-re <primary>minden online játékosnak.
resetBalAll=<primary>Egyenleg visszaállítva <green>{0}<primary>-ra/-re az összes játékosnak.
resetBal=<primary>Egyenleg visszaállítva <secondary>{0}<primary>-ra/-re minden online játékosnak.
resetBalAll=<primary>Egyenleg visszaállítva <secondary>{0}<primary>-ra/-re az összes játékosnak.
rest=<primary>Kipihentnek érzed magad.
restCommandDescription=Egy másik játékos vagy magad pihentetése.
restCommandUsage=/<command> [játékos]
@@ -1105,7 +1110,7 @@ rtoggleCommandDescription=Annak módosítása, hogy a válasz címzettje az utol
rtoggleCommandUsage=/<command> [játékos] [on|off]
rulesCommandDescription=A szerver szabályainak megtekintése.
rulesCommandUsage=/<command> [fejezet] [oldal]
runningPlayerMatch=<primary>A játékosok megfelelő keresésének futtatása ''<secondary>{0}<primary>'' (ez eltarthat egy kicsit)
runningPlayerMatch=<primary>A játékosok megfelelő keresésének futtatása ''<secondary>{0}<primary>'' (ez eltarthat egy kis ideig)
second=másodperc
seconds=másodperc
seenAccounts=<primary> A játékos ismerhető<secondary> {0} <primary>néven is
@@ -1113,507 +1118,510 @@ seenCommandDescription=Megjeleníti a játékos utolsó kijelentkezési idejét.
seenCommandUsage=/<command> <játékosnév>
seenCommandUsage1=/<command> <játékosnév>
seenCommandUsage1Description=Megjeleníti a kijelentkezési időt, kitiltást, némítást és UUID információkat a megadott játékosról
seenOffline=<secondary>{0} <dark_red>offline <primary>ennyi ideje\: <secondary>{1}<primary>.
seenOnline=<secondary>{0} <green>online <primary>ennyi ideje\: <secondary>{1}<primary>.
sellBulkPermission=<primary>Nincs engedélyed a tömeges értékesítésre.
seenOffline=<secondary>{0} <dark_red>nem elérhető<primary> ennyi ideje <secondary>{1}<primary>.
seenOnline=<secondary>{0} <green>elérhető<primary> ennyi ideje <secondary>{1}<primary>.
sellBulkPermission=<primary>Nincs jogosultságod a tömeges eladáshoz.
sellCommandDescription=Eladja a kezedben lévő tárgyat.
sellCommandUsage=/<command> <<tárgynév>|<id>|hand|inventory|blocks> [összeg]
sellCommandUsage1=/<command> <tárgynév> [összeg]
sellCommandUsage1Description=Eladja az összes (vagy a megadott mennyiséget) a megadott tárgyat az eszköztáradban
sellCommandUsage1=/<command> <tárgynév> [mennyiség]
sellCommandUsage1Description=Eladja az összes (vagy egy megadott mennyiségű) tárgyat az eszköztáradból
sellCommandUsage2=/<command> hand [összeg]
sellCommandUsage2Description=Eladja az összes (vagy a megadott mennyiséget) a kézben lévő tárgyat
sellCommandUsage3=/<command> all
sellCommandUsage3Description=Eladja az összes lehetséges tárgyat az eszköztáradban
sellCommandUsage4=/<command> blocks [összeg]
sellCommandUsage4Description=Sells all (or the given amount, if specified) of blocks in your inventory Eladja az összes (vagy a megadott mennyiséget) blokkot az eszköztáradban
sellHandPermission=<primary>Nincs engedélyed a kézből történő eladásra.
sellCommandUsage4Description=Eladja az összes (vagy a megadott mennyiséget) blokkot az eszköztáradban
sellHandPermission=<primary>Nincs jogosultságod hogy eladd a kezedben lévő tárgyat.
serverFull=A szerver tele van\!
whitelistKick=A fehér lista engedélyezve van\!
serverReloading=Jó esély van rá, hogy most újratöltöd a szervert. Ha ez a helyzet, miért utálod magad? Ne várj támogatást az EssentialsX csapatától, ha használod a /reload parancsot.
serverTotal=<primary>Szerver összesen\:<secondary> {0}
serverUnsupported=A szerver egy nem támogatott verzión fut\!
serverUnsupportedClass=Állapotmeghatározó osztály\: {0}
serverUnsupportedCleanroom=Olyan szervert futtatsz, amely nem támogatja megfelelően a belső Mojang kódra támaszkodó Bukkit beépülő modulokat. Fontold meg a Essentials cseréjét a szerverszoftverhez.
serverUnsupportedDangerous=Olyan szerver módosulatot futtatsz, amely köztudottan rendkívül veszélyes és adatvesztéshez vezethet. Erősen ajánlott egy stabilabb szerverszoftverre váltani, mint például a Paper.
serverUnsupportedLimitedApi=Korlátozott API-funkcionalitású szervert futtatsz. Az EssentialsX továbbra is működik, de bizonyos funkciók le vannak tiltva.
serverUnsupportedDumbPlugins=Olyan pluginokat használ, amelyekről ismert, hogy súlyos problémákat okoznak az EssentialsX és más pluginok esetében.
serverUnsupportedMods=Olyan szervert futtatsz, amely nem támogatja megfelelően a Bukkit beépülő modulokat. A Bukkit beépülő modulokat nem szabad Forge / Fabric modokkal használni\! Forge esetén\: Fontolja meg a ForgeEssentials vagy a SpongeForge + Nucleus használatát.
setBal=<green>Egyenleged beállítva {0}-ra/-re.
setBalOthers=<green>Beállítottad {0}<green> egyenlegét {1}-ra/-re.
setSpawner=<primary>Az élőlényidéző új típusa\:<secondary> {0}.
serverTotal=<primary>Szerveren Összesen\:<secondary> {0}
serverSnapshot=<red>Te a Minecraft fejlesztői snapshot verzióját futtatod\! Az EssentialsX ezen verzión nem támogatott, és működése nem garantált.
serverUnsupported=<red>Nem támogatott szerververziót futtatsz\!
serverUnsupportedClass=<red>Állapotmeghatározó osztály\: {0}
serverUnsupportedCleanroom=<dark_red>Te olyan szervert futtatsz, ami nem támogatja Bukkit pluginokat amik Mojang kódra támaszkodnak. Fontold meg az Essentials cseréjét a te szerverszoftveredhez.
serverUnsupportedDangerous=<dark_red>Te olyan szerver forkot használsz, ami ismert arról, hogy rendkívül veszélyes és adatvesztéshez vezet. Erősen ajánljuk, hogy válts stabilabb szerver forkre (mint például a Paper).
serverUnsupportedLimitedApi=<red>Egy olyan szervert futtatsz, aminek az API támogatása limitált. EssentialsX működni fog, de néhány funkció le lehetnek tiltva.
serverUnsupportedDumbPlugins=<dark_red>Olyan pluginokat használsz, amik ismertek arról, hogy problémákat okoznak az EssentialsX-nek és egyéb pluginoknak.
serverUnsupportedMods=<dark_red>Olyan szervert futtatsz, ami nem támogatja a Bukkit pluginokat. Bukkit pluginokat nem szabad használni Forge/Fabric modokkal\! Távolítsd el a szerver jar fájlodat, és használd a FTB Essentials modot hasonló funkciókért, mint az EssentialsX.
setBal=<green>Egyenleged be lett állítva {0} dollárra.
setBalOthers=<green>Beállítottad {0}<green> egyenlegét {1} dollárra.
setSpawner=<primary>Megváltoztattad az idézőketrec típusát erre\:<secondary> {0}<primary>.
sethomeCommandDescription=Beállítja az otthonod erre a helyre.
sethomeCommandUsage=/<command> [[játékos\:]név]
sethomeCommandUsage1=/<command> <név>
sethomeCommandUsage1Description=Beállítja az otthonod a megadott néven a jelenlegi helyedre
sethomeCommandUsage2=/<command> <játékos>\:<név>
sethomeCommandUsage2Description=Beállítja a megadott játékos otthonát a megadott névre a jelenlegi helyedre
sethomeCommandUsage1Description=Beállítja az otthonod egy megadott névvel az aktuális helyedre
sethomeCommandUsage2=/<command> <játékosnév>\:<név>
sethomeCommandUsage2Description=Beállítja egy megadott játékos otthonát egy megadott névre az aktuális helyedre
setjailCommandDescription=Létrehoz egy börtönt a megadott névvel [jailname].
setjailCommandUsage=/<command> <börtönnév>
setjailCommandUsage1=/<command> <börtönnév>
setjailCommandUsage1Description=Beállítja a börtönt a megadott névvel a jelenlegi helyedre
setjailCommandUsage1Description=Beállít egy börtönt egy megadott névvel az aktuális helyedre
settprCommandDescription=Beállítja a véletlenszerű teleport helyét és paramétereit.
settprCommandUsage=/<command> <világ> [center|minrange|maxrange] [érték]
settprCommandUsage1=/<command> <világ> center
settprCommandUsage1Description=Beállítja a random teleport középpontját a jelenlegi helyedre
settprCommandUsage1Description=Beállítja a véletlenszerű teleport középpontját az aktuális helyedre
settprCommandUsage2=/<command> <világ> minrange <sugár>
settprCommandUsage2Description=Beállítja a minimum random teleport sugárát a megadott értékre
settprCommandUsage2Description=Beállítja a minimális véletlenszerű teleport sugárát egy megadott értékre
settprCommandUsage3=/<command> <világ> maxrange <sugár>
settprCommandUsage3Description=Beállítja a maximum random teleport sugárát a megadott értékre
settpr=<primary>Beállítja a véletlenszerű teleport központját.
settprValue=<primary>Véletlenszerű teleport beállítva <secondary>{0}<primary> <secondary>{1}<primary>.
settprCommandUsage3Description=Beállítja a maximális véletlenszerű teleport sugárát egy megadott értékre
settpr=<primary>Beállítottad a véletlenszerű teleport középpontját.
settprValue=<primary>Beállítottad a <secondary>{0}<primary> értékét erre <secondary>{1}<primary>.
setwarpCommandDescription=Létrehoz egy új warpot.
setwarpCommandUsage=/<command> <warp>
setwarpCommandUsage1=/<command> <warp>
setwarpCommandUsage1Description=Beállítja a warp-ot a specifikált névvel a jelenlegi helyedre
setwarpCommandUsage1Description=Beállítja a warpot egy megadott névvel az aktuális helyedre
setworthCommandDescription=Beállítja a tárgy eladási értékét.
setworthCommandUsage=/<command> [tárgynév|id] <ár>
setworthCommandUsage1=/<command> <összeg>
setworthCommandUsage1Description=Beállítja az értékét a kézben tartott tárgynak a megadott árra
setworthCommandUsage2=/<command> <tárgynév> <összeg>
setworthCommandUsage2Description=Beállítja az értékét a specifikált tárgynak a megadott árra
sheepMalformedColor=<dark_red>Hibás szín.
shoutDisabled=<primary>Kiáltás mód <secondary>letiltva<primary>.
shoutDisabledFor=<primary>Kiáltás mód <secondary>letiltva <secondary>{0} <primary>számára.
shoutEnabled=<primary>Kiáltás mód <secondary>engedélyezve<primary>.
shoutEnabledFor=<primary>Kiáltás mód <secondary>engedélyezve <secondary>{0} <primary>számára.
setworthCommandUsage1=/<command> <ár>
setworthCommandUsage1Description=Beállítja a kezedben lévő tárgy értékét egy megadott árra
setworthCommandUsage2=/<command> <tárgynév> <ár>
setworthCommandUsage2Description=Beállítja egy megadott tárgynak az értékét egy megadott árra
sheepMalformedColor=<dark_red>Hibás színformátum.
shoutDisabled=<primary>Kiáltás <secondary>letiltva<primary>.
shoutDisabledFor=<primary>Kiáltás <secondary>letiltva <secondary>{0} <primary>játékosnak.
shoutEnabled=<primary>Kiáltás <secondary>engedélyezve<primary>.
shoutEnabledFor=<primary>Kiáltás <secondary>engedélyezve <secondary>{0} <primary>játékosnak.
shoutFormat=<primary>[Kiált]<reset> {0}
editsignCommandClear=<primary>A tábla megtisztítva.
editsignCommandClearLine=<primary>A(z)<secondary> {0}<primary>. sor törölve.
editsignCommandClear=<primary>Törölted a tábla tartalmát.
editsignCommandClearLine=<primary>Törölted a(z)<secondary> {0}.<primary> sor tartalmát.
showkitCommandDescription=Megmutatja a csomag tartalmát.
showkitCommandUsage=/<command> <csomagnév>
showkitCommandUsage1=/<command> <felszerelésnév>
showkitCommandUsage1Description=Megmutatja az összefoglalót a felszerelésben lévő tárgyakról
editsignCommandDescription=Szerkeszt egy táblát a világban.
editsignCommandLimit=<dark_red>A megadott szöveg túl nagy ahhoz, hogy ráférjen a kiválasztott táblára.
editsignCommandNoLine=<dark_red>Meg kell adnod egy sorszámot ezek között <secondary>1-4<dark_red>.
editsignCommandSetSuccess=<primary>A(z)<secondary> {0}<primary>. sor beállítva erre "<secondary>{1}<primary>".
editsignCommandTarget=<dark_red>Egy táblára kell nézned, hogy tud szerkeszteni a szöveget.
editsignCopy=<primary>Tábla másolva\! Ezzel beilleszthető <secondary>/{0} paste<primary>.
editsignCopyLine=<primary>Másolva a(z) <secondary>{0}<primary>. sor a tábláról\! Ezzel beilleszthető <secondary>/{1} paste {0}<primary>.
editsignPaste=<primary>Tábla beillesztve\!
editsignPasteLine=<primary>Beillesztve a(z) <secondary>{0}<primary>. sor a táblára\!
editsignCommandLimit=<dark_red>A megadott szöveg túl nagy ahhoz hogy ráférjen a kiválasztott táblára.
editsignCommandNoLine=<dark_red>Meg kell adnod egy sorszámot <secondary>1<dark_red> és <secondary>4<dark_red> között.
editsignCommandSetSuccess=<primary>Beállítottad a(z)<secondary> {0}.<primary> sor szövegét erre "<secondary>{1}<primary>".
editsignCommandTarget=<dark_red>Nézz egy táblára hogy szerkezhesd a tábla szövegét.
editsignCopy=<primary>Tábla másolva\! illeszd be a <secondary>/{0} paste<primary> paranccsal.
editsignCopyLine=<primary>Kimásoltad a(z) <secondary>{0}.<primary> sort a tábláról\! Illeszd be a <secondary>/{1} paste {0}<primary> paranccsal.
editsignPaste=<primary>Beilleszted a táblát\!
editsignPasteLine=<primary>Beillesztetted a(z) <secondary>{0}.<primary> sort a táblára\!
editsignCommandUsage=/<command> <set/clear/copy/paste> [sorszám] [szöveg]
editsignCommandUsage1=/<command> set <sorszám> <szöveg>
editsignCommandUsage1Description=Beállítja a megadott sort a táblán a megadott szövegre
editsignCommandUsage1Description=Beállítja a megadott sort a táblán egy megadott szövegre
editsignCommandUsage2=/<command> clear <sorszám>
editsignCommandUsage2Description=Törli a megadott sort a táblán
editsignCommandUsage3=/<command> copy [sorszám]
editsignCommandUsage3Description=Másolja az összes (vagy a megadott sort) a megadott táblán a vágólapra
editsignCommandUsage3Description=Kimásolja az összes (vagy egy megadott sort) a megadott táblán a vágólapra
editsignCommandUsage4=/<command> paste [sorszám]
editsignCommandUsage4Description=Bemásolja a vágólapod az egész táblára (vagy megadott sorra) a táblán
editsignCommandUsage4Description=Beilleszti a vágólapod az egész táblára (vagy egy megadott sorra) a táblán
signFormatFail=<dark_red>[{0}]
signFormatSuccess=<dark_blue>[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=<dark_red>Itt nem engedélyezett táblát létrehozni.
signProtectInvalidLocation=<dark_red>Itt nem hozhatsz létre táblát.
similarWarpExist=<dark_red>Egy hasonló nevű warp már létezik.
southEast=DK
south=D
southWest=DNY
skullChanged=<primary>A fej megváltoztatva erre <secondary>{0}<primary>.
skullChanged=<primary>Megváltoztattad a játékosfejet erre <secondary>{0}<primary>.
skullCommandDescription=Beállítja a játékos fej tulajdonosát
skullCommandUsage=/<command> [tulajdonos] [játékos]
skullCommandUsage=/<command> [tulaj] [játékos]
skullCommandUsage1=/<command>
skullCommandUsage1Description=Megszerzi a saját koponyád
skullCommandUsage2=/<command> <játékos>
skullCommandUsage2Description=Megszerzi a megadott játékos koponyáját
skullCommandUsage1Description=Lehívja a fejed
skullCommandUsage2=/<command> <játékosnév>
skullCommandUsage2Description=Lehívja egy megadott játékos fejét
skullCommandUsage3=/<command> <textúra>
skullCommandUsage3Description=Megkaparintja a koponyát a megadott textúrával (egy hash-nek kell lennie a textúra URL-ből vagy egy Base64 textúra értéknek)
skullCommandUsage4=/<command> <tulajdonos> <játékos>
skullCommandUsage4Description=Odaadja a koponyát a megadott tulajdonosról a megadott játékosnak
skullCommandUsage3Description=Lehív egy fejet egy megadott textúrával (egy hashnek kell lennie a textúra URL-ből vagy egy Base64 textúra értéknek)
skullCommandUsage4=/<command> <tulaj> <játékosnév>
skullCommandUsage4Description=Lehívja a megadott tulaj fejét egy megadott játékosnak
skullCommandUsage5=/<command> <textúra> <játékos>
skullCommandUsage5Description=Megkaparintja a koponyát a megadott textúrával (egy hash-nek kell lennie a textúra URL-ből vagy egy Base64 textúra értéknek) a megadott játékosnak
skullInvalidBase64=<dark_red>A textúra érték érvénytelen
skullCommandUsage5Description=Lehívja a fejet egy megadott textúrával (egy hashnek kell lennie a textúra URL-ből vagy egy Base64 értéknek) egy megadott játékosnak
skullInvalidBase64=<dark_red>A textúra értéke érvénytelen.
slimeMalformedSize=<dark_red>Hibás méret.
smithingtableCommandDescription=Megnyit egy kovácsasztalt.
smithingtableCommandUsage=/<command>
socialSpy=<primary>SocialSpy <secondary>{0}<primary>-nak/-nek\: <secondary>{1}
socialSpy=<primary>Kémüzi <secondary>{0}<primary> játékosnak\: <secondary>{1}
socialSpyCmdFormat=<gray>{0}\: {1}
socialSpyMsgFormat=<primary>[<secondary>{0}<gray> -> <secondary>{1}<primary>] <gray>{2}
socialSpyMutedPrefix=<white>[<primary>SS<white>] <gray>(némítva) <reset>
socialspyCommandDescription=Beállítja, hogy lásd vagy ne lásd az msg/mail parancsokat a chaten.
socialspyCommandUsage=/<command> [játékos] [on|off]
socialspyCommandUsage1=/<command> [játékos]
socialspyCommandUsage1Description=Beállítja a socialspy-t neked, vagy másnak amennyiben meg van adva
socialspyCommandUsage=/<command> [játékosnév] [on|off]
socialspyCommandUsage1=/<command> [játékosnév]
socialspyCommandUsage1Description=Be- vagy kiakpcsolja a kémüzit nálad vagy egy másik játékosnál
socialSpyPrefix=<white>[<primary>SS<white>] <reset>
soloMob=<dark_red>Az élőlények szeretnek egyedül maradni.
soloMob=<dark_red>Ez a mob szeret egyedül lenni.
spawned=idézve
spawnerCommandDescription=Megváltoztatja az élőlényidéző típusát.
spawnerCommandUsage=/<command> <élőlény> [késleltetés]
spawnerCommandUsage1=/<command> <mob> [késleltetés]
spawnerCommandUsage1Description=Módosítja a szörny típusát (és opcionálisként a késleltetést) a spawner-nek, amire nézel
spawnerCommandUsage1Description=Megváltoztatja a moby típusát (és opcionálisan a késleltetést) az idézőketrecnek amire nézel
spawnmobCommandDescription=Megidéz egy élőlényt.
spawnmobCommandUsage=/<command> <élőlény>[\:adat][,<mount>[\:adat]] [mennyiség] [játékos]
spawnmobCommandUsage1=/<command> <mob>[\:data] [összeg] [játékos]
spawnmobCommandUsage1Description=Idéz egy (vagy megadott értékű) megadott szörnyet a jelenlegi helyedre (vagy egy másik játékosnak, amennyiben meg van adva)
spawnmobCommandUsage2=/<command> <mob>[\:data],<mount>[\:data] [összeg] [játékos]
spawnmobCommandUsage2Description=Idéz egy (vagy megadott értékű) megadott szörnyet ami lovagol egy megadott szörnyet a jelenlegi helyedre (vagy egy másik játékosnak, amennyiben meg van adva)
spawnSet=<primary>Kezdőpont beállítva a(z) <secondary>{0}<primary> csoportnak.
spawnmobCommandUsage1=/<command> <mob>[\:data] [mennyiség] [játékosnév]
spawnmobCommandUsage1Description=Leidéz egy (vagy egy megadott mennyiségő) megadott mobot az aktuális helyedre (vagy egy másik játékosnak ha megvan adva)
spawnmobCommandUsage2=/<command> <mob>[\:data],<mount>[\:data] [mennyiség] [játékosnév]
spawnmobCommandUsage2Description=Leidéz egy (vagy egy megadott mennyiségű) megadott mobot ami lovagol egy megadott szörnyön az aktuális helyedre (vagy egy másik játékosnak ha megvan adva)
spawnSet=<primary>Beállítottad a kezdőhelyet a <secondary>{0}<primary> csoportnak.
spectator=néző
speedCommandDescription=Megváltoztatja a sebességed.
speedCommandUsage=/<command> [típus] <sebesség> [játékos]
speedCommandUsage1=/<command> <gyorsaság>
speedCommandUsage1Description=Beállítja a repülési vagy sétálási sebességedet a megadott sebességre
speedCommandUsage2=/<command> <típus> <gyorsaság> [játékos]
speedCommandUsage2Description=Beállítja a specifikált típusra a sebességed neked, vagy másnak, amennyiben meg van adva
speedCommandUsage1Description=Beállítja a repülési vagy sétálási sebességed egy megadott sebességre
speedCommandUsage2=/<command> <típus> <gyorsaság> [játékosnév]
speedCommandUsage2Description=Beállít egy megadott típusú gyorsaságot egy megadott értékre nálad vagy egy másik játékosnál ha megvan adva
stonecutterCommandDescription=Megnyit egy kővágót.
stonecutterCommandUsage=/<command>
sudoCommandDescription=Egy parancs végrehajtása egy másik felhasználóval.
sudoCommandUsage=/<command> <játékos> <parancs [args]>
sudoCommandUsage1=/<command> <játékos> <parancs> [paraméterek]
sudoCommandUsage1Description=A megadott játékos nevében futtatja a megadott parancsot
sudoCommandUsage1Description=Lefuttat egy megadott parancsot egy megadott játékos nevében
sudoExempt=<dark_red>Nem kényszerítheted <secondary>{0}<dark_red> játékost.
sudoRun=<secondary>{0}<primary> erőltetése ennek a futtatására\:<reset> /{1}
sudoRun=<primary>Kényszerítetted <secondary> {0} <primary>játékost a<reset> /{1} <primary>parancsra.
suicideCommandDescription=Elpusztít téged.
suicideCommandUsage=/<command>
suicideMessage=<primary>Viszlát kegyetlen világ...
suicideSuccess=<primary>{0} <primary>feladta az életét.
suicideSuccess=<primary>{0} <primary>véget vetett az életének.
survival=túlélő
takenFromAccount=<yellow>{0}<green> levéve az egyenlegedről.
takenFromOthersAccount=<yellow>{0}<green> levéve<yellow> {1}<green> egyenlegéről. Új egyenleg\:<yellow> {2}
teleportAAll=<primary>A teleport kérés mindenkinek elküldve...
teleportAAll=<primary>Teleport kérelem elküldése az összes játékosnak...
teleportAll=<primary>Összes játékos teleportálása...
teleportationCommencing=<primary>Teleportálás megkezdése...
teleportationDisabled=<primary>Teleportálás <secondary>letiltva<primary>.
teleportationDisabledFor=<primary>Teleportálás <secondary>letiltva <secondary>{0} <primary>számára<primary>.
teleportationDisabledWarning=<primary>Engedélyezned kell a teleportálást, mielőtt más játékosok teleportálhatnak hozzád.
teleportationDisabledFor=<primary>Teleportálás <secondary>letiltva <secondary>{0} <primary>játékosnak<primary>.
teleportationDisabledWarning=<primary>Engedélyezned kell a teleportálást mielőtt más játékosok teleportálhatnak hozzád.
teleportationEnabled=<primary>Teleportálás <secondary>engedélyezve<primary>.
teleportationEnabledFor=<primary>Teleportálás <secondary>engedélyezve <secondary>{0} <primary>számára<primary>.
teleportAtoB=<secondary>{0}<primary> elteleportált téged {1}<primary>-hoz/-hez.
teleportBottom=<primary>Teleportálás az aljára.
teleportDisabled=<secondary>{0} <dark_red>letiltotta, hogy rá teleportáljanak.
teleportHereRequest=<secondary>{0}<primary> szeretné, hogy hozzá teleportálj.
teleportHome=<primary>Teleportálás ide\: <secondary>{0}
teleportationEnabledFor=<primary>Teleportálás <secondary>engedélyezve <secondary>{0} <primary>játékosnak<primary>.
teleportAtoB=<secondary>{0}<primary> elteleportált {1}<primary> játékoshoz.
teleportBottom=<primary>Elteleportáltál a legalacsonyabb ponra.
teleportDisabled=<secondary>{0} <dark_red>letiltotta hogy rá teleportáljanak.
teleportHereRequest=<secondary>{0}<primary> szeretné hogy hozzá teleportálj.
teleportHome=<primary>Teleportáltál a(z) <secondary>{0}<primary> otthonodba.
teleporting=<primary>Teleportálás...
teleportInvalidLocation=A koordináták értéke nem lehet több 30000000-nél
teleportNewPlayerError=<dark_red>Nem sikerült teleportálni az új játékost\!
teleportNoAcceptPermission=<secondary>{0} <dark_red>nem rendelkezik engedéllyel a teleport kérések elfogadására.
teleportNoAcceptPermission=<secondary>{0} <dark_red>játékosnak nincs jogosultsága hogy elfogadja a teleport kérelmed.
teleportRequest=<secondary>{0}<primary> hozzád szeretne teleportálni.
teleportRequestAllCancelled=<primary>Minden fennmaradó teleportálás kérés visszavonva.
teleportRequestCancelled=<primary>A teleportálási kérésed <secondary>{0}<primary>-nak/nek visszavonva.
teleportRequestSpecificCancelled=<primary>A fennmaradó teleport kérés<secondary> {0}<primary> visszavonva.
teleportRequestTimeoutInfo=<primary>Ez a kérés lejár ennyi idő után<secondary> {0} másodperc<primary>.
teleportTop=<primary>Teleportálás a legmagasabb pontra.
teleportToPlayer=<primary>Teleportálás hozzá\: <secondary>{0}
teleportOffline=<primary>A(z) <secondary>{0}<primary> játékos jelenleg offline. Teleportálhatsz hozzá a /otp használatával.
teleportOfflineUnknown=<primary>Nem lehetséges megtalálni az utolsó ismert pozícióját <secondary>{0}<primary>-nak/nek.
teleportRequestAllCancelled=<primary>Visszavontad az összes teleport kérelmed.
teleportRequestCancelled=<primary>Visszavontad a <secondary>{0}<primary> játékosnak küldött teleport kérelmed.
teleportRequestSpecificCancelled=<primary>Visszavontad a <secondary>{0}<primary> játékosnak küldött teleport kérelmed.
teleportRequestTimeoutInfo=<primary>Ez a kérelem lejár<secondary> {0} másodperc<primary> múlva.
teleportTop=<primary>Teleportáltál a legmagasabb pontra.
teleportToPlayer=<primary>Teleportáltál <secondary>{0}<primary> játékoshoz.
teleportOffline=<secondary>{0}<primary> jelenleg nem elérhető. Teleportálj hozzá a /otp paranccsal.
teleportOfflineUnknown=<primary>Nem sikerült megtalálni <secondary>{0}<primary> játékos utolsó ismert helyét.
tempbanExempt=<dark_red>Nem tilthatod ki ideiglenesen ezt a játékost.
tempbanExemptOffline=<dark_red>Nem tilthatsz ki ideiglenesen offline játékosokat.
tempbanExemptOffline=<dark_red>Nem tilthatsz ki ideiglenesen olyan játékosokat akik nem elérhetőek.
tempbanJoin=Ki lettél tiltva a szerverről {0}. Oka\: {1}
tempBanned=<secondary>Ki lettél tiltva ideiglenesen a szerverről<reset> {0}\:\n<reset>{2}
tempBanned=<secondary>Ideiglenesen ki lettél tiltva<reset> {0}re\:\n<reset>{2}
tempbanCommandDescription=Ideiglenes felhasználó tiltás.
tempbanCommandUsage=/<command> <játékos> <datediff> [indok]
tempbanCommandUsage1=/<command> <játékos> <datediff> [indok]
tempbanCommandUsage=/<command> <játékosnév> <időtartam> [indok]
tempbanCommandUsage1=/<command> <játékosnév> <időtartam> [indok]
tempbanCommandUsage1Description=Kitiltja a megadott játékost megadott időre opcionális indokkal
tempbanipCommandDescription=Ideiglenes IP cím kitiltás.
tempbanipCommandUsage=/<command> <játékos> <datediff> [indok]
tempbanipCommandUsage1=/<command> <játékos|ip-cím> <datediff> [indok]
tempbanipCommandUsage=/<command> <játékosnév> <időtartam> [indok]
tempbanipCommandUsage1=/<command> <játékosnév|ip-cím> <időtartam> [indok]
tempbanipCommandUsage1Description=Kitiltja a megadott IP címet megadott időre opcionális indokkal
thunder=<secondary> {0} <primary>mennydörgés a világban.
thunder=<secondary>A villámlás<secondary> {0} <primary>a világban.
thunderCommandDescription=A villámlás engedélyezése/tiltása.
thunderCommandUsage=/<command> <true/false> [időtartam]
thunderCommandUsage1=/<command> <true|false> [időtartam]
thunderCommandUsage1Description=Bekapcsolja/kikapcsolja a villámlásokat opcionális időtartamra
thunderDuration=<secondary> {0} <primary>mennydörgött a világodban<secondary> {1} <primary>másodpercre.
timeBeforeHeal=<dark_red>A következő élet töltés előtti idő\:<secondary> {0}<dark_red>.
timeBeforeTeleport=<dark_red>A következő teleportálás előtti idő\:<secondary> {0}<dark_red>.
thunderCommandUsage1Description=Engedélyezi/letiltja a villámlást egy opcionális időtartamra
thunderDuration=<primary>A villámlás<secondary> {0} <secondary> {1} <primary>másodpercre.
timeBeforeHeal=<dark_red>Várj<secondary> {0}et <dark_red>mielőtt újra gyógyítanád magad.
timeBeforeTeleport=<dark_red>Várj<secondary> {0}et <dark_red>mielőtt újra teleportálnál.
timeCommandDescription=A világ idő megjelenítése/módosítása. Alapértelmezések a jelenlegi világhoz.
timeCommandUsage=/<command> [set|add] [day|night|dawn|17\:30|4pm|4000ticks] [világnév|all]
timeCommandUsage1=/<command>
timeCommandUsage1Description=Megjeleníti az összes világ idejét
timeCommandUsage2=/<command> set <time> [világ|all]
timeCommandUsage2Description=Beállítja az időt a jelenlegi (vagy megadott) világban a megadott időre
timeCommandUsage2=/<command> set <idő> [világ|all]
timeCommandUsage2Description=Beállítja az időt a jelenlegi (vagy egy megadott) világban egy megadott időre
timeCommandUsage3=/<command> add <idő> [világ|all]
timeCommandUsage3Description=Hozzáadja a megadott időt a jelenlegi (vagy megadott) világ időjéhez
timeCommandUsage3Description=Hozzáad egy megadott időt a jelenlegi (vagy egy megadott) világ idejéhez
timeFormat=<secondary>{0}<primary> vagy <secondary>{1}<primary> vagy <secondary>{2}<primary>
timeSetPermission=<dark_red>Nem vagy jogosult az idő beállítására.
timeSetWorldPermission=<dark_red>Nem vagy jogosult beállítani az időt ebben a világban ''{0}''.
timeWorldAdd=<primary>Az idő előre állítva<secondary> {0}-el a(z) <secondary>{1}<primary> világban.
timeSetPermission=<dark_red>Nincs jogosultságod hogy beállítsd az időt.
timeSetWorldPermission=<dark_red>Nincs jogosultságod hogy beállítsd az időt a(z) ''{0}'' világban.
timeWorldAdd=<primary>Előre állítottad <secondary> {0}sel <primary>a(z) <secondary>{1}<primary> világban.
timeWorldCurrent=<primary>A jelenlegi idő<secondary> {0} <secondary>{1}<primary>.
timeWorldCurrentSign=<primary>A jelenlegi idő <secondary>{0}<primary>.
timeWorldSet=<primary>Idő beállítva<secondary> {0}<primary>-re a(z) <secondary>{1}<primary> világban.
timeWorldSet=<primary>Beállítottad az időt<secondary> {0}re <primary>a(z) <secondary>{1}<primary> világban.
togglejailCommandDescription=Bebörtönöz vagy kienged egy játékost. A megadott börtönbe teleportálja őket.
togglejailCommandUsage=/<command> <játékos> <börtönnév> [időtartam]
toggleshoutCommandDescription=Be és kikapcsolja, hogy kiáltás módban beszélsz-e
toggleshoutCommandUsage=/<command> [játékos] [on|off]
toggleshoutCommandUsage1=/<command> [játékos]
toggleshoutCommandUsage1Description=Beállítja a kiáltás módot magadnak vagy egy másik játékosnak, ha meg van adva
toggleshoutCommandUsage=/<command> [játékosnév] [on|off]
toggleshoutCommandUsage1=/<command> [játékosnév]
toggleshoutCommandUsage1Description=Be- vagy kikapcsolja a kiáltás módot neked vagy egy másik játékosnak ha megvan adva
topCommandDescription=Teleportálj a legmagasabb helyre a jelenlegi pozíciódon.
topCommandUsage=/<command>
totalSellableAll=Az összes eladható tárgy és blokk teljes értéke\: <secondary>{1}<green>.
totalSellableAll=<green>Az összes eladható tárgy és blokk teljes értéke <secondary>{1}<green>.
totalSellableBlocks=<green>Az összes eladható blokk teljes értéke <secondary>{1}<green>.
totalWorthAll=<green>Minden tárgyat és blokkot eladtál összesen ennyi értékben <secondary>{1}<green>.
totalWorthBlocks=<green>Eladtad az összes blokkot összesen ennyi értékben <secondary>{1}<green>.
totalWorthAll=<green>Eladtad az összes tárgyat és blokkot <secondary>{1}<green> értékben.
totalWorthBlocks=<green>Eladtad az összes blokkot <secondary>{1}<green> értékben.
tpCommandDescription=Teleportálás egy játékoshoz.
tpCommandUsage=/<command> <játékos> [másikjátékos]
tpCommandUsage1=/<command> <játékos>
tpCommandUsage1Description=Teleportálja hozzád a megadott játékost
tpCommandUsage2=/<command> <játékos> <másik játékos>
tpCommandUsage1=/<command> <játékosnév>
tpCommandUsage1Description=Teleportál egy megadott játékosra
tpCommandUsage2=/<command> <játékosnév> <másik játékos>
tpCommandUsage2Description=Teleportálja az első megadott játékost a másodikhoz
tpaCommandDescription=A megadott játékos megkérése, hogy teleportálhass hozzá.
tpaCommandUsage=/<command> <játékos>
tpaCommandUsage1=/<command> <játékos>
tpaCommandUsage1Description=Kérelmezi, hogy teleportáljon a megadott játékoshoz
tpaCommandUsage=/<command> <játékosnév>
tpaCommandUsage1=/<command> <játékosnév>
tpaCommandUsage1Description=Küld egy tekeport kérelmet egy megadott játékosnak
tpaallCommandDescription=Az összes online játékos megkérése, hogy teleportáljanak hozzád.
tpaallCommandUsage=/<command> <játékos>
tpaallCommandUsage1=/<command> <játékos>
tpaallCommandUsage1Description=Kérelmezi az összes játékost, hogy hozzád teleportáljon.
tpaallCommandUsage=/<command> <játékosnév>
tpaallCommandUsage1=/<command> <játékosnév>
tpaallCommandUsage1Description=Küld egy teleport kérelmet az összes játékosnak hogy hozzád teleportáljanak
tpacancelCommandDescription=Törölje az összes fennálló teleport-kérést. Adja meg a [player] elemet, hogy törölje velük a kérelmeket.
tpacancelCommandUsage=/<command> [játékos]
tpacancelCommandUsage=/<command> [játékosnév]
tpacancelCommandUsage1=/<command>
tpacancelCommandUsage1Description=Elutasítja az összes fennálló teleportálási kérelmet
tpacancelCommandUsage2=/<command> <játékos>
tpacancelCommandUsage2Description=Visszavonja az összes függőben lévő teleport kérést a megadott játékossal
tpacceptCommandDescription=Elfogadja a teleportálási kérelmet.
tpacancelCommandUsage1Description=Visszavonja az összes függőben lévő teleportálási kérelmet
tpacancelCommandUsage2=/<command> <játékosnév>
tpacancelCommandUsage2Description=Visszavonja az összes függőben lévő teleport kérelmet egy megadott játékosnál
tpacceptCommandDescription=Elfogadja a teleport kérelmet.
tpacceptCommandUsage=/<command> [másikjátékos]
tpacceptCommandUsage1=/<command>
tpacceptCommandUsage1Description=Elfogadja a legutóbbi teleportálási kérelmet
tpacceptCommandUsage2=/<command> <játékos>
tpacceptCommandUsage2Description=Elfogad egy teleport kérelmet a megadott játékostól
tpacceptCommandUsage2=/<command> <játékosnév>
tpacceptCommandUsage2Description=Elfogad egy teleport kérelmet egy megadott játékosnak
tpacceptCommandUsage3=/<command> *
tpacceptCommandUsage3Description=Elfogadja az összes teleportálási kérelmet
tpacceptCommandUsage3Description=Elfogadja az összes teleport kérelmet
tpahereCommandDescription=Kérj meg egy megadott játékost, hogy teleportáljon hozzád.
tpahereCommandUsage=/<command> <játékos>
tpahereCommandUsage1=/<command> <játékos>
tpahereCommandUsage1Description=Kérelmezi a megadott játékost, hogy teleportáljon hozzád.
tpahereCommandUsage=/<command> <játékosnév>
tpahereCommandUsage1=/<command> <játékosnév>
tpahereCommandUsage1Description=Küld egy kérelmet egy megadott játékosnak hogy teleportáljon hozzád
tpallCommandDescription=Teleportál minden online játékost egy másik játékoshoz.
tpallCommandUsage=/<command> [játékos]
tpallCommandUsage1=/<command> [játékos]
tpallCommandUsage1Description=Az összes játékost magadhoz teleportálja, vagy egy másik játékoshoz, ha meg van adva
tpallCommandUsage=/<command> [játékosnév]
tpallCommandUsage1=/<command> [játékosnév]
tpallCommandUsage1Description=Automatikusan elfogadja a teleport kérelmeket
tpautoCommandDescription=A teleportálás kérelmek automatikus elfogadása.
tpautoCommandUsage=/<command> [játékos]
tpautoCommandUsage1=/<command> [játékos]
tpautoCommandUsage1Description=Beállítja, ha tpa kérelem automatikusan elfogadja neked, vagy másik játékosnak, amennyiben meg van adva
tpdenyCommandDescription=Elutasítja a teleportálási kérelmet
tpautoCommandUsage=/<command> [játékosnév]
tpautoCommandUsage1=/<command> [játékosnév]
tpautoCommandUsage1Description=Be- vagy kikapcsolja hogy automatikusan elfogadásra kerüljenek a teleport kérelmek nálad vagy egy másik játékosnál ha megvan adva
tpdenyCommandDescription=Elutasítja a teleport kérelmeket.
tpdenyCommandUsage=/<command>
tpdenyCommandUsage1=/<command>
tpdenyCommandUsage1Description=Elutasítja a legutóbbi teleportálási kérelmet
tpdenyCommandUsage2=/<command> <játékos>
tpdenyCommandUsage2Description=Elutasítja a teleportálási kérelmet a megadott játékostól
tpdenyCommandUsage1Description=Elutasítja a legutóbbi teleport kérelmet
tpdenyCommandUsage2=/<command> <játékosnév>
tpdenyCommandUsage2Description=Elutasítja a teleport kérelmet egy megadott játékosnál
tpdenyCommandUsage3=/<command> *
tpdenyCommandUsage3Description=Elutasítja az összes teleportálási kérelmet
tpdenyCommandUsage3Description=Elutasítja az összes teleport kérelmet
tphereCommandDescription=Teleportálj egy játékost magadhoz.
tphereCommandUsage=/<command> <játékos>
tphereCommandUsage1=/<command> <játékos>
tphereCommandUsage1Description=Teleportálja a megadott játékost hozzád
tphereCommandUsage=/<command> <játékosnév>
tphereCommandUsage1=/<command> <játékosnév>
tphereCommandUsage1Description=Hozzád teleportál egy megadott játékost
tpoCommandDescription=Teleportálás felülírva a tptoggle-t.
tpoCommandUsage=/<command> <játékos> [másik játékos]
tpoCommandUsage1=/<command> <játékos>
tpoCommandUsage1Description=Teleportálja a specifikált játékost hozzád, miközben felűlirja a beállításait.
tpoCommandUsage2=/<command> <játékos> <másik játékos>
tpoCommandUsage2Description=Teleportálja az első specifikált embert a másodikhoz, miközben felülírja a beállításait.
tpoCommandUsage=/<command> <játékosnév> [másikjátékos]
tpoCommandUsage1=/<command> <játékosnév>
tpoCommandUsage1Description=Hozzád teleportál egy megadott játékost miközben felűlirja a beállításait
tpoCommandUsage2=/<command> <játékosnév> <másik játékos>
tpoCommandUsage2Description=Teleportálja az első megadott játékost a másodikhoz miközben felülírja a beállításait
tpofflineCommandDescription=Teleportálás a játékos utolsó ismert kijelentkezési helyére
tpofflineCommandUsage=/<command> <játékos>
tpofflineCommandUsage1=/<command> <játékos>
tpofflineCommandUsage1Description=Teleportál téged a megadott játékos kijelentkezési helyére
tpofflineCommandUsage1Description=Teleportál egy megadott játékos kijelentkezési helyére
tpohereCommandDescription=Teleportálás hozzád felülírva a tptoggle-t.
tpohereCommandUsage=/<command> <játékos>
tpohereCommandUsage1=/<command> <játékos>
tpohereCommandUsage1Description=Teleportálja a megadott játékost hozzád, miközben felülírja a beállításait.
tpohereCommandUsage=/<command> <játékosnév>
tpohereCommandUsage1=/<command> <játékosnév>
tpohereCommandUsage1Description=Hozzád teleportál egy játékost miközben felülírja a beállításait
tpposCommandDescription=Koordinátákra teleportálás.
tpposCommandUsage=/<command> <x> <y> <z> [yaw] [pitch] [világ]
tpposCommandUsage1=/<command> <x> <y> <z> [yaw] [pitch] [világ]
tpposCommandUsage1Description=Teleportál egy specifikált helyre opcionális yaw, pitch és/vagy világ
tpposCommandUsage1Description=Teleportál egy megadott helyre opcionálisan yaw, pitch és/vagy világ megadásával
tprCommandDescription=Véletlenszerű teleportálás.
tprCommandUsage=/<command>
tprCommandUsage1=/<command>
tprCommandUsage1Description=Teleportál egy random helyre.
tprCommandUsage1Description=Teleportál egy véletlenszerű helyre
tprCommandUsage2=/<command> <világ>
tprCommandUsage2Description=A megadott világ egy véletlenszerű helyére teleportál
tprCommandUsage2Description=Teleportál egy véletlenszerű helyre egy megadott világban
tprCommandUsage3=/<command> <világ> <játékos>
tprCommandUsage3Description=Teleportálja a megadott játékost a megadott világ egy véletlenszerű helyére
tprOtherUser=<primary>Teleportálása<secondary> {0}<primary> egy rnadom helyre.
tprOtherUser=<secondary> {0}<primary> teleportálása egy véletlenszerű helyre.
tprSuccess=<primary>Teleportálás egy véletlenszerű helyre...
tprSuccessDone=<primary>El lettél random teleportálva.
tprNoPermission=<dark_red>Nincs jogosultságod, hogy használd azt a helyszínt.
tprNotExist=<dark_red>Az a random teleportáció helyszín nem létezik.
tprSuccessDone=<primary>Teleportálva lettél egy véletlenszerű helyre.
tprNoPermission=<dark_red>Nincs jogosultságod hogy használd ezt a helyet.
tprNotExist=<dark_red>A véletlenszerű teleport helye nem létezik.
tps=<primary>Jelenlegi TPS \= {0}
tptoggleCommandDescription=Blokkolja a teleportálás minden formáját.
tptoggleCommandUsage=/<command> [játékos] [on|off]
tptoggleCommandUsage1=/<command> [játékos]
tptoggleCommandUsageDescription=Beállítja, hogy a teleportálás kérelmek bekapcsolva legyenek neked, vagy másik játékosnak, amennyiben meg van adva
tradeSignEmpty=<dark_red>A kereskedelmi tábla nem áll rendelkezésre számodra.
tradeSignEmptyOwner=<dark_red>Nincs mit gyűjteni ebből a kereskedelmi táblából.
tptoggleCommandUsage=/<command> [játékosnév] [on|off]
tptoggleCommandUsage1=/<command> [játékosnév]
tptoggleCommandUsageDescription=Be- vagy kikapcsolja a teleportálás engedélyezését neked vagy egy másik játékosnak ha megvan adva
tradeSignEmpty=<dark_red>A kereskedelmi táblán nincs elérhető ajánlat a számodra.
tradeSignEmptyOwner=<dark_red>Nincs mit begyűjteni ebből a kereskedelmi táblából.
tradeSignFull=<dark_red>Ez a tábla tele van\!
tradeSignSameType=<dark_red>Nem cserélhetsz ugyanolyan tárgyat.
tradeSignSameType=<dark_red>Nem kereskedhetsz ugyanolyan típusú tárggyal.
treeCommandDescription=Létrehoz egy fát oda, ahova nézel.
treeCommandUsage=/<command> <tree|birch|redwood|redmushroom|brownmushroom|jungle|junglebush|swamp|paleoak>
treeCommandUsage1=/<command> <tree|birch|redwood|redmushroom|brownmushroom|jungle|junglebush|swamp|paleoak>
treeCommandUsage1Description=Létrehoz egy fát a megadott típusban, ahova nézel.
treeFailure=<dark_red>Fa generálási hiba. Próbáld újra a földön.
treeSpawned=<primary>Fa idézve.
treeCommandUsage1Description=Leidéz egy fát egy megadott típusban oda amerre nézel
treeFailure=<dark_red>Sikertelen fa generálás. Próbáld újra egy fűblokkon vagy egy földblokkon.
treeSpawned=<primary>Leidézted a fát.
true=<green>igaz<reset>
typeTpacancel=<primary>A kérés törléséhez írd be <secondary>/tpacancel<primary>.
typeTpaccept=<primary>Teleportáláshoz, írd be a <secondary>/tpaccept<primary>.
typeTpdeny=<primary>A kérés elutasításához, írd be <secondary>/tpdeny<primary>.
typeTpacancel=<primary>A kérelem visszavonásához <secondary>/tpacancel<primary>.
typeTpaccept=<primary>Teleport kérelem elfogadásához <secondary>/tpaccept<primary>.
typeTpdeny=<primary>Teleport kérelem elutasításához <secondary>/tpdeny<primary>.
typeWorldName=<primary>Beírhatsz egy adott világ nevet is.
unableToSpawnItem=<dark_red>Nem lehetett leidézni <secondary>{0}<dark_red>-t; ez nem idézhető tárgy.
unableToSpawnMob=<dark_red>Nem lehetett az élőlényt leidézni.
unableToSpawnItem=<dark_red>Nem kérheted le ezt <secondary>{0}<dark_red>; ez nem egy lekérhető tárgy.
unableToSpawnMob=<dark_red>Nem idézheted le ezt a mobot.
unbanCommandDescription=Egy megadott játékos tiltásának feloldása.
unbanCommandUsage=/<command> <játékos>
unbanCommandUsage1=/<command> <játékos>
unbanCommandUsage1=/<command> <játékosnév>
unbanCommandUsage1Description=Feloldja a megadott játékos tiltását.
unbanipCommandDescription=Egy megadott IP cím tiltásának feloldása.
unbanipCommandUsage=/<command> <cím>
unbanipCommandUsage1=/<command> <cím>
unbanipCommandUsage1Description=Feloldja a megadott IP cím tiltását.
unignorePlayer=<primary>Többé nem hagyod figyelmen kívül<secondary> {0} <primary>játékost.
unknownItemId=<dark_red>Ismeretlen tárgy id\:<reset> {0}<dark_red>.
unignorePlayer=<primary>Most már nem blokkolod<secondary> {0} <primary>játékost.
unknownItemId=<dark_red>Ismeretlen tárgy azonosító\:<reset> {0}<dark_red>.
unknownItemInList=<dark_red>Ismeretlen {0} tárgy a(z) {1} listában.
unknownItemName=<dark_red>Ismeretlen tárgy név\: {0}.
unknownItemName=<dark_red>Ismeretlen tárgynév\: {0}.
unlimitedCommandDescription=Lehetővé teszi a tárgyak korlátlan lehelyezését.
unlimitedCommandUsage=/<command> <list|item|clear> [játékos]
unlimitedCommandUsage1=/<command> list [játékos]
unlimitedCommandUsage1Description=Megjeleníti a listát a nem limitált tárgyakról neked, vagy másik játékosnak, amennyiben meg van adva
unlimitedCommandUsage2=/<command> <item> [játékos]
unlimitedCommandUsage2Description=Beállítja, hogy a megadott tárgy végtelen neked, vagy másik játékosnak, amennyiben meg van adva
unlimitedCommandUsage3=/<command> clear [játékos]
unlimitedCommandUsage3Description=Törli az összes végtelen tárgyat magadnál, vagy más játékosnál, amennyiben meg van adva.
unlimitedItemPermission=<dark_red>Nincs jogod a végtelenségre a következő tárgynál\: <secondary>{0}<dark_red>.
unlimitedItems=<primary>Végtelen tárgyak\:<reset>
unlinkCommandDescription=Megszakítja a kapcsolatot a jelenlegi Discord fiókod és a Minecraft fiókod között.
unlimitedCommandUsage1=/<command> list [játékosnév]
unlimitedCommandUsage1Description=Megjeleníti a korlátlan tárgyak listáját neked vagy egy másik játékosnak ha megvan adva
unlimitedCommandUsage2=/<command> <item> [játékosnév]
unlimitedCommandUsage2Description=Be- vagy kikapcoslja hogy a megadott tárgy korlátlan legyen-e nálad vagy egy másik játékosnál ha megvan adva
unlimitedCommandUsage3=/<command> clear [játékosnév]
unlimitedCommandUsage3Description=Törli az összes korlátlan tárgyat nálad vagy egy másik játékosnál ha megvan adva
unlimitedItemPermission=<dark_red>Nincs jogosultságod hogy beállítsd korlátlanra a(z) <secondary>{0}<dark_red> tárgyat.
unlimitedItems=<primary>Korlátlan tárgyak\:<reset>
unlinkCommandDescription=Leválasztja a Minecraft fiókodat a jelenleg összekötött Discord fiókról.
unlinkCommandUsage=/<command>
unlinkCommandUsage1=/<command>
unlinkCommandUsage1Description=Megszakítja a kapcsolatot a jelenlegi Discord fiókod és a Minecraft fiókod között.
unmutedPlayer=<secondary>{0}<primary>-nak/-nek fel lett oldva a némítása.
unsafeTeleportDestination=<dark_red>A teleport cél nem biztonságos, és a teleport-safety le van tiltva.
unsupportedBrand=<dark_red>A jelenleg futtatott szerverplatform nem biztosítja ehhez a funkcióhoz az adottságokat.
unsupportedFeature=<dark_red>Ez a funkció a jelenlegi szerververzión nem támogatott.
unvanishedReload=<dark_red>Az újratöltés következtében mindenki látni fog.
unlinkCommandUsage1Description=Leválasztja a Minecraft fiókodat a jelenleg összekötött Discord fiókról.
unmutedPlayer=<secondary>{0}<primary> játékosnak fel lett oldva a némítása.
unsupportedBrand=<dark_red>A jelenleg futtatott szerverplatform nem biztosítja a funkcióhoz szükséges képességeket.
unsupportedFeature=<dark_red>Ez a funkció a jelenlegi verzión nem támogatott.
unvanishedReload=<dark_red>Újratöltés következtében mindenki látni fog.
upgradingFilesError=Hiba történt a fájlok frissítése közben.
uptime=<primary>Működési idő\:<secondary> {0}
userAFK=<dark_purple>{0} <dark_purple>most nincs gépnél, és nem biztos, hogy válaszolni fog.
userAFKWithMessage=<dark_purple>{0} <dark_purple>most nincs gépnélk, és nem biztos, hogy fog válaszolni. {1}
uptime=<primary>Üzemidő\:<secondary> {0}
userAFK=<dark_purple>{0} <dark_purple>most nincs gépnél és nem biztos hogy válaszolni fog.
userAFKWithMessage=<dark_purple>{0} <dark_purple>most nincs gépnélk, és nem biztos, hogy fog válaszolni. Afk üzenet\: {1}
userdataMoveBackError=Nem sikerült a userdata/{0}.tmp áthelyezése ide userdata/{1}\!
userdataMoveError=Nem sikerült a userdata/{0} áthelyezése ide userdata/{1}.tmp\!
userDoesNotExist=<dark_red>A felhasználó<secondary> {0} <dark_red>nem létezik.
uuidDoesNotExist=<dark_red>A felhasználó a(z)<secondary> {0} <dark_red>UUID-vel nem létezik.
userDoesNotExist=<secondary> {0} <dark_red>felhasználó nem létezik.
uuidDoesNotExist=<dark_red>A felhasználó a(z)<secondary> {0} <dark_red>UUID értékkel nem létezik.
userIsAway=<gray>* {0} <gray>elment a géptől.
userIsAwayWithMessage=<gray>* {0} <gray>elment a géptől.
userIsNotAway=<gray>* {0} <gray>visszajött.
userIsAwaySelf=<gray>Most nem vagy gépnél.
userIsAwaySelfWithMessage=<gray>Most nem vagy gépnél.
userIsNotAwaySelf=<gray>Most visszatértél a géphez.
userIsAwaySelf=<gray>Elmentél a géptől.
userIsAwaySelfWithMessage=<gray>Elmentél a géptől.
userIsNotAwaySelf=<gray>Visszajöttél a géphez.
userJailed=<primary>Börtönbe kerültél\!
usermapEntry=<secondary>{0} <primary>hozzá van csatolva <secondary>{1}-hoz/hez<primary>.
usermapKnown=<primary>Itt van <secondary>{0} <primary> ismert játékos elmentve a gyorsítótárba <secondary>{1} <primary> UUID névvel összekapcsolva.
usermapPurge=<primary>Fájlok ellenőrzése a felhasználó adatokban, amik nincsenek eltárolva, eredmény ki lesz írva a konzolba. Destructive mód\: {0}
usermapSize=<primary>Jelenlegi gyorsítótárba mentett felhasználók map-ja <secondary>{0}<primary>/<secondary>{1}<primary>/<secondary>{2}<primary>.
userUnknown=<dark_red>Figyelem\: ''<secondary>{0}<dark_red>'' még soha nem csatlakozott ehhez a szerverhez.
usermapEntry=<secondary>{0} <primary>hozzá van csatolva <secondary>{1}<primary> játékoshoz.
usermapKnown=<primary>A felhasználói gyorsítótárban <secondary>{0} <primary>ismert felhasználó található <secondary>{1} <primary>név UUID párral.
usermapPurge=<primary>Fájlok ellenőrzése a userdata mappában található, nem leképzett fájlokra, az eredmények a konzolra lesznek kiírva. Destruktív Mód\: {0}
usermapSize=<primary>Gyorsítótárban lévő felhasználók \n<secondary>{0}<primary>/<secondary>{1}<primary>/<secondary>{2}<primary>.
userUnknown=<dark_red>Figyelmeztetés\: ''<secondary>{0}<dark_red>'' sose járt a szerveren.
usingTempFolderForTesting=Ideiglenes mappák használata a teszteléshez\:
vanish=<primary>Láthatatlanság {0}<primary>-nak/-nek\: {1}
vanish=<primary>Láthatatlanság {0}<primary> játékosnak\: {1}
vanishCommandDescription=Rejtsd el magad a többi játékos elöl.
vanishCommandUsage=/<command> [játékos] [on|off]
vanishCommandUsage1=/<command> [játékos]
vanishCommandUsage1Description=Beállítja a láthatatlanságot magadnak vagy egy másik játékosnak, ha meg van adva
vanished=<primary>Most már teljesen láthatatlan vagy a normál felhasználók számára, és elrejtve a játékon belüli parancsoktól.
versionCheckDisabled=<primary>A frissítés ellenőrzés letiltva a konfigurációban.
versionCustom=<primary>A verzióját nem lehet ellenőrizni\! Saját buildelésű? Build információk\: <secondary> {0} <primary>.
versionDevBehind=<dark_red>A szerver <secondary>{0} <dark_red>verzióval van lemaradva az EssentialsX-től\!
versionDevDiverged=<primary>EssentialsX fejlesztői kiadását futtatod, amely <secondary>{0} <primary>buildek-et tartalmaz a legújabb fejlesztés mögött\!
versionDevDivergedBranch=<primary>Jellemző fiók\: <secondary>{0} <primary>.
versionDevDivergedLatest=<primary>Legújabb, kísérleti EssentialsX buildet futtat\!
versionDevLatest=<primary>Futtatja a legújabb EssentialsX fejlesztői verziót\!
versionError=<dark_red>Hiba az EssentialsX verzióinformációk ellenőrzése közben\! Build információk\: <secondary>{0} <primary>.
versionErrorPlayer=<primary>Hiba az EssentialsX verzióinformációinak ellenőrzése közben\!
versionFetching=Verzióinformációk lekérése...
versionOutputVaultMissing=<dark_red>A Vault plugin nincs telepítve. A chat és a jogosultságok lehet nem működnek.
versionOutputFine=<primary>{0} verzió\: <green>{1}
versionOutputWarn=<primary>{0} verzió\: <secondary>{1}
versionOutputUnsupported=<light_purple>{0} <primary>verzió\: <light_purple>{1}
vanishCommandUsage=/<command> [játékosnév] [on|off]
vanishCommandUsage1=/<command> [játékosnév]
vanishCommandUsage1Description=Be- vagy kikapcsolja a láthatatlanságot nálad vagy egy másik játékosnél ha megvan adva
vanished=<primary>Most már teljesen láthatatlan vagy a normál felhasználók számára és rejtve vagy a játékon belüli parancsoktól.
versionCheckDisabled=<primary>Frissítés ellenőrzés le van tiltva a konfigban.
versionCustom=<primary>A verziód nem lehet ellenőrizni\! Saját build? Build információk\: <secondary> {0} <primary>.
versionDevBehind=<dark_red>A(z) <secondary>{0} <dark_red>EssentialsX dev build elavult\!
versionDevDiverged=<primary>Egy kísérleti EssentialsX buildet futtatsz ami <secondary>{0} <primary>builddel marad el a legújabb dev buildtől\!
versionDevDivergedBranch=<primary>Funkcióág\: <secondary>{0} <primary>.
versionDevDivergedLatest=<primary>A legújabb kísérleti EssentialsX buildet futtatod\!
versionDevLatest=<primary>A legújabb EssentialsX fejlesztői verziót futtatod\!
versionError=<dark_red>Hiba történt az EssentialsX verzió információk lekérése közben. Build információk\: \n<secondary>{0}<primary>.
versionErrorPlayer=<primary>Hiba történt az EssentialsX verzió információk ellenőrzése közben\!
versionFetching=<primary>Verzió információk lekérése...
versionOutputVaultMissing=<dark_red>A Vault plugin nincs telepítve. A chat és a jogosultságok lehet hogy nem fognak működni.
versionOutputFine=<primary>{0} verziója\: <green>{1}
versionOutputWarn=<primary>{0} verziója\: <secondary>{1}
versionOutputUnsupported=<light_purple>{0} <primary>verziója\: <light_purple>{1}
versionOutputUnsupportedPlugins=<light_purple>Nem támogatott<primary> pluginokat futtatsz\!
versionOutputEconLayer=<primary>Economy Réteg\: <reset>{0}
versionMismatch=<dark_red>Verzió eltérés\! Kérjük, frissítsd a(z) {0}-t az azonos verzióra.
versionMismatchAll=<dark_red>Verzió eltérés\! Kérjük, frissítsd az összes Essentials jart az azonos verzióra.
versionReleaseLatest=<primary>Az EssentialsX legújabb, stabil verzióját futtatod\!
versionMismatch=<dark_red>Verzió eltérés\! Kérlek frissítsd a(z) {0} plugint azonos verzióra.
versionMismatchAll=<dark_red>Verzió eltérés\! Kérlek frissítsd az összes Essentials jart azonos verzióra.
versionReleaseLatest=<primary>Az EssentialsX legújabb stabil verzióját futtatod\!
versionReleaseNew=<dark_red>Az új EssentialsX verzió letölthető\: <secondary>{0} <dark_red>.
versionReleaseNewLink=<dark_red>Tölstsd le innen\: <secondary>{0}
voiceSilenced=<primary>A hangod elnémult\!
voiceSilencedTime=<primary>A hangod elnémult {0}-ra/-re\!
voiceSilencedReason=<primary>A hangod elnémult\! Oka\: <secondary>{0}
voiceSilencedReasonTime=<primary>A hangod elnémult {0}-ra/-re\! Oka\: <secondary>{1}
voiceSilencedTime=<primary>A hangod elnémult {0}re\!
voiceSilencedReason=<primary>A hangod elnémult\! Indok\: <secondary>{0}
voiceSilencedReasonTime=<primary>A hangod elnémult {0}re\! Indok\: <secondary>{1}
walking=séta
warpCommandDescription=Listázza az összes warpot vagy warpol egy megadott helyre.
warpCommandUsage=/<command> <oldalszám|warp> [játékos]
warpCommandUsage1=/<command> [oldal]
warpCommandUsage1Description=Ad egy listát az összes warp-ról az első vagy megadott oldalon
warpCommandUsage2=/<command> <warp> [játékos]
warpCommandUsage2Description=Teleportál téged vagy egy megadott játékost a megadott warp-hoz
warpDeleteError=<dark_red>Probléma a warp fájl törlésével.
warpInfo=<primary>Információ a(z)<secondary> {0}<primary> warpról\:
warpCommandUsage1Description=Kilistázza az első vagy egy megadott oldalon lévő warpokat
warpCommandUsage2=/<command> <warp> [játékosnév]
warpCommandUsage2Description=Teleportál téged vagy egy megadott játékost egy megadott warphoz
warpDeleteError=<dark_red>Probléma történt a warp fájl törlésével.
warpInfo=<primary>Információk a(z)<secondary> {0}<primary> warpról\:
warpinfoCommandDescription=Megkeresi a megadott warp hely információit.
warpinfoCommandUsage=/<command> <warp>
warpinfoCommandUsage1=/<command> <warp>
warpinfoCommandUsage1Description=Információval szolgál a megadott warp-ról
warpingTo=<primary>Warpolás ide<secondary> {0}<primary>.
warpinfoCommandUsage1Description=Információt jelenít meg egy megadott warpról
warpingTo=<primary>Teleportáltál a(z)<secondary> {0}<primary> warpra.
warpList={0}
warpListPermission=<dark_red>Nincs jogod, hogy listázd a warpokat.
warpListPermission=<dark_red>Nincs jogosultságod hogy kilistázd a warpokat.
warpNotExist=<dark_red>Ez a warp nem létezik.
warpOverwrite=<dark_red>Nem lehet felülírni a warpot.
warpOverwrite=<dark_red>Nem írhatod felül ezt a warpot.
warps=<primary>Warpok\:<reset> {0}
warpsCount=<primary>Van<secondary> {0} <primary>warp. Ez az <secondary>{1}.<primary> oldal a <secondary>{2}<primary>-ból/ből.
warpsCount=<primary>Jelenleg<secondary> {0} <primary>warp van. <secondary>{1}<primary>/<secondary>{2}<primary>.
weatherCommandDescription=Beállítja az időjárást.
weatherCommandUsage=/<command> <storm/sun> [időtartam]
weatherCommandUsage1=/<command> <storm|sun> [időtartam]
weatherCommandUsage1Description=Beállítja az időjárást a megadott típusra egy opcionális időtartamra
warpSet=<primary>Warp<secondary> {0} <primary>beállítva.
warpUsePermission=<dark_red>Nincs engedélyed a warp használatára.
weatherCommandUsage1Description=Beállítja az időjárást egy megadott típusra egy opcionális időtartamra
warpSet=<primary>Beállítottad a(z)<secondary> {0} <primary>warpot.
warpUsePermission=<dark_red>Nincs jogosultságod használni ezt a warpot.
weatherInvalidWorld=A világ {0} nem található\!
weatherSignStorm=<primary>Időjárás\: <secondary>viharos<primary>.
weatherSignSun=<primary>Időjárás\: <secondary>napos<primary>.
weatherStorm=<primary>Beállítottad az időt <secondary>esősre<primary> a(z)<secondary> {0}<primary> világban.
weatherStormFor=<primary>Beállítottad az időjárást <secondary>esősre {0}<primary> világban<secondary> {1} másodpercre<primary>.
weatherSun=<primary>Beállítottad az időt <secondary>naposra<primary> a(z)<secondary> {0}<primary> világban.
weatherSunFor=<primary>Beállítottad az időjárást <secondary>naposra {0}<primary> világban<secondary> {1} másodpercre<primary>.
weatherStorm=<primary>Beállítottad az időjárást <secondary>esősre<primary> a(z)<secondary> {0}<primary> világban.
weatherStormFor=<primary>Beállítottad az időjárást <secondary>esősre a(z) {0}<primary> világban<secondary> {1} másodpercre<primary>.
weatherSun=<primary>Beállítottad az időjárást <secondary>naposra<primary> a(z)<secondary> {0}<primary> világban.
weatherSunFor=<primary>Beállítottad az időjárást <secondary>naposra a(z) {0}<primary> világban<secondary> {1} másodpercre<primary>.
west=NY
whoisAFK=<primary> - Nincs gépnél\:<reset> {0}
whoisAFKSince=<primary> - Nincs gépnél\:<reset> {0} (Mivel {1})
whoisAFKSince=<primary> - Nincs gépnél\:<reset> {0} ({1})
whoisBanned=<primary> - Kitiltva\:<reset> {0}
whoisCommandDescription=Alapvető információk meghatározása a megadott játékosról.
whoisCommandDescription=Megjeleníti egy megadott játékos információit.
whoisCommandUsage=/<command> <becenév>
whoisCommandUsage1=/<command> <játékos>
whoisCommandUsage1Description=Alap információkat ad a játékosról
whoisExp=<primary> - Exp\:<reset> {0} (Szint {1})
whoisCommandUsage1=/<command> <játékosnév>
whoisCommandUsage1Description=Megjelenít alap információkat a játékosról
whoisExp=<primary> - Xp\:<reset> {0} ({1} Szint)
whoisFly=<primary> - Repülés\:<reset> {0} ({1})
whoisSpeed=<primary> - Gyorsaság\:<reset> {0}
whoisGamemode=<primary> - Játékmód\:<reset> {0}
whoisGeoLocation=<primary> - Elhelyezkedés\:<reset> {0}
whoisGod=<primary> - Isten mód\:<reset> {0}
whoisHealth=<primary> - Élet\:<reset> {0}/20
whoisGod=<primary> - Halhatatlanság\:<reset> {0}
whoisHealth=<primary> - Életerő\:<reset> {0}/20
whoisHunger=<primary> - Éhség\:<reset> {0}/20 (+{1} telítettség)
whoisIPAddress=<primary> - IP cím\:<reset> {0}
whoisJail=<primary> - Börtön\:<reset> {0}
whoisLocation=<primary> - Elhelyezkedés\:<reset> ({0}, {1}, {2}, {3})
whoisMoney=<primary> - Pénz\:<reset> {0}
whoisMuted=<primary> - Lenémítva\:<reset> {0}
whoisMutedReason=<primary> - Lenémítva\:<reset> {0} <primary>Oka\: <secondary>{1}
whoisMoney=<primary> - Egyenleg\:<reset> {0}
whoisMuted=<primary> - Némítva\:<reset> {0}
whoisMutedReason=<primary> - Némítva\:<reset> {0} <primary>Indok\: <secondary>{1}
whoisNick=<primary> - Becenév\:<reset> {0}
whoisOp=<primary> - OP\:<reset> {0}
whoisPlaytime=<primary> - Játékidő\:<reset> {0}
whoisTempBanned=<primary> - Kitiltás lejár\:<reset> {0}
whoisTop=<primary> \=\=\=\=\=\= Ki is ő\:<secondary> {0} <primary>\=\=\=\=\=\=
whoisUuid=<primary> - UUID\:<reset> {0}
whoisFirstLogin=<primary> - Első bejelentkezés\:<reset> {0}
whoisWhitelist=<primary> - Fehérlista\:<reset> {0}
workbenchCommandDescription=Megnyit egy barkácsasztalt.
workbenchCommandUsage=/<command>
worldCommandDescription=Váltás a világok között.
worldCommandUsage=/<command> [világ]
worldCommandUsage1=/<command>
worldCommandUsage1Description=Teleportál a megfelelő helyre a netherben vagy a normál világban
worldCommandUsage1Description=Teleportál egy megfelelő helyre a netherben vagy a normál világban
worldCommandUsage2=/<command> <világ>
worldCommandUsage2Description=Teleportál a helyzetedhez a megadott világban
worth=<green>Stackelés {0} érdemes <secondary>{1}<green> ({2} elem(ek) {3} minden)
worldCommandUsage2Description=Teleportál egy megadott világba
worth=<green>Egy stack {0} értéke <secondary>{1}<green> ({2} tárgy {3} darabonként)
worthCommandDescription=Kiszámítja a kézben lévő vagy a megadott tárgy értékét.
worthCommandUsage=/<command> <<tárgynév>|<id>|hand|inventory|blocks> [-][mennyiség]
worthCommandUsage1=/<command> <tárgynév> [összeg]
worthCommandUsage1Description=Ellenőrzi az értékét az összes (vagy megadott összegű, amennyiben meg van adva) a megadott tárgyat az eszköztáradban
worthCommandUsage2=/<command> hand [összeg]
worthCommandUsage2Description=Ellenőrzi az értékét az összes (vagy megadott összegű, amennyiben meg van adva) a kézben tartot tárgynak
worthCommandUsage1=/<command> <tárgynév> [mennyiség]
worthCommandUsage1Description=Ellenőrzi az értékét az összes (vagy egy megadott mennyiségű ha megvan adva) egy megadott tárgyat az eszköztáradban
worthCommandUsage2=/<command> hand [mennyiség]
worthCommandUsage2Description=Ellenőrzi az értékét az összes (vagy egy megadott mennyiségű ha megvan adva) a kezedben lévő tárgynak
worthCommandUsage3=/<command> all
worthCommandUsage3Description=Ellenőrzi az értékét az összes lehetséges tárgynak az eszköztáradban
worthCommandUsage4=/<command> blocks [összeg]
worthCommandUsage4Description=Ellenőrzi az értékét az összes (vagy megadott összegű, amennyiben meg van adva) blokkoknak az eszköztáradban
worthMeta=<green>Stackelés {0} az {1} értékű metaadatokkal <secondary>{2}<green> ({3} elem(ek) {4} minden)
worthSet=<primary>Ár beállítva.
worthCommandUsage4=/<command> blocks [mennyiség]
worthCommandUsage4Description=Ellenőrzi az értékét az összes (vagy egy megadott mennyiségű ha megvan adva) egy megadott blokknak az eszköztáradban
worthMeta=<green>Egy stack {0} {1} metadatával értékel <secondary>{2}<green> ({3} tárgy {4} darabonként)
worthSet=<primary>Beállítottad a tárgy értékét
year=év
years=év
youAreHealed=<primary>Életed feltöltve.
youHaveNewMail=<primary>Van<secondary> {0} <primary>üzeneted\! Írd be <secondary>/mail read<primary>, hogy megnézd a leveled.
youAreHealed=<primary>Meggyógyultál.
youHaveNewMail=<primary>Van<secondary> {0} <primary>üzeneted\! Írd be a <secondary>/mail read<primary> parancsot hogy megnézd a leveled.
xmppNotConfigured=Az XMPP nincs megfelelően konfigurálva. Ha nem tudod mi az XMPP, akkor érdemes lehet eltávolítani az EssentialsXXMPP plugint a szerverről.
@@ -1,13 +1,13 @@
#Sat Feb 03 17:34:46 GMT 2024
action=<dark_purple>* {0} <dark_purple>{1}
addedToAccount=<green>Sono stati aggiunti <yellow>{0}<green> al tuo account.
addedToOthersAccount=<green>Sono stati aggiunti <yellow>{0}<green> all''account di<yellow> {1}<green>. Nuovo saldo\:<yellow> {2}
addedToAccount=<yellow>{0}<green> è stato aggiunto al tuo account.
addedToOthersAccount=<yellow>{0}<green> aggiunto a<yellow> {1}<green> account. Nuovo bilancio\:<yellow> {2}
adventure=avventura
afkCommandDescription=Imposta il tuo stato come AFK.
afkCommandUsage=/<command> [giocatore/messaggio...]
afkCommandUsage1=/<command> [messaggio]
afkCommandUsage1Description=Imposta il tuo stato come AFK con un messaggio personalizzato
afkCommandUsage2=/<command> <giocatore> [messaggio]
afkCommandUsage2=/<command> <player> [messaggio]
afkCommandUsage2Description=Imposta lo stato di un altro giocatore come AFK con un messaggio personalizzato
alertBroke=rotto\:
alertFormat=<dark_aqua>[{0}]<reset> {1}<primary> {2} a\: {3}
@@ -16,8 +16,8 @@ alertUsed=usato\:
alphaNames=<dark_red>I nomi dei giocatori possono contenere soltanto lettere, numeri, e _.
antiBuildBreak=<dark_red>Non hai il permesso di rompere blocchi di <secondary>\: {0} <dark_red>qui.
antiBuildCraft=<dark_red>Non hai il permesso di creare <secondary>{0}<dark_red>.
antiBuildDrop=<dark_red>Non hai il permesso di droppare un<secondary> {0}<dark_red>.
antiBuildInteract=<dark_red>Non hai il permesso di interagire con<secondary> {0}<dark_red>.
antiBuildDrop=<dark_red>Non hai il permesso di lanciare un<secondary> {0}<dark_red>.
antiBuildInteract=<dark_red>Non hai il permesso necessario per interagire con<secondary> {0}<dark_red>.
antiBuildPlace=<dark_red>Non hai il permesso di piazzare<secondary> {0} <dark_red>qui.
antiBuildUse=<dark_red><dark_red>Non hai il permesso di utilizzare <secondary>{0}<dark_red>.
antiochCommandDescription=Sorpresina per i super operatori.
@@ -66,6 +66,7 @@ banExempt=<dark_red>Non puoi bannare quel giocatore.
banExemptOffline=<dark_red>Non puoi bannare un giocatore che è offline.
banFormat=<secondary>Sei stato bannato\:\n<reset>{0}
banIpJoin=Il tuo indirizzo IP è bannato da questo server. Motivo\: {0}
tempbanIpJoin=Il tuo indirizzo IP è stato temporaneamente bannato da questo server per {0}. Il Motivo è\: {1}
banJoin=Sei bannato da questo server. Motivo\: {0}
banipCommandDescription=Banna un indirizzo IP.
banipCommandUsage=/<command> <address> [reason]
@@ -251,6 +252,7 @@ discordCommandDescription=Invia il link di invito per il server Discord al gioca
discordCommandLink=<primary>Unisciti al nostro server Discord\: <secondary><click\:open_url\:"{0}">{0}</click><primary>\!
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
discordCommandUsage1Description=
discordCommandExecuteDescription=Esegue un comando all''interno del server Minecraft come Console.
discordCommandExecuteArgumentCommand=Il comando da eseguire
discordCommandExecuteReply=Esecuzione del comando\: "/{0}"
@@ -275,12 +277,14 @@ discordErrorLoggerNoPerms=La gestione dei log della console su Discord è stata
discordErrorNoGuild=ID server non valido o mancante\! Si prega di seguire il tutorial nella configurazione per configurare il plugin.
discordErrorNoGuildSize=Il tuo bot non è in alcun server\! Segui il tutorial nel file di configurazione per configurare correttamente il plugin.
discordErrorNoPerms=Il tuo bot non può né leggere né inviare messaggi\! Assicurati che abia il permesso di leggere ed inviare messaggi in tutti i canali in cui desideri che ciò avvenga.
discordErrorInvalidPerms=Il bot Discord è stato configurato senza i permessi richiesti\! Devi abilitare\: {0}.
discordErrorNoPrimary=Non hai definito un canale primario oppure il canale primario definito non è valido. Verrà utilizzato il canale predefinito\: \#{0}.
discordErrorNoPrimaryPerms=Il bot non può scrivere nel canale principale, \#{0}. Assicurati che abbia i permessi di lettura e scrittura in tutti i canali che desideri utilizzare.
discordErrorNoToken=Nessun token inserito\! Segui il tutorial nel file di configurazione per configurare correttamente il plugin.
discordErrorWebhook=Errore durante l''invio di un messaggio nel canale della console\! Probabilmente è stato causato dall''eliminazione involontaria del webhook della console. Puoi risolvere il problema assicurandoti che il tuo bot abbia il permesso "Manage Webhooks" ed eseguendo il comando "/ess reload".
discordLinkInvalidGroup=Gruppo {0} non valido per il ruolo {1}. Gruppi disponibili\: {2}
discordLinkInvalidRole=ID ruolo {0} non valido per il gruppo\: {1}. Puoi visualizzare l''ID dei ruoli usando il comando /roleinfo su Discord.
discordLinkInvalidRoleInteract=Il ruolo, {0} ({1}), non può essere utilizzato per la sincronizzazione di gruppo->ruolo perché sopra il ruolo più alto del tuo bot. O spostare il ruolo del bot sopra "{0}" o spostare "{0}" sotto il ruolo del tuo bot.
discordLinkInvalidRoleManaged=Il ruolo {0} ({1}) non può essere utilizzato per la sincronizzazione gruppo->ruolo perché è gestito da un altro bot o da un''altra integrazione.
discordLinkLinked=<primary>Per associare il tuo account Minecraft a Discord, digita <secondary>{0} <primary>nel server di Discord.
discordLinkLinkedAlready=<primary>Hai già associato il tuo account Discord\! Se lo vuoi scollegare esegui il comando <secondary>/unlink<primary>.
@@ -625,6 +629,7 @@ jailList=<primary>Prigioni\:<reset> {0}
jailMessage=<dark_red>Avrai tempo per riflettere... in prigione.
jailNotExist=<dark_red>Quella prigione non esiste.
jailNotifyJailed=<primary>Il giocatore<secondary> {0} <primary>è stato incarcerato da <secondary>{1}.
jailNotifyJailedFor=<primary>Il giocatore<secondary> {0} <primary>ha espulso<secondary> {1}<primary> per<secondary> {2}<primary>.
jailNotifySentenceExtended=<primary>La pena di<secondary>{0}<primary>è stata estesa a <secondary>{1} <primary>da <secondary>{2}<primary>.
jailReleased=<primary>Il giocatore <secondary>{0}<primary> è stato scarcerato.
jailReleasedPlayerNotify=<primary>Sei stato scarcerato\!
@@ -881,6 +886,7 @@ noPotionEffectPerm=<dark_red>Non hai il permesso di applicare l''effetto <second
noPowerTools=<primary>Non hai nessun power tool assegnato.
notAcceptingPay=<dark_red>{0} <dark_red>non accetta pagamenti.
notAllowedToLocal=<dark_red>Non hai il permesso di scrivere nella chat locale.
notAllowedToQuestion=<dark_red>Non hai il permesso necessario per inviare messaggi interrogativi.
notAllowedToShout=<dark_red>Non hai il permesso per urlare.
notEnoughExperience=<dark_red>Non hai abbastanza esperienza.
notEnoughMoney=<dark_red>Non hai abbastanza soldi.
@@ -1126,13 +1132,6 @@ sellHandPermission=<primary>Non hai il permesso di vendere individualmente.
serverFull=Il server è pieno\!
serverReloading=Stai forse facendo un reload del server invece di utilizzare il restart?. Se è così, perché? Non ti aspettare alcun supporto dal team di Essentials se usi /reload.
serverTotal=<primary>Totale Server\:<secondary> {0}
serverUnsupported=La versione attuale del server non è supportata\!
serverUnsupportedClass=Status determining class\: {0}
serverUnsupportedCleanroom=Il tuo server non supporta correttamente i plugins Bukkit che utilizzano\: internal Mojang code. Puoi utilizzare un Essentials replacement come server software.
serverUnsupportedDangerous=Stai utilizzando un fork come server software che è risaputo essere pericoloso ed aver portato a perdite di dati. È fortemente raccomandato utilizzare invece Paper.
serverUnsupportedLimitedApi=Il tuo server ha le funzionalità API limitate. EssentialsX funzionerà lo stesso, ma alcune features potrebbero essere disabilitate.
serverUnsupportedDumbPlugins=Stai utilizzando dei plugins che è risaputo portino ad incompatibilità sia con EssentialsX che con altri plugin.
serverUnsupportedMods=Il tuo server non supporta correttamente i plugins bukkit. I plugins di Bukkit non dovrebbero essere utilizzati con mods Forge/Fabric\! Per Forge\: Puoi utilizzare ForgeEssentials, oppure SpongeForge + Nucleus.
setBal=<green>I tuoi soldi sono stati impostati a {0}.
setBalOthers=<green>Hai impostato i soldi di {0} a {1}.
setSpawner=<primary>Cambiato il tipo di generatore di mostri a<secondary> {0}<primary>.
@@ -1411,7 +1410,12 @@ tprCommandDescription=Ti teletrasporta in un punto casuale.
tprCommandUsage=/<command>
tprCommandUsage1=/<command>
tprCommandUsage1Description=Ti teletrasporta in un punto casuale
tprCommandUsage3=/<comando><mondo><giocatore>
tprOtherUser=<primary>Teletrasportare<secondary> {0}<primary> in una posizione casuale.
tprSuccess=<primary>Teletrasporto verso un punto casuale...
tprSuccessDone=<primary>Sei stato teletrasportato in una posizione casuale.
tprNoPermission=<dark_red>Non hai il permesso di utilizzare quella posizione.
tprNotExist=<dark_red>Quel luogo di teletrasporto casuale non esiste.
tps=<primary>TPS Attuali \= {0}
tptoggleCommandDescription=Impedisce qualsiasi tipo di teletrasporto.
tptoggleCommandUsage=/<command> [giocatore] [on|off]
@@ -1461,7 +1465,6 @@ unlinkCommandUsage=/<command>
unlinkCommandUsage1=/<command>
unlinkCommandUsage1Description=Scollega il tuo account Minecraft dall''account Discord attualmente collegato.
unmutedPlayer=<primary>Il giocatore<secondary> {0} <primary>è stato smutato.
unsafeTeleportDestination=<dark_red>La destinazione del teletrasporto non è sicura e il teletrasporto sicuro è disabilitata.
unsupportedBrand=<dark_red>Il tuo server non è in grado di far funzionare questa feature.
unsupportedFeature=<dark_red>Questa feature non è supportata nella versione attuale del server.
unvanishedReload=<dark_red>Il server è stato ricaricato e ciò ti ha forzato a tornare visibile.
@@ -6,9 +6,11 @@ adventure=アドベンチャー
afkCommandDescription=キーボードから離れたユーザーとしてマークします。
afkCommandUsage=/<command> [player/message...]
afkCommandUsage1=/<command> [message]
afkCommandUsage1Description=任意の理由を付けてAFKステータスを切り替えます
afkCommandUsage2=/<command> <player> [message]
afkCommandUsage2Description=指定されたプレーヤーのAFK状態を、任意の理由で切り替えます
alertBroke=壊れた\:
alertFormat=<dark_aqua>[{0}] <reset> {1} <primary> {2} \: {3}
alertPlaced=設置\:
alertUsed=使用\:
alphaNames=<dark_red>プレイヤー名には、英数字とアンダーバーのみを含めることができます。
@@ -64,6 +66,7 @@ banExempt=<dark_red>そのプレイヤーをBANすることはできません。
banExemptOffline=<dark_red>オフラインのプレイヤーをBANすることはできません。
banFormat=<secondary>あなたはBANされました\:\n<reset>{0}
banIpJoin=あなたのIPアドレスはこのサーバーからBANされています。理由:{0}
tempbanIpJoin=あなたのIPアドレスはこのサーバーからBANされています。\n期限\: {0}\n理由\: {1}
banJoin=あなたはこのサーバーからBANされています。理由:{0}
banipCommandDescription=IP アドレスをBANします。
banipCommandUsage=/<command> <address> [reason]
@@ -245,9 +248,11 @@ discordCommandAccountResponseLinked=あなたのアカウントは次のマイ
discordCommandAccountResponseLinkedOther={0}''のアカウントは次のMCIDと連携されました\:**{1}**
discordCommandAccountResponseNotLinked=あなたは連携されたマインクラフトアカウントがありません。
discordCommandAccountResponseNotLinkedOther={0} はリンクされたマインクラフトアカウントを持っていません。
discordCommandDescription=Discord招待リンクをプレイヤーに送信します。
discordCommandLink=<primary> <secondary><click\:open_url\:"{0}">{0}</click><primary> からDiscordサーバーに参加してください!
discordCommandUsage=/<コマンド>
discordCommandUsage1=/<コマンド>
discordCommandUsage1Description=Discord招待リンクをプレイヤーに送信
discordCommandExecuteDescription=Minecraftサーバー上でコンソールコマンドを実行します。
discordCommandExecuteArgumentCommand=実行されるコマンド
discordCommandExecuteReply=コマンドを実行中\: "/{0}"
@@ -272,12 +277,14 @@ discordErrorLoggerNoPerms=Discordコンソールロガーは権限が無いの
discordErrorNoGuild=サーバーIDが無効または不足しています\! config内のチュートリアルに沿って、プラグインを設定してください。
discordErrorNoGuildSize=あなたのbotはどのサーバーにも入っていません\! プラグインを設定するには、config内のチュートリアルに沿ってください。
discordErrorNoPerms=あなたのbotは、どのチャンネルでも見たり話したりできません\! 使用するすべてのチャンネルで、botに読み取り権限と書き込み権限があることを確認してください。
discordErrorInvalidPerms=あなたのbotをセットアップするには権限が必要です\! 必要な権限\: {0}。
discordErrorNoPrimary=プライマリチャンネルを定義していないか、定義されたプライマリチャンネルが無効です。デフォルトチャンネルにフォールバックします\: \#{0} 。
discordErrorNoPrimaryPerms=プライマリチャンネルである \#{0} では、ボットは発言できません。あなたのボットが、使用したいすべてのチャンネルで読み取り権限と書き込み権限を持っていることを確認してください。
discordErrorNoToken=トークンは提供されません\! プラグインを設定するには、config内のチュートリアルに沿ってください。
discordErrorWebhook=コンソールチャンネルへのメッセージ送信中にエラーが発生しました。コンソールウェブフックを誤って削除してしまったことが原因だと思われます。これは通常、botに "Manage Webhooks" 権限があることを確認し、"/ess reload" を実行することで修正できます。
discordLinkInvalidGroup=ロール {1} に無効なグループ {0} が入力されました。次のグループが利用可能です\: {2}
discordLinkInvalidRole=無効なロール ID {0} がグループに入力されました\: {1}。Discordで/roleinfoコマンドを実行することでロールのIDを確認できます。
discordLinkInvalidRoleInteract=ロール{0} ({1})はbotのロールより上にあるため、グループ\=>ロール同期をできません。\nbotのロールを"{0}"の上に移動するか、"{0}"をbotのロールの下に移動してください。
discordLinkInvalidRoleManaged=ロール {0} ({1}) は、別のbotまたはプラグインによって管理されているため、group->role 同期には使用できません。
discordLinkLinked=<primary>Discordとアカウントと連携するには、<secondary>{0} <primary>とDiscordで入力します。
discordLinkLinkedAlready=<primary>あなたは既にDiscordアカウントを連携しています!あなたのDiscordアカウントの連携を解除したい場合は、 <secondary>/unlink<primary>を使用してください。
@@ -575,14 +582,18 @@ itemCommandUsage1=/<command> <item> [amount]
itemCommandUsage1Description=指定されたアイテムのフルスタック (または指定された量) を与えます
itemCommandUsage2=/<command> <item> <amount> <meta>
itemCommandUsage2Description=指定されたメタデータで指定されたアイテムの量を与えます
itemId=
itemloreClear=<primary>このアイテムの名前をクリアしました。
itemloreCommandDescription=アイテムの名前を編集します。
itemloreCommandUsage=/<command> <add/set/clear> [text/line] [text]
itemloreCommandUsage1=/<command> add [text]
itemloreCommandUsage1Description=持っているアイテムの説明の後ろに指定されたテキストを追加します
itemloreCommandUsage2=/<command> <line number> <text>
itemloreCommandUsage2Description=持っているアイテムの説明文の指定された行にテキストを設定します
itemloreCommandUsage3=/<command> clear
itemloreCommandUsage3Description=アイテムの説明を消去します
itemloreInvalidItem=<secondary>名前を変更するには、アイテムを持っている必要があります。
itemloreMaxLore=<dark_red> このアイテムにこれ以上説明を追加することはできません。
itemloreNoLine=<dark_red>あなたが持っているアイテムには、<secondary> {0} <dark_red>行目に名前がありません。
itemloreNoLore=<dark_red>このアイテムには、名前がありません。
itemloreSuccess=<primary>このアイテムの名前に「<secondary>{0}<primary>」が追加されました。
@@ -615,6 +626,7 @@ jailList=<primary>牢獄\: <reset>{0}
jailMessage=<dark_red>あなたは時間制の投獄です。
jailNotExist=<dark_red>その牢獄は存在しません。
jailNotifyJailed=<secondary> {0} <primary>は<secondary>{1} によって投獄されました。
jailNotifyJailedFor=<primary>プレイヤー<secondary>{0}<primary>は<secondary>{2}<primary>に投獄されました。\n理由\: <secondary>{1}<primary>。
jailNotifySentenceExtended=<secondary>{0} <primary>の投獄時間が <secondary>{2} によって <secondary>{1} <primary>まで延長されました。<primary>
jailReleased=<secondary>{0}<primary> が牢獄から解放されました。
jailReleasedPlayerNotify=<primary>あなたは牢獄から解放されました。
@@ -649,6 +661,7 @@ kitError3=キットアイテムのデシリアライズには Paper 1.15.2+ が
kitGiveTo=<secondary> {0}<primary> が <secondary>{1}<primary>さんに配布されました。
kitInvFull=<dark_red>インベントリがいっぱいの為、床に撒き散らします。
kitInvFullNoDrop=<dark_red>インベントリに十分な空き容量がありません。
kitItem=<primary><white>({0}
kitNotFound=<dark_red>そのキットは存在しません。
kitOnce=<dark_red>そのキットは既に使用されました。
kitReceive=<primary>キット<secondary> {0}<primary> を受け取りました。
@@ -669,29 +682,38 @@ lightningCommandUsage2Description=指定された威力で対象プレイヤー
lightningSmited=<primary>雷が発生しています。
lightningUse=<secondary>{0} <primary>に雷を落としました。
linkCommandDescription=Minecraft アカウントをDiscordに接続するコードを生成します。
linkCommandUsage1Description=コードを生成するには/linkをdiscordで実行してください
listAmount=<secondary>{0}<primary> 人のプレイヤーが接続中です。最大接続可能人数\:<secondary> {1}
listAmountHidden=<primary>Thereある<secondary> {0} <primary> / <secondary> {1} <primary>最大のアウト<secondary> {2} <primary>オンラインプレーヤー。
listCommandDescription=すべてのオンラインプレイヤーを一覧表示します。
listCommandUsage=/<command> [group]
listCommandUsage1=/<command> [グループ]
listCommandUsage1Description=サーバー上のすべてのプレイヤー、または指定されたグループを一覧表示します
listRealName=({0})
loadWarpError=<dark_red>ワープ{0}を読み込むのに失敗しました。
loomCommandDescription=機織り機を開きます。
mailClear=<primary>メールをクリアするには、<secondary>/ mailclear<primary>と入力します。
mailCleared=<primary>メールが削除されました。
mailCleared=<primary>メールが削除されました!
mailClearedAll=<primary> すべてのプレイヤーのメールを削除しました!
mailClearIndex=<dark_red> 1-{0} の数字を指定する必要があります。
mailCommandDescription=プレイヤー間、サーバー内メールを管理します。
mailCommandUsage1=/<command> read [page]
mailCommandUsage1Description=メールの最初の (または指定された) ページを読み込みます
mailCommandUsage2=/<command> clear [number]
mailCommandUsage2Description=すべてのメールまたは指定したメールを消去します
mailCommandUsage2Description=すべてのメールまたは指定したメール(件)を消去します
mailCommandUsage3Description=指定したプレイヤーのメール(件)を、すべて、または個別に削除します
mailCommandUsage4Description=すべてのプレイヤーのすべてのメールをクリアします
mailCommandUsage5Description=指定したプレイヤーにメッセージを送信します
mailCommandUsage6Description=すべてのプレイヤーにメッセージを送信します
mailCommandUsage7Description=指定したプレイヤーに指定した時間で期限切れとなるメッセージを送信します
mailCommandUsage8Description=指定時間で消滅するメッセージを、全プレイヤーに一斉送信します
mailDelay=直前に送信されたメールが多すぎます。最大:{0}
mailMessage={0}
mailSent=<primary>メールを送信しました。
mailSentTo=<secondary>{0}<primary> に次のメールを送信しました \:
mailSentToExpire=<secondary>{0} <primary>に <secondary>{1} <primary>で期限切れになるメールを送信しました<primary>\:
mailSentTo=<secondary>{0}<primary> に次のメールを送信しました:
mailSentToExpire=<secondary>{0} <primary>に <secondary>{1} <primary>で期限切れになるメールを送信しました:
mailTooLong=<dark_red>メールのメッセージが長すぎます。1000文字以下にしてください。
markMailAsRead=<primary>あなた宛のメールを既読にするには, <secondary> /mail clear<primary>を入力してください.
markMailAsRead=<primary>あなた宛のメールを既読にするには, <secondary> /mail clear<primary>を入力してください。
matchingIPAddress=<primary>以下のプレイヤーはこのIPアドレスでログインしました。
maxHomes=<dark_red><secondary> {0} <dark_red>個以上ホームを設定することはできません。
maxMoney=<dark_red>このアカウントの所持金は上限に達しています。
@@ -1023,13 +1045,6 @@ sellHandPermission=<primary>権限が無いため手に持っているアイテ
serverFull=サーバーは満員です\!
serverReloading=今、サーバーを再読み込みしている可能性が高いです。もしそうなら、なぜ自分を恨むのですか?再読み込みの際、EssentialsXチームからのサポートは期待できません。
serverTotal=<primary>サーバー内合計\:<secondary> {0}
serverUnsupported=サポートされていないサーバーのバージョンを実行しています!
serverUnsupportedClass=クラスを決定する状態\: {0}
serverUnsupportedCleanroom=Mojangの内部コードに依存するBukkitプラグインを適切にサポートしていないサーバーを実行しています。サーバーソフトウェアにEssentialsの代替品を使用することを検討してください。
serverUnsupportedDangerous=非常に危険でデータ消失につながることが知られているサーバーフォークを使用しているのですね。Paperのような、より安定したサーバーソフトウェアに切り替えることを強くお勧めします。
serverUnsupportedLimitedApi=API機能が制限されたサーバーを実行しています。EssentialsXは引き続き動作しますが、特定の機能が無効になっている可能性があります。
serverUnsupportedDumbPlugins=EssentialsXや他のプラグインで深刻な問題を引き起こすことが知られているプラグインを使用している。
serverUnsupportedMods=Bukkitプラグインを正しくサポートしていないサーバーを実行しています。Bukkitプラグインは Forge/Fabric のMODで使用しないでください\! Forgeの場合:ForgeEssentials または SpongeForge + Nucleus の使用を検討してください。
setBal=<green>あなたの所持金が {0} に設定されました。
setBalOthers=<green>{0}<secondary> の所持金を {1} に設定しました。
setSpawner=<primary>スポナーのタイプを<secondary> {0}<primary>に変更しました。
@@ -1271,7 +1286,6 @@ unlimitedCommandUsage3Description=指定された場合、自分または他の
unlimitedItemPermission=<dark_red>このアイテムを無制限アイテムにする権限がありません。 <secondary>{0}<dark_red>.
unlimitedItems=<primary>無制限アイテム\:<reset>
unmutedPlayer=<secondary> {0} <primary>は発言が許可されました。
unsafeTeleportDestination=<dark_red>テレポート先が安全でないためテレポートする事ができません。
unsupportedBrand=<dark_red>現在実行しているサーバープラットフォームはこの機能を提供していません。
unsupportedFeature=<dark_red>この機能は現在のサーバのバージョンではサポートされていません。
unvanishedReload=<dark_red>reloadされた為、透明化が解除されました。
@@ -1,5 +1,7 @@
#Sat Feb 03 17:34:46 GMT 2024
action=<dark_purple>* {0} <dark_purple>{1}
addedToAccount=<yellow>{0}<green>이(가) 당신의 계정에 추가되었습니다.
addedToOthersAccount=<yellow>{0}<green>이(가) <yellow>{1}<green> 의 계정에 추가되었습니다. 새 잔액\: <yellow>{2}
adventure=모험
afkCommandDescription=자리비움 상태로 전환합니다.
afkCommandUsage=/<command> [player/message]
@@ -11,7 +13,7 @@ alertBroke=부서짐\:
alertFormat=<dark_aqua>[{0}] (이)가 <primary>{3} 에서 {2} (을)를 <reset>{1}.
alertPlaced=설치됨\:
alertUsed=사용됨\:
alphaNames=<dark_red>플레이어 이름은 문자, 숫자 및 밑줄의 조합으로 이루어져야만 합니다.
alphaNames=<dark_red>플레이어 이름에는 문자, 숫자, 밑줄만 사용할 수 있습니다.
antiBuildBreak=<secondary>{0} <dark_red>블록을 부술 수 있는 권한이 없습니다.
antiBuildCraft=<secondary>{0} <dark_red>을(를) 만들 수 있는 권한이 없습니다.
antiBuildDrop=<secondary>{0} <dark_red>(을)를 버릴 수 있는 권한이 없습니다.
@@ -32,7 +34,7 @@ backCommandDescription=tp/spawn/warp하기 이전 위치로 순간이동합니
backCommandUsage=/<command> [player]
backCommandUsage1=/<command>
backCommandUsage1Description=이전 위치로 텔레포트합니다.
backCommandUsage2=/<command> <player>
backCommandUsage2=/<command> <플레이어>
backCommandUsage2Description=해당 플레이어를 이전 위치로 텔레포트합니다.
backOther=<secondary>{0}<primary> (을)를 이전 위치로 돌려보냈습니다.
backupCommandDescription=구성된 설정이 있을 경우 백업을 실행합니다.
@@ -44,7 +46,7 @@ backupInProgress=<primary>외부 백업 스크립트가 진행 중입니다\!
backUsageMsg=<primary>이전 위치로 돌아갑니다.
balance=<primary>잔고\:<secondary> {0}
balanceCommandDescription=플레이어의 현재 잔고를 보여줍니다.
balanceCommandUsage=/<command> [player]
balanceCommandUsage=/<command> [플레이어]
balanceCommandUsage1=/<command>
balanceCommandUsage1Description=자신의 현재 잔고를 봅니다
balanceCommandUsage2=/<command> <player>
@@ -64,12 +66,15 @@ banExempt=<dark_red>그 플레이어는 차단할 수 없습니다.
banExemptOffline=<dark_red>접속중이지 않은 플레이어는 차단할 수 없습니다.
banFormat=<secondary>차단되었습니다\:\n<reset> {0}
banIpJoin=당신의 IP 주소가 서버에서 차단되었습니다. 사유\: {0}
tempbanIpJoin=당신의 IP 주소가 서버에서 임시 차단되었습니다. 기간\: {0} 사유\: {1}
banJoin=당신은 이 서버에서 차단되어 있습니다. 사유\: {0}
banipCommandDescription=IP 주소를 차단합니다.
banipCommandUsage=/<command> <ip-address> [reason]
banipCommandUsage1=/<command> <address> [reason]
banipCommandUsage1Description=사유와 함께 해당 IP 주소를 차단합니다
bed=<i>침대<reset>
bedMissing=<dark_red>침대가 놓여지지 않았거나 없어졌거나 막혀있습니다.
bedNull=<st>침대<reset>
bedOffline=<dark_red>접속중이지 않은 플레이어의 침대로 텔레포트할 수 없습니다.
bedSet=<primary>침대 스폰이 설정되었습니다\!
beezookaCommandDescription=상대에게 폭발하는 벌을 떨어뜨립니다.
@@ -114,6 +119,7 @@ burnMsg=<secondary>{0} <primary>에게 <secondary>{1} 초 <primary>만큼 불을
cannotSellNamedItem=<primary>이름이 설정된 아이템은 판매할 수 없습니다.
cannotSellTheseNamedItems=<primary>이름이 설정된 아이템은 판매할 수 없습니다\: <dark_red>{0}
cannotStackMob=<dark_red>여러 몹을 쌓을 수 있는 권한이 없습니다.
cannotRemoveNegativeItems=<dark_red>0보다 적은 개수의 아이템을 제거할 수는 없습니다.
canTalkAgain=<primary>다시 말을 할 수 있습니다.
cantFindGeoIpDB=GeoIP 데이터베이스를 찾을 수 없습니다\!
cantGamemode=<dark_red>게임 모드를 {0} <dark_red>(으)로 변경할 수 있는 권한이 없습니다.
@@ -121,6 +127,7 @@ cantReadGeoIpDB=GeoIP 데이터베이스 읽기에 실패했습니다\!
cantSpawnItem=<dark_red>아이템 <secondary>{0} <dark_red>(을)를 소환할 수 있는 권한이 없습니다.
cartographytableCommandDescription=지도 제작대를 엽니다.
cartographytableCommandUsage=/<command>
chatTypeLocal=<dark_aqua>[지역]
chatTypeSpy=[스파이]
cleaned=유저 파일이 정리되었습니다.
cleaning=유저 파일을 정리합니다.
@@ -136,6 +143,9 @@ clearinventoryCommandUsage3=/<command> <player> <item> [amount]
clearinventoryCommandUsage3Description=해당 플레이어의 인벤토리에서 해당 아이템을 전부(혹은 지정한 수량만큼) 제거합니다
clearinventoryconfirmtoggleCommandDescription=인벤토리를 비울 때 확인을 받을지 정합니다.
clearinventoryconfirmtoggleCommandUsage=/<command>
commandArgumentOptional=<gray>
commandArgumentOr=<secondary>
commandArgumentRequired=<yellow>
commandCooldown=<secondary>그 명령어는 사용할 수 없습니다. 사유\: {0}.
commandDisabled=<secondary>명령어<primary> {0}<secondary> (은)는 비활성화되었습니다.
commandFailed=명령어 {0} 사용 실패\:
@@ -144,6 +154,7 @@ commandHelpLine1=<primary>명령어 도움말\: <white>/{0}
commandHelpLine2=<primary>설명\: <white>{0}
commandHelpLine3=<primary>사용법(s);
commandHelpLine4=<primary>별칭\: <white>{0}
commandHelpLineUsage={0} <primary>- {1}
commandNotLoaded=<dark_red>명령어 {0} (을)를 잘못 불러왔습니다.
consoleCannotUseCommand=이 명령어는 콘솔에서 사용할 수 없습니다.
compassBearing=<primary>방위\: {0} ({1} 도).
@@ -157,6 +168,8 @@ condenseCommandUsage2=/<command> <item>
condenseCommandUsage2Description=인벤토리의 해당 아이템을 압축합니다
configFileMoveError=config.yml를 백업 위치로 이동하지 못했습니다.
configFileRenameError=임시 파일의 이름을 config.yml로 변경하지 못했습니다.
confirmClear=<gray><b>확인</b><gray> 인벤토리를 초기화를 하려면 명령어를 다시 입력하세요\: <primary>{0}
confirmPayment=<gray><b>확인</b> <primary>{0}<gray> 지불을 하려면 명령어를 다시 입력하세요\: <primary>{1}
connectedPlayers=<primary>접속 중인 플레이어<reset>
connectionFailed=연결에 실패하였습니다.
consoleName=콘솔
@@ -169,6 +182,7 @@ createkitCommandUsage=/<command> <kitname> <delay>
createkitCommandUsage1=/<command> <kitname> <delay>
createkitCommandUsage1Description=설정된 이름과 지연 시간에 맞춰 키트를 만듭니다.
createKitFailed=<dark_red>{0} 키트를 생성하는 도중 오류가 발생했습니다.
createKitSeparator=<st>-----------------------
createKitSuccess=<primary>생성된 키트\: <white>{0}\n<primary>쿨타임\: <white>{1}\n<primary>링크\: <white>{2}\n<primary>위의 링크에 있는 내용을 kits.yml에 복사합니다.
createKitUnsupported=<dark_red>NBT 아이템 직렬화가 활성화 되었지만 이 서버는 Paper 1.15.2+ 이상을 사용하고 있지 않습니다. 기본 아이템 직렬화로 전환합니다.
creatingConfigFromTemplate=템플릿을 설정하여 만듭니다 \: {0}
@@ -234,8 +248,11 @@ discordCommandAccountResponseLinked=내 계정은 Minecraft 계정에 연동되
discordCommandAccountResponseLinkedOther={0}님의 계정은 Minecraft 계정에 연동되어 있어요\: **{1}**
discordCommandAccountResponseNotLinked=연동된 Minecraft 계정이 없어요.
discordCommandAccountResponseNotLinkedOther={0}님은 연동된 Minecraft 계정이 없어요.
discordCommandDescription=플레이어에게 Discord 초대 링크를 보냅니다.
discordCommandLink=<primary>Discord 서버에 참여하세요\! <secondary><click\:open_url\:"{0}">{0}</click><primary>
discordCommandUsage=/<command>
discordCommandUsage1=/<command>
discordCommandUsage1Description=플레이어에게 Discord 초대 링크를 보냅니다
discordCommandExecuteDescription=마인크래프트 서버에서 명령어를 실행합니다.
discordCommandExecuteArgumentCommand=실행할 명령어
discordCommandExecuteReply=명령어를 실행합니다\: "/{0}"
@@ -260,12 +277,14 @@ discordErrorLoggerNoPerms=필요한 권한이 부여되지 않아 디스코드
discordErrorNoGuild=서버 ID가 유효하지 않거나 존재하지 않습니다\! 설정 파일에 명시된 튜토리얼대로 플러그인을 올바르게 설치해주세요.
discordErrorNoGuildSize=디스코드 봇이 그 어떠한 서버에도 참여하고 있지 않습니다\! 설정 파일에 명시된 튜토리얼대로 플러그인을 올바르게 설치해주세요.
discordErrorNoPerms=디스코드 봇이 채널을 보거나 채널에서 대화할 수 없습니다\! 디스코드 봇에게 당신이 사용하고자 하는 채널에서 읽거나 쓸 수 있는 권한을 주었는지 확인하세요.
discordErrorInvalidPerms=봇에 필요한 권한이 설정되지 않았습니다\! 누락된 권한\: {0}.
discordErrorNoPrimary=우선 채널을 정하지 않았거나 정한 우선 채널이 유효하지 않습니다. 기본값인 \#{0} 채널로 설정됩니다.
discordErrorNoPrimaryPerms=디스코드 봇이 우선 채널(\#{0})을 보거나 우선 채널에서 대화할 수 없습니다. 디스코드 봇에게 당신이 사용하고자 하는 채널에서 읽거나 쓸 수 있는 권한을 주었는지 확인하세요.
discordErrorNoToken=디스코드 봇 토큰이 설정되지 않았습니다\! 설정 파일에 명시된 튜토리얼대로 플러그인을 올바르게 설치해주세요.
discordErrorWebhook=콘솔 채널에 메세지를 보내는데 실패했습니다. 이러한 오류는 보통 콘솔 채널에서 웹후크를 삭제한 경우 발생합니다. 이러한 경우, 봇이 "웹후크 관리하기" 권한이 있는지 확인한 후, "/ess reload" 명령어를 실행함으로서 오류를 해결할 수 있습니다.
discordLinkInvalidGroup={1} 역할에 잘못된 {0} 그룹이 제공되었습니다. 다음 그룹을 사용할 수 있습니다\: {2}
discordLinkInvalidRole=잘못된 역할 아이디 ({0}) 가 그룹({1}) 에 제공되었습니다. 역할 아이디는 디스코드내 /roleinfo 커맨드로 확인하실 수 있습니다.
discordLinkInvalidRoleInteract={0}({1})은 봇의 최상위 역할보다 위에 있으므로 그룹-역할 동기화에 사용할 수 없습니다. 봇의 역할을 "{0}" 위로 이동하거나 "{0}"을 봇의 역할 아래로 이동하십시오.
discordLinkInvalidRoleManaged=역할 {0} ({1})은(는) 다른 봇이나 통합에 의해 관리되기 때문에 그룹->역할 동기화에 사용할 수 없습니다.
discordLinkLinked=<primary>Minecraft 계정을 Discord와 연동하려면, <secondary>{0} 을 <primary>Discord 서버에서 입력하세요.
discordLinkLinkedAlready=<primary>이미 Discord 계정이 연동되어 있습니다\! 연동을 해제하려면 <secondary>/unlink<primary>를 입력하세요.
@@ -437,6 +456,7 @@ geoIpLicenseMissing=라이센스 키를 찾을 수 없습니다\! https\://essen
geoIpUrlEmpty=GeoIP 다운로드 주소가 비었습니다.
geoIpUrlInvalid=GeoIP 다운로드 주소가 잘못되었습니다.
givenSkull=<secondary>{0} <primary>의 머리를 받았습니다.
givenSkullOther=<secondary>{0}<primary>님에게 <secondary>{1}<primary>님의 머리를 주었습니다.
godCommandDescription=신의 힘을 활성화합니다.
godCommandUsage=/<command> [player] [on|off]
godCommandUsage1=/<command> [player]
@@ -474,6 +494,7 @@ helpCommandDescription=사용 가능한 명령어 목록을 봅니다.
helpCommandUsage=/<command> [search term] [page]
helpConsole=콘솔에서 도움말을 보려면, ''?'' 를 입력하세요.
helpFrom=<primary>명령어 {0}\:
helpLine=<primary>/{0}<reset>\: {1}
helpMatching=<primary>일치하는 명령어 "<secondary>{0}<primary>"\:
helpOp=<dark_red>[건의]<white> <primary>{0}\:<reset> {1}
helpPlugin=<dark_red>{0}<reset>\: 플러그인 도움말\: /help {1}
@@ -531,6 +552,7 @@ invalidHome=<dark_red>집<secondary> {0} <dark_red>(이)가 존재하지 않습
invalidHomeName=<dark_red>집 이름이 올바르지 않습니다\!
invalidItemFlagMeta=<dark_red>잘못된 아이템플래그 메타 데이터\: <secondary>{0}<dark_red>.
invalidMob=<dark_red>잘못된 몹 타입입니다.
invalidModifier=<dark_red>잘못된 수정자입니다.
invalidNumber=잘못된 숫자입니다.
invalidPotion=<dark_red>잘못된 포션.
invalidPotionMeta=<dark_red>잘못된 포션 메타 데이터\: <secondary>{0}<dark_red>.
@@ -560,6 +582,7 @@ itemCommandUsage1=/<command> <item> [amount]
itemCommandUsage1Description=지정된 항목의 전체 스택 (또는 지정된 양)을 제공합니다.
itemCommandUsage2=/<command> <item> <amount> <meta>
itemCommandUsage2Description=주어진 메타 데이터와 함께 지정된 항목의 지정된 양을 제공합니다.
itemId=<primary>ID\:<secondary> {0}
itemloreClear=<primary>아이템의 설명을 지웠습니다.
itemloreCommandDescription=아이템의 설명을 수정합니다.
itemloreCommandUsage=/<command> <add/set/clear> [text/line] [text]
@@ -602,10 +625,13 @@ itemdbCommandUsage=/<command> <item>
itemdbCommandUsage1=/<command> <item>
itemdbCommandUsage1Description=주어진 아이템의 데이터베이스를 검색합니다
jailAlreadyIncarcerated=<dark_red>그 플레이어는 이미 감옥에 있습니다\: <secondary> {0}
jailedPlayersList=<primary>감금한 플레이어\:<reset> {0}
jailedPlayersEmpty=<primary>감금한 플레이어가 없습니다.
jailList=<primary>감옥\:<reset> {0}
jailMessage=<dark_red>범죄를 저질렀으니, 대가를 치뤄야합니다.
jailNotExist=<dark_red>그 감옥은 존재하지 않습니다.
jailNotifyJailed=<secondary>{1} <primary>님이 <secondary>{0} <primary>님을 감금했습니다.
jailNotifyJailedFor=<secondary>{2} <primary>님이 <secondary>{0} <primary>님을 <secondary>{1}<primary> 동안 감금했습니다.
jailNotifySentenceExtended=<secondary>{0} <primary>님의 감금 시간이 <secondary>{2}<primary> 님에 의해 <secondary>{1}<primary>(으)로 연장되었습니다.
jailReleased=<primary>플레이어 <secondary>{0}<primary> (이)가 감옥에서 석방되었습니다.
jailReleasedPlayerNotify=<primary>당신은 석방되었습니다\!
@@ -614,12 +640,14 @@ jailSet=<primary>감옥<secondary> {0} <primary>(이)가 설정되었습니다.
jailWorldNotExist=<dark_red>그 감옥의 월드가 존재하지 않습니다.
jumpEasterDisable=<primary>Flying wizard 모드 비활성화됨.
jumpEasterEnable=<primary>Flying wizard 모드 활성화됨.
jailedplayersCommandDescription=감금한 플레이어를 모두 나열합니다.
jailedplayersCommandUsage=/<command>
jailsCommandDescription=감옥 목록을 봅니다.
jailsCommandUsage=/<command>
jumpCommandDescription=시야에 보이는 가까운 블록으로 점프합니다.
jumpCommandUsage=/<command>
jumpError=<dark_red>컴퓨터에 오류를 유발할 수 있습니다.
kickCommandDescription=해당 플레이어를 사유와 함께 강퇴합니다.
kickCommandDescription=해당 플레이어를 사유와 함께 추방합니다.
kickCommandUsage=/<command> <player> [reason]
kickCommandUsage1=/<command> <player> [reason]
kickCommandUsage1Description=사유와 함께 해당 플레이어를 추방합니다
@@ -643,12 +671,15 @@ kitCommandUsage1Description=모든 사용 가능한 키트를 봅니다
kitCommandUsage2=/<command> <kit> [player]
kitCommandUsage2Description=그 키트를 자신이나 다른 플레이어에게 줍니다
kitContains=<primary>키트 <secondary>{0} <primary>에는 다음이 포함됩니다\:
kitCost=\ <gray><i>({0})<reset>
kitDelay=<st>{0}<reset>
kitError=<dark_red>올바른 키트가 없습니다.
kitError2=<dark_red>키트 정의가 잘못되었습니다. 관리자에게 문의하세요.
kitError3=키트 항목을 역직렬화하려면 Paper 1.15.2 이상이 필요하므로 키트 "{0}"의 키트 항목을 사용자 {1}에게 제공할 수 없습니다.
kitGiveTo=<primary>키트<secondary> {0} <primary>(을)를 <secondary>{1} <primary>에게 지급했습니다.
kitInvFull=<dark_red>인벤토리에 공간이 부족해, 키트가 바닥에 놓여졌습니다.
kitInvFullNoDrop=<dark_red>그 키트를 받기 위한 인벤토리 공간이 부족합니다.
kitItem=<primary>- <white>{0}
kitNotFound=<dark_red>그 키트는 존재하지 않습니다.
kitOnce=<dark_red>그 키트는 다시 사용할 수 없습니다.
kitReceive=<primary>키트 <secondary>{0} <primary>(을)를 받았습니다.
@@ -682,9 +713,11 @@ listCommandDescription=접속중인 플레이어를 봅니다.
listCommandUsage=/<command> [group]
listCommandUsage1=/<command> [group]
listCommandUsage1Description=서버에 있는 모든 플레이어나, 지정된 경우 해당 그룹의 모든 플레이어를 나열합니다.
listGroupTag=<primary>{0}<reset>\:
listHiddenTag=<gray>[숨김]<reset>
listRealName=({0})
loadWarpError=<dark_red>워프 {0} (을)를 불러오지 못했습니다.
localFormat=<dark_aqua>[지역] <reset><{0}> {1}
loomCommandDescription=베틀을 엽니다.
loomCommandUsage=/<command>
mailClear=<primary>메일을 비우려면, <secondary>/mail clear<primary>를 입력하세요.
@@ -710,6 +743,11 @@ mailCommandUsage7Description=유효기간이 있는 메세지를 선택된 플
mailCommandUsage8=/<command> sendtempall <expire time> <message>
mailCommandUsage8Description=유효기간이 있는 메세지를 모든 플레이어에게 보냅니다
mailDelay=너무 많은 양의 이메일을 보냈습니다. 최대\: {0}
mailFormatNew=<primary>[<reset>{0}<primary>] <primary>[<reset>{1}<primary>] <reset>{2}
mailFormatNewTimed=<primary>[<yellow>⚠<primary>] <primary>[<reset>{0}<primary>] <primary>[<reset>{1}<primary>] <reset>{2}
mailFormatNewRead=<primary>[<reset>{0}<primary>] <primary>[<reset>{1}<primary>] <gray><i>{2}
mailFormatNewReadTimed=<primary>[<yellow>⚠<primary>] <primary>[<reset>{0}<primary>] <primary>[<reset>{1}<primary>] <gray><i>{2}
mailFormat=<primary>[<reset>{0}<primary>] <reset>{1}
mailMessage={0}
mailSent=<primary>메일을 보냈습니다\!
mailSentTo=<secondary>{0} <primary> (이)가 메일을 보냈습니다\:
@@ -717,6 +755,7 @@ mailSentToExpire=<secondary>{0} <primary>님이 <secondary>{1}<primary>에 만
mailTooLong=<dark_red>메일이 너무 깁니다. 1000자를 넘지 않도록 해주세요.
markMailAsRead=<primary>이 메일을 읽음으로 표시하려면, <secondary>/mail clear <primary>를 입력하세요.
matchingIPAddress=<primary>해당 플레이어는 이전에 다음 IP 주소로 접속했습니다\:
matchingAccounts={0}
maxHomes=<dark_red>집은<secondary> {0} <dark_red>개 까지만 가질 수 있습니다.
maxMoney=<dark_red>이 거래가 지갑의 최대 한도를 초과합니다.
mayNotJail=<dark_red>그 플레이어는 감옥에 가둘 수 없습니다\!
@@ -757,6 +796,7 @@ msgDisabled=<primary>메시지 수신이 <secondary>비활성화<primary>되었
msgDisabledFor=<secondary>{0} <primary>의 메시지 수신이 <secondary>비활성화<primary>되었습니다.
msgEnabled=<primary>메시지 수신이 <secondary>활성화<primary>되었습니다.
msgEnabledFor=<secondary>{0} <primary>의 메시지 수신이 <secondary>활성화<primary>되었습니다.
msgFormat=<primary>[<secondary>{0}<primary> -> <secondary>{1}<primary>] <reset>{2}
msgIgnore=<secondary>{0} <dark_red>(이)가 메시지를 비활성화했습니다.
msgtoggleCommandDescription=모든 귓속말을 받지 않습니다.
msgtoggleCommandUsage=/<command> [player] [on|off]
@@ -772,15 +812,15 @@ muteCommandUsage2=/<command> <player> <datediff> [reason]
muteCommandUsage2Description=선택된 사유로 지정된 플레이어를 설정한 시간동안 뮤트합니다.
mutedPlayer=<primary>플레이어 <secondary>{0} <primary>(이)가 채금되었습니다.
mutedPlayerFor=<primary>플레이어<secondary> {0} <primary>(이)가<secondary> {1}<primary>동안 채금되었습니다.
mutedPlayerForReason=<primary>플레이어<secondary> {0} <primary>(이)가<secondary> {1}<primary>동안 채금되었습니다. 사유\: <secondary>{2}
mutedPlayerReason=<primary>플레이어 <secondary>{0} <primary>(이)가 채금되었습니다. 사유\: <secondary>{1}
mutedPlayerForReason=<primary>플레이어<secondary> {0} <primary>(이)가<secondary> {1}<primary>음소거되었습니다. 기간\: <secondary>{2}
mutedPlayerReason=<primary>플레이어 <secondary>{0} <primary>(이)가 음소거되었습니다. 사유\: <secondary>{1}
mutedUserSpeaks={0}님은 말하려 하였지만, 벙어리 상태입니다.
muteExempt=<dark_red>그 플레이어는 채금할 수 없습니다.
muteExemptOffline=<dark_red>접속중이지 않은 플레이어는 채금할 수 없습니다.
muteNotify=<secondary>{0} <primary>(이)가 <secondary>{1}<primary>(을)를 채금했습니다.
muteNotifyFor=<secondary>{0} <primary>(이)가 <secondary>{1}<primary>(을)를<secondary> {2}<primary>동안 채금했습니다.
muteNotifyForReason=<secondary>{0} <primary>(이)가 <secondary>{1}<primary>(을)를<secondary> {2}<primary>동안 채금했습니다. 사유\: <secondary>{3}
muteNotifyReason=<secondary>{0} <primary>(이)가 <secondary>{1}<primary>(을)를 채금했습니다. 사유\: <secondary>{2}
muteNotifyForReason=<secondary>{0} <primary>(이)가 <secondary>{1}<primary>(을)를<secondary> {2}<primary>동안 음소거했습니다. 사유\: <secondary>{3}
muteNotifyReason=<secondary>{0} <primary>(이)가 <secondary>{1}<primary>(을)를 음소거했습니다. 사유\: <secondary>{2}
nearCommandDescription=주변에 있는 플레이어 목록을 봅니다.
nearCommandUsage=/<command> [playername] [radius]
nearCommandUsage1=/<command>
@@ -850,6 +890,7 @@ noPotionEffectPerm=<dark_red>이 포션에 <secondary>{0} <dark_red>효과를
noPowerTools=<primary>할당된 파워툴이 없습니다.
notAcceptingPay=<dark_red>{0} <dark_red>는 거래를 받지 않습니다.
notAllowedToLocal=<dark_red>로컬 채팅에서 발언할 권한이 없습니다.
notAllowedToQuestion=<dark_red>질문을 사용할 수 있는 권한이 없습니다.
notAllowedToShout=<dark_red>외칠 수 있는 권한이 없습니다.
notEnoughExperience=<dark_red>경험치가 부족합니다.
notEnoughMoney=<dark_red>돈이 부족합니다.
@@ -871,6 +912,7 @@ openingDisposal=<primary>폐기 메뉴 여는 중...
orderBalances=<secondary> {0} <primary>유저들의 돈을 정리 하고 있습니다. 잠시만 기다려주세요...
oversizedMute=<dark_red>이 기간으로는 플레이어를 채금할 수 없습니다.
oversizedTempban=<dark_red>이 기간으로는 플레이어를 차단할 수 없습니다.
pageLimitExceeded=<dark_red>페이지 수가 최대 한도(100)를 초과했습니다.
passengerTeleportFail=<dark_red>동행자가 있을 때는 텔레포트 할 수 없습니다.
payCommandDescription=다른 사람에게 돈을 지불합니다.
payCommandUsage=/<command> <player> <amount>
@@ -893,12 +935,12 @@ paytoggleCommandUsage1Description=자신 또는 다른 플레이어의 송금을
pendingTeleportCancelled=<dark_red>대기중인 텔레포트 요청이 취소되었습니다.
pingCommandDescription=퐁\!
pingCommandUsage=/<command>
playerBanIpAddress=<primary>플레이어<secondary> {0} <primary>(이)가 IP주소 <secondary> {1} <primary>(을)를 차단했습니다. 사유\: <secondary>{2}
playerTempBanIpAddress=<primary>플레이어<secondary> {0} <primary>가 IP주소 <secondary> {1} <primary>(을)를 <secondary>{2} <primary>동안 임시 차단했습니다. 사유\:<secondary>{3}
playerBanned=<primary>플레이어<secondary> {0} <primary>(이)가<secondary> {1} <primary>(을)를 차단했습니다. 사유\: <secondary>{2}
playerBanIpAddress=<primary>플레이어<secondary> {0} <primary>(이)가 IP주소 <secondary> {1} <primary>(을)를 차단했습니다. 기간\: <secondary>{2}<primary>.
playerTempBanIpAddress=<primary>플레이어<secondary> {0} <primary>가 IP주소 <secondary> {1} <primary>(을)를 <secondary>{2} <primary>사유로 임시 차단했습니다. 기간\:<secondary>{3}.
playerBanned=<primary>플레이어<secondary> {0} <primary>(이)가<secondary> {1} <primary>(을)를 차단했습니다. 기간\: <secondary>{2}.
playerJailed=<primary>플레이어 <secondary>{0} <primary>(이)가 감금되었습니다.
playerJailedFor=<primary>플레이어 <secondary>{0} <primary>(이)가 <secondary>{1}<primary>동안 감금되었습니다.
playerKicked=<primary>플레이어 <secondary>{0} <primary>(이)가 <secondary>{1} <primary>(을)를 강퇴했습니다. 사유\: <secondary>{2}<primary>.
playerKicked=<primary>플레이어 <secondary>{0} <primary>(이)가 <secondary>{1} <primary>(을)를 추방했습니다. 기간<secondary>\: <secondary>{2}<primary>.
playerMuted=<primary>채금되었습니다\!
playerMutedFor=<secondary>{0}<primary> 동안 대화할 수 없습니다.
playerMutedForReason=<secondary>{0}<primary> 동안 대화할 수 없습니다. 사유\: <secondary>{1}
@@ -956,6 +998,8 @@ powertoolCommandUsage4=/<command> <cmd>
powertoolCommandUsage4Description=현재 손에 들고 있는 아이템의 파워툴 명령어를 주어진 명령어로 설정합니다.
powertoolCommandUsage5=/<command> a\:<cmd>
powertoolCommandUsage5Description=현재 손에 들고 있는 아이템에 주어진 파워툴 명령어를 추가합니다.
powertoollistCommandDescription=사용 가능한 만능 도구 리스트.
powertoollistCommandUsage=/<command>
powertooltoggleCommandDescription=모든 현재 파워툴을 활성화하거나 비활성화합니다.
powertooltoggleCommandUsage=/<command>
ptimeCommandDescription=플레이어의 클라이언트 시간을 조절합니다. @ 접두사를 추가해 수정합니다.
@@ -1009,6 +1053,7 @@ recipeCommandUsage=/<command> <<item>|hand> [number]
recipeCommandUsage1=/<command> <<item>|hand> [page]
recipeCommandUsage1Description=주어진 아이템의 제작법을 표시합니다.
recipeFurnace=<primary>제련\: <secondary>{0}<primary>.
recipeGrid=<secondary>{0}X <primary>| {1}X <primary>| {2}X
recipeGridItem=<secondary>{0}X <primary>는 <secondary>{1}<primary>입니다
recipeMore=<secondary>/{0} {1} <number><primary>(을)를 입력해 <secondary>{2}<primary>의 다른 조합법을 봅니다.
recipeNone={0}의 레시피가 존재하지 않습니다.
@@ -1092,15 +1137,17 @@ sellCommandUsage4=/<command> blocks [amount]
sellCommandUsage4Description=들고 있는 아이템을 전부(또는 지정한 경우, 지정한 수량만큼) 판매합니다
sellHandPermission=<primary>손에 든 아이템을 팔 수 있는 권한이 없습니다.
serverFull=서버가 꽉 찼습니다\!
whitelistKick=화이트리스트 활성화\!
serverReloading=지금 서버를 리로드하고 있을 가능성이 높습니다. 만약 그렇다면, 왜 자신을 미워하는 거죠? /reload 를 사용하는 것은 EssentialsX 팀의 지원이 필요하지 않습니다.
serverTotal=<primary>서버 총 합계\:<secondary> {0}
serverUnsupported=지원하지 않는 서버를 사용하고 있습니다.
serverUnsupportedClass=의존성 클래스 상태\: {0}
serverUnsupportedCleanroom=서버가 버킷 플러그인을 제대로 지원하지 않습니다. 서버 소프트웨어에 맞는 대체재를 찾아보세요.
serverUnsupportedDangerous=현재 매우 위험하고 데이터 손실을 초래할 수 있는 포크 버킷을 사용중입니다. Paper 버킷과 같이 더욱 안정적인 서버 버킷을 사용하는 것을 강력히 권장합니다.
serverUnsupportedLimitedApi=서버가 한정적인 API로 동작하고 있습니다. EssentialsX는 여전히 동작하겠지만, 일부 기능은 제한될 수 있습니다.
serverUnsupportedDumbPlugins=EssentialsX와 다른 플러그인과의 호환성 문제를 일으킬 수 있는 플러그인을 사용 중입니다.
serverUnsupportedMods=서버가 버킷 플러그인을 제대로 지원하지 않습니다. 버킷 플러그인은 Forge/Fabric 모드와 함께 사용되어선 안됩니다\! Forge의 경우\: ForgeEssentials, 혹은 SpongeForge + Nucleus 사용을 고려해보세요.
serverSnapshot=<red>현재 마인크래프트 개발 스냅샷 빌드를 실행 중입니다\! EssentialsX는 이 버전에서 제대로 작동하지 않을 수 있으며, 지원되지 않습니다.
serverUnsupported=<red>지원되지 않는 버전의 서버를 실행하고 있습니다\!
serverUnsupportedClass=<red>의존성 클래스 상태\: {0}
serverUnsupportedCleanroom=<dark_red>현재 사용 중인 서버가 기존 마인크래프트 코드를 사용하는 버킷 플러그인을 제대로 지원하지 않습니다. Essentials에서 지원하는 플러그인을 사용해 보세요.
serverUnsupportedDangerous=<dark_red>현재 사용 중인 버전의 서버는 매우 위험하며 데이터 손실을 초래할 수 있는 것으로 알려져 있습니다. Paper와 같은 보다 안정적인 서버로 전환하는 것을 강력히 권장합니다.
serverUnsupportedLimitedApi=<red>현재 API 기능이 제한된 서버를 실행 중입니다. EssentialsX는 계속 작동하지만 일부 기능이 비활성화될 수 있습니다.
serverUnsupportedDumbPlugins=<dark_red>현재 사용 중인 플러그인은 EssentialsX 및 다른 플러그인과 심각한 문제를 일으키는 것으로 알려져 있습니다.
serverUnsupportedMods=<dark_red>현재 실행 중인 서버는 버킷 플러그인을 제대로 지원하지 않습니다. 버킷 플러그인은 Forge(포지)/Fabric(패브릭) 모드와 함께 사용해서는 안 됩니다\! 하이브리드 서버 jar 파일을 제거하고 EssentialsX와 유사한 기능을 제공하는 FTB Essentials 모드를 사용하십시오.
setBal=<green>잔고가 {0}<green> (으)로 설정되었습니다.
setBalOthers=<green>{0}<green>의 잔고를 {1} <green>(으)로 설정했습니다.
setSpawner=<primary>스포너 유형을 <secondary>{0} <primary>(으)로 변경했습니다.
@@ -1115,8 +1162,12 @@ setjailCommandUsage=/<command> <jailname>
setjailCommandUsage1=/<command> <jailname>
setjailCommandUsage1Description=지정된 이름의 감옥을 당신이 서있는 위치로 설정합니다.
settprCommandDescription=<primary>무작위 텔레포트 장소와 매개변수를 정합니다.
settprCommandUsage=/<command> <세계> [center|minrange|maxrange] [값]
settprCommandUsage1=/<command> <세계> center
settprCommandUsage1Description=무작위 텔레포트의 중심을 현재 위치로 설정합니다
settprCommandUsage2=/<command> <세계> minrange <반지름>
settprCommandUsage2Description=주어진 값으로 랜덤 텔레포트의 반경을 설정합니다.
settprCommandUsage3=/<command> <세계> maxrange <반지름>
settprCommandUsage3Description=최대 랜덤 텔레포트 반경을 지정된 값으로 설정합니다.
settpr=<primary>무작위 텔레포트의 중심을 정합니다.
settprValue=<primary>무작위 텔레포트 <secondary>{0} <primary>(을)를 <secondary>{1} <primary>(으)로 설정합니다.
@@ -1160,6 +1211,8 @@ editsignCommandUsage3=/<command> copy [line number]
editsignCommandUsage3Description=대상 서명의 모든 (또는 지정된) 줄을 클립보드로 복사합니다.
editsignCommandUsage4=/<command> paste [line number]
editsignCommandUsage4Description=지정된 표지판에서 모든 (또는 지정된 줄) 내용을 클립보드로 복사합니다.
signFormatFail=<dark_red>[{0}]
signFormatSuccess=<dark_blue>[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=<dark_red>이곳에는 표지판을 만들 수 없습니다.
similarWarpExist=<dark_red>이미 비슷한 이름의 워프가 존재합니다.
@@ -1168,22 +1221,30 @@ south=남
southWest=남서
skullChanged=<primary>머리가 <secondary>{0} <primary>(으)로 변경되었습니다.
skullCommandDescription=플레이어 머리의 주인을 설정합니다.
skullCommandUsage=/<command> [소유자] [플레이어]
skullCommandUsage1=/<command>
skullCommandUsage1Description=당신의 머리를 받습니다
skullCommandUsage2=/<command> <player>
skullCommandUsage2Description=해당 플레이어의 머리를 받습니다
skullCommandUsage3=/<command> <texture>
skullCommandUsage3Description=지정된 텍스처로 된 해골을 얻습니다 (텍스처 URL의 해시 또는 Base64 텍스처 값).
skullCommandUsage4=/<command> <소유자> <플레이어>
skullCommandUsage4Description=선택된 소유자의 머리를 지정된 플레이어에게 줍니다
skullCommandUsage5=/<command> <texture> <player>
skullCommandUsage5Description=지정된 텍스처(텍스처 URL의 해시 또는 Base64 텍스처 값)를 가진 머리를 지정된 플레이어에게 줍니다
skullInvalidBase64=<dark_red>텍스처 값이 유효하지 않습니다.
slimeMalformedSize=<dark_red>잘못된 크기.
smithingtableCommandDescription=대장장이 작업대를 엽니다.
smithingtableCommandUsage=/<command>
socialSpy=<secondary>{0}<primary>의 SocialSpy\: <secondary>{1}
socialSpyCmdFormat=<gray>{0}\: {1}
socialSpyMsgFormat=<primary>[<secondary>{0}<gray> -> <secondary>{1}<primary>] <gray>{2}
socialSpyMutedPrefix=<white>[<primary>SS<white>] <gray>(채금) <reset>
socialspyCommandDescription=귓속말/메일 명령어를 보거나 보지 않습니다.
socialspyCommandUsage=/<command> [player] [on|off]
socialspyCommandUsage1=/<command> [player]
socialspyCommandUsage1Description=해당되는 경우 자신 또는 다른 플레이어의 소셜 스파이를 설정 또는 해제합니다.
socialSpyPrefix=<white>[<primary>소셜스파이<white>] <reset>
soloMob=<dark_red>그 몹은 혼자인것 같네요.
spawned=스폰
spawnerCommandDescription=스포너의 몹 유형을 바꿉니다.
@@ -1366,7 +1427,15 @@ tprCommandDescription=무작위로 텔레포트합니다.
tprCommandUsage=/<command>
tprCommandUsage1=/<command>
tprCommandUsage1Description=무작위 위치로 텔레포트합니다
tprCommandUsage2=/<command> <세계>
tprCommandUsage2Description=선택한 세계의 무작위 위치로 순간이동합니다
tprCommandUsage3=/<command> <세계> <플레이어>
tprCommandUsage3Description=선택한 플레이어를 해당 세계의 무작위 위치로 순간이동시킵니다
tprOtherUser=<secondary>{0}<primary> 님을 무작위 위치로 이동시킵니다.
tprSuccess=<primary>무작위 위치로 텔레포트중...
tprSuccessDone=<primary>무작위 위치로 순간이동되었습니다.
tprNoPermission=<dark_red>해당 장소를 사용할 권한이 없습니다.
tprNotExist=<dark_red>해당 순간 이동 위치는 존재하지 않습니다.
tps=<primary>현재 TPS \= {0}
tptoggleCommandDescription=모든 형태의 텔레포트를 차단합니다.
tptoggleCommandUsage=/<command> [player] [on|off]
@@ -1377,6 +1446,7 @@ tradeSignEmptyOwner=<dark_red>거래 표지판에서 아무것도 얻을 수 없
tradeSignFull=<dark_red>이 표지판은 가득 찼습니다\!
tradeSignSameType=<dark_red>같은 종류의 아이템으로 거래할 수 없습니다.
treeCommandDescription=바라보고 있는 곳에 나무를 소환합니다.
treeCommandUsage=/<command> <tree|birch|redwood|redmushroom|brownmushroom|jungle|junglebush|swamp|paleoak>
treeCommandUsage1=/<command> <tree|birch|redwood|redmushroom|brownmushroom|jungle|junglebush|swamp|paleoak>
treeCommandUsage1Description=현재 보고 있는 위치에 지정한 종류의 나무를 소환합니다
treeFailure=<dark_red>나무 생성에 실패했습니다. 잔디나 흙에서 다시 시도해보세요.
@@ -1414,8 +1484,10 @@ unlinkCommandDescription=현재 연결된 디스코드 계정에서 당신의
unlinkCommandUsage=/<command>
unlinkCommandUsage1=/<command>
unlinkCommandUsage1Description=현재 연결된 디스코드 계정에서 당신의 마인크래프트 계정 연결을 해제합니다.
unmuteNotify=<secondary>{0} <primary>님이 <secondary>{1} <primary>님의 음소거를 해제했습니다.
unmutedPlayer=<primary>플레이어 <secondary>{0} <primary>의 채금이 풀렸습니다.
unsafeTeleportDestination=<dark_red>텔레포트 목적지가 안전하지 않고 teleport-safety가 비활성화 되어있습니다.
unsafeTeleportDestination=<dark_red>텔레포트 목적지가 안전하지 않습니다.
playerNotMuted=<secondary>{0} <primary>님은 음소거 상태가 아닙니다.
unsupportedBrand=<dark_red>현재 사용중인 서버 플랫폼이 이 기능을 제공하지 않습니다.
unsupportedFeature=<dark_red>이 기능은 현재 서버 버전에서는 지원되지 않습니다.
unvanishedReload=<dark_red>리로드로 인해 사라지기가 풀립니다.
@@ -1508,6 +1580,7 @@ west=서
whoisAFK=<primary> - 잠수\:<reset> {0}
whoisAFKSince=<primary> - 잠수\:<reset> {0} ({1} 부터)
whoisBanned=<primary> - 차단\:<reset> {0}
whoisCommandDescription=지정된 플레이어에 대한 기본 정보를 확인합니다.
whoisCommandUsage=/<command> <nickname>
whoisCommandUsage1=/<command> <player>
whoisCommandUsage1Description=해당 플레이어의 기본적인 정보를 보여줍니다.
@@ -1530,6 +1603,8 @@ whoisOp=<primary> - 관리자\:<reset> {0}
whoisPlaytime=<primary> - 플레이 시간\:<reset> {0}
whoisTempBanned=<primary> - 밴 만료\:<reset> {0}
whoisTop=<primary> \=\=\=\=\=\= 플레이어 정보\:<secondary> {0} <primary>\=\=\=\=\=\=
whoisUuid=<primary> - UUID\:<reset> {0}
whoisFirstLogin=<primary> - 첫 로그인\:<reset> {0}
whoisWhitelist=<primary> - 화이트리스트\:<reset> {0}
workbenchCommandDescription=작업대를 엽니다.
workbenchCommandUsage=/<command>
@@ -2,7 +2,7 @@
addedToAccount=<yellow>{0}<green> buvo pridėta į jūsų paskyrą.
addedToOthersAccount=<yellow>{0}<green> pridėta į<yellow> {1}<green> paskyrą. Naujas balansas\:<yellow> {2}
adventure=nuotykių
afkCommandDescription=Pažymi jus kaip pasišalinus.
afkCommandDescription=Pažymi jus, kaip pasišalinusius.
afkCommandUsage=/<command> [player/message...]
afkCommandUsage1=/<command> [žinutė]
afkCommandUsage2=/<command> <player> [message]
@@ -791,11 +791,6 @@ sellCommandUsage4Description=Parduoda visus (arba nurodytą kiekį, jei nurodyta
serverFull=Serveris yra pilnas\!
serverReloading=Didelė tikimybė, kad dabar perkraunate serverį. Jei taip, kodėl nekenčiate savęs? Naudodami /reload nesitikėkite EssentialsX komandos palaikymo.
serverTotal=<primary>Serverį iš viso\:<secondary> {0}
serverUnsupported=Jūs naudojate nepalaikomą serverio versiją\!
serverUnsupportedClass=Būseną lemianti klasė\: {0}
serverUnsupportedCleanroom=Naudojate serverį, kuris tinkamai nepalaiko Bukkit įskiepių, besiremiančių Mojang vidiniu kodu. Apsvarstykite galimybę naudoti Essentials"serverio programinės įrangos pakaitalą.
serverUnsupportedLimitedApi=Naudojate serverį su ribotomis API funkcijomis. EssentialsX vis tiek veiks, tačiau tam tikros funkcijos gali būti išjungtos.
serverUnsupportedMods=Naudojate serverį, kuris tinkamai nepalaiko Bukkit įskiepių. Bukkit įskiepiai neturėtų būti naudojami su Forge/Fabric modifikacijomis\! Forge naudotojams\: apsvarstykite galimybę naudoti ForgeEssentials arba SpongeForge + Nucleus.
setBal=<green>Tavo balansas buvo nustatytas\: {0}.
setBalOthers=<green>Tu nustatei {0}<green>''s balansą į {1}.
setSpawner=<primary>Spawnerio tipas buvo pakeistas į<secondary> {0}<primary>.
@@ -1010,7 +1005,6 @@ unlimitedCommandUsage3=/<command> clear [player]
unlimitedCommandUsage3Description=Ištrina visus neribotus daiktus sau arba kitam žaidėjui, jei nurodyta
unlimitedItemPermission=<dark_red>Neturite teisės neribotam kiekiui <secondary>{0}<dark_red>.
unmutedPlayer=<primary>Žaidėjui<secondary> {0} <primary>vėl leista rašyti.
unsafeTeleportDestination=Teleportavimasis yra nesaugus ir teleport-safety yra išjungtas.
unsupportedBrand=<dark_red>Šiuo metu naudojama serverio platforma neturi šios funkcijos galimybių.
unsupportedFeature=<dark_red>Ši funkcija nepalaikoma dabartinėje serverio versijoje.
upgradingFilesError=Error while upgrading the files.
@@ -1018,11 +1012,11 @@ userAFKWithMessage=<gray>{0} <dark_purple>is currently AFK and may not respond.
userdataMoveBackError=Failed to move userdata/{0}.tmp to userdata/{1}\!
userdataMoveError=Failed to move userdata/{0} to userdata/{1}.tmp\!
uuidDoesNotExist=<dark_red>Vartotojas, su UUID<secondary> {0} <dark_red>neegzistuoja.
userIsAway=<gray>* {0} <gray>dabar yra AFK rėžime.
userIsAwayWithMessage=<gray>* {0} <gray>dabar yra AFK rėžime.
userIsNotAway=<gray>* {0} <gray>nebera AFK rėžime.
userIsAway=<gray>* {0} <gray>dabar yra AFK režime.
userIsAwayWithMessage=<gray>* {0} <gray>dabar yra AFK režime.
userIsNotAway=<gray>* {0} <gray>nebėra AFK režime.
userIsAwaySelf=<gray>Jūs dabar esate AFK režime.
userIsNotAwaySelf=<gray>Jūs nebeesate AFK.
userIsNotAwaySelf=<gray>Jūs nebeesate AFK režime.
userJailed=<primary>Tu buvai įkalintas\!
usingTempFolderForTesting=Using temp folder for testing\:
vanishCommandDescription=Pasislėpkite nuo kitų žaidėjų.
@@ -1,4 +1,5 @@
#Sat Feb 03 17:34:46 GMT 2024
addedToOthersAccount=<yellow>{0}<green> pievienoja<yellow> {1}<green> kontam. Jaunā bilance\:<yellow> {2}
adventure=piedzīvojumu
afkCommandDescription=Atzīmē jūs kā atgājušu no tastatūras.
afkCommandUsage=/<command> [spēlētājs/ziņojums..]
@@ -8,7 +9,7 @@ alertBroke=salauza\:
alertFormat=<dark_aqua>[{0}] <reset> {1} <primary> {2} pie\: {3}
alertPlaced=nolika\:
alertUsed=izmantoja\:
alphaNames=<dark_red>Spēlētaju vārdi var sastāvēt tikai no burtiem, cipariem un pasvītrojumiem.
alphaNames=<dark_red>Spēlētāju vārdi var sastāvēt tikai no burtiem, cipariem un pasvītrojumiem.
antiBuildBreak=<dark_red>Jums nav tiesību šeit lauzt<secondary> {0} <dark_red>blokus.
antiBuildCraft=<dark_red>Jums nav tiesību veidot<secondary> {0}<dark_red>.
antiBuildDrop=<dark_red>Jums nav tiesību izmest<secondary> {0}<dark_red>.
@@ -190,6 +191,13 @@ destinationNotSet=Galamērķis nav noteikts\!
disabled=atspējots
disabledToSpawnMob=<dark_red>Šī moba radīšana bija atspējota konfigurācijas failā.
disableUnlimited=<primary>Atspējoja<secondary> {0} <primary>bezgalīgo novietošanu spēlētājam<secondary> {1}<primary>.
discordCommandAccountDescription=Apskata savienotos Minecraft kontus priekš sevis vai kāda cita Discord lietotāja
discordCommandAccountResponseLinked=Tavs konta ir savienots ar Minecraft kontu\: **{0}**
discordCommandAccountResponseLinkedOther={0} konts ir savienots ar Minecraft kontu\: **{1}**
discordCommandAccountResponseNotLinked=Jums nav pievienots Minecraft konts.
discordCommandAccountResponseNotLinkedOther={0} nav pievienojis Minecraft kontu.
discordCommandDescription=Nosūta Discord pievienošanas saiti spēlētājam.
discordCommandUsage1Description=Nosūta Discord pievienošanas saiti spēlētājam
discordErrorCommandDisabled=Šī komanda tika atspējota\!
disposal=Likvidēšana
disposalCommandDescription=Tiek atvērta pārnēsājama atkritne.
@@ -681,8 +689,6 @@ sellHandPermission=<primary>Tev nav tiesību, lai pārdod rokā esošos priekšm
serverFull=Serveris ir pilns\!
serverReloading=Pastāv lielas izredzes, ka jūs restartējat serveri. Ja tas tā ir, kāpēc jūs ienīstat sevi? Negaidiet palīdzību no EssentialsX komandas izmantojot /reload.
serverTotal=<primary>Serverī Kopā\:<secondary> {0}
serverUnsupported=Tu izmanto neatbalstītu servera versiju\!
serverUnsupportedLimitedApi=Jūs izmantojat serveri ar ierobežotu API funkcionalitāti. EssentialsX joprojām darbosies, taču dažas funkcijas var būt atspējotas.
setBal=<green>Tava bilance tika iestatīta uz {0}.
setBalOthers=<green>Tu iestatīji {0}<green>''a bilanci uz {1}.
setSpawner=<primary>Nomainīja radītāja tipu uz<secondary> {0}<primary>.
@@ -833,7 +839,6 @@ unlimitedCommandUsage=/<command> <list|item|clear> [player]
unlimitedItemPermission=<dark_red>Nav tiesību bezgalīgam priekšmetam <secondary>{0}<dark_red>.
unlimitedItems=<primary>Bezgalīgi priekšmeti\:<reset>
unmutedPlayer=<primary>Spēlētājam<secondary> {0} <primary>noņemts apklusinājums.
unsafeTeleportDestination=<dark_red>Teleportācijas galamērķis ir nedrošs vai teleportācijas drošība ir atspējota.
unsupportedBrand=<dark_red>Servera platforma, kuru pašlaik izmantojat, nenodrošina šīs funkcijas iespējas.
unsupportedFeature=<dark_red>Šī funkcija netiek atbalstīta pašreizējā servera versijā.
unvanishedReload=<dark_red>Pārlāde ir piespiedusi tevi kļūt redzamam.
@@ -1 +1,2 @@
#Sat Feb 03 17:34:46 GMT 2024
addedToAccount=<yellow>{0}<green>-г таны дансанд нэмлээ.
Loaded 100 of 162 files, more files were not shown because too many files have changed in this diff. Show more