Skip to content

Commit

Permalink
bloomed calcite + worldgen + levita brick
Browse files Browse the repository at this point in the history
  • Loading branch information
MBatt1 committed Apr 28, 2024
1 parent f35439c commit b84aa32
Show file tree
Hide file tree
Showing 52 changed files with 584 additions and 97 deletions.
17 changes: 17 additions & 0 deletions src/main/java/net/id/paradiselost/blocks/BlockRegistration.java
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,23 @@ public record WoodBlockSet(
}
}

public static SimpleBlockSet registerSimpleBlockSet(String blockId, AbstractBlock.Settings settings) {
Block block = add(blockId, new Block(settings));
ParadiseLostStairsBlock stairs = add(blockId + "_stairs", new ParadiseLostStairsBlock(block.getDefaultState(), settings));
SlabBlock slab = add(blockId + "_slab", new SlabBlock(settings));
return new SimpleBlockSet(block, stairs, slab);
}

public record SimpleBlockSet(
Block block, StairsBlock stairs, SlabBlock slab
) implements Iterable<Block> {
public @NotNull Iterator<Block> iterator() {
return Arrays.stream(new Block[]{
block, stairs, slab
}).iterator();
}
}

// SIGN SET

public static SignSet registerSignSet(String woodId) {
Expand Down
32 changes: 10 additions & 22 deletions src/main/java/net/id/paradiselost/blocks/ParadiseLostBlocks.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,10 @@
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.id.paradiselost.blocks.decorative.*;
import net.id.paradiselost.blocks.mechanical.CherineCampfireBlock;
import net.id.paradiselost.blocks.mechanical.FoodBowlBlock;
import net.id.paradiselost.blocks.mechanical.FourBiteCakeBlock;
import net.id.paradiselost.blocks.mechanical.IncubatorBlock;
import net.id.paradiselost.blocks.mechanical.NitraBlock;
import net.id.paradiselost.blocks.mechanical.TreeTapBlock;
import net.id.paradiselost.blocks.natural.ParadiseLostGrassBlock;
import net.id.paradiselost.blocks.natural.ParadiseLostSaplingBlock;
import net.id.paradiselost.blocks.natural.ParadiseLostSnowyBlock;
import net.id.paradiselost.blocks.natural.PoofBlock;
import net.id.paradiselost.blocks.natural.SurtrumOreBlock;
import net.id.paradiselost.blocks.natural.cloud.ParadiseLostCloudBlock;
import net.id.paradiselost.blocks.natural.cloud.BlueParadiseLostCloudBlock;
import net.id.paradiselost.blocks.natural.cloud.GoldenParadiseLostCloudBlock;
import net.id.paradiselost.blocks.natural.cloud.PinkParadiseLostCloudBlock;
import net.id.paradiselost.blocks.natural.crop.AmadrysCropBlock;
import net.id.paradiselost.blocks.natural.crop.BlackcurrantBushBlock;
import net.id.paradiselost.blocks.natural.crop.FlaxCropBlock;
import net.id.paradiselost.blocks.natural.crop.SwedrootCropBlock;
import net.id.paradiselost.blocks.mechanical.*;
import net.id.paradiselost.blocks.natural.*;
import net.id.paradiselost.blocks.natural.cloud.*;
import net.id.paradiselost.blocks.natural.crop.*;
import net.id.paradiselost.blocks.natural.plant.*;
import net.id.paradiselost.blocks.natural.tree.*;
import net.id.paradiselost.fluids.ParadiseLostFluids;
Expand Down Expand Up @@ -82,12 +67,10 @@ private static Settings cloud() {
// Fluids
public static final FluidBlock DENSE_CLOUD = add("dense_cloud", new FluidBlock(ParadiseLostFluids.DENSE_CLOUD, of(Material.WATER).noCollision().strength(100f).dropsNothing()));
public static final FluidBlock SPRING_WATER = add("spring_water", new FluidBlock(ParadiseLostFluids.SPRING_WATER, of(Material.WATER).noCollision().strength(100f).dropsNothing()));
// Organic Extra
public static final Block VITROULITE = add("vitroulite", new Block(of(Material.DENSE_ICE).requiresTool().hardness(0.5f).sounds(BlockSoundGroup.GLASS)));

// Smooth Floestone
private static Settings floestone() {
return of(Material.STONE, MapColor.WHITE_GRAY).requiresTool().strength(0.5f, 1f).sounds(BlockSoundGroup.STONE);
return of(Material.STONE, MapColor.WHITE_GRAY).requiresTool().strength(0.5f, 5f).sounds(BlockSoundGroup.STONE);
}

public static final Block FLOESTONE = add("floestone", new Block(floestone()));
Expand Down Expand Up @@ -136,6 +119,9 @@ private static Settings floestoneBrick() {
public static final ParadiseLostStairsBlock SMOOTH_HELIOLITH_STAIRS = add("smooth_heliolith_stairs", new ParadiseLostStairsBlock(FLOESTONE_BRICK.getDefaultState(), floestone()));
public static final WallBlock HELIOLITH_WALL = add("heliolith_wall", new WallBlock(floestone()));

// LEVITA BRICK
public static final SimpleBlockSet LEVITA_BRICK_SET = registerSimpleBlockSet("levita_brick", of(Material.AGGREGATE, MapColor.LIGHT_BLUE_GRAY).requiresTool().strength(0.3f, 3f).sounds(BlockSoundGroup.CALCITE));

private static Settings amberTiles() {
return of(Material.STONE, MapColor.GOLD).requiresTool().sounds(BlockSoundGroup.CALCITE).strength(2, 6);
}
Expand All @@ -144,6 +130,8 @@ private static Settings amberTiles() {
public static final SlabBlock GOLDEN_AMBER_TILE_SLAB = add("golden_amber_tile_slab", new SlabBlock(amberTiles()));
public static final ParadiseLostStairsBlock GOLDEN_AMBER_TILE_STAIRS = add("golden_amber_tile_stairs", new ParadiseLostStairsBlock(GOLDEN_AMBER_TILE.getDefaultState(), amberTiles()));

public static final Block BLOOMED_CALCITE = add("bloomed_calcite", new CropGrowthBlock(copy(CALCITE).ticksRandomly(), 2));

protected static Settings flowerPot() {
return copy(POTTED_OAK_SAPLING);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package net.id.paradiselost.blocks.natural.crop;

import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.CropBlock;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.random.Random;

public class CropGrowthBlock extends Block {

final int boostChance;

public CropGrowthBlock(Settings settings, int boostChance) {
super(settings);
this.boostChance = boostChance;
}

public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random) {
BlockState upBlock = world.getBlockState(pos.up(2));
if (upBlock.getBlock() instanceof CropBlock && random.nextInt(this.boostChance) == 0) {
upBlock.randomTick(world, pos.up(2), random);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public class ParadiseLostConfig implements ConfigData {

public static ParadiseLostConfig CONFIG;

protected String ParadiseLostPortalBaseBlock = "minecraft:glowstone";
protected String ParadiseLostPortalBaseBlock = "paradise_lost:bloomed_calcite";


public static void init() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,11 +198,13 @@ private static FabricItemSettings building_block() {
return new FabricItemSettings().group(ParadiseLostItemGroups.PARADISE_LOST_BUILDING_BLOCKS);
}

public static final BlockItem BLOOMED_CALCITE = add("bloomed_calcite", ParadiseLostBlocks.BLOOMED_CALCITE, building_block());

// stone
public static final BlockItem FLOESTONE = add("floestone", ParadiseLostBlocks.FLOESTONE, building_block());
public static final BlockItem COBBLED_FLOESTONE = add("cobbled_floestone", ParadiseLostBlocks.COBBLED_FLOESTONE, building_block());
public static final BlockItem HELIOLITH = add("heliolith", ParadiseLostBlocks.HELIOLITH, building_block());
public static final BlockItem VITROULITE = add("vitroulite", ParadiseLostBlocks.VITROULITE, building_block());

// nature
public static final BlockItem HIGHLANDS_GRASS = add("highlands_grass", ParadiseLostBlocks.HIGHLANDS_GRASS, building_block());

Expand Down Expand Up @@ -272,6 +274,7 @@ private static FabricItemSettings building_block() {
public static final BlockItem FLOESTONE_BRICK = add("floestone_brick", ParadiseLostBlocks.FLOESTONE_BRICK, building_block());
public static final BlockItem CHISELED_FLOESTONE = add("chiseled_floestone", ParadiseLostBlocks.CHISELED_FLOESTONE, building_block());
public static final BlockItem SMOOTH_HELIOLITH = add("smooth_heliolith", ParadiseLostBlocks.SMOOTH_HELIOLITH, building_block());
public static final BlockItem LEVITA_BRICK = add("levita_brick", ParadiseLostBlocks.LEVITA_BRICK_SET.block(), building_block());
public static final BlockItem GOLDEN_AMBER_TILE = add("golden_amber_tile", ParadiseLostBlocks.GOLDEN_AMBER_TILE, building_block());

// stairs
Expand All @@ -286,6 +289,7 @@ private static FabricItemSettings building_block() {
public static final BlockItem HELIOLITH_STAIRS = add("heliolith_stairs", ParadiseLostBlocks.HELIOLITH_STAIRS, building_block());
public static final BlockItem FLOESTONE_BRICK_STAIRS = add("floestone_brick_stairs", ParadiseLostBlocks.FLOESTONE_BRICK_STAIRS, building_block());
public static final BlockItem SMOOTH_HELIOLITH_STAIRS = add("smooth_heliolith_stairs", ParadiseLostBlocks.SMOOTH_HELIOLITH_STAIRS, building_block());
public static final BlockItem LEVITA_BRICK_STAIRS = add("levita_brick_stairs", ParadiseLostBlocks.LEVITA_BRICK_SET.stairs(), building_block());
public static final BlockItem GOLDEN_AMBER_TILE_STAIRS = add("golden_amber_tile_stairs", ParadiseLostBlocks.GOLDEN_AMBER_TILE_STAIRS, building_block());

public static final BlockItem FLOESTONE_SLAB = add("floestone_slab", ParadiseLostBlocks.FLOESTONE_SLAB, building_block());
Expand All @@ -294,6 +298,7 @@ private static FabricItemSettings building_block() {
public static final BlockItem HELIOLITH_SLAB = add("heliolith_slab", ParadiseLostBlocks.HELIOLITH_SLAB, building_block());
public static final BlockItem FLOESTONE_BRICK_SLAB = add("floestone_brick_slab", ParadiseLostBlocks.FLOESTONE_BRICK_SLAB, building_block());
public static final BlockItem SMOOTH_HELIOLITH_SLAB = add("smooth_heliolith_slab", ParadiseLostBlocks.SMOOTH_HELIOLITH_SLAB, building_block());
public static final BlockItem LEVITA_BRICK_SLAB = add("levita_brick_slab", ParadiseLostBlocks.LEVITA_BRICK_SET.slab(), building_block());
public static final BlockItem GOLDEN_AMBER_TILE_SLAB = add("golden_amber_tile_slab", ParadiseLostBlocks.GOLDEN_AMBER_TILE_SLAB, building_block());
// colorfuls

Expand Down
66 changes: 66 additions & 0 deletions src/main/java/net/id/paradiselost/mixin/item/PotionItemMixin.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package net.id.paradiselost.mixin.item;

import net.id.paradiselost.blocks.ParadiseLostBlocks;
import net.id.paradiselost.tag.ParadiseLostBlockTags;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.CauldronBlock;
import net.minecraft.block.CryingObsidianBlock;
import net.minecraft.block.RedstoneOreBlock;
import net.minecraft.client.particle.FireworksSparkParticle;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.projectile.FireworkRocketEntity;
import net.minecraft.entity.projectile.thrown.PotionEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemUsage;
import net.minecraft.item.ItemUsageContext;
import net.minecraft.item.Items;
import net.minecraft.item.PotionItem;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.potion.PotionUtil;
import net.minecraft.potion.Potions;
import net.minecraft.sound.SoundCategory;
import net.minecraft.sound.SoundEvents;
import net.minecraft.stat.Stats;
import net.minecraft.util.ActionResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.random.Random;
import net.minecraft.world.World;
import net.minecraft.world.event.GameEvent;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

@Mixin(PotionItem.class)
public class PotionItemMixin {

@Inject(method = "useOnBlock", at = @At("RETURN"), cancellable = true)
public void useOnBlock(ItemUsageContext context, CallbackInfoReturnable<ActionResult> cir) {
World world = context.getWorld();
BlockPos blockPos = context.getBlockPos();
PlayerEntity playerEntity = context.getPlayer();
ItemStack itemStack = context.getStack();
BlockState blockState = world.getBlockState(blockPos);
Random random = world.random;
if (blockState.isOf(Blocks.CALCITE) && (PotionUtil.getPotion(itemStack) == Potions.HEALING || PotionUtil.getPotion(itemStack) == Potions.STRONG_HEALING)) {
playerEntity.setStackInHand(context.getHand(), ItemUsage.exchangeStack(itemStack, playerEntity, new ItemStack(Items.GLASS_BOTTLE)));
world.setBlockState(blockPos, ParadiseLostBlocks.BLOOMED_CALCITE.getDefaultState());
// particles
for (int i = 0; i < 16; i++) {
double xOffset = random.nextDouble();
double yOffset = random.nextDouble();
double zOffset = random.nextDouble();
world.addParticle(ParticleTypes.ENTITY_EFFECT, blockPos.getX()+xOffset, blockPos.getY()+yOffset, blockPos.getZ()+zOffset, 0.97, 0.15, 0.14);
}
if (!world.isClient) {
// sound
world.playSound(null, blockPos, SoundEvents.ITEM_BOTTLE_EMPTY, SoundCategory.BLOCKS, 1.0F, 1.0F);
}
cir.setReturnValue(ActionResult.success(world.isClient));
cir.cancel();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public boolean generate(FeatureContext<DefaultFeatureConfig> context) {
var height = random.nextInt(3) + 1;

for (int i = 0; i <= height; i++) {
world.setBlockState(origin.up(i), ParadiseLostBlocks.VITROULITE.getDefaultState(), Block.NOTIFY_LISTENERS);
world.setBlockState(origin.up(i), Blocks.PACKED_ICE.getDefaultState(), Block.NOTIFY_LISTENERS);
}

for (Direction dir : Direction.values()) {
Expand Down Expand Up @@ -95,7 +95,7 @@ public boolean generate(FeatureContext<DefaultFeatureConfig> context) {
}

static {
secStates.add(ParadiseLostBlocks.VITROULITE.getDefaultState());
secStates.add(Blocks.PACKED_ICE.getDefaultState());
secStates.add(ParadiseLostBlocks.COBBLED_FLOESTONE.getDefaultState());
secStates.add(ParadiseLostBlocks.FLOESTONE.getDefaultState());
}
Expand Down
5 changes: 4 additions & 1 deletion src/main/resources/asset_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,10 @@ def generate_slab_block(block_id, base_block_id, texture):



generate_standard_item("nitra_bulb")
generate_standard_block("bloomed_calcite")
generate_standard_block("levita_brick")
generate_stairs_block("levita_brick_stairs", "levita_brick")
generate_slab_block("levita_brick_slab", "levita_brick", "levita_brick")



Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "paradise_lost:block/bloomed_calcite"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "paradise_lost:block/levita_brick"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"variants": {
"type=bottom": {
"model": "paradise_lost:block/levita_brick_slab"
},
"type=double": {
"model": "paradise_lost:block/levita_brick"
},
"type=top": {
"model": "paradise_lost:block/levita_brick_slab_top"
}
}
}
Loading

0 comments on commit b84aa32

Please sign in to comment.