mirror of
https://github.com/EssentialsX/Essentials.git
synced 2026-11-05 01:00:13 -05:00
Compare commits
78
Commits
refactor/folia
...
2.x
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f8724e26ef | ||
|
|
e70bdb817c | ||
|
|
2dbd63adf8 | ||
|
|
cfb6f12da3 | ||
|
|
49a2f10071 | ||
|
|
43cb76a888 | ||
|
|
4600c72fd9 | ||
|
|
d5dc7e3a64 | ||
|
|
8013feb70c | ||
|
|
83aaf8cb37 | ||
|
|
966bc999e3 | ||
|
|
382de4ff3b | ||
|
|
f6f13fdee8 | ||
|
|
d2a7e0f99d | ||
|
|
64cfb10954 | ||
|
|
ee9f6f944a | ||
|
|
776f7094a8 | ||
|
|
28eb89fb02 | ||
|
|
ff54e64909 | ||
|
|
15ec9a2589 | ||
|
|
38f1b4ddde | ||
|
|
37ce087a71 | ||
|
|
e604c9f2ae | ||
|
|
49cc72ced2 | ||
|
|
5e95c87fdf | ||
|
|
c28c654b1e | ||
|
|
26a54475ad | ||
|
|
b303bf90d6 | ||
|
|
100f575293 | ||
|
|
c5a25bb79c | ||
|
|
5baf2391b3 | ||
|
|
c38c9256e9 | ||
|
|
79d67e98c3 | ||
|
|
5db483b548 | ||
|
|
39bc0fe224 | ||
|
|
1a9cba913b | ||
|
|
24b7285e42 | ||
|
|
5c45ee2169 | ||
|
|
87bde72678 | ||
|
|
97fd5609b4 | ||
|
|
936a2c0c62 | ||
|
|
3d03cf35df | ||
|
|
57a8c596f8 | ||
|
|
b594358545 | ||
|
|
e9f3677b95 | ||
|
|
678bacfee5 | ||
|
|
7f37b5e0f3 | ||
|
|
f39bc91ef5 | ||
|
|
63e7c4d259 | ||
|
|
1038b3a597 | ||
|
|
fb669aa9fd | ||
|
|
add5eb7cbf | ||
|
|
ddaadf2099 | ||
|
|
4db09f2a2e | ||
|
|
00b4a5b3bd | ||
|
|
73aa65733e | ||
|
|
86621cd90e | ||
|
|
236ce8837e | ||
|
|
f5fc4305c9 | ||
|
|
08b7fe3bb8 | ||
|
|
0845ea6f08 | ||
|
|
5a78df5494 | ||
|
|
716a61eb16 | ||
|
|
637ac8f4ee | ||
|
|
218e004108 | ||
|
|
c26909e2b8 | ||
|
|
5d535dcbe4 | ||
|
|
8e3b24fdba | ||
|
|
d7452bfcc7 | ||
|
|
482175e6c2 | ||
|
|
302653a77c | ||
|
|
9d70fdb263 | ||
|
|
297d0e4606 | ||
|
|
9c833336fb | ||
|
|
5abe8b61ef | ||
|
|
b8acd9c3ab | ||
|
|
f080f815fa | ||
|
|
18549a718a |
No files matched your search
@@ -0,0 +1,270 @@
|
||||
---
|
||||
name: mc-update
|
||||
description: Update EssentialsX for a new Minecraft version. Use when the user asks to update to, bump, or support a new Minecraft or Paper version (for example "update to 26.4", "add 26.3 mobs", "bump supported version"), or asks what must be checked for new mobs, items, wood types, armor, enchantments, potions, or Bukkit API changes.
|
||||
---
|
||||
|
||||
# Minecraft update
|
||||
|
||||
This checklist comes from every Minecraft update PR from 1.14 to 26.3, and from the fix PRs that followed them.
|
||||
|
||||
Paths are relative to the repository root. `ESS` means `Essentials/src/main/java/com/earth2me/essentials`.
|
||||
|
||||
## Procedure
|
||||
|
||||
1. Find the old and new `paper-api` jars in `~/.gradle/caches/modules-2/files-2.1/io.papermc.paper/paper-api/`. If the new jar is not there, set `paperVersion` in `build-logic/src/main/kotlin/essentials.base-conventions.gradle.kts` and run `./gradlew :EssentialsX:compileJava` to download it.
|
||||
2. Diff the constants of these classes between the two jars: `org.bukkit.entity.EntityType`, `org.bukkit.Material`, `org.bukkit.enchantments.Enchantment`, `org.bukkit.potion.PotionEffectType`, `org.bukkit.potion.PotionType`, `org.bukkit.TreeType`, and each `*$Variant` class under `org.bukkit.entity`. Use this command for each class:
|
||||
|
||||
```sh
|
||||
unzip -p <jar> org/bukkit/entity/EntityType.class > /tmp/x.class && javap -p /tmp/x.class | grep 'public static final'
|
||||
```
|
||||
|
||||
3. Sort each added, removed, or renamed constant into a section of part 2 or part 3 below.
|
||||
4. Do part 1. Then do each section that applies.
|
||||
5. Apply part 4 to every line you write.
|
||||
6. Run `./gradlew :EssentialsX:compileJava`. Fix errors.
|
||||
7. Do not commit unless the user asks.
|
||||
8. Report per section: what changed, and what you skipped and why.
|
||||
|
||||
---
|
||||
|
||||
## 1. Every update
|
||||
|
||||
### 1.1 Version constants
|
||||
|
||||
1. Open `ESS/utils/VersionUtil.java`.
|
||||
2. Add a constant `vXX_Y_R01 = BukkitVersion.fromString("XX.Y-R0.1-SNAPSHOT")`.
|
||||
- For a patch release, change the string of the existing minor constant. Example: `v26_1_R01` holds `26.1.2`.
|
||||
- For a minor release, add a new constant. Do not rename or delete an old constant. Old constants gate features. Deleting `v1_20_4_R01` caused #6460.
|
||||
3. Add the constant to `supportedVersions`. Keep the `ImmutableSet.of(...)` syntax. `build-logic/src/main/kotlin/VersionDataTask.kt` parses it with a regex.
|
||||
4. Start a server. Confirm `BukkitVersion.fromString(Bukkit.getBukkitVersion())` parses. Spigot 1.14.3 and Paper 26.1 both changed the string format.
|
||||
|
||||
### 1.2 Documentation
|
||||
|
||||
1. Update the supported versions sentence in `README.md`.
|
||||
2. Regenerate `items.json` with ItemDbGenerator.
|
||||
|
||||
---
|
||||
|
||||
## 2. New content
|
||||
|
||||
### 2.1 New mob
|
||||
|
||||
1. Add an entry to `ESS/Mob.java`: `NAME("CamelName", Enemies.X, "ENTITY_TYPE")`.
|
||||
- Use the string constructor. Do not use `EntityType.X`. The constant does not exist on old servers.
|
||||
- Set the plural suffix if it is not `s`. Fish use `""`. Fox uses `es`.
|
||||
- The display name must not contain a space.
|
||||
- Boats and rafts are also `Mob` entries.
|
||||
2. Add `EntityType` constant to `ESS/MobCompat.java` only if `MobData` needs it.
|
||||
3. Add the mob to `protect.prevent.spawn` in `Essentials/src/main/resources/config.yml`.
|
||||
4. Check `entityToDisplayName` in `providers/BaseProviders/.../SpawnerItemProvider.java` if the enum name does not title-case well.
|
||||
|
||||
### 2.2 New mob variant or data
|
||||
|
||||
1. Add entries to `ESS/MobData.java`. Use the string form `"kind:VARIANT"`. Example: `"wolf:PALE"`.
|
||||
2. Add a `case "kind":` to the `setData` switch.
|
||||
3. Add `setKindVariant(Entity, String)` to `MobCompat.java`. Gate it with `VersionUtil.getServerBukkitVersion().isLowerThan(vXX_Y_R01)`.
|
||||
4. Use `RegistryUtil.valueOf(Variant.class, name)` for registry types. Do not use `Enum.valueOf`.
|
||||
5. Do not call `NewClass.Variant.values()` in an enum initializer. Axolotl did this. It threw `NoClassDefFoundError` on 1.16 (#4376).
|
||||
6. Catch `Throwable` around reflective lookups. Cow variant threw NPE on old servers (#6121).
|
||||
7. For a boolean flag, add a `Data` constant and a branch in `setData`. Example: `GOAT_SCREAMING`.
|
||||
|
||||
### 2.3 New rideable or saddle mob
|
||||
|
||||
1. Add `SADDLE_<MOB>` to `MobData.java` with a `Data.<MOB>SADDLE` constant.
|
||||
2. Add `set<Mob>Saddle(Entity, Player)` to `MobCompat.java`. Tame the mob. Set the owner. Set the saddle.
|
||||
3. Check `ESS/craftbukkit/Inventories.java` if the mob adds a player inventory slot. Body and saddle slots (41, 42) broke `/clearinventory` in 1.21.6 (#6218).
|
||||
|
||||
### 2.4 New item or block
|
||||
|
||||
1. Check each `MaterialUtil` set that lists names by hand. See table.
|
||||
2. Check `ESS/utils/LocationUtil.java`:
|
||||
- Add a block that hurts a standing player to `DAMAGING_TYPES`. Magma, campfire, berry bush and wither rose were missed for 2 years (#3537).
|
||||
- `HOLLOW_MATERIALS` comes from `Material.isTransparent()`. Add a passable block that is not transparent. Example: `LIGHT` (#4601). Remove a transparent block that is solid. Examples: `BARRIER`, `DIRT_PATH`, `FARMLAND`.
|
||||
3. Check for a new event that reveals player position. Sculk sensor needed vanish handling in `EssentialsPlayerListener` (#5262).
|
||||
|
||||
| `ESS/utils/MaterialUtil.java` set | Add when |
|
||||
|---|---|
|
||||
| `HELMETS`, `CHESTPLATES`, `LEGGINGS`, `BOOTS` | New armor tier |
|
||||
| `LEATHER_ARMOR` | New dyeable armor |
|
||||
| `BEDS` | New bed. `STRAW_BED` in 26.3. |
|
||||
| `BANNERS` | New banner colour |
|
||||
| `SIGN_POSTS`, `WALL_SIGNS`, `HANGING_SIGNS`, `HANGING_WALL_SIGNS` | New wood type |
|
||||
| `MOB_HEADS` | New head. `PIGLIN_HEAD` in 1.20. |
|
||||
| `POTIONS` | New potion container |
|
||||
| `EDITABLE_BOOKS` | New book type |
|
||||
| `FIREWORKS`, `FIREWORK_CHARGE` | New firework item |
|
||||
|
||||
`EnumUtil.getAllMatching` skips a name that does not exist. Adding a name is safe on old servers.
|
||||
|
||||
### 2.5 Renamed item, block or entity
|
||||
|
||||
1. Grep `ESS` for `Material.OLD_NAME` and `EntityType.OLD_NAME`. Replace with `EnumUtil.getMaterial("NEW", "OLD")` or a `MobCompat` constant. `EntityType.PIG_ZOMBIE` in a static map broke 1.16 (#3412). `EntityType.FIREWORK` broke `/firework` in 1.20.6.
|
||||
2. For a renamed `EntityType`, add `getEntityType("NEW", "OLD")` to `MobCompat.java`. Update `Mob.java`, `MobData.java` and `SpawnMob.java`.
|
||||
|
||||
### 2.6 New wood type
|
||||
|
||||
1. Add `<WOOD>_SIGN`, `<WOOD>_WALL_SIGN`, `<WOOD>_HANGING_SIGN`, `<WOOD>_WALL_HANGING_SIGN` to the four sign sets in `MaterialUtil.java`. Crimson and warped were missed in 1.16 (#3487).
|
||||
2. Add `<WOOD>_BOAT` to `Mob.java`. Boats are separate entity types since 1.21.3.
|
||||
3. Add `<WOOD>` to `MobCompat.BoatVariant` for servers before 1.21.3.
|
||||
4. Add `<WOOD>_BOAT` to `MobData.java`.
|
||||
5. Add `<WOOD>_CHEST_BOAT` to `Mob.java`.
|
||||
|
||||
### 2.7 New tree type
|
||||
|
||||
1. `Commandtree` reads `TreeType.values()`. It needs no code change.
|
||||
2. Add the name to `treeCommandUsage` and `treeCommandUsage1` in `messages.properties`.
|
||||
3. `Commandbigtree` has four hard-coded types. Add a case if the tree has a big variant.
|
||||
4. Bukkit adds `TreeType` late. 26.3-pre-2 has no `POPLAR`.
|
||||
|
||||
### 2.8 New armor tier
|
||||
|
||||
1. Add the four pieces to `HELMETS`, `CHESTPLATES`, `LEGGINGS`, `BOOTS` in `MaterialUtil.java`.
|
||||
2. Add a branch to the armor keyword chain in `ESS/SpawnMob.java`. The chain has `netherite`, `copper`, `diamond`, `gold`, `leather`, `iron`.
|
||||
3. For horse armor, add `<TIER>_HORSE_ARMOR` to `MobData.java`. Example: `NETHERITE_HORSE_ARMOR`.
|
||||
|
||||
### 2.9 New enchantment
|
||||
|
||||
1. Add a `try { // XX.Y }` block to `ESS/Enchantments.java`.
|
||||
2. Look up by name: `Enchantment.getByName("NAME")`. Check for null. Do not use `Enchantment.NAME`.
|
||||
3. Add `ENCHANTMENTS.put("name", e)` and `ALIASENCHANTMENTS.put("alias", e)`.
|
||||
4. Swift sneak (1.19) and lunge (1.21.11) were missed. Contributors added them months later.
|
||||
5. Display and permission names come from `Enchantments.getRealName()`. It uses the key on 1.13+.
|
||||
|
||||
### 2.10 New potion effect or potion type
|
||||
|
||||
1. Add a `try { // XX.Y }` block to `ESS/Potions.java`. Catch `Throwable`.
|
||||
2. Add `POTIONS.put("name", PotionEffectType.NAME)` and `ALIASPOTIONS.put(...)`.
|
||||
3. `ModernPotionMetaProvider` maps `LONG_` and `STRONG_` prefixes. Check a new potion follows that pattern.
|
||||
|
||||
### 2.11 New banner pattern
|
||||
|
||||
No code change. `PatternTypeProvider` reads the registry.
|
||||
|
||||
### 2.12 New colour family
|
||||
|
||||
Check `MaterialUtil.getColorOf` for a colour name that is not a `DyeColor`.
|
||||
|
||||
### 2.13 New spawn egg
|
||||
|
||||
No code change. `FlatSpawnEggProvider` derives the egg from `EntityType.name() + "_SPAWN_EGG"`.
|
||||
|
||||
### 2.14 New command for new content
|
||||
|
||||
1. Gate the command with `VersionUtil`. Return `tl("unsupportedFeature")` on old servers. Examples: `/beezooka`, `/ice`.
|
||||
2. Add the command to `plugin.yml` and `messages.properties`. Check message parameters. `iceOther` shipped without `{0}`.
|
||||
|
||||
---
|
||||
|
||||
## 3. API changes
|
||||
|
||||
### 3.1 Enum becomes a registry
|
||||
|
||||
Enchantment, PotionEffectType, Sound, PatternType, Villager.Profession, Cat.Type, Biome and Boat.Type all changed.
|
||||
|
||||
1. Replace `EnumUtil.valueOf` with `RegistryUtil.valueOf(Class, names...)`. Replace `.values()` with `RegistryUtil.values(Class)`.
|
||||
2. If a static method moved from an enum to an interface, code compiled against the new API throws `IncompatibleClassChangeError` on old servers. `catch (Exception)` does not catch it. `PatternType.getByIdentifier` did this (#6553).
|
||||
3. For such a case, add a provider pair:
|
||||
- Interface in `providers/BaseProviders/src/main/java/net/ess3/provider/`.
|
||||
- `Modern*Provider` in BaseProviders with `@ProviderData(weight = 1)` and a `@ProviderTest`.
|
||||
- `Legacy*Provider` in `providers/1_12Provider` or `providers/1_8Provider`. These compile against the old API.
|
||||
- Register with `providerFactory.registerProvider(Legacy.class, Modern.class)` in `Essentials.java`.
|
||||
4. In a `@ProviderTest`, use `getMethod`, not `getDeclaredMethod`. 1.21 moved spawner methods to a super-interface (80bdc5269).
|
||||
|
||||
### 3.2 Removed API class
|
||||
|
||||
`PotionData`, `Potion`, `BannerMeta.setBaseColor` and `Achievement` were removed.
|
||||
|
||||
1. Move code that uses the removed class to a provider in `1_12Provider` or `1_8Provider`.
|
||||
2. Add a modern provider in BaseProviders.
|
||||
3. Remove the method from `OfflinePlayer`, `FakeWorld` and `FakeServer` if it was an override.
|
||||
|
||||
### 3.3 Changed method signature
|
||||
|
||||
1. Read the Bukkit diff for changed return types on methods EssentialsX calls.
|
||||
2. A changed return type changes the call descriptor. The call throws `NoSuchMethodError` on old servers. `PlayerPickupArrowEvent#getArrow` did this (#3175). `InventoryView` becoming an interface did this (#5851).
|
||||
3. Use a provider or reflection for the changed call.
|
||||
|
||||
### 3.4 New API methods on Player, World, Server
|
||||
|
||||
1. Add stubs to `providers/1_8Provider/.../OfflinePlayer.java` and `providers/1_12Provider/.../FakeWorld.java` if they fail to compile.
|
||||
2. Tests use MockBukkit since 1.21.6. `FakeServer` no longer needs updates.
|
||||
|
||||
### 3.5 New event
|
||||
|
||||
1. Put the handler in a separate `*Listener_XX_Y` class.
|
||||
2. Register it behind a `VersionUtil` check or `Class.forName`.
|
||||
3. Do not put a new event in a listener that loads on old servers. `EntityTransformEvent` failed on 1.13.1 (#2942).
|
||||
|
||||
### 3.6 Spigot NMS obfuscation
|
||||
|
||||
1. Add `VXX_Y_RN` to `providers/NMSReflectionProvider/.../ReflUtil.java` if Spigot bumps the NMS revision.
|
||||
2. Update the obfuscated `MinecraftServer#isRunning` name table in `ReflServerStateProvider.java`. This broke on 1.18, 1.19, 1.19.3, 1.20.6 and 1.21.10.
|
||||
3. Paper uses `PaperServerStateProvider`. Test on Spigot to see this fail.
|
||||
|
||||
### 3.7 Paper internal classes
|
||||
|
||||
Paper config classes move. `ReflOnlineModeProvider` broke on 1.19 when config moved to `io.papermc.paper.configuration.GlobalConfiguration`. Check every reflective Paper access.
|
||||
|
||||
### 3.8 World height
|
||||
|
||||
1. Do not hard-code `0`, `-1`, `128` or `256` as a Y bound.
|
||||
2. Use `WorldInfoProvider.getMinHeight`, `getMaxHeight` and `getLogicalHeight`.
|
||||
3. Grep `LocationUtil`, `RandomTeleport`, `Commandtop`, `Commandsethome`, `Teleport`, `AsyncTeleport` and `SpawnMob`. 1.18 needed three fix PRs (#4657, #4667, #4715).
|
||||
|
||||
### 3.9 Item data components
|
||||
|
||||
1. Check `MetaItemStack.parseStringMeta`. The `[...]` component branch calls `UnsafeValues#modifyItemStack`. Its argument shape changed in 1.20.5 and again in 26.1 (#6570).
|
||||
2. Check `Commandbook`. Writable and written books have separate meta since 1.20.6 (#6064).
|
||||
3. Check `Commandskull`. Skull owner needs a resolved profile since 1.20.4 (#6188).
|
||||
4. Check `MetaItemStack.canSpawn()`.
|
||||
|
||||
### 3.10 Vanilla messages
|
||||
|
||||
Check the vanilla changelog for a new client message that duplicates an EssentialsX message. 1.15 added "Respawn point set". `EssentialsPlayerListener` now gates `bedSet` (#2943).
|
||||
|
||||
### 3.11 Version string format
|
||||
|
||||
1. `BukkitVersion.VERSION_PATTERN` in `VersionUtil.java` must parse the new string.
|
||||
2. Supported suffixes: `-snapshot-N`, `-pre-N`, `-rc-N`, `.build.N-channel`, `.local`, `-R0.1-SNAPSHOT`.
|
||||
3. `compareDevSpecifier` orders `snapshot < pre < rc < release`.
|
||||
4. `isSupportedVersion` compares major, minor and patch. A patch release needs a constant change.
|
||||
5. 26.1 needed four fix PRs for this (#6480, #6483, #6500, #6501).
|
||||
|
||||
### 3.12 Adventure and Paper native paths
|
||||
|
||||
Each Paper API shift produced a gate:
|
||||
- `Essentials.initAdventureFacet` gates the Paper facet at `v1_18_2_R01` (#6562).
|
||||
- `EssentialsSpawnPlayerListener` gates `getRespawnLocation` at `v1_20_4_R01` (#6460).
|
||||
- `EssentialsPlayerListener` gates configuration events at `v1_21_8_R01`.
|
||||
|
||||
Check each gate against the new version.
|
||||
|
||||
---
|
||||
|
||||
## 4. Compatibility rules
|
||||
|
||||
EssentialsX runs on 1.8.8 through the current version. Every update PR must keep that.
|
||||
|
||||
1. Do not reference a new `Material`, `EntityType`, `Enchantment` or `PotionEffectType` constant in a static field or enum initializer. Use `EnumUtil.getMaterial`, `EnumUtil.getEntityType` or a name lookup.
|
||||
2. Catch `Throwable`, not `Exception`, around reflective lookups and provider selection. A swallowed `NoSuchFieldError` selected the wrong provider (7d6195375).
|
||||
3. Use only Guava and Gson methods that exist in 1.8.8. `Ints.constrainToRange` and `JsonArray#add(String)` do not (#4708, 576866540).
|
||||
4. Compile legacy providers in `1_8Provider` or `1_12Provider`. Code compiled against the new API can carry the wrong bytecode.
|
||||
5. Gate with `isLowerThan(<next major>)`, not `isLowerThanOrEqualTo(<patch>)`. Forks use nonstandard revision numbers (43eff69a2).
|
||||
6. Do not delete a `VersionUtil` constant.
|
||||
7. Test on Paper latest, Spigot latest, 1.12.2 and 1.8.8. Most follow-up fixes in this history came from old servers.
|
||||
|
||||
---
|
||||
|
||||
## 5. Test
|
||||
|
||||
1. Run `./gradlew test`.
|
||||
2. Run `./gradlew runServer`.
|
||||
3. Run `/ess version`. Confirm the support status is FULL.
|
||||
4. Run `/spawnmob <newmob>`, `/spawnmob <mob>:<variant>`.
|
||||
5. Run `/give @s <newitem>`, `/give @s minecraft:<newitem>`.
|
||||
6. Run `/enchant <newenchant>`, `/potion <neweffect>`.
|
||||
7. Place an EssentialsX sign on each new sign type.
|
||||
8. Run `/tree <newtree>` if Bukkit has the `TreeType`.
|
||||
9. Run `/kit` with the new armor. Confirm auto-equip.
|
||||
10. Teleport onto each new damaging block. Confirm `/tp` refuses.
|
||||
11. Repeat on Spigot for `ReflServerStateProvider`.
|
||||
@@ -80,7 +80,7 @@ Java version:
|
||||
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.
|
||||
-->
|
||||
- [ ] Most recent Paper version (1.XX.Y, git-Paper-BUILD)
|
||||
- [ ] Most recent Paper version (XX.YY.Z, git-Paper-BUILD)
|
||||
- [ ] CraftBukkit/Spigot/Paper 1.12.2
|
||||
- [ ] CraftBukkit 1.8.8
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ Java version:
|
||||
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.
|
||||
-->
|
||||
- [ ] Most recent Paper version (1.XX.Y, git-Paper-BUILD)
|
||||
- [ ] Most recent Paper version (XX.YY.Z, git-Paper-BUILD)
|
||||
- [ ] CraftBukkit/Spigot/Paper 1.12.2
|
||||
- [ ] CraftBukkit 1.8.8
|
||||
|
||||
|
||||
@@ -20,11 +20,11 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK 17
|
||||
- name: Set up JDK 25
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: 17
|
||||
java-version: 25
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
@@ -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/
|
||||
|
||||
@@ -27,11 +27,11 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK 17
|
||||
- name: Set up JDK 25
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: 17
|
||||
java-version: 25
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
@@ -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
|
||||
@@ -21,6 +21,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Mirror dump to a private Gist
|
||||
id: mirror
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
github-token: ${{ secrets.GIST_TOKEN }}
|
||||
@@ -46,13 +47,19 @@ jobs:
|
||||
public: false
|
||||
});
|
||||
|
||||
const link = `${process.env.GIST_LINK_FMT}${gist.id}`;
|
||||
core.setOutput('link', `${process.env.GIST_LINK_FMT}${gist.id}`);
|
||||
core.setOutput('issue_number', issue.number);
|
||||
|
||||
- name: Comment gist link on issue
|
||||
if: steps.mirror.outputs.link != ''
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
await github.rest.issues.createComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: issue.number,
|
||||
body: `📋 Essentials Dump Backup → ${link}`
|
||||
issue_number: ${{ steps.mirror.outputs.issue_number }},
|
||||
body: `📋 Essentials Dump Backup → ${{ steps.mirror.outputs.link }}`
|
||||
});
|
||||
|
||||
cleanup-gist:
|
||||
|
||||
Generated
+2
-2
@@ -11,8 +11,8 @@
|
||||
</option>
|
||||
<option name="locations">
|
||||
<list>
|
||||
<ConfigurationLocation id="bundled-sun-checks" type="BUNDLED" scope="All" description="Sun Checks">(bundled)</ConfigurationLocation>
|
||||
<ConfigurationLocation id="bundled-google-checks" type="BUNDLED" scope="All" description="Google Checks">(bundled)</ConfigurationLocation>
|
||||
<ConfigurationLocation id="bundled-sun-checks" type="BUNDLED" scope="All" description="Sun Checks">bundled-sun-checks</ConfigurationLocation>
|
||||
<ConfigurationLocation id="bundled-google-checks" type="BUNDLED" scope="All" description="Google Checks">bundled-google-checks</ConfigurationLocation>
|
||||
<ConfigurationLocation id="321e5753-4201-4d2c-bf31-6232011122fd" type="PROJECT_RELATIVE" scope="All" description="EssentialsX">
|
||||
$PROJECT_DIR$/.checkstyle/checkstyle.xml
|
||||
<option name="properties">
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -116,6 +116,8 @@ public class AlternativeCommandsHandler {
|
||||
}
|
||||
|
||||
// return the first command that is not an alias
|
||||
Command firstAlias = null;
|
||||
|
||||
final Iterator<WeakReference<Command>> iterator = commands.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
final Command cmd = iterator.next().get();
|
||||
@@ -127,10 +129,14 @@ public class AlternativeCommandsHandler {
|
||||
if (cmd.getName().equalsIgnoreCase(label)) {
|
||||
return cmd;
|
||||
}
|
||||
|
||||
if (firstAlias == null) {
|
||||
firstAlias = cmd;
|
||||
}
|
||||
}
|
||||
|
||||
// return the first alias
|
||||
return commands.get(0).get();
|
||||
// return the first alias, or null if every reference in this bucket has been collected
|
||||
return firstAlias;
|
||||
}
|
||||
|
||||
public void executed(final String label, final Command pc) {
|
||||
|
||||
@@ -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);
|
||||
@@ -313,7 +313,7 @@ public final class Enchantments {
|
||||
ENCHANTMENTS.put("density", density);
|
||||
}
|
||||
final Enchantment windBurst = Enchantment.getByName("WIND_BURST");
|
||||
if (breach != null) {
|
||||
if (windBurst != null) {
|
||||
ENCHANTMENTS.put("windburst", windBurst);
|
||||
ALIASENCHANTMENTS.put("wind", windBurst);
|
||||
ALIASENCHANTMENTS.put("burst", windBurst);
|
||||
@@ -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");
|
||||
|
||||
@@ -46,6 +46,8 @@ import com.earth2me.essentials.textreader.SimpleTextInput;
|
||||
import com.earth2me.essentials.updatecheck.UpdateChecker;
|
||||
import com.earth2me.essentials.userstorage.ModernUserMap;
|
||||
import com.earth2me.essentials.utils.FormatUtil;
|
||||
import com.earth2me.essentials.utils.ModernPaperEnvironment;
|
||||
import com.earth2me.essentials.utils.PasteUtil;
|
||||
import com.earth2me.essentials.utils.VersionUtil;
|
||||
import io.papermc.lib.PaperLib;
|
||||
import net.ess3.api.Economy;
|
||||
@@ -79,6 +81,8 @@ import net.ess3.provider.providers.FixedHeightWorldInfoProvider;
|
||||
import net.ess3.provider.providers.FlatSpawnEggProvider;
|
||||
import net.ess3.provider.providers.LegacyBannerDataProvider;
|
||||
import net.ess3.provider.providers.LegacyBiomeNameProvider;
|
||||
import net.ess3.provider.providers.LegacyPatternTypeProvider;
|
||||
import net.ess3.provider.providers.ModernPatternTypeProvider;
|
||||
import net.ess3.provider.providers.LegacyDamageEventProvider;
|
||||
import net.ess3.provider.providers.LegacyInventoryViewProvider;
|
||||
import net.ess3.provider.providers.LegacyItemUnbreakableProvider;
|
||||
@@ -146,6 +150,8 @@ import java.util.UUID;
|
||||
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;
|
||||
@@ -256,6 +262,10 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
|
||||
getLogger().severe(getAdventureFacet().miniToLegacy(tlLiteral("serverSnapshot")));
|
||||
}
|
||||
|
||||
if (PaperLib.isPaper() && !PaperLib.isVersion(13) && VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_13_0_R01)) {
|
||||
PaperLib.setCustomEnvironment(new ModernPaperEnvironment());
|
||||
}
|
||||
|
||||
final PluginManager pm = getServer().getPluginManager();
|
||||
for (final Plugin plugin : pm.getPlugins()) {
|
||||
if (plugin.getDescription().getName().startsWith("Essentials") && !plugin.getDescription().getVersion().equals(this.getDescription().getVersion()) && !plugin.getDescription().getName().equals("EssentialsAntiCheat")) {
|
||||
@@ -340,6 +350,9 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
|
||||
//Banner Meta Provider
|
||||
providerFactory.registerProvider(LegacyBannerDataProvider.class, BaseBannerDataProvider.class);
|
||||
|
||||
// Pattern Type Provider
|
||||
providerFactory.registerProvider(LegacyPatternTypeProvider.class, ModernPatternTypeProvider.class);
|
||||
|
||||
// Server State Provider
|
||||
providerFactory.registerProvider(ReflServerStateProvider.class, PaperServerStateProvider.class);
|
||||
|
||||
@@ -580,6 +593,8 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
|
||||
getUsers().shutdown();
|
||||
|
||||
EssentialsConfiguration.shutdownExecutor();
|
||||
PasteUtil.shutdownExecutor();
|
||||
getServer().getScheduler().cancelTasks(this);
|
||||
|
||||
HandlerList.unregisterAll(this);
|
||||
}
|
||||
@@ -613,7 +628,9 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
|
||||
adventureFacet.close();
|
||||
}
|
||||
|
||||
if (VersionUtil.isPaper() && VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_16_5_R01)) {
|
||||
// Paper only started bundling a modern enough native Adventure (with the MiniMessage TagResolver API)
|
||||
// in 1.18.2, so older versions must continue using our bundled Adventure via the Spigot facet.
|
||||
if (VersionUtil.isPaper() && VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_18_2_R01)) {
|
||||
adventureFacet = new PaperAdventureFacet(getSettings() != null ? getSettings().getPrimaryColor() : null, getSettings() != null ? getSettings().getSecondaryColor() : null);
|
||||
} else {
|
||||
adventureFacet = new SpigotAdventureFacet(this);
|
||||
@@ -837,7 +854,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());
|
||||
@@ -903,6 +920,11 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
|
||||
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;
|
||||
|
||||
@@ -193,22 +193,7 @@ public class EssentialsPlayerListener implements Listener {
|
||||
final User user = ess.getUser(event.getPlayer());
|
||||
if (user.isMuted()) {
|
||||
event.setCancelled(true);
|
||||
|
||||
final String dateDiff = user.getMuteTimeout() > 0 ? DateUtil.formatDateDiff(user.getMuteTimeout()) : null;
|
||||
if (dateDiff == null) {
|
||||
if (user.hasMuteReason()) {
|
||||
user.sendTl("voiceSilencedReason", user.getMuteReason());
|
||||
} else {
|
||||
user.sendTl("voiceSilenced");
|
||||
}
|
||||
} else {
|
||||
if (user.hasMuteReason()) {
|
||||
user.sendTl("voiceSilencedReasonTime", dateDiff, user.getMuteReason());
|
||||
} else {
|
||||
user.sendTl("voiceSilencedTime", dateDiff);
|
||||
}
|
||||
}
|
||||
|
||||
user.notifyMuted();
|
||||
ess.getLogger().info(ess.getAdventureFacet().miniToLegacy(tlLiteral("mutedUserSpeaks", user.getName(), event.getMessage())));
|
||||
}
|
||||
try {
|
||||
@@ -420,14 +405,25 @@ 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());
|
||||
|
||||
// A null last account name means EssentialsX has never recorded this player before, i.e. it's their first join.
|
||||
// We rely on EssentialsX's own user data here rather than Player#hasPlayedBefore(), which is unreliable on modern
|
||||
// server platforms that persist player data during the login/configuration phase.
|
||||
// See https://github.com/EssentialsX/Essentials/issues/6466, https://github.com/EssentialsX/Essentials/issues/6464
|
||||
final boolean firstJoin = lastAccountName == null;
|
||||
|
||||
// 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);
|
||||
@@ -453,7 +449,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()))
|
||||
@@ -473,7 +469,7 @@ public class EssentialsPlayerListener implements Listener {
|
||||
joinMessageConsumer.accept(effectiveMessage);
|
||||
}
|
||||
|
||||
ess.runTaskAsynchronously(() -> ess.getServer().getPluginManager().callEvent(new AsyncUserDataLoadEvent(user, effectiveMessage)));
|
||||
ess.runTaskAsynchronously(() -> ess.getServer().getPluginManager().callEvent(new AsyncUserDataLoadEvent(user, effectiveMessage, firstJoin)));
|
||||
|
||||
if (ess.getSettings().getMotdDelay() >= 0) {
|
||||
final int motdDelay = ess.getSettings().getMotdDelay() / 50;
|
||||
@@ -503,12 +499,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());
|
||||
}
|
||||
}
|
||||
@@ -524,6 +529,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());
|
||||
@@ -794,10 +804,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));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -807,20 +816,7 @@ public class EssentialsPlayerListener implements Listener {
|
||||
final User user = ess.getUser(player);
|
||||
if (user.isMuted() && (ess.getSettings().getMuteCommands().contains(cmd) || ess.getSettings().getMuteCommands().contains("*"))) {
|
||||
event.setCancelled(true);
|
||||
final String dateDiff = user.getMuteTimeout() > 0 ? DateUtil.formatDateDiff(user.getMuteTimeout()) : null;
|
||||
if (dateDiff == null) {
|
||||
if (user.hasMuteReason()) {
|
||||
user.sendTl("voiceSilencedReason", user.getMuteReason());
|
||||
} else {
|
||||
user.sendTl("voiceSilenced");
|
||||
}
|
||||
} else {
|
||||
if (user.hasMuteReason()) {
|
||||
user.sendTl("voiceSilencedReasonTime", dateDiff, user.getMuteReason());
|
||||
} else {
|
||||
user.sendTl("voiceSilencedTime", dateDiff);
|
||||
}
|
||||
}
|
||||
user.notifyMuted();
|
||||
ess.getLogger().info(ess.getAdventureFacet().miniToLegacy(tlLiteral("mutedUserSpeaks", player.getName(), event.getMessage())));
|
||||
return;
|
||||
}
|
||||
@@ -1174,6 +1170,10 @@ public class EssentialsPlayerListener implements Listener {
|
||||
|
||||
@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);
|
||||
}
|
||||
@@ -1213,10 +1213,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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1224,8 +1226,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);
|
||||
}
|
||||
}
|
||||
@@ -1244,6 +1248,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<>();
|
||||
|
||||
@@ -28,6 +28,7 @@ import java.util.ResourceBundle;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Function;
|
||||
import java.util.logging.Level;
|
||||
import java.util.regex.Pattern;
|
||||
@@ -35,7 +36,7 @@ import java.util.regex.Pattern;
|
||||
public class I18n implements net.ess3.api.II18n {
|
||||
private static final String MESSAGES = "messages";
|
||||
private static final Pattern NODOUBLEMARK = Pattern.compile("''");
|
||||
private static final ExecutorService BUNDLE_LOADER_EXECUTOR = Executors.newFixedThreadPool(2);
|
||||
private static volatile ExecutorService BUNDLE_LOADER_EXECUTOR = Executors.newFixedThreadPool(2);
|
||||
private static final ResourceBundle NULL_BUNDLE = new ResourceBundle() {
|
||||
@SuppressWarnings("NullableProblems")
|
||||
public Enumeration<String> getKeys() {
|
||||
@@ -106,6 +107,29 @@ public class I18n implements net.ess3.api.II18n {
|
||||
|
||||
public void onDisable() {
|
||||
instance = null;
|
||||
shutdownExecutor();
|
||||
}
|
||||
|
||||
private static synchronized ExecutorService getExecutor() {
|
||||
if (BUNDLE_LOADER_EXECUTOR == null || BUNDLE_LOADER_EXECUTOR.isShutdown() || BUNDLE_LOADER_EXECUTOR.isTerminated()) {
|
||||
BUNDLE_LOADER_EXECUTOR = Executors.newFixedThreadPool(2);
|
||||
}
|
||||
return BUNDLE_LOADER_EXECUTOR;
|
||||
}
|
||||
|
||||
private static synchronized void shutdownExecutor() {
|
||||
final ExecutorService exec = BUNDLE_LOADER_EXECUTOR;
|
||||
if (exec == null) {
|
||||
return;
|
||||
}
|
||||
exec.shutdown();
|
||||
try {
|
||||
if (!exec.awaitTermination(5, TimeUnit.SECONDS)) {
|
||||
exec.shutdownNow();
|
||||
}
|
||||
} catch (final InterruptedException ignored) {
|
||||
exec.shutdownNow();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -124,7 +148,7 @@ public class I18n implements net.ess3.api.II18n {
|
||||
synchronized (loadingBundles) {
|
||||
if (!loadingBundles.contains(locale)) {
|
||||
loadingBundles.add(locale);
|
||||
BUNDLE_LOADER_EXECUTOR.submit(() -> {
|
||||
getExecutor().submit(() -> {
|
||||
blockingLoadBundle(locale);
|
||||
synchronized (loadingBundles) {
|
||||
loadingBundles.remove(locale);
|
||||
|
||||
@@ -82,6 +82,8 @@ public interface IEssentials extends Plugin {
|
||||
|
||||
BukkitScheduler getScheduler();
|
||||
|
||||
List<Player> getJailedPlayers();
|
||||
|
||||
IJails getJails();
|
||||
|
||||
IWarps getWarps();
|
||||
|
||||
@@ -94,6 +94,8 @@ public interface ISettings extends IConf {
|
||||
|
||||
String getNicknamePrefix();
|
||||
|
||||
boolean isResetNickOnNameChange();
|
||||
|
||||
String getOperatorColor() throws Exception;
|
||||
|
||||
boolean getPerWarpPermission();
|
||||
@@ -134,6 +136,8 @@ public interface ISettings extends IConf {
|
||||
|
||||
boolean isAlwaysTeleportSafety();
|
||||
|
||||
boolean isConsiderWorldHeightForTeleportSafety();
|
||||
|
||||
boolean isTeleportPassengerDismount();
|
||||
|
||||
boolean isForcePassengerTeleport();
|
||||
@@ -221,6 +225,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);
|
||||
|
||||
@@ -13,6 +13,7 @@ import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.TranslatableException;
|
||||
import net.ess3.provider.BannerDataProvider;
|
||||
import net.ess3.provider.ItemUnbreakableProvider;
|
||||
import net.ess3.provider.PatternTypeProvider;
|
||||
import net.ess3.provider.PotionMetaProvider;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.DyeColor;
|
||||
@@ -207,8 +208,13 @@ public class MetaItemStack {
|
||||
|
||||
try {
|
||||
final String components = Joiner.on(' ').join(Arrays.asList(string).subList(fromArg, string.length));
|
||||
// modifyItemStack requires that the item namespaced key is prepended to the components for some reason
|
||||
stack = ess.getServer().getUnsafe().modifyItemStack(stack, stack.getType().getKey() + components);
|
||||
// From 1.20.6 through 1.21.11, modifyItemStack parses its argument as a full item string, so the item's
|
||||
// namespaced key must be prepended to the components. As of 26.1, the implementation prepends the item
|
||||
// key itself, so prepending it here would produce a malformed (double-namespaced) item string.
|
||||
final String itemString = VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v26_1_R01)
|
||||
? components
|
||||
: stack.getType().getKey() + components;
|
||||
stack = ess.getServer().getUnsafe().modifyItemStack(stack, itemString);
|
||||
} catch (final NullPointerException npe) {
|
||||
if (ess.getSettings().isDebug()) {
|
||||
ess.getLogger().log(Level.INFO, "Itemstack is invalid", npe);
|
||||
@@ -308,8 +314,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<>();
|
||||
@@ -706,22 +718,15 @@ public class MetaItemStack {
|
||||
throw new TranslatableException("invalidBanner", split[1]);
|
||||
}
|
||||
|
||||
PatternType patternType = null;
|
||||
try {
|
||||
//noinspection removal
|
||||
patternType = PatternType.getByIdentifier(split[0]);
|
||||
} catch (final Exception ignored) {
|
||||
}
|
||||
final PatternType patternType = ess.provider(PatternTypeProvider.class).getPatternTypeByIdentifier(split[0]);
|
||||
|
||||
final BannerMeta meta = (BannerMeta) stack.getItemMeta();
|
||||
if (split[0].equalsIgnoreCase("basecolor")) {
|
||||
final Color color = Color.fromRGB(Integer.parseInt(split[1]));
|
||||
ess.provider(BannerDataProvider.class).setBaseColor(stack, DyeColor.getByColor(color));
|
||||
} else if (patternType != null) {
|
||||
//noinspection removal
|
||||
final PatternType type = PatternType.getByIdentifier(split[0]);
|
||||
final DyeColor color = DyeColor.getByColor(Color.fromRGB(Integer.parseInt(split[1])));
|
||||
final org.bukkit.block.banner.Pattern pattern = new org.bukkit.block.banner.Pattern(color, type);
|
||||
final org.bukkit.block.banner.Pattern pattern = new org.bukkit.block.banner.Pattern(color, patternType);
|
||||
meta.addPattern(pattern);
|
||||
}
|
||||
|
||||
@@ -733,12 +738,7 @@ public class MetaItemStack {
|
||||
throw new TranslatableException("invalidBanner", split[1]);
|
||||
}
|
||||
|
||||
PatternType patternType = null;
|
||||
try {
|
||||
//noinspection removal
|
||||
patternType = PatternType.getByIdentifier(split[0]);
|
||||
} catch (final Exception ignored) {
|
||||
}
|
||||
final PatternType patternType = ess.provider(PatternTypeProvider.class).getPatternTypeByIdentifier(split[0]);
|
||||
|
||||
// Hacky fix for accessing Shield meta - https://github.com/drtshock/Essentials/pull/745#issuecomment-234843795
|
||||
final BlockStateMeta meta = (BlockStateMeta) stack.getItemMeta();
|
||||
@@ -747,10 +747,8 @@ public class MetaItemStack {
|
||||
final Color color = Color.fromRGB(Integer.parseInt(split[1]));
|
||||
banner.setBaseColor(DyeColor.getByColor(color));
|
||||
} else if (patternType != null) {
|
||||
//noinspection removal
|
||||
final PatternType type = PatternType.getByIdentifier(split[0]);
|
||||
final DyeColor color = DyeColor.getByColor(Color.fromRGB(Integer.parseInt(split[1])));
|
||||
final org.bukkit.block.banner.Pattern pattern = new org.bukkit.block.banner.Pattern(color, type);
|
||||
final org.bukkit.block.banner.Pattern pattern = new org.bukkit.block.banner.Pattern(color, patternType);
|
||||
banner.addPattern(pattern);
|
||||
}
|
||||
banner.update();
|
||||
|
||||
@@ -60,6 +60,7 @@ public enum Mob {
|
||||
CHERRY_BOAT("CherryBoat", Enemies.NEUTRAL, "CHERRY_BOAT"),
|
||||
BAMBOO_RAFT("BambooRaft", Enemies.NEUTRAL, "BAMBOO_RAFT"),
|
||||
PALE_OAK_BOAT("PaleOakBoat", Enemies.NEUTRAL, "PALE_OAK_BOAT"),
|
||||
POPLAR_BOAT("PoplarBoat", Enemies.NEUTRAL, "POPLAR_BOAT"),
|
||||
MINECART("Minecart", Enemies.NEUTRAL, EntityType.MINECART),
|
||||
MINECART_CHEST("ChestMinecart", Enemies.NEUTRAL, MobCompat.CHEST_MINECART),
|
||||
MINECART_FURNACE("FurnaceMinecart", Enemies.NEUTRAL, MobCompat.FURNACE_MINECART),
|
||||
@@ -118,7 +119,17 @@ public enum Mob {
|
||||
FROG("Frog", Enemies.FRIENDLY, "FROG"),
|
||||
TADPOLE("Tadpole", Enemies.FRIENDLY, "TADPOLE"),
|
||||
WARDEN("Warden", Enemies.ENEMY, "WARDEN"),
|
||||
CHEST_BOAT("ChestBoat", Enemies.NEUTRAL, "CHEST_BOAT"),
|
||||
CHEST_BOAT("ChestBoat", Enemies.NEUTRAL, MobCompat.OAK_CHEST_BOAT),
|
||||
ACACIA_CHEST_BOAT("AcaciaChestBoat", Enemies.NEUTRAL, "ACACIA_CHEST_BOAT"),
|
||||
DARK_OAK_CHEST_BOAT("DarkOakChestBoat", Enemies.NEUTRAL, "DARK_OAK_CHEST_BOAT"),
|
||||
BIRCH_CHEST_BOAT("BirchChestBoat", Enemies.NEUTRAL, "BIRCH_CHEST_BOAT"),
|
||||
JUNGLE_CHEST_BOAT("JungleChestBoat", Enemies.NEUTRAL, "JUNGLE_CHEST_BOAT"),
|
||||
SPRUCE_CHEST_BOAT("SpruceChestBoat", Enemies.NEUTRAL, "SPRUCE_CHEST_BOAT"),
|
||||
MANGROVE_CHEST_BOAT("MangroveChestBoat", Enemies.NEUTRAL, "MANGROVE_CHEST_BOAT"),
|
||||
CHERRY_CHEST_BOAT("CherryChestBoat", Enemies.NEUTRAL, "CHERRY_CHEST_BOAT"),
|
||||
BAMBOO_CHEST_RAFT("BambooChestRaft", Enemies.NEUTRAL, "BAMBOO_CHEST_RAFT"),
|
||||
PALE_OAK_CHEST_BOAT("PaleOakChestBoat", Enemies.NEUTRAL, "PALE_OAK_CHEST_BOAT"),
|
||||
POPLAR_CHEST_BOAT("PoplarChestBoat", Enemies.NEUTRAL, "POPLAR_CHEST_BOAT"),
|
||||
CAMEL("Camel", Enemies.FRIENDLY, "CAMEL"),
|
||||
SNIFFER("Sniffer", Enemies.FRIENDLY, "SNIFFER"),
|
||||
ARMADILLO("Armadillo", Enemies.FRIENDLY, "ARMADILLO"),
|
||||
@@ -131,6 +142,8 @@ public enum Mob {
|
||||
NAUTILUS("Nautilus", Enemies.NEUTRAL, "NAUTILUS"),
|
||||
ZOMBIE_NAUTILUS("ZombieNautilus", Enemies.NEUTRAL, "ZOMBIE_NAUTILUS"),
|
||||
PARCHED("Parched", Enemies.ENEMY, "PARCHED"),
|
||||
SULFUR_CUBE("SulfurCube", Enemies.FRIENDLY, "SULFUR_CUBE"),
|
||||
CUSHION("Cushion", Enemies.FRIENDLY, "CUSHION")
|
||||
;
|
||||
|
||||
private static final Map<String, Mob> hashMap = new HashMap<>();
|
||||
|
||||
@@ -88,6 +88,7 @@ public final class MobCompat {
|
||||
public static final EntityType END_CRYSTAL = getEntityType("END_CRYSTAL", "ENDER_CRYSTAL");
|
||||
public static final EntityType FIREWORK_ROCKET = getEntityType("FIREWORK_ROCKET", "FIREWORK");
|
||||
public static final EntityType OAK_BOAT = getEntityType("BOAT", "OAK_BOAT");
|
||||
public static final EntityType OAK_CHEST_BOAT = getEntityType("CHEST_BOAT", "OAK_CHEST_BOAT");
|
||||
|
||||
private MobCompat() {
|
||||
}
|
||||
@@ -409,6 +410,7 @@ public final class MobCompat {
|
||||
OAK("GENERIC", "OAK"),
|
||||
SPRUCE("REDWOOD", "SPRUCE"),
|
||||
MANGROVE("GENERIC", "MANGROVE"),
|
||||
POPLAR("GENERIC", "POPLAR"),
|
||||
;
|
||||
|
||||
private final String treeSpecies;
|
||||
|
||||
@@ -55,8 +55,8 @@ public enum MobData {
|
||||
BABY_VILLAGER("child", EntityType.VILLAGER, Data.BABY, false),
|
||||
TAMED_TAMEABLE("tamed", Tameable.class, Data.TAMED, true),
|
||||
TAME_TAMEABLE("tame", Tameable.class, Data.TAMED, false),
|
||||
RANDOM_SHEEP("random", EntityType.SHEEP, Data.COLORABLE, true),
|
||||
COLORABLE_SHEEP("", Arrays.stream(DyeColor.values()).map(color -> color.name().toLowerCase(Locale.ENGLISH)).collect(Collectors.toList()), EntityType.SHEEP, Data.COLORABLE, true),
|
||||
RANDOM_COLORABLE("random", Colorable.class, Data.COLORABLE, true),
|
||||
COLORABLE("", Arrays.stream(DyeColor.values()).map(color -> color.name().toLowerCase(Locale.ENGLISH)).collect(Collectors.toList()), Colorable.class, Data.COLORABLE, true),
|
||||
POLKA_HORSE("polka", EntityType.HORSE, Horse.Style.BLACK_DOTS, true),
|
||||
SOOTY_HORSE("sooty", EntityType.HORSE, Horse.Style.BLACK_DOTS, false),
|
||||
BLAZE_HORSE("blaze", EntityType.HORSE, Horse.Style.WHITE, true),
|
||||
@@ -181,8 +181,6 @@ public enum MobData {
|
||||
WHITE_TRADER_LLAMA("white", MobCompat.TRADER_LLAMA, "llama:WHITE", true),
|
||||
BROWN_TRADER_LLAMA("brown", MobCompat.TRADER_LLAMA, "llama:BROWN", true),
|
||||
GRAY_TRADER_LLAMA("gray", MobCompat.TRADER_LLAMA, "llama:GRAY", true),
|
||||
RANDOM_SHULKER("random", MobCompat.SHULKER, Data.COLORABLE, true),
|
||||
COLORABLE_SHULKER("", Arrays.stream(DyeColor.values()).map(color -> color.name().toLowerCase(Locale.ENGLISH)).collect(Collectors.toList()), MobCompat.SHULKER, Data.COLORABLE, true),
|
||||
RED_FOX("red", MobCompat.FOX, "fox:RED", true),
|
||||
SNOW_FOX("snow", MobCompat.FOX, "fox:SNOW", true),
|
||||
SIZE_PHANTOM("", Collections.singletonList("<1-100>"), MobCompat.PHANTOM, Data.SIZE, true),
|
||||
@@ -208,12 +206,13 @@ public enum MobData {
|
||||
JUNGLE_BOAT("jungle", Boat.class, MobCompat.BoatVariant.JUNGLE, true),
|
||||
REDWOOD_BOAT("redwood", Boat.class, MobCompat.BoatVariant.REDWOOD, true),
|
||||
MANGROVE_BOAT("mangrove", Boat.class, MobCompat.BoatVariant.MANGROVE, true),
|
||||
POPLAR_BOAT("poplar", Boat.class, MobCompat.BoatVariant.POPLAR, true),
|
||||
OAK_BOAT("oak", Boat.class, MobCompat.BoatVariant.OAK, true),
|
||||
SPRUCE_BOAT("spruce", Boat.class, MobCompat.BoatVariant.SPRUCE, true),
|
||||
SADDLE_CAMEL("saddle", MobCompat.CAMEL, Data.CAMELSADDLE, true),
|
||||
PALE_WOLF("pale", EntityType.WOLF, "wolf:PALE", true),
|
||||
SPOTTED_WOLF("spotted", EntityType.WOLF, "wolf:PALE", true),
|
||||
SNOWY_WOLF("snowy", EntityType.WOLF, "wolf:PALE", true),
|
||||
SPOTTED_WOLF("spotted", EntityType.WOLF, "wolf:SPOTTED", true),
|
||||
SNOWY_WOLF("snowy", EntityType.WOLF, "wolf:SNOWY", true),
|
||||
BLACK_WOLF("black", EntityType.WOLF, "wolf:BLACK", true),
|
||||
ASHEN_WOLF("ashen", EntityType.WOLF, "wolf:ASHEN", true),
|
||||
RUSTY_WOLF("rusty", EntityType.WOLF, "wolf:RUSTY", true),
|
||||
|
||||
@@ -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;
|
||||
@@ -296,6 +297,11 @@ public class Settings implements net.ess3.api.ISettings {
|
||||
return config.getBoolean("force-safe-teleport-location", false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isConsiderWorldHeightForTeleportSafety() {
|
||||
return config.getBoolean("consider-world-height-for-teleport-safety", false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTeleportPassengerDismount() {
|
||||
return config.getBoolean("teleport-passenger-dismount", true);
|
||||
@@ -508,11 +514,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);
|
||||
@@ -886,6 +901,7 @@ public class Settings implements net.ess3.api.ISettings {
|
||||
}
|
||||
|
||||
nicknamePrefix = _getNicknamePrefix();
|
||||
resetNickOnNameChange = _resetNickOnNameChange();
|
||||
operatorColor = _getOperatorColor();
|
||||
changePlayerListName = _changePlayerListName();
|
||||
configDebug = _isDebug();
|
||||
@@ -1320,6 +1336,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;
|
||||
|
||||
@@ -32,6 +32,10 @@ public final class SpawnMob {
|
||||
|
||||
private static final Material GOLDEN_HELMET = EnumUtil.getMaterial("GOLDEN_HELMET", "GOLD_HELMET");
|
||||
private static final Material GOLDEN_CHESTPLATE = EnumUtil.getMaterial("GOLDEN_CHESTPLATE", "GOLD_CHESTPLATE");
|
||||
private static final Material COPPER_HELMET = EnumUtil.getMaterial("COPPER_HELMET");
|
||||
private static final Material COPPER_CHESTPLATE = EnumUtil.getMaterial("COPPER_CHESTPLATE");
|
||||
private static final Material COPPER_LEGGINGS = EnumUtil.getMaterial("COPPER_LEGGINGS");
|
||||
private static final Material COPPER_BOOTS = EnumUtil.getMaterial("COPPER_BOOTS");
|
||||
private static final Material GOLDEN_LEGGINGS = EnumUtil.getMaterial("GOLDEN_LEGGINGS", "GOLD_LEGGINGS");
|
||||
private static final Material GOLDEN_BOOTS = EnumUtil.getMaterial("GOLDEN_BOOTS", "GOLD_BOOTS");
|
||||
private static final Material GOLDEN_SWORD = EnumUtil.getMaterial("GOLDEN_SWORD", "GOLD_SWORD");
|
||||
@@ -210,6 +214,11 @@ public final class SpawnMob {
|
||||
invent.setLeggings(new ItemStack(Material.NETHERITE_LEGGINGS, 1));
|
||||
invent.setChestplate(new ItemStack(Material.NETHERITE_CHESTPLATE, 1));
|
||||
invent.setHelmet(new ItemStack(Material.NETHERITE_HELMET, 1));
|
||||
} else if (inputData.contains("copper") && COPPER_HELMET != null) {
|
||||
invent.setBoots(new ItemStack(COPPER_BOOTS, 1));
|
||||
invent.setLeggings(new ItemStack(COPPER_LEGGINGS, 1));
|
||||
invent.setChestplate(new ItemStack(COPPER_CHESTPLATE, 1));
|
||||
invent.setHelmet(new ItemStack(COPPER_HELMET, 1));
|
||||
} else if (inputData.contains("diamond")) {
|
||||
invent.setBoots(new ItemStack(Material.DIAMOND_BOOTS, 1));
|
||||
invent.setLeggings(new ItemStack(Material.DIAMOND_LEGGINGS, 1));
|
||||
|
||||
@@ -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());
|
||||
@@ -577,7 +617,8 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
|
||||
final BigDecimal value = _getMoney();
|
||||
final long elapsed = System.nanoTime() - start;
|
||||
if (elapsed > ess.getSettings().getEconomyLagWarning()) {
|
||||
ess.getLogger().log(Level.INFO, "Lag Notice - Slow Economy Response - Request took over {0}ms!", elapsed / 1000000.0);
|
||||
ess.getLogger().log(Level.INFO, String.format(Locale.ROOT,
|
||||
"Lag Notice - Slow Economy Response - Request took over %.3fms!", elapsed / 1_000_000.0));
|
||||
}
|
||||
return value;
|
||||
}
|
||||
@@ -782,6 +823,24 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
|
||||
return false;
|
||||
}
|
||||
|
||||
// Notifies this (muted) user that they have been silenced, including the reason and remaining time if applicable.
|
||||
public void notifyMuted() {
|
||||
final String dateDiff = getMuteTimeout() > 0 ? DateUtil.formatDateDiff(getMuteTimeout()) : null;
|
||||
if (dateDiff == null) {
|
||||
if (hasMuteReason()) {
|
||||
sendTl("voiceSilencedReason", getMuteReason());
|
||||
} else {
|
||||
sendTl("voiceSilenced");
|
||||
}
|
||||
} else {
|
||||
if (hasMuteReason()) {
|
||||
sendTl("voiceSilencedReasonTime", dateDiff, getMuteReason());
|
||||
} else {
|
||||
sendTl("voiceSilencedTime", dateDiff);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getLastActivityTime() {
|
||||
return this.lastActivity;
|
||||
@@ -847,7 +906,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 +922,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();
|
||||
|
||||
@@ -42,7 +42,9 @@ public abstract class UserData extends PlayerExtension implements IConf {
|
||||
super(base);
|
||||
this.ess = (Essentials) ess;
|
||||
final File folder = new File(ess.getDataFolder(), "userdata");
|
||||
if (!folder.exists() && !folder.mkdirs()) {
|
||||
// mkdirs() may return false if another thread created the folder concurrently,
|
||||
// so fall back to checking whether the directory now exists to avoid a race.
|
||||
if (!folder.isDirectory() && !folder.mkdirs() && !folder.isDirectory()) {
|
||||
throw new RuntimeException("Unable to create userdata folder!");
|
||||
}
|
||||
|
||||
@@ -469,6 +471,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();
|
||||
}
|
||||
|
||||
+8
-2
@@ -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();
|
||||
}
|
||||
@@ -75,7 +76,7 @@ public class SpigotAdventureFacet implements AdventureFacet {
|
||||
|
||||
@Override
|
||||
public String legacyToMini(String message) {
|
||||
return legacyToMini(message, true);
|
||||
return legacyToMini(message, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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])) {
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
+5
-1
@@ -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
|
||||
|
||||
@@ -12,7 +12,8 @@ public class Commanddisposal extends EssentialsCommand {
|
||||
@Override
|
||||
protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
|
||||
user.sendTl("openingDisposal");
|
||||
user.getBase().openInventory(ess.getServer().createInventory(user.getBase(), 36, user.playerTl("disposal")));
|
||||
final String title = ess.getAdventureFacet().miniToLegacy(user.playerTl("disposal"));
|
||||
user.getBase().openInventory(ess.getServer().createInventory(user.getBase(), 36, title));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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());
|
||||
|
||||
@@ -147,15 +147,21 @@ public class Commandexp extends EssentialsLoopCommand {
|
||||
}
|
||||
return options;
|
||||
} else if (args.length == 2) {
|
||||
if ((args[0].equalsIgnoreCase("set") && user.isAuthorized("essentials.exp.set")) || (args[0].equalsIgnoreCase("give") && user.isAuthorized("essentials.exp.give")) || (args[0].equalsIgnoreCase("take") && user.isAuthorized("essentials.exp.take"))) {
|
||||
final ExpCommands cmd;
|
||||
try {
|
||||
cmd = ExpCommands.valueOf(args[0].toUpperCase(Locale.ENGLISH));
|
||||
} catch (final IllegalArgumentException e) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
if (cmd.hasOtherPermission(user)) {
|
||||
return getPlayers(user);
|
||||
}
|
||||
if (cmd.hasPermission(user) && cmd != ExpCommands.SHOW && cmd != ExpCommands.RESET) {
|
||||
final String levellessArg = args[1].toLowerCase(Locale.ENGLISH).replaceAll("l", "");
|
||||
if (NumberUtil.isInt(levellessArg)) {
|
||||
return Lists.newArrayList(levellessArg + "l");
|
||||
}
|
||||
}
|
||||
if (user.isAuthorized("essentials.exp.others")) {
|
||||
return getPlayers(user);
|
||||
}
|
||||
} else if (args.length == 3 && !(args[0].equalsIgnoreCase("show") || args[0].equalsIgnoreCase("reset"))) {
|
||||
final String levellessArg = args[2].toLowerCase(Locale.ENGLISH).replaceAll("l", "");
|
||||
if (NumberUtil.isInt(levellessArg)) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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};
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -4,9 +4,7 @@ import com.earth2me.essentials.CommandSource;
|
||||
import com.earth2me.essentials.Console;
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.messaging.IMessageRecipient;
|
||||
import com.earth2me.essentials.utils.DateUtil;
|
||||
import com.earth2me.essentials.utils.FormatUtil;
|
||||
import net.ess3.api.TranslatableException;
|
||||
import org.bukkit.Server;
|
||||
|
||||
import java.util.Collections;
|
||||
@@ -27,20 +25,15 @@ public class Commandmsg extends EssentialsLoopCommand {
|
||||
final boolean canWildcard = sender.isAuthorized("essentials.msg.multiple");
|
||||
if (sender.isPlayer()) {
|
||||
final User user = ess.getUser(sender.getPlayer());
|
||||
if (user.isMuted()) {
|
||||
final String dateDiff = user.getMuteTimeout() > 0 ? DateUtil.formatDateDiff(user.getMuteTimeout()) : null;
|
||||
if (dateDiff == null) {
|
||||
throw new TranslatableException(user.hasMuteReason() ? "voiceSilencedReason" : "voiceSilenced", user.getMuteReason());
|
||||
}
|
||||
throw new TranslatableException(user.hasMuteReason() ? "voiceSilencedReasonTime" : "voiceSilencedTime", dateDiff, user.getMuteReason());
|
||||
}
|
||||
// Muted players are handled in SimpleMessageRecipient#sendMessage so that the message can still
|
||||
// be shown to social spies before being dropped instead of being delivered to the recipient.
|
||||
message = FormatUtil.formatMessage(user, "essentials.msg", message);
|
||||
} else {
|
||||
message = FormatUtil.replaceFormat(message);
|
||||
}
|
||||
|
||||
// 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()});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ import com.earth2me.essentials.CommandSource;
|
||||
import com.earth2me.essentials.Console;
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.messaging.IMessageRecipient;
|
||||
import com.earth2me.essentials.utils.DateUtil;
|
||||
import com.earth2me.essentials.utils.FormatUtil;
|
||||
import net.ess3.api.TranslatableException;
|
||||
import org.bukkit.Server;
|
||||
@@ -24,14 +23,8 @@ public class Commandr extends EssentialsCommand {
|
||||
final IMessageRecipient messageSender;
|
||||
if (sender.isPlayer()) {
|
||||
final User user = ess.getUser(sender.getPlayer());
|
||||
if (user.isMuted()) {
|
||||
final String dateDiff = user.getMuteTimeout() > 0 ? DateUtil.formatDateDiff(user.getMuteTimeout()) : null;
|
||||
if (dateDiff == null) {
|
||||
throw new TranslatableException(user.hasMuteReason() ? "voiceSilencedReason" : "voiceSilenced", user.getMuteReason());
|
||||
}
|
||||
throw new TranslatableException(user.hasMuteReason() ? "voiceSilencedReasonTime" : "voiceSilencedTime", dateDiff, user.getMuteReason());
|
||||
}
|
||||
|
||||
// Muted players are handled in SimpleMessageRecipient#sendMessage so that the message can still
|
||||
// be shown to social spies before being dropped instead of being delivered to the recipient.
|
||||
message = FormatUtil.formatMessage(user, "essentials.msg", message);
|
||||
messageSender = user;
|
||||
} else {
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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")) {
|
||||
|
||||
@@ -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,15 +22,16 @@ public class Commandthunder extends EssentialsCommand {
|
||||
|
||||
final World world = user.getWorld();
|
||||
final boolean setThunder = args[0].equalsIgnoreCase("true");
|
||||
|
||||
if (args.length == 1) {
|
||||
world.setThundering(setThunder);
|
||||
user.sendTl("thunder", setThunder ? user.playerTl("enabled") : user.playerTl("disabled"));
|
||||
user.sendTl("thunder", CommonPlaceholders.enableDisable(user.getSource(), setThunder));
|
||||
return;
|
||||
}
|
||||
|
||||
world.setThundering(setThunder);
|
||||
world.setThunderDuration(Integer.parseInt(args[1]) * 20);
|
||||
user.sendTl("thunderDuration", setThunder ? user.playerTl("enabled") : user.playerTl("disabled"), Integer.parseInt(args[1]));
|
||||
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;
|
||||
@@ -82,11 +85,26 @@ public class Commandtime extends EssentialsCommand {
|
||||
|
||||
final StringJoiner joiner = new StringJoiner(", ");
|
||||
for (final World world : worlds) {
|
||||
// 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());
|
||||
}
|
||||
}
|
||||
|
||||
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());
|
||||
}
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ public class Commandtp extends EssentialsCommand {
|
||||
throw new NotEnoughArgumentsException(user.playerTl("teleportInvalidLocation"));
|
||||
}
|
||||
final Location locpos = new Location(user.getWorld(), x2, y2, z2, user.getLocation().getYaw(), user.getLocation().getPitch());
|
||||
user.getAsyncTeleport().now(locpos, false, TeleportCause.COMMAND, future);
|
||||
user.getAsyncTeleport().now(locpos, true, TeleportCause.COMMAND, future);
|
||||
future.thenAccept(success -> {
|
||||
if (success) {
|
||||
user.sendTl("teleporting", locpos.getWorld().getName(), locpos.getBlockX(), locpos.getBlockY(), locpos.getBlockZ());
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
+1
-1
@@ -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() {
|
||||
|
||||
@@ -122,7 +122,12 @@ public interface IMessageRecipient extends MailSender {
|
||||
/**
|
||||
* States that the message was <b>NOT</b> received as a result of the message pre-send event being cancelled.
|
||||
*/
|
||||
EVENT_CANCELLED;
|
||||
EVENT_CANCELLED,
|
||||
/**
|
||||
* States that the message was <b>NOT</b> delivered as a result of the sender being muted. The message may
|
||||
* still have been shown to social spies.
|
||||
*/
|
||||
SENDER_MUTED;
|
||||
|
||||
/**
|
||||
* Returns whether this response is a success. In other words equal to {@link #SUCCESS} or {@link #SUCCESS_BUT_AFK}
|
||||
|
||||
+52
-23
@@ -91,6 +91,18 @@ public class SimpleMessageRecipient implements IMessageRecipient {
|
||||
}
|
||||
|
||||
message = preSendEvent.getMessage();
|
||||
|
||||
final User senderUser = getUser(this);
|
||||
// A muted player must not have their message delivered to the recipient. However, social spies
|
||||
// may still observe the attempted message (see the socialspy-listen-muted-players setting).
|
||||
// Note: PrivateMessageSentEvent is intentionally not fired here so the message is not relayed
|
||||
// elsewhere (e.g. to Discord) as though it had actually been delivered.
|
||||
if (senderUser != null && senderUser.isMuted()) {
|
||||
sendSocialSpy(recipient, message, true);
|
||||
senderUser.notifyMuted();
|
||||
return MessageResponse.SENDER_MUTED;
|
||||
}
|
||||
|
||||
final MessageResponse messageResponse = recipient.onReceiveMessage(this.parent, message);
|
||||
switch (messageResponse) {
|
||||
case UNREACHABLE:
|
||||
@@ -114,29 +126,7 @@ public class SimpleMessageRecipient implements IMessageRecipient {
|
||||
sendTl("msgFormat", AdventureUtil.parsed(tlSender("meSender")), recipient.getDisplayName(), message);
|
||||
|
||||
// Better Social Spy
|
||||
if (ess.getSettings().isSocialSpyMessages()) {
|
||||
final User senderUser = getUser(this);
|
||||
final User recipientUser = getUser(recipient);
|
||||
if (senderUser != null // not null if player.
|
||||
// Dont spy on chats involving socialspy exempt players
|
||||
&& !senderUser.isAuthorized("essentials.chat.spy.exempt")
|
||||
&& recipientUser != null && !recipientUser.isAuthorized("essentials.chat.spy.exempt")) {
|
||||
final String senderName = ess.getSettings().isSocialSpyDisplayNames() ? getDisplayName() : getName();
|
||||
final String recipientName = ess.getSettings().isSocialSpyDisplayNames() ? recipient.getDisplayName() : recipient.getName();
|
||||
for (final User onlineUser : ess.getOnlineUsers()) {
|
||||
if (onlineUser.isSocialSpyEnabled()
|
||||
// Don't send socialspy messages to message sender/receiver to prevent spam
|
||||
&& !onlineUser.equals(senderUser)
|
||||
&& !onlineUser.equals(recipient)) {
|
||||
if (senderUser.isMuted() && ess.getSettings().getSocialSpyListenMutedPlayers()) {
|
||||
onlineUser.sendComponent(ess.getAdventureFacet().deserializeMiniMessage(tlSender("socialSpyMutedPrefix") + tlLiteral("socialSpyMsgFormat", senderName, recipientName, message)));
|
||||
} else {
|
||||
onlineUser.sendComponent(ess.getAdventureFacet().deserializeMiniMessage(tlLiteral("socialSpyPrefix") + tlLiteral("socialSpyMsgFormat", senderName, recipientName, message)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
sendSocialSpy(recipient, message, false);
|
||||
break;
|
||||
}
|
||||
// If the message was a success, set this sender's reply-recipient to the current recipient.
|
||||
@@ -150,6 +140,45 @@ public class SimpleMessageRecipient implements IMessageRecipient {
|
||||
return messageResponse;
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows a private message to all online social spies, unless either party is exempt from being spied on.
|
||||
*
|
||||
* @param recipient the recipient of the private message
|
||||
* @param message the message that was sent
|
||||
* @param muted whether the sender is muted; muted messages are only shown when
|
||||
* {@code socialspy-listen-muted-players} is enabled and use a distinct prefix
|
||||
*/
|
||||
private void sendSocialSpy(final IMessageRecipient recipient, final String message, final boolean muted) {
|
||||
if (!ess.getSettings().isSocialSpyMessages()) {
|
||||
return;
|
||||
}
|
||||
if (muted && !ess.getSettings().getSocialSpyListenMutedPlayers()) {
|
||||
return;
|
||||
}
|
||||
|
||||
final User senderUser = getUser(this);
|
||||
final User recipientUser = getUser(recipient);
|
||||
// Don't spy on chats involving socialspy exempt players.
|
||||
if (senderUser == null // not null if player.
|
||||
|| senderUser.isAuthorized("essentials.chat.spy.exempt")
|
||||
|| recipientUser == null
|
||||
|| recipientUser.isAuthorized("essentials.chat.spy.exempt")) {
|
||||
return;
|
||||
}
|
||||
|
||||
final String senderName = ess.getSettings().isSocialSpyDisplayNames() ? getDisplayName() : getName();
|
||||
final String recipientName = ess.getSettings().isSocialSpyDisplayNames() ? recipient.getDisplayName() : recipient.getName();
|
||||
final String prefix = muted ? tlSender("socialSpyMutedPrefix") : tlLiteral("socialSpyPrefix");
|
||||
for (final User onlineUser : ess.getOnlineUsers()) {
|
||||
if (onlineUser.isSocialSpyEnabled()
|
||||
// Don't send socialspy messages to message sender/receiver to prevent spam
|
||||
&& !onlineUser.equals(senderUser)
|
||||
&& !onlineUser.equals(recipient)) {
|
||||
onlineUser.sendComponent(ess.getAdventureFacet().deserializeMiniMessage(prefix + tlLiteral("socialSpyMsgFormat", senderName, recipientName, message)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public MessageResponse onReceiveMessage(final IMessageRecipient sender, final String message) {
|
||||
if (!isReachable()) {
|
||||
|
||||
@@ -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
|
||||
@@ -62,7 +93,13 @@ public class LuckPermsHandler extends ModernVaultHandler {
|
||||
|
||||
@Override
|
||||
public boolean isOfflinePermissionSet(UUID uuid, String node) {
|
||||
final net.luckperms.api.model.user.User user = this.luckPerms.getUserManager().loadUser(uuid).join();
|
||||
// Try to get the user from LuckPerms' cache first to avoid blocking the main
|
||||
// thread with a database lookup. In the context of a player join (e.g.
|
||||
// PlayerServerFullCheckEvent), the user should already be loaded.
|
||||
net.luckperms.api.model.user.User user = this.luckPerms.getUserManager().getUser(uuid);
|
||||
if (user == null) {
|
||||
user = this.luckPerms.getUserManager().loadUser(uuid).join();
|
||||
}
|
||||
if (user == null) {
|
||||
return false;
|
||||
}
|
||||
@@ -77,6 +114,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);
|
||||
}
|
||||
|
||||
@@ -21,10 +21,8 @@ public class SignDisposal extends EssentialsSign {
|
||||
|
||||
@Override
|
||||
protected boolean onSignInteract(final ISign sign, final User player, final String username, final IEssentials ess) {
|
||||
String title = (sign.getLine(1) + " " + sign.getLine(2) + " " + sign.getLine(3)).trim();
|
||||
if (title.isEmpty()) {
|
||||
title = player.playerTl("disposal");
|
||||
}
|
||||
final String customTitle = (sign.getLine(1) + " " + sign.getLine(2) + " " + sign.getLine(3)).trim();
|
||||
final String title = customTitle.isEmpty() ? ess.getAdventureFacet().miniToLegacy(player.playerTl("disposal")) : customTitle;
|
||||
player.getBase().openInventory(ess.getServer().createInventory(player.getBase(), 36, title));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -97,8 +97,9 @@ public class SignTrade extends EssentialsSign {
|
||||
stack = stack.clone();
|
||||
stack.setAmount(amount);
|
||||
final Trade store = new Trade(stack, ess);
|
||||
addAmount(sign, 2, store, ess, false);
|
||||
addAmount(sign, 2, store, ess, true);
|
||||
store.charge(player);
|
||||
addAmount(sign, 2, store, ess, false);
|
||||
return store;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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, " ")));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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", "_");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,6 +102,13 @@ public class ModernUserMap extends CacheLoader<UUID, User> implements IUserMap {
|
||||
|
||||
@Override
|
||||
public User getUser(final Player base) {
|
||||
final UUID uuid = base.getUniqueId();
|
||||
final User cachedUser = userCache.getIfPresent(uuid);
|
||||
if (cachedUser != null && cachedUser.getBase() == base) {
|
||||
uuidCache.updateCache(uuid, base.getName());
|
||||
return cachedUser;
|
||||
}
|
||||
|
||||
final User user = loadUncachedUser(base);
|
||||
userCache.put(user.getUUID(), user);
|
||||
debugLogCache(user);
|
||||
|
||||
@@ -167,6 +167,10 @@ public final class LocationUtil {
|
||||
return isBlockDamaging(world, x, y, z) || isBlockAboveAir(ess, world, x, y, z);
|
||||
}
|
||||
|
||||
private static boolean isBlockUnsafe(IEssentials ess, final World world, final int x, final int y, final int z, final int maxY) {
|
||||
return y >= maxY || isBlockUnsafe(ess, world, x, y, z);
|
||||
}
|
||||
|
||||
public static boolean isBlockDamaging(final World world, final int x, final int y, final int z) {
|
||||
final Material block = world.getBlockAt(x, y, z).getType();
|
||||
final Material below = world.getBlockAt(x, y - 1, z).getType();
|
||||
@@ -224,7 +228,9 @@ public final class LocationUtil {
|
||||
final World world = loc.getWorld();
|
||||
final int worldMinY = worldInfoProvider.getMinHeight(world);
|
||||
final int worldLogicalY = worldInfoProvider.getLogicalHeight(world);
|
||||
final int worldMaxY = loc.getBlockY() < worldLogicalY ? worldLogicalY : worldInfoProvider.getMaxHeight(world);
|
||||
final int worldMaxY = ess.getSettings().isConsiderWorldHeightForTeleportSafety() && loc.getBlockY() < worldLogicalY
|
||||
? worldLogicalY
|
||||
: worldInfoProvider.getMaxHeight(world);
|
||||
int x = loc.getBlockX();
|
||||
int y = (int) Math.round(loc.getY());
|
||||
int z = loc.getBlockZ();
|
||||
@@ -242,12 +248,12 @@ public final class LocationUtil {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isBlockUnsafe(ess, world, x, y, z)) {
|
||||
if (isBlockUnsafe(ess, world, x, y, z, worldMaxY)) {
|
||||
x = Math.round(loc.getX()) == origX ? x - 1 : x + 1;
|
||||
z = Math.round(loc.getZ()) == origZ ? z - 1 : z + 1;
|
||||
}
|
||||
int i = 0;
|
||||
while (isBlockUnsafe(ess, world, x, y, z)) {
|
||||
while (isBlockUnsafe(ess, world, x, y, z, worldMaxY)) {
|
||||
i++;
|
||||
if (i >= VOLUME.length) {
|
||||
x = origX;
|
||||
@@ -259,14 +265,14 @@ public final class LocationUtil {
|
||||
y = NumberUtil.constrainToRange(origY + VOLUME[i].y, worldMinY, worldMaxY);
|
||||
z = origZ + VOLUME[i].z;
|
||||
}
|
||||
while (isBlockUnsafe(ess, world, x, y, z)) {
|
||||
while (isBlockUnsafe(ess, world, x, y, z, worldMaxY)) {
|
||||
y += 1;
|
||||
if (y >= worldMaxY) {
|
||||
x += 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
while (isBlockUnsafe(ess, world, x, y, z)) {
|
||||
while (isBlockUnsafe(ess, world, x, y, z, worldMaxY)) {
|
||||
y -= 1;
|
||||
if (y <= worldMinY + 1) {
|
||||
x += 1;
|
||||
|
||||
@@ -52,7 +52,7 @@ public final class MaterialUtil {
|
||||
BEDS = EnumUtil.getAllMatching(Material.class, "BED", "BED_BLOCK", "WHITE_BED", "ORANGE_BED",
|
||||
"MAGENTA_BED", "LIGHT_BLUE_BED", "YELLOW_BED", "LIME_BED", "PINK_BED", "GRAY_BED",
|
||||
"LIGHT_GRAY_BED", "CYAN_BED", "PURPLE_BED", "BLUE_BED", "BROWN_BED", "GREEN_BED",
|
||||
"RED_BED", "BLACK_BED");
|
||||
"RED_BED", "BLACK_BED", "STRAW_BED");
|
||||
|
||||
BANNERS = EnumUtil.getAllMatching(Material.class, "BANNER", "WHITE_BANNER",
|
||||
"ORANGE_BANNER", "MAGENTA_BANNER", "LIGHT_BLUE_BANNER", "YELLOW_BANNER", "LIME_BANNER",
|
||||
@@ -86,7 +86,8 @@ public final class MaterialUtil {
|
||||
"OAK_SIGN", "SPRUCE_SIGN",
|
||||
"CRIMSON_SIGN", "WARPED_SIGN",
|
||||
"MANGROVE_SIGN", "CHERRY_SIGN",
|
||||
"BAMBOO_SIGN", "PALE_OAK_SIGN");
|
||||
"BAMBOO_SIGN", "PALE_OAK_SIGN",
|
||||
"POPLAR_SIGN");
|
||||
|
||||
WALL_SIGNS = EnumUtil.getAllMatching(Material.class, "WALL_SIGN",
|
||||
"ACACIA_WALL_SIGN", "BIRCH_WALL_SIGN",
|
||||
@@ -94,21 +95,24 @@ public final class MaterialUtil {
|
||||
"OAK_WALL_SIGN", "SPRUCE_WALL_SIGN",
|
||||
"CRIMSON_WALL_SIGN", "WARPED_WALL_SIGN",
|
||||
"MANGROVE_WALL_SIGN", "CHERRY_WALL_SIGN",
|
||||
"BAMBOO_WALL_SIGN", "PALE_OAK_WALL_SIGN");
|
||||
"BAMBOO_WALL_SIGN", "PALE_OAK_WALL_SIGN",
|
||||
"POPLAR_WALL_SIGN");
|
||||
|
||||
HANGING_SIGNS = EnumUtil.getAllMatching(Material.class, "ACACIA_HANGING_SIGN", "BIRCH_HANGING_SIGN",
|
||||
"DARK_OAK_HANGING_SIGN", "JUNGLE_HANGING_SIGN",
|
||||
"OAK_HANGING_SIGN", "SPRUCE_HANGING_SIGN",
|
||||
"CRIMSON_HANGING_SIGN", "WARPED_HANGING_SIGN",
|
||||
"MANGROVE_HANGING_SIGN", "CHERRY_HANGING_SIGN",
|
||||
"BAMBOO_HANGING_SIGN", "PALE_OAK_HANGING_SIGN");
|
||||
"BAMBOO_HANGING_SIGN", "PALE_OAK_HANGING_SIGN",
|
||||
"POPLAR_HANGING_SIGN");
|
||||
|
||||
HANGING_WALL_SIGNS = EnumUtil.getAllMatching(Material.class, "ACACIA_WALL_HANGING_SIGN", "BIRCH_WALL_HANGING_SIGN",
|
||||
"DARK_OAK_WALL_HANGING_SIGN", "JUNGLE_WALL_HANGING_SIGN",
|
||||
"OAK_WALL_HANGING_SIGN", "SPRUCE_WALL_HANGING_SIGN",
|
||||
"CRIMSON_WALL_HANGING_SIGN", "WARPED_WALL_HANGING_SIGN",
|
||||
"MANGROVE_WALL_HANGING_SIGN", "CHERRY_WALL_HANGING_SIGN",
|
||||
"BAMBOO_WALL_HANGING_SIGN", "PALE_OAK_WALL_HANGING_SIGN");
|
||||
"BAMBOO_WALL_HANGING_SIGN", "PALE_OAK_WALL_HANGING_SIGN",
|
||||
"POPLAR_WALL_HANGING_SIGN");
|
||||
}
|
||||
|
||||
private MaterialUtil() {
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.earth2me.essentials.utils;
|
||||
|
||||
import io.papermc.lib.environments.PaperEnvironment;
|
||||
import io.papermc.lib.features.asyncchunks.AsyncChunksPaper_15;
|
||||
import io.papermc.lib.features.asyncteleport.AsyncTeleportPaper_13;
|
||||
import io.papermc.lib.features.bedspawnlocation.BedSpawnLocationPaper;
|
||||
import io.papermc.lib.features.chunkisgenerated.ChunkIsGeneratedApiExists;
|
||||
|
||||
/**
|
||||
* A PaperLib environment for Paper servers whose version PaperLib cannot read.
|
||||
* <p>
|
||||
* PaperLib 1.0.6 expects a single digit major version in {@code Bukkit#getVersion()}, so it reads 26.x as version 0 and
|
||||
* selects its synchronous fallbacks for chunk loading, teleporting and bed lookups. All of those exist on every Paper
|
||||
* version that reports a year based version.
|
||||
*/
|
||||
public class ModernPaperEnvironment extends PaperEnvironment {
|
||||
public ModernPaperEnvironment() {
|
||||
asyncChunksHandler = new AsyncChunksPaper_15();
|
||||
asyncTeleportHandler = new AsyncTeleportPaper_13();
|
||||
isGeneratedHandler = new ChunkIsGeneratedApiExists();
|
||||
bedSpawnLocationHandler = new BedSpawnLocationPaper();
|
||||
}
|
||||
}
|
||||
@@ -16,12 +16,13 @@ import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
public final class PasteUtil {
|
||||
private static final String PASTE_URL = "https://pastes.dev/";
|
||||
private static final String PASTE_UPLOAD_URL = "https://api.pastes.dev/post";
|
||||
private static final ExecutorService PASTE_EXECUTOR_SERVICE = Executors.newSingleThreadExecutor();
|
||||
private static volatile ExecutorService PASTE_EXECUTOR_SERVICE = Executors.newSingleThreadExecutor();
|
||||
private static final Gson GSON = new Gson();
|
||||
|
||||
private PasteUtil() {
|
||||
@@ -35,7 +36,7 @@ public final class PasteUtil {
|
||||
*/
|
||||
public static CompletableFuture<PasteResult> createPaste(List<PasteFile> pages) {
|
||||
final CompletableFuture<PasteResult> future = new CompletableFuture<>();
|
||||
PASTE_EXECUTOR_SERVICE.submit(() -> {
|
||||
getExecutor().submit(() -> {
|
||||
try {
|
||||
final HttpURLConnection connection = (HttpURLConnection) new URL(PASTE_UPLOAD_URL).openConnection();
|
||||
connection.setRequestMethod("POST");
|
||||
@@ -81,6 +82,28 @@ public final class PasteUtil {
|
||||
return future;
|
||||
}
|
||||
|
||||
private static synchronized ExecutorService getExecutor() {
|
||||
if (PASTE_EXECUTOR_SERVICE == null || PASTE_EXECUTOR_SERVICE.isShutdown() || PASTE_EXECUTOR_SERVICE.isTerminated()) {
|
||||
PASTE_EXECUTOR_SERVICE = Executors.newSingleThreadExecutor();
|
||||
}
|
||||
return PASTE_EXECUTOR_SERVICE;
|
||||
}
|
||||
|
||||
public static synchronized void shutdownExecutor() {
|
||||
final ExecutorService exec = PASTE_EXECUTOR_SERVICE;
|
||||
if (exec == null) {
|
||||
return;
|
||||
}
|
||||
exec.shutdown();
|
||||
try {
|
||||
if (!exec.awaitTermination(5, TimeUnit.SECONDS)) {
|
||||
exec.shutdownNow();
|
||||
}
|
||||
} catch (final InterruptedException ignored) {
|
||||
exec.shutdownNow();
|
||||
}
|
||||
}
|
||||
|
||||
public static class PasteFile {
|
||||
private final String name;
|
||||
private final String contents;
|
||||
|
||||
@@ -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,14 +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");
|
||||
public static final BukkitVersion v26_2_R01 = BukkitVersion.fromString("26.2-R0.1-SNAPSHOT");
|
||||
public static final BukkitVersion v26_3_R01 = BukkitVersion.fromString("26.3-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, v26_2_R01, v26_3_R01);
|
||||
|
||||
public static final boolean PRE_FLATTENING = VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01);
|
||||
|
||||
@@ -175,7 +179,7 @@ public final class VersionUtil {
|
||||
}
|
||||
}
|
||||
|
||||
if (!supportedVersions.contains(getServerBukkitVersion())) {
|
||||
if (!isSupportedVersion(getServerBukkitVersion())) {
|
||||
return supportStatus = SupportStatus.OUTDATED;
|
||||
}
|
||||
|
||||
@@ -188,14 +192,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;
|
||||
|
||||
@@ -204,27 +233,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;
|
||||
@@ -237,11 +272,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));
|
||||
@@ -259,24 +294,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) {
|
||||
@@ -319,10 +359,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) {
|
||||
@@ -343,7 +410,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
|
||||
@@ -351,7 +420,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
|
||||
@@ -363,15 +432,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
|
||||
@@ -407,18 +492,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();
|
||||
|
||||
@@ -13,11 +13,13 @@ public class AsyncUserDataLoadEvent extends Event {
|
||||
|
||||
private final IUser user;
|
||||
private final String joinMessage;
|
||||
private final boolean firstJoin;
|
||||
|
||||
public AsyncUserDataLoadEvent(IUser user, String joinMessage) {
|
||||
public AsyncUserDataLoadEvent(IUser user, String joinMessage, boolean firstJoin) {
|
||||
super(true);
|
||||
this.user = user;
|
||||
this.joinMessage = joinMessage;
|
||||
this.firstJoin = firstJoin;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -34,6 +36,18 @@ public class AsyncUserDataLoadEvent extends Event {
|
||||
return joinMessage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether this is the first time EssentialsX has seen this player join.
|
||||
* <p>
|
||||
* This is determined from EssentialsX's own user data rather than {@link org.bukkit.OfflinePlayer#hasPlayedBefore()},
|
||||
* which is unreliable on modern server platforms that persist player data during the login/configuration phase.
|
||||
*
|
||||
* @return {@code true} if this is the player's first recorded join, otherwise {@code false}.
|
||||
*/
|
||||
public boolean isFirstJoin() {
|
||||
return firstJoin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return handlers;
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
@@ -95,6 +99,10 @@ force-disable-teleport-safety: false
|
||||
# safe location. If you'd like players to be teleported to a safe location all of the time, set this option to true.
|
||||
force-safe-teleport-location: false
|
||||
|
||||
# When teleporting to an unsafe location, should Essentials consider the world's logical height when finding a safe destination?
|
||||
# This prevents safety checks from moving players above the Nether roof unless the requested destination is already above it.
|
||||
consider-world-height-for-teleport-safety: true
|
||||
|
||||
# Consider water blocks as "safe", therefore allowing players to teleport
|
||||
# using commands such as /home or /spawn to a location that is occupied by water blocks.
|
||||
is-water-safe: false
|
||||
@@ -491,7 +499,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 +535,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 +908,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
|
||||
|
||||
@@ -1138,6 +1149,70 @@ protect:
|
||||
witch: false
|
||||
horse: false
|
||||
phantom: false
|
||||
zombified_piglin: false
|
||||
mooshroom: false
|
||||
snow_golem: false
|
||||
rabbit: false
|
||||
guardian: false
|
||||
elder_guardian: false
|
||||
endermite: false
|
||||
shulker: false
|
||||
polar_bear: false
|
||||
stray: false
|
||||
husk: false
|
||||
wither_skeleton: false
|
||||
zombie_villager: false
|
||||
skeleton_horse: false
|
||||
zombie_horse: false
|
||||
donkey: false
|
||||
mule: false
|
||||
llama: false
|
||||
evoker: false
|
||||
vex: false
|
||||
vindicator: false
|
||||
illusioner: false
|
||||
parrot: false
|
||||
turtle: false
|
||||
cod: false
|
||||
salmon: false
|
||||
pufferfish: false
|
||||
tropical_fish: false
|
||||
dolphin: false
|
||||
drowned: false
|
||||
cat: false
|
||||
fox: false
|
||||
panda: false
|
||||
pillager: false
|
||||
ravager: false
|
||||
trader_llama: false
|
||||
wandering_trader: false
|
||||
bee: false
|
||||
hoglin: false
|
||||
piglin: false
|
||||
piglin_brute: false
|
||||
strider: false
|
||||
zoglin: false
|
||||
axolotl: false
|
||||
glow_squid: false
|
||||
goat: false
|
||||
allay: false
|
||||
frog: false
|
||||
tadpole: false
|
||||
warden: false
|
||||
camel: false
|
||||
sniffer: false
|
||||
armadillo: false
|
||||
bogged: false
|
||||
breeze: false
|
||||
creaking: false
|
||||
happy_ghast: false
|
||||
copper_golem: false
|
||||
camel_husk: false
|
||||
nautilus: false
|
||||
zombie_nautilus: false
|
||||
parched: false
|
||||
sulfur_cube: false
|
||||
cushion: false
|
||||
|
||||
# The maximum height a creeper can explode. -1 allows them to explode everywhere.
|
||||
# Set 'creeper-explosion' above to true if you want to disable creeper explosions completely.
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -10,7 +10,7 @@ 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\:
|
||||
alertFormat=<dark_aqua>[{0}] <reset> {1} <primary> {2} at\: {3}
|
||||
alertFormat=<dark_aqua>[{0}] <reset>{1} <primary>{2} at\: {3}
|
||||
alertPlaced=placed\:
|
||||
alertUsed=used\:
|
||||
alphaNames=<dark_red>Player names can only contain letters, numbers and underscores.
|
||||
@@ -375,9 +375,9 @@ expCommandUsage1Description=Gives the target player the specified amount of xp
|
||||
expCommandUsage2=/<command> set <playername> <amount>
|
||||
expCommandUsage2Description=Sets the target player's xp the specified amount
|
||||
expCommandUsage3=/<command> show <playername>
|
||||
expCommandUsage4Description=Displays the amount of xp the target player has
|
||||
expCommandUsage5=/<command> reset <playername>
|
||||
expCommandUsage5Description=Resets the target player's xp to 0
|
||||
expCommandUsage3Description=Displays the amount of xp the target player has
|
||||
expCommandUsage4=/<command> reset <playername>
|
||||
expCommandUsage4Description=Resets the target player's xp to 0
|
||||
expSet=<secondary>{0} <primary>now has<secondary> {1} <primary>exp.
|
||||
extCommandDescription=Extinguish players.
|
||||
extCommandUsage=/<command> [player]
|
||||
@@ -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.
|
||||
|
||||
@@ -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...]
|
||||
@@ -192,7 +193,7 @@ depthCommandUsage=/depth
|
||||
destinationNotSet=Дестинацията не е зададена\!
|
||||
disabled=изключен
|
||||
disabledToSpawnMob=<dark_red>Размножаването на това същество е изключено в конфигурационния файл.
|
||||
disableUnlimited=<primary>Изключихте безбройното слагане на <secondary> {0} <primary>за {1}.
|
||||
disableUnlimited=<primary>Изключихте безбройното слагане на <secondary>{0} <primary>за {1}.
|
||||
discordbroadcastCommandDescription=Изпраща съобщение до посочен канал в Дискорд.
|
||||
discordbroadcastCommandUsage=/<command> <channel> <msg>
|
||||
discordbroadcastCommandUsage1Description=Изпраща дадено съобщение до посочен канал в Дискорд
|
||||
@@ -271,9 +272,6 @@ expCommandUsage1Description=Дава на определен играч спец
|
||||
expCommandUsage2=/<command> set <playername> <amount>
|
||||
expCommandUsage2Description=Задава опита на определен играч до специфичен брой
|
||||
expCommandUsage3=/<command> show <playername>
|
||||
expCommandUsage4Description=Показва броя опит на определен играч
|
||||
expCommandUsage5=/<command> reset <playername>
|
||||
expCommandUsage5Description=Ресетва опита на определен играч на 0
|
||||
expSet=<secondary>{0} <primary>сега има<secondary> {1} <primary>опит.
|
||||
extCommandDescription=Изгасява играчи.
|
||||
extCommandUsage1Description=Угасете се (от огън) или друг специфичен играч
|
||||
@@ -675,8 +673,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 +761,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=Грешка при подновяването на файловете.
|
||||
|
||||
@@ -4,13 +4,12 @@ afkCommandDescription=Označava da ste trenutno odsutni.
|
||||
afkCommandUsage=/<command> [Igrač/poruka...]
|
||||
afkCommandUsage2=/<command> igrač [Igrač/poruka]
|
||||
alertBroke=slomio\:
|
||||
alertFormat=<dark_aqua>[{0}] <reset> {1} <primary> {2} u\: {3}
|
||||
alertPlaced=postavljen\:
|
||||
alertUsed=upotrebljen\:
|
||||
antiBuildBreak=<gray>Nemas dozvolu da unistavas<dark_aqua> {0} <gray>blokove ovdje.
|
||||
antiBuildCraft=<gray>Nemas dozvolu da stvoris<dark_aqua> {0}<gray>.
|
||||
antiBuildDrop=<dark_red>Nemate pravo da padne<secondary> {0}<dark_red>.
|
||||
antiBuildInteract=<dark_red>Nemate pravo da za interakciju sa <secondary> {0}<dark_red>.
|
||||
antiBuildInteract=<dark_red>Nemate pravo da za interakciju sa <secondary>{0}<dark_red>.
|
||||
antiBuildPlace=<dark_red>Nemate pravo da postavi<secondary> {0} <dark_red>ovde.
|
||||
antiBuildUse=<dark_red>Nemate pravo da koriste<secondary> {0}<dark_red>.
|
||||
anvilCommandDescription=Otvara nakovanj.
|
||||
@@ -32,12 +31,12 @@ bigTreeSuccess=<primary>Veliko stablo stvoreno.
|
||||
bookAuthorSet=<primary>Author knjige postavljen na {0}.
|
||||
bookLocked=<primary>Ova knjiga je sada zakljucana.
|
||||
bookTitleSet=<primary>Naslov knjige postavljen na {0}.
|
||||
burnMsg=<primary>Zapaslio si <secondary> {0} <primary>na<secondary> {1} sekundi<primary>.
|
||||
burnMsg=<primary>Zapaslio si <secondary>{0} <primary>na<secondary> {1} sekundi<primary>.
|
||||
cannotStackMob=Nemas dozvolu.
|
||||
canTalkAgain=<primary>Sada opet mozes razgovarati.
|
||||
cantFindGeoIpDB=Nije moguce pronaci GeoIP\!
|
||||
cantReadGeoIpDB=Nije uspjeo citanje GeoIP\!
|
||||
cantSpawnItem=Nemas dozvolu za stvaranje <secondary> {0}.
|
||||
cantSpawnItem=Nemas dozvolu za stvaranje <secondary>{0}.
|
||||
cleaned=Baza igraca ociescena.
|
||||
cleaning=Ciscenje baze igraca.
|
||||
commandFailed=Naredba {0} nije uspjela\:
|
||||
@@ -62,8 +61,8 @@ flyMode=&7Letenje je &3{0} &7za &3{1}&7.
|
||||
foreverAlone=<dark_red>Nemate nikoga kome možete odgovoriti.
|
||||
fullStack=<dark_red>Vec imas puni stack.
|
||||
gameMode=&6Postavjen gamemode &c {0} &6za &c{1}&6.
|
||||
gcfree=<primary>Slobodno memorije\: <secondary> {0} MB.
|
||||
gcmax=<primary>Max memorije\: <secondary> {0} MB.
|
||||
gcfree=<primary>Slobodno memorije\: <secondary>{0} MB.
|
||||
gcmax=<primary>Max memorije\: <secondary>{0} MB.
|
||||
gctotal=&7Memorija\: &3{0} &7MB.
|
||||
geoipJoinFormat=&7Igrac &3{0} &7dolazi iz &3{1}&7.
|
||||
geoIpUrlEmpty=GeoIP preuzimanje datoteka Url adresa je prazna.
|
||||
@@ -72,7 +71,7 @@ godDisabledFor=<secondary>iskljucen<primary> za<secondary> {0}
|
||||
godEnabledFor=<green>ukljuceno<primary> za<secondary> {0}
|
||||
godMode=&7GodMode &3{0}&7.
|
||||
groupDoesNotExist=<dark_red>Nitko nije online u ovoj grupi\!
|
||||
groupNumber=<secondary>{0}<white> online, za cijeli popis\: <secondary> /{1} {2}
|
||||
groupNumber=<secondary>{0}<white> online, za cijeli popis\: <secondary>/{1} {2}
|
||||
hatArmor=<dark_red>Ne mozete koristiti ovaj item kao sesir\!
|
||||
hatEmpty=<dark_red>Trenutno ne nosis kapu.
|
||||
hatFail=<dark_red>Moras nesto nositi u ruci.
|
||||
@@ -205,7 +204,7 @@ warpSet=&7Warp &3{0} &7je postavljen.
|
||||
warpUsePermission=&7Nemas dozvolu za koristenje ovog warpa.
|
||||
weatherStorm=&7Stavio si vrijeme od &3oluje &7u &3{0}&7.
|
||||
weatherSun=&7Stavio si vrijeme od &3sunca &7u &3{0}&7.
|
||||
whoisBanned=<primary> - Banovan\: <reset> {0}
|
||||
whoisBanned=<primary> - Banovan\: <reset>{0}
|
||||
whoisFly=&7 - Nacin letenja\:&3 {0} ({1})
|
||||
whoisGeoLocation=&7Lokacija\: &3 {0}
|
||||
whoisHealth=&7 - Zdravlje\: &3 {0}/20
|
||||
|
||||
@@ -10,23 +10,23 @@ afkCommandUsage1Description=Přepíná tvůj stav, zda jsi mimo počítač (AFK)
|
||||
afkCommandUsage2=/<command> <hráč> [zpráva]
|
||||
afkCommandUsage2Description=Přepíná hráčův stav, zda je mimo počítač (afk), s volitelným důvodem
|
||||
alertBroke=zničeno\:
|
||||
alertFormat=<dark_aqua>[{0}] <reset> {1} <primary> {2} na\: {3}
|
||||
alertFormat=Hráč <dark_aqua>[{0}] <reset>{1} <primary>{2} na\: {3}
|
||||
alertPlaced=položeno\:
|
||||
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]]
|
||||
@@ -114,7 +115,7 @@ burnCommandDescription=Sešle na hráče oheň.
|
||||
burnCommandUsage=/<command> <hráč> [počet_sekund]
|
||||
burnCommandUsage1=/<command> <player> <seconds>
|
||||
burnCommandUsage1Description=Zapálí zadaného hráče na zadaný počet sekund
|
||||
burnMsg=<primary>Zapálil jsi hráče<secondary> {0} <primary>na <secondary> {1} sekund<primary>.
|
||||
burnMsg=<primary>Zapálil jsi hráče<secondary> {0} <primary>na <secondary>{1} sekund<primary>.
|
||||
cannotSellNamedItem=<primary>Nemáš oprávnění prodávat pojmenované předměty.
|
||||
cannotSellTheseNamedItems=<primary>Nemáš oprávnění prodávat tyto pojmenované předměty\: <dark_red>{0}
|
||||
cannotStackMob=<dark_red>Nemáš oprávnění stohovat více stvoření.
|
||||
@@ -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.
|
||||
@@ -365,7 +367,7 @@ essentialsCommandUsage8Description=Vygeneruje výpis serveru s požadovanými in
|
||||
essentialsHelp1=Soubor je poškozen a Essentials jej nemůže otevřít. Essentials byl vypnut. Pokud nedokážete soubor opravit sami, navštivte http\://tiny.cc/EssentialsChat
|
||||
essentialsHelp2=Soubor je poškozen a Essentials jej nemůže otevřít. Essentials byl vypnut. Pokud nedokážete soubor opravit sami, napište ve hře /essentialshelp nebo navštivte http\://tiny.cc/EssentialsChat
|
||||
essentialsReload=<primary>Essentials byl znovu načten<secondary> {0}.
|
||||
exp=<secondary>{0} <primary>má<secondary> {1} <primary>zkušeností (úroveň<secondary> {2}<primary>) a potřebuje ještě<secondary> {3} <primary> zkušeností na další úroveň.
|
||||
exp=<secondary>{0} <primary>má<secondary> {1} <primary>zkušeností (úroveň<secondary> {2}<primary>) a potřebuje ještě<secondary> {3} <primary>zkušeností na další úroveň.
|
||||
expCommandDescription=Přidává, nastavuje, obnovuje nebo zobrazuje hráčovy zkušenosti.
|
||||
expCommandUsage=/<command> [reset|show|set|give] [jméno_hráče [množství]]
|
||||
expCommandUsage1=/<command> give <player> <amount>
|
||||
@@ -373,9 +375,9 @@ expCommandUsage1Description=Dá zadanému hráči uvedené množství zkušenost
|
||||
expCommandUsage2=/<command> set <název_hráče> <množství>
|
||||
expCommandUsage2Description=Nastaví danému hráči uvedené množství zkušeností
|
||||
expCommandUsage3=/<command> show <hráč>
|
||||
expCommandUsage4Description=Zobrazí počet zkušeností daného hráče
|
||||
expCommandUsage5=/<command> reset <hráč>
|
||||
expCommandUsage5Description=Vynuluje zkušenosti daného hráče
|
||||
expCommandUsage3Description=Zobrazí počet zkušeností daného hráče
|
||||
expCommandUsage4=/<command> reset <hráč>
|
||||
expCommandUsage4Description=Vynuluje zkušenosti daného hráče
|
||||
expSet=<secondary>{0} <primary>má nyní<secondary> {1} <primary>zkušeností.
|
||||
extCommandDescription=Uhasit hráče.
|
||||
extCommandUsage=/<command> [hráč]
|
||||
@@ -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,8 @@ 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áčů.
|
||||
jailedplayersCommandUsage=/<command>
|
||||
jailsCommandDescription=Vypíše seznam všech vězení.
|
||||
jailsCommandUsage=/<command>
|
||||
jumpCommandDescription=Skočí na nejbližší blok ve směru pohledu.
|
||||
@@ -791,7 +797,7 @@ msgDisabledFor=<primary>Přijímání zpráv <secondary>vypnuto <primary>pro <se
|
||||
msgEnabled=<primary>Přijímání zpráv <secondary>povoleno<primary>.
|
||||
msgEnabledFor=<primary>Přijímání zpráv <secondary>zapnuto <primary>pro <secondary>{0}<primary>.
|
||||
msgFormat=<primary>[<secondary>{0}<primary> -> <secondary>{1}<primary>] <reset>{2}
|
||||
msgIgnore=<dark_red>Hráč <secondary>{0} <dark_red> má zprávy vypnuty.
|
||||
msgIgnore=<dark_red>Hráč <secondary>{0} <dark_red>má zprávy vypnuty.
|
||||
msgtoggleCommandDescription=Blokuje příjem všech soukromých zpráv.
|
||||
msgtoggleCommandUsage=/<command> [hráč] [on|off]
|
||||
msgtoggleCommandUsage1=/<command> [hráč]
|
||||
@@ -906,6 +912,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 +998,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 +1137,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>.
|
||||
@@ -1172,9 +1183,9 @@ setworthCommandUsage2=/<command> <jméno předmětu> <cena>
|
||||
setworthCommandUsage2Description=Nastaví hodnotu určitého předmětu na danou cenu
|
||||
sheepMalformedColor=<dark_red>Neplatná barva.
|
||||
shoutDisabled=<primary>Hlučný mód <secondary>vypnut<primary>.
|
||||
shoutDisabledFor=<primary>Hlučný mód <secondary>vypnut <primary> pro hráče <secondary>{0}<primary>.
|
||||
shoutDisabledFor=<primary>Hlučný mód <secondary>vypnut <primary>pro hráče <secondary>{0}<primary>.
|
||||
shoutEnabled=<primary>Hlučný mód <secondary>zapnut<primary>.
|
||||
shoutEnabledFor=<primary>Hlučný mód <secondary>zapnut <primary> pro hráče <secondary>{0}<primary>.
|
||||
shoutEnabledFor=<primary>Hlučný mód <secondary>zapnut <primary>pro hráče <secondary>{0}<primary>.
|
||||
shoutFormat=<dark_red>[Zvolání]<reset> {0}
|
||||
editsignCommandClear=<primary>Cedule smazána.
|
||||
editsignCommandClearLine=<primary>Vymazán řádek<secondary> {0}<primary>.
|
||||
@@ -1226,13 +1237,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.
|
||||
@@ -1288,7 +1300,7 @@ teleportNoAcceptPermission=<secondary>{0} <dark_red>nemá oprávnění přijíma
|
||||
teleportRequest=<secondary>{0}<secondary> se chce teleportovat k tobě.
|
||||
teleportRequestAllCancelled=<primary>Všechny nevyřízené žádosti o teleportování byly zrušeny.
|
||||
teleportRequestCancelled=<primary>Tvá žádost o teleport k <secondary>{0}<primary> byla zrušena.
|
||||
teleportRequestSpecificCancelled=<primary>Nevyřízená žádost o teleport s hráčem <secondary>{0} <primary> byla zrušena.
|
||||
teleportRequestSpecificCancelled=<primary>Nevyřízená žádost o teleport s hráčem <secondary>{0} <primary>byla zrušena.
|
||||
teleportRequestTimeoutInfo=<primary>Tato žádost vyprší za <secondary>{0} sekund<primary>.
|
||||
teleportTop=<primary>Teleportuješ se na povrch.
|
||||
teleportToPlayer=<primary>Teleportuješ se k hráči <secondary>{0}<primary>.
|
||||
@@ -1472,8 +1484,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ý.
|
||||
@@ -1484,7 +1498,7 @@ userAFKWithMessage=<gray>{0} <dark_purple>je nyní mimo počítač a asi nebude
|
||||
userdataMoveBackError=Nepodařilo se přesunout userdata/{0}.tmp do userdata/{1}\!
|
||||
userdataMoveError=Nepodařilo se přesunout userdata/{0} do userdata/{1}.tmp\!
|
||||
userDoesNotExist=<dark_red>Hráč<secondary> {0} <dark_red>neexistuje.
|
||||
uuidDoesNotExist=<dark_red>Hráč s UUID <secondary> {0} <dark_red>neexistuje.
|
||||
uuidDoesNotExist=<dark_red>Hráč s UUID <secondary>{0} <dark_red>neexistuje.
|
||||
userIsAway=<gray>* {0} <gray>je mimo počítač.
|
||||
userIsAwayWithMessage=<gray>* {0} <gray>je mimo počítač.
|
||||
userIsNotAway=<gray>* {0} <gray>už je zase u počítače.
|
||||
@@ -1507,7 +1521,7 @@ vanished=<primary>Nyní jsi zcela neviditelný pro běžné hráče a skrytý z
|
||||
versionCheckDisabled=<primary>Kontrola aktualizací je v konfiguračním souboru vypnuta.
|
||||
versionCustom=<primary>Nelze zkontrolovat tvou verzi\! Vlastní sestavení? Informace o sestavení\: <secondary>{0}<primary>.
|
||||
versionDevBehind=<dark_red>Tvé vývojové sestavení EssentialsX je zastaralé o <secondary>{0}<dark_red> verzí\!
|
||||
versionDevDiverged=<primary>Používáš experimentální sestavení EssentialsX, které je <secondary>{0} <primary> sestavení za poslední vývojovou verzí\!
|
||||
versionDevDiverged=<primary>Používáš experimentální sestavení EssentialsX, které je <secondary>{0} <primary>sestavení za poslední vývojovou verzí\!
|
||||
versionDevDivergedBranch=Funkční větev\: <secondary>{0}<primary>.
|
||||
versionDevDivergedLatest=<primary>Používáš aktuální experimentální verzi EssentialsX\!
|
||||
versionDevLatest=<primary>Používáš nejnovější vývojové sestavení EssentialsX\!
|
||||
@@ -1564,7 +1578,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 +1604,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>
|
||||
|
||||
@@ -10,7 +10,6 @@ afkCommandUsage1Description=Ændrer din aktivitetsstatus med en eventuel årsag
|
||||
afkCommandUsage2=/<command> <player> [message]
|
||||
afkCommandUsage2Description=Ændrer aktivitets statussen for en specifik spiller med en eventuel oversag
|
||||
alertBroke=ødelagde\:
|
||||
alertFormat=<dark_aqua>[{0}] <reset> {1} <primary> {2} ved\: {3}
|
||||
alertPlaced=placerede\:
|
||||
alertUsed=brugte\:
|
||||
alphaNames=<dark_red>Spillernavne kan kun indeholde bogstaver, tal og underscores.
|
||||
@@ -107,7 +106,7 @@ broadcastworldCommandDescription=Sender en besked til verdenen.
|
||||
broadcastworldCommandUsage1Description=Sender den givne besked til den specifikke verden
|
||||
burnCommandDescription=Sæt en spiller i ild.
|
||||
burnCommandUsage1Description=Sætter ild den angivne spiller i det angivne antal sekunder
|
||||
burnMsg=<primary>Du satte ild til<secondary> {0} <primary> i <secondary> {1} sekunder<primary>.
|
||||
burnMsg=<primary>Du satte ild til<secondary> {0} <primary>i<secondary> {1} sekunder<primary>.
|
||||
cannotSellNamedItem=<primary>Det ikke tilladt at sælge de her navngivet genstande.
|
||||
cannotSellTheseNamedItems=<primary>Det er ikke tilladt at sælge de her navngivet genstande\: <dark_red>{0}
|
||||
cannotStackMob=<dark_red>Du har ikke tilladelse til at stable flere mobs.
|
||||
@@ -217,7 +216,7 @@ fireworkColor=<dark_red>Ugyldig fyrværkeriladningsparametre indsat. Der skal s
|
||||
fireworkEffectsCleared=<primary>Fjernede alle effekter fra den holdte stak.
|
||||
fireworkSyntax=<primary>Fyrværkeri-parametre\:<secondary> color\:<farve> [fade\:<farve>] [shape\:<form>] [effect\:<effekt>]\n<primary>For at bruge flere farver/effekter, separate da værdierne med kommaer\: <secondary>red,blue,pink\n<primary>Former\:<secondary> star, ball, large, creeper, burst <primary>Effekter\:<secondary> trail, twinkle.
|
||||
flying=flyve
|
||||
flyMode=<primary>Set flytilstand <secondary> {0} <primary>for {1}<primary>.
|
||||
flyMode=<primary>Flytilstand <secondary>{0} <primary>for {1}<primary>.
|
||||
foreverAlone=<dark_red>Der er ingen, du kan sende et svar til.
|
||||
fullStack=<dark_red>Du har allerede en fuld stak.
|
||||
gameMode=<primary>Ændrede spiltilstand til<secondary> {0} <primary>for <secondary>{1}<primary>.
|
||||
@@ -361,7 +360,7 @@ moreThanZero=<dark_red>Mængder skal være større end 0.
|
||||
moveSpeed=<primary>Sæt<secondary> {0}<primary> hastighed til<secondary> {1} <primary>for <secondary>{2}<primary>.
|
||||
multipleCharges=<dark_red>Du kan ikke tilføje mere end én ladning til dette fyrværkeri.
|
||||
multiplePotionEffects=<dark_red>Du kan ikke tilføje mere end én effekt til denne eliksir.
|
||||
mutedPlayer=<primary>Spilleren<secondary> {0} <primary> er gjort tavs.
|
||||
mutedPlayer=<primary>Spilleren<secondary> {0} <primary>er gjort tavs.
|
||||
mutedPlayerFor=<primary>Spilleren<secondary> {0} <primary>blev gjort tavs i<secondary> {1}<primary>.
|
||||
mutedPlayerForReason=<primary>Spiller<secondary> {0} <primary>tavs for<secondary> {1}<primary>. Grund\: <secondary>{2}
|
||||
mutedPlayerReason=<primary>Spiller<secondary> {0} <primary>tavs. Grund\: <secondary>{1}
|
||||
@@ -512,7 +511,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 +590,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.
|
||||
|
||||
@@ -10,7 +10,6 @@ afkCommandUsage1Description=Schaltet deinen AFK-Status mit einem optionalen Grun
|
||||
afkCommandUsage2=/<command> <player> [message]
|
||||
afkCommandUsage2Description=Schaltet den AFK Status des angegebenen Spielers mit einem optionalen Grund ein
|
||||
alertBroke=zerstört\:
|
||||
alertFormat=<dark_aqua>[{0}] <reset> {1} <primary> {2} bei\: {3}
|
||||
alertPlaced=platziert\:
|
||||
alertUsed=benutzt\:
|
||||
alphaNames=<dark_red>Spielernamen können nur Buchstaben, Zahlen und Unterstriche enthalten.
|
||||
@@ -66,6 +65,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 +276,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.
|
||||
@@ -373,9 +374,6 @@ expCommandUsage1Description=Gibt dem angegebenen Spieler den angegebenen Betrag
|
||||
expCommandUsage2=/<command> set <playername> <amount>
|
||||
expCommandUsage2Description=Gibt dem angegebenen Spieler den angegebenen Betrag an Geld
|
||||
expCommandUsage3=/<command> show <playername>
|
||||
expCommandUsage4Description=Zeigt die XP-Punkte des Zielspielers an
|
||||
expCommandUsage5=/<command> reset <playername>
|
||||
expCommandUsage5Description=Setzt die XP des Zielspielers auf 0 zurück
|
||||
expSet=<secondary>{0} <primary>hat jetzt<secondary> {1} <primary>Exp.
|
||||
extCommandDescription=Spieler auslöschen.
|
||||
extCommandUsage=/<command> [spieler]
|
||||
@@ -436,7 +434,7 @@ gcCommandUsage=/<command>
|
||||
gcfree=<primary>Freier Speicher\:<secondary> {0} MB
|
||||
gcmax=<primary>Maximaler Speicher\:<secondary> {0} MB
|
||||
gctotal=<primary>Reservierter Speicher\:<secondary> {0} MB
|
||||
gcWorld=<primary> {0} "<secondary> {1} <primary>"\: <secondary> {2} <primary> Chunks, <secondary> {3} <primary> Einheiten, <secondary> {4} <primary> Tiles.
|
||||
gcWorld=<primary> {0} "<secondary> {1} <primary>"\: <secondary>{2} <primary>Chunks, <secondary>{3} <primary>Einheiten, <secondary>{4} <primary>Tiles.
|
||||
geoipJoinFormat=<secondary>{0} <primary>kommt aus <secondary>{1}<primary>.
|
||||
getposCommandDescription=Erfahre deine aktuellen Koordinaten oder die eines Spielers.
|
||||
getposCommandUsage=/<command> [spieler]
|
||||
@@ -615,7 +613,7 @@ itemsCsvNotLoaded={0} konnte nicht geladen werden\!
|
||||
itemSellAir=Du versuchst Luft zu verkaufen?\! Nimm einen Gegenstand in die Hand.
|
||||
itemsNotConverted=<dark_red>Du hast keine Items, die in Blöcke konvertiert werden können.
|
||||
itemSold=<green>Verkauft für <secondary>{0}<green> ({1} {2} Einheiten je {3})
|
||||
itemSoldConsole=<yellow>{0} <green>verkauft<yellow> {1}<green>für<yellow> {2} <green> ({3} Items je {4}).
|
||||
itemSoldConsole=<yellow>{0} <green>verkauft<yellow> {1}<green>für<yellow> {2} <green>({3} Items je {4}).
|
||||
itemSpawn=<primary>Du gibst dir<secondary> {0}<primary>x<secondary> {1}
|
||||
itemType=<primary>Gegenstand\:<secondary> {0} <primary>
|
||||
itemdbCommandDescription=Sucht einen Gegenstand.
|
||||
@@ -623,6 +621,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 +636,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 +908,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 +994,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,17 +1133,19 @@ 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.
|
||||
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>.
|
||||
sethomeCommandDescription=Setze dein Zuhause auf deinen momentanen Standort.
|
||||
sethomeCommandUsage=/<command> [[spieler\:]name]
|
||||
@@ -1226,6 +1233,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.
|
||||
@@ -1419,7 +1427,7 @@ tprCommandUsage2=/<command> <world>
|
||||
tprCommandUsage2Description=Teleportiert dich an einen zufälligen Ort in der angegebenen Welt
|
||||
tprCommandUsage3=/<command> <world> <player>
|
||||
tprCommandUsage3Description=Teleportiert den angegebenen Spieler an einen zufälligen Ort in der angegebenen Welt
|
||||
tprOtherUser=<primary>Teleportieren von <secondary> {0}<primary> zu einem zufälligen Ort.
|
||||
tprOtherUser=<primary>Teleportieren von <secondary>{0}<primary> zu einem zufälligen Ort.
|
||||
tprSuccess=<primary>Teleportiere zu einem zufälligen Standort...
|
||||
tprSuccessDone=<primary>Du wurdest zu einer zufälligen Ort teleportiert.
|
||||
tprNoPermission=<dark_red>Du hast keine Berechtigung diesen Ort zu nutzen.
|
||||
@@ -1472,8 +1480,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.
|
||||
@@ -1484,7 +1494,7 @@ userAFKWithMessage=<gray>{0} <dark_purple>ist gerade nicht da und antwortet wahr
|
||||
userdataMoveBackError=Verschieben von userdata/{0}.tmp nach userdata/{1} ist gescheitert.
|
||||
userdataMoveError=Verschieben von userdata/{0} nach userdata/{1}.tmp ist gescheitert.
|
||||
userDoesNotExist=<dark_red>Spieler<secondary> {0} <dark_red>existiert nicht.
|
||||
uuidDoesNotExist=<dark_red>Der Nutzer mit der UUID<secondary> {0} <dark_red> existiert nicht.
|
||||
uuidDoesNotExist=<dark_red>Der Nutzer mit der UUID<secondary> {0} <dark_red>existiert nicht.
|
||||
userIsAway=<gray>* {0} <gray>ist nun abwesend.
|
||||
userIsAwayWithMessage=<gray>* {0} <gray>ist nun abwesend.
|
||||
userIsNotAway=<gray>* {0} <gray>ist wieder da.
|
||||
@@ -1590,6 +1600,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>
|
||||
|
||||
@@ -9,7 +9,6 @@ afkCommandUsage1=/<command> [μήνυμα]
|
||||
afkCommandUsage2=/<command> <player> [μήνυμα]
|
||||
afkCommandUsage2Description=Αλλάζει την κατάσταση afk του καθορισμένου παίκτη με έναν προαιρετικό λόγο
|
||||
alertBroke=έσπασε\:
|
||||
alertFormat=<dark_aqua>[{0}] <reset> {1} <primary> {2} στο\: {3}
|
||||
alertPlaced=τοποθετημένο\:
|
||||
alertUsed=χρησιμοποιημένο\:
|
||||
alphaNames=<dark_red>Τα ονόματα παικτών μπορούν να περιέχουν μόνο γράμματα, αριθμούς και κάτω παύλες.
|
||||
@@ -281,7 +280,7 @@ ignorePlayer=Εσυ αγνοείς player<secondary> {0} <primary>απο τώρ
|
||||
illegalDate=Μορφή παράνομης ημερομηνίας.
|
||||
infoChapter=Επιλέξτε κεφάλαιο\:
|
||||
infoChapterPages=<yellow>---<primary>{0} <yellow>--<primary> Σελίδα <secondary>{1}<primary> του <secondary>{2} <yellow>---
|
||||
infoPages=<yellow>---<primary>{2} <yellow>--Σελίδα <primary> <secondary>{0}<primary>/<secondary>{1} <yellow>---
|
||||
infoPages=<yellow>---<primary>{2} <yellow>--Σελίδα <primary><secondary>{0}<primary>/<secondary>{1} <yellow>---
|
||||
infoUnknownChapter=<dark_red>Άγνωστο κεφάλαιο.
|
||||
insufficientFunds=<dark_red>Aνεπαρκής διαθέσιμων κεφαλαίων.
|
||||
invalidCharge=<dark_red>Άκυρη χρέωση.
|
||||
@@ -297,7 +296,7 @@ invalidWorld=<dark_red>Μη έγκυρος κόσμος.
|
||||
is=είναι
|
||||
itemCannotBeSold=<dark_red>Aυτό το αντικείμενο δεν μπορεί να πωληθεί στον διακομιστή.
|
||||
itemMustBeStacked=<dark_red>Το αντικειμενο πρέπει να είναι σε στοίβες για να μπορεί να γίνει ανταλλαγή. Ποσότητα 2s θα ήταν δύο στοίβες, κλπ.
|
||||
itemNames=Σύντομη ονόματα\: <reset> {0} <primary>Αντικειμενο
|
||||
itemNames=Σύντομη ονόματα\: <reset>{0} <primary>Αντικειμενο
|
||||
itemNotEnough1=<dark_red>Δεν έχεις αρκετά από αυτό το στοιχείο για να το πουλήσεις.
|
||||
itemSellAir=Καλά προσπάθησες πραγματικά να πωλήσεις αέρα; Βάλτε ένα στοιχείο στο χέρι σας.
|
||||
jailNotExist=<dark_red>Αυτή η φυλακή δεν υπάρχει.
|
||||
@@ -439,12 +438,11 @@ 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}
|
||||
versionOutputUnsupported=<light_purple>{0} <primary> έκδοση\: <light_purple>{1}
|
||||
versionOutputUnsupportedPlugins=<primary>Εκτελείτε <light_purple> μη υποστηριζόμενα πρόσθετα<primary>\!
|
||||
versionOutputUnsupported=<light_purple>{0} <primary>έκδοση\: <light_purple>{1}
|
||||
versionOutputUnsupportedPlugins=<primary>Εκτελείτε <light_purple>μη υποστηριζόμενα πρόσθετα<primary>\!
|
||||
versionOutputEconLayer=<primary>Στρώμα Οικονομίας\: <reset>{0}
|
||||
walking=περπάτημα
|
||||
warpCommandUsage2Description=Τηλεμεταφορά εσάς ή ενός συγκεκριμένου παίκτη στη δεδομένη δίνη
|
||||
|
||||
@@ -6,10 +6,10 @@ 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\:
|
||||
alertFormat=<dark_aqua>[{0}] <reset> {1} <primary> {2} at\: {3}
|
||||
alertPlaced=placed\:
|
||||
alertUsed=used\:
|
||||
alphaNames=<dark_red>Player names can only contain letters, numbers and underscores.
|
||||
@@ -371,9 +371,6 @@ expCommandUsage1Description=Gives the target player the specified amount of xp
|
||||
expCommandUsage2=/<command> set <playername> <amount>
|
||||
expCommandUsage2Description=Sets the target player''s xp the specified amount
|
||||
expCommandUsage3=/<command> show <playername>
|
||||
expCommandUsage4Description=Displays the amount of xp the target player has
|
||||
expCommandUsage5=/<command> reset <playername>
|
||||
expCommandUsage5Description=Resets the target player''s xp to 0
|
||||
expSet=<secondary>{0} <primary>now has<secondary> {1} <primary>exp.
|
||||
extCommandDescription=Extinguish players.
|
||||
extCommandUsage=/<command> [player]
|
||||
@@ -1126,15 +1123,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>.
|
||||
@@ -1414,7 +1405,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 +1424,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.
|
||||
@@ -1463,7 +1462,6 @@ 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.
|
||||
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 +1554,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 +1578,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,7 +10,6 @@ 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\:
|
||||
alertFormat=<dark_aqua>[{0}] <reset> {1} <primary> {2} at\: {3}
|
||||
alertPlaced=placed\:
|
||||
alertUsed=used\:
|
||||
alphaNames=<dark_red>Player names can only contain letters, numbers and underscores.
|
||||
@@ -66,6 +65,7 @@ banExempt=<dark_red>You cannot ban that player.
|
||||
banExemptOffline=<dark_red>You may not ban offline players.
|
||||
banFormat=<secondary>You have been banned\:\n<reset>{0}
|
||||
banIpJoin=Your IP address is banned from this server. Reason\: {0}
|
||||
tempbanIpJoin=Your IP address is temporarily banned from this server for {0}. Reason\: {1}
|
||||
banJoin=You are banned from this server. Reason\: {0}
|
||||
banipCommandDescription=Bans an IP address.
|
||||
banipCommandUsage=/<command> <address> [reason]
|
||||
@@ -276,6 +276,7 @@ discordErrorLoggerNoPerms=Discord console logger has been disabled due to insuff
|
||||
discordErrorNoGuild=Invalid or missing server ID\! Please follow the tutorial in the config in order to setup the plugin.
|
||||
discordErrorNoGuildSize=Your bot is not in any servers\! Please follow the tutorial in the config in order to setup the plugin.
|
||||
discordErrorNoPerms=Your bot cannot see or talk in any channel\! Please make sure your bot has read and write permissions in all channels you wish to use.
|
||||
discordErrorInvalidPerms=Your bot was not set up with the required permissions\! Missing permissions are\: {0}.
|
||||
discordErrorNoPrimary=You did not define a primary channel or your defined primary channel is invalid. Falling back to the default channel\: \#{0}.
|
||||
discordErrorNoPrimaryPerms=Your bot cannot speak in your primary channel, \#{0}. Please make sure your bot has read and write permissions in all channels you wish to use.
|
||||
discordErrorNoToken=No token provided\! Please follow the tutorial in the config in order to setup the plugin.
|
||||
@@ -373,9 +374,6 @@ expCommandUsage1Description=Gives the target player the specified amount of xp
|
||||
expCommandUsage2=/<command> set <playername> <amount>
|
||||
expCommandUsage2Description=Sets the target player''s xp the specified amount
|
||||
expCommandUsage3=/<command> show <playername>
|
||||
expCommandUsage4Description=Displays the amount of xp the target player has
|
||||
expCommandUsage5=/<command> reset <playername>
|
||||
expCommandUsage5Description=Resets the target player''s xp to 0
|
||||
expSet=<secondary>{0} <primary>now has<secondary> {1} <primary>exp.
|
||||
extCommandDescription=Extinguish players.
|
||||
extCommandUsage=/<command> [player]
|
||||
@@ -623,6 +621,7 @@ 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> <reset>{0}
|
||||
jailList=<primary>Jails\:<reset> {0}
|
||||
jailMessage=<dark_red>You do the crime, you do the time.
|
||||
jailNotExist=<dark_red>That jail does not exist.
|
||||
@@ -1131,13 +1130,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 +1466,6 @@ 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.
|
||||
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 +1582,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,12 @@ 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}
|
||||
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>.
|
||||
@@ -64,8 +63,9 @@ banCommandUsage1=/<command> <jugador> [razón]
|
||||
banCommandUsage1Description=Banea a el jugador especificado con una razón opcional
|
||||
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}
|
||||
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 +153,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 +181,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}
|
||||
@@ -231,7 +233,7 @@ depthCommandUsage=/depth
|
||||
destinationNotSet=¡Destino no establecido\!
|
||||
disabled=desactivado
|
||||
disabledToSpawnMob=<dark_red>El spawn de este mob está deshabilitado en la configuración.
|
||||
disableUnlimited=Desactivada colocación ilimitada de <secondary> {0} <primary>para<secondary> {1}<primary>.
|
||||
disableUnlimited=Desactivada colocación ilimitada de <secondary>{0} <primary>para<secondary> {1}<primary>.
|
||||
discordbroadcastCommandDescription=Anuncia un mensaje al canal especificado de Discord.
|
||||
discordbroadcastCommandUsage=/<command> <channel> <msg>
|
||||
discordbroadcastCommandUsage1=/<comando> <canal> <mensajes>
|
||||
@@ -249,6 +251,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 +276,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 +339,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>
|
||||
@@ -359,7 +366,7 @@ essentialsCommandUsage8Description=Genera un volcado con la información requeri
|
||||
essentialsHelp1=Archivo corrupto, no es posible abrirlo. Essentials está ahora desactivado. Si no puedes arreglar el archivo, ve a http\://tiny.cc/EssentialsChat
|
||||
essentialsHelp2=Archivo corrupto, no es posible abrirlo. Essentials está ahora desactivado. Si no puedes arreglar el archivo, escribe /essentialshelp dentro del juego o ve a http\://tiny.cc/EssentialsChat
|
||||
essentialsReload=<primary>Essentials ha sido recargado. La versión es<secondary> {0}.
|
||||
exp=<secondary>{0} <primary>tiene<secondary> {1} <primary> de exp. (nivel<secondary> {2}<primary>) y necesita<secondary> {3} <primary>de exp para subir su nivel.
|
||||
exp=<secondary>{0} <primary>tiene<secondary> {1} <primary>de exp. (nivel<secondary> {2}<primary>) y necesita<secondary> {3} <primary>de exp para subir su nivel.
|
||||
expCommandDescription=Da, establece, reinicia o mira la experiencia de un jugador.
|
||||
expCommandUsage=/<command> [reset|show|set|give] [jugador] [monto]
|
||||
expCommandUsage1=/<command> dar <jugador> <cantidad>
|
||||
@@ -367,9 +374,6 @@ expCommandUsage1Description=Da al jugador mencionado la cantidad de xp especific
|
||||
expCommandUsage2=/<command> set <jugador> <cantidad>
|
||||
expCommandUsage2Description=Establece el xp del jugador objetivo la cantidad especificada
|
||||
expCommandUsage3=/<command> show <jugador>
|
||||
expCommandUsage4Description=Muestra la cantidad de xp que el jugador mencionado tiene
|
||||
expCommandUsage5=/<command> reset <jugador>
|
||||
expCommandUsage5Description=Restablece la experiencia del jugador a 0
|
||||
expSet=<secondary>{0} <primary>ahora tiene<secondary> {1} <primary>de exp.
|
||||
extCommandDescription=Extingue el fuego de un jugador.
|
||||
extCommandUsage=/<command> [jugador]
|
||||
@@ -423,6 +427,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 +469,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 +490,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 +517,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 +526,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 +546,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 +564,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 +578,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 +599,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>".
|
||||
@@ -593,17 +612,22 @@ itemsConverted=<primary>Todos los items han sido convertidos en bloques.
|
||||
itemsCsvNotLoaded=¡No se pudo cargar {0}\!
|
||||
itemSellAir=¿¿¿Realmente intentas vender AIRE??? ¡¡¡Pon un objeto en tu mano\!\!\!
|
||||
itemsNotConverted=<dark_red>No tienes items que puedan ser convertidos a bloques.
|
||||
itemSold=<gray>Vendido por <secondary> {0} <gray> ({1} {2} a {3} cada uno).
|
||||
itemSold=<gray>Vendido por <secondary>{0} <gray>({1} {2} a {3} cada uno).
|
||||
itemSoldConsole=<yellow>{0} <green>vendido <yellow>{1} por<green> <yellow>{2} <green>({3} objetos a {4} cada uno).
|
||||
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}
|
||||
jailedPlayersList=<primary>Jugadores encarcelados\:<reset> {0}
|
||||
jailedPlayersEmpty=<primary>No hay jugadores encarcelados.
|
||||
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\!
|
||||
@@ -612,38 +636,53 @@ jailSet=<primary>La cárcel {0} ha sido creada.
|
||||
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.
|
||||
jailedplayersCommandDescription=Lista de jugadores encarcelados.
|
||||
jailedplayersCommandUsage=/<command>
|
||||
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]
|
||||
kitCommandUsage1=/<command>
|
||||
kitCommandUsage1Description=Lista de todos los kits disponibles
|
||||
kitCommandUsage2=/<command> <kit> [jugador]
|
||||
kitCommandUsage2Description=Entrega el kit especificado a ti o a otro jugador si se especifica
|
||||
kitContains=<primary>El kit <secondary>{0} <primary>contiene\:
|
||||
kitCost=\ <gray><i>({0})<reset>
|
||||
kitDelay=<st>{0}<reset>
|
||||
kitError=<secondary>No hay ningún kit válido.
|
||||
kitError2=<dark_red>Este kit está mal creado. Por favor, contacta con un administrador.
|
||||
kitError3=No se pudo dar el objeto en el kit del kit "{0}" al usuario {1} ya que ese objeto requiere Paper 1\n15.2+ para deserializar.
|
||||
kitGiveTo=<primary>Dando kit<secondary> {0}<primary> a <secondary>{1}<primary>.
|
||||
kitInvFull=<dark_red>Tu inventario no tiene espacio para este kit. El kit se lanzará al suelo.
|
||||
kitInvFullNoDrop=<dark_red>No hay suficiente espacio en tu inventario para ese kit.
|
||||
kitItem=<primary>- <white>{0}
|
||||
kitNotFound=<dark_red>Ese kit no existe.
|
||||
kitOnce=<dark_red>No puedes volver a usar este kit.
|
||||
kitReceive=<primary>Kit<secondary> {0}<primary> recibido.
|
||||
kitReset=<primary>Reinicia el tiempo de espera del kit <secondary> {0} <primary>.
|
||||
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}
|
||||
@@ -670,6 +709,7 @@ listCommandDescription=Lista todos los jugadores en línea.
|
||||
listCommandUsage=/<command> [grupo]
|
||||
listCommandUsage1=/<command> [grupo]
|
||||
listCommandUsage1Description=Lista todos los jugadores del servvidor, o del grupo si se ha especificado
|
||||
listGroupTag=<primary>{0}<reset>\:
|
||||
listHiddenTag=<dark_gray>[Oculto]<reset>
|
||||
listRealName=({0})
|
||||
loadWarpError=<dark_red>Error al cargar el Warp {0}.
|
||||
@@ -693,6 +733,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,20 +744,24 @@ 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>.
|
||||
matchingIPAddress=<primary>Los siguientes jugadores entraron previamente con la IP\:
|
||||
matchingAccounts={0}
|
||||
maxHomes=<dark_red>No puedes tener más de<secondary> {0} <dark_red>hogares.
|
||||
maxMoney=<dark_red>Esta transacción supera el límite del dinero para esta cuenta.
|
||||
mayNotJail=<secondary>No puedes encarcelar a esa persona.
|
||||
mayNotJailOffline=<dark_red>No puedes encarcelar a jugadores que no están conectados.
|
||||
meCommandDescription=Describe una acción en el contexto del jugador.
|
||||
meCommandUsage=/<command> <descripción>
|
||||
meCommandUsage1=/<comando> <descripción>
|
||||
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>.
|
||||
@@ -724,7 +769,7 @@ mobDataList=<gray>Datos de mobs válidos\:<reset> {0}
|
||||
mobSpawnError=Error al cambiar la localización para el nacimiento de los mobs.
|
||||
mobSpawnLimit=Cantidad de criaturas (mobs) limitadas por el servidor.
|
||||
mobSpawnTarget=El bloque seleccionado será el lugar donde van a aparecer los mobs.
|
||||
moneyRecievedFrom=<green>{0}<primary> ha sido recibido de <green> {1}<primary>.
|
||||
moneyRecievedFrom=<green>{0}<primary> ha sido recibido de <green>{1}<primary>.
|
||||
moneySentTo=<green>{0} ha sido enviado a {1}
|
||||
month=mes
|
||||
months=meses
|
||||
@@ -739,6 +784,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 +797,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 +809,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 +818,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 +840,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 +855,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 +881,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 +906,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.
|
||||
@@ -866,13 +927,13 @@ pingCommandDescription=¡Pong\!
|
||||
pingCommandUsage=/<command>
|
||||
playerBanIpAddress=<primary><secondary> {0} <primary>ha baneado la IP de<secondary> {1} <primary>por\: <secondary>{2}<primary>.
|
||||
playerTempBanIpAddress=<primary>Jugador<secondary> {0} <primary>ha baneado temporalmente la dirección IP <secondary>{1}<primary> por <secondary>{2}<primary>\: <secondary>{3}<primary>.
|
||||
playerBanned=<secondary>{0} <primary> ha baneado a\:<secondary> {1} <primary>por <secondary>{2}<primary>.
|
||||
playerBanned=<secondary>{0} <primary>ha baneado a\:<secondary> {1} <primary>por <secondary>{2}<primary>.
|
||||
playerJailed=<gray>Jugador {0} encarcelado.
|
||||
playerJailedFor=<secondary> {0} <primary>encarcelado por<secondary> {1}<primary>.
|
||||
playerKicked=<secondary> {0} <primary>expulsado<secondary> {1}<primary> por<secondary> {2}<primary>.
|
||||
playerMuted=<gray>Has sido silenciado.
|
||||
playerMutedFor=<gray>Has sido silenciado por<secondary> {0}<primary>.
|
||||
playerMutedForReason=<primary>Has sido silenciado por <secondary> {0}<primary>. Motivo\: <secondary>{1}
|
||||
playerMutedForReason=<primary>Has sido silenciado por <secondary>{0}<primary>. Motivo\: <secondary>{1}
|
||||
playerMutedReason=<primary>Has sido silenciado\! Motivo\: <secondary>{0}
|
||||
playerNeverOnServer=<dark_red>¡El jugador <secondary>{0} <dark_red>nunca ha entrado al servidor\!
|
||||
playerNotFound=<dark_red>Jugador no encontrado.
|
||||
@@ -884,6 +945,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 +954,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 +988,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 +1002,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 +1025,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 +1043,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 +1110,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].
|
||||
@@ -1124,6 +1199,8 @@ skullCommandUsage1=/<command>
|
||||
skullCommandUsage1Description=Obtienes tu propia cabeza
|
||||
skullCommandUsage2Description=Obtiene la cabeza del jugador especificado
|
||||
skullCommandUsage3Description=Obtiene un cráneo con la textura especificada (ya sea el hash desde una URL de textura o un valor de textura Base64)
|
||||
skullCommandUsage4Description=Da el cráneo del dueño especificado al jugador especificado
|
||||
skullCommandUsage5Description=Da un cráneo con la textura especificada (sea el hash desde una URL de textura o un valor de textura en Base64) al jugador especificado
|
||||
skullInvalidBase64=<dark_red>El valor de la textura no es válido.
|
||||
slimeMalformedSize=<dark_red>Medidas malformadas.
|
||||
smithingtableCommandDescription=Abre una mesa de herrería.
|
||||
@@ -1189,7 +1266,7 @@ teleportOfflineUnknown=<primary>No se ha podido encontrar la última posición c
|
||||
tempbanExempt=<dark_red>No puedes banear temporalmente a ese usuario.
|
||||
tempbanExemptOffline=<dark_red>No puedes banear temporalmente a jugadores que no están conectados.
|
||||
tempbanJoin=You are banned from this server for {0}. Reason\: {1}
|
||||
tempBanned=<secondary>Se te ha baneado temporalmente por <reset> {0}\:\n<reset>{2}
|
||||
tempBanned=<secondary>Se te ha baneado temporalmente por <reset>{0}\:\n<reset>{2}
|
||||
tempbanCommandDescription=Banea temporalmente un usuario.
|
||||
tempbanCommandUsage=/<command> <playername> <datediff> [reason]
|
||||
tempbanCommandUsage1Description=Banea al jugador dado durante la cantidad especificada de tiempo por una razón opcional
|
||||
@@ -1213,7 +1290,7 @@ timeCommandUsage3=/<comando> añadir <tiempo> [mundo|todo]
|
||||
timeCommandUsage3Description=Añade la hora dada a la hora del mundo actual (o del especificado)
|
||||
timeFormat=<secondary>{0}<primary> o <secondary>{1}<primary> o <secondary>{2}<primary>
|
||||
timeSetPermission=<dark_red>No tienes permitido cambiar la hora.
|
||||
timeWorldAdd=<primary>El tiempo ha sido avanzado por <secondary> {0} <primary>en\: <secondary>{1}<primary>.
|
||||
timeWorldAdd=<primary>El tiempo ha sido avanzado por <secondary>{0} <primary>en\: <secondary>{1}<primary>.
|
||||
timeWorldCurrent=<primary>La hora actual en<secondary> {0} <primary>es <secondary>{1}<primary>.
|
||||
timeWorldCurrentSign=<primary>La hora actual es <secondary>{0}<primary>.
|
||||
timeWorldSet=<primary>La hora ha sido establecida a<secondary> {0} <primary>en el mundo\: <secondary>{1}<primary>.
|
||||
@@ -1222,16 +1299,20 @@ togglejailCommandUsage=/<command> <jugador> <jail> [tiempo]
|
||||
toggleshoutCommandDescription=Alterna si estás hablando en modo grito
|
||||
toggleshoutCommandUsage1Description=Activa o desactiva el modo grito para ti u otro jugador si se especifica
|
||||
topCommandDescription=Teletransporta al bloque más alto en tu posición actual.
|
||||
totalSellableAll=<green>El precio total de todos los objetos vendibles es de <secondary> {1}.
|
||||
topCommandUsage=/<comando>
|
||||
totalSellableAll=<green>El precio total de todos los objetos vendibles es de <secondary>{1}.
|
||||
totalSellableBlocks=<green>El valor total de la venta de todos tus bloques es <secondary>{1}<green>.
|
||||
totalWorthAll=<green>Vendidos todos los objetos por un valor total de <secondary> {1}<green>.
|
||||
totalWorthAll=<green>Vendidos todos los objetos por un valor total de <secondary>{1}<green>.
|
||||
totalWorthBlocks=<green>Vendidos todos los bloques por un total de <secondary>{1}<green>.
|
||||
tpCommandDescription=Teletransporta a un jugador.
|
||||
tpCommandUsage=/<command> <jugador> [otroJugador]
|
||||
tpCommandUsage1=/<comando> <jugador>
|
||||
tpCommandUsage1Description=Te teletransporta al jugador especificado
|
||||
tpCommandUsage2=/<comando> <jugador> <otro jugador>
|
||||
tpCommandUsage2Description=Teletransporta el primer al segundo jugador especificado
|
||||
tpaCommandDescription=Envía solicitud de teletransporte al jugador especificado.
|
||||
tpaCommandUsage=/<comando> <jugador>
|
||||
tpaCommandUsage1=/<comando> <jugador>
|
||||
tpaCommandUsage1Description=Solicita teletransportarse al jugador especificado
|
||||
tpaallCommandDescription=Solicita a todos los jugadores en línea a teletransportarse hacia ti.
|
||||
tpaallCommandUsage1Description=Solicita a todos los jugadores que se teletransporten a ti
|
||||
@@ -1240,10 +1321,15 @@ tpacancelCommandUsage1Description=Cancela todas tus solicitudes de teletransport
|
||||
tpacancelCommandUsage2Description=Cancela todas tus solicitudes de teletransporte pendientes con el jugador especificado
|
||||
tpacceptCommandDescription=Acepta solicitudes de teletransporte.
|
||||
tpacceptCommandUsage=/<command> [otrojugador]
|
||||
tpacceptCommandUsage1=/<comando>
|
||||
tpacceptCommandUsage1Description=Acepta la solicitud de teletransporte más reciente
|
||||
tpacceptCommandUsage2=/<comando> <jugador>
|
||||
tpacceptCommandUsage2Description=Acepta la solicitud de teletransporte del jugador especificado
|
||||
tpacceptCommandUsage3=/<comando> *
|
||||
tpacceptCommandUsage3Description=Acepta todas las solicitudes de teletransporte
|
||||
tpahereCommandDescription=Solicita que el jugador especificado se teletransporte hacia ti.
|
||||
tpahereCommandUsage=/<comando> <jugador>
|
||||
tpahereCommandUsage1=/<comando> <jugador>
|
||||
tpahereCommandUsage1Description=Solicita que el jugador especificado se teletransporte a ti
|
||||
tpallCommandDescription=Teletransporta todos los jugadores en línea a otro jugador.
|
||||
tpallCommandUsage=/<command> [jugador]
|
||||
@@ -1257,17 +1343,27 @@ 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
|
||||
tphereCommandDescription=Teletransporta un jugador hacia ti.
|
||||
tphereCommandUsage=/<comando> <jugador>
|
||||
tphereCommandUsage1=/<comando> <jugador>
|
||||
tphereCommandUsage1Description=Teletransporta al jugador especificado a ti
|
||||
tpoCommandDescription=Teletransporte anulado en tptoggle.
|
||||
tpoCommandUsage=/<comando> <jugador> [otrojugador]
|
||||
tpoCommandUsage1=/<comando> <jugador>
|
||||
tpoCommandUsage1Description=Teletransporta al jugador especificado a ti sobrescribiendo sus preferencias
|
||||
tpoCommandUsage2=/<comando> <jugador> <otro jugador>
|
||||
tpoCommandUsage2Description=Teletransporta el primer jugador especificado al segundo sobrescribiendo sus preferencias
|
||||
tpofflineCommandDescription=Teletransporta a la última ubicación de desconexión de un jugador
|
||||
tpofflineCommandUsage=/<comando> <jugador>
|
||||
tpofflineCommandUsage1=/<comando> <jugador>
|
||||
tpofflineCommandUsage1Description=Te teletransporta al lugar de desconexión del jugador especificado
|
||||
tpohereCommandDescription=Teletransporte aquí anulado en tptoggle.
|
||||
tpohereCommandUsage=/<comando> <jugador>
|
||||
tpohereCommandUsage1=/<comando> <jugador>
|
||||
tpohereCommandUsage1Description=Teletransporta al jugador especificado a ti, ignorando sus preferencias
|
||||
tpposCommandDescription=Teletransportar a coordenadas.
|
||||
tpposCommandUsage=/<command> <x> <y> <z> [yaw] [pitch] [world]
|
||||
@@ -1277,7 +1373,15 @@ tprCommandDescription=Teletransporta al azar.
|
||||
tprCommandUsage=/<command>
|
||||
tprCommandUsage1=/<command>
|
||||
tprCommandUsage1Description=Te teletransporta a una ubicación aleatoria
|
||||
tprCommandUsage2=/<comando> <mundo>
|
||||
tprCommandUsage2Description=Te teletransporta a una ubicación aleatoria en el mundo especificado
|
||||
tprCommandUsage3=/<comando> <mundo> <jugador>
|
||||
tprCommandUsage3Description=Teletransporta al jugador especificado a una ubivavión aleatoria en el mundo especificado
|
||||
tprOtherUser=<primary>Teletransportando<secondary> {0}<primary> a una ubicación aleatoria.
|
||||
tprSuccess=<primary>Teletransportando a una ubicación aleatoria...
|
||||
tprSuccessDone=<primary>Fuiste teletransportado a una ubicación aleatoria.
|
||||
tprNoPermission=<dark_red>No tienes permiso para usar esa ubicación.
|
||||
tprNotExist=<dark_red>Esa ubicación de teletransporte no existe.
|
||||
tps=<primary>Ticks por segundo \= {0}
|
||||
tptoggleCommandDescription=Bloquea todas las formas de teletransportación.
|
||||
tptoggleCommandUsage=/<command> [jugador] [on|off]
|
||||
@@ -1288,16 +1392,21 @@ tradeSignEmptyOwner=No hay nada que recojer de esta tienda.
|
||||
tradeSignFull=<dark_red>¡Este cartel está lleno\!
|
||||
tradeSignSameType=<dark_red>No puedes intercambiar por un objeto del mismo tipo.
|
||||
treeCommandDescription=Genera un árbol donde miras.
|
||||
treeCommandUsage=/<comando> <tree|birch|redwood|redmushroom|brownmushroom|jungle|junglebush|swamp|paleoak>
|
||||
treeCommandUsage1=/<command> <tree|birch|redwood|redmushroom|brownmushroom|jungle|junglebush|swamp|paleoak>
|
||||
treeCommandUsage1Description=Genera un árbol del tipo especificado donde estés mirando
|
||||
treeFailure=<secondary>Error al generar el árbol. Prueba de nuevo en tierra, tierra húmeda o hierba.
|
||||
treeSpawned=<gray>Árbol generado.
|
||||
true=<green>sí<white>
|
||||
typeTpacancel=<primary>Para cancelar esta petición, teclea <secondary>/tpacancel<primary>.
|
||||
typeTpaccept=<primary>Escribe <secondary>/tpaccept <primary>para aceptar el teletransporte.
|
||||
typeTpdeny=<primary>Para denegar la teletransportación, escribe <secondary>/tpdeny<primary>.
|
||||
typeWorldName=<primary>Tú también puedes escribir el nombre de un mundo específico.
|
||||
unableToSpawnItem=<dark_red>No se puede generar <secondary>{0}<dark_red>; no es un objeto generable.
|
||||
unableToSpawnMob=<dark_red>No puedes generar criaturas.
|
||||
unbanCommandDescription=Desbanea el jugador especificado.
|
||||
unbanCommandUsage=/<comando> <jugador>
|
||||
unbanCommandUsage1=/<comando> <jugador>
|
||||
unbanCommandUsage1Description=Desbanea un jugador específico
|
||||
unbanipCommandDescription=Desbanea la dirección IP especificada.
|
||||
unbanipCommandUsage=/<command> <dirección IP>
|
||||
@@ -1321,8 +1430,10 @@ unlinkCommandDescription=Desvincula tu cuenta de Minecraft de la cuenta de Disco
|
||||
unlinkCommandUsage=/<command>
|
||||
unlinkCommandUsage1=/<command>
|
||||
unlinkCommandUsage1Description=Desvincula tu cuenta de Minecraft de la cuenta de Discord actualmente vinculada.
|
||||
unmuteNotify=<secondary>{0} <primary>desilenció<secondary> {1}<primary>.
|
||||
unmutedPlayer=<primary>El jugador<secondary> {0} <primary>ya no está silenciado.
|
||||
unsafeTeleportDestination=<dark_red>El destino es inseguro y el teletransporte seguro está desactivado.
|
||||
unsafeTeleportDestination=<dark_red>El destino de teletransporte es inseguro.
|
||||
playerNotMuted=<secondary>{0} <primary>no está silenciado.
|
||||
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.
|
||||
@@ -1364,6 +1475,9 @@ versionError=<dark_red>¡Error al obtener información de la versión de Essenti
|
||||
versionErrorPlayer=<primary>¡Error al comprobar información de la versión de EssentialsX\!
|
||||
versionFetching=<primary>Obteniendo información de versión...
|
||||
versionOutputVaultMissing=<dark_red>Vault no esta instalado. El chat y los permisos pueden no funcionar.
|
||||
versionOutputFine=<primary>{0} version\: <green>{1}
|
||||
versionOutputWarn=<primary>{0} version\: <secondary>{1}
|
||||
versionOutputUnsupported=<light_purple>{0} <primary>version\: <light_purple>{1}
|
||||
versionOutputUnsupportedPlugins=<primary>Estas ejecutando <light_purple>plugins no soportados<primary>\!
|
||||
versionOutputEconLayer=<primary>Capa de economía\: <reset>{0}
|
||||
versionMismatch=La version no coincide\! Por favor actualiza {0} a la misma version.
|
||||
@@ -1409,6 +1523,8 @@ west=W
|
||||
whoisAFK=<gray> - Ausente\:<reset> {0}
|
||||
whoisAFKSince=<primary> - Ausente\:<reset> {0} (Desde {1})
|
||||
whoisBanned=<gray> - Baneado\:<white> {0}
|
||||
whoisCommandDescription=Proporciona información básica sobre el jugador especificado.
|
||||
whoisCommandUsage1=/<comando> <jugador>
|
||||
whoisCommandUsage1Description=Proporciona información básica sobre el jugador especificado
|
||||
whoisExp=<gray> - Exp\:<white> {0} (Nivel {1})
|
||||
whoisFly=<gray> - Modo volar\:<white> {0} ({1})
|
||||
@@ -1427,7 +1543,8 @@ whoisMutedReason=<primary> - Silenciado\:<reset> {0} <primary>Motivo\: <secondar
|
||||
whoisNick=<gray> - Nick\:<white> {0}
|
||||
whoisOp=<gray> - OP\:<white> {0}
|
||||
whoisTempBanned=<primary> - Baneo expira en\:<reset> {0}
|
||||
whoisTop=<primary> \=\=\= Acerca de\:<secondary> {0} <primary> \=\=\=
|
||||
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>
|
||||
@@ -1442,7 +1559,9 @@ worthCommandDescription=Calcula el valor de los items en la mano o especificados
|
||||
worthCommandUsage=/<command> <<item>|<id>|hand|inventory|blocks> [-][cantidad]
|
||||
worthCommandUsage1Description=Comprueba el valor de todo (o la cantidad dada, si se especifica) del objeto dado en tu inventario
|
||||
worthCommandUsage2Description=Comprueba el valor de todo (o la cantidad dada, si se especifica) del objeto sostenido
|
||||
worthCommandUsage3=/<comando> todo
|
||||
worthCommandUsage3Description=Comprueba el valor de todos los objetos posibles en tu inventario
|
||||
worthCommandUsage4=/<comando> bloques [cantidad]
|
||||
worthCommandUsage4Description=Comprueba el valor de todos (o la cantidad dada, si se especifica) los bloques en tu inventario
|
||||
worthMeta=<gray>Pila de {0} con metadata de {1} , con valor de <secondary>{2}<gray> ({3} objeto(s) a {4} cada uno)
|
||||
worthSet=Establecer valor
|
||||
|
||||
@@ -6,16 +6,15 @@ afkCommandUsage=/<käsklus> [mängija/sõnum...]
|
||||
afkCommandUsage2=/<käsklus> <mängija> [sõnum]
|
||||
afkCommandUsage2Description=Lülitab valitud mängija eemalolekut valikulise põhjusega
|
||||
alertBroke=lõhkus\:
|
||||
alertFormat=<dark_aqua>[{0}] <reset> {1} <primary> {2} asukohas\: {3}
|
||||
alertPlaced=asetas\:
|
||||
alertUsed=kasutas\:
|
||||
alphaNames=<dark_red>Mängijate nimed võivad sisaldada ainult tähti, numbreid ja allkriipse.
|
||||
antiBuildBreak=<dark_red>Sul puudub siin plokkide lõhkumiseks luba.
|
||||
antiBuildCraft=<dark_red>Sul puudub <secondary> {0}<dark_red> valmistamiseks luba.
|
||||
antiBuildDrop=<dark_red>Sul puudub <secondary> {0}<dark_red> maha viskamiseks luba.
|
||||
antiBuildCraft=<dark_red>Sul puudub <secondary>{0}<dark_red> valmistamiseks luba.
|
||||
antiBuildDrop=<dark_red>Sul puudub <secondary>{0}<dark_red> maha viskamiseks luba.
|
||||
antiBuildInteract=<dark_red>Sul puudub plokiga <secondary>{0}<dark_red> tegelemiseks luba.
|
||||
antiBuildPlace=<dark_red>Sul puudub siia <secondary> {0} <dark_red> asetamiseks luba.
|
||||
antiBuildUse=<dark_red>Sul puudub <secondary> {0}<dark_red> kasutamiseks luba.
|
||||
antiBuildPlace=<dark_red>Sul puudub siia <secondary>{0} <dark_red>asetamiseks luba.
|
||||
antiBuildUse=<dark_red>Sul puudub <secondary>{0}<dark_red> kasutamiseks luba.
|
||||
antiochCommandDescription=Väike üllatus operaatoritele.
|
||||
antiochCommandUsage=/<käsklus> [sõnum]
|
||||
anvilCommandDescription=Avab alasi.
|
||||
@@ -217,12 +216,12 @@ discordErrorLoggerNoPerms=Discordi konsooli logija on ebapiisavate õiguste tõt
|
||||
discordErrorWebhook=Error ilmnes saates sõnum konsooli kanalisse\! See ilmnes tõenäoliselt seetõttu, et oled kustutanud konsooli webhook''i. Seda saab tavaliselt parandada tehes kindlaks, et botil on "Manage Webhooks" õigus ja jooksutades käsklust "/ess reload".
|
||||
discordLinkInvalidRole=Kehtetu rolli ID, {0}, anti grupile\: {1}. Sa saad näha rollide ID-d kasutades /roleinfo käsklust Discordis.
|
||||
discordLinkInvalidRoleManaged=Rolli {0} ({1}) ei olnud võimalik kasutada grupp->roll sünkroonimisel, sest seda kasutatakse mõne teise boti või integratsiooni puhul.
|
||||
discordLinkLinked=<primary>, et ühendada Minecrafti kasutaja Discordiga, kirjuta <secondary>{0} <primary> Discordi serveris.
|
||||
discordLinkLinked=<primary>, et ühendada Minecrafti kasutaja Discordiga, kirjuta <secondary>{0} <primary>Discordi serveris.
|
||||
discordLinkLinkedAlready=<primary> Sa oled juba ühendatud Discordi kasutajaga\! Kui soovid lahti ühendada, kasuta <secondary>/unlink<primary>.
|
||||
discordLinkLoginKick=<primary> Sa pead ühendama oma kasutaja Discordi kasutajaga enne serveriga liitumist.\n<primary> Et ühendada Minecrafti kasutaja Discordi kasutajaga, kirjuta\:\n<secondary>{0}\n<primary>selles serveri Discordi serveris\:\n<secondary>{1}
|
||||
discordLinkLoginPrompt=<primary> Sa pead ühendama oma Discordi kasutajaga enne, kui saad liikuda, vestelda või toimetada serveris. Oma Minecrafti kasutaja ühendamiseks Discordiga, kirjuta <secondary>{0} <primary> serveri Discordis\: <secondary>{1}
|
||||
discordLinkLoginPrompt=<primary> Sa pead ühendama oma Discordi kasutajaga enne, kui saad liikuda, vestelda või toimetada serveris. Oma Minecrafti kasutaja ühendamiseks Discordiga, kirjuta <secondary>{0} <primary>serveri Discordis\: <secondary>{1}
|
||||
discordLinkNoAccount=<primary>Sul ei ole Minecrafti konto ühendatud Discordi kontoga.
|
||||
discordLinkPending=<primary> Sul on juba lingi kood. Et lõpetada Minecrafti konto sidumine Discordiga, kasuta <secondary>{0} <primary> Discordi serveris.
|
||||
discordLinkPending=<primary> Sul on juba lingi kood. Et lõpetada Minecrafti konto sidumine Discordiga, kasuta <secondary>{0} <primary>Discordi serveris.
|
||||
discordLinkUnlinked=<primary>Minecrafti konto edukalt lahti ühendatud Discordi kontodest.
|
||||
discordLoggingIn=Proovin logida Discordi...
|
||||
discordLoggingInDone=Edukalt sisse logitud kui {0}
|
||||
@@ -264,7 +263,7 @@ enchantCommandUsage1Description=Loitsib sinu käesolevat eset valitud loitsuga j
|
||||
enableUnlimited=<primary>Annan mängijale <secondary>{1}<primary> piiramatus koguses<secondary> {0} <primary>.
|
||||
enchantmentApplied=<primary>Loits<secondary> {0} <primary>on rakendatud käesolevale esemele.
|
||||
enchantmentNotFound=<dark_red>Loitsu ei leitud\!
|
||||
enchantmentPerm=<dark_red>Sul puudub luba <secondary> {0}<dark_red> jaoks.
|
||||
enchantmentPerm=<dark_red>Sul puudub luba <secondary>{0}<dark_red> jaoks.
|
||||
enchantmentRemoved=<primary>Loits<secondary> {0} <primary>on käesolevalt esemelt eemaldatud.
|
||||
enchantments=<primary>Loitsud\:<reset> {0}
|
||||
enderchestCommandDescription=Laseb sul vaadata enderikirstu sisse.
|
||||
@@ -306,9 +305,6 @@ expCommandUsage1Description=Annab määratud mängijale valitud hulga kogemust
|
||||
expCommandUsage2=/<käsklus> set <mängija> <kogus>
|
||||
expCommandUsage2Description=Lisab määratud mängijale valitud hulga kogemust
|
||||
expCommandUsage3=/<käsklus> show <mängija>
|
||||
expCommandUsage4Description=Kuvab valitud mängija kogemuspunkte
|
||||
expCommandUsage5=/<käsklus> reset <mängija>
|
||||
expCommandUsage5Description=Lähtestab valitud mängija kogemuse 0 peale
|
||||
expSet=<primary>Mängijal <secondary>{0}<primary> on nüüd<secondary> {1} <primary>kogemuspunkti.
|
||||
extCommandDescription=Kustuta mängijatelt tuli.
|
||||
extCommandUsage=/<command> [mängija]
|
||||
@@ -442,7 +438,7 @@ homeCommandUsage2=/<command> <player>\:<name>
|
||||
homeCommandUsage2Description=Telepordib teid määratud nimega mängija koju
|
||||
homes=<primary>Kodud\:<reset> {0}
|
||||
homeConfirmation=<primary>Sul juba on kodu nimega <secondary>{0}<primary>\!\nOlemasoleva kodu ülekirjutamiseks kirjuta käsklus uuesti.
|
||||
homeRenamed=<primary>Kodu <secondary>{0} <primary> nimi muudeti ümber <secondary>{1}<primary>.
|
||||
homeRenamed=<primary>Kodu <secondary>{0} <primary>nimi muudeti ümber <secondary>{1}<primary>.
|
||||
homeSet=<primary>Kodu määratud.
|
||||
hour=tund
|
||||
hours=tundi
|
||||
@@ -478,7 +474,7 @@ invalidMob=<dark_red>Sobimatu elukaliik.
|
||||
invalidNumber=Sobimatu arv.
|
||||
invalidPotion=<dark_red>Sobimatu võlujook.
|
||||
invalidPotionMeta=<dark_red>Sobimatud võlujoogi metaandmed\: <secondary>{0}<dark_red>.
|
||||
invalidSignLine=<dark_red>Sildi rida<secondary> {0} <dark_red> on sobimatu.
|
||||
invalidSignLine=<dark_red>Sildi rida<secondary> {0} <dark_red>on sobimatu.
|
||||
invalidSkull=<dark_red>Palun hoia käes mängija pead.
|
||||
invalidWarpName=<dark_red>Sobimatu koolunimi\!
|
||||
invalidWorld=<dark_red>Sobimatu maailm.
|
||||
@@ -617,7 +613,7 @@ mailSent=<primary>Kiri saadetud\!
|
||||
mailSentTo=<primary>Mängijale <secondary>{0}<primary> saadeti järgnev kiri\:
|
||||
mailSentToExpire=<primary>Mängijale <secondary>{0}<primary> saadeti järgnev kiri, mis aegub <secondary>{1}<primary>\:
|
||||
mailTooLong=<dark_red>Kiri on liiga pikk. Püüa see hoida alla 1000 tähemärgi.
|
||||
markMailAsRead=<primary>Kirjade loetuks märkimiseks kirjuta <secondary> /mail clear<primary>.
|
||||
markMailAsRead=<primary>Kirjade loetuks märkimiseks kirjuta <secondary>/mail clear<primary>.
|
||||
matchingIPAddress=<primary>Sellelt IP-aadressilt on eelnevalt sisse loginud järgnevad mängijad\:
|
||||
maxHomes=<dark_red>Sa ei saa määrata rohkem kui<secondary> {0} <dark_red>kodu.
|
||||
maxMoney=<dark_red>Antud tehing ületaks selle konto liimiti.
|
||||
@@ -742,7 +738,7 @@ noPermissionSkull=<dark_red>Sul puudub luba selle pea muutmiseks.
|
||||
noPermToAFKMessage=<dark_red>Sul puudub luba eemaloleku sõnumi määramiseks.
|
||||
noPermToSpawnMob=<dark_red>Sul puudub luba selle eluka tekitamiseks.
|
||||
noPlacePermission=<dark_red>Sul puudub luba selle sildi juurde ploki asetamiseks.
|
||||
noPotionEffectPerm=<dark_red>Sul puudub luba sellele võlujoogile efekti <secondary>{0} <dark_red> rakendamiseks.
|
||||
noPotionEffectPerm=<dark_red>Sul puudub luba sellele võlujoogile efekti <secondary>{0} <dark_red>rakendamiseks.
|
||||
noPowerTools=<primary>Sul puuduvad võimutööriistad.
|
||||
notAcceptingPay=<dark_red>Mängija <dark_red>{0} <dark_red>ei võta makseid vastu.
|
||||
notAllowedToLocal=<dark_red>Sul puudub luba kohalikus vestluses rääkimiseks.
|
||||
@@ -819,7 +815,7 @@ powerToolAlreadySet=<dark_red>Käsklus <secondary>{0}<dark_red> on juba määrat
|
||||
powerToolAttach=<primary>Käsklus <secondary>{0}<primary> määratud esemele<secondary> {1}<primary>.
|
||||
powerToolClearAll=<primary>Kõik võimutööriistade käsklused on puhastatud.
|
||||
powerToolList=<primary>Esemel <secondary>{1} <primary>on järgnevad käsklused\: <secondary>{0}<primary>.
|
||||
powerToolListEmpty=<dark_red>Esemel <secondary>{0} <dark_red> puuduvad määratud käsklused.
|
||||
powerToolListEmpty=<dark_red>Esemel <secondary>{0} <dark_red>puuduvad määratud käsklused.
|
||||
powerToolNoSuchCommandAssigned=<dark_red>Käsklus <secondary>{0}<dark_red> pole esemele <secondary>{1}<dark_red> lisatud.
|
||||
powerToolRemove=<primary>Käsklus <secondary>{0}<primary> on esemelt <secondary>{1}<primary> eemaldatud.
|
||||
powerToolRemoveAll=<primary>Kõik käsklused on esemelt <secondary>{0}<primary> eemaldatud.
|
||||
@@ -853,7 +849,7 @@ pweatherCommandUsage2=/<käsklus> <storm|sun> [mängija]|*]
|
||||
pweatherCommandUsage2Description=Määrab ilma sinule või teistele mängijale kui on etteantud ilm
|
||||
pweatherCommandUsage3Description=Lähtestab ilma sinu või teisele mängijale, kui on täpsustatud
|
||||
pTimeCurrent=<primary>Mängija <secondary>{0}<primary> aeg on<secondary> {1}<primary>.
|
||||
pTimeCurrentFixed=<primary>Mängija <secondary>{0}<primary> aeg on fikseeritud väärtuseks <secondary> {1}<primary>.
|
||||
pTimeCurrentFixed=<primary>Mängija <secondary>{0}<primary> aeg on fikseeritud väärtuseks <secondary>{1}<primary>.
|
||||
pTimeNormal=<primary>Mängija <secondary>{0}<primary> aeg on normaalne ja kattub serveri omaga.
|
||||
pTimeOthersPermission=<dark_red>Sul puudub teiste mängijate aja määramiseks luba.
|
||||
pTimePlayers=<primary>Nendel mängijatel on oma aeg\:<reset>
|
||||
@@ -894,7 +890,7 @@ removeCommandUsage1=/<käsklus> <elukatüüp> [maailm]
|
||||
removeCommandUsage1Description=Eemaldab kõik eluka tüübid selles maailmas või teises, kui on täpsustatud
|
||||
removeCommandUsage2=/<käsklus> <elukatüüp> <raadius> [maailm]
|
||||
removeCommandUsage2Description=Eemaldab antud eluka tüübi antud raadiuses praeguses maailmas või teises, kui on täpsustatud
|
||||
removed=<secondary> {0} <primary> olemit on eemaldatud.
|
||||
removed=<secondary> {0} <primary>olemit on eemaldatud.
|
||||
repair=<primary>Parandasid edukalt oma <secondary>{0}<primary>.
|
||||
repairAlreadyFixed=<dark_red>See ese ei vaja parandamist.
|
||||
repairCommandDescription=Parandab ühe või kõikide esemete vastupidavuse.
|
||||
@@ -925,7 +921,7 @@ rest=<primary>Tunned end puhanuna.
|
||||
restCommandDescription=Saadab sind või valitud mängijat puhkama.
|
||||
restCommandUsage1Description=Lähtestab aja sinu või teisele mängijale, kui on täpsustatud
|
||||
restOther=<primary>Mängija<secondary> {0} <primary>puhkab.
|
||||
returnPlayerToJailError=<dark_red>Mängija<secondary> {0} <dark_red> vanglasse tagasi saatmisel esines viga\: <secondary>{1}<dark_red>\!
|
||||
returnPlayerToJailError=<dark_red>Mängija<secondary> {0} <dark_red>vanglasse tagasi saatmisel esines viga\: <secondary>{1}<dark_red>\!
|
||||
rtoggleCommandDescription=Muuda, kas vastuse saajaks on viimane kirja saaja või viimane kirja saatja
|
||||
rulesCommandDescription=Vaatab serveri reegleid.
|
||||
runningPlayerMatch=<primary>Otsin mängijaid mis vastaksid väärtusele "<secondary>{0}<primary>" (see võib võtta aega)
|
||||
@@ -951,14 +947,9 @@ 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>.
|
||||
setSpawner=<primary>Muutsid elukatekitaja tüübiks <secondary>{0}<primary>.
|
||||
sethomeCommandDescription=Määrab su koduks praeguse asukoha.
|
||||
sethomeCommandUsage=/<käsklus> [[mängija\:]nimi]
|
||||
sethomeCommandUsage1Description=Seadistab sinu kodu antud nimega sinu asukohta
|
||||
@@ -1029,7 +1020,7 @@ spawnmobCommandDescription=Tekitab eluka.
|
||||
spawnmobCommandUsage=/<käsklus> <elukas>[\:andmed][,<seljas>[\:andmed]] [kogus] [mängija]
|
||||
spawnmobCommandUsage1=/<käsklus> <elukas>[\:andmed] [kogus] [mängija]
|
||||
spawnmobCommandUsage2=/<käsklus> <elukas>[\:andmed],<seljas>[\:andmed] [kogus] [mängija]
|
||||
spawnSet=<primary>Grupi <secondary> {0}<primary> tekkekoht on määratud.
|
||||
spawnSet=<primary>Grupi <secondary>{0}<primary> tekkekoht on määratud.
|
||||
spectator=vaatlus
|
||||
speedCommandDescription=Muuda oma kiirusepiiranguid.
|
||||
speedCommandUsage=/<käsklus> [fly|walk] <kiirus> [mängija]
|
||||
@@ -1040,7 +1031,7 @@ sudoCommandDescription=Sunni teine kasutaja käsklust teostama.
|
||||
sudoCommandUsage=/<käsklus> <mängija> <käsklus [param.]>
|
||||
sudoCommandUsage1=/<käsklus> <mängija> <käsklus> [param.]
|
||||
sudoExempt=<dark_red>Sa ei saa mängijat <secondary>{0}<dark_red> sundida.
|
||||
sudoRun=<primary>Sunnin mängijat<secondary> {0} <primary>käivitama käsklust <reset> /{1}
|
||||
sudoRun=<primary>Sunnin mängijat<secondary> {0} <primary>käivitama käsklust <reset>/{1}
|
||||
suicideCommandDescription=Hukatab sind.
|
||||
suicideMessage=<primary>Head aega, julm maailm...
|
||||
suicideSuccess=<primary>Mängija <secondary>{0} <primary>võttis endalt elu.
|
||||
@@ -1185,7 +1176,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.
|
||||
@@ -1213,7 +1203,7 @@ vanished=<primary>Oled nüüd tavakasutajatele täiesti nähtamatu ning mängusi
|
||||
versionCheckDisabled=<primary>Uuenduste kontrollimine on seadistustes keelatud.
|
||||
versionCustom=<primary>Versiooni kontrollimine ebaõnnestus\! Käsitsi ehitatud? Redaktsiooni info\: <secondary>{0}<primary>.
|
||||
versionDevBehind=<dark_red>Sinu <secondary>{0} <dark_red>EssentialsX''i arendusredaktsioon(id) on aegunud\!
|
||||
versionDevDiverged=<primary>Käitad EssentialsX''i katsetusredaktsiooni, mis on viimatisest arendusredaktsioonist <secondary>{0} <primary> versiooni maas\!
|
||||
versionDevDiverged=<primary>Käitad EssentialsX''i katsetusredaktsiooni, mis on viimatisest arendusredaktsioonist <secondary>{0} <primary>versiooni maas\!
|
||||
versionDevDivergedBranch=<primary>Funktsiooniharu\: <secondary>{0}<primary>.
|
||||
versionDevDivergedLatest=<primary>Käitad kaasaegset EssentialsX''i katsetusredaktsiooni\!
|
||||
versionDevLatest=<primary>Käitad viimatist EssentialsX arendusredaktsiooni\!
|
||||
@@ -1307,5 +1297,5 @@ worthSet=<primary>Eseme väärtus määratud
|
||||
year=aasta
|
||||
years=aastat
|
||||
youAreHealed=<primary>Sind on tervendatud.
|
||||
youHaveNewMail=<primary>Sul on<secondary> {0} <primary> uut kirja\! Oma kirjade lugemiseks kirjuta <secondary>/mail read<primary>.
|
||||
youHaveNewMail=<primary>Sul on<secondary> {0} <primary>uut kirja\! Oma kirjade lugemiseks kirjuta <secondary>/mail read<primary>.
|
||||
xmppNotConfigured=XMPP ei ole korralikult seadistatud. Kui sa ei tea, mis on XMPP, võid eemaldada oma serverist EssentialsXXMPP plugina.
|
||||
@@ -7,11 +7,11 @@ alertBroke=puskatu\:
|
||||
alertPlaced=jarri\:
|
||||
alertUsed=erabili\:
|
||||
alphaNames=<dark_red>Jokalari izenek letrak eta zenbakiak bakarrik izan ditzakete.
|
||||
antiBuildBreak=<dark_red>Ez daukazu hemen <secondary> {0} <dark_red> blokerik puskatzeko baimenik.
|
||||
antiBuildCraft=<dark_red>Ez daukazu <secondary> {0} <dark_red> sortzeko baimenik.
|
||||
antiBuildDrop=<dark_red>Ez daukazu <secondary> {0} <dark_red> botatzeko baimenik.
|
||||
antiBuildInteract=<dark_red>Ez duzu <secondary> {0}<dark_red>-rekin interaktzioa jartzeko permisiorik.
|
||||
antiBuildPlace=<dark_red>Ez daukazu hemen <secondary> {0} <dark_red> blokerik jartzeko baimenik.
|
||||
antiBuildBreak=<dark_red>Ez daukazu hemen <secondary>{0} <dark_red>blokerik puskatzeko baimenik.
|
||||
antiBuildCraft=<dark_red>Ez daukazu <secondary>{0} <dark_red>sortzeko baimenik.
|
||||
antiBuildDrop=<dark_red>Ez daukazu <secondary>{0} <dark_red>botatzeko baimenik.
|
||||
antiBuildInteract=<dark_red>Ez duzu <secondary>{0}<dark_red>-rekin interaktzioa jartzeko permisiorik.
|
||||
antiBuildPlace=<dark_red>Ez daukazu hemen <secondary>{0} <dark_red>blokerik jartzeko baimenik.
|
||||
antiBuildUse=<dark_red>Ez daukazu<secondary> {0}<dark_red> erabiltzeko baimenik.
|
||||
antiochCommandUsage=/<command> [Mezua]
|
||||
autoAfkKickReason=Byl jsi vyhozen za neaktivitu delší než {0} minut.
|
||||
@@ -51,7 +51,7 @@ couldNotFindTemplate=<dark_red>Ezin izan da {0} txantiloia aurkitu.
|
||||
creatingConfigFromTemplate={0} txantiloia jarraituz ezarpen fitxategia sortzen.
|
||||
creatingEmptyConfig=Ezarpen fitxategi hutsa sortzen\: {0}
|
||||
creative=sortzailea
|
||||
currentWorld=<primary>Uneko mundua\: <secondary> {0}
|
||||
currentWorld=<primary>Uneko mundua\: <secondary>{0}
|
||||
day=egun
|
||||
days=egunak
|
||||
defaultBanReason=Kanporatua jarrera desegokiagatik\!
|
||||
@@ -65,19 +65,19 @@ denyBookEdit=<dark_red>Ezin duzu liburu hau editatu.
|
||||
denyChangeAuthor=<dark_red>Ezin duzu liburu honen idazlea aldatu.
|
||||
denyChangeTitle=<dark_red>Ezin duzu liburu honen izenburua aldatu.
|
||||
depth=<primary>Itsasoaren mailan zaude.
|
||||
depthAboveSea=<primary>Itsas mailatik <secondary>{0} <primary> bloke gorago zaude.
|
||||
depthBelowSea=<primary>Itsas mailatik <secondary>{0} <primary> bloke beherago zaude.
|
||||
depthAboveSea=<primary>Itsas mailatik <secondary>{0} <primary>bloke gorago zaude.
|
||||
depthBelowSea=<primary>Itsas mailatik <secondary>{0} <primary>bloke beherago zaude.
|
||||
destinationNotSet=Helmuga ezarri gabe dago\!
|
||||
disabled=ezgaitua
|
||||
disabledToSpawnMob=<dark_red>Munstro honen sortzea debekatua izan da ezarpenetan.
|
||||
distance=<primary>Distantzia\: {0}
|
||||
dontMoveMessage=<primary>Telegarraiatzea <secondary> {0}<primary> segundu barru hasiko da. Ez mugitu.
|
||||
dontMoveMessage=<primary>Telegarraiatzea <secondary>{0}<primary> segundu barru hasiko da. Ez mugitu.
|
||||
duplicatedUserdata=Erabiltzaile informazio bikoiztua\: {0} eta {1}.
|
||||
durability=<primary>Erraminta honi <secondary>{0}<primary> erabilera geratzen zaizkio.
|
||||
editBookContents=<yellow>Liburuaren edukia aldatu dezakezu orain.
|
||||
enabled=gaituta
|
||||
enchantmentNotFound=<dark_red>Sorginkeria ez da aurkitu\!
|
||||
enchantmentPerm=<dark_red>Ez daukazu <secondary> {0} <dark_red>egiteko baimenik<dark_red>.
|
||||
enchantmentPerm=<dark_red>Ez daukazu <secondary>{0} <dark_red>egiteko baimenik<dark_red>.
|
||||
enchantments=<primary>Sorginkeriak\:<reset> {0}
|
||||
errorCallingCommand=/{0} aginduak huts egin du.
|
||||
errorWithMessage=<secondary>Errorea\:<dark_red> {0}
|
||||
@@ -152,13 +152,13 @@ jailMessage=<dark_red>Gaizkia egiteak bere ondorioak dakartza.
|
||||
jailNotExist=<dark_red>Ez da kartzela hori aurkitu.
|
||||
jailReleased=<secondary>{0} <primary>jokalaria kartzelatik atera da.
|
||||
jailReleasedPlayerNotify=<primary>Askatua izan zara\!
|
||||
jailSentenceExtended=<primary>Zigorra luzatu da\: <secondary> {0}<primary>.
|
||||
jailSentenceExtended=<primary>Zigorra luzatu da\: <secondary>{0}<primary>.
|
||||
jumpError=<dark_red>Horrek min egingo lioke zure ordenagailuaren burmuinari.
|
||||
kickDefault=Zerbitzaritik kanporatua izan zara.
|
||||
kickedAll=<dark_red>Zerbitzariko jokalari guztiak kanporatu dituzu.
|
||||
kickExempt=<dark_red>Ezin duzu jokalari hori kanporatu.
|
||||
kill=<secondary> {0}<primary>erail duzu.
|
||||
killExempt=<primary>Ezin duzu <secondary> {0}<primary> hil.
|
||||
killExempt=<primary>Ezin duzu <secondary>{0}<primary> hil.
|
||||
kitError=<dark_red>Ez dago kit-ik.
|
||||
kitError2=<obf>ita ez dago behar bezala definitua. Jarri harremanetan administratzaile batekin.
|
||||
kitInvFull=<dark_red>Zure inbentarioa beteta dago, gauzak lurrean jasoko dituzu.
|
||||
@@ -173,9 +173,9 @@ mailCleared=<primary>Postontzia garbitu duzu\!
|
||||
mailDelay=Mezu gehiegi bidali dituzu azken minutuetan. Gehienez {0} bidal daitezke.
|
||||
mailSent=<primary>Mezua bidali duzu\!
|
||||
mailTooLong=<dark_red>Mezua luzeegia da, gehienez 1000 karaketere izan ditzake.
|
||||
markMailAsRead=<primary>Mezuak irakurrita bezala markatzeko, idatzi <secondary> /mail clear<primary>.
|
||||
markMailAsRead=<primary>Mezuak irakurrita bezala markatzeko, idatzi <secondary>/mail clear<primary>.
|
||||
matchingIPAddress=<primary>Ondorengo jokalariak IP helbide honekin sartu ziren\:
|
||||
maxHomes=<dark_red>Ezin duzu <secondary> {0} <dark_red>etxe baino gehiago gorde.
|
||||
maxHomes=<dark_red>Ezin duzu <secondary>{0} <dark_red>etxe baino gehiago gorde.
|
||||
mayNotJail=<dark_red>Ezin duzu jokalari hori kartzelaratu\!
|
||||
mayNotJailOffline=<dark_purple>Jokalaria ez dago konektatuta, beraz, ezin duzu zigortu.
|
||||
minute=minutu
|
||||
@@ -191,7 +191,7 @@ months=hilabeteak
|
||||
moreThanZero=<dark_red>Kantitea 0 baino handiagoa izan beharko da.
|
||||
multipleCharges=<dark_red>Ezin diozu karga bat baino gehiago jarri suziri honi.
|
||||
multiplePotionEffects=<dark_red>Ezin diozu efektu bat baino gehiago jarri edabe honi.
|
||||
mutedPlayer=<secondary> {0} <primary> jokalaria isildua izan da.
|
||||
mutedPlayer=<secondary> {0} <primary>jokalaria isildua izan da.
|
||||
mutedPlayerFor={0} jokalaria ixildua {1}-rako.
|
||||
muteExempt=<dark_red>Ezin duzu jokalari hori isildu.
|
||||
muteExemptOffline=<dark_purple>Jokalaria ez dago konektatuta, beraz, ezin duzu zigortu.
|
||||
@@ -212,7 +212,7 @@ noGodWorldWarning=<dark_red>Kontuz\! Jainko modua ezgaitua dago mundu honetan.
|
||||
noHomeSetPlayer=<primary>Jokalariak ez dauka etxe definiturik.
|
||||
noIgnored=<primary>Ez zara inori ez ikusiarena egiten ari.
|
||||
noKitGroup=<dark_red>Ezin duzu kit hau erabili.
|
||||
noKitPermission=<secondary>{0} <dark_red> baimena behar duzu kit hori erabiltzeko.
|
||||
noKitPermission=<secondary>{0} <dark_red>baimena behar duzu kit hori erabiltzeko.
|
||||
noKits=<primary>Momentu honetan ez dago kit erabilgarririk.
|
||||
noLocationFound=<dark_red>Ez da baliozko kokalekurik aurkitu.
|
||||
noMail=<primary>Ez daukazu mezurik.
|
||||
@@ -221,7 +221,7 @@ noMetaJson=JSON Metadatuak ez dira bateragarriak Bukkit bertsio honekin.
|
||||
none=bat ere ez
|
||||
noNewMail=<primary>Ez daukazu mezurik.
|
||||
noPendingRequest=<dark_red>Ez daukazu eskaerarik.
|
||||
noPerm=<dark_red>Ez daukazu <secondary>{0} <dark_red> baimena.
|
||||
noPerm=<dark_red>Ez daukazu <secondary>{0} <dark_red>baimena.
|
||||
noPermissionSkull=<dark_red>Ez daukazu buru hori editatzeko baimenik.
|
||||
noPermToSpawnMob=<dark_red>Ez daukazu munstro hori sortzeko baimenik.
|
||||
noPlacePermission=<dark_red>Ez daukazu kartelaren ondoan blokerik jartzeko baimenik.
|
||||
@@ -236,7 +236,7 @@ onlyDayNight=/time day/night -ekin bakarrik erabil daiteke
|
||||
onlyPlayers=<dark_red>Sartuta dauden jokalariak bakarrik erabil dezakete <secondary>{0}<dark_red>.
|
||||
onlySunStorm=<dark_red>/weather aginduarekin sun/storm bakarrik erabil daiteke.
|
||||
oversizedTempban=<dark_red>Ezin duzu jokalaria denbora hain luzerako zigortu.
|
||||
playerJailed=<secondary> {0} <primary> jokalaria atxilotua izan da.
|
||||
playerJailed=<secondary> {0} <primary>jokalaria atxilotua izan da.
|
||||
playerMuted=<primary>Isildua izan zara\!
|
||||
playerNeverOnServer=<secondary>{0} <dark_red>jokalaria ez da sekula zerbitzarira sartu.
|
||||
playerNotFound=<dark_red> Jokalaria ez da aurkitu.
|
||||
@@ -306,7 +306,7 @@ teleporting=<primary>Telegarraiatzen...
|
||||
teleportInvalidLocation=Kordenatuen balioak ezin dira 30000000 baino handiagoak izan
|
||||
teleportNewPlayerError=<dark_red>Ezin izan da jokalari berria telegarraiatu\!
|
||||
teleportRequest=<secondary>{0}<primary>-(e)k zuregana telegarraiatzeko baimena eskatu dizu.
|
||||
teleportRequestTimeoutInfo=<primary>Eskari hau <secondary> {0} <primary> segundu barru iraungiko da.
|
||||
teleportRequestTimeoutInfo=<primary>Eskari hau <secondary>{0} <primary>segundu barru iraungiko da.
|
||||
teleportTop=<primary>Gailurrera telegarraiatzen...
|
||||
teleportToPlayer=<secondary>{0}<primary>-(r)engana telegarraiatzen...
|
||||
tempbanExempt=<dark_red>Ezin duzu jokalari hori zigortu.
|
||||
@@ -337,8 +337,8 @@ warpingTo=<secondary> {0} <primary>-(e)ra telegarraiatzen...
|
||||
warpListPermission=<dark_red>Ez daukazu telegarraiatze puntuen zerrenda ikusteko baimenik.
|
||||
warpNotExist=<dark_red>Ez dago izen hori duen telegarraiatze punturik.
|
||||
warpOverwrite=<dark_red>Ezin duzu telegarraiatze punturik gainidatzi.
|
||||
warps=<primary>Telegarraiatze puntuak\: <reset> {0}
|
||||
warpsCount=<secondary> {0} <primary> telegarraiatze puntu daude. <secondary> {1} <primary>orrialdea <secondary>{2} <primary>tik.
|
||||
warps=<primary>Telegarraiatze puntuak\: <reset>{0}
|
||||
warpsCount=<secondary> {0} <primary>telegarraiatze puntu daude. <secondary>{1} <primary>orrialdea <secondary>{2} <primary>tik.
|
||||
warpSet=<secondary>{0} <dark_red>telegarraiatze puntua ezarri duzu.
|
||||
warpUsePermission=<dark_red>Ez daukazu telegarraiatze puntu hori erabiltzeko baimenik.
|
||||
weatherInvalidWorld={0} deituriko mundurik ez da aurkitu\!
|
||||
|
||||
@@ -3,10 +3,10 @@ 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\:
|
||||
alertFormat=<dark_aqua>[{0}] <white> {1} <primary> {2} sijainnissa\: {3}
|
||||
alertPlaced=laittoi\:
|
||||
alertUsed=käytti\:
|
||||
alphaNames=<dark_red>Pelaajan nimet voivat sisältää vain kirjaimia, numeroita ja alaviivoja.
|
||||
@@ -453,7 +453,7 @@ mailSentTo=<primary>Pelaajalle <secondary>{0}<primary> on lähetetty seuraava po
|
||||
mailTooLong=<dark_red>Viesti on liian pitkä. Yritä pitää se alle 1000 merkissä.
|
||||
markMailAsRead=<primary>Merkataksesi viestin luetuksi, kirjoita<secondary> /mail clear<primary>.
|
||||
matchingIPAddress=<primary>Seuraavat pelaajat ovat aiemmin kirjautuneet sisään tästä IP-osoitteesta\:
|
||||
maxHomes=<dark_red>Et voi asettaa <secondary> {0} <dark_red>kotia enempää.
|
||||
maxHomes=<dark_red>Et voi asettaa <secondary>{0} <dark_red>kotia enempää.
|
||||
maxMoney=<dark_red>Tämä toimenpide ylittää saldorajan tälle tilille.
|
||||
mayNotJail=<dark_red>Et voi laittaa tuota pelaajaa vankilaan\!
|
||||
mayNotJailOffline=<dark_red>Et voi vangita offline-pelaajia.
|
||||
@@ -687,7 +687,7 @@ resetBalAll=<primary>Saldo on palautettu arvoon <secondary>{0} <primary>kaikille
|
||||
rest=<primary>Tunnet olosi levänneeksi.
|
||||
restCommandDescription=Asettaa sinut tai valitun pelaajan levänneeksi.
|
||||
restOther=<secondary>{0}<primary> on laitettu lepäämään.
|
||||
returnPlayerToJailError=<dark_red>Virhe yritettäessä palauttaa pelaaja<secondary> {0} <dark_red> vankilaan\: <secondary>{1}<dark_red>\!
|
||||
returnPlayerToJailError=<dark_red>Virhe yritettäessä palauttaa pelaaja<secondary> {0} <dark_red>vankilaan\: <secondary>{1}<dark_red>\!
|
||||
rtoggleCommandDescription=Muuta, onko vastauksen vastaanottaja viimeinen vastaanottaja vai viimeinen lähettäjä
|
||||
rulesCommandDescription=Näyttää palvelimen säännöt.
|
||||
runningPlayerMatch=<primary>Haku pelaajille, jotka vastaavat arvoa ''<secondary>{0}<primary>'' (tämä voi viedä hetken).
|
||||
@@ -704,11 +704,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 +865,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,9 +2,9 @@
|
||||
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}
|
||||
alertPlaced=linagay\:
|
||||
alertUsed=ginamit\:
|
||||
alphaNames=<dark_red>Mga pangalan ng manlalaro ay maaari lamang naglalaman ng mga sulat, numero at mga underscore.
|
||||
@@ -17,6 +17,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 +26,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 +40,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 +60,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.
|
||||
@@ -85,7 +95,7 @@ canTalkAgain=<gray>Pwede ka nang mag-usap ulit.
|
||||
cantFindGeoIpDB=Hindi mahanap ang GeoIP na database\!
|
||||
cantGamemode=<primary>Hindi ka pinapayagang magbago sa paraan na {0}
|
||||
cantReadGeoIpDB=Nabigo sa pagkabasa ng GeoIP database\!
|
||||
cantSpawnItem=<primary>Hindi ka pinapayagang maglagay ng bagay na <secondary> {0}<dark_red>.
|
||||
cantSpawnItem=<primary>Hindi ka pinapayagang maglagay ng bagay na <secondary>{0}<dark_red>.
|
||||
cartographytableCommandDescription=Magbubukas ng mesa ng kartograpiya.
|
||||
chatTypeSpy=[Ispiya]
|
||||
cleaned=Binura na ang mga files ng user.
|
||||
@@ -96,6 +106,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 +185,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 +202,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 +234,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.
|
||||
@@ -237,17 +253,14 @@ essentialsCommandUsage8=/<command> dump [all] [config] [discord] [kits] [log]
|
||||
essentialsCommandUsage8Description=Nag-li-likha ng server dump gamit ang hinilingan na impormasyon
|
||||
essentialsHelp1=Sira ang file at hindi mabukas ng Essentials ito. Di-pinagana ang Essentials. Kung hindi mo kayang maayos ang file, punta ka sa http\://tiny.cc/EssentialsChat
|
||||
essentialsHelp2=Sira ang file at hindi mabukas ng Essentials ito. Di-pinagana ang Essentials. Kung hindi mo kayang maayos ang file, sulatin mo ang /essentialshelp sa laro o punta ka sa http\://tiny.cc/EssentialsChat
|
||||
essentialsReload=<primary>Ni-load muli ang Essentials. Bersyon\: <secondary> {0}.
|
||||
exp=<primary>Si <secondary>{0} <primary>ay mayroong<secondary> {1} <primary>XP (lebel na<secondary> {2}<primary>) at kinakailangan ng <secondary> {3} <primary>pang XP upang tumaas ng lebel.
|
||||
essentialsReload=<primary>Ni-load muli ang Essentials. Bersyon\: <secondary>{0}.
|
||||
exp=<primary>Si <secondary>{0} <primary>ay mayroong<secondary> {1} <primary>XP (lebel na<secondary> {2}<primary>) at kinakailangan ng <secondary>{3} <primary>pang XP upang tumaas ng lebel.
|
||||
expCommandDescription=Magbigay, magtakda, mag-reset o tumingin sa isang manlalarong karanasan.
|
||||
expCommandUsage=/<command> [reset|show|set|give] [pangalan-ng-manlalaro [halaga]]
|
||||
expCommandUsage1Description=Ibibigay ang manlalarong tinutukoy yung tinutukoy na halaga ng XP
|
||||
expCommandUsage2=/<command> set <pangalan ng manlalaro> <halaga>
|
||||
expCommandUsage2Description=Itatakda ang XP ng manlalarong tinutukoy yung tinutukoy na halaga
|
||||
expCommandUsage3=/<command> show <pangalan ng manlalaro>
|
||||
expCommandUsage4Description=Ipapakita ang halaga ng XP nang manlalarong tinutukoy ay meron
|
||||
expCommandUsage5=/<command> reset <pangalan ng manlalaro>
|
||||
expCommandUsage5Description=I-ri-reset ang XP ng manlalarong tinutukoy sa 0
|
||||
expSet=<primary>Si <secondary>{0} <primary>ay mayroong<secondary> {1} <primary>XP.
|
||||
extCommandDescription=Tinatanggal yung apoy mula sa mga manlalaro.
|
||||
extinguish=<primary>Tinanggal mo yung apoy mula sa sarili mo.
|
||||
@@ -262,6 +275,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 +283,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 +303,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 +320,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 +406,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 +444,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
|
||||
@@ -451,7 +472,7 @@ kitresetCommandUsage=/<command> <kit> [manlalaro]
|
||||
kitResetOther=<primary>Rinereset ang cooldown ng kit <secondary>{0} <primary>ng <secondary>{1}<primary>.
|
||||
kits=<primary>Mga Kits\:<reset> {0}
|
||||
kittycannonCommandDescription=Tumapon ng sumasabog na kuting sa iyong kalaban.
|
||||
kitTimed=<dark_red>Bawal mo gamitin ang kit na iyon muli ng isa pang <secondary> {0}<dark_red>.
|
||||
kitTimed=<dark_red>Bawal mo gamitin ang kit na iyon muli ng isa pang <secondary>{0}<dark_red>.
|
||||
leatherSyntax=<primary>Syntax sa kulay ng katad.<secondary> kulay\:\\<red>,\\<green>,\\<blue> eg\: kulay\:255,0,0<primary> O<secondary> kulay\:<rgb int> eg\: kulay\:16777011
|
||||
lightningCommandDescription=Ang paglakas ng Thor. Magwelga sa cursor o manlalaro.
|
||||
lightningCommandUsage=/<command> [manlalaro] [lakas]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#Sat Feb 03 17:34:46 GMT 2024
|
||||
action=<dark_purple> {0} <dark_purple> {1}
|
||||
action=<dark_purple> {0} <dark_purple>{1}
|
||||
addedToAccount=<yellow>{0}<green> ont été ajoutés à votre compte.
|
||||
addedToOthersAccount=<yellow>{0}<green> ajoutés au compte de <yellow>{1}<green>. Nouveau solde \: <yellow>{2}
|
||||
adventure=aventure
|
||||
@@ -10,7 +10,6 @@ afkCommandUsage1Description="Active/Désactive" Votre statut AFK avec une raison
|
||||
afkCommandUsage2=/<command> <joueur> [message]
|
||||
afkCommandUsage2Description=Active/Désactive le statut afk du joueur spécifié avec une raison facultative
|
||||
alertBroke=a détruit \:
|
||||
alertFormat=<dark_aqua>[{0}] <reset> {1} <primary> {2} à \: {3}
|
||||
alertPlaced=a placé \:
|
||||
alertUsed=a utilisé \:
|
||||
alphaNames=<dark_red>Les pseudos ne peuvent contenir que des lettres, des chiffres et des sous-tirets.
|
||||
@@ -64,8 +63,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 +276,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.
|
||||
@@ -331,7 +332,7 @@ enchantCommandUsage1Description=Enchante l''objet tenu en main avec l''enchantem
|
||||
enableUnlimited=&6Don d''une quantité illimitée de<secondary> {0} <primary>à <secondary>{1}<primary>.
|
||||
enchantmentApplied=<primary>L''enchantement<secondary> {0} <primary>a été appliqué à l''objet en main.
|
||||
enchantmentNotFound=<dark_red>Enchantement introuvable \!
|
||||
enchantmentPerm=<dark_red>Vous n''avez pas les droits pour <secondary> {0}<dark_red>.
|
||||
enchantmentPerm=<dark_red>Vous n''avez pas les droits pour <secondary>{0}<dark_red>.
|
||||
enchantmentRemoved=<gray>L''enchantement <secondary>{0} <primary>a été retiré de l''objet que vous tenez dans vos mains.
|
||||
enchantments=<primary>Enchantements \:<reset> {0}
|
||||
enderchestCommandDescription=Permet de voir le contenu d''un coffre de l''ender.
|
||||
@@ -373,9 +374,6 @@ expCommandUsage1Description=Donne au joueur ciblé la quantité d''exp spécifi
|
||||
expCommandUsage2=/<command> set <joueur> <quantité>
|
||||
expCommandUsage2Description=Définit l''exp du joueur ciblé au montant spécifié
|
||||
expCommandUsage3=/<command> show <joueur>
|
||||
expCommandUsage4Description=Affiche la quantité d''exp que le joueur ciblé possède
|
||||
expCommandUsage5=/<command> reset <joueur>
|
||||
expCommandUsage5Description=Réinitialise l’exp du joueur spécifié à 0
|
||||
expSet=<secondary>{0} <primary>a maintenant<secondary> {1} <primary>exp.
|
||||
extCommandDescription=Éteint les joueurs enflammés.
|
||||
extCommandUsage=/<command> [joueur]
|
||||
@@ -459,7 +457,7 @@ godCommandDescription=Active vos pouvoirs divins.
|
||||
godCommandUsage=/<command> [joueur] [on|off]
|
||||
godCommandUsage1=/<command> [joueur]
|
||||
godCommandUsage1Description=Active/désactive le mode dieu pour vous ou pour un autre joueur si spécifié
|
||||
giveSpawn=<secondary> {0} {1} <primary>ont été donnés à <secondary> {2}<primary>.
|
||||
giveSpawn=<secondary> {0} {1} <primary>ont été donnés à <secondary>{2}<primary>.
|
||||
giveSpawnFailure=<dark_red>Pas assez d''espace dans l''inventaire, <secondary>{0} <secondary>{1} <dark_red>n''ont pas pu être donnés.
|
||||
godDisabledFor=<secondary>désactivé<primary> pour \:<secondary> {0}
|
||||
godEnabledFor=<green>activé<primary> pour<secondary> {0}
|
||||
@@ -494,7 +492,7 @@ helpConsole=Pour consulter l''aide depuis la console, tapez "?".
|
||||
helpFrom=<primary>Commandes de {0} \:
|
||||
helpLine=<primary>/{0}<reset> \: {1}
|
||||
helpMatching=<gray>Commandes correspondant à "{0}" \:
|
||||
helpOp=<dark_red>[Aide Admin]<reset> <primary>{0} \: <reset> {1}
|
||||
helpOp=<dark_red>[Aide Admin]<reset> <primary>{0} \: <reset>{1}
|
||||
helpPlugin=<dark_red>{0}<white> \: Aide Plugin \: /help {1}
|
||||
helpopCommandDescription=Envoyer un message aux administrateurs en ligne.
|
||||
helpopCommandUsage=/<command> <message>
|
||||
@@ -623,11 +621,13 @@ itemdbCommandUsage=/<command> <objet>
|
||||
itemdbCommandUsage1=/<command> <item>
|
||||
itemdbCommandUsage1Description=Recherche l''objet donné dans la base de données
|
||||
jailAlreadyIncarcerated=<secondary>Joueur déjà emprisonné \: {0}
|
||||
jailedPlayersList=<primary><reset>Joueurs emprisonnés\:<reset> {0}
|
||||
jailedPlayersEmpty=<primary>Il n''y a pas de joueurs emprisonnés.
|
||||
jailList=<primary>Prisons \:<reset> {0}
|
||||
jailMessage=<secondary>Vous avez commis un crime, vous en payez le prix.
|
||||
jailNotExist=<dark_red>Cette prison n''existe pas.
|
||||
jailNotifyJailed=<gray>Joueur<secondary> {0} <primary>emprisonné par <secondary>{1}.
|
||||
jailNotifyJailedFor=<primary>Le joueur<secondary> {0} <primary>a été emprisonné pour <secondary> {1}<primary>par <secondary>{2}<primary>.
|
||||
jailNotifyJailedFor=<primary>Le joueur<secondary> {0} <primary>a été emprisonné pour <secondary>{1}<primary>par <secondary>{2}<primary>.
|
||||
jailNotifySentenceExtended=<primary>Le temps de prison du joueur{0} a été prolongé à <secondary>{1} <primary>par <secondary>{2}<primary>.
|
||||
jailReleased=<primary>Le joueur <secondary>{0}<primary> a été libéré.
|
||||
jailReleasedPlayerNotify=<primary>Vous avez été libéré(e) \!
|
||||
@@ -636,6 +636,8 @@ jailSet=<primary>La prison<secondary> {0} <primary>a été créée.
|
||||
jailWorldNotExist=<dark_red>Le monde de cette prison n''existe pas.
|
||||
jumpEasterDisable=<primary>Mode assistant de vol désactivé.
|
||||
jumpEasterEnable=<primary>Mode assistant de vol activé.
|
||||
jailedplayersCommandDescription=Liste les joueurs emprisonnés.
|
||||
jailedplayersCommandUsage=/<command>
|
||||
jailsCommandDescription=Liste toutes les prisons.
|
||||
jailsCommandUsage=/<command>
|
||||
jumpCommandDescription=Aller au bloc le plus proche dans le champ de vue.
|
||||
@@ -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,8 @@ 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=
|
||||
powertoollistCommandUsage=/<command>
|
||||
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.
|
||||
@@ -1081,13 +1086,13 @@ replyLastRecipientDisabledFor=<primary>Répondre au dernier destinataire du mess
|
||||
replyLastRecipientEnabled=<primary>Répondre au dernier destinataire du message \: <secondary>activé<primary>.
|
||||
replyLastRecipientEnabledFor=<primary>Répondre au dernier destinataire du message <secondary>activé <primary>pour <secondary>{0}<primary>.
|
||||
requestAccepted=<primary>Demande de téléportation acceptée.
|
||||
requestAcceptedAll=<primary>Accepté <secondary>{0} <primary> En attente demande(s) de téléportation.
|
||||
requestAcceptedAll=<primary>Accepté <secondary>{0} <primary>En attente demande(s) de téléportation.
|
||||
requestAcceptedAuto=<primary>La demande de téléportation de {0} a été acceptée automatiquement.
|
||||
requestAcceptedFrom=<secondary>{0} <primary>a accepté votre demande de téléportation.
|
||||
requestAcceptedFromAuto=<secondary>{0} <primary>a accepté votre demande de téléportation automatiquement.
|
||||
requestDenied=<primary>Demande de téléportation refusée.
|
||||
requestDeniedAll=<primary>Refusé <secondary>{0} <primary> En attente demande(s) de téléportation.
|
||||
requestDeniedFrom=<secondary>{0} <primary> a refusé votre demande de téléportation.
|
||||
requestDeniedAll=<primary>Refusé <secondary>{0} <primary>En attente demande(s) de téléportation.
|
||||
requestDeniedFrom=<secondary>{0} <primary>a refusé votre demande de téléportation.
|
||||
requestSent=<primary>Demande envoyée à<secondary> {0}<primary>.
|
||||
requestSentAlready=<dark_red>Vous avez déjà envoyé une demande de téléportation à {0}<dark_red>.
|
||||
requestTimedOut=<dark_red>La demande de téléportation a expiré.
|
||||
@@ -1128,15 +1133,17 @@ 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 \!
|
||||
serverSnapshot=<red>You are running a development snapshot build of Minecraft\! EssentialsX may not work correctly on this version, and it is not supported.
|
||||
serverUnsupported=<red>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.
|
||||
serverUnsupportedDangerous=<dark_red>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>.
|
||||
@@ -1226,6 +1233,7 @@ slimeMalformedSize=<dark_red>Taille incorrecte.
|
||||
smithingtableCommandDescription=Ouvre une table de forgeron.
|
||||
smithingtableCommandUsage=/<command>
|
||||
socialSpy=<primary>SocialSpy pour <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>(muet) <reset>
|
||||
socialspyCommandDescription=Active ou désactive l''affichage des commandes msg/mail dans le chat.
|
||||
@@ -1267,7 +1275,7 @@ suicideMessage=<primary>Adieu monde cruel...
|
||||
suicideSuccess=<gray>{0} s''est suicidé.
|
||||
survival=survie
|
||||
takenFromAccount=<green>Retrait de <yellow>{0}<green> de votre compte.
|
||||
takenFromOthersAccount=Retrait de <yellow>{0}<green> du compte de <yellow> {1}<green>. Nouveau solde \: <yellow> {2}
|
||||
takenFromOthersAccount=Retrait de <yellow>{0}<green> du compte de <yellow>{1}<green>. Nouveau solde \: <yellow>{2}
|
||||
teleportAAll=<primary>Demande de téléportation envoyée à tous les joueurs...
|
||||
teleportAll=<primary>Téléportation de tous les joueurs...
|
||||
teleportationCommencing=<gray>Début de la téléportation...
|
||||
@@ -1288,7 +1296,7 @@ teleportNoAcceptPermission=<secondary>{0} <dark_red>n''a pas la permission d''ac
|
||||
teleportRequest=<secondary>{0}<primary> vous a envoyé une demande pour se téléporter à vous.
|
||||
teleportRequestAllCancelled=<primary>Toutes les demandes de téléportation en attente ont été annulées.
|
||||
teleportRequestCancelled=<primary>Votre demande de téléportation vers <secondary>{0}<primary> a été annulée.
|
||||
teleportRequestSpecificCancelled=<primary>La demande de téléportation en attente avec <secondary> {0}<primary> a été annulée.
|
||||
teleportRequestSpecificCancelled=<primary>La demande de téléportation en attente avec <secondary>{0}<primary> a été annulée.
|
||||
teleportRequestTimeoutInfo=<primary>Cette demande de téléportation expirera dans<secondary> {0} secondes<primary>.
|
||||
teleportTop=<primary>Téléportation vers le haut.
|
||||
teleportToPlayer=<primary>Téléportation vers <secondary>{0}<primary>.
|
||||
@@ -1472,8 +1480,10 @@ unlinkCommandDescription=Déconnecte votre compte Minecraft du compte Discord ac
|
||||
unlinkCommandUsage=/<command>
|
||||
unlinkCommandUsage1=/<command>
|
||||
unlinkCommandUsage1Description=Déconnecte votre compte Minecraft du compte Discord actuellement lié.
|
||||
unmuteNotify=<secondary>{0} <primary>a réduit au silence<secondary> {1}<primary>.
|
||||
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.
|
||||
unsafeTeleportDestination=<dark_red>La destination de téléportation n''est pas sûre.
|
||||
playerNotMuted=<secondary>{0} <primary>n''est pas réduit au silence.
|
||||
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 +1600,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,18 +6,18 @@ adventure=הרפתקה
|
||||
afkCommandDescription=שם אותך כ-רחוק מהמקלדת.
|
||||
afkCommandUsage=[שחקן/הודעה...]
|
||||
afkCommandUsage1=/<command> [הודעה]
|
||||
afkCommandUsage1Description=5 ytyrty
|
||||
afkCommandUsage2=[הודעה]
|
||||
afkCommandUsage2Description=מחליף את מצב ה-רחוק מהמקלדת של השחקן הספציפי עם סיבה אופציונלית
|
||||
alertBroke=נשבר\:
|
||||
alertFormat=<dark_aqua>[{0}] <reset> {1} <primary> {2} ב\: {3}
|
||||
alertPlaced=מוקם\:
|
||||
alertUsed=שומש\:
|
||||
alphaNames=<dark_red>כינווי משתמשים יכולים להכיל אך ורק אותיות, מספרים וקווים תחתונים.
|
||||
antiBuildBreak=<dark_red> אתה לא רשאי לשבור{0} <dark_red> בלוקים כאן.
|
||||
antiBuildCraft=<dark_red> אתה לא רשאי ליצור <secondary> {0}<dark_red>.
|
||||
antiBuildDrop=<dark_red> אתה לא רשאי להפיל <secondary> {0}<dark_red>.
|
||||
antiBuildInteract=<dark_red> אתה לא רשאי ליצור קשר עם <secondary> {0}<dark_red>.
|
||||
antiBuildPlace=<dark_red> אתה לא רשאי למקם <secondary> {0} <dark_red> פה.
|
||||
antiBuildBreak=<dark_red> אתה לא רשאי לשבור{0} <dark_red>בלוקים כאן.
|
||||
antiBuildCraft=<dark_red> אתה לא רשאי ליצור <secondary>{0}<dark_red>.
|
||||
antiBuildDrop=<dark_red> אתה לא רשאי להפיל <secondary>{0}<dark_red>.
|
||||
antiBuildInteract=<dark_red> אתה לא רשאי ליצור קשר עם <secondary>{0}<dark_red>.
|
||||
antiBuildPlace=<dark_red> אתה לא רשאי למקם <secondary>{0} <dark_red>פה.
|
||||
antiBuildUse=<dark_red> אתה לא רשאי להשתמש ב<secondary> {0}<dark_red>.
|
||||
antiochCommandDescription=הפתעה קטנה למפעילים.
|
||||
antiochCommandUsage=[הודעה]
|
||||
@@ -122,7 +122,7 @@ canTalkAgain=<primary> אתה יכול לדבר עכשיו שוב.
|
||||
cantFindGeoIpDB=לא הייתה אפשרות למצוא GeoIP database\!
|
||||
cantGamemode=<dark_red>אין לך הרשאה לעבור למצב משחק {0}
|
||||
cantReadGeoIpDB=לא יכול לקרוא GeoIP database\!
|
||||
cantSpawnItem=<dark_red> אתה לא רשאי לזמן את החפץ <secondary> {0}<dark_red>.
|
||||
cantSpawnItem=<dark_red> אתה לא רשאי לזמן את החפץ <secondary>{0}<dark_red>.
|
||||
cartographytableCommandDescription=פותח שולחן קרטוגרפיה.
|
||||
cartographytableCommandUsage=/<command>
|
||||
chatTypeLocal=<dark_aqua>[צ]
|
||||
@@ -196,9 +196,9 @@ defaultBanReason=קיבלת באן מהשרת\!
|
||||
deletedHomes=כל הבתים נמחקו.
|
||||
deletedHomesWorld=כל הבתים ב-{0} נמחקו.
|
||||
deleteFileError=לא יכול למחוק קובץ\: {0}
|
||||
deleteHome=<primary>בית<secondary> {0} <primary> נמחק בהצלחה.
|
||||
deleteJail=<primary>כלא<secondary> {0} <primary> נמחק.
|
||||
deleteKit=<primary>ערכה <secondary> {0} <primary> נמחקה.
|
||||
deleteHome=<primary>בית<secondary> {0} <primary>נמחק בהצלחה.
|
||||
deleteJail=<primary>כלא<secondary> {0} <primary>נמחק.
|
||||
deleteKit=<primary>ערכה <secondary>{0} <primary>נמחקה.
|
||||
deleteWarp=\n<primary>שיגור<secondary> {0} <primary>נמחק.\n
|
||||
deletingHomes=מוחק את כל הבתים...
|
||||
deletingHomesWorld=מוחק את כל הבתים ב-{0}...
|
||||
@@ -359,9 +359,6 @@ expCommandUsage1Description=נותן לשחקן היעד את כמות ה-אקס
|
||||
expCommandUsage2=/<command> set <playername> <amount>
|
||||
expCommandUsage2Description=מגדיר את ה-אקספי של שחקן שצוין אם כמות האקספי שצוינה
|
||||
expCommandUsage3=/<command> show <playername>
|
||||
expCommandUsage4Description=מציג את הכמות של האקס פי שנמצא בבעלות השחקן
|
||||
expCommandUsage5=/<command> reset <playername>
|
||||
expCommandUsage5Description=מאפס את כמות האקס פי של השחקן ל 0
|
||||
expSet=\n<secondary>{0} <primary>יש כעת<secondary> {1} <primary>exp.\n
|
||||
extCommandDescription=מכבה שחקנים.
|
||||
extinguish=\n<primary>אתה כיבית את עצמך.\n
|
||||
@@ -397,7 +394,7 @@ flyCommandUsage=\\<command> [player] [on|off]
|
||||
flyCommandUsage1=/<command> [שחקן]
|
||||
flyCommandUsage1Description=מצב תעופה עבור עצמך או עבור שחקן אחר, אם צוין
|
||||
flying=עף / לעוף
|
||||
flyMode=\n<primary>מצב תעופה הוגדר <secondary> {0} <primary>ל {1}<primary>.\n
|
||||
flyMode=\n<primary>מצב תעופה הוגדר <secondary>{0} <primary>ל {1}<primary>.\n
|
||||
foreverAlone=\n<dark_red>אין לך אף אחד להחזיר אליו הודעה.\n
|
||||
fullStack=כבר יש לך סטאק שלם
|
||||
fullStackDefault=<primary> הסטאק שלך הוגדר לגודל ברירת המחדל שלו, <secondary>{0}<primary>.
|
||||
@@ -448,7 +445,7 @@ healCommandUsage=/<command> [שחקן]
|
||||
healCommandUsage1=/<command> [שחקן]
|
||||
healCommandUsage1Description=מרפא אותך או שחקן אחר אם צוין
|
||||
healDead=<dark_red>לא ניתן לרפא מישהו שמת\!
|
||||
healOther=<primary>ריפאת את <secondary> {0}<primary>.
|
||||
healOther=<primary>ריפאת את <secondary>{0}<primary>.
|
||||
helpCommandDescription=מציג רשימה של פקודות זמינות.
|
||||
helpCommandUsage=\\<command> [search term] [page]
|
||||
helpConsole=כדי להציג עזרה מהמסוף, הקלד ''?''.
|
||||
@@ -493,7 +490,7 @@ ignoreCommandUsage1=/<command> <player>
|
||||
ignoreCommandUsage1Description=מתעלם או מבטל התעלמות של השחקן הניתן
|
||||
ignoredList=<primary>מתעלם מהם\:<reset> {0}
|
||||
ignoreExempt=<dark_red>אתה לא יכול להתעלם מהשחקן הזה.
|
||||
ignorePlayer=<primary>אתה מתעלם מהשחקן <secondary> {0} <primary>מעכשיו on.
|
||||
ignorePlayer=<primary>אתה מתעלם מהשחקן <secondary>{0} <primary>מעכשיו on.
|
||||
ignoreYourself=<primary>התעלמות מעצמך לא תפתור את הבעיות שלך.
|
||||
illegalDate=תבנית תאריך לא חוקית.
|
||||
infoAfterDeath=<primary>אתה נהרגת ב <yellow>{0} <primary>במיקום <yellow>{1}, {2}, {3}<primary>.
|
||||
@@ -760,7 +757,7 @@ serverFull=השרת מלא\!
|
||||
serverTotal=\n<primary>שרת סך הכול\:<secondary> {0}\n
|
||||
setBal=\n<green>הכסף שלך שונה ל {0}.\n
|
||||
setBalOthers=\n<green>שינית לשחקן {0}<green>''s את כמות הכסף ל {1}.\n
|
||||
setSpawner=\n<primary>סוג המשגר שונה ל <secondary> {0}<primary>.\n
|
||||
setSpawner=\n<primary>סוג המשגר שונה ל <secondary>{0}<primary>.\n
|
||||
sethomeCommandUsage=\\<command> [[player\:]name]
|
||||
setworthCommandUsage=\\<command> [itemname|id] <price>
|
||||
setworthCommandUsage1=\\<command> <price>
|
||||
@@ -784,10 +781,10 @@ socialSpy=\n<primary>מעקב פקודות ל <secondary>{0}<primary>\: <seconda
|
||||
soloMob=\n<dark_red>מפלצת זו אוהבת לחיות לבד.\n
|
||||
spawned=שוגר
|
||||
spawnerCommandUsage=\\<command> <mob> [delay]
|
||||
spawnSet=\n<primary>מיקום שיגור הוגדר לקבוצה <secondary> {0}<primary>.\n
|
||||
spawnSet=\n<primary>מיקום שיגור הוגדר לקבוצה <secondary>{0}<primary>.\n
|
||||
sudoCommandUsage=\\<command> <player> <command [args]>
|
||||
sudoCommandUsage1=\\<command> <player> <command> [args]
|
||||
sudoRun=\n<primary>שולח פקודה בשם <secondary> {0} <primary>הפקודה הנשלחת\:<reset> /{1}\n
|
||||
sudoRun=\n<primary>שולח פקודה בשם <secondary>{0} <primary>הפקודה הנשלחת\:<reset> /{1}\n
|
||||
suicideMessage=\n<primary>להתראות עולם אכזר...\n
|
||||
suicideSuccess=\n<primary>השחקן <secondary>{0} <primary>התאבד על חייו.\n
|
||||
survival=הישרדות
|
||||
|
||||
@@ -12,7 +12,7 @@ antiBuildBreak=<dark_red>आपको यहां {0} ब्लॉकस तो
|
||||
antiBuildCraft=<dark_red>आपको {0}<dark_red> बनाने की अनुमति नहीं है<secondary>।
|
||||
antiBuildDrop=<dark_red>आपको गिरानेकी अनुमति नहीं है<secondary> {0}<dark_red>.
|
||||
antiBuildInteract=<dark_red>आपको {0}<dark_red> से इंटरैक्ट करने की अनुमति नहीं है।<secondary>
|
||||
antiBuildPlace=<dark_red>आपको {0} <dark_red> यहां रखने की अनुमति नहीं है।<secondary>
|
||||
antiBuildPlace=<dark_red>आपको {0} <dark_red>यहां रखने की अनुमति नहीं है।<secondary>
|
||||
antiBuildUse=<dark_red>आपको {0}<dark_red> इस्तमाल करने की अनुमति नहीं है।<secondary>
|
||||
antiochCommandDescription=ऑपरेटरों के लिए एक छोटा सा सरप्राइज़।
|
||||
antiochCommandUsage=/<command> [message]
|
||||
@@ -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,57 @@
|
||||
#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,68 +60,70 @@ 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.
|
||||
enchantments=<primary>Enchantmenti\:<reset> {0}
|
||||
errorCallingCommand=Greška pri pozivanju komande /{0}
|
||||
errorWithMessage=<secondary>Greška\: <dark_red> {0}
|
||||
errorWithMessage=<secondary>Greška\: <dark_red>{0}
|
||||
essentialsHelp1=Datoteka je pokidana i Essentials nije mogao ju otvoriti. Essentials je sada isključen. Ako ne možete popraviti datoteku pogledajte https\://tiny.cc/EssentialsChat
|
||||
essentialsHelp2=Datoteka je pokidana i Essentials nije mogao ju otvoriti. Essentials je sada isključen. Ako ne možete popraviti datoteku napišite /essentialshelp u igri ili pogledajte https\://tiny.cc/EssentialsChat
|
||||
essentialsReload=<primary>Essentials osvježen<secondary> {0}.
|
||||
exp=<secondary>{0} <primary>ima<secondary> {1} <primary>exp (level<secondary> {2}<primary>) i treba jos<secondary> {3} <primary> exp za level up.
|
||||
exp=<secondary>{0} <primary>ima<secondary> {1} <primary>exp (level<secondary> {2}<primary>) i treba jos<secondary> {3} <primary>exp za level up.
|
||||
expSet=<secondary>{0} <primary>sada ima<secondary> {1} <primary>exp.
|
||||
extinguish=<primary>Ugasio si se.
|
||||
extinguishOthers=<primary>Ugasio si {0}<primary>.
|
||||
@@ -121,29 +135,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.
|
||||
gcfree=<primary>Slobodno memorije\: <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}
|
||||
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 +165,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 +183,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.
|
||||
itemNames=<primary>Item kratka imena\: <reset>{0}
|
||||
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 +272,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.
|
||||
@@ -407,7 +421,7 @@ warpUsePermission=&7Nemas dozvolu za koristenje ovog warpa.
|
||||
weatherStorm=&7Stavio si vrijeme od &3oluje &7u &3{0}&7.
|
||||
weatherSun=&7Stavio si vrijeme od &3sunca &7u &3{0}&7.
|
||||
whoisAFK=&7 - AFK\:&3 {0}
|
||||
whoisBanned=<primary> - Banovan\: <reset> {0}
|
||||
whoisBanned=<primary> - Banovan\: <reset>{0}
|
||||
whoisExp=&7 - Level\:&3 {0} (Level {1})
|
||||
whoisFly=&7 - Nacin letenja\:&3 {0} ({1})
|
||||
whoisGamemode=&7 - Gamemode\: &3 {0}
|
||||
|
||||
Loaded 100 of 161 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user