mirror of
https://github.com/Ellpeck/NaturesAura.git
synced 2024-11-22 11:53:29 +01:00
added the everlasting spring
This commit is contained in:
parent
75845ed3b5
commit
0280783cd6
52 changed files with 424 additions and 102 deletions
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "naturesaura:block/spring"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "naturesaura:block/spring"
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "naturesaura:spring"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -4,9 +4,7 @@ import de.ellpeck.naturesaura.api.NaturesAuraAPI;
|
||||||
import de.ellpeck.naturesaura.blocks.tiles.TileEntityAncientLeaves;
|
import de.ellpeck.naturesaura.blocks.tiles.TileEntityAncientLeaves;
|
||||||
import de.ellpeck.naturesaura.data.BlockStateGenerator;
|
import de.ellpeck.naturesaura.data.BlockStateGenerator;
|
||||||
import de.ellpeck.naturesaura.reg.*;
|
import de.ellpeck.naturesaura.reg.*;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.*;
|
||||||
import net.minecraft.block.LeavesBlock;
|
|
||||||
import net.minecraft.block.SoundType;
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.block.material.MaterialColor;
|
import net.minecraft.block.material.MaterialColor;
|
||||||
import net.minecraft.client.renderer.color.IBlockColor;
|
import net.minecraft.client.renderer.color.IBlockColor;
|
||||||
|
@ -25,7 +23,7 @@ import java.util.Random;
|
||||||
public class BlockAncientLeaves extends LeavesBlock implements IModItem, IColorProvidingBlock, IColorProvidingItem, ICustomBlockState {
|
public class BlockAncientLeaves extends LeavesBlock implements IModItem, IColorProvidingBlock, IColorProvidingItem, ICustomBlockState {
|
||||||
|
|
||||||
public BlockAncientLeaves() {
|
public BlockAncientLeaves() {
|
||||||
super(ModBlocks.prop(Material.LEAVES, MaterialColor.PINK).hardnessAndResistance(0.2F).tickRandomly().notSolid().sound(SoundType.PLANT));
|
super(Properties.create(Material.LEAVES, MaterialColor.PINK).hardnessAndResistance(0.2F).tickRandomly().notSolid().sound(SoundType.PLANT));
|
||||||
ModRegistry.add(this);
|
ModRegistry.add(this);
|
||||||
ModRegistry.add(new ModTileType<>(TileEntityAncientLeaves::new, this));
|
ModRegistry.add(new ModTileType<>(TileEntityAncientLeaves::new, this));
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ public class BlockAncientLog extends RotatedPillarBlock implements IModItem, ICu
|
||||||
private final String baseName;
|
private final String baseName;
|
||||||
|
|
||||||
public BlockAncientLog(String baseName) {
|
public BlockAncientLog(String baseName) {
|
||||||
super(ModBlocks.prop(Material.WOOD,MaterialColor.PURPLE).hardnessAndResistance(2.0F).sound(SoundType.WOOD));
|
super(Properties.create(Material.WOOD, MaterialColor.PURPLE).hardnessAndResistance(2.0F).sound(SoundType.WOOD));
|
||||||
this.baseName = baseName;
|
this.baseName = baseName;
|
||||||
ModRegistry.add(this);
|
ModRegistry.add(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ public class BlockAncientSapling extends BushBlock implements IGrowable, IModIte
|
||||||
protected static final VoxelShape SHAPE = Block.makeCuboidShape(2.0D, 0.0D, 2.0D, 14.0D, 12.0D, 14.0D);
|
protected static final VoxelShape SHAPE = Block.makeCuboidShape(2.0D, 0.0D, 2.0D, 14.0D, 12.0D, 14.0D);
|
||||||
|
|
||||||
public BlockAncientSapling() {
|
public BlockAncientSapling() {
|
||||||
super(ModBlocks.prop(Material.PLANTS).hardnessAndResistance(0.0F).sound(SoundType.PLANT));
|
super(Properties.create(Material.PLANTS).hardnessAndResistance(0.0F).sound(SoundType.PLANT));
|
||||||
ModRegistry.add(this);
|
ModRegistry.add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ public class BlockAnimalContainer extends BlockContainerImpl implements IVisuali
|
||||||
private static final VoxelShape SHAPE = makeCuboidShape(5, 0, 5, 11, 13, 11);
|
private static final VoxelShape SHAPE = makeCuboidShape(5, 0, 5, 11, 13, 11);
|
||||||
|
|
||||||
public BlockAnimalContainer() {
|
public BlockAnimalContainer() {
|
||||||
super("animal_container", TileEntityAnimalContainer::new, ModBlocks.prop(Blocks.STONE));
|
super("animal_container", TileEntityAnimalContainer::new, Properties.from(Blocks.STONE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -30,7 +30,7 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
|
||||||
public class BlockAnimalGenerator extends BlockContainerImpl implements IVisualizable, ICustomBlockState {
|
public class BlockAnimalGenerator extends BlockContainerImpl implements IVisualizable, ICustomBlockState {
|
||||||
public BlockAnimalGenerator() {
|
public BlockAnimalGenerator() {
|
||||||
super("animal_generator", TileEntityAnimalGenerator::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(3F).sound(SoundType.STONE));
|
super("animal_generator", TileEntityAnimalGenerator::new, Properties.create(Material.ROCK).hardnessAndResistance(3F).sound(SoundType.STONE));
|
||||||
|
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,6 @@ import net.minecraft.block.material.Material;
|
||||||
|
|
||||||
public class BlockAnimalSpawner extends BlockContainerImpl {
|
public class BlockAnimalSpawner extends BlockContainerImpl {
|
||||||
public BlockAnimalSpawner() {
|
public BlockAnimalSpawner() {
|
||||||
super("animal_spawner", TileEntityAnimalSpawner::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE));
|
super("animal_spawner", TileEntityAnimalSpawner::new, Properties.create(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ public class BlockAuraBloom extends BushBlock implements IModItem, ICustomBlockS
|
||||||
private final Supplier<TileEntity> tileEntitySupplier;
|
private final Supplier<TileEntity> tileEntitySupplier;
|
||||||
|
|
||||||
public BlockAuraBloom(String baseName, Supplier<TileEntity> tileEntitySupplier) {
|
public BlockAuraBloom(String baseName, Supplier<TileEntity> tileEntitySupplier) {
|
||||||
super(ModBlocks.prop(Material.PLANTS).doesNotBlockMovement().hardnessAndResistance(0).sound(SoundType.PLANT));
|
super(Properties.create(Material.PLANTS).doesNotBlockMovement().hardnessAndResistance(0).sound(SoundType.PLANT));
|
||||||
this.baseName = baseName;
|
this.baseName = baseName;
|
||||||
this.tileEntitySupplier = tileEntitySupplier;
|
this.tileEntitySupplier = tileEntitySupplier;
|
||||||
ModRegistry.add(this);
|
ModRegistry.add(this);
|
||||||
|
|
|
@ -11,7 +11,7 @@ import net.minecraft.world.World;
|
||||||
public class BlockAuraDetector extends BlockContainerImpl {
|
public class BlockAuraDetector extends BlockContainerImpl {
|
||||||
|
|
||||||
public BlockAuraDetector() {
|
public BlockAuraDetector() {
|
||||||
super("aura_detector", TileEntityAuraDetector::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE));
|
super("aura_detector", TileEntityAuraDetector::new, Properties.create(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -16,7 +16,7 @@ public class BlockAutoCrafter extends BlockContainerImpl implements ICustomBlock
|
||||||
public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING;
|
public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING;
|
||||||
|
|
||||||
public BlockAutoCrafter() {
|
public BlockAutoCrafter() {
|
||||||
super("auto_crafter", TileEntityAutoCrafter::new, ModBlocks.prop(Material.WOOD).hardnessAndResistance(1.5F).sound(SoundType.WOOD));
|
super("auto_crafter", TileEntityAutoCrafter::new, Properties.create(Material.WOOD).hardnessAndResistance(1.5F).sound(SoundType.WOOD));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -26,7 +26,7 @@ public class BlockChunkLoader extends BlockContainerImpl implements IVisualizabl
|
||||||
private static final VoxelShape SHAPE = makeCuboidShape(4, 4, 4, 12, 12, 12);
|
private static final VoxelShape SHAPE = makeCuboidShape(4, 4, 4, 12, 12, 12);
|
||||||
|
|
||||||
public BlockChunkLoader() {
|
public BlockChunkLoader() {
|
||||||
super("chunk_loader", TileEntityChunkLoader::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(3F).sound(SoundType.STONE));
|
super("chunk_loader", TileEntityChunkLoader::new, Properties.create(Material.ROCK).hardnessAndResistance(3F).sound(SoundType.STONE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -3,9 +3,7 @@ package de.ellpeck.naturesaura.blocks;
|
||||||
import de.ellpeck.naturesaura.data.BlockStateGenerator;
|
import de.ellpeck.naturesaura.data.BlockStateGenerator;
|
||||||
import de.ellpeck.naturesaura.reg.ICustomBlockState;
|
import de.ellpeck.naturesaura.reg.ICustomBlockState;
|
||||||
import de.ellpeck.naturesaura.reg.ICustomRenderType;
|
import de.ellpeck.naturesaura.reg.ICustomRenderType;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.*;
|
||||||
import net.minecraft.block.Blocks;
|
|
||||||
import net.minecraft.block.SoundType;
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
@ -18,7 +16,7 @@ import java.util.function.Supplier;
|
||||||
public class BlockDecayedLeaves extends BlockImpl implements ICustomBlockState, ICustomRenderType {
|
public class BlockDecayedLeaves extends BlockImpl implements ICustomBlockState, ICustomRenderType {
|
||||||
|
|
||||||
public BlockDecayedLeaves() {
|
public BlockDecayedLeaves() {
|
||||||
super("decayed_leaves", ModBlocks.prop(Material.LEAVES).hardnessAndResistance(0.2F).sound(SoundType.PLANT).notSolid().tickRandomly());
|
super("decayed_leaves", Properties.create(Material.LEAVES).hardnessAndResistance(0.2F).sound(SoundType.PLANT).notSolid().tickRandomly());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -8,10 +8,7 @@ import de.ellpeck.naturesaura.packet.PacketClient;
|
||||||
import de.ellpeck.naturesaura.packet.PacketHandler;
|
import de.ellpeck.naturesaura.packet.PacketHandler;
|
||||||
import de.ellpeck.naturesaura.packet.PacketParticles;
|
import de.ellpeck.naturesaura.packet.PacketParticles;
|
||||||
import de.ellpeck.naturesaura.reg.*;
|
import de.ellpeck.naturesaura.reg.*;
|
||||||
import net.minecraft.block.AbstractRailBlock;
|
import net.minecraft.block.*;
|
||||||
import net.minecraft.block.Block;
|
|
||||||
import net.minecraft.block.BlockState;
|
|
||||||
import net.minecraft.block.Blocks;
|
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.item.minecart.AbstractMinecartEntity;
|
import net.minecraft.entity.item.minecart.AbstractMinecartEntity;
|
||||||
|
@ -46,7 +43,7 @@ public class BlockDimensionRail extends AbstractRailBlock implements IModItem, I
|
||||||
private final RegistryKey<World>[] canUseDims;
|
private final RegistryKey<World>[] canUseDims;
|
||||||
|
|
||||||
public BlockDimensionRail(String name, RegistryKey<World> goalDim, RegistryKey<World>... canUseDims) {
|
public BlockDimensionRail(String name, RegistryKey<World> goalDim, RegistryKey<World>... canUseDims) {
|
||||||
super(false, ModBlocks.prop(Blocks.RAIL));
|
super(false, Properties.from(Blocks.RAIL));
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.goalDim = goalDim;
|
this.goalDim = goalDim;
|
||||||
this.canUseDims = canUseDims;
|
this.canUseDims = canUseDims;
|
||||||
|
|
|
@ -37,7 +37,7 @@ public class BlockEndFlower extends BushBlock implements IModItem, ICustomBlockS
|
||||||
protected static final VoxelShape SHAPE = Block.makeCuboidShape(5.0D, 0.0D, 5.0D, 11.0D, 10.0D, 11.0D);
|
protected static final VoxelShape SHAPE = Block.makeCuboidShape(5.0D, 0.0D, 5.0D, 11.0D, 10.0D, 11.0D);
|
||||||
|
|
||||||
public BlockEndFlower() {
|
public BlockEndFlower() {
|
||||||
super(ModBlocks.prop(Material.PLANTS).doesNotBlockMovement().hardnessAndResistance(0.5F).sound(SoundType.PLANT));
|
super(Properties.create(Material.PLANTS).doesNotBlockMovement().hardnessAndResistance(0.5F).sound(SoundType.PLANT));
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
ModRegistry.add(this);
|
ModRegistry.add(this);
|
||||||
ModRegistry.add(new ModTileType<>(TileEntityEndFlower::new, this));
|
ModRegistry.add(new ModTileType<>(TileEntityEndFlower::new, this));
|
||||||
|
|
|
@ -9,9 +9,7 @@ import de.ellpeck.naturesaura.data.BlockStateGenerator;
|
||||||
import de.ellpeck.naturesaura.items.ModItems;
|
import de.ellpeck.naturesaura.items.ModItems;
|
||||||
import de.ellpeck.naturesaura.reg.ICustomBlockState;
|
import de.ellpeck.naturesaura.reg.ICustomBlockState;
|
||||||
import de.ellpeck.naturesaura.reg.ITESRProvider;
|
import de.ellpeck.naturesaura.reg.ITESRProvider;
|
||||||
import net.minecraft.block.AnvilBlock;
|
import net.minecraft.block.*;
|
||||||
import net.minecraft.block.BlockState;
|
|
||||||
import net.minecraft.block.SoundType;
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
|
import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
|
||||||
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
||||||
|
@ -56,7 +54,7 @@ public class BlockEnderCrate extends BlockContainerImpl implements ITESRProvider
|
||||||
private static final ThreadLocal<WeakReference<World>> CACHED_WORLD = new ThreadLocal<>();
|
private static final ThreadLocal<WeakReference<World>> CACHED_WORLD = new ThreadLocal<>();
|
||||||
|
|
||||||
public BlockEnderCrate() {
|
public BlockEnderCrate() {
|
||||||
super("ender_crate", TileEntityEnderCrate::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(5F).setLightLevel(s -> 7).sound(SoundType.STONE));
|
super("ender_crate", TileEntityEnderCrate::new, Properties.create(Material.ROCK).hardnessAndResistance(5F).setLightLevel(s -> 7).sound(SoundType.STONE));
|
||||||
|
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,6 @@ import net.minecraft.util.Hand;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.BlockRayTraceResult;
|
import net.minecraft.util.math.BlockRayTraceResult;
|
||||||
import net.minecraft.util.text.TranslationTextComponent;
|
import net.minecraft.util.text.TranslationTextComponent;
|
||||||
import net.minecraft.world.IBlockReader;
|
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
@ -28,7 +27,7 @@ import java.util.function.Supplier;
|
||||||
|
|
||||||
public class BlockFieldCreator extends BlockContainerImpl implements ICustomBlockState, ICustomRenderType {
|
public class BlockFieldCreator extends BlockContainerImpl implements ICustomBlockState, ICustomRenderType {
|
||||||
public BlockFieldCreator() {
|
public BlockFieldCreator() {
|
||||||
super("field_creator", TileEntityFieldCreator::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).notSolid().sound(SoundType.STONE));
|
super("field_creator", TileEntityFieldCreator::new, Properties.create(Material.ROCK).hardnessAndResistance(2F).notSolid().sound(SoundType.STONE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -14,7 +14,7 @@ import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
|
||||||
public class BlockFireworkGenerator extends BlockContainerImpl implements IVisualizable, ICustomBlockState {
|
public class BlockFireworkGenerator extends BlockContainerImpl implements IVisualizable, ICustomBlockState {
|
||||||
public BlockFireworkGenerator() {
|
public BlockFireworkGenerator() {
|
||||||
super("firework_generator", TileEntityFireworkGenerator::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(3F).sound(SoundType.STONE));
|
super("firework_generator", TileEntityFireworkGenerator::new, Properties.create(Material.ROCK).hardnessAndResistance(3F).sound(SoundType.STONE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -15,7 +15,7 @@ import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
public class BlockFlowerGenerator extends BlockContainerImpl implements IVisualizable, ICustomBlockState {
|
public class BlockFlowerGenerator extends BlockContainerImpl implements IVisualizable, ICustomBlockState {
|
||||||
|
|
||||||
public BlockFlowerGenerator() {
|
public BlockFlowerGenerator() {
|
||||||
super("flower_generator", TileEntityFlowerGenerator::new, ModBlocks.prop(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(2F));
|
super("flower_generator", TileEntityFlowerGenerator::new, Properties.create(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(2F));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -38,7 +38,7 @@ public class BlockFurnaceHeater extends BlockContainerImpl implements ICustomBlo
|
||||||
};
|
};
|
||||||
|
|
||||||
public BlockFurnaceHeater() {
|
public BlockFurnaceHeater() {
|
||||||
super("furnace_heater", TileEntityFurnaceHeater::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(3F).harvestLevel(1).harvestTool(ToolType.PICKAXE));
|
super("furnace_heater", TileEntityFurnaceHeater::new, Properties.create(Material.ROCK).hardnessAndResistance(3F).harvestLevel(1).harvestTool(ToolType.PICKAXE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -19,7 +19,7 @@ import java.util.function.Supplier;
|
||||||
public class BlockGeneratorLimitRemover extends BlockContainerImpl implements ITESRProvider<TileEntityGeneratorLimitRemover>, ICustomBlockState {
|
public class BlockGeneratorLimitRemover extends BlockContainerImpl implements ITESRProvider<TileEntityGeneratorLimitRemover>, ICustomBlockState {
|
||||||
|
|
||||||
public BlockGeneratorLimitRemover() {
|
public BlockGeneratorLimitRemover() {
|
||||||
super("generator_limit_remover", TileEntityGeneratorLimitRemover::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE));
|
super("generator_limit_remover", TileEntityGeneratorLimitRemover::new, Properties.create(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -6,10 +6,7 @@ import de.ellpeck.naturesaura.reg.IColorProvidingBlock;
|
||||||
import de.ellpeck.naturesaura.reg.ICustomBlockState;
|
import de.ellpeck.naturesaura.reg.ICustomBlockState;
|
||||||
import de.ellpeck.naturesaura.reg.ICustomItemModel;
|
import de.ellpeck.naturesaura.reg.ICustomItemModel;
|
||||||
import de.ellpeck.naturesaura.reg.ICustomRenderType;
|
import de.ellpeck.naturesaura.reg.ICustomRenderType;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.*;
|
||||||
import net.minecraft.block.BlockState;
|
|
||||||
import net.minecraft.block.Blocks;
|
|
||||||
import net.minecraft.block.RedstoneWireBlock;
|
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.client.renderer.color.IBlockColor;
|
import net.minecraft.client.renderer.color.IBlockColor;
|
||||||
import net.minecraft.item.BlockItemUseContext;
|
import net.minecraft.item.BlockItemUseContext;
|
||||||
|
@ -38,7 +35,7 @@ public class BlockGoldPowder extends BlockImpl implements IColorProvidingBlock,
|
||||||
protected static final VoxelShape[] SHAPES = new VoxelShape[]{Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 1.0D, 13.0D), Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 1.0D, 16.0D), Block.makeCuboidShape(0.0D, 0.0D, 3.0D, 13.0D, 1.0D, 13.0D), Block.makeCuboidShape(0.0D, 0.0D, 3.0D, 13.0D, 1.0D, 16.0D), Block.makeCuboidShape(3.0D, 0.0D, 0.0D, 13.0D, 1.0D, 13.0D), Block.makeCuboidShape(3.0D, 0.0D, 0.0D, 13.0D, 1.0D, 16.0D), Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 13.0D, 1.0D, 13.0D), Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 13.0D, 1.0D, 16.0D), Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 16.0D, 1.0D, 13.0D), Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 16.0D, 1.0D, 16.0D), Block.makeCuboidShape(0.0D, 0.0D, 3.0D, 16.0D, 1.0D, 13.0D), Block.makeCuboidShape(0.0D, 0.0D, 3.0D, 16.0D, 1.0D, 16.0D), Block.makeCuboidShape(3.0D, 0.0D, 0.0D, 16.0D, 1.0D, 13.0D), Block.makeCuboidShape(3.0D, 0.0D, 0.0D, 16.0D, 1.0D, 16.0D), Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 1.0D, 13.0D), Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 1.0D, 16.0D)};
|
protected static final VoxelShape[] SHAPES = new VoxelShape[]{Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 1.0D, 13.0D), Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 1.0D, 16.0D), Block.makeCuboidShape(0.0D, 0.0D, 3.0D, 13.0D, 1.0D, 13.0D), Block.makeCuboidShape(0.0D, 0.0D, 3.0D, 13.0D, 1.0D, 16.0D), Block.makeCuboidShape(3.0D, 0.0D, 0.0D, 13.0D, 1.0D, 13.0D), Block.makeCuboidShape(3.0D, 0.0D, 0.0D, 13.0D, 1.0D, 16.0D), Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 13.0D, 1.0D, 13.0D), Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 13.0D, 1.0D, 16.0D), Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 16.0D, 1.0D, 13.0D), Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 16.0D, 1.0D, 16.0D), Block.makeCuboidShape(0.0D, 0.0D, 3.0D, 16.0D, 1.0D, 13.0D), Block.makeCuboidShape(0.0D, 0.0D, 3.0D, 16.0D, 1.0D, 16.0D), Block.makeCuboidShape(3.0D, 0.0D, 0.0D, 16.0D, 1.0D, 13.0D), Block.makeCuboidShape(3.0D, 0.0D, 0.0D, 16.0D, 1.0D, 16.0D), Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 1.0D, 13.0D), Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 1.0D, 16.0D)};
|
||||||
|
|
||||||
public BlockGoldPowder() {
|
public BlockGoldPowder() {
|
||||||
super("gold_powder", ModBlocks.prop(Blocks.REDSTONE_WIRE));
|
super("gold_powder", Properties.from(Blocks.REDSTONE_WIRE));
|
||||||
this.setDefaultState(this.stateContainer.getBaseState().with(NORTH, RedstoneSide.NONE).with(EAST, RedstoneSide.NONE).with(SOUTH, RedstoneSide.NONE).with(WEST, RedstoneSide.NONE));
|
this.setDefaultState(this.stateContainer.getBaseState().with(NORTH, RedstoneSide.NONE).with(EAST, RedstoneSide.NONE).with(SOUTH, RedstoneSide.NONE).with(WEST, RedstoneSide.NONE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,10 +4,7 @@ import de.ellpeck.naturesaura.Helper;
|
||||||
import de.ellpeck.naturesaura.api.NaturesAuraAPI;
|
import de.ellpeck.naturesaura.api.NaturesAuraAPI;
|
||||||
import de.ellpeck.naturesaura.data.BlockStateGenerator;
|
import de.ellpeck.naturesaura.data.BlockStateGenerator;
|
||||||
import de.ellpeck.naturesaura.reg.*;
|
import de.ellpeck.naturesaura.reg.*;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.*;
|
||||||
import net.minecraft.block.BlockState;
|
|
||||||
import net.minecraft.block.LeavesBlock;
|
|
||||||
import net.minecraft.block.SoundType;
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.block.material.MaterialColor;
|
import net.minecraft.block.material.MaterialColor;
|
||||||
import net.minecraft.client.renderer.color.IBlockColor;
|
import net.minecraft.client.renderer.color.IBlockColor;
|
||||||
|
@ -30,7 +27,7 @@ public class BlockGoldenLeaves extends LeavesBlock implements IModItem, IColorPr
|
||||||
public static final IntegerProperty STAGE = IntegerProperty.create("stage", 0, HIGHEST_STAGE);
|
public static final IntegerProperty STAGE = IntegerProperty.create("stage", 0, HIGHEST_STAGE);
|
||||||
|
|
||||||
public BlockGoldenLeaves() {
|
public BlockGoldenLeaves() {
|
||||||
super(ModBlocks.prop(Material.LEAVES, MaterialColor.GOLD).hardnessAndResistance(0.2F).tickRandomly().notSolid().sound(SoundType.PLANT));
|
super(Properties.create(Material.LEAVES, MaterialColor.GOLD).hardnessAndResistance(0.2F).tickRandomly().notSolid().sound(SoundType.PLANT));
|
||||||
ModRegistry.add(this);
|
ModRegistry.add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ public class BlockGratedChute extends BlockContainerImpl implements ICustomBlock
|
||||||
private static final VoxelShape WEST_RAYTRACE_SHAPE = VoxelShapes.or(IHopper.INSIDE_BOWL_SHAPE, Block.makeCuboidShape(0.0D, 8.0D, 6.0D, 4.0D, 10.0D, 10.0D));
|
private static final VoxelShape WEST_RAYTRACE_SHAPE = VoxelShapes.or(IHopper.INSIDE_BOWL_SHAPE, Block.makeCuboidShape(0.0D, 8.0D, 6.0D, 4.0D, 10.0D, 10.0D));
|
||||||
|
|
||||||
public BlockGratedChute() {
|
public BlockGratedChute() {
|
||||||
super("grated_chute", TileEntityGratedChute::new, ModBlocks.prop(Material.IRON).hardnessAndResistance(3.0F, 8.0F).sound(SoundType.METAL));
|
super("grated_chute", TileEntityGratedChute::new, Properties.create(Material.IRON).hardnessAndResistance(3.0F, 8.0F).sound(SoundType.METAL));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -12,7 +12,7 @@ import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
|
||||||
public class BlockHopperUpgrade extends BlockContainerImpl implements IVisualizable {
|
public class BlockHopperUpgrade extends BlockContainerImpl implements IVisualizable {
|
||||||
public BlockHopperUpgrade() {
|
public BlockHopperUpgrade() {
|
||||||
super("hopper_upgrade", TileEntityHopperUpgrade::new, ModBlocks.prop(Material.IRON).hardnessAndResistance(2.5F).sound(SoundType.METAL));
|
super("hopper_upgrade", TileEntityHopperUpgrade::new, Properties.create(Material.IRON).hardnessAndResistance(2.5F).sound(SoundType.METAL));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -16,7 +16,7 @@ import net.minecraft.world.World;
|
||||||
public class BlockItemDistributor extends BlockContainerImpl implements ICustomBlockState {
|
public class BlockItemDistributor extends BlockContainerImpl implements ICustomBlockState {
|
||||||
|
|
||||||
public BlockItemDistributor() {
|
public BlockItemDistributor() {
|
||||||
super("item_distributor", TileEntityItemDistributor::new, ModBlocks.prop(Blocks.STONE_BRICKS));
|
super("item_distributor", TileEntityItemDistributor::new, Properties.from(Blocks.STONE_BRICKS));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -12,7 +12,7 @@ import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
|
||||||
public class BlockMossGenerator extends BlockContainerImpl implements IVisualizable {
|
public class BlockMossGenerator extends BlockContainerImpl implements IVisualizable {
|
||||||
public BlockMossGenerator() {
|
public BlockMossGenerator() {
|
||||||
super("moss_generator", TileEntityMossGenerator::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE));
|
super("moss_generator", TileEntityMossGenerator::new, Properties.create(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -41,7 +41,7 @@ public class BlockNatureAltar extends BlockContainerImpl implements ITESRProvide
|
||||||
public static final BooleanProperty NETHER = BooleanProperty.create("nether");
|
public static final BooleanProperty NETHER = BooleanProperty.create("nether");
|
||||||
|
|
||||||
public BlockNatureAltar() {
|
public BlockNatureAltar() {
|
||||||
super("nature_altar", TileEntityNatureAltar::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(4F).harvestLevel(1).harvestTool(ToolType.PICKAXE));
|
super("nature_altar", TileEntityNatureAltar::new, Properties.create(Material.ROCK).hardnessAndResistance(4F).harvestLevel(1).harvestTool(ToolType.PICKAXE));
|
||||||
this.setDefaultState(this.getDefaultState().with(NETHER, false));
|
this.setDefaultState(this.getDefaultState().with(NETHER, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,7 @@ package de.ellpeck.naturesaura.blocks;
|
||||||
|
|
||||||
import de.ellpeck.naturesaura.data.BlockStateGenerator;
|
import de.ellpeck.naturesaura.data.BlockStateGenerator;
|
||||||
import de.ellpeck.naturesaura.reg.ICustomBlockState;
|
import de.ellpeck.naturesaura.reg.ICustomBlockState;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.*;
|
||||||
import net.minecraft.block.Blocks;
|
|
||||||
import net.minecraft.block.IGrowable;
|
|
||||||
import net.minecraft.util.Direction;
|
import net.minecraft.util.Direction;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.IBlockReader;
|
import net.minecraft.world.IBlockReader;
|
||||||
|
@ -16,7 +14,7 @@ import java.util.Random;
|
||||||
public class BlockNetherGrass extends BlockImpl implements ICustomBlockState, IGrowable {
|
public class BlockNetherGrass extends BlockImpl implements ICustomBlockState, IGrowable {
|
||||||
|
|
||||||
public BlockNetherGrass() {
|
public BlockNetherGrass() {
|
||||||
super("nether_grass", ModBlocks.prop(Blocks.NETHERRACK).tickRandomly());
|
super("nether_grass", Properties.from(Blocks.NETHERRACK).tickRandomly());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -25,7 +25,7 @@ import java.util.Random;
|
||||||
public class BlockOakGenerator extends BlockContainerImpl implements IVisualizable, ICustomBlockState {
|
public class BlockOakGenerator extends BlockContainerImpl implements IVisualizable, ICustomBlockState {
|
||||||
|
|
||||||
public BlockOakGenerator() {
|
public BlockOakGenerator() {
|
||||||
super("oak_generator", TileEntityOakGenerator::new, ModBlocks.prop(Material.WOOD).hardnessAndResistance(2F).sound(SoundType.WOOD));
|
super("oak_generator", TileEntityOakGenerator::new, Properties.create(Material.WOOD).hardnessAndResistance(2F).sound(SoundType.WOOD));
|
||||||
|
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ public class BlockOfferingTable extends BlockContainerImpl implements ITESRProvi
|
||||||
private static final VoxelShape SHAPE = VoxelShapes.create(2 / 16F, 0F, 2 / 16F, 14 / 16F, 1F, 14 / 16F);
|
private static final VoxelShape SHAPE = VoxelShapes.create(2 / 16F, 0F, 2 / 16F, 14 / 16F, 1F, 14 / 16F);
|
||||||
|
|
||||||
public BlockOfferingTable() {
|
public BlockOfferingTable() {
|
||||||
super("offering_table", TileEntityOfferingTable::new, ModBlocks.prop(Material.WOOD).hardnessAndResistance(2F).sound(SoundType.WOOD));
|
super("offering_table", TileEntityOfferingTable::new, Properties.create(Material.WOOD).hardnessAndResistance(2F).sound(SoundType.WOOD));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -23,7 +23,7 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
|
||||||
public class BlockPickupStopper extends BlockContainerImpl implements IVisualizable, ICustomBlockState {
|
public class BlockPickupStopper extends BlockContainerImpl implements IVisualizable, ICustomBlockState {
|
||||||
public BlockPickupStopper() {
|
public BlockPickupStopper() {
|
||||||
super("pickup_stopper", TileEntityPickupStopper::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE));
|
super("pickup_stopper", TileEntityPickupStopper::new, Properties.create(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE));
|
||||||
|
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
public class BlockPlacer extends BlockContainerImpl implements IVisualizable, ICustomBlockState {
|
public class BlockPlacer extends BlockContainerImpl implements IVisualizable, ICustomBlockState {
|
||||||
|
|
||||||
public BlockPlacer() {
|
public BlockPlacer() {
|
||||||
super("placer", TileEntityPlacer::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE));
|
super("placer", TileEntityPlacer::new, Properties.create(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -8,7 +8,7 @@ import net.minecraftforge.common.ToolType;
|
||||||
|
|
||||||
public class BlockPotionGenerator extends BlockContainerImpl implements ICustomBlockState {
|
public class BlockPotionGenerator extends BlockContainerImpl implements ICustomBlockState {
|
||||||
public BlockPotionGenerator() {
|
public BlockPotionGenerator() {
|
||||||
super("potion_generator", TileEntityPotionGenerator::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(5F).harvestTool(ToolType.PICKAXE).harvestLevel(1));
|
super("potion_generator", TileEntityPotionGenerator::new, Properties.create(Material.ROCK).hardnessAndResistance(5F).harvestTool(ToolType.PICKAXE).harvestLevel(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -17,7 +17,7 @@ public class BlockPowderPlacer extends BlockContainerImpl implements ICustomBloc
|
||||||
private static final VoxelShape SHAPE = VoxelShapes.create(0F, 0F, 0F, 1F, 4 / 16F, 1F);
|
private static final VoxelShape SHAPE = VoxelShapes.create(0F, 0F, 0F, 1F, 4 / 16F, 1F);
|
||||||
|
|
||||||
public BlockPowderPlacer() {
|
public BlockPowderPlacer() {
|
||||||
super("powder_placer", TileEntityPowderPlacer::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2, 5F).sound(SoundType.STONE));
|
super("powder_placer", TileEntityPowderPlacer::new, Properties.create(Material.ROCK).hardnessAndResistance(2, 5F).sound(SoundType.STONE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -32,7 +32,7 @@ import java.util.function.Supplier;
|
||||||
|
|
||||||
public class BlockProjectileGenerator extends BlockContainerImpl implements ITESRProvider<TileEntityProjectileGenerator>, ICustomBlockState {
|
public class BlockProjectileGenerator extends BlockContainerImpl implements ITESRProvider<TileEntityProjectileGenerator>, ICustomBlockState {
|
||||||
public BlockProjectileGenerator() {
|
public BlockProjectileGenerator() {
|
||||||
super("projectile_generator", TileEntityProjectileGenerator::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE));
|
super("projectile_generator", TileEntityProjectileGenerator::new, Properties.create(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE));
|
||||||
|
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
|
||||||
public class BlockSnowCreator extends BlockContainerImpl implements IVisualizable, ICustomBlockState {
|
public class BlockSnowCreator extends BlockContainerImpl implements IVisualizable, ICustomBlockState {
|
||||||
public BlockSnowCreator() {
|
public BlockSnowCreator() {
|
||||||
super("snow_creator", TileEntitySnowCreator::new, ModBlocks.prop(Blocks.STONE_BRICKS));
|
super("snow_creator", TileEntitySnowCreator::new, Properties.from(Blocks.STONE_BRICKS));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -40,7 +40,7 @@ public class BlockSpawnLamp extends BlockContainerImpl implements IVisualizable,
|
||||||
private static final VoxelShape SHAPE = VoxelShapes.create(4 / 16F, 0F, 4 / 16F, 12 / 16F, 13 / 16F, 12 / 16F);
|
private static final VoxelShape SHAPE = VoxelShapes.create(4 / 16F, 0F, 4 / 16F, 12 / 16F, 13 / 16F, 12 / 16F);
|
||||||
|
|
||||||
public BlockSpawnLamp() {
|
public BlockSpawnLamp() {
|
||||||
super("spawn_lamp", TileEntitySpawnLamp::new, ModBlocks.prop(Material.IRON).hardnessAndResistance(3F).setLightLevel(s -> 15).sound(SoundType.METAL));
|
super("spawn_lamp", TileEntitySpawnLamp::new, Properties.create(Material.IRON).hardnessAndResistance(3F).setLightLevel(s -> 15).sound(SoundType.METAL));
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
70
src/main/java/de/ellpeck/naturesaura/blocks/BlockSpring.java
Normal file
70
src/main/java/de/ellpeck/naturesaura/blocks/BlockSpring.java
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
package de.ellpeck.naturesaura.blocks;
|
||||||
|
|
||||||
|
import de.ellpeck.naturesaura.blocks.tiles.TileEntitySpring;
|
||||||
|
import de.ellpeck.naturesaura.data.BlockStateGenerator;
|
||||||
|
import de.ellpeck.naturesaura.reg.IColorProvidingBlock;
|
||||||
|
import de.ellpeck.naturesaura.reg.IColorProvidingItem;
|
||||||
|
import de.ellpeck.naturesaura.reg.ICustomBlockState;
|
||||||
|
import de.ellpeck.naturesaura.reg.ICustomRenderType;
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.block.Blocks;
|
||||||
|
import net.minecraft.block.IBucketPickupHandler;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.client.renderer.color.IBlockColor;
|
||||||
|
import net.minecraft.client.renderer.color.IItemColor;
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import net.minecraft.fluid.Fluid;
|
||||||
|
import net.minecraft.fluid.Fluids;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.world.IWorld;
|
||||||
|
import net.minecraft.world.biome.BiomeColors;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class BlockSpring extends BlockContainerImpl implements ICustomBlockState, IColorProvidingBlock, IColorProvidingItem, IBucketPickupHandler, ICustomRenderType {
|
||||||
|
public BlockSpring() {
|
||||||
|
super("spring", TileEntitySpring::new, Properties.from(Blocks.STONE_BRICKS));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
public IBlockColor getBlockColor() {
|
||||||
|
return (state, world, pos, i) -> BiomeColors.getWaterColor(world, pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
@SuppressWarnings("Convert2Lambda")
|
||||||
|
public IItemColor getItemColor() {
|
||||||
|
return new IItemColor() {
|
||||||
|
@Override
|
||||||
|
public int getColor(ItemStack stack, int i) {
|
||||||
|
PlayerEntity player = Minecraft.getInstance().player;
|
||||||
|
return BiomeColors.getWaterColor(player.world, player.getPosition());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void generateCustomBlockState(BlockStateGenerator generator) {
|
||||||
|
generator.simpleBlock(this, generator.models().getExistingFile(generator.modLoc(this.getBaseName())));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Fluid pickupFluid(IWorld worldIn, BlockPos pos, BlockState state) {
|
||||||
|
TileEntity tile = worldIn.getTileEntity(pos);
|
||||||
|
if (tile instanceof TileEntitySpring)
|
||||||
|
((TileEntitySpring) tile).consumeAura(2500);
|
||||||
|
return Fluids.WATER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Supplier<RenderType> getRenderType() {
|
||||||
|
return RenderType::getTranslucent;
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,7 +8,7 @@ import net.minecraft.block.material.Material;
|
||||||
|
|
||||||
public class BlockTimeChanger extends BlockContainerImpl implements ICustomBlockState {
|
public class BlockTimeChanger extends BlockContainerImpl implements ICustomBlockState {
|
||||||
public BlockTimeChanger() {
|
public BlockTimeChanger() {
|
||||||
super("time_changer", TileEntityTimeChanger::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE));
|
super("time_changer", TileEntityTimeChanger::new, Properties.create(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
package de.ellpeck.naturesaura.blocks;
|
package de.ellpeck.naturesaura.blocks;
|
||||||
|
|
||||||
import de.ellpeck.naturesaura.Helper;
|
import de.ellpeck.naturesaura.Helper;
|
||||||
import de.ellpeck.naturesaura.api.NaturesAuraAPI;
|
|
||||||
import de.ellpeck.naturesaura.recipes.ModRecipe;
|
|
||||||
import de.ellpeck.naturesaura.recipes.ModRecipes;
|
import de.ellpeck.naturesaura.recipes.ModRecipes;
|
||||||
import de.ellpeck.naturesaura.recipes.TreeRitualRecipe;
|
import de.ellpeck.naturesaura.recipes.TreeRitualRecipe;
|
||||||
import de.ellpeck.naturesaura.blocks.multi.Multiblocks;
|
import de.ellpeck.naturesaura.blocks.multi.Multiblocks;
|
||||||
|
@ -50,7 +48,7 @@ public class BlockWoodStand extends BlockContainerImpl implements ITESRProvider<
|
||||||
private static final VoxelShape SHAPE = VoxelShapes.create(3 / 16F, 0F, 3 / 16F, 13 / 16F, 13 / 16F, 13 / 16F);
|
private static final VoxelShape SHAPE = VoxelShapes.create(3 / 16F, 0F, 3 / 16F, 13 / 16F, 13 / 16F, 13 / 16F);
|
||||||
|
|
||||||
public BlockWoodStand() {
|
public BlockWoodStand() {
|
||||||
super("wood_stand", TileEntityWoodStand::new, ModBlocks.prop(Material.WOOD).hardnessAndResistance(1.5F).sound(SoundType.WOOD).harvestLevel(0).harvestTool(ToolType.AXE));
|
super("wood_stand", TileEntityWoodStand::new, Properties.create(Material.WOOD).hardnessAndResistance(1.5F).sound(SoundType.WOOD).harvestLevel(0).harvestTool(ToolType.AXE));
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -71,17 +71,5 @@ public final class ModBlocks {
|
||||||
public static Block CHORUS_GENERATOR;
|
public static Block CHORUS_GENERATOR;
|
||||||
public static Block AURA_TIMER;
|
public static Block AURA_TIMER;
|
||||||
public static Block SLIME_SPLIT_GENERATOR;
|
public static Block SLIME_SPLIT_GENERATOR;
|
||||||
|
public static Block SPRING;
|
||||||
public static Block.Properties prop(Material material, MaterialColor color) {
|
|
||||||
return Block.Properties.create(material, color);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Block.Properties prop(Material material) {
|
|
||||||
return Block.Properties.create(material);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Block.Properties prop(Block block) {
|
|
||||||
return Block.Properties.from(block);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,4 +41,5 @@ public final class ModTileEntities {
|
||||||
public static TileEntityType<TileEntityChorusGenerator> CHORUS_GENERATOR;
|
public static TileEntityType<TileEntityChorusGenerator> CHORUS_GENERATOR;
|
||||||
public static TileEntityType<TileEntityAuraTimer> AURA_TIMER;
|
public static TileEntityType<TileEntityAuraTimer> AURA_TIMER;
|
||||||
public static TileEntityType<TileEntitySlimeSplitGenerator> SLIME_SPLIT_GENERATOR;
|
public static TileEntityType<TileEntitySlimeSplitGenerator> SLIME_SPLIT_GENERATOR;
|
||||||
|
public static TileEntityType<TileEntitySpring> SPRING;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,183 @@
|
||||||
|
package de.ellpeck.naturesaura.blocks.tiles;
|
||||||
|
|
||||||
|
import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.block.Blocks;
|
||||||
|
import net.minecraft.block.CauldronBlock;
|
||||||
|
import net.minecraft.fluid.FluidState;
|
||||||
|
import net.minecraft.fluid.Fluids;
|
||||||
|
import net.minecraft.tags.FluidTags;
|
||||||
|
import net.minecraft.tileentity.ITickableTileEntity;
|
||||||
|
import net.minecraft.util.Direction;
|
||||||
|
import net.minecraft.util.SoundCategory;
|
||||||
|
import net.minecraft.util.SoundEvents;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraftforge.common.FarmlandWaterManager;
|
||||||
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
|
import net.minecraftforge.common.ticket.AABBTicket;
|
||||||
|
import net.minecraftforge.common.util.LazyOptional;
|
||||||
|
import net.minecraftforge.event.ForgeEventFactory;
|
||||||
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
import net.minecraftforge.fluids.IFluidTank;
|
||||||
|
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||||
|
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||||
|
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||||
|
|
||||||
|
public class TileEntitySpring extends TileEntityImpl implements ITickableTileEntity {
|
||||||
|
|
||||||
|
private final IFluidTank tank = new InfiniteTank();
|
||||||
|
private AABBTicket waterTicket;
|
||||||
|
|
||||||
|
public TileEntitySpring() {
|
||||||
|
super(ModTileEntities.SPRING);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void validate() {
|
||||||
|
super.validate();
|
||||||
|
if (!this.world.isRemote) {
|
||||||
|
// add a ticket to water crops
|
||||||
|
AxisAlignedBB area = new AxisAlignedBB(this.pos).grow(5);
|
||||||
|
FarmlandWaterManager.addAABBTicket(this.world, area);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void remove() {
|
||||||
|
super.remove();
|
||||||
|
if (!this.world.isRemote && this.waterTicket != null && this.waterTicket.isValid()) {
|
||||||
|
this.waterTicket.invalidate();
|
||||||
|
this.waterTicket = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick() {
|
||||||
|
if (this.world.isRemote || this.world.getGameTime() % 35 != 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// fill cauldrons
|
||||||
|
BlockPos up = this.pos.up();
|
||||||
|
BlockState upState = this.world.getBlockState(up);
|
||||||
|
if (upState.hasProperty(CauldronBlock.LEVEL)) {
|
||||||
|
int level = upState.get(CauldronBlock.LEVEL);
|
||||||
|
if (level < 3) {
|
||||||
|
this.world.setBlockState(up, upState.with(CauldronBlock.LEVEL, level + 1));
|
||||||
|
this.world.playSound(null, up, SoundEvents.ITEM_BUCKET_FILL, SoundCategory.BLOCKS, 1, 1);
|
||||||
|
this.consumeAura(2500);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// wet sponges
|
||||||
|
int spongeRadius = 2;
|
||||||
|
for (int x = -spongeRadius; x <= spongeRadius; x++) {
|
||||||
|
for (int y = -spongeRadius; y <= spongeRadius; y++) {
|
||||||
|
for (int z = -spongeRadius; z <= spongeRadius; z++) {
|
||||||
|
BlockPos pos = this.pos.add(x, y, z);
|
||||||
|
BlockState state = this.world.getBlockState(pos);
|
||||||
|
if (state.getBlock() == Blocks.SPONGE) {
|
||||||
|
this.world.setBlockState(pos, Blocks.WET_SPONGE.getDefaultState(), 2);
|
||||||
|
this.world.playEvent(2001, pos, Block.getStateId(Blocks.WATER.getDefaultState()));
|
||||||
|
this.consumeAura(2500);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// generate obsidian
|
||||||
|
for (Direction dir : Direction.Plane.HORIZONTAL) {
|
||||||
|
BlockPos side = this.pos.offset(dir);
|
||||||
|
if (this.isLava(side, true)) {
|
||||||
|
this.world.setBlockState(side, ForgeEventFactory.fireFluidPlaceBlockEvent(this.world, side, side, Blocks.OBSIDIAN.getDefaultState()));
|
||||||
|
this.world.playEvent(1501, side, 0);
|
||||||
|
this.consumeAura(1500);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// generate stone
|
||||||
|
BlockPos twoUp = this.pos.up(2);
|
||||||
|
if (this.isLava(twoUp, false) && (this.world.getBlockState(up).isAir(this.world, up) || this.isLava(up, false))) {
|
||||||
|
this.world.setBlockState(up, ForgeEventFactory.fireFluidPlaceBlockEvent(this.world, up, twoUp, Blocks.STONE.getDefaultState()));
|
||||||
|
this.world.playEvent(1501, up, 0);
|
||||||
|
this.consumeAura(150);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// generate cobblestone
|
||||||
|
for (Direction dir : Direction.Plane.HORIZONTAL) {
|
||||||
|
BlockPos twoSide = this.pos.offset(dir, 2);
|
||||||
|
BlockPos side = this.pos.offset(dir);
|
||||||
|
if (this.isLava(twoSide, false) && (this.world.getBlockState(side).isAir(this.world, side) || this.isLava(side, false))) {
|
||||||
|
this.world.setBlockState(side, ForgeEventFactory.fireFluidPlaceBlockEvent(this.world, side, twoSide, Blocks.COBBLESTONE.getDefaultState()));
|
||||||
|
this.world.playEvent(1501, side, 0);
|
||||||
|
this.consumeAura(100);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> LazyOptional<T> getCapability(Capability<T> capability, Direction facing) {
|
||||||
|
if (capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||||
|
return LazyOptional.of(() -> (T) this.tank);
|
||||||
|
return LazyOptional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void consumeAura(int amount) {
|
||||||
|
while (amount > 0) {
|
||||||
|
BlockPos pos = IAuraChunk.getHighestSpot(this.world, this.pos, 35, this.pos);
|
||||||
|
amount -= IAuraChunk.getAuraChunk(this.world, pos).drainAura(pos, amount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isLava(BlockPos offset, boolean source) {
|
||||||
|
FluidState state = this.world.getFluidState(offset);
|
||||||
|
return (!source || state.isSource()) && state.getFluid().isIn(FluidTags.LAVA);
|
||||||
|
}
|
||||||
|
|
||||||
|
private class InfiniteTank implements IFluidTank {
|
||||||
|
@Override
|
||||||
|
public FluidStack getFluid() {
|
||||||
|
return new FluidStack(Fluids.WATER, Integer.MAX_VALUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getFluidAmount() {
|
||||||
|
return Integer.MAX_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getCapacity() {
|
||||||
|
return Integer.MAX_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isFluidValid(FluidStack stack) {
|
||||||
|
return stack.getFluid().isIn(FluidTags.WATER);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int fill(FluidStack resource, IFluidHandler.FluidAction action) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FluidStack drain(int maxDrain, IFluidHandler.FluidAction action) {
|
||||||
|
if (action.execute())
|
||||||
|
TileEntitySpring.this.consumeAura(2 * maxDrain);
|
||||||
|
return new FluidStack(Fluids.WATER, maxDrain);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FluidStack drain(FluidStack resource, IFluidHandler.FluidAction action) {
|
||||||
|
if (this.isFluidValid(resource))
|
||||||
|
return this.drain(resource.getAmount(), action);
|
||||||
|
return FluidStack.EMPTY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -47,21 +47,14 @@ 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.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.biome.Biome;
|
|
||||||
import net.minecraft.world.gen.GenerationStage;
|
|
||||||
import net.minecraft.world.gen.feature.Feature;
|
import net.minecraft.world.gen.feature.Feature;
|
||||||
import net.minecraft.world.gen.feature.IFeatureConfig;
|
|
||||||
import net.minecraft.world.gen.feature.structure.Structure;
|
import net.minecraft.world.gen.feature.structure.Structure;
|
||||||
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.event.world.BiomeLoadingEvent;
|
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
import net.minecraftforge.fml.client.registry.IRenderFactory;
|
import net.minecraftforge.fml.client.registry.IRenderFactory;
|
||||||
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;
|
||||||
|
@ -82,9 +75,9 @@ public final class ModRegistry {
|
||||||
event.getRegistry().registerAll(
|
event.getRegistry().registerAll(
|
||||||
new BlockAncientLog("ancient_log"),
|
new BlockAncientLog("ancient_log"),
|
||||||
new BlockAncientLog("ancient_bark"),
|
new BlockAncientLog("ancient_bark"),
|
||||||
temp = new BlockImpl("ancient_planks", ModBlocks.prop(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(2F)),
|
temp = new BlockImpl("ancient_planks", Block.Properties.create(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(2F)),
|
||||||
new BlockStairsNA("ancient_stairs", "ancient_planks", temp::getDefaultState, ModBlocks.prop(temp)),
|
new BlockStairsNA("ancient_stairs", "ancient_planks", temp::getDefaultState, Block.Properties.from(temp)),
|
||||||
new Slab("ancient_slab", "ancient_planks", ModBlocks.prop(temp)),
|
new Slab("ancient_slab", "ancient_planks", Block.Properties.from(temp)),
|
||||||
new BlockAncientLeaves(),
|
new BlockAncientLeaves(),
|
||||||
new BlockAncientSapling(),
|
new BlockAncientSapling(),
|
||||||
new BlockNatureAltar(),
|
new BlockNatureAltar(),
|
||||||
|
@ -92,23 +85,23 @@ public final class ModRegistry {
|
||||||
new BlockGoldenLeaves(),
|
new BlockGoldenLeaves(),
|
||||||
new BlockGoldPowder(),
|
new BlockGoldPowder(),
|
||||||
new BlockWoodStand(),
|
new BlockWoodStand(),
|
||||||
temp = new BlockImpl("infused_stone", ModBlocks.prop(Material.ROCK).sound(SoundType.STONE).hardnessAndResistance(1.75F)),
|
temp = new BlockImpl("infused_stone", Block.Properties.create(Material.ROCK).sound(SoundType.STONE).hardnessAndResistance(1.75F)),
|
||||||
new BlockStairsNA("infused_stairs", "infused_stone", temp::getDefaultState, ModBlocks.prop(temp)),
|
new BlockStairsNA("infused_stairs", "infused_stone", temp::getDefaultState, Block.Properties.from(temp)),
|
||||||
new Slab("infused_slab", "infused_stone", ModBlocks.prop(temp)),
|
new Slab("infused_slab", "infused_stone", Block.Properties.from(temp)),
|
||||||
temp = new BlockImpl("infused_brick", ModBlocks.prop(Material.ROCK).sound(SoundType.STONE).hardnessAndResistance(1.5F)),
|
temp = new BlockImpl("infused_brick", Block.Properties.create(Material.ROCK).sound(SoundType.STONE).hardnessAndResistance(1.5F)),
|
||||||
new BlockStairsNA("infused_brick_stairs", "infused_brick", temp::getDefaultState, ModBlocks.prop(temp)),
|
new BlockStairsNA("infused_brick_stairs", "infused_brick", temp::getDefaultState, Block.Properties.from(temp)),
|
||||||
new Slab("infused_brick_slab", "infused_brick", ModBlocks.prop(temp)),
|
new Slab("infused_brick_slab", "infused_brick", Block.Properties.from(temp)),
|
||||||
new BlockFurnaceHeater(),
|
new BlockFurnaceHeater(),
|
||||||
new BlockPotionGenerator(),
|
new BlockPotionGenerator(),
|
||||||
new BlockAuraDetector(),
|
new BlockAuraDetector(),
|
||||||
new BlockCatalyst("conversion_catalyst", ModBlocks.prop(Material.ROCK).sound(SoundType.STONE).hardnessAndResistance(2.5F)),
|
new BlockCatalyst("conversion_catalyst", Block.Properties.create(Material.ROCK).sound(SoundType.STONE).hardnessAndResistance(2.5F)),
|
||||||
new BlockCatalyst("crushing_catalyst", ModBlocks.prop(Material.ROCK).sound(SoundType.STONE).hardnessAndResistance(2.5F)),
|
new BlockCatalyst("crushing_catalyst", Block.Properties.create(Material.ROCK).sound(SoundType.STONE).hardnessAndResistance(2.5F)),
|
||||||
new BlockFlowerGenerator(),
|
new BlockFlowerGenerator(),
|
||||||
new BlockPlacer(),
|
new BlockPlacer(),
|
||||||
new BlockHopperUpgrade(),
|
new BlockHopperUpgrade(),
|
||||||
new BlockFieldCreator(),
|
new BlockFieldCreator(),
|
||||||
new BlockOakGenerator(),
|
new BlockOakGenerator(),
|
||||||
new BlockImpl("infused_iron_block", ModBlocks.prop(Material.IRON).sound(SoundType.METAL).hardnessAndResistance(3F)),
|
new BlockImpl("infused_iron_block", Block.Properties.create(Material.IRON).sound(SoundType.METAL).hardnessAndResistance(3F)),
|
||||||
new BlockOfferingTable(),
|
new BlockOfferingTable(),
|
||||||
new BlockPickupStopper(),
|
new BlockPickupStopper(),
|
||||||
new BlockSpawnLamp(),
|
new BlockSpawnLamp(),
|
||||||
|
@ -117,8 +110,8 @@ public final class ModRegistry {
|
||||||
new BlockGratedChute(),
|
new BlockGratedChute(),
|
||||||
new BlockAnimalSpawner(),
|
new BlockAnimalSpawner(),
|
||||||
new BlockAutoCrafter(),
|
new BlockAutoCrafter(),
|
||||||
new BlockImpl("gold_brick", ModBlocks.prop(Blocks.STONE_BRICKS)),
|
new BlockImpl("gold_brick", Block.Properties.from(Blocks.STONE_BRICKS)),
|
||||||
new BlockImpl("gold_nether_brick", ModBlocks.prop(Blocks.NETHER_BRICKS)),
|
new BlockImpl("gold_nether_brick", Block.Properties.from(Blocks.NETHER_BRICKS)),
|
||||||
new BlockMossGenerator(),
|
new BlockMossGenerator(),
|
||||||
new BlockTimeChanger(),
|
new BlockTimeChanger(),
|
||||||
new BlockGeneratorLimitRemover(),
|
new BlockGeneratorLimitRemover(),
|
||||||
|
@ -130,7 +123,7 @@ public final class ModRegistry {
|
||||||
new BlockDimensionRail("nether", World.field_234919_h_, World.field_234918_g_),
|
new BlockDimensionRail("nether", World.field_234919_h_, World.field_234918_g_),
|
||||||
new BlockDimensionRail("end", World.field_234920_i_, World.field_234918_g_),
|
new BlockDimensionRail("end", World.field_234920_i_, World.field_234918_g_),
|
||||||
new BlockBlastFurnaceBooster(),
|
new BlockBlastFurnaceBooster(),
|
||||||
new BlockImpl("nether_wart_mushroom", ModBlocks.prop(Blocks.RED_MUSHROOM_BLOCK)),
|
new BlockImpl("nether_wart_mushroom", Block.Properties.from(Blocks.RED_MUSHROOM_BLOCK)),
|
||||||
new BlockAnimalContainer(),
|
new BlockAnimalContainer(),
|
||||||
new BlockSnowCreator(),
|
new BlockSnowCreator(),
|
||||||
new BlockItemDistributor(),
|
new BlockItemDistributor(),
|
||||||
|
@ -138,12 +131,13 @@ public final class ModRegistry {
|
||||||
createFlowerPot(temp),
|
createFlowerPot(temp),
|
||||||
temp = new BlockAuraBloom("aura_cactus", TileEntityAuraCactus::new),
|
temp = new BlockAuraBloom("aura_cactus", TileEntityAuraCactus::new),
|
||||||
createFlowerPot(temp),
|
createFlowerPot(temp),
|
||||||
new BlockImpl("tainted_gold_block", ModBlocks.prop(Material.IRON).sound(SoundType.METAL).hardnessAndResistance(3F)),
|
new BlockImpl("tainted_gold_block", Block.Properties.create(Material.IRON).sound(SoundType.METAL).hardnessAndResistance(3F)),
|
||||||
new BlockNetherGrass(),
|
new BlockNetherGrass(),
|
||||||
new BlockLight(),
|
new BlockLight(),
|
||||||
new BlockChorusGenerator(),
|
new BlockChorusGenerator(),
|
||||||
new BlockAuraTimer(),
|
new BlockAuraTimer(),
|
||||||
new BlockSlimeSplitGenerator()
|
new BlockSlimeSplitGenerator(),
|
||||||
|
new BlockSpring()
|
||||||
);
|
);
|
||||||
|
|
||||||
if (ModConfig.instance.rfConverter.get())
|
if (ModConfig.instance.rfConverter.get())
|
||||||
|
|
|
@ -66,6 +66,7 @@
|
||||||
"block.naturesaura.chorus_generator": "Reaper of Ender Heights",
|
"block.naturesaura.chorus_generator": "Reaper of Ender Heights",
|
||||||
"block.naturesaura.aura_timer": "Redstone Aura Vaporizer",
|
"block.naturesaura.aura_timer": "Redstone Aura Vaporizer",
|
||||||
"block.naturesaura.slime_split_generator": "Offshoot Observer",
|
"block.naturesaura.slime_split_generator": "Offshoot Observer",
|
||||||
|
"block.naturesaura.spring": "Everlasting Spring",
|
||||||
"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",
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/block",
|
||||||
|
"ambientocclusion": false,
|
||||||
|
"textures": {
|
||||||
|
"particle": "naturesaura:block/spring",
|
||||||
|
"frame": "naturesaura:block/spring",
|
||||||
|
"water": "naturesaura:block/spring_water"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{ "from": [ 0, 0, 0 ],
|
||||||
|
"to": [ 16, 16, 16 ],
|
||||||
|
"faces": {
|
||||||
|
"down": { "uv": [ 0, 0, 16, 16 ], "texture": "#frame", "cullface": "down" },
|
||||||
|
"up": { "uv": [ 0, 0, 16, 16 ], "texture": "#frame", "cullface": "up" },
|
||||||
|
"north": { "uv": [ 0, 0, 16, 16 ], "texture": "#frame", "cullface": "north" },
|
||||||
|
"south": { "uv": [ 0, 0, 16, 16 ], "texture": "#frame", "cullface": "south" },
|
||||||
|
"west": { "uv": [ 0, 0, 16, 16 ], "texture": "#frame", "cullface": "west" },
|
||||||
|
"east": { "uv": [ 0, 0, 16, 16 ], "texture": "#frame", "cullface": "east" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ "from": [ 0, 0, 0 ],
|
||||||
|
"to": [ 16, 16, 16 ],
|
||||||
|
"faces": {
|
||||||
|
"down": { "uv": [ 0, 0, 16, 16 ], "texture": "#water", "tintindex": 0, "cullface": "down" },
|
||||||
|
"up": { "uv": [ 0, 0, 16, 16 ], "texture": "#water", "tintindex": 0, "cullface": "up" },
|
||||||
|
"north": { "uv": [ 0, 0, 16, 16 ], "texture": "#water", "tintindex": 0, "cullface": "north" },
|
||||||
|
"south": { "uv": [ 0, 0, 16, 16 ], "texture": "#water", "tintindex": 0, "cullface": "south" },
|
||||||
|
"west": { "uv": [ 0, 0, 16, 16 ], "texture": "#water", "tintindex": 0, "cullface": "west" },
|
||||||
|
"east": { "uv": [ 0, 0, 16, 16 ], "texture": "#water", "tintindex": 0, "cullface": "east" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
BIN
src/main/resources/assets/naturesaura/textures/block/spring.png
Normal file
BIN
src/main/resources/assets/naturesaura/textures/block/spring.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 360 B |
Binary file not shown.
After Width: | Height: | Size: 192 B |
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"name": "Everlasting Spring",
|
||||||
|
"icon": "naturesaura:spring",
|
||||||
|
"category": "using",
|
||||||
|
"advancement": "naturesaura:offering",
|
||||||
|
"pages": [
|
||||||
|
{
|
||||||
|
"type": "text",
|
||||||
|
"text": "$(thing)Water$() sure is a marvelous fluid, able to interact with many other blocks in the world. The $(item)Everlasting Spring$() packages this ability elegantly into a solid structure, one that can even be used in areas that are usually deemed $(thing)too hot$() for water to exist there. As for simple actions, the $(item)Everlasting Spring$() can fill $(item)cauldrons$() on top of it, $(item)sponges$() close to it and $(item)buckets$() used on it with water."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "text",
|
||||||
|
"text": "Additionally, any more advanced mechanics like $(item)pipes$() can pull water out of it. Additionally, the spring is able to interact with $(item)lava$() in the following ways: If lava is placed one block away horizontally from it, a block of $(item)cobblestone$() will be generated. If the same is done, but vertically, $(item)stone$() is created instead. A block of lava directly next to the spring will turn into $(item)obsidian$().$(n)Of course, all of these actions require varying amounts of $(aura)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "crafting",
|
||||||
|
"text": "Assembling the $(item)Everlasting Spring$()",
|
||||||
|
"recipe": "naturesaura:spring"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
22
src/main/resources/data/naturesaura/recipes/spring.json
Normal file
22
src/main/resources/data/naturesaura/recipes/spring.json
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"pattern": [
|
||||||
|
"SWS",
|
||||||
|
"WEW",
|
||||||
|
"SWS"
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"W": {
|
||||||
|
"item": "minecraft:water_bucket"
|
||||||
|
},
|
||||||
|
"S": {
|
||||||
|
"item": "minecraft:stone_bricks"
|
||||||
|
},
|
||||||
|
"E": {
|
||||||
|
"item": "naturesaura:token_euphoria"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"item": "naturesaura:spring"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue