added ores
This commit is contained in:
		| @@ -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) -> { | ||||
|   | ||||
| @@ -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; | ||||
| 	} | ||||
| } | ||||
| @@ -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) }); | ||||
| 	} | ||||
| } | ||||
| @@ -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) }); | ||||
| 	} | ||||
| } | ||||
| @@ -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)) }); | ||||
| 	} | ||||
| } | ||||
| @@ -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) }); | ||||
| 	} | ||||
| } | ||||
| @@ -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) }); | ||||
| 	} | ||||
| } | ||||
| @@ -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; | ||||
| 	} | ||||
| } | ||||
| @@ -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; | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -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); | ||||
| 			} | ||||
| 		}; | ||||
| 	} | ||||
| } | ||||
| @@ -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); | ||||
| 				}); | ||||
| 	} | ||||
| } | ||||
| @@ -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"); | ||||
|   | ||||
| @@ -0,0 +1,7 @@ | ||||
| { | ||||
| 	"variants": { | ||||
| 		"": { | ||||
| 			"model": "quickiemod:block/dirtsalpeter" | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| { | ||||
| 	"variants": { | ||||
| 		"": { | ||||
| 			"model": "quickiemod:block/oredeepslatesulphor" | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| { | ||||
| 	"variants": { | ||||
| 		"": { | ||||
| 			"model": "quickiemod:block/orenethersulphor" | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| { | ||||
| 	"variants": { | ||||
| 		"": { | ||||
| 			"model": "quickiemod:block/oresalpeter" | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| { | ||||
| 	"variants": { | ||||
| 		"": { | ||||
| 			"model": "quickiemod:block/oresandsalpeter" | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| { | ||||
| 	"variants": { | ||||
| 		"": { | ||||
| 			"model": "quickiemod:block/oresulphor" | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| { | ||||
| 	"variants": { | ||||
| 		"": { | ||||
| 			"model": "quickiemod:block/sandsalpeter" | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
| 		"parent": "block/cube_all", | ||||
| 		"textures": { | ||||
| 				"all": "quickiemod:block/dirtsalpeter" | ||||
| 		} | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
| 		"parent": "block/cube_all", | ||||
| 		"textures": { | ||||
| 				"all": "quickiemod:block/oredeepslatesulphor" | ||||
| 		} | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
| 		"parent": "block/cube_all", | ||||
| 		"textures": { | ||||
| 				"all": "quickiemod:block/orenethersulphor" | ||||
| 		} | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
| 		"parent": "block/cube_all", | ||||
| 		"textures": { | ||||
| 				"all": "quickiemod:block/oresalpeter" | ||||
| 		} | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| { | ||||
| 		"parent": "block/cube_column", | ||||
| 		"textures": { | ||||
| 				"end" : "minecraft:block/sandstone_top", | ||||
| 				"side": "quickiemod:block/oresandsalpeter" | ||||
| 		} | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
| 		"parent": "block/cube_all", | ||||
| 		"textures": { | ||||
| 				"all": "quickiemod:block/oresulphor" | ||||
| 		} | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
| 		"parent": "block/cube_all", | ||||
| 		"textures": { | ||||
| 				"all": "quickiemod:block/sandsalpeter" | ||||
| 		} | ||||
| } | ||||
| @@ -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 ] | ||||
| 				} | ||||
| 		} | ||||
| } | ||||
| @@ -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 ] | ||||
| 				} | ||||
| 		} | ||||
| } | ||||
| @@ -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 ] | ||||
| 				} | ||||
| 		} | ||||
| } | ||||
| @@ -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 ] | ||||
| 				} | ||||
| 		} | ||||
| } | ||||
| @@ -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 ] | ||||
| 				} | ||||
| 		} | ||||
| } | ||||
| @@ -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 ] | ||||
| 				} | ||||
| 		} | ||||
| } | ||||
| @@ -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 ] | ||||
| 				} | ||||
| 		} | ||||
| } | ||||
| @@ -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" | ||||
| 		] | ||||
| 	} | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   "replace": false, | ||||
|   "values": [ | ||||
|     "quickiemod:oresalpeter" | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   "replace": false, | ||||
|   "values": [ | ||||
|     "quickiemod:oresulphor" | ||||
|   ] | ||||
| } | ||||
| @@ -0,0 +1,12 @@ | ||||
| 	{ | ||||
| 		"replace": false, | ||||
| 		"values": [ | ||||
| 			"quickiemod:oresulphor", | ||||
| 			"quickiemod:oredeepslatesulphor", | ||||
| 			"quickiemod:orenethersulphor", | ||||
| 			"quickiemod:oresalpeter", | ||||
| 			"quickiemod:oresandsalpeter", | ||||
| 			"quickiemod:sandsalpeter", | ||||
| 			"quickiemod:dirtsalpeter" | ||||
| 		] | ||||
| 	} | ||||
| @@ -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" | ||||
|         } | ||||
|       } | ||||
|     ] | ||||
|   } | ||||
| } | ||||
| @@ -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" | ||||
|         } | ||||
|       } | ||||
|     ] | ||||
|   } | ||||
| } | ||||
| @@ -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" | ||||
|         } | ||||
|       } | ||||
|     ] | ||||
|   } | ||||
| } | ||||
| @@ -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" | ||||
|         } | ||||
|       } | ||||
|     ] | ||||
|   } | ||||
| } | ||||
| @@ -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" | ||||
|         } | ||||
|       } | ||||
|     ] | ||||
|   } | ||||
| } | ||||
| @@ -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" | ||||
|         } | ||||
|       } | ||||
|     ] | ||||
|   } | ||||
| } | ||||
| @@ -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" | ||||
|         } | ||||
|       } | ||||
|     ] | ||||
|   } | ||||
| } | ||||
| @@ -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" | ||||
|         } | ||||
|       } | ||||
|     ] | ||||
|   } | ||||
| } | ||||
| @@ -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" | ||||
|     } | ||||
|   ] | ||||
| } | ||||
| @@ -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" | ||||
|     } | ||||
|   ] | ||||
| } | ||||
| @@ -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" | ||||
|     } | ||||
|   ] | ||||
| } | ||||
| @@ -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" | ||||
|     } | ||||
|   ] | ||||
| } | ||||
| @@ -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" | ||||
|     } | ||||
|   ] | ||||
| } | ||||
| @@ -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" | ||||
|     } | ||||
|   ] | ||||
| } | ||||
| @@ -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" | ||||
|     } | ||||
|   ] | ||||
| } | ||||
| @@ -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" | ||||
|     } | ||||
|   ] | ||||
| } | ||||
		Reference in New Issue
	
	Block a user