mirror of
https://github.com/Ellpeck/NaturesAura.git
synced 2024-11-26 05:08:34 +01:00
added aura bloom
This commit is contained in:
parent
2505975c32
commit
a4f0f509e8
23 changed files with 352 additions and 6 deletions
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "naturesaura:block/aura_bloom"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "naturesaura:block/potted_aura_bloom"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cross",
|
||||||
|
"textures": {
|
||||||
|
"cross": "naturesaura:block/aura_bloom"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/flower_pot_cross",
|
||||||
|
"textures": {
|
||||||
|
"plant": "naturesaura:block/aura_bloom"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "naturesaura:block/aura_bloom"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "naturesaura:block/potted_aura_bloom"
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "naturesaura:aura_bloom"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "minecraft:flower_pot"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rolls": 1,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "naturesaura:aura_bloom"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -38,6 +38,7 @@ public final class ModConfig {
|
||||||
public ForgeConfigSpec.ConfigValue<Boolean> breathlessEffect;
|
public ForgeConfigSpec.ConfigValue<Boolean> breathlessEffect;
|
||||||
public ForgeConfigSpec.ConfigValue<Boolean> animalEffect;
|
public ForgeConfigSpec.ConfigValue<Boolean> animalEffect;
|
||||||
public ForgeConfigSpec.ConfigValue<Boolean> oreEffect;
|
public ForgeConfigSpec.ConfigValue<Boolean> oreEffect;
|
||||||
|
public ForgeConfigSpec.ConfigValue<Boolean> auraBlooms;
|
||||||
|
|
||||||
public ForgeConfigSpec.ConfigValue<Double> particleAmount;
|
public ForgeConfigSpec.ConfigValue<Double> particleAmount;
|
||||||
public ForgeConfigSpec.ConfigValue<Boolean> respectVanillaParticleSettings;
|
public ForgeConfigSpec.ConfigValue<Boolean> respectVanillaParticleSettings;
|
||||||
|
@ -119,6 +120,10 @@ public final class ModConfig {
|
||||||
.comment("If the Aura Imbalance effect of ores spawning in the area if Aura levels are too high should occur")
|
.comment("If the Aura Imbalance effect of ores spawning in the area if Aura levels are too high should occur")
|
||||||
.translation("config." + NaturesAura.MOD_ID + ".oreEffect")
|
.translation("config." + NaturesAura.MOD_ID + ".oreEffect")
|
||||||
.define("oreEffect", true);
|
.define("oreEffect", true);
|
||||||
|
this.auraBlooms = builder
|
||||||
|
.comment("If Aura Blooms should generate in the world")
|
||||||
|
.translation("config." + NaturesAura.MOD_ID + ".auraBlooms")
|
||||||
|
.define("auraBlooms", true);
|
||||||
builder.pop();
|
builder.pop();
|
||||||
|
|
||||||
builder.push("client");
|
builder.push("client");
|
||||||
|
|
|
@ -2,6 +2,7 @@ package de.ellpeck.naturesaura.blocks;
|
||||||
|
|
||||||
import de.ellpeck.naturesaura.data.BlockStateGenerator;
|
import de.ellpeck.naturesaura.data.BlockStateGenerator;
|
||||||
import de.ellpeck.naturesaura.data.ItemModelGenerator;
|
import de.ellpeck.naturesaura.data.ItemModelGenerator;
|
||||||
|
import de.ellpeck.naturesaura.gen.ModFeatures;
|
||||||
import de.ellpeck.naturesaura.gen.WorldGenAncientTree;
|
import de.ellpeck.naturesaura.gen.WorldGenAncientTree;
|
||||||
import de.ellpeck.naturesaura.reg.*;
|
import de.ellpeck.naturesaura.reg.*;
|
||||||
import net.minecraft.block.*;
|
import net.minecraft.block.*;
|
||||||
|
@ -68,7 +69,7 @@ public class BlockAncientSapling extends BushBlock implements IGrowable, IModIte
|
||||||
if (state.get(SaplingBlock.STAGE) == 0) {
|
if (state.get(SaplingBlock.STAGE) == 0) {
|
||||||
world.setBlockState(pos, state.cycle(SaplingBlock.STAGE), 4);
|
world.setBlockState(pos, state.cycle(SaplingBlock.STAGE), 4);
|
||||||
} else if (ForgeEventFactory.saplingGrowTree(world, rand, pos)) {
|
} else if (ForgeEventFactory.saplingGrowTree(world, rand, pos)) {
|
||||||
new WorldGenAncientTree().place(world, world.getChunkProvider().getChunkGenerator(), rand, pos, WorldGenAncientTree.CONFIG);
|
ModFeatures.ANCIENT_TREE.place(world, world.getChunkProvider().getChunkGenerator(), rand, pos, WorldGenAncientTree.CONFIG);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
package de.ellpeck.naturesaura.blocks;
|
||||||
|
|
||||||
|
import de.ellpeck.naturesaura.blocks.tiles.TileEntityAuraBloom;
|
||||||
|
import de.ellpeck.naturesaura.data.BlockStateGenerator;
|
||||||
|
import de.ellpeck.naturesaura.data.ItemModelGenerator;
|
||||||
|
import de.ellpeck.naturesaura.reg.*;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.block.BushBlock;
|
||||||
|
import net.minecraft.block.SoundType;
|
||||||
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
import net.minecraft.util.math.shapes.ISelectionContext;
|
||||||
|
import net.minecraft.util.math.shapes.VoxelShape;
|
||||||
|
import net.minecraft.world.IBlockReader;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class BlockAuraBloom extends BushBlock implements IModItem, ICustomBlockState, ICustomItemModel, ICustomRenderType {
|
||||||
|
|
||||||
|
protected static final VoxelShape SHAPE = Block.makeCuboidShape(5.0D, 0.0D, 5.0D, 11.0D, 10.0D, 11.0D);
|
||||||
|
|
||||||
|
public BlockAuraBloom() {
|
||||||
|
super(ModBlocks.prop(Material.PLANTS).doesNotBlockMovement().hardnessAndResistance(0).sound(SoundType.PLANT));
|
||||||
|
ModRegistry.add(this);
|
||||||
|
ModRegistry.add(new ModTileType<>(TileEntityAuraBloom::new, this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
|
||||||
|
Vec3d vec3d = state.getOffset(worldIn, pos);
|
||||||
|
return SHAPE.withOffset(vec3d.x, vec3d.y, vec3d.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void generateCustomBlockState(BlockStateGenerator generator) {
|
||||||
|
generator.simpleBlock(this, generator.models().cross(this.getBaseName(), generator.modLoc("block/" + this.getBaseName())));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void generateCustomItemModel(ItemModelGenerator generator) {
|
||||||
|
generator.withExistingParent(this.getBaseName(), "item/generated").texture("layer0", "block/" + this.getBaseName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Supplier<RenderType> getRenderType() {
|
||||||
|
return RenderType::cutout;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getBaseName() {
|
||||||
|
return "aura_bloom";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
|
||||||
|
return new TileEntityAuraBloom();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasTileEntity(BlockState state) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package de.ellpeck.naturesaura.blocks;
|
||||||
|
|
||||||
|
import de.ellpeck.naturesaura.data.BlockStateGenerator;
|
||||||
|
import de.ellpeck.naturesaura.reg.*;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.FlowerPotBlock;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class BlockFlowerPot extends FlowerPotBlock implements ICustomBlockState, IModItem, INoItemBlock, ICustomRenderType {
|
||||||
|
public BlockFlowerPot(Supplier<FlowerPotBlock> emptyPot, Supplier<? extends Block> block, Properties props) {
|
||||||
|
super(emptyPot, block, props);
|
||||||
|
ModRegistry.add(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void generateCustomBlockState(BlockStateGenerator generator) {
|
||||||
|
generator.simpleBlock(this, generator.models()
|
||||||
|
.withExistingParent(this.getBaseName(), "block/flower_pot_cross")
|
||||||
|
.texture("plant", "block/" + this.func_220276_d().getRegistryName().getPath()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getBaseName() {
|
||||||
|
return "potted_" + this.func_220276_d().getRegistryName().getPath();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Supplier<RenderType> getRenderType() {
|
||||||
|
return RenderType::cutout;
|
||||||
|
}
|
||||||
|
}
|
|
@ -62,6 +62,7 @@ public final class ModBlocks {
|
||||||
public static Block ANIMAL_CONTAINER;
|
public static Block ANIMAL_CONTAINER;
|
||||||
public static Block SNOW_CREATOR;
|
public static Block SNOW_CREATOR;
|
||||||
public static Block ITEM_DISTRIBUTOR;
|
public static Block ITEM_DISTRIBUTOR;
|
||||||
|
public static Block AURA_BLOOM;
|
||||||
|
|
||||||
public static Block.Properties prop(Material material, MaterialColor color) {
|
public static Block.Properties prop(Material material, MaterialColor color) {
|
||||||
return Block.Properties.create(material, color);
|
return Block.Properties.create(material, color);
|
||||||
|
|
|
@ -36,4 +36,5 @@ public final class ModTileEntities {
|
||||||
public static TileEntityType<TileEntityAnimalContainer> ANIMAL_CONTAINER;
|
public static TileEntityType<TileEntityAnimalContainer> ANIMAL_CONTAINER;
|
||||||
public static TileEntityType<TileEntitySnowCreator> SNOW_CREATOR;
|
public static TileEntityType<TileEntitySnowCreator> SNOW_CREATOR;
|
||||||
public static TileEntityType<TileEntityItemDistributor> ITEM_DISTRIBUTOR;
|
public static TileEntityType<TileEntityItemDistributor> ITEM_DISTRIBUTOR;
|
||||||
|
public static TileEntityType<TileEntityAuraBloom> AURA_BLOOM;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
package de.ellpeck.naturesaura.blocks.tiles;
|
||||||
|
|
||||||
|
import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk;
|
||||||
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
|
import net.minecraft.tileentity.ITickableTileEntity;
|
||||||
|
|
||||||
|
public class TileEntityAuraBloom extends TileEntityImpl implements ITickableTileEntity {
|
||||||
|
|
||||||
|
public boolean justGenerated;
|
||||||
|
|
||||||
|
public TileEntityAuraBloom() {
|
||||||
|
super(ModTileEntities.AURA_BLOOM);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Doing this in validate() creates a loading deadlock for some reason...
|
||||||
|
@Override
|
||||||
|
public void tick() {
|
||||||
|
if (this.world.isRemote || !this.justGenerated)
|
||||||
|
return;
|
||||||
|
IAuraChunk chunk = IAuraChunk.getAuraChunk(this.world, this.pos);
|
||||||
|
chunk.storeAura(this.pos, 200000);
|
||||||
|
this.justGenerated = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeNBT(CompoundNBT compound, SaveType type) {
|
||||||
|
super.writeNBT(compound, type);
|
||||||
|
if (type == SaveType.TILE)
|
||||||
|
compound.putBoolean("just_generated", this.justGenerated);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readNBT(CompoundNBT compound, SaveType type) {
|
||||||
|
super.readNBT(compound, type);
|
||||||
|
if (type == SaveType.TILE)
|
||||||
|
this.justGenerated = compound.getBoolean("just_generated");
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,6 +2,7 @@ package de.ellpeck.naturesaura.data;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
|
import de.ellpeck.naturesaura.blocks.BlockFlowerPot;
|
||||||
import de.ellpeck.naturesaura.blocks.BlockGoldenLeaves;
|
import de.ellpeck.naturesaura.blocks.BlockGoldenLeaves;
|
||||||
import de.ellpeck.naturesaura.blocks.ModBlocks;
|
import de.ellpeck.naturesaura.blocks.ModBlocks;
|
||||||
import de.ellpeck.naturesaura.blocks.Slab;
|
import de.ellpeck.naturesaura.blocks.Slab;
|
||||||
|
@ -10,6 +11,7 @@ import de.ellpeck.naturesaura.reg.IModItem;
|
||||||
import de.ellpeck.naturesaura.reg.ModRegistry;
|
import de.ellpeck.naturesaura.reg.ModRegistry;
|
||||||
import net.minecraft.advancements.criterion.StatePropertiesPredicate;
|
import net.minecraft.advancements.criterion.StatePropertiesPredicate;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.FlowerPotBlock;
|
||||||
import net.minecraft.data.DataGenerator;
|
import net.minecraft.data.DataGenerator;
|
||||||
import net.minecraft.data.DirectoryCache;
|
import net.minecraft.data.DirectoryCache;
|
||||||
import net.minecraft.data.IDataProvider;
|
import net.minecraft.data.IDataProvider;
|
||||||
|
@ -42,6 +44,8 @@ public class BlockLootProvider implements IDataProvider {
|
||||||
Block block = (Block) item;
|
Block block = (Block) item;
|
||||||
if (block instanceof Slab) {
|
if (block instanceof Slab) {
|
||||||
this.lootFunctions.put(block, LootTableHooks::genSlab);
|
this.lootFunctions.put(block, LootTableHooks::genSlab);
|
||||||
|
} else if (block instanceof BlockFlowerPot) {
|
||||||
|
this.lootFunctions.put(block, LootTableHooks::genFlowerPot);
|
||||||
} else {
|
} else {
|
||||||
this.lootFunctions.put(block, LootTableHooks::genRegular);
|
this.lootFunctions.put(block, LootTableHooks::genRegular);
|
||||||
}
|
}
|
||||||
|
@ -96,6 +100,10 @@ public class BlockLootProvider implements IDataProvider {
|
||||||
return droppingWithSilkTouch(block, builder);
|
return droppingWithSilkTouch(block, builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static LootTable.Builder genFlowerPot(Block block) {
|
||||||
|
return droppingAndFlowerPot(((FlowerPotBlock) block).func_220276_d());
|
||||||
|
}
|
||||||
|
|
||||||
public static <T> T survivesExplosion(Block block, ILootConditionConsumer<T> then) {
|
public static <T> T survivesExplosion(Block block, ILootConditionConsumer<T> then) {
|
||||||
return withSurvivesExplosion(block, then);
|
return withSurvivesExplosion(block, then);
|
||||||
}
|
}
|
||||||
|
|
14
src/main/java/de/ellpeck/naturesaura/gen/ModFeatures.java
Normal file
14
src/main/java/de/ellpeck/naturesaura/gen/ModFeatures.java
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
package de.ellpeck.naturesaura.gen;
|
||||||
|
|
||||||
|
import net.minecraft.world.gen.feature.Feature;
|
||||||
|
import net.minecraft.world.gen.feature.NoFeatureConfig;
|
||||||
|
import net.minecraft.world.gen.feature.TreeFeatureConfig;
|
||||||
|
|
||||||
|
@SuppressWarnings("FieldNamingConvention")
|
||||||
|
public final class ModFeatures {
|
||||||
|
|
||||||
|
public static Feature<NoFeatureConfig> AURA_BLOOM;
|
||||||
|
public static Feature<TreeFeatureConfig> ANCIENT_TREE;
|
||||||
|
public static Feature<NoFeatureConfig> NETHER_WART_MUSHROOM;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
package de.ellpeck.naturesaura.gen;
|
||||||
|
|
||||||
|
import de.ellpeck.naturesaura.blocks.ModBlocks;
|
||||||
|
import de.ellpeck.naturesaura.blocks.tiles.TileEntityAuraBloom;
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.math.MathHelper;
|
||||||
|
import net.minecraft.world.IWorld;
|
||||||
|
import net.minecraft.world.gen.ChunkGenerator;
|
||||||
|
import net.minecraft.world.gen.GenerationSettings;
|
||||||
|
import net.minecraft.world.gen.Heightmap;
|
||||||
|
import net.minecraft.world.gen.feature.Feature;
|
||||||
|
import net.minecraft.world.gen.feature.IFeatureConfig;
|
||||||
|
import net.minecraft.world.gen.feature.NoFeatureConfig;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class WorldGenAuraBloom extends Feature<NoFeatureConfig> {
|
||||||
|
public WorldGenAuraBloom() {
|
||||||
|
super(d -> IFeatureConfig.NO_FEATURE_CONFIG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean place(IWorld worldIn, ChunkGenerator<? extends GenerationSettings> generator, Random rand, BlockPos pos, NoFeatureConfig config) {
|
||||||
|
if (rand.nextInt(60) != 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
int startX = pos.getX() + rand.nextInt(16);
|
||||||
|
int startZ = pos.getZ() + rand.nextInt(16);
|
||||||
|
boolean any = false;
|
||||||
|
for (int i = MathHelper.nextInt(rand, 3, 8); i > 0; i--) {
|
||||||
|
int offX = startX + MathHelper.nextInt(rand, -5, 5);
|
||||||
|
int offZ = startZ + MathHelper.nextInt(rand, -5, 5);
|
||||||
|
BlockPos placePos = new BlockPos(offX, worldIn.getHeight(Heightmap.Type.MOTION_BLOCKING_NO_LEAVES, offX, offZ), offZ);
|
||||||
|
BlockState state = ModBlocks.AURA_BLOOM.getDefaultState();
|
||||||
|
if (ModBlocks.AURA_BLOOM.isValidPosition(state, worldIn, placePos)) {
|
||||||
|
worldIn.setBlockState(placePos, state, 3);
|
||||||
|
|
||||||
|
TileEntity tile = worldIn.getTileEntity(placePos);
|
||||||
|
if (tile instanceof TileEntityAuraBloom)
|
||||||
|
((TileEntityAuraBloom) tile).justGenerated = true;
|
||||||
|
any = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return any;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
package de.ellpeck.naturesaura.items;
|
package de.ellpeck.naturesaura.items;
|
||||||
|
|
||||||
import de.ellpeck.naturesaura.gen.WorldGenNetherWartMushroom;
|
import de.ellpeck.naturesaura.gen.ModFeatures;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.Blocks;
|
import net.minecraft.block.Blocks;
|
||||||
import net.minecraft.block.NetherWartBlock;
|
import net.minecraft.block.NetherWartBlock;
|
||||||
|
@ -27,7 +27,7 @@ public class ItemCrimsonMeal extends ItemImpl {
|
||||||
if (world.rand.nextInt(5) == 0) {
|
if (world.rand.nextInt(5) == 0) {
|
||||||
int age = state.get(NetherWartBlock.AGE);
|
int age = state.get(NetherWartBlock.AGE);
|
||||||
if (age >= 3) {
|
if (age >= 3) {
|
||||||
new WorldGenNetherWartMushroom().place(world, ((ServerWorld) world).getChunkProvider().getChunkGenerator(), world.rand, pos, IFeatureConfig.NO_FEATURE_CONFIG);
|
ModFeatures.NETHER_WART_MUSHROOM.place(world, ((ServerWorld) world).getChunkProvider().getChunkGenerator(), world.rand, pos, IFeatureConfig.NO_FEATURE_CONFIG);
|
||||||
} else {
|
} else {
|
||||||
world.setBlockState(pos, state.with(NetherWartBlock.AGE, age + 1));
|
world.setBlockState(pos, state.with(NetherWartBlock.AGE, age + 1));
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
package de.ellpeck.naturesaura.reg;
|
||||||
|
|
||||||
|
public interface INoItemBlock {
|
||||||
|
}
|
|
@ -14,6 +14,10 @@ import de.ellpeck.naturesaura.entities.EntityMoverMinecart;
|
||||||
import de.ellpeck.naturesaura.entities.ModEntities;
|
import de.ellpeck.naturesaura.entities.ModEntities;
|
||||||
import de.ellpeck.naturesaura.entities.render.RenderEffectInhibitor;
|
import de.ellpeck.naturesaura.entities.render.RenderEffectInhibitor;
|
||||||
import de.ellpeck.naturesaura.entities.render.RenderMoverMinecart;
|
import de.ellpeck.naturesaura.entities.render.RenderMoverMinecart;
|
||||||
|
import de.ellpeck.naturesaura.gen.ModFeatures;
|
||||||
|
import de.ellpeck.naturesaura.gen.WorldGenAncientTree;
|
||||||
|
import de.ellpeck.naturesaura.gen.WorldGenAuraBloom;
|
||||||
|
import de.ellpeck.naturesaura.gen.WorldGenNetherWartMushroom;
|
||||||
import de.ellpeck.naturesaura.gui.ContainerEnderCrate;
|
import de.ellpeck.naturesaura.gui.ContainerEnderCrate;
|
||||||
import de.ellpeck.naturesaura.gui.ModContainers;
|
import de.ellpeck.naturesaura.gui.ModContainers;
|
||||||
import de.ellpeck.naturesaura.items.*;
|
import de.ellpeck.naturesaura.items.*;
|
||||||
|
@ -22,6 +26,7 @@ import de.ellpeck.naturesaura.potion.ModPotions;
|
||||||
import de.ellpeck.naturesaura.potion.PotionBreathless;
|
import de.ellpeck.naturesaura.potion.PotionBreathless;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.Blocks;
|
import net.minecraft.block.Blocks;
|
||||||
|
import net.minecraft.block.FlowerPotBlock;
|
||||||
import net.minecraft.block.SoundType;
|
import net.minecraft.block.SoundType;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.enchantment.Enchantment;
|
import net.minecraft.enchantment.Enchantment;
|
||||||
|
@ -34,12 +39,19 @@ import net.minecraft.item.Item;
|
||||||
import net.minecraft.potion.Effect;
|
import net.minecraft.potion.Effect;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.tileentity.TileEntityType;
|
import net.minecraft.tileentity.TileEntityType;
|
||||||
|
import net.minecraft.world.biome.Biome;
|
||||||
import net.minecraft.world.dimension.DimensionType;
|
import net.minecraft.world.dimension.DimensionType;
|
||||||
|
import net.minecraft.world.gen.GenerationStage;
|
||||||
|
import net.minecraft.world.gen.feature.Feature;
|
||||||
|
import net.minecraft.world.gen.feature.IFeatureConfig;
|
||||||
|
import net.minecraft.world.gen.placement.IPlacementConfig;
|
||||||
|
import net.minecraft.world.gen.placement.Placement;
|
||||||
import net.minecraftforge.common.extensions.IForgeContainerType;
|
import net.minecraftforge.common.extensions.IForgeContainerType;
|
||||||
import net.minecraftforge.event.RegistryEvent;
|
import net.minecraftforge.event.RegistryEvent;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -56,7 +68,7 @@ public final class ModRegistry {
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void registerBlocks(RegistryEvent.Register<Block> event) {
|
public static void registerBlocks(RegistryEvent.Register<Block> event) {
|
||||||
BlockImpl temp;
|
Block temp;
|
||||||
event.getRegistry().registerAll(
|
event.getRegistry().registerAll(
|
||||||
new BlockAncientLog("ancient_log"),
|
new BlockAncientLog("ancient_log"),
|
||||||
new BlockAncientLog("ancient_bark"),
|
new BlockAncientLog("ancient_bark"),
|
||||||
|
@ -110,7 +122,9 @@ public final class ModRegistry {
|
||||||
new BlockImpl("nether_wart_mushroom", ModBlocks.prop(Blocks.RED_MUSHROOM_BLOCK)),
|
new BlockImpl("nether_wart_mushroom", ModBlocks.prop(Blocks.RED_MUSHROOM_BLOCK)),
|
||||||
new BlockAnimalContainer(),
|
new BlockAnimalContainer(),
|
||||||
new BlockSnowCreator(),
|
new BlockSnowCreator(),
|
||||||
new BlockItemDistributor()
|
new BlockItemDistributor(),
|
||||||
|
temp = new BlockAuraBloom(),
|
||||||
|
createFlowerPot(temp)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (ModConfig.instance.rfConverter.get())
|
if (ModConfig.instance.rfConverter.get())
|
||||||
|
@ -124,7 +138,7 @@ public final class ModRegistry {
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void registerItems(RegistryEvent.Register<Item> event) {
|
public static void registerItems(RegistryEvent.Register<Item> event) {
|
||||||
for (IModItem block : ALL_ITEMS) {
|
for (IModItem block : ALL_ITEMS) {
|
||||||
if (block instanceof Block) {
|
if (block instanceof Block && !(block instanceof INoItemBlock)) {
|
||||||
BlockItem item = new BlockItem((Block) block, new Item.Properties().group(NaturesAura.CREATIVE_TAB));
|
BlockItem item = new BlockItem((Block) block, new Item.Properties().group(NaturesAura.CREATIVE_TAB));
|
||||||
item.setRegistryName(block.getBaseName());
|
item.setRegistryName(block.getBaseName());
|
||||||
event.getRegistry().register(item);
|
event.getRegistry().register(item);
|
||||||
|
@ -239,6 +253,16 @@ public final class ModRegistry {
|
||||||
NaturesAura.proxy.registerEntityRenderer(ModEntities.EFFECT_INHIBITOR, () -> RenderEffectInhibitor::new);
|
NaturesAura.proxy.registerEntityRenderer(ModEntities.EFFECT_INHIBITOR, () -> RenderEffectInhibitor::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void registerFeatures(RegistryEvent.Register<Feature<?>> event) {
|
||||||
|
event.getRegistry().registerAll(
|
||||||
|
new WorldGenAuraBloom().setRegistryName("aura_bloom"),
|
||||||
|
new WorldGenAncientTree().setRegistryName("ancient_tree"),
|
||||||
|
new WorldGenNetherWartMushroom().setRegistryName("nether_wart_mushroom")
|
||||||
|
);
|
||||||
|
Helper.populateObjectHolders(ModFeatures.class, event.getRegistry());
|
||||||
|
}
|
||||||
|
|
||||||
public static void init() {
|
public static void init() {
|
||||||
for (IModItem item : ALL_ITEMS) {
|
for (IModItem item : ALL_ITEMS) {
|
||||||
if (item instanceof IColorProvidingBlock)
|
if (item instanceof IColorProvidingBlock)
|
||||||
|
@ -248,5 +272,17 @@ public final class ModRegistry {
|
||||||
if (item instanceof ITESRProvider)
|
if (item instanceof ITESRProvider)
|
||||||
NaturesAura.proxy.registerTESR((ITESRProvider) item);
|
NaturesAura.proxy.registerTESR((ITESRProvider) item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (Biome biome : ForgeRegistries.BIOMES) {
|
||||||
|
if (ModConfig.instance.auraBlooms.get())
|
||||||
|
biome.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, ModFeatures.AURA_BLOOM.withConfiguration(IFeatureConfig.NO_FEATURE_CONFIG).func_227228_a_(Placement.NOPE.func_227446_a_(IPlacementConfig.NO_PLACEMENT_CONFIG)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Block createFlowerPot(Block block) {
|
||||||
|
Block.Properties props = Block.Properties.create(Material.MISCELLANEOUS).hardnessAndResistance(0F);
|
||||||
|
Block potted = new BlockFlowerPot(() -> (FlowerPotBlock) Blocks.FLOWER_POT, block::getBlock, props);
|
||||||
|
((FlowerPotBlock) Blocks.FLOWER_POT).addPlant(block.getRegistryName(), () -> potted);
|
||||||
|
return potted;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,6 +58,7 @@
|
||||||
"block.naturesaura.animal_container": "Corporeal Eye",
|
"block.naturesaura.animal_container": "Corporeal Eye",
|
||||||
"block.naturesaura.snow_creator": "Winter's Calling",
|
"block.naturesaura.snow_creator": "Winter's Calling",
|
||||||
"block.naturesaura.item_distributor": "Item Distributor",
|
"block.naturesaura.item_distributor": "Item Distributor",
|
||||||
|
"block.naturesaura.aura_bloom": "Aura Bloom",
|
||||||
"item.naturesaura.eye": "Environmental Eye",
|
"item.naturesaura.eye": "Environmental Eye",
|
||||||
"item.naturesaura.eye_improved": "Environmental Ocular",
|
"item.naturesaura.eye_improved": "Environmental Ocular",
|
||||||
"item.naturesaura.gold_fiber": "Brilliant Fiber",
|
"item.naturesaura.gold_fiber": "Brilliant Fiber",
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 331 B |
Loading…
Reference in a new issue