Jump to content

Recommended Posts

Posted (edited)

I have been working on a mod which adds minerals, the problem is that when they are generated, they ignore the maximum and minimum height that is established.

The main:

@Mod("examplemod")
public class ExampleMod {
    public static ExampleMod instance;
    public static final String modid = "examplemod";
    private static final Logger LOGGER = LogManager.getLogger("examplemod");
    public static final CreativeModeTab examplemod = new ExampleTab();

    public ExampleMod() {
        instance = this;

        ExampleBlocks.BLOCKS.register(FMLJavaModLoadingContext.get().getModEventBus());
        ExampleItems.ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus());

        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientSetup);

        ModLoadingContext.get().registerConfig(Type.COMMON, ExampleModConfig.SPEC, "example-common.toml");

        MinecraftForge.EVENT_BUS.addListener(EventPriority.HIGH, OreGeneration::generateOres);
        MinecraftForge.EVENT_BUS.register(this);
    }

    private void setup(final FMLCommonSetupEvent event) {
        LOGGER.info("Hello from preinit");
        LOGGER.info("Dirt block >> {}", Blocks.DIRT.getRegistryName());
    }

    @OnlyIn(Dist.CLIENT)
    public void clientSetup(FMLClientSetupEvent event) {
        LOGGER.info("Hello from client setup");
    }

    @SubscribeEvent
    public void serverStarting(FMLServerStartingEvent event) {
        LOGGER.info("Hello from server starting");
    }

    @EventBusSubscriber(bus = Bus.MOD)
    public static class RegistryEvents {
        public RegistryEvents() {
        }

        @SubscribeEvent
        public static void registerBlocks(final RegistryEvent.Register<Block> event) {
            LOGGER.info("Hello from Register Block");
        }

        @SubscribeEvent
        public static void registerItems(final RegistryEvent.Register<Item> event) {
            LOGGER.info("Hello from Register Item");
        }

        @SubscribeEvent
        public static void registerEntities(final RegistryEvent.Register<EntityType<?>> event) {
            LOGGER.info("Hello from Register Entity");
        }

        @SubscribeEvent
        public static void registerEnchantments(final RegistryEvent.Register<Enchantment> event) {
            LOGGER.info("Hello from Register Enchantment");
        }

        @SubscribeEvent
        public static void registerSounds(final RegistryEvent.Register<SoundEvent> event) {
            LOGGER.info("Hello from Register Sound");
        }
    }
}

 

OreGeneration:

 

public class OreGeneration {
    public OreGeneration() {
    }

    public static void generateOres(final BiomeLoadingEvent event) {
        if (!event.getCategory().equals(Biome.BiomeCategory.NETHER) && !event.getCategory().equals(Biome.BiomeCategory.THEEND)) {
            exampleOreGenerate(event.getGeneration(), Predicates.NATURAL_STONE, ((Block) ExampleBlocks.EXAMPLE_ORE.get()).defaultBlockState(), (Integer) ExampleConfig.EXAMPLE_ORE_SIZE.get(), (Integer) ExampleConfig.EXAMPLE_ORE_MIN_HEIGHT.get(), (Integer) ExampleConfig.EXAMPLE_ORE_MAX_HEIGHT.get(), (Integer) ExampleConfig.EXAMPLE_ORE_AMOUNT.get());
        }
    }

    private static void exampleOreGenerate(BiomeGenerationSettingsBuilder settings, RuleTest fillerType, BlockState state, int veinSize, int minHeight, int maxHeight, int amount) {
        settings.addFeature(Decoration.UNDERGROUND_ORES, (ConfiguredFeature)((ConfiguredFeature)((ConfiguredFeature) Feature.ORE.configured(new OreConfiguration(fillerType, state, veinSize)).rangeUniform(VerticalAnchor.aboveBottom(minHeight), VerticalAnchor.belowTop(maxHeight))).squared()).count(amount));
    }
}

 

 

The configuration:

 

public class ExampleConfig {
    public static final Builder BUILDER = new Builder();
    public static final ForgeConfigSpec SPEC;
    public static final ConfigValue<Boolean> EXAMPLE_ORE_GENERATION;
    public static final ConfigValue<Integer> EXAMPLE_ORE_SIZE;
    public static final ConfigValue<Integer> EXAMPLE_ORE_MIN_HEIGHT;
    public static final ConfigValue<Integer> EXAMPLE_ORE_MAX_HEIGHT;
    public static final ConfigValue<Integer> EXAMPLE_ORE_AMOUNT;

    public ExampleConfig() {
    }

    static {
        BUILDER.push("Example ore generation");
        EXAMPLE_ORE_GENERATION = BUILDER.define("Generate example ore", true);
        EXAMPLE_ORE_SIZE = BUILDER.define("Example ore vein size", 8);
        EXAMPLE_ORE_MIN_HEIGHT = BUILDER.define("Minimum example ore generation height", 16);
        EXAMPLE_ORE_MAX_HEIGHT = BUILDER.define("Maximum example ore generation height", 32);
        EXAMPLE_ORE_AMOUNT = BUILDER.define("Amount of generate example ore", 31); <- This is the value
        BUILDER.pop();
        SPEC = BUILDER.build();
    }
}

 

It seems that the problem is in the "amount" parameter, since if I change it, it will not The mineral is generated, or it is generated as it should not, if I set it to a value of 16 or less, the mineral is not generated, but if I set it to a value of 17 or greater, it is generated ignoring the maximum and minimum height established.

Edited by Gianka1485
  • Gianka1485 changed the title to 1.17.1 Ore generation is not working properly.
Posted (edited)

To use the max and min height you need to change the VerticalAnchor you have set VerticalAnchor.aboveBottom and VerticalAnchor.belowTop, if you change it to VerticalAnchor.absolute it should work

public class OreGeneration {
    public OreGeneration() {
    }

    public static void generateOres(final BiomeLoadingEvent event) {
        if (!event.getCategory().equals(Biome.BiomeCategory.NETHER) && !event.getCategory().equals(Biome.BiomeCategory.THEEND)) {
            exampleOreGenerate(event.getGeneration(), Predicates.NATURAL_STONE, ((Block) ExampleBlocks.EXAMPLE_ORE.get()).defaultBlockState(), (Integer) ExampleConfig.EXAMPLE_ORE_SIZE.get(), (Integer) ExampleConfig.EXAMPLE_ORE_MIN_HEIGHT.get(), (Integer) ExampleConfig.EXAMPLE_ORE_MAX_HEIGHT.get(), (Integer) ExampleConfig.EXAMPLE_ORE_AMOUNT.get());
        }
    }

    private static void exampleOreGenerate(BiomeGenerationSettingsBuilder settings, RuleTest fillerType, BlockState state, int veinSize, int minHeight, int maxHeight, int amount) {
        settings.addFeature(Decoration.UNDERGROUND_ORES, (ConfiguredFeature)((ConfiguredFeature)((ConfiguredFeature) Feature.ORE.configured(new OreConfiguration(fillerType, state, veinSize)).rangeUniform(VerticalAnchor.absolute(minHeight), VerticalAnchor.absolute(maxHeight))).squared()).count(amount));
    }
}
Edited by Grookey
Posted (edited)
El 21/08/2021 a las 7:52 AM, Luis_ST dijo:

dejar de usar este código su roto!
debe registrar la configuración

Cambié el código de generación de los minerales a lo siguiente:

 

OreGeneration:

@EventBusSubscriber
public class OreGeneration {
    public static ImmutableList<TargetBlockState> EXAMPLE_ORE_TARGET_LIST;
    public static ConfiguredFeature<?, ?> EXAMPLE_ORE;

    public OreGeneration() {
    }

    public static void registerConfiguredFeatures() {
        EXAMPLE_ORE_TARGET_LIST = ImmutableList.of(OreConfiguration.target(Predicates.NATURAL_STONE, ((Block) ExampleBlocks.EXAMPLE_ORE.get()).defaultBlockState()), OreConfiguration.target(Predicates.STONE_ORE_REPLACEABLES, ((Block) ExampleBlocks.EXAMPLE_ORE.get()).defaultBlockState()));
        EXAMPLE_ORE = (ConfiguredFeature)((ConfiguredFeature)((ConfiguredFeature) Feature.ORE.configured(new OreConfiguration(EXAMPLE_ORE_TARGET_LIST, (Integer) ExampleConfig.EXAMPLE_ORE_SIZE.get())).rangeUniform(VerticalAnchor.aboveBottom((Integer) ExampleConfig.EXAMPLE_ORE_MIN_HEIGHT.get()), VerticalAnchor.belowTop((Integer) ExampleConfig.EXAMPLE_ORE_MAX_HEIGHT.get()))).squared()).count((Integer) ExampleConfig.EXAMPLE_ORE_CHANCE.get());
        Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, new ResourceLocation("examplemod", "example_ore"), EXAMPLE_ORE);
    }

    @SubscribeEvent
    public static void registerBiomeModification(BiomeLoadingEvent event) {
        registerConfiguredFeatures();
        event.getGeneration().getFeatures(Decoration.UNDERGROUND_ORES).add(() -> {
            return EXAMPLE_ORE;
        });
    }
}

 

 

Los principales:

@Mod("examplemod")
public class ExampleMod {
    public static ExampleMod instance;
    public static final String modid = "examplemod";
    private static final Logger LOGGER = LogManager.getLogger("examplemod");
    public static final CreativeModeTab examplemod = new ExampleTab();

    public ExampleMod() {
        instance = this;

        ExampleBlocks.BLOCKS.register(FMLJavaModLoadingContext.get().getModEventBus());
        ExampleItems.ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus());

        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientSetup);

        ModLoadingContext.get().registerConfig(Type.COMMON, ExampleModConfig.SPEC, "example-common.toml");

        MinecraftForge.EVENT_BUS.register(this);
    }

    private void setup(final FMLCommonSetupEvent event) {
      	OreGeneration.registerConfiguredFeatures;            <- THE CHANGE
        LOGGER.info("Hello from preinit");
        LOGGER.info("Dirt block >> {}", Blocks.DIRT.getRegistryName());
    }

    @OnlyIn(Dist.CLIENT)
    public void clientSetup(FMLClientSetupEvent event) {
        LOGGER.info("Hello from client setup");
    }

    @SubscribeEvent
    public void serverStarting(FMLServerStartingEvent event) {
        LOGGER.info("Hello from server starting");
    }

    @EventBusSubscriber(bus = Bus.MOD)
    public static class RegistryEvents {
        public RegistryEvents() {
        }

        @SubscribeEvent
        public static void registerBlocks(final RegistryEvent.Register<Block> event) {
            LOGGER.info("Hello from Register Block");
        }

        @SubscribeEvent
        public static void registerItems(final RegistryEvent.Register<Item> event) {
            LOGGER.info("Hello from Register Item");
        }

        @SubscribeEvent
        public static void registerEntities(final RegistryEvent.Register<EntityType<?>> event) {
            LOGGER.info("Hello from Register Entity");
        }

        @SubscribeEvent
        public static void registerEnchantments(final RegistryEvent.Register<Enchantment> event) {
            LOGGER.info("Hello from Register Enchantment");
        }

        @SubscribeEvent
        public static void registerSounds(final RegistryEvent.Register<SoundEvent> event) {
            LOGGER.info("Hello from Register Sound");
        }
    }
}

 

 

Después de esto, ahora independientemente del número que pongas en la oportunidad de generar el mineral, se generará con los valores establecidos, pero todavía existe el error que ignora la altura máxima y mínima del mineral.

Edited by Gianka1485
Posted
On 8/21/2021 at 7:34 AM, Grookey said:

To use the max and min height you need to change the VerticalAnchor you have set VerticalAnchor.aboveBottom and VerticalAnchor.belowTop, if you change it to VerticalAnchor.absolute it should work


public class OreGeneration {
    public OreGeneration() {
    }

    public static void generateOres(final BiomeLoadingEvent event) {
        if (!event.getCategory().equals(Biome.BiomeCategory.NETHER) && !event.getCategory().equals(Biome.BiomeCategory.THEEND)) {
            exampleOreGenerate(event.getGeneration(), Predicates.NATURAL_STONE, ((Block) ExampleBlocks.EXAMPLE_ORE.get()).defaultBlockState(), (Integer) ExampleConfig.EXAMPLE_ORE_SIZE.get(), (Integer) ExampleConfig.EXAMPLE_ORE_MIN_HEIGHT.get(), (Integer) ExampleConfig.EXAMPLE_ORE_MAX_HEIGHT.get(), (Integer) ExampleConfig.EXAMPLE_ORE_AMOUNT.get());
        }
    }

    private static void exampleOreGenerate(BiomeGenerationSettingsBuilder settings, RuleTest fillerType, BlockState state, int veinSize, int minHeight, int maxHeight, int amount) {
        settings.addFeature(Decoration.UNDERGROUND_ORES, (ConfiguredFeature)((ConfiguredFeature)((ConfiguredFeature) Feature.ORE.configured(new OreConfiguration(fillerType, state, veinSize)).rangeUniform(VerticalAnchor.absolute(minHeight), VerticalAnchor.absolute(maxHeight))).squared()).count(amount));
    }
}

It worked in the best possible way, it may seem very silly, but I spent about 3 days changing the code to fix the problem, and after so long, I just changed the values to absolute and it is as it should be, after a long time, my code It remained like this:

 

@EventBusSubscriber
public class OreGeneration {
    public static ImmutableList<TargetBlockState> EXAMPLE_ORE_TARGET_LIST;
    public static ConfiguredFeature<?, ?> EXAMPLE_ORE;

    public OreGeneration() {
    }

    public static void registerConfiguredFeatures() {
        EXAMPLE_ORE_TARGET_LIST = ImmutableList.of(OreConfiguration.target(Predicates.NATURAL_STONE, ((Block) ExampleBlocks.EXAMPLE_ORE.get()).defaultBlockState()), OreConfiguration.target(Predicates.STONE_ORE_REPLACEABLES, ((Block) ExampleBlocks.EXAMPLE_ORE.get()).defaultBlockState()));
        EXAMPLE_ORE = (ConfiguredFeature)((ConfiguredFeature)((ConfiguredFeature) Feature.ORE.configured(new OreConfiguration(EXAMPLE_ORE_TARGET_LIST, (Integer) ExampleConfig.EXAMPLE_ORE_SIZE.get())).rangeUniform(VerticalAnchor.absolute((Integer) ExampleConfig.EXAMPLE_ORE_MIN_HEIGHT.get()), VerticalAnchor.absolute((Integer) ExampleConfig.EXAMPLE_ORE_MAX_HEIGHT.get()))).squared()).count((Integer) ExampleConfig.EXAMPLE_ORE_CHANCE.get());
        Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, new ResourceLocation("examplemod", "example_ore"), EXAMPLE_ORE);
    }

    @SubscribeEvent
    public static void registerBiomeModification(BiomeLoadingEvent event) {
        registerConfiguredFeatures();
        event.getGeneration().getFeatures(Decoration.UNDERGROUND_ORES).add(() -> {
            return EXAMPLE_ORE;
        });
    }
}

 

Posted

Now this brings another error, if in the ExampleConfig file the value of the variable "EXAMPLE_ORE_SIZE" is less than 4, the mineral is not generated, this is a big problem for me, since I want to add a mineral better than netherite, and That is just as rare, but it just doesn't appear, even if I increase the chance value a lot, it still doesn't work.

Posted
19 hours ago, Luis_ST said:

use your IDE to search for the class, it's called Features and its in the data package

 

I already saw the code but it really didn't help me much, maybe you can give an example?

Posted (edited)
22 minutes ago, Luis_ST said:

the vanilla code is an example

So where can I find the netherite example?

 

I already looked in features and only the base code of the generation appears, where then could I find the diamond one, for example?

Edited by Gianka1485
Posted (edited)
9 minutes ago, Luis_ST said:

in which class did you look exactly

 

When I enter features the following appears:

public static final Feature<OreConfiguration> ORE = register("ore", new OreFeature(OreConfiguration.CODEC));

 

 

Upon entering OreFeature, the following appears:

public class OreFeature extends Feature<OreConfiguration> {
   public OreFeature(Codec<OreConfiguration> p_66531_) {
      super(p_66531_);
   }

   public boolean place(FeaturePlaceContext<OreConfiguration> p_160177_) {
      Random random = p_160177_.random();
      BlockPos blockpos = p_160177_.origin();
      WorldGenLevel worldgenlevel = p_160177_.level();
      OreConfiguration oreconfiguration = p_160177_.config();
      float f = random.nextFloat() * (float)Math.PI;
      float f1 = (float)oreconfiguration.size / 8.0F;
      int i = Mth.ceil(((float)oreconfiguration.size / 16.0F * 2.0F + 1.0F) / 2.0F);
      double d0 = (double)blockpos.getX() + Math.sin((double)f) * (double)f1;
      double d1 = (double)blockpos.getX() - Math.sin((double)f) * (double)f1;
      double d2 = (double)blockpos.getZ() + Math.cos((double)f) * (double)f1;
      double d3 = (double)blockpos.getZ() - Math.cos((double)f) * (double)f1;
      int j = 2;
      double d4 = (double)(blockpos.getY() + random.nextInt(3) - 2);
      double d5 = (double)(blockpos.getY() + random.nextInt(3) - 2);
      int k = blockpos.getX() - Mth.ceil(f1) - i;
      int l = blockpos.getY() - 2 - i;
      int i1 = blockpos.getZ() - Mth.ceil(f1) - i;
      int j1 = 2 * (Mth.ceil(f1) + i);
      int k1 = 2 * (2 + i);

      for(int l1 = k; l1 <= k + j1; ++l1) {
         for(int i2 = i1; i2 <= i1 + j1; ++i2) {
            if (l <= worldgenlevel.getHeight(Heightmap.Types.OCEAN_FLOOR_WG, l1, i2)) {
               return this.doPlace(worldgenlevel, random, oreconfiguration, d0, d1, d2, d3, d4, d5, k, l, i1, j1, k1);
            }
         }
      }

      return false;
   }

   protected boolean doPlace(WorldGenLevel p_66533_, Random p_66534_, OreConfiguration p_66535_, double p_66536_, double p_66537_, double p_66538_, double p_66539_, double p_66540_, double p_66541_, int p_66542_, int p_66543_, int p_66544_, int p_66545_, int p_66546_) {
      int i = 0;
      BitSet bitset = new BitSet(p_66545_ * p_66546_ * p_66545_);
      BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos();
      int j = p_66535_.size;
      double[] adouble = new double[j * 4];

      for(int k = 0; k < j; ++k) {
         float f = (float)k / (float)j;
         double d0 = Mth.lerp((double)f, p_66536_, p_66537_);
         double d1 = Mth.lerp((double)f, p_66540_, p_66541_);
         double d2 = Mth.lerp((double)f, p_66538_, p_66539_);
         double d3 = p_66534_.nextDouble() * (double)j / 16.0D;
         double d4 = ((double)(Mth.sin((float)Math.PI * f) + 1.0F) * d3 + 1.0D) / 2.0D;
         adouble[k * 4 + 0] = d0;
         adouble[k * 4 + 1] = d1;
         adouble[k * 4 + 2] = d2;
         adouble[k * 4 + 3] = d4;
      }

      for(int l3 = 0; l3 < j - 1; ++l3) {
         if (!(adouble[l3 * 4 + 3] <= 0.0D)) {
            for(int i4 = l3 + 1; i4 < j; ++i4) {
               if (!(adouble[i4 * 4 + 3] <= 0.0D)) {
                  double d8 = adouble[l3 * 4 + 0] - adouble[i4 * 4 + 0];
                  double d10 = adouble[l3 * 4 + 1] - adouble[i4 * 4 + 1];
                  double d12 = adouble[l3 * 4 + 2] - adouble[i4 * 4 + 2];
                  double d14 = adouble[l3 * 4 + 3] - adouble[i4 * 4 + 3];
                  if (d14 * d14 > d8 * d8 + d10 * d10 + d12 * d12) {
                     if (d14 > 0.0D) {
                        adouble[i4 * 4 + 3] = -1.0D;
                     } else {
                        adouble[l3 * 4 + 3] = -1.0D;
                     }
                  }
               }
            }
         }
      }

      BulkSectionAccess bulksectionaccess = new BulkSectionAccess(p_66533_);

      try {
         for(int j4 = 0; j4 < j; ++j4) {
            double d9 = adouble[j4 * 4 + 3];
            if (!(d9 < 0.0D)) {
               double d11 = adouble[j4 * 4 + 0];
               double d13 = adouble[j4 * 4 + 1];
               double d15 = adouble[j4 * 4 + 2];
               int k4 = Math.max(Mth.floor(d11 - d9), p_66542_);
               int l = Math.max(Mth.floor(d13 - d9), p_66543_);
               int i1 = Math.max(Mth.floor(d15 - d9), p_66544_);
               int j1 = Math.max(Mth.floor(d11 + d9), k4);
               int k1 = Math.max(Mth.floor(d13 + d9), l);
               int l1 = Math.max(Mth.floor(d15 + d9), i1);

               for(int i2 = k4; i2 <= j1; ++i2) {
                  double d5 = ((double)i2 + 0.5D - d11) / d9;
                  if (d5 * d5 < 1.0D) {
                     for(int j2 = l; j2 <= k1; ++j2) {
                        double d6 = ((double)j2 + 0.5D - d13) / d9;
                        if (d5 * d5 + d6 * d6 < 1.0D) {
                           for(int k2 = i1; k2 <= l1; ++k2) {
                              double d7 = ((double)k2 + 0.5D - d15) / d9;
                              if (d5 * d5 + d6 * d6 + d7 * d7 < 1.0D && !p_66533_.isOutsideBuildHeight(j2)) {
                                 int l2 = i2 - p_66542_ + (j2 - p_66543_) * p_66545_ + (k2 - p_66544_) * p_66545_ * p_66546_;
                                 if (!bitset.get(l2)) {
                                    bitset.set(l2);
                                    blockpos$mutableblockpos.set(i2, j2, k2);
                                    if (p_66533_.ensureCanWrite(blockpos$mutableblockpos)) {
                                       LevelChunkSection levelchunksection = bulksectionaccess.getSection(blockpos$mutableblockpos);
                                       if (levelchunksection != LevelChunk.EMPTY_SECTION) {
                                          int i3 = SectionPos.sectionRelative(i2);
                                          int j3 = SectionPos.sectionRelative(j2);
                                          int k3 = SectionPos.sectionRelative(k2);
                                          BlockState blockstate = levelchunksection.getBlockState(i3, j3, k3);

                                          for(OreConfiguration.TargetBlockState oreconfiguration$targetblockstate : p_66535_.targetStates) {
                                             if (canPlaceOre(blockstate, bulksectionaccess::getBlockState, p_66534_, p_66535_, oreconfiguration$targetblockstate, blockpos$mutableblockpos)) {
                                                levelchunksection.setBlockState(i3, j3, k3, oreconfiguration$targetblockstate.state, false);
                                                ++i;
                                                break;
                                             }
                                          }
                                       }
                                    }
                                 }
                              }
                           }
                        }
                     }
                  }
               }
            }
         }
      } catch (Throwable throwable1) {
         try {
            bulksectionaccess.close();
         } catch (Throwable throwable) {
            throwable1.addSuppressed(throwable);
         }

         throw throwable1;
      }

      bulksectionaccess.close();
      return i > 0;
   }

   public static boolean canPlaceOre(BlockState p_160170_, Function<BlockPos, BlockState> p_160171_, Random p_160172_, OreConfiguration p_160173_, OreConfiguration.TargetBlockState p_160174_, BlockPos.MutableBlockPos p_160175_) {
      if (!p_160174_.target.test(p_160170_, p_160172_)) {
         return false;
      } else if (shouldSkipAirCheck(p_160172_, p_160173_.discardChanceOnAirExposure)) {
         return true;
      } else {
         return !isAdjacentToAir(p_160171_, p_160175_);
      }
   }

   protected static boolean shouldSkipAirCheck(Random p_160179_, float p_160180_) {
      if (p_160180_ <= 0.0F) {
         return true;
      } else if (p_160180_ >= 1.0F) {
         return false;
      } else {
         return p_160179_.nextFloat() >= p_160180_;
      }
   }
}

 

When entering OreConfiguration the following appears:

public class OreConfiguration implements FeatureConfiguration {
   public static final Codec<OreConfiguration> CODEC = RecordCodecBuilder.create((p_67849_) -> {
      return p_67849_.group(Codec.list(OreConfiguration.TargetBlockState.CODEC).fieldOf("targets").forGetter((p_161027_) -> {
         return p_161027_.targetStates;
      }), Codec.intRange(0, 64).fieldOf("size").forGetter((p_161025_) -> {
         return p_161025_.size;
      }), Codec.floatRange(0.0F, 1.0F).fieldOf("discard_chance_on_air_exposure").forGetter((p_161020_) -> {
         return p_161020_.discardChanceOnAirExposure;
      })).apply(p_67849_, OreConfiguration::new);
   });
   public final List<OreConfiguration.TargetBlockState> targetStates;
   public final int size;
   public final float discardChanceOnAirExposure;

   public OreConfiguration(List<OreConfiguration.TargetBlockState> p_161016_, int p_161017_, float p_161018_) {
      this.size = p_161017_;
      this.targetStates = p_161016_;
      this.discardChanceOnAirExposure = p_161018_;
   }

   public OreConfiguration(List<OreConfiguration.TargetBlockState> p_161013_, int p_161014_) {
      this(p_161013_, p_161014_, 0.0F);
   }

   public OreConfiguration(RuleTest p_161008_, BlockState p_161009_, int p_161010_, float p_161011_) {
      this(ImmutableList.of(new OreConfiguration.TargetBlockState(p_161008_, p_161009_)), p_161010_, p_161011_);
   }

   public OreConfiguration(RuleTest p_67843_, BlockState p_67844_, int p_67845_) {
      this(ImmutableList.of(new OreConfiguration.TargetBlockState(p_67843_, p_67844_)), p_67845_, 0.0F);
   }

   public static OreConfiguration.TargetBlockState target(RuleTest p_161022_, BlockState p_161023_) {
      return new OreConfiguration.TargetBlockState(p_161022_, p_161023_);
   }

   public static final class Predicates {
      public static final RuleTest NATURAL_STONE = new TagMatchTest(BlockTags.BASE_STONE_OVERWORLD);
      public static final RuleTest STONE_ORE_REPLACEABLES = new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES);
      public static final RuleTest DEEPSLATE_ORE_REPLACEABLES = new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES);
      public static final RuleTest NETHERRACK = new BlockMatchTest(Blocks.NETHERRACK);
      public static final RuleTest NETHER_ORE_REPLACEABLES = new TagMatchTest(BlockTags.BASE_STONE_NETHER);
   }

   public static class TargetBlockState {
      public static final Codec<OreConfiguration.TargetBlockState> CODEC = RecordCodecBuilder.create((p_161039_) -> {
         return p_161039_.group(RuleTest.CODEC.fieldOf("target").forGetter((p_161043_) -> {
            return p_161043_.target;
         }), BlockState.CODEC.fieldOf("state").forGetter((p_161041_) -> {
            return p_161041_.state;
         })).apply(p_161039_, OreConfiguration.TargetBlockState::new);
      });
      public final RuleTest target;
      public final BlockState state;

      TargetBlockState(RuleTest p_161036_, BlockState p_161037_) {
         this.target = p_161036_;
         this.state = p_161037_;
      }
   }
}

 

And this is the only code snippet that I can recognize to be part of the netherite:

   public OreConfiguration(RuleTest p_67843_, BlockState p_67844_, int p_67845_) {
      this(ImmutableList.of(new OreConfiguration.TargetBlockState(p_67843_, p_67844_)), p_67845_, 0.0F);
   }

 

Edited by Gianka1485
Posted

 

For those who still don't have the code working, this was the solution I made to my project:

 

The config:

public class ExampleConfig {
    public static final Builder BUILDER = new Builder();
    public static final ForgeConfigSpec SPEC;
    public static final ConfigValue<Boolean> EXAMPLE_ORE_GENERATION;
    public static final ConfigValue<Integer> EXAMPLE_ORE_SIZE;
    public static final ConfigValue<Integer> EXAMPLE_ORE_MIN_HEIGHT;
    public static final ConfigValue<Integer> EXAMPLE_ORE_MAX_HEIGHT;
    public static final ConfigValue<Integer> EXAMPLE_ORE_CHANCE;

    public ExampleConfig() {
    }

    static {
        BUILDER.push("Example ore generation");
        EXAMPLE_ORE_GENERATION = BUILDER.define("Generate example ore", true);
        EXAMPLE_ORE_SIZE = BUILDER.define("Example ore vein size", 4);
        EXAMPLE_ORE_MIN_HEIGHT = BUILDER.define("Minimum example ore generation height", 0);
        EXAMPLE_ORE_MAX_HEIGHT = BUILDER.define("Maximum example ore generation height", 16);
        EXAMPLE_ORE_CHANCE = BUILDER.define("Chance of generate example ore", 1);
        BUILDER.pop();
        SPEC = BUILDER.build();
    }
}

 

The OreGeneration:

@EventBusSubscriber
public class OreGeneration {
    public static ImmutableList<TargetBlockState> EXAMPLE_ORE_TARGET_LIST;
    public static ConfiguredFeature<?, ?> EXAMPLE_ORE;

    public OreGeneration() {
    }

    public static void registerConfiguredFeatures() {
        EXAMPLE_ORE_TARGET_LIST = ImmutableList.of(OreConfiguration.target(Predicates.NATURAL_STONE, ((Block) ExampleBlocks.EXAMPLE_ORE.get()).defaultBlockState()), OreConfiguration.target(Predicates.STONE_ORE_REPLACEABLES, ((Block) ExampleBlocks.EXAMPLE_ORE.get()).defaultBlockState()));
        EXAMPLE_ORE = (ConfiguredFeature)((ConfiguredFeature)((ConfiguredFeature) Feature.ORE.configured(new OreConfiguration(EXAMPLE_ORE_TARGET_LIST, (Integer) ExampleConfig.EXAMPLE_ORE_SIZE.get())).rangeUniform(VerticalAnchor.absolute((Integer) ExampleConfig.EXAMPLE_ORE_MIN_HEIGHT.get()), VerticalAnchor.absolute((Integer) ExampleConfig.EXAMPLE_ORE_MAX_HEIGHT.get()))).squared()).count((Integer) ExampleConfig.EXAMPLE_ORE_CHANCE.get());
        Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, new ResourceLocation("examplemod", "example_ore"), EXAMPLE_ORE);
    }

    @SubscribeEvent(priority = EventPriority.HIGH)
    public static void registerBiomeModification(BiomeLoadingEvent event) {
        registerConfiguredFeatures();
        event.getGeneration().getFeatures(Decoration.UNDERGROUND_ORES).add(() -> {
            return EXAMPLE_ORE;
        });
    }
}

 

The Main:

@Mod(Example.modid)
public class Example {
    public static Example instance;
    public static final String modid = "examplemod";
    private static final Logger LOGGER = LogManager.getLogger("examplemod");
    public static final CreativeModeTab gworld = new GWorldTab();

    public Examle() {
        instance = this;

        ExampleBlocks.BLOCKS.register(FMLJavaModLoadingContext.get().getModEventBus());
        ExampleItems.ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus());

        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientSetup);

        ModLoadingContext.get().registerConfig(Type.COMMON, ExampleConfig.SPEC, "example-common.toml");

        MinecraftForge.EVENT_BUS.register(this);
    }

    private void setup(final FMLCommonSetupEvent event) {
        OreGeneration.registerConfiguredFeatures();
        LOGGER.info("Hello from preinit");
        LOGGER.info("Dirt block >> {}", Blocks.DIAMOND_ORE.getRegistryName());
    }

    @OnlyIn(Dist.CLIENT)
    public void clientSetup(FMLClientSetupEvent event) {
        LOGGER.info("Hello from client setup");
    }

    @SubscribeEvent
    public void serverStarting(FMLServerStartingEvent event) {
        LOGGER.info("Hello from server starting");
    }

    @EventBusSubscriber(bus = Bus.MOD)
    public static class RegistryEvents {
        public RegistryEvents() {
        }

        @SubscribeEvent
        public static void registerBlocks(final RegistryEvent.Register<Block> event) {
            LOGGER.info("Hello from Register Block");
        }
    }
}

 

Posted
10 minutes ago, Luis_ST said:

why did you call registerConfiguredFeatures inside of BiomeLoadingEvent and FMLCommonSetupEvent,
you should only call it in FMLCommonSetupEvent

 

The mineral or mineral list is not generated if I remove "registerConfiguredFeatures" from "BiomeLoadingEvent"

Posted

 

6 minutes ago, diesieben07 said:

What on earth does that sentence mean?

The thing is that BiomeLoadingEvent fires more than once, so it is not at all the correct place to register things.

Sorry, the google translator.

 

Posted
18 minutes ago, diesieben07 said:

What on earth does that sentence mean?

The thing is that BiomeLoadingEvent fires more than once, so it is not at all the correct place to register things.

If I start the minecraft client without "registerConfiguredFeatures" in "BiomeLoadingEvent", minecraft crashes .... XD

Posted (edited)
11 minutes ago, diesieben07 said:

Did you do it in FMLCommonSetupEvent#enqueueWork like you were told?

Yes, but it seems that the cause was a conflict in the run / config / ". Toml" files.

Edited by Gianka1485
Posted
31 minutes ago, diesieben07 said:

Did you do it in FMLCommonSetupEvent#enqueueWork like you were told?

After a while searching, I concluded that if in the vein size section, a value is set <4 then the mineral is not generated, and that it is not necessary to have "registerConfiguredFeatures" in "BiomeLoadingEvent".

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Add crash-reports with sites like https://mclo.gs/ Make a test without any mods - just Forge If this works, add the mods in groups   Or use a pre-configured modpack as working base and add new mods one by one
    • Groovy Mod Loader Balanced Flight Ring Ferritcore immediatelyfast modernfix Supplementaries (by MehVahdJukaar) MrCrayfish's Furniture Mod: Refurbished (by MrCrayfish) Essential Mod (by SparkUniverse_) Create: Power Loader (by Lysine) Create: Estrogen (by Mayaqq) MrCrayfish's Furniture Mod (Legacy) (by MrCrayfish) Another Furniture (by Starfish_Studios) Create Slice & Dice (by possible_triangle) Create Big Cannons (by rbasamoyai) Curios API (Forge/NeoForge) (by TheIllusiveC4) Towns and Towers (by Biban_Auriu) Biomes O' Plenty (by Forstride) Mekanism Tools (by bradyaidanc) FramedBlocks (by XFactHD) EMI Trades (Villager Trading EMI Plugin) (by fzzyhmstrs) Just Enough Effect Descriptions (JEED) (by MehVahdJukaar) EMI Ores (by Abbie34) EMI Loot (by fzzyhmstrs) YUNG's Menu Tweaks (Forge) (by YUNGNICKYOUNG) ReForgedPlay [replay mod on (neo)forge] (by Ferri_Arnus) Framework (by MrCrayfish) Create : New Furnitures (by arginou57) SuperMartijn642's Core Lib (by SuperMartijn642) Create: Interiors (by syslev) Cristel Lib (by Cristelknight) Entity Culling Fabric/Forge (by tr7zw) Create Chunkloading (by embeddedt) Create Deco (by talrey) Traveler's Backpack (by Tiviacz1337) Create: The Factory Must Grow (by Dr_Mango_Tea) Valkyrien Skies (Forge/Fabric) (by triode_) Mouse Tweaks (by YaLTeR) AddonsLib (by Samlegamer_) GeckoLib (by Gecko) Eureka! Ships! for Valkyrien Skies (Forge/Fabric) (by rubydesic) GraveStone Mod (by henkelmax) Storage Drawers (by Texelsaur) Create Central Kitchen (by DragonsPlus) Roughly Enough Resources (by theorbagain) Ad Astra Extra (by NotTouchedGrass) Immersive Engineering (by BluSunrize) AppleSkin (by squeek502) Create Crafts & Additions (by MRHminer) EMI (by EmilyPloszaj) Create: Balanced Flight (Angel Ring) (by Txni) Mekanism (by bradyaidanc) Create Sifting (by oierbravo_mc) FTB Ultimine (Forge) (by FTB) Create Railways Navigator (by MrJulsen) Just Enough Professions (JEP) (by Mrbysco) Motschen's Better Leaves (by Motschen) Tom's Simple Storage Mod (by tom54541) Carry On (by Tschipp) SuperMartijn642's Config Lib (by SuperMartijn642) Create Sabers (by Leroidesafk) Architectury API (by shedaniel) Create: Connected (by Lysine) Quark (by Vazkii) Just Enough Mekanism Multiblocks (by gisellevonbingen) Roughly Enough Professions (REP) (by Mrbysco) Quark Oddities (by Vazkii) Oculus (by Asek3) Macaw's Paths and Pavings (by sketch_macaw) FTB Quests (Forge) (by FTB) Midnighttigger's Default Connected Textures (by Midnighttigger) Just Enough Resources (JER) (by way2muchnoise) TerraBlender (Forge) (by TheAdubbz) Jade Addons (Neo/Forge) (by Snownee) Create: Copycats+ (by Lysine) Midnighttigger's Default Connected Textures Addons (by Midnighttigger) Chipped (by terrariumearth) Macaw's Stairs (by sketch_macaw) Immersive UI (by SSKirillSS) Fzzy Config (by fzzyhmstrs) Petrolpark Library (by Petrolpark) CreativeCore (by CreativeMD) EMIffect (Status Effects EMI Plugin) (by fzzyhmstrs) M.R.U (by IMB11) Xaero's World Map (by xaero96) Applied Energistics 2 (by thetechnici4n) Farmer's Delight (by vectorwing) YUNG's Better Jungle Temples (Forge) (by YUNGNICKYOUNG) Macaw's Doors (by sketch_macaw) Moderately Enough Effect Descriptions (MEED) (by NeonCranberries) Fusion (Connected Textures) (by SuperMartijn642) Dynamic Trees (by MaxHyper) [ARCHIVED] Create: Design n' Decor (by MilkyFur) Cosmic Horizons (by Cosmic_Horizons_or_DEATH_or_Manya) Nosiphus Furniture Mod (by Nosiphus) Just Enough Items (JEI) (by mezz) Zeta (by Vazkii) Skin Layers 3D (Fabric/Forge) (by tr7zw) Create (by simibubi) Create Jetpack (by possible_triangle) Not Enough Recipe Book [NERB] (by SSKirillSS) Immersive Paintings [Fabric/Forge] (by Conczin) Macaw's Lights and Lamps (by sketch_macaw) Ad Astra: Giselle Addon (by gisellevonbingen) Immersive Aircraft [Fabric/Forge] (by Conczin) FTB Teams (Forge) (by FTB) Ad Astra (by AlexNijjar) Athena (by CodexAdrian) AmbientSounds 6 (by CreativeMD) Distant Horizons: A Level of Detail mod (by James_Seibel) ModernFix (by embeddedt) Macaw's Quark (by Samlegamer_) Falling Leaves (NeoForge/Forge) (by Cheaterpaul) [ETF] Entity Texture Features - [Fabric & Forge] (by Traben) YUNG's Extras (Forge) (by YUNGNICKYOUNG) EMI: Create Schematics (by LiukRast) Ad Astra: Rocketed (by celsiusqc) Macaw's Holidays (by sketch_macaw) Destroy (by Petrolpark) Create: Broken Bad (by jetpacker06) Balm (by BlayTheNinth) Complementary Shaders - Reimagined (by EminGT) YUNG's Better Desert Temples (Forge) (by YUNGNICKYOUNG) Petrol's Parts (Create add-on) (by Petrolpark) Grappling Hook Mod (by yyonne) Create Questing (by ElocinDev) Nature's Compass (by Chaosyr) YUNG's Better Dungeons (Forge) (by YUNGNICKYOUNG) EMI Enchanting (by fzzyhmstrs) Macaw's Furniture (by sketch_macaw) Resourceful Config (by ThatGravyBoat) Sophisticated Backpacks (by P3pp3rF1y) Rechiseled: Create (by SuperMartijn642) Cloth Config API (Fabric/Forge/NeoForge) (by shedaniel) Searchables (by Jaredlll08) Paladin's Furniture (by UnlikePaladin) Enchantment Descriptions (by DarkhaxDev) Waystones (by BlayTheNinth) Immersive Melodies [Fabric/Forge] (by Conczin) Sound Physics Remastered (by henkelmax) Jade 🔍 (by Snownee) YUNG's Better Mineshafts (Forge) (by YUNGNICKYOUNG) Create: Bells & Whistles (by syslev) Complementary Shaders - Unbound (by EminGT) GroovyModLoader (GML) (by matyrobbrt) Moonlight Lib (by MehVahdJukaar) Simple Planes (Forge) (by przemykomo) GlitchCore (by TheAdubbz) Sounds (by IMB11) Sophisticated Core (by P3pp3rF1y) Simple Voice Chat (by henkelmax) Macaw's Fences and Walls (by sketch_macaw) YUNG's Better Witch Huts (Forge) (by YUNGNICKYOUNG) Creeper Overhaul (by joosh_7889) Mantle (by mDiyo) Macaw's Trapdoors (by sketch_macaw) Clumps (by Jaredlll08) YUNG's Better Ocean Monuments (Forge) (by YUNGNICKYOUNG) Freecam (by hashalite) YUNG's API (Forge) (by YUNGNICKYOUNG) Create Stuff & Additions (by Furti_Two) Controlling (by Jaredlll08) Fresh Animations Extensions (by FreshLX) Macaw's Bridges (by sketch_macaw) [EMF] Entity Model Features [Fabric & Forge] (by Traben) Xaero's Minimap (by xaero96) Create: New Age (by nullBlade) Mekanism Generators (by bradyaidanc) YUNG's Bridges (Forge) (by YUNGNICKYOUNG) Create: Dynamic Village (by syslev) ImmediatelyFast (by RaphiMC) Supplementaries Squared (by plantspookable) Create Ore Excavation (by tom54541) Macaw's Biomes O' Plenty (by Samlegamer_) Fancy Crops (by bebebea_loste) YUNG's Better Nether Fortresses (Forge) (by YUNGNICKYOUNG) OctoLib (by SSKirillSS) Clockwork: Create x Valkyrien Skies (by rubydesic) Fresh Animations (by FreshLX) BSL Shaders (by capttatsu) Not Enough Crashes (Forge) (by NatanFudge) Guard Villagers (by almightytallestred) Create: Numismatics (by IThundxr) FerriteCore ((Neo)Forge) (by malte0811) Kotlin for Forge (by thedarkcolour) YUNG's Cave Biomes (Forge) (by YUNGNICKYOUNG) Do a Barrel Roll (by enjarai) [DISCONTINUED] Macaw's Fences - Biomes O' Plenty (by Samlegamer_) Create Recycle Everything (by nocubeyt) Eating Animation [Neo/Forge] (by matyrobbrt) Roughly Enough Items Fabric/Forge/NeoForge (REI) (by shedaniel) YUNG's Better End Island (Forge) (by YUNGNICKYOUNG) Create: Steam 'n' Rails (by IThundxr) [DISCONTINUED] Macaw's Furnitures - Biomes O' Plenty (by Samlegamer_) Amendments (by plantspookable) Botarium (by CodexAdrian) YUNG's Better Strongholds (Forge) (by YUNGNICKYOUNG) Tinkers Construct (by mDiyo) Macaw's Paintings (by sketch_macaw) Create Enchantment Industry (by DragonsPlus) EMI Enchants (by mephodio) FTB Library (Forge) (by FTB) Xaero's Minimap & World Map - Waystones Compatibility [Forge] (by ArcaneAlloy) MakeUp - Ultra Fast | Shaders (by XavierFST) Create Confectionery (by Furti_Two) Create : Creating Space (by RealAntEngineer) Macaw's Roofs (by sketch_macaw) Bookshelf (by DarkhaxDev) Resourceful Lib (by ThatGravyBoat) Rechiseled (by SuperMartijn642) Macaw's Windows (by sketch_macaw) AutoRegLib (by Vazkii)  
    • I was playing and I noticed that I am not able to see my custom skin. At first I thought it was due to some mod but after removing all of them and there being no change I thought about changing the installation version. change the dns, change the version of the game, check my skin on the minecraft website and I still don't get anything. I would appreciate if you could help me. PD: I play in a singleplayer world
    • [02Mar2025 16:29:54.177] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--username, FoxyWoxy12000_YT, --version, forge-47.3.0, --gameDir, C:\Users\Ben\curseforge\minecraft\Instances\Create test, --assetsDir, C:\Users\Ben\curseforge\minecraft\Install\assets, --assetIndex, 5, --uuid, ab9d20fa8970404abcb2697e3272197b, --accessToken, ????????, --clientId, YmJhMTk4NWEtNGRjMi00MzA4LWE0YzAtMjAzZGE4YzM0N2Qx, --xuid, 2535440256104324, --userType, msa, --versionType, release, --width, 1024, --height, 768, --quickPlayPath, C:\Users\Ben\curseforge\minecraft\Install\quickPlay\java\1740961792338.json, --launchTarget, forgeclient, --fml.forgeVersion, 47.3.0, --fml.mcVersion, 1.20.1, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20230612.114412] [02Mar2025 16:29:54.180] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 10.0.9+10.0.9+main.dcd20f30 starting: java version 17.0.8 by Microsoft; OS Windows 10 arch amd64 version 10.0 [02Mar2025 16:29:57.544] [main/INFO] [net.minecraftforge.fml.loading.ImmediateWindowHandler/]: Loading ImmediateWindowProvider fmlearlywindow [02Mar2025 16:29:57.669] [main/INFO] [EARLYDISPLAY/]: Trying GL version 4.6 [02Mar2025 16:29:57.804] [main/INFO] [EARLYDISPLAY/]: Requested GL version 4.6 got version 4.6 [02Mar2025 16:29:58.003] [pool-2-thread-1/INFO] [EARLYDISPLAY/]: GL info: NVIDIA GeForce RTX 3070/PCIe/SSE2 GL version 4.6.0 NVIDIA 572.60, NVIDIA Corporation [02Mar2025 16:29:58.635] [main/INFO] [gg.essential.loader.stage1.EssentialLoaderBase/]: Starting Essential Loader (stage2) version 1.6.3 (285f951adc7537f49ae3ef9fc0d2fd3e) [stable] [02Mar2025 16:29:58.691] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/C:/Users/Ben/curseforge/minecraft/Install/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%23100!/ Service=ModLauncher Env=CLIENT [02Mar2025 16:30:00.036] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file C:\Users\Ben\curseforge\minecraft\Install\libraries\net\minecraftforge\fmlcore\1.20.1-47.3.0\fmlcore-1.20.1-47.3.0.jar is missing mods.toml file [02Mar2025 16:30:00.185] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file C:\Users\Ben\curseforge\minecraft\Install\libraries\net\minecraftforge\javafmllanguage\1.20.1-47.3.0\javafmllanguage-1.20.1-47.3.0.jar is missing mods.toml file [02Mar2025 16:30:00.248] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file C:\Users\Ben\curseforge\minecraft\Install\libraries\net\minecraftforge\lowcodelanguage\1.20.1-47.3.0\lowcodelanguage-1.20.1-47.3.0.jar is missing mods.toml file [02Mar2025 16:30:00.329] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file C:\Users\Ben\curseforge\minecraft\Install\libraries\net\minecraftforge\mclanguage\1.20.1-47.3.0\mclanguage-1.20.1-47.3.0.jar is missing mods.toml file [02Mar2025 16:30:00.992] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File:  and Mod File: . Using Mod File: [02Mar2025 16:30:00.993] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: cloth_config. Using Mod File: C:\Users\Ben\curseforge\minecraft\Instances\Create test\mods\cloth-config-11.1.136-forge.jar [02Mar2025 16:30:00.993] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: resourcefullib. Using Mod File: C:\Users\Ben\curseforge\minecraft\Instances\Create test\mods\resourcefullib-forge-1.20.1-2.1.29.jar [02Mar2025 16:30:00.993] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: architectury. Using Mod File: C:\Users\Ben\curseforge\minecraft\Instances\Create test\mods\architectury-9.2.14-forge.jar [02Mar2025 16:30:00.993] [main/INFO] [net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator/]: Found 47 dependencies adding them to mods collection [02Mar2025 16:30:01.064] [main/INFO] [gg.essential.loader.stage2.util.KFFMerger/]: Found Kotlin-containing mod Jar[union:/C:/Users/Ben/curseforge/minecraft/Instances/Create%20test/essential/libraries/forge_1.20.1/kotlin-for-forge-4.3.0-slim.jar%23290!/], checking whether we need to upgrade it.. [02Mar2025 16:30:01.066] [main/INFO] [gg.essential.loader.stage2.util.KFFMerger/]: Found outdated Kotlin core libs 0.0.0 (we ship 1.9.23) [02Mar2025 16:30:01.066] [main/INFO] [gg.essential.loader.stage2.util.KFFMerger/]: Found outdated Kotlin Coroutines libs 0.0.0 (we ship 1.8.0) [02Mar2025 16:30:01.066] [main/INFO] [gg.essential.loader.stage2.util.KFFMerger/]: Found outdated Kotlin Serialization libs 0.0.0 (we ship 1.6.3) [02Mar2025 16:30:01.068] [main/INFO] [gg.essential.loader.stage2.util.KFFMerger/]: Generating jar with updated Kotlin at C:\Users\Ben\AppData\Local\Temp\kff-updated-kotlin-13013640000098263993-4.3.0-slim.jar [02Mar2025 16:30:01.858] [main/INFO] [gg.essential.loader.stage2.util.KFFMerger/]: Found Kotlin-containing mod Jar[union:/C:/Users/Ben/curseforge/minecraft/Instances/Create%20test/mods/kotlinforforge-4.11.0-all.jar%23355!/], checking whether we need to upgrade it.. [02Mar2025 16:30:01.863] [main/INFO] [gg.essential.loader.stage2.util.KFFMerger/]: Found up-to-date Kotlin core libs 2.0.0 (we ship 1.9.23) [02Mar2025 16:30:01.863] [main/INFO] [gg.essential.loader.stage2.util.KFFMerger/]: Found up-to-date Kotlin Coroutines libs 1.8.1 (we ship 1.8.0) [02Mar2025 16:30:01.863] [main/INFO] [gg.essential.loader.stage2.util.KFFMerger/]: Found up-to-date Kotlin Serialization libs 1.6.3 (we ship 1.6.3) [02Mar2025 16:30:01.863] [main/INFO] [gg.essential.loader.stage2.util.KFFMerger/]: All good, no update needed: Jar[union:/C:/Users/Ben/curseforge/minecraft/Instances/Create%20test/mods/kotlinforforge-4.11.0-all.jar%23355!/] [02Mar2025 16:30:04.476] [main/INFO] [mixin/]: Compatibility level set to JAVA_17 [02Mar2025 16:30:04.563] [main/ERROR] [mixin/]: Mixin config entity_model_features.mixins.json does not specify "minVersion" property [02Mar2025 16:30:04.657] [main/ERROR] [mixin/]: Mixin config roughlyenoughresources.mixins.json does not specify "minVersion" property [02Mar2025 16:30:04.669] [main/ERROR] [mixin/]: Mixin config rei.mixins.json does not specify "minVersion" property [02Mar2025 16:30:04.718] [main/INFO] [cpw.mods.modlauncher.LaunchServiceHandler/MODLAUNCHER]: Launching target 'forgeclient' with arguments [--version, forge-47.3.0, --gameDir, C:\Users\Ben\curseforge\minecraft\Instances\Create test, --assetsDir, C:\Users\Ben\curseforge\minecraft\Install\assets, --uuid, ab9d20fa8970404abcb2697e3272197b, --username, FoxyWoxy12000_YT, --assetIndex, 5, --accessToken, ????????, --clientId, YmJhMTk4NWEtNGRjMi00MzA4LWE0YzAtMjAzZGE4YzM0N2Qx, --xuid, 2535440256104324, --userType, msa, --versionType, release, --width, 1024, --height, 768, --quickPlayPath, C:\Users\Ben\curseforge\minecraft\Install\quickPlay\java\1740961792338.json] [02Mar2025 16:30:04.761] [main/WARN] [mixin/]: Reference map 'createdeco-forge-refmap.json' for createdeco.mixins.json could not be read. If this is a development environment you can ignore this message [02Mar2025 16:30:04.848] [main/INFO] [ModernFix/]: Loaded configuration file for ModernFix 5.20.2+mc1.20.1: 87 options available, 0 override(s) found [02Mar2025 16:30:04.849] [main/INFO] [ModernFix/]: Applying Nashorn fix [02Mar2025 16:30:04.862] [main/INFO] [ModernFix/]: Applied Forge config corruption patch [02Mar2025 16:30:05.025] [main/WARN] [mixin/]: Reference map 'yungsextras.refmap.json' for yungsextras.mixins.json could not be read. If this is a development environment you can ignore this message [02Mar2025 16:30:05.027] [main/WARN] [mixin/]: Reference map 'yungsextras.refmap.json' for yungsextras_forge.mixins.json could not be read. If this is a development environment you can ignore this message [02Mar2025 16:30:05.063] [main/INFO] [Essential Logger - Plugin/]: Starting Essential v1.3.5.8 (#9e33c385e4) [stable] [02Mar2025 16:30:05.124] [main/WARN] [mixin/]: Reference map 'create_questing.refmap.json' for create_questing.mixins.json could not be read. If this is a development environment you can ignore this message [02Mar2025 16:30:05.146] [main/WARN] [mixin/]: Reference map 'tfmg.refmap.json' for design_decor.mixins.json could not be read. If this is a development environment you can ignore this message [02Mar2025 16:30:05.159] [main/WARN] [mixin/]: Reference map 'tfmg.refmap.json' for tfmg.mixins.json could not be read. If this is a development environment you can ignore this message [02Mar2025 16:30:05.357] [main/WARN] [mixin/]: Reference map 'eureka-1201-forge-refmap.json' for vs_eureka.mixins.json could not be read. If this is a development environment you can ignore this message [02Mar2025 16:30:05.368] [main/WARN] [mixin/]: Reference map 'cristellib-forge-refmap.json' for cristellib.mixins.json could not be read. If this is a development environment you can ignore this message There is literally nothing of importance here please help. Please ask if you need anything to help!
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.