Prepare 1.17 release (#88)

* Fixes a 1.18 world generator bug where it generated dirt-grass layers.

Expose 3 world generator options for overworld:
- natural-surface - generates surface that is natural(-ish). Currently, it may be just grass and dirt layers.
- natural-caves - generates caves inside world.
- natural-bedrock - generates natural looking bedrock pattern.

This also fixes a bug with floor and roof config option not working properly.

Fixes https://github.com/BentoBoxWorld/Level/issues/258

* Fixes issue when ores were not generated in correct form. #77

* Init 1.17.0 version

* Translate de.yml via GitLocalize (#84)

Co-authored-by: Patrick <patrick.wassmuth@gmx.de>

* Translate ru.yml via GitLocalize (#85)

Co-authored-by: Marmur2020 <marmur2020@gmail.com>

* Rework entity populator.

The new world populator on some engines are multi-threaded, however, minecraft does not allow to remove entities outside main-thread. As entity populator spawned entity and then removed when there were no spot for it, servers crashed.

The issue should be fixed now as I add custom entity bounding box calculator before it is spawned to check if there is place for entity.

Fixes #86

* Caveblock TR locale (#87)

* Translate tr.yml via GitLocalize

* Translate tr.yml via GitLocalize

* Translate tr.yml via GitLocalize

Co-authored-by: Wolerus <yakup1907.sen@gmail.com>
Co-authored-by: Over_Brave <soncesurlar@gmail.com>
Co-authored-by: mt-gitlocalize <mt@gitlocalize.com>

Co-authored-by: gitlocalize-app[bot] <55277160+gitlocalize-app[bot]@users.noreply.github.com>
Co-authored-by: Patrick <patrick.wassmuth@gmx.de>
Co-authored-by: Marmur2020 <marmur2020@gmail.com>
Co-authored-by: Wolerus <yakup1907.sen@gmail.com>
Co-authored-by: Over_Brave <soncesurlar@gmail.com>
Co-authored-by: mt-gitlocalize <mt@gitlocalize.com>
This commit is contained in:
BONNe 2023-01-05 21:21:23 +02:00 committed by GitHub
parent 0cbb775db7
commit 3070abe260
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 409 additions and 30 deletions

View File

@ -43,14 +43,14 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>16</java.version>
<java.version>17</java.version>
<!-- More visible way how to change dependency versions -->
<spigot.version>1.18.1-R0.1-SNAPSHOT</spigot.version>
<spigot.version>1.19.2-R0.1-SNAPSHOT</spigot.version>
<bentobox.version>1.19.0</bentobox.version>
<!-- Revision variable removes warning about dynamic version -->
<revision>${build.version}-SNAPSHOT</revision>
<!-- This allows to change between versions and snapshots. -->
<build.version>1.16.0</build.version>
<build.version>1.17.0</build.version>
<build.number>-LOCAL</build.number>
<sonar.organization>bentobox-world</sonar.organization>
<sonar.host.url>https://sonarcloud.io</sonar.host.url>

View File

@ -11,6 +11,8 @@ import org.bukkit.generator.BlockPopulator;
import org.bukkit.generator.LimitedRegion;
import org.bukkit.generator.WorldInfo;
import org.bukkit.util.BoundingBox;
import org.eclipse.jdt.annotation.NonNull;
import world.bentobox.bentobox.util.Pair;
import world.bentobox.caveblock.CaveBlock;
import world.bentobox.caveblock.Utils;
@ -95,7 +97,7 @@ public class EntitiesPopulator extends BlockPopulator {
* @param limitedRegion Region where population operates.
*/
@Override
public void populate(WorldInfo worldInfo, Random random, int chunkX, int chunkZ, LimitedRegion limitedRegion) {
public void populate(WorldInfo worldInfo, @NonNull Random random, int chunkX, int chunkZ, @NonNull LimitedRegion limitedRegion) {
int minHeight = worldInfo.getMinHeight();
int height = Math.min(worldInfo.getMaxHeight(), worldHeight) - 1;
@ -168,29 +170,22 @@ public class EntitiesPopulator extends BlockPopulator {
if (!limitedRegion.isInRegion(location)) return;
if (!limitedRegion.getType(location).equals(originalMaterial)) return;
Entity entity = limitedRegion.spawnEntity(location, entityType);
if (entity instanceof LivingEntity livingEntity) {
livingEntity.setAI(hasAI);
livingEntity.setRemoveWhenFarAway(false);
}
BoundingBox bb = this.getEntityBoundingBox(entityType, location);
BoundingBox bb = entity.getBoundingBox();
for (int x = (int) Math.floor(bb.getMinX()); x < bb.getMaxX(); x++) {
for (int z = (int) Math.floor(bb.getMinZ()); z < bb.getMaxZ(); z++) {
int y = (int) Math.floor(bb.getMinY());
if (!limitedRegion.isInRegion(x, y, z)) {
entity.remove();
return;
}
for (; y <= bb.getMaxY(); y++) {
if (addon.getSettings().isDebug()) {
addon.log("DEBUG: Entity spawn: " + worldInfo.getName() + " " + x + " " + y + " " + z + " " + entity.getType());
addon.log("DEBUG: Entity spawn: " + worldInfo.getName() + " " + x + " " + y + " " + z + " " + entityType);
}
if (!limitedRegion.isInRegion(x, y, z) || !limitedRegion.getType(x, y, z).equals(originalMaterial)) {
// Cannot place entity
entity.remove();
return;
}
limitedRegion.setType(x, y, z, WATER_ENTITIES.contains(entityType) ? Material.WATER : Material.AIR);
@ -201,8 +196,86 @@ public class EntitiesPopulator extends BlockPopulator {
}
}
}
Entity entity = limitedRegion.spawnEntity(location, entityType);
if (entity instanceof LivingEntity livingEntity)
{
livingEntity.setAI(hasAI);
livingEntity.setRemoveWhenFarAway(false);
}
}
/**
* This is manual bounding box calculation base on entity type.
* @param entityType Entity type which bounding box should be created.
* @param location Location of the bounding box.
* @return Approximate bounding box of the entity type.
*/
private BoundingBox getEntityBoundingBox(EntityType entityType, Location location)
{
BoundingBox boundingBox = new BoundingBox();
// Set bounding box to 1 for all entities
boundingBox.expand(1);
// Shift to correct location.
boundingBox.shift(location);
switch (entityType)
{
// Turtles base size is 1.1
case TURTLE -> boundingBox.expand(-0.05, 0, -0.05, 0.05, 0, 0.05);
// Panda base size is 1.3 and height is 1.25
case PANDA -> boundingBox.expand(-0.15, 0, -0.15, 0.15, 0.25, 0.15);
// Sheep height is 1.3
case SHEEP -> boundingBox.expand(0, 0, 0, 0, 0.3, 0);
// Cow height is 1.4
case COW, MUSHROOM_COW -> boundingBox.expand(0, 0, 0, 0, 0.4, 0);
// Polar Bear base size is 1.3 and height is 1.4
case POLAR_BEAR -> boundingBox.expand(-0.15, 0, -0.15, 0.15, 0.4, 0.15);
// Horse base size is 1.3964
case HORSE, ZOMBIE_HORSE, SKELETON_HORSE -> boundingBox.expand(-0.2, 0, -0.2, 0.2, 0.6, 0.2);
// Llama height is 1.875
case LLAMA -> boundingBox.expand(0, 0, 0, 0, 0.875, 0);
// Ravager base size is 1.95 and height is 2.2
case RAVAGER -> boundingBox.expand(-0.48, 0, -0.48, 0.48, 1.2, 0.48);
// Spider base size is 1.4
case SPIDER -> boundingBox.expand(-0.2, 0, -0.2, 0.2, 0, 0.2);
// Creeper height 1.7
case CREEPER -> boundingBox.expand(0, 0, 0, 0, 0.7, 0);
// Blaze height 1.8
case BLAZE -> boundingBox.expand(0, 0, 0, 0, 0.8, 0);
// Zombie, evoker, villager, husk, witch, vindicator, illusioner, drowned, pigman, villager and pillager height is 1.95
case ZOMBIE, EVOKER, VILLAGER, HUSK, WITCH, VINDICATOR, ILLUSIONER, DROWNED, PIGLIN, PIGLIN_BRUTE, ZOMBIFIED_PIGLIN, ZOMBIE_VILLAGER, PILLAGER, WANDERING_TRADER ->
boundingBox.expand(0, 0, 0, 0, 0.95, 0);
// Skeletons height is 1.99
case SKELETON, STRAY -> boundingBox.expand(0, 0, 0, 0, 0.99, 0);
// Elder Guardians base height is 2
case ELDER_GUARDIAN -> boundingBox.expand(-0.5, 0, -0.5, 0.5, 1, 0.5);
// Slimes are up to 2.04
case SLIME -> boundingBox.expand(-0.5, 0, -0.5, 0.5, 1, 0.5);
// Wither skeletons height is 2.4
case WITHER_SKELETON -> boundingBox.expand(0, 0, 0, 0, 1.4, 0);
// Wither height is 3.5
case WITHER -> boundingBox.expand(0, 0, 0, 0, 2.5, 0);
// Enderman height is 2.9
case ENDERMAN -> boundingBox.expand(0, 0, 0, 0, 1.9, 0);
// Ghast base size is 4
case GHAST -> boundingBox.expand(-2, 0, -2, 2, 3, 2);
// Iron Golem base size is 1.4 and height is 2.7
case IRON_GOLEM -> boundingBox.expand(-0.2, 0, -0.2, 0.2, 1.7, 0.2);
// Snowman height is 1.9
case SNOWMAN -> boundingBox.expand(0, 0, 0, 0, 0.9, 0);
// Hoglin base size is 1.4 and height is 1.3965
case HOGLIN, ZOGLIN -> boundingBox.expand(-0.2, 0, -0.2, 0.2, 0.4, 0.2);
// Warden height is 2.9
case WARDEN -> boundingBox.expand(0, 0, 0, 0, 1.9, 0);
}
return boundingBox;
}
// ---------------------------------------------------------------------
// Section: Private Classes
// ---------------------------------------------------------------------

View File

@ -18,6 +18,8 @@ caveblock:
no-safe-location-found: "&cKann keinen sicheren Ort finden, an den du dich in
der Höhle teleportieren kannst."
not-owner: "&cDu bist nicht der Besitzer deiner Höhle!"
cave-limit-reached: "&c Du hast die Spitze deiner Höhle erreicht. Höher geht
nicht!"
commands:
admin:
team:
@ -81,7 +83,7 @@ caveblock:
Höhlen im Müll
setrange:
description: Stellen Sie die Reichweite der Spielerhöhle ein
range-updated: Höhlenbereich auf [Nummer] aktualisiert
range-updated: Höhlenbereich auf [number] aktualisiert
tp:
description: teleportiere zur Höhle eines Spielers
getrank:
@ -141,15 +143,15 @@ caveblock:
description: Lass einen Spieler in deiner Höhle ranken
uncoop:
you-are-no-longer-a-coop-member: "&cSie sind kein Coop-Mitglied mehr in
der Höhle von [Name]"
der Höhle von [name]"
all-members-logged-off: "& cAlle Höhlenmitglieder haben sich abgemeldet,
sodass Sie nicht länger ein Coop-Mitglied der Höhle von [Name] sind"
sodass Sie nicht länger ein Coop-Mitglied der Höhle von [name] sind "
trust:
description: Gib einem Spieler einen vertrauenswürdigen Rang in deiner Höhle
invite:
description: Lade einen Spieler ein, sich deiner Höhle anzuschließen
name-has-invited-you: "& a [Name] hat dich eingeladen, dich ihrer Höhle
anzuschließen."
name-has-invited-you: "& a [name] hat dich eingeladen, dich ihrer Höhle
anzuschließen. "
you-will-lose-your-island: "& WARNUNG! Sie werden Ihre Höhle verlieren,
wenn Sie akzeptieren!"
errors:
@ -164,16 +166,16 @@ caveblock:
reject:
you-rejected-invite: "& aSie lehnten die Einladung ab, sich einer Höhle
anzuschließen."
name-rejected-your-invite: "& c [Name] hat deine Höhleneinladung abgelehnt!"
name-rejected-your-invite: "& c [name] hat deine Höhleneinladung abgelehnt!"
cancel:
description: storniere die ausstehende Einladung, dich deiner Höhle anzuschließen
leave:
description: Verlasse deine Höhle
left-your-island: "& c [Name] & spalte deine Höhle"
left-your-island: "& c [name] & spalte deine Höhle"
kick:
description: Entferne ein Mitglied aus deiner Höhle
owner-kicked: "& cDer Besitzer hat dich aus der Höhle geworfen!"
success: "& b [Name] & wurde aus deiner Höhle geworfen."
success: "& b [name] & wurde aus deiner Höhle geworfen."
demote:
description: Herabstufen eines Spielers in Ihrer Höhle um einen Rang
promote:
@ -182,19 +184,19 @@ caveblock:
description: Übertragen Sie Ihren Höhlenbesitz auf ein Mitglied
errors:
target-is-not-member: "& cDieser Spieler ist nicht Teil Ihres Höhlenteams!"
name-is-the-owner: "& a [Name] ist jetzt der Höhlenbesitzer!"
name-is-the-owner: "& a [name] ist jetzt der Höhlenbesitzer!"
you-are-the-owner: "& aSie sind jetzt der Höhlenbesitzer!"
ban:
description: verbanne einen Spieler aus deiner Höhle
cannot-ban-more-players: "& cSie haben das Sperrlimit erreicht, können Sie
keine Spieler mehr aus Ihrer Höhle verbannen."
player-banned: "& b [Name] & c ist jetzt aus deiner Höhle verbannt."
owner-banned-you: "& b [Name] & c hat dich aus ihrer Höhle verbannt!"
player-banned: "& b [name] & c ist jetzt aus deiner Höhle verbannt."
owner-banned-you: "& b [name] & c hat dich aus ihrer Höhle verbannt!"
you-are-banned: "& bSie sind aus dieser Höhle verbannt!"
unban:
description: Entbinde einen Spieler aus deiner Höhle
player-unbanned: "& b [Name] & a ist jetzt nicht mehr in deiner Höhle verboten."
you-are-unbanned: "& b [Name] & a verbannt dich aus ihrer Höhle!"
player-unbanned: "& b [name] & a ist jetzt nicht mehr in deiner Höhle verboten."
you-are-unbanned: "& b [name] & a verbannt dich aus ihrer Höhle!"
banlist:
noone: "& aKeine Höhle ist in dieser Höhle verboten."
settings:
@ -202,7 +204,7 @@ caveblock:
expel:
description: Vertreibe einen Spieler aus deiner Höhle
not-on-island: "& cDieser Spieler ist nicht in deiner Höhle!"
player-expelled-you: "& b [Name] & c hat dich aus der Höhle vertrieben!"
player-expelled-you: "& b [name] & c hat dich aus der Höhle vertrieben!"
ranks:
owner: Zwergenkönig
sub-owner: Zwergenritter
@ -219,7 +221,7 @@ caveblock:
& Ablocks aus Höhlen
name: Enderman trauert
ENTER_EXIT_MESSAGES:
island: "[Name] Höhle"
island: "[name] Höhle"
GEO_LIMIT_MOBS:
description: |-
& aEntferne Mobs, die gehen
@ -287,8 +289,8 @@ caveblock:
hint: "& cSie können sich nicht in Ihre Höhle zurück teleportieren, während
Sie fallen."
locked: "& cDiese Höhle ist verschlossen!"
protected: "& cCave protected: [Beschreibung]"
spawn-protected: "& cSpawn protected: [Beschreibung]"
protected: "& cCave protected: [description]"
spawn-protected: "& cSpawn protected: [description]"
panel:
PROTECTION:
description: |-

View File

@ -18,6 +18,8 @@ caveblock:
no-safe-location-found: "&cНе удалось найти безопасное место для телепортации
в пещеру."
not-owner: "&cВы не владелец этой пещеры!"
cave-limit-reached: "&c Вы достигли вершины своей пещеры. Вы не можете стать
выше!"
commands:
admin:
team:

View File

@ -0,0 +1,302 @@
---
caveblock:
sign:
line0: "&cCaveBlock"
line1: Hoş geldin!
line2: "[isim]"
line3: Kazmaya başlayın! &c<3
informational:
to-nether: Şansızca nethere düştün.
to-the-end: Sona ulaştınız.
to-normal: Mağarana geri dön
general:
errors:
no-island: "&cMağaraya sahip değilsin!"
player-has-island: "&cOyuncu bir mağaraya sahip!"
player-has-no-island: "&cBu oyuncunun mağarası yok!"
already-have-island: "&cZaten bir mağaraya sahipsin!"
no-safe-location-found: "&cMağarada sizi ışınlayacak güvenli bir yer bulunamadı."
not-owner: "&cMağaranın sahibi sen değilsin!"
cave-limit-reached: "&c Mağaranızın tepesine ulaştınız. Daha yükseğe çıkamazsın!"
commands:
admin:
team:
add:
name-has-island: "&c[name] bir mağaraya sahip, tekrar kayıt olmalı ya da
silmeli!"
success: "&b[name]&a Başarıyla &b[owner]&a'nın mağarasına katıldı."
kick:
success: "&b[name] , &b[owner]&a'nın mağarasından atıldı."
setowner:
description: Mağara sahipliğini oyuncuya verir
already-owner: "&c[name] zaten bu mağaranın sahibi!"
success: "&b[name]&a artık mağaranın sahibi."
range:
description: Yönetici mağara Alanı komutu
display:
description: mağara alanı göstergeleri show/hide
hint: |-
&cKırmızı Bariyer simgeleri &fmevcut mağara korumalı menzil sınırını gösterir.
&7Gri Parçacıklar &fmaksimum mağara sınırını gösterir.
&aYeşil Parçacıklar &fmağara koruma aralığı bundan farklıysa, varsayılan korumalı aralığı gösterir.
set:
description: mağara korumalı alanı ayarlar
success: "&aMağara koruma aralığını &b[number]'a ayarla."
reset:
description: mağara korumalı aralığı dünya varsayılanına sıfırlar
success: "&aMağara koruma aralığını &b[number]'a sıfırla."
register:
description: Oyuncuyu bulunduğunuz sahipsiz mağaraya kaydedin
registered-island: "&aKayıtlı oyuncu [xyz]'de mağaraya kayıt oldu"
already-owned: "&cMağara zaten başka bir oyuncuya ait!"
no-island-here: "&cBurada mağara yok. Bir tane yapmayı onaylayın."
in-deletion: "&cBu mağara alanı şu anda siliniyor. Daha sonra tekrar deneyin."
cannot-make-island: "&c Buraya bir mağara yerleştirilemez, üzgünüm. Olası
hatalar için konsola bakın."
unregister:
description: sahibinin kaydını mağaradan sil, ancak mağara bloklarını sakla
unregistered-island: "&a[xyz]'deki mağaradan kayıtlı olmayan oyuncu."
info:
description: nerde olduğunuz veya oyuncunun mağarası hakkında bilgi al
no-island: "&cŞu anda bir mağarada değilsiniz..."
title: "========== Mağara Bilgisi ============"
islands-in-trash: "&dPlayer'ın çöp kutusunda mağaraları var."
is-spawn: Başlangıç mağarasıdır.
switchto:
description: oyuncunun mağarasını çöp kutusundaki bir numaraya değiştir
out-of-range: "&cSayı 1 ile [sayı] arasında olmalıdır. Mağara numaralarını
görmek için &l[label] çöp kutusu [player] &r&kullanın"
trash:
no-unowned-in-trash: "&cÇöp kutusunda sahipsiz mağara yok"
no-islands-in-trash: "&cPlayer'ın çöp kutusunda mağarası yok"
description: sahipsiz mağaraları veya oyuncunun mağaralarını çöp kutusunda
göster
title: "&d=========== Çöpteki Mağaralar ==========="
count: "&l&dMağara [number]:"
use-switch: "&aOyuncuyu çöp kutusunda mağaraya geçirmek için &l[label] switchto
<player> <number>&r&a kullanın"
emptytrash:
description: Oyuncu için çöp kutusunu veya sahip olunmayan tüm mağaraları
çöp kutusundan temizleyin
setrange:
description: oyuncunun mağara aralığını ayarla
range-updated: Mağara aralığı [sayı] olarak güncellendi
tp:
description: oyuncunun mağarasına ışınlanma
getrank:
description: bir oyuncunun rütbesini mağarasında almak
rank-is: "&aRank onların mağarasında [rütbe]."
setrank:
description: bir oyuncunun sıralamasını mağarasında belirle
setspawn:
description: bu dünya için bir mağara belirle
already-spawn: "&cBu mağara zaten bir oluşum!"
no-island-here: "&cBurada mağara yok."
confirmation: "&cBu mağarayı bu dünyanın doğuşu olarak ayarlamak istediğinizden
emin misiniz?"
resetflags:
description: config.yml'deki tüm mağaraları varsayılan bayrak ayarlarına sıfırlayın
delete:
description: bir oyuncunun mağarasını siler
cannot-delete-owner: "&cMağara silinmeden önce tüm mağara üyelerinin mağaradan
atılması gerekir."
deleted-island: "&e[xyz] &akoordinatlı mağara başarıyla silindi."
island:
go:
description: Mağarana ışınlan
teleport: "&aSizi mağaranıza ışınlıyorum."
help:
description: Ana mağara komutu
create:
description: Bir mağara oluştur, isteğe bağlı blueprint kullanımı (izin gerekli)
too-many-islands: "&cBu dünyada çok fazla mağara var: seninkinin yaratılması
için yeterli yer yok."
unable-create-island: "&cMağaranız oluşturulamadı, lütfen bir yönetici ile
iletişime geçin."
creating-island: "&aMağaranız oluşturuluyor, lütfen biraz bekleyin..."
pick: "&aBir mağara seçin"
info:
description: mağaranız veya oyuncunun mağarası hakkında bilgi görüntüleyin
near:
description: Çevredeki mağaraları göster
the-following-islands: "&aAşağıdaki mağaralar yakındadır:"
no-neighbors: "&cYakın komşu mağaranız yok!"
reset:
description: mağaranızı yeniden başlatın ve eskisini kaldırın
must-remove-members: "&cMağaranızı yeniden başlatmadan önce tüm üyeleri çıkarmalısınız
(/island team kick <player>)."
sethome:
must-be-on-your-island: "&cEve gitmek için mağaranızda olmalısınız!"
home-set: "&6Mağara eviniz mevcut konumunuza ayarlandı."
setname:
description: Mağaran için isim belirle
resetname:
description: mağara adını sıfırla
team:
coop:
description: Bir oyuncuyu mağaranda işçi yap
uncoop:
you-are-no-longer-a-coop-member: "&cArtık [isim] adlı kişinin mağarasının
kooperatif üyesi değilsin"
all-members-logged-off: "&cTüm mağara üyeleri oturumu kapattı, böylece artık
[ad] adlı kişinin mağarasının bir kooperatif üyesi değilsiniz"
trust:
description: mağaranızda bir oyuncuya güvenilir rütbe verin
invite:
description: bir oyuncuyu mağaranıza katılmaya davet edin
name-has-invited-you: "&a[name] sizi mağarasına davet etti."
you-will-lose-your-island: "&cUYARI! Kabul edersen mağaranı kaybedersin!"
errors:
island-is-full: "&cMağaranız dolu, başkasını davet edemezsiniz."
accept:
you-joined-island: "&aBir mağaraya katıldınız! Diğer üyeleri görmek için
/[label] takım bilgisini kullanın."
name-joined-your-island: "&a[name] Mağarana katıldı!"
confirmation: |-
&cBu daveti kabul etmek istediğinizden emin misiniz?
&c&lMevcut mağaranızı &n&c&l&nkaybedeceksiniz!
reject:
you-rejected-invite: "&aBir mağaraya katılma davetini reddettiniz."
name-rejected-your-invite: "&c[isim] mağara davetinizi reddetti!"
cancel:
description: mağaranıza katılmak için bekleyen daveti iptal edin
leave:
description: mağaranı terk et
left-your-island: "&c[name] &cMağarandan ayrıldı"
kick:
description: mağaranızdan bir üyeyi çıkarın
owner-kicked: "&cSahibi seni mağaradan attı!"
success: "&b[name] &aMağaradan atıldı."
demote:
description: Mağaranızdaki bir oyuncuyu bir rütbe aşağı indirin
promote:
description: mağaranızdaki bir oyuncuyu bir üst rütbeye terfi ettirin
setowner:
description: mağara sahipliğini bir üyeye devret
errors:
target-is-not-member: "&cBu oyuncu mağara ekibinizin bir parçası değil!"
name-is-the-owner: "&a[isim] artık mağaranın sahibi!"
you-are-the-owner: "&aArtık mağara sahibi sizsiniz!"
ban:
description: mağaranızdan bir oyuncuyu yasaklayın
cannot-ban-more-players: "&cYasak sınırına ulaştınız, mağaranızdan daha fazla
oyuncu yasaklayamazsınız."
player-banned: "&b[name]&c artık mağaranıza girmesi yasaklandı."
owner-banned-you: "&b[name]&c Mağarasından banlandın!"
you-are-banned: "&bBu mağaraya girmeniz yasaklandı!"
unban:
description: mağaranızdaki bir oyuncunun yasağını kaldırın
player-unbanned: "&b[name]&a artık mağaranızdan çıkar."
you-are-unbanned: "&b[name] sizi mağaralarından çıkardı!"
banlist:
noone: "&aKimse bu mağarada yasaklı değil."
settings:
description: mağara ayarlarını göster
expel:
description: bir oyuncuyu mağarandan kov
not-on-island: "&cOyuncu mağaranızda değil!"
player-expelled-you: "&b[name]&c seni mağaradan kovdu!"
ranks:
owner: Cüce Kral
sub-owner: Cüce Şövalye
member: Cüce
trusted: güvenilir
coop: Kümes
visitor: İnsan
banned: Orc
protection:
flags:
ENDERMAN_GRIEFING:
description: |-
&aEndermen kaldırabilir
&mağaralardan birkaç blok ötede
name: Enderman kederli
ENTER_EXIT_MESSAGES:
island: "[isim] mağarası"
GEO_LIMIT_MOBS:
description: |-
&aGidip gelen çeteleri kaldır
&dış korumalı
&akave alanı
name: "&eÇeteleri mağaraya sınırlayın"
ISLAND_RESPAWN:
description: |-
&aOyuncular mağarada
&atekrar doğar.
name: Mağara yeniden doğuşu
LIQUIDS_FLOWING_OUT:
name: Mağaraların dışında akan sıvılar
description: |-
&aSıvıların dışarıya akıp akmayacağını değiştir
&a mağaranın koruma aralığında.
LOCK:
description: Kilidi değiştir
name: Mağarayı kilitle
NATURAL_SPAWNING_OUTSIDE_RANGE:
name: Menzil dışında yumurtlayan doğal yaratık
description: |-
&aYaratıklar (hayvanlar ve
&amonsters) dışarıda doğal olarak ortaya çıkabilir
&aa mağarasının koruma alanı.
&cYaratıkları engellemediğini unutmayın
&cto bir mafya oluşturucu veya bir yumurtlama aracıyla yumurtlar
&cig.
OFFLINE_GROWTH:
description: |-
&aDevre dışı bırakıldığında bitkiler
&a mağaralarda büyümeyecek
&atüm üyeler çevrimdışı olduğunda.
&aGecikmeyi azaltmaya yardımcı olabilir.
name: Çevrimdışı Büyüme
OFFLINE_REDSTONE:
description: |-
&aDevre dışı bırakıldığında, redstone
&a mağaralarda çalışmayacaktır
&tüm üyelerin çevrimdışı olduğu bir yer.
&aGecikmeyi azaltmaya yardımcı olabilir.
name: Kapalı Kızıltaş
PISTON_PUSH:
description: |-
&aPistonların itmesine izin ver
&mağaranın dışındaki bloklar
name: Piston itme
REMOVE_MOBS:
description: |-
&aCanavarları kaldır
&mağaraya ışınlanma
name: Canavarları kaldır
TREES_GROWING_OUTSIDE_RANGE:
name: Menzil dışında büyüyen ağaçlar
description: |-
&aAğaçların bir alanın dışında büyüyüp büyüyemeyeceğini değiştir
&aMağaranın koruma menzili içinde olup olmadığı.
PREVENT_TELEPORT_WHEN_FALLING:
name: Düşerken ışınlanmayı engelle
description: |-
&aOyuncuların ışınlanmasını engelle
&komutları kullanarak mağaralarına geri dönün
Düşüyorlarsa.
hint: "&cDüştüğün için mağaraya ışınlanamazsın."
locked: "&cBu mağara kilitli!"
protected: "&cCave korumalı: [açıklama]"
spawn-protected: "&cSpawn korumalı: [açıklama]"
panel:
PROTECTION:
description: |-
&aKoruma ayarları
&bu mağara için
SETTING:
description: |-
&aGenel ayarlar
&bu mağara için
protection:
flags:
SKY_WALKER_FLAG:
description: |-
&5&oEtkinleştir/devre dışı bırak
&5&o üzerinde yürüme yeteneği
&5&o mağara dünyasının zirvesi
Ekstra izinler olmadan &5&o.
name: Gökyüzü Yürüteç
hint: Mağara çatısında yürümeyi sağlar.