diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..525681c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/target/
+/.classpath
+/.project
diff --git a/pom.xml b/pom.xml
index 805c0b9..31147e7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,12 +46,12 @@
16
2.0.9
- 1.17.1-R0.1-SNAPSHOT
- 1.16.0
+ 1.18.1-R0.1-SNAPSHOT
+ 1.18.1
${build.version}-SNAPSHOT
- 1.6.0
+ 1.7.0
-LOCAL
BentoBoxWorld_Greenhouses
bentobox-world
@@ -116,6 +116,12 @@
${spigot.version}
provided
+
+ org.spigotmc
+ plugin-annotations
+ 1.2.3-SNAPSHOT
+ provided
+
world.bentobox
bentobox
@@ -277,4 +283,4 @@
-
\ No newline at end of file
+
diff --git a/src/main/java/world/bentobox/greenhouses/Greenhouses.java b/src/main/java/world/bentobox/greenhouses/Greenhouses.java
index ccfc8ec..d3ed568 100644
--- a/src/main/java/world/bentobox/greenhouses/Greenhouses.java
+++ b/src/main/java/world/bentobox/greenhouses/Greenhouses.java
@@ -92,9 +92,8 @@ public void onEnable() {
*/
@Override
public void onDisable() {
- if (manager != null) {
- manager.saveGreenhouses();
- if (manager.getEcoMgr() != null) manager.getEcoMgr().cancel();
+ if (manager != null && manager.getEcoMgr() != null) {
+ manager.getEcoMgr().cancel();
}
}
diff --git a/src/main/java/world/bentobox/greenhouses/GreenhousesPladdon.java b/src/main/java/world/bentobox/greenhouses/GreenhousesPladdon.java
new file mode 100644
index 0000000..f5531e0
--- /dev/null
+++ b/src/main/java/world/bentobox/greenhouses/GreenhousesPladdon.java
@@ -0,0 +1,25 @@
+package world.bentobox.greenhouses;
+
+
+import org.bukkit.plugin.java.annotation.dependency.Dependency;
+import org.bukkit.plugin.java.annotation.plugin.ApiVersion;
+import org.bukkit.plugin.java.annotation.plugin.Plugin;
+
+import world.bentobox.bentobox.api.addons.Addon;
+import world.bentobox.bentobox.api.addons.Pladdon;
+
+
+/**
+ * @author tastybento
+ */
+@Plugin(name = "Pladdon", version = "1.0")
+@ApiVersion(ApiVersion.Target.v1_18)
+@Dependency(value = "BentoBox")
+public class GreenhousesPladdon extends Pladdon
+{
+ @Override
+ public Addon getAddon()
+ {
+ return new Greenhouses();
+ }
+}
diff --git a/src/main/java/world/bentobox/greenhouses/data/Greenhouse.java b/src/main/java/world/bentobox/greenhouses/data/Greenhouse.java
index 27501af..3d052b3 100644
--- a/src/main/java/world/bentobox/greenhouses/data/Greenhouse.java
+++ b/src/main/java/world/bentobox/greenhouses/data/Greenhouse.java
@@ -171,7 +171,7 @@ public void setRoofHopperLocation(@Nullable Vector v) {
*/
@NonNull
public BoundingBox getBoundingBox() {
- return Objects.requireNonNullElseGet(boundingBox, BoundingBox::new);
+ return Objects.requireNonNull(boundingBox);
}
/**
@@ -220,7 +220,9 @@ public World getWorld() {
* @return true if inside the greenhouse
*/
public boolean contains(Location location2) {
- return location.getWorld() != null && location.getWorld().equals(location2.getWorld()) && boundingBox.contains(location2.toVector());
+ return getLocation().getWorld() != null
+ && getLocation().getWorld().equals(location2.getWorld())
+ && getBoundingBox().contains(location2.toVector());
}
/**
@@ -262,12 +264,13 @@ public Map getMissingBlocks() {
* @return true if wall or roof block
*/
public boolean isRoofOrWallBlock(Location l) {
+ final BoundingBox bb = getBoundingBox();
return (l.getBlockY() > this.getFloorHeight()
&& ((l.getBlockY() == getCeilingHeight() - 1)
- || l.getBlockX() == (int)getBoundingBox().getMinX()
- || l.getBlockX() == (int)getBoundingBox().getMaxX() - 1
- || l.getBlockZ() == (int)getBoundingBox().getMinZ()
- || l.getBlockZ() == (int)getBoundingBox().getMaxZ() - 1
+ || l.getBlockX() == (int)bb.getMinX()
+ || l.getBlockX() == (int)bb.getMaxX() - 1
+ || l.getBlockZ() == (int)bb.getMinZ()
+ || l.getBlockZ() == (int)bb.getMaxZ() - 1
));
}
}
diff --git a/src/main/java/world/bentobox/greenhouses/greenhouse/BiomeRecipe.java b/src/main/java/world/bentobox/greenhouses/greenhouse/BiomeRecipe.java
index fb7abb3..f51f67a 100644
--- a/src/main/java/world/bentobox/greenhouses/greenhouse/BiomeRecipe.java
+++ b/src/main/java/world/bentobox/greenhouses/greenhouse/BiomeRecipe.java
@@ -28,7 +28,6 @@
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Hoglin;
import org.bukkit.entity.Piglin;
-import org.bukkit.util.BoundingBox;
import org.bukkit.util.Vector;
import com.google.common.base.Enums;
@@ -367,9 +366,7 @@ public boolean spawnMob(Block b) {
.getManager()
.getMap()
.getGreenhouse(b.getLocation()).map(gh -> {
- BoundingBox interior = gh.getBoundingBox().clone();
- interior.expand(-1, -1, -1);
- if (!interior.contains(entity.getBoundingBox())) {
+ if (!gh.getInternalBoundingBox().contains(entity.getBoundingBox())) {
entity.remove();
return false;
}
@@ -422,7 +419,7 @@ private Optional getRandomPlant() {
* @return a list of blocks that are required for this recipe
*/
public List getRecipeBlocks() {
- return requiredBlocks.entrySet().stream().map(en -> Util.prettifyText(en.getKey().toString()) + " x " + en.getValue()).collect(Collectors.toList());
+ return requiredBlocks.entrySet().stream().map(en -> Util.prettifyText(en.getKey().toString()) + " x " + en.getValue()).toList();
}
/**
@@ -474,10 +471,10 @@ private boolean isBisected(Block bl, GreenhousePlant p) {
private boolean canGrowOn(GrowthBlock block, GreenhousePlant p) {
// Ceiling plants can only grow on ceiling blocks
- if (CEILING_PLANTS.contains(p.plantMaterial()) && block.floor()) {
+ if (CEILING_PLANTS.contains(p.plantMaterial()) && Boolean.TRUE.equals(block.floor())) {
return false;
}
- return p.plantGrownOn().equals(block.block().getRelative(block.floor() ? BlockFace.DOWN : BlockFace.UP).getType());
+ return p.plantGrownOn().equals(block.block().getRelative(Boolean.TRUE.equals(block.floor()) ? BlockFace.DOWN : BlockFace.UP).getType());
}
/**
diff --git a/src/main/java/world/bentobox/greenhouses/listeners/GreenhouseGuard.java b/src/main/java/world/bentobox/greenhouses/listeners/GreenhouseGuard.java
index 2b0a051..377f593 100644
--- a/src/main/java/world/bentobox/greenhouses/listeners/GreenhouseGuard.java
+++ b/src/main/java/world/bentobox/greenhouses/listeners/GreenhouseGuard.java
@@ -10,6 +10,7 @@
import org.bukkit.event.block.BlockFromToEvent;
import org.bukkit.event.block.BlockPistonExtendEvent;
import org.bukkit.event.block.BlockPistonRetractEvent;
+import org.bukkit.event.entity.CreatureSpawnEvent;
import world.bentobox.greenhouses.Greenhouses;
import world.bentobox.greenhouses.data.Greenhouse;
@@ -78,6 +79,23 @@ public void onPistonPull(BlockPistonRetractEvent e) {
.anyMatch(this::inGreenhouse));
}
+
+ /**
+ * Guard Greenhouse from natural entity spawning.
+ *
+ * @param spawnEvent the spawn event
+ */
+ @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
+ public void onCreatureSpawn(CreatureSpawnEvent spawnEvent)
+ {
+ if (CreatureSpawnEvent.SpawnReason.NATURAL == spawnEvent.getSpawnReason())
+ {
+ // Natural spawn events should be cancelled. Greenhouse spawns its own mobs.
+ spawnEvent.setCancelled(this.inGreenhouse(spawnEvent.getLocation()));
+ }
+ }
+
+
private boolean inGreenhouse(Location l) {
return addon.getManager().getMap().getGreenhouse(l).map(g -> g.isRoofOrWallBlock(l)).orElse(false);
}
diff --git a/src/main/java/world/bentobox/greenhouses/listeners/SnowTracker.java b/src/main/java/world/bentobox/greenhouses/listeners/SnowTracker.java
index 8fcc8a8..2bf05c3 100644
--- a/src/main/java/world/bentobox/greenhouses/listeners/SnowTracker.java
+++ b/src/main/java/world/bentobox/greenhouses/listeners/SnowTracker.java
@@ -5,6 +5,7 @@
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.Optional;
import org.bukkit.Bukkit;
import org.bukkit.Material;
@@ -21,9 +22,9 @@
import org.bukkit.event.weather.WeatherChangeEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitTask;
+import org.bukkit.util.BoundingBox;
import com.google.common.base.Enums;
-import com.google.common.base.Optional;
import world.bentobox.bentobox.util.Util;
import world.bentobox.greenhouses.Greenhouses;
@@ -58,9 +59,10 @@ private boolean getAirBlocks(Greenhouse gh) {
}
boolean createdSnow = false;
List waterBlocks = new ArrayList<>();
- for (int x = (int)gh.getBoundingBox().getMinX() + 1; x < (int)gh.getBoundingBox().getMaxX() -1; x++) {
- for (int z = (int)gh.getBoundingBox().getMinZ() + 1; z < (int)gh.getBoundingBox().getMaxZ() - 1; z++) {
- for (int y = (int)gh.getBoundingBox().getMaxY() - 2; y >= (int)gh.getBoundingBox().getMinY(); y--) {
+ final BoundingBox bb = gh.getBoundingBox();
+ for (int x = (int)bb.getMinX() + 1; x < (int)bb.getMaxX() -1; x++) {
+ for (int z = (int)bb.getMinZ() + 1; z < (int)bb.getMaxZ() - 1; z++) {
+ for (int y = (int)bb.getMaxY() - 2; y >= (int)bb.getMinY(); y--) {
Block b = Objects.requireNonNull(gh.getLocation().getWorld()).getBlockAt(x, y, z);
Material type = b.getType();
if (type.equals(Material.AIR) || type.equals(Material.SNOW)) {
@@ -98,7 +100,7 @@ private boolean getAirBlocks(Greenhouse gh) {
}
private boolean placeSnow(Block b) {
- Optional snowCauldron = Enums.getIfPresent(Material.class, "POWDER_SNOW_CAULDRON");
+ Optional snowCauldron = Enums.getIfPresent(Material.class, "POWDER_SNOW_CAULDRON").toJavaUtil();
if (snowCauldron.isPresent()) {
if (b.getType().equals(Material.CAULDRON)) {
b.setType(snowCauldron.get());
diff --git a/src/main/java/world/bentobox/greenhouses/managers/EcoSystemManager.java b/src/main/java/world/bentobox/greenhouses/managers/EcoSystemManager.java
index cd5941e..d7ee49a 100644
--- a/src/main/java/world/bentobox/greenhouses/managers/EcoSystemManager.java
+++ b/src/main/java/world/bentobox/greenhouses/managers/EcoSystemManager.java
@@ -15,6 +15,7 @@
import org.bukkit.block.Hopper;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitTask;
+import org.bukkit.util.BoundingBox;
import org.bukkit.util.NumberConversions;
import world.bentobox.greenhouses.Greenhouses;
@@ -85,18 +86,20 @@ void setup() {
}
private void convertBlocks(Greenhouse gh) {
- World world = gh.getWorld();
+ final World world = gh.getWorld();
+ final BoundingBox bb = gh.getBoundingBox();
if(world == null || gh.getLocation() == null || gh.getLocation().getWorld() == null
- || !gh.getLocation().getWorld().isChunkLoaded(((int) gh.getBoundingBox().getMaxX()) >> 4, ((int) gh.getBoundingBox().getMaxZ()) >> 4)
- || !gh.getLocation().getWorld().isChunkLoaded(((int) gh.getBoundingBox().getMinX()) >> 4, ((int) gh.getBoundingBox().getMinZ()) >> 4)){
+ || !gh.getLocation().getWorld().isChunkLoaded(((int) bb.getMaxX()) >> 4, ((int) bb.getMaxZ()) >> 4)
+ || !gh.getLocation().getWorld().isChunkLoaded(((int) bb.getMinX()) >> 4, ((int) bb.getMinZ()) >> 4)){
return;
}
- int gh_min_x = NumberConversions.floor(gh.getInternalBoundingBox().getMinX());
- int gh_max_x = NumberConversions.floor(gh.getInternalBoundingBox().getMaxX());
+ final BoundingBox ibb = gh.getInternalBoundingBox();
+ int gh_min_x = NumberConversions.floor(ibb.getMinX());
+ int gh_max_x = NumberConversions.floor(ibb.getMaxX());
int gh_min_y = NumberConversions.floor(gh.getBoundingBox().getMinY()); // Note: this gets the floor
- int gh_max_y = NumberConversions.floor(gh.getInternalBoundingBox().getMaxY());
- int gh_min_z = NumberConversions.floor(gh.getInternalBoundingBox().getMinZ());
- int gh_max_z = NumberConversions.floor(gh.getInternalBoundingBox().getMaxZ());
+ int gh_max_y = NumberConversions.floor(ibb.getMaxY());
+ int gh_min_z = NumberConversions.floor(ibb.getMinZ());
+ int gh_max_z = NumberConversions.floor(ibb.getMaxZ());
BiomeRecipe biomeRecipe = gh.getBiomeRecipe();
for (int x = gh_min_x; x < gh_max_x; x++) {
@@ -129,8 +132,9 @@ private void verify(Greenhouse gh) {
}
private void addMobs(Greenhouse gh) {
+ final BoundingBox bb = gh.getBoundingBox();
if(gh.getLocation() == null || gh.getLocation().getWorld() == null || gh.getWorld() == null
- || !gh.getLocation().getWorld().isChunkLoaded(((int) gh.getBoundingBox().getMaxX()) >> 4, ((int) gh.getBoundingBox().getMaxZ()) >> 4) || !gh.getLocation().getWorld().isChunkLoaded(((int) gh.getBoundingBox().getMinX()) >> 4, ((int) gh.getBoundingBox().getMinZ()) >> 4)){
+ || !gh.getLocation().getWorld().isChunkLoaded(((int) bb.getMaxX()) >> 4, ((int) bb.getMaxZ()) >> 4) || !gh.getLocation().getWorld().isChunkLoaded(((int) bb.getMinX()) >> 4, ((int) bb.getMinZ()) >> 4)){
// Skipping addmobs for unloaded greenhouse
return;
}
@@ -138,8 +142,8 @@ private void addMobs(Greenhouse gh) {
return;
}
// Check greenhouse chunks are loaded
- for (double blockX = gh.getBoundingBox().getMinX(); blockX < gh.getBoundingBox().getMaxX(); blockX+=16) {
- for (double blockZ = gh.getBoundingBox().getMinZ(); blockZ < gh.getBoundingBox().getMaxZ(); blockZ+=16) {
+ for (double blockX = bb.getMinX(); blockX < bb.getMaxX(); blockX+=16) {
+ for (double blockZ = bb.getMinZ(); blockZ < bb.getMaxZ(); blockZ+=16) {
int chunkX = (int)(blockX / 16);
int chunkZ = (int)(blockZ / 16);
if (!gh.getWorld().isChunkLoaded(chunkX, chunkZ)) {
@@ -170,8 +174,9 @@ private void addMobs(Greenhouse gh) {
* @param gh - greenhouse
*/
private void growPlants(Greenhouse gh) {
+ final BoundingBox bb = gh.getBoundingBox();
if (gh.getLocation() == null || gh.getLocation().getWorld() == null
- || !gh.getLocation().getWorld().isChunkLoaded(((int) gh.getBoundingBox().getMaxX()) >> 4, ((int) gh.getBoundingBox().getMaxZ()) >> 4) || !gh.getLocation().getWorld().isChunkLoaded(((int) gh.getBoundingBox().getMinX()) >> 4, ((int) gh.getBoundingBox().getMinZ()) >> 4)){
+ || !gh.getLocation().getWorld().isChunkLoaded(((int) bb.getMaxX()) >> 4, ((int) bb.getMaxZ()) >> 4) || !gh.getLocation().getWorld().isChunkLoaded(((int) bb.getMinX()) >> 4, ((int) bb.getMinZ()) >> 4)){
//Skipping growplants for unloaded greenhouse
return;
}
@@ -212,11 +217,13 @@ private void setBoneMeal(Greenhouse gh, int value) {
* @return List of blocks
*/
protected List getAvailableBlocks(Greenhouse gh, boolean ignoreLiquid) {
+ final BoundingBox bb = gh.getBoundingBox();
+ final BoundingBox ibb = gh.getInternalBoundingBox();
List result = new ArrayList<>();
if (gh.getWorld() == null) return result;
- for (double x = gh.getInternalBoundingBox().getMinX(); x < gh.getInternalBoundingBox().getMaxX(); x++) {
- for (double z = gh.getInternalBoundingBox().getMinZ(); z < gh.getInternalBoundingBox().getMaxZ(); z++) {
- for (double y = gh.getInternalBoundingBox().getMaxY() - 1; y >= gh.getBoundingBox().getMinY(); y--) {
+ for (double x = ibb.getMinX(); x < ibb.getMaxX(); x++) {
+ for (double z = ibb.getMinZ(); z < ibb.getMaxZ(); z++) {
+ for (double y = ibb.getMaxY() - 1; y >= bb.getMinY(); y--) {
Block b = gh.getWorld().getBlockAt(NumberConversions.floor(x), NumberConversions.floor(y), NumberConversions.floor(z));
// Check ceiling blocks
if (b.isEmpty() && !b.getRelative(BlockFace.UP).isEmpty()) {
diff --git a/src/main/java/world/bentobox/greenhouses/managers/GreenhouseManager.java b/src/main/java/world/bentobox/greenhouses/managers/GreenhouseManager.java
index f9d6bcf..b540608 100644
--- a/src/main/java/world/bentobox/greenhouses/managers/GreenhouseManager.java
+++ b/src/main/java/world/bentobox/greenhouses/managers/GreenhouseManager.java
@@ -12,6 +12,7 @@
import org.bukkit.block.Biome;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
+import org.bukkit.util.BoundingBox;
import world.bentobox.bentobox.api.events.BentoBoxReadyEvent;
import world.bentobox.bentobox.database.Database;
@@ -125,35 +126,28 @@ private void loadGreenhouses() {
toBeRemoved.forEach(handler::deleteObject);
}
- /**
- * Saves all the greenhouses to database
- */
- public void saveGreenhouses() {
- addon.log("Saving greenhouses...");
- map.getGreenhouses().forEach(handler::saveObjectAsync);
- }
-
/**
* Removes the greenhouse from the world and resets biomes
- * @param g - greenhouse
+ * @param gh - greenhouse
*/
- public void removeGreenhouse(Greenhouse g) {
- handler.deleteObject(g);
- map.removeGreenhouse(g);
- if (g.getOriginalBiome() == null) {
- addon.logError("Greenhouse had no original biome: " + g.getLocation());
+ public void removeGreenhouse(Greenhouse gh) {
+ handler.deleteObject(gh);
+ map.removeGreenhouse(gh);
+ if (gh.getOriginalBiome() == null) {
+ addon.logError("Greenhouse had no original biome: " + gh.getLocation());
return;
}
- if (g.getLocation() == null || g.getLocation().getWorld() == null) {
+ if (gh.getLocation() == null || gh.getLocation().getWorld() == null) {
// Greenhouse is messed up. It's being deleted anyway.
return;
}
- addon.log("Returning biome to original state: " + g.getOriginalBiome().toString());
- for (int x = (int)g.getBoundingBox().getMinX(); x<= (int)g.getBoundingBox().getMaxX(); x+=4) {
- for (int z = (int)g.getBoundingBox().getMinZ(); z<= (int)g.getBoundingBox().getMaxZ(); z+=4) {
- for (int y = (int)g.getBoundingBox().getMinY(); y<= (int)g.getBoundingBox().getMaxY(); y+=4) {
+ addon.log("Returning biome to original state: " + gh.getOriginalBiome().toString());
+ final BoundingBox bb = gh.getBoundingBox();
+ for (int x = (int)bb.getMinX(); x<= (int)bb.getMaxX(); x+=4) {
+ for (int z = (int)bb.getMinZ(); z<= (int)bb.getMaxZ(); z+=4) {
+ for (int y = (int)bb.getMinY(); y<= (int)bb.getMaxY(); y+=4) {
// Set back to the original biome
- g.getLocation().getWorld().setBiome(x, y, z, g.getOriginalBiome());
+ gh.getLocation().getWorld().setBiome(x, y, z, gh.getOriginalBiome());
}
}
}
@@ -250,9 +244,10 @@ private void activateGreenhouse(Greenhouse gh) {
addon.logError("Biome recipe error - no such biome for " + gh.getBiomeRecipe().getName());
return;
}
- for (int x = (int)gh.getBoundingBox().getMinX(); x < gh.getBoundingBox().getMaxX(); x+=4) {
- for (int z = (int)gh.getBoundingBox().getMinZ(); z < gh.getBoundingBox().getMaxZ(); z+=4) {
- for (int y = (int)gh.getBoundingBox().getMinY(); y < gh.getBoundingBox().getMaxY(); y+=4) {
+ final BoundingBox bb = gh.getBoundingBox();
+ for (int x = (int)bb.getMinX(); x < bb.getMaxX(); x+=4) {
+ for (int z = (int)bb.getMinZ(); z < bb.getMaxZ(); z+=4) {
+ for (int y = (int)bb.getMinY(); y < bb.getMaxY(); y+=4) {
Objects.requireNonNull(gh.getWorld()).setBiome(x, y, z, ghBiome);
}
}
diff --git a/src/main/resources/biomes.yml b/src/main/resources/biomes.yml
index 9572e17..343be9e 100644
--- a/src/main/resources/biomes.yml
+++ b/src/main/resources/biomes.yml
@@ -67,7 +67,7 @@ biomes:
moblimit: 9
Cold_Rabbit:
friendlyname: "Cold Taiga Forest"
- biome: TAIGA_HILLS
+ biome: OLD_GROWTH_SPRUCE_TAIGA
icon: SPRUCE_SAPLING
priority: 20
contents:
@@ -280,6 +280,7 @@ biomes:
plants:
RED_MUSHROOM: 20:GRASS_BLOCK
BROWN_MUSHROOM: 20:GRASS_BLOCK
+ BLUE_ORCHID: 10:GRASS_BLOCK
LILY_PAD: 5:WATER
mobs:
SLIME: 5:WATER
diff --git a/src/main/resources/locales/de.yml b/src/main/resources/locales/de.yml
new file mode 100644
index 0000000..5172f65
--- /dev/null
+++ b/src/main/resources/locales/de.yml
@@ -0,0 +1,163 @@
+---
+protection:
+ flags:
+ GREENHOUSE:
+ name: Gewächshäuser
+ description: |-
+ &bUmschalten, wer
+ &bdie Gewächshäuser kontrollieren kann
+greenhouses:
+ general:
+ greenhouses: Gewächshäuser
+ errors:
+ move: Gehe zuerst in ein Gewächshaus, das dir gehört.
+ no-rank: "& cDu hast keinen Rang, um das zu tun."
+ notyours: Das ist nicht dein Gewächshaus!
+ not-inside: "& cDu bist nicht in einem Gewächshaus!"
+ tooexpensive: Du kannst dir das nicht leisten [price]
+ alreadyexists: Gewächshaus existiert bereits!
+ norecipe: Kann kein Gewächshaus bauen!
+ event:
+ broke: Du hast das Gewächshaus kaputt gemacht! Biome auf [biome] umstellen!
+ entering: Betreten des Gewächshauses [biome]
+ leaving: Das Gewächshaus verlassen [biome]
+ recipe:
+ blockscolor: "&f"
+ title: "[[biome] recipe]"
+ watermustbe: Wasser > [coverage]% der Bodenfläche.
+ icemustbe: Eisblöcke > [coverage]% der Bodenfläche.
+ lavamustbe: Lava > [coverage]% der Bodenfläche.
+ minimumblockstitle: "[Minimum blocks required]"
+ nootherblocks: Keine weiteren Blöcke erforderlich.
+ missing: Gewächshaus fehlt
+ commands:
+ user:
+ remove:
+ description: Entfernt ein Gewächshaus, in dem Sie stehen, wenn Sie der Eigentümer
+ sind
+ make:
+ description: Versuche ein Gewächshaus zu bauen
+ parameters: ""
+ error:
+ already: "&cEs gibt hier schon ein Gewächshaus!"
+ FAIL_BAD_ROOF_BLOCKS: "&cDach enthält unzulässige Blöcke!"
+ FAIL_BAD_WALL_BLOCKS: "&cWand enthält unzulässige Blöcke!"
+ FAIL_BELOW: "&cDu musst im Gewächshaus sein, um es zu versuchen."
+ FAIL_BLOCKS_ABOVE: "&cEs dürfen keine Blöcke über dem Gewächshaus sein!
+ Rote Glasblöcke sollten die Problemblöcke anzeigen."
+ FAIL_HOLE_IN_ROOF: "&cIn dem Dach ist ein Loch oder es ist nicht flach!
+ Rote Glasblöcke sollten das Problem anzeigen."
+ FAIL_HOLE_IN_WALL: "&cIn der Wand ist ein Loch!"
+ FAIL_NO_ROOF: "&cEs scheint kein Dach zu geben!"
+ FAIL_TOO_MANY_DOORS: "&cEs dürfen nicht mehr als 4 Türen im Gewächshaus
+ sein!"
+ FAIL_TOO_MANY_HOPPERS: "&cIn den Wänden oder im Dach ist nur ein Trichter
+ zulässig."
+ FAIL_UNEVEN_WALLS: "&cDie Wände sind uneben. Rote Glasblöcke sollten die
+ Problemblöcke anzeigen."
+ FAIL_INSUFFICIENT_ICE: "&cZu wenig Eis für dieses Rezept"
+ FAIL_INSUFFICIENT_LAVA: "&cZu wenig Lava für dieses Rezept"
+ FAIL_INSUFFICIENT_WATER: "&cZu wenig Wasser für dieses Rezept"
+ FAIL_NO_ICE: "&cFür dieses Rezept wird Eis benötigt"
+ FAIL_NO_LAVA: "&cFür dieses Rezept wird Lava benötigt"
+ FAIL_NO_WATER: "&cFür dieses Rezept wird Wasser benötigt"
+ FAIL_NO_RECIPE_FOUND: "&c Zu diesem Gewächshaus konnte kein passendes Rezept
+ gefunden werden"
+ FAIL_INSUFFICIENT_BLOCKS: "&cWeitere Blöcke sind erforderlich, um dieses
+ Rezept zu erstellen!"
+ FAIL_OVERLAPPING: "&cGewächshäuser können sich keine Wände teilen, sorry."
+ success: "&2Du hast erfolgreich ein [biome] Biom Gewächshaus gebaut! Beim
+ nächsten Teleport oder Login wird Biom synchronisiert."
+ missing-blocks: "[material] x [number] &cFehlt"
+ unknown-recipe: "&Unbekanntes Rezept"
+ try-these: "&cVersuche einen von diesen:"
+ recipe-format: "&3[name]"
+ info:
+ title: "&A[Wie man ein Gewächshaus baut]"
+ instructions: "&EStelle einen Kasten aus Glas mit 4 Wänden und einem flachen
+ &EGlasdach her und füge bis zu &F4 Türen &Ein den Wänden hinzu. &EPlatziere
+ &F1 Trichter &Ein eine Wand oder ein Dach und füge Wassereimer hinzu. &EUm
+ Schnee und/oder Knochenmehl herzustellen, um Pflanzen automatisch wachsen
+ zu lassen. &EPrüfe die Biom-Rezepte, welche Blöcke in einem Gewächshaus
+ sein müssen, um ein &EGewächshaus erfolgreich zu machen."
+help:
+ help: Hilfe
+ make: Versucht ein Gewächshaus zu bauen
+ remove: Entfernt ein Gewächshaus, in dem du stehst, wenn du der Besitzer bist
+ info: Wie man ein Gewächshaus baut
+ list: Listet alle Gewächshausbiome auf, die hergestellt werden können
+ recipe: Erklärt dir, wie man das Gewächshaus biome macht
+ opengui: Öffnet die Gewächshaus-GUI
+list:
+ title: "[Gewächshaus-Biom-Rezepte]"
+ info: Benutze /greenhouse recipe um Details über die Herstellung jedes
+ Gewächshauses zu sehen
+error:
+ greenhouseProtected: Gewächshaus geschützt
+ move: Gehe zuerst in ein Gewächshaus, das dir gehört.
+ notowner: Du musst der Besitzer dieses Gewächshauses sein, um das zu tun.
+ removing: Gewächshaus entfernen!
+ notyours: Das ist nicht dein Gewächshaus!
+ notinside: Du bist nicht in einem Gewächshaus!
+ tooexpensive: du kannst dir das nicht leisten [price]
+ alreadyexists: Gewächshaus existiert bereits!
+ norecipe: Kann kein Gewächshaus bauen!
+messages:
+ enter: Betreten des [biome] Gewächshauses von [owner]!
+ leave: Verlässt jetzt das Gewächshaus von [owner].
+ youarein: Du bist jetzt in [owner]'s [biome] Gewächshaus!
+ removed: Dieses Gewächshaus ist nicht mehr ...
+ removedmessage: Ein [biome] Gewächshaus von dir ist nicht mehr!
+ ecolost: Dein Gewächshaus in [location] hat sein Ökosystem verloren und wurde entfernt.
+info:
+ title: "&A [Gewächshaus bauen]"
+ instructions: "&EStelle einen Kasten aus Glas mit 4 Wänden und einem flachen &EGlasdach
+ her und füge bis zu &F4 Türen &Ein den Wänden hinzu. &EPlatziere &F1 Trichter
+ &Ein eine Wand oder ein Dach und füge Wassereimer hinzu. &EUm Schnee und/oder
+ Knochenmehl herzustellen, um Pflanzen automatisch wachsen zu lassen. &EPrüfe die
+ \ Biom-Rezepte, welche Blöcke in einem Gewächshaus sein müssen, um ein &EGewächshaus
+ erfolgreich zu machen."
+ info: "[Gewächshaus Info]"
+ none: Keiner
+ nomore: "&4Du kannst keine Gewächshäuser mehr bauen!"
+ onemore: "&6Du kannst noch ein weiteres Gewächshaus bauen."
+ youcanbuild: "&ADu kannst bis zu [number] mehr Gewächshäuser bauen!"
+ unlimited: "&ADu kannst eine unbegrenzte Anzahl von Gewächshäusern bauen!"
+ welcome: "&BHerzlich willkommen! Klicken Sie hier für Anweisungen"
+recipe:
+ blockscolor: "&f"
+ hint: benutze /greenhouse list, um eine Liste von Rezeptnummern zu sehen!
+ wrongnumber: Die Rezeptnummer muss zwischen 1 und [size] liegen
+ title: "[[biome] recipe]"
+ nowater: Kein Wasser erlaubt.
+ noice: Kein Eis erlaubt.
+ nolava: Keine Lava erlaubt.
+ watermustbe: Wasser > [coverage]% der Bodenfläche.
+ icemustbe: Eisblöcke > [coverage]% der Bodenfläche.
+ lavamustbe: Lava > [coverage]% der Bodenfläche.
+ minimumblockstitle: "[Minimum blocks required]"
+ nootherblocks: Keine weiteren Blöcke erforderlich.
+ missing: Gewächshaus fehlt
+event:
+ broke: Du hast das Gewächshaus kaputt gemacht! Biome auf [biome] umstellen!
+ fix: repariere das Gewächshaus und baue es dann wieder auf
+ cannotplace: Blöcke können nicht über einem Gewächshaus platziert werden!
+ pistonerror: Kolben können keine Blöcke über ein Gewächshaus schieben!
+limits:
+ noneallowed: Die Berechtigungen erlauben dir keine Gewächshäuser, deshalb wurden
+ [nummer] entfernt.
+ limitedto: Die Berechtigungen beschränken dich auf [limit] Gewächshäuser, so dass
+ [number] entfernt wurden.
+adminHelp:
+ reload: Konfiguration aus Datei neu laden.
+ info: Liefert Informationen über das Gewächshaus, in dem du dich befindest
+reload:
+ configReloaded: Konfiguration aus Datei neu geladen.
+admininfo:
+ error: Gewächshaus-Info nur im Spiel verfügbar
+ error2: Versetzt dich in ein Gewächshaus, um Infos zu sehen.
+ flags: "[Greenhouse Flags]"
+news:
+ headline: "[Greenhouse News]"
+controlpanel:
+ title: "&AGewächshäuser"
diff --git a/src/main/resources/locales/hu.yml b/src/main/resources/locales/hu.yml
index c86604e..d4da237 100644
--- a/src/main/resources/locales/hu.yml
+++ b/src/main/resources/locales/hu.yml
@@ -1,189 +1,153 @@
-###########################################################################################
-# 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 #
-# If this file is deleted, then it will be recreate at the next reload. #
-###########################################################################################
+---
protection:
flags:
GREENHOUSE:
name: Greenhouses
- description: |
- &bÁllítsd be, hogy ki
- &bkezelheti az üvegházat
-
+ description: "&bÁllítsd be, hogy ki\n&bkezelheti az üvegházat \n"
greenhouses:
general:
- greenhouses: "Üvegházak"
-
+ greenhouses: Üvegházak
errors:
- move: "Menj a saját üvegházadhoz."
+ move: Menj a saját üvegházadhoz.
no-rank: "&cNincs rangod ehhez."
- notyours: "Ez nem a te üvegházad!"
+ notyours: Ez nem a te üvegházad!
not-inside: "&cNem vagy üvegházban!"
- tooexpensive: "Ehhez nincs elég pénzed, ennyi szükséges: [price]"
- alreadyexists: "Az üvegház már létezik!"
- norecipe: "Nem tudsz üvegházat csinálni!"
-
+ tooexpensive: 'Ehhez nincs elég pénzed, ennyi szükséges: [price]'
+ alreadyexists: Az üvegház már létezik!
+ norecipe: Nem tudsz üvegházat csinálni!
event:
- broke: "Összetörted az üvegházad! Visszaállítjuk a biome-ot [biome]-ra/re!"
- entering: "Belépés a(z) [biome] üvegházba."
- leaving: "Kilépés a(z) [biome] üvegházból."
-
+ broke: Összetörted az üvegházad! Visszaállítjuk a biome-ot [biome]-ra/re!
+ entering: Belépés a(z) [biome] üvegházba.
+ leaving: Kilépés a(z) [biome] üvegházból.
recipe:
- blockscolor: "&f"
- title: "[[biome] recept]"
- watermustbe: "Víz > [coverage]% kell, hogy legyen az alapterületen."
- icemustbe: "Jég blokk > [coverage]% kell, hogy legyen az alapterületen."
- lavamustbe: "Láva > [coverage]% kell, hogy legyen az alapterületen."
- minimumblockstitle: "[Minimum blokkmennyiség]"
- nootherblocks: "Nem szükséges több blokk."
- missing: "Hiányzó üvegház."
-
+ blockscolor: "&f"
+ title: "[[biome] recept]"
+ watermustbe: Víz > [coverage]% kell, hogy legyen az alapterületen.
+ icemustbe: Jég blokk > [coverage]% kell, hogy legyen az alapterületen.
+ lavamustbe: Láva > [coverage]% kell, hogy legyen az alapterületen.
+ minimumblockstitle: "[Minimum blokkmennyiség]"
+ nootherblocks: Nem szükséges több blokk.
+ missing: Hiányzó üvegház.
commands:
user:
remove:
- description: "Ha az üvegházadban állsz és te vagy a tulaja, akkor törli azt."
+ description: Ha az üvegházadban állsz és te vagy a tulaja, akkor törli azt.
make:
- description: "Megpróbál készíteni egy üvegházat."
+ description: Megpróbál készíteni egy üvegházat.
parameters: ""
error:
- already: "Az üvegház már létezik!"
+ already: Az üvegház már létezik!
FAIL_BAD_ROOF_BLOCKS: "&cA tető nem engedélyezett blokkokat tartalmaz!"
FAIL_BAD_WALL_BLOCKS: "&cA fal nem engedélyezett blokkokat tartalmaz!"
FAIL_BELOW: "&cAz üvegházban kell lenned, hogy megpróbáld elkészíteni"
- FAIL_BLOCKS_ABOVE: "&cAz üvegház felett nem lehetnek blokkok! A piros üvegblokkoknak meg kell mutatniuk a problémás blokkokat."
- FAIL_HOLE_IN_ROOF: "&cVan egy lyuk a tetőn, vagy nem sík! A piros üvegblokkoknak meg kell mutatniuk a problémát."
+ FAIL_BLOCKS_ABOVE: "&cAz üvegház felett nem lehetnek blokkok! A piros üvegblokkoknak
+ meg kell mutatniuk a problémás blokkokat."
+ FAIL_HOLE_IN_ROOF: "&cVan egy lyuk a tetőn, vagy nem sík! A piros üvegblokkoknak
+ meg kell mutatniuk a problémát."
FAIL_HOLE_IN_WALL: "&cVan egy lyuk a falban!"
FAIL_NO_ROOF: "&cÚgy tűnik, nincs tető!"
FAIL_TOO_MANY_DOORS: "&cAz üvegházban nem lehet négynél több ajtó!"
- FAIL_TOO_MANY_HOPPERS: "&cCsak egy tölcsér megengedett a falakban vagy a tetőben."
- FAIL_UNEVEN_WALLS: "&cA falak egyenetlenek. A piros üvegblokkoknak meg kell mutatniuk a problémás blokkokat."
+ FAIL_TOO_MANY_HOPPERS: "&cCsak egy tölcsér megengedett a falakban vagy a
+ tetőben."
+ FAIL_UNEVEN_WALLS: "&cA falak egyenetlenek. A piros üvegblokkoknak meg kell
+ mutatniuk a problémás blokkokat."
FAIL_INSUFFICIENT_ICE: "&cNem elegendő a jég ehhez a recept elkészítéséhez."
FAIL_INSUFFICIENT_LAVA: "&cNem elegendő a láva ehhez a recept elkészítéséhez."
FAIL_INSUFFICIENT_WATER: "&cNem elegendő a víz ehhez a recept elkészítéséhez."
FAIL_NO_ICE: "&cA jég szükséges ehhez a recepthez."
FAIL_NO_LAVA: "&cA láva szükséges ehhez a recepthez."
FAIL_NO_WATER: "&cA víz szükséges ehhez a recepthez."
+ FAIL_NO_RECIPE_FOUND: "&c Nem található ilyen recept ebben a melegházban."
FAIL_INSUFFICIENT_BLOCKS: "&cTovábbi blokkokra van szükség a recept elkészítéséhez!"
FAIL_OVERLAPPING: "&cAz üvegházak nem oszthatják meg a falakat, bocs."
- success: "Sikeresen elkészítettél egy [biome] üvegházat! Az éghajlat szinkronizálódik a következő teleportálásnál, vagy belépésnél."
+ success: Sikeresen elkészítettél egy [biome] üvegházat! Az éghajlat szinkronizálódik
+ a következő teleportálásnál, vagy belépésnél.
missing-blocks: "&cHiányzik [material] x [number]"
unknown-recipe: "&cIsmeretlen recept"
try-these: "&cPróbálj meg egyet az alábbiak közül:"
recipe-format: "&3[name]"
info:
title: "&A[Hogyan Készíts Üvegházat]"
- instructions: |
- &EKészíts egy üvegdobozt 4 fallal, egy üvegtetővel,
- &Eés akár 4 ajtót is tehetsz a falba.
- &ERakj a falba vagy a tetőbe &F1 tölcsért, &Eés helyezz bele vizes vödröket,
- &Ehogy havat és/vagy csontlisztet készíts, mellyel automatikusan tudod növeszteni a növényeidet.
- &ENézd meg az éghajlatokhoz tartozó recepteket, hogy megtudd milyen blokkok legyenek feltétlenül
- &Eaz üvegházban ahhoz, hogy sikeresen elkészítsd.
-
-
-######### Old locale for reference
+ instructions: "&EKészíts egy üvegdobozt 4 fallal, egy üvegtetővel,\n&Eés akár
+ 4 ajtót is tehetsz a falba.\n&ERakj a falba vagy a tetőbe &F1 tölcsért,
+ &Eés helyezz bele vizes vödröket,\n&Ehogy havat és/vagy csontlisztet készíts,
+ mellyel automatikusan tudod növeszteni a növényeidet.\n&ENézd meg az éghajlatokhoz
+ tartozó recepteket, hogy megtudd milyen blokkok legyenek feltétlenül\n&Eaz
+ üvegházban ahhoz, hogy sikeresen elkészítsd. \n"
help:
- help: "help"
- make: "Tries to make a greenhouse"
- remove: "Removes a greenhouse that you are standing in if you are the owner"
- info: "How to make a greenhouse"
- list: "Lists all the greenhouse biomes that can be made"
- recipe: "Tells you how to make greenhouse biome"
- opengui: "Opens the Greenhouse GUI"
-
+ help: help
+ make: Tries to make a greenhouse
+ remove: Removes a greenhouse that you are standing in if you are the owner
+ info: How to make a greenhouse
+ list: Lists all the greenhouse biomes that can be made
+ recipe: Tells you how to make greenhouse biome
+ opengui: Opens the Greenhouse GUI
list:
- title: "[Greenhouse Biome Recipes]"
- info: "Use /greenhouse recipe to see details on how to make each greenhouse"
-
-
-################
-#General Errors#
-################
+ title: "[Greenhouse Biome Recipes]"
+ info: Use /greenhouse recipe to see details on how to make each greenhouse
error:
- greenhouseProtected: "Greenhouse protected"
- move: "Move to a greenhouse you own first."
- notowner: "You must be the owner of this greenhouse to do that."
- removing: "Removing greenhouse!"
- notyours: "This is not your greenhouse!"
- notinside: "You are not in a greenhouse!"
- tooexpensive: "You cannot afford [price]"
- alreadyexists: "Greenhouse already exists!"
- norecipe: "Cannot make a greenhouse!"
-
+ greenhouseProtected: Greenhouse protected
+ move: Move to a greenhouse you own first.
+ notowner: You must be the owner of this greenhouse to do that.
+ removing: Removing greenhouse!
+ notyours: This is not your greenhouse!
+ notinside: You are not in a greenhouse!
+ tooexpensive: You cannot afford [price]
+ alreadyexists: Greenhouse already exists!
+ norecipe: Cannot make a greenhouse!
messages:
- enter: "Entering [owner]'s [biome] greenhouse!"
- leave: "Now leaving [owner]'s greenhouse."
- youarein: "You are now in [owner]'s [biome] greenhouse!"
- removed: "This greenhouse is no more..."
- removedmessage: "A [biome] greenhouse of yours is no more!"
- ecolost: "Your greenhouse at [location] lost its eco system and was removed."
-
+ enter: Entering [owner]'s [biome] greenhouse!
+ leave: Now leaving [owner]'s greenhouse.
+ youarein: You are now in [owner]'s [biome] greenhouse!
+ removed: This greenhouse is no more...
+ removedmessage: A [biome] greenhouse of yours is no more!
+ ecolost: Your greenhouse at [location] lost its eco system and was removed.
info:
- title: "&A[How To Build A Greenhouse]"
- instructions: |
- &EMake a box out of out of glass with 4 walls and a flat glass
- &Eroof and add up to &F4 doors &Ein the walls.
- &EPlace &F1 hopper &Ein a wall or roof and add water buckets.
- &Eto make snow and/or bonemeal to grow plants automatically.
- &ECheck the biome recipes for what blocks must be inside a
- &Egreenhouse to make one successfully.
- info: "[Greenhouse Info]"
- none: "None"
- nomore: "&4You cannot build any more greenhouses!"
- onemore: "&6You can build one more greenhouse."
- youcanbuild: "&AYou can build up to [number] more greenhouses!"
- unlimited: "&AYou can build an unlimited number of greenhouses!"
- welcome: "&BWelcome! Click here for instructions"
-
+ title: "&A[How To Build A Greenhouse]"
+ instructions: "&EMake a box out of out of glass with 4 walls and a flat glass\n&Eroof
+ and add up to &F4 doors &Ein the walls.\n&EPlace &F1 hopper &Ein a wall or roof
+ and add water buckets.\n&Eto make snow and/or bonemeal to grow plants automatically.\n&ECheck
+ the biome recipes for what blocks must be inside a\n&Egreenhouse to make one successfully.
+ \n"
+ info: "[Greenhouse Info]"
+ none: None
+ nomore: "&4You cannot build any more greenhouses!"
+ onemore: "&6You can build one more greenhouse."
+ youcanbuild: "&AYou can build up to [number] more greenhouses!"
+ unlimited: "&AYou can build an unlimited number of greenhouses!"
+ welcome: "&BWelcome! Click here for instructions"
recipe:
- blockscolor: "&f"
- hint: "Use /greenhouse list to see a list of recipe numbers!"
- wrongnumber: "Recipe number must be between 1 and [size]"
- title: "[[biome] recipe]"
- nowater: "No water allowed."
- noice: "No ice allowed."
- nolava: "No lava allowed."
- watermustbe: "Water > [coverage]% of floor area."
- icemustbe: "Ice blocks > [coverage]% of floor area."
- lavamustbe: "Lava > [coverage]% of floor area."
- minimumblockstitle: "[Minimum blocks required]"
- nootherblocks: "No other blocks required."
- missing: "Greenhouse is missing"
-
+ blockscolor: "&f"
+ hint: Use /greenhouse list to see a list of recipe numbers!
+ wrongnumber: Recipe number must be between 1 and [size]
+ title: "[[biome] recipe]"
+ nowater: No water allowed.
+ noice: No ice allowed.
+ nolava: No lava allowed.
+ watermustbe: Water > [coverage]% of floor area.
+ icemustbe: Ice blocks > [coverage]% of floor area.
+ lavamustbe: Lava > [coverage]% of floor area.
+ minimumblockstitle: "[Minimum blocks required]"
+ nootherblocks: No other blocks required.
+ missing: Greenhouse is missing
event:
- broke: "You broke this greenhouse! Reverting biome to [biome]!"
- fix: "Fix the greenhouse and then make it again."
- cannotplace: "Blocks cannot be placed above a greenhouse!"
- pistonerror: "Pistons cannot push blocks over a greenhouse!"
-
-
+ broke: You broke this greenhouse! Reverting biome to [biome]!
+ fix: Fix the greenhouse and then make it again.
+ cannotplace: Blocks cannot be placed above a greenhouse!
+ pistonerror: Pistons cannot push blocks over a greenhouse!
limits:
- noneallowed: "Permissions do not allow you any greenhouses so [number] were removed."
- limitedto: "Permissions limit you to [limit] greenhouses so [number] were removed."
-
-
-##################################
-#Admin commands that use /gadmin #
-##################################
-
-#Help
+ noneallowed: Permissions do not allow you any greenhouses so [number] were removed.
+ limitedto: Permissions limit you to [limit] greenhouses so [number] were removed.
adminHelp:
- reload: "reload configuration from file."
- info: "provides info on the greenhouse you are in"
-
-#reload
+ reload: reload configuration from file.
+ info: provides info on the greenhouse you are in
reload:
- configReloaded: "Configuration reloaded from file."
-
+ configReloaded: Configuration reloaded from file.
admininfo:
- error: "Greenhouse info only available in-game"
- error2: "Put yourself in a greenhouse to see info."
- flags: "[Greenhouse Flags]"
-
+ error: Greenhouse info only available in-game
+ error2: Put yourself in a greenhouse to see info.
+ flags: "[Greenhouse Flags]"
news:
- headline: "[Greenhouse News]"
-
+ headline: "[Greenhouse News]"
controlpanel:
- title: "&AGreenhouses"
-
+ title: "&AGreenhouses"
diff --git a/src/main/resources/locales/ja.yml b/src/main/resources/locales/ja.yml
index c63fc17..e34b444 100644
--- a/src/main/resources/locales/ja.yml
+++ b/src/main/resources/locales/ja.yml
@@ -1,37 +1,42 @@
---
-adminHelp:
- info: あなたがいる温室に関する情報を提供します
- reload: ファイルから設定をリロードします。
-admininfo:
- error: ゲーム内でのみ利用可能な温室情報
- error2: 温室で情報を確認してください。
- flags: "[温室旗]"
-controlpanel:
- title: "&A温室"
-error:
- alreadyexists: 温室はすでに存在します!
- greenhouseProtected: 温室保護
- move: 最初に所有する温室に移動します。
- norecipe: 温室を作ることができません!
- notinside: あなたは温室の中にいません!
- notowner: それを行うには、この温室の所有者でなければなりません。
- notyours: これはあなたの温室ではありません!
- removing: 温室を撤去!
- tooexpensive: あなたは余裕がない[price]
-event:
- broke: あなたはこの温室を壊しました!バイオームを[biome]に戻しています!
- cannotplace: ブロックを温室の上に置くことはできません!
- fix: 温室を修理してから、もう一度作ります。
- pistonerror: ピストンは温室の上でブロックを押すことができません!
+protection:
+ flags:
+ GREENHOUSE:
+ name: 温室
+ description: |-
+ &b誰が温室を制御できるかを
+ &b設定する
greenhouses:
+ general:
+ greenhouses: 温室
+ errors:
+ move: 最初に所有する温室に移動します。
+ no-rank: "&cあなたにはそれをするランクがありません。"
+ notyours: これはあなたの温室ではありません!
+ not-inside: "&cあなたは温室の中にいません!"
+ tooexpensive: あなたは余裕がない[price]
+ alreadyexists: 温室はすでに存在します!
+ norecipe: 温室を作ることができません!
+ event:
+ broke: "&c温室を壊しました!バイオームを [biome]に戻しています!"
+ entering: "[biome]の温室に入る"
+ leaving: "[biome]の温室を離れる"
+ recipe:
+ blockscolor: "&f"
+ title: "[[biome]レシピ]"
+ watermustbe: 水>[coverage]床面積の%。
+ icemustbe: 氷のブロック>床面積の[coverage]%。
+ lavamustbe: 溶岩> [coverage]床面積の%。
+ minimumblockstitle: "[必要な最小ブロック]"
+ nootherblocks: 他のブロックは必要ありません。
+ missing: 温室がありません
commands:
user:
- info:
- title: "&A [温室の作り方]"
- instructions: 4つの壁と平らなガラス屋根でガラスから箱を作り、壁に最大4つのドアを追加します。 1つのホッパーを壁または屋根に置き、水バケツを追加します。
- 雪や骨粉を作り、植物を自動的に育てます。 バイオームレシピを確認して、温室内で正常にブロックするために必要なブロックを確認してください。
+ remove:
+ description: あなたが所有者である場合、あなたが立っている温室を取り除きます
make:
description: 温室を作ってみる
+ parameters: "<レシピ>"
error:
already: "&cここには温室がすでにあります!"
FAIL_BAD_ROOF_BLOCKS: "&c屋根には許可されていないブロックが含まれています!"
@@ -40,97 +45,99 @@ greenhouses:
FAIL_BLOCKS_ABOVE: "&c温室の上にブロックを置くことはできません!赤いガラスブロックに問題のあるブロックが表示されます。"
FAIL_HOLE_IN_ROOF: "&c屋根に穴があるか、平らではありません!赤いガラスブロックが問題を示しているはずです。"
FAIL_HOLE_IN_WALL: "&c壁に穴が開いています!"
- FAIL_INSUFFICIENT_ICE: "&cこのレシピを作成するには氷が足りません"
- FAIL_INSUFFICIENT_LAVA: "&cこのレシピを作るには溶岩が足りません"
- FAIL_INSUFFICIENT_WATER: "&cこのレシピを作るのに水が足りません"
FAIL_NO_ROOF: "&c屋根がないようです!"
FAIL_TOO_MANY_DOORS: "&c温室には4つ以上のドアを置くことはできません!"
FAIL_TOO_MANY_HOPPERS: "&c壁または屋根に使用できるホッパーは1つだけです。"
FAIL_UNEVEN_WALLS: "&c壁が不均一です。赤いガラスブロックに問題のあるブロックが表示されます。"
+ FAIL_INSUFFICIENT_ICE: "&cこのレシピを作成するには氷が足りません"
+ FAIL_INSUFFICIENT_LAVA: "&cこのレシピを作るには溶岩が足りません"
+ FAIL_INSUFFICIENT_WATER: "&cこのレシピを作るのに水が足りません"
FAIL_NO_ICE: このレシピを作成するには&c氷が必要です
FAIL_NO_LAVA: このレシピを作成するには&c溶岩が必要です
FAIL_NO_WATER: このレシピを作成するには&c水が必要です
- parameters: "<レシピ>"
+ FAIL_NO_RECIPE_FOUND: "&cこの温室に一致するレシピが見つかりませんでした"
+ FAIL_INSUFFICIENT_BLOCKS: "&cこのレシピを作成するには、さらに多くのブロックが必要です。"
+ FAIL_OVERLAPPING: "&c温室は壁を共有できません。申し訳ありません。"
success: "&2あなたは[biome]バイオーム温室を無事に作成しました!バイオームは次のテレポートまたはログインで同期します。"
- remove:
- description: あなたが所有者である場合、あなたが立っている温室を取り除きます
- errors:
- alreadyexists: 温室はすでに存在します!
- move: 最初に所有する温室に移動します。
- no-rank: "&cあなたにはそれをするランクがありません。"
- norecipe: 温室を作ることができません!
- not-inside: "&cあなたは温室の中にいません!"
- notyours: これはあなたの温室ではありません!
- tooexpensive: あなたは余裕がない[price]
- general:
- greenhouses: 温室
- recipe:
- blockscolor: "&f"
- minimumblockstitle: "[必要な最小ブロック]"
- missing: 温室がありません
- nootherblocks: 他のブロックは必要ありません。
- title: "[[biome]レシピ]"
- watermustbe: 水>[coverage]床面積の%。
- icemustbe: 氷のブロック>床面積の[coverage]%。
- lavamustbe: 溶岩> [coverage]床面積の%。
- event:
- broke: "&c温室を壊しました!バイオームを [biome]に戻しています!"
- entering: "[biome]の温室に入る"
- leaving: "[biome]の温室を離れる"
+ missing-blocks: "&c欠落[material] x [number]"
+ unknown-recipe: "&c不明なレシピ"
+ try-these: "&c次のいずれかを試してください。"
+ recipe-format: "&3[name]"
+ info:
+ title: "&A [温室の作り方]"
+ instructions: 4つの壁と平らなガラス屋根でガラスから箱を作り、壁に最大4つのドアを追加します。 1つのホッパーを壁または屋根に置き、水バケツを追加します。
+ 雪や骨粉を作り、植物を自動的に育てます。 バイオームレシピを確認して、温室内で正常にブロックするために必要なブロックを確認してください。
help:
help: 手助け
+ make: 温室を作ろうとする
+ remove: あなたが所有者である場合、あなたが立っている温室を取り除きます
info: 温室の作り方
list: 作成可能なすべての温室バイオームをリストします
- make: 温室を作ろうとする
recipe: 温室バイオームの作り方を説明します
- remove: あなたが所有者である場合、あなたが立っている温室を取り除きます
opengui: 温室のGUI
-info:
- info: "[温室情報]"
- instructions: "&E 4つの壁と平らなガラスの&E屋根でガラスから箱を作り、壁に&F 4のドア&Eを追加します。 &E壁と屋根に&F 1ホッパー&Eを配置し、ウォーターバケツ&Eを追加して雪や骨粉を作り、植物を自動的に成長させます。
- &Eバイオームレシピを確認して、&E温室内で正常にブロックを作成するために必要なブロックを確認します。"
- nomore: "&4これ以上温室を建設することはできません!"
- none: 無し
- onemore: "&6温室をもう1つ構築できます。"
- title: "&A [温室の作り方]"
- unlimited: "&A温室を無制限に構築できます!"
- welcome: "&B ようこそ!手順についてはここをクリックしてください"
- youcanbuild: "&A温室を最大[number]個まで構築できます!"
-limits:
- limitedto: 許可により温室が[limit]に制限されるため、[number]が削除されました。
- noneallowed: 許可により温室が許可されないため、[number]は削除されました。
list:
title: "[温室効果バイオームのレシピ]"
info: "/greenhouse recipe <番号>を使用する各温室の作り方の詳細を見る"
+error:
+ greenhouseProtected: 温室保護
+ move: 最初に所有する温室に移動します。
+ notowner: それを行うには、この温室の所有者でなければなりません。
+ removing: 温室を撤去!
+ notyours: これはあなたの温室ではありません!
+ notinside: あなたは温室の中にいません!
+ tooexpensive: あなたは余裕がない[price]
+ alreadyexists: 温室はすでに存在します!
+ norecipe: 温室を作ることができません!
messages:
- ecolost: "[location]の温室はエコシステムを失い、撤去されました。"
- leave: "[owner]の温室を離れます。"
- removed: この温室はもうありません...
enter: "[owner]の[biome]の温室に入る!"
+ leave: "[owner]の温室を離れます。"
youarein: あなたは今[owner]の[biome]の温室にいます!
+ removed: この温室はもうありません...
removedmessage: あなたの[biome]の温室はもうありません!
-news:
- headline: "[温室ニュース]"
-protection:
- flags:
- GREENHOUSE:
- name: 温室
- description: |-
- &b誰が温室を制御できるかを
- &b設定する
+ ecolost: "[location]の温室はエコシステムを失い、撤去されました。"
+info:
+ title: "&A [温室の作り方]"
+ instructions: "&E 4つの壁と平らなガラスの&E屋根でガラスから箱を作り、壁に&F 4のドア&Eを追加します。 &E壁と屋根に&F 1ホッパー&Eを配置し、ウォーターバケツ&Eを追加して雪や骨粉を作り、植物を自動的に成長させます。
+ &Eバイオームレシピを確認して、&E温室内で正常にブロックを作成するために必要なブロックを確認します。"
+ info: "[温室情報]"
+ none: 無し
+ nomore: "&4これ以上温室を建設することはできません!"
+ onemore: "&6温室をもう1つ構築できます。"
+ youcanbuild: "&A温室を最大[number]個まで構築できます!"
+ unlimited: "&A温室を無制限に構築できます!"
+ welcome: "&B ようこそ!手順についてはここをクリックしてください"
recipe:
blockscolor: "&f"
hint: "/ greenhouse listを使用して、レシピ番号のリストを表示します!"
+ wrongnumber: レシピ番号は1から[size]の間でなければなりません
+ title: "[[biome]レシピ]"
+ nowater: 水は許可されません。
+ noice: 氷は許可されていません。
+ nolava: 溶岩は許可されていません。
+ watermustbe: 水> [coverage]床面積の%。
icemustbe: 氷のブロック>床面積の[coverage]%。
lavamustbe: 溶岩> [coverage]床面積の%。
minimumblockstitle: "[必要な最小ブロック]"
- missing: 温室がありません
- noice: 氷は許可されていません。
- nolava: 溶岩は許可されていません。
nootherblocks: 他のブロックは必要ありません。
- nowater: 水は許可されません。
- title: "[[biome]レシピ]"
- watermustbe: 水> [coverage]床面積の%。
- wrongnumber: レシピ番号は1から[size]の間でなければなりません
+ missing: 温室がありません
+event:
+ broke: あなたはこの温室を壊しました!バイオームを[biome]に戻しています!
+ fix: 温室を修理してから、もう一度作ります。
+ cannotplace: ブロックを温室の上に置くことはできません!
+ pistonerror: ピストンは温室の上でブロックを押すことができません!
+limits:
+ noneallowed: 許可により温室が許可されないため、[number]は削除されました。
+ limitedto: 許可により温室が[limit]に制限されるため、[number]が削除されました。
+adminHelp:
+ reload: ファイルから設定をリロードします。
+ info: あなたがいる温室に関する情報を提供します
reload:
configReloaded: ファイルから構成が再ロードされました。
+admininfo:
+ error: ゲーム内でのみ利用可能な温室情報
+ error2: 温室で情報を確認してください。
+ flags: "[温室旗]"
+news:
+ headline: "[温室ニュース]"
+controlpanel:
+ title: "&A温室"
diff --git a/src/main/resources/locales/zh-CN.yml b/src/main/resources/locales/zh-CN.yml
index 9a2c7f7..e3e4b8d 100644
--- a/src/main/resources/locales/zh-CN.yml
+++ b/src/main/resources/locales/zh-CN.yml
@@ -1,7 +1,4 @@
-#
-# 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 #
-# If this file is deleted, then it will be recreate at the next reload. #
+---
protection:
flags:
GREENHOUSE:
@@ -12,9 +9,9 @@ greenhouses:
greenhouses: 温室
errors:
move: 移动到你拥有的第一个温室.
- no-rank: '&c你没有足够的阶级去做这个.'
+ no-rank: "&c你没有足够的阶级去做这个."
notyours: 这不是你的温室!
- not-inside: '&c你并不处于一个温室之中!'
+ not-inside: "&c你并不处于一个温室之中!"
tooexpensive: 你的钱不足以支付 [price]
alreadyexists: 温室已经存在!
norecipe: 无法创建一个温室!
@@ -23,12 +20,12 @@ greenhouses:
entering: 你进入一个 [biome] 温室
leaving: 你离开了 [biome] 温室
recipe:
- blockscolor: '&f'
- title: '[[biome] 配方]'
+ blockscolor: "&f"
+ title: "[[biome] 配方]"
watermustbe: 水在地面上的占比需要大于[coverage]%.
icemustbe: 冰在地面上的占比需要大于[coverage]%.
lavamustbe: 岩浆在地面上的占比需要大于[coverage]%.
- minimumblockstitle: '[最少所需的方块数目]'
+ minimumblockstitle: "[最少所需的方块数目]"
nootherblocks: 没有其它需要的方块了.
missing: 温室缺失了
commands:
@@ -37,39 +34,37 @@ greenhouses:
description: 如果你是你现在所处的温室的主人则移除这个温室
make:
description: 尝试建造一个温室
- parameters:
+ parameters: ""
error:
- already: '&c这已经有一个温室了!'
- FAIL_BAD_ROOF_BLOCKS: '&c屋顶包含了不被允许的方块!'
- FAIL_BAD_WALL_BLOCKS: '&c墙壁包含了不被允许的方块!'
- FAIL_BELOW: '&c你必须处于温室结构内才能尝试建造它'
- FAIL_BLOCKS_ABOVE: '&c温室的上方不能有方块,违规方块已被标红.'
- FAIL_HOLE_IN_ROOF: '&c屋顶上有一个洞或者屋顶并不平整,违规方块已被标红.'
- FAIL_HOLE_IN_WALL: '&c墙上有一个洞!'
- FAIL_NO_ROOF: '&c这儿看起来没有屋顶!'
- FAIL_TOO_MANY_DOORS: '&c你的温室最多只能有四个门!'
- FAIL_TOO_MANY_HOPPERS: '&c墙或屋顶上至多有一个漏斗.'
- FAIL_UNEVEN_WALLS: '&c墙壁不平坦,违规方块已被标红.'
- FAIL_INSUFFICIENT_ICE: '&c冰的数目不足以建造这个温室'
- FAIL_INSUFFICIENT_LAVA: '&c岩浆的数目不足以建造这个温室'
- FAIL_INSUFFICIENT_WATER: '&c水的数目不足以建造这个温室'
- FAIL_NO_ICE: '&c对于这个温室来说冰是必须的'
- FAIL_NO_LAVA: '&c对于这个温室来说岩浆是必须的'
- FAIL_NO_WATER: '&c对于这个温室来说水是必须的'
- FAIL_INSUFFICIENT_BLOCKS: '&c你所用的方块数目不足!'
- FAIL_OVERLAPPING: '&c温室间不能共享墙壁.'
- success: '&2你成功的建造了一个 [biome] 群系温室! 在你下次登陆时生物群系将会刷新.'
- missing-blocks: '&c缺少了 [material] x [number]'
- unknown-recipe: '&c未知的温室配方'
- try-these: '&c尝试以下操作:'
- recipe-format: '&3[name]'
+ already: "&c这已经有一个温室了!"
+ FAIL_BAD_ROOF_BLOCKS: "&c屋顶包含了不被允许的方块!"
+ FAIL_BAD_WALL_BLOCKS: "&c墙壁包含了不被允许的方块!"
+ FAIL_BELOW: "&c你必须处于温室结构内才能尝试建造它"
+ FAIL_BLOCKS_ABOVE: "&c温室的上方不能有方块,违规方块已被标红."
+ FAIL_HOLE_IN_ROOF: "&c屋顶上有一个洞或者屋顶并不平整,违规方块已被标红."
+ FAIL_HOLE_IN_WALL: "&c墙上有一个洞!"
+ FAIL_NO_ROOF: "&c这儿看起来没有屋顶!"
+ FAIL_TOO_MANY_DOORS: "&c你的温室最多只能有四个门!"
+ FAIL_TOO_MANY_HOPPERS: "&c墙或屋顶上至多有一个漏斗."
+ FAIL_UNEVEN_WALLS: "&c墙壁不平坦,违规方块已被标红."
+ FAIL_INSUFFICIENT_ICE: "&c冰的数目不足以建造这个温室"
+ FAIL_INSUFFICIENT_LAVA: "&c岩浆的数目不足以建造这个温室"
+ FAIL_INSUFFICIENT_WATER: "&c水的数目不足以建造这个温室"
+ FAIL_NO_ICE: "&c对于这个温室来说冰是必须的"
+ FAIL_NO_LAVA: "&c对于这个温室来说岩浆是必须的"
+ FAIL_NO_WATER: "&c对于这个温室来说水是必须的"
+ FAIL_NO_RECIPE_FOUND: "&c 找不到与此温室相匹配的配方"
+ FAIL_INSUFFICIENT_BLOCKS: "&c你所用的方块数目不足!"
+ FAIL_OVERLAPPING: "&c温室间不能共享墙壁."
+ success: "&2你成功的建造了一个 [biome] 群系温室! 在你下次登陆时生物群系将会刷新."
+ missing-blocks: "&c缺少了 [material] x [number]"
+ unknown-recipe: "&c未知的温室配方"
+ try-these: "&c尝试以下操作:"
+ recipe-format: "&3[name]"
info:
- title: '&A[温室建造指南]'
- instructions: "&E用玻璃建造一个有四面墙和屋顶的平整的立方体\n\
- &E最多只能有 &F4 扇门. &E\n在墙壁或屋顶内&E放置 &F一个漏斗\
- \ \n&E来放置骨粉或雪\
- \ 来让作物自动生长.\n&E检查温室配方确保\
- \ 你的温室包含足够的必要方块\n&E温室就顺利建造了. \n"
+ title: "&A[温室建造指南]"
+ instructions: "&E用玻璃建造一个有四面墙和屋顶的平整的立方体\n&E最多只能有 &F4 扇门. &E\n在墙壁或屋顶内&E放置 &F一个漏斗
+ \n&E来放置骨粉或雪 来让作物自动生长.\n&E检查温室配方确保 你的温室包含足够的必要方块\n&E温室就顺利建造了. \n"
help:
help: 帮助
make: 尝试建造一个温室
@@ -79,7 +74,7 @@ help:
recipe: 告知你如何制造一个温室
opengui: 打开温室GUI
list:
- title: '[温室建造指南]'
+ title: "[温室建造指南]"
info: 使用指令 /greenhouse recipe 来查看建造每一个温室的细节
error:
greenhouseProtected: 温室已被保护
@@ -99,31 +94,28 @@ messages:
removedmessage: 你的 [biome] 温室已经被移除!
ecolost: 你位于 [location] 的温室生态环境遭到破坏,它已经不再是温室了.
info:
- title: '&A[如何建造一个温室]'
- instructions: "&E用玻璃建造一个有四面墙和屋顶的平整的立方体\n\
- &E最多只能有 &F4 扇门. &E\n在墙壁或屋顶内&E放置 &F一个漏斗\
- \ \n&E来放置骨粉或雪\
- \ 来让作物自动生长.\n&E检查温室配方确保\
- \ 你的温室包含足够的必要方块\n&E温室就顺利建造了. \n"
- info: '[温室信息]'
+ title: "&A[如何建造一个温室]"
+ instructions: "&E用玻璃建造一个有四面墙和屋顶的平整的立方体\n&E最多只能有 &F4 扇门. &E\n在墙壁或屋顶内&E放置 &F一个漏斗 \n&E来放置骨粉或雪
+ 来让作物自动生长.\n&E检查温室配方确保 你的温室包含足够的必要方块\n&E温室就顺利建造了. \n"
+ info: "[温室信息]"
none: 无
- nomore: '&4你无法建造更多的温室了!'
- onemore: '&6你可以再建造一个温室.'
- youcanbuild: '&A你最多能建造 [number] 个温室!'
- unlimited: '&A你能建造无限多个温室!'
- welcome: '&B你好! 点击这里获得更多提示'
+ nomore: "&4你无法建造更多的温室了!"
+ onemore: "&6你可以再建造一个温室."
+ youcanbuild: "&A你最多能建造 [number] 个温室!"
+ unlimited: "&A你能建造无限多个温室!"
+ welcome: "&B你好! 点击这里获得更多提示"
recipe:
- blockscolor: '&f'
+ blockscolor: "&f"
hint: 使用 /greenhouse list 来看见所有温室配方的编号!
wrongnumber: 温室配方编号必须位于 1 与 [size] 之间
- title: '[[biome] 配方]'
+ title: "[[biome] 配方]"
nowater: 不允许有水.
noice: 不允许有冰.
nolava: 不允许有岩浆.
watermustbe: 水在地面上的占比需要大于 [coverage]%.
icemustbe: 冰在地面上的占比需要大于 [coverage]%.
lavamustbe: 岩浆在地面上的占比需要大于 [coverage]%.
- minimumblockstitle: '[最少所需的方块]'
+ minimumblockstitle: "[最少所需的方块]"
nootherblocks: 没有其它必要的方块了.
missing: 温室缺失了
event:
@@ -142,8 +134,8 @@ reload:
admininfo:
error: 查看温室信息功能仅能在游戏中使用
error2: 进入一个温室才能查看其信息.
- flags: '[Greenhouse Flags]'
+ flags: "[Greenhouse Flags]"
news:
- headline: '[温室新闻]'
+ headline: "[温室新闻]"
controlpanel:
- title: '&A温室'
+ title: "&A温室"
diff --git a/src/test/java/world/bentobox/greenhouses/greenhouse/BiomeRecipeTest.java b/src/test/java/world/bentobox/greenhouses/greenhouse/BiomeRecipeTest.java
index 113ed97..8df65c1 100644
--- a/src/test/java/world/bentobox/greenhouses/greenhouse/BiomeRecipeTest.java
+++ b/src/test/java/world/bentobox/greenhouses/greenhouse/BiomeRecipeTest.java
@@ -96,6 +96,8 @@ public void setUp() {
when(gh.getCeilingHeight()).thenReturn(120);
bb = new BoundingBox(10, 100, 10, 20, 120, 20);
when(gh.getBoundingBox()).thenReturn(bb);
+ BoundingBox ibb = bb.clone().expand(-1);
+ when(gh.getInternalBoundingBox()).thenReturn(ibb);
when(gh.getWorld()).thenReturn(world);
when(gh.contains(any())).thenReturn(true);
when(world.getBlockAt(anyInt(), anyInt(), anyInt())).thenReturn(block);
@@ -765,8 +767,8 @@ public void testSetPriority() {
*/
@Test
public void testSetType() {
- br.setType(Biome.BADLANDS_PLATEAU);
- assertEquals(Biome.BADLANDS_PLATEAU, br.getBiome());
+ br.setType(Biome.BADLANDS);
+ assertEquals(Biome.BADLANDS, br.getBiome());
}
/**
diff --git a/src/test/java/world/bentobox/greenhouses/listeners/GreenhouseEventsTest.java b/src/test/java/world/bentobox/greenhouses/listeners/GreenhouseEventsTest.java
index 1b55509..27093f7 100644
--- a/src/test/java/world/bentobox/greenhouses/listeners/GreenhouseEventsTest.java
+++ b/src/test/java/world/bentobox/greenhouses/listeners/GreenhouseEventsTest.java
@@ -296,7 +296,7 @@ public void testOnIceBreakNotNetherNetherGreenhouse() {
ghe.onIceBreak(e);
verify(block).setType(Material.AIR);
assertTrue(e.isCancelled());
- verify(world).playSound(any(), eq(Sound.BLOCK_GLASS_BREAK), eq(1F), eq(1F));
+ verify(world).playSound(any(Location.class), eq(Sound.BLOCK_GLASS_BREAK), eq(1F), eq(1F));
}