Compare commits

...

24 Commits

Author SHA1 Message Date
Adubbz db6476dbbf Merge pull request #1074 from Obbi89/BOP-1.10.2-5.0.x
Use canSustainPlant to check for fertility instead of own implementation
2017-07-19 11:45:14 +10:00
Robert Obermeier eedfbca15e Use canSustainPlant to check for fertility instead of own implementation 2017-07-19 00:59:06 +02:00
Forstride b8cd014596 Merge pull request #1003 from bogger33/BOP-1.10.2-5.0.x
add amethyst to oreDict
2017-05-27 19:00:10 -04:00
Adubbz b87062f789 Merge pull request #1019 from HenryLoenwind/crash4218-1.10
Prevent crashes when the used item cannot be found on the player
2017-05-14 14:30:50 +10:00
Henry Loenwind 156d5b9b8f Prevent crashes when the used item cannot be found on the player
* re https://github.com/SleepyTrousers/EnderIO/issues/4218
2017-05-14 06:24:47 +02:00
bogger33 2d917564f3 add amethyst to oreDict 2017-05-01 06:28:11 +02:00
Adubbz c0ca62f4e4 Poking Jenkins (again) 2017-03-04 13:07:18 +11:00
Adubbz bd534ca319 Updated terrain configuration options for our current setup 2017-03-04 12:55:33 +11:00
Adubbz 4e5790855d Merge pull request #951 from linuxdemon1/BOP-1.10.2-5.0.x
[1.10.2] Fixed piston dupe/crash
2017-02-17 09:37:11 +11:00
linuxdemon1 9b524adfc9 Rewrote onBlockPlaced handler to deal with blockstates better, removing usages of the Block#getStateOfMeta() method, which has been deprecated. Fixes error/dupe when placing pistons 2017-02-15 22:36:06 -06:00
Adubbz a0fa772f04 Prodding Jenkins 2017-01-29 11:21:26 +11:00
Adubbz 24d6200615 Merge pull request #938 from HenryLoenwind/crash924-1.10
Fix #924
2017-01-22 21:13:29 +11:00
Henry Loenwind 50a8cd514d Fix #924
Don't bypass the blockstate and don't bypass it with wrong parameters
2017-01-22 11:08:40 +01:00
Mazdallier 910c54e5b3 Create fr_FR.lang 2017-01-21 08:52:11 +11:00
Adubbz b90dfd87e3 Merge pull request #933 from GirafiStudios/BOP-1.10.2-5.0.x
Fixes crash when picking up pistons
2017-01-08 01:38:43 +11:00
GirafiStudios 7ad2c1c70e Fixes crash when picking up pistons
Updated to latest RB of Forge.
2017-01-07 15:36:32 +01:00
Adubbz 6f3ecaf9e3 Merge pull request #932 from srs-bsns/BOP-1.10.2-5.0.x
[1.10.2] Flowering leaves no longer render as white boxes. Closes #696
2017-01-07 21:00:10 +11:00
Adubbz e2fe709173
Flowering leaves no longer render as white boxes. Closes #696
(cherry picked from commit c05ba78)
2017-01-07 00:31:47 -05:00
Adubbz 6866319f89 Merge pull request #929 from nornagon/extraconfig
Make some noise params from vanilla configurable (1.10.2)
2017-01-01 11:09:34 +11:00
Jeremy Apthorp dca8d10f23 Make some noise params from vanilla configurable
Specifically:
- Main Noise X/Y/Z
- Coordinate Scale
- Height Scale
- Lower/Upper Limit Scale
2016-12-31 12:33:02 -08:00
Adubbz 9e07eaf43a Added foliageHeight and foliageDensity options for GeneratorBigTree 2016-11-21 12:51:47 +11:00
Adubbz 0d8da675cd Added placeOn option for big trees 2016-11-20 11:25:50 +11:00
Adubbz 2b74cc64af Temporary workaround for piston pickup crash. Closes #903
This doesn't appear to be an issue on 1.11 so I won't implement it there.
2016-11-19 09:58:46 +11:00
Adubbz fa0d543257 Some men want to watch the world burn (#897) 2016-11-17 00:09:19 +11:00
20 changed files with 718 additions and 249 deletions

View File

@ -123,7 +123,7 @@ task apiJar(type: Jar) {
}
task listOutputs << {
//This is needed by the Groovy Postbuild to append labels for each build used in the changelog.
// This is needed by the Groovy Postbuild to append labels for each build used in the changelog.
println "Output files:"
println "--------------------"
def list = []

View File

@ -1,4 +1,4 @@
minecraft_version=1.10.2
forge_version=12.18.1.2073
forge_version=12.18.3.2185
mod_version=5.0.0
mappings_version=snapshot_nodoc_20160808

View File

@ -192,8 +192,15 @@ public class GuiBOPConfigureWorld extends GuiScreen implements GuiSlider.FormatH
GENERATE_HOT_SPRINGS (123),
GENERATE_NETHER_HIVES (124),
GENERATE_NETHER_PLANTS (125),
GENERATE_END_FEATURES (126);
GENERATE_END_FEATURES (126),
MAIN_NOISE_SCALE_X (127),
MAIN_NOISE_SCALE_Y (128),
MAIN_NOISE_SCALE_Z (129),
COORDINATE_SCALE (130),
HEIGHT_SCALE (131),
UPPER_LIMIT_SCALE (132),
LOWER_LIMIT_SCALE (133);
private int id;
private GuiEntries(int id)
@ -229,7 +236,14 @@ public class GuiBOPConfigureWorld extends GuiScreen implements GuiSlider.FormatH
new GuiBOPPageList.GuiEnumButtonEntry<LandMassScheme>(GuiEntries.LAND_SCHEME.getId(), "Land Mass: %s", true, this.settings.landScheme),
new GuiBOPPageList.GuiEnumButtonEntry<TemperatureVariationScheme>(GuiEntries.TEMP_SCHEME.getId(), "Temperature: %s", true, this.settings.tempScheme),
new GuiBOPPageList.GuiEnumButtonEntry<RainfallVariationScheme>(GuiEntries.RAIN_SCHEME.getId(), "Rainfall: %s", true, this.settings.rainScheme),
new GuiBOPPageList.GuiSlideEntry(GuiEntries.AMPLITUDE.getId(), "Amplitude", true, this, 0.2F, 3.0F, this.settings.amplitude)
new GuiBOPPageList.GuiSlideEntry(GuiEntries.AMPLITUDE.getId(), "Amplitude", true, this, 0.2F, 3.0F, this.settings.amplitude),
new GuiBOPPageList.GuiSlideEntry(GuiEntries.MAIN_NOISE_SCALE_X.getId(), "Main Noise Scale X", true, this, 1.0F, 5000.0F, this.settings.mainNoiseScaleX),
new GuiBOPPageList.GuiSlideEntry(GuiEntries.MAIN_NOISE_SCALE_Y.getId(), "Main Noise Scale Y", true, this, 1.0F, 5000.0F, this.settings.mainNoiseScaleY),
new GuiBOPPageList.GuiSlideEntry(GuiEntries.MAIN_NOISE_SCALE_Z.getId(), "Main Noise Scale Z", true, this, 1.0F, 5000.0F, this.settings.mainNoiseScaleZ),
new GuiBOPPageList.GuiSlideEntry(GuiEntries.COORDINATE_SCALE.getId(), "Coordinate Scale", true, this, 1.0F, 6000.0F, this.settings.coordinateScale),
new GuiBOPPageList.GuiSlideEntry(GuiEntries.HEIGHT_SCALE.getId(), "Height Scale", true, this, 1.0F, 6000.0F, this.settings.heightScale),
new GuiBOPPageList.GuiSlideEntry(GuiEntries.UPPER_LIMIT_SCALE.getId(), "Upper Limit Scale", true, this, 1.0F, 5000.0F, this.settings.upperLimitScale),
new GuiBOPPageList.GuiSlideEntry(GuiEntries.LOWER_LIMIT_SCALE.getId(), "Lower Limit Scale", true, this, 1.0F, 5000.0F, this.settings.lowerLimitScale),
};
this.pageNames[1] = "Biome Settings";
@ -301,6 +315,13 @@ public class GuiBOPConfigureWorld extends GuiScreen implements GuiSlider.FormatH
switch (entry)
{
case AMPLITUDE:
case MAIN_NOISE_SCALE_X:
case MAIN_NOISE_SCALE_Y:
case MAIN_NOISE_SCALE_Z:
case COORDINATE_SCALE:
case HEIGHT_SCALE:
case UPPER_LIMIT_SCALE:
case LOWER_LIMIT_SCALE:
return String.format("%5.3f", new Object[] {Float.valueOf(value)});
default:
return "";
@ -430,6 +451,27 @@ public class GuiBOPConfigureWorld extends GuiScreen implements GuiSlider.FormatH
case AMPLITUDE:
this.settings.amplitude = value;
break;
case MAIN_NOISE_SCALE_X:
this.settings.mainNoiseScaleX = value;
break;
case MAIN_NOISE_SCALE_Y:
this.settings.mainNoiseScaleY = value;
break;
case MAIN_NOISE_SCALE_Z:
this.settings.mainNoiseScaleZ = value;
break;
case COORDINATE_SCALE:
this.settings.coordinateScale = value;
break;
case HEIGHT_SCALE:
this.settings.heightScale = value;
break;
case UPPER_LIMIT_SCALE:
this.settings.upperLimitScale = value;
break;
case LOWER_LIMIT_SCALE:
this.settings.lowerLimitScale = value;
break;
default:
break;
}
@ -653,4 +695,4 @@ public class GuiBOPConfigureWorld extends GuiScreen implements GuiSlider.FormatH
this.noButton.drawButton(this.mc, mouseX, mouseY);
}
}
}
}

View File

@ -1,87 +0,0 @@
/*******************************************************************************
* Copyright 2014-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.client.model;
import com.google.common.collect.ImmutableList;
import biomesoplenty.client.util.ModelUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.block.model.ItemOverride;
import net.minecraft.client.renderer.block.model.ItemOverrideList;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import net.minecraftforge.client.model.IModel;
public class ModelBiomeFinder extends ItemOverrideList
{
private IBakedModel[] frames;
public ModelBiomeFinder(IModel defaultModel, TextureAtlasSprite[] frameTextures)
{
super(ImmutableList.<ItemOverride>of());
this.frames = ModelUtils.generateModelsForTextures(defaultModel, frameTextures);
}
@Override
public IBakedModel handleItemState(IBakedModel originalModel, ItemStack stack, World world, EntityLivingBase entity)
{
EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
if (player == null) {return this.frames[0];}
NBTTagCompound nbt = stack.getTagCompound();
if (nbt != null && nbt.hasKey("biomeIDToFind"))
{
if (nbt.hasKey("searchStarted"))
{
// searching for biome, but not yet found indicate searching by flashing
return this.getFlashingFrame(player);
}
else if (nbt.getBoolean("found"))
{
// if the biome has been found, point at it
int posX = nbt.getInteger("posX");
int posZ = nbt.getInteger("posZ");
return getFrameForPositionRelativeToPlayer(player, posX, posZ);
}
else
{
// the search has not yet been started, show all sectors lit
return this.frames[9];
}
}
else
{
// if we've got here, the biome finder has not been bound to a biome yet - show no sectors lit
return this.frames[8];
}
}
public IBakedModel getFlashingFrame(EntityPlayerSP player)
{
return (player.getRNG().nextInt(2) == 0 ? this.frames[10] : this.frames[11]);
}
public IBakedModel getFrameForPositionRelativeToPlayer(EntityPlayer player, int biomePosX, int biomePosZ)
{
double xDiff = (double)biomePosX - player.posX;
double zDiff = (double)biomePosZ - player.posZ;
// angle (in degrees) of direction from player to biome (relative to player rotation)
double angleDiff = (Math.atan2(zDiff, xDiff) * 180.0D / Math.PI) + 270.0D - player.rotationYaw;
// there are 8 sectors on the biome finder, so 45 degrees each (offset by 22.5 to center the angle in the middle of the sector)
int sector = (int)Math.floor((angleDiff + 22.5D) / 45.0D);
return this.frames[((sector % 8) + 8) % 8];
}
}

View File

@ -1,51 +0,0 @@
/*******************************************************************************
* Copyright 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.client.model;
import com.google.common.collect.ImmutableList;
import biomesoplenty.common.inventory.InventoryFlowerBasket;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.block.model.ItemOverride;
import net.minecraft.client.renderer.block.model.ItemOverrideList;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
public class ModelFlowerBasket extends ItemOverrideList
{
private IBakedModel emptyBakedModel;
private IBakedModel filledBakedModel;
public ModelFlowerBasket(IBakedModel emptyModel, IBakedModel filledModel)
{
super(ImmutableList.<ItemOverride>of());
this.emptyBakedModel = emptyModel;
this.filledBakedModel = filledModel;
}
@Override
public IBakedModel handleItemState(IBakedModel originalModel, ItemStack stack, World world, EntityLivingBase entity)
{
InventoryFlowerBasket inventory = new InventoryFlowerBasket(stack, null);
boolean filled = false;
for (int index = 0; index < inventory.getSizeInventory(); ++index)
{
if (inventory.getStackInSlot(index) != null)
{
filled = true;
break;
}
}
return filled ? this.filledBakedModel : this.emptyBakedModel;
}
}

View File

@ -108,9 +108,7 @@ public class BOPBiome extends Biome implements IExtendedBiome
// If there isn't a valid config file, don't use it to configure the biome
if (conf.isEmpty())
return defaultBuilder.build();
defaultBuilder.withBaseHeight(conf.getFloat("rootHeight"));
defaultBuilder.withHeightVariation(conf.getFloat("variation"));
defaultBuilder.withTemperature(conf.getFloat("temperature"));
defaultBuilder.withRainfall(conf.getFloat("rainfall"));
defaultBuilder.withWaterColor(conf.getInt("waterColor"));
@ -143,7 +141,11 @@ public class BOPBiome extends Biome implements IExtendedBiome
this.topBlock = conf.getBlockState("topBlock", this.topBlock);
this.fillerBlock = conf.getBlockState("fillerBlock", this.fillerBlock);
this.seaFloorBlock = conf.getBlockState("seaFloorBlock", this.seaFloorBlock);
this.terrainSettings.avgHeight = conf.getFloat("averageHeight", (float)this.terrainSettings.avgHeight);
this.terrainSettings.variationBelow = conf.getFloat("variationBelow", (float)this.terrainSettings.variationBelow);
this.terrainSettings.variationAbove = conf.getFloat("variationAbove", (float)this.terrainSettings.variationAbove);
this.skyColor = conf.getInt("skyColor", this.skyColor);
this.hasBiomeEssence = conf.getBool("hasBiomeEssence", this.hasBiomeEssence);

View File

@ -163,7 +163,7 @@ public class BlockBOPDirt extends Block implements IBOPBlock, ISustainsPlantType
{
IBlockState upState = world.getBlockState(pos.up());
// if there's not enough light then there's no chance of this block becoming grassy
if (world.getLightFromNeighbors(pos.up()) < 4 || upState.getBlock().getLightOpacity(upState) > 2) {return;}
if (world.getLightFromNeighbors(pos.up()) < 4 || upState.getLightOpacity(world, pos.up()) > 2) {return;}
int numNearbyGrassSpreadingBlocks = 0;
BlockPos pos1;

View File

@ -194,7 +194,7 @@ public class BlockBOPGrass extends BlockGrass implements IBOPBlock, ISustainsPla
{
// if this block is covered, then turn it back to dirt (IE kill the grass)
if (world.getLightFromNeighbors(pos.up()) < 4 && world.getBlockState(pos.up()).getBlock().getLightOpacity(world.getBlockState(pos.up())) > 2)
if (world.getLightFromNeighbors(pos.up()) < 4 && world.getBlockState(pos.up()).getLightOpacity(world, pos.up()) > 2)
{
world.setBlockState(pos, getDirtBlockState(state));
}
@ -208,14 +208,14 @@ public class BlockBOPGrass extends BlockGrass implements IBOPBlock, ISustainsPla
// pick a random nearby position, and get the block, block state, and block above
BlockPos pos1 = pos.add(rand.nextInt(xzSpread * 2 + 1) - xzSpread, rand.nextInt(downSpread + upSpread + 1) - downSpread, rand.nextInt(xzSpread * 2 + 1) - xzSpread);
IBlockState target = world.getBlockState(pos1);
Block blockAboveTarget = world.getBlockState(pos1.up()).getBlock();
IBlockState blockAboveTarget = world.getBlockState(pos1.up());
// see if this type of grass can spread to the target block
IBlockState targetGrass = spreadsToGrass(state, target);
if (targetGrass == null) {break;}
// if there's enough light, turn the block to the relevant grass block
if (world.getLightFromNeighbors(pos1.up()) >= 4 && blockAboveTarget.getLightOpacity(target) <= 2)
if (world.getLightFromNeighbors(pos1.up()) >= 4 && blockAboveTarget.getLightOpacity(world, pos1.up()) <= 2)
{
world.setBlockState(pos1, targetGrass);
}

View File

@ -7,11 +7,6 @@
******************************************************************************/
package biomesoplenty.common.handler;
import java.util.Iterator;
import java.util.Set;
import com.google.common.collect.Sets;
import biomesoplenty.api.achievement.BOPAchievements;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.block.BOPBlocks;
@ -19,17 +14,15 @@ import biomesoplenty.api.enums.BOPFlowers;
import biomesoplenty.api.enums.BOPPlants;
import biomesoplenty.api.enums.BOPTrees;
import biomesoplenty.api.item.BOPItems;
import biomesoplenty.common.block.BlockBOPFlower;
import biomesoplenty.common.block.BlockBOPLog;
import biomesoplenty.common.block.BlockBOPPlant;
import biomesoplenty.common.block.BlockBOPSapling;
import biomesoplenty.common.item.ItemJarFilled;
import biomesoplenty.common.block.*;
import com.google.common.collect.Sets;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.stats.AchievementList;
import net.minecraft.util.JsonSerializableSet;
@ -44,6 +37,9 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.PlayerEvent;
import net.minecraftforge.fml.common.gameevent.PlayerEvent.ItemCraftedEvent;
import java.util.Iterator;
import java.util.Set;
public class AchievementEventHandler
{
private static final Set<Biome> BOP_BIOMES_TO_EXPLORE = Sets.union(BOPBiomes.REG_INSTANCE.getPresentBiomes(), Biome.EXPLORATION_BIOMES_LIST);
@ -53,14 +49,49 @@ public class AchievementEventHandler
{
ItemStack stack = event.pickedUp.getEntityItem();
Item item = stack.getItem();
Block block = Block.getBlockFromItem(item);
IBlockState state = block != null ? block.getStateFromMeta(stack.getMetadata()) : null;
EntityPlayer player = event.player;
if (block != null && block instanceof BlockBOPLog)
if (block instanceof IBOPBlock)
{
player.addStat(AchievementList.MINE_WOOD);
IBlockState state = block != null && item instanceof ItemBlock ? block.getStateFromMeta(item.getMetadata(stack.getMetadata())) : null;
if (block instanceof BlockBOPLog)
{
player.addStat(AchievementList.MINE_WOOD);
}
//Totally Coral Achievement
if (block != null && block == BOPBlocks.coral)
{
player.addStat(BOPAchievements.obtain_coral);
}
//Life Finds a Way Achievement
if (block != null && state == BlockBOPFlower.paging.getVariantState(BOPFlowers.MINERS_DELIGHT))
{
player.addStat(BOPAchievements.obtain_miners_delight);
}
//Rather Thorny Achievement
if (block != null && state == BlockBOPPlant.paging.getVariantState(BOPPlants.THORN))
{
player.addStat(BOPAchievements.obtain_thorn);
}
//I am Become Death Achievement
if (block != null && state == BlockBOPFlower.paging.getVariantState(BOPFlowers.DEATHBLOOM))
{
player.addStat(BOPAchievements.obtain_deathbloom);
}
//Godsend Achievement
if (block != null && state == BlockBOPFlower.paging.getVariantState(BOPFlowers.WILTED_LILY))
{
player.addStat(BOPAchievements.obtain_wilted_lily);
}
}
//Flower Child Achievement
@ -74,44 +105,13 @@ public class AchievementEventHandler
{
player.addStat(BOPAchievements.obtain_berry);
}
//Totally Coral Achievement
if (block != null && block == BOPBlocks.coral)
{
player.addStat(BOPAchievements.obtain_coral);
}
//Life Finds a Way Achievement
if (block != null && state == BlockBOPFlower.paging.getVariantState(BOPFlowers.MINERS_DELIGHT))
{
player.addStat(BOPAchievements.obtain_miners_delight);
}
//Rather Thorny Achievement
if (block != null && state == BlockBOPPlant.paging.getVariantState(BOPPlants.THORN))
{
player.addStat(BOPAchievements.obtain_thorn);
}
//I am Become Death Achievement
if (block != null && state == BlockBOPFlower.paging.getVariantState(BOPFlowers.DEATHBLOOM))
{
player.addStat(BOPAchievements.obtain_deathbloom);
}
//Godsend Achievement
if (block != null && state == BlockBOPFlower.paging.getVariantState(BOPFlowers.WILTED_LILY))
{
player.addStat(BOPAchievements.obtain_wilted_lily);
}
//Stalk Market Achievement
if (item != null && item == BOPItems.turnip)
{
player.addStat(BOPAchievements.obtain_turnip);
}
//Soul Searching Achievement
if (item != null && item == BOPItems.soul)
{
@ -174,24 +174,11 @@ public class AchievementEventHandler
@SubscribeEvent
public void onBlockPlaced(BlockEvent.PlaceEvent event)
{
ItemStack stack = event.getItemInHand();
//Blocks can be placed by things other than players
if (stack != null)
EntityPlayer player = event.getPlayer();
IBlockState state = event.getPlacedBlock();
if (player != null && state != null && state == BlockBOPSapling.paging.getVariantState(BOPTrees.SACRED_OAK))
{
Item item = stack.getItem();
Block block = Block.getBlockFromItem(item);
IBlockState state = block != null ? block.getStateFromMeta(stack.getItemDamage()) : null;
try
{
//Yggdrasil
if (state == BlockBOPSapling.paging.getVariantState(BOPTrees.SACRED_OAK))
{
event.getPlayer().addStat(BOPAchievements.grow_sacred_oak);
}
}
catch(Exception e) {} //Fail quietly if there's a problem matching metadata to a block state
player.addStat(BOPAchievements.grow_sacred_oak);
}
}

View File

@ -0,0 +1,75 @@
/*******************************************************************************
* Copyright 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.handler;
import com.google.common.collect.Maps;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.client.renderer.block.model.SimpleBakedModel;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.init.Blocks;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.registry.IRegistry;
import net.minecraftforge.client.event.ModelBakeEvent;
import net.minecraftforge.client.model.IModel;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.client.model.ModelLoaderRegistry;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import javax.annotation.Nullable;
import java.util.List;
import java.util.Map;
public class LeavesModelHandler
{
private static final ModelResourceLocation LEAVES_LOC = new ModelResourceLocation("biomesoplenty:leaves_3", "variant=flowering");
@SubscribeEvent
public void onModelBake(ModelBakeEvent event) throws Exception
{
ModelLoader loader = event.getModelLoader();
IRegistry<ModelResourceLocation, IBakedModel> registry = event.getModelRegistry();
IBakedModel originalBakedModel = registry.getObject(LEAVES_LOC);
// Load and bake the fast flowering leaves model
IModel fastModel = ModelLoaderRegistry.getModel(new ResourceLocation("biomesoplenty:block/flowering_leaves_fast"));
IBakedModel bakedFastModel = fastModel.bake(fastModel.getDefaultState(), DefaultVertexFormats.BLOCK, ModelLoader.defaultTextureGetter());
registry.putObject(LEAVES_LOC, new ModelLeaves(originalBakedModel, bakedFastModel));
}
public class ModelLeaves extends SimpleBakedModel
{
private IBakedModel fastModel;
public ModelLeaves(IBakedModel fancyModel, IBakedModel fastModel)
{
super(fancyModel.getQuads(null, null, 0), generateFacingQuads(fancyModel), fancyModel.isAmbientOcclusion(), fancyModel.isGui3d(), fancyModel.getParticleTexture(), fancyModel.getItemCameraTransforms(), fancyModel.getOverrides());
this.fastModel = fastModel;
}
@Override
public List<BakedQuad> getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand)
{
return Blocks.LEAVES.isOpaqueCube(null) ? fastModel.getQuads(state, side, rand) : super.getQuads(state, side, rand);
}
}
private static Map<EnumFacing, List<BakedQuad>> generateFacingQuads(IBakedModel model)
{
Map<EnumFacing, List<BakedQuad>> faceQuads = Maps.newEnumMap(EnumFacing.class);
for (EnumFacing facing : EnumFacing.values())
{
faceQuads.put(facing, model.getQuads(null, facing, 0));
}
return faceQuads;
}
}

View File

@ -364,8 +364,6 @@ public class ModCrafting
for (BOPGems gem : BOPGems.values())
{
// TODO: for some reason, Amethyst was not included in these sections in the 1.7 code - check this is correct, deliberate behavior
if (gem == BOPGems.AMETHYST) {continue;}
String gemName = CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, gem.name());
OreDictionary.registerOre("gem"+gemName, new ItemStack(BOPItems.gem, 1, gem.ordinal()));
OreDictionary.registerOre("ore"+gemName, new ItemStack(BOPBlocks.gem_ore , 1, gem.ordinal()));

View File

@ -53,5 +53,6 @@ public class ModHandlers
{
MinecraftForge.EVENT_BUS.register(new GuiEventHandler());
MinecraftForge.EVENT_BUS.register(new TrailsEventHandler());
MinecraftForge.EVENT_BUS.register(new LeavesModelHandler());
}
}

View File

@ -30,10 +30,13 @@ import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemSeeds;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.EnumPlantType;
import net.minecraftforge.common.IPlantable;
public class BlockQuery
{
@ -287,24 +290,18 @@ public class BlockQuery
}
else
{
// Otherwise fall back to the vanilla code
switch (this.plantType)
{
case Desert: return block == Blocks.SAND || block == Blocks.HARDENED_CLAY || block == Blocks.STAINED_HARDENED_CLAY || block == Blocks.DIRT;
case Nether: return block == Blocks.SOUL_SAND;
case Crop: return block == Blocks.FARMLAND || block == BOPBlocks.farmland_0 || block == BOPBlocks.farmland_1;
case Cave: return block.isSideSolid(state, world, pos, EnumFacing.UP);
case Plains: return block == Blocks.GRASS || block == Blocks.DIRT || block == Blocks.FARMLAND || block == BOPBlocks.farmland_0 || block == BOPBlocks.farmland_1 || block == Blocks.MYCELIUM;
case Water: return state.getMaterial() == Material.WATER && ((Integer)state.getValue(BlockLiquid.LEVEL)) == 0;
case Beach:
boolean isBeach = block == Blocks.GRASS || block == Blocks.DIRT || block == Blocks.SAND || block == Blocks.MYCELIUM;
boolean hasWater = (world.getBlockState(pos.east()).getMaterial() == Material.WATER ||
world.getBlockState(pos.west()).getMaterial() == Material.WATER ||
world.getBlockState(pos.north()).getMaterial() == Material.WATER ||
world.getBlockState(pos.south()).getMaterial() == Material.WATER);
return isBeach && hasWater;
}
return false;
// Otherwise fall back to the Forge's canSustainPlant
return block.canSustainPlant(state, world, pos, EnumFacing.UP, new IPlantable() {
@Override
public EnumPlantType getPlantType(IBlockAccess world, BlockPos pos) {
return plantType;
}
@Override
public IBlockState getPlant(IBlockAccess world, BlockPos pos) {
return world.getBlockState(pos);
}
});
}
}
}

View File

@ -30,6 +30,6 @@ public class PlayerUtil
return hand;
}
return null;
return EnumHand.MAIN_HAND;
}
}

View File

@ -114,7 +114,14 @@ public class BOPWorldSettings implements IBOPWorldSettings
public int lavaLakeChance;
public boolean useLavaOceans;
public float coordinateScale;
public float heightScale;
public float upperLimitScale;
public float lowerLimitScale;
public float mainNoiseScaleX;
public float mainNoiseScaleY;
public float mainNoiseScaleZ;
public BOPWorldSettings()
{
this.setDefault();
@ -154,7 +161,14 @@ public class BOPWorldSettings implements IBOPWorldSettings
obj.addProperty("generateNetherHives", this.generateNetherHives);
obj.addProperty("generateNetherPlants", this.generateNetherPlants);
obj.addProperty("generateEndFeatures", this.generateEndFeatures);
obj.addProperty("mainNoiseScaleX", this.mainNoiseScaleX);
obj.addProperty("mainNoiseScaleY", this.mainNoiseScaleY);
obj.addProperty("mainNoiseScaleZ", this.mainNoiseScaleZ);
obj.addProperty("coordinateScale", this.coordinateScale);
obj.addProperty("heightScale", this.heightScale);
obj.addProperty("upperLimitScale", this.upperLimitScale);
obj.addProperty("lowerLimitScale", this.lowerLimitScale);
return serializer.toJson(obj);
}
@ -190,6 +204,13 @@ public class BOPWorldSettings implements IBOPWorldSettings
this.generateNetherHives = worldConfig.getBool("generateNetherHives", this.generateNetherHives);
this.generateNetherPlants = worldConfig.getBool("generateNetherPlants", this.generateNetherPlants);
this.generateEndFeatures = worldConfig.getBool("generateEndFeatures", this.generateEndFeatures);
this.mainNoiseScaleX = worldConfig.getFloat("mainNoiseScaleX", this.mainNoiseScaleX);
this.mainNoiseScaleY = worldConfig.getFloat("mainNoiseScaleY", this.mainNoiseScaleY);
this.mainNoiseScaleZ = worldConfig.getFloat("mainNoiseScaleZ", this.mainNoiseScaleZ);
this.coordinateScale = worldConfig.getFloat("coordinateScale", this.coordinateScale);
this.heightScale = worldConfig.getFloat("heightScale", this.heightScale);
this.upperLimitScale = worldConfig.getFloat("upperLimitScale", this.upperLimitScale);
this.lowerLimitScale = worldConfig.getFloat("lowerLimitScale", this.lowerLimitScale);
}
public void setDefault()
@ -238,8 +259,15 @@ public class BOPWorldSettings implements IBOPWorldSettings
this.useLavaLakes = true;
this.lavaLakeChance = 80;
this.useLavaOceans = false;
this.mainNoiseScaleX = 80.0F;
this.mainNoiseScaleY = 160.0F;
this.mainNoiseScaleZ = 80.0F;
this.coordinateScale = 684.412F;
this.heightScale = 684.412F;
this.upperLimitScale = 512.0F;
this.lowerLimitScale = 512.0F;
// Allow defaults to be overridden from file
IConfigObj worldConfig = new BOPConfig.ConfigFileObj(new File(BiomesOPlenty.configDirectory, "world.json"));
this.fromConfigObj(worldConfig);
@ -296,4 +324,4 @@ public class BOPWorldSettings implements IBOPWorldSettings
return true;
}
}
}
}

View File

@ -379,13 +379,13 @@ public class ChunkProviderGenerateBOP implements IChunkGenerator
Biome[] biomes = this.worldObj.getBiomeProvider().getBiomesForGeneration(null, chunkX * 4 - 2, chunkZ * 4 - 2, 10, 10);
// values from vanilla
float coordinateScale = 684.412F;
float heightScale = 684.412F;
double upperLimitScale = 512.0D;
double lowerLimitScale = 512.0D;
float mainNoiseScaleX = 80.0F;
float mainNoiseScaleY = 160.0F;
float mainNoiseScaleZ = 80.0F;
float coordinateScale = this.settings.coordinateScale;
float heightScale = this.settings.heightScale;
double upperLimitScale = this.settings.upperLimitScale;
double lowerLimitScale = this.settings.lowerLimitScale;
float mainNoiseScaleX = this.settings.mainNoiseScaleX;
float mainNoiseScaleY = this.settings.mainNoiseScaleY;
float mainNoiseScaleZ = this.settings.mainNoiseScaleZ;
int subchunkX = chunkX * 4;
int subchunkY = 0;
@ -638,4 +638,4 @@ public class ChunkProviderGenerateBOP implements IChunkGenerator
this.oceanMonumentGenerator.generate(this.worldObj, p_180514_2_, p_180514_3_, (ChunkPrimer)null);
}
}
}
}

View File

@ -575,8 +575,11 @@ public class GeneratorBigTree extends GeneratorTreeBase
this.minHeight = heights.getLeft();
this.maxHeight = heights.getRight();
this.placeOn = conf.getBlockPosQuery("placeOn", this.placeOn);
this.log = conf.getBlockState("logState", this.log);
this.leaves = conf.getBlockState("leavesState", this.leaves);
this.foliageHeight = conf.getInt("foliageHeight", this.foliageHeight);
this.foliageDensity = conf.getFloat("foliageDensity", (float)this.foliageDensity);
}
}

View File

@ -0,0 +1,468 @@
achievement.obtain_flowers=Enfant fleur
achievement.obtain_flowers.desc=Trouvez une fleur !
achievement.obtain_berry=Bienfait de groseille
achievement.obtain_berry.desc=Prenez une groseille d'un groseiller
achievement.obtain_coral=Corail totalement !
achievement.obtain_coral.desc=Plongez profondément pour du corail
achievement.obtain_miners_delight=La vie trouve un chemin
achievement.obtain_miners_delight.desc=Trouver une fleur délice de mineur au fond d'une cave
achievement.eat_shroom_powder=J'vole
achievement.eat_shroom_powder.desc=Ingérez un peu de poudre de champignon magique
achievement.obtain_turnip=Marché de tige
achievement.obtain_turnip.desc=Ramssez un navet
achievement.grow_sacred_oak=Yggdrasil
achievement.grow_sacred_oak.desc=Plantez un plant de chêne sacré
achievement.craft_flax_string=Folie de lin
achievement.craft_flax_string.desc=Bricolez des plantes de lin en ficelle de lin
achievement.craft_muddy_pickaxe=Obtenir une dégradation
achievement.craft_muddy_pickaxe.desc=Construisez une...pioche en boue...?
achievement.obtain_thorn=Rather Thorny
achievement.obtain_thorn.desc=Collect a prickly thorn!
achievement.obtain_deathbloom=I am Become Death
achievement.obtain_deathbloom.desc=Acquire a deadly deathbloom
achievement.obtain_honeycomb=Honeycomb's Big
achievement.obtain_honeycomb.desc=Steal a filled honeycomb from a Nether wasp hive
achievement.obtain_soul=Soul Searching
achievement.obtain_soul.desc=Reclaim a lost soul
achievement.obtain_wilted_lily=Godsend
achievement.obtain_wilted_lily.desc=Rescue a wilted lily flower
achievement.obtain_pixie_dust=Don't Breathe This
achievement.obtain_pixie_dust.desc=Kill a pixie and collect its magical dust
achievement.obtain_celestial_crystal=Far Out...
achievement.obtain_celestial_crystal.desc=Mine a celestial crystal in the End
achievement.craft_terrestrial_artifact=Your Powers Combined
achievement.craft_terrestrial_artifact.desc=Combine all 8 biome-exclusive gems together
achievement.craft_ambrosia=Nectar of the Gods
achievement.craft_ambrosia.desc=Sugar, water, honey, berries, roots, kelp, ichor, pixie dust, and celestial crystals!
achievement.explore_all_biomes=The Wanderer
achievement.explore_all_biomes.desc=Truly discover all biomes
achievement.use_enderporter=Gone Home
achievement.use_enderporter.desc=Travel back to the origin point with an enderporter
achievement.use_biome_finder=Search Party
achievement.use_biome_finder.desc=Use the biome finder to locate a biome
biome_finder.searching=Searching for %s
biome_finder.found=Found %s!
biome_finder.not_found=Not found, maybe %s is too far away
config.category.convenienceSettings.title=Convenience Settings
config.category.guiSettings.title=GUI Settings
config.category.textureSettings.title=Texture Settings
config.category.trailSettings.title=Trail Settings
config.category.convenienceSettings.tooltip=Require shears to be used to collect flower drops.
config.category.guiSettings.tooltip=Use the Biomes O' Plenty World Type by default when selecting a world.
config.category.textureSettings.tooltip=Override the Forge bucket texture and use ours instead (It's nicer!)
config.category.trailSettings.tooltip=Modify Trail Visibility
commands.biomesoplenty.usage=/biomesoplenty <tpbiome|biomename|stripchunk> [args]
commands.biomesoplenty.biomename.usage=/biomesoplenty biomename [biomeId]
commands.biomesoplenty.biomename.success=Biome ID %s is associated with %s
commands.biomesoplenty.tpbiome.usage=/biomesoplenty tpbiome [biomeId]
commands.biomesoplenty.tpbiome.success=Teleported %s to biome %s at (%s, %s, %s)
commands.biomesoplenty.tpbiome.error=Couldn't find biome %s!
commands.biomesoplenty.stats.blocks=Blocks: %s
commands.biomesoplenty.stats.items=Items: %s
commands.biomesoplenty.stats.entities=Entities: %s
commands.biomesoplenty.stats.biomes=Biomes: %s
commands.biomesoplenty.stripchunk.usage=/biomesoplenty stripchunk [radius] <include|exclude> [block] [metadata]
container.flower_basket=Flower Basket
generator.BIOMESOP=Biomes O' Plenty
generator.BIOMESOP.info=Notice: Biomes O' Plenty 1.8 is in a very early state
itemGroup.tabBiomesOPlenty=Biomes O' Plenty
fluid.blood=Bloodfluid.honey=Honey
fluid.hot_spring_water=Hot Spring Water
fluid.poison=Poison
fluid.sand=Quicksand
item.forge.bucketFilled.name=%s Bucket
item.ambrosia.name=Ambrosia
item.ash.name=Pile of Ashes
item.berries.name=Berry
item.biome_essence.name=Biome Essence
item.biome_finder.name=Biome Finder
item.black_dye.name=Black Dye
item.blue_dye.name=Blue Dye
item.brown_dye.name=Brown Dye
item.cherry_door.name=Cherry Door
item.crystal_shard.name=Celestial Crystal Shard
item.terrestrial_artifact.name=Terrestrial Artifact
item.flax_string.name=Flax String
item.diamond_scythe.name=Diamond Scythe
item.dull_flower_band.name=Dull Flower Band
item.ebony_door.name=Ebony Door
item.enderporter.name=Enderporter
item.ethereal_door.name=Ethereal Door
item.eucalyptus_door.name=Eucalyptus Door
item.exotic_flower_band.name=Exotic Flower Band
item.filled_honeycomb.name=Filled Honeycomb
item.fir_door.name=Fir Door
item.fleshchunk.name=Chunk of Flesh
item.flippers.name=Flippers
item.flower_basket.name=Flower Basket
item.gem_amber.name=Amber
item.gem_amethyst.name=Ender Amethyst
item.gem_malachite.name=Malachite
item.gem_peridot.name=Peridot
item.gem_ruby.name=Ruby
item.gem_sapphire.name=Sapphir
eitem.gem_tanzanite.name=Tanzanite
item.gem_topaz.name=Topaz
item.green_dye.name=Green Dye
item.gold_scythe.name=Golden Scythe
item.hellbark_door.name=Hellbark Door
item.honeycomb.name=Empty Honeycomb
item.ichor.name=Ichor
item.iron_scythe.name=Iron Scythe
item.jacaranda_door.name=Jacaranda Door
item.jar_empty.name=Empty Jar
item.jar_filled_honey.name=Honey Jar
item.jar_filled_pixie.name=Pixie Jar
item.jar_filled_butterfly.name=Butterfly Jar
item.lush_flower_band.name=Lush Flower Band
item.magic_door.name=Magic Door
item.mahogany_door.name=Mahogany Door
item.mangrove_door.name=Mangrove Door
item.mudball.name=Mud Ball
item.mud_axe.name=Muddy Axe
item.mud_boots.name=Muddy Boots
item.mud_brick.name=Mud Brick
item.mud_chestplate.name=Muddy Chestplate
item.mud_helmet.name=Muddy Helmet
item.mud_hoe.name=Muddy Hoe
item.mud_leggings.name=Muddy Leggings
item.mud_pickaxe.name=Muddy Pickaxe
item.mud_scythe.name=Muddy Scythe
item.mud_shovel.name=Muddy Shovel
item.mud_sword.name=Muddy Sword
item.palm_door.name=Palm Door
item.persimmon.name=Persimmon
item.peach.name=Peach
item.pear.name=Pear
item.pinecone.name=Pinecone
item.pine_door.name=Pine Door
item.pixie_dust.name=Pixie Dust
item.plain_flower_band.name=Plain Flower Band
item.record_corruption.name=Music Disc
item.record.corruption.desc=???
item.record_wanderer.name=Music Disc
item.record.wanderer.desc=Tim Rurkowski - Wanderer
item.redwood_door.name=Redwood Door
item.ricebowl.name=Bowl of Rice
item.sacred_oak_door.name=Sacred Oak Door
item.saladfruit.name=Fruit Salad
item.saladveggie.name=Veggie Salad
item.saladshroom.name=Shroom Salad
item.shroompowder.name=Shroom Powder
item.soul.name=Soul
item.spawn_egg_pixie.name=Spawn Pixie
item.spawn_egg_wasp.name=Spawn Wasp
item.spawn_egg_snail.name=Spawn Snail
item.spawn_egg_butterfly.name=Spawn Butterfly
item.stone_scythe.name=Stone Scythe
item.turnip.name=Turnip
item.turnip_seeds.name=Turnip Seeds
item.umbran_door.name=Umbran Door
item.wading_boots.name=Wading Boots
item.white_dye.name=White Dye
item.willow_door.name=Willow Door
item.wood_scythe.name=Wooden Scythe
tile.ash_block.name=Ash Block
tile.bamboo.name=Bamboo
tile.bamboo_thatching.name=Bamboo Thatching
tile.biome_block.name=Biome Essence Ore
tile.cherry_fence.name=Cherry Fence
tile.cherry_fence_gate.name=Cherry Fence Gate
tile.cherry_wood_slab.name=Cherry Wood Slab
tile.cherry_stairs.name=Cherry Wood Stairs
tile.coral.pink_coral.name=Pink Coral
tile.coral.orange_coral.name=Orange Coral
tile.coral.blue_coral.name=Blue Coral
tile.coral.glowing_coral.name=Glowing Coral
tile.coral.algae.name=Algae
tile.dirt.loamy_dirt.name=Loamy Dirt
tile.dirt.sandy_dirt.name=Sandy Dirt
tile.dirt.silty_dirt.name=Silty Dirt
tile.dirt.coarse_loamy_dirt.name=Coarse Loamy Dirt
tile.dirt.coarse_sandy_dirt.name=Coarse Sandy Dirt
tile.dirt.coarse_silty_dirt.name=Coarse Silty Dirt
tile.double_plant.flax.name=Flax
tile.double_plant.tall_cattail.name=Tall Cattail
tile.double_plant.eyebulb.name=Eyebulb
tile.ebony_fence.name=Ebony Fence
tile.ebony_fence_gate.name=Ebony Fence Gate
tile.ebony_wood_slab.name=Ebony Wood Slab
tile.ebony_stairs.name=Ebony Wood Stairs
tile.ethereal_fence.name=Ethereal Fence
tile.ethereal_fence_gate.name=Ethereal Fence Gate
tile.ethereal_wood_slab.name=Ethereal Wood Slab
tile.ethereal_stairs.name=Ethereal Wood Stairs
tile.eucalyptus_fence.name=Eucalyptus Fence
tile.eucalyptus_fence_gate.name=Eucalyptus Fence Gate
tile.eucalyptus_wood_slab.name=Eucalyptus Wood Slab
tile.eucalyptus_stairs.name=Eucalyptus Wood Stairs
tile.farmland_0.loamy_farmland.name=Loamy Farmland
tile.farmland_0.sandy_farmland.name=Sandy Farmland
tile.farmland_1.silty_farmland.name=Silty Farmland
tile.fir_fence.name=Fir Fence
tile.fir_fence_gate.name=Fir Fence Gate
tile.fir_wood_slab.name=Fir Wood Slab
tile.fir_stairs.name=Fir Wood Stairs
tile.flesh.name=Flesh
tile.flower_0.clover.name=Clover
tile.flower_0.swampflower.name=Swampflower
tile.flower_0.deathbloom.name=Deathbloom
tile.flower_0.glowflower.name=Glowflower
tile.flower_0.blue_hydrangea.name=Blue Hydrangea
tile.flower_0.orange_cosmos.name=Orange Cosmos
tile.flower_0.pink_daffodil.name=Pink Dafodil
tile.flower_0.wildflower.name=Wildflower
tile.flower_0.violet.name=Violet
tile.flower_0.white_anemone.name=White Anemone
tile.flower_0.enderlotus.name=Enderlotus
tile.flower_0.bromeliad.name=Bromeliad
tile.flower_0.wilted_lily.name=Wilted Lily
tile.flower_0.pink_hibiscus.name=Pink Hibiscus
tile.flower_0.lily_of_the_valley.name=Lily of the Valley
tile.flower_0.burning_blossom.name=Burning Blossom
tile.flower_1.lavender.name=Lavender
tile.flower_1.goldenrod.name=Goldenrod
tile.flower_1.bluebells.name=Bluebells
tile.flower_1.miners_delight.name=Miner's Delight
tile.flower_1.icy_iris.name=Icy Iris
tile.flower_1.rose.name=Rose
tile.flower_vine.name=Flowering Vines
tile.gem_block.amethyst_block.name=Block of Amethyst
tile.gem_block.ruby_block.name=Block of Ruby
tile.gem_block.peridot_block.name=Block of Peridot
tile.gem_block.topaz_block.name=Block of Topaz
tile.gem_block.tanzanite_block.name=Block of Tanzanite
tile.gem_block.malachite_block.name=Block of Malachite
tile.gem_block.sapphire_block.name=Block of Sapphire
tile.gem_block.amber_block.name=Block of Amber
tile.gem_ore.amethyst_ore.name=Ender Amethyst Ore
tile.gem_ore.ruby_ore.name=Ruby Ore
tile.gem_ore.peridot_ore.name=Peridot Ore
tile.gem_ore.topaz_ore.name=Topaz Ore
tile.gem_ore.tanzanite_ore.name=Tanzanite Ore
tile.gem_ore.malachite_ore.name=Malachite Ore
tile.gem_ore.sapphire_ore.name=Sapphire Ore
tile.gem_ore.amber_ore.name=Amber Ore
tile.grass.daisy_grass_block.name=Flowering Grass Bloock
tile.grass.spectral_moss.name=Spectral Moss
tile.grass.overgrown_stone.name=Overgrown Stone
tile.grass.loamy_grass_block.name=Loamy Grass Block
tile.grass.sandy_grass_block.name=Sandy Grass Block
tile.grass.silty_grass_block.name=Silty Grass Block
tile.grass.origin_grass_block.name=Origin Grass Block
tile.grass.overgrown_netherrack.name=Overgrown Netherrack
tile.grass_path.grass_loamy_path.name=Loamy Grass Path
tile.grass_path.grass_sandy_path.name=Sandy Grass Path
tile.grass_path.grass_silty_path.name=Silty Grass Path
tile.hellbark_fence.name=Hellbark Fence
tile.hellbark_fence_gate.name=Hellbark Fence Gate
tile.hellbark_wood_slab.name=Hellbark Wood Slab
tile.hellbark_stairs.name=Hellbark Wood Stairs
tile.hive.hive_block.name=Hive Block
tile.hive.honeycomb_block.name=Honeycomb Block
tile.hive.empty_honeycomb_block.name=Empty Honeycomb Block
tile.hive.filled_honeycomb_block.name=Filled Honeycomb Block
tile.honey_block.name=Honey Block
tile.ivy.name=Ivy
tile.jacaranda_fence.name=Jacaranda Fence
tile.jacaranda_fence_gate.name=Jacaranda Fence Gate
tile.jacaranda_wood_slab.name=Jacaranda Wood Slab
tile.jacaranda_stairs.name=Jacaranda Wood Stairs
tile.jelled_poison.name=Jelled Poison
tile.leaves_0.yellow_autumn_leaves.name=Yellow Autumn Leaves
tile.leaves_0.orange_autumn_leaves.name=Orange Autumn Leaves
tile.leaves_0.bamboo_leaves.name=Bamboo Leaves
tile.leaves_0.magic_leaves.name=Magic Leaves
tile.leaves_1.umbran_leaves.name=Umbran Leaves
tile.leaves_1.dead_leaves.name=Dead Leaves
tile.leaves_1.fir_leaves.name=Fir Leaves
tile.leaves_1.ethereal_leaves.name=Ethereal Leaves
tile.leaves_2.origin_leaves.name=Origin Leaves
tile.leaves_2.pink_cherry_leaves.name=Pink Cherry Leaves
tile.leaves_2.white_cherry_leaves.name=White Cherry Leaves
tile.leaves_2.maple_leaves.name=Maple Leaves
tile.leaves_3.hellbark_leaves.name=Hellbark Leaves
tile.leaves_3.flowering_leaves.name=Flowering Oak Leaves
tile.leaves_3.jacaranda_leaves.name=Jacaranda Leaves
tile.leaves_3.sacred_oak_leaves.name=Sacred Oak Leaves
tile.leaves_4.mangrove_leaves.name=Mangrove Leaves
tile.leaves_4.palm_leaves.name=Palm Leaves
tile.leaves_4.redwood_leaves.name=Redwood Leaves
tile.leaves_4.willow_leaves.name=Willow Leaves
tile.leaves_5.pine_leaves.name=Pine Leaves
tile.leaves_5.mahogany_leaves.name=Mahogany Leaves
tile.leaves_5.ebony_leaves.name=Ebony Leaves
tile.leaves_5.eucalyptus_leaves.name=Eucalyptus Leaves
tile.leaves_6.red_big_flower_petal.name=Giant Red Flower Petal
tile.leaves_6.yellow_big_flower_petal.name=Giant Yellow Flower Petal
tile.log_0.sacred_oak_log.name=Sacred Oak Wood
tile.log_0.cherry_log.name=Cherry Wood
tile.log_0.umbran_log.name=Umbran Wood
tile.log_0.fir_log.name=Fir Wood
tile.log_1.ethereal_log.name=Ethereal Wood
tile.log_1.magic_log.name=Magic Wood
tile.log_1.mangrove_log.name=Mangrove Wood
tile.log_1.palm_log.name=Palm Wood
tile.log_2.redwood_log.name=Redwood Wood
tile.log_2.willow_log.name=Willow Wood
tile.log_2.pine_log.name=Pine Wood
tile.log_2.hellbark_log.name=Hellbark Wood
tile.log_3.jacaranda_log.name=Jacaranda Wood
tile.log_3.mahogany_log.name=Mahogany Wood
tile.log_3.ebony_log.name=Ebony Wood
tile.log_3.eucalyptus_log.name=Eucalyptus Wood
tile.log_4.giant_flower_stem.name=Giant Flower Stem
tile.log_4.dead_log.name=Dead Wood
tile.magic_fence.name=Magic Fence
tile.magic_fence_gate.name=Magic Fence Gate
tile.magic_wood_slab.name=Magic Wood Slab
tile.magic_stairs.name=Magic Wood Stairs
tile.mahogany_fence.name=Mahogany Fence
tile.mahogany_fence_gate.name=Mahogany Fence Gate
tile.mahogany_wood_slab.name=Mahogany Wood Slab
tile.mahogany_stairs.name=Mahogany Wood Stairs
tile.mangrove_fence.name=Mangrove Fence
tile.mangrove_fence_gate.name=Mangrove Fence Gate
tile.mangrove_wood_slab.name=Mangrove Wood Slab
tile.mangrove_stairs.name=Mangrove Wood Stairs
tile.mud.mud.name=Mud
tile.mud_brick_block.name=Mud Bricks
tile.mud_brick_slab.name=Mud Bricks Slab
tile.mud_brick_stairs.name=Mud Bricks Stairs
tile.mushroom.toadstool.name=Toadstool
tile.mushroom.portobello.name=Portobello
tile.mushroom.blue_milk_cap.name=Blue Milk Cap
tile.mushroom.glowshroom.name=Glowshroom
tile.mushroom.flat_mushroom.name=Flat Mushroom
tile.mushroom.shadow_shroom.name=Shadow Shroom
tile.palm_fence.name=Palm Fence
tile.palm_fence_gate.name=Palm Fence Gate
tile.palm_wood_slab.name=Palm Wood Slab
tile.palm_stairs.name=Palm Wood Stairs
tile.pine_fence.name=Pine Fence
tile.pine_fence_gate.name=Pine Fence Gate
tile.pine_wood_slab.name=Pine Wood Slab
tile.pine_stairs.name=Pine Wood Stairs
tile.planks_0.sacred_oak_planks.name=Sacred Oak Wood Planks
tile.planks_0.cherry_planks.name=Cherry Wood Planks
tile.planks_0.umbran_planks.name=Umbran Wood Planks
tile.planks_0.fir_planks.name=Fir Wood Planks
tile.planks_0.ethereal_planks.name=Ethereal Wood Planks
tile.planks_0.magic_planks.name=Magic Wood Planks
tile.planks_0.mangrove_planks.name=Mangrove Wood Planks
tile.planks_0.palm_planks.name=Palm Wood Planks
tile.planks_0.redwood_planks.name=Redwood Wood Planks
tile.planks_0.willow_planks.name=Willow Wood Planks
tile.planks_0.bamboo_thatching.name=Bamboo Thatching
tile.planks_0.pine_planks.name=Pine Wood Planks
tile.planks_0.hellbark_planks.name=Hellbark Wood Planks
tile.planks_0.jacaranda_planks.name=Jacaranda Wood Planks
tile.planks_0.mahogany_planks.name=Mahogany Wood Planks
tile.planks_0.ebony_planks.name=Ebony Wood Planks
tile.planks_0.eucalyptus_planks.name=Eucalyptus Wood Planks
tile.plant_0.shortgrass.name=Short Grass
tile.plant_0.mediumgrass.name=Medium Grass
tile.plant_0.bush.name=Bush
tile.plant_0.sprout.name=Sprou
ttile.plant_0.poisonivy.name=Poison Ivy
tile.plant_0.berrybush.name=Berry Bush
tile.plant_0.shrub.name=Shrub
tile.plant_0.wheatgrass.name=Wheat Grass
tile.plant_0.dampgrass.name=Damp Grass
tile.plant_0.koru.name=Koru
tile.plant_0.cloverpatch.name=Clover Patch
tile.plant_0.leafpile.name=Leaf Pile
tile.plant_0.deadleafpile.name=Dead Leaf Pile
tile.plant_0.deadgrass.name=Dead Grass
tile.plant_0.desertgrass.name=Desert Grass
tile.plant_0.desertsprouts.name=Desert Sprouts
tile.plant_1.dunegrass.name=Dune Grass
tile.plant_1.spectralfern.name=Spectral Fern
tile.plant_1.thorn.name=Thorns
tile.plant_1.wildrice.name=Wild Rice
tile.plant_1.cattail.name=Cattail
tile.plant_1.rivercane.name=River Cane
tile.plant_1.tinycactus.name=Tiny Cactus
tile.plant_1.witherwart.name=Wither Wart
tile.plant_1.reed.name=Reed
tile.plant_1.root.name=Root
tile.plant_1.rafflesia.name=Rafflesia
tile.redwood_fence.name=Redwood Fence
tile.redwood_fence_gate.name=Redwood Fence Gate
tile.redwood_wood_slab.name=Redwood Wood Slab
tile.redwood_stairs.name=Redwood Wood Stairs
tile.sacred_oak_fence.name=Sacred Oak Fence
tile.sacred_oak_fence_gate.name=Sacred Oak Fence Gate
tile.sacred_oak_wood_slab.name=Sacred Oak Wood Slab
tile.sacred_oak_stairs.name=Sacred Oak Wood Stairs
tile.sapling_0.yellow_autumn_sapling.name=Yellow Autumn Sapling
tile.sapling_0.orange_autumn_sapling.name=Orange Autumn Sapling
tile.sapling_0.bamboo_sapling.name=Bamboo Sapling
tile.sapling_0.magic_sapling.name=Magic Sapling
tile.sapling_0.umbran_sapling.name=Umbran Sapling
tile.sapling_0.dead_sapling.name=Dead Sapling
tile.sapling_0.fir_sapling.name=Fir Sapling
tile.sapling_0.ethereal_sapling.name=Ethereal Sapling
tile.sapling_1.origin_sapling.name=Origin Sapling
tile.sapling_1.pink_cherry_sapling.name=Pink Cherry Sapling
tile.sapling_1.white_cherry_sapling.name=White Cherry Sapling
tile.sapling_1.maple_sapling.name=Maple Sapling
tile.sapling_1.hellbark_sapling.name=Hellbark Sapling
tile.sapling_1.flowering_sapling.name=Flowering Oak Sapling
tile.sapling_1.jacaranda_sapling.name=Jacaranda Sapling
tile.sapling_1.sacred_oak_sapling.name=Sacred Oak Sapling
tile.sapling_2.mangrove_sapling.name=Mangrove Sapling
tile.sapling_2.palm_sapling.name=Palm Sapling
tile.sapling_2.redwood_sapling.name=Redwood Sapling
tile.sapling_2.willow_sapling.name=Willow Sapling
tile.sapling_2.pine_sapling.name=Pine Sapling
tile.sapling_2.mahogany_sapling.name=Mahogany Sapling
tile.sapling_2.ebony_sapling.name=Ebony Sapling
tile.sapling_2.eucalyptus_sapling.name=Eucalyptus Sapling
tile.seaweed.kelp.name=Kelp
tile.stone.limestone.name=Limestone
tile.stone.polished_limestone.name=Polished Limestone
tile.stone.siltstone.name=Siltstone
tile.stone.polished_siltstone.name=Polished Siltstone
tile.stone.shale.name=Shale
tile.stone.polished_shale.name=Polished Shale
tile.stone_formations.stone_formation.name=Rock Formation
tile.terrarium.terrarium_fern.name=Fern Terrarium
tile.terrarium.terrarium_mushroom.name=Mushroom Terrarium
tile.terrarium.terrarium_cactus.name=Cactus Terrarium
tile.terrarium.terrarium_flax.name=Flax Terrarium
tile.terrarium.terrarium_flower.name=Flower Terrarium
tile.terrarium.terrarium_koru.name=Koru Terrarium
tile.terrarium.terrarium_bamboo.name=Bamboo Terrarium
tile.terrarium.terrarium_sapling.name=Sapling Terrarium
tile.terrarium.terrarium_glowshroom.name=Glowshroom Terrarium
tile.terrarium.terrarium_dead.name=Dead Terrarium
tile.terrarium.terrarium_mystic.name=Mystic Terrarium
tile.terrarium.terrarium_ominous.name=Ominous Terrarium
tile.terrarium.terrarium_wasteland.name=Wasteland Terrarium
tile.terrarium.terrarium_origin.name=Origin Terrarium
tile.terrarium.terrarium_nether.name=Nether Terrarium
tile.terrarium.terrarium_ender.name=Ender Terrarium
tile.tree_moss.name=Tree Moss
tile.turnip_block.name=Turnip
tile.umbran_fence.name=Umbran Fence
tile.umbran_fence_gate.name=Umbran Fence Gate
tile.umbran_wood_slab.name=Umbran Wood Slab
tile.umbran_stairs.name=Umbran Wood Stairs
tile.waterlily.lily_medium.name=Medium Lily Pad
tile.waterlily.lily_small.name=Small Lily Pad
tile.waterlily.lily_tiny.name=Tiny Lily Pad
tile.waterlily.lily_flower.name=Flowered Lily Pad
tile.willow_fence.name=Willow Fence
tile.willow_fence_gate.name=Willow Fence Gate
tile.willow_wood_slab.name=Willow Wood Slab
tile.willow_stairs.name=Willow Wood Stairs
tile.hard_ice.name=Hardened Ice
tile.dried_sand.name=Dried Sand
tile.crag_rock.name=Crag Rock
tile.mud_brick.name=Mud Bricks
tile.crystal.name=Celestial Crystal
entity.BiomesOPlenty.butterfly.name=Butterfly
entity.BiomesOPlenty.pixie.name=Pixie
entity.BiomesOPlenty.snail.name=Snail
entity.BiomesOPlenty.wasp.name=Wasp

View File

@ -0,0 +1,6 @@
{
"parent": "block/leaves",
"textures": {
"all": "biomesoplenty:blocks/leaves_flowering_fast"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 B