Compare commits
No commits in common. "main" and "2.0" have entirely different histories.
24 changed files with 161 additions and 461 deletions
|
@ -9,7 +9,7 @@ org.gradle.jvmargs=-Xmx1G
|
|||
kotlin_loader_version=1.13.0+kotlin.2.1.0
|
||||
|
||||
# Mod Properties
|
||||
mod_version = 3.0+1.19.3-1.19.4
|
||||
mod_version = 2.0+1.19.3-1.19.4
|
||||
maven_group = observer.nelle
|
||||
archives_base_name = roses_mod
|
||||
|
||||
|
|
|
@ -23,6 +23,9 @@ public class RosesPlacedFeatures {
|
|||
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> cyanRoseCommonPlacedKey = registerKey("cyan_rose_common_placed");
|
||||
public static final RegistryKey<PlacedFeature> roseCommonPlacedKey = registerKey("rose_common_placed");
|
||||
|
||||
public static void bootstrap(Registerable<PlacedFeature> context) {
|
||||
var configuredFeatures = context.getRegistryLookup(RegistryKeys.CONFIGURED_FEATURE);
|
||||
|
||||
|
@ -58,6 +61,19 @@ public class RosesPlacedFeatures {
|
|||
SquarePlacementModifier.of(),
|
||||
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
||||
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) {
|
||||
|
|
|
@ -90,12 +90,6 @@ object RosesVegetationGeneration {
|
|||
BiomeKeys.ICE_SPIKES,
|
||||
BiomeKeys.DRIPSTONE_CAVES,
|
||||
BiomeKeys.DEEP_DARK,
|
||||
BiomeKeys.JUNGLE,
|
||||
BiomeKeys.BAMBOO_JUNGLE,
|
||||
BiomeKeys.SPARSE_JUNGLE,
|
||||
BiomeKeys.SAVANNA,
|
||||
BiomeKeys.SAVANNA_PLATEAU,
|
||||
BiomeKeys.WINDSWEPT_SAVANNA,
|
||||
),
|
||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||
RosesPlacedFeatures.cyanRoseRarerPlacedKey,
|
||||
|
@ -119,6 +113,14 @@ object RosesVegetationGeneration {
|
|||
BiomeKeys.ICE_SPIKES,
|
||||
BiomeKeys.DRIPSTONE_CAVES,
|
||||
BiomeKeys.DEEP_DARK,
|
||||
),
|
||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||
RosesPlacedFeatures.roseRarerPlacedKey,
|
||||
)
|
||||
|
||||
// more common
|
||||
BiomeModifications.addFeature(
|
||||
BiomeSelectors.includeByKey(
|
||||
BiomeKeys.JUNGLE,
|
||||
BiomeKeys.BAMBOO_JUNGLE,
|
||||
BiomeKeys.SPARSE_JUNGLE,
|
||||
|
@ -127,7 +129,20 @@ object RosesVegetationGeneration {
|
|||
BiomeKeys.WINDSWEPT_SAVANNA,
|
||||
),
|
||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||
RosesPlacedFeatures.roseRarerPlacedKey,
|
||||
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,6 +23,9 @@ public class RosesPlacedFeatures {
|
|||
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> cyanRoseCommonPlacedKey = registerKey("cyan_rose_common_placed");
|
||||
public static final RegistryKey<PlacedFeature> roseCommonPlacedKey = registerKey("rose_common_placed");
|
||||
|
||||
public static void bootstrap(Registerable<PlacedFeature> context) {
|
||||
var configuredFeatures = context.getRegistryLookup(RegistryKeys.CONFIGURED_FEATURE);
|
||||
|
||||
|
@ -58,6 +61,19 @@ public class RosesPlacedFeatures {
|
|||
SquarePlacementModifier.of(),
|
||||
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
||||
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) {
|
||||
|
|
|
@ -90,12 +90,6 @@ object RosesVegetationGeneration {
|
|||
BiomeKeys.ICE_SPIKES,
|
||||
BiomeKeys.DRIPSTONE_CAVES,
|
||||
BiomeKeys.DEEP_DARK,
|
||||
BiomeKeys.JUNGLE,
|
||||
BiomeKeys.BAMBOO_JUNGLE,
|
||||
BiomeKeys.SPARSE_JUNGLE,
|
||||
BiomeKeys.SAVANNA,
|
||||
BiomeKeys.SAVANNA_PLATEAU,
|
||||
BiomeKeys.WINDSWEPT_SAVANNA,
|
||||
),
|
||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||
RosesPlacedFeatures.cyanRoseRarerPlacedKey,
|
||||
|
@ -119,6 +113,14 @@ object RosesVegetationGeneration {
|
|||
BiomeKeys.ICE_SPIKES,
|
||||
BiomeKeys.DRIPSTONE_CAVES,
|
||||
BiomeKeys.DEEP_DARK,
|
||||
),
|
||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||
RosesPlacedFeatures.roseRarerPlacedKey,
|
||||
)
|
||||
|
||||
// more common
|
||||
BiomeModifications.addFeature(
|
||||
BiomeSelectors.includeByKey(
|
||||
BiomeKeys.JUNGLE,
|
||||
BiomeKeys.BAMBOO_JUNGLE,
|
||||
BiomeKeys.SPARSE_JUNGLE,
|
||||
|
@ -127,7 +129,20 @@ object RosesVegetationGeneration {
|
|||
BiomeKeys.WINDSWEPT_SAVANNA,
|
||||
),
|
||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||
RosesPlacedFeatures.roseRarerPlacedKey,
|
||||
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,6 +8,7 @@ import net.minecraft.util.Identifier;
|
|||
import net.minecraft.util.math.intprovider.ClampedIntProvider;
|
||||
import net.minecraft.util.math.intprovider.UniformIntProvider;
|
||||
import net.minecraft.world.gen.feature.*;
|
||||
import net.minecraft.world.gen.placementmodifier.PlacementModifier;
|
||||
import net.minecraft.world.gen.placementmodifier.*;
|
||||
import observer.nelle.roses.RosesModKt;
|
||||
|
||||
|
@ -23,6 +24,8 @@ public class RosesPlacedFeatures {
|
|||
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> cyanRoseCommonPlacedKey = registerKey("cyan_rose_common_placed");
|
||||
public static final RegistryKey<PlacedFeature> roseCommonPlacedKey = registerKey("rose_common_placed");
|
||||
|
||||
public static void bootstrap(Registerable<PlacedFeature> context) {
|
||||
var configuredFeatures = context.getRegistryLookup(RegistryKeys.CONFIGURED_FEATURE);
|
||||
|
@ -59,6 +62,19 @@ public class RosesPlacedFeatures {
|
|||
SquarePlacementModifier.of(),
|
||||
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
||||
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) {
|
||||
|
|
|
@ -90,12 +90,6 @@ object RosesVegetationGeneration {
|
|||
BiomeKeys.ICE_SPIKES,
|
||||
BiomeKeys.DRIPSTONE_CAVES,
|
||||
BiomeKeys.DEEP_DARK,
|
||||
BiomeKeys.JUNGLE,
|
||||
BiomeKeys.BAMBOO_JUNGLE,
|
||||
BiomeKeys.SPARSE_JUNGLE,
|
||||
BiomeKeys.SAVANNA,
|
||||
BiomeKeys.SAVANNA_PLATEAU,
|
||||
BiomeKeys.WINDSWEPT_SAVANNA,
|
||||
),
|
||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||
RosesPlacedFeatures.cyanRoseRarerPlacedKey,
|
||||
|
@ -119,6 +113,14 @@ object RosesVegetationGeneration {
|
|||
BiomeKeys.ICE_SPIKES,
|
||||
BiomeKeys.DRIPSTONE_CAVES,
|
||||
BiomeKeys.DEEP_DARK,
|
||||
),
|
||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||
RosesPlacedFeatures.roseRarerPlacedKey,
|
||||
)
|
||||
|
||||
// more common
|
||||
BiomeModifications.addFeature(
|
||||
BiomeSelectors.includeByKey(
|
||||
BiomeKeys.JUNGLE,
|
||||
BiomeKeys.BAMBOO_JUNGLE,
|
||||
BiomeKeys.SPARSE_JUNGLE,
|
||||
|
@ -127,7 +129,20 @@ object RosesVegetationGeneration {
|
|||
BiomeKeys.WINDSWEPT_SAVANNA,
|
||||
),
|
||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||
RosesPlacedFeatures.roseRarerPlacedKey,
|
||||
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
|
||||
|
||||
# Mod Properties
|
||||
mod_version = 3.2+1.21.2-1.21.4
|
||||
mod_version = 3.0+1.21.2-1.21.4
|
||||
maven_group = observer.nelle
|
||||
archives_base_name = roses_mod
|
||||
|
||||
|
|
|
@ -61,6 +61,19 @@ public class RosesPlacedFeatures {
|
|||
SquarePlacementModifier.of(),
|
||||
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
|
||||
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) {
|
||||
|
|
|
@ -90,12 +90,6 @@ object RosesVegetationGeneration {
|
|||
BiomeKeys.ICE_SPIKES,
|
||||
BiomeKeys.DRIPSTONE_CAVES,
|
||||
BiomeKeys.DEEP_DARK,
|
||||
BiomeKeys.JUNGLE,
|
||||
BiomeKeys.BAMBOO_JUNGLE,
|
||||
BiomeKeys.SPARSE_JUNGLE,
|
||||
BiomeKeys.SAVANNA,
|
||||
BiomeKeys.SAVANNA_PLATEAU,
|
||||
BiomeKeys.WINDSWEPT_SAVANNA,
|
||||
),
|
||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||
RosesPlacedFeatures.cyanRoseRarerPlacedKey,
|
||||
|
@ -119,6 +113,14 @@ object RosesVegetationGeneration {
|
|||
BiomeKeys.ICE_SPIKES,
|
||||
BiomeKeys.DRIPSTONE_CAVES,
|
||||
BiomeKeys.DEEP_DARK,
|
||||
),
|
||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||
RosesPlacedFeatures.roseRarerPlacedKey,
|
||||
)
|
||||
|
||||
// more common
|
||||
BiomeModifications.addFeature(
|
||||
BiomeSelectors.includeByKey(
|
||||
BiomeKeys.JUNGLE,
|
||||
BiomeKeys.BAMBOO_JUNGLE,
|
||||
BiomeKeys.SPARSE_JUNGLE,
|
||||
|
@ -127,7 +129,20 @@ object RosesVegetationGeneration {
|
|||
BiomeKeys.WINDSWEPT_SAVANNA,
|
||||
),
|
||||
GenerationStep.Feature.VEGETAL_DECORATION,
|
||||
RosesPlacedFeatures.roseRarerPlacedKey,
|
||||
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,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "roses_mod:item/cyan_rose"
|
||||
}
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "roses_mod:item/cyan_rose_bush"
|
||||
}
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "roses_mod:item/rose_flower"
|
||||
}
|
||||
}
|
|
@ -6,12 +6,12 @@
|
|||
"name": "Roses Mod",
|
||||
"description": "Reinstates the classic roses to Minecraft.",
|
||||
"authors": [
|
||||
"nelle (limepotato/nellePoint)"
|
||||
"nellePoint"
|
||||
],
|
||||
"contact": {
|
||||
"homepage": "https://modrinth.com/mod/roses-mod",
|
||||
"issues": "https://nelle.observer/email",
|
||||
"sources": "https://git.limbo.town/nelle/roses-mod"
|
||||
"issues": "https://git.nullafati.xyz/limepotato/roses-mod/issues",
|
||||
"sources": "https://git.nullafati.xyz/limepotato/roses-mod"
|
||||
},
|
||||
|
||||
"license": "LGPL-3.0",
|
||||
|
@ -37,6 +37,6 @@
|
|||
"fabricloader": ">=${loader_version}",
|
||||
"fabric-language-kotlin": ">=${kotlin_loader_version}",
|
||||
"fabric": "*",
|
||||
"minecraft": ">=1.21.2 <=1.21.4"
|
||||
"minecraft": ">=1.21.2 <1.21.4"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,178 +0,0 @@
|
|||
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
|
||||
}
|
||||
}
|
|
@ -1,40 +0,0 @@
|
|||
# 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 +0,0 @@
|
|||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
|
|
@ -1,70 +0,0 @@
|
|||
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!")
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
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),
|
||||
)
|
||||
}*/
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"itemGroup.roses": "Example Mod Tab",
|
||||
"block.roses.example_block": "Example Block",
|
||||
"item.roses.example_item": "Example Item"
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
{
|
||||
"required": true,
|
||||
"minVersion": "0.8",
|
||||
"package": "observer.nelle.roses.mixin",
|
||||
"compatibilityLevel": "JAVA_8",
|
||||
"refmap": "roses.refmap.json",
|
||||
"mixins": [
|
||||
],
|
||||
"client": [
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
}
|
||||
}
|
|
@ -1,79 +0,0 @@
|
|||
# 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,6 +1,11 @@
|
|||
# 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.
|
||||
|
||||
|
@ -12,7 +17,6 @@ This mod brings back the classic roses and other classic flowers to minecraft, w
|
|||
- Bees can pollinate all flowers
|
||||
|
||||
<!-- modrinth_exclude.start -->
|
||||
|
||||
## Versioning
|
||||
1.0: where the first number is the grander version (all mc versions will have the same),
|
||||
second number is specific mc version patch
|
||||
|
|
|
@ -20,9 +20,6 @@ pluginManagement {
|
|||
maven("https://maven.quiltmc.org/repository/release") {
|
||||
name = "Quilt"
|
||||
}
|
||||
maven("https://maven.neoforged.net/releases") {
|
||||
name = "NeoForge"
|
||||
}
|
||||
gradlePluginPortal()
|
||||
}
|
||||
}
|
||||
|
@ -38,4 +35,3 @@ include(":MC20.5-21.1")
|
|||
include(":MC20-20.4")
|
||||
include(":MC21.2-21.4")
|
||||
include(":MC19.3-19.4")
|
||||
include(":MC21.4-neoforge")
|
||||
|
|
Loading…
Add table
Reference in a new issue