Compare commits

..

No commits in common. "main" and "2.0" have entirely different histories.
main ... 2.0

24 changed files with 161 additions and 461 deletions

View file

@ -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

View file

@ -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) {

View file

@ -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,
)
}
}

View file

@ -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) {

View file

@ -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,
)
}
}

View file

@ -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) {

View file

@ -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,
)
}
}

View file

@ -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

View file

@ -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) {

View file

@ -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,
)
}
}

View file

@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "roses_mod:item/cyan_rose"
}
}

View file

@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "roses_mod:item/cyan_rose_bush"
}
}

View file

@ -1,6 +0,0 @@
{
"model": {
"type": "minecraft:model",
"model": "roses_mod:item/rose_flower"
}
}

View file

@ -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"
}
}

View file

@ -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
}
}

View file

@ -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

View file

@ -1 +0,0 @@
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip

View file

@ -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!")
}
}

View file

@ -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),
)
}*/
}

View file

@ -1,5 +0,0 @@
{
"itemGroup.roses": "Example Mod Tab",
"block.roses.example_block": "Example Block",
"item.roses.example_item": "Example Item"
}

View file

@ -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
}
}

View file

@ -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,)"

View file

@ -1,6 +1,11 @@
# Roses Mod
![made with fabric 88x31 badge](https://cdn.modrinth.com/data/cached_images/566134d54a0d603a50b616650bc189ef3f3ed9b8.png)
> **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

View file

@ -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")