-
cant find StructurePool using Code
ok so I figured out that what i was doing here worked i apparently did not supply a starting jigsaw to the generate method, although now i get this error No starting jigsaw the_dungeon:goblin_caves/spawns found in start pool the_dungeon:goblin_caves/spawns this is the json file { "name": "the_dungeon:goblin_caves/spawns", "fallback": "minecraft:empty", "elements": [ { "weight": 1, "element": { "location": "the_dungeon:goblin_caves/spawns/stone_cave_spawn", "processors": "minecraft:empty", "projection": "rigid", "element_type": "minecraft:single_pool_element" } } ] }
-
cant find StructurePool using Code
Version: 1.20.6 Forge: 50.0.26 current code: public static Holder<StructureTemplatePool> getTemplatePoolHolder(final ServerLevel level, final ResourceLocation resourceLocation) { if (level==null) { return null; } RegistryAccess registryaccess = level.registryAccess(); Registry<StructureTemplatePool> registry = registryaccess.registryOrThrow(Registries.TEMPLATE_POOL); Logger logger = TheDungeon.LOGGER; logger.info("searcing for {} in {}", resourceLocation, registry); //Holder<StructureTemplatePool> holder = registry.getHolder(resourceLocation).orElse(null); StructureTemplatePool pool = registry.get(resourceLocation); Holder<StructureTemplatePool> holder = null; if (pool!=null) holder = Holder.direct(pool); return holder; } unfortunately it seems like either i am getting the Registry wrong or the ResourceKey this is the resource location it is trying to find: new ResourceLocation(TheDungeon.MOD_ID, "goblin_caves/spawns") where the file is located resources > data > the_dungeon > worldgen > template_pool > goblin_caves > spawns.json it does generate randomly when i create a structureSet
-
Place Jigsaw structure in code
anyone?
-
Place Jigsaw structure in code
I have been trying to place a jigsaw structure for about a week now and cant get it to work. I have the template pool etc set up and working it does randomly generate now I just want to place it in the world using a coded trigger. I cant seem to find any useful information on the internet and am completely stuck I think I need to use : JigsawPlacement.generateJigsaw() But I cant get the Holder<StructureTemplatePool>
- Structure generation guarantee room only once
-
Structure generation guarantee room only once
I am making a mod for 1.20.6 I want to make a randomly generated structure using jigsaw but want to guarantee that a specific room is generated and not more than once. I cant generate starting from this room as I need to do this for 2 different rooms. I cant find more info on this in the Minecraft wiki or the forums. is it possible to set a min and max count for structure pieces?
-
error on launch
fix found had to add: implementation('net.sf.jopt-simple:jopt-simple:5.0.4') { version { strictly '5.0.4' } } to the dependancies
-
error on launch
full failure report Execution failed for task ':runData'. > Process 'command 'C:\Program Files\Eclipse Adoptium\jdk-21.0.2.13-hotspot\bin\java.exe'' finished with non-zero exit value 1 * Try: > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':runData'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:149) at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:147) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:135) at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:74) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52) at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:42) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:337) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:324) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:317) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:303) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:463) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:380) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:49) Caused by: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Eclipse Adoptium\jdk-21.0.2.13-hotspot\bin\java.exe'' finished with non-zero exit value 1 at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:415) at org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.java:52) at org.gradle.api.tasks.JavaExec.exec(JavaExec.java:165) at net.minecraftforge.gradle.common.util.runs.MinecraftRunTask.exec(MinecraftRunTask.java:56) at jdk.internal.reflect.GeneratedMethodAccessor533.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29) at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:242) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68) at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:227) at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:210) at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:193) at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:166) at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:105) at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:44) at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:59) at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:56) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:56) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44) at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:67) at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:37) at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41) at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74) at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55) at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:50) at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:28) at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.executeDelegateBroadcastingChanges(CaptureStateAfterExecutionStep.java:100) at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:72) at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:50) at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:40) at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:29) at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:166) at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:70) at org.gradle.internal.Either$Right.fold(Either.java:175) at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59) at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:68) at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:46) at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36) at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25) at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36) at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22) at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:91) at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:55) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:37) at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:65) at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:36) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27) at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:76) at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:37) at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:94) at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:49) at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:71) at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:45) at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNonEmptySources(SkipEmptyWorkStep.java:177) at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:81) at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:53) at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32) at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38) at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:36) at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:23) at org.gradle.internal.execution.steps.CleanupStaleOutputsStep.execute(CleanupStaleOutputsStep.java:75) at org.gradle.internal.execution.steps.CleanupStaleOutputsStep.execute(CleanupStaleOutputsStep.java:41) at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:32) at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:287) at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30) at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:21) at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37) at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27) at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:47) at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:34) at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:64) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:146) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:135) at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:74) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52) at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:42) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:337) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:324) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:317) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:303) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:463) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:380) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:49)
-
error on launch
MC version :1.20.6 forge version: 50.0.26 mapping channel: parchment mapping version: 2024.05.01-1.20.6 Caused by: java.lang.module.FindException: Module jopt.simple not found, required by cpw.mods.modlauncher i get this error when trying to launch my dev environment
-
is it possible to lock a custom recipe in a custom crafting block behind an advancement
do you happen to have any info on it? a website or a video. before I start looking myself. might make the searching process easier.
-
is it possible to lock a custom recipe in a custom crafting block behind an advancement
oh ok, I will look into it.
-
is it possible to lock a custom recipe in a custom crafting block behind an advancement
I am trying to create a "research" like system for crafting some items and I have the custom recipes set up but i would like to know if it is possible to reference an advancement in the JSON I am looking for something like this: { "type": "majestic:scribing", "advancement": "insert advancement" "ingredients": [ { "item": "insert custom item" }, { "item": "insert custom item" }, { "item": "insert custom item" }, { "item": "insert custom item" } ], "output": { "item": "insert custom item", "count": 1 } } is that doable and how do I reference it in the code?
-
forge error on run
im sorry, here is the code i am referring to package net.JustEmSee_Burd.the_majestic.item; import net.JustEmSee_Burd.the_majestic.The_Majestic; import net.JustEmSee_Burd.the_majestic.block.ModBlocks; import net.JustEmSee_Burd.the_majestic.spell.Spell; import net.JustEmSee_Burd.the_majestic.spell.SpellItem; import net.JustEmSee_Burd.the_majestic.world.feature.ModConfiguredFeatures; import net.JustEmSee_Burd.the_majestic.world.feature.ModOrePlacement; import net.minecraft.data.worldgen.features.OreFeatures; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.levelgen.VerticalAnchor; import net.minecraft.world.level.levelgen.placement.HeightRangePlacement; import net.minecraft.world.level.levelgen.placement.PlacementModifier; import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest; import net.minecraft.world.level.material.Material; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; import org.jetbrains.annotations.Nullable; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.List; import java.util.function.Supplier; public class ModCrystalItems { private List GenerateOres = new ArrayList(); public static final DeferredRegister<Item> CRYSTALS = DeferredRegister.create(ForgeRegistries.ITEMS, The_Majestic.MOD_ID); public static final RegistryObject<Item> MANA_CRYSTAL = registerCrystal("mana_crystal", () -> new Item(new Item.Properties().tab(ModCreativeModeTab.Majestic_TAB)), false, false, null, 0 , null, null); public static final RegistryObject<Item> FIRE_CRYSTAL = registerCrystal("fire_crystal", () -> new Item(new Item.Properties().tab(ModCreativeModeTab.Majestic_TAB)), true, false, OreFeatures.NETHER_ORE_REPLACEABLES, 100 , ModOrePlacement.commonOrePlacement(1 ,HeightRangePlacement.triangle(VerticalAnchor.aboveBottom(-80), VerticalAnchor.aboveBottom(80))), null); public static final RegistryObject<Item> WATER_CRYSTAL = registerCrystal("water_crystal", () -> new Item(new Item.Properties().tab(ModCreativeModeTab.Majestic_TAB)), true, true, OreFeatures.STONE_ORE_REPLACEABLES, 100 , ModOrePlacement.commonOrePlacement(1 ,HeightRangePlacement.triangle(VerticalAnchor.aboveBottom(-80), VerticalAnchor.aboveBottom(80))), null); public static final RegistryObject<Item> EARTH_CRYSTAL = registerCrystal("earth_crystal", () -> new Item(new Item.Properties().tab(ModCreativeModeTab.Majestic_TAB)), true, true, OreFeatures.STONE_ORE_REPLACEABLES, 100 , ModOrePlacement.commonOrePlacement(1 ,HeightRangePlacement.triangle(VerticalAnchor.aboveBottom(-80), VerticalAnchor.aboveBottom(80))), null); public static final RegistryObject<Item> AIR_CRYSTAL = registerCrystal("air_crystal", () -> new Item(new Item.Properties().tab(ModCreativeModeTab.Majestic_TAB)), true, true, OreFeatures.STONE_ORE_REPLACEABLES, 100 , ModOrePlacement.commonOrePlacement(1 ,HeightRangePlacement.triangle(VerticalAnchor.aboveBottom(-80), VerticalAnchor.aboveBottom(80))), null); public static final RegistryObject<Item> MAGMA_CRYSTAL = registerCrystal("magma_crystal", () -> new Item(new Item.Properties().tab(ModCreativeModeTab.Majestic_TAB)), false, false, null, 0 , null, null); public static final RegistryObject<Item> ICE_CRYSTAL = registerCrystal("ice_crystal", () -> new Item(new Item.Properties().tab(ModCreativeModeTab.Majestic_TAB)), false, false, null, 0 , null, null); public static final RegistryObject<Item> NATURE_CRYSTAL = registerCrystal("nature_crystal", () -> new Item(new Item.Properties().tab(ModCreativeModeTab.Majestic_TAB)), false, false, null, 0 , null, null); public static final RegistryObject<Item> LIGHTNING_CRYSTAL = registerCrystal("lightning_crystal", () -> new Item(new Item.Properties().tab(ModCreativeModeTab.Majestic_TAB)), false, false, null, 0 , null, null); public static final RegistryObject<Item> LIGHT_CRYSTAL = registerCrystal("light_crystal", () -> new Item(new Item.Properties().tab(ModCreativeModeTab.Majestic_TAB)), false, false, null, 0 , null, null); public static final RegistryObject<Item> DARKNESS_CRYSTAL = registerCrystal("darkness_crystal", () -> new Item(new Item.Properties().tab(ModCreativeModeTab.Majestic_TAB)), false,false, null, 0, null, null); public static final RegistryObject<Item> VOID_CRYSTAL = registerCrystal("void_crystal", () -> new Item(new Item.Properties().tab(ModCreativeModeTab.Majestic_TAB)), false, false, null, 0, null, null); public static void register(IEventBus eventBus) { CRYSTALS.register(eventBus); } private static <T extends Item> RegistryObject<T> registerCrystal(String name, Supplier<T> item, boolean hasOre, boolean hasDeepslateOre, RuleTest defaultOreReplaceBlock, int oreSize, List<PlacementModifier> orePlacementFeatures, List Features) { RegistryObject<T> toReturn = CRYSTALS.register(name, item); String oreName = null; String deepslateOreName = null; if (hasOre) oreName = name+"_ore"; if (hasDeepslateOre)deepslateOreName = "deepslate_"+name+"_ore"; if (hasOre || hasDeepslateOre)registerCrystalOre(oreName, deepslateOreName, ModCreativeModeTab.Majestic_TAB, defaultOreReplaceBlock, oreSize, orePlacementFeatures, Features); return toReturn; } private static void registerCrystalOre(String oreName, String deepslateOreName, CreativeModeTab tab,RuleTest ruleTest, int oreSize,List<PlacementModifier> orePlacementFeatures, List Features) { RegistryObject<Block> ore = null; RegistryObject<Block> deepslateOre = null; if(oreName != null) ore = ModBlocks.registerBlock(oreName, () -> new Block(BlockBehaviour.Properties.of(Material.STONE) .strength(5F).requiresCorrectToolForDrops()), tab); if(deepslateOreName != null) deepslateOre = ModBlocks.registerBlock(deepslateOreName, () -> new Block(BlockBehaviour.Properties.of(Material.STONE) .strength(5F).requiresCorrectToolForDrops()), tab); ModConfiguredFeatures.RegisterOre(oreName, ore, deepslateOre, ruleTest, oreSize, orePlacementFeatures, Features); } } package net.JustEmSee_Burd.the_majestic.world.feature; import net.JustEmSee_Burd.the_majestic.The_Majestic; import net.minecraft.core.Holder; import net.minecraft.data.worldgen.features.FeatureUtils; import net.minecraft.data.worldgen.features.OreFeatures; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; import net.minecraft.world.level.levelgen.placement.PlacementModifier; import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest; import net.minecraftforge.registries.RegistryObject; import java.util.ArrayList; import java.util.List; public class ModConfiguredFeatures { public static List<OreConfiguration.TargetBlockState> RegisterOre(String name, RegistryObject<Block> oreBlock, RegistryObject<Block> deepslateOreBlock, RuleTest deafaultOreReplaceBlock, int OreSize, List<PlacementModifier> OrePlacementFeatures, List ExtraFeatures) { List<OreConfiguration.TargetBlockState> toReturn = new ArrayList<>(); if (oreBlock != null) toReturn.add(OreConfiguration.target(deafaultOreReplaceBlock, oreBlock.get().defaultBlockState())); if (deepslateOreBlock != null) toReturn.add(OreConfiguration.target(OreFeatures.DEEPSLATE_ORE_REPLACEABLES, deepslateOreBlock.get().defaultBlockState())); if (ExtraFeatures != null) toReturn.addAll(ExtraFeatures); configureOre(toReturn, name, OreSize, OrePlacementFeatures); return toReturn; } public static Holder<ConfiguredFeature<OreConfiguration, ?>> configureOre(List<OreConfiguration.TargetBlockState> features, String name, int OreSize, List<PlacementModifier> OrePlacementFeatures) { Holder<ConfiguredFeature<OreConfiguration, ?>> toReturn = FeatureUtils.register(name, Feature.ORE, new OreConfiguration(features, OreSize)); ModPlacedFeatures.GenerateOrePlacement(name+"_placed", toReturn, OrePlacementFeatures); return toReturn; } public static void registerConfiguredFeatures() { System.out.println("Registering ModConfiguredFeatures for " + The_Majestic.MOD_ID); } } package net.JustEmSee_Burd.the_majestic.world.feature; import net.minecraft.world.level.levelgen.placement.*; import java.util.List; public class ModOrePlacement { public static List<PlacementModifier> orePlacement(PlacementModifier veinsPerChunk, PlacementModifier p_195348_) { return List.of(veinsPerChunk, InSquarePlacement.spread(), p_195348_, BiomeFilter.biome()); } public static List<PlacementModifier> commonOrePlacement(int p_195344_, PlacementModifier p_195345_) { return orePlacement(CountPlacement.of(p_195344_), p_195345_); } public static List<PlacementModifier> rareOrePlacement(int p_195350_, PlacementModifier p_195351_) { return orePlacement(RarityFilter.onAverageOnceEvery(p_195350_), p_195351_); } } package net.JustEmSee_Burd.the_majestic.world.gen; import net.minecraft.core.Holder; import net.minecraft.world.level.levelgen.GenerationStep; import net.minecraft.world.level.levelgen.placement.PlacedFeature; import net.minecraftforge.event.world.BiomeLoadingEvent; import java.util.ArrayList; import java.util.List; public class ModOreGeneration { private static List<Holder<PlacedFeature>> list = new ArrayList<>(); public static void generateOres(final BiomeLoadingEvent event) { List<Holder<PlacedFeature>> base = event.getGeneration().getFeatures(GenerationStep.Decoration.UNDERGROUND_ORES); base.addAll(list); } public static void addOreGen(Holder<PlacedFeature> placedFeatureHolder) { list.add(placedFeatureHolder); } } or the github: https://github.com/sen2006/The-Majestic
-
forge error on run
and i cant find a way around calling .get()
-
forge error on run
yes I know but it is a RegistryObject until the point where i need the BlockState
IPS spam blocked by CleanTalk.