added ores

This commit is contained in:
Jottyfan
2024-11-23 23:04:56 +01:00
parent 6d2c1967fa
commit 529f40395e
53 changed files with 945 additions and 1 deletions

View File

@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory;
import de.jottyfan.quickiemod.block.ModBlocks;
import de.jottyfan.quickiemod.blockentity.ModBlockentity;
import de.jottyfan.quickiemod.event.EventBlockBreak;
import de.jottyfan.quickiemod.feature.ModFeatures;
import de.jottyfan.quickiemod.item.ModItems;
import de.jottyfan.quickiemod.itemgroup.ModItemGroup;
import net.fabricmc.api.ModInitializer;
@ -29,6 +30,7 @@ public class Quickiemod implements ModInitializer {
ModBlockentity.registerModBlockentities();
List<Item> items = ModItems.registerModItems();
List<Block> blocks = ModBlocks.registerModBlocks();
ModFeatures.registerFeatures();
ModItemGroup.registerItemGroup(items, blocks);
PlayerBlockBreakEvents.AFTER.register((world, player, pos, state, blockEntity) -> {

View File

@ -0,0 +1,48 @@
package de.jottyfan.quickiemod.block;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import com.mojang.serialization.MapCodec;
import de.jottyfan.quickiemod.item.ModItems;
import net.minecraft.block.AbstractBlock;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.FallingBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.loot.context.LootWorldContext.Builder;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.util.Identifier;
/**
*
* @author jotty
*
*/
public class BlockDirtSalpeter extends FallingBlock {
public BlockDirtSalpeter(Identifier identifier) {
super(AbstractBlock.Settings.create().hardness(3.1f).registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier)));
}
@Override
public List<ItemStack> getDroppedStacks(BlockState blockState, Builder builder) {
Integer count = (Double.valueOf(new Random().nextDouble() * 10).intValue() / 4) + 1;
boolean spawnBoneMeal = new Random().nextDouble() > 0.5f;
ItemStack boneMealStack = new ItemStack(Items.BONE_MEAL);
ItemStack salpeterStack = new ItemStack(ModItems.ITEM_SALPETER, count);
ItemStack dirtStack = new ItemStack(Blocks.DIRT);
ItemStack[] spawnies = spawnBoneMeal ? new ItemStack[] { boneMealStack, salpeterStack, dirtStack }
: new ItemStack[] { salpeterStack, dirtStack };
return Arrays.asList(spawnies);
}
@Override
protected MapCodec<? extends FallingBlock> getCodec() {
return null;
}
}

View File

@ -0,0 +1,33 @@
package de.jottyfan.quickiemod.block;
import java.util.Arrays;
import java.util.List;
import de.jottyfan.quickiemod.block.help.IntProviderHelper;
import de.jottyfan.quickiemod.item.ModItems;
import net.minecraft.block.BlockState;
import net.minecraft.block.ExperienceDroppingBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.loot.context.LootWorldContext.Builder;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.util.Identifier;
/**
*
* @author jotty
*
*/
public class BlockOreDeepslateSulphor extends ExperienceDroppingBlock {
public BlockOreDeepslateSulphor(Identifier identifier) {
super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(1.9f).sounds(BlockSoundGroup.SOUL_SAND)
.requiresTool().registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier)));
}
@Override
public List<ItemStack> getDroppedStacks(BlockState state, Builder builder) {
return Arrays.asList(new ItemStack[] { new ItemStack(ModItems.ITEM_SULFOR, 4) });
}
}

View File

@ -0,0 +1,33 @@
package de.jottyfan.quickiemod.block;
import java.util.Arrays;
import java.util.List;
import de.jottyfan.quickiemod.block.help.IntProviderHelper;
import de.jottyfan.quickiemod.item.ModItems;
import net.minecraft.block.BlockState;
import net.minecraft.block.ExperienceDroppingBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.loot.context.LootWorldContext.Builder;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.util.Identifier;
/**
*
* @author jotty
*
*/
public class BlockOreNetherSulphor extends ExperienceDroppingBlock {
public BlockOreNetherSulphor(Identifier identifier) {
super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(2.1f).sounds(BlockSoundGroup.SOUL_SAND)
.requiresTool().registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier)));
}
@Override
public List<ItemStack> getDroppedStacks(BlockState state, Builder builder) {
return Arrays.asList(new ItemStack[] { new ItemStack(ModItems.ITEM_SULFOR) });
}
}

View File

@ -0,0 +1,34 @@
package de.jottyfan.quickiemod.block;
import java.util.Arrays;
import java.util.List;
import de.jottyfan.quickiemod.block.help.IntProviderHelper;
import de.jottyfan.quickiemod.item.ModItems;
import net.minecraft.block.BlockState;
import net.minecraft.block.ExperienceDroppingBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.loot.context.LootWorldContext.Builder;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.random.Random;
/**
*
* @author jotty
*
*/
public class BlockOreSalpeter extends ExperienceDroppingBlock {
public BlockOreSalpeter(Identifier identifier) {
super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(3.1f).sounds(BlockSoundGroup.SOUL_SAND)
.requiresTool().registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier)));
}
@Override
public List<ItemStack> getDroppedStacks(BlockState state, Builder builder) {
return Arrays.asList(new ItemStack[] { new ItemStack(ModItems.ITEM_SALPETER, 2 + Random.create().nextInt(3)) });
}
}

View File

@ -0,0 +1,34 @@
package de.jottyfan.quickiemod.block;
import java.util.Arrays;
import java.util.List;
import de.jottyfan.quickiemod.block.help.IntProviderHelper;
import de.jottyfan.quickiemod.item.ModItems;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.ExperienceDroppingBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.loot.context.LootWorldContext.Builder;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.random.Random;
/**
*
* @author jotty
*
*/
public class BlockOreSandSalpeter extends ExperienceDroppingBlock {
public BlockOreSandSalpeter(Identifier identifier) {
super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(2.9f).sounds(BlockSoundGroup.SOUL_SAND).requiresTool().registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier)));
}
@Override
public List<ItemStack> getDroppedStacks(BlockState state, Builder builder) {
return Arrays.asList(new ItemStack[] { new ItemStack(ModItems.ITEM_SALPETER, 7 + Random.create().nextInt(4)), new ItemStack(Blocks.SAND) });
}
}

View File

@ -0,0 +1,33 @@
package de.jottyfan.quickiemod.block;
import java.util.Arrays;
import java.util.List;
import de.jottyfan.quickiemod.block.help.IntProviderHelper;
import de.jottyfan.quickiemod.item.ModItems;
import net.minecraft.block.BlockState;
import net.minecraft.block.ExperienceDroppingBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.loot.context.LootWorldContext.Builder;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.util.Identifier;
/**
*
* @author jotty
*
*/
public class BlockOreSulphor extends ExperienceDroppingBlock {
public BlockOreSulphor(Identifier identifier) {
super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(1.9f).sounds(BlockSoundGroup.SOUL_SAND)
.requiresTool().registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier)));
}
@Override
public List<ItemStack> getDroppedStacks(BlockState state, Builder builder) {
return Arrays.asList(new ItemStack[] { new ItemStack(ModItems.ITEM_SULFOR) });
}
}

View File

@ -0,0 +1,43 @@
package de.jottyfan.quickiemod.block;
import java.util.Arrays;
import java.util.List;
import com.mojang.serialization.MapCodec;
import de.jottyfan.quickiemod.item.ModItems;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.FallingBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.loot.context.LootWorldContext.Builder;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.random.Random;
/**
*
* @author jotty
*
*/
public class BlockSandSalpeter extends FallingBlock {
public BlockSandSalpeter(Identifier identifier) {
super(Settings.create().strength(2.5f).hardness(3.1f).sounds(BlockSoundGroup.SOUL_SAND).requiresTool()
.registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier)));
}
@Override
public List<ItemStack> getDroppedStacks(BlockState state, Builder builder) {
return Arrays.asList(new ItemStack[] { new ItemStack(ModItems.ITEM_SALPETER, 3 + Random.create().nextInt(2)),
new ItemStack(Blocks.SAND) });
}
@Override
protected MapCodec<? extends FallingBlock> getCodec() {
// TODO Auto-generated method stub
return null;
}
}

View File

@ -39,6 +39,20 @@ public class ModBlocks {
new BlockEmptyLavahoarder(ModIdentifiers.BLOCK_EMPTYLAVAHOARDER));
public static final Block BLOCK_ITEMHOARDER = registerBlock(ModIdentifiers.BLOCK_ITEMHOARDER,
new BlockItemhoarder(ModIdentifiers.BLOCK_ITEMHOARDER));
public static final Block BLOCK_DIRTSALPETER = registerBlock(ModIdentifiers.BLOCK_DIRTSALPETER,
new BlockDirtSalpeter(ModIdentifiers.BLOCK_DIRTSALPETER));
public static final Block BLOCK_OREDEEPSLATESULFOR = registerBlock(ModIdentifiers.BLOCK_OREDEEPSLATESULFOR,
new BlockOreDeepslateSulphor(ModIdentifiers.BLOCK_OREDEEPSLATESULFOR));
public static final Block BLOCK_ORENETHERSULFOR = registerBlock(ModIdentifiers.BLOCK_ORENETHERSULFOR,
new BlockOreNetherSulphor(ModIdentifiers.BLOCK_ORENETHERSULFOR));
public static final Block BLOCK_ORESALPETER = registerBlock(ModIdentifiers.BLOCK_ORESALPETER,
new BlockOreSalpeter(ModIdentifiers.BLOCK_ORESALPETER));
public static final Block BLOCK_ORESANDSALPETER = registerBlock(ModIdentifiers.BLOCK_ORESANDSALPETER,
new BlockOreSandSalpeter(ModIdentifiers.BLOCK_ORESANDSALPETER));
public static final Block BLOCK_ORESULFOR = registerBlock(ModIdentifiers.BLOCK_ORESULFOR,
new BlockOreSulphor(ModIdentifiers.BLOCK_ORESULFOR));
public static final Block BLOCK_SANDSALPETER = registerBlock(ModIdentifiers.BLOCK_SANDSALPETER,
new BlockSandSalpeter(ModIdentifiers.BLOCK_SANDSALPETER));
private static final Block registerBlock(Identifier identifier, Block block) {
Registry.register(Registries.ITEM, identifier, new BlockItem(block, new Item.Settings()
@ -58,6 +72,13 @@ public class ModBlocks {
blocks.add(BLOCK_EMPTYLAVAHOARDER);
blocks.add(BLOCK_LAVAHOARDER);
blocks.add(BLOCK_ITEMHOARDER);
blocks.add(BLOCK_DIRTSALPETER);
blocks.add(BLOCK_OREDEEPSLATESULFOR);
blocks.add(BLOCK_ORENETHERSULFOR);
blocks.add(BLOCK_ORESALPETER);
blocks.add(BLOCK_ORESANDSALPETER);
blocks.add(BLOCK_ORESULFOR);
blocks.add(BLOCK_SANDSALPETER);
return blocks;
}
}

View File

@ -0,0 +1,37 @@
package de.jottyfan.quickiemod.block.help;
import net.minecraft.util.math.intprovider.IntProvider;
import net.minecraft.util.math.intprovider.IntProviderType;
import net.minecraft.util.math.random.Random;
/**
*
* @author jotty
*
*/
public class IntProviderHelper {
public static final IntProvider of(Integer min, Integer max) {
return new IntProvider() {
@Override
public IntProviderType<?> getType() {
return IntProviderType.CONSTANT;
}
@Override
public int getMin() {
return min;
}
@Override
public int getMax() {
return max;
}
@Override
public int get(Random random) {
return random.nextBetween(min, max);
}
};
}
}

View File

@ -0,0 +1,66 @@
package de.jottyfan.quickiemod.feature;
import de.jottyfan.quickiemod.Quickiemod;
import net.fabricmc.fabric.api.biome.v1.BiomeModifications;
import net.fabricmc.fabric.api.biome.v1.BiomeSelectors;
import net.fabricmc.fabric.api.biome.v1.ModificationPhase;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.util.Identifier;
import net.minecraft.world.gen.GenerationStep;
import net.minecraft.world.gen.feature.ConfiguredFeature;
import net.minecraft.world.gen.feature.PlacedFeature;
/**
*
* @author jotty
*
*/
public class ModFeatures {
public static final RegistryKey<ConfiguredFeature<?, ?>> CF_ORESULFUR = genCf("oresulphor");
public static final RegistryKey<ConfiguredFeature<?, ?>> CF_OREDEEPSLATESULFUR = genCf("oredepslatesulphor");
public static final RegistryKey<ConfiguredFeature<?, ?>> CF_ORESALPETER = genCf("oresalpeter");
public static final RegistryKey<ConfiguredFeature<?, ?>> CF_ORENETHERSULPHOR = genCf("orenethersulphore");
public static final RegistryKey<ConfiguredFeature<?, ?>> CF_BLOCKSULPHOR = genCf("blocksulphor");
public static final RegistryKey<ConfiguredFeature<?, ?>> CF_DIRTSALPETER = genCf("dirtsalpeter");
public static final RegistryKey<ConfiguredFeature<?, ?>> CF_SANDSALPETER = genCf("sandsalpeter");
public static final RegistryKey<ConfiguredFeature<?, ?>> CF_ORESANDSALPETER = genCf("oresandsalpeter");
public static final RegistryKey<PlacedFeature> PF_ORESULPHOR = genPf("oresulphor");
public static final RegistryKey<PlacedFeature> PF_OREDEEPSLATESULPHOR = genPf("oredeepslatesulphor");
public static final RegistryKey<PlacedFeature> PF_ORESALPETER = genPf("oresalpeter");
public static final RegistryKey<PlacedFeature> PF_ORENETHERSULPHOR = genPf("orenethersulphor");
public static final RegistryKey<PlacedFeature> PF_BLOCKSULPHOR = genPf("blocksulphor");
public static final RegistryKey<PlacedFeature> PF_DIRTSALPETER = genPf("dirtsalpeter");
public static final RegistryKey<PlacedFeature> PF_SANDSALPETER = genPf("sandsalpeter");
public static final RegistryKey<PlacedFeature> PF_ORESANDSALPETER = genPf("oresandsalpeter");
private static final RegistryKey<ConfiguredFeature<?, ?>> genCf(String name) {
return RegistryKey.of(RegistryKeys.CONFIGURED_FEATURE, Identifier.of(Quickiemod.MOD_ID, name));
}
private static final RegistryKey<PlacedFeature> genPf(String name) {
return RegistryKey.of(RegistryKeys.PLACED_FEATURE, Identifier.of(Quickiemod.MOD_ID, name));
}
public static final void registerFeatures() {
// Overworld features
BiomeModifications.create(Identifier.of(Quickiemod.MOD_ID, "features")).add(ModificationPhase.ADDITIONS,
BiomeSelectors.foundInOverworld(), (bsc, bmc) -> {
bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_ORESULPHOR);
bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_ORESALPETER);
bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_DIRTSALPETER);
bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_SANDSALPETER);
bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_ORESANDSALPETER);
bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_OREDEEPSLATESULPHOR);
});
// Nether features
BiomeModifications.create(Identifier.of(Quickiemod.MOD_ID, "nether_features")).add(ModificationPhase.ADDITIONS,
BiomeSelectors.foundInTheNether(), (bsc, bmc) -> {
bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_ORENETHERSULPHOR);
bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_BLOCKSULPHOR);
});
}
}

View File

@ -40,6 +40,13 @@ public class ModIdentifiers {
public static final Identifier BLOCK_LAVAHOARDER = Identifier.of(Quickiemod.MOD_ID, "lavahoarder");
public static final Identifier BLOCK_EMPTYLAVAHOARDER = Identifier.of(Quickiemod.MOD_ID, "emptylavahoarder");
public static final Identifier BLOCK_ITEMHOARDER = Identifier.of(Quickiemod.MOD_ID, "itemhoarder");
public static final Identifier BLOCK_DIRTSALPETER = Identifier.of(Quickiemod.MOD_ID, "dirtsalpeter");
public static final Identifier BLOCK_OREDEEPSLATESULFOR = Identifier.of(Quickiemod.MOD_ID, "oredeepslatesulphor");
public static final Identifier BLOCK_ORENETHERSULFOR = Identifier.of(Quickiemod.MOD_ID, "orenethersulphor");
public static final Identifier BLOCK_ORESALPETER = Identifier.of(Quickiemod.MOD_ID, "oresalpeter");
public static final Identifier BLOCK_ORESANDSALPETER = Identifier.of(Quickiemod.MOD_ID, "oresandsalpeter");
public static final Identifier BLOCK_ORESULFOR = Identifier.of(Quickiemod.MOD_ID, "oresulphor");
public static final Identifier BLOCK_SANDSALPETER = Identifier.of(Quickiemod.MOD_ID, "sandsalpeter");
public static final Identifier BLOCKENTITY_ITEMHOARDER = Identifier.of(Quickiemod.MOD_ID, "itemhoarderblockentity");
public static final Identifier BLOCKENTITY_BLOCKSTACKER = Identifier.of(Quickiemod.MOD_ID, "blockstackerblockentity");

View File

@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "quickiemod:block/dirtsalpeter"
}
}
}

View File

@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "quickiemod:block/oredeepslatesulphor"
}
}
}

View File

@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "quickiemod:block/orenethersulphor"
}
}
}

View File

@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "quickiemod:block/oresalpeter"
}
}
}

View File

@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "quickiemod:block/oresandsalpeter"
}
}
}

View File

@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "quickiemod:block/oresulphor"
}
}
}

View File

@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "quickiemod:block/sandsalpeter"
}
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "quickiemod:block/dirtsalpeter"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "quickiemod:block/oredeepslatesulphor"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "quickiemod:block/orenethersulphor"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "quickiemod:block/oresalpeter"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "block/cube_column",
"textures": {
"end" : "minecraft:block/sandstone_top",
"side": "quickiemod:block/oresandsalpeter"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "quickiemod:block/oresulphor"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "quickiemod:block/sandsalpeter"
}
}

View File

@ -0,0 +1,10 @@
{
"parent": "quickiemod:block/dirtsalpeter",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}

View File

@ -0,0 +1,10 @@
{
"parent": "quickiemod:block/oredeepslatesulphor",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}

View File

@ -0,0 +1,10 @@
{
"parent": "quickiemod:block/orenethersulphor",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}

View File

@ -0,0 +1,10 @@
{
"parent": "quickiemod:block/oresalpeter",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}

View File

@ -0,0 +1,10 @@
{
"parent": "quickiemod:block/oresandsalpeter",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}

View File

@ -0,0 +1,10 @@
{
"parent": "quickiemod:block/oresulphor",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}

View File

@ -0,0 +1,10 @@
{
"parent": "quickiemod:block/sandsalpeter",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}

View File

@ -5,6 +5,13 @@
"quickiemod:blocksalpeter",
"quickiemod:monsterhoarder",
"quickiemod:lavahoarder",
"quickiemod:emptylavahoarder"
"quickiemod:emptylavahoarder",
"quickiemod:oresulphor",
"quickiemod:oredeepslatesulphor",
"quickiemod:orenethersulphor",
"quickiemod:oresalpeter",
"quickiemod:oresandsalpeter",
"quickiemod:sandsalpeter",
"quickiemod:dirtsalpeter"
]
}

View File

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"quickiemod:oresalpeter"
]
}

View File

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"quickiemod:oresulphor"
]
}

View File

@ -0,0 +1,12 @@
{
"replace": false,
"values": [
"quickiemod:oresulphor",
"quickiemod:oredeepslatesulphor",
"quickiemod:orenethersulphor",
"quickiemod:oresalpeter",
"quickiemod:oresandsalpeter",
"quickiemod:sandsalpeter",
"quickiemod:dirtsalpeter"
]
}

View File

@ -0,0 +1,18 @@
{
"type": "minecraft:ore",
"config": {
"discard_chance_on_air_exposure": 0.0,
"size": 3,
"targets": [
{
"state": {
"Name": "quickiemod:blocksulphor"
},
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:netherrack"
}
}
]
}
}

View File

@ -0,0 +1,18 @@
{
"type": "minecraft:ore",
"config": {
"discard_chance_on_air_exposure": 0.0,
"size": 4,
"targets": [
{
"state": {
"Name": "quickiemod:dirtsalpeter"
},
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:dirt"
}
}
]
}
}

View File

@ -0,0 +1,18 @@
{
"type": "minecraft:ore",
"config": {
"discard_chance_on_air_exposure": 0.0,
"size": 20,
"targets": [
{
"state": {
"Name": "quickiemod:oredeepslatesulphor"
},
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:deepslate_ore_replaceables"
}
}
]
}
}

View File

@ -0,0 +1,18 @@
{
"type": "minecraft:ore",
"config": {
"discard_chance_on_air_exposure": 0.0,
"size": 20,
"targets": [
{
"state": {
"Name": "quickiemod:orenethersulphor"
},
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:netherrack"
}
}
]
}
}

View File

@ -0,0 +1,18 @@
{
"type": "minecraft:ore",
"config": {
"discard_chance_on_air_exposure": 0.0,
"size": 12,
"targets": [
{
"state": {
"Name": "quickiemod:oresalpeter"
},
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:stone_ore_replaceables"
}
}
]
}
}

View File

@ -0,0 +1,18 @@
{
"type": "minecraft:ore",
"config": {
"discard_chance_on_air_exposure": 0.0,
"size": 6,
"targets": [
{
"state": {
"Name": "quickiemod:oresandsalpeter"
},
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:sandstone"
}
}
]
}
}

View File

@ -0,0 +1,18 @@
{
"type": "minecraft:ore",
"config": {
"discard_chance_on_air_exposure": 0.0,
"size": 10,
"targets": [
{
"state": {
"Name": "quickiemod:oresulphor"
},
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:stone_ore_replaceables"
}
}
]
}
}

View File

@ -0,0 +1,18 @@
{
"type": "minecraft:ore",
"config": {
"discard_chance_on_air_exposure": 0.0,
"size": 8,
"targets": [
{
"state": {
"Name": "quickiemod:sandsalpeter"
},
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:sand"
}
}
]
}
}

View File

@ -0,0 +1,27 @@
{
"feature": "quickiemod:blocksulphor",
"placement": [
{
"type": "minecraft:count",
"count": 4
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:trapezoid",
"max_inclusive": {
"absolute": 125
},
"min_inclusive": {
"absolute": 5
}
}
},
{
"type": "minecraft:biome"
}
]
}

View File

@ -0,0 +1,27 @@
{
"feature": "quickiemod:dirtsalpeter",
"placement": [
{
"type": "minecraft:count",
"count": 5
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:trapezoid",
"max_inclusive": {
"absolute": 125
},
"min_inclusive": {
"absolute": 16
}
}
},
{
"type": "minecraft:biome"
}
]
}

View File

@ -0,0 +1,27 @@
{
"feature": "quickiemod:oredeepslatesulphor",
"placement": [
{
"type": "minecraft:count",
"count": 9
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:trapezoid",
"max_inclusive": {
"absolute": 0
},
"min_inclusive": {
"absolute": -125
}
}
},
{
"type": "minecraft:biome"
}
]
}

View File

@ -0,0 +1,27 @@
{
"feature": "quickiemod:orenethersulphor",
"placement": [
{
"type": "minecraft:count",
"count": 12
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:trapezoid",
"max_inclusive": {
"absolute": 125
},
"min_inclusive": {
"absolute": 5
}
}
},
{
"type": "minecraft:biome"
}
]
}

View File

@ -0,0 +1,27 @@
{
"feature": "quickiemod:oresalpeter",
"placement": [
{
"type": "minecraft:count",
"count": 10
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:trapezoid",
"max_inclusive": {
"absolute": 125
},
"min_inclusive": {
"absolute": 0
}
}
},
{
"type": "minecraft:biome"
}
]
}

View File

@ -0,0 +1,27 @@
{
"feature": "quickiemod:oresandsalpeter",
"placement": [
{
"type": "minecraft:count",
"count": 15
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:trapezoid",
"max_inclusive": {
"absolute": 125
},
"min_inclusive": {
"absolute": 32
}
}
},
{
"type": "minecraft:biome"
}
]
}

View File

@ -0,0 +1,27 @@
{
"feature": "quickiemod:oresulphor",
"placement": [
{
"type": "minecraft:count",
"count": 9
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:trapezoid",
"max_inclusive": {
"absolute": 64
},
"min_inclusive": {
"absolute": 0
}
}
},
{
"type": "minecraft:biome"
}
]
}

View File

@ -0,0 +1,27 @@
{
"feature": "quickiemod:sandsalpeter",
"placement": [
{
"type": "minecraft:count",
"count": 10
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:trapezoid",
"max_inclusive": {
"absolute": 125
},
"min_inclusive": {
"absolute": 32
}
}
},
{
"type": "minecraft:biome"
}
]
}