mirror of
https://github.com/BentoBoxWorld/CaveBlock.git
synced 2024-11-15 10:25:11 +01:00
Compare commits
No commits in common. "develop" and "1.13.0" have entirely different histories.
38
.github/workflows/build.yml
vendored
38
.github/workflows/build.yml
vendored
@ -1,38 +0,0 @@
|
||||
name: Build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
- master
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened]
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: 17
|
||||
- name: Cache SonarCloud packages
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.sonar/cache
|
||||
key: ${{ runner.os }}-sonar
|
||||
restore-keys: ${{ runner.os }}-sonar
|
||||
- name: Cache Maven packages
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.m2
|
||||
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
|
||||
restore-keys: ${{ runner.os }}-m2
|
||||
- name: Build and analyze
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
|
||||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||
run: mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=BentoBoxWorld_CaveBlock
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -26,5 +26,3 @@ hs_err_pid*
|
||||
/.classpath
|
||||
/.project
|
||||
/.settings/
|
||||
/.idea/
|
||||
/CaveBlock.iml
|
||||
|
22
.travis.yml
Normal file
22
.travis.yml
Normal file
@ -0,0 +1,22 @@
|
||||
language: java
|
||||
sudo: false
|
||||
addons:
|
||||
sonarcloud:
|
||||
organization: "bentobox-world"
|
||||
|
||||
jdk:
|
||||
- openjdk8
|
||||
- openjdk11
|
||||
|
||||
matrix:
|
||||
allow_failures:
|
||||
- jdk: openjdk11
|
||||
|
||||
script:
|
||||
# the following command line builds the project, runs the tests with coverage and then execute the SonarCloud analysis
|
||||
- mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install sonar:sonar -Dsonar.projectKey=BentoBoxWorld_CaveBlock
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- '$HOME/.m2/repository'
|
||||
- '$HOME/.sonar/cache'
|
55
README.md
55
README.md
@ -3,54 +3,14 @@
|
||||
[![Discord](https://img.shields.io/discord/272499714048524288.svg?logo=discord)](https://discord.bentobox.world)
|
||||
[![Build Status](https://ci.codemc.org/buildStatus/icon?job=BentoBoxWorld/CaveBlock)](https://ci.codemc.org/job/BentoBoxWorld/job/CaveBlock/)
|
||||
|
||||
# Welcome to CaveBlock for BentoBox!
|
||||
CaveBlock is an addon for BentoBox, so to run CaveBlock, you must have BentoBox installed. It is not a Bukkit plugin and trying to use it as one will not work.
|
||||
|
||||
🌌 **Embark on a Subterranean Adventure!**
|
||||
## Translation
|
||||
|
||||
CaveBlock is an enthralling GameMode addon for BentoBox, designed to take your Minecraft experience to new depths. In this unique underground world, every adventure, challenge, and mystery lies beneath the surface.
|
||||
As most of BentoBox projects, CaveBlock Addon is translatable in any language. Everyone can contribute, and translate some parts of the addon in their language via [GitLocalize](https://gitlocalize.com/repo/2968).
|
||||
If your language is not in the list, please contact to developers via Discord and it will be added there.
|
||||
|
||||
<img src=https://github.com/BentoBoxWorld/CaveBlock/assets/4407265/af407f94-1943-4e27-96e1-d3e2ed33330f width="400">
|
||||
|
||||
## What is CaveBlock?
|
||||
|
||||
CaveBlock transforms the familiar Minecraft landscape into a vast underground realm. As a player, you begin your journey in a modest cave, equipped with only essential items. Your mission is to mine, explore, and expand your subterranean domain.
|
||||
|
||||
### Key Features:
|
||||
|
||||
- **Start Small, Dream Big:** Begin in a small cave and use your mining skills to expand your territory.
|
||||
- **Treasure Hunting:** Delve deeper to discover hidden treasures and rare resources.
|
||||
- **Beware of the Dark:** Monsters lurk in the shadows. Prepare for encounters with creatures of the deep.
|
||||
- **Build and Craft:** Utilize your resources to craft tools, build structures, and create your own underground empire.
|
||||
|
||||
## Getting Started with CaveBlock
|
||||
|
||||
CaveBlock is an addon for BentoBox, a Bukkit plugin for Minecraft. To dive into this underground adventure, you'll need to have BentoBox installed on your Minecraft server.
|
||||
|
||||
### Installation:
|
||||
|
||||
1. **Install BentoBox:** Make sure BentoBox is installed and running on your server.
|
||||
2. **Download CaveBlock:** Get the CaveBlock addon from the [official download site](https://download.bentobox.world). Or download from the releases in this repo.
|
||||
3. **Add to BentoBox:** Place the CaveBlock file in your BentoBox addons folder.
|
||||
4. **Restart Your Server:** Once installed, restart your server to activate CaveBlock.
|
||||
|
||||
### Dive Into the Depths!
|
||||
|
||||
Are you ready to explore the unknown and carve out your own piece of the underground world? Download CaveBlock now and start your subterranean adventure!
|
||||
|
||||
🔍 **Stay Updated:** For the latest updates, follow our [Discord](https://discord.gg/tqQbNA5X9A).
|
||||
|
||||
---
|
||||
|
||||
*Note: CaveBlock is constantly being updated with new features and improvements. Keep an eye on our release notes for the latest enhancements.*
|
||||
|
||||
**Happy Mining!** 🌐🛠️👾
|
||||
|
||||
## Translations
|
||||
|
||||
Like most BentoBox projects, the CaveBlock Addon is translatable into any language. Everyone can contribute, and translate some parts of the addon into their language via [GitLocalize](https://gitlocalize.com/repo/2968).
|
||||
If your language is not in the list, please contact the developers via Discord, and it will be added.
|
||||
|
||||
## Full Installation Instructions
|
||||
## Installation
|
||||
|
||||
0. Install BentoBox and run it on the server at least once to create its data folders.
|
||||
1. Place this jar in the addons folder of the BentoBox plugin.
|
||||
@ -64,7 +24,10 @@ If your language is not in the list, please contact the developers via Discord,
|
||||
## Config.yml
|
||||
|
||||
The config.yml is similar to BSkyblock and AcidIsalnd but *not the same*. It has some additional or changed parameters, like,
|
||||
instead of world-height it has world-depth.
|
||||
instead of wrold-height it has world-depth.
|
||||
It also has option to choose main block for each world, and blocks that will be occasionally replace main block, f.e. diamond ore or shulker.
|
||||
It also allows to specifiy if roof and floor for each world must be generated from bedrock.
|
||||
|
||||
|
||||
### Other Add-ons
|
||||
|
||||
|
59
pom.xml
59
pom.xml
@ -30,26 +30,28 @@
|
||||
</issueManagement>
|
||||
|
||||
<distributionManagement>
|
||||
<snapshotRepository>
|
||||
<id>codemc-snapshots</id>
|
||||
<url>https://repo.codemc.org/repository/maven-snapshots</url>
|
||||
</snapshotRepository>
|
||||
<repository>
|
||||
<id>bentoboxworld</id>
|
||||
<url>https://repo.codemc.org/repository/bentoboxworld/</url>
|
||||
<id>codemc-releases</id>
|
||||
<url>https://repo.codemc.org/repository/maven-releases</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<java.version>17</java.version>
|
||||
<java.version>1.8</java.version>
|
||||
<!-- More visible way how to change dependency versions -->
|
||||
<spigot.version>1.21.3-R0.1-SNAPSHOT</spigot.version>
|
||||
<bentobox.version>2.7.1-SNAPSHOT</bentobox.version>
|
||||
<spigot.version>1.15.2-R0.1-SNAPSHOT</spigot.version>
|
||||
<bentobox.version>1.13.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.20.0</build.version>
|
||||
<build.version>1.13.0</build.version>
|
||||
<build.number>-LOCAL</build.number>
|
||||
<sonar.organization>bentobox-world</sonar.organization>
|
||||
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
|
||||
</properties>
|
||||
|
||||
<profiles>
|
||||
@ -90,6 +92,30 @@
|
||||
<!-- GIT_BRANCH -->
|
||||
</properties>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>sonar</id>
|
||||
<properties>
|
||||
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
|
||||
<sonar.organization>bentobox-world</sonar.organization>
|
||||
</properties>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.sonarsource.scanner.maven</groupId>
|
||||
<artifactId>sonar-maven-plugin</artifactId>
|
||||
<version>3.6.0.1398</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>verify</phase>
|
||||
<goals>
|
||||
<goal>sonar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
<repositories>
|
||||
@ -97,13 +123,9 @@
|
||||
<id>spigot-repo</id>
|
||||
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>bentoboxworld</id>
|
||||
<url>https://repo.codemc.org/repository/bentoboxworld/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>codemc-repo</id>
|
||||
<url>https://repo.codemc.org/repository/maven-public/</url>
|
||||
<url>https://repo.codemc.org/repository/maven-public</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
@ -170,7 +192,8 @@
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.7.0</version>
|
||||
<configuration>
|
||||
<release>${java.version}</release>
|
||||
<source>${java.version}</source>
|
||||
<target>${java.version}</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
@ -186,17 +209,15 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
<version>3.3.0</version>
|
||||
<version>3.0.1</version>
|
||||
<configuration>
|
||||
<show>public</show>
|
||||
<failOnError>false</failOnError>
|
||||
<additionalJOption>-Xdoclint:none</additionalJOption>
|
||||
<!-- To compile with Java 11, this tag may be required -->
|
||||
<javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-javadocs</id>
|
||||
<phase>install</phase>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
@ -229,7 +250,7 @@
|
||||
<plugin>
|
||||
<groupId>org.jacoco</groupId>
|
||||
<artifactId>jacoco-maven-plugin</artifactId>
|
||||
<version>0.8.10</version>
|
||||
<version>0.8.3</version>
|
||||
<configuration>
|
||||
<append>true</append>
|
||||
<excludes>
|
||||
|
@ -34,9 +34,7 @@ public class CaveBlock extends GameModeAddon
|
||||
this.saveDefaultConfig();
|
||||
this.loadSettings();
|
||||
|
||||
this.chunkNormalGenerator = new ChunkGeneratorWorld(this, World.Environment.NORMAL);
|
||||
this.chunkNetherGenerator = new ChunkGeneratorWorld(this, World.Environment.NETHER);
|
||||
this.chunkEndGenerator = new ChunkGeneratorWorld(this, World.Environment.THE_END);
|
||||
this.chunkGenerator = new ChunkGeneratorWorld(this);
|
||||
|
||||
// Player Command
|
||||
this.playerCommand = new DefaultPlayerCommand(this)
|
||||
@ -78,6 +76,7 @@ public class CaveBlock extends GameModeAddon
|
||||
{
|
||||
super.onReload();
|
||||
this.loadSettings();
|
||||
this.chunkGenerator.reload();
|
||||
}
|
||||
|
||||
|
||||
@ -123,8 +122,8 @@ public class CaveBlock extends GameModeAddon
|
||||
|
||||
/**
|
||||
* Make the worlds for this GameMode in this method. BentoBox will call it after onLoad() and before
|
||||
* onEnable(). {@code islandWorld} must be created and assigned, {@code netherWorld} and {@code
|
||||
* endWorld} are optional and may be null.
|
||||
* onEnable(). {@link #islandWorld} must be created and assigned, {@link #netherWorld} and {@link
|
||||
* #endWorld} are optional and may be null.
|
||||
*/
|
||||
@Override
|
||||
public void createWorlds()
|
||||
@ -138,11 +137,11 @@ public class CaveBlock extends GameModeAddon
|
||||
|
||||
// Create the world if it does not exist
|
||||
this.islandWorld = WorldCreator.name(worldName).
|
||||
type(WorldType.FLAT).
|
||||
environment(World.Environment.NORMAL).
|
||||
generator(this.chunkNormalGenerator).
|
||||
generator(this.chunkGenerator).
|
||||
createWorld();
|
||||
// Set spawn rates
|
||||
setSpawnRates(islandWorld);
|
||||
|
||||
|
||||
|
||||
// Make the nether if it does not exist
|
||||
@ -164,11 +163,10 @@ public class CaveBlock extends GameModeAddon
|
||||
{
|
||||
this.netherWorld = WorldCreator.name(worldName + NETHER).
|
||||
type(WorldType.FLAT).
|
||||
generator(this.chunkNetherGenerator).
|
||||
generator(this.chunkGenerator).
|
||||
environment(World.Environment.NETHER).
|
||||
createWorld();
|
||||
}
|
||||
setSpawnRates(netherWorld);
|
||||
}
|
||||
|
||||
// Make the end if it does not exist
|
||||
@ -189,40 +187,14 @@ public class CaveBlock extends GameModeAddon
|
||||
{
|
||||
this.endWorld = WorldCreator.name(worldName + THE_END).
|
||||
type(WorldType.FLAT).
|
||||
generator(this.chunkEndGenerator).
|
||||
generator(this.chunkGenerator).
|
||||
environment(World.Environment.THE_END).
|
||||
createWorld();
|
||||
}
|
||||
setSpawnRates(endWorld);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void setSpawnRates(World w) {
|
||||
if (w != null) {
|
||||
if (getSettings().getSpawnLimitMonsters() > 0) {
|
||||
w.setMonsterSpawnLimit(getSettings().getSpawnLimitMonsters());
|
||||
}
|
||||
if (getSettings().getSpawnLimitAmbient() > 0) {
|
||||
w.setAmbientSpawnLimit(getSettings().getSpawnLimitAmbient());
|
||||
}
|
||||
if (getSettings().getSpawnLimitAnimals() > 0) {
|
||||
w.setAnimalSpawnLimit(getSettings().getSpawnLimitAnimals());
|
||||
}
|
||||
if (getSettings().getSpawnLimitWaterAnimals() > 0) {
|
||||
w.setWaterAnimalSpawnLimit(getSettings().getSpawnLimitWaterAnimals());
|
||||
}
|
||||
if (getSettings().getTicksPerAnimalSpawns() > 0) {
|
||||
w.setTicksPerAnimalSpawns(getSettings().getTicksPerAnimalSpawns());
|
||||
}
|
||||
if (getSettings().getTicksPerMonsterSpawns() > 0) {
|
||||
w.setTicksPerMonsterSpawns(getSettings().getTicksPerMonsterSpawns());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Defines the world generator for this game mode
|
||||
*
|
||||
@ -234,18 +206,7 @@ public class CaveBlock extends GameModeAddon
|
||||
@Override
|
||||
public @NonNull ChunkGenerator getDefaultWorldGenerator(String worldName, String id)
|
||||
{
|
||||
if (worldName.endsWith("_nether"))
|
||||
{
|
||||
return this.chunkNetherGenerator;
|
||||
}
|
||||
else if (worldName.endsWith("_the_end"))
|
||||
{
|
||||
return this.chunkEndGenerator;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.chunkNormalGenerator;
|
||||
}
|
||||
return this.chunkGenerator;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
@ -282,16 +243,6 @@ public class CaveBlock extends GameModeAddon
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This addon uses the new chunk generation API for the sea bottom
|
||||
*/
|
||||
@Override
|
||||
public boolean isUsesNewChunkGeneration()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Variables
|
||||
// ---------------------------------------------------------------------
|
||||
@ -307,19 +258,9 @@ public class CaveBlock extends GameModeAddon
|
||||
private Settings settings;
|
||||
|
||||
/**
|
||||
* This stores CaveBlock addon WorldGenerator for overworld.
|
||||
* This stores CaveBlock addon WorldGenerator.
|
||||
*/
|
||||
private ChunkGeneratorWorld chunkNormalGenerator;
|
||||
|
||||
/**
|
||||
* This stores CaveBlock addon WorldGenerator for the nether.
|
||||
*/
|
||||
private ChunkGeneratorWorld chunkNetherGenerator;
|
||||
|
||||
/**
|
||||
* This stores CaveBlock addon WorldGenerator for the end.
|
||||
*/
|
||||
private ChunkGeneratorWorld chunkEndGenerator;
|
||||
private ChunkGeneratorWorld chunkGenerator;
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
@ -347,4 +288,6 @@ public class CaveBlock extends GameModeAddon
|
||||
* String for the end world.
|
||||
*/
|
||||
private static final String THE_END = "_the_end";
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,19 +0,0 @@
|
||||
package world.bentobox.caveblock;
|
||||
|
||||
|
||||
import world.bentobox.bentobox.api.addons.Addon;
|
||||
import world.bentobox.bentobox.api.addons.Pladdon;
|
||||
|
||||
|
||||
public class CaveBlockPladdon extends Pladdon {
|
||||
|
||||
private Addon addon;
|
||||
|
||||
@Override
|
||||
public Addon getAddon() {
|
||||
if (addon == null) {
|
||||
addon = new CaveBlock();
|
||||
}
|
||||
return addon;
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,20 +0,0 @@
|
||||
package world.bentobox.caveblock;
|
||||
|
||||
import org.bukkit.Location;
|
||||
|
||||
public class Utils {
|
||||
|
||||
/**
|
||||
* Convert chunk location to world location
|
||||
*
|
||||
* @param x the x coordinate of the chunk location
|
||||
* @param y the y coordinate
|
||||
* @param z the z coordinate of the chunk location
|
||||
* @param chunkX the x coordinate of the chunk
|
||||
* @param chunkZ the z coordinate of the chunk
|
||||
* @return the world location
|
||||
*/
|
||||
public static Location getLocationFromChunkLocation(int x, int y, int z, int chunkX, int chunkZ) {
|
||||
return new Location(null, x + (chunkX * 16D), y, z + (chunkZ * 16D));
|
||||
}
|
||||
}
|
@ -1,191 +1,219 @@
|
||||
package world.bentobox.caveblock.generators;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.generator.BiomeProvider;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
import org.bukkit.generator.ChunkGenerator;
|
||||
import org.bukkit.generator.WorldInfo;
|
||||
|
||||
import world.bentobox.caveblock.CaveBlock;
|
||||
import world.bentobox.caveblock.Settings;
|
||||
import world.bentobox.caveblock.generators.populators.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
import org.bukkit.generator.ChunkGenerator;
|
||||
|
||||
import world.bentobox.caveblock.CaveBlock;
|
||||
import world.bentobox.caveblock.Settings;
|
||||
import world.bentobox.caveblock.generators.populators.EntitiesPopulator;
|
||||
import world.bentobox.caveblock.generators.populators.MaterialPopulator;
|
||||
|
||||
|
||||
/**
|
||||
* Class ChunkGeneratorWorld ...
|
||||
*
|
||||
* @author BONNe
|
||||
* Created on 27.01.2019
|
||||
*/
|
||||
public class ChunkGeneratorWorld extends ChunkGenerator {
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Variables
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
private final CaveBlock addon;
|
||||
private final Settings settings;
|
||||
private final List<BlockPopulator> blockPopulators;
|
||||
private final World.Environment environment;
|
||||
private BiomeProvider biomeProvider;
|
||||
private boolean isNewGenerator;
|
||||
|
||||
public class ChunkGeneratorWorld extends ChunkGenerator
|
||||
{
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Constructor
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
|
||||
/**
|
||||
* @param addon - CaveBlock object
|
||||
* @param environment - World environment
|
||||
*/
|
||||
public ChunkGeneratorWorld(CaveBlock addon, World.Environment environment) {
|
||||
public ChunkGeneratorWorld(CaveBlock addon)
|
||||
{
|
||||
super();
|
||||
this.addon = addon;
|
||||
this.settings = addon.getSettings();
|
||||
this.blockPopulators = new ArrayList<>(2);
|
||||
|
||||
this.environment = environment;
|
||||
reload();
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Methods
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
private Material getGroundRoofMaterial(World.Environment environment) {
|
||||
return switch (environment) {
|
||||
case NETHER -> this.settings.isNetherRoof() ? Material.BEDROCK : this.settings.getNetherMainBlock();
|
||||
case THE_END -> this.settings.isEndRoof() ? Material.BEDROCK : this.settings.getEndMainBlock();
|
||||
default -> this.settings.isNormalRoof() ? Material.BEDROCK : this.settings.getNormalMainBlock();
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
private Material getGroundFloorMaterial(World.Environment environment) {
|
||||
return switch (environment) {
|
||||
case NETHER -> this.settings.isNetherFloor() ? Material.BEDROCK : this.settings.getNetherMainBlock();
|
||||
case THE_END -> this.settings.isEndFloor() ? Material.BEDROCK : this.settings.getEndMainBlock();
|
||||
default -> this.settings.isNormalFloor() ? Material.BEDROCK : this.settings.getNormalMainBlock();
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
private Material getBaseMaterial(World.Environment environment) {
|
||||
return switch (environment) {
|
||||
case NETHER -> this.settings.getNetherMainBlock();
|
||||
case THE_END -> this.settings.getEndMainBlock();
|
||||
default -> this.settings.getNormalMainBlock();
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* This method sets if given coordinates can be set as spawn location
|
||||
*/
|
||||
@Override
|
||||
public void generateBedrock(WorldInfo worldInfo, Random random, int chunkX, int chunkZ, ChunkData chunkData)
|
||||
public boolean canSpawn(World world, int x, int z)
|
||||
{
|
||||
if (!this.shouldGenerateBedrock())
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method generates given chunk.
|
||||
* @param world World where chunk must be generated.
|
||||
* @param random Random that allows define object randomness.
|
||||
* @param chunkX Chunk X coordinate.
|
||||
* @param chunkZ Chunk Z coordinate.
|
||||
* @param biomeGrid BiomeGrid that contains biomes.
|
||||
* @return new ChunkData for given chunk.
|
||||
*/
|
||||
@Override
|
||||
public ChunkData generateChunkData(World world,
|
||||
Random random,
|
||||
int chunkX,
|
||||
int chunkZ,
|
||||
ChunkGenerator.BiomeGrid biomeGrid)
|
||||
{
|
||||
final int minHeight = worldInfo.getMinHeight();
|
||||
Material material = this.getGroundFloorMaterial(worldInfo.getEnvironment());
|
||||
chunkData.setRegion(0, minHeight, 0, 16, minHeight + 1, 16, material);
|
||||
ChunkData result = this.createChunkData(world);
|
||||
|
||||
// Populate chunk with necessary information
|
||||
if (world.getEnvironment().equals(World.Environment.NETHER))
|
||||
{
|
||||
this.populateNetherChunk(result);
|
||||
}
|
||||
else if (world.getEnvironment().equals(World.Environment.THE_END))
|
||||
{
|
||||
this.populateTheEndChunk(result);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Apparently default surface generation does not include 0 bedrock layer.
|
||||
final int minHeight = worldInfo.getMinHeight();
|
||||
chunkData.setRegion(0, minHeight, 0, 16, minHeight + 1, 16, Material.BEDROCK);
|
||||
this.populateOverWorldChunk(result, biomeGrid);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void generateSurface(WorldInfo worldInfo, Random random, int chunkX, int chunkZ, ChunkData chunkData)
|
||||
/**
|
||||
* This method populates The End world chunk data.
|
||||
* @param chunkData ChunkData that must be populated.
|
||||
*/
|
||||
private void populateTheEndChunk(ChunkData chunkData)
|
||||
{
|
||||
if (!this.shouldGenerateSurface())
|
||||
// because everything starts at 0 and ends at 255
|
||||
final int worldHeight = this.settings.getWorldDepth();
|
||||
|
||||
// Fill all blocks
|
||||
chunkData.setRegion(0, 1, 0,
|
||||
16, worldHeight - 1, 16,
|
||||
this.settings.getEndMainBlock());
|
||||
|
||||
// Generate ground and ceiling.
|
||||
chunkData.setRegion(0, 0, 0,
|
||||
16, 1, 16,
|
||||
this.settings.isEndFloor() ? Material.BEDROCK : this.settings.getEndMainBlock());
|
||||
chunkData.setRegion(0, worldHeight - 1, 0,
|
||||
16, worldHeight, 16,
|
||||
this.settings.isEndRoof() ? Material.BEDROCK : this.settings.getEndMainBlock());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method populates nether world chunk data.
|
||||
* @param chunkData ChunkData that must be populated.
|
||||
*/
|
||||
private void populateNetherChunk(ChunkData chunkData)
|
||||
{
|
||||
final int worldHeight = Math.min(worldInfo.getMaxHeight(), this.settings.getWorldDepth());
|
||||
Material material = this.getGroundRoofMaterial(worldInfo.getEnvironment());
|
||||
chunkData.setRegion(0, worldHeight - 1, 0, 16, worldHeight, 16, material);
|
||||
// because everything starts at 0 and ends at 255
|
||||
final int worldHeight = this.settings.getWorldDepth();
|
||||
|
||||
// Fill all blocks
|
||||
chunkData.setRegion(0, 1, 0,
|
||||
16, worldHeight - 1, 16,
|
||||
this.settings.getNetherMainBlock());
|
||||
|
||||
// Generate ground and ceiling.
|
||||
chunkData.setRegion(0, 0, 0,
|
||||
16, 1, 16,
|
||||
this.settings.isNetherFloor() ? Material.BEDROCK : this.settings.getNetherMainBlock());
|
||||
chunkData.setRegion(0, worldHeight - 1, 0,
|
||||
16, worldHeight, 16,
|
||||
this.settings.isNetherRoof() ? Material.BEDROCK : this.settings.getNetherMainBlock());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method populates Over world chunk data.
|
||||
* @param chunkData ChunkData that must be populated.
|
||||
* @param biomeGrid BiomeGrid for this chunk.
|
||||
*/
|
||||
private void populateOverWorldChunk(ChunkData chunkData, BiomeGrid biomeGrid)
|
||||
{
|
||||
// because everything starts at 0 and ends at 255
|
||||
final int worldHeight = this.settings.getWorldDepth();
|
||||
|
||||
// Fill all blocks
|
||||
chunkData.setRegion(0, 1, 0,
|
||||
16, worldHeight - 1, 16,
|
||||
this.settings.getNormalMainBlock());
|
||||
|
||||
// Generate ground and ceiling.
|
||||
chunkData.setRegion(0, 0, 0,
|
||||
16, 1, 16,
|
||||
this.settings.isNormalFloor() ? Material.BEDROCK : this.settings.getNormalMainBlock());
|
||||
chunkData.setRegion(0, worldHeight - 1, 0,
|
||||
16, worldHeight, 16,
|
||||
this.settings.isNormalRoof() ? Material.BEDROCK : this.settings.getNormalMainBlock());
|
||||
|
||||
// Set biome
|
||||
for (int x = 0; x < 16; x++)
|
||||
{
|
||||
for (int z = 0; z < 16; z++)
|
||||
{
|
||||
biomeGrid.setBiome(x, z, this.settings.getDefaultBiome());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method set world block populators.
|
||||
* @param world World where this must apply.
|
||||
* @return List with block populators.
|
||||
*/
|
||||
@Override
|
||||
public void generateNoise(WorldInfo worldInfo, Random random, int chunkX, int chunkZ, ChunkData chunkData) {
|
||||
final int minHeight = worldInfo.getMinHeight();
|
||||
final int worldHeight = Math.min(worldInfo.getMaxHeight(), this.settings.getWorldDepth());
|
||||
final World.Environment environment = worldInfo.getEnvironment();
|
||||
if (isNewGenerator) {
|
||||
switch (environment) {
|
||||
case NETHER:
|
||||
if (worldHeight + 1 > 34) {
|
||||
chunkData.setRegion(0, minHeight + 1, 0, 16, 34, 16, Material.SOUL_SAND);
|
||||
chunkData.setRegion(0, 34, 0, 16, worldHeight - 1, 16, Material.NETHERRACK);
|
||||
} else {
|
||||
chunkData.setRegion(0, minHeight + 1, 0, 16, worldHeight - 1, 16, Material.NETHERRACK);
|
||||
}
|
||||
break;
|
||||
case THE_END:
|
||||
chunkData.setRegion(0, minHeight + 1, 0, 16, worldHeight - 1, 16, Material.END_STONE);
|
||||
break;
|
||||
default:
|
||||
if (worldHeight + 1 > 7) {
|
||||
chunkData.setRegion(0, minHeight + 1, 0, 16, 7, 16, Material.DEEPSLATE);
|
||||
chunkData.setRegion(0, 7, 0, 16, worldHeight - 1, 16, Material.STONE);
|
||||
} else {
|
||||
chunkData.setRegion(0, minHeight + 1, 0, 16, worldHeight - 1, 16, Material.STONE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
Material material = getBaseMaterial(environment);
|
||||
chunkData.setRegion(0, minHeight + 1, 0, 16, worldHeight - 1, 16, material);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BlockPopulator> getDefaultPopulators(final World world) {
|
||||
public List<BlockPopulator> getDefaultPopulators(final World world)
|
||||
{
|
||||
return this.blockPopulators;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BiomeProvider getDefaultBiomeProvider(WorldInfo worldInfo) {
|
||||
return biomeProvider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldGenerateSurface()
|
||||
{
|
||||
// Surface generation should happen only in overworld. Nether and end worlds does not have surface.
|
||||
return this.environment.equals(World.Environment.NORMAL) && this.settings.isGenerateNaturalSurface();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldGenerateBedrock() {
|
||||
// Bedrock generation should happen only in overworld. Nether and end worlds does not have nice bedrock layers.
|
||||
return this.environment.equals(World.Environment.NORMAL) && this.settings.isGenerateNaturalBedrock();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldGenerateCaves() {
|
||||
// Cave generation should happen only in overworld. Nether and end worlds does not have nice cave layers.
|
||||
return this.environment.equals(World.Environment.NORMAL) && this.settings.isGenerateCaves();
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when config is reloaded
|
||||
*/
|
||||
public void reload() {
|
||||
this.blockPopulators.clear();
|
||||
this.isNewGenerator = this.settings.isNewMaterialGenerator();
|
||||
this.blockPopulators = new ArrayList<>(2);
|
||||
|
||||
if (this.isNewGenerator) {
|
||||
this.blockPopulators.add(new NewMaterialPopulator(this.settings.getWorldDepth()));
|
||||
this.biomeProvider = null;
|
||||
} else {
|
||||
this.blockPopulators.add(new MaterialPopulator(this.addon));
|
||||
this.blockPopulators.add(new EntitiesPopulator(this.addon));
|
||||
this.biomeProvider = new FlatBiomeProvider(this.addon);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Variables
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
|
||||
/**
|
||||
* CaveBlock addon.
|
||||
*/
|
||||
private CaveBlock addon;
|
||||
|
||||
/**
|
||||
* Addon settings.
|
||||
*/
|
||||
private Settings settings;
|
||||
|
||||
/**
|
||||
* This list contains block populators that will be applied after chunk is generated.
|
||||
*/
|
||||
private List<BlockPopulator> blockPopulators;
|
||||
}
|
||||
|
@ -1,15 +0,0 @@
|
||||
package world.bentobox.caveblock.generators;
|
||||
|
||||
import org.bukkit.Material;
|
||||
|
||||
/**
|
||||
* @author tastybento
|
||||
* @param minY minimum Y level this ore should appear
|
||||
* @param material Material
|
||||
* @param chance chance
|
||||
* @param blob maximum size of blob to generate
|
||||
* @param cont whether the generator should continue to try to make other ores at this level after making this one
|
||||
*/
|
||||
public record Ore (int minY, int maxY, Material material, int chance, int blob, boolean cont){
|
||||
|
||||
}
|
@ -2,76 +2,51 @@ package world.bentobox.caveblock.generators.populators;
|
||||
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.EnumMap;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.World.Environment;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.WaterMob;
|
||||
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;
|
||||
|
||||
|
||||
/**
|
||||
* This class populates generated chunk with entities by random chance.
|
||||
* This class populates generated chunk with entites by random chance.
|
||||
*/
|
||||
public class EntitiesPopulator extends BlockPopulator {
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Variables
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* CaveBlock addon.
|
||||
*/
|
||||
private final CaveBlock addon;
|
||||
/**
|
||||
* Map that contains chances for spawning per environment.
|
||||
*/
|
||||
private Map<Environment, Chances> chances;
|
||||
/**
|
||||
* World height
|
||||
*/
|
||||
private int worldHeight;
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Constructor
|
||||
// ---------------------------------------------------------------------
|
||||
public class EntitiesPopulator extends BlockPopulator
|
||||
{
|
||||
|
||||
/**
|
||||
* This is default constructor
|
||||
*
|
||||
* @param addon CaveBlock addon.
|
||||
*/
|
||||
public EntitiesPopulator(CaveBlock addon) {
|
||||
public EntitiesPopulator(CaveBlock addon)
|
||||
{
|
||||
this.addon = addon;
|
||||
this.loadSettings();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Methods
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* This method load chances per environment.
|
||||
*/
|
||||
private void loadSettings() {
|
||||
// Set up chances
|
||||
chances = new EnumMap<>(Environment.class);
|
||||
chances = new HashMap<>();
|
||||
// Normal
|
||||
chances.put(Environment.NORMAL, new Chances(this.getEntityMap(addon.getSettings().getNormalBlocks()), addon.getSettings().getNormalMainBlock()));
|
||||
// Nether
|
||||
@ -79,49 +54,43 @@ public class EntitiesPopulator extends BlockPopulator {
|
||||
// End
|
||||
chances.put(Environment.THE_END, new Chances(this.getEntityMap(addon.getSettings().getEndBlocks()), addon.getSettings().getEndMainBlock()));
|
||||
// Other settings
|
||||
worldHeight = addon.getSettings().getWorldDepth();
|
||||
worldHeight = addon.getSettings().getWorldDepth() - 1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method populates chunk with entities.
|
||||
*
|
||||
* @param worldInfo World where population must be.
|
||||
* @param world World where population must be.
|
||||
* @param random Randomness
|
||||
* @param chunkX X coordinate of chunk
|
||||
* @param chunkZ Z coordinate of chunk
|
||||
* @param limitedRegion Region where population operates.
|
||||
* @param chunk Chunk were populator operates.
|
||||
*/
|
||||
@Override
|
||||
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;
|
||||
|
||||
for (Map.Entry<EntityType, Pair<Pair<Double, Integer>, Boolean>> entry : chances.get(worldInfo.getEnvironment()).entityChanceMap.entrySet()) {
|
||||
Pair<Double, Integer> value = entry.getValue().x;
|
||||
boolean hasAI = entry.getValue().z;
|
||||
for (int subY = minHeight; subY < height; subY += 16) {
|
||||
public void populate(World world, Random random, Chunk chunk)
|
||||
{
|
||||
for (Map.Entry<EntityType, Pair<Double, Integer>> entry : chances.get(world.getEnvironment()).entityChanceMap.entrySet())
|
||||
{
|
||||
for (int subY = 0; subY < worldHeight; subY += 16)
|
||||
{
|
||||
// Use double so chance can be < 1
|
||||
if (random.nextDouble() * 100 < value.x) {
|
||||
int y = Math.min(height - 2, subY + random.nextInt(15));
|
||||
if (random.nextDouble() * 100 < entry.getValue().x)
|
||||
{
|
||||
int y = Math.min(worldHeight - 2, subY + random.nextInt(15));
|
||||
// Spawn only in middle of chunk because bounding box will grow out from here
|
||||
this.tryToPlaceEntity(
|
||||
worldInfo, Utils.getLocationFromChunkLocation(7, y, 7, chunkX, chunkZ), limitedRegion,
|
||||
entry.getKey(), hasAI,
|
||||
chances.get(worldInfo.getEnvironment()).mainMaterial
|
||||
);
|
||||
this.tryToPlaceEntity(world, chunk.getBlock(7, y, 7), entry.getKey(), chances.get(world.getEnvironment()).mainMaterial);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method returns Entity frequently and pack size map.
|
||||
*
|
||||
* @param objectList List with objects that contains data.
|
||||
* @return Map that contains entity, its rarity and pack size.
|
||||
*/
|
||||
private Map<EntityType, Pair<Pair<Double, Integer>, Boolean>> getEntityMap(List<String> objectList) {
|
||||
Map<EntityType, Pair<Pair<Double, Integer>, Boolean>> entityMap = new EnumMap<>(EntityType.class);
|
||||
private Map<EntityType, Pair<Double, Integer>> getEntityMap(List<String> objectList)
|
||||
{
|
||||
Map<EntityType, Pair<Double, Integer>> entityMap = new HashMap<>(objectList.size());
|
||||
|
||||
Map<String, EntityType> entityTypeMap = Arrays.stream(EntityType.values()).
|
||||
collect(Collectors.toMap(Enum::name,
|
||||
@ -133,18 +102,14 @@ public class EntitiesPopulator extends BlockPopulator {
|
||||
objectList.stream().
|
||||
filter(object -> object.startsWith("ENTITY")).
|
||||
map(object -> object.split(":")).
|
||||
filter(splitString -> splitString.length >= 4).
|
||||
filter(splitString -> splitString.length == 4).
|
||||
forEach(splitString -> {
|
||||
EntityType entity = entityTypeMap.getOrDefault(splitString[1], null);
|
||||
boolean hasAI = splitString.length <= 4 || Boolean.parseBoolean(splitString[4]);
|
||||
|
||||
if (entity != null) {
|
||||
if (entity != null)
|
||||
{
|
||||
entityMap.put(entity,
|
||||
new Pair<>(
|
||||
new Pair<>(Double.parseDouble(splitString[2]), Integer.parseInt(splitString[3])),
|
||||
hasAI
|
||||
)
|
||||
);
|
||||
new Pair<>(Double.parseDouble(splitString[2]), Integer.parseInt(splitString[3])));
|
||||
}
|
||||
});
|
||||
|
||||
@ -153,69 +118,109 @@ public class EntitiesPopulator extends BlockPopulator {
|
||||
|
||||
/**
|
||||
* Places entities if there is room for them.
|
||||
*
|
||||
* @param worldInfo - World were mob must be spawned.
|
||||
* @param location - Location that was chosen by random.
|
||||
* @param limitedRegion - Region where entity must be spawned.
|
||||
* @param entityType - Entity that must be spawned.
|
||||
* @param hasAI - If entity has AI.
|
||||
* @param world - World were mob must be spawned.
|
||||
* @param block - Block that was chosen by random.
|
||||
* @param entity - Entity that must be spawned.
|
||||
* @param originalMaterial - replacement material.
|
||||
*/
|
||||
private void tryToPlaceEntity(WorldInfo worldInfo, Location location, LimitedRegion limitedRegion, EntityType entityType, boolean hasAI, Material originalMaterial) {
|
||||
if (!limitedRegion.isInRegion(location)) return;
|
||||
if (!limitedRegion.getType(location).equals(originalMaterial)) return;
|
||||
|
||||
// Spawn the entity and then make space for it
|
||||
Entity entity = limitedRegion.spawnEntity(location, entityType);
|
||||
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)) {
|
||||
// Only spawn if it's in the region
|
||||
entity.remove();
|
||||
return;
|
||||
private void tryToPlaceEntity(World world, Block block, EntityType entity, Material originalMaterial)
|
||||
{
|
||||
if (block.getType().equals(originalMaterial)) {
|
||||
// Spawn entity
|
||||
Entity e = world.spawnEntity(block.getLocation().add(0.5, 0, 0.5), entity);
|
||||
if (e instanceof LivingEntity) {
|
||||
// Do not despawn
|
||||
((LivingEntity)e).setRemoveWhenFarAway(false);
|
||||
}
|
||||
|
||||
for (; y <= bb.getMaxY(); y++) {
|
||||
// Make space for entity based on the entity's size
|
||||
BoundingBox bb = e.getBoundingBox();
|
||||
for (int x = (int) bb.getMinX(); x < bb.getMaxX(); x++) {
|
||||
for (int z = (int) bb.getMinZ(); z < bb.getMaxZ(); z++) {
|
||||
int y = (int) bb.getMinY();
|
||||
Block b = world.getBlockAt(x, y, z);
|
||||
for (; y < bb.getMaxY(); y++) {
|
||||
if (addon.getSettings().isDebug()) {
|
||||
addon.log("DEBUG: Entity spawn: " + worldInfo.getName() + " " + x + " " + y + " " + z + " " + entityType);
|
||||
addon.log("DEBUG: Entity spawn: " + world.getName() + " " + x + " " + y + " " + z + " " + e.getType());
|
||||
}
|
||||
|
||||
if (!limitedRegion.isInRegion(x, y, z) || !limitedRegion.getType(x, y, z).equals(originalMaterial)) {
|
||||
b = world.getBlockAt(x, y, z);
|
||||
if (!b.getType().equals(originalMaterial)) {
|
||||
// Cannot place entity
|
||||
entity.remove();
|
||||
e.remove();
|
||||
return;
|
||||
}
|
||||
limitedRegion.setType(x, y, z, entity instanceof WaterMob ? Material.WATER : Material.AIR);
|
||||
b.setType(WATER_ENTITIES.contains(entity) ? Material.WATER : Material.CAVE_AIR);
|
||||
}
|
||||
// Add air block on top for all water entities (required for dolphin, okay for others)
|
||||
if (entity instanceof WaterMob && limitedRegion.isInRegion(x, y, z)
|
||||
&& limitedRegion.getType(x, y, z).equals(originalMaterial)) {
|
||||
limitedRegion.setType(x, y, z, Material.CAVE_AIR);
|
||||
if (WATER_ENTITIES.contains(entity) && b.getRelative(BlockFace.UP).getType().equals(originalMaterial)) {
|
||||
b.getRelative(BlockFace.UP).setType(Material.CAVE_AIR);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (entity instanceof LivingEntity livingEntity)
|
||||
{
|
||||
livingEntity.setAI(hasAI);
|
||||
livingEntity.setRemoveWhenFarAway(false);
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Private Classes
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
|
||||
/**
|
||||
* Chances class to store chances for environments and main material
|
||||
*
|
||||
* @param entityChanceMap - contains chances for each entity, and the boolean indicates that entity should have AI.
|
||||
*/
|
||||
private class Chances
|
||||
{
|
||||
/**
|
||||
* @param entityChanceMap - contains chances for each entity.
|
||||
* @param mainMaterial - material on which entity can replace.
|
||||
*/
|
||||
private record Chances(Map<EntityType, Pair<Pair<Double, Integer>, Boolean>> entityChanceMap,
|
||||
Material mainMaterial) {
|
||||
Chances(Map<EntityType, Pair<Double, Integer>> entityChanceMap, Material mainMaterial)
|
||||
{
|
||||
this.entityChanceMap = entityChanceMap;
|
||||
this.mainMaterial = mainMaterial;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Map that contains chances for entity to spawn.
|
||||
*/
|
||||
final Map<EntityType, Pair<Double, Integer>> entityChanceMap;
|
||||
|
||||
/**
|
||||
* Main material that can be replaced.
|
||||
*/
|
||||
final Material mainMaterial;
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Variables
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* CaveBlock addon.
|
||||
*/
|
||||
private CaveBlock addon;
|
||||
|
||||
/**
|
||||
* Map that contains chances for spawning per environment.
|
||||
*/
|
||||
private Map<Environment, Chances> chances;
|
||||
|
||||
/**
|
||||
* World height
|
||||
*/
|
||||
private int worldHeight;
|
||||
|
||||
/**
|
||||
* Water entities
|
||||
*/
|
||||
private final static List<EntityType> WATER_ENTITIES = Arrays.asList(EntityType.GUARDIAN,
|
||||
EntityType.SQUID,
|
||||
EntityType.COD,
|
||||
EntityType.SALMON,
|
||||
EntityType.PUFFERFISH,
|
||||
EntityType.TROPICAL_FISH,
|
||||
EntityType.DROWNED,
|
||||
EntityType.DOLPHIN);
|
||||
}
|
||||
|
@ -1,48 +0,0 @@
|
||||
package world.bentobox.caveblock.generators.populators;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.generator.BiomeProvider;
|
||||
import org.bukkit.generator.WorldInfo;
|
||||
import world.bentobox.caveblock.CaveBlock;
|
||||
import world.bentobox.caveblock.Settings;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class FlatBiomeProvider extends BiomeProvider {
|
||||
private final Settings settings;
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Constructor
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* @param addon - CaveBlock object
|
||||
*/
|
||||
public FlatBiomeProvider(CaveBlock addon) {
|
||||
this.settings = addon.getSettings();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Methods
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
private Biome getBiome(World.Environment environment) {
|
||||
return switch (environment) {
|
||||
case NETHER -> this.settings.getDefaultNetherBiome();
|
||||
case THE_END -> this.settings.getDefaultTheEndBiome();
|
||||
default -> this.settings.getDefaultBiome();
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public Biome getBiome(WorldInfo worldInfo, int x, int y, int z) {
|
||||
return getBiome(worldInfo.getEnvironment());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Biome> getBiomes(WorldInfo worldInfo) {
|
||||
return Collections.singletonList(getBiome(worldInfo.getEnvironment()));
|
||||
}
|
||||
}
|
@ -1,67 +1,47 @@
|
||||
|
||||
package world.bentobox.caveblock.generators.populators;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World.Environment;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
import org.bukkit.generator.LimitedRegion;
|
||||
import org.bukkit.generator.WorldInfo;
|
||||
import world.bentobox.bentobox.util.Pair;
|
||||
import world.bentobox.caveblock.CaveBlock;
|
||||
import world.bentobox.caveblock.Utils;
|
||||
|
||||
import java.util.EnumMap;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* This class allows filling given chunk with necessary blocks.
|
||||
*/
|
||||
public class MaterialPopulator extends BlockPopulator {
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.World.Environment;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
|
||||
import world.bentobox.bentobox.util.Pair;
|
||||
import world.bentobox.caveblock.CaveBlock;
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Variables
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* CaveBlock addon.
|
||||
* This class allows to fill given chunk with necessary blocks.
|
||||
*/
|
||||
private final CaveBlock addon;
|
||||
/**
|
||||
* Map that contains chances for spawning per environment.
|
||||
*/
|
||||
private Map<Environment, Chances> chances;
|
||||
/**
|
||||
* World height
|
||||
*/
|
||||
private int worldHeight;
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Constructor
|
||||
// ---------------------------------------------------------------------
|
||||
public class MaterialPopulator extends BlockPopulator
|
||||
{
|
||||
|
||||
/**
|
||||
* This is default constructor
|
||||
*
|
||||
* @param addon CaveBlock addon.
|
||||
*/
|
||||
public MaterialPopulator(CaveBlock addon) {
|
||||
public MaterialPopulator(CaveBlock addon)
|
||||
{
|
||||
this.addon = addon;
|
||||
// Load settings
|
||||
this.loadSettings();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Methods
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Loads chances for Material Populator
|
||||
*/
|
||||
private void loadSettings() {
|
||||
// Set up chances
|
||||
chances = new EnumMap<>(Environment.class);
|
||||
chances = new HashMap<>();
|
||||
// Normal
|
||||
chances.put(Environment.NORMAL, new Chances(this.getMaterialMap(addon.getSettings().getNormalBlocks()), addon.getSettings().getNormalMainBlock()));
|
||||
// Nether
|
||||
@ -69,70 +49,83 @@ public class MaterialPopulator extends BlockPopulator {
|
||||
// End
|
||||
chances.put(Environment.THE_END, new Chances(this.getMaterialMap(addon.getSettings().getEndBlocks()), addon.getSettings().getEndMainBlock()));
|
||||
// Other settings
|
||||
worldHeight = addon.getSettings().getWorldDepth();
|
||||
worldHeight = addon.getSettings().getWorldDepth() - 1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method populates chunk with blocks.
|
||||
*
|
||||
* @param worldInfo World where population must be.
|
||||
* @param world World where population must be.
|
||||
* @param random Randomness
|
||||
* @param chunkX X coordinate of chunk
|
||||
* @param chunkZ Z coordinate of chunk
|
||||
* @param limitedRegion Region were populator operates.
|
||||
* @param chunk Chunk were populator operates.
|
||||
*/
|
||||
@Override
|
||||
public void populate(WorldInfo worldInfo, Random random, int chunkX, int chunkZ, LimitedRegion limitedRegion) {
|
||||
int minHeight = worldInfo.getMinHeight();
|
||||
int height = Math.min(worldInfo.getMaxHeight(), worldHeight) - 1;
|
||||
Chances envChances = this.chances.get(worldInfo.getEnvironment());
|
||||
for (Map.Entry<Material, Pair<Double, Integer>> entry : envChances.materialChanceMap.entrySet()) {
|
||||
for (int subY = minHeight + 1; subY < height; subY += 16) {
|
||||
if (random.nextDouble() * 100 >= entry.getValue().x) {
|
||||
continue;
|
||||
}
|
||||
public void populate(World world, Random random, Chunk chunk)
|
||||
{
|
||||
Chances chances = this.chances.get(world.getEnvironment());
|
||||
|
||||
for (Map.Entry<Material, Pair<Double, Integer>> entry : chances.materialChanceMap.entrySet())
|
||||
{
|
||||
for (int subY = 1; subY < worldHeight; subY += 16)
|
||||
{
|
||||
if (random.nextDouble() * 100 < entry.getValue().x)
|
||||
{
|
||||
|
||||
// Blocks must be 1 away from edge to avoid adjacent chunk loading
|
||||
Location location = Utils.getLocationFromChunkLocation(
|
||||
random.nextInt(13) + 1,
|
||||
Math.min(height - 2, subY + random.nextInt(15)),
|
||||
random.nextInt(13) + 1,
|
||||
chunkX, chunkZ);
|
||||
|
||||
if (!limitedRegion.isInRegion(location)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Material material = limitedRegion.getType(location);
|
||||
if (!material.equals(envChances.mainMaterial)) {
|
||||
continue;
|
||||
int x = random.nextInt(13) + 1;
|
||||
int z = random.nextInt(13) + 1;
|
||||
int y = Math.min(worldHeight - 2, subY + random.nextInt(15));
|
||||
/*
|
||||
* TODO: remove
|
||||
if (addon.getSettings().isDebug()) {
|
||||
addon.log("DEBUG: Material: " + world.getName() + " " + x + " " + y + " " + z + " " + entry.getKey());
|
||||
}
|
||||
*/
|
||||
Block block = chunk.getBlock(x, y, z);
|
||||
|
||||
if (block.getType().equals(chances.mainMaterial))
|
||||
{
|
||||
int packSize = random.nextInt(entry.getValue().z);
|
||||
|
||||
boolean continuePlacing = true;
|
||||
while (continuePlacing) {
|
||||
if (!material.equals(entry.getKey())) {
|
||||
limitedRegion.setType(location, entry.getKey());
|
||||
|
||||
while (continuePlacing)
|
||||
{
|
||||
if (!block.getType().equals(entry.getKey()))
|
||||
{
|
||||
// Set type without physics is required otherwise server goes into an infinite loop
|
||||
block.setType(entry.getKey(), false);
|
||||
packSize--;
|
||||
}
|
||||
|
||||
switch (random.nextInt(6)) {
|
||||
case 0 -> location.setX(location.getX() + 1);
|
||||
case 1 -> location.setY(location.getY() + 1);
|
||||
case 2 -> location.setZ(location.getZ() + 1);
|
||||
case 3 -> location.setX(location.getX() - 1);
|
||||
case 4 -> location.setY(location.getY() - 1);
|
||||
case 5 -> location.setZ(location.getZ() - 1);
|
||||
default -> {
|
||||
continuePlacing = false;
|
||||
continue;
|
||||
}
|
||||
// The direction chooser
|
||||
switch (random.nextInt(5))
|
||||
{
|
||||
case 0:
|
||||
x = Math.min(15, x + 1);
|
||||
break;
|
||||
case 1:
|
||||
y = Math.min(worldHeight - 2, y + 1);
|
||||
break;
|
||||
case 2:
|
||||
z = Math.min(15, z + 1);
|
||||
break;
|
||||
case 3:
|
||||
x = Math.max(0, x - 1);
|
||||
break;
|
||||
case 4:
|
||||
y = Math.max(1, y - 1);
|
||||
break;
|
||||
case 5:
|
||||
z = Math.max(0, z - 1);
|
||||
break;
|
||||
}
|
||||
|
||||
continuePlacing = packSize > 0 && limitedRegion.isInRegion(location) && location.getY() > minHeight;
|
||||
if (continuePlacing) {
|
||||
material = limitedRegion.getType(location);
|
||||
continuePlacing = material.equals(envChances.mainMaterial) || material.equals(entry.getKey());
|
||||
block = chunk.getBlock(x, y, z);
|
||||
|
||||
continuePlacing = packSize > 0 && (block.getType().equals(chances.mainMaterial) ||
|
||||
block.getType().equals(entry.getKey()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -141,12 +134,12 @@ public class MaterialPopulator extends BlockPopulator {
|
||||
|
||||
/**
|
||||
* This method returns material frequently and pack size map.
|
||||
*
|
||||
* @param objectList List with objects that contains data.
|
||||
* @return Map that contains material, its rarity and pack size.
|
||||
*/
|
||||
private Map<Material, Pair<Double, Integer>> getMaterialMap(List<String> objectList) {
|
||||
Map<Material, Pair<Double, Integer>> materialMap = new EnumMap<>(Material.class);
|
||||
private Map<Material, Pair<Double, Integer>> getMaterialMap(List<String> objectList)
|
||||
{
|
||||
Map<Material, Pair<Double, Integer>> materialMap = new HashMap<>(objectList.size());
|
||||
|
||||
// wrong material object.
|
||||
objectList.stream().
|
||||
@ -156,7 +149,8 @@ public class MaterialPopulator extends BlockPopulator {
|
||||
forEach(splitString -> {
|
||||
Material material = Material.getMaterial(splitString[1]);
|
||||
// Material must be a block otherwise the chunk cannot be populated
|
||||
if (material != null && material.isBlock()) {
|
||||
if (material != null && material.isBlock())
|
||||
{
|
||||
materialMap.put(material,
|
||||
new Pair<>(Double.parseDouble(splitString[2]), Integer.parseInt(splitString[3])));
|
||||
} else {
|
||||
@ -167,16 +161,57 @@ public class MaterialPopulator extends BlockPopulator {
|
||||
return materialMap;
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Private Classes
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
|
||||
/**
|
||||
* Chances class to store chances for environments and main material
|
||||
*
|
||||
*/
|
||||
private class Chances
|
||||
{
|
||||
/**
|
||||
* @param materialChanceMap - contains chances for each material.
|
||||
* @param mainMaterial - material on which material can replace.
|
||||
*/
|
||||
private record Chances(Map<Material, Pair<Double, Integer>> materialChanceMap, Material mainMaterial) {
|
||||
Chances(Map<Material, Pair<Double, Integer>> materialChanceMap, Material mainMaterial)
|
||||
{
|
||||
this.materialChanceMap = materialChanceMap;
|
||||
this.mainMaterial = mainMaterial;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Map that contains chances for entity to spawn.
|
||||
*/
|
||||
final Map<Material, Pair<Double, Integer>> materialChanceMap;
|
||||
|
||||
/**
|
||||
* Main material that can be replaced.
|
||||
*/
|
||||
final Material mainMaterial;
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Section: Variables
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
|
||||
/**
|
||||
* CaveBlock addon.
|
||||
*/
|
||||
private CaveBlock addon;
|
||||
|
||||
/**
|
||||
* Map that contains chances for spawning per environment.
|
||||
*/
|
||||
private Map<Environment, Chances> chances;
|
||||
|
||||
/**
|
||||
* World height
|
||||
*/
|
||||
private int worldHeight;
|
||||
}
|
||||
|
@ -1,126 +0,0 @@
|
||||
package world.bentobox.caveblock.generators.populators;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
import org.bukkit.generator.LimitedRegion;
|
||||
import org.bukkit.generator.WorldInfo;
|
||||
|
||||
import world.bentobox.caveblock.Utils;
|
||||
import world.bentobox.caveblock.generators.Ore;
|
||||
|
||||
/**
|
||||
* @author tastybento
|
||||
*/
|
||||
public class NewMaterialPopulator extends BlockPopulator {
|
||||
private static final int BLOB_SIZE = 1;
|
||||
private static final Map<World.Environment, List<Ore>> ORES;
|
||||
|
||||
static {
|
||||
Map<World.Environment, List<Ore>> ores = new EnumMap<>(World.Environment.class);
|
||||
// Source https://minecraft.fandom.com/wiki/Blob
|
||||
List<Ore> worldOres = new ArrayList<>();
|
||||
worldOres.add(new Ore(-64, 7, Material.DEEPSLATE_DIAMOND_ORE, 1, 10, true));
|
||||
worldOres.add(new Ore(7, 16, Material.DIAMOND_ORE, 1, 10, true));
|
||||
worldOres.add(new Ore(-64, 7, Material.DEEPSLATE_LAPIS_ORE, 1, 7, true));
|
||||
worldOres.add(new Ore(7, 64, Material.LAPIS_ORE, 1, 7, true));
|
||||
worldOres.add(new Ore(-64, 7, Material.DEEPSLATE_GOLD_ORE, 2, 9, true));
|
||||
worldOres.add(new Ore(7, 30, Material.GOLD_ORE, 2, 9, true));
|
||||
worldOres.add(new Ore(0, 16, Material.TUFF, 2, 33, false));
|
||||
worldOres.add(new Ore(-64, 7, Material.DEEPSLATE_REDSTONE_ORE, 8, 8, true));
|
||||
worldOres.add(new Ore(7, 16, Material.REDSTONE_ORE, 8, 8, true));
|
||||
worldOres.add(new Ore(0, 16, Material.GRAVEL, 8, 33, false));
|
||||
worldOres.add(new Ore(0, 79, Material.GRANITE, 5, 33, false));
|
||||
worldOres.add(new Ore(0, 79, Material.ANDESITE, 5, 33, false));
|
||||
worldOres.add(new Ore(0, 79, Material.DIORITE, 5, 33, false));
|
||||
worldOres.add(new Ore(32, 320, Material.EMERALD_ORE, 11, 1, true));
|
||||
worldOres.add(new Ore(95, 136, Material.COAL_ORE, 20, 17, false));
|
||||
worldOres.add(new Ore(0, 7, Material.DEEPSLATE_COPPER_ORE, 20, 9, true));
|
||||
worldOres.add(new Ore(7, 96, Material.COPPER_ORE, 20, 9, true));
|
||||
worldOres.add(new Ore(-64, 7, Material.DEEPSLATE_IRON_ORE, 20, 9, true));
|
||||
worldOres.add(new Ore(7, 320, Material.IRON_ORE, 20, 9, true));
|
||||
worldOres.add(new Ore(-64, 320, Material.CAVE_AIR, 8, 33, false));
|
||||
ores.put(World.Environment.NORMAL, worldOres);
|
||||
List<Ore> netherOres = new ArrayList<>();
|
||||
netherOres.add(new Ore(1, 22, Material.ANCIENT_DEBRIS, 1, 5, true));
|
||||
netherOres.add(new Ore(-64, 30, Material.NETHER_GOLD_ORE, 2, 9, true));
|
||||
netherOres.add(new Ore(0, 16, Material.GRAVEL, 8, 33, false));
|
||||
netherOres.add(new Ore(0, 320, Material.BASALT, 8, 33, false));
|
||||
netherOres.add(new Ore(0, 320, Material.BLACKSTONE, 8, 33, false));
|
||||
netherOres.add(new Ore(0, 320, Material.FIRE, 8, 33, false));
|
||||
netherOres.add(new Ore(200, 320, Material.GLOWSTONE, 8, 33, false));
|
||||
netherOres.add(new Ore(-64, 320, Material.CAVE_AIR, 8, 33, false));
|
||||
netherOres.add(new Ore(-64, 320, Material.LAVA, 8, 33, false));
|
||||
netherOres.add(new Ore(0, 16, Material.MAGMA_BLOCK, 8, 33, false));
|
||||
netherOres.add(new Ore(0, 320, Material.CRIMSON_FUNGUS, 8, 33, false));
|
||||
netherOres.add(new Ore(0, 320, Material.WARPED_FUNGUS, 8, 33, false));
|
||||
netherOres.add(new Ore(0, 320, Material.CRIMSON_NYLIUM, 8, 33, false));
|
||||
netherOres.add(new Ore(0, 320, Material.WARPED_NYLIUM, 8, 33, false));
|
||||
netherOres.add(new Ore(0, 320, Material.SHROOMLIGHT, 8, 33, false));
|
||||
netherOres.add(new Ore(0, 320, Material.CRIMSON_STEM, 8, 33, false));
|
||||
netherOres.add(new Ore(0, 320, Material.WARPED_STEM, 8, 33, false));
|
||||
netherOres.add(new Ore(-64, 34, Material.SOUL_SOIL, 20, 17, false));
|
||||
netherOres.add(new Ore(0, 96, Material.NETHER_QUARTZ_ORE, 20, 9, true));
|
||||
netherOres.add(new Ore(-64, 320, Material.BONE_BLOCK, 20, 9, true));
|
||||
ores.put(World.Environment.NETHER, netherOres);
|
||||
List<Ore> endOres = new ArrayList<>();
|
||||
endOres.add(new Ore(32, 320, Material.PURPUR_BLOCK, 11, 1, true));
|
||||
endOres.add(new Ore(95, 136, Material.OBSIDIAN, 20, 17, false));
|
||||
endOres.add(new Ore(-64, 320, Material.CAVE_AIR, 8, 33, false));
|
||||
ores.put(World.Environment.THE_END, endOres);
|
||||
ORES = Collections.unmodifiableMap(ores);
|
||||
}
|
||||
|
||||
private final int worldDepth;
|
||||
|
||||
/**
|
||||
* @param worldDepth - Depth. If depth is set smaller than the world height,
|
||||
* then the area above will be empty. Should not be less than
|
||||
* cave height.
|
||||
*/
|
||||
public NewMaterialPopulator(int worldDepth) {
|
||||
this.worldDepth = worldDepth;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void populate(WorldInfo worldInfo, Random random, int chunkX, int chunkZ, LimitedRegion limitedRegion) {
|
||||
final int worldHeight = Math.min(worldInfo.getMaxHeight(), this.worldDepth);
|
||||
for (int y = worldInfo.getMinHeight() + 1; y < worldHeight - 1; y++) {
|
||||
for (Ore o : ORES.get(worldInfo.getEnvironment())) {
|
||||
if (y > o.minY() && y < o.maxY() && random.nextInt(100) <= o.chance()) {
|
||||
pasteBlob(worldInfo, random, chunkX, chunkZ, limitedRegion, y, o);
|
||||
if (o.cont()) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void pasteBlob(WorldInfo worldInfo, Random random, int chunkX, int chunkZ, LimitedRegion limitedRegion,
|
||||
int y, Ore o) {
|
||||
int offset = random.nextInt(16);
|
||||
for (int x = Math.max(0, offset - BLOB_SIZE); x < Math.min(16, offset + BLOB_SIZE); x++) {
|
||||
for (int z = Math.max(0, offset - BLOB_SIZE); z < Math.min(16, offset + BLOB_SIZE); z++) {
|
||||
for (int yy = Math.max(worldInfo.getMinHeight() + 1, y - BLOB_SIZE); yy < Math
|
||||
.min(worldInfo.getMaxHeight() - 1, y + BLOB_SIZE); yy++) {
|
||||
Location location = Utils.getLocationFromChunkLocation(x, yy, z, chunkX, chunkZ);
|
||||
if (!limitedRegion.isInRegion(location)) {
|
||||
continue;
|
||||
}
|
||||
if (limitedRegion.getType(location).isSolid() && random.nextBoolean()) {
|
||||
limitedRegion.setType(location, o.material());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -16,14 +16,14 @@ import world.bentobox.caveblock.CaveBlock;
|
||||
|
||||
|
||||
/**
|
||||
* This listener checks player movement. If enabled, players will be denied to get over world depth limit and
|
||||
* This listener checks player movement. If enabled, players will be deny to get over world depth limit and
|
||||
* if alternative teleports is enabled, then falling in void also will be processed.
|
||||
*/
|
||||
public class CustomHeightLimitations implements Listener
|
||||
{
|
||||
/**
|
||||
* Simple constructor
|
||||
* @param addon Addon
|
||||
* @param addon
|
||||
*/
|
||||
public CustomHeightLimitations(CaveBlock addon)
|
||||
{
|
||||
@ -53,7 +53,7 @@ public class CustomHeightLimitations implements Listener
|
||||
// Prevent to get over world height
|
||||
if (nextY >= this.worldHeight)
|
||||
{
|
||||
User.getInstance(player).sendMessage("caveblock.general.errors.cave-limit-reached");
|
||||
User.getInstance(player).sendMessage("caveblock.cave-limit-reached");
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
@ -86,7 +86,7 @@ public class CustomHeightLimitations implements Listener
|
||||
|
||||
|
||||
/**
|
||||
* This method checks and returns if current player movement from location to location should be
|
||||
* This method checks and returns if current player movement from location to to location should be
|
||||
* managed by current addon.
|
||||
* @param nextY NextY location for player.
|
||||
* @param player Player who makes movement
|
||||
@ -120,10 +120,10 @@ public class CustomHeightLimitations implements Listener
|
||||
/**
|
||||
* CaveBlock addon
|
||||
*/
|
||||
private final CaveBlock addon;
|
||||
private CaveBlock addon;
|
||||
|
||||
/**
|
||||
* This variable store world height.
|
||||
*/
|
||||
private final int worldHeight;
|
||||
private int worldHeight;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
name: CaveBlock
|
||||
main: world.bentobox.caveblock.CaveBlock
|
||||
version: ${version}${build.number}
|
||||
api-version: 2.7.1
|
||||
api-version: 1.13.0
|
||||
metrics: true
|
||||
repository: "BentoBoxWorld/CaveBlock"
|
||||
icon: "STONE_PICKAXE"
|
||||
|
@ -7,9 +7,9 @@
|
||||
],
|
||||
"requirePermission": false,
|
||||
"blueprints": {
|
||||
"NORMAL": "cave",
|
||||
"NETHER": "nether-cave",
|
||||
"THE_END": "end-cave"
|
||||
"NORMAL": "the cave",
|
||||
"NETHER": "the nether cave",
|
||||
"THE_END": "the end cave"
|
||||
},
|
||||
"slot": 0
|
||||
}
|
@ -7,9 +7,9 @@
|
||||
],
|
||||
"requirePermission": false,
|
||||
"blueprints": {
|
||||
"NORMAL": "miners-cave",
|
||||
"NETHER": "nether-cave",
|
||||
"THE_END": "end-cave"
|
||||
"NORMAL": "miner's cave",
|
||||
"NETHER": "the nether cave",
|
||||
"THE_END": "the end cave"
|
||||
},
|
||||
"slot": 1
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
# CaveBlock Configuration ${version}
|
||||
# CaveBlock Configuration 1.13.0
|
||||
caveblock:
|
||||
command:
|
||||
# Cave Command. What command users will run to access their cave.
|
||||
@ -26,25 +26,6 @@ world:
|
||||
# World difficulty setting - PEACEFUL, EASY, NORMAL, HARD
|
||||
# Other plugins may override this setting
|
||||
difficulty: HARD
|
||||
spawn-limits:
|
||||
# Spawn limits. These override the limits set in bukkit.yml
|
||||
# If set to a negative number, the server defaults will be used
|
||||
# Added since 1.15.1.
|
||||
monsters: -1
|
||||
# Added since 1.15.1.
|
||||
animals: -1
|
||||
# Added since 1.15.1.
|
||||
water-animals: -1
|
||||
# Added since 1.15.1.
|
||||
ambient: -1
|
||||
# Setting to 0 will disable animal spawns, but this is not recommended. Minecraft default is 400.
|
||||
# A negative value uses the server default
|
||||
# Added since 1.15.1.
|
||||
ticks-per-animal-spawns: -1
|
||||
# Setting to 0 will disable monster spawns, but this is not recommended. Minecraft default is 400.
|
||||
# A negative value uses the server default
|
||||
# Added since 1.15.1.
|
||||
ticks-per-monster-spawns: -1
|
||||
# Radius of cave in blocks. (So distance between caves is twice this)
|
||||
# Will be rounded up to the nearest 16 blocks.
|
||||
# It is the same for every dimension : Overworld, Nether and End.
|
||||
@ -69,62 +50,38 @@ world:
|
||||
# Cave height - Lowest is 5.
|
||||
# It is the y coordinate of the bedrock block in the schem.
|
||||
cave-height: 60
|
||||
# Use your own world generator for this world.
|
||||
# In this case, the plugin will not generate anything.
|
||||
# /!\ This feature is experimental and might not work as expected or might not work at all.
|
||||
use-own-generator: true
|
||||
# Maximum number of caves in the world. Set to -1 or 0 for unlimited.
|
||||
# If the number of caves is greater than this number, it will stop players from creating caves.
|
||||
max-caves: 0
|
||||
# The number of concurrent caves a player can have
|
||||
# A value of 0 will use the BentoBox config.yml default
|
||||
concurrent-caves: 0
|
||||
# Disallow team members from having their own caves.
|
||||
disallow-team-member-caves: true
|
||||
# The default game mode for this world. Players will be set to this mode when they create
|
||||
# a new cave for example. Options are SURVIVAL, CREATIVE, ADVENTURE, SPECTATOR
|
||||
default-game-mode: SURVIVAL
|
||||
# The default biome for the overworld
|
||||
default-biome: PLAINS
|
||||
default-biome: MOUNTAINS
|
||||
# The maximum number of players a player can ban at any one time in this game mode.
|
||||
# The permission caveblock.ban.maxlimit.X where X is a number can also be used per player
|
||||
# -1 = unlimited
|
||||
ban-limit: -1
|
||||
#
|
||||
# This is cave.. no height... only depth. If depth is set smaller than maximal world height, then area above will be empty.
|
||||
# Should not be less than cave height.
|
||||
# This is cave.. no height... only depth. Max 256.
|
||||
# Should not be less then cave height.
|
||||
# /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds.
|
||||
world-depth: 256
|
||||
# This indicate how many times block should be tried to generate.
|
||||
# /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds.
|
||||
generation-tries: 2
|
||||
# Should we use the new material generator ?
|
||||
# This will generate ores and blocks similar to how vanilla does,
|
||||
# but it will override the blocks settings of each world.
|
||||
# /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds.
|
||||
use-new-material-generator: false
|
||||
normal:
|
||||
#
|
||||
# Make over world roof of bedrock, if false, it will be made from stone.
|
||||
# Make over world roof of bedrock, if false, it will be made from stone
|
||||
# /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds.
|
||||
roof: true
|
||||
#
|
||||
# Option allows to toggle if world generator should generate natural(-ish) looking surface with dirt and grass blocks.
|
||||
# Enabling this option will ignore roof setting.
|
||||
# Default value is false.
|
||||
# /!\ This feature is experimental and might not work as expected or might not work at all.
|
||||
# /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds.
|
||||
natural-surface: false
|
||||
#
|
||||
# Option allows to toggle if world generator should generate natural looking caves.
|
||||
# Default value is false.
|
||||
# /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds.
|
||||
natural-caves: false
|
||||
# Make over world floor of bedrock, if false, it will be made from stone.
|
||||
# Make over world floor of bedrock, if false, it will be made from stone
|
||||
# /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds.
|
||||
floor: true
|
||||
#
|
||||
# Option allows to toggle if world generator should generate natural looking bedrock block patterns.
|
||||
# Enabling this option will ignore floor setting.
|
||||
# Default value is false.
|
||||
# /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds.
|
||||
natural-bedrock: false
|
||||
# Main block of which world will be generated.
|
||||
# /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds.
|
||||
main-block: STONE
|
||||
@ -145,19 +102,14 @@ world:
|
||||
- MATERIAL:COAL_ORE:10:6
|
||||
- MATERIAL:EMERALD_ORE:1:1
|
||||
- MATERIAL:CLAY:10:6
|
||||
- MATERIAL:DIRT:20:10
|
||||
- MATERIAL:GRAVEL:40:6
|
||||
- MATERIAL:GRANITE:40:10
|
||||
- MATERIAL:DIRT:10:10
|
||||
- MATERIAL:GRAVEL:20:6
|
||||
- MATERIAL:GRANITE:20:10
|
||||
- MATERIAL:ANDESITE:20:10
|
||||
- MATERIAL:DIORITE:30:8
|
||||
- MATERIAL:LAVA:15:4
|
||||
- ENTITY:ZOMBIE:10:1
|
||||
- ENTITY:ENDERMAN:10:1
|
||||
- ENTITY:SKELETON:10:1
|
||||
- ENTITY:CREEPER:1:1
|
||||
- ENTITY:DOLPHIN:1:1
|
||||
- ENTITY:BAT:10:1
|
||||
- ENTITY:CAVE_SPIDER:10:1
|
||||
- ENTITY:ZOMBIE:1:1
|
||||
- ENTITY:DOLPHIN:0.1:1
|
||||
- ENTITY:CAVE_SPIDER:1:1
|
||||
nether:
|
||||
# Generate Nether - if this is false, the nether world will not be made and access to
|
||||
# the nether will not occur. Other plugins may still enable portal usage.
|
||||
@ -168,9 +120,6 @@ world:
|
||||
# Caves in Nether. Change to false for standard vanilla nether.
|
||||
# /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds.
|
||||
caves: true
|
||||
# The default biome for the nether world (this may affect what mobs can spawn)
|
||||
# Added since 1.14.0.
|
||||
biome: NETHER_WASTES
|
||||
# Nether spawn protection radius - this is the distance around the nether spawn
|
||||
# that will be protected from player interaction (breaking blocks, pouring lava etc.)
|
||||
# Minimum is 0 (not recommended), maximum is 100. Default is 25.
|
||||
@ -201,22 +150,15 @@ world:
|
||||
- MATERIAL:MAGMA_BLOCK:10:3
|
||||
- MATERIAL:GLOWSTONE:20:8
|
||||
- MATERIAL:NETHER_BRICKS:10:5
|
||||
- MATERIAL:LAVA:30:10
|
||||
- MATERIAL:LAVA:10:1
|
||||
- ENTITY:MAGMA_CUBE:0.5:1
|
||||
- ENTITY:GHAST:0.1:1
|
||||
- ENTITY:WITHER_SKELETON:0.1:1
|
||||
- MATERIAL:FIRE:10:1
|
||||
# This option indicates if nether portals should be linked via dimensions.
|
||||
# Option will simulate vanilla portal mechanics that links portals together
|
||||
# or creates a new portal, if there is not a portal in that dimension.
|
||||
create-and-link-portals: false
|
||||
end:
|
||||
generate: true
|
||||
# /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds.
|
||||
caves: true
|
||||
# The default biome for the end world (this may affect what mobs can spawn)
|
||||
# Added since 1.14.0.
|
||||
biome: THE_END
|
||||
# /!\ This feature is experimental and might not work as expected or might not work at all.
|
||||
dragon-spawn: false
|
||||
# Make over world roof of bedrock, if false, it will be made from stone
|
||||
@ -242,13 +184,11 @@ world:
|
||||
- ENTITY:SHULKER:0.2:1
|
||||
- MATERIAL:OBSIDIAN:1:1
|
||||
- MATERIAL:CHORUS_PLANT:1:3
|
||||
# This option indicates if obsidian platform in the end should be generated
|
||||
# when player enters the end world.
|
||||
create-obsidian-platform: false
|
||||
# Mob white list - these mobs will NOT be removed when logging in or doing /cave
|
||||
remove-mobs-whitelist:
|
||||
- WITHER
|
||||
- ENDERMAN
|
||||
- PIG_ZOMBIE
|
||||
- ZOMBIE_VILLAGER
|
||||
# World flags. These are boolean settings for various flags for this world
|
||||
flags:
|
||||
@ -257,8 +197,6 @@ world:
|
||||
PISTON_PUSH: false
|
||||
ISLAND_RESPAWN: true
|
||||
CREEPER_GRIEFING: false
|
||||
COARSE_DIRT_TILLING: true
|
||||
PETS_STAY_AT_HOME: true
|
||||
ENDERMAN_GRIEFING: true
|
||||
CLEAN_SUPER_FLAT: false
|
||||
CHEST_DAMAGE: false
|
||||
@ -266,15 +204,10 @@ world:
|
||||
NATURAL_SPAWNING_OUTSIDE_RANGE: true
|
||||
ENTER_EXIT_MESSAGES: true
|
||||
ENDERMAN_DEATH_DROP: true
|
||||
LIQUIDS_FLOWING_OUT: false
|
||||
OFFLINE_REDSTONE: true
|
||||
REMOVE_END_EXIT_ISLAND: true
|
||||
OFFLINE_GROWTH: true
|
||||
REMOVE_MOBS: true
|
||||
ENDER_CHEST: false
|
||||
ITEM_FRAME_DAMAGE: false
|
||||
TREES_GROWING_OUTSIDE_RANGE: false
|
||||
WITHER_DAMAGE: false
|
||||
# These are the default protection settings for new caves.
|
||||
# The value is the minimum cave rank required allowed to do the action.
|
||||
# Ranks are the following:
|
||||
@ -284,9 +217,69 @@ world:
|
||||
# MEMBER = 500
|
||||
# SUB-OWNER = 900
|
||||
# OWNER = 1000
|
||||
default-cave-flags: {}
|
||||
default-cave-flags:
|
||||
HURT_ANIMALS: 500
|
||||
REDSTONE: 500
|
||||
BUCKET: 500
|
||||
LOCK: 0
|
||||
ENDER_PEARL: 500
|
||||
DOOR: 500
|
||||
FURNACE: 500
|
||||
ANVIL: 500
|
||||
FISH_SCOOPING: 500
|
||||
END_PORTAL: 500
|
||||
BREEDING: 500
|
||||
HURT_VILLAGERS: 500
|
||||
TURTLE_EGGS: 500
|
||||
FROST_WALKER: 500
|
||||
COLLECT_LAVA: 500
|
||||
LEVER: 500
|
||||
RIDING: 500
|
||||
HURT_MONSTERS: 0
|
||||
ARMOR_STAND: 500
|
||||
NAME_TAG: 500
|
||||
TRADING: 0
|
||||
EGGS: 500
|
||||
ITEM_DROP: 0
|
||||
NOTE_BLOCK: 0
|
||||
NETHER_PORTAL: 500
|
||||
CROP_TRAMPLE: 500
|
||||
ITEM_PICKUP: 0
|
||||
DROPPER: 500
|
||||
BREWING: 500
|
||||
COLLECT_WATER: 500
|
||||
BUTTON: 500
|
||||
FIRE_EXTINGUISH: 500
|
||||
BEACON: 500
|
||||
TRAPDOOR: 500
|
||||
PRESSURE_PLATE: 0
|
||||
PLACE_BLOCKS: 500
|
||||
ITEM_FRAME: 500
|
||||
CRAFTING: 0
|
||||
SHEARING: 500
|
||||
ENCHANTING: 0
|
||||
BED: 500
|
||||
SPAWN_EGGS: 500
|
||||
MILKING: 0
|
||||
DISPENSER: 500
|
||||
GATE: 0
|
||||
EXPERIENCE_PICKUP: 500
|
||||
HOPPER: 500
|
||||
LEASH: 500
|
||||
MOUNT_INVENTORY: 500
|
||||
BREAK_BLOCKS: 500
|
||||
CHORUS_FRUIT: 500
|
||||
CONTAINER: 500
|
||||
JUKEBOX: 500
|
||||
POTION_THROWING: 500
|
||||
# These are the default settings for new caves
|
||||
default-cave-settings: {}
|
||||
default-cave-settings:
|
||||
PVP_END: false
|
||||
PVP_NETHER: false
|
||||
ANIMAL_SPAWN: true
|
||||
MONSTER_SPAWN: true
|
||||
FIRE_SPREAD: true
|
||||
PVP_OVERWORLD: false
|
||||
# These settings/flags are hidden from users
|
||||
# Ops can toggle hiding in-game using SHIFT-LEFT-CLICK on flags in settings
|
||||
hidden-flags: []
|
||||
@ -409,55 +402,15 @@ cave:
|
||||
# Added since 1.10.0.
|
||||
create-missing-nether-end-caves: false
|
||||
commands:
|
||||
# List of commands to run when a player joins an cave or creates one.
|
||||
# These commands are run by the console, unless otherwise stated using the [SUDO] prefix,
|
||||
# in which case they are executed by the player.
|
||||
#
|
||||
# Available placeholders for the commands are the following:
|
||||
# * [name]: name of the player
|
||||
#
|
||||
# Here are some examples of valid commands to execute:
|
||||
# * '[SUDO] bbox version'
|
||||
# * 'bsbadmin deaths set [player] 0'
|
||||
#
|
||||
# Note that player-executed commands might not work, as these commands can be run with said player being offline.
|
||||
# Added since 1.8.0.
|
||||
# List of commands to run when a player joins.
|
||||
on-join: []
|
||||
# List of commands to run when a player leaves a cave, resets his cave or gets kicked from it.
|
||||
# These commands are run by the console, unless otherwise stated using the [SUDO] prefix,
|
||||
# in which case they are executed by the player.
|
||||
#
|
||||
# Available placeholders for the commands are the following:
|
||||
# * [name]: name of the player
|
||||
#
|
||||
# Here are some examples of valid commands to execute:
|
||||
# * '[SUDO] bbox version'
|
||||
# * 'bsbadmin deaths set [player] 0'
|
||||
#
|
||||
# Note that player-executed commands might not work, as these commands can be run with said player being offline.
|
||||
# Added since 1.8.0.
|
||||
# list of commands to run when a player leaves.
|
||||
on-leave: []
|
||||
# List of commands that should be executed when the player respawns after death if Flags.ISLAND_RESPAWN is true.
|
||||
# These commands are run by the console, unless otherwise stated using the [SUDO] prefix,
|
||||
# in which case they are executed by the player.
|
||||
#
|
||||
# Available placeholders for the commands are the following:
|
||||
# * [name]: name of the player
|
||||
#
|
||||
# Here are some examples of valid commands to execute:
|
||||
# * '[SUDO] bbox version'
|
||||
# * 'bsbadmin deaths set [player] 0'
|
||||
#
|
||||
# Note that player-executed commands might not work, as these commands can be run with said player being offline.
|
||||
# Added since 1.14.0.
|
||||
on-respawn: []
|
||||
sethome:
|
||||
nether:
|
||||
# Allow setting home in the nether. Only available on nether islands, not vanilla nether.
|
||||
allow: true
|
||||
require-confirmation: true
|
||||
the-end:
|
||||
# Allow setting home in the end. Only available on end islands, not vanilla end.
|
||||
allow: true
|
||||
require-confirmation: true
|
||||
deaths:
|
||||
|
@ -1,312 +0,0 @@
|
||||
---
|
||||
caveblock:
|
||||
sign:
|
||||
line0: "&cCaveBlock"
|
||||
line1: Herzlich willkommen!
|
||||
line2: "[name]"
|
||||
line3: Fang an zu graben! & c <3
|
||||
informational:
|
||||
to-nether: Unglücklicherweise in den Nether gefallen.
|
||||
to-the-end: Du hast das Ende erreicht.
|
||||
to-normal: Zurück zu deiner Höhle.
|
||||
general:
|
||||
errors:
|
||||
no-island: "&cDu hast keine Höhle!"
|
||||
player-has-island: "&cSpieler hat bereits eine Höhle!"
|
||||
player-has-no-island: "&cDieser Spieler hat keine Höhle!"
|
||||
already-have-island: "&cDu hast bereits eine Höhle!"
|
||||
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:
|
||||
add:
|
||||
name-has-island: "&c[name] hat eine Höhle. Entferne ihn von seiner Höhle
|
||||
oder lösche sie!"
|
||||
success: "&b[name] &awurde zu &b[owner]&as Höhle hinzugefügt."
|
||||
kick:
|
||||
success: "&b[name] &awurde aus der Höhle von &b[owner] &ageworfen."
|
||||
setowner:
|
||||
description: überträgt den Höhlenbesitz auf den Spieler
|
||||
already-owner: "&c[name] ist bereits der Besitzer dieser Höhle!"
|
||||
success: "&b[name] &aist jetzt der Besitzer dieser Höhle."
|
||||
range:
|
||||
description: Admin Cave Range Befehl
|
||||
display:
|
||||
description: Höhlenreichweite anzeigen/ausblenden
|
||||
hint: |-
|
||||
&cRote Barrier-Symbole &fzeigen die aktuelle höhlengeschützte Bereichsgrenze an.
|
||||
&7Graue Partikel &fzeigen das maximale Höhlenlimit an.
|
||||
&aGrüne Partikel &fzeigen den standardmäßig geschützten Bereich an, wenn der Höhlenschutzbereich davon abweicht.
|
||||
set:
|
||||
description: Legt den höhlengeschützten Bereich fest
|
||||
success: "&aSetze den Höhlenschutzbereich auf &b[number]&a."
|
||||
reset:
|
||||
description: Setzt den Höhlenschutzbereich auf die Standardeinstellung
|
||||
zurück
|
||||
success: "&aHöhlenschutzbereich auf &b[number] &azurücksetzen."
|
||||
register:
|
||||
description: Registrieren Sie den Spieler für die Höhle, in der Sie sich befinden
|
||||
registered-island: "&aSpieler zur Höhle bei [xyz] hinzugefügt."
|
||||
already-owned: "&cHöhle gehört bereits einem anderen Spieler!"
|
||||
no-island-here: "&cEs gibt hier keine Höhle. Bestätige, um eine zu erstellen."
|
||||
in-deletion: "&cDieser Höhlenbereich wird derzeit gelöscht. Versuche es später."
|
||||
cannot-make-island: "&cEine Höhle kann hier leider nicht platziert werden.
|
||||
Gucke in die Console für mögliche Fehler."
|
||||
unregister:
|
||||
description: Besitzer von der Höhle abmelden, aber Höhlenblöcke behalten
|
||||
unregistered-island: "&aSpieler aus der Höhle bei [xyz] entfernt."
|
||||
info:
|
||||
description: Erhalten Sie Informationen darüber, wo Sie sich befinden oder
|
||||
in der Höhle des Spielers
|
||||
no-island: "&cDu bist gerade nicht in einer Höhle..."
|
||||
title: "========== Höhleninfo ============"
|
||||
islands-in-trash: "&dPlayer hat Höhlen im Müll."
|
||||
is-spawn: Insel ist eine Spawnhöhle
|
||||
switchto:
|
||||
description: Wechsle die Höhle des Spielers zu ersten im Müll
|
||||
out-of-range: "&cNummer muss zwischen 1 und [number] liegen. Verwenden Sie
|
||||
&l[label] trash [player] &c, um Höhlennummern anzuzeigen"
|
||||
trash:
|
||||
no-unowned-in-trash: "&cKeine nicht besessenen Höhlen im Müll"
|
||||
no-islands-in-trash: "&cPlayer hat keine Höhlen im Müll"
|
||||
description: Zeigen Sie nicht besessene Höhlen oder Spielerhöhlen im Müll
|
||||
title: "&d=========== Höhlen im Müll ==========="
|
||||
count: "&d&lCave [number]:"
|
||||
use-switch: "& aVerwenden Sie & l [label] und wechseln Sie zu <player> <number>
|
||||
& r & a, um den Spieler so zu wechseln, dass er in den Papierkorb fällt"
|
||||
emptytrash:
|
||||
description: Löschen Sie den Müll für den Spieler oder alle nicht besessenen
|
||||
Höhlen im Müll
|
||||
setrange:
|
||||
description: Stellen Sie die Reichweite der Spielerhöhle ein
|
||||
range-updated: Höhlenbereich auf [number] aktualisiert
|
||||
tp:
|
||||
description: teleportiere zur Höhle eines Spielers
|
||||
getrank:
|
||||
description: Holen Sie sich den Rang eines Spielers in seiner Höhle
|
||||
rank-is: "&aRang ist [rank] in ihrer Höhle."
|
||||
setrank:
|
||||
description: Setze den Rang eines Spielers auf seine Höhle
|
||||
setspawn:
|
||||
description: Setze eine Höhle als Brut für diese Welt
|
||||
already-spawn: "&cDiese Höhle ist bereits ein Spawn!"
|
||||
no-island-here: "&cEs gibt hier keine Höhle."
|
||||
confirmation: "&cBist du sicher, dass du diese Höhle als Spawn für diese Welt
|
||||
setzen willst?"
|
||||
resetflags:
|
||||
description: Setzen Sie alle Höhlen auf die Standard-Flag-Einstellungen in
|
||||
config.yml zurück
|
||||
delete:
|
||||
description: löscht die Höhle eines Spielers
|
||||
cannot-delete-owner: "&cAlle Höhlenmitglieder müssen vor dem Löschen aus der
|
||||
Höhle geworfen werden."
|
||||
deleted-island: "&aHöhle bei &e[xyz] &awurde erfolgreich gelöscht."
|
||||
island:
|
||||
go:
|
||||
description: teleportiere dich zu deiner Höhle
|
||||
teleport: "&aTeleportiere dich zu deiner Höhle."
|
||||
help:
|
||||
description: Der Haupthöhlenbefehl
|
||||
create:
|
||||
description: Erstellen Sie eine Höhle mit optionalem Entwurf (erfordert Erlaubnis)
|
||||
too-many-islands: "&cEs gibt zu viele Höhlen auf dieser Welt: Es gibt nicht
|
||||
genug Platz, um deine zu erschaffen."
|
||||
unable-create-island: "&cIhre Höhle konnte nicht generiert werden. Bitte wenden
|
||||
Sie sich an einen Administrator."
|
||||
creating-island: "&aErstellen Sie Ihre Höhle, bitte warten Sie einen Moment..."
|
||||
pick: "&aWähle eine Höhle aus"
|
||||
info:
|
||||
description: Zeige Informationen über deine Höhle oder die Höhle des Spielers
|
||||
an
|
||||
near:
|
||||
description: Zeigen Sie den Namen der benachbarten Höhlen um Sie herum
|
||||
the-following-islands: "&aDie folgenden Höhlen befinden sich in der Nähe:"
|
||||
no-neighbors: "&cSie haben keine unmittelbaren Nachbarhöhlen!"
|
||||
reset:
|
||||
description: Starten Sie Ihre Höhle neu und entfernen Sie die alte
|
||||
must-remove-members: "&cDu musst alle Mitglieder aus deiner Höhle entfernen,
|
||||
bevor du sie neu starten erstellen (/island team kick <player>)."
|
||||
sethome:
|
||||
must-be-on-your-island: "&cSie müssen in Ihrer Höhle sein, um nach Hause zu
|
||||
gehen!"
|
||||
home-set: "&6Ihr Home wurde auf Ihren aktuellen Standort gesetzt."
|
||||
setname:
|
||||
description: Setze einen Namen für deine Höhle
|
||||
resetname:
|
||||
description: Setzen Sie Ihren Höhlennamen zurück
|
||||
team:
|
||||
coop:
|
||||
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]"
|
||||
all-members-logged-off: "& cAlle Höhlenmitglieder haben sich abgemeldet,
|
||||
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. "
|
||||
you-will-lose-your-island: "& WARNUNG! Sie werden Ihre Höhle verlieren,
|
||||
wenn Sie akzeptieren!"
|
||||
errors:
|
||||
island-is-full: "& cIhre Höhle ist voll, Sie können niemanden einladen."
|
||||
accept:
|
||||
you-joined-island: "& aSie sind einer Höhle beigetreten! Verwenden Sie
|
||||
/ [label] team info, um die anderen Mitglieder anzuzeigen."
|
||||
name-joined-your-island: "& ein [Name] hat sich deiner Höhle angeschlossen!"
|
||||
confirmation: |-
|
||||
& Sind Sie sicher, dass Sie diese Einladung annehmen möchten?
|
||||
& c & lSie werden & r & c & Ihre aktuelle Höhle verlieren!
|
||||
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!"
|
||||
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"
|
||||
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."
|
||||
demote:
|
||||
description: Herabstufen eines Spielers in Ihrer Höhle um einen Rang
|
||||
promote:
|
||||
description: Befördere einen Spieler in deiner Höhle um einen Rang
|
||||
setowner:
|
||||
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!"
|
||||
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!"
|
||||
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!"
|
||||
banlist:
|
||||
noone: "& aKeine Höhle ist in dieser Höhle verboten."
|
||||
settings:
|
||||
description: Höhleneinstellungen anzeigen
|
||||
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!"
|
||||
ranks:
|
||||
owner: Zwergenkönig
|
||||
sub-owner: Zwergenritter
|
||||
member: Zwerg
|
||||
trusted: Vertrauenswürdige
|
||||
coop: Coop
|
||||
visitor: Mensch
|
||||
banned: Ork
|
||||
protection:
|
||||
flags:
|
||||
ENDERMAN_GRIEFING:
|
||||
description: |-
|
||||
& aEndermen können entfernen
|
||||
& Ablocks aus Höhlen
|
||||
name: Enderman trauert
|
||||
ENTER_EXIT_MESSAGES:
|
||||
island: "[name] Höhle"
|
||||
GEO_LIMIT_MOBS:
|
||||
description: |-
|
||||
& aEntferne Mobs, die gehen
|
||||
& aoutside geschützt
|
||||
& Acave Raum
|
||||
name: "& eLimit Mobs zur Höhle"
|
||||
ISLAND_RESPAWN:
|
||||
description: |-
|
||||
& aPlayers respawn
|
||||
& ain ihrer Höhle
|
||||
name: Höhlen-Respawn
|
||||
LIQUIDS_FLOWING_OUT:
|
||||
name: Flüssigkeiten fließen außerhalb von Höhlen
|
||||
description: |-
|
||||
& aStellen Sie fest, ob Flüssigkeiten nach außen fließen können
|
||||
& a der Schutzreichweite der Höhle.
|
||||
LOCK:
|
||||
description: Schloss umschalten
|
||||
name: Höhle verschließen
|
||||
NATURAL_SPAWNING_OUTSIDE_RANGE:
|
||||
name: Natürliche Kreatur, die außerhalb der Reichweite laicht
|
||||
description: |-
|
||||
& aToggle ob Kreaturen (Tiere und
|
||||
& Amonster) können natürlich draußen laichen
|
||||
& aa Höhlenschutzbereich.
|
||||
|
||||
& cBeachten Sie, dass es Kreaturen nicht verhindert
|
||||
& cto Spawn über einen Mob Spawner oder einen Spawn
|
||||
& cegg.
|
||||
OFFLINE_GROWTH:
|
||||
description: |-
|
||||
& aWenn behindert, Pflanzen
|
||||
& werde nicht in Höhlen wachsen
|
||||
& wenn alle Mitglieder offline sind.
|
||||
& aKann helfen, Verzögerungen zu reduzieren.
|
||||
name: Offline-Wachstum
|
||||
OFFLINE_REDSTONE:
|
||||
description: |-
|
||||
& aWenn deaktiviert, Redstone
|
||||
Ich werde nicht in Höhlen arbeiten
|
||||
& wo alle Mitglieder offline sind.
|
||||
& aKann helfen, Verzögerungen zu reduzieren.
|
||||
name: Offline Redstone
|
||||
PISTON_PUSH:
|
||||
description: |-
|
||||
& aKolben schieben lassen
|
||||
& Ablocks außerhalb der Höhle
|
||||
name: Kolben drücken
|
||||
REMOVE_MOBS:
|
||||
description: |-
|
||||
& aEntferne Monster, wenn
|
||||
& ateleporting zur Höhle
|
||||
name: Entferne Monster
|
||||
TREES_GROWING_OUTSIDE_RANGE:
|
||||
name: Bäume wachsen außerhalb der Reichweite
|
||||
description: |-
|
||||
& aToggle, ob Bäume außerhalb eines wachsen können
|
||||
& acaves Schutzbereich oder nicht.
|
||||
PREVENT_TELEPORT_WHEN_FALLING:
|
||||
name: Verhindern Sie Teleport beim Fallen
|
||||
description: |-
|
||||
& aVermeide das Teleportieren von Spielern
|
||||
& mit Befehlen in ihre Höhle staunen
|
||||
& aif sie fallen.
|
||||
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: [description]"
|
||||
spawn-protected: "& cSpawn protected: [description]"
|
||||
panel:
|
||||
PROTECTION:
|
||||
description: |-
|
||||
& aSchutzeinstellungen
|
||||
& vor dieser Höhle
|
||||
SETTING:
|
||||
description: |-
|
||||
& aAllgemeine Einstellungen
|
||||
& vor dieser Höhle
|
||||
protection:
|
||||
flags:
|
||||
SKY_WALKER_FLAG:
|
||||
description: |-
|
||||
& 5 & oDies ermöglicht das Aktivieren / Deaktivieren
|
||||
& 5 & Fähigkeit, auf dem zu gehen
|
||||
& 5 & otop der Höhlenwelt
|
||||
& 5 & ohne zusätzliche Berechtigungen.
|
||||
name: Sky Walker
|
||||
hint: Ermöglicht das Gehen auf der Höhlendecke.
|
@ -24,7 +24,6 @@ caveblock:
|
||||
already-have-island: "&cYou already have a cave!"
|
||||
no-safe-location-found: "&cCould not find a safe spot to teleport you to on the cave."
|
||||
not-owner: "&cYou are not the owner of your cave!"
|
||||
cave-limit-reached: "&c You have reached the top of your cave. You cannot get higher!"
|
||||
commands:
|
||||
# Parameters in <> are required, parameters in [] are optional
|
||||
admin:
|
||||
@ -290,6 +289,6 @@ caveblock:
|
||||
protection:
|
||||
flags:
|
||||
SKY_WALKER_FLAG:
|
||||
description: "&5&oEnable/disable\n&5&o the ability to walk on\n&5&o the top of the cave world\n&5&o without extra permissions."
|
||||
description: "&5&oThis allows to enable/disable\n&5&oability to walk on the\n&5&otop of the cave world\n&5&owithout extra permissions."
|
||||
name: "Sky Walker"
|
||||
hint: "Allows to walk on the cave roof."
|
||||
hint: "Allows to walk on cave ceiling."
|
@ -1,301 +0,0 @@
|
||||
---
|
||||
caveblock:
|
||||
sign:
|
||||
line0: "&cCaveBlock"
|
||||
line1: "¡Bienvenido!"
|
||||
line2: "[name]"
|
||||
line3: "¡Cava! &c<3"
|
||||
informational:
|
||||
to-nether: Tan desafortunado en caer al infierno.
|
||||
to-the-end: Haz alcanzado el fin.
|
||||
to-normal: Volver a tu cueva.
|
||||
general:
|
||||
errors:
|
||||
no-island: "&c¡No tienes una cueva!"
|
||||
player-has-island: "&c¡Ese jugador ya tiene una cueva!"
|
||||
player-has-no-island: "&c¡Ese jugador no tiene una cueva!"
|
||||
already-have-island: "&c¡Ya tienes una cueva!"
|
||||
no-safe-location-found: "&cNo encontramos un lugar seguro para teletransportarte
|
||||
a la cueva."
|
||||
not-owner: "&c¡No eres el propietario de la cueva!"
|
||||
commands:
|
||||
admin:
|
||||
team:
|
||||
add:
|
||||
name-has-island: "&c[name] tiene una cueva. ¡Deshazte de ella primero!"
|
||||
success: "&b[name]&a ha sido agregado a la cueva de &b[owner]&a."
|
||||
kick:
|
||||
success: "&b[name] &aha sido expulsado de la cueva de &b[owner]&a."
|
||||
setowner:
|
||||
description: transfiere la propiedad de la cueva al jugador
|
||||
already-owner: "&c¡[name] ya es el propietario de esta cueva!"
|
||||
success: "&b[name]&a es ahora el propietario de esta cueva."
|
||||
range:
|
||||
description: Comando de cuevas para administradores
|
||||
display:
|
||||
description: muestra/oculta los indicadores del rango de la cueva
|
||||
hint: |-
|
||||
&fLos &ciconos de barrera roja &fmuestran el límite de protección de la cueva.
|
||||
&fLas &7partículas grises &fmuestran el limite máximo de la cueva.
|
||||
&fLas &aparticulas verdes &fmuestran el rango predeterminado de protección si el actual es diferente.
|
||||
set:
|
||||
description: establece el rango de protección de la cueva
|
||||
success: "&aHaz establecido el rango de protección de la cueva a &b[number]&a."
|
||||
reset:
|
||||
description: restablece el rango de protección de la cueva al predeterminado
|
||||
del mundo
|
||||
success: "&aHaz restablecido el rango de protección de la cueva a &b[number]&a."
|
||||
register:
|
||||
description: registra a un jugador a la cueva sin propietario en la que estás
|
||||
registered-island: "&aJugador registrado en la cueva de [xyz]."
|
||||
already-owned: "&c¡Esta cueva ya tiene propietario!"
|
||||
no-island-here: "&cNo hay una cueva aquí. Confirmar para crear una."
|
||||
in-deletion: "&cEsta cueva se está eliminando actualmente. Intenta más tarde."
|
||||
cannot-make-island: "&c No se puede colocar una cueva aquí, lo sentimos. Revisa
|
||||
la consola para posibles errores."
|
||||
unregister:
|
||||
description: elimina el propietario de la cueva, pero mantiene los bloques
|
||||
unregistered-island: "&aEliminado el jugador de la cueva de [xyz]."
|
||||
info:
|
||||
description: obtener info. sobre donde estás o de la cueva
|
||||
no-island: "&cNo estás en una cueva ahora mismo..."
|
||||
title: "======== Info. de la cueva =========="
|
||||
islands-in-trash: "&dEl jugador tiene cuevas en la basura."
|
||||
is-spawn: La isla es una cueva de spawneo
|
||||
switchto:
|
||||
description: cambia la cueva del jugador a la numerada de la basura
|
||||
out-of-range: "&cEl número debe estar entre 1 y [number]. Usa &l[label] trash
|
||||
[player] &r&cpara ver el número de la cueva."
|
||||
trash:
|
||||
no-unowned-in-trash: "&cNo hay cuevas sin propietario en la basura."
|
||||
no-islands-in-trash: "&cEl jugador no tiene cuevas en la basura"
|
||||
description: muestra cuevas sin propietario o las cuevas del jugador en la
|
||||
basura
|
||||
title: "&d========== Cuevas en la basura =========="
|
||||
count: "&l&dCueva [number]:"
|
||||
use-switch: "&aUsa &l[label] switch <jugador> <número>&r&a para cambiar la
|
||||
cueva del jugador a una de la basura."
|
||||
emptytrash:
|
||||
description: Limpiar la basura del jugador, o todas las cuevas sin propietario
|
||||
en la basura
|
||||
setrange:
|
||||
description: establece el rango de la cueva del jugador
|
||||
range-updated: Rango de cueva actualizado a [number]
|
||||
tp:
|
||||
description: teletransportarse a una cueva
|
||||
getrank:
|
||||
description: ver el rango de un jugador en su cueva
|
||||
rank-is: "&aEl rango del jugador es [rank] en su cueva."
|
||||
setrank:
|
||||
description: establecer el rango del jugador en su cueva
|
||||
setspawn:
|
||||
description: establecer una cueva como spawn para este mundo
|
||||
already-spawn: "&c¡Esta cueva ya es el spawn!"
|
||||
no-island-here: "&cNo hay una cueva aquí."
|
||||
confirmation: "&c¿Estás seguro que quieres establecer esta cueva como spawn
|
||||
de este mundo?"
|
||||
resetflags:
|
||||
description: Restablecer todas las cuevas a los ajustes predeterminados en
|
||||
config.yml
|
||||
delete:
|
||||
description: eliminar la cueva de un jugador
|
||||
cannot-delete-owner: "&cTodos los miembros de la cueva deben ser expulsados
|
||||
antes de eliminarla."
|
||||
deleted-island: "&aCueva de &e[xyz] &aeliminada correctamente."
|
||||
island:
|
||||
go:
|
||||
description: teletransportar a tu cueva
|
||||
teleport: "&aTeletransportandote a tu cueva."
|
||||
help:
|
||||
description: El comando principal de las cuevas
|
||||
create:
|
||||
description: crear una cueva, usando un plano opcional (requiere permiso)
|
||||
too-many-islands: "&cHay demasiadas cuevas en este mundo: no hay suficiente
|
||||
espacio para crear una para ti."
|
||||
unable-create-island: "&cTu cueva no pudo ser generada, por favor contacta
|
||||
a un administrador."
|
||||
creating-island: "&aCreando tu cueva, por favor espera un momento..."
|
||||
pick: "&aElige una cueva"
|
||||
info:
|
||||
description: muestra info. de tu/otra cueva
|
||||
near:
|
||||
description: muestra el nombre de las cuevas vecinas
|
||||
the-following-islands: "&aLas cuevas cercanas son:"
|
||||
no-neighbors: "&c¡No hay cuevas vecinas!"
|
||||
reset:
|
||||
description: reinicia tu cueva y elimina la anterior
|
||||
must-remove-members: "&cDebes eliminar a todos los miembros de tu cueva antes
|
||||
de poder reiniciarla (/island team kick <jugador>)."
|
||||
sethome:
|
||||
must-be-on-your-island: "&c¡Debes estar en tu cueva para establecer el hogar!"
|
||||
home-set: "&6El hogar de tu cueva ha sido establecido a tu posición actual."
|
||||
setname:
|
||||
description: establece un nombre a tu cueva
|
||||
resetname:
|
||||
description: reinicia el nombre de tu cueva
|
||||
team:
|
||||
coop:
|
||||
description: dar rango coop. a un jugador en tu cueva
|
||||
uncoop:
|
||||
you-are-no-longer-a-coop-member: "&cYa no eres un miembro coop en la cueva
|
||||
de [name]"
|
||||
all-members-logged-off: "&cTodos los miembros de la cueva de [name] se desconectaron
|
||||
así que ya no eres un miembro coop."
|
||||
trust:
|
||||
description: dar rango aliado a un jugador en tu cueva
|
||||
invite:
|
||||
description: invita a un jugador a tu cueva
|
||||
name-has-invited-you: "&a[name] te ha invitado a su cueva."
|
||||
you-will-lose-your-island: "&c¡ADVERTENCIA! ¡Perderás tu cueva si aceptas!"
|
||||
errors:
|
||||
island-is-full: "&cTu cueva está llena, no puedes invitar a nadie más."
|
||||
accept:
|
||||
you-joined-island: "&a¡Te uniste a una cueva! Usa /[label] team info para
|
||||
ver a los otros miembros."
|
||||
name-joined-your-island: "&a¡[name] se unió a tu cueva!"
|
||||
confirmation: |-
|
||||
&c¿Estás seguro que quieres aceptar la invitación?
|
||||
&c&l¡&nPERDERAS&c&l tu cueva actual!
|
||||
reject:
|
||||
you-rejected-invite: "&aHaz rechazado la invitación."
|
||||
name-rejected-your-invite: "&c¡[name] rechazo la invitación!"
|
||||
cancel:
|
||||
description: cancela invitaciones pendientes para unirse a tu cueva
|
||||
leave:
|
||||
description: salir de tu cueva
|
||||
left-your-island: "&c[name] &csalió de la cueva"
|
||||
kick:
|
||||
description: elimina un miembro de tu cueva
|
||||
owner-kicked: "&c¡El propietario te ha expulsado de la cueva!"
|
||||
success: "&b[name] &aha sido expulsado de tu cueva."
|
||||
demote:
|
||||
description: desciende un rango a un jugador de tu cueva
|
||||
promote:
|
||||
description: asciende un rango a un jugador de tu cueva
|
||||
setowner:
|
||||
description: transfiere la propiedad de tu cueva a otro jugador
|
||||
errors:
|
||||
target-is-not-member: "&c¡Este jugador no pertenece a tu cueva!"
|
||||
name-is-the-owner: "&a¡[name] ahora es el propietario de la cueva!"
|
||||
you-are-the-owner: "&a¡No eres el propietario de la cueva!"
|
||||
ban:
|
||||
description: banear un jugador de tu cueva
|
||||
cannot-ban-more-players: "&cHaz alcanzado el limite de baneos, no puedes banear
|
||||
más jugadores de tu cueva."
|
||||
player-banned: "&b[name]&c ahora está baneado de tu cueva."
|
||||
owner-banned-you: "&c¡&b[name]&c te ha baneado de su cueva!"
|
||||
you-are-banned: "&b¡Estás baneado de esta cueva!"
|
||||
unban:
|
||||
description: desbanear un jugador de tu cueva
|
||||
player-unbanned: "&b[name]&a ha sido desbaneado de tu cueva."
|
||||
you-are-unbanned: "&a¡&b[name]&a te ha desbaneado de su cueva!"
|
||||
banlist:
|
||||
noone: "&aNadie está baneado en esta cueva."
|
||||
settings:
|
||||
description: muestra los ajustes de la cueva
|
||||
expel:
|
||||
description: expulsa a un jugador de tu cueva
|
||||
not-on-island: "&c¡Ese jugador no está en tu cueva!"
|
||||
player-expelled-you: "&c¡&b[name]&c te expulsó de la cueva!"
|
||||
ranks:
|
||||
owner: Rey enano
|
||||
sub-owner: Caballero enano
|
||||
member: Enano
|
||||
trusted: Aliado
|
||||
coop: Coop
|
||||
visitor: Humano
|
||||
banned: Orco
|
||||
protection:
|
||||
flags:
|
||||
ENDERMAN_GRIEFING:
|
||||
description: |-
|
||||
&aLos Endermans pueden quitar
|
||||
&abloques de las cuevas
|
||||
name: Grifeo de Endermans
|
||||
ENTER_EXIT_MESSAGES:
|
||||
island: Cueva de [name]
|
||||
GEO_LIMIT_MOBS:
|
||||
description: |-
|
||||
&aEliminar las criaturas que salgan
|
||||
&adel espacio protegido de la cueva
|
||||
name: "&eLimitar criaturas a la cueva"
|
||||
ISLAND_RESPAWN:
|
||||
description: |-
|
||||
&aLos jugadores reaparecen
|
||||
&aen sus cuevas
|
||||
name: Reaparición en cuevas
|
||||
LIQUIDS_FLOWING_OUT:
|
||||
name: Flujo de líquidos por fuera
|
||||
description: |-
|
||||
&aAlternar si los líquidos pueden fluir por
|
||||
&afuera del rango de protección de la cueva.
|
||||
LOCK:
|
||||
description: Alternar bloqueo
|
||||
name: Bloquear cueva
|
||||
NATURAL_SPAWNING_OUTSIDE_RANGE:
|
||||
name: Aparición natural de criaturas por fuera
|
||||
description: |-
|
||||
&aAlternar si las criaturas (animales y
|
||||
&amonstruos) pueden aparecer naturalmente por fuera
|
||||
&adel rango de protección de la cueva.
|
||||
|
||||
&cTen en cuenta que esto no previene la aparición
|
||||
&cde criaturas mediante un spawner o huevo.
|
||||
OFFLINE_GROWTH:
|
||||
description: |-
|
||||
&aAl desactivarse, las plantas no
|
||||
&acrecerán en cuevas con todos
|
||||
&asus miembros desconectados.
|
||||
&aPuede ayudar a reducir el lag.
|
||||
name: Crecimiento fuera de línea
|
||||
OFFLINE_REDSTONE:
|
||||
description: |-
|
||||
&aAl desactivarse, la redstone no
|
||||
&afuncionará en cuevas con todos
|
||||
&asus miembros desconectados.
|
||||
&aPuede ayudar a reducir el lag.
|
||||
name: Redstone fuera de línea
|
||||
PISTON_PUSH:
|
||||
description: |-
|
||||
&aPermitir que los pistones empujen
|
||||
&abloques fuera de la cueva
|
||||
name: Empuje de pistones
|
||||
REMOVE_MOBS:
|
||||
description: |-
|
||||
&aEliminar monstruos cuando te
|
||||
&ateletransportas a la cueva
|
||||
name: Eliminar monstruos
|
||||
TREES_GROWING_OUTSIDE_RANGE:
|
||||
name: Crecimiento de arboles por fuera
|
||||
description: |-
|
||||
&aAlternar si los arboles pueden crecer por fuera
|
||||
&adel rango de protección de la cueva o no.
|
||||
PREVENT_TELEPORT_WHEN_FALLING:
|
||||
name: Evitar el teletransporte al caer
|
||||
description: |-
|
||||
&aEvitar que los jugadores se teletransporten
|
||||
&aa sus cuevas usando comandos
|
||||
&amientras están cayendo.
|
||||
hint: "&cNo puedes teletransportarte a tu cueva mientras estás cayendo."
|
||||
locked: "&c¡Esta cueva está bloqueada!"
|
||||
protected: "&cCueva protegida: [description]"
|
||||
spawn-protected: "&cSpawn protegido: [description]"
|
||||
panel:
|
||||
PROTECTION:
|
||||
description: |-
|
||||
&aAjustes de protección
|
||||
&apara esta cueva
|
||||
SETTING:
|
||||
description: |-
|
||||
&aAjustes generales
|
||||
&apara esta cueva
|
||||
protection:
|
||||
flags:
|
||||
SKY_WALKER_FLAG:
|
||||
description: |-
|
||||
&5&oEsto permite activar/desactivar
|
||||
&5&ola habilidad para caminar en el
|
||||
&5&otecho del mundo de cuevas
|
||||
&5&osin permisos extra.
|
||||
name: Caminante aéreo
|
||||
hint: Permite caminar en el techo de la cueva
|
File diff suppressed because it is too large
Load Diff
@ -1,301 +0,0 @@
|
||||
---
|
||||
caveblock:
|
||||
sign:
|
||||
line0: "&cCaveBlock"
|
||||
line1: Witaj!
|
||||
line2: "[name]"
|
||||
line3: Zacznij kopać! &c<3
|
||||
informational:
|
||||
to-nether: Uuu... Pech, wpadłes do Netheru.
|
||||
to-the-end: To już jest koniec.
|
||||
to-normal: Powrót do jaskini.
|
||||
general:
|
||||
errors:
|
||||
no-island: "&cNie masz jaskini!"
|
||||
player-has-island: "&cGracz już posiada jaskinie!"
|
||||
player-has-no-island: "&cTen gracz nie posiada jaskini!"
|
||||
already-have-island: "&cJuż masz jaskinie!"
|
||||
no-safe-location-found: "&cNie można znaleźć bezpiecznego miejsca dla teleportu
|
||||
do jaskini."
|
||||
not-owner: "&cTo nie twoja jaskinia!"
|
||||
commands:
|
||||
admin:
|
||||
team:
|
||||
add:
|
||||
name-has-island: "&c[name] posiada jaskinie. Pierw wyrejestruj lub usuń!"
|
||||
success: "&b[name]&a został dodany do jaskini gracza &b[owner]."
|
||||
kick:
|
||||
success: "&b[name] &azostał wyrzucony z jaskini gracza &b[owner]."
|
||||
setowner:
|
||||
description: przenosi własności jaskini do gracza
|
||||
already-owner: "&c[name] jest już właścicielem tej jaskini!"
|
||||
success: "&b name]&a jest teraz właścicielem tej jaskini."
|
||||
range:
|
||||
description: Zasięg komendy Jaskinii Admina
|
||||
display:
|
||||
description: pokaż/ukryj wskaźniki zasięgu jaskiń
|
||||
hint: |-
|
||||
&cCzerwone ikony bariery &fpokazują aktualny limit zasięgu chronionego jaskini.
|
||||
&7Szare cząsteczki &fpokazują maksymalny limit jaskini.
|
||||
&aZielone cząsteczki &fpokazują domyślny zasięg ochrony, jeśli zasięg ochrony jaskini różni się od niego.
|
||||
set:
|
||||
description: ustawia zasięg ochrony jaskini
|
||||
success: "&aUstaw zasięg ochrony jaskini na &b[liczba]&a."
|
||||
reset:
|
||||
description: resetuje zasięg chroniony jaskini do wartości domyślnych świata
|
||||
success: "&aZresetuj zasięg ochrony jaskini na &b[numer]&a."
|
||||
register:
|
||||
description: zarejestruj gracza w niezarejestrowanej jaskini, w której się
|
||||
znajdujesz
|
||||
registered-island: "&aZarejestrowano gracza do jaskini w [xyz]."
|
||||
already-owned: "&cJaskinia jest już własnością innego gracza!"
|
||||
no-island-here: "&cTutaj nie ma jaskini. Potwierdź, aby utworzyć."
|
||||
in-deletion: "&cTo miejsce jaskini jest obecnie usuwane. Spróbuj później."
|
||||
cannot-make-island: "&cPrzepraszamy, nie można tu umieścić jaskini. Zobacz
|
||||
konsolę, aby poznać możliwe błędy."
|
||||
unregister:
|
||||
description: wyrejestruj właściciela z jaskini, ale zachowaj bloki jaskiniowe
|
||||
unregistered-island: "&aNiezarejestrowany gracz z jaskini w [xyz]."
|
||||
info:
|
||||
description: uzyskaj informacje o tym, gdzie jesteś lub o jaskini gracza
|
||||
no-island: "&cNie jesteś teraz w jaskini ..."
|
||||
title: "======== Informacje o jaskini ========"
|
||||
islands-in-trash: "&dGracz ma jaskinie w koszu."
|
||||
is-spawn: Wyspa jest jaskinią spawnu
|
||||
switchto:
|
||||
description: zmień jaskinię gracza na ponumerowaną znajdującą się w koszu
|
||||
out-of-range: "&cNumer musi mieścić się w przedziale od 1 do [number]. Użyj
|
||||
&l[label] trash [player], &r&caby zobaczyć numery jaskiń"
|
||||
trash:
|
||||
no-unowned-in-trash: "&cŻadnych bezpańskich jaskiń w śmieciach"
|
||||
no-islands-in-trash: "&cGracz nie ma jaskiń w koszu"
|
||||
description: pokaż bezpańskie jaskinie lub jaskinie graczy w śmieciach
|
||||
title: "&d=========== Jaskinie w koszu ==========="
|
||||
count: "&l&dJaskinia [number]:"
|
||||
use-switch: "&aUżyj &l[label] switchto <player> <number>&r&a aby przełączyć
|
||||
gracza do jaskini w koszu"
|
||||
emptytrash:
|
||||
description: Usuń śmieci dla gracza lub wszystkie bezpańskie jaskinie w koszu
|
||||
setrange:
|
||||
description: ustaw zasięg jaskini gracza
|
||||
range-updated: Zasięg jaskiń został zaktualizowany do [number]
|
||||
tp:
|
||||
description: teleportuj się do jaskini gracza
|
||||
getrank:
|
||||
description: zdobądź rangę gracza w swojej jaskini
|
||||
rank-is: "&aRank to [range] w ich jaskini."
|
||||
setrank:
|
||||
description: ustaw rangę gracza w jego jaskini
|
||||
setspawn:
|
||||
description: ustaw jaskinię jako spawn dla tego świata
|
||||
already-spawn: "&cTa jaskinia już się odradza!"
|
||||
no-island-here: "&cNie ma tu jaskini."
|
||||
confirmation: "&cCzy na pewno chcesz ustawić tę jaskinię jako miejsce odrodzenia
|
||||
tego świata?"
|
||||
resetflags:
|
||||
description: Zresetuj wszystkie jaskinie do domyślnych ustawień flag w config.yml
|
||||
delete:
|
||||
description: usuwa jaskinię gracza
|
||||
cannot-delete-owner: "&cWszyscy członkowie jaskini muszą zostać wyrzuceni
|
||||
z jaskini przed jej usunięciem."
|
||||
deleted-island: "&aWyspa w &e[xyz] &azostała pomyślnie usunięta."
|
||||
island:
|
||||
go:
|
||||
description: teleportować cię do swojej jaskini
|
||||
teleport: "&aTeleportuję Cię do Twojej jaskini."
|
||||
help:
|
||||
description: Główne dowództwo jaskini
|
||||
create:
|
||||
description: stwórz jaskinię, korzystając z opcjonalnego planu (wymaga pozwolenia)
|
||||
too-many-islands: "&cNa tym świecie jest zbyt wiele jaskiń: nie ma wystarczająco
|
||||
dużo miejsca, aby stworzyć twoją."
|
||||
unable-create-island: "&cTwoja jaskinia nie może zostać wygenerowana, skontaktuj
|
||||
się z administratorem."
|
||||
creating-island: "&aTworzenie jaskini, proszę chwilę poczekać..."
|
||||
pick: "&aWybierz jaskinię"
|
||||
info:
|
||||
description: wyświetlaj informacje o swojej jaskini lub jaskini gracza
|
||||
near:
|
||||
description: pokaż nazwy sąsiednich jaskiń wokół ciebie
|
||||
the-following-islands: "&aW pobliżu znajdują się następujące jaskinie:"
|
||||
no-neighbors: "&cNie masz bezpośrednio sąsiadujących jaskiń!"
|
||||
reset:
|
||||
description: uruchom ponownie jaskinię i usuń starą
|
||||
must-remove-members: "&cMusisz usunąć wszystkich członków ze swojej jaskini,
|
||||
zanim będziesz mógł ją ponownie uruchomić (/island team kick <gracz>)."
|
||||
sethome:
|
||||
must-be-on-your-island: "&cMusisz być w swojej jaskini, aby wrócić do domu!"
|
||||
home-set: "&6Twój dom w jaskini został ustawiony na bieżącą lokalizację."
|
||||
setname:
|
||||
description: ustaw nazwę dla swojej jaskini
|
||||
resetname:
|
||||
description: zresetuj nazwę jaskini
|
||||
team:
|
||||
coop:
|
||||
description: zrób ranking kooperacyjny gracza w swojej jaskini
|
||||
uncoop:
|
||||
you-are-no-longer-a-coop-member: "&cNie jesteś już członkiem współpracy
|
||||
w jaskini [name]"
|
||||
all-members-logged-off: "&cWszyscy członkowie jaskini wylogowali się, więc
|
||||
nie jesteś już członkiem kooperacji w jaskini [name]"
|
||||
trust:
|
||||
description: dać graczowi zaufaną rangę w swojej jaskini
|
||||
invite:
|
||||
description: zaproś gracza do swojej jaskini
|
||||
name-has-invited-you: "&a[name] zaprasza Cię do swojej jaskini."
|
||||
you-will-lose-your-island: "&cOSTRZEŻENIE! Stracisz swoją jaskinię, jeśli
|
||||
się zgodzisz!"
|
||||
errors:
|
||||
island-is-full: "&cTwoja jaskinia jest pełna, nie możesz nikogo zaprosić."
|
||||
accept:
|
||||
you-joined-island: "&aDołączyłeś do jaskini! Użyj /[etykieta] informacji
|
||||
o zespole, aby zobaczyć innych członków."
|
||||
name-joined-your-island: "&a[name] dołączył do Twojej jaskini!"
|
||||
confirmation: |-
|
||||
&cCzy na pewno chcesz przyjąć to zaproszenie?
|
||||
&c&lZgubisz&n&r &c&lyswoją obecną jaskinię!
|
||||
reject:
|
||||
you-rejected-invite: "&aOdrzuciłeś zaproszenie do jaskini."
|
||||
name-rejected-your-invite: "&c[name] odrzucił Twoje zaproszenie do jaskini!"
|
||||
cancel:
|
||||
description: anuluj oczekujące zaproszenie do swojej jaskini
|
||||
leave:
|
||||
description: opuść swoją jaskinię
|
||||
left-your-island: "&c[name] &rozszczep swoją jaskinię"
|
||||
kick:
|
||||
description: usuń członka ze swojej jaskini
|
||||
owner-kicked: "&cWłaściciel wykopał cię z jaskini!"
|
||||
success: "&b[name] &został wyrzucony z Twojej jaskini."
|
||||
demote:
|
||||
description: zdegraduj gracza w swojej jaskini w dół o rangę
|
||||
promote:
|
||||
description: awansować gracza w swojej jaskini na wyższą rangę
|
||||
setowner:
|
||||
description: przenieść własność jaskini na członka
|
||||
errors:
|
||||
target-is-not-member: "&cTen gracz nie jest częścią twojej drużyny jaskiniowej!"
|
||||
name-is-the-owner: "&a[name] jest teraz właścicielem jaskini!"
|
||||
you-are-the-owner: "&aJesteś teraz właścicielem jaskini!"
|
||||
ban:
|
||||
description: zbanuj gracza ze swojej jaskini
|
||||
cannot-ban-more-players: "&c Osiągnąłeś limit banów, nie możesz zbanować więcej
|
||||
graczy ze swojej jaskini."
|
||||
player-banned: "&b[name]&c jest teraz zablokowany w Twojej jaskini."
|
||||
owner-banned-you: "&b[name]&c zabronił Ci wstępu do swojej jaskini!"
|
||||
you-are-banned: "&bNie masz dostępu do tej jaskini!"
|
||||
unban:
|
||||
description: odbanuj gracza z twojej jaskini
|
||||
player-unbanned: "&b[name]&a jest teraz odblokowany w Twojej jaskini."
|
||||
you-are-unbanned: "&b[name]&a odblokował cię w swojej jaskini!"
|
||||
banlist:
|
||||
noone: "&aNikt nie jest zabroniony w tej jaskini."
|
||||
settings:
|
||||
description: wyświetl ustawienia jaskini
|
||||
expel:
|
||||
description: wyrzuć gracza ze swojej jaskini
|
||||
not-on-island: "&cTego gracza nie ma w twojej jaskini!"
|
||||
player-expelled-you: "&b[name]&c wyrzucił cię z jaskini!"
|
||||
ranks:
|
||||
owner: Król krasnoludów
|
||||
sub-owner: Krasnoludzki Rycerz
|
||||
member: Krasnolud
|
||||
trusted: Zaufane
|
||||
coop: Kooperacja
|
||||
visitor: Człowiek
|
||||
banned: Ork
|
||||
protection:
|
||||
flags:
|
||||
ENDERMAN_GRIEFING:
|
||||
description: |-
|
||||
&aEndermen może usunąć
|
||||
&blokady z jaskiń
|
||||
name: Rozpacz Endermana
|
||||
ENTER_EXIT_MESSAGES:
|
||||
island: Jaskinia [name]
|
||||
GEO_LIMIT_MOBS:
|
||||
description: |-
|
||||
&aUsuń moby, które idą
|
||||
&poza chronionym
|
||||
&ostań w przestrzeni
|
||||
name: "&eOgranicz moby do jaskini"
|
||||
ISLAND_RESPAWN:
|
||||
description: |-
|
||||
&aGracze odradzają się
|
||||
&w ich jaskini
|
||||
name: Odrodzenie w jaskini
|
||||
LIQUIDS_FLOWING_OUT:
|
||||
name: Płyny wypływające poza jaskinie
|
||||
description: |-
|
||||
&aPrzełącz, czy płyny mogą wypływać na zewnątrz
|
||||
&a zasięgu ochrony jaskini.
|
||||
LOCK:
|
||||
description: Przełącz blokadę
|
||||
name: Zablokuj jaskinię
|
||||
NATURAL_SPAWNING_OUTSIDE_RANGE:
|
||||
name: Naturalne stworzenie odradzające się poza zasięgiem
|
||||
description: |-
|
||||
&aPrzełącz czy stworzenia (zwierzęta i
|
||||
i potwory) mogą naturalnie odradzać się na zewnątrz
|
||||
&aa zasięg ochrony jaskini.
|
||||
|
||||
&cPamiętaj, że nie zapobiega to stworzeniom
|
||||
&cby odradzać się za pomocą generatora mobów lub spawnu
|
||||
&ceg.
|
||||
OFFLINE_GROWTH:
|
||||
description: |-
|
||||
&aPo wyłączeniu rośliny
|
||||
&nie będzie rosnąć w jaskiniach
|
||||
&kiedy wszyscy członkowie są offline.
|
||||
&aMoże pomóc zmniejszyć opóźnienia.
|
||||
name: Rozwój offline
|
||||
OFFLINE_REDSTONE:
|
||||
description: |-
|
||||
&aKiedy wyłączone, czerwony kamień
|
||||
&nie będzie działać w jaskiniach
|
||||
&gdzie wszyscy członkowie są offline.
|
||||
&aMoże pomóc zmniejszyć opóźnienia.
|
||||
name: Offline Redstone
|
||||
PISTON_PUSH:
|
||||
description: |-
|
||||
&aZezwalaj tłokom na pchanie
|
||||
&blokuje na zewnątrz jaskini
|
||||
name: Popychanie tłoka
|
||||
REMOVE_MOBS:
|
||||
description: |-
|
||||
&aUsuń potwory, gdy
|
||||
&ateleport do jaskini
|
||||
name: Usuń potwory
|
||||
TREES_GROWING_OUTSIDE_RANGE:
|
||||
name: Drzewa rosnące poza zasięgiem
|
||||
description: |-
|
||||
&aPrzełącz, czy drzewa mogą rosnąć na zewnątrz i
|
||||
zakres ochrony &acave, czy nie.
|
||||
PREVENT_TELEPORT_WHEN_FALLING:
|
||||
name: Zapobiegaj teleportacji podczas upadku
|
||||
description: |-
|
||||
&aZapobiegaj teleportacji graczy
|
||||
&z powrotem do swojej jaskini za pomocą poleceń
|
||||
i jeśli spadają.
|
||||
hint: "&cNie możesz teleportować się z powrotem do swojej jaskini, gdy spadasz."
|
||||
locked: "&cTa jaskinia jest zamknięta!"
|
||||
protected: "&cJaskinia chroniona: [description]"
|
||||
spawn-protected: "&cSpawn chroniony: [description]"
|
||||
panel:
|
||||
PROTECTION:
|
||||
description: |-
|
||||
&aUstawienia ochrony
|
||||
&dla tej jaskini
|
||||
SETTING:
|
||||
description: |-
|
||||
&aUstawienia ogólne
|
||||
&dla tej jaskini
|
||||
protection:
|
||||
flags:
|
||||
SKY_WALKER_FLAG:
|
||||
description: |-
|
||||
&5&oPozwala to włączyć/wyłączyć
|
||||
&5&możliwość chodzenia po
|
||||
&5&otop świata jaskiń
|
||||
&5&obez dodatkowych uprawnień.
|
||||
name: Sky Walker
|
||||
hint: Pozwala chodzić po suficie jaskini.
|
@ -1,306 +0,0 @@
|
||||
---
|
||||
caveblock:
|
||||
sign:
|
||||
line0: "&cCaveBlock"
|
||||
line1: Добро пожаловать!
|
||||
line2: "[name]"
|
||||
line3: Начни копать! &c<3
|
||||
informational:
|
||||
to-nether: Так неудачно впасть в ад.
|
||||
to-the-end: Вы достигли конца.
|
||||
to-normal: Вернуться к вашей пещере.
|
||||
general:
|
||||
errors:
|
||||
no-island: "&cУ вас нет пещеры!"
|
||||
player-has-island: "&cУ этого игрока уже есть пещера!"
|
||||
player-has-no-island: "&cУ этого игрока нет пещеры!"
|
||||
already-have-island: "&cУ вас уже есть пещера!"
|
||||
no-safe-location-found: "&cНе удалось найти безопасное место для телепортации
|
||||
в пещеру."
|
||||
not-owner: "&cВы не владелец этой пещеры!"
|
||||
cave-limit-reached: "&c Вы достигли вершины своей пещеры. Вы не можете стать
|
||||
выше!"
|
||||
commands:
|
||||
admin:
|
||||
team:
|
||||
add:
|
||||
name-has-island: "&c[name] имеет пещеру. Сначала отмените регистрацию или
|
||||
удалите её!"
|
||||
success: "&b[name]&a был добавлен в пещеру игрока&b [owner]&a."
|
||||
kick:
|
||||
success: "&b[name]&a был выгнан из пещеры &b[owner]&a."
|
||||
setowner:
|
||||
description: передать владение пещеры игроку
|
||||
already-owner: "&c[name] уже является владельцем этой пещеры!"
|
||||
success: "&b[name]&a теперь является владельцем этой пещеры."
|
||||
range:
|
||||
description: Пещерный диапазон (Админ-команда)
|
||||
display:
|
||||
description: показать/скрыть индикаторы диапазона пещеры
|
||||
hint: |-
|
||||
&cКрасные барьеры &f- показывают текущий предел защищенного пещерного диапазона.
|
||||
&7Серые Частицы &f- показывают максимальный предел пещеры.
|
||||
&aЗеленные Частицы &f- показывают защищенный диапазон по умолчанию, если диапазон защиты пещеры отличается от него.
|
||||
set:
|
||||
description: устанавливает диапазон защиты пещеры
|
||||
success: "&aУстановить диапазон защиты пещеры до &b[number]&a."
|
||||
reset:
|
||||
description: сбрасывает защищенный пещерой диапазон в мир по умолчанию
|
||||
success: "&aСбросить диапазон защиты пещеры до &b[number]&a."
|
||||
register:
|
||||
description: зарегистрировать игрока в неизвестной пещере, в которой вы находитесь
|
||||
registered-island: "&aЗарегистрирован игрок в пещере [xyz]."
|
||||
already-owned: "&cПещера уже принадлежит другому игроку!"
|
||||
no-island-here: "&cИ здесь нет пещеры. Подтвердите, чтобы сделать один."
|
||||
in-deletion: "&cЭто пещерное пространство в настоящее время удаляется. Попробуй
|
||||
позже."
|
||||
cannot-make-island: "&cПещера не может быть размещена здесь, извините. Смотрите
|
||||
консоль для возможных ошибок."
|
||||
unregister:
|
||||
description: не зарегистрирован владелец в пещере, но сохранены пещерные блоки
|
||||
unregistered-island: "&aНезарегистрированный игрок из пещеры в [xyz]."
|
||||
info:
|
||||
description: получить информацию о том, где вы находитесь или пещера игрока
|
||||
no-island: "&cВы не в пещере сейчас..."
|
||||
title: "==========Информация о пещере============"
|
||||
islands-in-trash: "&dИгрок имеет пещеры в мусорном ведре."
|
||||
is-spawn: Этот остров является спавном.
|
||||
switchto:
|
||||
description: переключить пещеру игрока на пронумерованную в мусорном ведре
|
||||
out-of-range: "&cНомер должен быть от 1 до [number]. Используйте &l[label]
|
||||
мусорки [player] &r&c, чтобы увидеть номера пещер"
|
||||
trash:
|
||||
no-unowned-in-trash: "&cНе принадлежат пещеры в мусоре"
|
||||
no-islands-in-trash: "&cИгрок не имеет пещер в мусорном ведре"
|
||||
description: показать неиспользуемые пещеры или пещеры игрока в мусорном ведре
|
||||
title: "&d===========Пещеры в корзине==========="
|
||||
count: "&l&dПещера [number]:"
|
||||
use-switch: "&aИспользуйте &l[label] чтобы поменять на <игрок> <номер> &r&a,
|
||||
чтобы переключить игрока в пещеру в корзине"
|
||||
emptytrash:
|
||||
description: Очистить мусор для игрока, или все ненужные пещеры в мусоре
|
||||
setrange:
|
||||
description: установить диапазон пещеры игрока
|
||||
range-updated: Пещерный диапазон обновлен до [number]
|
||||
tp:
|
||||
description: телепортироваться в пещеру игрока
|
||||
getrank:
|
||||
description: получить звание игрока в своей пещере
|
||||
rank-is: "&aРанг - [rank] в этой пещере."
|
||||
setrank:
|
||||
description: установить ранг игрока в своей пещере
|
||||
setspawn:
|
||||
description: установить пещеру как спавн для этого мира
|
||||
already-spawn: "&cЭта пещера уже спавн!"
|
||||
no-island-here: "&cЗдесь нет пещеры."
|
||||
confirmation: "&сВы уверены, что хотите установить эту пещеру в качестве спавна
|
||||
для этого мира?"
|
||||
resetflags:
|
||||
description: Сброс всех пещер к настройкам флага по умолчанию в config.yml
|
||||
delete:
|
||||
description: удаляет пещеру игрока
|
||||
cannot-delete-owner: "&cВсе члены пещеры должны быть выгнаны из пещеры перед
|
||||
удалением."
|
||||
deleted-island: "&aОстров на &e[xyz] &aбыл успешно удален."
|
||||
island:
|
||||
go:
|
||||
description: телепортировать вас в вашу пещеру
|
||||
teleport: "&aТелепортируем вас в вашу пещеру."
|
||||
help:
|
||||
description: Основная пещерная команда
|
||||
create:
|
||||
description: создать пещеру, используя необязательный проект (требуется разрешение)
|
||||
too-many-islands: "&cВ этом мире слишком много пещер: недостаточно места для
|
||||
создания вашей."
|
||||
unable-create-island: "&cВашу пещеру не удалось создать, обратитесь к администратору."
|
||||
creating-island: "&aСоздавается ваша пещера, пожалуйста, подождите..."
|
||||
pick: "&cВыберите пещеру"
|
||||
info:
|
||||
description: отображать информацию о вашей пещере или пещере игрока
|
||||
near:
|
||||
description: показать названия соседних пещер вокруг вас
|
||||
the-following-islands: "&aСледующие пещеры находятся поблизости:"
|
||||
no-neighbors: "&cУ вас нет ближайших соседних пещер!"
|
||||
reset:
|
||||
description: перезапустите свою пещеру и удалите старую
|
||||
must-remove-members: "&cВы должны удалить всех участников из своей пещеры,
|
||||
прежде чем сможете ее перезапустить (/ island team kick <player>)."
|
||||
sethome:
|
||||
must-be-on-your-island: "&cВы должны быть в своей пещере, чтобы установить
|
||||
дом!"
|
||||
home-set: "&6Ваш дом в пещере был настроен на ваше текущее местоположение."
|
||||
setname:
|
||||
description: установить имя для вашей пещеры
|
||||
resetname:
|
||||
description: сбросить имя пещеры
|
||||
team:
|
||||
coop:
|
||||
description: Добавить игрока в вашу пещеру
|
||||
uncoop:
|
||||
you-are-no-longer-a-coop-member: "&cВы больше не являетесь членом кооператива
|
||||
пещеры [name]"
|
||||
all-members-logged-off: "&cВсе участники пещеры вышли из системы, так что
|
||||
вы больше не являетесь членом кооператива пещеры [name]"
|
||||
trust:
|
||||
description: дать игроку звание доверенного в вашей пещере
|
||||
invite:
|
||||
description: пригласить игрока к вашей пещере
|
||||
name-has-invited-you: "&a[name] пригласил вас к его пещере."
|
||||
you-will-lose-your-island: "&сВНИМАНИЕ! Вы потеряете свою пещеру, если вы
|
||||
примете!"
|
||||
errors:
|
||||
island-is-full: "&сВаша пещера заполнена, вы не можете пригласить кого-либо
|
||||
еще."
|
||||
accept:
|
||||
you-joined-island: "&aВы присоединились к пещере! Используйте /[label]
|
||||
информацию о команде, чтобы увидеть других участников."
|
||||
name-joined-your-island: "&a[name] присоединилось к вашей пещере!"
|
||||
confirmation: |-
|
||||
&cВы уверены, что хотите принять это приглашение?
|
||||
&c&lВы будете &nУДАЛЕНЫ &r&c с вашей пещеры!
|
||||
reject:
|
||||
you-rejected-invite: "&aВы отклонили приглашение присоединиться к пещере."
|
||||
name-rejected-your-invite: "&c[name] отклонил ваше приглашение в пещеру!"
|
||||
cancel:
|
||||
description: отменить ожидающее приглашение присоединиться к вашей пещере
|
||||
leave:
|
||||
description: покинуть свою пещеру
|
||||
left-your-island: "&c[name] вышел с вашей пещеры"
|
||||
kick:
|
||||
description: удалить члена из вашей пещеры
|
||||
owner-kicked: "&cВладелец выгнал вас из пещеры!"
|
||||
success: "&b[name]&a был изгнан из вашей пещеры."
|
||||
demote:
|
||||
description: понизить игрока в вашей пещере по рангу
|
||||
promote:
|
||||
description: повысить игрока в вашей пещере до более высокого звания
|
||||
setowner:
|
||||
description: передать право собственности на пещеру участнику
|
||||
errors:
|
||||
target-is-not-member: "&cЭтот игрок не является частью вашей пещерной
|
||||
команды!"
|
||||
name-is-the-owner: "&a[name] теперь является владельцем пещеры!"
|
||||
you-are-the-owner: "&aТеперь вы владелец пещеры!"
|
||||
ban:
|
||||
description: забанить игрока из вашей пещеры
|
||||
cannot-ban-more-players: "&cВы достигли предела банов, вы не можете забанить
|
||||
больше игроков из своей пещеры."
|
||||
player-banned: "&b[name]&c теперь заблокировано в вашей пещере."
|
||||
owner-banned-you: "&b[name]&c забанили вас из своей пещеры!"
|
||||
you-are-banned: "&bВы забанены в этой пещере!"
|
||||
unban:
|
||||
description: разблокировать игрока из вашей пещеры
|
||||
player-unbanned: "&b[name]&a теперь не заблокирован в вашей пещере."
|
||||
you-are-unbanned: "&b[name] &aне пускай тебя в пещеру"
|
||||
banlist:
|
||||
noone: "&aНикто не забанен в этой пещере."
|
||||
settings:
|
||||
description: настройки отображения пещеры
|
||||
expel:
|
||||
description: изгнать игрока из вашей пещеры
|
||||
not-on-island: "&cэтот игрок не в вашей пещере!"
|
||||
player-expelled-you: "&b[name]&c выгнал тебя из пещеры!"
|
||||
ranks:
|
||||
owner: Король гномов
|
||||
sub-owner: Гном Рыцарь
|
||||
member: Гном
|
||||
trusted: доверенный
|
||||
coop: КО-ОП
|
||||
visitor: Человек
|
||||
banned: Огр
|
||||
protection:
|
||||
flags:
|
||||
ENDERMAN_GRIEFING:
|
||||
description: |-
|
||||
&aЭндермен может удалить
|
||||
&aблоки из пещер
|
||||
name: Гриферство эндермена
|
||||
ENTER_EXIT_MESSAGES:
|
||||
island: пещера [name]
|
||||
GEO_LIMIT_MOBS:
|
||||
description: |-
|
||||
&aУдалиет мобов, которые уходят
|
||||
&aвне защиты
|
||||
&aв пещеру
|
||||
name: "&eЛимит мобов в пещере"
|
||||
ISLAND_RESPAWN:
|
||||
description: |-
|
||||
&aреспаун игрока
|
||||
&aв его пещере
|
||||
name: Респавн пещеры
|
||||
LIQUIDS_FLOWING_OUT:
|
||||
name: Жидкости текут вне пещер
|
||||
description: |-
|
||||
&aВключить, могут ли жидкости вытекать наружу
|
||||
&aиз диапазона защиты пещеры.
|
||||
LOCK:
|
||||
description: Включить/Выключить жидкости
|
||||
name: Замок пещеры
|
||||
NATURAL_SPAWNING_OUTSIDE_RANGE:
|
||||
name: Естественное существо появляется вне пределов досягаемости
|
||||
description: |-
|
||||
&aПереключить ли существа (животных и
|
||||
&aмонстров) могут порождаться естественным путем снаружи
|
||||
&aДиапазон защиты пещеры.
|
||||
|
||||
&cОтметьте, что это не мешает существам
|
||||
&c порождение через порождения моба или спавна
|
||||
&cяйца.
|
||||
OFFLINE_GROWTH:
|
||||
description: |-
|
||||
&aКогда выключено, растения
|
||||
&aне будет расти в пещерах
|
||||
&aкогда все участники не в сети.
|
||||
&aМожет помочь уменьшить отставание.
|
||||
name: Оффлайн Рост
|
||||
OFFLINE_REDSTONE:
|
||||
description: |-
|
||||
&aКогда отключено, Редстоун
|
||||
&aне будет работать в пещерах
|
||||
&aкогда все участники не в сети.
|
||||
&aМожет помочь уменьшить отставание.
|
||||
name: Оффлайн Редстоун
|
||||
PISTON_PUSH:
|
||||
description: |-
|
||||
&aРазрешить толкать поршни
|
||||
&aи за пределами пещеры
|
||||
name: Поршневой толчок
|
||||
REMOVE_MOBS:
|
||||
description: |-
|
||||
&aУдалить монстров, при
|
||||
&aтелепортации в пещеру
|
||||
name: Удалить монстров
|
||||
TREES_GROWING_OUTSIDE_RANGE:
|
||||
name: Деревья, растущие вне диапазона
|
||||
description: |-
|
||||
&aВключить, могут ли деревья расти вне
|
||||
&aДиапазона защиты пещеры или нет.
|
||||
PREVENT_TELEPORT_WHEN_FALLING:
|
||||
name: Предотвратить телепорт при падении
|
||||
description: |-
|
||||
&aПредотвращение игроков от &aтелепортации
|
||||
&aснова в свою пещеру, используя команды
|
||||
&aесли они падают.
|
||||
hint: "&cВы не можете телепортироваться обратно в свою пещеру, пока падаете."
|
||||
locked: "&cЭта пещера заперта!"
|
||||
protected: "&cПещера защищена: [description]"
|
||||
spawn-protected: "&cСпавн защищен: [description]"
|
||||
panel:
|
||||
PROTECTION:
|
||||
description: |-
|
||||
&aнастройки защиты
|
||||
&aдля этой пещеры
|
||||
SETTING:
|
||||
description: |-
|
||||
&aОбщие настройки
|
||||
&aдля этой пещеры
|
||||
protection:
|
||||
flags:
|
||||
SKY_WALKER_FLAG:
|
||||
description: |-
|
||||
&5&oЭто позволяет включить / отключить
|
||||
&5&oвозможность ходить по
|
||||
&5&oверхности из пещерного мира
|
||||
&5&oбез дополнительных разрешений.
|
||||
name: Ходящий по небу
|
||||
hint: Позволяет ходить по пещерному потолку.
|
@ -1,302 +0,0 @@
|
||||
---
|
||||
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.
|
@ -1,292 +0,0 @@
|
||||
###########################################################################################
|
||||
# This is a YML file. Be careful when editing. Check your edits in a YAML checker like #
|
||||
# the one at http://yaml-online-parser.appspot.com #
|
||||
###########################################################################################
|
||||
|
||||
caveblock:
|
||||
sign:
|
||||
line0: "&cCaveBlock"
|
||||
line1: "Chào mừng!"
|
||||
line2: "[name]"
|
||||
line3: "Đào đi! &c<3"
|
||||
|
||||
informational:
|
||||
to-nether: "Rất tệ khi vào địa ngục."
|
||||
to-the-end: "Kết thúc rồi."
|
||||
to-normal: "Về hang của bạn."
|
||||
# Override BentoBox default command strings
|
||||
# General strings
|
||||
general:
|
||||
errors:
|
||||
no-island: "&cBạn không có hang!"
|
||||
player-has-island: "&cNgười chơi đã có hang!"
|
||||
player-has-no-island: "&cNgười chơi không có hang!"
|
||||
already-have-island: "&cBạn đã có hang!"
|
||||
no-safe-location-found: "&cKhông thể tìm thấy vị trí an toàn trong hang."
|
||||
not-owner: "&cBạn không phải chủ hang!"
|
||||
commands:
|
||||
# Parameters in <> are required, parameters in [] are optional
|
||||
admin:
|
||||
team:
|
||||
add:
|
||||
name-has-island: "&c[name] đã có hang. Huỷ hoặc xoá nó trước!"
|
||||
success: "&b[name]&a đã được thêm vào hang của &b[owner]&a."
|
||||
kick:
|
||||
success: "&b[name] &ađã bị đuổi từ hang của &b[owner]&a."
|
||||
setowner:
|
||||
description: "chuyển quyền chủ hang cho người chơi"
|
||||
already-owner: "&c[name] đã là chủ hang!"
|
||||
success: "&b[name]&a giờ là chủ hang."
|
||||
range:
|
||||
description: "lệnh độ rộng hang của Admin"
|
||||
display:
|
||||
description: "hiện/ẩn đánh dấu độ rộng hang"
|
||||
hint: |-
|
||||
&cKí tự Rào chặn đỏ &fthể hiện độ rộng vùng bảo vệ của hang.
|
||||
&7Hạt Xám &fthể hiện giới hạn của hang.
|
||||
&aHạt Xanh &fthể hiện vùng bảo vệ mặc định nếu vùng bảo vệ của hang khác mặc định.
|
||||
set:
|
||||
description: "chỉnh vùng bảo vệ hang"
|
||||
success: "&aĐã chỉnh vùng bảo vệ hang thành &b[number]&a."
|
||||
reset:
|
||||
description: "chỉnh vùng bảo vệ hang về mặc định"
|
||||
success: "&aĐã chỉnh vùng bảo vệ hang thành &b[number]&a."
|
||||
register:
|
||||
description: "đăng kí người chơi vào hang không chủ ở vị trí của bạn"
|
||||
registered-island: "&aĐã đăng kí người chơi ở hang [xyz]."
|
||||
already-owned: "&cHang đã có chủ!"
|
||||
no-island-here: "&cKhông có hang ở đây. Xác nhận để tạo."
|
||||
in-deletion: "&cHang đang được xoá. Thử lại sau."
|
||||
cannot-make-island: "&c Hang không thể đặt ở đây. Xem lỗi trên bảng điều khiển."
|
||||
unregister:
|
||||
description: "huỷ quyền chủ hang, nhưng giữ lại các khối trong hang"
|
||||
unregistered-island: "&aĐã huỷ đăng kí người chơi ở hang [xyz]."
|
||||
info:
|
||||
description: "lấy thông về nơi bạn ở hoặc hang của người chơi"
|
||||
no-island: "&cBạn không ở một hang..."
|
||||
title: "========== Thông tin Hang ============"
|
||||
islands-in-trash: "&dNgười chơi có hang trong thùng rác."
|
||||
is-spawn: "Đảo là hang triệu hồi"
|
||||
switchto:
|
||||
description: "chuyển hang của người chơi thành một số trong thùng rác"
|
||||
out-of-range: "&cSố phải từ 1 đến [number]. Dùng &l[label] trash [player] &r&cđể xem số hang"
|
||||
trash:
|
||||
no-unowned-in-trash: "&cKhông có hang không chủ trong thùng rác"
|
||||
no-islands-in-trash: "&cNgười chơi không có hang trong thùng rác"
|
||||
description: "xem hang không chủ hoặc của người chơi trong thùng rác"
|
||||
title: "&d=========== Hang trong Thùng Rác ==========="
|
||||
count: "&l&dHang [number]:"
|
||||
use-switch: "&aDùng &l[label] switchto <player> <number>&r&a để chuyển người chơi vào hang trong thùng rác"
|
||||
emptytrash:
|
||||
description: "Dọn rác cho người chơi, hoặc toàn bộ hang không chủ trong thùng rác"
|
||||
setrange:
|
||||
description: "chỉnh độ rộng hang của người chơi"
|
||||
range-updated: "Đã chỉnh độ rộng của hang thành [number]"
|
||||
tp:
|
||||
description: "dịch chuyển đến hang của người chơi"
|
||||
getrank:
|
||||
description: "xem cấp độ của người chơi trong hang"
|
||||
rank-is: "&aCấp độ là [rank] ở hang của họ."
|
||||
setrank:
|
||||
description: "chỉnh cấp độ của người chơi ở hang của họ"
|
||||
setspawn:
|
||||
description: "chỉnh một hang thành nơi bắt đầu ở thế giới này"
|
||||
already-spawn: "&cHang này đã là nơi bắt đầu!"
|
||||
no-island-here: "&cKhông có hang ở đây."
|
||||
confirmation: "&cBạn có chắc là chọn hang này làm nơi bắt đầu ở thế giới này?"
|
||||
resetflags:
|
||||
description: "Đặt lại cờ của các hang về mặc định trong config.yml"
|
||||
delete:
|
||||
description: "xoá hang của người chơi"
|
||||
cannot-delete-owner: "&cThành viên của hang phải bị đuổi trước khi xoá."
|
||||
deleted-island: "&aĐảo &e[xyz] &ađã được xoá thành công."
|
||||
island:
|
||||
go:
|
||||
description: "dịch chuyển đến hang của bạn"
|
||||
teleport: "&aĐang dịch chuyển đến hang của bạn."
|
||||
help:
|
||||
description: "Lệnh hang chính"
|
||||
create:
|
||||
description: "tạo hang, dùng bản vẽ nếu có (cần quyền)"
|
||||
too-many-islands: "&cQuá nhiều hang ở thế giới này: không đủ khoảng trống cho khu của bạn."
|
||||
unable-create-island: "&cHang của bạn không được tạo, hãy liên hệ quản trị viên."
|
||||
creating-island: "&aĐang tạo hang, chờ một chút..."
|
||||
pick: "&aChọn hang"
|
||||
info:
|
||||
description: "xem thông tin hang của bạn hoặc của người chơi"
|
||||
near:
|
||||
description: "xem tên của hang kế bên bạn"
|
||||
the-following-islands: "&aHang kế bên bạn:"
|
||||
no-neighbors: "&cKhông có hang kế bên bạn!"
|
||||
reset:
|
||||
description: "tạo lại hang và xoá hang cũ"
|
||||
must-remove-members: "&cBạn phải xoá thành viên khỏi hang trước khi xoá (/[label] team kick <player>)."
|
||||
sethome:
|
||||
must-be-on-your-island: "&cBạn phải ở hang của bạn để đặt nhà!"
|
||||
home-set: "&6Nhà của hang đã đặt ở vị trí của bạn."
|
||||
setname:
|
||||
description: "đặt tên cho hang"
|
||||
resetname:
|
||||
description: "đặt lại tên của hang"
|
||||
team:
|
||||
coop:
|
||||
description: "cho người chơi cấp chơi cùng với hang của bạn"
|
||||
uncoop:
|
||||
you-are-no-longer-a-coop-member: '&cBạn không còn chơi cùng với hang của [name].'
|
||||
all-members-logged-off: '&c Người chơi ở hang đã thoát hết nên bạn không còn chơi cùng với hang của [name].'
|
||||
trust:
|
||||
description: "cho người chơi cấp tin tưởng với hang bạn"
|
||||
invite:
|
||||
description: "mời người chơi vào hang của bạn"
|
||||
name-has-invited-you: "&a[name] đã mời bạn vào hang của họ."
|
||||
you-will-lose-your-island: "&cCHÚ Ý! Bạn sẽ mất hang của bạn nếu chấp nhận lời mời"
|
||||
errors:
|
||||
island-is-full: "&cHang đã đầy, bạn không thể mời thêm."
|
||||
accept:
|
||||
you-joined-island: "&aBạn đã vào hang! Dùng /[label] team info để xem thành viên khác."
|
||||
name-joined-your-island: "&a[name] đã vào hang của bạn!"
|
||||
confirmation: |-
|
||||
&cBạn có chắc muón chấp nhận lời mời này?
|
||||
&c&lBạn sẽ &nMẤT&r &c&lhang hiện tại của bạn!
|
||||
reject:
|
||||
you-rejected-invite: "&aBạn đã từ chối lời mời vào hang."
|
||||
name-rejected-your-invite: "&c[name] đã từ chối lời mời của bạn!"
|
||||
cancel:
|
||||
description: "huỷ lời mời đang chờ vào hang của bạn"
|
||||
leave:
|
||||
description: "rời hang của bạn"
|
||||
left-your-island: "&c[name] &cđã rời hang của bạn"
|
||||
kick:
|
||||
description: "xoá thành viên khỏi hang của bạn"
|
||||
owner-kicked: "&cChủ hang đã đuổi bạn!"
|
||||
success: "&b[name] &ađã bị đuổi khỏi hang của bạn."
|
||||
demote:
|
||||
description: "hạ cấp của người chơi trong hang"
|
||||
promote:
|
||||
description: "nâng cấp của người chơi trong hang"
|
||||
setowner:
|
||||
description: "chuyển quyền chủ hang cho người chơi"
|
||||
errors:
|
||||
target-is-not-member: "&cNgười chơi đó không ở trong đội của bạn!"
|
||||
name-is-the-owner: "&a[name] giờ là chủ hang!"
|
||||
you-are-the-owner: "&aBạn giờ là chủ hang!"
|
||||
ban:
|
||||
description: "cấm người chơi khỏi hang của bạn"
|
||||
cannot-ban-more-players: "&cĐã đạt giới hạn cấm, bạn không thể cấm thêm người."
|
||||
player-banned: "&b[name]&c đã bị cấm khỏi hang của bạn."
|
||||
owner-banned-you: "&b[name]&c đã cấm bạn khỏi hang của họ!"
|
||||
you-are-banned: "&bBạn đã bị cấm ở hang này!"
|
||||
unban:
|
||||
description: "bỏ cấm người chơi khỏi hang của bạn"
|
||||
player-unbanned: "&b[name]&a không còn bị cấm khỏi hang của bạn."
|
||||
you-are-unbanned: "&b[name]&a huỷ cấm bạn khỏi hang của họ!"
|
||||
banlist:
|
||||
noone: "&aKhông ai bị cấm ở hang này."
|
||||
settings:
|
||||
description: "xem tuỳ chọn hang"
|
||||
expel:
|
||||
description: "trục xuất người chơi khỏi hang của bạn"
|
||||
not-on-island: "&cNgười chơi đó không ở hang của bạn!"
|
||||
player-expelled-you: "&b[name]&c đã trục xuất bạn khỏi hang của họ!"
|
||||
|
||||
ranks:
|
||||
owner: "Vua Người Lùn"
|
||||
sub-owner: "Hiệp Sĩ Người Lùn"
|
||||
member: "Người Lùn"
|
||||
trusted: "Tin Tưởng"
|
||||
coop: "Chơi Cùng"
|
||||
visitor: "Con Người"
|
||||
banned: "Orc"
|
||||
|
||||
protection:
|
||||
flags:
|
||||
ENDERMAN_GRIEFING:
|
||||
description: |-
|
||||
&aNgười Ender có thể cướp
|
||||
&akhối khỏi hang
|
||||
name: "Trộm bởi Người Ender"
|
||||
ENTER_EXIT_MESSAGES:
|
||||
island: "hang của [name]"
|
||||
GEO_LIMIT_MOBS:
|
||||
description: |-
|
||||
&a Xóa các quái đã rời khỏi
|
||||
&a khu vực bảo vệ trong hang
|
||||
name: "&eGiới hạn quái trong đảo"
|
||||
ISLAND_RESPAWN:
|
||||
description: |-
|
||||
&aNgười chơi hồi sinh
|
||||
&aở hang của họ
|
||||
name: "Hồi sinh tại hang"
|
||||
LIQUIDS_FLOWING_OUT:
|
||||
name: "Chất lỏng tràn ra khỏi hang"
|
||||
description: |-
|
||||
&aBật/Tắt việc chất lỏng có thể
|
||||
&atràn ra khỏi khu vực bảo vệ của hang.
|
||||
LOCK:
|
||||
description: "Bật/Tắt khóa"
|
||||
name: "Khoá đảo"
|
||||
NATURAL_SPAWNING_OUTSIDE_RANGE:
|
||||
name: "Sinh quái tự nhiên ngoài hang"
|
||||
description: |-
|
||||
&aBật/Tắt cho phép con vật (động vật và
|
||||
&aquái vật) có thể sinh tự nhiên ngoài
|
||||
&akhu vực bảo vệ của hang.
|
||||
|
||||
&cLưu ý là nó không chặn việc sinh quái
|
||||
&cbằng lồng triệu hồi hoặc trứng.
|
||||
OFFLINE_GROWTH:
|
||||
description: |-
|
||||
&aKhi tắt, cây trồng
|
||||
&asẽ không mọc lớn trong hang
|
||||
&anếu tất cả thành viên đều ngoại tuyến.
|
||||
&aCó thể giúp giảm lag.
|
||||
name: "Mọc cây khi ngoại tuyến"
|
||||
OFFLINE_REDSTONE:
|
||||
description: |-
|
||||
&aKhi tắt, đá đỏ
|
||||
&asẽ không hoạt động trong hang
|
||||
&anếu tất cả thành viên đều ngoại tuyến.
|
||||
&aCó thể giúp giảm lag.
|
||||
&aKhông ảnh hưởng đảo triệu hồi.
|
||||
name: "Đá đỏ khi ngoại tuyến"
|
||||
PISTON_PUSH:
|
||||
description: |-
|
||||
&aCho phép pít tông đẩy
|
||||
&akhối ra khỏi hang
|
||||
name: "Pít tông đẩy khối"
|
||||
REMOVE_MOBS:
|
||||
description: |-
|
||||
&aXoá quái khi dịch
|
||||
&achuyển đến đảo
|
||||
name: "Xoá quái"
|
||||
TREES_GROWING_OUTSIDE_RANGE:
|
||||
name: "Cây mọc ngoài đảo"
|
||||
description: |-
|
||||
&aBật/Tắt việc cây có thể mọc ngoài
|
||||
&akhu vực bảo vệ trong hang.
|
||||
PREVENT_TELEPORT_WHEN_FALLING:
|
||||
name: "Chặn dịch chuyển khi đang rời"
|
||||
description: |-
|
||||
&aChặn người chơi khỏi việc dịch chuyển
|
||||
&avề đảo của họ bằng lệnh khi đang rơi.
|
||||
hint: '&cBạn không thể làm điều đó khi đang rơi.'
|
||||
locked: "&cHang đã bị khoá!"
|
||||
protected: "&cĐã bảo vệ hang: [description]"
|
||||
spawn-protected: "&cĐã bảo vệ nơi bắt đầu: [description]"
|
||||
|
||||
panel:
|
||||
PROTECTION:
|
||||
description: |-
|
||||
&aTuỳ chỉnh bảo vệ
|
||||
&acho hang này
|
||||
SETTING:
|
||||
description: |-
|
||||
&aTuỳ chỉnh tổng quan
|
||||
&acho hang này
|
||||
|
||||
protection:
|
||||
flags:
|
||||
SKY_WALKER_FLAG:
|
||||
description: "&5&oCho phép bật/tắt\n&5&oquyền để đi trên\n&5&ođỉnh của thế giới hang\n&5&omà không cần thêm quyền."
|
||||
name: "Bước Trên Trời Cao"
|
||||
hint: "Cho phép đi trên đỉnh hang."
|
@ -1,282 +1,286 @@
|
||||
---
|
||||
caveblock:
|
||||
sign:
|
||||
line0: "&c洞穴生存"
|
||||
line1: "欢迎!"
|
||||
line0: "&c方块洞穴"
|
||||
line1: 欢迎!
|
||||
line3: 开始挖掘! &c <3
|
||||
line2: "[name]"
|
||||
line3: "开始挖掘吧! &c<3"
|
||||
|
||||
informational:
|
||||
to-nether: "太不走运了! 掉进了下界."
|
||||
to-the-end: "您到达了末地."
|
||||
to-normal: "回到您的洞穴."
|
||||
to-nether: 真倒霉到地狱了。
|
||||
to-the-end: 您已经到了末地。
|
||||
to-normal: 回到你的洞穴。
|
||||
general:
|
||||
errors:
|
||||
no-island: "&c您还没有洞穴!"
|
||||
player-has-island: "&c玩家已有洞穴!"
|
||||
player-has-no-island: "&c玩家还没有洞穴!"
|
||||
already-have-island: "&c您已经拥有洞穴!"
|
||||
no-safe-location-found: "&c无法将您传送到洞穴中, 因为没有找到安全的位置."
|
||||
not-owner: "&c您不是您洞穴的主人!"
|
||||
no-island: "&c您没有洞穴!"
|
||||
player-has-island: "&c玩家已经有一个山洞了!"
|
||||
player-has-no-island: "&c该玩家没有洞穴!"
|
||||
already-have-island: "&c您已经有一个山洞!"
|
||||
no-safe-location-found: "&c在山洞找不到传送您的安全地点。"
|
||||
not-owner: "&c您不是洞穴的所有者!"
|
||||
commands:
|
||||
admin:
|
||||
team:
|
||||
add:
|
||||
name-has-island: "&c[name] 已有洞穴. 请先反注册或删除它们!"
|
||||
success: "&b[name]&a 已被添加到 &b[owner]&a 的洞穴."
|
||||
name-has-island: "&c [name]有一个山洞。首先注销或删除它们!"
|
||||
success: "&b [name]&a已添加到&b [owner]&a的洞穴中。"
|
||||
kick:
|
||||
success: "&b[name] &a已被 &b[owner]&a 的洞穴移出."
|
||||
success: "&b [name]&ahas被踢出了&b [owner]&a的山洞。"
|
||||
setowner:
|
||||
description: "将洞穴的所有权转让给玩家"
|
||||
already-owner: "&c[name] 玩家已经是此洞穴的主人了!"
|
||||
success: "&b[name]&a 现在是此洞穴的主人."
|
||||
description: 将洞穴所有权转移给玩家
|
||||
already-owner: "&c [name]已经是该洞穴的所有者!"
|
||||
success: "&b [name]&a现在是这个洞穴的所有者。"
|
||||
range:
|
||||
description: "管理员洞穴边界命令"
|
||||
description: 管理员洞穴范围命令
|
||||
display:
|
||||
description: "显示/隐藏洞穴边界"
|
||||
description: 显示/隐藏洞穴范围指示器
|
||||
hint: |-
|
||||
&c 红色屏障图标 &f 显示洞穴现在被保护的范围.
|
||||
&7 灰色粒子 &f 显示最大边界范围.
|
||||
&a 绿色粒子 &f 显示默认被保护的边界, 如果现在的边界不与其重合的话.
|
||||
&c红色屏障图标&f显示当前的洞穴保护范围限制。
|
||||
&7灰色粒子&f显示最大洞穴极限。
|
||||
&a绿色粒子&f如果洞穴保护范围不同于默认保护范围,则显示默认保护范围。
|
||||
set:
|
||||
description: "设置洞穴被保护的边界范围"
|
||||
success: "&a洞穴被保护的范围更新至 &b[number]&a."
|
||||
description: 设置洞穴保护范围
|
||||
success: "&a将洞穴保护范围设置为&b [number]&a。"
|
||||
reset:
|
||||
description: "重置洞穴被保护的范围到当前世界的默认值"
|
||||
success: "&a重置洞穴被保护的范围至 &b[number]&a."
|
||||
description: 将洞穴保护范围重置为世界默认值
|
||||
success: "&a将洞穴保护范围重置为&b [number]&a。"
|
||||
register:
|
||||
description: "将玩家注册到您所在的未被拥有的洞穴中"
|
||||
registered-island: "&a在 [xyz] 将玩家注册到洞穴中."
|
||||
already-owned: "&c此洞穴已被其他玩家所有!"
|
||||
no-island-here: "&c这里还没有 box. 确认以创建一个."
|
||||
in-deletion: "&c此区域正在重新生成. 请稍后重试."
|
||||
cannot-make-island: "&c抱歉, 无法在此处生成洞穴. 从后台查看可能的错误."
|
||||
description: 注册玩家到您所在的无人洞
|
||||
registered-island: "&a注册玩家到[xyz]洞穴。"
|
||||
already-owned: "&c洞穴已被另一位玩家拥有!"
|
||||
no-island-here: "&c这里没有洞穴。确认做一个。"
|
||||
in-deletion: "&c该洞穴空间当前正在被删除。等会再试。"
|
||||
cannot-make-island: "&c抱歉,不能在此处放置洞穴。请参阅控制台以获取可能的错误。"
|
||||
unregister:
|
||||
description: "反注册洞穴的主人, 同时保留洞穴中的方块"
|
||||
unregistered-island: "&a在 [xyz] 将玩家从洞穴中反注册."
|
||||
description: 从山洞中注销所有者,但保留山洞块
|
||||
unregistered-island: "&a来自[xyz]洞穴的未注册玩家。"
|
||||
info:
|
||||
description: "获取您所在区域或相应玩家洞穴的信息"
|
||||
no-island: "&c您未在一个洞穴中......"
|
||||
description: 获取有关您所在位置或玩家洞穴的信息
|
||||
no-island: "&c您现在不在山洞里..."
|
||||
title: "==========洞穴信息============"
|
||||
islands-in-trash: "&d玩家拥有废弃的洞穴."
|
||||
is-spawn: "该区域是主城"
|
||||
islands-in-trash: "&d玩家在垃圾桶中有洞穴。"
|
||||
is-spawn: 岛是出生点
|
||||
switchto:
|
||||
description: "将玩家的洞穴切换到废弃的洞穴中的第一位"
|
||||
out-of-range: "&c数字必须从 1 到 [number]. 输入 &l[label] trash [player] &r&c来查看洞穴数量"
|
||||
description: 将玩家的洞穴切换到垃圾桶中的第一洞
|
||||
out-of-range: "&c数字必须介于1到[number]之间。使用&l [label]垃圾[player]&r&c查看洞穴编号"
|
||||
trash:
|
||||
no-unowned-in-trash: "&c废弃的洞穴中没有无主人的洞穴"
|
||||
no-islands-in-trash: "&c玩家没有废弃的洞穴"
|
||||
description: "在废弃的洞穴中显示无主人的洞穴或玩家的洞穴"
|
||||
title: "&d=========== 废弃的洞穴 ==========="
|
||||
no-unowned-in-trash: "&c垃圾桶中没有无人认领的洞穴"
|
||||
no-islands-in-trash: "&c玩家没有洞穴在垃圾桶中"
|
||||
description: 在垃圾桶中显示无人洞穴或玩家的洞穴
|
||||
title: "&d ============垃圾洞==========="
|
||||
count: "&l&d洞穴 [number]:"
|
||||
use-switch: "&a输入 &l[label] switchto <player> <number>&r&a 将玩家切换到废弃的洞穴中"
|
||||
use-switch: "&a使用&l [label]切换到<player> <number>&r&a将玩家洞穴切换到垃圾桶"
|
||||
emptytrash:
|
||||
description: "给玩家清除废弃的洞穴, 或清除所有无主人的废弃的洞穴"
|
||||
description: 清除玩家的垃圾桶,或垃圾桶中所有未拥有的洞穴
|
||||
setrange:
|
||||
description: "设置玩家洞穴的范围"
|
||||
range-updated: "洞穴范围更新至 [number]"
|
||||
description: 设定玩家洞穴的范围
|
||||
range-updated: 洞穴范围更新为[数字]
|
||||
tp:
|
||||
description: "传送到玩家的洞穴"
|
||||
description: 传送到玩家的洞穴
|
||||
getrank:
|
||||
description: "查看玩家在其洞穴中的地位"
|
||||
rank-is: "&a玩家在其洞穴中的地位是 [rank]."
|
||||
description: 在他们的洞穴中获得玩家的排名
|
||||
rank-is: "&aRank在他们的洞穴中[排名]。"
|
||||
setrank:
|
||||
description: "设置玩家在其洞穴中的地位"
|
||||
description: 设定玩家在洞穴中的等级
|
||||
setspawn:
|
||||
description: "将洞穴设置为当前世界的主城"
|
||||
already-spawn: "&c此洞穴已经是主城了!"
|
||||
no-island-here: "&c这里还没有洞穴."
|
||||
confirmation: "&c确认要将将洞穴设置为当前世界的主城吗?"
|
||||
description: 为这个世界设置一个洞穴
|
||||
already-spawn: "&c这个洞穴已经是产卵了!"
|
||||
no-island-here: "&c这里没有洞穴。"
|
||||
confirmation: "&c您确定要将此洞穴设置为这个世界的生成物吗?"
|
||||
resetflags:
|
||||
description: "重置所有洞穴的 flag 值成 config.yml 中的默认值"
|
||||
description: 将所有洞穴重置为config.yml中的默认标志设置
|
||||
delete:
|
||||
description: "删除一名玩家的洞穴"
|
||||
cannot-delete-owner: "&c在删除此洞穴之前, 必须移出此洞穴中的所有成员."
|
||||
deleted-island: "&a成功删除位于 &e[xyz] &a处的洞穴."
|
||||
description: 删除玩家的洞穴
|
||||
cannot-delete-owner: "&c删除所有洞穴成员之前,必须将其踢出洞穴。"
|
||||
deleted-island: "&e [xyz]&ahas中的&aIsland已成功删除。"
|
||||
island:
|
||||
go:
|
||||
description: "传送到您的洞穴"
|
||||
teleport: "&a正在传送到您的洞穴."
|
||||
description: 传送你到你的洞穴
|
||||
teleport: "&a将您传送到山洞。"
|
||||
help:
|
||||
description: "洞穴主命令"
|
||||
description: 主要洞穴命令
|
||||
create:
|
||||
description: "使用模板创建一个新的洞穴 (需要权限)"
|
||||
too-many-islands: "&c世界中含有太多洞穴了: 没有空间创建您的洞穴."
|
||||
unable-create-island: "&c生成洞穴失败, 请联系管理员."
|
||||
creating-island: "&a生成洞穴中, 请稍后..."
|
||||
pick: "&a选择一个洞穴"
|
||||
description: 使用可选的蓝图创建一个洞穴(需要许可)
|
||||
too-many-islands: "&c这个世界上有太多的洞穴:没有足够的空间来创建您的洞穴。"
|
||||
unable-create-island: "&c您的洞穴无法生成,请与管理员联系。"
|
||||
creating-island: "&a创建您的洞穴,请稍等..."
|
||||
pick: "&a选择一个山洞"
|
||||
info:
|
||||
description: "显示您或相应玩家的洞穴信息"
|
||||
description: 显示有关您的洞穴或玩家洞穴的信息
|
||||
near:
|
||||
description: "显示周围洞穴的名称"
|
||||
the-following-islands: "&a周围的洞穴有:"
|
||||
no-neighbors: "&c您的周围没有其它洞穴!"
|
||||
description: 显示您周围的洞穴名称
|
||||
the-following-islands: "&a附近有以下洞穴:"
|
||||
no-neighbors: "&c您没有紧邻的洞穴!"
|
||||
reset:
|
||||
description: "删除现有的洞穴并重新开始"
|
||||
must-remove-members: "&c在您重新开始之前, 您必须移出洞穴中的所有成员 (/island team kick <player>)."
|
||||
description: 重新启动您的洞穴并删除旧的
|
||||
must-remove-members: "&c您必须先从洞穴中删除所有成员,然后才能重新启动洞穴(/岛国队踢<player>)。"
|
||||
sethome:
|
||||
must-be-on-your-island: "&c必须在洞穴中才能设置家的位置!"
|
||||
home-set: "&6洞穴家的位置已设置到您当前位置."
|
||||
must-be-on-your-island: "&c您必须在洞穴里才能回家!"
|
||||
home-set: "&6您的洞穴之家已设置为您当前的位置。"
|
||||
setname:
|
||||
description: "设置您洞穴的名称"
|
||||
description: 为你的洞穴命名
|
||||
resetname:
|
||||
description: "重置您洞穴的名称"
|
||||
description: 重设您的洞穴名称
|
||||
team:
|
||||
coop:
|
||||
description: "将玩家设置为您洞穴的副 OP"
|
||||
description: 让玩家在你的洞穴中进行排名
|
||||
uncoop:
|
||||
you-are-no-longer-a-coop-member: "&c您不再是 [name] 的洞穴的副 OP 了"
|
||||
all-members-logged-off: "&c洞穴的所有玩家都离线了, 因此您不再是 [name] 的洞穴的副 OP 了"
|
||||
you-are-no-longer-a-coop-member: "&c您不再是[name]的洞穴的鸡舍成员"
|
||||
all-members-logged-off: "&c所有洞穴成员都已注销,因此您不再是[name]洞穴的合作伙伴"
|
||||
trust:
|
||||
description: "将玩家设置为您洞穴的信任者"
|
||||
description: 给玩家一个值得信赖的等级
|
||||
invite:
|
||||
description: "邀请一名玩家到您的洞穴中"
|
||||
name-has-invited-you: "&a[name] 邀请您加入他(她)的洞穴."
|
||||
you-will-lose-your-island: "&c注意! 如果接受邀请, 您将失去现有的洞穴!"
|
||||
description: 邀请玩家加入你的洞穴
|
||||
name-has-invited-you: "&a [name]邀请您加入他们的洞穴。"
|
||||
you-will-lose-your-island: "&c警告!如果您接受,您将迷路!"
|
||||
errors:
|
||||
island-is-full: "&c您的洞穴已满, 无法再邀请更多的玩家."
|
||||
island-is-full: "&c您的洞穴已满,您不能邀请其他任何人。"
|
||||
accept:
|
||||
you-joined-island: "&a您加入了一个洞穴! 输入 /[label] team info 来查看其他成员."
|
||||
name-joined-your-island: "&a[name] 加入了您的洞穴!"
|
||||
you-joined-island: "&a您加入了一个山洞!使用/ [标签]小组信息来查看其他成员。"
|
||||
name-joined-your-island: "&a [name]加入了您的洞穴!"
|
||||
confirmation: |-
|
||||
&c确认要接收此邀请?
|
||||
&c&l您将 &n失去&r &c&l现有的洞穴!
|
||||
&c确定要接受此邀请吗?
|
||||
&c&l您会&nLOSE&r&c&ly您当前的洞穴!
|
||||
reject:
|
||||
you-rejected-invite: "&a您拒绝了加入洞穴的邀请."
|
||||
name-rejected-your-invite: "&c[name] 拒绝了您加入洞穴的邀请!"
|
||||
you-rejected-invite: "&a您拒绝了加入洞穴的邀请。"
|
||||
name-rejected-your-invite: "&c [name]拒绝了您的洞穴邀请!"
|
||||
cancel:
|
||||
description: "取消待接受/拒绝的洞穴加入邀请"
|
||||
description: 取消待处理的邀请,加入你的洞穴
|
||||
leave:
|
||||
description: "退出您的洞穴"
|
||||
left-your-island: "&c[name] &c退出了您的洞穴"
|
||||
description: 离开你的洞穴
|
||||
left-your-island: "&c [name]&cleft your cave"
|
||||
kick:
|
||||
description: "从您的洞穴中移出一名玩家"
|
||||
owner-kicked: "&c洞穴的主人移出了您!"
|
||||
success: "&b[name] &a从您的洞穴中被移出."
|
||||
description: 从您的洞穴中删除一个成员
|
||||
owner-kicked: "&c主人将您踢出山洞!"
|
||||
success: "&b [name]&ahas被踢出您的山洞。"
|
||||
demote:
|
||||
description: "降低洞穴中一名玩家的地位"
|
||||
description: 将您的玩家降级
|
||||
promote:
|
||||
description: "提升洞穴中一名玩家的地位"
|
||||
description: 提升您的玩家排名
|
||||
setowner:
|
||||
description: "将洞穴转让给一名成员"
|
||||
description: 将您的洞穴所有权转让给成员
|
||||
errors:
|
||||
target-is-not-member: "&c玩家不在您洞穴的队伍中!"
|
||||
name-is-the-owner: "&a[name] 现在是洞穴的主人!"
|
||||
you-are-the-owner: "&a您成为了洞穴的主人!"
|
||||
target-is-not-member: 该球员不属于您的洞穴团队!
|
||||
name-is-the-owner: "&a [name]现在是洞穴所有者!"
|
||||
you-are-the-owner: "&a您现在是洞穴主人!"
|
||||
ban:
|
||||
description: "从洞穴中禁止一名玩家"
|
||||
cannot-ban-more-players: "&c达到最大禁止玩家的数量, 无法再禁止更多的玩家."
|
||||
player-banned: "&b[name]&c 被您的洞穴禁止."
|
||||
owner-banned-you: "&b[name]&c 的洞穴禁止了您!"
|
||||
you-are-banned: "&b您已被此洞穴禁止!"
|
||||
description: 禁止玩家进入您的洞穴
|
||||
cannot-ban-more-players: "&c您已达到禁令限制,您不能再从您的洞穴禁赛。"
|
||||
player-banned: "&b [name]&c现在被禁止进入您的洞穴。"
|
||||
owner-banned-you: "&b [name]&c禁止您进入他们的洞穴!"
|
||||
you-are-banned: "&b您被禁止进入这个洞穴!"
|
||||
unban:
|
||||
description: "从洞穴中解封一名玩家"
|
||||
player-unbanned: "&b[name]&a 被您的洞穴解封."
|
||||
you-are-unbanned: "&b[name]&a 的洞穴解封了您!"
|
||||
description: 禁止玩家进入您的洞穴
|
||||
player-unbanned: "&b [name]&a现在不受您的洞穴限制。"
|
||||
you-are-unbanned: "&b [name]&a禁止您进入他们的洞穴!"
|
||||
banlist:
|
||||
noone: "&a没有玩家被此洞穴禁止."
|
||||
noone: "&a没有人被禁止进入这个洞穴。"
|
||||
settings:
|
||||
description: "显示洞穴设置"
|
||||
description: 显示洞穴设置
|
||||
expel:
|
||||
description: "从洞穴中请出一名玩家"
|
||||
not-on-island: "&c该玩家不在您洞穴中!"
|
||||
player-expelled-you: "&c您被 &b[name]&c 的洞穴请出!"
|
||||
|
||||
description: 将玩家驱逐出您的洞穴
|
||||
not-on-island: "&c那个玩家不在你的洞穴里!"
|
||||
player-expelled-you: "&b [name]&c将您赶出了山洞!"
|
||||
ranks:
|
||||
owner: "矮人王"
|
||||
sub-owner: "矮人骑士"
|
||||
member: "小矮人"
|
||||
trusted: "信任者"
|
||||
coop: "副 OP"
|
||||
visitor: "人类"
|
||||
banned: "被禁止玩家"
|
||||
|
||||
owner: 矮人王
|
||||
sub-owner: 矮人骑士
|
||||
member: 侏儒
|
||||
trusted: 值得信赖
|
||||
coop: 鸡舍
|
||||
visitor: 人的
|
||||
banned: 兽人
|
||||
protection:
|
||||
flags:
|
||||
ENDERMAN_GRIEFING:
|
||||
description: |-
|
||||
&a末影人可以
|
||||
&a移动洞穴中的方块
|
||||
name: "末影人破坏"
|
||||
&aEndermen可以删除
|
||||
&a洞穴
|
||||
name: 恩德曼悲痛
|
||||
ENTER_EXIT_MESSAGES:
|
||||
island: "[name] 的洞穴"
|
||||
island: "[名字]的洞穴"
|
||||
GEO_LIMIT_MOBS:
|
||||
description: |-
|
||||
&a移除在洞穴保护
|
||||
&a范围外的生物
|
||||
name: "&e将生物限制在洞穴内"
|
||||
&a删除小怪
|
||||
&外部保护
|
||||
&占用空间
|
||||
name: "&e限制小怪进入山洞"
|
||||
ISLAND_RESPAWN:
|
||||
description: |-
|
||||
&a玩家在他们的
|
||||
&a洞穴中重生
|
||||
name: "洞穴中重生"
|
||||
&a玩家重生
|
||||
和他们的洞穴
|
||||
name: 洞穴重生
|
||||
LIQUIDS_FLOWING_OUT:
|
||||
name: "流体流出洞穴"
|
||||
name: 液体在洞穴外流动
|
||||
description: |-
|
||||
&a切换流体是否能
|
||||
&a流出洞穴保护范围.
|
||||
&a切换液体是否可以流出
|
||||
&a洞穴的保护范围。
|
||||
LOCK:
|
||||
description: "切换是否禁止访客访问"
|
||||
name: "锁定洞穴"
|
||||
description: 拨动锁
|
||||
name: 锁洞
|
||||
NATURAL_SPAWNING_OUTSIDE_RANGE:
|
||||
name: "常规生物在保护范围外生成"
|
||||
name: 自然生物产生范围外
|
||||
description: |-
|
||||
&a切换常规生物 (动物和
|
||||
&a怪物) 是否能在洞穴保护
|
||||
&a范围外生成.
|
||||
&a切换是否生物(动物和
|
||||
&amonsters)可以在外面自然产卵
|
||||
&aa洞穴的保护范围。
|
||||
|
||||
&c注意, 此操作不能防止
|
||||
&c洞穴保护范围外的
|
||||
&c刷怪笼或刷怪蛋生成生物.
|
||||
&c请注意,这不会阻止生物
|
||||
&cto通过暴民生成器或生成器生成
|
||||
&cegg。
|
||||
OFFLINE_GROWTH:
|
||||
description: |-
|
||||
&a如果禁用, 当洞穴中的所有成员
|
||||
&a都离线时, 植物将停止生长.
|
||||
&a或许能减少服务器卡顿.
|
||||
name: "离线生长"
|
||||
&a禁用时,植物
|
||||
&a不会在洞穴中生长
|
||||
&awhen所有成员均处于离线状态。
|
||||
&a可以帮助减少延迟。
|
||||
name: 离线增长
|
||||
OFFLINE_REDSTONE:
|
||||
description: |-
|
||||
&a如果禁用, 当洞穴中的所有成员
|
||||
&a都离线时, 红石将停止运作.
|
||||
&a或许能减少服务器卡顿.
|
||||
name: "离线红石"
|
||||
&a禁用时,红石
|
||||
&a不会在山洞中运作
|
||||
&a所有成员均处于离线状态。
|
||||
&a可以帮助减少延迟。
|
||||
name: 离线红石
|
||||
PISTON_PUSH:
|
||||
description: |-
|
||||
&a允许活塞推动
|
||||
&a洞穴外的方块
|
||||
name: "活塞推动"
|
||||
&a允许活塞推动
|
||||
&在洞穴外面
|
||||
name: 活塞推
|
||||
REMOVE_MOBS:
|
||||
description: |-
|
||||
&a传送到洞穴中时,
|
||||
&a移除洞穴中的所有怪物
|
||||
name: "Remove monsters"
|
||||
&a移除怪物
|
||||
&前往洞穴
|
||||
name: 移除怪物
|
||||
TREES_GROWING_OUTSIDE_RANGE:
|
||||
name: "树木在洞穴保护范围外生长"
|
||||
name: 树木生长范围外
|
||||
description: |-
|
||||
&a切换树木是否能长到
|
||||
&a洞穴保护范围之外.
|
||||
&a切换树木是否可以在
|
||||
是否使用&acave的保护范围。
|
||||
PREVENT_TELEPORT_WHEN_FALLING:
|
||||
name: "掉落时禁止传送"
|
||||
name: 跌倒时防止传送
|
||||
description: |-
|
||||
&a当玩家正在掉落时
|
||||
&a禁止他们通过指令进行传送.
|
||||
hint: "&c在掉落时不能传送."
|
||||
locked: "&c该洞穴已禁止访客访问!"
|
||||
protected: "&c没有权限: [description]"
|
||||
spawn-protected: "&c没有权限: [description]"
|
||||
|
||||
&a防止玩家被传送
|
||||
使用命令返回他们的洞穴
|
||||
&aif他们跌倒了。
|
||||
hint: "&c跌倒时无法传送回洞穴。"
|
||||
locked: "&c这个洞穴被锁了!"
|
||||
protected: "&cCave保护:[说明]"
|
||||
spawn-protected: "&cSpawn受保护:[描述]"
|
||||
panel:
|
||||
PROTECTION:
|
||||
description: |-
|
||||
&a洞穴的
|
||||
&a保护设置
|
||||
&a保护设置
|
||||
&a这个洞
|
||||
SETTING:
|
||||
description: |-
|
||||
&a洞穴的
|
||||
&a一般设置
|
||||
|
||||
&a常规设置
|
||||
&a这个洞
|
||||
protection:
|
||||
flags:
|
||||
SKY_WALKER_FLAG:
|
||||
description: "&5&o这将允许/禁止\n&5&o没有额外权限的玩家\n&5&o在洞穴世界的顶部\n&5&o行走."
|
||||
name: "天空行者"
|
||||
hint: "允许在洞穴的天花板上行走."
|
||||
hint: 允许在洞穴顶上行走。
|
||||
name: 天空行者
|
||||
description: |-
|
||||
&5&o这允许启用/禁用
|
||||
&5&o能力继续前进
|
||||
&5&otop洞穴世界
|
||||
&5&o没有额外的权限。
|
||||
|
@ -1,9 +0,0 @@
|
||||
name: BentoBox-CaveBlock
|
||||
main: world.bentobox.caveblock.CaveBlockPladdon
|
||||
version: ${project.version}${build.number}
|
||||
api-version: "1.21"
|
||||
|
||||
authors: [tastybento, BONNe]
|
||||
contributors: ["The BentoBoxWorld Community"]
|
||||
website: https://bentobox.world
|
||||
description: ${project.description}
|
Loading…
Reference in New Issue
Block a user