Compare commits

..

No commits in common. "master" and "1.20.1" have entirely different histories.

23 changed files with 218 additions and 193 deletions

4
.gitignore vendored
View File

@ -20,7 +20,6 @@ build
# other
eclipse
run
runs
run-data
design/
@ -28,3 +27,6 @@ libs/
logs/
/src/generated/resources
# Files from Forge MDK
forge*changelog.txt

View File

@ -1,15 +1,10 @@
plugins {
id 'java-library'
id 'eclipse'
id 'idea'
id 'maven-publish'
id 'net.neoforged.gradle.userdev' version '7.0.145'
id 'org.jetbrains.kotlin.jvm' version '1.9.22'
id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.22'
}
tasks.named('wrapper', Wrapper).configure {
distributionType = Wrapper.DistributionType.BIN
id 'net.minecraftforge.gradle' version '[6.0,6.2)'
id 'org.jetbrains.kotlin.jvm' version '1.9.20'
id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.20'
}
version = "${minecraft_version}-${mod_version}"
@ -19,88 +14,119 @@ base {
archivesName = mod_id
}
java.toolchain.languageVersion = JavaLanguageVersion.of(21)
java.toolchain.languageVersion = JavaLanguageVersion.of(17)
runs {
configureEach {
systemProperty 'forge.logging.markers', 'REGISTRIES'
systemProperty 'forge.logging.console.level', 'debug'
minecraft {
mappings channel: 'official', version: minecraft_version
modSource project.sourceSets.main
}
copyIdeResources = true
client {
systemProperty 'forge.enabledGameTestNamespaces', project.mod_id
}
runs {
configureEach {
workingDirectory project.file('run')
server {
systemProperty 'forge.enabledGameTestNamespaces', project.mod_id
programArgument '--nogui'
}
property 'forge.logging.markers', 'REGISTRIES'
property 'forge.logging.console.level', 'debug'
gameTestServer {
systemProperty 'forge.enabledGameTestNamespaces', project.mod_id
}
property 'mixin.env.remapRefMap', 'true'
property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
data {
programArguments.addAll '--mod', project.mod_id, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()
mods {
"${mod_id}" {
source sourceSets.main
}
}
}
client {
property 'forge.enabledGameTestNamespaces', mod_id
}
server {
property 'forge.enabledGameTestNamespaces', mod_id
args '--nogui'
}
data {
workingDirectory project.file('run-data')
args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
}
}
}
sourceSets.main.resources { srcDir 'src/generated/resources' }
configurations {
runtimeClasspath.extendsFrom localRuntime
}
repositories {
mavenLocal()
maven {
name = 'Kotlin for Forge'
url = 'https://thedarkcolour.github.io/KotlinForForge/'
}
maven {
name = 'Jared\'s maven'
url = 'https://maven.blamejared.com/'
content {
includeGroup 'mezz.jei'
}
}
maven {
name = 'Modmaven'
url = 'https://modmaven.dev/'
content {
includeGroup 'appeng'
includeGroup 'mezz.jei'
}
}
}
dependencies {
implementation "net.neoforged:neoforge:${neo_version}"
implementation "thedarkcolour:kotlinforforge-neoforge:${kff_version}"
minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
implementation "thedarkcolour:kotlinforforge:${kff_version}"
implementation "appeng:appliedenergistics2-neoforge:${ae2_version}"
runtimeOnly "mezz.jei:jei-${minecraft_version}-neoforge:${jei_version}"
implementation fg.deobf("appeng:appliedenergistics2-forge:${ae2_version}")
runtimeOnly(fg.deobf("mezz.jei:jei-${minecraft_version}-forge:${jei_version}"))
}
tasks.withType(ProcessResources).configureEach {
tasks.named('processResources', ProcessResources).configure {
var replaceProperties = [
loader_name: loader_name, loader_version_range: loader_version_range,
mod_id: mod_id, mod_version: mod_version,
neo_version: neo_version, neo_version_range: neo_version_range,
forge_version_range: forge_version_range,
minecraft_version_range: minecraft_version_range,
ae2_version_range: ae2_version_range,
]
inputs.properties replaceProperties
filesMatching(['META-INF/neoforge.mods.toml']) {
expand replaceProperties
filesMatching(['META-INF/mods.toml', 'pack.mcmeta']) {
expand replaceProperties + [project: project]
}
}
tasks.named('jar', Jar).configure {
manifest {
attributes([
'Specification-Title' : mod_id,
'Specification-Vendor' : "YuRaNnNzZZ",
'Specification-Version' : '1',
'Implementation-Title' : project.name,
'Implementation-Version' : project.jar.archiveVersion,
'Implementation-Vendor' : "YuRaNnNzZZ",
'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
])
}
finalizedBy 'reobfJar'
}
publishing {
publications {
register('mavenJava', MavenPublication) {
from components.java
artifact jar
}
}
repositories {
maven {
url "file://${project.projectDir}/repo"
url "file://${project.projectDir}/mcmodsrepo"
}
}
}
@ -108,10 +134,3 @@ publishing {
tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8'
}
idea {
module {
downloadSources = true
downloadJavadoc = true
}
}

View File

@ -4,18 +4,18 @@ org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false
mod_id=ae2quartz
mod_version=1.1.0
mod_version=1.0.0
minecraft_version=1.21
minecraft_version_range=[1.21,1.22)
neo_version=21.0.167
neo_version_range=[21.0.0-beta,)
minecraft_version=1.20.1
minecraft_version_range=[1.20.1,1.21)
forge_version=47.2.0
forge_version_range=[47,)
loader_name=kotlinforforge
loader_version_range=[5.5,)
kff_version=5.5.0
loader_version_range=[4.10,)
kff_version=4.10.0
ae2_version=19.0.4-alpha
ae2_version_range=[19,)
ae2_version=15.0.20
ae2_version_range=[15,)
jei_version=19.8.2.99
jei_version=15.2.0.27

Binary file not shown.

View File

@ -1,7 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

34
gradlew vendored
View File

@ -15,8 +15,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
@ -57,7 +55,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@ -85,9 +83,10 @@ done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@ -134,13 +133,10 @@ location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
@ -148,7 +144,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
# shellcheck disable=SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
@ -156,7 +152,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
# shellcheck disable=SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
@ -201,15 +197,11 @@ if "$cygwin" || "$msys" ; then
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \

22
gradlew.bat vendored
View File

@ -13,8 +13,6 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@ -45,11 +43,11 @@ set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
@ -59,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail

View File

@ -1,11 +1,13 @@
pluginManagement {
repositories {
mavenLocal()
gradlePluginPortal()
maven { url = 'https://maven.neoforged.net/releases' }
maven {
name = 'MinecraftForge'
url = 'https://maven.minecraftforge.net/'
}
}
}
plugins {
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0'
}
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.5.0'
}

View File

@ -1,19 +1,16 @@
package ru.yurannnzzz.ae2quartz
import net.minecraft.resources.ResourceLocation
import net.neoforged.fml.common.Mod
import net.minecraftforge.fml.common.Mod
import ru.yurannnzzz.ae2quartz.data.onDataGather
import ru.yurannnzzz.ae2quartz.event.addCreativeTabItems
import ru.yurannnzzz.ae2quartz.registry.ModBlocks
import ru.yurannnzzz.ae2quartz.registry.ModItems
import thedarkcolour.kotlinforforge.neoforge.forge.MOD_BUS
import thedarkcolour.kotlinforforge.forge.MOD_BUS
@Mod(AE2QuartzMod.MOD_ID)
object AE2QuartzMod {
const val MOD_ID = "ae2quartz"
fun loc(id: String): ResourceLocation = ResourceLocation.fromNamespaceAndPath(MOD_ID, id)
init {
ModBlocks.registry.register(MOD_BUS)
ModItems.registry.register(MOD_BUS)

View File

@ -4,11 +4,12 @@ import net.minecraft.core.RegistrySetBuilder
import net.minecraft.core.registries.Registries
import net.minecraft.data.loot.LootTableProvider
import net.minecraft.data.loot.LootTableProvider.SubProviderEntry
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets
import net.neoforged.neoforge.common.data.BlockTagsProvider
import net.neoforged.neoforge.common.data.DatapackBuiltinEntriesProvider
import net.neoforged.neoforge.data.event.GatherDataEvent
import net.neoforged.neoforge.registries.NeoForgeRegistries
import net.minecraftforge.common.data.BlockTagsProvider
import net.minecraftforge.common.data.DatapackBuiltinEntriesProvider
import net.minecraftforge.data.event.GatherDataEvent
import net.minecraftforge.registries.ForgeRegistries
import ru.yurannnzzz.ae2quartz.AE2QuartzMod.MOD_ID
import ru.yurannnzzz.ae2quartz.data.client.English
import ru.yurannnzzz.ae2quartz.data.client.ModBlockStateProvider
@ -24,38 +25,39 @@ import ru.yurannnzzz.ae2quartz.data.server.registerPlacedFeatures
fun onDataGather(event: GatherDataEvent) {
val gen = event.generator
val efh = event.existingFileHelper
val out = gen.packOutput
gen.addProvider(event.includeClient(), ModBlockStateProvider(gen.packOutput, MOD_ID, event.existingFileHelper))
gen.addProvider(event.includeClient(), ModItemModelProvider(gen.packOutput, MOD_ID, event.existingFileHelper))
gen.addProvider(event.includeClient(), English(gen.packOutput, MOD_ID))
gen.addProvider(event.includeClient(), Russian(gen.packOutput, MOD_ID))
gen.addProvider(event.includeClient(), ModBlockStateProvider(out, MOD_ID, efh))
gen.addProvider(event.includeClient(), ModItemModelProvider(out, MOD_ID, efh))
gen.addProvider(event.includeClient(), English(out, MOD_ID))
gen.addProvider(event.includeClient(), Russian(out, MOD_ID))
gen.addProvider(
event.includeServer(),
ModRecipeProvider(gen.packOutput, event.lookupProvider)
ModRecipeProvider(out)
)
val blockTagsProvider: BlockTagsProvider = gen.addProvider(
event.includeServer(),
ModBlockTagsProvider(gen.packOutput, event.lookupProvider, MOD_ID, event.existingFileHelper)
ModBlockTagsProvider(out, event.lookupProvider, MOD_ID, efh)
)
gen.addProvider(
event.includeServer(),
ModItemTagsProvider(gen.packOutput, event.lookupProvider, blockTagsProvider.contentsGetter(), MOD_ID, event.existingFileHelper)
ModItemTagsProvider(out, event.lookupProvider, blockTagsProvider.contentsGetter(), MOD_ID, efh)
)
gen.addProvider(
event.includeServer(),
LootTableProvider(
gen.packOutput,
mutableSetOf(),
listOf(SubProviderEntry({ ModBlockLootProvider(event.lookupProvider) }, LootContextParamSets.BLOCK)),
event.lookupProvider
out,
emptySet<ResourceLocation>(),
listOf(SubProviderEntry({ ModBlockLootProvider() }, LootContextParamSets.BLOCK))
)
)
val registrySetBuilder = RegistrySetBuilder()
.add(Registries.CONFIGURED_FEATURE, ::registerConfiguredFeatures)
.add(Registries.PLACED_FEATURE, ::registerPlacedFeatures)
.add(NeoForgeRegistries.Keys.BIOME_MODIFIERS, ::registerBiomeModifiers)
.add(ForgeRegistries.Keys.BIOME_MODIFIERS, ::registerBiomeModifiers)
event.generator.addProvider(
event.includeServer(),
DatapackBuiltinEntriesProvider(

View File

@ -1,9 +1,9 @@
package ru.yurannnzzz.ae2quartz.data.client
import net.minecraft.data.PackOutput
import net.neoforged.neoforge.client.model.generators.BlockStateProvider
import net.neoforged.neoforge.client.model.generators.ConfiguredModel
import net.neoforged.neoforge.common.data.ExistingFileHelper
import net.minecraftforge.client.model.generators.BlockStateProvider
import net.minecraftforge.client.model.generators.ConfiguredModel
import net.minecraftforge.common.data.ExistingFileHelper
import ru.yurannnzzz.ae2quartz.registry.ModBlocks
class ModBlockStateProvider(output: PackOutput?, modid: String?, exFileHelper: ExistingFileHelper?) :

View File

@ -2,18 +2,18 @@ package ru.yurannnzzz.ae2quartz.data.client
import net.minecraft.data.PackOutput
import net.minecraft.resources.ResourceLocation
import net.neoforged.neoforge.client.model.generators.ItemModelProvider
import net.neoforged.neoforge.client.model.generators.ModelFile
import net.neoforged.neoforge.common.data.ExistingFileHelper
import net.minecraftforge.client.model.generators.ItemModelProvider
import net.minecraftforge.client.model.generators.ModelFile.UncheckedModelFile
import net.minecraftforge.common.data.ExistingFileHelper
class ModItemModelProvider(output: PackOutput?, modid: String?, existingFileHelper: ExistingFileHelper?) :
ItemModelProvider(output, modid, existingFileHelper) {
override fun registerModels() {
val netherQuartzDustTexture = ResourceLocation.fromNamespaceAndPath("ae2", "item/nether_quartz_dust")
val netherQuartzDustTexture = ResourceLocation("ae2", "item/nether_quartz_dust")
existingFileHelper.trackGenerated(netherQuartzDustTexture, TEXTURE)
getBuilder(modLoc("item/nether_quartz_dust").toString())
.parent(ModelFile.UncheckedModelFile("item/generated"))
.parent(UncheckedModelFile("item/generated"))
.texture("layer0", netherQuartzDustTexture)
withExistingParent(

View File

@ -1,7 +1,7 @@
package ru.yurannnzzz.ae2quartz.data.client
import net.minecraft.data.PackOutput
import net.neoforged.neoforge.common.data.LanguageProvider
import net.minecraftforge.common.data.LanguageProvider
import ru.yurannnzzz.ae2quartz.registry.ModBlocks
import ru.yurannnzzz.ae2quartz.registry.ModItems

View File

@ -1,8 +1,6 @@
package ru.yurannnzzz.ae2quartz.data.server
import appeng.core.definitions.AEItems
import net.minecraft.core.HolderLookup
import net.minecraft.core.registries.Registries
import net.minecraft.data.loot.BlockLootSubProvider
import net.minecraft.world.flag.FeatureFlags
import net.minecraft.world.item.enchantment.Enchantments
@ -12,21 +10,24 @@ import net.minecraft.world.level.storage.loot.entries.LootItem
import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount
import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction
import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator
import net.minecraftforge.registries.RegistryObject
import ru.yurannnzzz.ae2quartz.registry.ModBlocks
import java.util.concurrent.CompletableFuture
class ModBlockLootProvider(provider: CompletableFuture<HolderLookup.Provider>)
: BlockLootSubProvider(emptySet(), FeatureFlags.REGISTRY.allFlags(), provider.get()) {
class ModBlockLootProvider : BlockLootSubProvider(emptySet(), FeatureFlags.REGISTRY.allFlags()) {
override fun generate() {
add(ModBlocks.QUARTZ_ORE.get(), this::createCertusQuartsOreDrops)
add(ModBlocks.DEEPSLATE_QUARTZ_ORE.get(), this::createCertusQuartsOreDrops)
}
override fun getKnownBlocks(): Iterable<Block> {
return ModBlocks.registry.entries.stream().map { it.get() }.toList()
return Iterable {
ModBlocks.registry.entries
.stream()
.flatMap { obj: RegistryObject<Block> -> obj.stream() }
.iterator()
}
}
private val enchantments = registries.lookupOrThrow(Registries.ENCHANTMENT)
private fun createCertusQuartsOreDrops(block: Block): LootTable.Builder {
return createSilkTouchDispatchTable(
block,
@ -34,7 +35,7 @@ class ModBlockLootProvider(provider: CompletableFuture<HolderLookup.Provider>)
block,
LootItem.lootTableItem(AEItems.CERTUS_QUARTZ_CRYSTAL)
.apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0f, 3.0f)))
.apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))
.apply(ApplyBonusCount.addOreBonusCount(Enchantments.BLOCK_FORTUNE))
)
)
}

View File

@ -3,9 +3,9 @@ package ru.yurannnzzz.ae2quartz.data.server
import net.minecraft.core.HolderLookup
import net.minecraft.data.PackOutput
import net.minecraft.tags.BlockTags
import net.neoforged.neoforge.common.Tags
import net.neoforged.neoforge.common.data.BlockTagsProvider
import net.neoforged.neoforge.common.data.ExistingFileHelper
import net.minecraftforge.common.Tags
import net.minecraftforge.common.data.BlockTagsProvider
import net.minecraftforge.common.data.ExistingFileHelper
import ru.yurannnzzz.ae2quartz.registry.ModBlocks
import java.util.concurrent.CompletableFuture

View File

@ -5,8 +5,8 @@ import net.minecraft.core.HolderLookup
import net.minecraft.data.PackOutput
import net.minecraft.data.tags.ItemTagsProvider
import net.minecraft.world.level.block.Block
import net.neoforged.neoforge.common.Tags
import net.neoforged.neoforge.common.data.ExistingFileHelper
import net.minecraftforge.common.Tags
import net.minecraftforge.common.data.ExistingFileHelper
import ru.yurannnzzz.ae2quartz.registry.ModItems
import java.util.concurrent.CompletableFuture

View File

@ -4,31 +4,35 @@ import appeng.core.definitions.AEItems
import appeng.datagen.providers.tags.ConventionTags
import appeng.recipes.handlers.InscriberProcessType
import appeng.recipes.handlers.InscriberRecipeBuilder
import net.minecraft.core.HolderLookup
import net.minecraft.data.PackOutput
import net.minecraft.data.recipes.FinishedRecipe
import net.minecraft.data.recipes.RecipeCategory
import net.minecraft.data.recipes.RecipeOutput
import net.minecraft.data.recipes.RecipeProvider
import net.minecraft.data.recipes.SimpleCookingRecipeBuilder
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.item.crafting.Ingredient
import ru.yurannnzzz.ae2quartz.AE2QuartzMod.loc
import ru.yurannnzzz.ae2quartz.AE2QuartzMod
import ru.yurannnzzz.ae2quartz.registry.ModItems
import java.util.concurrent.CompletableFuture
import java.util.function.Consumer
class ModRecipeProvider(output: PackOutput, provider: CompletableFuture<HolderLookup.Provider>) : RecipeProvider(output, provider) {
override fun buildRecipes(recipeOutput: RecipeOutput) {
class ModRecipeProvider(output: PackOutput?) : RecipeProvider(output) {
override fun buildRecipes(consumer: Consumer<FinishedRecipe>) {
InscriberRecipeBuilder
.inscribe(ConventionTags.ALL_NETHER_QUARTZ, ModItems.NETHER_QUARTZ_DUST.get(), 1)
.setMode(InscriberProcessType.INSCRIBE)
.save(recipeOutput, loc("inscriber/nether_quartz_dust"))
.save(consumer, modLoc("inscriber/nether_quartz_dust"))
SimpleCookingRecipeBuilder
.smelting(Ingredient.of(ModTags.NETHER_QUARTZ_DUST), RecipeCategory.MISC, AEItems.SILICON, .35f, 200)
.unlockedBy("has_nether_quartz_dust", has(ModTags.NETHER_QUARTZ_DUST))
.save(recipeOutput, loc("smelting/silicon_from_nether_quartz_dust"))
.save(consumer, modLoc("smelting/silicon_from_nether_quartz_dust"))
SimpleCookingRecipeBuilder
.blasting(Ingredient.of(ModTags.NETHER_QUARTZ_DUST), RecipeCategory.MISC, AEItems.SILICON, .35f, 100)
.unlockedBy("has_nether_quartz_dust", has(ModTags.NETHER_QUARTZ_DUST))
.save(recipeOutput, loc("blasting/silicon_from_nether_quartz_dust"))
.save(consumer, modLoc("blasting/silicon_from_nether_quartz_dust"))
}
fun modLoc(path: String): ResourceLocation {
return ResourceLocation(AE2QuartzMod.MOD_ID, path)
}
}

View File

@ -8,8 +8,8 @@ import net.minecraft.world.level.block.Block
object ModTags {
val CERTUS_QUARTZ_ORE_BLOCK: TagKey<Block> =
TagKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath("c", "ores/certus_quartz"))
TagKey.create(Registries.BLOCK, ResourceLocation("forge", "ores/certus_quartz"))
val CERTUS_QUARTZ_ORE: TagKey<Item> =
TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath("c", "ores/certus_quartz"))
val NETHER_QUARTZ_DUST: TagKey<Item> = TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath("c", "dusts/quartz"))
TagKey.create(Registries.ITEM, ResourceLocation("forge", "ores/certus_quartz"))
val NETHER_QUARTZ_DUST: TagKey<Item> = TagKey.create(Registries.ITEM, ResourceLocation("forge", "dusts/quartz"))
}

View File

@ -2,8 +2,9 @@ package ru.yurannnzzz.ae2quartz.data.server
import net.minecraft.core.HolderSet
import net.minecraft.core.registries.Registries
import net.minecraft.data.worldgen.BootstrapContext
import net.minecraft.data.worldgen.BootstapContext
import net.minecraft.resources.ResourceKey
import net.minecraft.resources.ResourceLocation
import net.minecraft.tags.BiomeTags
import net.minecraft.tags.BlockTags
import net.minecraft.world.level.levelgen.GenerationStep
@ -16,9 +17,10 @@ import net.minecraft.world.level.levelgen.placement.HeightRangePlacement
import net.minecraft.world.level.levelgen.placement.InSquarePlacement
import net.minecraft.world.level.levelgen.placement.PlacedFeature
import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest
import net.neoforged.neoforge.common.world.BiomeModifier
import net.neoforged.neoforge.registries.NeoForgeRegistries
import ru.yurannnzzz.ae2quartz.AE2QuartzMod.loc
import net.minecraftforge.common.world.BiomeModifier
import net.minecraftforge.common.world.ForgeBiomeModifiers.AddFeaturesBiomeModifier
import net.minecraftforge.registries.ForgeRegistries
import ru.yurannnzzz.ae2quartz.AE2QuartzMod.MOD_ID
import ru.yurannnzzz.ae2quartz.registry.ModBlocks
/*
@ -30,11 +32,11 @@ private object ConfiguredFeatures {
val QUARTZ_ORE = key("quartz_ore")
private fun key(name: String): ResourceKey<ConfiguredFeature<*, *>> {
return ResourceKey.create(Registries.CONFIGURED_FEATURE, loc(name))
return ResourceKey.create(Registries.CONFIGURED_FEATURE, ResourceLocation(MOD_ID, name))
}
}
fun registerConfiguredFeatures(context: BootstrapContext<ConfiguredFeature<*, *>>) {
fun registerConfiguredFeatures(context: BootstapContext<ConfiguredFeature<*, *>>) {
val target = listOf(
OreConfiguration.target(
TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES),
@ -56,11 +58,11 @@ private object PlacedFeatures {
val QUARTZ_ORE = key("quartz_ore")
private fun key(name: String): ResourceKey<PlacedFeature> {
return ResourceKey.create(Registries.PLACED_FEATURE, loc(name))
return ResourceKey.create(Registries.PLACED_FEATURE, ResourceLocation(MOD_ID, name))
}
}
fun registerPlacedFeatures(context: BootstrapContext<PlacedFeature>) {
fun registerPlacedFeatures(context: BootstapContext<PlacedFeature>) {
val configured = context.lookup(Registries.CONFIGURED_FEATURE)
context.register(
@ -79,17 +81,17 @@ private object BiomeModifiers {
val QUARTZ_ORE = key("quartz_ore")
private fun key(name: String): ResourceKey<BiomeModifier> {
return ResourceKey.create(NeoForgeRegistries.Keys.BIOME_MODIFIERS, loc(name))
return ResourceKey.create(ForgeRegistries.Keys.BIOME_MODIFIERS, ResourceLocation(MOD_ID, name))
}
}
fun registerBiomeModifiers(context: BootstrapContext<BiomeModifier>) {
fun registerBiomeModifiers(context: BootstapContext<BiomeModifier>) {
val placed = context.lookup(Registries.PLACED_FEATURE)
val biomes = context.lookup(Registries.BIOME)
context.register(
BiomeModifiers.QUARTZ_ORE,
net.neoforged.neoforge.common.world.BiomeModifiers.AddFeaturesBiomeModifier(
AddFeaturesBiomeModifier(
biomes.getOrThrow(BiomeTags.IS_OVERWORLD),
HolderSet.direct(placed.getOrThrow(PlacedFeatures.QUARTZ_ORE)),
GenerationStep.Decoration.UNDERGROUND_ORES

View File

@ -1,13 +1,13 @@
package ru.yurannnzzz.ae2quartz.event
import appeng.api.ids.AECreativeTabIds
import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent
import net.minecraftforge.event.BuildCreativeModeTabContentsEvent
import ru.yurannnzzz.ae2quartz.registry.ModItems
fun addCreativeTabItems(event: BuildCreativeModeTabContentsEvent) {
if (event.tabKey === AECreativeTabIds.MAIN) {
event.accept(ModItems.QUARTZ_ORE.get())
event.accept(ModItems.DEEPSLATE_QUARTZ_ORE.get())
event.accept(ModItems.NETHER_QUARTZ_DUST.get())
event.accept(ModItems.QUARTZ_ORE)
event.accept(ModItems.DEEPSLATE_QUARTZ_ORE)
event.accept(ModItems.NETHER_QUARTZ_DUST)
}
}

View File

@ -1,17 +1,19 @@
package ru.yurannnzzz.ae2quartz.registry
import net.minecraft.util.valueproviders.UniformInt
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.DropExperienceBlock
import net.minecraft.world.level.block.SoundType
import net.minecraft.world.level.block.state.BlockBehaviour
import net.minecraft.world.level.block.state.properties.NoteBlockInstrument
import net.minecraft.world.level.material.MapColor
import net.neoforged.neoforge.registries.DeferredRegister
import net.minecraftforge.registries.DeferredRegister
import net.minecraftforge.registries.ForgeRegistries
import net.minecraftforge.registries.RegistryObject
import ru.yurannnzzz.ae2quartz.AE2QuartzMod
import java.util.function.Supplier
object ModBlocks {
val registry = DeferredRegister.createBlocks(AE2QuartzMod.MOD_ID)
val registry: DeferredRegister<Block> = DeferredRegister.create(ForgeRegistries.BLOCKS, AE2QuartzMod.MOD_ID)
private val quartsOreBlockBehavior = BlockBehaviour.Properties.of()
.mapColor(MapColor.STONE)
@ -19,20 +21,19 @@ object ModBlocks {
.requiresCorrectToolForDrops()
.strength(3.0f, 3.0f)
val QUARTZ_ORE = registry.register("quartz_ore", Supplier {
val QUARTZ_ORE: RegistryObject<Block> = registry.register("quartz_ore") {
DropExperienceBlock(
UniformInt.of(2, 5),
quartsOreBlockBehavior
quartsOreBlockBehavior,
UniformInt.of(2, 5)
)
})
val DEEPSLATE_QUARTZ_ORE = registry.register("deepslate_quartz_ore", Supplier {
}
val DEEPSLATE_QUARTZ_ORE: RegistryObject<Block> = registry.register("deepslate_quartz_ore") {
DropExperienceBlock(
UniformInt.of(2, 5),
quartsOreBlockBehavior
.mapColor(MapColor.DEEPSLATE)
.strength(4.5f, 3.0f)
.sound(SoundType.DEEPSLATE)
.sound(SoundType.DEEPSLATE),
UniformInt.of(2, 5)
)
})
}
}

View File

@ -1,18 +1,24 @@
package ru.yurannnzzz.ae2quartz.registry
import appeng.items.materials.MaterialItem
import net.minecraft.core.registries.BuiltInRegistries
import net.minecraft.world.item.BlockItem
import net.minecraft.world.item.Item
import net.neoforged.neoforge.registries.DeferredRegister
import net.minecraftforge.registries.DeferredRegister
import net.minecraftforge.registries.ForgeRegistries
import net.minecraftforge.registries.RegistryObject
import ru.yurannnzzz.ae2quartz.AE2QuartzMod
import java.util.function.Supplier
object ModItems {
val registry = DeferredRegister.create(BuiltInRegistries.ITEM, AE2QuartzMod.MOD_ID)
val registry: DeferredRegister<Item> = DeferredRegister.create(ForgeRegistries.ITEMS, AE2QuartzMod.MOD_ID)
val NETHER_QUARTZ_DUST= registry.register("nether_quartz_dust", Supplier { MaterialItem(Item.Properties()) })
val NETHER_QUARTZ_DUST: RegistryObject<Item> = registry.register("nether_quartz_dust") {
MaterialItem(Item.Properties())
}
val QUARTZ_ORE = registry.register("quartz_ore", Supplier { BlockItem(ModBlocks.QUARTZ_ORE.get(), Item.Properties()) })
val DEEPSLATE_QUARTZ_ORE = registry.register("deepslate_quartz_ore", Supplier { BlockItem(ModBlocks.DEEPSLATE_QUARTZ_ORE.get(), Item.Properties()) })
val QUARTZ_ORE: RegistryObject<Item> = registry.register("quartz_ore") {
BlockItem(ModBlocks.QUARTZ_ORE.get(), Item.Properties())
}
val DEEPSLATE_QUARTZ_ORE: RegistryObject<Item> = registry.register("deepslate_quartz_ore") {
BlockItem(ModBlocks.DEEPSLATE_QUARTZ_ORE.get(), Item.Properties())
}
}

View File

@ -11,20 +11,20 @@ authors="YuRaNnNzZZ"
description="This mod adds Certus Quartz Ore and Nether Quartz Dust from earlier versions of AE2."
[[dependencies.${mod_id}]]
modId="neoforge"
modId="forge"
mandatory=true
versionRange="${neo_version_range}"
versionRange="${forge_version_range}"
ordering="NONE"
side="BOTH"
[[dependencies.${mod_id}]]
modId="minecraft"
type="required"
mandatory=true
versionRange="${minecraft_version_range}"
ordering="NONE"
side="BOTH"
[[dependencies.${mod_id}]]
modId="ae2"
type="required"
mandatory=true
versionRange="${ae2_version_range}"
ordering="NONE"
side="BOTH"