Compare commits
9 commits
Author | SHA1 | Date | |
---|---|---|---|
cd65aad863 | |||
1f8aecf005 | |||
2df40d6469 | |||
6a5803f2f7 | |||
24e5b415df | |||
af3e0db95d | |||
a6be8bbcac | |||
6610ec420b | |||
c45acb2e99 |
24 changed files with 481 additions and 181 deletions
|
@ -9,7 +9,7 @@ org.gradle.jvmargs=-Xmx1G
|
||||||
kotlin_loader_version=1.13.0+kotlin.2.1.0
|
kotlin_loader_version=1.13.0+kotlin.2.1.0
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version = 2.0+1.19.3-1.19.4
|
mod_version = 3.0+1.19.3-1.19.4
|
||||||
maven_group = observer.nelle
|
maven_group = observer.nelle
|
||||||
archives_base_name = roses_mod
|
archives_base_name = roses_mod
|
||||||
|
|
||||||
|
|
|
@ -23,9 +23,6 @@ public class RosesPlacedFeatures {
|
||||||
public static final RegistryKey<PlacedFeature> cyanRoseRarerPlacedKey = registerKey("cyan_rose_rare_placed");
|
public static final RegistryKey<PlacedFeature> cyanRoseRarerPlacedKey = registerKey("cyan_rose_rare_placed");
|
||||||
public static final RegistryKey<PlacedFeature> roseRarerPlacedKey = registerKey("rose_rare_placed");
|
public static final RegistryKey<PlacedFeature> roseRarerPlacedKey = registerKey("rose_rare_placed");
|
||||||
|
|
||||||
public static final RegistryKey<PlacedFeature> cyanRoseCommonPlacedKey = registerKey("cyan_rose_common_placed");
|
|
||||||
public static final RegistryKey<PlacedFeature> roseCommonPlacedKey = registerKey("rose_common_placed");
|
|
||||||
|
|
||||||
public static void bootstrap(Registerable<PlacedFeature> context) {
|
public static void bootstrap(Registerable<PlacedFeature> context) {
|
||||||
var configuredFeatures = context.getRegistryLookup(RegistryKeys.CONFIGURED_FEATURE);
|
var configuredFeatures = context.getRegistryLookup(RegistryKeys.CONFIGURED_FEATURE);
|
||||||
|
|
||||||
|
@ -61,19 +58,6 @@ public class RosesPlacedFeatures {
|
||||||
SquarePlacementModifier.of(),
|
SquarePlacementModifier.of(),
|
||||||
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
||||||
BiomePlacementModifier.of());
|
BiomePlacementModifier.of());
|
||||||
|
|
||||||
// more common
|
|
||||||
register(context, cyanRoseCommonPlacedKey, configuredFeatures.getOrThrow(RosesConfiguredFeatures.cyanRoseKey),
|
|
||||||
RarityFilterPlacementModifier.of(45),
|
|
||||||
SquarePlacementModifier.of(),
|
|
||||||
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
|
||||||
BiomePlacementModifier.of());
|
|
||||||
|
|
||||||
register(context, roseCommonPlacedKey, configuredFeatures.getOrThrow(RosesConfiguredFeatures.roseKey),
|
|
||||||
RarityFilterPlacementModifier.of(4),
|
|
||||||
SquarePlacementModifier.of(),
|
|
||||||
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
|
||||||
BiomePlacementModifier.of());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static RegistryKey<PlacedFeature> registerKey(String name) {
|
public static RegistryKey<PlacedFeature> registerKey(String name) {
|
||||||
|
|
|
@ -90,6 +90,12 @@ object RosesVegetationGeneration {
|
||||||
BiomeKeys.ICE_SPIKES,
|
BiomeKeys.ICE_SPIKES,
|
||||||
BiomeKeys.DRIPSTONE_CAVES,
|
BiomeKeys.DRIPSTONE_CAVES,
|
||||||
BiomeKeys.DEEP_DARK,
|
BiomeKeys.DEEP_DARK,
|
||||||
|
BiomeKeys.JUNGLE,
|
||||||
|
BiomeKeys.BAMBOO_JUNGLE,
|
||||||
|
BiomeKeys.SPARSE_JUNGLE,
|
||||||
|
BiomeKeys.SAVANNA,
|
||||||
|
BiomeKeys.SAVANNA_PLATEAU,
|
||||||
|
BiomeKeys.WINDSWEPT_SAVANNA,
|
||||||
),
|
),
|
||||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||||
RosesPlacedFeatures.cyanRoseRarerPlacedKey,
|
RosesPlacedFeatures.cyanRoseRarerPlacedKey,
|
||||||
|
@ -113,36 +119,15 @@ object RosesVegetationGeneration {
|
||||||
BiomeKeys.ICE_SPIKES,
|
BiomeKeys.ICE_SPIKES,
|
||||||
BiomeKeys.DRIPSTONE_CAVES,
|
BiomeKeys.DRIPSTONE_CAVES,
|
||||||
BiomeKeys.DEEP_DARK,
|
BiomeKeys.DEEP_DARK,
|
||||||
|
BiomeKeys.JUNGLE,
|
||||||
|
BiomeKeys.BAMBOO_JUNGLE,
|
||||||
|
BiomeKeys.SPARSE_JUNGLE,
|
||||||
|
BiomeKeys.SAVANNA,
|
||||||
|
BiomeKeys.SAVANNA_PLATEAU,
|
||||||
|
BiomeKeys.WINDSWEPT_SAVANNA,
|
||||||
),
|
),
|
||||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||||
RosesPlacedFeatures.roseRarerPlacedKey,
|
RosesPlacedFeatures.roseRarerPlacedKey,
|
||||||
)
|
)
|
||||||
|
|
||||||
// more common
|
|
||||||
BiomeModifications.addFeature(
|
|
||||||
BiomeSelectors.includeByKey(
|
|
||||||
BiomeKeys.JUNGLE,
|
|
||||||
BiomeKeys.BAMBOO_JUNGLE,
|
|
||||||
BiomeKeys.SPARSE_JUNGLE,
|
|
||||||
BiomeKeys.SAVANNA,
|
|
||||||
BiomeKeys.SAVANNA_PLATEAU,
|
|
||||||
BiomeKeys.WINDSWEPT_SAVANNA,
|
|
||||||
),
|
|
||||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
|
||||||
RosesPlacedFeatures.cyanRoseCommonPlacedKey,
|
|
||||||
)
|
|
||||||
|
|
||||||
BiomeModifications.addFeature(
|
|
||||||
BiomeSelectors.includeByKey(
|
|
||||||
BiomeKeys.JUNGLE,
|
|
||||||
BiomeKeys.BAMBOO_JUNGLE,
|
|
||||||
BiomeKeys.SPARSE_JUNGLE,
|
|
||||||
BiomeKeys.SAVANNA,
|
|
||||||
BiomeKeys.SAVANNA_PLATEAU,
|
|
||||||
BiomeKeys.WINDSWEPT_SAVANNA,
|
|
||||||
),
|
|
||||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
|
||||||
RosesPlacedFeatures.roseCommonPlacedKey,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,9 +23,6 @@ public class RosesPlacedFeatures {
|
||||||
public static final RegistryKey<PlacedFeature> cyanRoseRarerPlacedKey = registerKey("cyan_rose_rare_placed");
|
public static final RegistryKey<PlacedFeature> cyanRoseRarerPlacedKey = registerKey("cyan_rose_rare_placed");
|
||||||
public static final RegistryKey<PlacedFeature> roseRarerPlacedKey = registerKey("rose_rare_placed");
|
public static final RegistryKey<PlacedFeature> roseRarerPlacedKey = registerKey("rose_rare_placed");
|
||||||
|
|
||||||
public static final RegistryKey<PlacedFeature> cyanRoseCommonPlacedKey = registerKey("cyan_rose_common_placed");
|
|
||||||
public static final RegistryKey<PlacedFeature> roseCommonPlacedKey = registerKey("rose_common_placed");
|
|
||||||
|
|
||||||
public static void bootstrap(Registerable<PlacedFeature> context) {
|
public static void bootstrap(Registerable<PlacedFeature> context) {
|
||||||
var configuredFeatures = context.getRegistryLookup(RegistryKeys.CONFIGURED_FEATURE);
|
var configuredFeatures = context.getRegistryLookup(RegistryKeys.CONFIGURED_FEATURE);
|
||||||
|
|
||||||
|
@ -61,19 +58,6 @@ public class RosesPlacedFeatures {
|
||||||
SquarePlacementModifier.of(),
|
SquarePlacementModifier.of(),
|
||||||
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
||||||
BiomePlacementModifier.of());
|
BiomePlacementModifier.of());
|
||||||
|
|
||||||
// more common
|
|
||||||
register(context, cyanRoseCommonPlacedKey, configuredFeatures.getOrThrow(RosesConfiguredFeatures.cyanRoseKey),
|
|
||||||
RarityFilterPlacementModifier.of(45),
|
|
||||||
SquarePlacementModifier.of(),
|
|
||||||
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
|
||||||
BiomePlacementModifier.of());
|
|
||||||
|
|
||||||
register(context, roseCommonPlacedKey, configuredFeatures.getOrThrow(RosesConfiguredFeatures.roseKey),
|
|
||||||
RarityFilterPlacementModifier.of(4),
|
|
||||||
SquarePlacementModifier.of(),
|
|
||||||
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
|
||||||
BiomePlacementModifier.of());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static RegistryKey<PlacedFeature> registerKey(String name) {
|
public static RegistryKey<PlacedFeature> registerKey(String name) {
|
||||||
|
|
|
@ -90,6 +90,12 @@ object RosesVegetationGeneration {
|
||||||
BiomeKeys.ICE_SPIKES,
|
BiomeKeys.ICE_SPIKES,
|
||||||
BiomeKeys.DRIPSTONE_CAVES,
|
BiomeKeys.DRIPSTONE_CAVES,
|
||||||
BiomeKeys.DEEP_DARK,
|
BiomeKeys.DEEP_DARK,
|
||||||
|
BiomeKeys.JUNGLE,
|
||||||
|
BiomeKeys.BAMBOO_JUNGLE,
|
||||||
|
BiomeKeys.SPARSE_JUNGLE,
|
||||||
|
BiomeKeys.SAVANNA,
|
||||||
|
BiomeKeys.SAVANNA_PLATEAU,
|
||||||
|
BiomeKeys.WINDSWEPT_SAVANNA,
|
||||||
),
|
),
|
||||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||||
RosesPlacedFeatures.cyanRoseRarerPlacedKey,
|
RosesPlacedFeatures.cyanRoseRarerPlacedKey,
|
||||||
|
@ -113,36 +119,15 @@ object RosesVegetationGeneration {
|
||||||
BiomeKeys.ICE_SPIKES,
|
BiomeKeys.ICE_SPIKES,
|
||||||
BiomeKeys.DRIPSTONE_CAVES,
|
BiomeKeys.DRIPSTONE_CAVES,
|
||||||
BiomeKeys.DEEP_DARK,
|
BiomeKeys.DEEP_DARK,
|
||||||
|
BiomeKeys.JUNGLE,
|
||||||
|
BiomeKeys.BAMBOO_JUNGLE,
|
||||||
|
BiomeKeys.SPARSE_JUNGLE,
|
||||||
|
BiomeKeys.SAVANNA,
|
||||||
|
BiomeKeys.SAVANNA_PLATEAU,
|
||||||
|
BiomeKeys.WINDSWEPT_SAVANNA,
|
||||||
),
|
),
|
||||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||||
RosesPlacedFeatures.roseRarerPlacedKey,
|
RosesPlacedFeatures.roseRarerPlacedKey,
|
||||||
)
|
)
|
||||||
|
|
||||||
// more common
|
|
||||||
BiomeModifications.addFeature(
|
|
||||||
BiomeSelectors.includeByKey(
|
|
||||||
BiomeKeys.JUNGLE,
|
|
||||||
BiomeKeys.BAMBOO_JUNGLE,
|
|
||||||
BiomeKeys.SPARSE_JUNGLE,
|
|
||||||
BiomeKeys.SAVANNA,
|
|
||||||
BiomeKeys.SAVANNA_PLATEAU,
|
|
||||||
BiomeKeys.WINDSWEPT_SAVANNA,
|
|
||||||
),
|
|
||||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
|
||||||
RosesPlacedFeatures.cyanRoseCommonPlacedKey,
|
|
||||||
)
|
|
||||||
|
|
||||||
BiomeModifications.addFeature(
|
|
||||||
BiomeSelectors.includeByKey(
|
|
||||||
BiomeKeys.JUNGLE,
|
|
||||||
BiomeKeys.BAMBOO_JUNGLE,
|
|
||||||
BiomeKeys.SPARSE_JUNGLE,
|
|
||||||
BiomeKeys.SAVANNA,
|
|
||||||
BiomeKeys.SAVANNA_PLATEAU,
|
|
||||||
BiomeKeys.WINDSWEPT_SAVANNA,
|
|
||||||
),
|
|
||||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
|
||||||
RosesPlacedFeatures.roseCommonPlacedKey,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,6 @@ import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.math.intprovider.ClampedIntProvider;
|
import net.minecraft.util.math.intprovider.ClampedIntProvider;
|
||||||
import net.minecraft.util.math.intprovider.UniformIntProvider;
|
import net.minecraft.util.math.intprovider.UniformIntProvider;
|
||||||
import net.minecraft.world.gen.feature.*;
|
import net.minecraft.world.gen.feature.*;
|
||||||
import net.minecraft.world.gen.placementmodifier.PlacementModifier;
|
|
||||||
import net.minecraft.world.gen.placementmodifier.*;
|
import net.minecraft.world.gen.placementmodifier.*;
|
||||||
import observer.nelle.roses.RosesModKt;
|
import observer.nelle.roses.RosesModKt;
|
||||||
|
|
||||||
|
@ -24,8 +23,6 @@ public class RosesPlacedFeatures {
|
||||||
public static final RegistryKey<PlacedFeature> cyanRoseRarerPlacedKey = registerKey("cyan_rose_rare_placed");
|
public static final RegistryKey<PlacedFeature> cyanRoseRarerPlacedKey = registerKey("cyan_rose_rare_placed");
|
||||||
public static final RegistryKey<PlacedFeature> roseRarerPlacedKey = registerKey("rose_rare_placed");
|
public static final RegistryKey<PlacedFeature> roseRarerPlacedKey = registerKey("rose_rare_placed");
|
||||||
|
|
||||||
public static final RegistryKey<PlacedFeature> cyanRoseCommonPlacedKey = registerKey("cyan_rose_common_placed");
|
|
||||||
public static final RegistryKey<PlacedFeature> roseCommonPlacedKey = registerKey("rose_common_placed");
|
|
||||||
|
|
||||||
public static void bootstrap(Registerable<PlacedFeature> context) {
|
public static void bootstrap(Registerable<PlacedFeature> context) {
|
||||||
var configuredFeatures = context.getRegistryLookup(RegistryKeys.CONFIGURED_FEATURE);
|
var configuredFeatures = context.getRegistryLookup(RegistryKeys.CONFIGURED_FEATURE);
|
||||||
|
@ -62,19 +59,6 @@ public class RosesPlacedFeatures {
|
||||||
SquarePlacementModifier.of(),
|
SquarePlacementModifier.of(),
|
||||||
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
||||||
BiomePlacementModifier.of());
|
BiomePlacementModifier.of());
|
||||||
|
|
||||||
// more common
|
|
||||||
register(context, cyanRoseCommonPlacedKey, configuredFeatures.getOrThrow(RosesConfiguredFeatures.cyanRoseKey),
|
|
||||||
RarityFilterPlacementModifier.of(45),
|
|
||||||
SquarePlacementModifier.of(),
|
|
||||||
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
|
||||||
BiomePlacementModifier.of());
|
|
||||||
|
|
||||||
register(context, roseCommonPlacedKey, configuredFeatures.getOrThrow(RosesConfiguredFeatures.roseKey),
|
|
||||||
RarityFilterPlacementModifier.of(4),
|
|
||||||
SquarePlacementModifier.of(),
|
|
||||||
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
|
||||||
BiomePlacementModifier.of());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static RegistryKey<PlacedFeature> registerKey(String name) {
|
public static RegistryKey<PlacedFeature> registerKey(String name) {
|
||||||
|
|
|
@ -90,6 +90,12 @@ object RosesVegetationGeneration {
|
||||||
BiomeKeys.ICE_SPIKES,
|
BiomeKeys.ICE_SPIKES,
|
||||||
BiomeKeys.DRIPSTONE_CAVES,
|
BiomeKeys.DRIPSTONE_CAVES,
|
||||||
BiomeKeys.DEEP_DARK,
|
BiomeKeys.DEEP_DARK,
|
||||||
|
BiomeKeys.JUNGLE,
|
||||||
|
BiomeKeys.BAMBOO_JUNGLE,
|
||||||
|
BiomeKeys.SPARSE_JUNGLE,
|
||||||
|
BiomeKeys.SAVANNA,
|
||||||
|
BiomeKeys.SAVANNA_PLATEAU,
|
||||||
|
BiomeKeys.WINDSWEPT_SAVANNA,
|
||||||
),
|
),
|
||||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||||
RosesPlacedFeatures.cyanRoseRarerPlacedKey,
|
RosesPlacedFeatures.cyanRoseRarerPlacedKey,
|
||||||
|
@ -113,36 +119,15 @@ object RosesVegetationGeneration {
|
||||||
BiomeKeys.ICE_SPIKES,
|
BiomeKeys.ICE_SPIKES,
|
||||||
BiomeKeys.DRIPSTONE_CAVES,
|
BiomeKeys.DRIPSTONE_CAVES,
|
||||||
BiomeKeys.DEEP_DARK,
|
BiomeKeys.DEEP_DARK,
|
||||||
|
BiomeKeys.JUNGLE,
|
||||||
|
BiomeKeys.BAMBOO_JUNGLE,
|
||||||
|
BiomeKeys.SPARSE_JUNGLE,
|
||||||
|
BiomeKeys.SAVANNA,
|
||||||
|
BiomeKeys.SAVANNA_PLATEAU,
|
||||||
|
BiomeKeys.WINDSWEPT_SAVANNA,
|
||||||
),
|
),
|
||||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||||
RosesPlacedFeatures.roseRarerPlacedKey,
|
RosesPlacedFeatures.roseRarerPlacedKey,
|
||||||
)
|
)
|
||||||
|
|
||||||
// more common
|
|
||||||
BiomeModifications.addFeature(
|
|
||||||
BiomeSelectors.includeByKey(
|
|
||||||
BiomeKeys.JUNGLE,
|
|
||||||
BiomeKeys.BAMBOO_JUNGLE,
|
|
||||||
BiomeKeys.SPARSE_JUNGLE,
|
|
||||||
BiomeKeys.SAVANNA,
|
|
||||||
BiomeKeys.SAVANNA_PLATEAU,
|
|
||||||
BiomeKeys.WINDSWEPT_SAVANNA,
|
|
||||||
),
|
|
||||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
|
||||||
RosesPlacedFeatures.cyanRoseCommonPlacedKey,
|
|
||||||
)
|
|
||||||
|
|
||||||
BiomeModifications.addFeature(
|
|
||||||
BiomeSelectors.includeByKey(
|
|
||||||
BiomeKeys.JUNGLE,
|
|
||||||
BiomeKeys.BAMBOO_JUNGLE,
|
|
||||||
BiomeKeys.SPARSE_JUNGLE,
|
|
||||||
BiomeKeys.SAVANNA,
|
|
||||||
BiomeKeys.SAVANNA_PLATEAU,
|
|
||||||
BiomeKeys.WINDSWEPT_SAVANNA,
|
|
||||||
),
|
|
||||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
|
||||||
RosesPlacedFeatures.roseCommonPlacedKey,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ org.gradle.jvmargs=-Xmx1G
|
||||||
kotlin_loader_version=1.13.0+kotlin.2.1.0
|
kotlin_loader_version=1.13.0+kotlin.2.1.0
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version = 3.0+1.21.2-1.21.4
|
mod_version = 3.2+1.21.2-1.21.4
|
||||||
maven_group = observer.nelle
|
maven_group = observer.nelle
|
||||||
archives_base_name = roses_mod
|
archives_base_name = roses_mod
|
||||||
|
|
||||||
|
|
|
@ -61,19 +61,6 @@ public class RosesPlacedFeatures {
|
||||||
SquarePlacementModifier.of(),
|
SquarePlacementModifier.of(),
|
||||||
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
||||||
BiomePlacementModifier.of());
|
BiomePlacementModifier.of());
|
||||||
|
|
||||||
// more common
|
|
||||||
register(context, cyanRoseCommonPlacedKey, configuredFeatures.getOrThrow(RosesConfiguredFeatures.cyanRoseKey),
|
|
||||||
RarityFilterPlacementModifier.of(45),
|
|
||||||
SquarePlacementModifier.of(),
|
|
||||||
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
|
||||||
BiomePlacementModifier.of());
|
|
||||||
|
|
||||||
register(context, roseCommonPlacedKey, configuredFeatures.getOrThrow(RosesConfiguredFeatures.roseKey),
|
|
||||||
RarityFilterPlacementModifier.of(4),
|
|
||||||
SquarePlacementModifier.of(),
|
|
||||||
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
|
||||||
BiomePlacementModifier.of());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static RegistryKey<PlacedFeature> registerKey(String name) {
|
public static RegistryKey<PlacedFeature> registerKey(String name) {
|
||||||
|
|
|
@ -90,6 +90,12 @@ object RosesVegetationGeneration {
|
||||||
BiomeKeys.ICE_SPIKES,
|
BiomeKeys.ICE_SPIKES,
|
||||||
BiomeKeys.DRIPSTONE_CAVES,
|
BiomeKeys.DRIPSTONE_CAVES,
|
||||||
BiomeKeys.DEEP_DARK,
|
BiomeKeys.DEEP_DARK,
|
||||||
|
BiomeKeys.JUNGLE,
|
||||||
|
BiomeKeys.BAMBOO_JUNGLE,
|
||||||
|
BiomeKeys.SPARSE_JUNGLE,
|
||||||
|
BiomeKeys.SAVANNA,
|
||||||
|
BiomeKeys.SAVANNA_PLATEAU,
|
||||||
|
BiomeKeys.WINDSWEPT_SAVANNA,
|
||||||
),
|
),
|
||||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||||
RosesPlacedFeatures.cyanRoseRarerPlacedKey,
|
RosesPlacedFeatures.cyanRoseRarerPlacedKey,
|
||||||
|
@ -113,36 +119,15 @@ object RosesVegetationGeneration {
|
||||||
BiomeKeys.ICE_SPIKES,
|
BiomeKeys.ICE_SPIKES,
|
||||||
BiomeKeys.DRIPSTONE_CAVES,
|
BiomeKeys.DRIPSTONE_CAVES,
|
||||||
BiomeKeys.DEEP_DARK,
|
BiomeKeys.DEEP_DARK,
|
||||||
|
BiomeKeys.JUNGLE,
|
||||||
|
BiomeKeys.BAMBOO_JUNGLE,
|
||||||
|
BiomeKeys.SPARSE_JUNGLE,
|
||||||
|
BiomeKeys.SAVANNA,
|
||||||
|
BiomeKeys.SAVANNA_PLATEAU,
|
||||||
|
BiomeKeys.WINDSWEPT_SAVANNA,
|
||||||
),
|
),
|
||||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||||
RosesPlacedFeatures.roseRarerPlacedKey,
|
RosesPlacedFeatures.roseRarerPlacedKey,
|
||||||
)
|
)
|
||||||
|
|
||||||
// more common
|
|
||||||
BiomeModifications.addFeature(
|
|
||||||
BiomeSelectors.includeByKey(
|
|
||||||
BiomeKeys.JUNGLE,
|
|
||||||
BiomeKeys.BAMBOO_JUNGLE,
|
|
||||||
BiomeKeys.SPARSE_JUNGLE,
|
|
||||||
BiomeKeys.SAVANNA,
|
|
||||||
BiomeKeys.SAVANNA_PLATEAU,
|
|
||||||
BiomeKeys.WINDSWEPT_SAVANNA,
|
|
||||||
),
|
|
||||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
|
||||||
RosesPlacedFeatures.cyanRoseCommonPlacedKey,
|
|
||||||
)
|
|
||||||
|
|
||||||
BiomeModifications.addFeature(
|
|
||||||
BiomeSelectors.includeByKey(
|
|
||||||
BiomeKeys.JUNGLE,
|
|
||||||
BiomeKeys.BAMBOO_JUNGLE,
|
|
||||||
BiomeKeys.SPARSE_JUNGLE,
|
|
||||||
BiomeKeys.SAVANNA,
|
|
||||||
BiomeKeys.SAVANNA_PLATEAU,
|
|
||||||
BiomeKeys.WINDSWEPT_SAVANNA,
|
|
||||||
),
|
|
||||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
|
||||||
RosesPlacedFeatures.roseCommonPlacedKey,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "roses_mod:item/cyan_rose"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "roses_mod:item/cyan_rose_bush"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "roses_mod:item/rose_flower"
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,12 +6,12 @@
|
||||||
"name": "Roses Mod",
|
"name": "Roses Mod",
|
||||||
"description": "Reinstates the classic roses to Minecraft.",
|
"description": "Reinstates the classic roses to Minecraft.",
|
||||||
"authors": [
|
"authors": [
|
||||||
"nellePoint"
|
"nelle (limepotato/nellePoint)"
|
||||||
],
|
],
|
||||||
"contact": {
|
"contact": {
|
||||||
"homepage": "https://modrinth.com/mod/roses-mod",
|
"homepage": "https://modrinth.com/mod/roses-mod",
|
||||||
"issues": "https://git.nullafati.xyz/limepotato/roses-mod/issues",
|
"issues": "https://nelle.observer/email",
|
||||||
"sources": "https://git.nullafati.xyz/limepotato/roses-mod"
|
"sources": "https://git.limbo.town/nelle/roses-mod"
|
||||||
},
|
},
|
||||||
|
|
||||||
"license": "LGPL-3.0",
|
"license": "LGPL-3.0",
|
||||||
|
@ -37,6 +37,6 @@
|
||||||
"fabricloader": ">=${loader_version}",
|
"fabricloader": ">=${loader_version}",
|
||||||
"fabric-language-kotlin": ">=${kotlin_loader_version}",
|
"fabric-language-kotlin": ">=${kotlin_loader_version}",
|
||||||
"fabric": "*",
|
"fabric": "*",
|
||||||
"minecraft": ">=1.21.2 <1.21.4"
|
"minecraft": ">=1.21.2 <=1.21.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
178
MC21.4-neoforge/build.gradle
Normal file
178
MC21.4-neoforge/build.gradle
Normal file
|
@ -0,0 +1,178 @@
|
||||||
|
plugins {
|
||||||
|
id 'java-library'
|
||||||
|
id 'maven-publish'
|
||||||
|
id 'idea'
|
||||||
|
id 'net.neoforged.moddev' version '2.0.77'
|
||||||
|
id 'org.jetbrains.kotlin.jvm' version '2.0.0'
|
||||||
|
}
|
||||||
|
|
||||||
|
version = mod_version
|
||||||
|
group = mod_group_id
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
maven {
|
||||||
|
name = 'Kotlin for Forge'
|
||||||
|
url = 'https://thedarkcolour.github.io/KotlinForForge/'
|
||||||
|
content { includeGroup "thedarkcolour" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
base {
|
||||||
|
archivesName = mod_id
|
||||||
|
}
|
||||||
|
|
||||||
|
java.toolchain.languageVersion = JavaLanguageVersion.of(21)
|
||||||
|
kotlin.jvmToolchain(21)
|
||||||
|
|
||||||
|
neoForge {
|
||||||
|
// Specify the version of NeoForge to use.
|
||||||
|
version = project.neo_version
|
||||||
|
|
||||||
|
parchment {
|
||||||
|
mappingsVersion = project.parchment_mappings_version
|
||||||
|
minecraftVersion = project.parchment_minecraft_version
|
||||||
|
}
|
||||||
|
|
||||||
|
// This line is optional. Access Transformers are automatically detected
|
||||||
|
// accessTransformers.add('src/main/resources/META-INF/accesstransformer.cfg')
|
||||||
|
|
||||||
|
// Default run configurations.
|
||||||
|
// These can be tweaked, removed, or duplicated as needed.
|
||||||
|
runs {
|
||||||
|
client {
|
||||||
|
client()
|
||||||
|
|
||||||
|
// Comma-separated list of namespaces to load gametests from. Empty = all namespaces.
|
||||||
|
systemProperty 'neoforge.enabledGameTestNamespaces', project.mod_id
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
server()
|
||||||
|
programArgument '--nogui'
|
||||||
|
systemProperty 'neoforge.enabledGameTestNamespaces', project.mod_id
|
||||||
|
}
|
||||||
|
|
||||||
|
// This run config launches GameTestServer and runs all registered gametests, then exits.
|
||||||
|
// By default, the server will crash when no gametests are provided.
|
||||||
|
// The gametest system is also enabled by default for other run configs under the /test command.
|
||||||
|
gameTestServer {
|
||||||
|
type = "gameTestServer"
|
||||||
|
systemProperty 'neoforge.enabledGameTestNamespaces', project.mod_id
|
||||||
|
}
|
||||||
|
|
||||||
|
data {
|
||||||
|
clientData()
|
||||||
|
|
||||||
|
// example of overriding the workingDirectory set in configureEach above, uncomment if you want to use it
|
||||||
|
// gameDirectory = project.file('run-data')
|
||||||
|
|
||||||
|
// Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources.
|
||||||
|
programArguments.addAll '--mod', project.mod_id, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()
|
||||||
|
}
|
||||||
|
|
||||||
|
// applies to all the run configs above
|
||||||
|
configureEach {
|
||||||
|
// Recommended logging data for a userdev environment
|
||||||
|
// The markers can be added/remove as needed separated by commas.
|
||||||
|
// "SCAN": For mods scan.
|
||||||
|
// "REGISTRIES": For firing of registry events.
|
||||||
|
// "REGISTRYDUMP": For getting the contents of all registries.
|
||||||
|
systemProperty 'forge.logging.markers', 'REGISTRIES'
|
||||||
|
|
||||||
|
// Recommended logging level for the console
|
||||||
|
// You can set various levels here.
|
||||||
|
// Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels
|
||||||
|
logLevel = org.slf4j.event.Level.DEBUG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mods {
|
||||||
|
// define mod <-> source bindings
|
||||||
|
// these are used to tell the game which sources are for which mod
|
||||||
|
// mostly optional in a single mod project
|
||||||
|
// but multi mod projects should define one per mod
|
||||||
|
"${mod_id}" {
|
||||||
|
sourceSet(sourceSets.main)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Include resources generated by data generators.
|
||||||
|
sourceSets.main.resources { srcDir 'src/generated/resources' }
|
||||||
|
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation 'thedarkcolour:kotlinforforge-neoforge:5.3.0'
|
||||||
|
|
||||||
|
// Example mod dependency with JEI
|
||||||
|
// The JEI API is declared for compile time use, while the full JEI artifact is used at runtime
|
||||||
|
// compileOnly "mezz.jei:jei-${mc_version}-common-api:${jei_version}"
|
||||||
|
// compileOnly "mezz.jei:jei-${mc_version}-forge-api:${jei_version}"
|
||||||
|
// runtimeOnly "mezz.jei:jei-${mc_version}-forge:${jei_version}"
|
||||||
|
|
||||||
|
// Example mod dependency using a mod jar from ./libs with a flat dir repository
|
||||||
|
// This maps to ./libs/coolmod-${mc_version}-${coolmod_version}.jar
|
||||||
|
// The group id is ignored when searching -- in this case, it is "blank"
|
||||||
|
// implementation "blank:coolmod-${mc_version}:${coolmod_version}"
|
||||||
|
|
||||||
|
// Example mod dependency using a file as dependency
|
||||||
|
// implementation files("libs/coolmod-${mc_version}-${coolmod_version}.jar")
|
||||||
|
|
||||||
|
// Example project dependency using a sister or child project:
|
||||||
|
// implementation project(":myproject")
|
||||||
|
|
||||||
|
// For more info:
|
||||||
|
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
|
||||||
|
// http://www.gradle.org/docs/current/userguide/dependency_management.html
|
||||||
|
}
|
||||||
|
|
||||||
|
// This block of code expands all declared replace properties in the specified resource targets.
|
||||||
|
// A missing property will result in an error. Properties are expanded using ${} Groovy notation.
|
||||||
|
var generateModMetadata = tasks.register("generateModMetadata", ProcessResources) {
|
||||||
|
var replaceProperties = [
|
||||||
|
minecraft_version : minecraft_version,
|
||||||
|
minecraft_version_range: minecraft_version_range,
|
||||||
|
neo_version : neo_version,
|
||||||
|
neo_version_range : neo_version_range,
|
||||||
|
loader_version_range : loader_version_range,
|
||||||
|
mod_id : mod_id,
|
||||||
|
mod_name : mod_name,
|
||||||
|
mod_license : mod_license,
|
||||||
|
mod_version : mod_version,
|
||||||
|
mod_authors : mod_authors,
|
||||||
|
mod_description : mod_description
|
||||||
|
]
|
||||||
|
inputs.properties replaceProperties
|
||||||
|
expand replaceProperties
|
||||||
|
from "src/main/templates"
|
||||||
|
into "build/generated/sources/modMetadata"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Include the output of "generateModMetadata" as an input directory for the build
|
||||||
|
// this works with both building through Gradle and the IDE.
|
||||||
|
sourceSets.main.resources.srcDir generateModMetadata
|
||||||
|
// To avoid having to run "generateModMetadata" manually, make it run on every project reload
|
||||||
|
neoForge.ideSyncTask generateModMetadata
|
||||||
|
|
||||||
|
// Example configuration to allow publishing using the maven-publish plugin
|
||||||
|
publishing {
|
||||||
|
publications {
|
||||||
|
register('mavenJava', MavenPublication) {
|
||||||
|
from components.java
|
||||||
|
}
|
||||||
|
}
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url "file://${project.projectDir}/repo"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// IDEA no longer automatically downloads sources/javadoc jars for dependencies, so we need to explicitly enable the behavior.
|
||||||
|
idea {
|
||||||
|
module {
|
||||||
|
downloadSources = true
|
||||||
|
downloadJavadoc = true
|
||||||
|
}
|
||||||
|
}
|
40
MC21.4-neoforge/gradle.properties
Normal file
40
MC21.4-neoforge/gradle.properties
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
|
||||||
|
org.gradle.jvmargs=-Xmx2G
|
||||||
|
|
||||||
|
## Environment Properties
|
||||||
|
# You can find the latest versions here: https://projects.neoforged.net/neoforged/neoforge
|
||||||
|
# The Minecraft version must agree with the Neo version to get a valid artifact
|
||||||
|
minecraft_version=1.21.4
|
||||||
|
# The Minecraft version range can use any release version of Minecraft as bounds.
|
||||||
|
# Snapshots, pre-releases, and release candidates are not guaranteed to sort properly
|
||||||
|
# as they do not follow standard versioning conventions.
|
||||||
|
minecraft_version_range=[1.21.4,1.22)
|
||||||
|
# The Neo version must agree with the Minecraft version to get a valid artifact
|
||||||
|
neo_version=21.4.80-beta
|
||||||
|
# The Neo version range can use any version of Neo as bounds
|
||||||
|
neo_version_range=[21,)
|
||||||
|
# The loader version range can only use the major version of FML as bounds
|
||||||
|
loader_version_range=[5.3,)
|
||||||
|
|
||||||
|
parchment_minecraft_version=1.21.4
|
||||||
|
parchment_mappings_version=2025.01.19
|
||||||
|
|
||||||
|
## Mod Properties
|
||||||
|
|
||||||
|
# The unique mod identifier for the mod. Must be lowercase in English locale. Must fit the regex [a-z][a-z0-9_]{1,63}
|
||||||
|
# Must match the String constant located in the main mod class annotated with @Mod.
|
||||||
|
mod_id=roses
|
||||||
|
# The human-readable display name for the mod.
|
||||||
|
mod_name=roses
|
||||||
|
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
|
||||||
|
mod_license=All Rights Reserved
|
||||||
|
# The mod version. See https://semver.org/
|
||||||
|
mod_version=0.0
|
||||||
|
# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository.
|
||||||
|
# This should match the base package used for the mod sources.
|
||||||
|
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||||
|
mod_group_id=observer.nelle
|
||||||
|
# The authors of the mod. This is a simple text string that is used for display purposes in the mod list.
|
||||||
|
mod_authors=nelle (limepotato/nellePoint)
|
||||||
|
# The description of the mod. This is a simple multiline text string that is used for display purposes in the mod list.
|
||||||
|
mod_description=adds the classic roses and cyan roses back to the game, in a modern way
|
1
MC21.4-neoforge/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
1
MC21.4-neoforge/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
|
|
@ -0,0 +1,70 @@
|
||||||
|
package observer.nelle.roses
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft
|
||||||
|
import net.neoforged.bus.api.SubscribeEvent
|
||||||
|
import net.neoforged.fml.common.EventBusSubscriber
|
||||||
|
import net.neoforged.fml.common.Mod
|
||||||
|
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent
|
||||||
|
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent
|
||||||
|
import net.neoforged.fml.event.lifecycle.FMLDedicatedServerSetupEvent
|
||||||
|
import org.apache.logging.log4j.Level
|
||||||
|
import org.apache.logging.log4j.LogManager
|
||||||
|
import org.apache.logging.log4j.Logger
|
||||||
|
import thedarkcolour.kotlinforforge.neoforge.forge.MOD_BUS
|
||||||
|
import thedarkcolour.kotlinforforge.neoforge.forge.runForDist
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Main mod class.
|
||||||
|
*
|
||||||
|
* An example for blocks is in the `blocks` package of this mod.
|
||||||
|
*/
|
||||||
|
@Mod(Roses.ID)
|
||||||
|
@EventBusSubscriber(bus = EventBusSubscriber.Bus.MOD)
|
||||||
|
object Roses {
|
||||||
|
const val ID = "roses"
|
||||||
|
|
||||||
|
// the logger for our mod
|
||||||
|
val LOGGER: Logger = LogManager.getLogger(ID)
|
||||||
|
|
||||||
|
init {
|
||||||
|
LOGGER.log(Level.INFO, "Hello world!")
|
||||||
|
|
||||||
|
// Register the KDeferredRegister to the mod-specific event bus
|
||||||
|
// ModBlocks.REGISTRY.register(MOD_BUS)
|
||||||
|
|
||||||
|
val obj =
|
||||||
|
runForDist(
|
||||||
|
clientTarget = {
|
||||||
|
MOD_BUS.addListener(::onClientSetup)
|
||||||
|
Minecraft.getInstance()
|
||||||
|
},
|
||||||
|
serverTarget = {
|
||||||
|
MOD_BUS.addListener(::onServerSetup)
|
||||||
|
"test"
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
println(obj)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is used for initializing client specific
|
||||||
|
* things such as renderers and keymaps
|
||||||
|
* Fired on the mod specific event bus.
|
||||||
|
*/
|
||||||
|
private fun onClientSetup(event: FMLClientSetupEvent) {
|
||||||
|
LOGGER.log(Level.INFO, "Initializing client...")
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fired on the global Forge bus.
|
||||||
|
*/
|
||||||
|
private fun onServerSetup(event: FMLDedicatedServerSetupEvent) {
|
||||||
|
LOGGER.log(Level.INFO, "Server starting...")
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
fun onCommonSetup(event: FMLCommonSetupEvent) {
|
||||||
|
LOGGER.log(Level.INFO, "Hello! This is working!")
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package observer.nelle.roses.block
|
||||||
|
|
||||||
|
// THIS LINE IS REQUIRED FOR USING PROPERTY DELEGATES
|
||||||
|
|
||||||
|
object ModBlocks {
|
||||||
|
/* val REGISTRY = DeferredRegister.createBlocks(Roses.ID)
|
||||||
|
|
||||||
|
// If you get an "overload resolution ambiguity" error, include the arrow at the start of the closure.
|
||||||
|
val EXAMPLE_BLOCK by REGISTRY.register("example_block") { Block(
|
||||||
|
BlockBehaviour.Properties
|
||||||
|
.of()
|
||||||
|
.lightLevel { 15 }
|
||||||
|
.strength(3.0f),
|
||||||
|
)
|
||||||
|
}*/
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"itemGroup.roses": "Example Mod Tab",
|
||||||
|
"block.roses.example_block": "Example Block",
|
||||||
|
"item.roses.example_item": "Example Item"
|
||||||
|
}
|
14
MC21.4-neoforge/src/main/resources/roses.mixins.json
Normal file
14
MC21.4-neoforge/src/main/resources/roses.mixins.json
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"required": true,
|
||||||
|
"minVersion": "0.8",
|
||||||
|
"package": "observer.nelle.roses.mixin",
|
||||||
|
"compatibilityLevel": "JAVA_8",
|
||||||
|
"refmap": "roses.refmap.json",
|
||||||
|
"mixins": [
|
||||||
|
],
|
||||||
|
"client": [
|
||||||
|
],
|
||||||
|
"injectors": {
|
||||||
|
"defaultRequire": 1
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,79 @@
|
||||||
|
# This is an example mods.toml file. It contains the data relating to the loading mods.
|
||||||
|
# There are several mandatory fields (#mandatory), and many more that are optional (#optional).
|
||||||
|
# The overall format is standard TOML format, v0.5.0.
|
||||||
|
# Note that there are a couple of TOML lists in this file.
|
||||||
|
# Find more information on toml format here: https://github.com/toml-lang/toml
|
||||||
|
# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml
|
||||||
|
modLoader="kotlinforforge" #mandatory
|
||||||
|
# A version range to match for said mod loader - for regular FML @Mod it will be the the FML version. This is currently 47.
|
||||||
|
loaderVersion="${loader_version_range}" #mandatory
|
||||||
|
# The license for you mod. This is mandatory metadata and allows for easier comprehension of your redistributive properties.
|
||||||
|
# Review your options at https://choosealicense.com/. All rights reserved is the default copyright stance, and is thus the default here.
|
||||||
|
license="${mod_license}"
|
||||||
|
# A URL to refer people to when problems occur with this mod
|
||||||
|
#issueTrackerURL="https://change.me.to.your.issue.tracker.example.invalid/" #optional
|
||||||
|
# A list of mods - how many allowed here is determined by the individual mod loader
|
||||||
|
[[mods]] #mandatory
|
||||||
|
# The modid of the mod
|
||||||
|
modId="${mod_id}" #mandatory
|
||||||
|
# The version number of the mod
|
||||||
|
version="${mod_version}" #mandatory
|
||||||
|
# A display name for the mod
|
||||||
|
displayName="${mod_name}" #mandatory
|
||||||
|
# A URL to query for updates for this mod. See the JSON update specification https://docs.neoforge.net/docs/misc/updatechecker/
|
||||||
|
#updateJSONURL="https://change.me.example.invalid/updates.json" #optional
|
||||||
|
# A URL for the "homepage" for this mod, displayed in the mod UI
|
||||||
|
#displayURL="https://change.me.to.your.mods.homepage.example.invalid/" #optional
|
||||||
|
# A file name (in the root of the mod JAR) containing a logo for display
|
||||||
|
#logoFile="roses.png" #optional
|
||||||
|
# A text field displayed in the mod UI
|
||||||
|
#credits="" #optional
|
||||||
|
# A text field displayed in the mod UI
|
||||||
|
authors="${mod_authors}" #optional
|
||||||
|
|
||||||
|
# The description text for the mod (multi line!) (#mandatory)
|
||||||
|
description='''${mod_description}'''
|
||||||
|
|
||||||
|
# The [[mixins]] block allows you to declare your mixin config to FML so that it gets loaded.
|
||||||
|
[[mixins]]
|
||||||
|
config="${mod_id}.mixins.json"
|
||||||
|
|
||||||
|
# The [[accessTransformers]] block allows you to declare where your AT file is.
|
||||||
|
# If this block is omitted, a fallback attempt will be made to load an AT from META-INF/accesstransformer.cfg
|
||||||
|
#[[accessTransformers]]
|
||||||
|
#file="META-INF/accesstransformer.cfg"
|
||||||
|
|
||||||
|
# The coremods config file path is not configurable and is always loaded from META-INF/coremods.json
|
||||||
|
|
||||||
|
# A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional.
|
||||||
|
[[dependencies."${mod_id}"]] #optional
|
||||||
|
# the modid of the dependency
|
||||||
|
modId="neoforge" #mandatory
|
||||||
|
# The type of the dependency. Can be one of "required", "optional", "incompatible" or "discouraged" (case insensitive).
|
||||||
|
# 'required' requires the mod to exist, 'optional' does not
|
||||||
|
# 'incompatible' will prevent the game from loading when the mod exists, and 'discouraged' will show a warning
|
||||||
|
type="required" #mandatory
|
||||||
|
# Optional field describing why the dependency is required or why it is incompatible
|
||||||
|
# reason="..."
|
||||||
|
# The version range of the dependency
|
||||||
|
versionRange="${neo_version_range}" #mandatory
|
||||||
|
# An ordering relationship for the dependency.
|
||||||
|
# BEFORE - This mod is loaded BEFORE the dependency
|
||||||
|
# AFTER - This mod is loaded AFTER the dependency
|
||||||
|
ordering="NONE"
|
||||||
|
# Side this dependency is applied on - BOTH, CLIENT, or SERVER
|
||||||
|
side="BOTH"
|
||||||
|
# Here's another dependency
|
||||||
|
[[dependencies."${mod_id}"]]
|
||||||
|
modId="minecraft"
|
||||||
|
type="required"
|
||||||
|
# This version range declares a minimum of the current minecraft version up to but not including the next major version
|
||||||
|
versionRange="${minecraft_version_range}"
|
||||||
|
ordering="NONE"
|
||||||
|
side="BOTH"
|
||||||
|
|
||||||
|
# Features are specific properties of the game environment, that you may want to declare you require. This example declares
|
||||||
|
# that your mod requires GL version 3.2 or higher. Other features will be added. They are side aware so declaring this won't
|
||||||
|
# stop your mod loading on the server for example.
|
||||||
|
#[features."${mod_id}"]
|
||||||
|
#openGLVersion="[3.2,)"
|
|
@ -1,11 +1,6 @@
|
||||||
# Roses Mod
|
# Roses Mod
|
||||||
|
|
||||||
> **Note**
|

|
||||||
> The mod has been rewritten in kotlin and fabric, instead of java quilt,
|
|
||||||
> previous versions have some bugs and not all bug fixes or features have been backported,
|
|
||||||
> I will be backporting the mod after this rewrite back as far as I can while being sane.
|
|
||||||
>
|
|
||||||
> I have removed all older versions from modrinth to prevent confusion
|
|
||||||
|
|
||||||
This mod brings back the classic roses and other classic flowers to minecraft, without replacing any newer flower types.
|
This mod brings back the classic roses and other classic flowers to minecraft, without replacing any newer flower types.
|
||||||
|
|
||||||
|
@ -17,6 +12,7 @@ This mod brings back the classic roses and other classic flowers to minecraft, w
|
||||||
- Bees can pollinate all flowers
|
- Bees can pollinate all flowers
|
||||||
|
|
||||||
<!-- modrinth_exclude.start -->
|
<!-- modrinth_exclude.start -->
|
||||||
|
|
||||||
## Versioning
|
## Versioning
|
||||||
1.0: where the first number is the grander version (all mc versions will have the same),
|
1.0: where the first number is the grander version (all mc versions will have the same),
|
||||||
second number is specific mc version patch
|
second number is specific mc version patch
|
||||||
|
|
|
@ -20,6 +20,9 @@ pluginManagement {
|
||||||
maven("https://maven.quiltmc.org/repository/release") {
|
maven("https://maven.quiltmc.org/repository/release") {
|
||||||
name = "Quilt"
|
name = "Quilt"
|
||||||
}
|
}
|
||||||
|
maven("https://maven.neoforged.net/releases") {
|
||||||
|
name = "NeoForge"
|
||||||
|
}
|
||||||
gradlePluginPortal()
|
gradlePluginPortal()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,3 +38,4 @@ include(":MC20.5-21.1")
|
||||||
include(":MC20-20.4")
|
include(":MC20-20.4")
|
||||||
include(":MC21.2-21.4")
|
include(":MC21.2-21.4")
|
||||||
include(":MC19.3-19.4")
|
include(":MC19.3-19.4")
|
||||||
|
include(":MC21.4-neoforge")
|
||||||
|
|
Loading…
Add table
Reference in a new issue