Compare commits
13 Commits
BOP-1.16.4
...
BOP-1.8.9-
Author | SHA1 | Date |
---|---|---|
Adubbz | 22d4dd29b3 | |
Adubbz | 2e3e12276b | |
Adubbz | 99cbcc9d94 | |
Adubbz | 8c2169b8c4 | |
Forstride | 9a01eaf180 | |
Forstride | 7a4ac7b188 | |
Forstride | 88a0a1f031 | |
Forstride | db63a91898 | |
Adubbz | 887d715c61 | |
Adubbz | 21af6c9fad | |
Jack Martin | 73473315a3 | |
Adubbz | 243321ebea | |
Jack Martin | 6b5ff6d2ff |
|
@ -17,3 +17,9 @@ Also, if you want to **disable or add certain world generation features** in cer
|
|||
[<img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png">](http://creativecommons.org/licenses/by-nc-nd/4.0/deed.en_US)
|
||||
|
||||
Biomes O' Plenty is licensed under a [Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License](http://creativecommons.org/licenses/by-nc-nd/4.0/deed.en_US).
|
||||
|
||||
-----------------
|
||||
|
||||
We've partnered with **CreeperHost**, and will be launching an **official Glitchfiend server** soon, with all of our mods installed. It won't be happening until they're updated to 1.9, but feel free to use this **promo code** when ordering a server of your own!
|
||||
|
||||
<p align="center"><img src="http://i.imgur.com/rjmyjrV.png"></p>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
minecraft_version=1.8.9
|
||||
forge_version=11.15.1.1726
|
||||
forge_version=11.15.1.1755
|
||||
mod_version=3.0.0
|
||||
mappings_version=snapshot_nodoc_20160104
|
|
@ -89,6 +89,7 @@ public class BOPBiomes
|
|||
public static Optional<BiomeGenBase> volcanic_island = Optional.absent();
|
||||
public static Optional<BiomeGenBase> flower_island = Optional.absent();
|
||||
public static Optional<BiomeGenBase> gravel_beach = Optional.absent();
|
||||
public static Optional<BiomeGenBase> mangrove = Optional.absent();
|
||||
|
||||
//Biome extensions
|
||||
public static IExtendedBiome end_extension;
|
||||
|
|
|
@ -0,0 +1,125 @@
|
|||
/*******************************************************************************
|
||||
* Copyright 2015-2016, the Biomes O' Plenty Team
|
||||
*
|
||||
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
|
||||
*
|
||||
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
|
||||
******************************************************************************/
|
||||
|
||||
package biomesoplenty.common.biome.overworld;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.chunk.ChunkPrimer;
|
||||
import biomesoplenty.api.biome.BOPBiome;
|
||||
import biomesoplenty.api.biome.generation.GeneratorStage;
|
||||
import biomesoplenty.api.biome.generation.GeneratorWeighted;
|
||||
import biomesoplenty.api.block.BOPBlocks;
|
||||
import biomesoplenty.common.block.BlockBOPSand;
|
||||
import biomesoplenty.common.enums.BOPGems;
|
||||
import biomesoplenty.common.enums.BOPTrees;
|
||||
import biomesoplenty.common.enums.BOPWoods;
|
||||
import biomesoplenty.common.util.block.BlockQuery;
|
||||
import biomesoplenty.common.util.block.BlockQuery.IBlockPosQuery;
|
||||
import biomesoplenty.common.util.config.BOPConfig.IConfigObj;
|
||||
import biomesoplenty.common.world.BOPWorldSettings;
|
||||
import biomesoplenty.common.world.feature.GeneratorLakes;
|
||||
import biomesoplenty.common.world.feature.GeneratorOreSingle;
|
||||
import biomesoplenty.common.world.feature.tree.GeneratorMangroveTree;
|
||||
|
||||
public class BiomeGenMangrove extends BOPBiome
|
||||
{
|
||||
public IBlockState usualTopBlock;
|
||||
public IBlockState alternateTopBlock;
|
||||
|
||||
public BiomeGenMangrove()
|
||||
{
|
||||
this.setColor(7251289);
|
||||
this.setTemperatureRainfall(0.8F, 0.3F);
|
||||
this.waterColorMultiplier = 0xCDFF51;
|
||||
|
||||
// terrain
|
||||
this.terrainSettings.avgHeight(62).heightVariation(2, 4).octaves(0, 1, 2, 2, 1, 0);
|
||||
|
||||
this.seaFloorBlock = BOPBlocks.mud.getDefaultState();
|
||||
|
||||
this.topBlock = BOPBlocks.mud.getDefaultState();
|
||||
this.fillerBlock = BOPBlocks.mud.getDefaultState();
|
||||
this.usualTopBlock = this.topBlock;
|
||||
this.alternateTopBlock = Blocks.sand.getDefaultState();
|
||||
|
||||
this.canSpawnInBiome = false;
|
||||
this.canGenerateVillages = false;
|
||||
this.canGenerateRivers = false;
|
||||
|
||||
this.spawnableCreatureList.clear();
|
||||
|
||||
this.beachBiomeId = -1;
|
||||
|
||||
clearWeights();
|
||||
|
||||
// quicksand
|
||||
this.addGenerator("quicksand", GeneratorStage.SAND, (new GeneratorLakes.Builder()).amountPerChunk(0.2F).waterLakeForBiome(this).liquid(BOPBlocks.sand.getDefaultState().withProperty(BlockBOPSand.VARIANT, BlockBOPSand.SandType.QUICKSAND)).frozenLiquid((IBlockState)null).create());
|
||||
|
||||
// trees & logs
|
||||
IBlockPosQuery emptySandMud = BlockQuery.buildAnd().states(this.usualTopBlock).create();
|
||||
GeneratorWeighted treeGenerator = new GeneratorWeighted(7);
|
||||
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
|
||||
treeGenerator.add("mangrove", 1, (new GeneratorMangroveTree.Builder()).placeOn(emptySandMud).log(BOPWoods.MANGROVE).leaves(BOPTrees.MANGROVE).create());
|
||||
|
||||
// gem
|
||||
this.addGenerator("sapphire", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.SAPPHIRE).create());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(IConfigObj conf)
|
||||
{
|
||||
super.configure(conf);
|
||||
|
||||
this.usualTopBlock = this.topBlock;
|
||||
this.alternateTopBlock = conf.getBlockState("alternateTopBlock", this.alternateTopBlock);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void genTerrainBlocks(World world, Random rand, ChunkPrimer primer, int x, int z, double noise)
|
||||
{
|
||||
double d0 = GRASS_COLOR_NOISE.func_151601_a((double)x * 0.25D, (double)z * 0.25D);
|
||||
|
||||
if (d0 > 0.0D)
|
||||
{
|
||||
int i = x & 15;
|
||||
int j = z & 15;
|
||||
|
||||
for (int k = 255; k >= 0; --k)
|
||||
{
|
||||
if (primer.getBlockState(j, k, i).getBlock().getMaterial() != Material.air)
|
||||
{
|
||||
if (k == 62 && primer.getBlockState(j, k, i).getBlock() != Blocks.water)
|
||||
{
|
||||
primer.setBlockState(j, k, i, Blocks.water.getDefaultState());
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.topBlock = (noise + rand.nextDouble() * 1.0D > 1.8D) ? this.alternateTopBlock : this.usualTopBlock;
|
||||
|
||||
this.generateBiomeTerrain(world, rand, primer, x, z, noise);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applySettings(BOPWorldSettings settings)
|
||||
{
|
||||
if (!settings.generateBopGems) {this.removeGenerator("sapphire");}
|
||||
|
||||
if (!settings.generateBopFoliage) {this.removeGenerator("bushes"); this.removeGenerator("koru"); this.removeGenerator("shrubs"); this.removeGenerator("leaf_piles"); this.removeGenerator("dead_leaf_piles"); this.removeGenerator("clover_patches"); this.removeGenerator("sprouts");}
|
||||
|
||||
if (!settings.generateBopPlants) {this.removeGenerator("cattail"); this.removeGenerator("double_cattail"); this.removeGenerator("river_cane"); this.removeGenerator("tiny_cacti"); this.removeGenerator("roots"); this.removeGenerator("rafflesia"); this.removeGenerator("desert_sprouts");}
|
||||
}
|
||||
}
|
|
@ -160,7 +160,7 @@ public class BlockBOPGrass extends BlockGrass implements IBOPBlock, ISustainsPla
|
|||
@Override
|
||||
public boolean canSustainPlant(IBlockAccess world, BlockPos pos, EnumFacing direction, net.minecraftforge.common.IPlantable plantable)
|
||||
{
|
||||
return this.canSustainPlantType(world, pos, plantable.getPlantType(world, pos.offset(direction)));
|
||||
return this.canSustainPlantType(world, pos, plantable.getPlantType(world, pos));
|
||||
}
|
||||
|
||||
|
||||
|
@ -541,4 +541,4 @@ public class BlockBOPGrass extends BlockGrass implements IBOPBlock, ISustainsPla
|
|||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,8 @@ package biomesoplenty.common.block;
|
|||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import net.minecraft.block.BlockLeaves;
|
||||
import net.minecraft.block.BlockPlanks;
|
||||
import net.minecraft.block.properties.IProperty;
|
||||
|
@ -237,6 +239,20 @@ public class BlockBOPLeaves extends BlockLeaves implements IBOPBlock
|
|||
return treeType.hasSapling() ? BlockBOPSapling.paging.getVariantItem(treeType).getItemDamage() : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.List<ItemStack> getDrops(IBlockAccess world, BlockPos pos, IBlockState state, int fortune)
|
||||
{
|
||||
BOPTrees treeType = ((BOPTrees) state.getValue(this.variantProperty));
|
||||
|
||||
if (treeType.hasSapling())
|
||||
{
|
||||
return super.getDrops(world, pos, state, fortune);
|
||||
}
|
||||
|
||||
//Tree types without saplings shouldn't drop apples either
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
|
||||
// TODO: different fruits for different trees?
|
||||
@Override
|
||||
protected void dropApple(World worldIn, BlockPos pos, IBlockState state, int chance)
|
||||
|
|
|
@ -22,6 +22,8 @@ import biomesoplenty.common.world.feature.tree.GeneratorBayouTree;
|
|||
import biomesoplenty.common.world.feature.tree.GeneratorBigTree;
|
||||
import biomesoplenty.common.world.feature.tree.GeneratorBulbTree;
|
||||
import biomesoplenty.common.world.feature.tree.GeneratorMahoganyTree;
|
||||
import biomesoplenty.common.world.feature.tree.GeneratorMangroveTree;
|
||||
import biomesoplenty.common.world.feature.tree.GeneratorPalmTree;
|
||||
import biomesoplenty.common.world.feature.tree.GeneratorPineTree;
|
||||
import biomesoplenty.common.world.feature.tree.GeneratorRedwoodTree;
|
||||
import biomesoplenty.common.world.feature.tree.GeneratorTaigaTree;
|
||||
|
@ -192,10 +194,10 @@ public class BlockBOPSapling extends BlockBOPDecoration implements IGrowable {
|
|||
return new GeneratorBasicTree.Builder().minHeight(4).maxHeight(7).log(BOPWoods.JACARANDA).leaves(BOPTrees.JACARANDA).create();
|
||||
case SACRED_OAK:
|
||||
return new GeneratorBigTree.Builder().log(BOPWoods.SACRED_OAK).leaves(BOPTrees.SACRED_OAK).minHeight(35).maxHeight(45).trunkWidth(2).foliageDensity(1.25D).create();
|
||||
case MANGROVE: //Not implemented
|
||||
return new WorldGenTrees(true);
|
||||
case PALM: //Not implemented
|
||||
return new WorldGenTrees(true);
|
||||
case MANGROVE:
|
||||
return new GeneratorMangroveTree.Builder().log(BOPWoods.MANGROVE).leaves(BOPTrees.MANGROVE).create();
|
||||
case PALM:
|
||||
return new GeneratorPalmTree.Builder().log(BOPWoods.PALM).leaves(BlockBOPLeaves.paging.getVariantState(BOPTrees.PALM).withProperty(BlockOldLeaf.CHECK_DECAY, Boolean.valueOf(false))).create();
|
||||
case REDWOOD:
|
||||
return new GeneratorRedwoodTree.Builder().create();
|
||||
case WILLOW:
|
||||
|
|
|
@ -179,13 +179,18 @@ public class AchievementEventHandler
|
|||
{
|
||||
Item item = stack.getItem();
|
||||
Block block = Block.getBlockFromItem(item);
|
||||
IBlockState state = block != null ? block.getStateFromMeta(stack.getItemDamage()) : null;
|
||||
|
||||
//Yggdrasil
|
||||
if (state == BlockBOPSapling.paging.getVariantState(BOPTrees.SACRED_OAK))
|
||||
|
||||
try
|
||||
{
|
||||
event.player.triggerAchievement(BOPAchievements.grow_sacred_oak);
|
||||
IBlockState state = block != null ? block.getStateFromMeta(item.getMetadata(stack.getItemDamage())) : null;
|
||||
|
||||
//Yggdrasil
|
||||
if (state == BlockBOPSapling.paging.getVariantState(BOPTrees.SACRED_OAK))
|
||||
{
|
||||
event.player.triggerAchievement(BOPAchievements.grow_sacred_oak);
|
||||
}
|
||||
}
|
||||
catch(Exception e) {} //Fail quietly if there's a problem matching metadata to a block state
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ import static biomesoplenty.api.biome.BOPBiomes.land_of_lakes;
|
|||
import static biomesoplenty.api.biome.BOPBiomes.lavender_fields;
|
||||
import static biomesoplenty.api.biome.BOPBiomes.lush_desert;
|
||||
import static biomesoplenty.api.biome.BOPBiomes.lush_swamp;
|
||||
import static biomesoplenty.api.biome.BOPBiomes.mangrove;
|
||||
import static biomesoplenty.api.biome.BOPBiomes.maple_woods;
|
||||
import static biomesoplenty.api.biome.BOPBiomes.marsh;
|
||||
import static biomesoplenty.api.biome.BOPBiomes.meadow;
|
||||
|
@ -148,6 +149,7 @@ import biomesoplenty.common.biome.overworld.BiomeGenLandOfLakes;
|
|||
import biomesoplenty.common.biome.overworld.BiomeGenLavenderFields;
|
||||
import biomesoplenty.common.biome.overworld.BiomeGenLushDesert;
|
||||
import biomesoplenty.common.biome.overworld.BiomeGenLushSwamp;
|
||||
import biomesoplenty.common.biome.overworld.BiomeGenMangrove;
|
||||
import biomesoplenty.common.biome.overworld.BiomeGenMapleWoods;
|
||||
import biomesoplenty.common.biome.overworld.BiomeGenMarsh;
|
||||
import biomesoplenty.common.biome.overworld.BiomeGenMeadow;
|
||||
|
@ -430,6 +432,7 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry
|
|||
|
||||
// island biomes
|
||||
|
||||
mangrove = registerBOPBiome(new BiomeGenMangrove(), "Mangrove");
|
||||
origin_island = registerBOPBiome(new BiomeGenOriginIsland(), "Origin Island");
|
||||
tropical_island = registerBOPBiome(new BiomeGenTropicalIsland(), "Tropical Island");
|
||||
volcanic_island = registerBOPBiome(new BiomeGenVolcanicIsland(), "Volcanic Island");
|
||||
|
@ -439,6 +442,7 @@ public class ModBiomes implements BOPBiomes.IBiomeRegistry
|
|||
addIslandBiome(tropical_island, 3);
|
||||
addIslandBiome(volcanic_island, 5);
|
||||
addIslandBiome(flower_island, 7);
|
||||
addIslandBiome(mangrove, 10);
|
||||
}
|
||||
|
||||
public static void initExtendedBiomes()
|
||||
|
|
|
@ -27,9 +27,11 @@ import net.minecraft.item.ItemBlock;
|
|||
import net.minecraft.item.ItemBucket;
|
||||
import net.minecraft.item.ItemDoor;
|
||||
import net.minecraft.item.ItemSlab;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.common.EnumPlantType;
|
||||
import net.minecraftforge.fluids.BlockFluidBase;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.FluidContainerRegistry;
|
||||
import net.minecraftforge.fluids.FluidRegistry;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import biomesoplenty.api.block.IBOPBlock;
|
||||
|
@ -266,6 +268,10 @@ public class ModBlocks
|
|||
poison_bucket = ModItems.registerItem((new ItemBucket(poison)).setContainerItem(Items.bucket), "poison_bucket");
|
||||
hot_spring_water_bucket = ModItems.registerItem((new ItemBucket(hot_spring_water)).setContainerItem(Items.bucket), "hot_spring_water_bucket");
|
||||
|
||||
FluidContainerRegistry.registerFluidContainer(honey_fluid, new ItemStack(honey_bucket));
|
||||
FluidContainerRegistry.registerFluidContainer(blood_fluid, new ItemStack(blood_bucket));
|
||||
FluidContainerRegistry.registerFluidContainer(poison_fluid, new ItemStack(poison_bucket));
|
||||
FluidContainerRegistry.registerFluidContainer(hot_spring_water_fluid, new ItemStack(hot_spring_water_bucket));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ public class ModGenerators
|
|||
registerGenerator("bulb_tree", GeneratorBulbTree.class, new GeneratorBulbTree.Builder());
|
||||
registerGenerator("mega_jungle_tree", GeneratorMegaJungleTree.class, new GeneratorMegaJungleTree.Builder());
|
||||
registerGenerator("bayou_tree", GeneratorBayouTree.class, new GeneratorBayouTree.Builder());
|
||||
registerGenerator("mangrove_tree", GeneratorMangroveTree.class, new GeneratorMangroveTree.Builder());
|
||||
registerGenerator("taiga_tree", GeneratorTaigaTree.class, new GeneratorTaigaTree.Builder());
|
||||
registerGenerator("profile_tree", GeneratorProfileTree.class, new GeneratorProfileTree.Builder());
|
||||
registerGenerator("flora", GeneratorFlora.class, new GeneratorFlora.Builder());
|
||||
|
@ -47,5 +48,6 @@ public class ModGenerators
|
|||
registerGenerator("spike", GeneratorSpike.class, new GeneratorSpike.Builder());
|
||||
registerGenerator("redwood_tree", GeneratorRedwoodTree.class, new GeneratorRedwoodTree.Builder());
|
||||
registerGenerator("mahogany_tree", GeneratorMahoganyTree.class, new GeneratorMahoganyTree.Builder());
|
||||
registerGenerator("palm_tree", GeneratorPalmTree.class, new GeneratorPalmTree.Builder());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,14 @@ import java.util.Random;
|
|||
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import biomesoplenty.api.block.BlockQueries;
|
||||
import biomesoplenty.common.util.biome.GeneratorUtils;
|
||||
import biomesoplenty.common.util.block.BlockQuery.BlockQueryMaterial;
|
||||
import biomesoplenty.common.util.block.BlockQuery.IBlockPosQuery;
|
||||
import biomesoplenty.common.util.config.BOPConfig.IConfigObj;
|
||||
import net.minecraft.block.BlockLeaves;
|
||||
import net.minecraft.block.BlockLog;
|
||||
import net.minecraft.block.BlockSapling;
|
||||
import net.minecraft.block.material.Material;
|
||||
|
@ -22,13 +30,6 @@ import net.minecraft.util.BlockPos;
|
|||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
import biomesoplenty.api.block.BlockQueries;
|
||||
import biomesoplenty.common.util.biome.GeneratorUtils;
|
||||
import biomesoplenty.common.util.block.BlockQuery;
|
||||
import biomesoplenty.common.util.block.BlockQuery.BlockQueryMaterial;
|
||||
import biomesoplenty.common.util.block.BlockQuery.IBlockPosQuery;
|
||||
import biomesoplenty.common.util.config.BOPConfig.IConfigObj;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
/*This class is heavily based on https://gist.github.com/grum/62cfdec0537e8db24eb3#file-bigtreefeature-java
|
||||
additional information has been added from http://pastebin.com/XBLdGqXQ. This class has been cross-checked
|
||||
|
@ -246,18 +247,10 @@ public class GeneratorBigTree extends GeneratorTreeBase
|
|||
//The following has been replaced as recommended by
|
||||
//http://www.reddit.com/r/Minecraft/comments/1m97cw/while_you_are_all_crying_over_the_name_change_of/ccfgc3k
|
||||
//The change should fix the decaying leaves
|
||||
/*else if (y == 0 || y == foliageHeight - 1)
|
||||
else if (y == 0 || y == foliageHeight - 1)
|
||||
{
|
||||
return 2f;
|
||||
}*/
|
||||
else if (y == 0 || y == foliageHeight - 2)
|
||||
{
|
||||
return 2f;
|
||||
}
|
||||
else if (y == foliageHeight - 1)
|
||||
{
|
||||
return 1.5f;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return 3f;
|
||||
|
@ -286,11 +279,11 @@ public class GeneratorBigTree extends GeneratorTreeBase
|
|||
clusterLeaves = this.leaves;
|
||||
}
|
||||
|
||||
crossection(blockPos.up(y), foliageShape(y), clusterLeaves);
|
||||
crossection(blockPos.up(y), foliageShape(y), clusterLeaves.withProperty(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false)));
|
||||
}
|
||||
else
|
||||
{
|
||||
crossection(blockPos.up(y), foliageShape(y), this.leaves);
|
||||
crossection(blockPos.up(y), foliageShape(y), this.leaves.withProperty(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -588,4 +581,4 @@ public class GeneratorBigTree extends GeneratorTreeBase
|
|||
this.leaves = conf.getBlockState("leavesState", this.leaves);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,294 @@
|
|||
/*******************************************************************************
|
||||
* Copyright 2015-2016, the Biomes O' Plenty Team
|
||||
*
|
||||
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
|
||||
*
|
||||
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
|
||||
******************************************************************************/
|
||||
|
||||
package biomesoplenty.common.world.feature.tree;
|
||||
import java.util.Random;
|
||||
|
||||
import biomesoplenty.api.block.BlockQueries;
|
||||
import biomesoplenty.common.util.biome.GeneratorUtils;
|
||||
import biomesoplenty.common.util.block.BlockQuery;
|
||||
import biomesoplenty.common.util.block.BlockQuery.BlockQueryBlock;
|
||||
import biomesoplenty.common.util.block.BlockQuery.BlockQueryParseException;
|
||||
import biomesoplenty.common.util.block.BlockQuery.BlockQueryState;
|
||||
import biomesoplenty.common.util.block.BlockQuery.IBlockPosQuery;
|
||||
import biomesoplenty.common.util.config.BOPConfig.IConfigObj;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class GeneratorMangroveTree extends GeneratorTreeBase
|
||||
{
|
||||
|
||||
public static class Builder extends GeneratorTreeBase.InnerBuilder<Builder, GeneratorMangroveTree> implements IGeneratorBuilder<GeneratorMangroveTree>
|
||||
{
|
||||
protected int minLeavesRadius;
|
||||
protected int leavesGradient;
|
||||
protected int vineAttempts;
|
||||
protected int maxVineLength;
|
||||
protected IBlockPosQuery rootsReplace;
|
||||
|
||||
public Builder minLeavesRadius(int a) {this.minLeavesRadius = a; return this.self();}
|
||||
public Builder leavesGradient(int a) {this.leavesGradient = a; return this.self();}
|
||||
public Builder vineAttempts(int a) {this.vineAttempts = a; return this.self();}
|
||||
public Builder maxVineLength(int a) {this.maxVineLength = a; return this.self();}
|
||||
public Builder rootsReplace(IBlockPosQuery a) {this.replace = a; return this.self();}
|
||||
public Builder rootsReplace(String a) throws BlockQueryParseException {this.replace = BlockQuery.parseQueryString(a); return this.self();}
|
||||
public Builder rootsReplace(Block a) {this.replace = new BlockQueryBlock(a); return this.self();}
|
||||
public Builder rootsReplace(IBlockState a) {this.replace = new BlockQueryState(a); return this.self();}
|
||||
|
||||
public Builder()
|
||||
{
|
||||
// defaults
|
||||
this.amountPerChunk = 1.0F;
|
||||
this.placeOn = BlockQueries.fertile;
|
||||
this.replace = BlockQueries.airOrLeaves;
|
||||
this.rootsReplace = BlockQueries.rootsCanDigThrough;
|
||||
this.log = Blocks.log.getDefaultState();
|
||||
this.leaves = Blocks.leaves.getDefaultState();
|
||||
this.vine = null;
|
||||
this.hanging = null;
|
||||
this.altLeaves = null;
|
||||
this.minHeight = 8;
|
||||
this.maxHeight = 10;
|
||||
this.minLeavesRadius = 1;
|
||||
this.leavesGradient = 1;
|
||||
this.vineAttempts = 20;
|
||||
this.maxVineLength = 20;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GeneratorMangroveTree create()
|
||||
{
|
||||
return new GeneratorMangroveTree(this.amountPerChunk, this.placeOn, this.replace, this.log, this.leaves, this.vine, this.hanging, this.altLeaves, this.minHeight, this.maxHeight, this.minLeavesRadius, this.leavesGradient, this.vineAttempts, this.maxVineLength, this.rootsReplace);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private int minLeavesRadius;
|
||||
private int leavesGradient;
|
||||
private int vineAttempts;
|
||||
private int maxVineLength;
|
||||
private IBlockPosQuery rootsReplace;
|
||||
|
||||
public GeneratorMangroveTree(float amountPerChunk, IBlockPosQuery placeOn, IBlockPosQuery replace, IBlockState log, IBlockState leaves, IBlockState vine, IBlockState hanging, IBlockState altLeaves, int minHeight, int maxHeight, int minLeavesRadius, int leavesGradient, int vineAttempts, int maxVineLength, IBlockPosQuery rootsReplace)
|
||||
{
|
||||
super(amountPerChunk, placeOn, replace, log, leaves, vine, hanging, altLeaves, minHeight, maxHeight);
|
||||
this.minLeavesRadius = minLeavesRadius;
|
||||
this.leavesGradient = leavesGradient;
|
||||
this.vineAttempts = vineAttempts;
|
||||
this.maxVineLength = maxVineLength;
|
||||
this.rootsReplace = rootsReplace;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockPos getScatterY(World world, Random random, int x, int z)
|
||||
{
|
||||
// always at ground (sometimes underwater)
|
||||
return GeneratorUtils.ScatterYMethod.AT_GROUND.getBlockPos(world, random, x, z);
|
||||
}
|
||||
|
||||
public boolean setRoot(World world, BlockPos pos)
|
||||
{
|
||||
if (this.rootsReplace.matches(world, pos))
|
||||
{
|
||||
world.setBlockState(pos, this.log, 2);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean checkRootViable(World world, BlockPos pos, int rootHeight, EnumFacing direction)
|
||||
{
|
||||
// a viable root has an path which roots can dig through from trunk to some fertile ground
|
||||
pos = pos.offset(direction).up(rootHeight - 1);
|
||||
for (int i = 0; i < rootHeight; i++)
|
||||
{
|
||||
if (!this.rootsReplace.matches(world, pos)) {return false;}
|
||||
pos = pos.down();
|
||||
if (this.placeOn.matches(world, pos)) {return true;}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean checkSpace(World world, BlockPos pos, int rootHeight, int middleHeight, int height)
|
||||
{
|
||||
|
||||
// we want at least 2 of the roots to be viable
|
||||
int rootsOk = 0;
|
||||
for (EnumFacing direction : EnumFacing.Plane.HORIZONTAL)
|
||||
{
|
||||
if (this.checkRootViable(world, pos, rootHeight, direction)) {rootsOk++;}
|
||||
}
|
||||
if (rootsOk < 2) {return false;}
|
||||
|
||||
// check there's some space for the trunk and leaves too
|
||||
for (int y = rootHeight; y <= height; y++)
|
||||
{
|
||||
// require 1x1 for the trunk, 3x3 for the leaves
|
||||
int radius = (y <= (rootHeight + middleHeight) ? 0 : 1);
|
||||
for (int x = -radius; x <= radius; x++)
|
||||
{
|
||||
for (int z = -radius; z <= radius; z++)
|
||||
{
|
||||
BlockPos pos1 = pos.add(x, y, z);
|
||||
// note, there may be a sapling on the first layer - make sure this.replace matches it!
|
||||
if (pos1.getY() >= 255 || !this.replace.matches(world, pos1))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void generateTop(World world, Random random, BlockPos pos, int topHeight)
|
||||
{
|
||||
|
||||
for (int y = 0; y < topHeight; y++)
|
||||
{
|
||||
int radius = Math.min(3, this.minLeavesRadius + (topHeight - y) / this.leavesGradient);
|
||||
|
||||
for (int x = -radius; x <= radius; ++x)
|
||||
{
|
||||
for (int z = -radius; z <= radius; ++z)
|
||||
{
|
||||
// too far away and the leaves will decay
|
||||
int dist = Math.abs(x) + Math.abs(z);
|
||||
if (dist < 4 || (dist == 4 && random.nextInt(2) == 0))
|
||||
{
|
||||
this.setLeaves(world, pos.add(x, y, z));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (y < topHeight - 1)
|
||||
{
|
||||
// add the trunk in the middle
|
||||
this.setLog(world, pos.add(0, y, 0));
|
||||
} else {
|
||||
// add leaves on top for certain
|
||||
this.setLeaves(world, pos.add(0, y, 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void generateRoots(World world, Random random, BlockPos pos, int rootHeight)
|
||||
{
|
||||
this.setRoot(world, pos.north().add(0, rootHeight, 0));
|
||||
this.setRoot(world, pos.east().add(0, rootHeight, 0));
|
||||
this.setRoot(world, pos.south().add(0, rootHeight, 0));
|
||||
this.setRoot(world, pos.west().add(0, rootHeight, 0));
|
||||
|
||||
for (int i = 0; i < rootHeight; i++)
|
||||
{
|
||||
this.setRoot(world, pos.north().north());
|
||||
this.setRoot(world, pos.east().east());
|
||||
this.setRoot(world, pos.south().south());
|
||||
this.setRoot(world, pos.west().west());
|
||||
pos = pos.up();
|
||||
}
|
||||
//this.setRoot(world, pos.down());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generate(World world, Random random, BlockPos startPos)
|
||||
{
|
||||
|
||||
if (!this.placeOn.matches(world, startPos.down()))
|
||||
{
|
||||
// Abandon if we can't place the tree on this block
|
||||
return false;
|
||||
}
|
||||
|
||||
// Choose heights
|
||||
int height = GeneratorUtils.nextIntBetween(random, this.minHeight, this.maxHeight);
|
||||
|
||||
int topHeight = Math.min(6, GeneratorUtils.nextIntBetween(random, height / 5, height / 3));
|
||||
int rootHeight = Math.min(5, GeneratorUtils.nextIntBetween(random, height / 4, height / 2));
|
||||
int middleHeight = height - topHeight - rootHeight;
|
||||
if (middleHeight < 1) {return false;}
|
||||
|
||||
// Start in the ground block
|
||||
BlockPos pos = startPos.down();
|
||||
|
||||
if (!this.checkSpace(world, pos, rootHeight, middleHeight, height))
|
||||
{
|
||||
// Abandon if there isn't enough room
|
||||
return false;
|
||||
}
|
||||
|
||||
// Generate roots
|
||||
this.generateRoots(world, random, pos, rootHeight);
|
||||
pos = pos.up(rootHeight);
|
||||
|
||||
// Generate middle of tree (trunk only)
|
||||
for(int i = 0; i < middleHeight; i++)
|
||||
{
|
||||
this.setLog(world, pos);
|
||||
pos = pos.up();
|
||||
}
|
||||
|
||||
// Generate the top of the tree
|
||||
this.generateTop(world, random, pos, topHeight);
|
||||
|
||||
// Add vines
|
||||
if (this.vine != null)
|
||||
{
|
||||
int maxLeavesRadius = this.minLeavesRadius + topHeight / this.leavesGradient;
|
||||
this.addVines(world, random, startPos, height, maxLeavesRadius, this.vineAttempts);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
protected void addVines(World world, Random rand, BlockPos startPos, int height, int leavesRadius, int generationAttempts)
|
||||
{
|
||||
for (int i = 0; i < generationAttempts; i++)
|
||||
{
|
||||
// choose a random direction
|
||||
EnumFacing direction = EnumFacing.Plane.HORIZONTAL.random(rand);
|
||||
EnumFacing back = direction.getOpposite();
|
||||
EnumFacing sideways = direction.rotateY();
|
||||
|
||||
// choose a random starting point somewhere just outside the boundary of the tree
|
||||
BlockPos pos = startPos.up(GeneratorUtils.nextIntBetween(rand, 2, height)).offset(direction, leavesRadius + 1).offset(sideways, GeneratorUtils.nextIntBetween(rand, -leavesRadius, leavesRadius));
|
||||
|
||||
// move back towards the center until we meet a leaf or log, then stick a vine on it
|
||||
IBlockState state;
|
||||
for (int l = 0; l < leavesRadius; l++)
|
||||
{
|
||||
state = world.getBlockState(pos.offset(back, 1 + l));
|
||||
if (state == this.leaves || state == this.log) {
|
||||
this.setVine(world, rand, pos.offset(back, l), back, this.maxVineLength);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void configure(IConfigObj conf)
|
||||
{
|
||||
this.amountPerChunk = conf.getFloat("amountPerChunk", this.amountPerChunk);
|
||||
this.minHeight = conf.getInt("minHeight", this.minHeight);
|
||||
this.minLeavesRadius = conf.getInt("minLeavesRadius", this.minLeavesRadius);
|
||||
this.leavesGradient = conf.getInt("leavesGradient", this.leavesGradient);
|
||||
this.vineAttempts = conf.getInt("vineAttempts", this.vineAttempts);
|
||||
this.maxVineLength = conf.getInt("maxVineLength", this.maxVineLength);
|
||||
this.placeOn = conf.getBlockPosQuery("placeOn", this.placeOn);
|
||||
this.replace = conf.getBlockPosQuery("replace", this.replace);
|
||||
this.rootsReplace = conf.getBlockPosQuery("rootsReplace", this.rootsReplace);
|
||||
this.log = conf.getBlockState("logState", this.log);
|
||||
this.leaves = conf.getBlockState("leavesState", this.leaves);
|
||||
this.vine = conf.getBlockState("vinesState", this.vine);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,180 @@
|
|||
/*******************************************************************************
|
||||
* Copyright 2015-2016, the Biomes O' Plenty Team
|
||||
*
|
||||
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
|
||||
*
|
||||
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
|
||||
******************************************************************************/
|
||||
|
||||
package biomesoplenty.common.world.feature.tree;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import biomesoplenty.api.block.BlockQueries;
|
||||
import biomesoplenty.common.util.biome.GeneratorUtils;
|
||||
import biomesoplenty.common.util.block.BlockQuery.IBlockPosQuery;
|
||||
import biomesoplenty.common.util.config.BOPConfig.IConfigObj;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class GeneratorPalmTree extends GeneratorTreeBase
|
||||
{
|
||||
|
||||
public static class Builder extends GeneratorTreeBase.InnerBuilder<Builder, GeneratorPalmTree> implements IGeneratorBuilder<GeneratorPalmTree>
|
||||
{
|
||||
public Builder()
|
||||
{
|
||||
this.amountPerChunk = 1.0F;
|
||||
this.minHeight = 10;
|
||||
this.maxHeight = 14;
|
||||
this.placeOn = BlockQueries.fertile;
|
||||
this.replace = BlockQueries.replaceable;
|
||||
this.log = Blocks.log.getDefaultState();
|
||||
this.leaves = Blocks.leaves.getDefaultState();
|
||||
this.vine = null;
|
||||
this.hanging = null;
|
||||
this.altLeaves = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GeneratorPalmTree create() {
|
||||
return new GeneratorPalmTree(this.amountPerChunk, this.placeOn, this.replace, this.log, this.leaves, this.vine, this.hanging, this.altLeaves, this.minHeight, this.maxHeight);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public GeneratorPalmTree(float amountPerChunk, IBlockPosQuery placeOn, IBlockPosQuery replace, IBlockState log, IBlockState leaves, IBlockState vine, IBlockState hanging, IBlockState altLeaves, int minHeight, int maxHeight)
|
||||
{
|
||||
super(amountPerChunk, placeOn, replace, log, leaves, vine, hanging, altLeaves, minHeight, maxHeight);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean generate(World world, Random random, BlockPos pos)
|
||||
{
|
||||
// Move down until we reach the ground
|
||||
while (pos.getY() > 1 && world.isAirBlock(pos) || world.getBlockState(pos).getBlock().isLeaves(world, pos)) {pos = pos.down();}
|
||||
|
||||
if (!this.placeOn.matches(world, pos))
|
||||
{
|
||||
// Abandon if we can't place the tree on this block
|
||||
return false;
|
||||
}
|
||||
|
||||
// Generation settings
|
||||
int height = GeneratorUtils.nextIntBetween(random, this.minHeight, this.maxHeight);
|
||||
int leavesRadius = 2;
|
||||
int heightMinusTop = height - leavesRadius;
|
||||
boolean slant = true;
|
||||
EnumFacing direction = EnumFacing.random(random); //The direction the palm tree curves towards
|
||||
if (direction == EnumFacing.DOWN || direction == EnumFacing.UP)
|
||||
{
|
||||
slant = false;
|
||||
}
|
||||
double baseSlant = random.nextInt(35) / 100D;
|
||||
double slantMultiplier = 1.3D;
|
||||
|
||||
if (height < 8) {return false;} //Prevent trees from being too small
|
||||
|
||||
// Move up to space above ground
|
||||
pos = pos.up();
|
||||
|
||||
if (!this.checkSpace(world, pos, height, 1))
|
||||
{
|
||||
// Abandon if there isn't enough room
|
||||
return false;
|
||||
}
|
||||
|
||||
double slantOffset = baseSlant;
|
||||
|
||||
// Generate trunk of tree (trunk only)
|
||||
for(int step = 0; step <= heightMinusTop; step++)
|
||||
{
|
||||
BlockPos offsetPos = pos.up(step);
|
||||
|
||||
if (slant == true)
|
||||
{
|
||||
offsetPos = pos.up(step).offset(direction, (int)Math.floor(slantOffset));
|
||||
}
|
||||
|
||||
if (step == heightMinusTop)
|
||||
{
|
||||
// Generate top of tree
|
||||
generateLeavesTop(world, offsetPos, leavesRadius);
|
||||
break;
|
||||
}
|
||||
|
||||
this.setLog(world, offsetPos);
|
||||
|
||||
//As the height increases, slant more drastically
|
||||
slantOffset *= slantMultiplier;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean checkSpace(World world, BlockPos pos, int height, int radius)
|
||||
{
|
||||
for (int y = 0; y <= height; y++)
|
||||
{
|
||||
for (int x = -radius; x <= radius; x++)
|
||||
{
|
||||
for (int z = -radius; z <= radius; z++)
|
||||
{
|
||||
BlockPos pos1 = pos.add(x, y, z);
|
||||
// note, there may be a sapling on the first layer - make sure this.replace matches it!
|
||||
if (pos1.getY() >= 255 || !this.replace.matches(world, pos1))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// generate the top of the tree (3 blocks)
|
||||
public void generateLeavesTop(World world, BlockPos pos, int maxRadius)
|
||||
{
|
||||
setLeaves(world, pos.add(2, -1, 0));
|
||||
setLeaves(world, pos.add(-2, -1, 0));
|
||||
setLeaves(world, pos.add(0, -1, 2));
|
||||
setLeaves(world, pos.add(0, -1, -2));
|
||||
|
||||
setLeaves(world, pos.add(1, 0, 0));
|
||||
setLeaves(world, pos.add(-1, 0, 0));
|
||||
setLeaves(world, pos.add(0, 0, 1));
|
||||
setLeaves(world, pos.add(0, 0, -1));
|
||||
setLeaves(world, pos.add(2, 0, 2));
|
||||
setLeaves(world, pos.add(-2, 0, -2));
|
||||
setLeaves(world, pos.add(2, 0, -2));
|
||||
setLeaves(world, pos.add(-2, 0, 2));
|
||||
|
||||
setLeaves(world, pos.add(1, 1, -1));
|
||||
setLeaves(world, pos.add(-1, 1, 1));
|
||||
setLeaves(world, pos.add(1, 1, 1));
|
||||
setLeaves(world, pos.add(-1, 1, -1));
|
||||
setLeaves(world, pos.add(0, 1, 0));
|
||||
|
||||
setLeaves(world, pos.add(2, 2, 0));
|
||||
setLeaves(world, pos.add(-2, 2, 0));
|
||||
setLeaves(world, pos.add(0, 2, 2));
|
||||
setLeaves(world, pos.add(0, 2, -2));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(IConfigObj conf)
|
||||
{
|
||||
this.amountPerChunk = conf.getFloat("amountPerChunk", this.amountPerChunk);
|
||||
this.minHeight = conf.getInt("minHeight", this.minHeight);
|
||||
this.maxHeight = conf.getInt("minHeight", this.maxHeight);
|
||||
this.placeOn = conf.getBlockPosQuery("placeOn", this.placeOn);
|
||||
this.replace = conf.getBlockPosQuery("replace", this.replace);
|
||||
this.log = conf.getBlockState("logState", this.log);
|
||||
this.leaves = conf.getBlockState("leavesState", this.leaves);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,24 +1,81 @@
|
|||
#Traslated by xuyu_staryG(gxy17886) From InfinityStudio
|
||||
biome_finder.searching=寻找 %s
|
||||
achievement.craft_ambrosia.desc=糖, 水, 蜂蜜, 浆果, 根茎, 海带, 脓水, 精灵之尘, 还有仙域水晶!
|
||||
achievement.craft_ambrosia=琼浆玉液
|
||||
achievement.craft_amethyst_sword.desc=获得第一把紫晶剑
|
||||
achievement.craft_amethyst_sword=剑士
|
||||
achievement.craft_dart_blower.desc=用竹竿制作吹箭筒
|
||||
achievement.craft_dart_blower=镖与武器
|
||||
achievement.craft_flax_string.desc=将亚麻制作成亚麻绳
|
||||
achievement.craft_flax_string=亚麻的乐趣
|
||||
achievement.craft_muddy_pickaxe.desc=what??? 你用泥巴捏了个镐???
|
||||
achievement.craft_muddy_pickaxe=你好Low
|
||||
achievement.craft_poison_jar.desc=从毒藤中萃取毒素
|
||||
achievement.craft_poison_jar=制毒
|
||||
achievement.craft_terrestrial_artifact.desc=将八种生物群所特有的宝石融合
|
||||
achievement.craft_terrestrial_artifact=强力融合
|
||||
achievement.eat_shroom_powder.desc=品尝了一些致幻的蘑菇粉
|
||||
achievement.eat_shroom_powder=梦幻之镜
|
||||
achievement.explore_all_biomes.desc=发现了所有生物群
|
||||
achievement.explore_all_biomes=游侠
|
||||
achievement.grow_sacred_oak.desc=种植了一颗神圣橡树树苗
|
||||
achievement.grow_sacred_oak=世界之树
|
||||
achievement.obtain_berry.desc=从浆果丛中获取到了浆果
|
||||
achievement.obtain_berry=初识浆果
|
||||
achievement.obtain_celestial_crystal.desc=在末地挖到了仙域水晶
|
||||
achievement.obtain_celestial_crystal=极端还是前卫...
|
||||
achievement.obtain_coral.desc=深水寻珊瑚
|
||||
achievement.obtain_coral=只为珊瑚!
|
||||
achievement.obtain_deathbloom.desc=获取彼岸花
|
||||
achievement.obtain_deathbloom=不死之身
|
||||
achievement.obtain_flowers.desc=发现了花朵!
|
||||
achievement.obtain_flowers=那些花儿
|
||||
achievement.obtain_honeycomb.desc=从马蜂窝中偷取蜂窝
|
||||
achievement.obtain_honeycomb=蜂窝大亨
|
||||
achievement.obtain_miners_delight.desc=在洞穴深处发现了乐矿花
|
||||
achievement.obtain_miners_delight=生命的出路
|
||||
achievement.obtain_pixie_dust.desc=杀死一只小精灵并获取其精灵之尘
|
||||
achievement.obtain_pixie_dust=闭气
|
||||
achievement.obtain_soul.desc=找回失落的灵魂
|
||||
achievement.obtain_soul=灵魂猎人
|
||||
achievement.obtain_thorn.desc=收集到带刺的荆棘!
|
||||
achievement.obtain_thorn=相当棘手
|
||||
achievement.obtain_turnip.desc=收获芜菁
|
||||
achievement.obtain_turnip=芜菁之路
|
||||
achievement.obtain_wilted_lily.desc=拯救了一只枯萎的百合
|
||||
achievement.obtain_wilted_lily=天神下凡
|
||||
achievement.use_biome_finder.desc=使用生物群雷达定位一块生物群
|
||||
achievement.use_biome_finder=搜索小队
|
||||
achievement.use_enderporter.desc=到家了,你还追呀~
|
||||
achievement.use_enderporter=原点
|
||||
|
||||
biome_finder.found=找到 %s!
|
||||
biome_finder.not_found=无法找到, 也许 %s 是距离太遥远
|
||||
biome_finder.not_found=无法找到%s ,可能距离太远了。
|
||||
biome_finder.searching=寻找 %s
|
||||
|
||||
commands.biomesoplenty.usage=/biomesoplenty <tpbiome|biomename> [args]
|
||||
commands.biomesoplenty.biomename.success=生物群系【%s】已绑定为:【%s】
|
||||
commands.biomesoplenty.biomename.usage=/biomesoplenty biomename [biomeId]
|
||||
commands.biomesoplenty.biomename.success=生物群系ID%s已绑定为: %s
|
||||
commands.biomesoplenty.tpbiome.usage=/biomesoplenty tpbiome [biomeId]
|
||||
commands.biomesoplenty.tpbiome.success=玩家%s传送到生物群系: %s,坐标(%s, %s, %s)
|
||||
commands.biomesoplenty.tpbiome.error=未找到生物群系: %s!
|
||||
commands.biomesoplenty.stats.blocks=方块: %s
|
||||
commands.biomesoplenty.stats.items=物品: %s
|
||||
commands.biomesoplenty.stats.entities=实体: %s
|
||||
commands.biomesoplenty.stats.biomes=生物群落: %s
|
||||
commands.biomesoplenty.stats.biomes=生物群落:%s
|
||||
commands.biomesoplenty.stats.blocks=方块:%s
|
||||
commands.biomesoplenty.stats.entities=实体:%s
|
||||
commands.biomesoplenty.stats.items=物品:%s
|
||||
commands.biomesoplenty.stripchunk.usage=/biomesoplenty stripchunk [radius] <include|exclude> [block] [metadata]
|
||||
commands.biomesoplenty.tpbiome.error=未找到生物群系:%s!
|
||||
commands.biomesoplenty.tpbiome.success=玩家%s传送到生物群系:%s,坐标(%s, %s, %s)
|
||||
commands.biomesoplenty.tpbiome.usage=/biomesoplenty tpbiome [biomeId]
|
||||
commands.biomesoplenty.usage=/biomesoplenty <tpbiome|biomename> [args]
|
||||
|
||||
config.category.convenienceSettings.title=便捷设定
|
||||
config.category.convenienceSettings.tooltip=需要使用剪刀来收集花瓣(物品)
|
||||
config.category.guiSettings.title=界面设定
|
||||
config.category.guiSettings.tooltip=设定“超多生物群系”为世界默认生物群。
|
||||
config.category.textureSettings.title=贴图设定
|
||||
config.category.textureSettings.tooltip=覆盖Foger自带的 bucket 贴图(我们的贴图更加好看!)
|
||||
config.category.trailSettings.title=足迹设定
|
||||
config.category.trailSettings.tooltip=修改足迹可见性
|
||||
|
||||
container.flower_basket=花篮
|
||||
|
||||
generator.BIOMESOP.info=注意:1.8版本的超多生物群系仍在开发阶段。
|
||||
generator.BIOMESOP=超多生物群系
|
||||
generator.BIOMESOP.info=注意: 1.8版本的超多生物群系仍在开发阶段.
|
||||
|
||||
itemGroup.tabBiomesOPlenty=超多生物群系
|
||||
|
||||
item.ambrosia.name=仙馔密酒
|
||||
item.amethyst_axe.name=紫晶斧
|
||||
|
@ -34,25 +91,28 @@ item.amethyst_sword.name=紫晶剑
|
|||
item.ash.name=灰烬堆
|
||||
item.berries.name=浆果
|
||||
item.biome_essence.name=生物群落精华
|
||||
item.biome_finder.name=生物雷达
|
||||
item.biome_finder.name=生物群雷达
|
||||
item.black_dye.name=黑色染料
|
||||
item.blood_bucket.name=血桶
|
||||
item.blue_dye.name=蓝色染料
|
||||
item.brown_dye.name=棕色染料
|
||||
item.cherry_door.name=樱花树门
|
||||
item.crystal_shard.name=仙域水晶碎片
|
||||
item.dark_door.name=黑暗树门
|
||||
item.dart.name=飞镖
|
||||
item.dart_blower.name=鼓风机
|
||||
item.dart.name=镖
|
||||
item.dart_blower.name=吹箭筒
|
||||
item.diamond_scythe.name=钻石镰刀
|
||||
item.dull_flower_band.name=沉闷花带
|
||||
item.ebony_door.name=乌木门
|
||||
item.enderporter.name=末地传送
|
||||
item.ethereal_door.name=天域树门
|
||||
item.eucalyptus_door.name=桉树门
|
||||
item.exotic_flower_band.name=异国花带
|
||||
item.filled_honeycomb.name=充满的蜂窝
|
||||
item.fir_door.name=杉树门
|
||||
item.flax_string.name=亚麻绳
|
||||
item.fleshchunk.name=肉块
|
||||
item.flippers.name=脚蹼
|
||||
item.flower_basket.name=花篮
|
||||
item.gem_amber.name=琥珀
|
||||
item.gem_amethyst.name=末影紫晶
|
||||
item.gem_malachite.name=孔雀石
|
||||
|
@ -61,12 +121,12 @@ item.gem_ruby.name=红宝石
|
|||
item.gem_sapphire.name=蓝宝石
|
||||
item.gem_tanzanite.name=坦桑石
|
||||
item.gem_topaz.name=黄玉
|
||||
item.ghastly_soul.name=可怕的灵魂
|
||||
item.green_dye.name=绿色染料
|
||||
item.gold_scythe.name=金镰刀
|
||||
item.green_dye.name=绿色染料
|
||||
item.hellbark_door.name=地狱皮树门
|
||||
item.honey_bucket.name=蜜桶
|
||||
item.honeycomb.name=空蜂窝
|
||||
item.hot_spring_water_bucket.name=温泉水桶
|
||||
item.ichor.name=脓水
|
||||
item.iron_scythe.name=铁镰刀
|
||||
item.jacaranda_door.name=蓝花楹门
|
||||
|
@ -78,7 +138,6 @@ item.lush_flower_band.name=繁茂的花带
|
|||
item.magic_door.name=魔法树门
|
||||
item.mahogany_door.name=桃花心木门
|
||||
item.mangrove_door.name=红树门
|
||||
item.mudball.name=泥巴球
|
||||
item.mud_axe.name=泥巴斧
|
||||
item.mud_boots.name=泥巴靴子
|
||||
item.mud_brick.name=泥砖
|
||||
|
@ -90,316 +149,341 @@ item.mud_pickaxe.name=泥巴镐
|
|||
item.mud_scythe.name=泥巴镰刀
|
||||
item.mud_shovel.name=泥巴铲
|
||||
item.mud_sword.name=泥巴剑
|
||||
item.mudball.name=泥巴球
|
||||
item.palm_door.name=棕榈树门
|
||||
item.persimmon.name=柿子
|
||||
item.peach.name=桃子
|
||||
item.pear.name=梨
|
||||
item.pinecone.name=松果
|
||||
item.persimmon.name=柿子
|
||||
item.pine_door.name=松木门
|
||||
item.pinecone.name=松果
|
||||
item.pixie_dust.name=精灵之尘
|
||||
item.plain_flower_band.name=平原花带
|
||||
item.poison_bucket.name=毒桶
|
||||
item.poisondart.name=毒镖
|
||||
item.record_corruption.name=音乐唱片
|
||||
item.record.corruption.desc=???
|
||||
item.record_wanderer.name=音乐唱片
|
||||
item.record.corruption.desc=???
|
||||
item.record.wanderer.desc=Tim Rurkowski - Wanderer
|
||||
item.record_corruption.name=音乐唱片
|
||||
item.record_wanderer.name=音乐唱片
|
||||
item.redwood_door.name=红木门
|
||||
item.ricebowl.name=一碗饭
|
||||
item.sacred_oak_door.name=神圣橡木门
|
||||
item.saladfruit.name=水果沙拉
|
||||
item.saladshroom.name=蘑菇沙拉
|
||||
item.saladveggie.name=素食沙拉
|
||||
item.shroompowder.name=蘑菇粉
|
||||
item.soul.name=灵魂
|
||||
item.spawn_egg_butterfly.name=生成 蝴蝶
|
||||
item.spawn_egg_pixie.name=生成 小精灵
|
||||
item.spawn_egg_snail.name=生成 蜗牛
|
||||
item.spawn_egg_wasp.name=生成 黄蜂
|
||||
item.stone_scythe.name=石质镰刀
|
||||
item.terrestrial_artifact.name=矿质精华
|
||||
item.turnip.name=芜菁
|
||||
item.turnip_seeds.name=芜菁种子
|
||||
item.wading_boots.name=涉水靴子
|
||||
item.umbran_door.name=暗影木门
|
||||
item.wading_boots.name=浅靴
|
||||
item.white_dye.name=白色染料
|
||||
item.wildcarrots.name=野胡萝卜
|
||||
item.willow_door.name=杨柳木门
|
||||
item.wood_scythe.name=木质镰刀
|
||||
|
||||
itemGroup.tabBiomesOPlenty=超多生物群系
|
||||
|
||||
tile.ash_block.name=灰烬块
|
||||
tile.bamboo.name=竹子
|
||||
tile.bamboo_thatching.name=竹板
|
||||
tile.biome_block.name=生物精华矿石
|
||||
tile.bone_segment.small_bone_segment.name=小块骨头
|
||||
tile.bone_segment.medium_bone_segment.name=中块骨头
|
||||
tile.bone_segment.large_bone_segment.name=大块骨头
|
||||
tile.bone_segment.medium_bone_segment.name=中块骨头
|
||||
tile.bone_segment.small_bone_segment.name=小块骨头
|
||||
tile.cherry_fence.name=樱花树栅栏
|
||||
tile.cherry_fence_gate.name=樱花树栅栏门
|
||||
tile.cherry_wood_slab.name=樱花树原木台阶
|
||||
tile.cherry_stairs.name=樱花树原木楼梯
|
||||
tile.coral.pink_coral.name=粉珊瑚
|
||||
tile.coral.orange_coral.name=橙珊瑚
|
||||
tile.coral.blue_coral.name=蓝珊瑚
|
||||
tile.coral.glowing_coral.name=夜光珊瑚
|
||||
tile.cherry_wood_slab.name=樱花树原木台阶
|
||||
tile.coral.algae.name=海藻
|
||||
tile.coral.blue_coral.name=蓝珊瑚
|
||||
tile.coral.glowing_coral.name=萤珊瑚
|
||||
tile.coral.orange_coral.name=橙珊瑚
|
||||
tile.coral.pink_coral.name=粉珊瑚
|
||||
tile.crag_rock_slab.name=峭壁岩石台阶
|
||||
tile.dark_fence.name=黑暗树栅栏
|
||||
tile.dark_fence_gate.name=黑暗树栅栏门
|
||||
tile.dark_wood_slab.name=黑暗树原木台阶
|
||||
tile.dark_stairs.name=黑暗树原木楼梯
|
||||
tile.dirt.loamy_dirt.name=肥沃泥土
|
||||
tile.dirt.sandy_dirt.name=沙质泥土
|
||||
tile.dirt.silty_dirt.name=淤泥
|
||||
tile.crystal.name=仙域水晶
|
||||
tile.dirt.coarse_loamy_dirt.name=粗糙肥沃泥土
|
||||
tile.dirt.coarse_sandy_dirt.name=粗糙沙质泥土
|
||||
tile.dirt.coarse_silty_dirt.name=粗糙淤泥
|
||||
tile.dirt.loamy_dirt.name=肥沃泥土
|
||||
tile.dirt.sandy_dirt.name=沙质泥土
|
||||
tile.dirt.silty_dirt.name=淤泥
|
||||
tile.double_plant.eyebulb.name=球茎
|
||||
tile.double_plant.flax.name=亚麻
|
||||
tile.double_plant.tall_cattail.name=香蒲
|
||||
tile.double_plant.eyebulb.name=球茎
|
||||
tile.dried_sand.name=干沙
|
||||
tile.ebony_fence.name=乌木栅栏
|
||||
tile.ebony_fence_gate.name=乌木栅栏门
|
||||
tile.ebony_stairs.name=乌木楼梯
|
||||
tile.ebony_wood_slab.name=乌木台阶
|
||||
tile.ethereal_fence.name=天域树栅栏
|
||||
tile.ethereal_fence_gate.name=天域树栅栏门
|
||||
tile.ethereal_wood_slab.name=天域树台阶
|
||||
tile.ethereal_stairs.name=天域树楼梯
|
||||
tile.ethereal_wood_slab.name=天域树台阶
|
||||
tile.eucalyptus_fence.name=桉树栅栏
|
||||
tile.eucalyptus_fence_gate.name=桉树栅栏门
|
||||
tile.eucalyptus_stairs.name=桉树楼梯
|
||||
tile.eucalyptus_wood_slab.name=桉树台阶
|
||||
tile.farmland_0.loamy_farmland.name=肥沃农田
|
||||
tile.farmland_0.sandy_farmland.name=沙质农田
|
||||
tile.farmland_1.silty_farmland.name=泥泞农田
|
||||
tile.fir_fence.name=杉树栅栏
|
||||
tile.fir_fence_gate.name=杉树栅栏门
|
||||
tile.fir_wood_slab.name=杉树台阶
|
||||
tile.fir_stairs.name=杉树楼梯
|
||||
tile.fir_wood_slab.name=杉树台阶
|
||||
tile.flesh.name=肉
|
||||
tile.flower_0.clover.name=苜蓿
|
||||
tile.flower_0.swampflower.name=沼泽花
|
||||
tile.flower_0.deathbloom.name=死亡花
|
||||
tile.flower_0.glowflower.name=闪光花
|
||||
tile.flower_0.blue_hydrangea.name=蓝绣球花
|
||||
tile.flower_0.orange_cosmos.name=黄波斯菊
|
||||
tile.flower_0.pink_daffodil.name=粉水仙
|
||||
tile.flower_0.wildflower.name=野花
|
||||
tile.flower_0.bromeliad.name=凤梨
|
||||
tile.flower_0.burning_blossom.name=火焰花
|
||||
tile.flower_0.clover.name=三叶草
|
||||
tile.flower_0.deathbloom.name=彼岸花
|
||||
tile.flower_0.enderlotus.name=末影莲花
|
||||
tile.flower_0.glowflower.name=萤花
|
||||
tile.flower_0.lily_of_the_valley.name=铃兰
|
||||
tile.flower_0.orange_cosmos.name=橙色波斯菊
|
||||
tile.flower_0.pink_daffodil.name=粉色水仙
|
||||
tile.flower_0.pink_hibiscus.name=粉色芙蓉
|
||||
tile.flower_0.swampflower.name=沼泽花
|
||||
tile.flower_0.violet.name=紫罗兰
|
||||
tile.flower_0.white_anemone.name=银莲花
|
||||
tile.flower_0.enderlotus.name=末影莲花
|
||||
tile.flower_0.bromeliad.name=凤梨
|
||||
tile.flower_0.dandelion.name=蒲公英
|
||||
tile.flower_0.pink_hibiscus.name=粉木槿
|
||||
tile.flower_0.lily_of_the_valley.name=谷百合
|
||||
tile.flower_0.burning_blossom.name=火焰花
|
||||
tile.flower_1.lavender.name=熏衣草
|
||||
tile.flower_1.goldenrod.name=秋麒麟草
|
||||
tile.flower_0.wildflower.name=野花
|
||||
tile.flower_0.wilted_lily.name=枯萎的百合
|
||||
tile.flower_1.bluebells.name=蓝铃花
|
||||
tile.flower_1.miners_delight.name=乐矿花
|
||||
tile.flower_1.goldenrod.name=秋麒麟草
|
||||
tile.flower_1.icy_iris.name=冰虹膜花
|
||||
tile.flower_1.lavender.name=熏衣草
|
||||
tile.flower_1.miners_delight.name=乐矿花
|
||||
tile.flower_1.rose.name=玫瑰
|
||||
tile.flower_vine.name=开花的葡萄藤
|
||||
tile.fruit_block.apple_block.name=苹果方块
|
||||
tile.fruit_block.persimmon_block.name=柿子方块
|
||||
tile.fruit_block.peach_block.name=桃子方块
|
||||
tile.fruit_block.pear_block.name=梨方块
|
||||
tile.fruit_block.pinecone_block.name=松果
|
||||
tile.gem_block.amethyst_block.name=紫晶块
|
||||
tile.gem_block.ruby_block.name=红宝石块
|
||||
tile.gem_block.peridot_block.name=橄榄石块
|
||||
tile.gem_block.topaz_block.name=黄玉块
|
||||
tile.gem_block.tanzanite_block.name=坦桑石块
|
||||
tile.gem_block.malachite_block.name=磷灰石块
|
||||
tile.gem_block.sapphire_block.name=蓝宝石块
|
||||
tile.flower_vine.name=藤花
|
||||
tile.gem_block.amber_block.name=琥珀块
|
||||
tile.gem_ore.amethyst_ore.name=末影紫晶矿石
|
||||
tile.gem_ore.ruby_ore.name=红宝石矿石
|
||||
tile.gem_ore.peridot_ore.name=橄榄石矿石
|
||||
tile.gem_ore.topaz_ore.name=黄玉矿石
|
||||
tile.gem_ore.tanzanite_ore.name=坦桑矿石
|
||||
tile.gem_ore.malachite_ore.name=磷灰石矿石
|
||||
tile.gem_ore.sapphire_ore.name=蓝宝石矿石
|
||||
tile.gem_block.amethyst_block.name=紫晶块
|
||||
tile.gem_block.malachite_block.name=磷灰石块
|
||||
tile.gem_block.peridot_block.name=橄榄石块
|
||||
tile.gem_block.ruby_block.name=红宝石块
|
||||
tile.gem_block.sapphire_block.name=蓝宝石块
|
||||
tile.gem_block.tanzanite_block.name=坦桑石块
|
||||
tile.gem_block.topaz_block.name=黄玉块
|
||||
tile.gem_ore.amber_ore.name=琥珀矿石
|
||||
tile.gem_ore.amethyst_ore.name=末影紫晶矿石
|
||||
tile.gem_ore.malachite_ore.name=磷灰石矿石
|
||||
tile.gem_ore.peridot_ore.name=橄榄石矿石
|
||||
tile.gem_ore.ruby_ore.name=红宝石矿石
|
||||
tile.gem_ore.sapphire_ore.name=蓝宝石矿石
|
||||
tile.gem_ore.tanzanite_ore.name=坦桑矿石
|
||||
tile.gem_ore.topaz_ore.name=黄玉矿石
|
||||
tile.grass.daisy_grass_block.name=长草
|
||||
tile.grass.spectral_moss.name=末地苔藓方块
|
||||
tile.grass.smoldering_grass_block.name=阴燃草方块
|
||||
tile.grass.loamy_grass_block.name=肥沃草方块
|
||||
tile.grass.origin_grass_block.name=远古草方块
|
||||
tile.grass.overgrown_netherrack.name=杂草丛生的地狱岩
|
||||
tile.grass.sandy_grass_block.name=沙质草方块
|
||||
tile.grass.silty_grass_block.name=淤泥草方块
|
||||
tile.grass.origin_grass_block.name=原始草方块
|
||||
tile.grass.overgrown_netherrack.name=杂草丛生的地狱岩
|
||||
tile.grass.smoldering_grass_block.name=阴燃草方块
|
||||
tile.grass.spectral_moss.name=幽灵苔
|
||||
tile.hard_ice.name=硬质冰块
|
||||
tile.hellbark_fence.name=地狱皮树栅栏
|
||||
tile.hellbark_fence_gate.name=地狱皮树栅栏门
|
||||
tile.hellbark_wood_slab.name=地狱皮树台阶
|
||||
tile.hellbark_stairs.name=地狱皮树楼梯
|
||||
tile.hive.hive_block.name=蜂房方块
|
||||
tile.hive.honeycomb_block.name=蜂房方块
|
||||
tile.hive.empty_honeycomb_block.name=空的蜂房方块
|
||||
tile.hive.filled_honeycomb_block.name=满的蜂房方块
|
||||
tile.hellbark_wood_slab.name=地狱皮树台阶
|
||||
tile.hive.empty_honeycomb_block.name=空的蜂巢方块
|
||||
tile.hive.filled_honeycomb_block.name=满的蜂巢方块
|
||||
tile.hive.hive_block.name=蜂巢方块
|
||||
tile.hive.honeycomb_block.name=蜂窝方块
|
||||
tile.honey_block.name=蜂蜜方块
|
||||
tile.ivy.name=常春藤
|
||||
tile.jacaranda_fence.name=蓝花楹树栅栏
|
||||
tile.jacaranda_fence_gate.name=蓝花楹树栅栏门
|
||||
tile.jacaranda_wood_slab.name=蓝花楹树原木台阶
|
||||
tile.jacaranda_stairs.name=蓝花楹树原木楼梯
|
||||
tile.leaves_0.yellow_autumn_leaves.name=黄色秋天树叶
|
||||
tile.leaves_0.orange_autumn_leaves.name=橙色秋天树叶
|
||||
tile.jacaranda_wood_slab.name=蓝花楹树原木台阶
|
||||
tile.leaves_0.bamboo_leaves.name=竹叶
|
||||
tile.leaves_0.magic_leaves.name=魔法树树叶
|
||||
tile.leaves_1.dark_leaves.name=黑暗树树叶
|
||||
tile.leaves_1.dead_leaves.name=垂死树树叶
|
||||
tile.leaves_1.fir_leaves.name=杉树树叶
|
||||
tile.leaves_0.orange_autumn_leaves.name=橙秋树叶
|
||||
tile.leaves_0.yellow_autumn_leaves.name=黄秋树叶
|
||||
tile.leaves_1.dead_leaves.name=亡树树叶
|
||||
tile.leaves_1.ethereal_leaves.name=天域树树叶
|
||||
tile.leaves_2.origin_leaves.name=Origin 树叶
|
||||
tile.leaves_1.fir_leaves.name=杉树树叶
|
||||
tile.leaves_1.umbran_leaves.name=暗影树树叶
|
||||
tile.leaves_2.maple_leaves.name=枫树树叶
|
||||
tile.leaves_2.origin_leaves.name=远古树叶
|
||||
tile.leaves_2.pink_cherry_leaves.name=粉色樱花树树叶
|
||||
tile.leaves_2.white_cherry_leaves.name=白色樱花树树叶
|
||||
tile.leaves_2.maple_leaves.name=枫树树叶
|
||||
tile.leaves_3.flowering_leaves.name=开花橡树树叶
|
||||
tile.leaves_3.hellbark_leaves.name=地狱皮树树叶
|
||||
tile.leaves_3.flowering_leaves.name=Flowering 树叶
|
||||
tile.leaves_3.jacaranda_leaves.name=蓝花楹树树叶
|
||||
tile.leaves_3.sacred_oak_leaves.name=神圣橡树树叶
|
||||
tile.leaves_4.mangrove_leaves.name=红树树叶
|
||||
tile.leaves_4.palm_leaves.name=棕榈树树叶
|
||||
tile.leaves_4.redwood_leaves.name=红木树叶
|
||||
tile.leaves_4.willow_leaves.name=柳树树叶
|
||||
tile.leaves_5.pine_leaves.name=松树树叶
|
||||
tile.leaves_5.ebony_leaves.name=乌木树叶
|
||||
tile.leaves_5.eucalyptus_leaves.name=桉树树叶
|
||||
tile.leaves_5.mahogany_leaves.name=桃花心树树叶
|
||||
tile.leaves_5.red_big_flower_petal.name=巨型红色花瓣
|
||||
tile.leaves_5.yellow_big_flower_petal.name=巨型黄色花瓣
|
||||
tile.limestone_slab.name=石灰岩台阶
|
||||
tile.log_0.sacred_oak_log.name=神圣橡树原木
|
||||
tile.leaves_5.pine_leaves.name=松树树叶
|
||||
tile.leaves_6.red_big_flower_petal.name=巨型红色花瓣
|
||||
tile.leaves_6.yellow_big_flower_petal.name=巨型黄色花瓣
|
||||
tile.log_0.cherry_log.name=樱花树原木
|
||||
tile.log_0.dark_log.name=黑暗树原木
|
||||
tile.log_0.fir_log.name=杉树原木
|
||||
tile.log_0.sacred_oak_log.name=神圣橡树原木
|
||||
tile.log_0.umbran_log.name=暗影树原木
|
||||
tile.log_1.ethereal_log.name=天域树原木
|
||||
tile.log_1.magic_log.name=魔法树原木
|
||||
tile.log_1.mangrove_log.name=红树原木
|
||||
tile.log_1.palm_log.name=棕榈树原木
|
||||
tile.log_2.hellbark_log.name=地狱皮树原木
|
||||
tile.log_2.pine_log.name=松树原木
|
||||
tile.log_2.redwood_log.name=红木原木
|
||||
tile.log_2.willow_log.name=柳树原木
|
||||
tile.log_2.pine_log.name=松树原木
|
||||
tile.log_2.hellbark_log.name=地狱皮树原木
|
||||
tile.log_3.ebony_log.name=乌木原木
|
||||
tile.log_3.eucalyptus_log.name=桉树原木
|
||||
tile.log_3.jacaranda_log.name=蓝花楹树原木
|
||||
tile.log_3.mahogany_log.name=桃花心树原木
|
||||
tile.log_3.giant_flower_stem.name=巨大花茎
|
||||
tile.log_3.dead_log.name=垂死树原木
|
||||
tile.log_4.dead_log.name=亡树原木
|
||||
tile.log_4.giant_flower_stem.name=巨大花茎
|
||||
tile.magic_fence.name=魔法树栅栏
|
||||
tile.magic_fence_gate.name=魔法树栅栏门
|
||||
tile.magic_wood_slab.name=魔法树台阶
|
||||
tile.magic_stairs.name=魔法树楼梯
|
||||
tile.magic_wood_slab.name=魔法树台阶
|
||||
tile.mahogany_fence.name=桃花心树栅栏
|
||||
tile.mahogany_fence_gate.name=桃花心树栅栏门
|
||||
tile.mahogany_wood_slab.name=桃花心树台阶
|
||||
tile.mahogany_stairs.name=桃花心树楼梯
|
||||
tile.mahogany_wood_slab.name=桃花心树台阶
|
||||
tile.mangrove_fence.name=红树栅栏
|
||||
tile.mangrove_fence_gate.name=红树栅栏门
|
||||
tile.mangrove_wood_slab.name=红树台阶
|
||||
tile.mangrove_stairs.name=红树楼梯
|
||||
tile.moss.name=苔藓
|
||||
tile.mangrove_wood_slab.name=红树台阶
|
||||
tile.mud.mud.name=泥巴
|
||||
tile.mud_brick.name=泥巴砖块
|
||||
tile.mud_brick_block.name=泥巴砖
|
||||
tile.mud_brick_slab.name=泥巴砖台阶
|
||||
tile.mud_brick_stairs.name=泥巴砖楼梯
|
||||
tile.sand.quicksand.name=流沙
|
||||
tile.mushroom.toadstool.name=毒菌
|
||||
tile.mushroom.portobello.name=双孢蘑菇
|
||||
tile.mushroom.blue_milk_cap.name=蓝牛奶伞菌
|
||||
tile.mushroom.glowshroom.name=夜光菇
|
||||
tile.mushroom.flat_mushroom.name=平菇
|
||||
tile.mushroom.glowshroom.name=萤菇
|
||||
tile.mushroom.portobello.name=双孢蘑菇
|
||||
tile.mushroom.shadow_shroom.name=影菇
|
||||
tile.mushroom.toadstool.name=毒菌
|
||||
tile.palm_fence.name=棕榈树栅栏
|
||||
tile.palm_fence_gate.name=棕榈树栅栏门
|
||||
tile.palm_wood_slab.name=棕榈树台阶
|
||||
tile.palm_stairs.name=棕榈树楼梯
|
||||
tile.palm_wood_slab.name=棕榈树台阶
|
||||
tile.pine_fence.name=松树栅栏
|
||||
tile.pine_fence_gate.name=松树栅栏门
|
||||
tile.pine_wood_slab.name=松树台阶
|
||||
tile.pine_stairs.name=松树楼梯
|
||||
tile.planks_0.sacred_oak_planks.name=神圣橡树木板
|
||||
tile.planks_0.cherry_planks.name=樱花树木板
|
||||
tile.planks_0.dark_planks.name=黑暗树木板
|
||||
tile.planks_0.fir_planks.name=杉树木板
|
||||
tile.planks_0.ethereal_planks.name=天域树木板
|
||||
tile.planks_0.magic_planks.name=魔法树木板
|
||||
tile.planks_0.mangrove_planks.name=红树木板
|
||||
tile.planks_0.palm_planks.name=棕榈树木板
|
||||
tile.planks_0.redwood_planks.name=红木木板
|
||||
tile.planks_0.willow_planks.name=柳树木板
|
||||
tile.pine_wood_slab.name=松树台阶
|
||||
tile.planks_0.bamboo_thatching.name=竹板
|
||||
tile.planks_0.pine_planks.name=松树木板
|
||||
tile.planks_0.cherry_planks.name=樱花树木板
|
||||
tile.planks_0.ebony_planks.name=乌木木板
|
||||
tile.planks_0.ethereal_planks.name=天域树木板
|
||||
tile.planks_0.eucalyptus_planks.name=桉树木板
|
||||
tile.planks_0.fir_planks.name=杉树木板
|
||||
tile.planks_0.hellbark_planks.name=地狱皮树木板
|
||||
tile.planks_0.jacaranda_planks.name=蓝花楹树木板
|
||||
tile.planks_0.magic_planks.name=魔法树木板
|
||||
tile.planks_0.mahogany_planks.name=桃花心树木板
|
||||
tile.plant_0.shortgrass.name=短草
|
||||
tile.plant_0.mediumgrass.name=中草
|
||||
tile.plant_0.bush.name=灌木
|
||||
tile.plant_0.sprout.name=萌芽
|
||||
tile.plant_0.poisonivy.name=毒常春藤
|
||||
tile.planks_0.mangrove_planks.name=红树木板
|
||||
tile.planks_0.palm_planks.name=棕榈树木板
|
||||
tile.planks_0.pine_planks.name=松树木板
|
||||
tile.planks_0.redwood_planks.name=红木木板
|
||||
tile.planks_0.sacred_oak_planks.name=神圣橡树木板
|
||||
tile.planks_0.umbran_planks.name=暗影木板
|
||||
tile.planks_0.willow_planks.name=柳树木板
|
||||
tile.plant_0.berrybush.name=浆果灌木
|
||||
tile.plant_0.shrub.name=灌木
|
||||
tile.plant_0.wheatgrass.name=小麦草
|
||||
tile.plant_0.dampgrass.name=潮湿的草
|
||||
tile.plant_0.koru.name=Koru
|
||||
tile.plant_0.bush.name=灌木
|
||||
tile.plant_0.cloverpatch.name=三叶草
|
||||
tile.plant_0.leafpile.name=落叶堆
|
||||
tile.plant_0.deadleafpile.name=死落叶堆
|
||||
tile.plant_0.deadgrass.name=死草
|
||||
tile.plant_0.dampgrass.name=潮湿的草
|
||||
tile.plant_0.deadgrass.name=枯草
|
||||
tile.plant_0.deadleafpile.name=枯叶堆
|
||||
tile.plant_0.desertgrass.name=沙漠草
|
||||
tile.plant_0.desertsprouts.name=沙漠萌芽
|
||||
tile.plant_1.dunegrass.name=沙丘草
|
||||
tile.plant_1.spectralfern.name=光谱蕨
|
||||
tile.plant_1.thorn.name=荆棘
|
||||
tile.plant_1.wildrice.name=野生稻
|
||||
tile.plant_0.koru.name=银蕨
|
||||
tile.plant_0.leafpile.name=落叶堆
|
||||
tile.plant_0.mediumgrass.name=中草
|
||||
tile.plant_0.poisonivy.name=毒常春藤
|
||||
tile.plant_0.shortgrass.name=短草
|
||||
tile.plant_0.shrub.name=灌木
|
||||
tile.plant_0.sprout.name=萌芽
|
||||
tile.plant_0.wheatgrass.name=小麦草
|
||||
tile.plant_1.cattail.name=香蒲
|
||||
tile.plant_1.rivercane.name=河藤
|
||||
tile.plant_1.wildcarrot_block.name=野生胡萝卜
|
||||
tile.plant_1.tinycactus.name=仙人掌
|
||||
tile.plant_1.witherwart.name=枯萎地狱疣
|
||||
tile.plant_1.dunegrass.name=沙丘草
|
||||
tile.plant_1.rafflesia.name=大花草
|
||||
tile.plant_1.reed.name=芦苇
|
||||
tile.plant_1.rivercane.name=河藤
|
||||
tile.plant_1.root.name=根
|
||||
tile.polished_limestone_slab.name=光滑石灰岩台阶
|
||||
tile.polished_siltstone_slab.name=光滑粉砂台阶
|
||||
tile.polished_shale_slab.name=光滑页岩台阶
|
||||
tile.plant_1.spectralfern.name=幽灵蕨
|
||||
tile.plant_1.thorn.name=荆棘
|
||||
tile.plant_1.tinycactus.name=仙人掌
|
||||
tile.plant_1.wildrice.name=野生稻
|
||||
tile.plant_1.witherwart.name=枯萎地狱疣
|
||||
tile.redwood_fence.name=红木栅栏
|
||||
tile.redwood_fence_gate.name=红木栅栏门
|
||||
tile.redwood_wood_slab.name=红木台阶
|
||||
tile.redwood_stairs.name=红木楼梯
|
||||
tile.redwood_wood_slab.name=红木台阶
|
||||
tile.sacred_oak_fence.name=神圣橡树栅栏
|
||||
tile.sacred_oak_fence_gate.name=神圣橡树栅栏门
|
||||
tile.sacred_oak_wood_slab.name=神圣橡树台阶
|
||||
tile.sacred_oak_stairs=神圣橡树楼梯
|
||||
tile.sapling_0.yellow_autumn_sapling.name=黄色秋天树苗
|
||||
tile.sapling_0.orange_autumn_sapling.name=橙色秋天树苗
|
||||
tile.sacred_oak_wood_slab.name=神圣橡树台阶
|
||||
tile.sand.quicksand.name=流沙
|
||||
tile.sapling_0.bamboo_sapling.name=竹子树苗
|
||||
tile.sapling_0.magic_sapling.name=魔法树树苗
|
||||
tile.sapling_0.dark_sapling.name=黑暗树树苗
|
||||
tile.sapling_0.dead_sapling.name=垂死树树苗
|
||||
tile.sapling_0.fir_sapling.name=杉树树苗
|
||||
tile.sapling_0.dead_sapling.name=亡树树苗
|
||||
tile.sapling_0.ethereal_sapling.name=天域树树苗
|
||||
tile.sapling_1.origin_sapling.name=Origin 树苗
|
||||
tile.sapling_1.pink_cherry_sapling.name=粉色樱花树树苗
|
||||
tile.sapling_1.white_cherry_sapling.name=白色樱花树树苗
|
||||
tile.sapling_1.maple_sapling.name=枫树树苗
|
||||
tile.sapling_0.fir_sapling.name=杉树树苗
|
||||
tile.sapling_0.magic_sapling.name=魔法树树苗
|
||||
tile.sapling_0.orange_autumn_sapling.name=橙秋树苗
|
||||
tile.sapling_0.umbran_sapling.name=暗影树树苗
|
||||
tile.sapling_0.yellow_autumn_sapling.name=黄秋树苗
|
||||
tile.sapling_1.flowering_sapling.name=开花橡树树苗
|
||||
tile.sapling_1.hellbark_sapling.name=地狱皮树树苗
|
||||
tile.sapling_1.flowering_sapling.name=Flowering Oak 树苗
|
||||
tile.sapling_1.jacaranda_sapling.name=蓝花楹树树苗
|
||||
tile.sapling_1.maple_sapling.name=枫树树苗
|
||||
tile.sapling_1.origin_sapling.name=远古树苗
|
||||
tile.sapling_1.pink_cherry_sapling.name=粉色樱花树树苗
|
||||
tile.sapling_1.sacred_oak_sapling.name=神圣橡树树苗
|
||||
tile.sapling_1.white_cherry_sapling.name=白色樱花树树苗
|
||||
tile.sapling_2.ebony_sapling.name=乌木树苗
|
||||
tile.sapling_2.eucalyptus_sapling.name=桉树树苗
|
||||
tile.sapling_2.mahogany_sapling.name=桃花心树树苗
|
||||
tile.sapling_2.mangrove_sapling.name=红树树苗
|
||||
tile.sapling_2.palm_sapling.name=棕榈树树苗
|
||||
tile.sapling_2.pine_sapling.name=松树树苗
|
||||
tile.sapling_2.redwood_sapling.name=红木树苗
|
||||
tile.sapling_2.willow_sapling.name=柳树树苗
|
||||
tile.sapling_2.pine_sapling.name=松树树苗
|
||||
tile.sapling_2.mahogany_sapling.name=桃花心树树苗
|
||||
tile.seaweed.kelp.name=海带
|
||||
tile.shale_slab.name=页岩台阶
|
||||
tile.siltstone_slab.name=粉砂台阶
|
||||
tile.stone.limestone.name=石灰岩
|
||||
tile.stone.polished_limestone.name=光滑石灰岩
|
||||
tile.stone.siltstone.name=粉砂岩
|
||||
tile.stone.polished_shale.name=光滑页岩
|
||||
tile.stone.polished_siltstone.name=光滑粉砂岩
|
||||
tile.stone.shale.name=页岩
|
||||
tile.stone.polished_shale.name=光滑页岩
|
||||
tile.stone_formations.stalagmite.name=石笋
|
||||
tile.stone_formations.stalactite.name=钟乳石
|
||||
tile.tree_moss.name=树苔藓
|
||||
tile.stone.siltstone.name=粉砂岩
|
||||
tile.terrarium.terrarium_bamboo.name=竹子盆景
|
||||
tile.terrarium.terrarium_cactus.name=仙人掌盆景
|
||||
tile.terrarium.terrarium_dead.name=亡树盆景
|
||||
tile.terrarium.terrarium_ender.name=末地盆景
|
||||
tile.terrarium.terrarium_fern.name=蕨盆景
|
||||
tile.terrarium.terrarium_flax.name=亚麻植物盆景
|
||||
tile.terrarium.terrarium_flower.name=鲜花盆景
|
||||
tile.terrarium.terrarium_glowshroom.name=萤菇盆景
|
||||
tile.terrarium.terrarium_koru.name=银蕨盆景
|
||||
tile.terrarium.terrarium_mushroom.name=菌类盆景
|
||||
tile.terrarium.terrarium_mystic.name=神秘盆景
|
||||
tile.terrarium.terrarium_nether.name=地獄盆景
|
||||
tile.terrarium.terrarium_ominous.name=不详的盆景
|
||||
tile.terrarium.terrarium_origin.name=远古盆景
|
||||
tile.terrarium.terrarium_sapling.name=树苗盆景
|
||||
tile.terrarium.terrarium_wasteland.name=荒地盆景
|
||||
tile.tree_moss.name=树青苔
|
||||
tile.turnip_block.name=芜青
|
||||
tile.umbran_fence.name=暗影树栅栏
|
||||
tile.umbran_fence_gate.name=暗影树栅栏门
|
||||
tile.umbran_stairs.name=暗影树楼梯
|
||||
tile.umbran_wood_slab.name=暗影树台阶
|
||||
tile.waterlily.duckweed.name=浮萍
|
||||
tile.waterlily.lily_medium.name=中型睡莲
|
||||
tile.waterlily.lily_small.name=小型睡莲
|
||||
tile.waterlily.lily_tiny.name=小浮萍
|
||||
tile.willow_fence.name=柳树栅栏
|
||||
tile.willow_fence_gate.name=柳树栅栏门
|
||||
tile.willow_wood_slab.name=柳树台阶
|
||||
tile.willow_stairs.name=柳树楼梯
|
||||
tile.wisteria.name=紫藤
|
||||
tile.ash_stone.name=火山灰岩
|
||||
tile.hard_sand.name=硬化沙子
|
||||
tile.hard_dirt.name=硬化泥土
|
||||
tile.hard_ice.name=硬化冰块
|
||||
tile.dried_dirt.name=干燥泥土
|
||||
tile.crag_rock.name=崖壁岩石
|
||||
tile.mud_brick.name=泥巴砖块
|
||||
tile.crystal.name=仙域水晶
|
||||
tile.willow_wood_slab.name=柳树台阶
|
||||
|
|
Loading…
Reference in New Issue