Initial work on Netherrack Soil.
Also added the processing for Ancient Debris and some of the intermediates for the new Hellforged Ingots (no uses yet).
This commit is contained in:
parent
1ae356c886
commit
032e163795
62 changed files with 826 additions and 8 deletions
|
@ -35,8 +35,6 @@ import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent;
|
|||
import net.minecraftforge.fml.event.lifecycle.InterModProcessEvent;
|
||||
import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
|
||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||
import wayoftime.bloodmagic.impl.BloodMagicAPI;
|
||||
import wayoftime.bloodmagic.impl.BloodMagicCorePlugin;
|
||||
import wayoftime.bloodmagic.client.ClientEvents;
|
||||
import wayoftime.bloodmagic.client.hud.Elements;
|
||||
import wayoftime.bloodmagic.client.model.MimicColor;
|
||||
|
@ -45,6 +43,7 @@ import wayoftime.bloodmagic.common.block.BloodMagicBlocks;
|
|||
import wayoftime.bloodmagic.common.data.GeneratorBaseRecipes;
|
||||
import wayoftime.bloodmagic.common.data.GeneratorBlockStates;
|
||||
import wayoftime.bloodmagic.common.data.GeneratorBlockTags;
|
||||
import wayoftime.bloodmagic.common.data.GeneratorFluidTags;
|
||||
import wayoftime.bloodmagic.common.data.GeneratorItemModels;
|
||||
import wayoftime.bloodmagic.common.data.GeneratorItemTags;
|
||||
import wayoftime.bloodmagic.common.data.GeneratorLanguage;
|
||||
|
@ -55,6 +54,8 @@ import wayoftime.bloodmagic.common.registries.BloodMagicEntityTypes;
|
|||
import wayoftime.bloodmagic.common.registries.BloodMagicRecipeSerializers;
|
||||
import wayoftime.bloodmagic.core.recipe.IngredientBloodOrb;
|
||||
import wayoftime.bloodmagic.core.registry.OrbRegistry;
|
||||
import wayoftime.bloodmagic.impl.BloodMagicAPI;
|
||||
import wayoftime.bloodmagic.impl.BloodMagicCorePlugin;
|
||||
import wayoftime.bloodmagic.network.BloodMagicPacketHandler;
|
||||
import wayoftime.bloodmagic.potion.BloodMagicPotions;
|
||||
import wayoftime.bloodmagic.registry.ModTranquilityHandlers;
|
||||
|
@ -205,6 +206,7 @@ public class BloodMagic
|
|||
GeneratorBlockTags bmBlockTags = new GeneratorBlockTags(gen, event.getExistingFileHelper());
|
||||
gen.addProvider(bmBlockTags);
|
||||
gen.addProvider(new GeneratorItemTags(gen, bmBlockTags, event.getExistingFileHelper()));
|
||||
gen.addProvider(new GeneratorFluidTags(gen, event.getExistingFileHelper()));
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,156 @@
|
|||
package wayoftime.bloodmagic.common.block;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import net.minecraft.block.AbstractBlock;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.block.FenceGateBlock;
|
||||
import net.minecraft.block.MovingPistonBlock;
|
||||
import net.minecraft.item.BlockItemUseContext;
|
||||
import net.minecraft.pathfinding.PathType;
|
||||
import net.minecraft.state.IntegerProperty;
|
||||
import net.minecraft.state.StateContainer;
|
||||
import net.minecraft.state.properties.BlockStateProperties;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.shapes.ISelectionContext;
|
||||
import net.minecraft.util.math.shapes.VoxelShape;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.IWorld;
|
||||
import net.minecraft.world.IWorldReader;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.server.ServerWorld;
|
||||
import wayoftime.bloodmagic.common.tags.BloodMagicTags;
|
||||
|
||||
public class BlockNetherrackSoil extends Block
|
||||
{
|
||||
public static final IntegerProperty MOISTURE = BlockStateProperties.MOISTURE_0_7;
|
||||
protected static final VoxelShape SHAPE = Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 15.0D, 16.0D);
|
||||
|
||||
public BlockNetherrackSoil(AbstractBlock.Properties builder)
|
||||
{
|
||||
super(builder);
|
||||
this.setDefaultState(this.stateContainer.getBaseState().with(MOISTURE, Integer.valueOf(0)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the provided state given the provided neighbor facing and neighbor
|
||||
* state, returning a new state. For example, fences make their connections to
|
||||
* the passed in state if possible, and wet concrete powder immediately returns
|
||||
* its solidified counterpart. Note that this method should ideally consider
|
||||
* only the specific face passed in.
|
||||
*/
|
||||
public BlockState updatePostPlacement(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, BlockPos currentPos, BlockPos facingPos)
|
||||
{
|
||||
if (facing == Direction.UP && !stateIn.isValidPosition(worldIn, currentPos))
|
||||
{
|
||||
worldIn.getPendingBlockTicks().scheduleTick(currentPos, this, 1);
|
||||
}
|
||||
|
||||
return super.updatePostPlacement(stateIn, facing, facingState, worldIn, currentPos, facingPos);
|
||||
}
|
||||
|
||||
public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos)
|
||||
{
|
||||
BlockState blockstate = worldIn.getBlockState(pos.up());
|
||||
return !blockstate.getMaterial().isSolid() || blockstate.getBlock() instanceof FenceGateBlock || blockstate.getBlock() instanceof MovingPistonBlock;
|
||||
}
|
||||
|
||||
public BlockState getStateForPlacement(BlockItemUseContext context)
|
||||
{
|
||||
return !this.getDefaultState().isValidPosition(context.getWorld(), context.getPos())
|
||||
? Blocks.NETHERRACK.getDefaultState()
|
||||
: super.getStateForPlacement(context);
|
||||
}
|
||||
|
||||
public boolean isTransparent(BlockState state)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context)
|
||||
{
|
||||
return SHAPE;
|
||||
}
|
||||
|
||||
public void tick(BlockState state, ServerWorld worldIn, BlockPos pos, Random rand)
|
||||
{
|
||||
if (!state.isValidPosition(worldIn, pos))
|
||||
{
|
||||
turnToDirt(state, worldIn, pos);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a random tick on a block.
|
||||
*/
|
||||
public void randomTick(BlockState state, ServerWorld worldIn, BlockPos pos, Random random)
|
||||
{
|
||||
int i = state.get(MOISTURE);
|
||||
if (!hasLifeEssence(worldIn, pos) && !worldIn.isRainingAt(pos.up()))
|
||||
{
|
||||
if (i > 0)
|
||||
{
|
||||
worldIn.setBlockState(pos, state.with(MOISTURE, Integer.valueOf(i - 1)), 2);
|
||||
} else if (!hasCrops(worldIn, pos))
|
||||
{
|
||||
turnToDirt(state, worldIn, pos);
|
||||
}
|
||||
} else if (i < 7)
|
||||
{
|
||||
worldIn.setBlockState(pos, state.with(MOISTURE, Integer.valueOf(7)), 2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// /**
|
||||
// * Block's chance to react to a living entity falling on it.
|
||||
// */
|
||||
// public void onFallenUpon(World worldIn, BlockPos pos, Entity entityIn, float fallDistance)
|
||||
// {
|
||||
// if (!worldIn.isRemote && net.minecraftforge.common.ForgeHooks.onFarmlandTrample(worldIn, pos, Blocks.NETHERRACK.getDefaultState(), fallDistance, entityIn))
|
||||
// { // Forge: Move logic to Entity#canTrample
|
||||
// turnToDirt(worldIn.getBlockState(pos), worldIn, pos);
|
||||
// }
|
||||
//
|
||||
// super.onFallenUpon(worldIn, pos, entityIn, fallDistance);
|
||||
// }
|
||||
|
||||
public static void turnToDirt(BlockState state, World worldIn, BlockPos pos)
|
||||
{
|
||||
worldIn.setBlockState(pos, nudgeEntitiesWithNewState(state, Blocks.NETHERRACK.getDefaultState(), worldIn, pos));
|
||||
}
|
||||
|
||||
private boolean hasCrops(IBlockReader worldIn, BlockPos pos)
|
||||
{
|
||||
BlockState plant = worldIn.getBlockState(pos.up());
|
||||
BlockState state = worldIn.getBlockState(pos);
|
||||
return plant.getBlock() instanceof net.minecraftforge.common.IPlantable && state.canSustainPlant(worldIn, pos, Direction.UP, (net.minecraftforge.common.IPlantable) plant.getBlock());
|
||||
}
|
||||
|
||||
private static boolean hasLifeEssence(IWorldReader worldIn, BlockPos pos)
|
||||
{
|
||||
for (BlockPos blockpos : BlockPos.getAllInBoxMutable(pos.add(-4, 0, -4), pos.add(4, 1, 4)))
|
||||
{
|
||||
if (worldIn.getFluidState(blockpos).isTagged(BloodMagicTags.LIFE_ESSENCE))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
protected void fillStateContainer(StateContainer.Builder<Block, BlockState> builder)
|
||||
{
|
||||
builder.add(MOISTURE);
|
||||
}
|
||||
|
||||
public boolean allowsMovement(BlockState state, IBlockReader worldIn, BlockPos pos, PathType type)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -4,6 +4,7 @@ import net.minecraft.block.AbstractBlock;
|
|||
import net.minecraft.block.AbstractBlock.Properties;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.FarmlandBlock;
|
||||
import net.minecraft.block.FenceGateBlock;
|
||||
import net.minecraft.block.FlowingFluidBlock;
|
||||
import net.minecraft.block.RotatedPillarBlock;
|
||||
|
@ -148,6 +149,10 @@ public class BloodMagicBlocks
|
|||
public static final RegistryObject<Block> DUNGEON_BRICK_GATE = BLOCKS.register("dungeon_brick_gate", () -> new FenceGateBlock(Properties.create(Material.ROCK).hardnessAndResistance(2.0F, 5.0F).sound(SoundType.STONE).harvestTool(ToolType.PICKAXE).harvestLevel(2).setRequiresTool()));
|
||||
public static final RegistryObject<Block> DUNGEON_POLISHED_GATE = BLOCKS.register("dungeon_polished_gate", () -> new FenceGateBlock(Properties.create(Material.ROCK).hardnessAndResistance(2.0F, 5.0F).sound(SoundType.STONE).harvestTool(ToolType.PICKAXE).harvestLevel(2).setRequiresTool()));
|
||||
|
||||
public static final RegistryObject<Block> HELLFORGED_BLOCK = DUNGEONBLOCKS.register("dungeon_metal", () -> new Block(Properties.create(Material.IRON).hardnessAndResistance(5.0F, 6.0F).sound(SoundType.METAL).harvestTool(ToolType.PICKAXE).harvestLevel(2).setRequiresTool()));
|
||||
|
||||
public static final RegistryObject<Block> NETHER_SOIL = BLOCKS.register("nether_soil", () -> new FarmlandBlock(Properties.create(Material.EARTH).hardnessAndResistance(0.4F, 0.4F).sound(SoundType.NETHERRACK).harvestTool(ToolType.PICKAXE)));
|
||||
|
||||
private static boolean isntSolid(BlockState state, IBlockReader reader, BlockPos pos)
|
||||
{
|
||||
return false;
|
||||
|
|
|
@ -37,7 +37,8 @@ public class GeneratorBaseRecipes extends BaseRecipeProvider
|
|||
private void addVanillaRecipes(Consumer<IFinishedRecipe> consumer)
|
||||
{
|
||||
// ConditionalRecipe.builder().addRecipe(ShapedRecipeBuilder.shapedRecipe(BloodMagicItems.SACRIFICIAL_DAGGER.get()).key('g', Tags.Items.GLASS).key('G', Tags.Items.INGOTS_GOLD).key('i', Tags.Items.INGOTS_IRON).patternLine("ggg").patternLine(" Gg").patternLine("i g").addCriterion("has_glass", hasItem(Items.GLASS))::build);
|
||||
|
||||
ShapedRecipeBuilder.shapedRecipe(BloodMagicItems.CORRUPTED_DUST.get()).key('s', BloodMagicTags.TINYDUST_CORRUPTED).patternLine("sss").patternLine("sss").patternLine("sss").addCriterion("has_tiny", hasItem(BloodMagicItems.CORRUPTED_DUST_TINY.get())).build(consumer, BloodMagic.rl("corrupted_dust"));
|
||||
ShapedRecipeBuilder.shapedRecipe(BloodMagicItems.HELLFORGED_BLOCK.get()).key('s', BloodMagicTags.INGOT_HELLFORGED).patternLine("sss").patternLine("sss").patternLine("sss").addCriterion("has_hellforged", hasItem(BloodMagicItems.HELLFORGED_INGOT.get())).build(consumer, BloodMagic.rl("hellforged_block"));
|
||||
ShapedRecipeBuilder.shapedRecipe(BloodMagicItems.SACRIFICIAL_DAGGER.get()).key('g', Tags.Items.GLASS).key('G', Tags.Items.INGOTS_GOLD).key('i', Tags.Items.INGOTS_IRON).patternLine("ggg").patternLine(" Gg").patternLine("i g").addCriterion("has_glass", hasItem(Items.GLASS)).build(consumer, BloodMagic.rl("sacrificial_dagger"));
|
||||
ShapedRecipeBuilder.shapedRecipe(BloodMagicBlocks.BLOOD_ALTAR.get()).key('a', Tags.Items.STONE).key('b', Items.FURNACE).key('c', Tags.Items.INGOTS_GOLD).key('d', BloodMagicItems.MONSTER_SOUL_RAW.get()).patternLine("a a").patternLine("aba").patternLine("cdc").addCriterion("has_will", hasItem(BloodMagicItems.MONSTER_SOUL_RAW.get())).build(consumer, BloodMagic.rl("blood_altar"));
|
||||
ShapedRecipeBuilder.shapedRecipe(BloodMagicBlocks.SOUL_FORGE.get()).key('s', Tags.Items.STONE).key('g', Tags.Items.INGOTS_GOLD).key('i', Tags.Items.INGOTS_IRON).key('o', Tags.Items.STORAGE_BLOCKS_IRON).patternLine("i i").patternLine("sgs").patternLine("sos").addCriterion("has_gold", hasItem(Items.GOLD_INGOT)).build(consumer, BloodMagic.rl("soul_forge"));
|
||||
|
@ -57,6 +58,8 @@ public class GeneratorBaseRecipes extends BaseRecipeProvider
|
|||
String basePath = "smelting/";
|
||||
CookingRecipeBuilder.smeltingRecipe(Ingredient.fromTag(BloodMagicTags.DUST_IRON), Items.IRON_INGOT, 0, 200).addCriterion("has_iron_sand", hasItem(BloodMagicItems.IRON_SAND.get())).build(consumer, BloodMagic.rl(basePath + "ingot_iron"));
|
||||
CookingRecipeBuilder.smeltingRecipe(Ingredient.fromTag(BloodMagicTags.DUST_GOLD), Items.GOLD_INGOT, 0, 200).addCriterion("has_gold_sand", hasItem(BloodMagicItems.GOLD_SAND.get())).build(consumer, BloodMagic.rl(basePath + "ingot_gold"));
|
||||
CookingRecipeBuilder.smeltingRecipe(Ingredient.fromTag(BloodMagicTags.DUST_NETHERITE_SCRAP), Items.NETHERITE_SCRAP, 0, 200).addCriterion("has_netherite_dust", hasItem(BloodMagicItems.NETHERITE_SCRAP_SAND.get())).build(consumer, BloodMagic.rl(basePath + "ingot_netherite_scrap"));
|
||||
CookingRecipeBuilder.smeltingRecipe(Ingredient.fromTag(BloodMagicTags.DUST_HELLFORGED), BloodMagicItems.HELLFORGED_INGOT.get(), 0, 200).addCriterion("has_hellforged_dust", hasItem(BloodMagicItems.HELLFORGED_SAND.get())).build(consumer, BloodMagic.rl(basePath + "ingot_hellforged"));
|
||||
}
|
||||
|
||||
private void addBloodOrbRecipes(Consumer<IFinishedRecipe> consumer)
|
||||
|
@ -90,6 +93,8 @@ public class GeneratorBaseRecipes extends BaseRecipeProvider
|
|||
ShapelessRecipeBuilder.shapelessRecipe(BloodMagicBlocks.WORN_STONE_PATH.get(), 4).addIngredient(BloodMagicBlocks.STONE_PATH.get()).addIngredient(BloodMagicBlocks.STONE_PATH.get()).addIngredient(BloodMagicBlocks.STONE_PATH.get()).addIngredient(BloodMagicBlocks.STONE_PATH.get()).addIngredient(IngredientBloodOrb.fromOrb(BloodMagicItems.ORB_MASTER.get())).addCriterion("has_master_orb", hasItem(BloodMagicItems.MASTER_BLOOD_ORB.get())).build(consumer, BloodMagic.rl("path/path_wornstone"));
|
||||
|
||||
ShapedRecipeBuilder.shapedRecipe(BloodMagicItems.RITUAL_READER.get()).key('s', BloodMagicItems.DEMONIC_SLATE.get()).key('g', Tags.Items.GLASS).key('i', Tags.Items.INGOTS_GOLD).key('o', IngredientBloodOrb.fromOrb(BloodMagicItems.ORB_MASTER.get())).patternLine("gog").patternLine("isi").patternLine(" s ").addCriterion("has_master_orb", hasItem(BloodMagicItems.MASTER_BLOOD_ORB.get())).build(consumer, BloodMagic.rl("ritual_reader"));
|
||||
|
||||
// ShapedRecipeBuilder.shapedRecipe(BloodMagicBlocks.MIMIC.get()).key('b', itemIn)
|
||||
// ShapedRecipeBuilder.shapedRecipe(BloodMagicBlocks.SPEED_RUNE.get()).key('s', Items.GLASS).key('o', Ingredient.fromItems(Items.DIAMOND)).patternLine("sss").patternLine("sos").patternLine("sss").addCriterion("has_diamond", hasItem(Items.DIAMOND)).build(consumer, new ResourceLocation(BloodMagic.MODID, "speed_rune_from_standard"));
|
||||
// ShapedRecipeBuilder.shapedRecipe(BloodMagicBlocks.SPEED_RUNE.get()).key('s', Items.GLASS).key('o', IngredientBloodOrb.fromOrb(BloodMagicItems.ORB_WEAK.get())).patternLine("sss").patternLine("sos").patternLine("sss").addCriterion("has_diamond", hasItem(Items.DIAMOND)).build(consumer, new ResourceLocation(BloodMagic.MODID, "speed_rune_from_orb"));
|
||||
}
|
||||
|
|
|
@ -57,6 +57,7 @@ public class GeneratorBlockStates extends BlockStateProvider
|
|||
buildCubeAll(BloodMagicBlocks.EARTH_RITUAL_STONE.get());
|
||||
buildCubeAll(BloodMagicBlocks.DUSK_RITUAL_STONE.get());
|
||||
buildCubeAll(BloodMagicBlocks.DAWN_RITUAL_STONE.get());
|
||||
buildFarmland(BloodMagicBlocks.NETHER_SOIL.get(), BloodMagic.rl("block/nether_soil"), new ResourceLocation("block/netherrack"));
|
||||
|
||||
buildFurnace(BloodMagicBlocks.ALCHEMICAL_REACTION_CHAMBER.get());
|
||||
|
||||
|
@ -92,6 +93,18 @@ public class GeneratorBlockStates extends BlockStateProvider
|
|||
// ModelFile modelFile = models().crop("", null);
|
||||
// }
|
||||
|
||||
private void buildFarmland(Block block, ResourceLocation top, ResourceLocation side)
|
||||
{
|
||||
String basePath = block.getRegistryName().getPath();
|
||||
getVariantBuilder(block).forAllStates(state -> {
|
||||
Builder builder = ConfiguredModel.builder();
|
||||
|
||||
ModelFile file = models().withExistingParent(basePath, "template_farmland").texture("top", top).texture("dirt", side);
|
||||
|
||||
return builder.modelFile(file).build();
|
||||
});
|
||||
}
|
||||
|
||||
private void buildCubeAllWithTextureName(String texture)
|
||||
{
|
||||
models().cubeAll(texture, BloodMagic.rl("block/" + texture)).assertExistence();
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
package wayoftime.bloodmagic.common.data;
|
||||
|
||||
import net.minecraft.data.DataGenerator;
|
||||
import net.minecraft.data.FluidTagsProvider;
|
||||
import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
import wayoftime.bloodmagic.BloodMagic;
|
||||
import wayoftime.bloodmagic.common.block.BloodMagicBlocks;
|
||||
import wayoftime.bloodmagic.common.tags.BloodMagicTags;
|
||||
|
||||
public class GeneratorFluidTags extends FluidTagsProvider
|
||||
{
|
||||
public GeneratorFluidTags(DataGenerator generatorIn, ExistingFileHelper existingFileHelper)
|
||||
{
|
||||
super(generatorIn, BloodMagic.MODID, existingFileHelper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerTags()
|
||||
{
|
||||
this.getOrCreateBuilder(BloodMagicTags.LIFE_ESSENCE).add(BloodMagicBlocks.LIFE_ESSENCE_FLUID.get(), BloodMagicBlocks.LIFE_ESSENCE_FLUID_FLOWING.get());
|
||||
}
|
||||
}
|
|
@ -49,6 +49,7 @@ public class GeneratorItemModels extends ItemModelProvider
|
|||
registerBlockModel(BloodMagicBlocks.DUSK_RITUAL_STONE.get());
|
||||
registerBlockModel(BloodMagicBlocks.DAWN_RITUAL_STONE.get());
|
||||
registerBlockModel(BloodMagicBlocks.ALCHEMICAL_REACTION_CHAMBER.get());
|
||||
registerBlockModel(BloodMagicBlocks.NETHER_SOIL.get());
|
||||
|
||||
registerCustomBlockPath(BloodMagicBlocks.RAW_CRYSTAL_BLOCK.get(), "crystal/defaultcrystal1");
|
||||
registerCustomBlockPath(BloodMagicBlocks.CORROSIVE_CRYSTAL_BLOCK.get(), "crystal/corrosivecrystal1");
|
||||
|
|
|
@ -23,6 +23,7 @@ public class GeneratorItemTags extends ItemTagsProvider
|
|||
@Override
|
||||
public void registerTags()
|
||||
{
|
||||
registerIngots();
|
||||
registerOres();
|
||||
registerDusts();
|
||||
registerFragments();
|
||||
|
@ -58,6 +59,11 @@ public class GeneratorItemTags extends ItemTagsProvider
|
|||
|
||||
}
|
||||
|
||||
private void registerIngots()
|
||||
{
|
||||
getOrCreateBuilder(BloodMagicTags.INGOT_HELLFORGED).add(BloodMagicItems.HELLFORGED_INGOT.get());
|
||||
}
|
||||
|
||||
private void registerOres()
|
||||
{
|
||||
getOrCreateBuilder(BloodMagicTags.ORE_COPPER);
|
||||
|
@ -72,18 +78,24 @@ public class GeneratorItemTags extends ItemTagsProvider
|
|||
getOrCreateBuilder(BloodMagicTags.DUST_IRON).add(BloodMagicItems.IRON_SAND.get());
|
||||
getOrCreateBuilder(BloodMagicTags.DUST_GOLD).add(BloodMagicItems.GOLD_SAND.get());
|
||||
getOrCreateBuilder(BloodMagicTags.DUST_COAL).add(BloodMagicItems.COAL_SAND.get());
|
||||
getOrCreateBuilder(BloodMagicTags.DUST_NETHERITE_SCRAP).add(BloodMagicItems.NETHERITE_SCRAP_SAND.get());
|
||||
getOrCreateBuilder(BloodMagicTags.DUST_HELLFORGED).add(BloodMagicItems.HELLFORGED_SAND.get());
|
||||
getOrCreateBuilder(BloodMagicTags.DUST_CORRUPTED).add(BloodMagicItems.CORRUPTED_DUST.get());
|
||||
getOrCreateBuilder(BloodMagicTags.TINYDUST_CORRUPTED).add(BloodMagicItems.CORRUPTED_DUST_TINY.get());
|
||||
}
|
||||
|
||||
private void registerFragments()
|
||||
{
|
||||
getOrCreateBuilder(BloodMagicTags.FRAGMENT_IRON).add(BloodMagicItems.IRON_FRAGMENT.get());
|
||||
getOrCreateBuilder(BloodMagicTags.FRAGMENT_GOLD).add(BloodMagicItems.GOLD_FRAGMENT.get());
|
||||
getOrCreateBuilder(BloodMagicTags.FRAGMENT_NETHERITE_SCRAP).add(BloodMagicItems.NETHERITE_SCRAP_FRAGMENT.get());
|
||||
}
|
||||
|
||||
private void registerGravels()
|
||||
{
|
||||
getOrCreateBuilder(BloodMagicTags.GRAVEL_IRON).add(BloodMagicItems.IRON_GRAVEL.get());
|
||||
getOrCreateBuilder(BloodMagicTags.GRAVEL_GOLD).add(BloodMagicItems.GOLD_GRAVEL.get());
|
||||
getOrCreateBuilder(BloodMagicTags.GRAVEL_NETHERITE_SCRAP).add(BloodMagicItems.NETHERITE_SCRAP_GRAVEL.get());
|
||||
}
|
||||
|
||||
private void registerFurnaceCells()
|
||||
|
|
|
@ -461,16 +461,19 @@ public class GeneratorLanguage extends LanguageProvider
|
|||
addItem(BloodMagicItems.COAL_SAND, "Coal Sand");
|
||||
addItem(BloodMagicItems.IRON_SAND, "Iron Sand");
|
||||
addItem(BloodMagicItems.GOLD_SAND, "Gold Sand");
|
||||
addItem(BloodMagicItems.NETHERITE_SCRAP_SAND, "Netherite Scrap Sand");
|
||||
addItem(BloodMagicItems.SULFUR, "Sulfur");
|
||||
addItem(BloodMagicItems.SALTPETER, "Saltpeter");
|
||||
|
||||
// Fragments
|
||||
addItem(BloodMagicItems.IRON_FRAGMENT, "Iron Ore Fragment");
|
||||
addItem(BloodMagicItems.GOLD_FRAGMENT, "Gold Ore Fragment");
|
||||
addItem(BloodMagicItems.NETHERITE_SCRAP_FRAGMENT, "Ancient Debris Fragment");
|
||||
|
||||
// Gravels
|
||||
addItem(BloodMagicItems.IRON_GRAVEL, "Iron Gravel");
|
||||
addItem(BloodMagicItems.GOLD_GRAVEL, "Gold Gravel");
|
||||
addItem(BloodMagicItems.NETHERITE_SCRAP_GRAVEL, "Ancient Debris Gravel");
|
||||
|
||||
// addItem(BloodMagicItems , "");
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ import com.mojang.datafixers.util.Pair;
|
|||
|
||||
import net.minecraft.advancements.criterion.StatePropertiesPredicate;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.data.DataGenerator;
|
||||
import net.minecraft.data.LootTableProvider;
|
||||
import net.minecraft.data.loot.BlockLootTables;
|
||||
|
@ -105,6 +106,7 @@ public class GeneratorLootTable extends LootTableProvider
|
|||
registerDropSelfLootTable(BloodMagicBlocks.DEMON_CRYSTALLIZER.get());
|
||||
registerDropSelfLootTable(BloodMagicBlocks.INCENSE_ALTAR.get());
|
||||
// registerNoDropLootTable(BloodMagicBlocks.RAW_CRYSTAL_BLOCK.get());
|
||||
registerDropping(BloodMagicBlocks.NETHER_SOIL.get(), Blocks.NETHERRACK);
|
||||
|
||||
registerDropCrystalsLootTable(BloodMagicBlocks.RAW_CRYSTAL_BLOCK.get(), BloodMagicItems.RAW_CRYSTAL.get());
|
||||
registerDropCrystalsLootTable(BloodMagicBlocks.CORROSIVE_CRYSTAL_BLOCK.get(), BloodMagicItems.CORROSIVE_CRYSTAL.get());
|
||||
|
|
|
@ -94,6 +94,7 @@ public class BloodMagicItems
|
|||
public static final RegistryObject<Item> MIMIC_ITEM = ITEMS.register("mimic", () -> new ItemBlockMimic(BloodMagicBlocks.MIMIC.get(), new Item.Properties().group(BloodMagic.TAB)));
|
||||
public static final RegistryObject<Item> MIMIC_ETHEREAL_ITEM = ITEMS.register("ethereal_mimic", () -> new ItemBlockMimic(BloodMagicBlocks.ETHEREAL_MIMIC.get(), new Item.Properties().group(BloodMagic.TAB)));
|
||||
|
||||
public static final RegistryObject<Item> NETHE_SOIL_ITEM = ITEMS.register("nether_soil", () -> new BlockItem(BloodMagicBlocks.NETHER_SOIL.get(), new Item.Properties().group(BloodMagic.TAB)));
|
||||
// TODO: Need to rework the above instantiations for the ItemBlocks so that it's
|
||||
// done with the Blocks.
|
||||
|
||||
|
@ -205,17 +206,25 @@ public class BloodMagicItems
|
|||
// Fragments
|
||||
public static final RegistryObject<Item> IRON_FRAGMENT = BASICITEMS.register("ironfragment", () -> new ItemBase());
|
||||
public static final RegistryObject<Item> GOLD_FRAGMENT = BASICITEMS.register("goldfragment", () -> new ItemBase());
|
||||
public static final RegistryObject<Item> NETHERITE_SCRAP_FRAGMENT = BASICITEMS.register("fragment_netherite_scrap", () -> new ItemBase());
|
||||
|
||||
// Gravels
|
||||
public static final RegistryObject<Item> IRON_GRAVEL = BASICITEMS.register("irongravel", () -> new ItemBase());
|
||||
public static final RegistryObject<Item> GOLD_GRAVEL = BASICITEMS.register("goldgravel", () -> new ItemBase());
|
||||
public static final RegistryObject<Item> NETHERITE_SCRAP_GRAVEL = BASICITEMS.register("gravel_netherite_scrap", () -> new ItemBase());
|
||||
|
||||
// Sands
|
||||
public static final RegistryObject<Item> IRON_SAND = BASICITEMS.register("ironsand", () -> new ItemBase());
|
||||
public static final RegistryObject<Item> GOLD_SAND = BASICITEMS.register("goldsand", () -> new ItemBase());
|
||||
public static final RegistryObject<Item> COAL_SAND = BASICITEMS.register("coalsand", () -> new ItemBase());
|
||||
public static final RegistryObject<Item> NETHERITE_SCRAP_SAND = BASICITEMS.register("sand_netherite", () -> new ItemBase());
|
||||
public static final RegistryObject<Item> CORRUPTED_DUST = BASICITEMS.register("corrupted_dust", () -> new ItemBase());
|
||||
public static final RegistryObject<Item> CORRUPTED_DUST_TINY = BASICITEMS.register("corrupted_tinydust", () -> new ItemBase());
|
||||
public static final RegistryObject<Item> HELLFORGED_SAND = BASICITEMS.register("sand_hellforged", () -> new ItemBase());
|
||||
|
||||
// Dungeons
|
||||
public static final RegistryObject<Item> HELLFORGED_INGOT = BASICITEMS.register("ingot_hellforged", () -> new ItemBase());
|
||||
|
||||
public static final RegistryObject<Item> DUNGEON_BRICK_1_BLOCK = ITEMS.register("dungeon_brick1", () -> new BlockItem(BloodMagicBlocks.DUNGEON_BRICK_1.get(), new Item.Properties().group(BloodMagic.TAB)));
|
||||
public static final RegistryObject<Item> DUNGEON_BRICK_2_BLOCK = ITEMS.register("dungeon_brick2", () -> new BlockItem(BloodMagicBlocks.DUNGEON_BRICK_2.get(), new Item.Properties().group(BloodMagic.TAB)));
|
||||
public static final RegistryObject<Item> DUNGEON_BRICK_3_BLOCK = ITEMS.register("dungeon_brick3", () -> new BlockItem(BloodMagicBlocks.DUNGEON_BRICK_3.get(), new Item.Properties().group(BloodMagic.TAB)));
|
||||
|
@ -239,6 +248,7 @@ public class BloodMagicItems
|
|||
|
||||
public static final RegistryObject<Item> DUNGEON_ORE_BLOCK = ITEMS.register("dungeon_ore", () -> new BlockItem(BloodMagicBlocks.DUNGEON_ORE.get(), new Item.Properties().group(BloodMagic.TAB)));
|
||||
|
||||
public static final RegistryObject<Item> HELLFORGED_BLOCK = ITEMS.register("dungeon_metal", () -> new BlockItem(BloodMagicBlocks.HELLFORGED_BLOCK.get(), new Item.Properties().group(BloodMagic.TAB)));
|
||||
public static final RegistryObject<Item> DUNGEON_TESTER = BASICITEMS.register("dungeon_tester", ItemDungeonTester::new);
|
||||
|
||||
}
|
||||
|
|
|
@ -59,14 +59,17 @@ public class ARCRecipeProvider implements ISubRecipeProvider
|
|||
// Ore to dust
|
||||
ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.ORES_IRON), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_CUTTINGFLUID), null, new ItemStack(BloodMagicItems.IRON_SAND.get(), 2), null).build(consumer, BloodMagic.rl(basePath + "from_ore_iron"));
|
||||
ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.ORES_GOLD), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_CUTTINGFLUID), null, new ItemStack(BloodMagicItems.GOLD_SAND.get(), 2), null).build(consumer, BloodMagic.rl(basePath + "from_ore_gold"));
|
||||
ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.ORES_NETHERITE_SCRAP), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_CUTTINGFLUID), null, new ItemStack(BloodMagicItems.NETHERITE_SCRAP_SAND.get(), 2), null).build(consumer, BloodMagic.rl(basePath + "from_ore_netherite_scrap"));
|
||||
|
||||
// Ingot to dust
|
||||
ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.INGOTS_IRON), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_EXPLOSIVE), null, new ItemStack(BloodMagicItems.IRON_SAND.get()), null).build(consumer, BloodMagic.rl(basePath + "from_ingot_iron"));
|
||||
ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.INGOTS_GOLD), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_EXPLOSIVE), null, new ItemStack(BloodMagicItems.GOLD_SAND.get()), null).build(consumer, BloodMagic.rl(basePath + "from_ingot_gold"));
|
||||
ARCRecipeBuilder.arc(Ingredient.fromItems(Items.NETHERITE_SCRAP), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_EXPLOSIVE), null, new ItemStack(BloodMagicItems.NETHERITE_SCRAP_SAND.get()), null).build(consumer, BloodMagic.rl(basePath + "from_ingot_netherite_scrap"));
|
||||
|
||||
// Gravel to dust
|
||||
ARCRecipeBuilder.arc(Ingredient.fromTag(BloodMagicTags.GRAVEL_IRON), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_CUTTINGFLUID), null, new ItemStack(BloodMagicItems.IRON_SAND.get()), null).build(consumer, BloodMagic.rl(basePath + "from_gravel_iron"));
|
||||
ARCRecipeBuilder.arc(Ingredient.fromTag(BloodMagicTags.GRAVEL_GOLD), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_CUTTINGFLUID), null, new ItemStack(BloodMagicItems.GOLD_SAND.get()), null).build(consumer, BloodMagic.rl(basePath + "from_gravel_gold"));
|
||||
ARCRecipeBuilder.arc(Ingredient.fromTag(BloodMagicTags.GRAVEL_NETHERITE_SCRAP), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_CUTTINGFLUID), null, new ItemStack(BloodMagicItems.NETHERITE_SCRAP_SAND.get()), null).build(consumer, BloodMagic.rl(basePath + "from_gravel_netherite_scrap"));
|
||||
}
|
||||
|
||||
private void addFragmentRecipes(Consumer<IFinishedRecipe> consumer)
|
||||
|
@ -74,13 +77,15 @@ public class ARCRecipeProvider implements ISubRecipeProvider
|
|||
String basePath = "arc/fragments";
|
||||
ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.ORES_IRON), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_EXPLOSIVE), null, new ItemStack(BloodMagicItems.IRON_FRAGMENT.get(), 3), null).build(consumer, BloodMagic.rl(basePath + "iron"));
|
||||
ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.ORES_GOLD), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_EXPLOSIVE), null, new ItemStack(BloodMagicItems.GOLD_FRAGMENT.get(), 3), null).build(consumer, BloodMagic.rl(basePath + "gold"));
|
||||
ARCRecipeBuilder.arc(Ingredient.fromTag(Tags.Items.ORES_NETHERITE_SCRAP), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_EXPLOSIVE), null, new ItemStack(BloodMagicItems.NETHERITE_SCRAP_FRAGMENT.get(), 3), null).build(consumer, BloodMagic.rl(basePath + "netherite_scrap"));
|
||||
}
|
||||
|
||||
private void addGravelRecipes(Consumer<IFinishedRecipe> consumer)
|
||||
{
|
||||
String basePath = "arc/gravels";
|
||||
ARCRecipeBuilder.arc(Ingredient.fromTag(BloodMagicTags.FRAGMENT_IRON), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_RESONATOR), null, new ItemStack(BloodMagicItems.IRON_GRAVEL.get()), null).build(consumer, BloodMagic.rl(basePath + "iron"));
|
||||
ARCRecipeBuilder.arc(Ingredient.fromTag(BloodMagicTags.FRAGMENT_GOLD), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_RESONATOR), null, new ItemStack(BloodMagicItems.GOLD_GRAVEL.get()), null).build(consumer, BloodMagic.rl(basePath + "gold"));
|
||||
ARCRecipeBuilder.arc(Ingredient.fromTag(BloodMagicTags.FRAGMENT_IRON), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_RESONATOR), null, new ItemStack(BloodMagicItems.IRON_GRAVEL.get()), null).addRandomOutput(new ItemStack(BloodMagicItems.CORRUPTED_DUST_TINY.get()), 0.05).addRandomOutput(new ItemStack(BloodMagicItems.CORRUPTED_DUST_TINY.get()), 0.01).build(consumer, BloodMagic.rl(basePath + "iron"));
|
||||
ARCRecipeBuilder.arc(Ingredient.fromTag(BloodMagicTags.FRAGMENT_GOLD), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_RESONATOR), null, new ItemStack(BloodMagicItems.GOLD_GRAVEL.get()), null).addRandomOutput(new ItemStack(BloodMagicItems.CORRUPTED_DUST_TINY.get()), 0.05).addRandomOutput(new ItemStack(BloodMagicItems.CORRUPTED_DUST_TINY.get()), 0.01).build(consumer, BloodMagic.rl(basePath + "gold"));
|
||||
ARCRecipeBuilder.arc(Ingredient.fromTag(BloodMagicTags.FRAGMENT_NETHERITE_SCRAP), Ingredient.fromTag(BloodMagicTags.ARC_TOOL_RESONATOR), null, new ItemStack(BloodMagicItems.NETHERITE_SCRAP_GRAVEL.get()), null).addRandomOutput(new ItemStack(BloodMagicItems.CORRUPTED_DUST_TINY.get()), 0.05).addRandomOutput(new ItemStack(BloodMagicItems.CORRUPTED_DUST_TINY.get()), 0.01).build(consumer, BloodMagic.rl(basePath + "netherite_scrap"));
|
||||
}
|
||||
|
||||
private void addReversionRecipes(Consumer<IFinishedRecipe> consumer)
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package wayoftime.bloodmagic.common.tags;
|
||||
|
||||
import net.minecraft.fluid.Fluid;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.tags.FluidTags;
|
||||
import net.minecraft.tags.ITag;
|
||||
import net.minecraft.tags.ItemTags;
|
||||
|
||||
|
@ -17,6 +19,8 @@ public class BloodMagicTags
|
|||
|
||||
public static final ITag.INamedTag<Item> CRYSTAL_DEMON = ItemTags.makeWrapperTag("bloodmagic:crystals/demon");
|
||||
|
||||
public static final ITag.INamedTag<Fluid> LIFE_ESSENCE = FluidTags.makeWrapperTag("life");
|
||||
|
||||
// Ores
|
||||
public static final ITag.INamedTag<Item> ORE_COPPER = getForgeOreTag("copper");
|
||||
public static final ITag.INamedTag<Item> ORE_TIN = getForgeOreTag("tin");
|
||||
|
@ -24,26 +28,50 @@ public class BloodMagicTags
|
|||
public static final ITag.INamedTag<Item> ORE_OSMIUM = getForgeOreTag("osmium");
|
||||
public static final ITag.INamedTag<Item> ORE_SILVER = getForgeOreTag("silver");
|
||||
|
||||
// Ingots
|
||||
public static final ITag.INamedTag<Item> INGOT_HELLFORGED = getForgeIngotTag("hellforged");
|
||||
|
||||
// Dusts (/Sands)
|
||||
public static final ITag.INamedTag<Item> DUST_IRON = getForgeDustTag("iron");
|
||||
public static final ITag.INamedTag<Item> DUST_GOLD = getForgeDustTag("gold");
|
||||
public static final ITag.INamedTag<Item> DUST_COAL = getForgeDustTag("coal");
|
||||
public static final ITag.INamedTag<Item> DUST_SALTPETER = getForgeDustTag("saltpeter");
|
||||
public static final ITag.INamedTag<Item> DUST_SULFUR = getForgeDustTag("sulfur");
|
||||
public static final ITag.INamedTag<Item> DUST_NETHERITE_SCRAP = getForgeDustTag("netherite_scrap");
|
||||
public static final ITag.INamedTag<Item> DUST_HELLFORGED = getForgeDustTag("hellforged");
|
||||
public static final ITag.INamedTag<Item> DUST_CORRUPTED = getBMDustTag("corrupted");
|
||||
public static final ITag.INamedTag<Item> TINYDUST_CORRUPTED = getBMTinyDustTag("corrupted");
|
||||
|
||||
// Fragments
|
||||
public static final ITag.INamedTag<Item> FRAGMENT_IRON = getFragmentTag("iron");
|
||||
public static final ITag.INamedTag<Item> FRAGMENT_GOLD = getFragmentTag("gold");
|
||||
public static final ITag.INamedTag<Item> FRAGMENT_NETHERITE_SCRAP = getFragmentTag("netherite_scrap");
|
||||
|
||||
// Gravels
|
||||
public static final ITag.INamedTag<Item> GRAVEL_IRON = getGravelTag("iron");
|
||||
public static final ITag.INamedTag<Item> GRAVEL_GOLD = getGravelTag("gold");
|
||||
public static final ITag.INamedTag<Item> GRAVEL_NETHERITE_SCRAP = getGravelTag("netherite_scrap");
|
||||
|
||||
public static ITag.INamedTag<Item> getForgeOreTag(String name)
|
||||
{
|
||||
return ItemTags.makeWrapperTag("forge:ores/" + name);
|
||||
}
|
||||
|
||||
public static ITag.INamedTag<Item> getForgeIngotTag(String name)
|
||||
{
|
||||
return ItemTags.makeWrapperTag("forge:ingots/" + name);
|
||||
}
|
||||
|
||||
public static ITag.INamedTag<Item> getBMDustTag(String name)
|
||||
{
|
||||
return ItemTags.makeWrapperTag("bloodmagic:dusts/" + name);
|
||||
}
|
||||
|
||||
public static ITag.INamedTag<Item> getBMTinyDustTag(String name)
|
||||
{
|
||||
return ItemTags.makeWrapperTag("bloodmagic:tiny_dusts/" + name);
|
||||
}
|
||||
|
||||
public static ITag.INamedTag<Item> getForgeDustTag(String name)
|
||||
{
|
||||
return ItemTags.makeWrapperTag("forge:dusts/" + name);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue